-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
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
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
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
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.
-adaddf49485d5c1bf71e4a1aa116eaebd77fef88f5a0061d441c13e3e58c330f
+e6f63526189bdd081af4f3de81ef2ba5e78dd2e722f9796eff9662bfd125a8c8
}
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);
+ }
}
}
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
** 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.
*/
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.
*/
}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);
}
sqlite3CloseSavepoints(db);
if( p->rc==SQLITE_OK ){
- if( pOp->p3 ){
+ if( pOp->p5 ){
db->nVdbeActive++;
db->nVdbeRead++;
db->nVdbeWrite++;
/* 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;
*/
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
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;