Add the new SQLITE_ABORT_ROLLBACK extended error code to be returned for
statements that are cancelled due to a rollback.
FossilOrigin-Name: 549f4fd00d8325c10099b100e5202b77ee1d83ad
diff --git a/manifest b/manifest
index 03fcacd..24d2878 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sthe\sROLLBACK\scommand\sso\sthat\spending\sstatements\sto\snot\sblock\sit.\s\sThe\npending\sstatements\sinstead\sreturn\sSQLITE_ABORT\supon\snext\saccess.\s\sNote:\sThis\ncauses\sseparate\sshared-cache\sconnections\sin\sread_uncommitted\smode\sto\sabort\sas\nwell.
-D 2012-02-13T16:43:16.086
+C Add\sthe\snew\sSQLITE_ABORT_ROLLBACK\sextended\serror\scode\sto\sbe\sreturned\sfor\nstatements\sthat\sare\scancelled\sdue\sto\sa\srollback.
+D 2012-02-13T17:01:51.864
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 3f79a373e57c3b92dabf76f40b065e719d31ac34
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -147,7 +147,7 @@
F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
F src/lempar.c 0ee69fca0be54cd93939df98d2aca4ca46f44416
F src/loadext.c f20382fbaeec832438a1ba7797bee3d3c8a6d51d
-F src/main.c 4aa7f1994a7cf810d7d754cb30202543b40bb726
+F src/main.c e936269fbc1af78cef79c27980e89209aeb20a07
F src/malloc.c 15afac5e59b6584efe072e9933aefb4230e74f97
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c b3677415e69603d6a0e7c5410a1b3731d55beda1
@@ -182,7 +182,7 @@
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
F src/select.c 232283a2e60d91cbd9a5ddf2f6f7ecf53d590075
F src/shell.c aa28f117033ba3e44b5eaaf2ad572222bcdfd66e
-F src/sqlite.h.in 371c30e4be94b9b0ea6400ed66663fcf8e891eb4
+F src/sqlite.h.in 4f3230be44e084a1e98f91bb031b922f33dcf3f8
F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477
F src/sqliteInt.h ea24b5f2d2e3ae7e0c1126a78c0e025ed4e98f4b
F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
@@ -240,11 +240,11 @@
F src/utf.c 890c67dcfcc7a74623c95baac7535aadfe265e84
F src/util.c 9e07bd67dfafe9c75b1da78c87ba030cebbb5388
F src/vacuum.c 0c0ba2242355c6048d65e2b333abe0f7c06348fa
-F src/vdbe.c 2afc9b0260dfe47786211e1eb815a52f27c661b7
+F src/vdbe.c 21c17c43e579789959efea50f100de60efbb955c
F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb
F src/vdbeInt.h 6ff4180a05683566a8835d12f7ec504b22932c82
F src/vdbeapi.c 3662b6a468a2a4605a15dfab313baa6dff81ad91
-F src/vdbeaux.c dce061e42f89cd6d0af15c03a854bcc89bd5deb0
+F src/vdbeaux.c 79cf42b70e211a52d664fc4d585ee2da0a64deac
F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb
F src/vdbemem.c fb0ac964ccbcd94f595eb993c05bfd9c52468a4a
F src/vdbesort.c b25814d385895544ebc8118245c8311ded7f81c9
@@ -763,7 +763,7 @@
F test/tkt-d635236375.test 9d37e988b47d87505bc9445be0ca447002df5d09
F test/tkt-d82e3f3721.test bcc0dfba658d15bab30fd4a9320c9e35d214ce30
F test/tkt-f3e5abed55.test 669bb076f2ac573c7398ce00f40cd0ca502043a9
-F test/tkt-f777251dc7a.test a3121f92f49af447572f7a3cde9f07806443c75d
+F test/tkt-f777251dc7a.test af6531446c64bfd268416f07b4df7be7f9c749d2
F test/tkt-f7b4edec.test d998a08ff2b18b7f62edce8e3044317c45efe6c7
F test/tkt-f973c7ac31.test 1da0ed15ec2c7749fb5ce2828cd69d07153ad9f4
F test/tkt-fa7bf5ec.test 9102dfea58aa371d78969da735f9392c57e2e035
@@ -856,7 +856,7 @@
F test/trace2.test 962175290996d5f06dc4402ca218bbfc7df4cb20
F test/trans.test 6e1b4c6a42dba31bd65f8fa5e61a2708e08ddde6
F test/trans2.test d5337e61de45e66b1fcbf9db833fa8c82e624b22
-F test/trans3.test d728abaa318ca364dc370e06576aa7e5fbed7e97
+F test/trans3.test 373ac5183cc56be69f48ae44090e7f672939f732
F test/trigger1.test de42feb7cd442787d38185ae74f5a1d7afa400cb
F test/trigger2.test 834187beafd1db383af0c659cfa49b0576832816
F test/trigger3.test d2c60d8be271c355d61727411e753181e877230a
@@ -989,10 +989,7 @@
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P 76bb649ee2633226324130f5898622c348f93769
-R 99d7e91688392c96521a36db0be702a8
-T *branch * nonblocking-rollback
-T *sym-nonblocking-rollback *
-T -sym-trunk *
+P 9b66c79e054c8a109d1ee8d35fed1c42814c330d
+R 1066e7f5b671895741b8f4418594178f
U drh
-Z 742e7385f2147385b0b62b5bc1ba4557
+Z 81fc65771654ca843df55065930e81f0
diff --git a/manifest.uuid b/manifest.uuid
index 92a77a8..67d01dd 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-9b66c79e054c8a109d1ee8d35fed1c42814c330d
\ No newline at end of file
+549f4fd00d8325c10099b100e5202b77ee1d83ad
\ No newline at end of file
diff --git a/src/main.c b/src/main.c
index 21a4084..dedfba4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -920,12 +920,21 @@
/* SQLITE_RANGE */ "bind or column index out of range",
/* SQLITE_NOTADB */ "file is encrypted or is not a database",
};
- rc &= 0xff;
- if( ALWAYS(rc>=0) && rc<(int)(sizeof(aMsg)/sizeof(aMsg[0])) && aMsg[rc]!=0 ){
- return aMsg[rc];
- }else{
- return "unknown error";
+ const char *zErr = "unknown error";
+ switch( rc ){
+ case SQLITE_ABORT_ROLLBACK: {
+ zErr = "abort due to ROLLBACK";
+ break;
+ }
+ default: {
+ rc &= 0xff;
+ if( ALWAYS(rc>=0) && rc<ArraySize(aMsg) && aMsg[rc]!=0 ){
+ zErr = aMsg[rc];
+ }
+ break;
+ }
}
+ return zErr;
}
/*
diff --git a/src/sqlite.h.in b/src/sqlite.h.in
index ed47378..6d2173d 100644
--- a/src/sqlite.h.in
+++ b/src/sqlite.h.in
@@ -456,6 +456,7 @@
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
+#define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8))
/*
** CAPI3REF: Flags For File Open Operations
diff --git a/src/vdbe.c b/src/vdbe.c
index fbbaf1a..81cc0c3 100644
--- a/src/vdbe.c
+++ b/src/vdbe.c
@@ -2806,7 +2806,7 @@
}else if( desiredAutoCommit!=db->autoCommit ){
if( iRollback ){
assert( desiredAutoCommit==1 );
- sqlite3RollbackAll(db, SQLITE_ABORT);
+ sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
db->autoCommit = 1;
}else if( (rc = sqlite3VdbeCheckFk(p, 1))!=SQLITE_OK ){
goto vdbe_return;
diff --git a/src/vdbeaux.c b/src/vdbeaux.c
index c85a635..ef339d1 100644
--- a/src/vdbeaux.c
+++ b/src/vdbeaux.c
@@ -2166,7 +2166,7 @@
/* We are forced to roll back the active transaction. Before doing
** so, abort any other statements this handle currently has active.
*/
- sqlite3RollbackAll(db, SQLITE_ABORT);
+ sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
}
@@ -2223,7 +2223,7 @@
}else if( p->errorAction==OE_Abort ){
eStatementOp = SAVEPOINT_ROLLBACK;
}else{
- sqlite3RollbackAll(db, SQLITE_ABORT);
+ sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
}
@@ -2243,7 +2243,7 @@
sqlite3DbFree(db, p->zErrMsg);
p->zErrMsg = 0;
}
- sqlite3RollbackAll(db, SQLITE_ABORT);
+ sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
}
diff --git a/test/tkt-f777251dc7a.test b/test/tkt-f777251dc7a.test
index 25bf667..af6f71a 100644
--- a/test/tkt-f777251dc7a.test
+++ b/test/tkt-f777251dc7a.test
@@ -42,7 +42,7 @@
BEGIN IMMEDIATE;
SELECT x, force_rollback(), EXISTS(SELECT 1 FROM t3 WHERE w=x) FROM t2;
}
-} {1 {callback requested query abort}}
+} {1 {abort due to ROLLBACK}}
do_test tkt-f7772-1.3 {
sqlite3_get_autocommit db
} {1}
diff --git a/test/trans3.test b/test/trans3.test
index ab7db6a..d5b316b 100644
--- a/test/trans3.test
+++ b/test/trans3.test
@@ -64,14 +64,13 @@
}
} errmsg]
lappend x $errmsg
-} {1 {cannot rollback transaction - SQL statements in progress}}
+} {1 {abort due to ROLLBACK}}
do_test trans3-1.6 {
set ::ecode
-} {SQLITE_BUSY}
+} {}
do_test trans3-1.7 {
- db eval COMMIT
db eval {SELECT * FROM t1}
-} {1 2 3 4 5}
+} {1 2 3 4}
unset -nocomplain ecode
finish_test