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