summaryrefslogtreecommitdiff
path: root/test/savepoint7.test
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2021-05-06 20:08:52 +0000
committerCy Schubert <cy@FreeBSD.org>2021-05-06 20:08:52 +0000
commit8b10604cd15958e62b9d4eb62bcb925272583db1 (patch)
treef18f8ed9fdfeeca2b9c856949a4cae7057ed84a6 /test/savepoint7.test
parenteccd5a4d3926c0716dd11bdf3242da56116f68c6 (diff)
Diffstat (limited to 'test/savepoint7.test')
-rw-r--r--test/savepoint7.test132
1 files changed, 0 insertions, 132 deletions
diff --git a/test/savepoint7.test b/test/savepoint7.test
deleted file mode 100644
index 59c3cd6cdca0..000000000000
--- a/test/savepoint7.test
+++ /dev/null
@@ -1,132 +0,0 @@
-# 2012 March 31
-#
-# The author disclaims copyright to this source code. In place of
-# a legal notice, here is a blessing:
-#
-# May you do good and not evil.
-# May you find forgiveness for yourself and forgive others.
-# May you share freely, never taking more than you give.
-#
-#***********************************************************************
-#
-# Focus on the interaction between RELEASE and ROLLBACK TO with
-# pending query aborts. See ticket [27ca74af3c083f787a1c44b11fbb7c53bdbbcf1e].
-#
-
-set testdir [file dirname $argv0]
-source $testdir/tester.tcl
-
-# The RELEASE of an inner savepoint should not effect pending queries.
-#
-do_test savepoint7-1.1 {
- db eval {
- CREATE TABLE t1(a,b,c);
- CREATE TABLE t2(x,y,z);
- INSERT INTO t1 VALUES(1,2,3);
- INSERT INTO t1 VALUES(4,5,6);
- INSERT INTO t1 VALUES(7,8,9);
- SAVEPOINT x1;
- }
- db eval {SELECT * FROM t1} {
- db eval {
- SAVEPOINT x2;
- CREATE TABLE IF NOT EXISTS t3(xyz);
- INSERT INTO t2 VALUES($a,$b,$c);
- RELEASE x2;
- }
- }
- db eval {SELECT * FROM t2; RELEASE x1}
-} {1 2 3 4 5 6 7 8 9}
-
-do_test savepoint7-1.2 {
- db eval {DELETE FROM t2;}
- db eval {SELECT * FROM t1} {
- db eval {
- SAVEPOINT x2;
- INSERT INTO t2 VALUES($a,$b,$c);
- RELEASE x2;
- }
- }
- db eval {SELECT * FROM t2;}
-} {1 2 3 4 5 6 7 8 9}
-
-do_test savepoint7-1.3 {
- db eval {DELETE FROM t2; BEGIN;}
- db eval {SELECT * FROM t1} {
- db eval {
- SAVEPOINT x2;
- INSERT INTO t2 VALUES($a,$b,$c);
- RELEASE x2;
- }
- }
- db eval {SELECT * FROM t2; ROLLBACK;}
-} {1 2 3 4 5 6 7 8 9}
-
-# However, a ROLLBACK of an inner savepoint will abort all queries, including
-# queries in outer contexts.
-#
-do_test savepoint7-2.1 {
- db eval {DELETE FROM t2; SAVEPOINT x1; CREATE TABLE t4(abc);}
- set rc [catch {
- db eval {SELECT * FROM t1} {
- db eval {
- SAVEPOINT x2;
- INSERT INTO t2 VALUES($a,$b,$c);
- ROLLBACK TO x2;
- }
- }
- } msg]
- db eval {RELEASE x1}
- list $rc $msg [db eval {SELECT * FROM t2}]
-} {1 {abort due to ROLLBACK} {}}
-
-do_test savepoint7-2.2 {
- db eval {DELETE FROM t2;}
- set rc [catch {
- db eval {SELECT * FROM t1} {
- db eval {
- SAVEPOINT x2;
- CREATE TABLE t5(pqr);
- INSERT INTO t2 VALUES($a,$b,$c);
- ROLLBACK TO x2;
- }
- }
- } msg]
- list $rc $msg [db eval {SELECT * FROM t2}]
-} {1 {abort due to ROLLBACK} {}}
-
-# Ticket: https://www.sqlite.org/src/tktview/7f7f8026eda387d544b
-# Segfault in the in-memory journal logic triggered by a tricky
-# combination of SAVEPOINT operations.
-#
-unset -nocomplain i
-for {set i 248} {$i<=253} {incr i} {
- do_test savepoint7-3.$i {
- db close
- forcedelete test.db
- sqlite3 db test.db
- db eval {
- PRAGMA page_size=1024;
- PRAGMA temp_store=MEMORY;
- BEGIN;
- CREATE TABLE t1(x INTEGER PRIMARY KEY, y TEXT);
- WITH RECURSIVE c(x) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<$::i)
- INSERT INTO t1(x,y) SELECT x*10, printf('%04d%.800c',x,'*') FROM c;
- SAVEPOINT one;
- SELECT count(*) FROM t1;
- WITH RECURSIVE c(x) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<$::i)
- INSERT INTO t1(x,y) SELECT x*10+1, printf('%04d%.800c',x,'*') FROM c;
- ROLLBACK TO one;
- SELECT count(*) FROM t1;
- SAVEPOINT twoB;
- WITH RECURSIVE c(x) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<10)
- INSERT INTO t1(x,y) SELECT x*10+2, printf('%04d%.800c',x,'*') FROM c;
- ROLLBACK TO twoB;
- RELEASE one;
- COMMIT;
- }
- } [list $i $i]
-}
-
-
-finish_test