MySQL  8.0.20
Source Code Documentation
Field_longlong Class Reference

#include <field.h>

Inheritance diagram for Field_longlong:
Field_num Field

Public Member Functions

 Field_longlong (uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, bool zero_arg, bool unsigned_arg)
 
 Field_longlong (uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, bool unsigned_arg)
 
enum Item_result result_type () const final override
 
enum_field_types type () const final override
 
enum ha_base_keytype key_type () const final override
 
type_conversion_status store (const char *to, size_t length, const CHARSET_INFO *charset) final override
 
type_conversion_status store (double nr) final override
 
type_conversion_status store (longlong nr, bool unsigned_val) override
 
type_conversion_status reset () final override
 
double val_real () const final override
 
longlong val_int () const override
 
Stringval_str (String *, String *) const final override
 
bool send_to_protocol (Protocol *protocol) const final override
 Send the value of this field over the protocol using the correct Protocol::store*() function which matches the type of the field. More...
 
int cmp (const uchar *, const uchar *) const final override
 
size_t make_sort_key (uchar *buff, size_t length) const final override
 Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comparison. More...
 
uint32 pack_length () const final override
 
void sql_type (String &str) const final override
 
bool can_be_compared_as_longlong () const final override
 
uint32 max_display_length () const final override
 
Field_longlongclone (MEM_ROOT *mem_root) const final override
 Makes a shallow copy of the Field object. More...
 
ucharpack (uchar *to, const uchar *from, uint max_length, bool low_byte_first) const final override
 Pack the field into a format suitable for storage and transfer. More...
 
const ucharunpack (uchar *to, const uchar *from, uint param_data, bool low_byte_first) final override
 Unpack a field from row data. More...
 
ulonglong get_max_int_value () const final override
 Get the upper limit of the MySQL integral and floating-point type. More...
 
- Public Member Functions inherited from Field_num
 Field_num (uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, uint8 dec_arg, bool zero_arg, bool unsigned_arg)
 Numeric fields base class constructor. More...
 
enum Derivation derivation () const final override
 
uint repertoire () const final override
 
const CHARSET_INFOcharset () const final override
 
void prepend_zeros (String *value) const
 
uint decimals () const final override
 
bool eq_def (const Field *field) const final override
 
type_conversion_status store_decimal (const my_decimal *) override
 Storing decimal in integer fields. More...
 
type_conversion_status store_time (MYSQL_TIME *ltime, uint8 dec) override
 Store MYSQL_TIME value with the given amount of decimal digits into a field. More...
 
my_decimalval_decimal (my_decimal *) const override
 Return decimal value of integer field. More...
 
bool get_date (MYSQL_TIME *ltime, my_time_flags_t fuzzydate) const override
 
bool get_time (MYSQL_TIME *ltime) const override
 
uint is_equal (const Create_field *new_field) const override
 Check whether two numeric fields can be considered 'equal' for table alteration purposes. More...
 
uint row_pack_length () const override
 
uint32 pack_length_from_metadata (uint field_metadata) const override
 
type_conversion_status check_int (const CHARSET_INFO *cs, const char *str, size_t length, const char *int_end, int error)
 Test if given number is a int. More...
 
type_conversion_status get_int (const CHARSET_INFO *cs, const char *from, size_t len, longlong *rnd, ulonglong unsigned_max, longlong signed_min, longlong signed_max)
 
- Public Member Functions inherited from Field
 Field (const Field &)=default
 
void operator= (Field &)=delete
 
bool has_insert_default_general_value_expression () const
 Checks if the field is marked as having a general expression to generate default values. More...
 
bool has_insert_default_datetime_value_expression () const
 Checks if the field is marked as having a datetime value expression to generate default values on inserts. More...
 
bool has_update_default_datetime_value_expression () const
 Checks if the field is marked as having a datetime value expression to generate default values on updates. More...
 
ucharget_null_ptr ()
 
virtual void set_field_length (uint32 length)
 
bool is_gcol () const
 
bool is_virtual_gcol () const
 
void set_hidden (dd::Column::enum_hidden_type hidden)
 Sets the hidden type for this field. More...
 
dd::Column::enum_hidden_type hidden () const
 
bool is_hidden_from_user () const
 
bool is_field_for_functional_index () const
 
 Field (uchar *ptr_arg, uint32 length_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg)
 This is used as a table name when the table structure is not set up. More...
 
virtual ~Field ()=default
 
