Commit e81db2ba authored by Nikita Malyavin's avatar Nikita Malyavin

Add const qualifiers to Field::cmp, Field::cmp_max and Field::cmp_binary

parent 46553c25
...@@ -3037,7 +3037,7 @@ String *Field_decimal::val_str(String *val_buffer __attribute__((unused)), ...@@ -3037,7 +3037,7 @@ String *Field_decimal::val_str(String *val_buffer __attribute__((unused)),
5.00 , -1.0, 05, -05, +5 with optional pre/end space 5.00 , -1.0, 05, -05, +5 with optional pre/end space
*/ */
int Field_decimal::cmp(const uchar *a_ptr,const uchar *b_ptr) int Field_decimal::cmp(const uchar *a_ptr,const uchar *b_ptr) const
{ {
const uchar *end; const uchar *end;
int swap=0; int swap=0;
...@@ -3416,7 +3416,7 @@ my_decimal* Field_new_decimal::val_decimal(my_decimal *decimal_value) ...@@ -3416,7 +3416,7 @@ my_decimal* Field_new_decimal::val_decimal(my_decimal *decimal_value)
} }
int Field_new_decimal::cmp(const uchar *a,const uchar*b) int Field_new_decimal::cmp(const uchar *a,const uchar*b) const
{ {
return memcmp(a, b, bin_size); return memcmp(a, b, bin_size);
} }
...@@ -3738,7 +3738,7 @@ bool Field_tiny::send_binary(Protocol *protocol) ...@@ -3738,7 +3738,7 @@ bool Field_tiny::send_binary(Protocol *protocol)
return protocol->store_tiny((longlong) (int8) ptr[0]); return protocol->store_tiny((longlong) (int8) ptr[0]);
} }
int Field_tiny::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_tiny::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
signed char a,b; signed char a,b;
a=(signed char) a_ptr[0]; b= (signed char) b_ptr[0]; a=(signed char) a_ptr[0]; b= (signed char) b_ptr[0];
...@@ -3907,7 +3907,7 @@ bool Field_short::send_binary(Protocol *protocol) ...@@ -3907,7 +3907,7 @@ bool Field_short::send_binary(Protocol *protocol)
} }
int Field_short::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_short::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
short a,b; short a,b;
a=sint2korr(a_ptr); a=sint2korr(a_ptr);
...@@ -4100,7 +4100,7 @@ bool Field_medium::send_binary(Protocol *protocol) ...@@ -4100,7 +4100,7 @@ bool Field_medium::send_binary(Protocol *protocol)
} }
int Field_medium::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_medium::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
long a,b; long a,b;
if (unsigned_flag) if (unsigned_flag)
...@@ -4278,7 +4278,7 @@ bool Field_long::send_binary(Protocol *protocol) ...@@ -4278,7 +4278,7 @@ bool Field_long::send_binary(Protocol *protocol)
return protocol->store_long(Field_long::val_int()); return protocol->store_long(Field_long::val_int());
} }
int Field_long::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_long::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
int32 a,b; int32 a,b;
a=sint4korr(a_ptr); a=sint4korr(a_ptr);
...@@ -4424,7 +4424,7 @@ bool Field_longlong::send_binary(Protocol *protocol) ...@@ -4424,7 +4424,7 @@ bool Field_longlong::send_binary(Protocol *protocol)
} }
int Field_longlong::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_longlong::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
longlong a,b; longlong a,b;
a=sint8korr(a_ptr); a=sint8korr(a_ptr);
...@@ -4559,7 +4559,7 @@ String *Field_float::val_str(String *val_buffer, ...@@ -4559,7 +4559,7 @@ String *Field_float::val_str(String *val_buffer,
} }
int Field_float::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_float::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
float a,b; float a,b;
float4get(a,a_ptr); float4get(a,a_ptr);
...@@ -4901,7 +4901,7 @@ bool Field_double::send_binary(Protocol *protocol) ...@@ -4901,7 +4901,7 @@ bool Field_double::send_binary(Protocol *protocol)
} }
int Field_double::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_double::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
double a,b; double a,b;
float8get(a,a_ptr); float8get(a,a_ptr);
...@@ -5314,7 +5314,7 @@ bool Field_timestamp::send_binary(Protocol *protocol) ...@@ -5314,7 +5314,7 @@ bool Field_timestamp::send_binary(Protocol *protocol)
} }
int Field_timestamp::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_timestamp::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
int32 a,b; int32 a,b;
a=sint4korr(a_ptr); a=sint4korr(a_ptr);
...@@ -5510,7 +5510,7 @@ bool Field_timestamp_with_dec::send_binary(Protocol *protocol) ...@@ -5510,7 +5510,7 @@ bool Field_timestamp_with_dec::send_binary(Protocol *protocol)
} }
int Field_timestamp_hires::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_timestamp_hires::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
int32 a,b; int32 a,b;
ulong a_sec_part, b_sec_part; ulong a_sec_part, b_sec_part;
...@@ -5960,7 +5960,7 @@ bool Field_time::send_binary(Protocol *protocol) ...@@ -5960,7 +5960,7 @@ bool Field_time::send_binary(Protocol *protocol)
} }
int Field_time::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_time::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
int32 a,b; int32 a,b;
a=(int32) sint3korr(a_ptr); a=(int32) sint3korr(a_ptr);
...@@ -6148,7 +6148,7 @@ bool Field_time_hires::get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate) ...@@ -6148,7 +6148,7 @@ bool Field_time_hires::get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate)
} }
int Field_time_hires::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_time_hires::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
ulonglong a=read_bigendian(a_ptr, Field_time_hires::pack_length()); ulonglong a=read_bigendian(a_ptr, Field_time_hires::pack_length());
ulonglong b=read_bigendian(b_ptr, Field_time_hires::pack_length()); ulonglong b=read_bigendian(b_ptr, Field_time_hires::pack_length());
...@@ -6476,7 +6476,7 @@ String *Field_date::val_str(String *val_buffer, ...@@ -6476,7 +6476,7 @@ String *Field_date::val_str(String *val_buffer,
} }
int Field_date::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_date::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
int32 a,b; int32 a,b;
a=sint4korr(a_ptr); a=sint4korr(a_ptr);
...@@ -6580,7 +6580,7 @@ bool Field_newdate::get_TIME(MYSQL_TIME *ltime, const uchar *pos, ...@@ -6580,7 +6580,7 @@ bool Field_newdate::get_TIME(MYSQL_TIME *ltime, const uchar *pos,
} }
int Field_newdate::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_newdate::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
uint32 a,b; uint32 a,b;
a=(uint32) uint3korr(a_ptr); a=(uint32) uint3korr(a_ptr);
...@@ -6765,7 +6765,7 @@ bool Field_datetime::get_TIME(MYSQL_TIME *ltime, const uchar *pos, ...@@ -6765,7 +6765,7 @@ bool Field_datetime::get_TIME(MYSQL_TIME *ltime, const uchar *pos,
} }
int Field_datetime::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_datetime::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
longlong a,b; longlong a,b;
a=sint8korr(a_ptr); a=sint8korr(a_ptr);
...@@ -6867,7 +6867,7 @@ bool Field_datetime_hires::get_TIME(MYSQL_TIME *ltime, const uchar *pos, ...@@ -6867,7 +6867,7 @@ bool Field_datetime_hires::get_TIME(MYSQL_TIME *ltime, const uchar *pos,
} }
int Field_datetime_hires::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_datetime_hires::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
ulonglong a=read_bigendian(a_ptr, Field_datetime_hires::pack_length()); ulonglong a=read_bigendian(a_ptr, Field_datetime_hires::pack_length());
ulonglong b=read_bigendian(b_ptr, Field_datetime_hires::pack_length()); ulonglong b=read_bigendian(b_ptr, Field_datetime_hires::pack_length());
...@@ -7258,7 +7258,7 @@ Field_string::compatible_field_size(uint field_metadata, ...@@ -7258,7 +7258,7 @@ Field_string::compatible_field_size(uint field_metadata,
} }
int Field_string::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_string::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
size_t a_len, b_len; size_t a_len, b_len;
...@@ -7612,7 +7612,7 @@ my_decimal *Field_varstring::val_decimal(my_decimal *decimal_value) ...@@ -7612,7 +7612,7 @@ my_decimal *Field_varstring::val_decimal(my_decimal *decimal_value)
int Field_varstring::cmp_max(const uchar *a_ptr, const uchar *b_ptr, int Field_varstring::cmp_max(const uchar *a_ptr, const uchar *b_ptr,
uint max_len) uint max_len) const
{ {
uint a_length, b_length; uint a_length, b_length;
int diff; int diff;
...@@ -7645,7 +7645,7 @@ int Field_varstring::cmp_max(const uchar *a_ptr, const uchar *b_ptr, ...@@ -7645,7 +7645,7 @@ int Field_varstring::cmp_max(const uchar *a_ptr, const uchar *b_ptr,
varstring and blob keys are ALWAYS stored with a 2 byte length prefix varstring and blob keys are ALWAYS stored with a 2 byte length prefix
*/ */
int Field_varstring::key_cmp(const uchar *key_ptr, uint max_key_length) int Field_varstring::key_cmp(const uchar *key_ptr, uint max_key_length) const
{ {
size_t length= length_bytes == 1 ? (uint) *ptr : uint2korr(ptr); size_t length= length_bytes == 1 ? (uint) *ptr : uint2korr(ptr);
size_t local_char_length= max_key_length / field_charset->mbmaxlen; size_t local_char_length= max_key_length / field_charset->mbmaxlen;
...@@ -7670,7 +7670,7 @@ int Field_varstring::key_cmp(const uchar *key_ptr, uint max_key_length) ...@@ -7670,7 +7670,7 @@ int Field_varstring::key_cmp(const uchar *key_ptr, uint max_key_length)
(keys are created and compared in key.cc) (keys are created and compared in key.cc)
*/ */
int Field_varstring::key_cmp(const uchar *a,const uchar *b) int Field_varstring::key_cmp(const uchar *a,const uchar *b) const
{ {
return field_charset->coll->strnncollsp(field_charset, return field_charset->coll->strnncollsp(field_charset,
a + HA_KEY_BLOB_LENGTH, a + HA_KEY_BLOB_LENGTH,
...@@ -7870,7 +7870,7 @@ void Field_varstring::set_key_image(const uchar *buff,uint length) ...@@ -7870,7 +7870,7 @@ void Field_varstring::set_key_image(const uchar *buff,uint length)
int Field_varstring::cmp_binary(const uchar *a_ptr, const uchar *b_ptr, int Field_varstring::cmp_binary(const uchar *a_ptr, const uchar *b_ptr,
uint32 max_length) uint32 max_length) const
{ {
uint32 a_length,b_length; uint32 a_length,b_length;
...@@ -8043,7 +8043,7 @@ int Field_longstr::compress(char *to, uint to_length, ...@@ -8043,7 +8043,7 @@ int Field_longstr::compress(char *to, uint to_length,
*/ */
String *Field_longstr::uncompress(String *val_buffer, String *val_ptr, String *Field_longstr::uncompress(String *val_buffer, String *val_ptr,
const uchar *from, uint from_length) const uchar *from, uint from_length) const
{ {
if (from_length) if (from_length)
{ {
...@@ -8122,7 +8122,7 @@ longlong Field_varstring_compressed::val_int(void) ...@@ -8122,7 +8122,7 @@ longlong Field_varstring_compressed::val_int(void)
int Field_varstring_compressed::cmp_max(const uchar *a_ptr, const uchar *b_ptr, int Field_varstring_compressed::cmp_max(const uchar *a_ptr, const uchar *b_ptr,
uint max_len) uint max_len) const
{ {
String a, b; String a, b;
uint a_length, b_length; uint a_length, b_length;
...@@ -8373,7 +8373,7 @@ my_decimal *Field_blob::val_decimal(my_decimal *decimal_value) ...@@ -8373,7 +8373,7 @@ my_decimal *Field_blob::val_decimal(my_decimal *decimal_value)
int Field_blob::cmp(const uchar *a,uint32 a_length, const uchar *b, int Field_blob::cmp(const uchar *a,uint32 a_length, const uchar *b,
uint32 b_length) uint32 b_length) const
{ {
return field_charset->coll->strnncollsp(field_charset, return field_charset->coll->strnncollsp(field_charset,
a, a_length, b, b_length); a, a_length, b, b_length);
...@@ -8381,7 +8381,7 @@ int Field_blob::cmp(const uchar *a,uint32 a_length, const uchar *b, ...@@ -8381,7 +8381,7 @@ int Field_blob::cmp(const uchar *a,uint32 a_length, const uchar *b,
int Field_blob::cmp_max(const uchar *a_ptr, const uchar *b_ptr, int Field_blob::cmp_max(const uchar *a_ptr, const uchar *b_ptr,
uint max_length) uint max_length) const
{ {
uchar *blob1,*blob2; uchar *blob1,*blob2;
memcpy(&blob1, a_ptr+packlength, sizeof(char*)); memcpy(&blob1, a_ptr+packlength, sizeof(char*));
...@@ -8394,7 +8394,7 @@ int Field_blob::cmp_max(const uchar *a_ptr, const uchar *b_ptr, ...@@ -8394,7 +8394,7 @@ int Field_blob::cmp_max(const uchar *a_ptr, const uchar *b_ptr,
int Field_blob::cmp_binary(const uchar *a_ptr, const uchar *b_ptr, int Field_blob::cmp_binary(const uchar *a_ptr, const uchar *b_ptr,
uint32 max_length) uint32 max_length) const
{ {
char *a,*b; char *a,*b;
uint diff; uint diff;
...@@ -8446,7 +8446,7 @@ void Field_blob::set_key_image(const uchar *buff,uint length) ...@@ -8446,7 +8446,7 @@ void Field_blob::set_key_image(const uchar *buff,uint length)
} }
int Field_blob::key_cmp(const uchar *key_ptr, uint max_key_length) int Field_blob::key_cmp(const uchar *key_ptr, uint max_key_length) const
{ {
uchar *blob1; uchar *blob1;
size_t blob_length=get_length(ptr); size_t blob_length=get_length(ptr);
...@@ -8461,7 +8461,7 @@ int Field_blob::key_cmp(const uchar *key_ptr, uint max_key_length) ...@@ -8461,7 +8461,7 @@ int Field_blob::key_cmp(const uchar *key_ptr, uint max_key_length)
uint2korr(key_ptr)); uint2korr(key_ptr));
} }
int Field_blob::key_cmp(const uchar *a,const uchar *b) int Field_blob::key_cmp(const uchar *a,const uchar *b) const
{ {
return Field_blob::cmp(a+HA_KEY_BLOB_LENGTH, uint2korr(a), return Field_blob::cmp(a+HA_KEY_BLOB_LENGTH, uint2korr(a),
b+HA_KEY_BLOB_LENGTH, uint2korr(b)); b+HA_KEY_BLOB_LENGTH, uint2korr(b));
...@@ -8858,9 +8858,13 @@ double Field_enum::val_real(void) ...@@ -8858,9 +8858,13 @@ double Field_enum::val_real(void)
longlong Field_enum::val_int(void) longlong Field_enum::val_int(void)
{ {
DBUG_ASSERT(marked_for_read()); DBUG_ASSERT(marked_for_read());
return read_lowendian(ptr, packlength); return val_int(ptr);
} }
longlong Field_enum::val_int(const uchar *real_ptr) const
{
return read_lowendian(real_ptr, packlength);
}
/** /**
Save the field metadata for enum fields. Save the field metadata for enum fields.
...@@ -8894,14 +8898,10 @@ String *Field_enum::val_str(String *val_buffer __attribute__((unused)), ...@@ -8894,14 +8898,10 @@ String *Field_enum::val_str(String *val_buffer __attribute__((unused)),
return val_ptr; return val_ptr;
} }
int Field_enum::cmp(const uchar *a_ptr, const uchar *b_ptr) int Field_enum::cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
uchar *old= ptr; ulonglong a=Field_enum::val_int(a_ptr);
ptr= (uchar*) a_ptr; ulonglong b=Field_enum::val_int(b_ptr);
ulonglong a=Field_enum::val_int();
ptr= (uchar*) b_ptr;
ulonglong b=Field_enum::val_int();
ptr= old;
return (a < b) ? -1 : (a > b) ? 1 : 0; return (a < b) ? -1 : (a > b) ? 1 : 0;
} }
...@@ -9542,7 +9542,7 @@ my_decimal *Field_bit::val_decimal(my_decimal *deciaml_value) ...@@ -9542,7 +9542,7 @@ my_decimal *Field_bit::val_decimal(my_decimal *deciaml_value)
The a and b pointer must be pointers to the field in a record The a and b pointer must be pointers to the field in a record
(not the table->record[0] necessarily) (not the table->record[0] necessarily)
*/ */
int Field_bit::cmp_max(const uchar *a, const uchar *b, uint max_len) int Field_bit::cmp_max(const uchar *a, const uchar *b, uint max_len) const
{ {
my_ptrdiff_t a_diff= a - ptr; my_ptrdiff_t a_diff= a - ptr;
my_ptrdiff_t b_diff= b - ptr; my_ptrdiff_t b_diff= b - ptr;
...@@ -9560,7 +9560,7 @@ int Field_bit::cmp_max(const uchar *a, const uchar *b, uint max_len) ...@@ -9560,7 +9560,7 @@ int Field_bit::cmp_max(const uchar *a, const uchar *b, uint max_len)
} }
int Field_bit::key_cmp(const uchar *str, uint length) int Field_bit::key_cmp(const uchar *str, uint length) const
{ {
if (bit_len) if (bit_len)
{ {
......
...@@ -1134,18 +1134,18 @@ class Field: public Value_source ...@@ -1134,18 +1134,18 @@ class Field: public Value_source
const Conv_param &param) const Conv_param &param)
const; const;
inline int cmp(const uchar *str) { return cmp(ptr,str); } inline int cmp(const uchar *str) { return cmp(ptr,str); }
virtual int cmp_max(const uchar *a, const uchar *b, uint max_len) virtual int cmp_max(const uchar *a, const uchar *b, uint max_len) const
{ return cmp(a, b); } { return cmp(a, b); }
virtual int cmp(const uchar *,const uchar *)=0; virtual int cmp(const uchar *,const uchar *) const=0;
virtual int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0U) virtual int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0U) const
{ return memcmp(a,b,pack_length()); } { return memcmp(a,b,pack_length()); }
virtual int cmp_offset(my_ptrdiff_t row_offset) virtual int cmp_offset(my_ptrdiff_t row_offset)
{ return cmp(ptr,ptr+row_offset); } { return cmp(ptr,ptr+row_offset); }
virtual int cmp_binary_offset(uint row_offset) virtual int cmp_binary_offset(uint row_offset)
{ return cmp_binary(ptr, ptr+row_offset); }; { return cmp_binary(ptr, ptr+row_offset); };
virtual int key_cmp(const uchar *a,const uchar *b) virtual int key_cmp(const uchar *a,const uchar *b) const
{ return cmp(a, b); } { return cmp(a, b); }
virtual int key_cmp(const uchar *str, uint length) virtual int key_cmp(const uchar *str, uint length) const
{ return cmp(ptr,str); } { return cmp(ptr,str); }
/* /*
Update the value m of the 'min_val' field with the current value v Update the value m of the 'min_val' field with the current value v
...@@ -1977,7 +1977,7 @@ class Field_longstr :public Field_str ...@@ -1977,7 +1977,7 @@ class Field_longstr :public Field_str
uint *out_length, uint *out_length,
CHARSET_INFO *cs, size_t nchars); CHARSET_INFO *cs, size_t nchars);
String *uncompress(String *val_buffer, String *val_ptr, String *uncompress(String *val_buffer, String *val_ptr,
const uchar *from, uint from_length); const uchar *from, uint from_length) const;
public: public:
Field_longstr(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg, Field_longstr(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg, utype unireg_check_arg, uchar null_bit_arg, utype unireg_check_arg,
...@@ -2092,7 +2092,7 @@ class Field_decimal :public Field_real { ...@@ -2092,7 +2092,7 @@ class Field_decimal :public Field_real {
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
void overflow(bool negative); void overflow(bool negative);
bool zero_pack() const { return 0; } bool zero_pack() const { return 0; }
...@@ -2182,7 +2182,7 @@ class Field_new_decimal :public Field_num { ...@@ -2182,7 +2182,7 @@ class Field_new_decimal :public Field_num {
{ {
return my_decimal(ptr, precision, dec).to_bool(); return my_decimal(ptr, precision, dec).to_bool();
} }
int cmp(const uchar *, const uchar *); int cmp(const uchar *, const uchar *) const;
void sort_string(uchar *buff, uint length); void sort_string(uchar *buff, uint length);
bool zero_pack() const { return 0; } bool zero_pack() const { return 0; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2288,7 +2288,7 @@ class Field_tiny :public Field_int ...@@ -2288,7 +2288,7 @@ class Field_tiny :public Field_int
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 1; } uint32 pack_length() const { return 1; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2345,7 +2345,7 @@ class Field_short :public Field_int ...@@ -2345,7 +2345,7 @@ class Field_short :public Field_int
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 2; } uint32 pack_length() const { return 2; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2386,7 +2386,7 @@ class Field_medium :public Field_int ...@@ -2386,7 +2386,7 @@ class Field_medium :public Field_int
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 3; } uint32 pack_length() const { return 3; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2432,7 +2432,7 @@ class Field_long :public Field_int ...@@ -2432,7 +2432,7 @@ class Field_long :public Field_int
longlong val_int(void); longlong val_int(void);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
String *val_str(String*,String *); String *val_str(String*,String *);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 4; } uint32 pack_length() const { return 4; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2489,7 +2489,7 @@ class Field_longlong :public Field_int ...@@ -2489,7 +2489,7 @@ class Field_longlong :public Field_int
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 8; } uint32 pack_length() const { return 8; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2590,7 +2590,7 @@ class Field_float :public Field_real { ...@@ -2590,7 +2590,7 @@ class Field_float :public Field_real {
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return sizeof(float); } uint32 pack_length() const { return sizeof(float); }
uint row_pack_length() const { return pack_length(); } uint row_pack_length() const { return pack_length(); }
...@@ -2655,7 +2655,7 @@ class Field_double :public Field_real { ...@@ -2655,7 +2655,7 @@ class Field_double :public Field_real {
ulonglong val_uint(void) { return (ulonglong) val_int_from_real(true); } ulonglong val_uint(void) { return (ulonglong) val_int_from_real(true); }
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return sizeof(double); } uint32 pack_length() const { return sizeof(double); }
uint row_pack_length() const { return pack_length(); } uint row_pack_length() const { return pack_length(); }
...@@ -2709,7 +2709,7 @@ class Field_null :public Field_str { ...@@ -2709,7 +2709,7 @@ class Field_null :public Field_str {
String *val_str(String *value,String *value2) String *val_str(String *value,String *value2)
{ value2->length(0); return value2;} { value2->length(0); return value2;}
bool is_equal(const Column_definition &new_field) const; bool is_equal(const Column_definition &new_field) const;
int cmp(const uchar *a, const uchar *b) { return 0;} int cmp(const uchar *a, const uchar *b) const { 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; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -2890,7 +2890,7 @@ class Field_timestamp :public Field_temporal { ...@@ -2890,7 +2890,7 @@ class Field_timestamp :public Field_temporal {
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 4; } uint32 pack_length() const { return 4; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -3003,7 +3003,7 @@ class Field_timestamp_hires :public Field_timestamp_with_dec { ...@@ -3003,7 +3003,7 @@ class Field_timestamp_hires :public Field_timestamp_with_dec {
} }
bool val_native(Native *to); bool val_native(Native *to);
my_time_t get_timestamp(const uchar *pos, ulong *sec_part) const; my_time_t get_timestamp(const uchar *pos, ulong *sec_part) const;
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
uint32 pack_length() const { return 4 + sec_part_bytes(dec); } uint32 pack_length() const { return 4 + sec_part_bytes(dec); }
uint size_of() const { return sizeof(*this); } uint size_of() const { return sizeof(*this); }
}; };
...@@ -3044,7 +3044,7 @@ class Field_timestampf :public Field_timestamp_with_dec { ...@@ -3044,7 +3044,7 @@ class Field_timestampf :public Field_timestamp_with_dec {
uint tmp= my_timestamp_binary_length(field_metadata); uint tmp= my_timestamp_binary_length(field_metadata);
DBUG_RETURN(tmp); DBUG_RETURN(tmp);
} }
int cmp(const uchar *a_ptr,const uchar *b_ptr) int cmp(const uchar *a_ptr,const uchar *b_ptr) const
{ {
return memcmp(a_ptr, b_ptr, pack_length()); return memcmp(a_ptr, b_ptr, pack_length());
} }
...@@ -3167,7 +3167,7 @@ class Field_date :public Field_date_common ...@@ -3167,7 +3167,7 @@ class Field_date :public Field_date_common
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 4; } uint32 pack_length() const { return 4; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -3205,7 +3205,7 @@ class Field_newdate :public Field_date_common ...@@ -3205,7 +3205,7 @@ class Field_newdate :public Field_date_common
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 3; } uint32 pack_length() const { return 3; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -3269,7 +3269,7 @@ class Field_time :public Field_temporal { ...@@ -3269,7 +3269,7 @@ class Field_time :public Field_temporal {
String *val_str(String*,String *); String *val_str(String*,String *);
bool get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate); bool get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 3; } uint32 pack_length() const { return 3; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -3329,7 +3329,7 @@ class Field_time_hires :public Field_time_with_dec { ...@@ -3329,7 +3329,7 @@ class Field_time_hires :public Field_time_with_dec {
} }
int reset(void); int reset(void);
bool get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate); bool get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return Type_handler_time::hires_bytes(dec); } uint32 pack_length() const { return Type_handler_time::hires_bytes(dec); }
uint size_of() const { return sizeof(*this); } uint size_of() const { return sizeof(*this); }
...@@ -3377,7 +3377,7 @@ class Field_timef :public Field_time_with_dec { ...@@ -3377,7 +3377,7 @@ class Field_timef :public Field_time_with_dec {
DBUG_ASSERT(length == Field_timef::pack_length()); DBUG_ASSERT(length == Field_timef::pack_length());
memcpy(to, ptr, length); memcpy(to, ptr, length);
} }
int cmp(const uchar *a_ptr, const uchar *b_ptr) int cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
return memcmp(a_ptr, b_ptr, pack_length()); return memcmp(a_ptr, b_ptr, pack_length());
} }
...@@ -3418,7 +3418,7 @@ class Field_datetime :public Field_temporal_with_date { ...@@ -3418,7 +3418,7 @@ class Field_datetime :public Field_temporal_with_date {
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return 8; } uint32 pack_length() const { return 8; }
void sql_type(String &str) const; void sql_type(String &str) const;
...@@ -3503,7 +3503,7 @@ class Field_datetime_hires :public Field_datetime_with_dec { ...@@ -3503,7 +3503,7 @@ class Field_datetime_hires :public Field_datetime_with_dec {
{ {
DBUG_ASSERT(dec); DBUG_ASSERT(dec);
} }
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
uint32 pack_length() const { return Type_handler_datetime::hires_bytes(dec); } uint32 pack_length() const { return Type_handler_datetime::hires_bytes(dec); }
bool get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate) bool get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate)
{ return Field_datetime_hires::get_TIME(ltime, ptr, fuzzydate); } { return Field_datetime_hires::get_TIME(ltime, ptr, fuzzydate); }
...@@ -3545,7 +3545,7 @@ class Field_datetimef :public Field_datetime_with_dec { ...@@ -3545,7 +3545,7 @@ class Field_datetimef :public Field_datetime_with_dec {
uint tmp= my_datetime_binary_length(field_metadata); uint tmp= my_datetime_binary_length(field_metadata);
DBUG_RETURN(tmp); DBUG_RETURN(tmp);
} }
int cmp(const uchar *a_ptr, const uchar *b_ptr) int cmp(const uchar *a_ptr, const uchar *b_ptr) const
{ {
return memcmp(a_ptr, b_ptr, pack_length()); return memcmp(a_ptr, b_ptr, pack_length());
} }
...@@ -3657,7 +3657,7 @@ class Field_string :public Field_longstr { ...@@ -3657,7 +3657,7 @@ class Field_string :public Field_longstr {
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
void update_data_type_statistics(Data_type_statistics *st) const void update_data_type_statistics(Data_type_statistics *st) const
{ {
...@@ -3783,8 +3783,8 @@ class Field_varstring :public Field_longstr { ...@@ -3783,8 +3783,8 @@ class Field_varstring :public Field_longstr {
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
int cmp_max(const uchar *, const uchar *, uint max_length); int cmp_max(const uchar *, const uchar *, uint max_length) const;
int cmp(const uchar *a,const uchar *b) int cmp(const uchar *a,const uchar *b) const
{ {
return cmp_max(a, b, ~0U); return cmp_max(a, b, ~0U);
} }
...@@ -3795,9 +3795,9 @@ class Field_varstring :public Field_longstr { ...@@ -3795,9 +3795,9 @@ class Field_varstring :public Field_longstr {
virtual uchar *pack(uchar *to, const uchar *from, uint max_length); virtual uchar *pack(uchar *to, const uchar *from, uint max_length);
virtual const uchar *unpack(uchar* to, const uchar *from, virtual const uchar *unpack(uchar* to, const uchar *from,
const uchar *from_end, uint param_data); const uchar *from_end, uint param_data);
int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0U); int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0U) const;
int key_cmp(const uchar *,const uchar*); int key_cmp(const uchar *,const uchar*) const;
int key_cmp(const uchar *str, uint length); int key_cmp(const uchar *str, uint length) const;
uint packed_col_length(const uchar *to, uint length); uint packed_col_length(const uchar *to, uint length);
uint max_packed_col_length(uint max_length); uint max_packed_col_length(uint max_length);
uint32 data_length(); uint32 data_length();
...@@ -3856,14 +3856,14 @@ class Field_varstring_compressed: public Field_varstring { ...@@ -3856,14 +3856,14 @@ class Field_varstring_compressed: public Field_varstring {
{ {
return (field_length - 1) / field_charset->mbmaxlen; return (field_length - 1) / field_charset->mbmaxlen;
} }
int cmp_max(const uchar *a_ptr, const uchar *b_ptr, uint max_len); int cmp_max(const uchar *a_ptr, const uchar *b_ptr, uint max_len) const;
/* /*
Compressed fields can't have keys as two rows may have different Compressed fields can't have keys as two rows may have different
compression methods or compression levels. compression methods or compression levels.
*/ */
int key_cmp(const uchar *str, uint length) int key_cmp(const uchar *str, uint length) const
{ DBUG_ASSERT(0); return 0; } { DBUG_ASSERT(0); return 0; }
using Field_varstring::key_cmp; using Field_varstring::key_cmp;
}; };
...@@ -4035,13 +4035,13 @@ class Field_blob :public Field_longstr { ...@@ -4035,13 +4035,13 @@ class Field_blob :public Field_longstr {
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
int cmp_max(const uchar *, const uchar *, uint max_length); int cmp_max(const uchar *, const uchar *, uint max_length) const;
int cmp(const uchar *a,const uchar *b) int cmp(const uchar *a,const uchar *b) const
{ return cmp_max(a, b, ~0U); } { return cmp_max(a, b, ~0U); }
int cmp(const uchar *a, uint32 a_length, const uchar *b, uint32 b_length); int cmp(const uchar *a, uint32 a_length, const uchar *b, uint32 b_length) const;
int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0U); int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0U) const;
int key_cmp(const uchar *,const uchar*); int key_cmp(const uchar *,const uchar*) const;
int key_cmp(const uchar *str, uint length); int key_cmp(const uchar *str, uint length) const;
/* Never update the value of min_val for a blob field */ /* Never update the value of min_val for a blob field */
bool update_min(Field *min_val, bool force_update) { return FALSE; } bool update_min(Field *min_val, bool force_update) { return FALSE; }
/* Never update the value of max_val for a blob field */ /* Never update the value of max_val for a blob field */
...@@ -4219,9 +4219,9 @@ class Field_blob_compressed: public Field_blob { ...@@ -4219,9 +4219,9 @@ class Field_blob_compressed: public Field_blob {
{ DBUG_ASSERT(0); return 0; } { DBUG_ASSERT(0); return 0; }
void set_key_image(const uchar *buff, uint length) void set_key_image(const uchar *buff, uint length)
{ DBUG_ASSERT(0); } { DBUG_ASSERT(0); }
int key_cmp(const uchar *a, const uchar *b) int key_cmp(const uchar *a, const uchar *b) const
{ DBUG_ASSERT(0); return 0; } { DBUG_ASSERT(0); return 0; }
int key_cmp(const uchar *str, uint length) int key_cmp(const uchar *str, uint length) const
{ DBUG_ASSERT(0); return 0; } { DBUG_ASSERT(0); return 0; }
Field *new_key_field(MEM_ROOT *root, TABLE *new_table, Field *new_key_field(MEM_ROOT *root, TABLE *new_table,
uchar *new_ptr, uint32 length, uchar *new_ptr, uint32 length,
...@@ -4232,6 +4232,7 @@ class Field_blob_compressed: public Field_blob { ...@@ -4232,6 +4232,7 @@ class Field_blob_compressed: public Field_blob {
class Field_enum :public Field_str { class Field_enum :public Field_str {
static void do_field_enum(Copy_field *copy_field); static void do_field_enum(Copy_field *copy_field);
longlong val_int(const uchar *) const;
protected: protected:
uint packlength; uint packlength;
public: public:
...@@ -4297,7 +4298,7 @@ class Field_enum :public Field_str { ...@@ -4297,7 +4298,7 @@ class Field_enum :public Field_str {
double val_real(void); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
int cmp(const uchar *,const uchar *); int cmp(const uchar *,const uchar *) const;
void sort_string(uchar *buff,uint length); void sort_string(uchar *buff,uint length);
uint32 pack_length() const { return (uint32) packlength; } uint32 pack_length() const { return (uint32) packlength; }
void store_type(ulonglong value); void store_type(ulonglong value);
...@@ -4444,7 +4445,7 @@ class Field_bit :public Field { ...@@ -4444,7 +4445,7 @@ class Field_bit :public Field {
virtual bool str_needs_quotes() { return TRUE; } virtual bool str_needs_quotes() { return TRUE; }
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
bool val_bool() { return val_int() != 0; } bool val_bool() { return val_int() != 0; }
int cmp(const uchar *a, const uchar *b) virtual int cmp(const uchar *a, const uchar *b) const
{ {
DBUG_ASSERT(ptr == a || ptr == b); DBUG_ASSERT(ptr == a || ptr == b);
if (ptr == a) if (ptr == a)
...@@ -4454,10 +4455,10 @@ class Field_bit :public Field { ...@@ -4454,10 +4455,10 @@ class Field_bit :public Field {
} }
int cmp_binary_offset(uint row_offset) int cmp_binary_offset(uint row_offset)
{ return cmp_offset(row_offset); } { return cmp_offset(row_offset); }
int cmp_max(const uchar *a, const uchar *b, uint max_length); int cmp_max(const uchar *a, const uchar *b, uint max_length) const;
int key_cmp(const uchar *a, const uchar *b) int key_cmp(const uchar *a, const uchar *b) const
{ return cmp_binary((uchar *) a, (uchar *) b); } { return cmp_binary((uchar *) a, (uchar *) b); }
int key_cmp(const uchar *str, uint length); int key_cmp(const uchar *str, uint length) const;
int cmp_offset(my_ptrdiff_t row_offset); int cmp_offset(my_ptrdiff_t row_offset);
bool update_min(Field *min_val, bool force_update) bool update_min(Field *min_val, bool force_update)
{ {
......
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