Fix error in string comparisons with CHAR(31) against the space-padding

of strings of unequal length. (Bug #8134)
This commit is contained in:
jimw@mysql.com 2005-01-28 17:18:35 -08:00
parent bcf1cb0f23
commit 691cd6c50d
3 changed files with 7 additions and 1 deletions

View File

@ -36,3 +36,6 @@ hex(a) STRCMP(a,'a') STRCMP(a,'a ')
6109 -1 -1
61 0 0
DROP TABLE t1;
SELECT CHAR(31) = '', '' = CHAR(31);
CHAR(31) = '' '' = CHAR(31)
0 0

View File

@ -30,3 +30,6 @@ CREATE TABLE t1 (a char(10) not null);
INSERT INTO t1 VALUES ('a'),('a\0'),('a\t'),('a ');
SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t1;
DROP TABLE t1;
# Bug #8134: Comparison against CHAR(31) at end of string
SELECT CHAR(31) = '', '' = CHAR(31);

View File

@ -153,7 +153,7 @@ int my_strnncollsp_simple(CHARSET_INFO * cs, const uchar *a, uint a_length,
/* put shorter key in s */
a_length= b_length;
a= b;
swap= -1; /* swap sign of result */
swap= -1^1; /* swap sign of result */
}
for (end= a + a_length-length; a < end ; a++)
{