Commit c2383412 authored by unknown's avatar unknown
Browse files

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

of strings of unequal length. (Bug #8134)


mysql-test/t/compare.test:
  Add new regression test
strings/ctype-simple.c:
  Fix value used for swapping negative/positive values using XOR
mysql-test/r/compare.result:
  Add new test result
parent bc12f673
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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++)
    {