mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Fix the skip-ahead-distinct optimization on joins for cases there the table
in the inner loop of the join does not contribute any columns to the result set. Proposed fix for ticket [ef9318757b152e3a2] FossilOrigin-Name: 2dcef5a9ae7f347da65207bf6bf612fb12e18e1a6704799322f0cf2a86154cfd
This commit is contained in:
@ -179,5 +179,24 @@ do_execsql_test 920 {
|
||||
wxYZ wxYz wxYz wxyZ wxyZ wxyz wxyz
|
||||
}
|
||||
|
||||
# Ticket https://sqlite.org/src/info/ef9318757b152e3a on 2017-11-21
|
||||
# Incorrect result due to a skip-ahead-distinct optimization on a
|
||||
# join where no rows of the inner loop appear in the result set.
|
||||
#
|
||||
db close
|
||||
sqlite3 db :memory:
|
||||
do_execsql_test 1000 {
|
||||
CREATE TABLE t1(a INTEGER PRIMARY KEY, b INTEGER);
|
||||
CREATE INDEX t1b ON t1(b);
|
||||
CREATE TABLE t2(x INTEGER PRIMARY KEY, y INTEGER);
|
||||
CREATE INDEX t2y ON t2(y);
|
||||
WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<49)
|
||||
INSERT INTO t1(b) SELECT x/10 - 1 FROM c;
|
||||
WITH RECURSIVE c(x) AS (VALUES(-1) UNION ALL SELECT x+1 FROM c WHERE x<19)
|
||||
INSERT INTO t2(x,y) SELECT x, 1 FROM c;
|
||||
SELECT DISTINCT y FROM t1, t2 WHERE b=x AND b<>-1;
|
||||
ANALYZE;
|
||||
SELECT DISTINCT y FROM t1, t2 WHERE b=x AND b<>-1;
|
||||
} {1 1}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user