void reset_warnings ()
 
void set_tmp_nullable ()
 Turn on temporary nullability for the field. More...
 
void reset_tmp_nullable ()
 Turn off temporary nullability for the field. More...
 
void reset_tmp_null ()
 Reset temporary NULL value for field. More...
 
void set_tmp_null ()
 Set field to temporary value NULL. More...
 
bool is_tmp_nullable () const
 
bool is_tmp_null () const
 
virtual type_conversion_status store_packed (longlong nr)
 Store a temporal value in packed longlong format into a field. More...
 
type_conversion_status store_time (MYSQL_TIME *ltime)
 Store MYSQL_TYPE value into a field when the number of fractional digits is not important or is not know. More...
 
type_conversion_status store (const char *to, size_t length, const CHARSET_INFO *cs, enum_check_fields check_level)
 
virtual longlong val_time_temporal () const
 Returns TIME value in packed longlong format. More...
 
virtual longlong val_date_temporal () const
 Returns DATE/DATETIME value in packed longlong format. More...
 
longlong val_temporal_by_field_type () const
 Returns "native" packed longlong representation of a TIME or DATE/DATETIME field depending on field type. More...
 
Stringval_str (String *str) const
 
Stringval_int_as_str (String *val_buffer, bool unsigned_flag) const
 Interpret field value as an integer but return the result as a string. More...
 
virtual bool str_needs_quotes () const
 
virtual Item_result numeric_context_result_type () const
 Returns Item_result type of a field when it appears in numeric context such as: SELECT time_column + 1; SELECT SUM(time_column); Examples: More...
 
virtual Item_result cmp_type () const
 
virtual Item_result cast_to_int_type () const
 
bool gcol_expr_is_equal (const Create_field *field) const
 Check whether generated columns' expressions are the same. More...
 
virtual bool eq (const Field *field) const
 
virtual uint32 pack_length_in_rec () const
 
virtual bool compatible_field_size (uint metadata, Relay_log_info *, uint16, int *order) const
 Check to see if field size is compatible with destination. More...
 
int save_field_metadata (uchar *first_byte)
 
virtual uint32 data_length (ptrdiff_t row_offset=0) const
 
virtual uint32 sort_length () const
 
virtual uint32 max_data_length () const
 Get the maximum size of the data in packed format. More...
 
virtual void reset_fields ()
 
virtual bool get_timestamp (struct timeval *tm, int *warnings) const
 Returns timestamp value in "struct timeval" format. More...
 
virtual void store_timestamp (const timeval *)
 Stores a timestamp value in timeval format in a field. More...
 
virtual void set_default ()
 
void evaluate_insert_default_function ()
 Evaluates the INSERT default function and stores the result in the field. More...
 
void evaluate_update_default_function ()
 Evaluates the UPDATE default function, if one exists, and stores the result in the record buffer. More...
 
virtual bool binary () const
 
virtual bool zero_pack () 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) const
 
virtual int cmp_max (const uchar *a, const uchar *b, uint max_len) const
 
virtual int cmp_binary (const uchar *a, const uchar *b, uint32 max_length=~0L) const
 
virtual int cmp_offset (ptrdiff_t row_offset) const
 
virtual int cmp_binary_offset (ptrdiff_t row_offset) const
 
virtual int key_cmp (const uchar *a, const uchar *b) const
 
virtual int key_cmp (const uchar *str, uint length) const
 
virtual bool is_text_key_type () const
 
bool is_null (ptrdiff_t row_offset=0) const
 Check whether the full table's row is NULL or the Field has value NULL. More...
 
bool is_real_null (ptrdiff_t row_offset=0) const
 Check whether the Field has value NULL (temporary or actual). More...
 
bool is_null_in_record (const uchar *record) const
 Check if the Field has value NULL or the record specified by argument has value NULL for this Field. More...
 
void set_null (ptrdiff_t row_offset=0)
 Set field to value NULL. More...
 
void set_notnull (ptrdiff_t row_offset=0)
 Set field to value NOT NULL. More...
 
type_conversion_status check_constraints (int mysql_errno)
 Check NOT NULL constraint on the field after temporary nullability is disabled. More...
 
void set_check_for_truncated_fields (enum_check_fields check_for_truncated_fields)
 Remember the value of THD::check_for_truncated_fields to handle possible NOT-NULL constraint errors after BEFORE-trigger execution is finished. More...
 
bool is_nullable () const
 
