1#
2# test of ISNULL()
3#
4--source include/default_optimizer_switch.inc
5
6--disable_warnings
7drop table if exists t1;
8--enable_warnings
9
10create table t1 (id int auto_increment primary key not null, mydate date not null);
11insert into t1 values (0,"2002-05-01"),(0,"2002-05-01"),(0,"2002-05-01");
12flush tables;
13select * from t1 where isnull(to_days(mydate));
14drop table t1;
15
16# End of 4.1 tests
17
18--echo #
19--echo # Bug#53933 crash when using uncacheable subquery in the having clause of outer query
20--echo #
21
22CREATE TABLE t1 (f1 INT);
23INSERT INTO t1 VALUES (0),(0);
24
25SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2
26FROM t1 GROUP BY f1 HAVING f2 = f2;
27SELECT RELEASE_LOCK('Bug#53933');
28
29DROP TABLE t1;
30
31--echo End of 5.0 tests
32
33#
34# Bug #41371    Select returns 1 row with condition "col is not null and col is null"
35#
36
37CREATE TABLE t1 (id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
38INSERT INTO t1( id ) VALUES ( NULL );
39SELECT t1.id  FROM t1  WHERE (id  is not null and id is null );
40DROP TABLE t1;
41
42--echo # End of 5.1 tests
43
44--echo #
45--echo # MDEV-14911: IS NULL for field from mergeable view
46--echo #
47
48CREATE TABLE t1 (d1 datetime NOT NULL);
49INSERT INTO t1 VALUES
50  ('0000-00-00 00:00:00'), ('0000-00-00 00:00:00'), ('1979-09-03 20:49:36');
51
52SELECT * FROM t1;
53SELECT * FROM t1 WHERE d1 IS NULL;
54EXPLAIN EXTENDED SELECT * FROM t1 WHERE d1 IS NULL;
55SELECT count(*) FROM t1 WHERE d1 IS NULL;
56
57CREATE VIEW v1 AS (SELECT * FROM t1);
58SELECT * FROM v1;
59SELECT * FROM v1 WHERE d1 IS NULL;
60EXPLAIN EXTENDED SELECT * FROM v1 WHERE d1 IS NULL;
61SELECT count(*) FROM v1 WHERE d1 IS NULL;
62
63SET @save_optimizer_switch=@@optimizer_switch;
64
65SET SESSION optimizer_switch='derived_merge=off';
66SELECT count(*) FROM ( SELECT * FROM t1 ) AS a1 WHERE d1 IS NULL;
67SET SESSION optimizer_switch='derived_merge=on';
68SELECT count(*) FROM ( SELECT * FROM t1 ) AS a1 WHERE d1 IS NULL;
69
70SET optimizer_switch=@save_optimizer_switch;
71
72CREATE TABLE t2 (d1 datetime NOT NULL);
73INSERT INTO t2 VALUES
74  ('1980-09-03 20:49:36'),  ('0000-00-00 00:00:00'), ('1979-09-03 20:49:36');
75
76SELECT * FROM t2 LEFT JOIN t1 ON t2.d1=t1.d1 WHERE t1.d1 IS NULL;
77EXPLAIN EXTENDED
78SELECT * FROM t2 LEFT JOIN t1 ON t2.d1=t1.d1 WHERE t1.d1 IS NULL;
79
80SELECT * FROM t2 LEFT JOIN v1 ON t2.d1=v1.d1 WHERE v1.d1 IS NULL;
81EXPLAIN EXTENDED
82SELECT * FROM t2 LEFT JOIN v1 ON t2.d1=v1.d1 WHERE v1.d1 IS NULL;
83
84DROP VIEW v1;
85DROP TABLE t1,t2;
86
87
88--echo #
89--echo # MDEV-15475: Assertion `!table || (!table->read_set ||
90--echo # bitmap_is_set(table->read_set, field_index))'
91--echo # failed on EXPLAIN EXTENDED with constant table and view
92--echo #
93
94CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=MyISAM;
95CREATE VIEW v1 AS SELECT * FROM t1;
96INSERT INTO t1 VALUES (1);
97EXPLAIN EXTENDED SELECT ISNULL(pk) FROM v1;
98EXPLAIN EXTENDED SELECT IFNULL(pk,0) FROM v1;
99# Cleanup
100DROP VIEW v1;
101DROP TABLE t1;
102
103--echo #
104--echo # End of 5.5 tests
105--echo #
106