1--source include/have_innodb.inc
2
3#
4# testing of temporal data types with InnoDB
5#
6
7
8--echo #
9--echo # MDEV-9604 crash in Item::save_in_field with empty enum value
10--echo #
11
12SELECT TIME'00:00:00'='';
13
14CREATE TABLE t1 (a ENUM('a'), b TIME, c INT, KEY(b)) ENGINE=InnoDB;
15INSERT IGNORE INTO t1 VALUES ('','00:00:00',0);
16SELECT * FROM t1 WHERE b='';
17SELECT * FROM t1 IGNORE KEY (b) WHERE b='';
18SELECT * FROM t1 WHERE a=b;
19SELECT 1 FROM t1 WHERE (SELECT a FROM t1 group by c) = b;
20
21ALTER TABLE t1 ENGINE=MyISAM;
22SELECT * FROM t1 WHERE b='';
23SELECT * FROM t1 IGNORE KEY (b) WHERE b='';
24SELECT * FROM t1 WHERE a=b;
25SELECT 1 FROM t1 WHERE (SELECT a FROM t1 group by c) = b;
26DROP TABLE t1;
27
28
29SELECT DATE'0000-00-00'='';
30
31CREATE TABLE t1 (a ENUM('a'), b DATE, c INT, KEY(b)) ENGINE=InnoDB;
32INSERT IGNORE INTO t1 VALUES ('','0000-00-00',0);
33SELECT * FROM t1 WHERE b='';
34SELECT * FROM t1 IGNORE KEY (b) WHERE b='';
35SELECT * FROM t1 WHERE a=b;
36SELECT 1 FROM t1 WHERE (SELECT a FROM t1 group by c) = b;
37
38ALTER TABLE t1 ENGINE=MyISAM;
39SELECT * FROM t1 WHERE b='';
40SELECT * FROM t1 IGNORE KEY (b) WHERE b='';
41SELECT * FROM t1 WHERE a=b;
42SELECT 1 FROM t1 WHERE (SELECT a FROM t1 group by c) = b;
43DROP TABLE t1;
44
45
46SELECT TIMESTAMP'0000-00-00 00:00:00'='';
47
48CREATE TABLE t1 (a ENUM('a'), b DATETIME, c INT, KEY(b)) ENGINE=InnoDB;
49INSERT IGNORE INTO t1 VALUES ('','0000-00-00 00:00:00',0);
50SELECT * FROM t1 WHERE b='';
51SELECT * FROM t1 IGNORE KEY (b) WHERE b='';
52SELECT * FROM t1 WHERE a=b;
53SELECT 1 FROM t1 WHERE (SELECT a FROM t1 group by c) = b;
54
55ALTER TABLE t1 ENGINE=MyISAM;
56SELECT * FROM t1 WHERE b='';
57SELECT * FROM t1 IGNORE KEY (b) WHERE b='';
58SELECT * FROM t1 WHERE a=b;
59SELECT 1 FROM t1 WHERE (SELECT a FROM t1 group by c) = b;
60DROP TABLE t1;
61
62#
63# MDEV-15570 Assertion `Item_cache_temporal::field_type() != MYSQL_TYPE_TIME' failed in Item_cache_temporal::val_datetime_packed
64#
65CREATE TABLE t1 (d DATE) ENGINE=InnoDB;
66INSERT INTO t1 VALUES ('2012-12-21');
67SELECT * FROM t1 WHERE LEAST( UTC_TIME(), d );
68DROP TABLE t1;
69
70--echo #
71--echo # MDEV-17969 Assertion `name' failed in THD::push_warning_truncated_value_for_field
72--echo #
73
74CREATE TABLE t1 (c1 DATE , c2 TIMESTAMP) ENGINE=InnoDB;
75INSERT INTO t1  VALUES ('2006-07-17','0000-00-00 00:00:00');
76CREATE TABLE t2 (pk INT, a1 TIME) Engine=InnoDB;
77INSERT INTO t2 VALUES (6,'00:00:00');
78SET SESSION sql_mode= 'strict_all_tables,no_zero_date';
79--error ER_TRUNCATED_WRONG_VALUE
80CREATE TABLE tbl SELECT * FROM t1 WHERE t1.c1 = (SELECT c2 FROM t2 WHERE pk = 6);
81# ^^^ there is no column c2 in table t2
82DROP TABLE t1,t2;
83SET sql_mode=DEFAULT;
84
85--echo #
86--echo # End of 10.3 tests
87--echo #
88
89--echo #
90--echo # MDEV-19166 Assertion `!is_zero_datetime()' failed in Timestamp_or_zero_datetime::tv
91--echo #
92
93CREATE TABLE t1 (f TIMESTAMP DEFAULT 0) ENGINE=InnoDB;
94INSERT INTO t1 VALUES ('2024-02-29');
95SELECT * FROM t1 WHERE SUBSTR(1 FROM BIT_LENGTH(f) FOR DEFAULT(f));
96DROP TABLE t1;
97
98--echo #
99--echo # End of 10.4 tests
100--echo #
101