uint null_offset (const uchar *record) const
 
uint null_offset () const
 
void set_null_ptr (uchar *p_null_ptr, uint p_null_bit)
 
virtual void make_send_field (Send_field *send_field) const
 Populates a Send_field object with metadata about the column represented by this Field object. More...
 
virtual bool optimize_range (uint idx, uint part) const
 
virtual void mem_free ()
 
virtual Fieldnew_field (MEM_ROOT *root, TABLE *new_table) const
 
Fieldnew_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit) const
 
virtual Fieldnew_key_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit) const
 
Fieldnew_key_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr) const
 
void move_field (uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg)
 
virtual void move_field_offset (ptrdiff_t ptr_diff)
 
virtual void get_image (uchar *buff, size_t length, const CHARSET_INFO *) const
 
virtual void set_image (const uchar *buff, size_t length, const CHARSET_INFO *)
 
virtual size_t get_key_image (uchar *buff, size_t length, imagetype type) const
 
virtual void set_key_image (const uchar *buff, size_t length)
 
longlong val_int_offset (ptrdiff_t row_offset)
 
longlong val_int (uchar *new_ptr)
 
Stringval_str (String *str, uchar *new_ptr)
 
ucharpack (uchar *to, const uchar *from) const
 
const ucharunpack (uchar *to, const uchar *from)
 
virtual ucharpack_with_metadata_bytes (uchar *to, const uchar *from, uint max_length) const
 This function does the same thing as pack(), except for the difference that max_length does not mean the number of bytes in the output, but the maximum field length from the input (which must be exactly field->max_field_length()). More...
 
virtual bool pack_diff (uchar **to, ulonglong value_options) const
 Write the field for the binary log in diff format. More...
 
virtual uint max_packed_col_length () const
 This is a wrapper around pack_length() used by filesort() to determine how many bytes we need for packing "addon fields". More...
 
uint offset (uchar *record) const
 
void copy_data (ptrdiff_t src_record_offset)
 
const CHARSET_INFOcharset_for_protocol () const
 
virtual const CHARSET_INFOsort_charset () const
 
virtual bool has_charset () const
 
virtual bool match_collation_to_optimize_range () const
 
virtual void set_derivation (enum Derivation)
 
bool set_warning (Sql_condition::enum_severity_level level, unsigned int code, int cut_increment)
 Produce warning or note about data saved into field. More...
 
bool set_warning (Sql_condition::enum_severity_level level, uint code, int cut_increment, const char *view_db, const char *view_name)
 Produce warning or note about data saved into field. More...
 
bool warn_if_overflow (int op_result)
 Process decimal library return codes and issue warnings for overflow and truncation. More...
 
virtual void init (TABLE *table_arg)
 
longlong convert_decimal2longlong (const my_decimal *val, bool unsigned_flag, bool *has_overflow)
 Conversion from decimal to longlong. More...
 
virtual uint32 char_length () const
 
virtual geometry_type get_geometry_type () const
 
void dbug_print () const
 
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) const
 
virtual const ucharget_ptr () const
 Return a pointer to the actual data in memory. More...
 
virtual bool is_updatable () const
 Checks whether a string field is part of write_set. More...
 
bool is_part_of_actual_key (THD *thd, uint cur_index, KEY *cur_index_info) const
 Check whether field is part of the index taking the index extensions flag into account. More...
 
Key_map get_covering_prefix_keys () const
 Get covering prefix keys. More...
 
virtual bool is_array () const
 Whether the field is a typed array. More...
 
virtual uint32 get_length_bytes () const
 Return number of bytes the field's length takes. More...
 
bool handle_old_value () const
 Whether field's old valued have to be handled. More...
 

Static Public Attributes

static const int PACK_LENGTH = 8
 

Additional Inherited Members

- Public Types inherited from Field
enum  enum_auto_flags {
  NONE = 0, NEXT_NUMBER = 1, DEFAULT_NOW = 2, ON_UPDATE_NOW = 4,
  GENERATED_FROM_EXPRESSION = 8
}
 Flags for Field::auto_flags / Create_field::auto_flags bitmaps. More...
 
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 }
 
- Static Public Member Functions inherited from Field
static bool type_can_have_key_part (enum_field_types)
 Check whether a field type can be partially indexed by a key. More...
 
static enum_field_types field_type_merge (enum_field_types, enum_field_types)
 Return type of which can carry value of both given types in UNION result. More...
 
