MySQL 9.1.0
Source Code Documentation
|
Abstract class for TIME and TIME(N). More...
#include <field.h>
Public Member Functions | |
Field_time_common (uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, uint8 dec_arg) | |
Constructor for Field_time_common. More... | |
type_conversion_status | store_time (MYSQL_TIME *ltime, uint8 dec) final |
Store MYSQL_TIME value with the given amount of decimal digits into a field. More... | |
String * | val_str (String *, String *) const final |
bool | get_date (MYSQL_TIME *ltime, my_time_flags_t fuzzydate) const final |
For a column for TIME type, get_date() takes the time value of the field, adds current date to it and returns the result as a DATETIME value. More... | |
longlong | val_date_temporal () const final |
Returns DATE/DATETIME value in packed longlong format. More... | |
bool | send_to_protocol (Protocol *protocol) const final |
Send the value of this field over the protocol using the correct Protocol::store*() function which matches the type of the field. More... | |
Public Member Functions inherited from Field_temporal | |
Field_temporal (uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, uint32 len_arg, uint8 dec_arg) | |
Constructor for Field_temporal. More... | |
Item_result | result_type () const final |
uint32 | max_display_length () const final |
bool | str_needs_quotes () const final |
uint | is_equal (const Create_field *new_field) const final |
Whether a field being created is type-compatible with an existing one. More... | |
Item_result | numeric_context_result_type () const final |
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... | |
enum Item_result | cmp_type () const final |
enum Derivation | derivation () const final |
uint | repertoire () const final |
const CHARSET_INFO * | charset () const final |
bool | can_be_compared_as_longlong () const final |
bool | binary () const final |
type_conversion_status | store (const char *str, size_t len, const CHARSET_INFO *cs) final |
Store string into a date/time/datetime field. More... | |
type_conversion_status | store_decimal (const my_decimal *decimal) final |
type_conversion_status | store (longlong nr, bool unsigned_val) override |
type_conversion_status | store (double nr) final |
double | val_real () const override |
uint8 | get_dec () const |
my_decimal * | val_decimal (my_decimal *decimal_value) const override |
my_time_flags_t | get_date_flags (const THD *thd) const |
uint8 | get_fractional_digits () const |
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... | |
bool | has_insert_default_constant_expression () const |
Checks if the field is marked as having a constant expression to generate default values. More... | |
uchar * | get_null_ptr () |
virtual void | set_field_length (uint32 length) |
virtual void | add_to_cost (CostOfItem *cost) const |
Update '*cost' with the fact that this Field is accessed. More... | |
bool | is_flag_set (unsigned flag) const |
void | set_flag (unsigned flag) |
void | clear_flag (unsigned flag) |
uint32 | all_flags () const |
virtual bool | is_wrapper_field () const |
If true, it's a Create_field_wrapper (a sub-class of Field used during CREATE/ALTER that we mustn't cast to other sub-classes of Field that aren't on a direct path of inheritance, e.g. More... | |
virtual bool | is_unsigned () const |
Whether the field is signed or not. More... | |
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 () const |
bool | is_hidden_by_system () const |
bool | is_hidden_by_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_int () const =0 |
virtual longlong | val_time_temporal () const |
Returns TIME value in packed longlong format. More... | |
virtual longlong | val_time_temporal_at_utc () const |
virtual longlong | val_date_temporal_at_utc () const |
longlong | val_temporal_by_field_type () const |
Returns "native" packed longlong representation of a TIME or DATE/DATETIME field depending on field type. More... | |
String * | val_str (String *str) const |
String * | val_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 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 bool | eq_def (const Field *field) const |
virtual uint32 | pack_length () 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... | |
virtual uint | pack_length_from_metadata (uint field_metadata) const |
virtual uint | row_pack_length () const |
int | save_field_metadata (uchar *first_byte) |
virtual uint32 | data_length (ptrdiff_t row_offset=0) const |
virtual uint32 | max_data_length () const |
Get the maximum size of the data in packed format. More... | |
virtual type_conversion_status | reset () |
virtual bool | get_timestamp (my_timeval *tm, int *warnings) const |
Returns a UTC component in struct timeval format. More... | |
virtual void | store_timestamp (const my_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 | zero_pack () const |
virtual enum ha_base_keytype | key_type () const |
virtual uint32 | key_length () const |
virtual enum_field_types | type () const =0 |
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 (const uchar *, const uchar *) const =0 |
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 uint | decimals () const |
virtual bool | is_text_key_type () const |
virtual void | sql_type (String &str) const =0 |
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 size_t | make_sort_key (uchar *buff, size_t length) const =0 |
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comparison. More... | |
virtual size_t | make_sort_key (uchar *buff, size_t length, size_t trunc_pos) const |
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comparison. More... | |
virtual bool | optimize_range (uint idx, uint part) const |
Whether this field can be used for index range scans when in the given keypart of the given index. More... | |
virtual void | mem_free () |
virtual Field * | new_field (MEM_ROOT *root, TABLE *new_table) const |
Field * | new_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit) const |
virtual Field * | new_key_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit) const |
Field * | new_key_field (MEM_ROOT *root, TABLE *new_table, uchar *new_ptr) const |
virtual Field * | clone (MEM_ROOT *mem_root) const =0 |
Makes a shallow copy of the Field object. More... | |
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) |
String * | val_str (String *str, uchar *new_ptr) |
virtual uchar * | pack (uchar *to, const uchar *from, size_t max_length) const |
Pack the field into a format suitable for storage and transfer. More... | |
uchar * | pack (uchar *to) const |
virtual const uchar * | unpack (uchar *to, const uchar *from, uint param_data) |
Unpack a field from row data. More... | |
const uchar * | unpack (const uchar *from) |
virtual uchar * | pack_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) |
virtual bool | get_time (MYSQL_TIME *ltime) const |
const CHARSET_INFO * | charset_for_protocol () const |
virtual const CHARSET_INFO * | sort_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 ulonglong | get_max_int_value () const |
Get the upper limit of the MySQL integral and floating-point type. More... | |
virtual const uchar * | data_ptr () const |
Return a const pointer to the actual data in the record buffer. More... | |
const uchar * | field_ptr () const |
Return a const pointer to where the field is stored in the record buffer. More... | |
uchar * | field_ptr () |
Return a pointer to where the field is stored in the record buffer. More... | |
void | set_field_ptr (uchar *ptr_arg) |
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... | |
virtual void | set_field_index (uint16 field_index) |
Sets field index. More... | |
uint16 | field_index () const |
Returns field index. More... | |
Protected Member Functions | |
bool | convert_str_to_TIME (const char *str, size_t len, const CHARSET_INFO *cs, MYSQL_TIME *ltime, MYSQL_TIME_STATUS *status) final |
Convert a string to MYSQL_TIME, according to the field type. More... | |
type_conversion_status | convert_number_to_TIME (longlong nr, bool unsigned_val, int nanoseconds, MYSQL_TIME *ltime, int *warning) final |
type_conversion_status | store_internal (const MYSQL_TIME *ltime, int *error) override=0 |
Low-level function to store MYSQL_TIME value. More... | |
type_conversion_status | store_internal_adjust_frac (MYSQL_TIME *ltime, int *warnings) final |
Function to store time value. More... | |
my_time_flags_t | date_flags (const THD *thd) const final |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime(). More... | |
virtual my_time_flags_t | date_flags (const THD *thd) const |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime(). More... | |
my_time_flags_t | date_flags () const |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime(). More... | |
Protected Member Functions inherited from Field_temporal | |
type_conversion_status | store_lldiv_t (const lldiv_t *lld, int *warning) |
Store a temporal value in lldiv_t into a field, with rounding according to the field decimals() value. More... | |
longlong | convert_number_to_datetime (longlong nr, bool unsigned_val, MYSQL_TIME *ltime, int *warnings) |
Convert an integer number into MYSQL_TIME, according to the field type. More... | |
bool | set_warnings (const ErrConvString &str, int warnings) |
Set warnings from a warning vector. More... | |
my_time_flags_t | date_flags () const |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime(). More... | |
bool | set_datetime_warning (Sql_condition::enum_severity_level level, uint code, const ErrConvString &val, enum_mysql_timestamp_type ts_type, int truncate_increment) |
Produce warning or note about double datetime data saved into field. More... | |
Protected Member Functions inherited from Field | |
uchar * | pack_int16 (uchar *to, const uchar *from, size_t max_length) const |
const uchar * | unpack_int16 (uchar *to, const uchar *from) const |
uchar * | pack_int24 (uchar *to, const uchar *from, size_t max_length) const |
const uchar * | unpack_int24 (uchar *to, const uchar *from) const |
uchar * | pack_int32 (uchar *to, const uchar *from, size_t max_length) const |
const uchar * | unpack_int32 (uchar *to, const uchar *from) const |
uchar * | pack_int64 (uchar *to, const uchar *from, size_t max_length) const |
const uchar * | unpack_int64 (uchar *to, const uchar *from) const |
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 | |
TABLE * | table |
Pointer to TABLE object that owns this field. More... | |
const char * | orig_db_name {nullptr} |
Pointer to original database name, only non-NULL for a temporary table. More... | |
const char * | orig_table_name {nullptr} |
Pointer to original table name, only non-NULL for a temporary table. More... | |
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 |
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... | |
LEX_CSTRING | m_engine_attribute = EMPTY_CSTR |
LEX_CSTRING | m_secondary_engine_attribute = EMPTY_CSTR |
Value_generator * | gcol_info {nullptr} |
bool | stored_in_db |
Indication that the field is physically stored in tables rather than just generated on SQL queries. More... | |
Value_generator * | m_default_val_expr {nullptr} |
Holds the expression to be used to generate default values. More... | |
Static Public Attributes inherited from Field | |
static constexpr size_t | MAX_VARCHAR_WIDTH {65535} |
static constexpr size_t | MAX_TINY_BLOB_WIDTH {255} |
static constexpr size_t | MAX_SHORT_BLOB_WIDTH {65535} |
static constexpr size_t | MAX_MEDIUM_BLOB_WIDTH {16777215} |
static constexpr size_t | MAX_LONG_BLOB_WIDTH {4294967295} |
Static Protected Member Functions inherited from Field_temporal | |
static uint8 | normalize_dec (uint8 dec_arg) |
Adjust number of decimal digits from DECIMAL_NOT_SPECIFIED to DATETIME_MAX_DECIMALS. More... | |
Protected Attributes inherited from Field_temporal | |
uint8 | dec |
Protected Attributes inherited from Field | |
uchar * | ptr |
Holds the position to the field in record. More... | |
Static Protected Attributes inherited from Field | |
static uchar | dummy_null_buffer = ' ' |
Abstract class for TIME and TIME(N).
|
inline |
Constructor for Field_time_common.
ptr_arg | See Field definition |
null_ptr_arg | See Field definition |
null_bit_arg | See Field definition |
auto_flags_arg | See Field definition |
field_name_arg | See Field definition |
dec_arg | Number of second fraction digits, 0..6. |
|
finalprotectedvirtual |
Implements Field_temporal.
|
finalprotectedvirtual |
Convert a string to MYSQL_TIME, according to the field type.
[in] | str | String |
[in] | len | String length |
[in] | cs | String character set |
[out] | ltime | The value is stored here |
[out] | status | Conversion status |
false | Conversion went fine, ltime contains a valid time |
true | Conversion failed, ltime was reset and contains nothing |
Implements Field_temporal.
|
protected |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime().
Similar to the above when we don't have a THD value.
|
inlineprotectedvirtual |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime().
Flags depend on the session sql_mode settings, such as MODE_NO_ZERO_DATE, MODE_NO_ZERO_IN_DATE. Also, Field_newdate, Field_datetime, Field_datetimef add TIME_FUZZY_DATE to the session sql_mode settings, to allow relaxed date format, while Field_timestamp, Field_timestampf do not.
thd | THD |
sql_mode | flags mixed with the field type flags. |
Reimplemented from Field_temporal.
|
finalprotectedvirtual |
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime().
Flags depend on the session sql_mode settings, such as MODE_NO_ZERO_DATE, MODE_NO_ZERO_IN_DATE. Also, Field_newdate, Field_datetime, Field_datetimef add TIME_FUZZY_DATE to the session sql_mode settings, to allow relaxed date format, while Field_timestamp, Field_timestampf do not.
thd | THD |
sql_mode | flags mixed with the field type flags. |
Reimplemented from Field_temporal.
|
finalvirtual |
For a column for TIME type, get_date() takes the time value of the field, adds current date to it and returns the result as a DATETIME value.
Reimplemented from Field.
|
finalvirtual |
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.
|
overrideprotectedpure virtual |
Low-level function to store MYSQL_TIME value.
The value must be rounded or truncated according to decimals().
Implements Field_temporal.
Implemented in Field_time, and Field_timef.
|
finalprotectedvirtual |
Function to store time value.
The value is rounded/truncated according to decimals() and sql_mode.
Implements Field_temporal.
|
finalvirtual |
Store MYSQL_TIME value with the given amount of decimal digits into a field.
This is called when storing a date in a string.
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.
ltime | Time, date or datetime value. |
dec_arg | Number of decimals in ltime. |
false | on success |
true | on error |
Reimplemented from Field.
|
finalvirtual |
Returns DATE/DATETIME value in packed longlong format.
This method should not be called for non-temporal types. Temporal field types override the default method.
Reimplemented from Field.
Implements Field.