From a60c0569f3957bd713cc52f13d20a0fe407469bc Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 6 Mar 2003 14:58:37 +0100 Subject: [PATCH] trim spaces from CHAR() BINARY consistently --- mysql-test/r/binary.result | 1 + strings/ctype-bin.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) 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 */