static Item_result result_merge_type (enum_field_types)
 Detect Item_result by given field type of UNION merge result. More...
 
- Public Attributes inherited from Field_num
const uint8 dec
 
bool zerofill
 True if the column was declared with the ZEROFILL attribute. More...
 
- Public Attributes inherited from Field
ucharptr
 Holds the position to the field in record. More...
 
TABLEtable
 
const TABLEorig_table
 
const char ** table_name
 
const char * field_name
 
LEX_CSTRING comment
 
Key_map key_start
 
Key_map part_of_key
 Keys that includes this field except of prefix keys. More...
 
Key_map part_of_prefixkey
 Prefix keys. More...
 
Key_map part_of_sortkey
 
Key_map part_of_key_not_extended
 All keys that include this field, but not extended by the storage engine to include primary key columns. More...
 
uint32 field_length
 
uint32 flags
 
uint16 field_index
 
uchar null_bit
 
uchar auto_flags
 Bitmap of flags indicating if field value is auto-generated by default and/or on update, and in which way. More...
 
bool is_created_from_null_item
 If true, this field was created in create_tmp_field_from_item from a NULL value. More...
 
bool m_indexed
 True if this field belongs to some index (unlike part_of_key, the index might have only a prefix). More...
 
Value_generatorgcol_info {nullptr}
 
bool stored_in_db
 
bool unsigned_flag
 Whether the field is signed or not. More...
 
Value_generatorm_default_val_expr {nullptr}
 Holds the expression to be used to generate default values. More...
 
- Protected Member Functions inherited from Field
ucharpack_int16 (uchar *to, const uchar *from, uint max_length, bool low_byte_first_to) const
 
const ucharunpack_int16 (uchar *to, const uchar *from, bool low_byte_first_from) const
 
ucharpack_int24 (uchar *to, const uchar *from, uint max_length, bool low_byte_first_to) const
 
const ucharunpack_int24 (uchar *to, const uchar *from, bool low_byte_first_from) const
 
ucharpack_int32 (uchar *to, const uchar *from, uint max_length, bool low_byte_first_to) const
 
const ucharunpack_int32 (uchar *to, const uchar *from, bool low_byte_first_from) const
 
ucharpack_int64 (uchar *to, const uchar *from, uint max_length, bool low_byte_first_to) const
 
const ucharunpack_int64 (uchar *to, const uchar *from, bool low_byte_first_from) const
 
- Static Protected Attributes inherited from Field
static uchar dummy_null_buffer = ' '
 

Constructor & Destructor Documentation

◆ Field_longlong() [1/2]

Field_longlong::Field_longlong ( uchar ptr_arg,
uint32  len_arg,
uchar null_ptr_arg,
uchar  null_bit_arg,
uchar  auto_flags_arg,
const char *  field_name_arg,
bool  zero_arg,
bool  unsigned_arg 
)
inline

◆ Field_longlong() [2/2]

Field_longlong::Field_longlong ( uint32  len_arg,
bool  is_nullable_arg,
const char *  field_name_arg,
bool  unsigned_arg 
)
inline

Member Function Documentation

◆ can_be_compared_as_longlong()

bool Field_longlong::can_be_compared_as_longlong ( ) const
inlinefinaloverridevirtual

Reimplemented from Field.

◆ clone()

Field_longlong* Field_longlong::clone ( MEM_ROOT mem_root) const
inlinefinaloverridevirtual

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.

◆ cmp()

int Field_longlong::cmp ( const uchar a_ptr,
const uchar b_ptr 
) const
finaloverridevirtual

Implements Field.

◆ get_max_int_value()

ulonglong Field_longlong::get_max_int_value ( ) const
inlinefinaloverridevirtual

Get the upper limit of the MySQL integral and floating-point type.

Returns
maximum allowed value for the field

Reimplemented from Field.

◆ key_type()

enum ha_base_keytype Field_longlong::key_type ( ) const
inlinefinaloverridevirtual

Reimplemented from Field.

◆ make_sort_key()

size_t Field_longlong::make_sort_key ( uchar buff,
size_t  length 
) const
finaloverridevirtual

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.
Return values
Thenumber of bytes actually written.
Note
This is now only used by replication; filesort makes its own sort keys based off of Items, not Fields.

Implements Field.

◆ max_display_length()

uint32 Field_longlong::max_display_length ( ) const
inlinefinaloverridevirtual

Implements Field.

