1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-32555 wrong result with an index and a partially null-rejecting condition

ref->null_rejecting is a key_part_map. we need to check
the bit corresponding to the particular store_key.
Note that there are no store_key objects for const ref parts.
This commit is contained in:
Sergei Golubchik
2023-10-24 23:50:26 +02:00
parent d2a867cdf0
commit b9e210bbf3
4 changed files with 75 additions and 14 deletions

View File

@ -1,5 +1,3 @@
drop table if exists x1;
drop table if exists x2;
set @tmp_subselect_nulls=@@optimizer_switch;
set optimizer_switch='semijoin=off';
create table x1(k int primary key, d1 int, d2 int);
@ -115,9 +113,44 @@ k d1 d2
set optimizer_switch= @tmp_subselect_nulls;
drop table x1;
drop table x2;
#
# MDEV-7339 Server crashes in Item_func_trig_cond::val_int
#
select (select 1, 2) in (select 3, 4);
(select 1, 2) in (select 3, 4)
0
select (select NULL, NULL) in (select 3, 4);
(select NULL, NULL) in (select 3, 4)
NULL
#
# End of 5.5 tests
#
#
# MDEV-32555 wrong result with an index and a partially null-rejecting condition
#
create table t1 (a int primary key);
insert t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t2 (
b int not null,
c int default null,
d int not null,
e int not null,
unique key (d,b,c)
);
insert t2 values (1,null,1,1),(1,null,2,2),(1,null,3,3),(1,null,4,4),(2,null,1,2),(3,null,1,3),(4,null,2,2),(4,null,1,4);
select (
select sum(t2_.e) from t2 t2_ where t2_.b = a and t2_.c <=> t2.c and t2_.d = 1
) x from t2 left join t1 on a = b;
x
1
2
3
4
1
4
1
1
drop table t1, t2;
#
# End of 10.10 tests
#