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

Replace OP_Begin, OP_Commit and OP_Rollback with OP_AutoCommit. (CVS 1500)

FossilOrigin-Name: b8ed812c92f2dbb4431d45aeb41646ceb53e0cbc
This commit is contained in:
danielk1977
2004-05-31 08:26:49 +00:00
parent a19b775db9
commit 1d850a72c2
24 changed files with 378 additions and 242 deletions

View File

@ -12,7 +12,7 @@
# focus of this script is testing the ATTACH and DETACH commands
# and related functionality.
#
# $Id: attach.test,v 1.18 2004/05/29 10:23:20 danielk1977 Exp $
# $Id: attach.test,v 1.19 2004/05/31 08:26:49 danielk1977 Exp $
#
set testdir [file dirname $argv0]
@ -347,6 +347,7 @@ do_test attach-3.7 {
do_test attach-3.8 {
execsql BEGIN
execsql BEGIN db2
execsql {UPDATE t2 SET x=0 WHERE 0} db2
catchsql {SELECT * FROM t2}
} {1 {database is locked}}
do_test attach-3.9 {
@ -364,6 +365,11 @@ do_test attach-3.12 {
do_test attach-3.13 {
catchsql {UPDATE t2 SET x=x+1 WHERE x=50}
} {1 {database is locked}}
# Change for version 3. Transaction is no longer rolled back
# for a locked database.
execsql {ROLLBACK}
do_test attach-3.14 {
# Unable to reinitialize the schema tables because the aux database
# is still locked.
@ -438,11 +444,13 @@ do_test attach-4.8 {
execsql {
ATTACH DATABASE 'test2.db' AS db2;
INSERT INTO db2.t3 VALUES(13,14);
pragma vdbe_trace = on;
SELECT * FROM db2.t4 UNION ALL SELECT * FROM main.t4;
}
} {db2.6 db2.13 main.11}
do_test attach-4.9 {
execsql {
pragma vdbe_trace = off;
INSERT INTO main.t3 VALUES(15,16);
SELECT * FROM db2.t4 UNION ALL SELECT * FROM main.t4;
}

View File

@ -12,7 +12,7 @@
# focus of this script is testing the ATTACH and DETACH commands
# and related functionality.
#
# $Id: attach2.test,v 1.9 2004/05/21 10:08:55 danielk1977 Exp $
# $Id: attach2.test,v 1.10 2004/05/31 08:26:49 danielk1977 Exp $
#
@ -51,6 +51,7 @@ db eval {DETACH t2}
do_test attach2-2.1 {
# lock test2.db then try to attach it. Should get an error.
db2 eval {BEGIN}
db2 eval {UPDATE t1 SET a = 0 WHERE 0}
catchsql {
ATTACH 'test2.db' AS t2;
}
@ -77,6 +78,7 @@ do_test attach2-2.5 {
do_test attach2-2.6 {
# lock test2.db and try to read from it. should get an error.
db2 eval BEGIN
db2 eval {UPDATE t1 SET a = 0 WHERE 0}
catchsql {
SELECT name FROM t2.sqlite_master;
}
@ -108,6 +110,10 @@ do_test attach2-2.10 {
do_test attach2-2.11 {
# when the write failed in the previous test, the transaction should
# have rolled back.
#
# Update for version 3: A transaction is no longer rolled back if a
# database is found to be busy.
execsql {rollback}
db2 eval ROLLBACK
execsql {
SELECT * FROM t1

View File

@ -13,7 +13,7 @@
# This file implements tests for the conflict resolution extension
# to SQLite.
#
# $Id: conflict.test,v 1.19 2003/08/05 13:13:39 drh Exp $
# $Id: conflict.test,v 1.20 2004/05/31 08:26:49 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -57,6 +57,8 @@ foreach {i conf cmd t0 t1 t2} {
17 ABORT INSERT 1 {} 1
18 ROLLBACK INSERT 1 {} {}
} {
if { $conf=={} } {
do_test conflict-1.$i {
if {$conf!=""} {set conf "ON CONFLICT $conf"}
set r0 [catch {execsql [subst {
@ -72,6 +74,8 @@ foreach {i conf cmd t0 t1 t2} {
set r2 [execsql {SELECT x FROM t2}]
list $r0 $r1 $r2
} [list $t0 $t1 $t2]
}
}
# Create tables for the first group of tests.

View File

@ -15,7 +15,7 @@
#
# sqlite_commit_hook
#
# $Id: hook.test,v 1.3 2004/01/15 02:44:03 drh Exp $
# $Id: hook.test,v 1.4 2004/05/31 08:26:49 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -65,7 +65,7 @@ do_test hook-3.5 {
do_test hook-3.6 {
set commit_cnt {}
proc commit_hook {} {
set ::commit_cnt [execsql {SELECT * FROM t2}]
set ::commit_cnt [execsql {SELECT * FROM t2}]
return 1
}
catchsql {
@ -73,7 +73,7 @@ do_test hook-3.6 {
}
} {1 {constraint failed}}
do_test hook-3.7 {
set commit_cnt
set ::commit_cnt
} {1 2 2 3 3 4 4 5 5 6 6 7}
do_test hook-3.8 {
execsql {SELECT * FROM t2}

View File

@ -11,7 +11,7 @@
# This file implements regression tests for SQLite library. The
# focus of this script is database locks.
#
# $Id: lock.test,v 1.20 2004/02/14 16:31:04 drh Exp $
# $Id: lock.test,v 1.21 2004/05/31 08:26:49 danielk1977 Exp $
set testdir [file dirname $argv0]
@ -60,6 +60,7 @@ do_test lock-1.9 {
} {2 1}
do_test lock-1.10 {
execsql {BEGIN TRANSACTION}
execsql {UPDATE t1 SET a = 0 WHERE 0}
execsql {SELECT * FROM t1}
} {2 1}
do_test lock-1.11 {
@ -155,7 +156,10 @@ integrity_check lock-1.23
#
do_test lock-2.1 {
execsql {BEGIN TRANSACTION}
set r [catch {execsql {BEGIN TRANSACTION} db2} msg]
execsql {UPDATE t1 SET a = 0 WHERE 0}
execsql {BEGIN TRANSACTION} db2
set r [catch {execsql {UPDATE t1 SET a = 0 WHERE 0} db2} msg]
execsql {ROLLBACK} db2
lappend r $msg
} {1 {database is locked}}
@ -222,6 +226,7 @@ do_test lock-2.6 {
} {0 {9 8} {1 2 3}}
do_test lock-2.7 {
execsql {BEGIN TRANSACTION}
execsql {UPDATE t1 SET a = 0 WHERE 0}
proc callback {file count} {
lappend ::callback_value $count
if {$count>2} {
@ -230,7 +235,8 @@ do_test lock-2.7 {
}
set ::callback_value {}
db2 busy callback
set r [catch {execsql {BEGIN TRANSACTION} db2} msg]
execsql {BEGIN TRANSACTION} db2
set r [catch {execsql {UPDATE t1 SET a = 0 WHERE 0} db2} msg]
execsql {ROLLBACK} db2
lappend r $msg
lappend r $::callback_value
@ -241,7 +247,9 @@ do_test lock-2.7 {
do_test lock-2.8 {
db2 timeout 400
execsql BEGIN
execsql {UPDATE t1 SET a = 0 WHERE 0}
catchsql BEGIN db2
catchsql {UPDATE t1 SET a = 0 WHERE 0} db2
} {1 {database is locked}}
do_test lock-2.9 {
db2 timeout 0
@ -267,6 +275,7 @@ do_test lock-4.1 {
db2 close
catch {db eval ROLLBACK}
db eval BEGIN
db eval {UPDATE t1 SET a=0 WHERE 0}
sqlite db2 ./test.db
set rc [catch {db2 eval {SELECT * FROM t1}} msg]
lappend rc $msg

View File

@ -13,7 +13,7 @@
# This file implements tests for miscellanous features that were
# left out of other test files.
#
# $Id: misc1.test,v 1.24 2004/05/19 20:41:04 drh Exp $
# $Id: misc1.test,v 1.25 2004/05/31 08:26:49 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -312,6 +312,7 @@ do_test misc1-10.10 {
#
do_test misc1-11.1 {
execsql {BEGIN}
execsql {UPDATE t1 SET a=0 WHERE 0}
sqlite db2 test.db
set rc [catch {db2 eval {SELECT count(*) FROM t1}} msg]
lappend rc $msg
@ -454,6 +455,7 @@ do_test misc1-14.1 {
file exists ./test.db-journal
} {0}
do_test misc1-14.2 {
execsql {UPDATE t1 SET a=0 WHERE 0}
file exists ../test.db-journal
} {1}
do_test misc1-14.3 {

View File

@ -11,7 +11,7 @@
# This file implements regression tests for SQLite library. The
# focus of this file is testing the 'progress callback'.
#
# $Id: progress.test,v 1.1 2003/10/18 09:37:27 danielk1977 Exp $
# $Id: progress.test,v 1.2 2004/05/31 08:26:50 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -49,11 +49,11 @@ do_test progress-1.0 {
do_test progress1.1 {
set counter 0
db progress 1 "[namespace code {incr counter}] ; expr 1"
execsql {
set rc [catch {execsql {
SELECT * FROM t1
}
set counter
} 1
}}]
list $counter $rc
} {1 1}
# Test that the query is rolled back when the progress callback returns
# non-zero.
@ -75,8 +75,8 @@ do_test progress1.2 {
# some data will have been inserted into the table by the time the progress
# callback abandons the query.
db progress $five_rows "expr 1"
execsql {
INSERT INTO t1 SELECT a+10 FROM t1 WHERE a < 7
catchsql {
INSERT INTO t1 SELECT a+10 FROM t1 WHERE a < 9
}
execsql {
SELECT count(*) FROM t1
@ -93,7 +93,7 @@ do_test progress1.3 {
INSERT INTO t1 VALUES(11)
}
db progress 1 "expr 1"
execsql {
catchsql {
INSERT INTO t1 VALUES(12)
}
db progress 0 ""

View File

@ -11,7 +11,7 @@
# This file implements regression tests for SQLite library. The
# focus of this script is database locks.
#
# $Id: trans.test,v 1.19 2004/03/08 13:26:18 drh Exp $
# $Id: trans.test,v 1.20 2004/05/31 08:26:50 danielk1977 Exp $
set testdir [file dirname $argv0]
@ -88,6 +88,7 @@ integrity_check trans-2.11
do_test trans-3.1 {
execsql {
BEGIN;
UPDATE one SET a = 0 WHERE 0;
SELECT a FROM one ORDER BY a;
}
} {1 2 3}
@ -183,6 +184,7 @@ do_test trans-4.2 {
do_test trans-4.3 {
set v [catch {execsql {
BEGIN TRANSACTION;
UPDATE two SET a = 0 WHERE 0;
SELECT a FROM two ORDER BY a;
} db} msg]
lappend v $msg