summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <serg@serg.mysql.com>2003-03-06 14:58:37 +0100
committerunknown <serg@serg.mysql.com>2003-03-06 14:58:37 +0100
commita60c0569f3957bd713cc52f13d20a0fe407469bc (patch)
tree2033cecc71658a2071b0e8011b59cd7f1cf49660
parent401f3fb41807062707ae949a9554765db3ba9351 (diff)
downloadmariadb-git-a60c0569f3957bd713cc52f13d20a0fe407469bc.tar.gz
trim spaces from CHAR() BINARY consistently
-rw-r--r--mysql-test/r/binary.result1
-rw-r--r--strings/ctype-bin.c17
2 files changed, 17 insertions, 1 deletions
diff --git a/mysql-test/r/binary.result b/mysql-test/r/binary.result
index 4d5eb62cc71..3534776c503 100644
--- a/mysql-test/r/binary.result
+++ b/mysql-test/r/binary.result
@@ -62,6 +62,7 @@ a b
hello hello
select * from t1 ignore index (b) where b="hello ";
a b
+hello hello
alter table t1 modify b tinytext not null, drop key b, add key (b(100));
select * from t1 where b="hello ";
a b
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index e7c3a941109..f34f63247ff 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -75,6 +75,21 @@ static int my_strnncoll_binary(CHARSET_INFO * cs __attribute__((unused)),
return cmp ? cmp : (int) (slen - tlen);
}
+static int my_strnncollsp_binary(CHARSET_INFO * cs,
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen)
+{
+ int len, cmp;
+
+ for ( ; slen && my_isspace(cs, s[slen-1]) ; slen--);
+ for ( ; tlen && my_isspace(cs, t[tlen-1]) ; tlen--);
+
+ len = ( slen > tlen ) ? tlen : slen;
+
+ cmp= memcmp(s,t,len);
+ return cmp ? cmp : (int) (slen - tlen);
+}
+
static void my_caseup_str_bin(CHARSET_INFO *cs __attribute__((unused)),
char *str __attribute__((unused)))
{
@@ -308,7 +323,7 @@ CHARSET_INFO my_charset_bin =
NULL, /* tab_from_uni */
0, /* strxfrm_multiply */
my_strnncoll_binary, /* strnncoll */
- my_strnncoll_binary,
+ my_strnncollsp_binary,
my_strnxfrm_bin, /* strxnfrm */
my_like_range_simple, /* like_range */
my_wildcmp_bin, /* wildcmp */