]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use the P5 rather than the P3 parameter of OP_AutoCommit to avoid an
authordrh <>
Wed, 27 Nov 2024 14:41:08 +0000 (14:41 +0000)
committerdrh <>
Wed, 27 Nov 2024 14:41:08 +0000 (14:41 +0000)
unnecessary conflict in the begin-concurrent branch.  Fix some comments.

FossilOrigin-Name: e6f63526189bdd081af4f3de81ef2ba5e78dd2e722f9796eff9662bfd125a8c8

manifest
manifest.uuid
src/build.c
src/vdbe.c
src/wal.c

index 240d844ecd218a5683fa6ad0869fec30a311fc5b..d82dfba980d43d82772606fb119efcaa5ef1f84d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\sthe\slatest\strunk\senhancements\sinto\sthe\scommit-and-continue\sbranch.
-D 2024-11-27T14:16:34.039
+C Use\sthe\sP5\srather\sthan\sthe\sP3\sparameter\sof\sOP_AutoCommit\sto\savoid\san\nunnecessary\sconflict\sin\sthe\sbegin-concurrent\sbranch.\s\sFix\ssome\scomments.
+D 2024-11-27T14:41:08.847
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -718,7 +718,7 @@ F src/btmutex.c 79a43670447eacc651519a429f6ece9fd638563cf95b469d6891185ddae2b522
 F src/btree.c 63ca6b647342e8cef643863cd0962a542f133e1069460725ba4461dcda92b03c
 F src/btree.h 18e5e7b2124c23426a283523e5f31a4bff029131b795bb82391f9d2f3136fc50
 F src/btreeInt.h 98aadb6dcb77b012cab2574d6a728fad56b337fc946839b9898c4b4c969e30b6
-F src/build.c 2966f47b7be312f602658ae50225bb9255264ac4d3df70332e00eea461216c98
+F src/build.c a933062f4bf848e67993adb20d587cc13de8e987fdb4e0e7191926ef3741278f
 F src/callback.c db3a45e376deff6a16c0058163fe0ae2b73a2945f3f408ca32cf74960b28d490
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c d35723024b963edce9c0fad5b3303e8bb9266083784844baed10a6dedfe26f3b
@@ -845,7 +845,7 @@ F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1
 F src/utf.c 8b29d9a5956569ea2700f869669b8ef67a9662ee5e724ff77ab3c387e27094ba
 F src/util.c ceebf912f673247e305f16f97f0bb7285fca1d37413b79680714a553a9021d33
 F src/vacuum.c b763b6457bd058d2072ef9364832351fd8d11e8abf70cbb349657360f7d55c40
-F src/vdbe.c 1782cffa53d4bce9d9f2694debadbec6bb1e736a7e2bfd3f33a8f3d813d4cdae
+F src/vdbe.c 0bcfd21c45c6af8e51ecec9ca10df2a00f5662a1f646aa0874b0ab791e7da8f3
 F src/vdbe.h c2549a215898a390de6669cfa32adba56f0d7e17ba5a7f7b14506d6fd5f0c36a
 F src/vdbeInt.h 2da01c73e8e3736a9015d5b04aa04d209bc9023d279d237d4d409205e921ea1e
 F src/vdbeapi.c 6353de05e8e78e497ccb33381ba5662ccc11c0339e5b1455faff01b6dacc3075
@@ -857,7 +857,7 @@ F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf8
 F src/vdbevtab.c fc46b9cbd759dc013f0b3724549cc0d71379183c667df3a5988f7e2f1bd485f3
 F src/vtab.c 316cd48e9320660db3047cd306cd056e4361180cebb4d0f10a39244e10c11422
 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
-F src/wal.c bb1c95e275548f7254ed73113d765bfdfb7975c836793d64a73770c096c5c86f
+F src/wal.c 73064f1e2d1776cdfb6f6d12943888d83d2f3ab63e76ff2f13a992311def9ca8
 F src/wal.h a1ec57934aa26c23805e00ddbc0cd5da5760028d3608d882647345de2e330a3e
 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
 F src/where.c 504d72098437ab97dfd3a71cea85e554381650f9dffde277c66603f3e34daddc
@@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 34cb6029cc79955b4e4790af2647d6db428b38757470f6990d8f8d8ed4979d8f 1e405c39a8405e2081ce061559d1aacc70055fc74ab86d886b973076a3fb124b
-R 8b29c403b991f325021bd2c641a4f72b
+P adaddf49485d5c1bf71e4a1aa116eaebd77fef88f5a0061d441c13e3e58c330f
+R 83fcae65ce6c28f2286562c48f0c43b7
 U drh
-Z 36ad3c28bbddd106bb3a55882759f3dd
+Z 914670720369e0a1c6bb504576c522e6
 # Remove this line to create a well-formed Fossil manifest.
