]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use fewer CPU cycles to commit a read transaction.
authordrh <>
Sat, 19 Jul 2025 18:17:06 +0000 (18:17 +0000)
committerdrh <>
Sat, 19 Jul 2025 18:17:06 +0000 (18:17 +0000)
FossilOrigin-Name: 861e55656abb208b4f1f2c8808c76c0454427af85a8930ab53f9c053605f39c7

manifest
manifest.uuid
src/vdbeaux.c

index b9602f1fec0b02f584dad9946f0294fcfec0ef06..553c8345e1047f91ee9e88932c853bd13790afbd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sSQLITE_SELFORDER1\sto\sJS's\ssqlite3.capi\snamespace.\sIt's\sonly\suseful\swhen\sbuilt\swith\san\ssqlite3.c\swhich\sitself\swas\screated\swith\s-DSQLITE_ENABLE_ORDERED_SET_AGGREGATES,\swhich\sthe\scanonical\sbuild\sdoes\snot\sdo\sbut\scustom\sbuilds\smay.
-D 2025-07-18T22:18:41.955
+C Use\sfewer\sCPU\scycles\sto\scommit\sa\sread\stransaction.
+D 2025-07-19T18:17:06.185
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -857,7 +857,7 @@ F src/vdbe.c e505b8b879a330e8dafbe3ed9582eae2fc671b44a64748d1b58c07e4e0f527da
 F src/vdbe.h ea1f1b52f0efe422f80d88da3c57e4eadc72856e29a22f1ff08e502ec6ba5f08
 F src/vdbeInt.h 626465ff6d673f73a2476dc230b7cd07bdaf4acea9d4ecceaa12a5174bb2c8d7
 F src/vdbeapi.c f9a4881a9674fec3fa13da35044a1484d3c4b95f9ec891cc8ffb02ef2b7a41df
-F src/vdbeaux.c ed06d2892e830b7ad158f81b2b610c918fbb36a0b717b48d299daca80e8264c6
+F src/vdbeaux.c 933a024b84154776b6b8d01f0de266d6d512530962e9793cf90fe1be5bb3697a
 F src/vdbeblob.c b3f0640db9642fbdc88bd6ebcc83d6009514cafc98f062f675f2c8d505d82692
 F src/vdbemem.c e67d9c6484d868c879d20c70d00bf4a9058082f1d4058607ca15d50eb3aebc21
 F src/vdbesort.c cb6f472e83ca12c46aa7de0ac0a9d11458b357986f2617a1c90dfb19a542ecbe
@@ -2213,8 +2213,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P b66fcb61a1d044fa18419ab382a8b159e9b6bb52956917d8a9de4dccf8dc9a87
-R e47f8ee81c414bf3cf4be52d123f908b
-U stephan
-Z d279856fb215404c8ca1d35b06ec79fb
+P fdd15e938ccfac9e871d781d1c8fe8be6dbd9e8cbbcb8b7f0b035e5ceebb8746
+R 5e8f8aa890f0c52df0b513b08f31622c
+U drh
+Z 7befb42110fb8e7ba3c32234f7f25e7b
 # Remove this line to create a well-formed Fossil manifest.
index e7feb037ad8703977f030cdc5e46be619d914d90..6a3fe4ae0a21a58c7628f092f1f71fae50426611 100644 (file)
@@ -1 +1 @@
-fdd15e938ccfac9e871d781d1c8fe8be6dbd9e8cbbcb8b7f0b035e5ceebb8746
+861e55656abb208b4f1f2c8808c76c0454427af85a8930ab53f9c053605f39c7
index b1406724ed5bc61ebc3d20f952adf6db8fe55476..3c8e18393f5a72b74fda9dbcab019b37ffe6eceb 100644 (file)
@@ -2994,10 +2994,12 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
   if( 0==sqlite3Strlen30(sqlite3BtreeGetFilename(db->aDb[0].pBt))
    || nTrans<=1
   ){
-    for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
-      Btree *pBt = db->aDb[i].pBt;
-      if( pBt ){
-        rc = sqlite3BtreeCommitPhaseOne(pBt, 0);
+    if( needXcommit ){
+      for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
+        Btree *pBt = db->aDb[i].pBt;
+        if( sqlite3BtreeTxnState(pBt)>=SQLITE_TXN_WRITE ){
+          rc = sqlite3BtreeCommitPhaseOne(pBt, 0);
+        }
       }
     }
 
@@ -3008,7 +3010,9 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
     */
     for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
       Btree *pBt = db->aDb[i].pBt;
-      if( pBt ){
+      int txn = sqlite3BtreeTxnState(pBt);
+      if( txn!=SQLITE_TXN_NONE ){
+        assert( needXcommit || txn==SQLITE_TXN_READ );
         rc = sqlite3BtreeCommitPhaseTwo(pBt, 0);
       }
     }