1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

MDEV-19283 Move the code from Field_str::is_equal() to Field_string::is_equal()

This commit is contained in:
Alexander Barkov
2019-04-19 07:00:17 +04:00
parent 878ca5ca4f
commit 4233b28489
2 changed files with 14 additions and 8 deletions

View File

@@ -2436,6 +2436,15 @@ void Field_null::sql_type(String &res) const
} }
uint Field_null::is_equal(Create_field *new_field)
{
DBUG_ASSERT(!compression_method());
return new_field->type_handler() == type_handler() &&
new_field->charset == field_charset &&
new_field->length == max_display_length();
}
/**************************************************************************** /****************************************************************************
Field_row, e.g. for ROW-type SP variables Field_row, e.g. for ROW-type SP variables
****************************************************************************/ ****************************************************************************/
@@ -7069,14 +7078,10 @@ int Field_str::store(double nr)
return store(buff, (uint)length, &my_charset_numeric); return store(buff, (uint)length, &my_charset_numeric);
} }
uint Field::is_equal(Create_field *new_field)
{
return new_field->type_handler() == type_handler();
}
uint Field_string::is_equal(Create_field *new_field)
uint Field_str::is_equal(Create_field *new_field)
{ {
DBUG_ASSERT(!compression_method());
if (new_field->type_handler() != type_handler()) if (new_field->type_handler() != type_handler())
return IS_EQUAL_NO; return IS_EQUAL_NO;
if (new_field->length < max_display_length()) if (new_field->length < max_display_length())

View File

@@ -1504,7 +1504,7 @@ public:
of a table is compatible with the old definition so that it can of a table is compatible with the old definition so that it can
determine if data needs to be copied over (table data change). determine if data needs to be copied over (table data change).
*/ */
virtual uint is_equal(Create_field *new_field); virtual uint is_equal(Create_field *new_field)= 0;
/* convert decimal to longlong with overflow check */ /* convert decimal to longlong with overflow check */
longlong convert_decimal2longlong(const my_decimal *val, bool unsigned_flag, longlong convert_decimal2longlong(const my_decimal *val, bool unsigned_flag,
int *err); int *err);
@@ -1868,7 +1868,6 @@ public:
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
bool val_bool() { return val_real() != 0e0; } bool val_bool() { return val_real() != 0e0; }
virtual bool str_needs_quotes() { return TRUE; } virtual bool str_needs_quotes() { return TRUE; }
uint is_equal(Create_field *new_field);
bool eq_cmp_as_binary() { return MY_TEST(flags & BINARY_FLAG); } bool eq_cmp_as_binary() { return MY_TEST(flags & BINARY_FLAG); }
virtual uint length_size() { return 0; } virtual uint length_size() { return 0; }
double pos_in_interval(Field *min, Field *max) double pos_in_interval(Field *min, Field *max)
@@ -2640,6 +2639,7 @@ public:
my_decimal *val_decimal(my_decimal *) { return 0; } my_decimal *val_decimal(my_decimal *) { return 0; }
String *val_str(String *value,String *value2) String *val_str(String *value,String *value2)
{ value2->length(0); return value2;} { value2->length(0); return value2;}
uint is_equal(Create_field *new_field);
int cmp(const uchar *a, const uchar *b) { return 0;} int cmp(const uchar *a, const uchar *b) { return 0;}
void sort_string(uchar *buff, uint length) {} void sort_string(uchar *buff, uint length) {}
uint32 pack_length() const { return 0; } uint32 pack_length() const { return 0; }
@@ -3563,6 +3563,7 @@ public:
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *);
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
void sql_type(String &str) const; void sql_type(String &str) const;
uint is_equal(Create_field *new_field);
virtual uchar *pack(uchar *to, const uchar *from, virtual uchar *pack(uchar *to, const uchar *from,
uint max_length); uint max_length);
virtual const uchar *unpack(uchar* to, const uchar *from, virtual const uchar *unpack(uchar* to, const uchar *from,