◆ pack()

uchar* Field_longlong::pack ( uchar to,
const uchar from,
uint  max_length,
bool  low_byte_first 
) const
inlinefinaloverridevirtual

Pack the field into a format suitable for storage and transfer.

To implement packing functionality, only the virtual function should be overridden. The other functions are just convenience functions and hence should not be overridden.

The actual format is opaque and will vary between types of Field (it is meant to be unpacked by unpack(), but be aware that it is used among others in the replication log, so you cannot change it without incurring a format break.

Note
The default implementation just copies the raw bytes of the record into the destination, but never more than max_length characters.
Parameters
toPointer to memory area where representation of field should be put.
fromPointer to memory area where record representation of field is stored, typically field->field_ptr().
max_lengthAvailable space in “to”, in bytes. pack() will not write more bytes than this; if the field is too short, the contents are not unpackable by unpack(). (It is nominally supposed to be a prefix of what would have been written with a full buffer, ie., the same as packing and then truncating the output, but not all Field classes follow this.)
low_byte_firsttrue if integers should be stored little-endian, false if native format should be used. Note that for little-endian machines, the value of this flag is moot, since the native format is little-endian.

This value is dependent on how the packed data is going to be used: for local use, e.g., temporary store on disk or in memory, use the native format since that is faster. For data that is going to be transferred to other machines (e.g., when writing data to the binary log), data should always be stored in little-endian format.

Returns
The byte after the last byte in “to” written to. If the return value is equal to (to + max_length), it could either be that the value fit exactly, or that the buffer was too small; you cannot distinguish between the two cases based on the return value alone.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Reimplemented from Field.

◆ pack_length()

uint32 Field_longlong::pack_length ( ) const
inlinefinaloverridevirtual

Reimplemented from Field.

◆ reset()

type_conversion_status Field_longlong::reset ( )
inlinefinaloverridevirtual

Reimplemented from Field.

◆ result_type()

enum Item_result Field_longlong::result_type ( ) const
inlinefinaloverridevirtual

Reimplemented from Field_num.

◆ send_to_protocol()

bool Field_longlong::send_to_protocol ( Protocol protocol) const
finaloverridevirtual

Send the value of this field over the protocol using the correct Protocol::store*() function which matches the type of the field.

Reimplemented from Field.

◆ sql_type()

void Field_longlong::sql_type ( String str) const
finaloverridevirtual

Implements Field.

◆ store() [1/3]

type_conversion_status Field_longlong::store ( const char *  to,
size_t  length,
const CHARSET_INFO charset 
)
finaloverridevirtual

Implements Field.

◆ store() [2/3]

type_conversion_status Field_longlong::store ( double  nr)
finaloverridevirtual

Implements Field.

◆ store() [3/3]

type_conversion_status Field_longlong::store ( longlong  nr,
bool  unsigned_val 
)
overridevirtual

Implements Field.

◆ type()

enum_field_types Field_longlong::type ( ) const
inlinefinaloverridevirtual

Implements Field.

◆ unpack()

const uchar* Field_longlong::unpack ( uchar to,
const uchar from,
uint  param_data,
bool  low_byte_first 
)
inlinefinaloverridevirtual

Unpack a field from row data.

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

The param_data parameter is a two-byte integer (stored in the least significant 16 bits of the unsigned integer) usually consisting of two parts: the real type in the most significant byte and a original pack length in the least significant byte.

The exact layout of the param_data field is given by the Table_map_log_event::save_field_metadata().

This is the default method for unpacking a field. It just copies the memory block in byte order (of original pack length bytes or length of field, whichever is smaller).

Parameters
toDestination of the data
fromSource of the data
param_dataReal type and original pack length of the field data
low_byte_firstIf this flag is true, all composite entities (e.g., lengths) should be unpacked in little-endian format; otherwise, the entities are unpacked in native order.
Returns
New pointer into memory based on from + length of the data

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Reimplemented from Field.

◆ val_int()

longlong Field_longlong::val_int ( void  ) const
overridevirtual

Implements Field.

◆ val_real()

double Field_longlong::val_real ( void  ) const
finaloverridevirtual

Implements Field.

◆ val_str()

String * Field_longlong::val_str ( String val_buffer,
String val_ptr 
) const
finaloverridevirtual

Implements Field.

Member Data Documentation

◆ PACK_LENGTH

const int Field_longlong::PACK_LENGTH = 8
static

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