1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-23 21:49:02 +03:00

Ensure the internal DBFLAG_SchemaKnownOk flag is always cleared after a database schema is reset. Report [bugs:/info/2026-10-14T01:25:35Z | 2026-10-14T01:25:35Z].

FossilOrigin-Name: e6b9a40732900d0b7f83ec262ddc81bb47d4230de55d6db319689906e2bb3716
This commit is contained in:
dan
2026-10-14 13:39:28 +00:00
parent eba536e8f2
commit 23500fbf19
4 changed files with 58 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
C The\sprevious\scheck-in\swas\snot\squite\scorrect.\s\sBoth\srLhsOrig\nand\srLhs\sare\svectors\sand\sso\sneither\sshould\sbe\sfreed\susing\nsqlite3ReleaseTempReg().\s\sIndeed,\sneither\sshould\sbe\sfreed\sat\sall\ssince\nboth\svectors\sremain\sin\suse.
D 2026-10-14T11:32:36.641
C Ensure\sthe\sinternal\sDBFLAG_SchemaKnownOk\sflag\sis\salways\scleared\safter\sa\sdatabase\sschema\sis\sreset.\sReport\s[bugs:/info/2026-10-14T01:25:35Z\s|\s2026-10-14T01:25:35Z].
D 2026-10-14T13:39:28.937
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -745,7 +745,7 @@ F src/btmutex.c 30dada73a819a1ef5b7583786370dce1842e12e1ad941e4d05ac29695528daea
F src/btree.c 0022d783b0dde6cd4e89c29ab134008e54798077233a4480e40d3620f533f6e2
F src/btree.h 2ee0ddfdf4f8530ad1d46afffd7da21a0e243bfab10973011ac6f6b7fb4109a1
F src/btreeInt.h df956bca48cd49d2a38886bc3b02045c039e8a16353f86fccd116c6487f79d82
F src/build.c 0a160b40ea1f85b5a95e62310bbe2b944b8834a26c36f1f4b7f0f2c7e654f789
F src/build.c 1406d252bc5b2c3f2150edd4426e5981eabf1000944be8db8d470b96eb64ee07
F src/callback.c 3605bbf02bd7ed46c79cd48346db4a32fc51d67624400539c0532f4eead804ad
F src/carray.c 22879bbd9e14fc4868f223b0d49bcdbbda4616c89f1519ec6a5e64b98a4137b1
F src/complete.c f68f545b9c6c19e2e848672dc0e4da230072fedc335d8980b55242cc4cfa60da
@@ -987,7 +987,7 @@ F test/bestindexC.test f44eb3d77359e9487222a2dde27f8ecf11a8e4932803c0dd9477f75e1
F test/bestindexD.test 6a8f6f84990bcf17dfa59652a1f935beddb7afd96f8302830fbc86b0a13df3c3
F test/bestindexE.test 297f3ea8500a8f3c17d6f78e55bdfee089064c6144ee84a110bd005a03338f49
F test/bestindexF.test 4e53d606cbde40a2254aa016d500c5b71766a4065b8541202d195a3d9fe11b1c
F test/bestindexG.test 973d68bb680db9045c8b24bf672f38eb05997eaa65338c64ba8400bdb01aa063
F test/bestindexG.test b7e0d84687724c1e0fb9ceca9ff6abb2f51d6797e2bcd2efcd1e7d6e885284e0
F test/between.test e7587149796101cbe8d5f8abae8d2a7b87f04d8226610aa1091615005dcf4d54
F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
@@ -2287,8 +2287,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P 930df67b442ed677dbe5b22afe4fb91c907c721592a8090f0a70ebea79f3a854
R 83c22231ceefe821863301eb47a25516
U drh
Z fb0b9d941cdd9cc3a7cb4f99735dbd52
P fc7b959f45a55d95c9cb37692e82b811e3ef286a6d826895dfee9a1f2abfdcc8
R 3e0f9f85495f0b0cb6ba9c6c348ac543
U dan
Z 6a44fc1abd844289e15d27bf9a9407c2
# Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
fc7b959f45a55d95c9cb37692e82b811e3ef286a6d826895dfee9a1f2abfdcc8
e6b9a40732900d0b7f83ec262ddc81bb47d4230de55d6db319689906e2bb3716

View File

@@ -639,6 +639,7 @@ void sqlite3ResetOneSchema(sqlite3 *db, int iDb){
for(i=0; i<db->nDb; i++){
if( DbHasProperty(db, i, DB_ResetWanted) ){
sqlite3SchemaClear(db->aDb[i].pSchema);
db->mDbFlags &= ~DBFLAG_SchemaKnownOk;
}
}
}

View File

@@ -12,7 +12,7 @@
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix bestindexF
set testprefix bestindexG
ifcapable !vtab {
finish_test
@@ -97,5 +97,52 @@ do_execsql_test 1.2 {
select count(*) from probe join v on v.id = probe.id;
} {2}
#-------------------------------------------------------------------------
# Report https://sqlite.org/bugs/forumpost/aec494fd56
#
reset_db
ifcapable fts5 {
sqlite3 db ""
register_tcl_module db
proc vtab_command {method args} {
switch -- $method {
xConnect {
return "CREATE TABLE x(a PRIMARY KEY, b) WITHOUT ROWID"
}
}
return {}
}
do_execsql_test 2.0 {
CREATE VIRTUAL TABLE v40 USING fts5(c);
BEGIN EXCLUSIVE;
CREATE VIRTUAL TABLE v115 USING tcl(vtab_command);
}
do_catchsql_test 2.1 {
CREATE VIRTUAL TABLE v123 USING fts5;
} {1 {vtable constructor failed: v123}}
do_catchsql_test 2.2 {
CREATE TABLE v124 (
a AS(a),
b INT
);
} {1 {generated column loop on "a"}}
do_execsql_test 2.3 {
PRAGMA quick_check;
} {ok}
do_execsql_test 2.4 {
INSERT INTO v40 VALUES('one two three');
SELECT rowid FROM v40('one');
COMMIT;
SELECT rowid FROM v40('two');
} {1 1}
}
finish_test