summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-01-16 15:52:37 +0400
committerunknown <bar@bar.mysql.r18.ru>2003-01-16 15:52:37 +0400
commitdf1a1075dd8cb63834f450ad91649eadfbc3e58f (patch)
tree5392d8644c98b10f50b4d104e6cbf891ff258f2b /sql/field.cc
parent80d251741239fd9c7477b44fcdc94520586a175c (diff)
downloadmariadb-git-df1a1075dd8cb63834f450ad91649eadfbc3e58f.tar.gz
field.cc:
strnxfrm for binary and simple charsets sql/field.cc: strnxfrm for binary and simple charsets
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc35
1 files changed, 8 insertions, 27 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 31ec6bf4a46..0ba2bbc5aa1 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -4591,38 +4591,19 @@ void Field_blob::sort_string(char *to,uint length)
{
char *blob;
uint blob_length=get_length();
-#ifdef USE_STRCOLL
- uint blob_org_length=blob_length;
-#endif
+
if (!blob_length)
bzero(to,length);
else
{
- if (blob_length > length)
- blob_length=length;
memcpy_fixed(&blob,ptr+packlength,sizeof(char*));
- if (binary())
- {
- memcpy(to,blob,blob_length);
- to+=blob_length;
- }
- else
- {
-#ifdef USE_STRCOLL
- if (use_strnxfrm(field_charset))
- {
- blob_length=my_strnxfrm(field_charset,
- (unsigned char *)to, length,
- (unsigned char *)blob, blob_org_length);
- if (blob_length >= length)
- return;
- to+=blob_length;
- }
- else
-#endif
- for (char *end=blob+blob_length ; blob != end ;)
- *to++=(char) field_charset->sort_order[(uint) (uchar) *blob++];
- }
+
+ blob_length=my_strnxfrm(field_charset,
+ (unsigned char *)to, length,
+ (unsigned char *)blob, blob_length);
+ if (blob_length >= length)
+ return;
+ to+=blob_length;
bzero(to,length-blob_length);
}
}