mirror of
https://github.com/sqlite/sqlite.git
synced 2026-10-28 09:46:20 +08:00
Experimental fix to [bugs:/info/2026-10-25T19:26:00Z|Bug 2026-10-25T19:26:00Z]
FossilOrigin-Name: efdff276d2c19f77be5b5b600084996126ec2ae3e2a7ed91f2e7d7e1916043ba
This commit is contained in:
1 parent
1820defd76
commit
005a5862a5
6 files changed
+29
-14
No files matched your search
@@ -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
@@ -1,2 +1,2 @@
|
||||
branch trunk
|
||||
tag trunk
|
||||
branch schema-reset-appfunc
|
||||
tag schema-reset-appfunc
|
||||
+1
-1
@@ -1 +1 @@
|
||||
4fee54f1d687c2e2b4a760c59d1d29fceb81623494cf65b72c309f4922dc0a7e
|
||||
efdff276d2c19f77be5b5b600084996126ec2ae3e2a7ed91f2e7d7e1916043ba
|
||||
+7
-3
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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() */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user