1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Show the creation of IN-operator Bloom filters in the EXPLAIN QUERY PLAN output.

FossilOrigin-Name: c10a1b99d47a4c93bdb16e646f6a21add570d6dbb34fd91a32f8abacdb28712b
This commit is contained in:
drh
2024-07-03 20:10:42 +00:00
parent c4c2589ff0
commit 5b070cfa0f
7 changed files with 39 additions and 24 deletions

View File

@ -275,14 +275,17 @@ do_eqp_test 6.1 {
| | `--LIST SUBQUERY xxxxxx
| | |--MATERIALIZE k
| | | `--SCAN 3 CONSTANT ROWS
| | `--SCAN k
| | |--SCAN k
| | `--CREATE BLOOM FILTER
| `--UNION ALL
| |--SEARCH t02 USING INDEX t02x (w=? AND x=? AND y>? AND y<?)
| `--LIST SUBQUERY xxxxxx
| `--SCAN k
| |--SCAN k
| `--CREATE BLOOM FILTER
|--SEARCH t0
`--LIST SUBQUERY xxxxxx
`--SCAN k
|--SCAN k
`--CREATE BLOOM FILTER
}
# ^^^^--- The key feature above is that the SEARCH for each subquery
# uses all three fields of the index w, x, and y. Prior to the push-down
@ -300,18 +303,21 @@ do_eqp_test 6.2 {
| | `--LIST SUBQUERY xxxxxx
| | |--CO-ROUTINE v1
| | | `--SCAN 3 CONSTANT ROWS
| | `--SCAN v1
| | |--SCAN v1
| | `--CREATE BLOOM FILTER
| `--UNION ALL
| |--SEARCH t02 USING INDEX t02x (w=? AND x=? AND y>? AND y<?)
| `--LIST SUBQUERY xxxxxx
| |--CO-ROUTINE v1
| | `--SCAN 3 CONSTANT ROWS
| `--SCAN v1
| |--SCAN v1
| `--CREATE BLOOM FILTER
|--SEARCH t0
`--LIST SUBQUERY xxxxxx
|--CO-ROUTINE v1
| `--SCAN 3 CONSTANT ROWS
`--SCAN v1
|--SCAN v1
`--CREATE BLOOM FILTER
}
do_eqp_test 6.3 {
SELECT max(z) FROM t0 WHERE w=123 AND x IN k1 AND y BETWEEN 44 AND 55;
@ -322,14 +328,17 @@ do_eqp_test 6.3 {
| |--LEFT-MOST SUBQUERY
| | |--SEARCH t01 USING INDEX t01x (w=? AND x=? AND y>? AND y<?)
| | `--LIST SUBQUERY xxxxxx
| | `--SCAN k1
| | |--SCAN k1
| | `--CREATE BLOOM FILTER
| `--UNION ALL
| |--SEARCH t02 USING INDEX t02x (w=? AND x=? AND y>? AND y<?)
| `--LIST SUBQUERY xxxxxx
| `--SCAN k1
| |--SCAN k1
| `--CREATE BLOOM FILTER
|--SEARCH t0
`--LIST SUBQUERY xxxxxx
`--SCAN k1
|--SCAN k1
`--CREATE BLOOM FILTER
}
finish_test