Browse Source

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

pull/1286/head
Alexander Barkov 7 years ago
parent
commit
4233b28489
  1. 17
      sql/field.cc
  2. 5
      sql/field.h

17
sql/field.cc

@ -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_str::is_equal(Create_field *new_field)
uint Field_string::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())

5
sql/field.h

@ -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,

Loading…
Cancel
Save