1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Add SQL scalar function rtreecheck() to the rtree module. For running checks

to ensure the shadow tables used by an rtree virtual table are internally
consistent.

FossilOrigin-Name: dde0bb3eab1316c3247b1755594527ca70955aab4ad4907190731f7ec092b327
This commit is contained in:
dan
2017-10-25 16:38:34 +00:00
parent b5d013edd1
commit 1917e92fdb
18 changed files with 623 additions and 34 deletions

View File

@ -108,6 +108,12 @@ do_corruption_tests rtreeA-1.1 {
4 "SELECT * FROM t1 WHERE x1<10 AND x2>12"
}
do_execsql_test rtreeA-1.1.1 {
SELECT rtreecheck('main', 't1')
} {{Node 1 missing from database
Wrong number of entries in %_rowid table - expected 0, actual 500
Wrong number of entries in %_parent table - expected 0, actual 23}}
do_execsql_test rtreeA-1.2.0 { DROP TABLE t1_node } {}
do_corruption_tests rtreeA-1.2 -error "database disk image is malformed" {
1 "SELECT * FROM t1"
@ -157,6 +163,10 @@ do_corruption_tests rtreeA-3.1 {
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
}
do_execsql_test rtreeA-3.1.0.3 {
SELECT rtreecheck('main', 't1')!="ok"
} {1}
do_test rtreeA-3.2.0 { set_tree_depth t1 1000 } {1000}
do_corruption_tests rtreeA-3.2 {
1 "SELECT * FROM t1"
@ -176,6 +186,12 @@ do_corruption_tests rtreeA-3.3 {
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
}
do_execsql_test rtreeA-3.3.3.4 {
SELECT rtreecheck('main', 't1')
} {{Rtree depth out of range (65535)
Wrong number of entries in %_rowid table - expected 0, actual 499
Wrong number of entries in %_parent table - expected 0, actual 23}}
#-------------------------------------------------------------------------
# Set the "number of entries" field on some nodes incorrectly.
#
@ -203,6 +219,10 @@ do_corruption_tests rtreeA-5.1 {
2 "DELETE FROM t1"
}
do_execsql_test rtreeA-5.2 {
SELECT rtreecheck('main', 't1')!="ok"
} {1}
#-------------------------------------------------------------------------
# Add some bad entries to the %_parent table.
#
@ -216,6 +236,10 @@ do_corruption_tests rtreeA-6.1 {
2 "UPDATE t1 SET x1=x1+1, x2=x2+1"
}
do_execsql_test rtreeA-6.2 {
SELECT rtreecheck('main', 't1')!="ok"
} {1}
#-------------------------------------------------------------------------
# Truncated blobs in the _node table.
#
@ -233,5 +257,5 @@ do_test rtreeA-7.120 {
} {SQLITE_CORRUPT_VTAB}
finish_test