mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-28858 Wrong result with table elimination combined with not_null_range_scan
The bug was that build_notnull_conds_for_range_scans() did not take into account the join_tab is not yet sorted with constant tables first. Fixed the bug by testing explicitely if a table is a const table.
This commit is contained in:
@ -3635,6 +3635,25 @@ SELECT * FROM t1 LEFT JOIN t2 ON a = pk WHERE b >= 0 AND pk IS NULL;
|
||||
a pk b
|
||||
DROP TABLE t1, t2;
|
||||
SET @@optimizer_switch= @save_optimizer_switch;
|
||||
|
||||
# MDEV-28858 Wrong result with table elimination combined with
|
||||
# not_null_range_scan
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (10,1),(null,2);
|
||||
CREATE TABLE t2 (pk INT PRIMARY KEY) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
SET @save_optimizer_switch= @@optimizer_switch;
|
||||
SET optimizer_switch= 'not_null_range_scan=on';
|
||||
SELECT t1.b FROM t1 LEFT JOIN t2 ON t1.a = t2.pk WHERE t1.a IS NULL ORDER BY t1.b;
|
||||
b
|
||||
2
|
||||
SET optimizer_switch= 'not_null_range_scan=off';
|
||||
SELECT t1.b FROM t1 LEFT JOIN t2 ON t1.a = t2.pk WHERE t1.a IS NULL ORDER BY t1.b;
|
||||
b
|
||||
2
|
||||
SET @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
|
Reference in New Issue
Block a user