Experimental fix to [bugs:/info/2026-10-25T19:26:00Z|Bug 2026-10-25T19:26:00Z]

FossilOrigin-Name: efdff276d2c19f77be5b5b600084996126ec2ae3e2a7ed91f2e7d7e1916043ba
This commit is contained in:
drh committed 2026-10-26 01:20:04 +00:00
1 parent 1820defd76
commit 005a5862a5
6 files changed
+29 -14

No files matched your search

+11 -8
View File
@@ -1,5 +1,5 @@
C Merge\sall\srecent\sbranch-3.54\sfixes\sinto\strunk
D 2026-10-25T22:40:37.613
C Experimental\sfix\sto\s[bugs:/info/2026-10-25T19:26:00Z|Bug\s2026-10-25T19:26:00Z]
D 2026-10-26T01:20:04.940
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -751,7 +751,7 @@ F src/btmutex.c 8a6878fcbb95b37021e4ec20d72efeb197d1b114915af73239f1b1f638b3b844
F src/btree.c a418bd8ad6f334124fb14845aab2df0bdc8d53773fba5c597be87133afa24632
F src/btree.h 2ee0ddfdf4f8530ad1d46afffd7da21a0e243bfab10973011ac6f6b7fb4109a1
F src/btreeInt.h df956bca48cd49d2a38886bc3b02045c039e8a16353f86fccd116c6487f79d82
F src/build.c 1406d252bc5b2c3f2150edd4426e5981eabf1000944be8db8d470b96eb64ee07
F src/build.c c30e1f3491edaac19febd957b54bbdaa0c5c192d068dc45314d7c3dccc3ebc2c
F src/callback.c 3605bbf02bd7ed46c79cd48346db4a32fc51d67624400539c0532f4eead804ad
F src/carray.c 9f4c9d514b4ef4e7c5efb15dbc52e9f0e5812f948977a845674ec17bf23d50f4
F src/complete.c f68f545b9c6c19e2e848672dc0e4da230072fedc335d8980b55242cc4cfa60da
@@ -813,7 +813,7 @@ F src/shell.c.in d06bb3d79b22a3aef840c2fe0c1e1e909ce2146343a51029bf3943695aeaff0
F src/sqlite.h.in 5588081b98e60a771c6ee3512a9f5837ee3268130e524d5dc956601eafc737ae
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
F src/sqlite3ext.h 5e113c4c0442f2f1b3345d44cbe4b82fad45f2fc0c35f0ed4eef27fb8f1cb394
F src/sqliteInt.h 74bdfa5d24b33e2aba9615cb53dbaf3dbbcda8e8ae0b96dc51dd251a5adce040
F src/sqliteInt.h 2743bba279c94cdb2b1f89d54500620bbc02ab74fd28dbe64bc032141ad12072
F src/sqliteLimit.h a905209cea2a167391382f64ecd42f944863ae44eabd540ef24a70361182f5ae
F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@ -879,7 +879,7 @@ F src/vdbe.c c5d51315f307e6a39b7f81e5d2dd680eb6d6c7435926f32f236bbcc641343268
F src/vdbe.h b6ffb28da04363fd5d439b8204118fd3f2e751abe4f8e3edb089155fb90d4607
F src/vdbeInt.h 1a2c40e1d56b074aacff260591aa30b1e3dede6cb7652b2db63e28d69ca85f29
F src/vdbeapi.c b1501e7184c5286cf2507e80bd437e8ea749997376bacaf199160c8563ef1d16
F src/vdbeaux.c c5489043d33a689fe9016b3f99c07b27113ac68e2e1f3ef32c3612a1e96647ef
F src/vdbeaux.c c52805902c5ca4a95ceb69118c88d3ca092c6b764c19b6293a5b07a9553f1651
F src/vdbeblob.c b3f0640db9642fbdc88bd6ebcc83d6009514cafc98f062f675f2c8d505d82692
F src/vdbemem.c 29f9bf1f900c85415182e7f97cfcee296742297b3f93113927f3767eeedd8df2
F src/vdbesort.c a72ad2a629df2901fde4aa588e38590d0aa27b7d5bc3b2a416e5f295de839cc1
@@ -2301,8 +2301,11 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P 8b1fa7497fef8e4bd36dc4614dbb33bc78f34b11300de0caff92a7da0d35a63e 53da8bd2c32db0b8d744d9660737eec1a18adec67329e4bcfcfbe1827cc4381d
R f24f1f21439fb23653e636829e56c98d
P 4fee54f1d687c2e2b4a760c59d1d29fceb81623494cf65b72c309f4922dc0a7e
R e2e9cfccfc53e616d7107a449efdcd23
T *branch * schema-reset-appfunc
T *sym-schema-reset-appfunc *
T -sym-trunk *
U drh
Z 47926794dde953eb1da7731247e9eb69
Z 99b2f18defbfa7fb533fb631b2c331eb
# Remove this line to create a well-formed Fossil manifest.
+2 -2
View File
@@ -1,2 +1,2 @@
branch trunk
tag trunk
branch schema-reset-appfunc
tag schema-reset-appfunc
+1 -1
View File
@@ -1 +1 @@
4fee54f1d687c2e2b4a760c59d1d29fceb81623494cf65b72c309f4922dc0a7e
efdff276d2c19f77be5b5b600084996126ec2ae3e2a7ed91f2e7d7e1916043ba
+7 -3
View File
@@ -621,8 +621,10 @@ void sqlite3CollapseDatabaseArray(sqlite3 *db){
/*
** Reset the schema for the database at index iDb. Also reset the
** TEMP schema. The reset is deferred if db->nSchemaLock is not zero.
** Deferred resets may be run by calling with iDb<0.
** TEMP schema. The reset is deferred if db->nSchemaLock is not zero
** or if there is more than one active VDBE.
**
** Deferred schema resets may be retried by calling with iDb<0.
*/
void sqlite3ResetOneSchema(sqlite3 *db, int iDb){
int i;
@@ -633,15 +635,17 @@ void sqlite3ResetOneSchema(sqlite3 *db, int iDb){
DbSetProperty(db, iDb, DB_ResetWanted);
DbSetProperty(db, 1, DB_ResetWanted);
db->mDbFlags &= ~DBFLAG_SchemaKnownOk;
db->bPendingSchemaReset = 1;
}
if( db->nSchemaLock==0 ){
if( db->nSchemaLock==0 && db->nVdbeActive<=1 ){
for(i=0; i<db->nDb; i++){
if( DbHasProperty(db, i, DB_ResetWanted) ){
sqlite3SchemaClear(db->aDb[i].pSchema);
db->mDbFlags &= ~DBFLAG_SchemaKnownOk;
}
}
db->bPendingSchemaReset = 0;
}
}
+1
View File
@@ -1738,6 +1738,7 @@ struct sqlite3 {
u8 nSqlExec; /* Number of pending OP_SqlExec opcodes */
u8 eOpenState; /* Current condition of the connection */
u8 nFpDigit; /* Significant digits to keep on double->text */
u8 bPendingSchemaReset; /* 1 or more schema resets pending */
int nextPagesize; /* Pagesize after VACUUM if >0 */
i64 nChange; /* Value returned by sqlite3_changes() */
i64 nTotalChange; /* Value returned by sqlite3_total_changes() */
+7
View File
@@ -3527,6 +3527,13 @@ int sqlite3VdbeHalt(Vdbe *p){
sqlite3ConnectionUnlocked(db);
}
/* Do any pending schema resets that were deferred because multiple
** VDBEs where active at the same time.
*/
if( db->bPendingSchemaReset && db->nVdbeActive==0 ){
sqlite3ResetOneSchema(db, -1);
}
assert( db->nVdbeActive>0 || db->autoCommit==0 || db->nStatement==0 );
return (p->rc==SQLITE_BUSY ? SQLITE_BUSY : SQLITE_OK);
}