From: drh <> Date: Wed, 27 Nov 2024 14:41:08 +0000 (+0000) Subject: Use the P5 rather than the P3 parameter of OP_AutoCommit to avoid an X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49e053f8737e6b06a37378eec5ae6e695df4d642;p=thirdparty%2Fsqlite.git Use the P5 rather than the P3 parameter of OP_AutoCommit to avoid an unnecessary conflict in the begin-concurrent branch. Fix some comments. FossilOrigin-Name: e6f63526189bdd081af4f3de81ef2ba5e78dd2e722f9796eff9662bfd125a8c8 --- diff --git a/manifest b/manifest index 240d844ecd..d82dfba980 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index e87efdf12d..3461379141 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -adaddf49485d5c1bf71e4a1aa116eaebd77fef88f5a0061d441c13e3e58c330f +e6f63526189bdd081af4f3de81ef2ba5e78dd2e722f9796eff9662bfd125a8c8 diff --git a/src/build.c b/src/build.c index ef67b9b11b..2d5d423df5 100644 --- a/src/build.c +++ b/src/build.c @@ -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); + } } } diff --git a/src/vdbe.c b/src/vdbe.c index 893b418ef0..9583675184 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -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++; diff --git a/src/wal.c b/src/wal.c index a2b53ba225..da4ed82cfb 100644 --- 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;