]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with OPEN_REUSE_SCHEMA connections reloading the temp schema.
authordan <dan@noemail.net>
Wed, 13 Feb 2019 08:40:34 +0000 (08:40 +0000)
committerdan <dan@noemail.net>
Wed, 13 Feb 2019 08:40:34 +0000 (08:40 +0000)
FossilOrigin-Name: 7c2ec2d4cfcda9c0aa6d57bd9a12ff98b78e648533d49da27f91d5a37bf1e001

manifest
manifest.uuid
src/build.c
test/reuse2.test
test/reuse3.test

index 68cd624384e7c46408345238e893bf79293f2901..77f938b151da913ef4d7d3e77a3a7d65d6190f04 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\stests\sfor\screating\stemp\sschema\sobjects\swith\sSQLITE_OPEN_REUSE_SCHEMA\sconnections.
-D 2019-02-12T20:58:34.269
+C Fix\sa\sproblem\swith\sOPEN_REUSE_SCHEMA\sconnections\sreloading\sthe\stemp\sschema.
+D 2019-02-13T08:40:34.055
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 56456706c4da271309914c756c9c8ea537685f1c79f8785afa72f968d6810482
@@ -458,7 +458,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
 F src/btree.c 18046bf14f0e3fa294ef3f7c2dc30ca7e95f3ac11ec222ad906e40b150051bde
 F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3
 F src/btreeInt.h cd82f0f08886078bf99b29e1a7045960b1ca5d9d5829c38607e1299c508eaf00
-F src/build.c 70fa06d96fd4265652921c52c40e664e3b6f7d1b8fce9702976dff56a0117e81
+F src/build.c 98beafec3e352c5f1d5883b7a764854cf3f8bb9f42fdc89ae9b90ff73ce3d9b5
 F src/callback.c eaa832c5b8b6f64e9ca78f61c3d9034a6a4d697ae426dbbc7de1c760045f6dc3
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b
@@ -1227,8 +1227,8 @@ F test/releasetest.tcl 7712811e0f4e2f198ec786cb2e1352b3793d7395f48a3cceef0572d88
 F test/resetdb.test 8062cf10a09d8c048f8de7711e94571c38b38168db0e5877ba7561789e5eeb2b
 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
 F test/reuse1.test 5eee2efc7ee559fa9bdd214e35b351d5a949ad466c1671c256fee1f133e7eeea
-F test/reuse2.test 03216f8879c6cff34614237bbf28ebea8433d7dabd62419458d4e16279ac6fb3
-F test/reuse3.test 9b4752890ef8949fd3e50bf919937b485a449381a80d62af0ce9c8cf64193ef4
+F test/reuse2.test 350a01c5600336be4d60fedee7932ea5f2c65b8698ac54f889100551d44ab825
+F test/reuse3.test 4eab99d5762c74422f24664680f4e482edd79f593919ffa3f18368735ee3b944
 F test/rollback.test 06680159bc6746d0f26276e339e3ae2f951c64812468308838e0a3362d911eaa
 F test/rollback2.test bc868d57899dc6972e2b4483faae0e03365a0556941474eec487ae21d8d38bb6
 F test/rollbackfault.test 0e646aeab8840c399cfbfa43daab46fd609cf04a
@@ -1808,7 +1808,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P ea611d7cba604dc901c8088ccfa13367a5ee75f9499ea8d8b62a590daac2eae0
-R 624cf2ef39b4bc5553e92a01f0394bcf
+P 8c07b609fccc43795498b942c733896defd8887e4ddd9e0ef48c124dfcf9fd7f
+R 765b6e0bdb51edd5b378e5259607a03d
 U dan
-Z 6b6c8fa6adc2da0fcdac53dd75baa86e
+Z c13672cd797193c9057764ed19647533
index eec45f04926d86fb6cdf849dab498395294e530d..c092348ad2f6629fd7b91709822b719944db7fc9 100644 (file)
@@ -1 +1 @@
-8c07b609fccc43795498b942c733896defd8887e4ddd9e0ef48c124dfcf9fd7f
\ No newline at end of file
+7c2ec2d4cfcda9c0aa6d57bd9a12ff98b78e648533d49da27f91d5a37bf1e001
\ No newline at end of file
index 9c17cf776f89975a7c357a5e52578a78f60a7c60..3960fa2fb166d0a7c52713081f48df1bbcad1e32 100644 (file)
@@ -315,10 +315,13 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
         assert( sqlite3SchemaMutexHeld(db, j, 0) );
         if( IsReuseSchema(db) 
          && DbHasProperty(db, j, DB_SchemaLoaded)==0 
-         && db->init.busy==0
+         && (db->init.busy==0 || (j!=1 && db->init.iDb==1))
         ){
+          struct sqlite3InitInfo sv = db->init;
+          memset(&db->init, 0, sizeof(struct sqlite3InitInfo));
           sqlite3InitOne(db, j, 0, 0);
           bUnload = (j!=1);
+          db->init = sv;
         }
         p = sqlite3HashFind(&db->aDb[j].pSchema->tblHash, zName);
         if( p ) return p;
index 20f3dd0dd03ebdfca80d5580bf6a6ffc41753cc8..f05e3665d297373ce5caa1eb59fdbc88c156e3ad 100644 (file)
@@ -166,7 +166,7 @@ do_execsql_test -db db2 4.1.7 {
 }
 do_execsql_test 4.1.8 {
   SELECT 'nref=' || nRef, 'nschema=' || nSchema FROM schemapool ORDER BY 1;
-} {nref=3 nschema=1}
+} {nref=6 nschema=1}
 
 do_test 4.2.1 {
   catchsql { SELECT * FROM abc } db2
index ca2438c9bd366196bbe8305fcc0bede427fce2e7..4e00907cb71ba9559685050934ec11065f906273 100644 (file)
@@ -52,11 +52,18 @@ do_execsql_test 1.6 {
   BEGIN;
     DROP TRIGGER tr1;
   ROLLBACK;
+}
+
+do_execsql_test 1.7 {
+  SELECT * FROM v1
+} {1 2 3}
+
+do_execsql_test 1.8 {
   INSERT INTO t1 VALUES(4, 5, 6);
   SELECT * FROM t2
 } {1 4}
 
-do_execsql_test 1.7 {
+do_execsql_test 1.9 {
   SELECT * FROM v1
 } {1 2 3 4 5 6}