summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authormonty@mysql.com <>2005-10-14 00:04:52 +0300
committermonty@mysql.com <>2005-10-14 00:04:52 +0300
commit3da5f1c223cae7a20e2e5e2e15e32fa2c6bab03f (patch)
tree7187bdc049ca6658481e5d41b54214c1a5998a6f /strings
parent6f5baa1ebab0a71e87acb9fc19614b34a22513cd (diff)
downloadmariadb-git-3da5f1c223cae7a20e2e5e2e15e32fa2c6bab03f.tar.gz
Move handling of suffix_length from strnxfrm_bin() to filesort to ensure proper sorting of all kind of binary objects
field::sort_key() now adds length last for varbinary/blob VARBINARY/BLOB is now sorted by filesort so that shorter strings comes before longer ones Fixed issues in test cases from last merge
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-bin.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index a931c6412b3..973a6ebf12a 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -373,29 +373,14 @@ static int my_wildcmp_bin(CHARSET_INFO *cs,
}
-uint my_strnxfrmlen_bin(CHARSET_INFO *cs __attribute__((unused)), uint len)
-{
- return len + 2;
-}
-
-
static int my_strnxfrm_bin(CHARSET_INFO *cs __attribute__((unused)),
uchar * dest, uint dstlen,
const uchar *src, uint srclen)
{
if (dest != src)
memcpy(dest, src, min(dstlen,srclen));
-
- if (dstlen >= srclen + 2)
- {
- if (dstlen > srclen + 2)
- bfill(dest + srclen, dstlen - srclen - 2, 0);
- dest[dstlen-2]= srclen >> 8;
- dest[dstlen-1]= srclen & 0xFF;
- }
- else if (dstlen > srclen)
+ if (dstlen > srclen)
bfill(dest + srclen, dstlen - srclen, 0);
-
return dstlen;
}
@@ -496,7 +481,7 @@ static MY_COLLATION_HANDLER my_collation_binary_handler =
my_strnncoll_binary,
my_strnncollsp_binary,
my_strnxfrm_bin,
- my_strnxfrmlen_bin,
+ my_strnxfrmlen_simple,
my_like_range_simple,
my_wildcmp_bin,
my_strcasecmp_bin,
@@ -539,7 +524,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
CHARSET_INFO my_charset_bin =
{
63,0,0, /* number */
- MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PRIMARY|MY_CS_STRNXFRM,/* state */
+ MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PRIMARY,/* state */
"binary", /* cs name */
"binary", /* name */
"", /* comment */