1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Fixed that NULL and 0 returns 0 instead of NULL

This is coded to not cause a speed impact on top level AND expressions where we don't care if an AND expression returns 0 or NULL


mysql-test/r/bdb.result:
  Fix results after serges last patch
mysql-test/r/innodb.result:
  Fix results after serges last patch
mysql-test/r/null.result:
  Update for new AND handling of NULL
scripts/mysqld_safe.sh:
  Fix 'isroot' test to work even if user is not root
sql/item.h:
  Fixed that NULL and 0 returns 0 instead of NULL
sql/item_cmpfunc.cc:
  Fixed that NULL and 0 returns 0 instead of NULL
sql/item_cmpfunc.h:
  Fixed that NULL and 0 returns 0 instead of NULL
sql/sql_base.cc:
  Fixed that NULL and 0 returns 0 instead of NULL
sql/sql_parse.cc:
  Fixed that NULL and 0 returns 0 instead of NULL
sql/sql_select.cc:
  Fixed that NULL and 0 returns 0 instead of NULL
sql/sql_yacc.yy:
  Fixed that NULL and 0 returns 0 instead of NULL
This commit is contained in:
unknown
2002-11-11 15:57:35 +02:00
parent 1b6548d54d
commit 3165440cde
13 changed files with 148 additions and 32 deletions

28
mysql-test/t/bool.test Normal file
View File

@ -0,0 +1,28 @@
#
# Test of boolean operations with NULL
#
DROP TABLE IF EXISTS t1;
SELECT IF(NULL AND 1, 1, 2), IF(1 AND NULL, 1, 2);
SELECT NULL AND 1, 1 AND NULL, 0 AND NULL, NULL and 0;
create table t1 (a int);
insert into t1 values (0),(1),(NULL);
SELECT * FROM t1 WHERE IF(a AND 1, 0, 1);
SELECT * FROM t1 WHERE IF(1 AND a, 0, 1);
SELECT * FROM t1 where NOT(a AND 1);
SELECT * FROM t1 where NOT(1 AND a);
SELECT * FROM t1 where (a AND 1)=0;
SELECT * FROM t1 where (1 AND a)=0;
SELECT * FROM t1 where (1 AND a)=1;
SELECT * FROM t1 where (1 AND a) IS NULL;
# Verify that NULL optimisation works in AND clause:
SET @a=0, @b=0;
SELECT * FROM t1 WHERE NULL AND (@a:=@a+1);
SELECT * FROM t1 WHERE NOT(a>=0 AND NULL AND (@b:=@b+1));
SELECT * FROM t1 WHERE a=2 OR (NULL AND (@a:=@a+1));
SELECT * FROM t1 WHERE NOT(a=2 OR (NULL AND (@b:=@b+1)));
SELECT @a, @b;
DROP TABLE t1;