summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc25
1 files changed, 19 insertions, 6 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 06744541fcc..c4f3db039c4 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -6509,7 +6509,13 @@ int Field_string::cmp(const uchar *a_ptr, const uchar *b_ptr)
void Field_string::sort_string(uchar *to,uint length)
{
uint tmp __attribute__((unused))=
- my_strnxfrm(field_charset, to, length, ptr, field_length);
+ field_charset->coll->strnxfrm(field_charset,
+ to, length,
+ char_length() *
+ field_charset->strxfrm_multiply,
+ ptr, field_length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(tmp == length);
}
@@ -6966,9 +6972,13 @@ void Field_varstring::sort_string(uchar *to,uint length)
length-= length_bytes;
}
- tot_length= my_strnxfrm(field_charset,
- to, length, ptr + length_bytes,
- tot_length);
+ tot_length= field_charset->coll->strnxfrm(field_charset,
+ to, length,
+ char_length() *
+ field_charset->strxfrm_multiply,
+ ptr + length_bytes, tot_length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(tot_length == length);
}
@@ -7583,8 +7593,11 @@ void Field_blob::sort_string(uchar *to,uint length)
}
memcpy(&blob, ptr+packlength, sizeof(char*));
- blob_length=my_strnxfrm(field_charset,
- to, length, blob, blob_length);
+ blob_length= field_charset->coll->strnxfrm(field_charset,
+ to, length, length,
+ blob, blob_length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(blob_length == length);
}
}