Commit 4233b284 authored by Alexander Barkov's avatar Alexander Barkov

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

parent 878ca5ca
......@@ -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
****************************************************************************/
......@@ -7069,14 +7078,10 @@ int Field_str::store(double nr)
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())
return IS_EQUAL_NO;
if (new_field->length < max_display_length())
......
......@@ -1504,7 +1504,7 @@ class Field: public Value_source
of a table is compatible with the old definition so that it can
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 */
longlong convert_decimal2longlong(const my_decimal *val, bool unsigned_flag,
int *err);
......@@ -1868,7 +1868,6 @@ class Field_str :public Field {
my_decimal *val_decimal(my_decimal *);
bool val_bool() { return val_real() != 0e0; }
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); }
virtual uint length_size() { return 0; }
double pos_in_interval(Field *min, Field *max)
......@@ -2640,6 +2639,7 @@ class Field_null :public Field_str {
my_decimal *val_decimal(my_decimal *) { return 0; }
String *val_str(String *value,String *value2)
{ value2->length(0); return value2;}
uint is_equal(Create_field *new_field);
int cmp(const uchar *a, const uchar *b) { return 0;}
void sort_string(uchar *buff, uint length) {}
uint32 pack_length() const { return 0; }
......@@ -3563,6 +3563,7 @@ class Field_string :public Field_longstr {
int cmp(const uchar *,const uchar *);
void sort_string(uchar *buff,uint length);
void sql_type(String &str) const;
uint is_equal(Create_field *new_field);
virtual uchar *pack(uchar *to, const uchar *from,
uint max_length);
virtual const uchar *unpack(uchar* to, const uchar *from,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment