]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the new SQLITE_ABORT_ROLLBACK extended error code to be returned for nonblocking-rollback
authordrh <drh@noemail.net>
Mon, 13 Feb 2012 17:01:51 +0000 (17:01 +0000)
committerdrh <drh@noemail.net>
Mon, 13 Feb 2012 17:01:51 +0000 (17:01 +0000)
statements that are cancelled due to a rollback.

FossilOrigin-Name: 549f4fd00d8325c10099b100e5202b77ee1d83ad

manifest
manifest.uuid
src/main.c
src/sqlite.h.in
src/vdbe.c
src/vdbeaux.c
test/tkt-f777251dc7a.test
test/trans3.test

index 03fcacd56dc4ae0a72c2b57e28517e0231a6b4e4..24d2878880d8541b79c80129d413b4b65c208340 100644 (file)
--- 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/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
 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/resolve.c 3d3e80a98f203ac6b9329e9621e29eda85ddfd40
 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/update.c d3076782c887c10e882996550345da9c4c9f9dea
 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-d11f09d36e.test fb44f7961aa6d4b632fb7b9768239832210b5fc7
 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/trace.test 4b36a41a3e9c7842151af6da5998f5080cdad9e5
 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/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 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
index 92a77a8c193ff5139f70148a59edc6353de239da..67d01dda7d401a9027bbe94ddc1f1c5d8b485ebf 100644 (file)
@@ -1 +1 @@
-9b66c79e054c8a109d1ee8d35fed1c42814c330d
\ No newline at end of file
+549f4fd00d8325c10099b100e5202b77ee1d83ad
\ No newline at end of file
index 21a40842cac03c4b707a0ae663aa4629ef7aea10..dedfba4a199b07063107e7a76e0955758b0a9840 100644 (file)
@@ -920,12 +920,21 @@ const char *sqlite3ErrStr(int rc){
     /* 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;
 }
 
 /*
index ed47378db317f90de7fe8c2250ac3de2f81e11b3..6d2173d6156b1dfeecc9c6d217a3e6261568edce 100644 (file)
@@ -456,6 +456,7 @@ int sqlite3_exec(
 #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
index fbbaf1af341e0fb23e5b8bc94aece6c6e2b4233d..81cc0c3d4cf3de875ffd7e5cbac33a38de54d7c1 100644 (file)
@@ -2806,7 +2806,7 @@ case OP_AutoCommit: {
   }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;
index c85a6358918b71069b9d58b94a075ea0a19d8f04..ef339d1e13363ef17cb9b1b321fa7e81fbac7375 100644 (file)
@@ -2166,7 +2166,7 @@ int sqlite3VdbeHalt(Vdbe *p){
           /* 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 @@ int sqlite3VdbeHalt(Vdbe *p){
       }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 @@ int sqlite3VdbeHalt(Vdbe *p){
           sqlite3DbFree(db, p->zErrMsg);
           p->zErrMsg = 0;
         }
-        sqlite3RollbackAll(db, SQLITE_ABORT);
+        sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
         sqlite3CloseSavepoints(db);
         db->autoCommit = 1;
       }
index 25bf667d7d90b7f2c81f6957b74de58e8d71942d..af6f71ad96d4e6060eec7db71c1292e5be46aaed 100644 (file)
@@ -42,7 +42,7 @@ do_test tkt-f7772-1.2 {
     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}
index ab7db6a277af5b6d53f88e3020e0924390a5db2c..d5b316bec8e8a79edf24762c20e333b34abd48e6 100644 (file)
@@ -64,14 +64,13 @@ do_test trans3-1.5 {
      }
   } 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