1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-19908: Add override keywords

Fix the build on clang. GCC only checks that a member function with
the C++11 override keyword is actually overriding a virtual member
function in a base class. In clang, you will get a warning for
overridden member functions that lack the keyword, if any overridden
member function of the class is declared with the keyword.
This commit is contained in:
Marko Mäkelä
2019-07-03 09:04:29 +03:00
parent 7b5bfa53aa
commit d8b8f55af3

View File

@ -4749,135 +4749,150 @@ class Type_handler_string_result: public Type_handler
{ {
uint Item_temporal_precision(THD *thd, Item *item, bool is_time) const; uint Item_temporal_precision(THD *thd, Item *item, bool is_time) const;
public: public:
const Name &default_value() const; const Name &default_value() const override;
protocol_send_type_t protocol_send_type() const protocol_send_type_t protocol_send_type() const override
{ {
return PROTOCOL_SEND_STRING; return PROTOCOL_SEND_STRING;
} }
Item_result result_type() const { return STRING_RESULT; } Item_result result_type() const override { return STRING_RESULT; }
Item_result cmp_type() const { return STRING_RESULT; } Item_result cmp_type() const override { return STRING_RESULT; }
enum_dynamic_column_type dyncol_type(const Type_all_attributes *attr) const enum_dynamic_column_type dyncol_type(const Type_all_attributes *) const
override
{ {
return DYN_COL_STRING; return DYN_COL_STRING;
} }
CHARSET_INFO *charset_for_protocol(const Item *item) const; CHARSET_INFO *charset_for_protocol(const Item *item) const override;
virtual ~Type_handler_string_result() {} virtual ~Type_handler_string_result() {}
const Type_handler *type_handler_for_comparison() const; const Type_handler *type_handler_for_comparison() const override;
int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) const; int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) const
override;
const Type_handler * const Type_handler *
type_handler_adjusted_to_max_octet_length(uint max_octet_length, type_handler_adjusted_to_max_octet_length(uint max_octet_length,
CHARSET_INFO *cs) const; CHARSET_INFO *cs) const override;
void make_sort_key(uchar *to, Item *item, const SORT_FIELD_ATTR *sort_field, 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, void sortlength(THD *thd,
const Type_std_attributes *item, const Type_std_attributes *item,
SORT_FIELD_ATTR *attr) const; SORT_FIELD_ATTR *attr) const override;
bool union_element_finalize(const Item * item) const; bool union_element_finalize(const Item * item) const override;
bool Column_definition_prepare_stage1(THD *thd, bool Column_definition_prepare_stage1(THD *thd,
MEM_ROOT *mem_root, MEM_ROOT *mem_root,
Column_definition *c, Column_definition *c,
handler *file, handler *file,
ulonglong table_flags) const; ulonglong table_flags) const override;
bool Column_definition_redefine_stage1(Column_definition *def, bool Column_definition_redefine_stage1(Column_definition *def,
const Column_definition *dup, const Column_definition *dup,
const handler *file, const handler *file,
const Schema_specification_st *schema) const Schema_specification_st *schema)
const; const override;
uint32 max_display_length(const Item *item) const; uint32 max_display_length(const Item *item) const override;
bool Item_const_eq(const Item_const *a, const Item_const *b, bool Item_const_eq(const Item_const *a, const Item_const *b,
bool binary_cmp) const; bool binary_cmp) const override;
bool Item_eq_value(THD *thd, const Type_cmp_attributes *attr, bool Item_eq_value(THD *thd, const Type_cmp_attributes *attr,
Item *a, Item *b) const; Item *a, Item *b) const override;
uint Item_time_precision(THD *thd, Item *item) const uint Item_time_precision(THD *thd, Item *item) const override
{ {
return Item_temporal_precision(thd, item, true); return Item_temporal_precision(thd, item, true);
} }
uint Item_datetime_precision(THD *thd, Item *item) const uint Item_datetime_precision(THD *thd, Item *item) const override
{ {
return Item_temporal_precision(thd, item, false); return Item_temporal_precision(thd, item, false);
} }
uint Item_decimal_precision(const Item *item) const; uint Item_decimal_precision(const Item *item) const override;
void Item_update_null_value(Item *item) const; void Item_update_null_value(Item *item) const override;
bool Item_save_in_value(THD *thd, Item *item, st_value *value) const; bool Item_save_in_value(THD *thd, Item *item, st_value *value) const override;
void Item_param_setup_conversion(THD *thd, Item_param *) const; void Item_param_setup_conversion(THD *thd, Item_param *) const override;
void Item_param_set_param_func(Item_param *param, void Item_param_set_param_func(Item_param *param,
uchar **pos, ulong len) const; uchar **pos, ulong len) const override;
bool Item_param_set_from_value(THD *thd, bool Item_param_set_from_value(THD *thd,
Item_param *param, Item_param *param,
const Type_all_attributes *attr, const Type_all_attributes *attr,
const st_value *value) const; const st_value *value) const override;
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_str(item, protocol, buf); return Item_send_str(item, protocol, buf);
} }
int Item_save_in_field(Item *item, Field *field, bool no_conversions) 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 override;
String *print_item_value(THD *thd, Item *item, String *str) const override
{ {
return print_item_value_csstr(thd, item, str); return print_item_value_csstr(thd, item, str);
} }
bool can_change_cond_ref_to_const(Item_bool_func2 *target, bool can_change_cond_ref_to_const(Item_bool_func2 *target,
Item *target_expr, Item *target_value, Item *target_expr, Item *target_value,
Item_bool_func2 *source, Item_bool_func2 *source,
Item *source_expr, Item *source_const) const; Item *source_expr, Item *source_const) const
override;
bool subquery_type_allows_materialization(const Item *inner, bool subquery_type_allows_materialization(const Item *inner,
const Item *outer) const; const Item *outer) const override;
Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) const; Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) const
Item_cache *Item_get_cache(THD *thd, const Item *item) const; override;
bool set_comparator_func(Arg_comparator *cmp) const; Item_cache *Item_get_cache(THD *thd, const Item *item) const override;
bool set_comparator_func(Arg_comparator *cmp) const override;
bool Item_hybrid_func_fix_attributes(THD *thd, bool Item_hybrid_func_fix_attributes(THD *thd,
const char *name, const char *name,
Type_handler_hybrid_field_type *, Type_handler_hybrid_field_type *,
Type_all_attributes *atrr, Type_all_attributes *atrr,
Item **items, uint nitems) const; Item **items, uint nitems) const
bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *func) const; override;
bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const; bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *func) const override;
bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const; bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const override;
bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const; bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const override;
bool Item_func_signed_fix_length_and_dec(Item_func_signed *item) const; bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const override;
bool Item_func_unsigned_fix_length_and_dec(Item_func_unsigned *item) const; bool Item_func_signed_fix_length_and_dec(Item_func_signed *item) const
bool Item_val_bool(Item *item) const; override;
bool Item_func_unsigned_fix_length_and_dec(Item_func_unsigned *item) const
override;
bool Item_val_bool(Item *item) const override;
void Item_get_date(THD *thd, Item *item, Temporal::Warn *warn, 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;
longlong Item_val_int_signed_typecast(Item *item) const; longlong Item_val_int_signed_typecast(Item *item) const override;
longlong Item_val_int_unsigned_typecast(Item *item) const; longlong Item_val_int_unsigned_typecast(Item *item) const override;
String *Item_func_hex_val_str_ascii(Item_func_hex *item, String *str) const; String *Item_func_hex_val_str_ascii(Item_func_hex *item, String *str) const
override;
String *Item_func_hybrid_field_type_val_str(Item_func_hybrid_field_type *, 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 *) 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 *) 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( my_decimal *Item_func_hybrid_field_type_val_decimal(
Item_func_hybrid_field_type *, Item_func_hybrid_field_type *,
my_decimal *) const; my_decimal *) const override;
void Item_func_hybrid_field_type_get_date(THD *, void Item_func_hybrid_field_type_get_date(THD *,
Item_func_hybrid_field_type *, Item_func_hybrid_field_type *,
Temporal::Warn *, Temporal::Warn *,
MYSQL_TIME *, MYSQL_TIME *,
date_mode_t fuzzydate) const; date_mode_t fuzzydate)
String *Item_func_min_max_val_str(Item_func_min_max *, String *) const; const override;
double Item_func_min_max_val_real(Item_func_min_max *) const; String *Item_func_min_max_val_str(Item_func_min_max *, String *) const
longlong Item_func_min_max_val_int(Item_func_min_max *) 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 *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*, 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
bool Item_func_between_fix_length_and_dec(Item_func_between *func) const; override;
longlong Item_func_between_val_int(Item_func_between *func) const; bool Item_func_between_fix_length_and_dec(Item_func_between *func) const
bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const; override;
cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const; longlong Item_func_between_val_int(Item_func_between *func) const override;
in_vector *make_in_vector(THD *, const Item_func_in *, uint nargs) const; bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const
bool Item_func_in_fix_comparator_compatible_types(THD *thd, override;
Item_func_in *) const; cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const override;
bool Item_func_round_fix_length_and_dec(Item_func_round *) const; in_vector *make_in_vector(THD *, const Item_func_in *, uint nargs) const
bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const; override;
bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const; bool Item_func_in_fix_comparator_compatible_types(THD *thd, Item_func_in *)
bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const; const override;
bool Item_func_plus_fix_length_and_dec(Item_func_plus *) const; bool Item_func_round_fix_length_and_dec(Item_func_round *) const override;
bool Item_func_minus_fix_length_and_dec(Item_func_minus *) const; bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const override;
bool Item_func_mul_fix_length_and_dec(Item_func_mul *) const; bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const override;
bool Item_func_div_fix_length_and_dec(Item_func_div *) const; bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const override;
bool Item_func_mod_fix_length_and_dec(Item_func_mod *) const; bool Item_func_plus_fix_length_and_dec(Item_func_plus *) const override;
bool Item_func_minus_fix_length_and_dec(Item_func_minus *) const override;
bool Item_func_mul_fix_length_and_dec(Item_func_mul *) const override;
bool Item_func_div_fix_length_and_dec(Item_func_div *) const override;
bool Item_func_mod_fix_length_and_dec(Item_func_mod *) const override;
}; };
@ -6233,30 +6248,32 @@ public:
virtual ~Type_handler_blob_common() { } virtual ~Type_handler_blob_common() { }
virtual uint length_bytes() const= 0; virtual uint length_bytes() const= 0;
Field *make_conversion_table_field(TABLE *, uint metadata, Field *make_conversion_table_field(TABLE *, uint metadata,
const Field *target) const; const Field *target) const override;
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 blob_type_handler(item); return blob_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 blob_type_handler(item); return blob_type_handler(item);
} }
bool subquery_type_allows_materialization(const Item *inner, bool subquery_type_allows_materialization(const Item *inner,
const Item *outer) const const Item *outer) const override
{ {
return false; // Materialization does not work with BLOB columns return false; // Materialization does not work with BLOB columns
} }
bool is_param_long_data_type() const { return true; } bool is_param_long_data_type() const override { return true; }
bool Column_definition_fix_attributes(Column_definition *c) const; bool Column_definition_fix_attributes(Column_definition *c) const override;
void Column_definition_reuse_fix_attributes(THD *thd, void Column_definition_reuse_fix_attributes(THD *thd,
Column_definition *c, Column_definition *c,
const Field *field) const; const Field *field) const
override;
bool Column_definition_prepare_stage2(Column_definition *c, bool Column_definition_prepare_stage2(Column_definition *c,
handler *file, handler *file,
ulonglong table_flags) const; ulonglong table_flags) const override;
bool Key_part_spec_init_ft(Key_part_spec *part, bool Key_part_spec_init_ft(Key_part_spec *part,
const Column_definition &def) const; const Column_definition &def) const override;
bool Key_part_spec_init_primary(Key_part_spec *part, bool Key_part_spec_init_primary(Key_part_spec *part,
const Column_definition &def, const Column_definition &def,
const handler *file) const override; const handler *file) const override;
@ -6274,20 +6291,21 @@ public:
const char *name, const char *name,
Type_handler_hybrid_field_type *, Type_handler_hybrid_field_type *,
Type_all_attributes *atrr, Type_all_attributes *atrr,
Item **items, uint nitems) const; Item **items, uint nitems) const
void Item_param_setup_conversion(THD *thd, Item_param *) const; override;
void Item_param_setup_conversion(THD *thd, Item_param *) const override;
Field *make_schema_field(TABLE *table, Field *make_schema_field(TABLE *table,
const Record_addr &addr, const Record_addr &addr,
const ST_FIELD_INFO &def, const ST_FIELD_INFO &def,
bool show_field) const; bool show_field) const override;
Field *make_table_field_from_def(TABLE_SHARE *share, Field *make_table_field_from_def(TABLE_SHARE *share,
MEM_ROOT *mem_root, MEM_ROOT *mem_root,
const LEX_CSTRING *name, const LEX_CSTRING *name,
const Record_addr &addr, const Record_addr &addr,
const Bit_addr &bit, const Bit_addr &bit,
const Column_definition_attributes *attr, const Column_definition_attributes *attr,
uint32 flags) const; uint32 flags) const override;
}; };
@ -6402,13 +6420,13 @@ public:
static const Type_handler_geometry *type_handler_geom_by_type(uint type); static const Type_handler_geometry *type_handler_geom_by_type(uint type);
public: public:
virtual ~Type_handler_geometry() {} virtual ~Type_handler_geometry() {}
const Name name() const { return m_name_geometry; } const Name name() const override { return m_name_geometry; }
enum_field_types field_type() const { return MYSQL_TYPE_GEOMETRY; } enum_field_types field_type() const override { return MYSQL_TYPE_GEOMETRY; }
bool is_param_long_data_type() const { return true; } bool is_param_long_data_type() const override { return true; }
uint32 max_display_length_for_field(const Conv_source &src) const; uint32 max_display_length_for_field(const Conv_source &src) const override;
uint32 calc_pack_length(uint32 length) const; uint32 calc_pack_length(uint32 length) const override;
const Type_collection *type_collection() const override; const Type_collection *type_collection() const override;
const Type_handler *type_handler_for_comparison() const; const Type_handler *type_handler_for_comparison() const override;
virtual geometry_types geometry_type() const { return GEOM_GEOMETRY; } virtual geometry_types geometry_type() const { return GEOM_GEOMETRY; }
const Type_handler *type_handler_frm_unpack(const uchar *buffer) const Type_handler *type_handler_frm_unpack(const uchar *buffer)
const override; const override;
@ -6418,43 +6436,42 @@ public:
return geometry_type() == GEOM_GEOMETRY || return geometry_type() == GEOM_GEOMETRY ||
geometry_type() == th->geometry_type(); geometry_type() == th->geometry_type();
} }
bool type_can_have_key_part() const bool type_can_have_key_part() const override { return true; }
{
return true;
}
bool subquery_type_allows_materialization(const Item *inner, bool subquery_type_allows_materialization(const Item *inner,
const Item *outer) const const Item *outer) const override
{ {
return false; // Materialization does not work with GEOMETRY columns return false; // Materialization does not work with GEOMETRY columns
} }
void Item_param_set_param_func(Item_param *param, void Item_param_set_param_func(Item_param *param,
uchar **pos, ulong len) const; uchar **pos, ulong len) const override;
bool Item_param_set_from_value(THD *thd, bool Item_param_set_from_value(THD *thd,
Item_param *param, Item_param *param,
const Type_all_attributes *attr, const Type_all_attributes *attr,
const st_value *value) const; const st_value *value) const override;
Field *make_conversion_table_field(TABLE *, uint metadata, Field *make_conversion_table_field(TABLE *, uint metadata,
const Field *target) const; const Field *target) const override;
void void
Column_definition_attributes_frm_pack(const Column_definition_attributes *at, Column_definition_attributes_frm_pack(const Column_definition_attributes *at,
uchar *buff) const; uchar *buff) const override;
bool bool
Column_definition_attributes_frm_unpack(Column_definition_attributes *attr, Column_definition_attributes_frm_unpack(Column_definition_attributes *attr,
TABLE_SHARE *share, TABLE_SHARE *share,
const uchar *buffer, const uchar *buffer,
LEX_CUSTRING *gis_options) const; LEX_CUSTRING *gis_options) const
bool Column_definition_fix_attributes(Column_definition *c) const; override;
bool Column_definition_fix_attributes(Column_definition *c) const override;
void Column_definition_reuse_fix_attributes(THD *thd, void Column_definition_reuse_fix_attributes(THD *thd,
Column_definition *c, Column_definition *c,
const Field *field) const; const Field *field) const
override;
bool Column_definition_prepare_stage1(THD *thd, bool Column_definition_prepare_stage1(THD *thd,
MEM_ROOT *mem_root, MEM_ROOT *mem_root,
Column_definition *c, Column_definition *c,
handler *file, handler *file,
ulonglong table_flags) const; ulonglong table_flags) const override;
bool Column_definition_prepare_stage2(Column_definition *c, bool Column_definition_prepare_stage2(Column_definition *c,
handler *file, handler *file,
ulonglong table_flags) const; ulonglong table_flags) const override;
bool Key_part_spec_init_primary(Key_part_spec *part, bool Key_part_spec_init_primary(Key_part_spec *part,
const Column_definition &def, const Column_definition &def,
const handler *file) const override; const handler *file) const override;
@ -6473,7 +6490,7 @@ public:
Field *make_table_field(const LEX_CSTRING *name, Field *make_table_field(const LEX_CSTRING *name,
const Record_addr &addr, const Record_addr &addr,
const Type_all_attributes &attr, const Type_all_attributes &attr,
TABLE *table) const; TABLE *table) const override;
Field *make_table_field_from_def(TABLE_SHARE *share, Field *make_table_field_from_def(TABLE_SHARE *share,
MEM_ROOT *mem_root, MEM_ROOT *mem_root,
@ -6481,40 +6498,46 @@ public:
const Record_addr &addr, const Record_addr &addr,
const Bit_addr &bit, const Bit_addr &bit,
const Column_definition_attributes *attr, const Column_definition_attributes *attr,
uint32 flags) const; uint32 flags) const override;
bool can_return_int() const { return false; } bool can_return_int() const override { return false; }
bool can_return_decimal() const { return false; } bool can_return_decimal() const override { return false; }
bool can_return_real() const { return false; } bool can_return_real() const override { return false; }
bool can_return_text() const { return false; } bool can_return_text() const override { return false; }
bool can_return_date() const { return false; } bool can_return_date() const override { return false; }
bool can_return_time() const { return false; } bool can_return_time() const override { return false; }
bool is_traditional_type() const bool is_traditional_type() const override { return false; }
{ bool Item_func_round_fix_length_and_dec(Item_func_round *) const override;
return false; bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const override;
} bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const override;
bool Item_func_round_fix_length_and_dec(Item_func_round *) const; bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const override;
bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const;
bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const;
bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const;
bool Item_hybrid_func_fix_attributes(THD *thd, bool Item_hybrid_func_fix_attributes(THD *thd,
const char *name, const char *name,
Type_handler_hybrid_field_type *h, Type_handler_hybrid_field_type *h,
Type_all_attributes *attr, Type_all_attributes *attr,
Item **items, uint nitems) const; Item **items, uint nitems) const
bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const; override;
bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const; bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const override;
bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const; bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const override;
bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const override;
bool Item_func_signed_fix_length_and_dec(Item_func_signed *) const; bool Item_func_signed_fix_length_and_dec(Item_func_signed *) const override;
bool Item_func_unsigned_fix_length_and_dec(Item_func_unsigned *) const; bool Item_func_unsigned_fix_length_and_dec(Item_func_unsigned *) const
bool Item_double_typecast_fix_length_and_dec(Item_double_typecast *) const; override;
bool Item_float_typecast_fix_length_and_dec(Item_float_typecast *) const; bool Item_double_typecast_fix_length_and_dec(Item_double_typecast *) const
bool Item_decimal_typecast_fix_length_and_dec(Item_decimal_typecast *) const; override;
bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const; bool Item_float_typecast_fix_length_and_dec(Item_float_typecast *) const
bool Item_time_typecast_fix_length_and_dec(Item_time_typecast *) const; override;
bool Item_date_typecast_fix_length_and_dec(Item_date_typecast *) const; bool Item_decimal_typecast_fix_length_and_dec(Item_decimal_typecast *) const
bool Item_datetime_typecast_fix_length_and_dec(Item_datetime_typecast *) const; override;
bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const
override;
bool Item_time_typecast_fix_length_and_dec(Item_time_typecast *) const
override;
bool Item_date_typecast_fix_length_and_dec(Item_date_typecast *) const
override;
bool Item_datetime_typecast_fix_length_and_dec(Item_datetime_typecast *) const
override;
}; };
@ -6524,8 +6547,8 @@ class Type_handler_point: public Type_handler_geometry
// Binary length of a POINT value: 4 byte SRID + 21 byte WKB POINT // Binary length of a POINT value: 4 byte SRID + 21 byte WKB POINT
static uint octet_length() { return 25; } static uint octet_length() { return 25; }
public: public:
geometry_types geometry_type() const { return GEOM_POINT; } geometry_types geometry_type() const override { return GEOM_POINT; }
const Name name() const { return m_name_point; } const Name name() const override { return m_name_point; }
bool Key_part_spec_init_primary(Key_part_spec *part, bool Key_part_spec_init_primary(Key_part_spec *part,
const Column_definition &def, const Column_definition &def,
const handler *file) const override; const handler *file) const override;