summaryrefslogtreecommitdiffstats
path: root/sql/field.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc76
1 files changed, 16 insertions, 60 deletions
diff --git a/sql/field.cc b/sql/field.cc
index e94d5c19..76b7ff61 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -4741,30 +4741,6 @@ bool Field_longlong::is_max()
single precision float
****************************************************************************/
-Field_float::Field_float(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
- uchar null_bit_arg,
- enum utype unireg_check_arg,
- const LEX_CSTRING *field_name_arg,
- decimal_digits_t dec_arg,
- bool zero_arg, bool unsigned_arg)
- :Field_real(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
- unireg_check_arg, field_name_arg,
- (dec_arg >= FLOATING_POINT_DECIMALS ? NOT_FIXED_DEC : dec_arg),
- zero_arg, unsigned_arg)
-{
-}
-
-Field_float::Field_float(uint32 len_arg, bool maybe_null_arg,
- const LEX_CSTRING *field_name_arg,
- decimal_digits_t dec_arg)
- :Field_real((uchar*) 0, len_arg, maybe_null_arg ? (uchar*) "": 0, (uint) 0,
- NONE, field_name_arg,
- (dec_arg >= FLOATING_POINT_DECIMALS ? NOT_FIXED_DEC : dec_arg),
- 0, 0)
-{
-}
-
-
int Field_float::store(const char *from,size_t len,CHARSET_INFO *cs)
{
int error;
@@ -4913,40 +4889,6 @@ Binlog_type_info Field_float::binlog_type_info() const
double precision floating point numbers
****************************************************************************/
-Field_double::Field_double(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
- uchar null_bit_arg,
- enum utype unireg_check_arg,
- const LEX_CSTRING *field_name_arg,
- decimal_digits_t dec_arg,
- bool zero_arg, bool unsigned_arg)
- :Field_real(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
- unireg_check_arg, field_name_arg,
- (dec_arg >= FLOATING_POINT_DECIMALS ? NOT_FIXED_DEC : dec_arg),
- zero_arg, unsigned_arg)
-{
-}
-
-Field_double::Field_double(uint32 len_arg, bool maybe_null_arg,
- const LEX_CSTRING *field_name_arg,
- decimal_digits_t dec_arg)
- :Field_real((uchar*) 0, len_arg, maybe_null_arg ? (uchar*) "" : 0, (uint) 0,
- NONE, field_name_arg,
- (dec_arg >= FLOATING_POINT_DECIMALS ? NOT_FIXED_DEC : dec_arg),
- 0, 0)
-{
-}
-
-Field_double::Field_double(uint32 len_arg, bool maybe_null_arg,
- const LEX_CSTRING *field_name_arg,
- decimal_digits_t dec_arg, bool not_fixed_arg)
- :Field_real((uchar*) 0, len_arg, maybe_null_arg ? (uchar*) "" : 0, (uint) 0,
- NONE, field_name_arg,
- (dec_arg >= FLOATING_POINT_DECIMALS ? NOT_FIXED_DEC : dec_arg),
- 0, 0)
-{
- not_fixed= not_fixed_arg;
-}
-
int Field_double::store(const char *from,size_t len,CHARSET_INFO *cs)
{
int error;
@@ -7743,7 +7685,20 @@ int Field_string::cmp(const uchar *a_ptr, const uchar *b_ptr) const
a_ptr, field_length,
b_ptr, field_length,
Field_string::char_length(),
- MY_STRNNCOLLSP_NCHARS_EMULATE_TRIMMED_TRAILING_SPACES);
+ 0);
+}
+
+
+int Field_string::cmp_prefix(const uchar *a_ptr, const uchar *b_ptr,
+ size_t prefix_char_len) const
+{
+ size_t field_len= table->field[field_index]->field_length;
+
+ return field_charset()->coll->strnncollsp_nchars(field_charset(),
+ a_ptr, field_len,
+ b_ptr, field_len,
+ prefix_char_len,
+ 0);
}
@@ -11396,6 +11351,7 @@ void Field::set_warning_truncated_wrong_value(const char *type_arg,
void Field::raise_note_cannot_use_key_part(THD *thd,
uint keynr, uint part,
const LEX_CSTRING &op,
+ CHARSET_INFO *op_collation,
Item *value,
Data_type_compatibility reason)
const
@@ -11416,7 +11372,7 @@ void Field::raise_note_cannot_use_key_part(THD *thd,
case Data_type_compatibility::INCOMPATIBLE_COLLATION:
{
const LEX_CSTRING colf(charset()->coll_name);
- const LEX_CSTRING colv(value->collation.collation->coll_name);
+ const LEX_CSTRING colv(op_collation->coll_name);
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
ER_UNKNOWN_ERROR,
"Cannot use key %`.*s part[%u] for lookup: "