mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Add an sqlite3_db_config() option - SQLITE_DBCONFIG_STMT_SCANSTATS - for enabling and disabling the collection of sqlite3_stmt_scanstats() statistics in SQLITE_ENABLE_STMT_SCANSTATUS builds. Collection of statistics is disabled by default.
FossilOrigin-Name: 0f5579bef27b84ee855065cfe87703c51e1f9773906a9e0d4e4dafc90bd0e553
This commit is contained in:
@ -45,6 +45,11 @@ proc do_scanstatus_test {tn res} {
|
||||
uplevel [list do_test $tn [list set {} $ret] [list {*}$res]]
|
||||
}
|
||||
|
||||
do_execsql_test 1.0a { SELECT count(*) FROM t1, t2; } 6
|
||||
do_scanstatus_test 1.0b { }
|
||||
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
|
||||
do_execsql_test 1.1 { SELECT count(*) FROM t1, t2; } 6
|
||||
do_scanstatus_test 1.2 {
|
||||
nLoop 1 nVisit 2 nEst 1048576.0 zName t1 zExplain {SCAN t1}
|
||||
@ -94,6 +99,7 @@ do_scanstatus_test 1.10 {
|
||||
# Try a few different types of scans.
|
||||
#
|
||||
reset_db
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
do_execsql_test 2.1 {
|
||||
CREATE TABLE x1(i INTEGER PRIMARY KEY, j);
|
||||
INSERT INTO x1 VALUES(1, 'one');
|
||||
@ -277,6 +283,7 @@ do_scanstatus_test 4.2.2 {
|
||||
# Further tests of different scan types.
|
||||
#
|
||||
reset_db
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
proc tochar {i} {
|
||||
set alphabet {a b c d e f g h i j k l m n o p q r s t u v w x y z}
|
||||
return [lindex $alphabet [expr $i % [llength $alphabet]]]
|
||||
@ -365,6 +372,7 @@ do_eqp_test 5.5.1 {
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SCAN t3
|
||||
|--BLOOM FILTER ON t1 (c=?)
|
||||
`--SEARCH t1 USING AUTOMATIC COVERING INDEX (c=?)
|
||||
}
|
||||
do_execsql_test 5.5.2 {
|
||||
|
@ -19,6 +19,8 @@ ifcapable !scanstatus {
|
||||
return
|
||||
}
|
||||
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
|
||||
do_execsql_test 1.0 {
|
||||
CREATE TABLE t1(a, b);
|
||||
CREATE TABLE t2(x, y);
|
||||
@ -141,6 +143,7 @@ QUERY (nCycle=nnn)
|
||||
#-------------------------------------------------------------------------
|
||||
ifcapable fts5 {
|
||||
reset_db
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
do_execsql_test 2.0 {
|
||||
CREATE VIRTUAL TABLE ft USING fts5(a);
|
||||
INSERT INTO ft VALUES('abc');
|
||||
@ -158,6 +161,7 @@ QUERY (nCycle=nnn)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
do_execsql_test 3.0 {
|
||||
CREATE TABLE x1(a, b);
|
||||
CREATE TABLE x2(c, d);
|
||||
@ -173,11 +177,13 @@ do_graph_test 2.1 {
|
||||
QUERY (nCycle=nnn)
|
||||
--SCAN x1 (nCycle=nnn)
|
||||
--CREATE AUTOMATIC INDEX ON x2(c, d) (nCycle=nnn)
|
||||
--BLOOM FILTER ON x2 (c=?)
|
||||
--SEARCH x2 USING AUTOMATIC COVERING INDEX (c=?) (nCycle=nnn)
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
sqlite3_db_config db STMT_SCANSTATS 1
|
||||
do_execsql_test 4.0 {
|
||||
CREATE TABLE rt1 (id INTEGER PRIMARY KEY, x1, x2);
|
||||
CREATE TABLE rt2 (id, x1, x2);
|
||||
@ -189,6 +195,7 @@ do_graph_test 4.1 {
|
||||
QUERY (nCycle=nnn)
|
||||
--SCAN rt1 (nCycle=nnn)
|
||||
--CREATE AUTOMATIC INDEX ON rt2(x1, id, x2) (nCycle=nnn)
|
||||
--BLOOM FILTER ON rt2 (x1=?)
|
||||
--SEARCH rt2 USING AUTOMATIC COVERING INDEX (x1=?) (nCycle=nnn)
|
||||
}
|
||||
|
||||
@ -198,6 +205,7 @@ do_graph_test 4.2 {
|
||||
QUERY (nCycle=nnn)
|
||||
--SCAN rt1 (nCycle=nnn)
|
||||
--CREATE AUTOMATIC INDEX ON rt2(x1, id) (nCycle=nnn)
|
||||
--BLOOM FILTER ON rt2 (x1=?)
|
||||
--SEARCH rt2 USING AUTOMATIC COVERING INDEX (x1=?) (nCycle=nnn)
|
||||
}
|
||||
|
||||
@ -215,6 +223,7 @@ do_graph_test 4.4 {
|
||||
QUERY (nCycle=nnn)
|
||||
--SCAN rt1 (nCycle=nnn)
|
||||
--CREATE AUTOMATIC INDEX ON rt2(x1, id) WHERE <expr> (nCycle=nnn)
|
||||
--BLOOM FILTER ON rt2 (x1=?)
|
||||
--SEARCH rt2 USING AUTOMATIC PARTIAL COVERING INDEX (x1=?) (nCycle=nnn)
|
||||
}
|
||||
|
||||
@ -229,6 +238,7 @@ QUERY (nCycle=nnn)
|
||||
----USE TEMP B-TREE FOR GROUP BY
|
||||
--SCAN rt1 (nCycle=nnn)
|
||||
--CREATE AUTOMATIC INDEX ON v1(x1, cnt) (nCycle=nnn)
|
||||
--BLOOM FILTER ON v1 (x1=?)
|
||||
--SEARCH v1 USING AUTOMATIC COVERING INDEX (x1=?) (nCycle=nnn)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user