summaryrefslogtreecommitdiff
path: root/sql/field.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/field.h')
-rw-r--r--sql/field.h147
1 files changed, 76 insertions, 71 deletions
diff --git a/sql/field.h b/sql/field.h
index 8a5e84edaa1..0f531564116 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -2274,7 +2274,7 @@ public:
};
-class Field_decimal :public Field_real {
+class Field_decimal final :public Field_real {
public:
Field_decimal(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg,
@@ -2320,7 +2320,7 @@ public:
/* New decimal/numeric field which use fixed point arithmetic */
-class Field_new_decimal :public Field_num {
+class Field_new_decimal final :public Field_num {
public:
/* The maximum number of decimal digits can be stored */
uint precision;
@@ -2550,7 +2550,7 @@ public:
};
-class Field_short :public Field_int
+class Field_short final :public Field_int
{
const Type_handler_general_purpose_int *type_handler_priv() const
{
@@ -2603,7 +2603,7 @@ public:
}
};
-class Field_medium :public Field_int
+class Field_medium final :public Field_int
{
const Type_handler_general_purpose_int *type_handler_priv() const
{
@@ -2649,7 +2649,7 @@ public:
};
-class Field_long :public Field_int
+class Field_long final :public Field_int
{
const Type_handler_general_purpose_int *type_handler_priv() const
{
@@ -2812,7 +2812,7 @@ public:
};
-class Field_float :public Field_real {
+class Field_float final :public Field_real {
public:
Field_float(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg,
@@ -2898,28 +2898,28 @@ public:
}
const Type_handler *type_handler() const override
{ return &type_handler_double; }
- enum ha_base_keytype key_type() const override { return HA_KEYTYPE_DOUBLE; }
- 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 reset() override { bzero(ptr,sizeof(double)); return 0; }
- double val_real() override;
- longlong val_int() override { return val_int_from_real(false); }
- ulonglong val_uint() override { return (ulonglong) val_int_from_real(true); }
- String *val_str(String *, String *) override;
- bool send_binary(Protocol *protocol) override;
- int cmp(const uchar *,const uchar *) const override;
- void sort_string(uchar *buff, uint length) override;
- uint32 pack_length() const override { return sizeof(double); }
- uint row_pack_length() const override { return pack_length(); }
- ulonglong get_max_int_value() const override
+ enum ha_base_keytype key_type() const override final { return HA_KEYTYPE_DOUBLE; }
+ int store(const char *to,size_t length,CHARSET_INFO *charset) override final;
+ int store(double nr) override final;
+ int store(longlong nr, bool unsigned_val) override final;
+ int reset() override final { bzero(ptr,sizeof(double)); return 0; }
+ double val_real() override final;
+ longlong val_int() override final { return val_int_from_real(false); }
+ ulonglong val_uint() override final { return (ulonglong) val_int_from_real(true); }
+ String *val_str(String *, String *) override final;
+ bool send_binary(Protocol *protocol) override final;
+ int cmp(const uchar *,const uchar *) const override final;
+ void sort_string(uchar *buff, uint length) override final;
+ uint32 pack_length() const override final { return sizeof(double); }
+ uint row_pack_length() const override final { return pack_length(); }
+ ulonglong get_max_int_value() const override final
{
/*
We use the maximum as per IEEE754-2008 standard, 2^53
*/
return 0x20000000000000ULL;
}
- Binlog_type_info binlog_type_info() const override;
+ Binlog_type_info binlog_type_info() const override final;
};
@@ -2948,40 +2948,40 @@ public:
{
return do_field_string;
}
- int store(const char *to, size_t length, CHARSET_INFO *cs) override
+ int store(const char *to, size_t length, CHARSET_INFO *cs) override final
{ null[0]=1; return 0; }
- int store(double nr) override { null[0]=1; return 0; }
- int store(longlong nr, bool unsigned_val) override { null[0]=1; return 0; }
- int store_decimal(const my_decimal *d) override { null[0]=1; return 0; }
- int reset() override { return 0; }
- double val_real() override { return 0.0;}
- longlong val_int() override { return 0;}
- bool val_bool() override { return false; }
- my_decimal *val_decimal(my_decimal *) override { return 0; }
- String *val_str(String *value,String *value2) override
+ int store(double nr) override final { null[0]=1; return 0; }
+ int store(longlong nr, bool unsigned_val) override final { null[0]=1; return 0; }
+ int store_decimal(const my_decimal *d) override final { null[0]=1; return 0; }
+ int reset() override final { return 0; }
+ double val_real() override final { return 0.0;}
+ longlong val_int() override final { return 0;}
+ bool val_bool() override final { return false; }
+ my_decimal *val_decimal(my_decimal *) override final { return 0; }
+ String *val_str(String *value,String *value2) override final
{ value2->length(0); return value2;}
- bool is_equal(const Column_definition &new_field) const override;
- int cmp(const uchar *a, const uchar *b) const override { return 0;}
- void sort_string(uchar *buff, uint length) override {}
- uint32 pack_length() const override { return 0; }
- void sql_type(String &str) const override;
- uint size_of() const override { return sizeof *this; }
- uint32 max_display_length() const override { return 4; }
- void move_field_offset(my_ptrdiff_t ptr_diff) override {}
+ bool is_equal(const Column_definition &new_field) const override final;
+ int cmp(const uchar *a, const uchar *b) const override final { return 0;}
+ void sort_string(uchar *buff, uint length) override final {}
+ uint32 pack_length() const override final { return 0; }
+ void sql_type(String &str) const override final;
+ uint size_of() const override final { return sizeof *this; }
+ uint32 max_display_length() const override final { return 4; }
+ void move_field_offset(my_ptrdiff_t ptr_diff) override final {}
bool can_optimize_keypart_ref(const Item_bool_func *cond,
- const Item *item) const override
+ const Item *item) const override final
{
return false;
}
bool can_optimize_group_min_max(const Item_bool_func *cond,
- const Item *const_item) const override
+ const Item *const_item) const override final
{
return false;
}
};
-class Field_temporal: public Field {
+class Field_temporal :public Field {
protected:
Item *get_equal_const_item_datetime(THD *thd, const Context &ctx,
Item *const_item);
@@ -3098,7 +3098,7 @@ public:
- DATETIME(1..6)
- DATETIME(0..6) - MySQL56 version
*/
-class Field_temporal_with_date: public Field_temporal {
+class Field_temporal_with_date :public Field_temporal {
protected:
virtual void store_TIME(const MYSQL_TIME *ltime) = 0;
void store_datetime(const Datetime &dt)
@@ -3305,7 +3305,7 @@ public:
/**
TIMESTAMP(0..6) - MySQL56 version
*/
-class Field_timestampf :public Field_timestamp_with_dec {
+class Field_timestampf final :public Field_timestamp_with_dec {
void store_TIMEVAL(const timeval &tv) override;
public:
Field_timestampf(uchar *ptr_arg,
@@ -3353,7 +3353,7 @@ public:
};
-class Field_year :public Field_tiny {
+class Field_year final :public Field_tiny {
public:
Field_year(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg,
@@ -3414,7 +3414,7 @@ public:
};
-class Field_date_common: public Field_temporal_with_date
+class Field_date_common :public Field_temporal_with_date
{
protected:
int store_TIME_with_warning(const Datetime *ltime, const ErrConv *str,
@@ -3439,7 +3439,7 @@ public:
};
-class Field_date :public Field_date_common
+class Field_date final :public Field_date_common
{
void store_TIME(const MYSQL_TIME *ltime) override;
bool get_TIME(MYSQL_TIME *ltime, const uchar *pos, date_mode_t fuzzydate)
@@ -3480,7 +3480,7 @@ public:
};
-class Field_newdate :public Field_date_common
+class Field_newdate final :public Field_date_common
{
void store_TIME(const MYSQL_TIME *ltime) override;
bool get_TIME(MYSQL_TIME *ltime, const uchar *pos, date_mode_t fuzzydate)
@@ -3571,7 +3571,7 @@ public:
};
-class Field_time0: public Field_time
+class Field_time0 final :public Field_time
{
protected:
void store_TIME(const MYSQL_TIME *ltime) override;
@@ -3628,7 +3628,7 @@ public:
/**
TIME(1..6)
*/
-class Field_time_hires :public Field_time_with_dec {
+class Field_time_hires final :public Field_time_with_dec {
longlong zero_point;
void store_TIME(const MYSQL_TIME *) override;
public:
@@ -3661,7 +3661,7 @@ public:
/**
TIME(0..6) - MySQL56 version
*/
-class Field_timef :public Field_time_with_dec {
+class Field_timef final :public Field_time_with_dec {
void store_TIME(const MYSQL_TIME *ltime) override;
public:
Field_timef(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg,
@@ -3746,7 +3746,11 @@ public:
};
-class Field_datetime0 :public Field_datetime
+/*
+ Stored as a 8 byte unsigned int. Should sometimes be change to a 6 byte
+*/
+
+class Field_datetime0 final :public Field_datetime
{
void store_TIME(const MYSQL_TIME *ltime) override;
bool get_TIME(MYSQL_TIME *ltime, const uchar *pos, date_mode_t fuzzydate)
@@ -3808,30 +3812,30 @@ public:
{
DBUG_ASSERT(dec <= TIME_SECOND_PART_DIGITS);
}
- uint decimals() const override { return dec; }
- enum ha_base_keytype key_type() const override { return HA_KEYTYPE_BINARY; }
- void make_send_field(Send_field *field) override;
- bool send_binary(Protocol *protocol) override;
- uchar *pack(uchar *to, const uchar *from, uint max_length) override
+ uint decimals() const override final { return dec; }
+ enum ha_base_keytype key_type() const override final { return HA_KEYTYPE_BINARY; }
+ void make_send_field(Send_field *field) override final;
+ bool send_binary(Protocol *protocol) override final;
+ uchar *pack(uchar *to, const uchar *from, uint max_length) override final
{ return Field::pack(to, from, max_length); }
const uchar *unpack(uchar* to, const uchar *from, const uchar *from_end,
- uint param_data) override
+ uint param_data) override final
{ return Field::unpack(to, from, from_end, param_data); }
- void sort_string(uchar *to, uint length) override
+ void sort_string(uchar *to, uint length) override final
{
DBUG_ASSERT(length == pack_length());
memcpy(to, ptr, length);
}
- double val_real() override;
- longlong val_int() override;
- String *val_str(String *, String *) override;
+ double val_real() override final;
+ longlong val_int() override final;
+ String *val_str(String *, String *) override final;
};
/**
DATETIME(1..6)
*/
-class Field_datetime_hires :public Field_datetime_with_dec {
+class Field_datetime_hires final :public Field_datetime_with_dec {
void store_TIME(const MYSQL_TIME *ltime) override;
bool get_TIME(MYSQL_TIME *ltime, const uchar *pos, date_mode_t fuzzydate)
const override;
@@ -3861,7 +3865,8 @@ public:
/**
DATETIME(0..6) - MySQL56 version
*/
-class Field_datetimef :public Field_datetime_with_dec {
+
+class Field_datetimef final :public Field_datetime_with_dec {
void store_TIME(const MYSQL_TIME *ltime) override;
bool get_TIME(MYSQL_TIME *ltime, const uchar *pos, date_mode_t fuzzydate)
const override;
@@ -3955,7 +3960,7 @@ new_Field_datetime(MEM_ROOT *root, uchar *ptr, uchar *null_ptr, uchar null_bit,
unireg_check, field_name, dec);
}
-class Field_string :public Field_longstr {
+class Field_string final :public Field_longstr {
class Warn_filter_string: public Warn_filter
{
public:
@@ -4188,7 +4193,7 @@ public:
};
-class Field_varstring_compressed: public Field_varstring {
+class Field_varstring_compressed final :public Field_varstring {
public:
Field_varstring_compressed(uchar *ptr_arg,
uint32 len_arg, uint length_bytes_arg,
@@ -4590,7 +4595,7 @@ public:
};
-class Field_blob_compressed: public Field_blob {
+class Field_blob_compressed final :public Field_blob {
public:
Field_blob_compressed(uchar *ptr_arg, uchar *null_ptr_arg,
uchar null_bit_arg, enum utype unireg_check_arg,
@@ -4756,7 +4761,7 @@ private:
};
-class Field_set :public Field_enum {
+class Field_set final :public Field_enum {
public:
Field_set(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg,
@@ -5005,7 +5010,7 @@ private:
an extended version of Field_bit_as_char and not the other way
around. Hence, we should refactor it to fix the hierarchy order.
*/
-class Field_bit_as_char: public Field_bit {
+class Field_bit_as_char final :public Field_bit {
public:
Field_bit_as_char(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg,
@@ -5020,7 +5025,7 @@ public:
};
-class Field_row: public Field_null
+class Field_row final :public Field_null
{
class Virtual_tmp_table *m_table;
public: