File: compare.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (155 lines) | stat: -rw-r--r-- 4,091 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#
# Bug when using comparions of strings and integers.
#

--disable_warnings
drop table if exists t1;
--enable_warnings

CREATE TABLE t1 (id CHAR(12) not null, PRIMARY KEY (id));
insert into t1 values ('000000000001'),('000000000002');
analyze table t1;
explain select * from t1 where id=000000000001;
select * from t1 where id=000000000001;
delete from t1 where id=000000000002;
select * from t1;
drop table t1;

#
# Check the following:
# "a"  == "a "
# "a\0" < "a"
# "a\0" < "a "

set names latin1;
SELECT 'a' = 'a ';
SELECT 'a\0' < 'a';
SELECT 'a\0' < 'a ';
SELECT 'a\t' < 'a';
SELECT 'a\t' < 'a ';

CREATE TABLE t1 (a char(10) not null) charset latin1;
INSERT INTO t1 VALUES ('a'),('a\0'),('a\t'),('a ');
SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t1;
DROP TABLE t1;
set names default;

# Bug #8134: Comparison against CHAR(31) at end of string
SELECT CHAR(31) = '', '' = CHAR(31);
# Extra test
SELECT CHAR(30) = '', '' = CHAR(30);

# End of 4.1 tests

#
#Bug #21159: Optimizer: wrong result after AND with different data types
#
create table t1 (a tinyint(1),b binary(1));
insert into t1 values (0x01,0x01);
select * from t1 where a=b;
select * from t1 where a=b and b=0x01;
drop table if exists t1;

#
# Bug #31887: DML Select statement not returning same results when executed
# in version 5
#

CREATE TABLE  t1 (b int(2) zerofill, c int(2) zerofill);
INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2);

SELECT CONCAT(b,c), CONCAT(b,c) = '0101' FROM t1;

analyze table t1;
--replace_column 10 x
EXPLAIN SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';

CREATE TABLE t2 (a int);
INSERT INTO t2 VALUES (1),(2);

SELECT a, 
  (SELECT COUNT(*) FROM t1 
   WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x 
FROM t2 ORDER BY a;

analyze table t1;
analyze table t2;
--replace_column 10 x
EXPLAIN 
SELECT a, 
  (SELECT COUNT(*) FROM t1 
   WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x 
FROM t2 ORDER BY a;

DROP TABLE t1,t2;

#
# Bug #39353: Multiple conditions on timestamp column crashes server
#
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
CREATE TABLE t1 (a TIMESTAMP); 
INSERT INTO t1 VALUES (NOW()),(NOW()),(NOW());
SELECT * FROM t1 WHERE a > '2008-01-01' AND a = '0000-00-00';
DROP TABLE t1;
SET sql_mode = default;
--echo End of 5.0 tests

#
# Bug #11764818 57692: Crash in item_func_in::val_int() with ZEROFILL
#

CREATE TABLE t1(a INT ZEROFILL);
SELECT 1 FROM t1 WHERE t1.a IN (1, t1.a) AND t1.a=2;
DROP TABLE t1;

--echo
--echo Bug #27452148: ASSERTION FAILED: (SLEN % 4) == 0 IN
--echo                MY_STRNNCOLLSP_UTF32_BIN
--echo
SET NAMES latin1;
CREATE TABLE t1(a CHAR(10) CHARACTER SET utf32 COLLATE utf32_bin);
INSERT INTO t1 VALUES('a'),('b'),('c');
SELECT ROW('1', '1') > ROW(a, '1') FROM t1;
SELECT ROW(a, '1') > ROW('1', '1') FROM t1;
DROP TABLE t1;
SET NAMES default;

--echo #
--echo # Bug#30961924 AND OF TWO PREDICATES WITH DIFFERENT COLLATION ON SAME COLUMN GIVES WRONG RESULT
--echo #

CREATE TABLE t1(
  firstname CHAR(20),
  lastname CHAR(20)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

INSERT INTO t1 VALUES("john","doe"), ("John","Doe");

# Case-insensitive comparison, john is John
SELECT * FROM t1 WHERE firstname = 'john';
SELECT * FROM t1 WHERE firstname = 'john' COLLATE utf8mb4_0900_ai_ci;
# Case-insensitive comparison, john is not John
SELECT * FROM t1 WHERE firstname = 'john' COLLATE utf8mb4_0900_as_cs;
SELECT * FROM t1
WHERE firstname = 'john' COLLATE utf8mb4_0900_ai_ci AND
      firstname = 'john' COLLATE utf8mb4_0900_as_cs;
SELECT * FROM t1
WHERE firstname = 'john' COLLATE utf8mb4_0900_as_cs AND
      firstname = 'john' COLLATE utf8mb4_0900_ai_ci;
DROP TABLE t1;

--echo Comparisons with parameters and extreme values

CREATE TABLE t(a DECIMAL(30,0));
INSERT INTO t VALUES(0);
SELECT * FROM t;
set @maxint=18446744073709551615;
SELECT @maxint;

# was wrong empty
SELECT * FROM t WHERE a < @maxint;
SELECT * FROM t WHERE a < 18446744073709551615;
SELECT * FROM t WHERE 0 < 18446744073709551615;
SELECT * FROM t WHERE 0 < @maxint;
DROP TABLE t;