MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Field_new_decimal Class Reference
Inheritance diagram for Field_new_decimal:
Collaboration diagram for Field_new_decimal:

Public Member Functions

 Field_new_decimal (uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, enum utype unireg_check_arg, const char *field_name_arg, uint8 dec_arg, bool zero_arg, bool unsigned_arg)
 Field_new_decimal (uint32 len_arg, bool maybe_null_arg, const char *field_name_arg, uint8 dec_arg, bool unsigned_arg)
enum_field_types type () const
enum ha_base_keytype key_type () const
Item_result result_type () const
type_conversion_status reset (void)
type_conversion_status store_value (const my_decimal *decimal_value)
void set_value_on_overflow (my_decimal *decimal_value, bool sign)
type_conversion_status store (const char *to, uint length, const CHARSET_INFO *charset)
type_conversion_status store (double nr)
type_conversion_status store (longlong nr, bool unsigned_val)
type_conversion_status store_time (MYSQL_TIME *ltime, uint8 dec)
type_conversion_status store_decimal (const my_decimal *)
double val_real (void)
longlong val_int (void)
my_decimalval_decimal (my_decimal *)
bool get_date (MYSQL_TIME *ltime, uint fuzzydate)
bool get_time (MYSQL_TIME *ltime)
Stringval_str (String *, String *)
int cmp (const uchar *, const uchar *)
void make_sort_key (uchar *buff, uint length)
bool zero_pack () const
void sql_type (String &str) const
uint32 max_display_length ()
uint32 pack_length () const
uint pack_length_from_metadata (uint field_metadata)
uint row_pack_length () const
bool compatible_field_size (uint field_metadata, Relay_log_info *rli, uint16 mflags, int *order_var)
uint is_equal (Create_field *new_field)
Field_new_decimalclone (MEM_ROOT *mem_root) const
Field_new_decimalclone () const
virtual const uchar * unpack (uchar *to, const uchar *from, uint param_data, bool low_byte_first)
- Public Member Functions inherited from Field_num
 Field_num (uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, utype unireg_check_arg, const char *field_name_arg, uint8 dec_arg, bool zero_arg, bool unsigned_arg)
enum Derivation derivation (void) const
uint repertoire (void) const
const CHARSET_INFOcharset (void) const
void prepend_zeros (String *value)
void add_zerofill_and_unsigned (String &res) const
uint decimals () const
bool eq_def (Field *field)
type_conversion_status check_int (const CHARSET_INFO *cs, const char *str, int length, const char *int_end, int error)
type_conversion_status get_int (const CHARSET_INFO *cs, const char *from, uint len, longlong *rnd, ulonglong unsigned_max, longlong signed_min, longlong signed_max)
- Public Member Functions inherited from Field
bool has_insert_default_function () const
bool has_update_default_function () const
 Field (uchar *ptr_arg, uint32 length_arg, uchar *null_ptr_arg, uchar null_bit_arg, utype unireg_check_arg, const char *field_name_arg)
 This is used as a table name when the table structure is not set up.
