63#include "vector-common/vector_constants.h"
119#define portable_sizeof_char_ptr 8
256#define IS_EQUAL_YES 1
257#define IS_EQUAL_PACK_LENGTH 2
259#define my_charset_numeric my_charset_latin1
260#define MY_REPERTOIRE_NUMERIC MY_REPERTOIRE_ASCII
288 return elements < 256 ? 1 : 2;
292 const uint len = (elements + 7) / 8;
293 return len > 4 ? 8 : len;
335#define ASSERT_COLUMN_MARKED_FOR_READ \
337 (!table->read_set || bitmap_is_set(table->read_set, field_index())))
338#define ASSERT_COLUMN_MARKED_FOR_WRITE \
339 assert(!table || (!table->write_set || \
340 bitmap_is_set(table->write_set, field_index())))
420 switch (pack_length) {
453template <
bool Is_big_endian>
456 if (to_length == 0)
return;
458 std::copy(from, from + std::min(to_length, from_length), to);
460 to[0] =
static_cast<char>(to[0] ^ 128);
462 const uchar *from_end = from + from_length;
463 const uchar *from_start = from_end - std::min(from_length, to_length);
464 std::reverse_copy(from_start, from_end, to);
466 to[0] =
static_cast<char>(to[0] ^ 128);
885 uchar null_bit_arg,
uchar auto_flags_arg,
const char *field_name_arg);
940 return store(nr,
false);
1077 return field_metadata;
1193 uint max_len [[maybe_unused]])
const {
1198 uint32 max_length [[maybe_unused]] = ~0
L)
const {
1282 void set_null(ptrdiff_t row_offset = 0);
1361 size_t trunc_pos [[maybe_unused]])
const {
1383 uchar *new_null_ptr, uint new_null_bit)
const {
1385 field->
move_field(new_ptr, new_null_ptr, new_null_bit);
1390 uchar *new_null_ptr, uint new_null_bit)
const;
1475 return return_value;
1551 uint max_length)
const {
1552 return pack(to, from, max_length);
1578 ulonglong value_options [[maybe_unused]])
const {
1592 void copy_data(ptrdiff_t src_record_offset);
1643 int cut_increment) {
1644 return set_warning(level, code, cut_increment,
nullptr,
nullptr);
1648 int cut_increment,
const char *view_db,
1649 const char *view_name);
1677 bool *has_overflow);
1729 virtual void hash(ulong *nr, ulong *nr2)
const;
1793 KEY *cur_index_info)
const;
1854 [[maybe_unused]])
const {
1970 const char *field_name_arg,
uint8 dec_arg,
bool zero_arg,
1991 size_t length,
const char *int_end,
2055 const char *well_formed_error_pos,
const char *cannot_convert_error_pos,
2056 const char *from_end_pos,
const char *
end,
bool count_spaces,
2062 const char *field_name_arg,
const CHARSET_INFO *charset_arg)
2063 :
Field_str(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2064 field_name_arg, charset_arg) {}
2077 TR_POSITIVE_OVERFLOW = 1,
2078 TR_NEGATIVE_OVERFLOW = 2
2083 const char *field_name_arg,
uint8 dec_arg,
bool zero_arg,
2085 :
Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2086 field_name_arg, dec_arg, zero_arg, unsigned_arg),
2104 const char *field_name_arg,
uint8 dec_arg,
bool zero_arg,
2106 :
Field_real(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2107 field_name_arg, dec_arg, zero_arg, unsigned_arg) {}
2122 void overflow(
bool negative);
2151 bool m_keep_precision{
false};
2166 const char *field_name_arg,
uint8 dec_arg,
bool zero_arg,
2169 const char *field_name_arg,
uint8 dec_arg,
2176 void set_value_on_overflow(
my_decimal *decimal_value,
bool sign) const;
2198 int *order_var)
const final;
2205 static Field *create_from_item(
const Item *item);
2214 const char *field_name_arg,
bool zero_arg,
bool unsigned_arg)
2215 :
Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2216 field_name_arg, 0, zero_arg, unsigned_arg) {}
2221 field_name_arg, 0, false, unsigned_arg) {}
2246 if (max_length > 0) *to = *from;
2251 uint param_data [[maybe_unused]])
final {
2265 const char *field_name_arg,
bool zero_arg,
bool unsigned_arg)
2266 :
Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2267 field_name_arg, 0, zero_arg, unsigned_arg) {}
2272 field_name_arg, 0, false, unsigned_arg) {}
2274 :
Field_short(len_arg, false, field_name_arg, unsigned_arg) {}
2303 uint param_data [[maybe_unused]])
final {
2316 const char *field_name_arg,
bool zero_arg,
bool unsigned_arg)
2317 :
Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2318 field_name_arg, 0, zero_arg, unsigned_arg) {}
2323 field_name_arg, 0, false, unsigned_arg) {}
2354 static const int PACK_LENGTH = 4;
2358 const char *field_name_arg,
bool zero_arg,
bool unsigned_arg)
2359 :
Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2360 field_name_arg, 0, zero_arg, unsigned_arg) {}
2365 field_name_arg, 0, false, unsigned_arg) {}
2395 uint param_data [[maybe_unused]])
final {
2400 return is_unsigned() ? 0xFFFFFFFFULL : 0x7FFFFFFFULL;
2406 static const int PACK_LENGTH = 8;
2410 const char *field_name_arg,
bool zero_arg,
bool unsigned_arg)
2411 :
Field_num(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2412 field_name_arg, 0, zero_arg, unsigned_arg) {}
2414 const char *field_name_arg,
bool unsigned_arg)
2417 field_name_arg, 0, false, unsigned_arg) {}
2446 uint param_data [[maybe_unused]])
final {
2451 return is_unsigned() ? 0xFFFFFFFFFFFFFFFFULL : 0x7FFFFFFFFFFFFFFFULL;
2459 const char *field_name_arg,
uint8 dec_arg,
bool zero_arg,
2461 :
Field_real(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2462 field_name_arg, dec_arg, zero_arg, unsigned_arg) {}
2464 uint8 dec_arg,
bool unsigned_arg)
2467 field_name_arg, dec_arg, false, unsigned_arg) {}
2492 return 0x1000000ULL;
2503 const char *field_name_arg,
uint8 dec_arg,
bool zero_arg,
2505 :
Field_real(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2506 field_name_arg, dec_arg, zero_arg, unsigned_arg) {}
2511 field_name_arg, dec_arg, false, false) {}
2513 uint8 dec_arg,
bool unsigned_arg)
2516 field_name_arg, dec_arg, false, unsigned_arg) {}
2518 uint8 dec_arg,
bool unsigned_arg,
bool not_fixed_arg)
2521 field_name_arg, dec_arg, false, unsigned_arg) {
2522 not_fixed = not_fixed_arg;
2548 return 0x20000000000000ULL;
2563 field_name_arg,
cs) {}
2753 [[nodiscard]]
bool set_datetime_warning(
2756 int truncate_increment);
2770 uchar auto_flags_arg,
const char *field_name_arg,
2774 ((normalize_dec(dec_arg)) ? normalize_dec(dec_arg) + 1 : 0),
2775 null_ptr_arg, null_bit_arg, auto_flags_arg, field_name_arg) {
2777 dec = normalize_dec(dec_arg);
2806 return date_flags(thd);
2826 return get_date_internal(ltime);
2834 bool get_internal_check_zero(
MYSQL_TIME *ltime,
2845 int *warnings)
final;
2861 const char *field_name_arg,
uint8 int_length_arg,
2863 :
Field_temporal(ptr_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
2864 field_name_arg, int_length_arg, dec_arg) {}
2901 void init_timestamp_flags();
2923 const char *field_name_arg,
uint8 dec_arg)
2925 auto_flags_arg, field_name_arg,
2954 const char *field_name_arg,
uint8 dec_arg)
2956 auto_flags_arg, field_name_arg,
2984 bool get_date_internal(
MYSQL_TIME *ltime)
const final;
2985 bool get_date_internal_at_utc(
MYSQL_TIME *ltime)
const final;
2986 void store_timestamp_internal(
const my_timeval *tm)
final;
2989 static const int PACK_LENGTH = 4;
2992 const char *field_name_arg);
3015 uint param_data [[maybe_unused]])
final {
3040 bool get_date_internal(
MYSQL_TIME *ltime)
const final;
3041 bool get_date_internal_at_utc(
MYSQL_TIME *ltime)
const final;
3045 void store_timestamp_internal(
const my_timeval *tm)
override;
3058 uchar auto_flags_arg,
const char *field_name_arg,
3109 enum Limits { MIN_YEAR = 1901, MAX_YEAR = 2155 };
3111 uchar auto_flags_arg,
const char *field_name_arg)
3112 :
Field_tiny(ptr_arg, 4, null_ptr_arg, null_bit_arg, auto_flags_arg,
3113 field_name_arg, true, true) {}
3116 0,
NONE, field_name_arg, true, true) {}
3137 static const int PACK_LENGTH = 3;
3139 bool get_date_internal(
MYSQL_TIME *ltime)
const final;
3145 uchar auto_flags_arg,
const char *field_name_arg)
3197 int *
error)
override = 0;
3203 int *warnings)
final;
3219 uchar auto_flags_arg,
const char *field_name_arg,
3221 :
Field_temporal(ptr_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
3241 uchar auto_flags_arg,
const char *field_name_arg)
3243 field_name_arg, 0) {}
3289 uchar auto_flags_arg,
const char *field_name_arg,
uint8 dec_arg)
3291 field_name_arg, dec_arg) {}
3301 NONE, field_name_arg, dec_arg) {}
3345 bool get_date_internal(
MYSQL_TIME *ltime)
const final;
3347 void store_timestamp_internal(
const my_timeval *tm)
final;
3350 static const int PACK_LENGTH = 8;
3365 uchar auto_flags_arg,
const char *field_name_arg)
3367 auto_flags_arg, field_name_arg, 0) {}
3370 field_name_arg, 0) {}
3393 uint param_data [[maybe_unused]])
final {
3403 bool get_date_internal(
MYSQL_TIME *ltime)
const final;
3407 void store_timestamp_internal(
const my_timeval *tm)
final;
3420 uchar auto_flags_arg,
const char *field_name_arg,
3423 auto_flags_arg, field_name_arg,
3435 field_name_arg, dec_arg) {}
3464 :
Field_longstr(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
3465 auto_flags_arg, field_name_arg,
cs) {}
3470 field_name_arg,
cs) {}
3496 const char *
string = pointer_cast<const char *>(
ptr);
3508 DBUG_PRINT(
"debug", (
"field_metadata: 0x%04x", field_metadata));
3510 return (((field_metadata >> 4) & 0x300) ^ 0x300) +
3511 (field_metadata & 0x00ff);
3514 uint16 mflags,
int *order_var)
const final;
3572 uint32 max_length = ~0
L)
const final;
3583 uchar *new_null_ptr, uint new_null_bit)
const final;
3590 void hash(ulong *nr, ulong *nr2)
const final;
3681 bool m_uses_backup{
false};
3690 memmove(
ptr + packlength, &from,
sizeof(
char *));
3695 uchar auto_flags_arg,
const char *field_name_arg,
3702 field_name_arg,
cs),
3704 m_keep_old_value(false) {
3706 if (set_packlength) {
3707 packlength = len_arg <= 255 ? 1
3708 : len_arg <= 65535 ? 2
3709 : len_arg <= 16777215 ? 3
3717 packlength(field.packlength),
3720 m_keep_old_value(field.m_keep_old_value),
3751 uint32 max_length = ~0
L)
const override;
3775 void store_length(
uchar *i_ptr, uint i_packlength,
uint32 i_number);
3777 store_length(
ptr, packlength, number);
3780 return get_length(row_offset);
3782 uint32 get_length(ptrdiff_t row_offset = 0)
const;
3790 return get_blob_data(
ptr + packlength + row_offset);
3802 memcpy(&data, position,
sizeof(data));
3809 memcpy(
ptr + packlength, &data,
sizeof(
char *));
3813 store_length(ptr_ofs, packlength,
length);
3814 memcpy(ptr_ofs + packlength, &data,
sizeof(
char *));
3817 set_ptr_offset(0,
length, data);
3830 uint max_length)
const final;
3870 m_keep_old_value = old_value_flag;
3913 if (m_keep_old_value) {
3915 m_keep_old_value =
false;
3923 store_ptr_and_length(from,
length);
3934 bool backup_blob_field();
3940 void restore_blob_backup();
3948 static const uint32 max_dimensions = vector_constants::max_dimensions;
3949 static const uint32 precision =
sizeof(float);
3951 return precision * dimensions;
3961 :
Field_blob(ptr_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
3962 field_name_arg, share, blob_pack_length,
cs) {
3964 assert(packlength == 4);
3969 :
Field_blob(len_arg, is_nullable_arg, field_name_arg,
cs, false) {
3971 assert(packlength == 4);
3975 assert(packlength == 4);
3982 "vector", get_max_dimensions());
4015 uchar auto_flags_arg,
const char *field_name_arg,
4017 enum geometry_type geom_type_arg, std::optional<gis::srid_t> srid)
4018 :
Field_blob(ptr_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
4021 geom_type(geom_type_arg) {}
4023 enum geometry_type geom_type_arg, std::optional<gis::srid_t> srid)
4027 geom_type(geom_type_arg) {}
4045 if (res !=
TYPE_OK)
return res;
4058 std::optional<gis::srid_t>
get_srid()
const {
return m_srid; }
4068 uchar auto_flags_arg,
const char *field_name_arg,
4070 :
Field_blob(ptr_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
4127 longlong get_diff_vector_and_length(
4134 bool is_before_image_equal_to_after_image()
const;
4145 bool unpack_diff(
const uchar **from);
4187 uint32 max_length = ~0
L)
const final;
4205 const char *get_binary(ptrdiff_t row_offset = 0)
const;
4258 size_t elt_length, uint elt_decimals,
uchar *ptr_arg,
4259 uchar *null_ptr_arg, uint null_bit_arg,
4260 uchar auto_flags_arg,
const char *field_name_arg,
4279 uint
decimals()
const override {
return m_elt_decimals; }
4300 uchar *, uint)
const override;
4354 bool coerce_json_value(
const Json_wrapper *wr,
bool no_error,
4367 const char *get_index_name()
const;
4405 return pack_length_no_ptr();
4410 Field *get_conv_field();
4421 const char *field_name_arg, uint packlength_arg,
4423 :
Field_str(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
4424 field_name_arg, charset_arg),
4425 packlength(packlength_arg),
4426 typelib(typelib_arg) {
4430 uint packlength_arg,
TYPELIB *typelib_arg,
4434 field_name_arg, packlength_arg, typelib_arg, charset_arg) {}
4457 return (field_metadata & 0x00ff);
4482 const char *field_name_arg,
uint32 packlength_arg,
4484 :
Field_enum(ptr_arg, len_arg, null_ptr_arg, null_bit_arg, auto_flags_arg,
4485 field_name_arg, packlength_arg, typelib_arg, charset_arg),
4486 empty_set_string(
"", 0, charset_arg) {
4495 field_name_arg, packlength_arg, typelib_arg, charset_arg) {}
4542 uchar auto_flags_arg,
const char *field_name_arg);
4559 assert(
ptr == a ||
ptr == b);
4560 const uint cmp_len = bytes_in_rec + (bit_len != 0 ? 1 : 0);
4574 int cmp_offset(ptrdiff_t row_offset)
const final;
4595 return (bytes_in_rec + ((bit_len > 0) ? 1 : 0));
4598 int *order_var)
const final;
4605 uchar *new_null_ptr, uint new_null_bit) const final;
4607 bit_ptr = bit_ptr_arg;
4608 bit_ofs = bit_ofs_arg;
4612 bit_ptr == down_cast<const Field_bit *>(field)->bit_ptr &&
4613 bit_ofs == down_cast<const Field_bit *>(field)->bit_ofs);
4618 if (bit_ptr !=
nullptr) bit_ptr += ptr_diff;
4620 void hash(ulong *nr, ulong *nr2)
const final;
4641 const char *field_name_arg);
4643 const char *field_name_arg)
4646 NONE, field_name_arg) {}
4666 bool treat_bit_as_char, uint pack_length_override,
4667 std::optional<gis::srid_t> srid,
bool is_array);
4761 void invoke_do_copy(
bool reverse =
false);
4762 void invoke_do_copy2(
const Field *from_field,
Field *to_field);
4795 size_t elements_count,
bool treat_bit_as_char,
4802 bool no_conversions);
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
unsigned int my_time_binary_length(unsigned int dec)
Calculate binary size of packed numeric time representation.
Definition: binary_log_funcs.cpp:56
unsigned int my_timestamp_binary_length(unsigned int dec)
Calculate on-disk size of a timestamp value.
Definition: binary_log_funcs.cpp:85
unsigned int my_datetime_binary_length(unsigned int dec)
Calculate binary size of packed datetime representation.
Definition: binary_log_funcs.cpp:70
Definition: sql_bitmap.h:154
Class is used as a BLOB field value storage for intermediate GROUP_CONCAT results.
Definition: table.h:1298
String tmp
Definition: field.h:4744
void(Copy_field *, const Field *, Field *) Copy_func
Convenience definition of a copy function returned by get_copy_func.
Definition: field.h:4740
Field * to_field() const
Definition: field.h:4766
Copy_field(Field *to, Field *from)
Definition: field.h:4748
Field * from_field() const
Definition: field.h:4764
This class represents the cost of evaluating an Item.
Definition: item.h:791
This class is a substitute for the Field classes during CREATE TABLE.
Definition: field.h:1886
my_decimal * val_decimal(my_decimal *) const final
Definition: field.h:1927
type_conversion_status store(longlong, bool) final
Definition: field.h:1911
bool is_wrapper_field() const final
If true, it's a Create_field_wrapper (a sub-class of Field used during CREATE/ALTER that we mustn't c...
Definition: field.h:1948
const Create_field * m_field
Definition: field.h:1887
Create_field_wrapper(const Create_field *fld)
Definition: field.cc:10729
size_t make_sort_key(uchar *, size_t) const final
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.h:1941
int cmp(const uchar *, const uchar *) const final
Definition: field.h:1935
void sql_type(String &) const final
Definition: field.h:1939
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 + ...
Definition: field.cc:10742
Item_result result_type() const final
Definition: field.cc:10738
longlong val_int(void) const final
Definition: field.h:1923
String * val_str(String *, String *) const final
Definition: field.h:1931
type_conversion_status store(const char *, size_t, const CHARSET_INFO *) final
Definition: field.h:1902
type_conversion_status store(double) final
Definition: field.h:1907
uint32 pack_length() const final
Definition: field.cc:10755
double val_real(void) const final
Definition: field.h:1919
const CHARSET_INFO * charset() const final
Definition: field.cc:10751
Field * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:1945
uint32 max_display_length() const final
Definition: field.cc:10759
type_conversion_status store_decimal(const my_decimal *) final
Definition: field.h:1915
enum_field_types type() const final
Definition: field.cc:10747
Create_field is a description a field/column that may or may not exists in a table.
Definition: create_field.h:51
Definition: sql_error.h:225
BIT field represented as chars for non-MyISAM tables.
Definition: field.h:4637
enum ha_base_keytype key_type() const final
Definition: field.h:4647
Field_bit_as_char(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg)
Definition: field.h:4642
Field_bit_as_char * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:4653
uchar * bit_ptr
Definition: field.h:4536
uchar bit_ofs
Definition: field.h:4537
bool eq(const Field *field) const final
Definition: field.h:4610
void get_image(uchar *buff, size_t length, const CHARSET_INFO *) const final
Definition: field.h:4575
uint row_pack_length() const final
Definition: field.h:4594
int cmp(const uchar *a, const uchar *b) const final
Definition: field.h:4558
enum_field_types type() const final
Definition: field.h:4543
uint bit_len
Definition: field.h:4538
void set_image(const uchar *buff, size_t length, const CHARSET_INFO *cs) final
Definition: field.h:4578
int cmp_binary_offset(ptrdiff_t row_offset) const final
Definition: field.h:4566
uint32 pack_length() const final
Definition: field.h:4591
Field_bit * clone(MEM_ROOT *mem_root) const override
Makes a shallow copy of the Field object.
Definition: field.h:4621
uint bytes_in_rec
Definition: field.h:4539
uint32 pack_length_in_rec() const final
Definition: field.h:4592
uint32 max_display_length() const final
Definition: field.h:4545
void set_key_image(const uchar *buff, size_t length) final
Definition: field.h:4583
enum ha_base_keytype key_type() const override
Definition: field.h:4544
type_conversion_status store(const char *to, size_t length, const CHARSET_INFO *charset) override
Definition: field.cc:9020
size_t make_sort_key(uchar *buff, size_t length) const final
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.h:4587
Item_result result_type() const final
Definition: field.h:4546
void move_field_offset(ptrdiff_t ptr_diff) final
Definition: field.h:4616
int key_cmp(const uchar *a, const uchar *b) const final
Definition: field.h:4570
type_conversion_status store(const char *to, size_t length, const CHARSET_INFO *charset) override
Definition: field.cc:7291
bool match_collation_to_optimize_range() const override
Definition: field.h:3731
const uchar * data_ptr() const final
Get a const pointer to the BLOB data of this field.
Definition: field.h:3793
String old_value
In order to support update of virtual generated columns of blob type, we need to allocate the space b...
Definition: field.h:3630
const uchar * get_blob_data() const
Get a const pointer to the BLOB data of this field.
Definition: field.h:3786
size_t get_field_buffer_size()
Definition: field.h:3774
bool m_uses_backup
Whether the field uses table's backup value storage.
Definition: field.h:3681
Field_blob(const Field_blob &field)
Copy static information and reset dynamic information.
Definition: field.h:3715
Field_blob * clone(MEM_ROOT *mem_root) const override
Makes a shallow copy of the Field object.
Definition: field.h:3824
uint32 pack_length_no_ptr() const
Return the packed length without the pointer size added.
Definition: field.h:3769
uint row_pack_length() const final
Definition: field.h:3770
uint packlength
The number of bytes used to represent the length of the blob.
Definition: field.h:3616
void set_keep_old_value(bool old_value_flag)
Mark that the BLOB stored in value should be copied before updating it.
Definition: field.h:3859
uint32 max_data_length() const override
Get the maximum size of the data in packed format.
Definition: field.h:3771
uint32 pack_length() const final
Definition: field.h:3757
void store_length(uint32 number)
Definition: field.h:3776
enum_field_types type() const override
Definition: field.h:3730
uchar * get_blob_data(ptrdiff_t row_offset=0)
Get a non-const pointer to the BLOB data of this field.
Definition: field.h:3788
Field_blob(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, const CHARSET_INFO *cs, bool set_packlength)
Definition: field.h:3698
static uchar * get_blob_data(const uchar *position)
Get the BLOB data pointer stored at the specified position in the record buffer.
Definition: field.h:3800
uint32 key_length() const override
Definition: field.h:3754
String value
The 'value'-object is a cache fronting the storage engine.
Definition: field.h:3621
void keep_old_value()
Save the current BLOB value to avoid that it gets overwritten.
Definition: field.h:3905
void set_ptr(const uchar *length, const uchar *data)
Definition: field.h:3807
int cmp(const uchar *a, const uchar *b) const final
Definition: field.h:3745
size_t make_sort_key(uchar *buff, size_t length) const override
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.cc:7576
void store_in_allocated_space(const char *from, uint32 length)
Use to store the blob value into an allocated space.
Definition: field.h:3922
enum ha_base_keytype key_type() const override
Definition: field.h:3732
void set_ptr_offset(ptrdiff_t ptr_diff, uint32 length, const uchar *data)
Definition: field.h:3811
bool has_charset() const override
Definition: field.h:3839
void store_ptr_and_length(const char *from, uint32 length)
Store ptr and length.
Definition: field.h:3688
void set_ptr(uint32 length, const uchar *data)
Definition: field.h:3816
String m_blob_backup
Backup String for table's blob fields.
Definition: field.h:3674
uint32 data_length(ptrdiff_t row_offset=0) const final
Definition: field.h:3779
bool m_keep_old_value
Whether we need to move the content of 'value' to 'old_value' before updating the BLOB stored in 'val...
Definition: field.h:3651
enum_field_types type() const final
Definition: field.h:3371
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:3389
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:3392
enum ha_base_keytype key_type() const final
Definition: field.h:3372
Field_datetime * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3385
Field_datetime(const char *field_name_arg)
Definition: field.h:3368
bool zero_pack() const final
Definition: field.h:3383
Field_datetime(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg)
DATETIME columns can be defined as having CURRENT_TIMESTAMP as the default value on inserts or update...
Definition: field.h:3364
uint pack_length_from_metadata(uint field_metadata) const final
Definition: field.h:3445
enum_field_types real_type() const final
Definition: field.h:3442
Field_datetimef * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3436
enum_field_types type() const final
Definition: field.h:3441
Field_datetimef(bool is_nullable_arg, const char *field_name_arg, uint8 dec_arg)
Constructor for Field_datetimef.
Definition: field.h:3431
bool zero_pack() const final
Definition: field.h:3450
uint32 pack_length() const final
Definition: field.h:3444
enum_field_types binlog_type() const final
Definition: field.h:3443
Field_datetimef(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_datetimef.
Definition: field.h:3419
enum ha_base_keytype key_type() const final
Definition: field.h:2109
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:2129
enum_field_types type() const final
Definition: field.h:2108
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:2132
Field_decimal(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)
Definition: field.h:2102
Field_decimal * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2125
Field_double(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, uint8 dec_arg, bool unsigned_arg)
Definition: field.h:2512
Field_double * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2539
enum ha_base_keytype key_type() const final
Definition: field.h:2525
Field_double(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)
Definition: field.h:2501
Field_double(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, uint8 dec_arg)
Definition: field.h:2507
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2544
Field_double(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, uint8 dec_arg, bool unsigned_arg, bool not_fixed_arg)
Definition: field.h:2517
enum_field_types type() const final
Definition: field.h:2524
bool has_charset() const override
Definition: field.h:4463
bool optimize_range(uint, uint) const final
Whether this field can be used for index range scans when in the given keypart of the given index.
Definition: field.h:4461
uint pack_length_from_metadata(uint field_metadata) const final
Definition: field.h:4456
Field_enum(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, uint packlength_arg, TYPELIB *typelib_arg, const CHARSET_INFO *charset_arg)
Definition: field.h:4419
enum_field_types real_type() const override
Definition: field.h:4455
bool match_collation_to_optimize_range() const final
Definition: field.h:4437
Field_enum * clone(MEM_ROOT *mem_root) const override
Makes a shallow copy of the Field object.
Definition: field.h:4466
TYPELIB * typelib
Definition: field.h:4418
Field_enum(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, uint packlength_arg, TYPELIB *typelib_arg, const CHARSET_INFO *charset_arg)
Definition: field.h:4429
uint packlength
Definition: field.h:4415
enum Item_result cast_to_int_type() const final
Definition: field.h:4439
const CHARSET_INFO * sort_charset() const final
Definition: field.h:4465
enum Item_result cmp_type() const final
Definition: field.h:4438
bool zero_pack() const override
Definition: field.h:4460
uint row_pack_length() const final
Definition: field.h:4459
enum_field_types type() const final
Definition: field.h:4436
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2488
Field_float(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)
Definition: field.h:2457
Field_float(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, uint8 dec_arg, bool unsigned_arg)
Definition: field.h:2463
Field_float * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2483
enum ha_base_keytype key_type() const final
Definition: field.h:2469
enum_field_types type() const final
Definition: field.h:2468
std::optional< gis::srid_t > get_srid() const
Definition: field.h:4058
enum geometry_type geom_type
Definition: field.h:4012
type_conversion_status reset() final
Non-nullable GEOMETRY types cannot have defaults, but the underlying blob must still be reset.
Definition: field.h:4043
geometry_type get_geometry_type() const final
Definition: field.h:4051
Field_geom * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:4052
Field_geom(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, enum geometry_type geom_type_arg, std::optional< gis::srid_t > srid)
Definition: field.h:4022
bool match_collation_to_optimize_range() const final
Definition: field.h:4030
const std::optional< gis::srid_t > m_srid
Definition: field.h:4006
Field_geom(uchar *ptr_arg, uchar *null_ptr_arg, uint null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, TABLE_SHARE *share, uint blob_pack_length, enum geometry_type geom_type_arg, std::optional< gis::srid_t > srid)
Definition: field.h:4014
enum_field_types type() const final
Definition: field.h:4029
enum ha_base_keytype key_type() const final
Definition: field.h:4028
A field that stores a JSON value.
Definition: field.h:4062
size_t make_sort_key(uchar *to, size_t length) const override
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.cc:8358
Field_json(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg)
Definition: field.h:4073
bool has_charset() const final
JSON columns don't have an associated charset.
Definition: field.h:4097
Field_json(uchar *ptr_arg, uchar *null_ptr_arg, uint null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, TABLE_SHARE *share, uint blob_pack_length)
Definition: field.h:4067
const CHARSET_INFO * charset() const override
Return a text charset so that string functions automatically convert the field value to string and tr...
Definition: field.h:4084
const CHARSET_INFO * sort_charset() const final
Sort should treat the field as binary and not attempt any conversions.
Definition: field.h:4091
enum_field_types type() const override
Definition: field.h:4077
Field_long * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2387
enum_field_types type() const final
Definition: field.h:2367
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:2391
uint32 max_display_length() const final
Definition: field.h:2384
enum ha_base_keytype key_type() const final
Definition: field.h:2368
enum Item_result result_type() const final
Definition: field.h:2366
Field_long(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, bool unsigned_arg)
Definition: field.h:2361
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2399
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:2394
Field_long(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)
Definition: field.h:2356
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2450
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)
Definition: field.h:2408
enum_field_types type() const final
Definition: field.h:2419
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:2442
uint32 max_display_length() const final
Definition: field.h:2437
enum Item_result result_type() const final
Definition: field.h:2418
Field_longlong * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2438
bool can_be_compared_as_longlong() const final
Definition: field.h:2436
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:2445
Field_longlong(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, bool unsigned_arg)
Definition: field.h:2413
enum ha_base_keytype key_type() const final
Definition: field.h:2420
bool is_updatable() const final
Checks whether a string field is part of write_set.
Definition: field.cc:10670
type_conversion_status report_if_important_data(const char *ptr, const char *end, bool count_spaces)
Definition: field.cc:6312
type_conversion_status check_string_copy_error(const char *well_formed_error_pos, const char *cannot_convert_error_pos, const char *from_end_pos, const char *end, bool count_spaces, const CHARSET_INFO *from_cs, const CHARSET_INFO *to_cs)
Report "not well formed" or "cannot convert" error after storing a character string info a field.
Definition: field.cc:6263
uint32 max_data_length() const override
Get the maximum size of the data in packed format.
Definition: field.cc:6446
Field_longstr(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, const CHARSET_INFO *charset_arg)
Definition: field.h:2060
type_conversion_status store_decimal(const my_decimal *d) override
Decimal representation of Field_str.
Definition: field.cc:6440
uint32 max_display_length() const final
Definition: field.h:2342
enum Item_result result_type() const final
Definition: field.h:2324
Field_medium * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2343
Field_medium(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, bool unsigned_arg)
Definition: field.h:2319
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2347
enum_field_types type() const final
Definition: field.h:2325
enum ha_base_keytype key_type() const final
Definition: field.h:2326
Field_medium(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)
Definition: field.h:2314
uint precision
Definition: field.h:2156
enum_field_types type() const final
Definition: field.h:2171
Field_new_decimal * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2200
uint32 max_display_length() const final
Definition: field.h:2194
uint bin_size
Definition: field.h:2157
Item_result result_type() const final
Definition: field.h:2173
uint32 pack_length() const final
Definition: field.h:2195
void set_keep_precision(bool arg)
Definition: field.h:2207
enum ha_base_keytype key_type() const final
Definition: field.h:2172
bool zero_pack() const final
Definition: field.h:3167
Field_newdate(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg)
Definition: field.h:3144
enum ha_base_keytype key_type() const final
Definition: field.h:3155
enum_field_types type() const final
Definition: field.h:3153
Field_newdate(bool is_nullable_arg, const char *field_name_arg)
Definition: field.h:3149
Field_newdate * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3169
enum_field_types real_type() const final
Definition: field.h:3154
int cmp(const uchar *, const uchar *) const final
Definition: field.h:2582
double val_real() const final
Definition: field.h:2575
enum_field_types type() const final
Definition: field.h:2564
type_conversion_status store(const char *, size_t, const CHARSET_INFO *) final
Definition: field.h:2565
type_conversion_status reset() final
Definition: field.h:2574
String * val_str(String *, String *value2) const final
Definition: field.h:2578
my_decimal * val_decimal(my_decimal *) const final
Definition: field.h:2577
type_conversion_status store(double) final
Store double value in Field_string or Field_varstring.
Definition: field.h:2569
longlong val_int() const final
Definition: field.h:2576
type_conversion_status store(longlong, bool) final
Definition: field.h:2570
size_t make_sort_key(uchar *, size_t len) const final
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.h:2584
Field_null(uchar *ptr_arg, uint32 len_arg, uchar auto_flags_arg, const char *field_name_arg, const CHARSET_INFO *cs)
Definition: field.h:2559
type_conversion_status store_decimal(const my_decimal *) final
Decimal representation of Field_str.
Definition: field.h:2571
uint32 max_display_length() const final
Definition: field.h:2587
uint32 pack_length() const final
Definition: field.h:2585
Field_null * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2588
uint repertoire() const final
Definition: field.h:1975
uint row_pack_length() const final
Definition: field.h:1986
uint decimals() const final
Definition: field.h:1978
bool zerofill
True if the column was declared with the ZEROFILL attribute.
Definition: field.h:1967
bool eq_def(const Field *field) const final
Definition: field.cc:8900
bool get_time(MYSQL_TIME *ltime) const override
Definition: field.cc:2208
my_decimal * val_decimal(my_decimal *) const override
Return decimal value of integer field.
Definition: field.cc:2195
bool is_unsigned() const final
Whether the field is signed or not.
Definition: field.h:1972
const CHARSET_INFO * charset() const final
Definition: field.h:1976
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.
Definition: field.cc:1663
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.
Definition: field.cc:1707
Item_result result_type() const override
Definition: field.h:1973
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) const override
Definition: field.cc:2203
uint32 pack_length_from_metadata(uint) const override
Definition: field.h:1987
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)
Definition: field.cc:1750
enum Derivation derivation() const final
Definition: field.h:1974
const uint8 dec
Definition: field.h:1961
const bool unsigned_flag
Whether the field is signed or not.
Definition: field.h:1958
uint is_equal(const Create_field *new_field) const override
Check whether two numeric fields can be considered 'equal' for table alteration purposes.
Definition: field.cc:8916
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.
Definition: field.cc:1791
type_conversion_status store_decimal(const my_decimal *) override
Storing decimal in integer fields.
Definition: field.cc:2172
void prepend_zeros(String *value) const
Definition: field.cc:1676
bool not_fixed
Definition: field.h:2074
uint32 max_display_length() const final
Definition: field.h:2095
Field_real(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)
Definition: field.h:2081
Truncate_result
Definition: field.h:2075
bool has_charset() const final
Definition: field.h:4510
const String empty_set_string
Definition: field.h:4517
Field_set * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:4511
enum_field_types real_type() const final
Definition: field.h:4509
type_conversion_status store(double nr) final
Store double value in Field_string or Field_varstring.
Definition: field.h:4498
Field_set(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, uint32 packlength_arg, TYPELIB *typelib_arg, const CHARSET_INFO *charset_arg)
Definition: field.h:4490
Field_set(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, uint32 packlength_arg, TYPELIB *typelib_arg, const CHARSET_INFO *charset_arg)
Definition: field.h:4480
bool zero_pack() const final
Definition: field.h:4506
type_conversion_status store(const char *to, size_t length, const CHARSET_INFO *charset) final
Definition: field.cc:8638
uint32 max_display_length() const final
Definition: field.h:2293
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2307
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:2302
Field_short(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)
Definition: field.h:2263
Field_short(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, bool unsigned_arg)
Definition: field.h:2268
enum_field_types type() const final
Definition: field.h:2276
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:2298
Field_short * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:2294
enum ha_base_keytype key_type() const final
Definition: field.h:2277
enum Item_result result_type() const final
Definition: field.h:2275
Field_short(uint32 len_arg, const char *field_name_arg, bool unsigned_arg)
Definition: field.h:2273
enum Derivation field_derivation
Definition: field.h:2002
void set_field_length(uint32 length) final
Definition: field.h:2024
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 + ...
Definition: field.h:2009
type_conversion_status store(double nr) override
Store double value in Field_string or Field_varstring.
Definition: field.cc:6373
type_conversion_status store(longlong nr, bool unsigned_val) override=0
uint is_equal(const Create_field *new_field) const override
Whether a field being created is type-compatible with an existing one.
Definition: field.cc:6408
type_conversion_status store(const char *to, size_t length, const CHARSET_INFO *cs) override=0
uint repertoire() const final
Definition: field.h:2018
type_conversion_status store_decimal(const my_decimal *) override
Decimal representation of Field_str.
Definition: field.cc:2250
uint decimals() const override
Definition: field.h:2010
void add_to_cost(CostOfItem *cost) const override
Update '*cost' with the fact that this Field is accessed.
Definition: field.cc:6429
uint32 max_display_length() const override
Definition: field.h:2033
bool binary() const override
Definition: field.h:2032
void set_charset(const CHARSET_INFO *charset_arg)
Definition: field.h:2020
Field_str(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, const CHARSET_INFO *charset)
Definition: field.cc:2213
Item_result result_type() const override
Definition: field.h:2008
void make_send_field(Send_field *field) const override
Populates a Send_field object with metadata about the column represented by this Field object.
Definition: field.cc:2225
const CHARSET_INFO * charset() const override
Definition: field.h:2019
uint32 char_length_cache
Definition: field.h:2042
bool str_needs_quotes() const final
Definition: field.h:2034
void set_derivation(enum Derivation derivation_arg) final
Definition: field.h:2029
const CHARSET_INFO * field_charset
Definition: field.h:2001
enum Derivation derivation() const final
Definition: field.h:2028
bool is_text_key_type() const final
Definition: field.h:3526
bool match_collation_to_optimize_range() const final
Definition: field.h:3473
uint row_pack_length() const final
Definition: field.h:3515
bool has_charset() const final
Definition: field.h:3518
type_conversion_status reset() final
Definition: field.h:3478
Field_string(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, const CHARSET_INFO *cs)
Definition: field.h:3461
uint pack_length_from_metadata(uint field_metadata) const final
Definition: field.h:3507
enum ha_base_keytype key_type() const final
Definition: field.h:3474
bool zero_pack() const final
Definition: field.h:3477
Field_string * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3521
Field_string(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, const CHARSET_INFO *cs)
Definition: field.h:3466
enum_field_types type() const final
Definition: field.h:3472
Abstract class for types with date and time, with or without fractional part: DATETIME,...
Definition: field.h:2884
Field_temporal_with_date_and_time(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_temporal_with_date_and_time.
Definition: field.h:2921
virtual void store_timestamp_internal(const my_timeval *tm)=0
Store "struct timeval" value into field.
int do_save_field_metadata(uchar *metadata_ptr) const override
Retrieve the field metadata for fields.
Definition: field.h:2886
Abstract class for types with date and time, with fractional part: DATETIME, DATETIME(N),...
Definition: field.h:2935
int cmp(const uchar *a_ptr, const uchar *b_ptr) const final
Definition: field.h:2966
uint decimals() const final
Definition: field.h:2959
size_t make_sort_key(uchar *to, size_t length) const final
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.h:2962
int do_save_field_metadata(uchar *metadata_ptr) const final
Retrieve the field metadata for fields.
Definition: field.h:2937
uint row_pack_length() const final
Definition: field.h:2969
Field_temporal_with_date_and_timef(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_temporal_with_date_and_timef.
Definition: field.h:2952
const CHARSET_INFO * sort_charset() const final
Definition: field.h:2960
Abstract class for types with date with optional time, with or without fractional part: DATE,...
Definition: field.h:2817
bool get_time(MYSQL_TIME *ltime) const final
Definition: field.h:2872
virtual bool get_date_internal(MYSQL_TIME *ltime) const =0
Low level function to get value into MYSQL_TIME, without checking for being valid.
virtual bool get_date_internal_at_utc(MYSQL_TIME *ltime) const
Definition: field.h:2825
Field_temporal_with_date(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, uint8 int_length_arg, uint8 dec_arg)
Constructor for Field_temporal.
Definition: field.h:2859
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 + ...
Definition: field.h:2783
virtual type_conversion_status convert_number_to_TIME(longlong nr, bool unsigned_val, int nanoseconds, MYSQL_TIME *ltime, int *warning)=0
Convert a number with fractional part with nanosecond precision into MYSQL_TIME, according to the fie...
type_conversion_status store(const char *str, size_t len, const CHARSET_INFO *cs) final
Store string into a date/time/datetime field.
Definition: field.cc:4829
enum Item_result cmp_type() const final
Definition: field.h:2786
uint repertoire() const final
Definition: field.h:2788
bool str_needs_quotes() const final
Definition: field.h:2781
virtual type_conversion_status store_internal(const MYSQL_TIME *ltime, int *error)=0
Low level routine to store a MYSQL_TIME value into a field.
bool can_be_compared_as_longlong() const final
Definition: field.h:2790
const CHARSET_INFO * charset() const final
Definition: field.h:2789
uint32 max_display_length() const final
Definition: field.h:2780
my_time_flags_t get_date_flags(const THD *thd) const
Definition: field.h:2805
bool binary() const final
Definition: field.h:2791
my_time_flags_t date_flags() const
Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime().
Definition: field.cc:4700
static uint8 normalize_dec(uint8 dec_arg)
Adjust number of decimal digits from DECIMAL_NOT_SPECIFIED to DATETIME_MAX_DECIMALS.
Definition: field.h:2606
uint8 get_dec() const
Definition: field.h:2801
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().
Definition: field.h:2725
virtual bool convert_str_to_TIME(const char *str, size_t len, const CHARSET_INFO *cs, MYSQL_TIME *ltime, MYSQL_TIME_STATUS *status)=0
Convert a string to MYSQL_TIME, according to the field type.
virtual type_conversion_status store_internal_adjust_frac(MYSQL_TIME *ltime, int *warnings)=0
Low level routine to store a MYSQL_TIME value into a field with rounding/truncation according to the ...
Item_result result_type() const final
Definition: field.h:2779
enum Derivation derivation() const final
Definition: field.h:2787
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.
Definition: field.h:2769
uint8 get_fractional_digits() const
Definition: field.h:2809
double val_real() const override
Definition: field.h:2797
uint8 dec
Definition: field.h:2600
Abstract class for TIME and TIME(N).
Definition: field.h:3179
type_conversion_status store_internal(const MYSQL_TIME *ltime, int *error) override=0
Low-level function to store MYSQL_TIME value.
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.
Definition: field.h:3218
bool zero_pack() const final
Definition: field.h:3257
enum ha_base_keytype key_type() const final
Definition: field.h:3247
Field_time * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3258
enum_field_types type() const final
Definition: field.h:3246
Field_time(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg)
Definition: field.h:3240
Field_time(const char *field_name_arg)
Definition: field.h:3244
enum_field_types real_type() const final
Definition: field.h:3308
uint decimals() const final
Definition: field.h:3306
uint row_pack_length() const final
Definition: field.h:3323
Field_timef(bool is_nullable_arg, const char *field_name_arg, uint8 dec_arg)
Constructor for Field_timef.
Definition: field.h:3298
int cmp(const uchar *a_ptr, const uchar *b_ptr) const final
Definition: field.h:3332
size_t make_sort_key(uchar *to, size_t length) const final
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.h:3328
int do_save_field_metadata(uchar *metadata_ptr) const final
Retrieve the field metadata for fields.
Definition: field.h:3269
Field_timef * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3302
enum_field_types type() const final
Definition: field.h:3307
const CHARSET_INFO * sort_charset() const final
Definition: field.h:3326
bool zero_pack() const final
Definition: field.h:3325
uint pack_length_from_metadata(uint field_metadata) const final
Definition: field.h:3318
Field_timef(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_timef.
Definition: field.h:3288
enum_field_types binlog_type() const final
Definition: field.h:3309
bool zero_pack() const final
Definition: field.h:3003
Field_timestamp * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3007
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:3011
enum_field_types type() const final
Definition: field.h:2994
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:3014
enum ha_base_keytype key_type() const final
Definition: field.h:2995
bool zero_pack() const final
Definition: field.h:3076
uint pack_length_from_metadata(uint field_metadata) const final
Definition: field.h:3079
enum_field_types real_type() const final
Definition: field.h:3074
enum_field_types type() const final
Definition: field.h:3073
uint32 pack_length() const final
Definition: field.h:3078
enum_field_types binlog_type() const final
Definition: field.h:3075
Field_timestampf * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3068
ulonglong get_max_int_value() const final
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:2256
Field_tiny(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)
Definition: field.h:2212
uint32 max_display_length() const final
Definition: field.h:2240
enum_field_types type() const override
Definition: field.h:2223
uchar * pack(uchar *to, const uchar *from, size_t max_length) const final
Pack the field into a format suitable for storage and transfer.
Definition: field.h:2245
enum Item_result result_type() const final
Definition: field.h:2222
Field_tiny * clone(MEM_ROOT *mem_root) const override
Makes a shallow copy of the Field object.
Definition: field.h:2241
const uchar * unpack(uchar *to, const uchar *from, uint param_data) final
Unpack a field from row data.
Definition: field.h:2250
enum ha_base_keytype key_type() const final
Definition: field.h:2224
uint32 pack_length() const final
Definition: field.h:2238
Field_tiny(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, bool unsigned_arg)
Definition: field.h:2217
Field that stores array of values of the same type.
Definition: field.h:4237
bool binary() const override
Definition: field.h:4280
enum_field_types m_elt_type
The array element's real type.
Definition: field.h:4241
bool is_array() const override
Whether the field is a typed array.
Definition: field.h:4277
uint decimals() const override
Definition: field.h:4279
const CHARSET_INFO * charset() const override
Return a text charset so that string functions automatically convert the field value to string and tr...
Definition: field.h:4284
enum_field_types real_type() const override
Definition: field.h:4270
uint pack_length_from_metadata(uint) const override
Definition: field.h:4404
bool match_collation_to_optimize_range() const override
Multi-valued index always works only as a pre-filter for actual condition check, and the latter alway...
Definition: field.h:4334
enum_field_types binlog_type() const override
Definition: field.h:4271
int key_cmp(const uchar *, const uchar *) const override
These methods are used by handler to prevent returning a row past the end_range during range access.
Definition: field.h:4307
uint m_elt_decimals
Element's decimals.
Definition: field.h:4243
const bool unsigned_flag
Definition: field.h:4246
enum_field_types type() const override
Definition: field.h:4267
uint32 get_length_bytes() const override
Return number of bytes the field's length takes.
Definition: field.h:4368
uint32 char_length() const override
maximum possible character length for blob.
Definition: field.h:4263
const CHARSET_INFO * m_elt_charset
Element's charset.
Definition: field.h:4245
bool is_unsigned() const final
Whether the field is signed or not.
Definition: field.h:4276
size_t make_sort_key(uchar *to, size_t max_len) const override
Writes a copy of the current value in the record buffer, suitable for sorting using byte-by-byte comp...
Definition: field.h:4373
bool match_collation_to_optimize_range() const final
Definition: field.h:3543
uint32 pack_length() const final
Definition: field.h:3547
bool is_text_key_type() const final
Definition: field.h:3592
const uchar * data_ptr() const final
Return a const pointer to the actual data in the record buffer.
Definition: field.h:3591
bool zero_pack() const final
Definition: field.h:3546
Field_varstring * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3584
bool has_charset() const final
Definition: field.h:3578
uint32 key_length() const final
Definition: field.h:3550
uint32 length_bytes
Definition: field.h:3597
enum_field_types type() const final
Definition: field.h:3542
uint32 get_length_bytes() const override
Return number of bytes the field's length takes.
Definition: field.h:3593
uint32 char_length() const override
maximum possible character length for blob.
Definition: field.h:3990
enum_field_types real_type() const final
Definition: field.h:3992
enum_field_types type() const final
Definition: field.h:3991
Field_vector(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg, TABLE_SHARE *share, uint blob_pack_length, const CHARSET_INFO *cs)
Definition: field.h:3957
Field_vector(uint32 len_arg, bool is_nullable_arg, const char *field_name_arg, const CHARSET_INFO *cs)
Definition: field.h:3967
uint32 get_max_dimensions() const
Definition: field.h:3953
Field_vector * clone(MEM_ROOT *mem_root) const override
Makes a shallow copy of the Field object.
Definition: field.h:3985
uint32 max_data_length() const override
Get the maximum size of the data in packed format.
Definition: field.h:3989
void sql_type(String &res) const override
Definition: field.h:3978
Field_vector(const Field_vector &field)
Definition: field.h:3974
static uint32 dimension_bytes(uint32 dimensions)
Definition: field.h:3950
Limits
Definition: field.h:3109
Field_year(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, uchar auto_flags_arg, const char *field_name_arg)
Definition: field.h:3110
Field_year * clone(MEM_ROOT *mem_root) const final
Makes a shallow copy of the Field object.
Definition: field.h:3129
enum_field_types type() const final
Definition: field.h:3117
Field_year(bool is_nullable_arg, const char *field_name_arg)
Definition: field.h:3114
Field(const Field &)=default
Key_map get_covering_prefix_keys() const
Get covering prefix keys.
Definition: field.cc:10493
uchar * pack(uchar *to) const
Definition: field.h:1528
uchar * pack_int16(uchar *to, const uchar *from, size_t max_length) const
Definition: field.cc:10626
virtual void set_default()
Definition: field.cc:10507
void reset_warnings()
Definition: field.h:889
virtual int cmp_binary(const uchar *a, const uchar *b, uint32 max_length=~0L) const
Definition: field.h:1197
virtual enum_field_types real_type() const
Definition: field.h:1170
virtual type_conversion_status store(double nr)=0
virtual bool pack_diff(uchar **to, ulonglong value_options) const
Write the field for the binary log in diff format.
Definition: field.h:1577
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 pac...
Definition: field.h:1588
Key_map part_of_sortkey
Definition: field.h:695
const char * orig_table_name
Pointer to original table name, only non-NULL for a temporary table.
Definition: field.h:687
virtual const uchar * data_ptr() const
Return a const pointer to the actual data in the record buffer.
Definition: field.h:1748
bool is_virtual_gcol() const
Definition: field.h:828
const uchar * unpack_int24(uchar *to, const uchar *from) const
Definition: field.cc:10643
virtual uint32 pack_length_in_rec() const
Definition: field.h:1072
const char ** table_name
Definition: field.h:688
uint null_offset() const
Definition: field.cc:10515
const uchar * unpack_int16(uchar *to, const uchar *from) const
Definition: field.cc:10632
virtual bool compatible_field_size(uint metadata, Relay_log_info *, uint16, int *order) const
Check to see if field size is compatible with destination.
Definition: field.cc:2012
imagetype
Definition: field.h:730
@ itRAW
Definition: field.h:730
@ itMBR
Definition: field.h:730
const CHARSET_INFO * charset_for_protocol() const
Definition: field.h:1600
void reset_tmp_nullable()
Turn off temporary nullability for the field.
Definition: field.h:899
virtual int do_save_field_metadata(uchar *metadata_ptr) const
Retrieve the field metadata for fields.
Definition: field.h:1853
virtual ulonglong get_max_int_value() const
Get the upper limit of the MySQL integral and floating-point type.
Definition: field.h:1736
void set_tmp_null()
Set field to temporary value NULL.
Definition: field.cc:1377
virtual longlong val_time_temporal() const
Returns TIME value in packed longlong format.
Definition: field.h:980
virtual bool send_to_protocol(Protocol *protocol) const
Send the value of this field over the protocol using the correct Protocol::store*() function which ma...
Definition: field.cc:1973
virtual uint decimals() const
Definition: field.h:1213
virtual Field * new_key_field(MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit) const
Definition: field.cc:2332
uint32 field_length
Definition: field.h:743
static constexpr size_t MAX_SHORT_BLOB_WIDTH
Definition: field.h:737
virtual Item_result cast_to_int_type() const
Definition: field.h:1049
void set_null_ptr(uchar *p_null_ptr, uint p_null_bit)
Definition: field.h:1310
void copy_data(ptrdiff_t src_record_offset)
Definition: field.cc:1961
bool m_is_tmp_null
This is a flag with the following semantics:
Definition: field.h:665
static constexpr size_t MAX_LONG_BLOB_WIDTH
Definition: field.h:739
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 k...
Definition: field.h:967
void operator=(Field &)=delete
virtual type_conversion_status validate_stored_val(THD *thd)
Definition: field.h:1723
static uchar dummy_null_buffer
Definition: field.h:678
virtual bool is_array() const
Whether the field is a typed array.
Definition: field.h:1803
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.
Definition: field.cc:2300
bool has_insert_default_general_value_expression() const
Checks if the field is marked as having a general expression to generate default values.
Definition: field.h:597
Key_map key_start
Definition: field.h:691
void set_null(ptrdiff_t row_offset=0)
Set field to value NULL.
Definition: field.cc:1921
virtual type_conversion_status store_decimal(const my_decimal *d)=0
virtual bool binary() const
Definition: field.h:1165
longlong val_int(uchar *new_ptr)
Definition: field.h:1469
Value_generator * gcol_info
Definition: field.h:815
ha_storage_media field_storage_type() const
Definition: field.h:1704
int cmp(const uchar *str) const
Definition: field.h:1191
virtual bool str_needs_quotes() const
Definition: field.h:1033
static constexpr size_t MAX_VARCHAR_WIDTH
Definition: field.h:733
virtual void get_image(uchar *buff, size_t length, const CHARSET_INFO *) const
Definition: field.h:1419
static constexpr size_t MAX_TINY_BLOB_WIDTH
Definition: field.h:736
const char * field_name
Definition: field.h:688
void set_field_ptr(uchar *ptr_arg)
Definition: field.h:1766
void clear_flag(unsigned flag)
Definition: field.h:756
uchar * pack_int24(uchar *to, const uchar *from, size_t max_length) const
Definition: field.cc:10637
Value_generator * m_default_val_expr
Holds the expression to be used to generate default values.
Definition: field.h:831
const uchar * field_ptr() const
Return a const pointer to where the field is stored in the record buffer.
Definition: field.h:1756
virtual void add_to_cost(CostOfItem *cost) const
Update '*cost' with the fact that this Field is accessed.
Definition: field.cc:1402
virtual longlong val_date_temporal() const
Returns DATE/DATETIME value in packed longlong format.
Definition: field.h:989
virtual uint32 pack_length() const
Definition: field.h:1065
void set_hidden(dd::Column::enum_hidden_type hidden)
Sets the hidden type for this field.
Definition: field.h:838
LEX_CSTRING comment
Definition: field.h:689
uint16 m_field_index
Definition: field.h:751
virtual const CHARSET_INFO * charset() const
Definition: field.h:1598
void set_notnull(ptrdiff_t row_offset=0)
Set field to value NOT NULL.
Definition: field.cc:1936
virtual uint32 get_length_bytes() const
Return number of bytes the field's length takes.
Definition: field.h:1810
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 comp...
Definition: field.h:1360
bool gcol_expr_is_equal(const Create_field *field) const
Check whether generated columns' expressions are the same.
Definition: field.cc:6403
virtual uint32 max_display_length() const =0
enum_auto_flags
Flags for Field::auto_flags / Create_field::auto_flags bitmaps.
Definition: field.h:712
@ ON_UPDATE_NOW
ON UPDATE CURRENT_TIMESTAMP.
Definition: field.h:716
@ GENERATED_FROM_EXPRESSION
DEFAULT (expression)
Definition: field.h:717
@ NONE
Definition: field.h:713
@ DEFAULT_NOW
DEFAULT CURRENT_TIMESTAMP.
Definition: field.h:715
@ NEXT_NUMBER
AUTO_INCREMENT.
Definition: field.h:714
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.
Definition: field.cc:1825
virtual uint32 data_length(ptrdiff_t row_offset=0) const
Definition: field.h:1089
virtual void set_image(const uchar *buff, size_t length, const CHARSET_INFO *)
Definition: field.h:1424
virtual bool has_charset() const
Definition: field.h:1604
virtual void set_derivation(enum Derivation)
Definition: field.h:1619
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.
Definition: field.h:1276
void reset_tmp_null()
Reset temporary NULL value for field.
Definition: field.h:904
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 ...
Definition: field.h:1550
virtual enum_field_types type() const =0
virtual bool zero_pack() const
Definition: field.h:1166
virtual void move_field_offset(ptrdiff_t ptr_diff)
Definition: field.h:1414
Key_map part_of_key
Keys that includes this field except of prefix keys.
Definition: field.h:692
virtual type_conversion_status store_packed(longlong nr)
Store a temporal value in packed longlong format into a field.
Definition: field.h:939
bool is_hidden_by_user() const
Definition: field.h:868
Field * new_field(MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uchar *new_null_ptr, uint new_null_bit) const
Definition: field.h:1382
bool handle_old_value() const
Whether field's old valued have to be handled.
Definition: field.h:1822
TABLE * table
Pointer to TABLE object that owns this field.
Definition: field.h:683
uint16 field_index() const
Returns field index.
Definition: field.h:1840
virtual type_conversion_status store(longlong nr, bool unsigned_val)=0
virtual bool get_timestamp(my_timeval *tm, int *warnings) const
Returns a UTC component in struct timeval format.
Definition: field.cc:2275
void move_field(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg)
Definition: field.h:1408
const uchar * unpack_int32(uchar *to, const uchar *from) const
Definition: field.cc:10654
virtual void init(TABLE *table_arg)
Definition: field.cc:10517
bool is_null(ptrdiff_t row_offset=0) const
Check whether the full table's row is NULL or the Field has value NULL.
Definition: field.h:1229
virtual my_decimal * val_decimal(my_decimal *) const =0
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 ins...
Definition: field.h:608
void evaluate_update_default_function()
Evaluates the UPDATE default function, if one exists, and stores the result in the record buffer.
Definition: field.cc:2351
LEX_CSTRING m_engine_attribute
Definition: field.h:796
void set_tmp_nullable()
Turn on temporary nullability for the field.
Definition: field.h:894
const uchar * unpack_int64(uchar *to, const uchar *from) const
Definition: field.cc:10665
virtual void set_field_index(uint16 field_index)
Sets field index.
Definition: field.h:1831
type_conversion_status check_constraints(int mysql_errno)
Check NOT NULL constraint on the field after temporary nullability is disabled.
Definition: field.cc:1878
Key_map part_of_prefixkey
Prefix keys.
Definition: field.h:694
bool is_real_null(ptrdiff_t row_offset=0) const
Check whether the Field has value NULL (temporary or actual).
Definition: field.h:1261
bool is_tmp_nullable() const
Definition: field.h:913
String * val_str(String *str, uchar *new_ptr)
Definition: field.h:1477
uchar null_bit
Definition: field.h:760
virtual double val_real() const =0
virtual bool can_be_compared_as_longlong() const
Definition: field.h:1377
virtual longlong val_int() const =0
uchar * pack_int32(uchar *to, const uchar *from, size_t max_length) const
Definition: field.cc:10648
bool m_is_tmp_nullable
Flag: if the NOT-NULL field can be temporary NULL.
Definition: field.h:655
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.
Definition: field.cc:2109
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 comp...
virtual const CHARSET_INFO * sort_charset() const
Definition: field.h:1603
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 + ...
Definition: field.h:1045
bool m_indexed
True if this field belongs to some index (unlike part_of_key, the index might have only a prefix).
Definition: field.h:794
virtual int cmp_binary_offset(ptrdiff_t row_offset) const
Definition: field.h:1204
virtual bool is_updatable() const
Checks whether a string field is part of write_set.
Definition: field.h:1776
virtual bool eq_def(const Field *field) const
Definition: field.cc:8750
const uchar * unpack(const uchar *from)
Definition: field.h:1532
virtual bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) const
Definition: field.cc:2262
geometry_type
Definition: field.h:720
@ GEOM_GEOMETRYCOLLECTION
Definition: field.h:728
@ GEOM_POLYGON
Definition: field.h:724
@ GEOM_MULTILINESTRING
Definition: field.h:726
@ GEOM_POINT
Definition: field.h:722
@ GEOM_MULTIPOINT
Definition: field.h:725
@ GEOM_MULTIPOLYGON
Definition: field.h:727
@ GEOM_LINESTRING
Definition: field.h:723
@ GEOM_GEOMETRY
Definition: field.h:721
virtual int cmp_max(const uchar *a, const uchar *b, uint max_len) const
Definition: field.h:1192
virtual Item_result result_type() const =0
uint32 flags
Definition: field.h:750
bool is_nullable() const
Definition: field.h:1302
bool warn_if_overflow(int op_result)
Process decimal library return codes and issue warnings for overflow and truncation.
Definition: field.cc:1807
static bool type_can_have_key_part(enum_field_types)
Check whether a field type can be partially indexed by a key.
Definition: field.cc:1644
bool set_warning(Sql_condition::enum_severity_level level, unsigned int code, int cut_increment)
Produce warning or note about data saved into field.
Definition: field.h:1642
virtual type_conversion_status store_time(MYSQL_TIME *ltime, uint8 dec_arg)
Store MYSQL_TIME value with the given amount of decimal digits into a field.
Definition: field.cc:2289
virtual type_conversion_status store(const char *to, size_t length, const CHARSET_INFO *cs)=0
virtual geometry_type get_geometry_type() const
Definition: field.h:1683
uint null_offset(const uchar *record) const
Definition: field.h:1304
virtual bool is_text_key_type() const
Definition: field.h:1214
virtual String * val_str(String *, String *) const =0
virtual uchar * pack(uchar *to, const uchar *from, size_t max_length) const
Pack the field into a format suitable for storage and transfer.
Definition: field.cc:2033
static Item_result result_merge_type(enum_field_types)
Detect Item_result by given field type of UNION merge result.
Definition: field.cc:1521
virtual bool eq(const Field *field) const
Definition: field.h:1054
Field * new_key_field(MEM_ROOT *root, TABLE *new_table, uchar *new_ptr) const
Definition: field.h:1392
bool is_tmp_null() const
Definition: field.h:921
virtual uint32 key_length() const
Definition: field.h:1168
bool is_gcol() const
Definition: field.h:827
dd::Column::enum_hidden_type m_hidden
Definition: field.h:644
void set_storage_type(ha_storage_media storage_type_arg)
Definition: field.h:1708
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.
Definition: field.cc:1396
uchar * m_null_ptr
Byte where the NULL bit is stored inside a record.
Definition: field.h:650
virtual uint32 max_data_length() const
Get the maximum size of the data in packed format.
Definition: field.h:1099
virtual Item_result cmp_type() const
Definition: field.h:1048
column_format_type column_format() const
Definition: field.h:1713
virtual const uchar * unpack(uchar *to, const uchar *from, uint param_data)
Unpack a field from row data.
Definition: field.cc:2064
virtual longlong val_time_temporal_at_utc() const
Definition: field.h:994
uchar auto_flags
Bitmap of flags indicating if field value is auto-generated by default and/or on update,...
Definition: field.h:770
bool is_hidden_by_system() const
Definition: field.h:858
virtual int cmp(const uchar *, const uchar *) const =0
String * val_str(String *str) const
Definition: field.h:1014
unsigned int m_warnings_pushed
Definition: field.h:811
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 a...
Definition: field.h:1296
uchar * pack_int64(uchar *to, const uchar *from, size_t max_length) const
Definition: field.cc:10659
virtual longlong val_date_temporal_at_utc() const
Definition: field.h:998
const char * orig_db_name
Pointer to original database name, only non-NULL for a temporary table.
Definition: field.h:685
uchar * get_null_ptr()
Definition: field.h:681
virtual uint32 char_length() const
Definition: field.h:1679
bool is_field_for_functional_index() const
Definition: field.h:879
virtual uint pack_length_from_metadata(uint field_metadata) const
Definition: field.h:1075
LEX_CSTRING m_secondary_engine_attribute
Definition: field.h:797
virtual int key_cmp(const uchar *str, uint length) const
Definition: field.h:1210
bool is_hidden() const
Definition: field.h:847
virtual void store_timestamp(const my_timeval *)
Stores a timestamp value in timeval format in a field.
Definition: field.h:1147
enum_check_fields m_check_for_truncated_fields_saved
The value of THD::check_for_truncated_fields at the moment of setting m_is_tmp_null attribute.
Definition: field.h:671
void evaluate_insert_default_function()
Evaluates the INSERT default function and stores the result in the field.
Definition: field.cc:2343
virtual int cmp_offset(ptrdiff_t row_offset) const
Definition: field.h:1201
bool is_created_from_null_item
If true, this field was created in create_tmp_field_from_item from a NULL value.
Definition: field.h:780
uint32 all_flags() const
Definition: field.h:759
int save_field_metadata(uchar *first_byte)
Definition: field.h:1080
virtual Field * clone(MEM_ROOT *mem_root) const =0
Makes a shallow copy of the Field object.
virtual bool get_time(MYSQL_TIME *ltime) const
Definition: field.cc:2269
bool stored_in_db
Indication that the field is physically stored in tables rather than just generated on SQL queries.
Definition: field.h:821
virtual enum Derivation derivation() const
Definition: field.h:1617
uchar * ptr
Holds the position to the field in record.
Definition: field.h:641
static constexpr size_t MAX_MEDIUM_BLOB_WIDTH
Definition: field.h:738
virtual void set_field_length(uint32 length)
Definition: field.h:744
virtual int key_cmp(const uchar *a, const uchar *b) const
Definition: field.h:1207
virtual bool is_unsigned() const
Whether the field is signed or not.
Definition: field.h:826
longlong val_temporal_by_field_type() const
Returns "native" packed longlong representation of a TIME or DATE/DATETIME field depending on field t...
Definition: field.h:1006
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 upd...
Definition: field.h:620
virtual enum_field_types binlog_type() const
Definition: field.h:1171
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.
Definition: field.cc:10076
dd::Column::enum_hidden_type hidden() const
Definition: field.h:841
void dbug_print() const
Definition: field.h:1690
longlong convert_decimal2longlong(const my_decimal *val, bool unsigned_flag, bool *has_overflow)
Conversion from decimal to longlong.
Definition: field.cc:2135
uchar * field_ptr()
Return a pointer to where the field is stored in the record buffer.
Definition: field.h:1764
virtual enum ha_base_keytype key_type() const
Definition: field.h:1167
virtual uint is_equal(const Create_field *new_field) const
Whether a field being created is type-compatible with an existing one.
Definition: field.cc:1383
virtual size_t get_key_image(uchar *buff, size_t length, imagetype type) const
Definition: field.h:1455
virtual void mem_free()
Definition: field.h:1378
virtual bool match_collation_to_optimize_range() const
Definition: field.h:1616
virtual uint repertoire() const
Definition: field.h:1618
virtual void hash(ulong *nr, ulong *nr2) const
Definition: field.cc:1945
bool has_insert_default_constant_expression() const
Checks if the field is marked as having a constant expression to generate default values.
Definition: field.h:632
virtual uint row_pack_length() const
Definition: field.h:1079
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 c...
Definition: field.h:788
virtual void sql_type(String &str) const =0
virtual type_conversion_status reset()
Definition: field.h:1101
void set_flag(unsigned flag)
Definition: field.h:755
enum_pushed_warnings
Definition: field.h:800
@ NO_DEFAULT_FOR_FIELD_PUSHED
Definition: field.h:802
@ NO_DEFAULT_FOR_VIEW_FIELD_PUSHED
Definition: field.h:803
@ BAD_NULL_ERROR_PUSHED
Definition: field.h:801
virtual Field * new_field(MEM_ROOT *root, TABLE *new_table) const
Definition: field.cc:2304
void set_column_format(column_format_type column_format_arg)
Definition: field.h:1717
uint offset(uchar *record) const
Definition: field.h:1590
virtual void set_key_image(const uchar *buff, size_t length)
Definition: field.h:1460
bool is_flag_set(unsigned flag) const
Definition: field.h:754
Key_map part_of_key_not_extended
All keys that include this field, but not extended by the storage engine to include primary key colum...
Definition: field.h:700
longlong val_int_offset(ptrdiff_t row_offset)
Definition: field.h:1463
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
Represents a JSON array container, i.e.
Definition: json_dom.h:513
Vector of logical diffs describing changes to a JSON column.
Definition: json_diff.h:141
Abstraction for accessing JSON values irrespective of whether they are (started out as) binary JSON v...
Definition: json_dom.h:1150
Definition: protocol.h:33
Definition: rpl_rli.h:206
const char * col_name
Definition: field.h:4716
ulong length
Definition: field.h:4717
uint charsetnr
Definition: field.h:4718
bool field
Definition: field.h:4725
enum_field_types type
Definition: field.h:4719
const char * db_name
Definition: field.h:4714
const char * org_table_name
Definition: field.h:4715
enum_severity_level
Enumeration value describing the severity of the condition.
Definition: sql_error.h:63
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
void takeover(String &s)
Takeover the buffer owned by another string.
Definition: sql_string.h:480
void mem_free()
Definition: sql_string.h:400
char * c_ptr_safe()
Returns a pointer to a C-style null-terminated string.
Definition: sql_string.h:288
const CHARSET_INFO * charset() const
Definition: sql_string.h:240
const char * ptr() const
Definition: sql_string.h:249
size_t length() const
Definition: sql_string.h:241
size_t alloced_length() const
Definition: sql_string.h:242
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
This class represents abstract time zone and provides basic interface for MYSQL_TIME <-> my_time_t co...
Definition: tztime.h:49
Used for storing information associated with generated column, default values generated from expressi...
Definition: field.h:485
void set_field_stored(bool stored)
Definition: field.h:538
void set_field_type(enum_field_types fld_type)
Definition: field.h:521
uint num_non_virtual_base_cols
How many non-virtual base columns in base_columns_map.
Definition: field.h:574
bool stored_in_db
Indicates if the field is physically stored in the database.
Definition: field.h:572
bool register_base_columns(TABLE *table)
Calculate the base_columns_map and num_non_virtual_base_cols members of this generated column.
Definition: table.cc:2551
enum_field_types field_type
Real field type.
Definition: field.h:570
void backup_stmt_unsafe_flags(uint32 backup_binlog_stmt_flags)
Set the binary log flags in m_backup_binlog_stmt_flags.
Definition: field.h:527
uint non_virtual_base_columns() const
Get the number of non virtual base columns that this generated column needs.
Definition: field.h:546
Item * expr_item
Item representing the generation expression.
Definition: field.h:495
void dup_expr_str(MEM_ROOT *root, const char *src, size_t len)
Duplicates a string into expr_str.
Definition: table.cc:2575
uint32 get_stmt_unsafe_flags()
Get the binary log flags from m_backup_binlog_stmt_flags.
Definition: field.h:535
MY_BITMAP base_columns_map
Bitmap records base columns which a generated column depends on.
Definition: field.h:517
uint32 m_backup_binlog_stmt_flags
Bit field indicating the type of statement for binary logging.
Definition: field.h:512
void print_expr(THD *thd, String *out)
Writes the generation expression into a String with proper syntax.
Definition: table.cc:2581
Item * item_list
List of all items created when parsing and resolving generated expression.
Definition: field.h:515
bool get_field_stored() const
Definition: field.h:537
enum_field_types get_real_type() const
Definition: field.h:519
LEX_STRING expr_str
Text of the expression.
Definition: field.h:503
enum_hidden_type
Definition: column.h:96
@ HT_HIDDEN_SQL
The column is visible to the server, but hidden from the user.
@ HT_HIDDEN_SE
The column is completely invisible to the server.
@ HT_VISIBLE
The column is visible (a normal column)
@ HT_HIDDEN_USER
User table column marked as INVISIBLE by using the column visibility attribute.
my_decimal class limits 'decimal_t' type to what we need in MySQL.
Definition: my_decimal.h:96
static MEM_ROOT mem_root
Definition: client_plugin.cc:114
#define L
Definition: ctype-tis620.cc:75
#define E_DEC_TRUNCATED
Definition: decimal.h:149
#define E_DEC_DIV_ZERO
Definition: decimal.h:151
#define E_DEC_BAD_NUM
Definition: decimal.h:152
#define E_DEC_OK
Definition: decimal.h:148
#define E_DEC_OOM
Definition: decimal.h:153
#define E_DEC_OVERFLOW
Definition: decimal.h:150
static constexpr int DECIMAL_NOT_SPECIFIED
Definition: dtoa.h:54
This file contains basic method for field types.
bool is_temporal_type(enum_field_types type)
Tests if field type is temporal, i.e.
Definition: field_common_properties.h:115
bool is_temporal_type_with_date(enum_field_types type)
Tests if field type is temporal and has date part, i.e.
Definition: field_common_properties.h:156
This file contains the field type.
enum_field_types
Column types for MySQL Note: Keep include/mysql/components/services/bits/stored_program_bits....
Definition: field_types.h:55
@ MYSQL_TYPE_TIME2
Internal to MySQL.
Definition: field_types.h:75
@ MYSQL_TYPE_VARCHAR
Definition: field_types.h:71
@ MYSQL_TYPE_LONGLONG
Definition: field_types.h:64
@ MYSQL_TYPE_LONG_BLOB
Definition: field_types.h:86
@ MYSQL_TYPE_BLOB
Definition: field_types.h:87
@ MYSQL_TYPE_TINY
Definition: field_types.h:57
@ MYSQL_TYPE_TIME
Definition: field_types.h:67
@ MYSQL_TYPE_SET
Definition: field_types.h:83
@ MYSQL_TYPE_NEWDATE
Internal to MySQL.
Definition: field_types.h:70
@ MYSQL_TYPE_VECTOR
Definition: field_types.h:77
@ MYSQL_TYPE_JSON
Definition: field_types.h:80
@ MYSQL_TYPE_STRING
Definition: field_types.h:89
@ MYSQL_TYPE_NULL
Definition: field_types.h:62
@ MYSQL_TYPE_ENUM
Definition: field_types.h:82
@ MYSQL_TYPE_TINY_BLOB
Definition: field_types.h:84
@ MYSQL_TYPE_LONG
Definition: field_types.h:59
@ MYSQL_TYPE_BIT
Definition: field_types.h:72
@ MYSQL_TYPE_INVALID
Definition: field_types.h:78
@ MYSQL_TYPE_GEOMETRY
Definition: field_types.h:90
@ MYSQL_TYPE_NEWDECIMAL
Definition: field_types.h:81
@ MYSQL_TYPE_DECIMAL
Definition: field_types.h:56
@ MYSQL_TYPE_TYPED_ARRAY
Used for replication only.
Definition: field_types.h:76
@ MYSQL_TYPE_DOUBLE
Definition: field_types.h:61
@ MYSQL_TYPE_MEDIUM_BLOB
Definition: field_types.h:85
@ MYSQL_TYPE_DATETIME2
Internal to MySQL.
Definition: field_types.h:74
@ MYSQL_TYPE_SHORT
Definition: field_types.h:58
@ MYSQL_TYPE_DATE
Definition: field_types.h:66
@ MYSQL_TYPE_FLOAT
Definition: field_types.h:60
@ MYSQL_TYPE_TIMESTAMP
Definition: field_types.h:63
@ MYSQL_TYPE_INT24
Definition: field_types.h:65
@ MYSQL_TYPE_DATETIME
Definition: field_types.h:68
@ MYSQL_TYPE_TIMESTAMP2
Definition: field_types.h:73
@ MYSQL_TYPE_YEAR
Definition: field_types.h:69
static const std::string dec("DECRYPTION")
#define ENUM_FLAG
field is an enum
Definition: mysql_com.h:164
#define FIELD_FLAGS_COLUMN_FORMAT
Field column format, bit 24-25.
Definition: mysql_com.h:187
#define BLOB_FLAG
Field is a blob.
Definition: mysql_com.h:158
#define SET_FLAG
field is a set
Definition: mysql_com.h:167
#define BINARY_FLAG
Field is binary
Definition: mysql_com.h:161
#define FIELD_FLAGS_STORAGE_MEDIA
Field storage media, bit 22-23.
Definition: mysql_com.h:185
static int flag
Definition: hp_test1.cc:40
static int rnd(int max_value)
Definition: hp_test2.cc:551
constexpr const LEX_CSTRING EMPTY_CSTR
Definition: lex_string.h:48
A better implementation of the UNIX ctype(3) library.
static constexpr uint32_t MY_REPERTOIRE_UNICODE30
Definition: m_ctype.h:156
MYSQL_STRINGS_EXPORT CHARSET_INFO my_charset_bin
Definition: ctype-bin.cc:500
MYSQL_STRINGS_EXPORT CHARSET_INFO my_charset_utf8mb4_bin
Definition: ctype-utf8.cc:7822
MYSQL_STRINGS_EXPORT unsigned my_charset_repertoire(const CHARSET_INFO *cs)
Definition: ctype.cc:816
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
This file includes constants used by all storage engines.
ha_base_keytype
Definition: my_base.h:440
@ HA_KEYTYPE_VARBINARY2
Definition: my_base.h:461
@ HA_KEYTYPE_BINARY
Definition: my_base.h:443
@ HA_KEYTYPE_USHORT_INT
Definition: my_base.h:449
@ HA_KEYTYPE_ULONGLONG
Definition: my_base.h:452
@ HA_KEYTYPE_UINT24
Definition: my_base.h:454
@ HA_KEYTYPE_VARTEXT2
Definition: my_base.h:460
@ HA_KEYTYPE_FLOAT
Definition: my_base.h:446
@ HA_KEYTYPE_BIT
Definition: my_base.h:462
@ HA_KEYTYPE_ULONG_INT
Definition: my_base.h:450
@ HA_KEYTYPE_SHORT_INT
Definition: my_base.h:444
@ HA_KEYTYPE_NUM
Definition: my_base.h:448
@ HA_KEYTYPE_DOUBLE
Definition: my_base.h:447
@ HA_KEYTYPE_LONG_INT
Definition: my_base.h:445
@ HA_KEYTYPE_INT8
Definition: my_base.h:455
@ HA_KEYTYPE_INT24
Definition: my_base.h:453
@ HA_KEYTYPE_TEXT
Definition: my_base.h:442
@ HA_KEYTYPE_LONGLONG
Definition: my_base.h:451
ha_storage_media
Definition: my_base.h:116
@ HA_SM_DEFAULT
Definition: my_base.h:117
#define DBUG_PRINT(keyword, arglist)
Definition: my_dbug.h:181
#define DBUG_FILE
Definition: my_dbug.h:194
#define DBUG_EVALUATE_IF(keyword, a1, a2)
Definition: my_dbug.h:179
#define DBUG_TRACE
Definition: my_dbug.h:146
Utility functions for converting between ulonglong and double.
static constexpr double LLONG_MAX_DOUBLE
Definition: my_double2ulonglong.h:57
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
uint8_t uint8
Definition: my_inttypes.h:63
unsigned char uchar
Definition: my_inttypes.h:52
long long int longlong
Definition: my_inttypes.h:55
#define MY_INT32_NUM_DECIMAL_DIGITS
Definition: my_inttypes.h:100
uint16_t uint16
Definition: my_inttypes.h:65
uint32_t uint32
Definition: my_inttypes.h:67
Interface for low level time utilities.
constexpr const int MYSQL_TIME_WARN_INVALID_TIMESTAMP
Definition: my_time.h:120
constexpr const int MYSQL_TIME_NOTE_TRUNCATED
Definition: my_time.h:122
constexpr const int MYSQL_TIME_WARN_TRUNCATED
Conversion warnings.
Definition: my_time.h:118
constexpr const int DATETIME_MAX_DECIMALS
Definition: my_time.h:143
constexpr const int MYSQL_TIME_WARN_ZERO_IN_DATE
Definition: my_time.h:123
constexpr const my_time_flags_t TIME_FUZZY_DATE
Allow zero day and zero month.
Definition: my_time.h:97
constexpr const int MYSQL_TIME_WARN_OUT_OF_RANGE
Definition: my_time.h:119
unsigned int my_time_flags_t
Flags to str_to_datetime and number_to_datetime.
Definition: my_time.h:94
constexpr const int MYSQL_TIME_WARN_ZERO_DATE
Definition: my_time.h:121
unsigned int STDCALL mysql_errno(MYSQL *mysql)
Definition: client.cc:9194
Common definition between mysql server & client.
Time declarations shared between the server and client API: you should not add anything to this heade...
enum_mysql_timestamp_type
Definition: mysql_time.h:45
static int interval
Definition: mysqladmin.cc:71
void warning(const char *format,...)
static int record
Definition: mysqltest.cc:193
void copy(Shards< COUNT > &dst, const Shards< COUNT > &src) noexcept
Copy the counters, overwrite destination.
Definition: ut0counter.h:354
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1105
static PFS_engine_table_share_proxy table
Definition: pfs.cc:61
Definition: buf0block_hint.cc:30
constexpr value_type zerofill
Definition: classic_protocol_constants.h:274
constexpr value_type is_unsigned
Definition: classic_protocol_constants.h:273
Definition: commit_order_queue.h:34
enum_column_types
Definition: column.h:53
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
RangeReverse< Range > reverse(Range &x)
Iterate over a range in reverse.
Definition: utilities.h:132
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
std::set< Key, Compare, ut::allocator< Key > > set
Specialization of set which uses ut_allocator.
Definition: ut0new.h:2884
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:61
repeated Source source
Definition: replication_asynchronous_connection_failover.proto:42
required string type
Definition: replication_group_member_actions.proto:34
static void make_hash_key(const char *username, const char *hostname, std::string &key)
Make hash key.
Definition: sha2_password.cc:767
Create_field * generate_create_field(THD *thd, Item *source_item, TABLE *tmp_table)
Generate a Create_field from an Item.
Definition: field.cc:10763
bool is_temporal_real_type(enum_field_types type)
Tests if field real type is temporal, i.e.
Definition: field.h:351
Field * make_field(MEM_ROOT *mem_root_arg, TABLE_SHARE *share, uchar *ptr, size_t field_length, uchar *null_pos, uchar null_bit, enum_field_types field_type, const CHARSET_INFO *field_charset, Field::geometry_type geom_type, uchar auto_flags, TYPELIB *interval, const char *field_name, bool is_nullable, bool is_zerofill, bool is_unsigned, uint decimals, bool treat_bit_as_char, uint pack_length_override, std::optional< gis::srid_t > srid, bool is_array)
This function should only be called from legacy code.
Definition: field.cc:9617
type_conversion_status
Status when storing a value in a field or converting from one datatype to another.
Definition: field.h:204
@ TYPE_ERR_BAD_VALUE
Store/convert incompatible values, like converting "foo" to a date.
Definition: field.h:247
@ TYPE_OK
Storage/conversion went fine.
Definition: field.h:206
@ TYPE_NOTE_TIME_TRUNCATED
A minor problem when converting between temporal values, e.g.
Definition: field.h:211
@ TYPE_ERR_OOM
Out of memory.
Definition: field.h:249
@ TYPE_NOTE_TRUNCATED
Value was stored, but something was cut.
Definition: field.h:221
@ TYPE_ERR_NULL_CONSTRAINT_VIOLATION
Trying to store NULL in a NOT NULL field.
Definition: field.h:242
@ TYPE_WARN_OUT_OF_RANGE
Value outside min/max limit of datatype.
Definition: field.h:226
@ TYPE_WARN_TRUNCATED
Value was stored, but something was cut.
Definition: field.h:235
@ TYPE_WARN_INVALID_STRING
Value has invalid string data.
Definition: field.h:240
enum_check_fields
Definition: field.h:174
@ CHECK_FIELD_ERROR_FOR_NULL
Definition: field.h:177
@ CHECK_FIELD_IGNORE
Definition: field.h:175
@ CHECK_FIELD_WARN
Definition: field.h:176
void copy_integer(uchar *to, size_t to_length, const uchar *from, size_t from_length, bool is_unsigned)
Copies an integer value to a format comparable with memcmp().
Definition: field.h:454
type_conversion_status set_field_to_null_with_conversions(Field *field, bool no_conversions)
Set field to NULL or TIMESTAMP or to next auto_increment number.
Definition: field_conv.cc:154
uint32 calc_key_length(enum_field_types sql_type, uint32 length, uint32 decimals, bool is_unsigned, uint32 elements)
Calculate key length for field from its type, length and other attributes.
Definition: field.cc:9455
bool pre_validate_value_generator_expr(Item *expression, const char *name, Value_generator_source source)
Perform per item-type checks to determine if the expression is allowed for a generated column,...
Definition: field.cc:1340
#define MY_REPERTOIRE_NUMERIC
Definition: field.h:260
enum_field_types real_type_to_type(enum_field_types real_type)
Convert temporal real types as returned by field->real_type() to field type as returned by field->typ...
Definition: field.h:395
Value_generator_source
Enum to indicate source for which value generator is used.
Definition: field.h:475
@ VGS_DEFAULT_EXPRESSION
Definition: field.h:477
@ VGS_CHECK_CONSTRAINT
Definition: field.h:478
@ VGS_GENERATED_COLUMN
Definition: field.h:476
type_conversion_status decimal_err_to_type_conv_status(int dec_error)
Definition: field.h:296
enum_field_types blob_type_from_pack_length(uint pack_length)
Return the appropriate MYSQL_TYPE_X_BLOB value based on the pack_length.
Definition: field.h:418
uint get_set_pack_length(int elements)
Definition: field.h:291
bool fields_are_memcpyable(const Field *to, const Field *from)
Check if one can copy from “from” to “to” with a simple memcpy(), with pack_length() as the length.
Definition: field_conv.cc:711
#define my_charset_numeric
Definition: field.h:259
type_conversion_status set_field_to_null(Field *field)
Definition: field_conv.cc:94
uint get_enum_pack_length(int elements)
Definition: field.h:287
size_t calc_pack_length(enum_field_types type, size_t length)
Definition: field.cc:9498
type_conversion_status field_conv_slow(Field *to, const Field *from)
Copy the value in "from" (assumed to be non-NULL) to "to", doing any required conversions in the proc...
Definition: field_conv.cc:772
bool is_blob(enum_field_types sql_type)
Definition: field.h:4829
const char * get_field_name_or_expression(THD *thd, const Field *field)
Definition: field.cc:10851
#define portable_sizeof_char_ptr
Definition: field.h:119
column_format_type
Definition: field.h:192
@ COLUMN_FORMAT_TYPE_DEFAULT
Definition: field.h:193
@ COLUMN_FORMAT_TYPE_FIXED
Definition: field.h:194
@ COLUMN_FORMAT_TYPE_DYNAMIC
Definition: field.h:195
type_conversion_status time_warning_to_type_conversion_status(const int warn)
Convert warnings returned from str_to_time() and str_to_datetime() to their corresponding type_conver...
Definition: field.h:316
type_conversion_status store_internal_with_error_check(Field_new_decimal *field, int conversion_err, my_decimal *value)
Definition: field.cc:3084
enum_field_types get_blob_type_from_length(size_t length)
Definition: field.cc:9485
bool real_type_with_now_as_default(enum_field_types type)
Tests if field real type can have "DEFAULT CURRENT_TIMESTAMP", i.e.
Definition: field.h:370
bool real_type_with_now_on_update(enum_field_types type)
Tests if field real type can have "ON UPDATE CURRENT_TIMESTAMP", i.e.
Definition: field.h:383
Derivation
For use.
Definition: field.h:181
@ DERIVATION_COERCIBLE
Definition: field.h:184
@ DERIVATION_SYSCONST
Definition: field.h:185
@ DERIVATION_EXPLICIT
Definition: field.h:188
@ DERIVATION_NONE
Definition: field.h:187
@ DERIVATION_NUMERIC
Definition: field.h:183
@ DERIVATION_IMPLICIT
Definition: field.h:186
@ DERIVATION_IGNORABLE
Definition: field.h:182
File containing constants that can be used throughout the server.
constexpr const int MAX_TIME_WIDTH
-838:59:59
Definition: sql_const.h:70
constexpr const int MAX_DATE_WIDTH
YYYY-MM-DD.
Definition: sql_const.h:68
constexpr const int MAX_DATETIME_WIDTH
YYYY-MM-DD HH:MM:SS.
Definition: sql_const.h:76
Our own string classes, used pervasively throughout the executor.
Truncate_result
Definition: sql_truncate.cc:139
case opt name
Definition: sslopt-case.h:29
Definition: m_ctype.h:421
unsigned mbmaxlen
Definition: m_ctype.h:445
MY_CHARSET_HANDLER * cset
Definition: m_ctype.h:453
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
Definition: mysql_lex_string.h:40
Definition: mysql_lex_string.h:35
Structure to return status from str_to_datetime(), str_to_time(), number_to_datetime(),...
Definition: my_time.h:170
Definition: mysql_time.h:82
Definition: my_bitmap.h:43
size_t(* lengthsp)(const CHARSET_INFO *, const char *ptr, size_t length)
Given a pointer and a length in bytes, returns a new length in bytes where all trailing space charact...
Definition: m_ctype.h:372
void(* fill)(const CHARSET_INFO *, char *to, size_t len, int fill)
Definition: m_ctype.h:399
This structure is shared between different table objects.
Definition: table.h:704
bool has_null_row() const
Definition: table.h:2184
bool is_nullable() const
Return whether table is nullable.
Definition: table.h:2086
A structure to store a decimal value together with its precision and number of decimals TODO: HCS-100...
Definition: protocol_local_v2.h:43
Replacement of system's struct timeval to ensure we can carry 64 bit values even on a platform which ...
Definition: my_time_t.h:45
Item_result
Type of the user defined function return slot and arguments.
Definition: udf_registration_types.h:39
@ STRING_RESULT
not valid for UDFs
Definition: udf_registration_types.h:41
@ DECIMAL_RESULT
not valid for UDFs
Definition: udf_registration_types.h:45
@ REAL_RESULT
char *
Definition: udf_registration_types.h:42
@ INT_RESULT
double
Definition: udf_registration_types.h:43