mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Fix stat4-based cost estimates for vector range constraints.
FossilOrigin-Name: 18af74abc8ceae47ab9fbee3e3e5bb37db8fcba5
This commit is contained in:
@ -143,6 +143,70 @@ foreach {nm idx} {
|
||||
}
|
||||
}
|
||||
|
||||
ifcapable stat4 {
|
||||
do_execsql_test 3.0 {
|
||||
CREATE TABLE c1(a, b, c, d);
|
||||
INSERT INTO c1(a, b) VALUES(1, 'a');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'b');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'c');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'd');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'e');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'f');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'g');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'h');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'i');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'j');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'k');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'l');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'm');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'n');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'o');
|
||||
INSERT INTO c1(a, b) VALUES(1, 'p');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'a');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'b');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'c');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'd');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'e');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'f');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'g');
|
||||
INSERT INTO c1(a, b) VALUES(2, 'h');
|
||||
|
||||
INSERT INTO c1(c, d) SELECT a, b FROM c1;
|
||||
|
||||
CREATE INDEX c1ab ON c1(a, b);
|
||||
CREATE INDEX c1cd ON c1(c, d);
|
||||
ANALYZE;
|
||||
}
|
||||
|
||||
do_eqp_test 3.1.1 { SELECT * FROM c1 WHERE a=1 AND c=2 } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1cd (c=?)}
|
||||
}
|
||||
do_eqp_test 3.1.2 { SELECT * FROM c1 WHERE a=1 AND b>'d' AND c=2 } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1cd (c=?)}
|
||||
}
|
||||
do_eqp_test 3.1.3 { SELECT * FROM c1 WHERE a=1 AND b>'l' AND c=2 } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1ab (a=? AND b>?)}
|
||||
}
|
||||
|
||||
do_eqp_test 3.2.1 { SELECT * FROM c1 WHERE a=1 AND c>1 } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1cd (c>?)}
|
||||
}
|
||||
do_eqp_test 3.2.2 { SELECT * FROM c1 WHERE a=1 AND c>0 } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
|
||||
}
|
||||
do_eqp_test 3.2.3 { SELECT * FROM c1 WHERE a=1 AND c>=1 } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
|
||||
}
|
||||
do_eqp_test 3.2.4 { SELECT * FROM c1 WHERE a=1 AND (c, d)>(1, 'c') } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
|
||||
}
|
||||
do_eqp_test 3.2.5 { SELECT * FROM c1 WHERE a=1 AND (c, d)>(1, 'o') } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1cd (c>?)}
|
||||
}
|
||||
do_eqp_test 3.2.6 { SELECT * FROM c1 WHERE a=1 AND (c, +b)>(1, 'c') } {
|
||||
0 0 0 {SEARCH TABLE c1 USING INDEX c1ab (a=?)}
|
||||
}
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
Reference in New Issue
Block a user