diff --git a/sql/sql_type.h b/sql/sql_type.h index 05880408f23..6eeca58df01 100644 --- a/sql/sql_type.h +++ b/sql/sql_type.h @@ -4993,50 +4993,51 @@ class Type_handler_tiny: public Type_handler_general_purpose_int static const Type_limits_int m_limits_uint8; public: virtual ~Type_handler_tiny() {} - const Name name() const { return m_name_tiny; } - enum_field_types field_type() const { return MYSQL_TYPE_TINY; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_tiny; } + enum_field_types field_type() const override { return MYSQL_TYPE_TINY; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_TINY; } - const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) const + const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) + const override { return unsigned_fl ? &m_limits_uint8 : &m_limits_sint8; } - uint32 calc_pack_length(uint32 length) const { return 1; } - uint32 max_display_length_for_field(const Conv_source &src) const + uint32 calc_pack_length(uint32 length) const override { return 1; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return 4; } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_tiny(item, protocol, buf); } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_TINY); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; }; @@ -5047,50 +5048,51 @@ class Type_handler_short: public Type_handler_general_purpose_int static const Type_limits_int m_limits_uint16; public: virtual ~Type_handler_short() {} - const Name name() const { return m_name_short; } - enum_field_types field_type() const { return MYSQL_TYPE_SHORT; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_short; } + enum_field_types field_type() const override { return MYSQL_TYPE_SHORT; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_SHORT; } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_short(item, protocol, buf); } - const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) const + const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) + const override { return unsigned_fl ? &m_limits_uint16 : &m_limits_sint16; } - uint32 max_display_length_for_field(const Conv_source &src) const + uint32 max_display_length_for_field(const Conv_source &src) const override { return 6; } - uint32 calc_pack_length(uint32 length) const { return 2; } + uint32 calc_pack_length(uint32 length) const override{ return 2; } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_SHORT); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; }; @@ -5101,50 +5103,51 @@ class Type_handler_long: public Type_handler_general_purpose_int static const Type_limits_int m_limits_uint32; public: virtual ~Type_handler_long() {} - const Name name() const { return m_name_int; } - enum_field_types field_type() const { return MYSQL_TYPE_LONG; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_int; } + enum_field_types field_type() const override { return MYSQL_TYPE_LONG; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_LONG; } - const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) const + const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) + const override { return unsigned_fl ? &m_limits_uint32 : &m_limits_sint32; } - uint32 max_display_length_for_field(const Conv_source &src) const + uint32 max_display_length_for_field(const Conv_source &src) const override { return 11; } - uint32 calc_pack_length(uint32 length) const { return 4; } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + uint32 calc_pack_length(uint32 length) const override { return 4; } + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_long(item, protocol, buf); } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_LONG); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; }; @@ -5152,10 +5155,10 @@ class Type_handler_bool: public Type_handler_long { static const Name m_name_bool; public: - const Name name() const { return m_name_bool; } - bool is_bool_type() const { return true; } - void Item_update_null_value(Item *item) const; - bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *) const; + const Name name() const override { return m_name_bool; } + bool is_bool_type() const override { return true; } + void Item_update_null_value(Item *item) const override; + bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *) const override; }; @@ -5166,32 +5169,33 @@ class Type_handler_longlong: public Type_handler_general_purpose_int static const Type_limits_int m_limits_uint64; public: virtual ~Type_handler_longlong() {} - const Name name() const { return m_name_longlong; } - enum_field_types field_type() const { return MYSQL_TYPE_LONGLONG; } - protocol_send_type_t protocol_send_type() const + const Name name() const override{ return m_name_longlong; } + enum_field_types field_type() const override{ return MYSQL_TYPE_LONGLONG; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_LONGLONG; } - const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) const + const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) + const override { return unsigned_fl ? &m_limits_uint64 : &m_limits_sint64; } - uint32 max_display_length_for_field(const Conv_source &src) const + uint32 max_display_length_for_field(const Conv_source &src) const override { return 20; } - uint32 calc_pack_length(uint32 length) const { return 8; } + uint32 calc_pack_length(uint32 length) const override { return 8; } Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + const Type_cast_attributes &attr) const override; + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_longlong(item, protocol, buf); } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_LONGLONG); } @@ -5199,21 +5203,21 @@ public: const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; }; @@ -5225,7 +5229,7 @@ public: const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; }; @@ -5236,43 +5240,44 @@ class Type_handler_int24: public Type_handler_general_purpose_int static const Type_limits_int m_limits_uint24; public: virtual ~Type_handler_int24() {} - const Name name() const { return m_name_mediumint; } - enum_field_types field_type() const { return MYSQL_TYPE_INT24; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_mediumint; } + enum_field_types field_type() const override { return MYSQL_TYPE_INT24; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_LONG; } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_long(item, protocol, buf); } - const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) const + const Type_limits_int *type_limits_int_by_unsigned_flag(bool unsigned_fl) + const override { return unsigned_fl ? &m_limits_uint24 : &m_limits_sint24; } - uint32 max_display_length_for_field(const Conv_source &src) const + uint32 max_display_length_for_field(const Conv_source &src) const override { return 9; } - uint32 calc_pack_length(uint32 length) const { return 3; } + uint32 calc_pack_length(uint32 length) const override { return 3; } Field *make_conversion_table_field(MEM_ROOT *mem_root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_INT24); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5281,51 +5286,53 @@ class Type_handler_year: public Type_handler_int_result static const Name m_name_year; public: virtual ~Type_handler_year() {} - const Name name() const { return m_name_year; } - enum_field_types field_type() const { return MYSQL_TYPE_YEAR; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_year; } + enum_field_types field_type() const override { return MYSQL_TYPE_YEAR; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_SHORT; } - uint32 max_display_length(const Item *item) const; - uint32 max_display_length_for_field(const Conv_source &src) const + uint32 max_display_length(const Item *item) const override; + uint32 max_display_length_for_field(const Conv_source &src) const override { return 4; } - uint32 calc_pack_length(uint32 length) const { return 1; } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + uint32 calc_pack_length(uint32 length) const override { return 1; } + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_short(item, protocol, buf); } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; void Column_definition_reuse_fix_attributes(THD *thd, Column_definition *c, - const Field *field) const; + const Field *field) + const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_YEAR); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; + uint32 flags) const override; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; void Item_get_date(THD *thd, Item *item, Temporal::Warn *warn, - MYSQL_TIME *ltime, date_mode_t fuzzydate) const; + MYSQL_TIME *ltime, date_mode_t fuzzydate) const override; void Item_func_hybrid_field_type_get_date(THD *, Item_func_hybrid_field_type *item, Temporal::Warn *, MYSQL_TIME *to, - date_mode_t fuzzydate) const; + date_mode_t fuzzydate) + const override; }; @@ -5334,54 +5341,55 @@ class Type_handler_bit: public Type_handler_int_result static const Name m_name_bit; public: virtual ~Type_handler_bit() {} - const Name name() const { return m_name_bit; } - enum_field_types field_type() const { return MYSQL_TYPE_BIT; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_bit; } + enum_field_types field_type() const override { return MYSQL_TYPE_BIT; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_STRING; } - uint32 max_display_length(const Item *item) const; - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const { return length / 8; } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + uint32 max_display_length(const Item *item) const override; + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override { return length / 8; } + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_str(item, protocol, buf); } - String *print_item_value(THD *thd, Item *item, String *str) const + String *print_item_value(THD *thd, Item *item, String *str) const override { return print_item_value_csstr(thd, item, str); } - void show_binlog_type(const Conv_source &src, String *str) const; + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; bool Column_definition_redefine_stage1(Column_definition *def, const Column_definition *dup, const handler *file, const Schema_specification_st *schema) - const; + const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; - bool Vers_history_point_resolve_unit(THD *thd, Vers_history_point *p) const; + uint32 flags) const override; + bool Vers_history_point_resolve_unit(THD *thd, Vers_history_point *p) + const override; }; @@ -5390,56 +5398,58 @@ class Type_handler_float: public Type_handler_real_result static const Name m_name_float; public: virtual ~Type_handler_float() {} - const Name name() const { return m_name_float; } - enum_field_types field_type() const { return MYSQL_TYPE_FLOAT; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_float; } + enum_field_types field_type() const override { return MYSQL_TYPE_FLOAT; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_FLOAT; } - bool type_can_have_auto_increment_attribute() const { return true; } - uint32 max_display_length(const Item *item) const { return 25; } - uint32 max_display_length_for_field(const Conv_source &src) const + bool type_can_have_auto_increment_attribute() const override { return true; } + uint32 max_display_length(const Item *item) const override { return 25; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return 12; } - uint32 calc_pack_length(uint32 length) const { return sizeof(float); } + uint32 calc_pack_length(uint32 length) const override { return sizeof(float); } Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + const Type_cast_attributes &attr) const override; + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_float(item, protocol, buf); } - Field *make_num_distinct_aggregator_field(MEM_ROOT *, const Item *) const; + Field *make_num_distinct_aggregator_field(MEM_ROOT *, const Item *) + const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_real(c, MYSQL_TYPE_FLOAT); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; String *Item_func_hybrid_field_type_val_str(Item_func_hybrid_field_type *, - String *) const; - String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; + String *) const override; + String *Item_func_min_max_val_str(Item_func_min_max *, String *) + const override; }; @@ -5448,55 +5458,59 @@ class Type_handler_double: public Type_handler_real_result static const Name m_name_double; public: virtual ~Type_handler_double() {} - const Name name() const { return m_name_double; } - enum_field_types field_type() const { return MYSQL_TYPE_DOUBLE; } - protocol_send_type_t protocol_send_type() const + const Name name() const override { return m_name_double; } + enum_field_types field_type() const override { return MYSQL_TYPE_DOUBLE; } + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_DOUBLE; } - bool type_can_have_auto_increment_attribute() const { return true; } - uint32 max_display_length(const Item *item) const { return 53; } - uint32 max_display_length_for_field(const Conv_source &src) const + bool type_can_have_auto_increment_attribute() const override { return true; } + uint32 max_display_length(const Item *item) const override { return 53; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return 22; } - uint32 calc_pack_length(uint32 length) const { return sizeof(double); } + uint32 calc_pack_length(uint32 length) const override + { + return sizeof(double); + } Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + const Type_cast_attributes &attr) const override; + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_double(item, protocol, buf); } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_real(c, MYSQL_TYPE_DOUBLE); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; String *Item_func_hybrid_field_type_val_str(Item_func_hybrid_field_type *, - String *) const; - String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; + String *) const override; + String *Item_func_min_max_val_str(Item_func_min_max *, String *) + const override; }; @@ -5505,18 +5519,19 @@ class Type_handler_time_common: public Type_handler_temporal_result static const Name m_name_time; public: virtual ~Type_handler_time_common() { } - const Name name() const { return m_name_time; } - const Name &default_value() const; - enum_field_types field_type() const { return MYSQL_TYPE_TIME; } - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + const Name name() const override { return m_name_time; } + const Name &default_value() const override; + enum_field_types field_type() const override { return MYSQL_TYPE_TIME; } + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { return DYN_COL_TIME; } - protocol_send_type_t protocol_send_type() const + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_TIME; } - enum_mysql_timestamp_type mysql_timestamp_type() const + enum_mysql_timestamp_type mysql_timestamp_type() const override { return MYSQL_TIMESTAMP_TIME; } @@ -5524,69 +5539,78 @@ public: TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Item_literal *create_literal_item(THD *thd, const char *str, size_t length, - CHARSET_INFO *cs, bool send_error) const; + CHARSET_INFO *cs, bool send_error) + const override; Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; + const Type_cast_attributes &attr) + const override; bool Item_eq_value(THD *thd, const Type_cmp_attributes *attr, - Item *a, Item *b) const; - uint Item_decimal_scale(const Item *item) const + Item *a, Item *b) const override; + uint Item_decimal_scale(const Item *item) const override { return Item_decimal_scale_with_seconds(item); } - uint Item_decimal_precision(const Item *item) const; - uint Item_divisor_precision_increment(const Item *item) const + uint Item_decimal_precision(const Item *item) const override; + uint Item_divisor_precision_increment(const Item *item) const override { return Item_divisor_precision_increment_with_seconds(item); } - const Type_handler *type_handler_for_comparison() const; - int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) const; - void Column_definition_implicit_upgrade(Column_definition *c) const; - bool Column_definition_fix_attributes(Column_definition *c) const; - bool Item_save_in_value(THD *thd, Item *item, st_value *value) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + const Type_handler *type_handler_for_comparison() const override; + int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) + const override; + void Column_definition_implicit_upgrade(Column_definition *c) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; + bool Item_save_in_value(THD *thd, Item *item, st_value *value) const override; + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_time(item, protocol, buf); } - void Item_update_null_value(Item *item) const; - int Item_save_in_field(Item *item, Field *field, bool no_conversions) const; - String *print_item_value(THD *thd, Item *item, String *str) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; - longlong Item_val_int_unsigned_typecast(Item *item) const; + void Item_update_null_value(Item *item) const override; + int Item_save_in_field(Item *item, Field *field, bool no_conversions) + const override; + String *print_item_value(THD *thd, Item *item, String *str) const override; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; + longlong Item_val_int_unsigned_typecast(Item *item) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const; + Item **items, uint nitems) + const override; String *Item_func_hybrid_field_type_val_str(Item_func_hybrid_field_type *, - String *) const; + String *) const override; double Item_func_hybrid_field_type_val_real(Item_func_hybrid_field_type *) - const; + const override; longlong Item_func_hybrid_field_type_val_int(Item_func_hybrid_field_type *) - const; + const override; my_decimal *Item_func_hybrid_field_type_val_decimal( Item_func_hybrid_field_type *, - my_decimal *) const; + my_decimal *) const override; void Item_func_hybrid_field_type_get_date(THD *, Item_func_hybrid_field_type *, Temporal::Warn *, MYSQL_TIME *, - date_mode_t fuzzydate) const; - String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; - double Item_func_min_max_val_real(Item_func_min_max *) const; - longlong Item_func_min_max_val_int(Item_func_min_max *) const; + date_mode_t fuzzydate) + const override; + String *Item_func_min_max_val_str(Item_func_min_max *, String *) const override; + double Item_func_min_max_val_real(Item_func_min_max *) const override; + longlong Item_func_min_max_val_int(Item_func_min_max *) const override; my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, - my_decimal *) const; + my_decimal *) const override; bool Item_func_min_max_get_date(THD *thd, Item_func_min_max*, - MYSQL_TIME *, date_mode_t fuzzydate) const; - longlong Item_func_between_val_int(Item_func_between *func) const; - Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) const; - bool set_comparator_func(Arg_comparator *cmp) const; - cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const; - in_vector *make_in_vector(THD *, const Item_func_in *, uint nargs) const; - void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + MYSQL_TIME *, date_mode_t fuzzydate) + const override; + longlong Item_func_between_val_int(Item_func_between *func) const override; + Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) + const override; + bool set_comparator_func(Arg_comparator *cmp) const override; + cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const override; + in_vector *make_in_vector(THD *, const Item_func_in *, uint nargs) + const override; + void Item_param_set_param_func(Item_param *param, uchar **pos, ulong len) + const override; }; @@ -5597,29 +5621,29 @@ class Type_handler_time: public Type_handler_time_common public: static uint hires_bytes(uint dec) { return m_hires_bytes[dec]; } virtual ~Type_handler_time() {} - const Name version() const { return m_version_mariadb53; } - uint32 max_display_length_for_field(const Conv_source &src) const + const Name version() const override { return m_version_mariadb53; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return MIN_TIME_WIDTH; } - uint32 calc_pack_length(uint32 length) const; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_TIME); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5627,29 +5651,29 @@ class Type_handler_time2: public Type_handler_time_common { public: virtual ~Type_handler_time2() {} - const Name version() const { return m_version_mysql56; } - enum_field_types real_field_type() const { return MYSQL_TYPE_TIME2; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + const Name version() const override { return m_version_mysql56; } + enum_field_types real_field_type() const override { return MYSQL_TYPE_TIME2; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_TIME2); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5658,22 +5682,28 @@ class Type_handler_temporal_with_date: public Type_handler_temporal_result public: virtual ~Type_handler_temporal_with_date() {} Item_literal *create_literal_item(THD *thd, const char *str, size_t length, - CHARSET_INFO *cs, bool send_error) const; + CHARSET_INFO *cs, bool send_error) + const override; bool Item_eq_value(THD *thd, const Type_cmp_attributes *attr, - Item *a, Item *b) const; - int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) const; - bool Item_save_in_value(THD *thd, Item *item, st_value *value) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + Item *a, Item *b) const override; + int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) + const override; + bool Item_save_in_value(THD *thd, Item *item, st_value *value) + const override; + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_date(item, protocol, buf); } - void Item_update_null_value(Item *item) const; - int Item_save_in_field(Item *item, Field *field, bool no_conversions) const; - Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) const; - bool set_comparator_func(Arg_comparator *cmp) const; - cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const; - in_vector *make_in_vector(THD *, const Item_func_in *, uint nargs) const; - longlong Item_func_between_val_int(Item_func_between *func) const; + void Item_update_null_value(Item *item) const override; + int Item_save_in_field(Item *item, Field *field, bool no_conversions) + const override; + Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) + const override; + bool set_comparator_func(Arg_comparator *cmp) const override; + cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const override; + in_vector *make_in_vector(THD *, const Item_func_in *, uint nargs) + const override; + longlong Item_func_between_val_int(Item_func_between *func) const override; }; @@ -5682,25 +5712,26 @@ class Type_handler_date_common: public Type_handler_temporal_with_date static const Name m_name_date; public: virtual ~Type_handler_date_common() {} - const Name name() const { return m_name_date; } - const Name &default_value() const; - const Type_handler *type_handler_for_comparison() const; - enum_field_types field_type() const { return MYSQL_TYPE_DATE; } - uint32 max_display_length_for_field(const Conv_source &src) const + const Name name() const override { return m_name_date; } + const Name &default_value() const override; + const Type_handler *type_handler_for_comparison() const override; + enum_field_types field_type() const override { return MYSQL_TYPE_DATE; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return 3; } - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { return DYN_COL_DATE; } - protocol_send_type_t protocol_send_type() const + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_DATE; } - enum_mysql_timestamp_type mysql_timestamp_type() const + enum_mysql_timestamp_type mysql_timestamp_type() const override { return MYSQL_TIMESTAMP_DATE; } - bool cond_notnull_field_isnull_to_field_eq_zero() const + bool cond_notnull_field_isnull_to_field_eq_zero() const override { return true; } @@ -5708,55 +5739,59 @@ public: TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Item_literal *create_literal_item(THD *thd, const char *str, size_t length, - CHARSET_INFO *cs, bool send_error) const; + CHARSET_INFO *cs, bool send_error) + const override; Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; + const Type_cast_attributes &attr) + const override; bool validate_implicit_default_value(THD *thd, - const Column_definition &def) const; - bool Column_definition_fix_attributes(Column_definition *c) const; - uint Item_decimal_precision(const Item *item) const; - String *print_item_value(THD *thd, Item *item, String *str) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; - String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; - double Item_func_min_max_val_real(Item_func_min_max *) const; - longlong Item_func_min_max_val_int(Item_func_min_max *) const; + const Column_definition &def) + const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; + uint Item_decimal_precision(const Item *item) const override; + String *print_item_value(THD *thd, Item *item, String *str) const override; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; + String *Item_func_min_max_val_str(Item_func_min_max *, String *) const override; + double Item_func_min_max_val_real(Item_func_min_max *) const override; + longlong Item_func_min_max_val_int(Item_func_min_max *) const override; my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, - my_decimal *) const; + my_decimal *) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const; + Item **items, uint nitems) + const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; }; class Type_handler_date: public Type_handler_date_common { public: virtual ~Type_handler_date() {} - uint32 calc_pack_length(uint32 length) const { return 4; } + uint32 calc_pack_length(uint32 length) const override { return 4; } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_DATE); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5764,27 +5799,30 @@ class Type_handler_newdate: public Type_handler_date_common { public: virtual ~Type_handler_newdate() {} - enum_field_types real_field_type() const { return MYSQL_TYPE_NEWDATE; } - uint32 calc_pack_length(uint32 length) const { return 3; } + enum_field_types real_field_type() const override + { + return MYSQL_TYPE_NEWDATE; + } + uint32 calc_pack_length(uint32 length) const override { return 3; } Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_NEWDATE); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5793,23 +5831,27 @@ class Type_handler_datetime_common: public Type_handler_temporal_with_date static const Name m_name_datetime; public: virtual ~Type_handler_datetime_common() {} - const Name name() const { return m_name_datetime; } - const Name &default_value() const; - const Type_handler *type_handler_for_comparison() const; - enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; } - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + const Name name() const override { return m_name_datetime; } + const Name &default_value() const override; + const Type_handler *type_handler_for_comparison() const override; + enum_field_types field_type() const override + { + return MYSQL_TYPE_DATETIME; + } + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { return DYN_COL_DATETIME; } - protocol_send_type_t protocol_send_type() const + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_DATETIME; } - enum_mysql_timestamp_type mysql_timestamp_type() const + enum_mysql_timestamp_type mysql_timestamp_type() const override { return MYSQL_TIMESTAMP_DATETIME; } - bool cond_notnull_field_isnull_to_field_eq_zero() const + bool cond_notnull_field_isnull_to_field_eq_zero() const override { return true; } @@ -5817,40 +5859,41 @@ public: TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; - bool validate_implicit_default_value(THD *thd, - const Column_definition &def) const; - void Column_definition_implicit_upgrade(Column_definition *c) const; - bool Column_definition_fix_attributes(Column_definition *c) const; - uint Item_decimal_scale(const Item *item) const + const Type_cast_attributes &attr) const override; + bool validate_implicit_default_value(THD *thd, const Column_definition &def) + const override; + void Column_definition_implicit_upgrade(Column_definition *c) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; + uint Item_decimal_scale(const Item *item) const override { return Item_decimal_scale_with_seconds(item); } - uint Item_decimal_precision(const Item *item) const; - uint Item_divisor_precision_increment(const Item *item) const + uint Item_decimal_precision(const Item *item) const override; + uint Item_divisor_precision_increment(const Item *item) const override { return Item_divisor_precision_increment_with_seconds(item); } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_datetime(item, protocol, buf); } - String *print_item_value(THD *thd, Item *item, String *str) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; - String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; - double Item_func_min_max_val_real(Item_func_min_max *) const; - longlong Item_func_min_max_val_int(Item_func_min_max *) const; - my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, - my_decimal *) const; + String *print_item_value(THD *thd, Item *item, String *str) const override; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; + String *Item_func_min_max_val_str(Item_func_min_max *, String *) const override; + double Item_func_min_max_val_real(Item_func_min_max *) const override; + longlong Item_func_min_max_val_int(Item_func_min_max *) const override; + my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, my_decimal *) + const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const; - void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + Item **items, uint nitems) + const override; + void Item_param_set_param_func(Item_param *param, uchar **pos, ulong len) + const override; }; @@ -5861,29 +5904,29 @@ class Type_handler_datetime: public Type_handler_datetime_common public: static uint hires_bytes(uint dec) { return m_hires_bytes[dec]; } virtual ~Type_handler_datetime() {} - const Name version() const { return m_version_mariadb53; } - uint32 max_display_length_for_field(const Conv_source &src) const + const Name version() const override { return m_version_mariadb53; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return MAX_DATETIME_WIDTH; } - uint32 calc_pack_length(uint32 length) const; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_DATETIME); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5891,29 +5934,32 @@ class Type_handler_datetime2: public Type_handler_datetime_common { public: virtual ~Type_handler_datetime2() {} - const Name version() const { return m_version_mysql56; } - enum_field_types real_field_type() const { return MYSQL_TYPE_DATETIME2; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + const Name version() const override { return m_version_mysql56; } + enum_field_types real_field_type() const override + { + return MYSQL_TYPE_DATETIME2; + } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_DATETIME2); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -5924,75 +5970,83 @@ protected: bool TIME_to_native(THD *, const MYSQL_TIME *from, Native *to, uint dec) const; public: virtual ~Type_handler_timestamp_common() {} - const Name name() const { return m_name_timestamp; } - const Name &default_value() const; - const Type_handler *type_handler_for_comparison() const; - const Type_handler *type_handler_for_native_format() const; - enum_field_types field_type() const { return MYSQL_TYPE_TIMESTAMP; } - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + const Name name() const override { return m_name_timestamp; } + const Name &default_value() const override; + const Type_handler *type_handler_for_comparison() const override; + const Type_handler *type_handler_for_native_format() const override; + enum_field_types field_type() const override { return MYSQL_TYPE_TIMESTAMP; } + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { return DYN_COL_DATETIME; } - protocol_send_type_t protocol_send_type() const + protocol_send_type_t protocol_send_type() const override { return PROTOCOL_SEND_DATETIME; } - enum_mysql_timestamp_type mysql_timestamp_type() const + enum_mysql_timestamp_type mysql_timestamp_type() const override { return MYSQL_TIMESTAMP_DATETIME; } - bool is_timestamp_type() const + bool is_timestamp_type() const override { return true; } - void Column_definition_implicit_upgrade(Column_definition *c) const; + void Column_definition_implicit_upgrade(Column_definition *c) const override; bool Item_eq_value(THD *thd, const Type_cmp_attributes *attr, - Item *a, Item *b) const; - bool Item_val_native_with_conversion(THD *thd, Item *, Native *to) const; - bool Item_val_native_with_conversion_result(THD *thd, Item *, Native *to) const; - bool Item_param_val_native(THD *thd, Item_param *item, Native *to) const; - int cmp_native(const Native &a, const Native &b) const; - longlong Item_func_between_val_int(Item_func_between *func) const; - cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const; - in_vector *make_in_vector(THD *thd, const Item_func_in *f, uint nargs) const; + Item *a, Item *b) const override; + bool Item_val_native_with_conversion(THD *thd, Item *, Native *to) + const override; + bool Item_val_native_with_conversion_result(THD *thd, Item *, Native *to) + const override; + bool Item_param_val_native(THD *thd, Item_param *item, Native *to) + const override; + int cmp_native(const Native &a, const Native &b) const override; + longlong Item_func_between_val_int(Item_func_between *func) const override; + cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const override; + in_vector *make_in_vector(THD *thd, const Item_func_in *f, uint nargs) + const override; void make_sort_key(uchar *to, Item *item, const SORT_FIELD_ATTR *sort_field, - Sort_param *param) const; + Sort_param *param) const override; void sortlength(THD *thd, const Type_std_attributes *item, - SORT_FIELD_ATTR *attr) const; - bool Column_definition_fix_attributes(Column_definition *c) const; - uint Item_decimal_scale(const Item *item) const + SORT_FIELD_ATTR *attr) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; + uint Item_decimal_scale(const Item *item) const override { return Item_decimal_scale_with_seconds(item); } - uint Item_decimal_precision(const Item *item) const; - uint Item_divisor_precision_increment(const Item *item) const + uint Item_decimal_precision(const Item *item) const override; + uint Item_divisor_precision_increment(const Item *item) const override { return Item_divisor_precision_increment_with_seconds(item); } - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override { return Item_send_timestamp(item, protocol, buf); } - int Item_save_in_field(Item *item, Field *field, bool no_conversions) const; - String *print_item_value(THD *thd, Item *item, String *str) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; - Item_copy *create_item_copy(THD *thd, Item *item) const; - String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; - double Item_func_min_max_val_real(Item_func_min_max *) const; - longlong Item_func_min_max_val_int(Item_func_min_max *) const; + int Item_save_in_field(Item *item, Field *field, bool no_conversions) + const override; + String *print_item_value(THD *thd, Item *item, String *str) const override; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; + Item_copy *create_item_copy(THD *thd, Item *item) const override; + String *Item_func_min_max_val_str(Item_func_min_max *, String *) const override; + double Item_func_min_max_val_real(Item_func_min_max *) const override; + longlong Item_func_min_max_val_int(Item_func_min_max *) const override; my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, - my_decimal *) const; - bool set_comparator_func(Arg_comparator *cmp) const; + my_decimal *) const override; + bool set_comparator_func(Arg_comparator *cmp) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const; + Item **items, uint nitems) + const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; + uchar **pos, ulong len) const override; bool Item_func_min_max_get_date(THD *thd, Item_func_min_max*, - MYSQL_TIME *, date_mode_t fuzzydate) const; + MYSQL_TIME *, date_mode_t fuzzydate) + const override; }; @@ -6003,29 +6057,29 @@ class Type_handler_timestamp: public Type_handler_timestamp_common public: static uint sec_part_bytes(uint dec) { return m_sec_part_bytes[dec]; } virtual ~Type_handler_timestamp() {} - const Name version() const { return m_version_mariadb53; } - uint32 max_display_length_for_field(const Conv_source &src) const + const Name version() const override { return m_version_mariadb53; } + uint32 max_display_length_for_field(const Conv_source &src) const override { return MAX_DATETIME_WIDTH; } - uint32 calc_pack_length(uint32 length) const; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_TIMESTAMP); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6033,16 +6087,19 @@ class Type_handler_timestamp2: public Type_handler_timestamp_common { public: virtual ~Type_handler_timestamp2() {} - const Name version() const { return m_version_mysql56; } - enum_field_types real_field_type() const { return MYSQL_TYPE_TIMESTAMP2; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + const Name version() const override { return m_version_mysql56; } + enum_field_types real_field_type() const override + { + return MYSQL_TYPE_TIMESTAMP2; + } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; + const Field *target) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_TIMESTAMP2); } @@ -6050,14 +6107,14 @@ public: const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6066,33 +6123,33 @@ class Type_handler_olddecimal: public Type_handler_decimal_result static const Name m_name_decimal; public: virtual ~Type_handler_olddecimal() {} - const Name name() const { return m_name_decimal; } - enum_field_types field_type() const { return MYSQL_TYPE_DECIMAL; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const { return length; } - const Type_handler *type_handler_for_tmp_table(const Item *item) const; - const Type_handler *type_handler_for_union(const Item *item) const; - void show_binlog_type(const Conv_source &src, String *str) const; + const Name name() const override { return m_name_decimal; } + enum_field_types field_type() const override { return MYSQL_TYPE_DECIMAL; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override { return length; } + const Type_handler *type_handler_for_tmp_table(const Item *item) const override; + const Type_handler *type_handler_for_union(const Item *item) const override; + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_DECIMAL); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6101,40 +6158,40 @@ class Type_handler_newdecimal: public Type_handler_decimal_result static const Name m_name_decimal; public: virtual ~Type_handler_newdecimal() {} - const Name name() const { return m_name_decimal; } - enum_field_types field_type() const { return MYSQL_TYPE_NEWDECIMAL; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; - void show_binlog_type(const Conv_source &src, String *str) const; + const Name name() const override { return m_name_decimal; } + enum_field_types field_type() const override { return MYSQL_TYPE_NEWDECIMAL; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; bool Column_definition_redefine_stage1(Column_definition *def, const Column_definition *dup, const handler *file, const Schema_specification_st *schema) - const; + const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6143,59 +6200,63 @@ class Type_handler_null: public Type_handler_general_purpose_string static const Name m_name_null; public: virtual ~Type_handler_null() {} - const Name name() const { return m_name_null; } - enum_field_types field_type() const { return MYSQL_TYPE_NULL; } - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + const Name name() const override { return m_name_null; } + enum_field_types field_type() const override { return MYSQL_TYPE_NULL; } + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { return DYN_COL_NULL; } - const Type_handler *type_handler_for_comparison() const; - const Type_handler *type_handler_for_tmp_table(const Item *item) const; - const Type_handler *type_handler_for_union(const Item *) const; - uint32 max_display_length(const Item *item) const { return 0; } - uint32 max_display_length_for_field(const Conv_source &src) const { return 0;} - uint32 calc_pack_length(uint32 length) const { return 0; } + const Type_handler *type_handler_for_comparison() const override; + const Type_handler *type_handler_for_tmp_table(const Item *item) const override; + const Type_handler *type_handler_for_union(const Item *) const override; + uint32 max_display_length(const Item *item) const override { return 0; } + uint32 max_display_length_for_field(const Conv_source &src) const override + { + return 0; + } + uint32 calc_pack_length(uint32 length) const override { return 0; } bool Item_const_eq(const Item_const *a, const Item_const *b, - bool binary_cmp) const; - bool Item_save_in_value(THD *thd, Item *item, st_value *value) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const; + bool binary_cmp) const override; + bool Item_save_in_value(THD *thd, Item *item, st_value *value) const override; + bool Item_send(Item *item, Protocol *protocol, st_value *buf) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; bool Column_definition_redefine_stage1(Column_definition *def, const Column_definition *dup, const handler *file, const Schema_specification_st *schema) - const; + const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy(c, MYSQL_TYPE_NULL); } Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; class Type_handler_longstr: public Type_handler_general_purpose_string { public: - bool type_can_have_key_part() const + bool type_can_have_key_part() const override { return true; } @@ -6207,37 +6268,37 @@ class Type_handler_string: public Type_handler_longstr static const Name m_name_char; public: virtual ~Type_handler_string() {} - const Name name() const { return m_name_char; } - enum_field_types field_type() const { return MYSQL_TYPE_STRING; } - bool is_param_long_data_type() const { return true; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const { return length; } - const Type_handler *type_handler_for_tmp_table(const Item *item) const + const Name name() const override { return m_name_char; } + enum_field_types field_type() const override { return MYSQL_TYPE_STRING; } + bool is_param_long_data_type() const override { return true; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override { return length; } + const Type_handler *type_handler_for_tmp_table(const Item *item) const override { return varstring_type_handler(item); } - void show_binlog_type(const Conv_source &src, String *str) const; + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; bool Key_part_spec_init_ft(Key_part_spec *part, - const Column_definition &def) const; + const Column_definition &def) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6247,26 +6308,26 @@ class Type_handler_var_string: public Type_handler_string static const Name m_name_var_string; public: virtual ~Type_handler_var_string() {} - const Name name() const { return m_name_var_string; } - enum_field_types field_type() const { return MYSQL_TYPE_VAR_STRING; } - enum_field_types real_field_type() const { return MYSQL_TYPE_STRING; } - enum_field_types traditional_merge_field_type() const + const Name name() const override { return m_name_var_string; } + enum_field_types field_type() const override { return MYSQL_TYPE_VAR_STRING; } + enum_field_types real_field_type() const override { return MYSQL_TYPE_STRING; } + enum_field_types traditional_merge_field_type() const override { return MYSQL_TYPE_VARCHAR; } - const Type_handler *type_handler_for_tmp_table(const Item *item) const + const Type_handler *type_handler_for_tmp_table(const Item *item) const override { return varstring_type_handler(item); } - uint32 max_display_length_for_field(const Conv_source &src) const; - void show_binlog_type(const Conv_source &src, String *str) const; - void Column_definition_implicit_upgrade(Column_definition *c) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + uint32 max_display_length_for_field(const Conv_source &src) const override; + void show_binlog_type(const Conv_source &src, String *str) const override; + void Column_definition_implicit_upgrade(Column_definition *c) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const + ulonglong table_flags) const override { return Column_definition_prepare_stage2_legacy_num(c, MYSQL_TYPE_STRING); } - const Type_handler *type_handler_for_union(const Item *item) const + const Type_handler *type_handler_for_union(const Item *item) const override { return varstring_type_handler(item); } @@ -6278,54 +6339,54 @@ class Type_handler_varchar: public Type_handler_longstr static const Name m_name_varchar; public: virtual ~Type_handler_varchar() {} - const Name name() const { return m_name_varchar; } - enum_field_types field_type() const { return MYSQL_TYPE_VARCHAR; } - enum_field_types type_code_for_protocol() const + const Name name() const override { return m_name_varchar; } + enum_field_types field_type() const override { return MYSQL_TYPE_VARCHAR; } + enum_field_types type_code_for_protocol() const override { return MYSQL_TYPE_VAR_STRING; // Keep things compatible for old clients } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override { return (length + (length < 256 ? 1: 2)); } - const Type_handler *type_handler_for_tmp_table(const Item *item) const + const Type_handler *type_handler_for_tmp_table(const Item *item) const override { return varstring_type_handler(item); } - const Type_handler *type_handler_for_union(const Item *item) const + const Type_handler *type_handler_for_union(const Item *item) const override { return varstring_type_handler(item); } - bool is_param_long_data_type() const { return true; } - void show_binlog_type(const Conv_source &src, String *str) const; + bool is_param_long_data_type() const override { return true; } + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; bool Key_part_spec_init_ft(Key_part_spec *part, - const Column_definition &def) const; + const Column_definition &def) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; - bool adjust_spparam_type(Spvar_definition *def, Item *from) const; + uint32 flags) const override; + bool adjust_spparam_type(Spvar_definition *def, Item *from) const override; }; @@ -6334,25 +6395,26 @@ class Type_handler_hex_hybrid: public Type_handler_varchar static const Name m_name_hex_hybrid; public: virtual ~Type_handler_hex_hybrid() {} - const Name name() const { return m_name_hex_hybrid; } - const Type_handler *cast_to_int_type_handler() const; - const Type_handler *type_handler_for_system_time() const; + const Name name() const override { return m_name_hex_hybrid; } + const Type_handler *cast_to_int_type_handler() const override; + const Type_handler *type_handler_for_system_time() const override; }; class Type_handler_varchar_compressed: public Type_handler_varchar { public: - enum_field_types real_field_type() const + enum_field_types real_field_type() const override { return MYSQL_TYPE_VARCHAR_COMPRESSED; } - uint32 max_display_length_for_field(const Conv_source &src) const; - void show_binlog_type(const Conv_source &src, String *str) const; + uint32 max_display_length_for_field(const Conv_source &src) const override; + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + const Field *target) const override; + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { DBUG_ASSERT(0); return DYN_COL_STRING; @@ -6434,17 +6496,17 @@ class Type_handler_tiny_blob: public Type_handler_blob_common static const Name m_name_tinyblob; public: virtual ~Type_handler_tiny_blob() {} - uint length_bytes() const { return 1; } - const Name name() const { return m_name_tinyblob; } - enum_field_types field_type() const { return MYSQL_TYPE_TINY_BLOB; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + uint length_bytes() const override { return 1; } + const Name name() const override { return m_name_tinyblob; } + enum_field_types field_type() const override { return MYSQL_TYPE_TINY_BLOB; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; - uint max_octet_length() const { return UINT_MAX8; } + TABLE *table) const override; + uint max_octet_length() const override { return UINT_MAX8; } }; @@ -6453,17 +6515,17 @@ class Type_handler_medium_blob: public Type_handler_blob_common static const Name m_name_mediumblob; public: virtual ~Type_handler_medium_blob() {} - uint length_bytes() const { return 3; } - const Name name() const { return m_name_mediumblob; } - enum_field_types field_type() const { return MYSQL_TYPE_MEDIUM_BLOB; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + uint length_bytes() const override { return 3; } + const Name name() const override { return m_name_mediumblob; } + enum_field_types field_type() const override { return MYSQL_TYPE_MEDIUM_BLOB; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; - uint max_octet_length() const { return UINT_MAX24; } + TABLE *table) const override; + uint max_octet_length() const override { return UINT_MAX24; } }; @@ -6472,19 +6534,19 @@ class Type_handler_long_blob: public Type_handler_blob_common static const Name m_name_longblob; public: virtual ~Type_handler_long_blob() {} - uint length_bytes() const { return 4; } - const Name name() const { return m_name_longblob; } - enum_field_types field_type() const { return MYSQL_TYPE_LONG_BLOB; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + uint length_bytes() const override { return 4; } + const Name name() const override { return m_name_longblob; } + enum_field_types field_type() const override { return MYSQL_TYPE_LONG_BLOB; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; + const Type_cast_attributes &attr) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; - uint max_octet_length() const { return UINT_MAX32; } + TABLE *table) const override; + uint max_octet_length() const override { return UINT_MAX32; } }; @@ -6493,33 +6555,34 @@ class Type_handler_blob: public Type_handler_blob_common static const Name m_name_blob; public: virtual ~Type_handler_blob() {} - uint length_bytes() const { return 2; } - const Name name() const { return m_name_blob; } - enum_field_types field_type() const { return MYSQL_TYPE_BLOB; } - uint32 max_display_length_for_field(const Conv_source &src) const; - uint32 calc_pack_length(uint32 length) const; + uint length_bytes() const override { return 2; } + const Name name() const override { return m_name_blob; } + enum_field_types field_type() const override { return MYSQL_TYPE_BLOB; } + uint32 max_display_length_for_field(const Conv_source &src) const override; + uint32 calc_pack_length(uint32 length) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; - uint max_octet_length() const { return UINT_MAX16; } + TABLE *table) const override; + uint max_octet_length() const override { return UINT_MAX16; } }; class Type_handler_blob_compressed: public Type_handler_blob { public: - enum_field_types real_field_type() const + enum_field_types real_field_type() const override { return MYSQL_TYPE_BLOB_COMPRESSED; } - uint32 max_display_length_for_field(const Conv_source &src) const; - void show_binlog_type(const Conv_source &src, String *str) const; + uint32 max_display_length_for_field(const Conv_source &src) const override; + void show_binlog_type(const Conv_source &src, String *str) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const + const Field *target) const override; + enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) + const override { DBUG_ASSERT(0); return DYN_COL_STRING; @@ -6531,31 +6594,35 @@ class Type_handler_typelib: public Type_handler_general_purpose_string { public: virtual ~Type_handler_typelib() { } - enum_field_types field_type() const { return MYSQL_TYPE_STRING; } - const Type_handler *type_handler_for_item_field() const; - const Type_handler *cast_to_int_type_handler() const; - uint32 max_display_length_for_field(const Conv_source &src) const; + enum_field_types field_type() const override { return MYSQL_TYPE_STRING; } + const Type_handler *type_handler_for_item_field() const override; + const Type_handler *cast_to_int_type_handler() const override; + uint32 max_display_length_for_field(const Conv_source &src) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const; + Item **items, uint nitems) + const override; void Column_definition_reuse_fix_attributes(THD *thd, Column_definition *c, - const Field *field) const; + const Field *field) + const override; bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) + const override; bool Column_definition_redefine_stage1(Column_definition *def, const Column_definition *dup, const handler *file, const Schema_specification_st *schema) - const; + const override; void Item_param_set_param_func(Item_param *param, - uchar **pos, ulong len) const; - bool Vers_history_point_resolve_unit(THD *thd, Vers_history_point *p) const; + uchar **pos, ulong len) const override; + bool Vers_history_point_resolve_unit(THD *thd, Vers_history_point *p) + const override; }; @@ -6564,37 +6631,38 @@ class Type_handler_enum: public Type_handler_typelib static const Name m_name_enum; public: virtual ~Type_handler_enum() {} - const Name name() const { return m_name_enum; } - enum_field_types real_field_type() const { return MYSQL_TYPE_ENUM; } - enum_field_types traditional_merge_field_type() const + const Name name() const override { return m_name_enum; } + enum_field_types real_field_type() const override { return MYSQL_TYPE_ENUM; } + enum_field_types traditional_merge_field_type() const override { return MYSQL_TYPE_ENUM; } - uint32 calc_pack_length(uint32 length) const; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) + const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; Field *make_schema_field(MEM_ROOT *root, TABLE *table, const Record_addr &addr, const ST_FIELD_INFO &def, - bool show_field) const; + bool show_field) const override; }; @@ -6603,32 +6671,33 @@ class Type_handler_set: public Type_handler_typelib static const Name m_name_set; public: virtual ~Type_handler_set() {} - const Name name() const { return m_name_set; } - enum_field_types real_field_type() const { return MYSQL_TYPE_SET; } - enum_field_types traditional_merge_field_type() const + const Name name() const override { return m_name_set; } + enum_field_types real_field_type() const override { return MYSQL_TYPE_SET; } + enum_field_types traditional_merge_field_type() const override { return MYSQL_TYPE_SET; } - uint32 calc_pack_length(uint32 length) const; + uint32 calc_pack_length(uint32 length) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) + const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6637,7 +6706,7 @@ class Type_handler_interval_DDhhmmssff: public Type_handler_long_blob { public: Item *create_typecast_item(THD *thd, Item *item, - const Type_cast_attributes &attr) const; + const Type_cast_attributes &attr) const override; }; diff --git a/sql/sql_type_geom.h b/sql/sql_type_geom.h index 4d6352e4461..699b5280611 100644 --- a/sql/sql_type_geom.h +++ b/sql/sql_type_geom.h @@ -346,9 +346,12 @@ public: { srid= field_srid; } enum_conv_type rpl_conv_type_from(const Conv_source &source, const Relay_log_info *rli, - const Conv_param ¶m) const; - enum ha_base_keytype key_type() const { return HA_KEYTYPE_VARBINARY2; } - const Type_handler *type_handler() const + const Conv_param ¶m) const override; + enum ha_base_keytype key_type() const override + { + return HA_KEYTYPE_VARBINARY2; + } + const Type_handler *type_handler() const override { return m_type_handler; } @@ -360,28 +363,28 @@ public: { m_type_handler= th; } - enum_field_types type() const + enum_field_types type() const override { return MYSQL_TYPE_GEOMETRY; } - enum_field_types real_type() const + enum_field_types real_type() const override { return MYSQL_TYPE_GEOMETRY; } Information_schema_character_attributes - information_schema_character_attributes() const + information_schema_character_attributes() const override { return Information_schema_character_attributes(); } - void make_send_field(Send_field *to) + void make_send_field(Send_field *to) override { Field_longstr::make_send_field(to); } bool can_optimize_range(const Item_bool_func *cond, const Item *item, - bool is_eq_func) const; - void sql_type(String &str) const; - Copy_func *get_copy_func(const Field *from) const + bool is_eq_func) const override; + void sql_type(String &str) const override; + Copy_func *get_copy_func(const Field *from) const override { const Type_handler_geometry *fth= dynamic_cast(from->type_handler()); @@ -389,7 +392,7 @@ public: return get_identical_copy_func(); return do_conv_blob; } - bool memcpy_field_possible(const Field *from) const + bool memcpy_field_possible(const Field *from) const override { const Type_handler_geometry *fth= dynamic_cast(from->type_handler()); @@ -397,17 +400,18 @@ public: m_type_handler->is_binary_compatible_geom_super_type_for(fth) && !table->copy_blobs; } - bool is_equal(const Column_definition &new_field) const; - bool can_be_converted_by_engine(const Column_definition &new_type) const + bool is_equal(const Column_definition &new_field) const override; + bool can_be_converted_by_engine(const Column_definition &new_type) + const override { return false; // Override the Field_blob behavior } - int store(const char *to, size_t length, CHARSET_INFO *charset); - int store(double nr); - int store(longlong nr, bool unsigned_val); - int store_decimal(const my_decimal *); - uint size_of() const { return sizeof(*this); } + int store(const char *to, size_t length, CHARSET_INFO *charset) override; + int store(double nr) override; + int store(longlong nr, bool unsigned_val) override; + int store_decimal(const my_decimal *) override; + uint size_of() const override{ return sizeof(*this); } /** Key length is provided only to support hash joins. (compared byte for byte) Ex: SELECT .. FROM t1,t2 WHERE t1.field_geom1=t2.field_geom2. @@ -415,19 +419,19 @@ public: The comparison is not very relevant, as identical geometry might be represented differently, but we need to support it either way. */ - uint32 key_length() const { return packlength; } - uint get_key_image(uchar *buff,uint length, imagetype type_arg); + uint32 key_length() const override{ return packlength; } + uint get_key_image(uchar *buff,uint length, imagetype type_arg) override; /** Non-nullable GEOMETRY types cannot have defaults, but the underlying blob must still be reset. */ - int reset(void) { return Field_blob::reset() || !maybe_null(); } - bool load_data_set_null(THD *thd); - bool load_data_set_no_data(THD *thd, bool fixed_format); + int reset(void) override{ return Field_blob::reset() || !maybe_null(); } + bool load_data_set_null(THD *thd) override; + bool load_data_set_no_data(THD *thd, bool fixed_format) override; uint get_srid() const { return srid; } - void print_key_value(String *out, uint32 length) + void print_key_value(String *out, uint32 length) override { out->append(STRING_WITH_LEN("unprintable_geometry_value")); }