1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Fixed bug #28188: performance degradation for outer join queries to which

'not exists' optimization is applied.

In fact 'not exists' optimization did not work anymore after the patch
introducing the evaluate_join_record function had been applied.

Corrected the evaluate_join_record function to respect the 'not_exists'
optimization.


mysql-test/r/join_outer.result:
  Added a test case for bug #28188.
mysql-test/t/join_outer.test:
  Added a test case for bug #28188.
sql/sql_select.cc:
  Fixed bug #28188: performance degradation for outer join queries to which
  'not exists' optimization is applied.
  
  Corrected the evaluate_join_record function to respect the 'not_exists'
  optimization.
This commit is contained in:
unknown
2007-05-01 23:34:14 -07:00
parent 5352b41d29
commit 8e8ece72eb
3 changed files with 47 additions and 3 deletions

View File

@ -825,3 +825,23 @@ SELECT * FROM t1 LEFT JOIN t2 USING(f1) WHERE f1='bla';
SELECT * FROM t1 LEFT JOIN t2 USING(f1) WHERE f1='Bla';
DROP TABLE t1,t2;
#
# Bug 28188: 'not exists' optimization for outer joins
#
CREATE TABLE t1 (id int PRIMARY KEY, a varchar(8));
CREATE TABLE t2 (id int NOT NULL, b int NOT NULL, INDEX idx(id));
INSERT INTO t1 VALUES
(1,'aaaaaaa'), (5,'eeeeeee'), (4,'ddddddd'), (2,'bbbbbbb'), (3,'ccccccc');
INSERT INTO t2 VALUES
(3,10), (2,20), (5,30), (3,20), (5,10), (3,40), (3,30), (2,10), (2,40);
EXPLAIN
SELECT t1.id, a FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.b IS NULL;
flush status;
SELECT t1.id, a FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.b IS NULL;
show status like 'Handler_read%';
DROP TABLE t1,t2;