virtual type_conversion_status store_packed (longlong nr)
type_conversion_status store_time (MYSQL_TIME *ltime)
type_conversion_status store (const char *to, uint length, const CHARSET_INFO *cs, enum_check_fields check_level)
virtual longlong val_time_temporal ()
virtual longlong val_date_temporal ()
longlong val_temporal_by_field_type ()
Stringval_str (String *str)
Stringval_int_as_str (String *val_buffer, my_bool unsigned_flag)
virtual bool str_needs_quotes ()
virtual Item_result numeric_context_result_type () const
virtual Item_result cmp_type () const
virtual Item_result cast_to_int_type () const
virtual bool eq (Field *field)
virtual uint32 pack_length_in_rec () const
virtual int save_field_metadata (uchar *first_byte)
virtual uint32 data_length ()
virtual uint32 sort_length () const
virtual uint32 max_data_length () const
virtual void reset_fields ()
virtual bool get_timestamp (struct timeval *tm, int *warnings)
virtual void store_timestamp (const timeval *tm)
void store_timestamp (my_time_t sec)
virtual void set_default ()
void evaluate_insert_default_function ()
void evaluate_update_default_function ()
virtual bool binary () const
virtual uint32 key_length () const
virtual enum_field_types real_type () const
virtual enum_field_types binlog_type () const
int cmp (const uchar *str)
virtual int cmp_max (const uchar *a, const uchar *b, uint max_len)
virtual int cmp_binary (const uchar *a, const uchar *b, uint32 max_length=~0L)
virtual int cmp_offset (uint row_offset)
virtual int cmp_binary_offset (uint row_offset)
virtual int key_cmp (const uchar *a, const uchar *b)
virtual int key_cmp (const uchar *str, uint length)
bool is_temporal () const
bool is_temporal_with_date () const
bool is_temporal_with_time () const
bool is_temporal_with_date_and_time () const
bool is_null (my_ptrdiff_t row_offset=0) const
bool is_real_null (my_ptrdiff_t row_offset=0) const
bool is_null_in_record (const uchar *record) const
void set_null (my_ptrdiff_t row_offset=0)
void set_notnull (my_ptrdiff_t row_offset=0)
bool maybe_null (void) const
bool real_maybe_null (void) const
uint null_offset (const uchar *record) const
uint null_offset () const
void set_null_ptr (uchar *p_null_ptr, uint p_null_bit)
size_t last_null_byte () const
virtual void make_field (Send_field *)
virtual bool optimize_range (uint idx, uint part)
virtual bool can_be_compared_as_longlong () const
virtual void free ()
virtual Fieldnew_field (MEM_ROOT *root, TABLE *new_table, bool keep_type)
virtual Fieldnew_key_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit)
Fieldnew_key_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr)
void move_field (uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg)
void move_field (uchar *ptr_arg)
virtual void move_field_offset (my_ptrdiff_t ptr_diff)
virtual void get_image (uchar *buff, uint length, const CHARSET_INFO *cs)
virtual void set_image (const uchar *buff, uint length, const CHARSET_INFO *cs)
virtual uint get_key_image (uchar *buff, uint length, imagetype type)
virtual void set_key_image (const uchar *buff, uint length)
longlong val_int_offset (uint row_offset)
longlong val_int (const uchar *new_ptr)
Stringval_str (String *str, const uchar *new_ptr)
virtual bool send_binary (Protocol *protocol)
virtual uchar * pack (uchar *to, const uchar *from, uint max_length, bool low_byte_first)
uchar * pack (uchar *to, const uchar *from)
const uchar * unpack (uchar *to, const uchar *from)
virtual uint packed_col_length (const uchar *to, uint length)
virtual uint max_packed_col_length (uint max_length)
uint offset (uchar *record)
void copy_from_tmp (int offset)
uint fill_cache_field (struct st_cache_field *copy)
virtual const CHARSET_INFOcharset_for_protocol (void) const
virtual const CHARSET_INFOsort_charset (void) const
virtual bool has_charset (void) const
virtual bool match_collation_to_optimize_range () const
virtual void set_derivation (enum Derivation derivation_arg)
bool set_warning (Sql_condition::enum_warning_level, unsigned int code, int cuted_increment) const
bool check_overflow (int op_result)
bool check_truncated (int op_result)
bool warn_if_overflow (int op_result)
void init (TABLE *table_arg)
longlong convert_decimal2longlong (const my_decimal *val, bool unsigned_flag, bool *has_overflow)
virtual uint32 char_length ()
virtual geometry_type get_geometry_type ()
void dbug_print ()
ha_storage_media field_storage_type () const
void set_storage_type (ha_storage_media storage_type_arg)
column_format_type column_format () const
void set_column_format (column_format_type column_format_arg)
virtual type_conversion_status validate_stored_val (THD *thd)
virtual void hash (ulong *nr, ulong *nr2)

Static Public Member Functions

static Fieldcreate_from_item (Item *)

Public Attributes

uint precision
uint bin_size
- Public Attributes inherited from Field_num
const uint8 dec
bool zerofill
bool unsigned_flag
- Public Attributes inherited from Field
uchar * ptr
TABLEtable
TABLEorig_table
const char ** table_name
const char * field_name
LEX_STRING comment
key_map key_start
key_map part_of_key
key_map part_of_key_not_clustered
key_map part_of_sortkey
utype unireg_check
uint32 field_length
uint32 flags
uint16 field_index
uchar null_bit
bool is_created_from_null_item

