1
2# Trailing garbage in string literals
3--eval CREATE TABLE t1 (a $TYPE);
4INSERT INTO t1 VALUES ('2001-01-01 00:00:00'),('2001-01-01 00:00:01');
5SELECT * FROM t1 WHERE a='2001-01-01 00:00:00x';
6SELECT * FROM t1 WHERE LENGTH(a) != 20;
7SELECT * FROM t1 WHERE LENGTH(a) != 20 AND a='2001-01-01 00:00:00x';
8EXPLAIN EXTENDED
9SELECT * FROM t1 WHERE LENGTH(a) != 20 AND a='2001-01-01 00:00:00x';
10EXPLAIN EXTENDED
11SELECT * FROM t1 WHERE LENGTH(a)!=30+RAND() AND a='2001-01-01 00:00:00x';
12DROP TABLE t1;
13
14# Leading spaces in string literals
15--eval CREATE TABLE t1 (a $TYPE);
16INSERT INTO t1 VALUES ('2001-01-01 00:00:00'),('2001-01-01 00:00:01');
17SELECT * FROM t1 WHERE LENGTH(a)=19;
18SELECT * FROM t1 WHERE LENGTH(a)=19 AND a=' 2001-01-01 00:00:00';
19EXPLAIN EXTENDED
20SELECT * FROM t1 WHERE LENGTH(a)=19 AND a=' 2001-01-01 00:00:00';
21EXPLAIN EXTENDED
22SELECT * FROM t1 WHERE LENGTH(a)=19+RAND() AND a=' 2001-01-01 00:00:00';
23# This should not propagate
24EXPLAIN EXTENDED
25SELECT * FROM t1 WHERE LENGTH(a)=30+RAND() AND a=' garbage ';
26DROP TABLE t1;
27
28# Trailing fractional digits in temporal literals
29--eval CREATE TABLE t1 (a $TYPE);
30INSERT INTO t1 VALUES ('2001-01-01 00:00:00'),('2001-01-01 00:00:01');
31SELECT * FROM t1 WHERE a=TIMESTAMP'2001-01-01 00:00:00.000000';
32SELECT * FROM t1 WHERE LENGTH(a)=19;
33SELECT * FROM t1 WHERE LENGTH(a)=19 AND a=TIMESTAMP'2001-01-01 00:00:00.000000';
34EXPLAIN EXTENDED
35SELECT * FROM t1 WHERE LENGTH(a)=19 AND a=TIMESTAMP'2001-01-01 00:00:00.000000';
36EXPLAIN EXTENDED
37SELECT * FROM t1 WHERE LENGTH(a)=30+RAND() AND a=TIMESTAMP'2001-01-01 00:00:00.000000';
38DROP TABLE t1;
39
40# Trailing fractional digits in temporal literals, the same precision
41--eval CREATE TABLE t1 (a $TYPE(6));
42INSERT INTO t1 VALUES ('2001-01-01 00:00:00.000000'),('2001-01-01 00:00:01.000000');
43SELECT * FROM t1 WHERE a=TIMESTAMP'2001-01-01 00:00:00.000000';
44SELECT * FROM t1 WHERE LENGTH(a)=26;
45SELECT * FROM t1 WHERE LENGTH(a)=26 AND a=TIMESTAMP'2001-01-01 00:00:00.000000';
46EXPLAIN EXTENDED
47SELECT * FROM t1 WHERE LENGTH(a)=26 AND a=TIMESTAMP'2001-01-01 00:00:00.000000';
48EXPLAIN EXTENDED
49SELECT * FROM t1 WHERE LENGTH(a)=40+RAND() AND a=TIMESTAMP'2001-01-01 00:00:00.000000';
50DROP TABLE t1;
51
52# DATETIME/TIMESTAMP column vs TIME literal
53SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30');
54--eval CREATE TABLE t1 (a $TYPE);
55INSERT INTO t1 VALUES ('2001-01-01 00:00:00'),('2001-01-01 00:00:01');
56SELECT * FROM t1 WHERE a=TIME'00:00:00';
57SELECT * FROM t1 WHERE LENGTH(a)=19;
58SELECT * FROM t1 WHERE LENGTH(a)=19 AND a=TIME'00:00:00';
59EXPLAIN EXTENDED
60SELECT * FROM t1 WHERE LENGTH(a)=19 AND a=TIME'00:00:00';
61EXPLAIN EXTENDED
62SELECT * FROM t1 WHERE LENGTH(a)=40+RAND() AND a=TIME'00:00:00';
63DROP TABLE t1;
64
65