diff options
author | monty@mysql.com <> | 2005-10-14 00:04:52 +0300 |
---|---|---|
committer | monty@mysql.com <> | 2005-10-14 00:04:52 +0300 |
commit | 3da5f1c223cae7a20e2e5e2e15e32fa2c6bab03f (patch) | |
tree | 7187bdc049ca6658481e5d41b54214c1a5998a6f /strings | |
parent | 6f5baa1ebab0a71e87acb9fc19614b34a22513cd (diff) | |
download | mariadb-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.c | 21 |
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 */ |