Additional Inherited Members

- Public Types inherited from Field
enum  utype {
  NONE, DATE, SHIELD, NOEMPTY,
  CASEUP, PNR, BGNR, PGNR,
  YES, NO, REL, CHECK,
  EMPTY, UNKNOWN_FIELD, CASEDN, NEXT_NUMBER,
  INTERVAL_FIELD, BIT_FIELD, TIMESTAMP_OLD_FIELD, CAPITALIZE,
  BLOB_FIELD, TIMESTAMP_DN_FIELD, TIMESTAMP_UN_FIELD, TIMESTAMP_DNUN_FIELD
}
enum  geometry_type {
  GEOM_GEOMETRY = 0, GEOM_POINT = 1, GEOM_LINESTRING = 2, GEOM_POLYGON = 3,
  GEOM_MULTIPOINT = 4, GEOM_MULTILINESTRING = 5, GEOM_MULTIPOLYGON = 6, GEOM_GEOMETRYCOLLECTION = 7
}
enum  imagetype { itRAW, itMBR }
enum  { LAST_NULL_BYTE_UNDEF = 0 }
- Protected Member Functions inherited from Field
uchar * pack_int16 (uchar *to, const uchar *from, bool low_byte_first_to)
const uchar * unpack_int16 (uchar *to, const uchar *from, bool low_byte_first_from)
uchar * pack_int24 (uchar *to, const uchar *from, bool low_byte_first_to)
const uchar * unpack_int24 (uchar *to, const uchar *from, bool low_byte_first_from)
uchar * pack_int32 (uchar *to, const uchar *from, bool low_byte_first_to)
const uchar * unpack_int32 (uchar *to, const uchar *from, bool low_byte_first_from)
uchar * pack_int64 (uchar *to, const uchar *from, bool low_byte_first_to)
const uchar * unpack_int64 (uchar *to, const uchar *from, bool low_byte_first_from)
bool field_flags_are_binary ()
- Static Protected Member Functions inherited from Field
static void handle_int16 (uchar *to, const uchar *from, bool low_byte_first_from, bool low_byte_first_to)
static void handle_int24 (uchar *to, const uchar *from, bool low_byte_first_from, bool low_byte_first_to)
static void handle_int32 (uchar *to, const uchar *from, bool low_byte_first_from, bool low_byte_first_to)
static void handle_int64 (uchar *to, const uchar *from, bool low_byte_first_from, bool low_byte_first_to)
- Protected Attributes inherited from Field
uchar * null_ptr

Detailed Description

Definition at line 1608 of file field.h.

Member Function Documentation

Field_new_decimal* Field_new_decimal::clone ( MEM_ROOT mem_root) const
inlinevirtual

Makes a shallow copy of the Field object.

Note
This member function must be overridden in all concrete subclasses. Several of the Field subclasses are concrete even though they are not leaf classes, so the compiler will not always catch this.
Parameters
mem_rootMEM_ROOT to use for memory allocation.
Return values
NULLIf memory allocation failed.

Implements Field.

Definition at line 1658 of file field.h.

Field_new_decimal* Field_new_decimal::clone ( ) const
inlinevirtual

Makes a shallow copy of the Field object.

Note
This member function must be overridden in all concrete subclasses. Several of the Field subclasses are concrete even though they are not leaf classes, so the compiler will not always catch this.
Return values
NULLIf memory allocation failed.

Implements Field.

Definition at line 1662 of file field.h.

bool Field_new_decimal::compatible_field_size ( uint  field_metadata,
Relay_log_info rli,
uint16  mflags,
int *  order_var 
)
virtual

Check to see if field size is compatible with destination.

This method is used in row-based replication to verify that the slave's field size is less than or equal to the master's field size. The encoded field metadata (from the master or source) is decoded and compared to the size of this field (the slave or destination).

Parameters
field_metadataEncoded size in field metadata
order_varPointer to variable where the order between the source field and this field will be returned.
Returns
true

Reimplemented from Field.

Definition at line 2962 of file field.cc.

Here is the call graph for this function:

uint Field_new_decimal::is_equal ( Create_field new_field)
virtual