index e87efdf12d97410a1622318ce5ae59bfdf9d4bcf..3461379141c4e7117e92daeb0a4d2331b09c0184 100644 (file)
@@ -1 +1 @@
-adaddf49485d5c1bf71e4a1aa116eaebd77fef88f5a0061d441c13e3e58c330f
+e6f63526189bdd081af4f3de81ef2ba5e78dd2e722f9796eff9662bfd125a8c8
index ef67b9b11bc6dbcd3e36dd2f9ec3332015ea81af..2d5d423df56dc7c6645d488c1b262049bd5a5b5a 100644 (file)
@@ -5249,8 +5249,11 @@ void sqlite3EndTransaction(Parse *pParse, int eType, int bContinueTrans){
   }
   v = sqlite3GetVdbe(pParse);
   if( v ){
-    sqlite3VdbeAddOp3(v, OP_AutoCommit, 1, isRollback, bContinueTrans);
-    if( bContinueTrans ) sqlite3BeginTransaction(pParse, TK_IMMEDIATE);
+    sqlite3VdbeAddOp2(v, OP_AutoCommit, 1, isRollback);
+    if( bContinueTrans ){
+      sqlite3VdbeChangeP5(v, 0x01);
+      sqlite3BeginTransaction(pParse, TK_IMMEDIATE);
+    }
   }
 }
 
index 893b418ef08c37b6488f3bb0676a2b7bb7c67786..958367518486e02ed9d103c22ec5cb71619be1d2 100644 (file)
@@ -3934,7 +3934,7 @@ case OP_Savepoint: {
   break;
 }
 
-/* Opcode: AutoCommit P1 P2 P3 * *
+/* Opcode: AutoCommit P1 P2 * * P5
 **
 ** Set the database auto-commit flag to P1 (1 or 0).  The current trasaction
 ** will commit when the VDBE halts if the auto-commit flag is 1.  The
@@ -3947,7 +3947,7 @@ case OP_Savepoint: {
 ** COMMIT fails if there are active writing VMs or active VMs that use
 ** shared cache.
 **
-** If P3 and P1 are both is 1, then COMMIT but also hang on to the write lock
+** If P5 and P1 are both is 1, then COMMIT but also hold on to the write lock
 ** for the transaction.  The P3 flag is used to help implement
 ** COMMIT AND CONTINUE TRANSACTION.
 */
@@ -3967,7 +3967,7 @@ case OP_AutoCommit: {
       assert( desiredAutoCommit==1 );
       sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
       db->autoCommit = 1;
-    }else if( desiredAutoCommit && db->nVdbeWrite>pOp->p3 ){
+    }else if( desiredAutoCommit && db->nVdbeWrite>pOp->p5 ){
       /* If this instruction implements a COMMIT and other VMs are writing
       ** return an error indicating that the other VMs must complete first.
       */
@@ -3980,8 +3980,8 @@ case OP_AutoCommit: {
     }else{
       db->autoCommit = (u8)desiredAutoCommit;
     }
-    assert( pOp->p3==0 || pOp->p3==1 );
-    sqlite3PagerHoldWrLock(db, pOp->p3);
+    assert( pOp->p5==0 || pOp->p5==1 );
+    sqlite3PagerHoldWrLock(db, pOp->p5);
     if( sqlite3VdbeHalt(p)==SQLITE_BUSY ){
       p->pc = (int)(pOp - aOp);
       db->autoCommit = (u8)(1-desiredAutoCommit);
@@ -3990,7 +3990,7 @@ case OP_AutoCommit: {
     }
     sqlite3CloseSavepoints(db);
     if( p->rc==SQLITE_OK ){
-      if( pOp->p3 ){
+      if( pOp->p5 ){
         db->nVdbeActive++;
         db->nVdbeRead++;
         db->nVdbeWrite++;
index a2b53ba22523d28554950306e4d95400bf54ed8b..da4ed82cfb6cc9f7bbc80ba3b772fb413f012d7e 100644 (file)
--- a/src/wal.c
+++ b/src/wal.c
@@ -3671,7 +3671,7 @@ int sqlite3WalBeginWriteTransaction(Wal *pWal){
   /* Cannot start a write transaction without first holding a read
   ** transaction. */
   assert( pWal->readLock>=0 );
-  // assert( pWal->writeLock==0 && pWal->iReCksum==0 );
+  testcase( pWal->writeLock );
 
   if( pWal->readOnly ){
     return SQLITE_READONLY;
@@ -4422,7 +4422,7 @@ int sqlite3WalCallback(Wal *pWal){
 */
 int sqlite3WalExclusiveMode(Wal *pWal, int op){
   int rc;
-  // assert( pWal->writeLock==0 );
+  testcase( pWal->writeLock!=0 );
   assert( pWal->exclusiveMode!=WAL_HEAPMEMORY_MODE || op==-1 );
 
   /* pWal->readLock is usually set, but might be -1 if there was a
@@ -4459,8 +4459,8 @@ int sqlite3WalExclusiveMode(Wal *pWal, int op){
   return rc;
 }
 
-/*
-** Set the temporary minimum lock level for the WAL subsystem.
+/* Set or clear the transient Wal.bHoldWrFlag boolean that prevents
+** the WAL_WRITE lock from being released.
 */
 void sqlite3WalHoldWrLock(Wal *pWal, int bOnOff){
   pWal->bHoldWrLock = bOnOff;