summaryrefslogtreecommitdiff
path: root/lang/sql/sqlite/test/mallocA.test
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2015-02-17 17:25:57 +0000
committer <>2015-03-17 16:26:24 +0000
commit780b92ada9afcf1d58085a83a0b9e6bc982203d1 (patch)
tree598f8b9fa431b228d29897e798de4ac0c1d3d970 /lang/sql/sqlite/test/mallocA.test
parent7a2660ba9cc2dc03a69ddfcfd95369395cc87444 (diff)
downloadberkeleydb-master.tar.gz
Imported from /home/lorry/working-area/delta_berkeleydb/db-6.1.23.tar.gz.HEADdb-6.1.23master
Diffstat (limited to 'lang/sql/sqlite/test/mallocA.test')
-rw-r--r--lang/sql/sqlite/test/mallocA.test56
1 files changed, 52 insertions, 4 deletions
diff --git a/lang/sql/sqlite/test/mallocA.test b/lang/sql/sqlite/test/mallocA.test
index 08f69302..61e88a61 100644
--- a/lang/sql/sqlite/test/mallocA.test
+++ b/lang/sql/sqlite/test/mallocA.test
@@ -15,6 +15,7 @@
set testdir [file dirname $argv0]
source $testdir/tester.tcl
source $testdir/malloc_common.tcl
+set testprefix mallocA
# Only run these tests if memory debugging is turned on.
#
@@ -27,7 +28,7 @@ if {!$MEMDEBUG} {
# Construct a test database
#
-file delete -force test.db.bu
+forcedelete test.db.bu
db eval {
CREATE TABLE t1(a COLLATE NOCASE,b,c);
INSERT INTO t1 VALUES(1,2,3);
@@ -38,8 +39,7 @@ db eval {
CREATE TABLE t2(x,y,z);
}
db close
-file copy test.db test.db.bu
-
+copy_file test.db test.db.bu
do_malloc_test mallocA-1 -testdb test.db.bu -sqlbody {
ANALYZE
@@ -53,6 +53,7 @@ do_malloc_test mallocA-1.2 -testdb test.db.bu -sqlbody {
do_malloc_test mallocA-1.3 -testdb test.db.bu -sqlbody {
ANALYZE main.t1
}
+
ifcapable reindex {
do_malloc_test mallocA-2 -testdb test.db.bu -sqlbody {
REINDEX;
@@ -68,11 +69,58 @@ ifcapable reindex {
}
}
+reset_db
+sqlite3_db_config_lookaside db 0 0 0
+do_execsql_test 6-prep {
+ CREATE TABLE t1(a, b);
+ CREATE INDEX i1 ON t1(a, b);
+ INSERT INTO t1 VALUES('abc', 'w'); -- rowid=1
+ INSERT INTO t1 VALUES('abc', 'x'); -- rowid=2
+ INSERT INTO t1 VALUES('abc', 'y'); -- rowid=3
+ INSERT INTO t1 VALUES('abc', 'z'); -- rowid=4
+
+ INSERT INTO t1 VALUES('def', 'w'); -- rowid=5
+ INSERT INTO t1 VALUES('def', 'x'); -- rowid=6
+ INSERT INTO t1 VALUES('def', 'y'); -- rowid=7
+ INSERT INTO t1 VALUES('def', 'z'); -- rowid=8
+
+ ANALYZE;
+}
+
+do_faultsim_test 6.1 -faults oom* -body {
+ execsql { SELECT rowid FROM t1 WHERE a='abc' AND b='x' }
+} -test {
+ faultsim_test_result [list 0 2]
+}
+do_faultsim_test 6.2 -faults oom* -body {
+ execsql { SELECT rowid FROM t1 WHERE a='abc' AND b<'y' }
+} -test {
+ faultsim_test_result [list 0 {1 2}]
+}
+ifcapable stat3 {
+ do_test 6.3-prep {
+ execsql {
+ PRAGMA writable_schema = 1;
+ CREATE TABLE sqlite_stat4 AS
+ SELECT tbl, idx, neq, nlt, ndlt, sqlite_record(sample) AS sample
+ FROM sqlite_stat3;
+ }
+ } {}
+ do_faultsim_test 6.3 -faults oom* -body {
+ execsql {
+ ANALYZE sqlite_master;
+ SELECT rowid FROM t1 WHERE a='abc' AND b<'y';
+ }
+ } -test {
+ faultsim_test_result [list 0 {1 2}]
+ }
+}
+
# Ensure that no file descriptors were leaked.
do_test malloc-99.X {
catch {db close}
set sqlite_open_file_count
} {0}
-file delete -force test.db.bu
+forcedelete test.db.bu
finish_test