mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +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:
@ -203,7 +203,7 @@ a
|
||||
2
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check error The handler for the table doesn't support check/repair
|
||||
test.t1 check error The handler for the table doesn't support check
|
||||
drop table t1;
|
||||
create table t1 (a int,b varchar(20)) type=bdb;
|
||||
insert into t1 values (1,""), (2,"testing");
|
||||
|
48
mysql-test/r/bool.result
Normal file
48
mysql-test/r/bool.result
Normal file
@ -0,0 +1,48 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SELECT IF(NULL AND 1, 1, 2), IF(1 AND NULL, 1, 2);
|
||||
IF(NULL AND 1, 1, 2) IF(1 AND NULL, 1, 2)
|
||||
2 2
|
||||
SELECT NULL AND 1, 1 AND NULL, 0 AND NULL, NULL and 0;
|
||||
NULL AND 1 1 AND NULL 0 AND NULL NULL and 0
|
||||
NULL NULL 0 0
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(NULL);
|
||||
SELECT * FROM t1 WHERE IF(a AND 1, 0, 1);
|
||||
a
|
||||
0
|
||||
NULL
|
||||
SELECT * FROM t1 WHERE IF(1 AND a, 0, 1);
|
||||
a
|
||||
0
|
||||
NULL
|
||||
SELECT * FROM t1 where NOT(a AND 1);
|
||||
a
|
||||
0
|
||||
SELECT * FROM t1 where NOT(1 AND a);
|
||||
a
|
||||
0
|
||||
SELECT * FROM t1 where (a AND 1)=0;
|
||||
a
|
||||
0
|
||||
SELECT * FROM t1 where (1 AND a)=0;
|
||||
a
|
||||
0
|
||||
SELECT * FROM t1 where (1 AND a)=1;
|
||||
a
|
||||
1
|
||||
SELECT * FROM t1 where (1 AND a) IS NULL;
|
||||
a
|
||||
NULL
|
||||
SET @a=0, @b=0;
|
||||
SELECT * FROM t1 WHERE NULL AND (@a:=@a+1);
|
||||
a
|
||||
SELECT * FROM t1 WHERE NOT(a>=0 AND NULL AND (@b:=@b+1));
|
||||
a
|
||||
SELECT * FROM t1 WHERE a=2 OR (NULL AND (@a:=@a+1));
|
||||
a
|
||||
SELECT * FROM t1 WHERE NOT(a=2 OR (NULL AND (@b:=@b+1)));
|
||||
a
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
0 6
|
||||
DROP TABLE t1;
|
@ -165,7 +165,7 @@ level id parent_id
|
||||
1 1007 101
|
||||
optimize table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize error The handler for the table doesn't support check/repair
|
||||
test.t1 optimize error The handler for the table doesn't support optimize
|
||||
show keys from t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 0 PRIMARY 1 id A 87 NULL NULL BTREE
|
||||
@ -189,7 +189,7 @@ create table t1 (a int) type=innodb;
|
||||
insert into t1 values (1), (2);
|
||||
optimize table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize error The handler for the table doesn't support check/repair
|
||||
test.t1 optimize error The handler for the table doesn't support optimize
|
||||
delete from t1 where a = 1;
|
||||
select * from t1;
|
||||
a
|
||||
@ -208,7 +208,7 @@ create index skr on t1 (a);
|
||||
insert into t1 values (3,""), (4,"testing");
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze error The handler for the table doesn't support check/repair
|
||||
test.t1 analyze error The handler for the table doesn't support analyze
|
||||
show keys from t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 skr 1 a A 3 NULL NULL YES BTREE
|
||||
@ -724,7 +724,7 @@ world 2
|
||||
hello 1
|
||||
optimize table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize error The handler for the table doesn't support check/repair
|
||||
test.t1 optimize error The handler for the table doesn't support optimize
|
||||
show keys from t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
|
||||
|
@ -30,7 +30,7 @@ SELECT (NULL OR NULL) IS NULL;
|
||||
1
|
||||
select NULL AND 0, 0 and NULL;
|
||||
NULL AND 0 0 and NULL
|
||||
NULL 0
|
||||
0 0
|
||||
select inet_ntoa(null),inet_aton(null),inet_aton("122.256"),inet_aton("122.226."),inet_aton("");
|
||||
inet_ntoa(null) inet_aton(null) inet_aton("122.256") inet_aton("122.226.") inet_aton("")
|
||||
NULL NULL NULL NULL NULL
|
||||
|
28
mysql-test/t/bool.test
Normal file
28
mysql-test/t/bool.test
Normal 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;
|
Reference in New Issue
Block a user