]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with shared-cache mode and CHECK constraints causing one db handle...
authordan <dan@noemail.net>
Fri, 5 Oct 2012 16:30:10 +0000 (16:30 +0000)
committerdan <dan@noemail.net>
Fri, 5 Oct 2012 16:30:10 +0000 (16:30 +0000)
FossilOrigin-Name: c2c776ab73828374836af008aa320cc670c081b5

manifest
manifest.uuid
src/insert.c

index a089e5ebea84c44586c22b9641d51f95cd43389f..f6c4043cc11b1681ba3ceef85947f986e171facf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Shared-cache\smode\sfixes\sfor\sviews\sand\svirtual\stables.
-D 2012-10-04T19:33:00.992
+C Fix\sa\sproblem\swith\sshared-cache\smode\sand\sCHECK\sconstraints\scausing\sone\sdb\shandle\sto\sinvoke\sa\scollation\ssequence\sfunction\sregistered\swith\sanother.
+D 2012-10-05T16:30:10.692
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -138,7 +138,7 @@ F src/global.c fb44b11e02e06c995e6ed6642509edd23599d584
 F src/hash.c a4031441741932da9e7a65bee2b36b5d0e81c073
 F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970
 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
-F src/insert.c aefc97951fbac7f022d423170b9f74e82410bc13
+F src/insert.c b1d413e792e8f5e6747647625cb7c0e9f2e89e50
 F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
 F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
 F src/lempar.c 0ee69fca0be54cd93939df98d2aca4ca46f44416
@@ -1019,10 +1019,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9
-P ba2f492f957ab5556cd540e21a76ebb75efea725
-R a18cfd3cd9e6232f2cdfda7383e14e1c
-T *branch * shared-cache-fix
-T *sym-shared-cache-fix *
-T -sym-trunk *
+P 2b370dea704b59262c604af0efcef5660b194454
+R b8d4e5a86ac362df32fe82058e93d169
 U dan
-Z f1b4bf4b6486e150199936af81c3ec9e
+Z c2b386d7cf024f01e0a45b9a845b3c47
index 8362af0600593deafe385889488f60ac9113411c..a72d51b876ce253fc3cceb09920b939f63aee01e 100644 (file)
@@ -1 +1 @@
-2b370dea704b59262c604af0efcef5660b194454
\ No newline at end of file
+c2c776ab73828374836af008aa320cc670c081b5
\ No newline at end of file
index 4b81d5ddaa2792748eab93dbff1a965ae84dba17..6301dab54dec68104abbdb14358b3fddcef2e7f1 100644 (file)
@@ -1274,7 +1274,9 @@ void sqlite3GenerateConstraintChecks(
     onError = overrideError!=OE_Default ? overrideError : OE_Abort;
     for(i=0; i<pCheck->nExpr; i++){
       int allOk = sqlite3VdbeMakeLabel(v);
-      sqlite3ExprIfTrue(pParse, pCheck->a[i].pExpr, allOk, SQLITE_JUMPIFNULL);
+      Expr *pDup = sqlite3ExprDup(db, pCheck->a[i].pExpr, 0);
+      if( pDup==0 ) break;
+      sqlite3ExprIfTrue(pParse, pDup, allOk, SQLITE_JUMPIFNULL);
       if( onError==OE_Ignore ){
         sqlite3VdbeAddOp2(v, OP_Goto, 0, ignoreDest);
       }else{
@@ -1288,6 +1290,7 @@ void sqlite3GenerateConstraintChecks(
         sqlite3HaltConstraint(pParse, onError, zConsName, P4_DYNAMIC);
       }
       sqlite3VdbeResolveLabel(v, allOk);
+      sqlite3ExprDelete(db, pDup);
     }
   }
 #endif /* !defined(SQLITE_OMIT_CHECK) */