Check whether two numeric fields can be considered 'equal' for table alteration purposes. Fields are equal if they are of the same type and retain the same pack length.

Reimplemented from Field_num.

Definition at line 2975 of file field.cc.

void Field_new_decimal::make_sort_key ( uchar *  buff,
uint  length 
)
virtual

Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comparison. Integers are always in big-endian regardless of hardware architecture. At most length bytes are written into the buffer.

Parameters
buffThe buffer, assumed to be at least length bytes.
lengthNumber of bytes to write.

Implements Field.

Definition at line 2892 of file field.cc.

uint Field_new_decimal::pack_length_from_metadata ( uint  field_metadata)
virtual

Returns the number of bytes field uses in row-based replication row packed size.

This method is used in row-based replication to determine the number of bytes that the field consumes in the row record format. This is used to skip fields in the master that do not exist on the slave.

Parameters
field_metadataEncoded size in field metadata
Returns
The size of the field based on the field metadata.

Reimplemented from Field_num.

Definition at line 2938 of file field.cc.

void Field_new_decimal::set_value_on_overflow ( my_decimal decimal_value,
bool  sign 
)

Generate max/min decimal value in case of overflow.

Parameters
decimal_valuebuffer for value
signsign of value which caused overflow

Definition at line 2630 of file field.cc.

Here is the caller graph for this function:

type_conversion_status Field_new_decimal::store ( double  nr)
virtual
Todo:
Fix following when double2my_decimal when double2decimal will return E_DEC_TRUNCATED always correctly

Implements Field.

Definition at line 2776 of file field.cc.

type_conversion_status Field_new_decimal::store_decimal ( const my_decimal val)
virtual

Storing decimal in integer fields.

Parameters
valvalue for storing
Note
This method is used by all integer fields, real/decimal redefine it
Return values
TYPE_OKStorage of value went fine without warnings or errors
!TYPE_OKWarning/error as indicated by type_conversion_status enum value

Reimplemented from Field_num.

Definition at line 2800 of file field.cc.

Here is the call graph for this function:

type_conversion_status Field_new_decimal::store_time ( MYSQL_TIME ltime,
uint8  dec_arg 
)
virtual

Store MYSQL_TIME value with the given amount of decimal digits into a field.

Note, the "dec" parameter represents number of digits of the Item that previously created the MYSQL_TIME value. It's needed when we store the value into a CHAR/VARCHAR/TEXT field to display the proper amount of fractional digits. For other field types the "dec" value does not matter and is ignored.

Parameters
ltimeTime, date or datetime value.
decNumber of decimals in ltime.
Return values
falseon success
trueon error

This is called when storing a date in a string.

Note
Needs to be changed if/when we want to support different time formats.

Reimplemented from Field_num.

Definition at line 2808 of file field.cc.

Here is the call graph for this function:

type_conversion_status Field_new_decimal::store_value ( const my_decimal decimal_value)

Store decimal value in the binary buffer.

Checks if decimal_value fits into field size. If it does, stores the decimal in the buffer using binary format. Otherwise sets maximal number that can be stored in the field.

Parameters
decimal_valuemy_decimal
Return values
0ok
1error

Definition at line 2661 of file field.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

const uchar * Field_new_decimal::unpack ( uchar *  to,
const uchar *  from,
uint  param_data,
bool  low_byte_first 
)
virtual

Unpack a decimal field from row data.

This method is used to unpack a decimal or numeric field from a master whose size of the field is less than that of the slave.

Parameters
toDestination of the data
fromSource of the data
param_dataPrecision (upper) and decimal (lower) values
Returns
New pointer into memory based on from + length of the data

Reimplemented from Field.

Definition at line 3000 of file field.cc.

my_decimal * Field_new_decimal::val_decimal ( my_decimal decimal_value)
virtual

Return decimal value of integer field.

Parameters
decimal_valuebuffer for storing decimal value
Note
This method is used by all integer fields, real/decimal redefine it. All longlong values fit in our decimal buffer which cal store 8*9=72 digits of integer number
Returns
pointer to decimal buffer with value of field

Reimplemented from Field_num.

Definition at line 2837 of file field.cc.


The documentation for this class was generated from the following files: