-C Rearrange\sthe\scode\sin\sthe\sVDBE\sto\shelp\sout\sthe\sC-compiler\soptimizer.\nAnd\sfix\sa\sharmless\scompiler\swarning.
-D 2019-02-13T14:06:56.682
+C Fix\sa\sproblem\swith\sthe\sincrblob\sAPI\sand\sreusable\sschemas.
+D 2019-02-13T15:51:07.091
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 56456706c4da271309914c756c9c8ea537685f1c79f8785afa72f968d6810482
F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
F src/vdbeapi.c 57a2d794a8833f269b878dbc24e955369bdb379af6c4e93ebc5ce1a20fa3daf4
F src/vdbeaux.c 2f4fefdf74c484193de632c3c417c5886512f7a57f69a65dbdb858a58bc3f55a
-F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
+F src/vdbeblob.c 6e362fafab5c537f247424fefade58d7eb938e60ef13817590031eb64cbb690f
F src/vdbemem.c 3e89e087df928eba80e520824078dc563c579a0848b1557ac36845ec14392923
F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
F test/resetdb.test 8062cf10a09d8c048f8de7711e94571c38b38168db0e5877ba7561789e5eeb2b
F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
F test/reuse1.test 5eee2efc7ee559fa9bdd214e35b351d5a949ad466c1671c256fee1f133e7eeea
-F test/reuse2.test 350a01c5600336be4d60fedee7932ea5f2c65b8698ac54f889100551d44ab825
+F test/reuse2.test 7d9e63de7909711a970b848f1f068d820c0f8e61f12b68ee5ec11a019beba20e
F test/reuse3.test 4eab99d5762c74422f24664680f4e482edd79f593919ffa3f18368735ee3b944
F test/rollback.test 06680159bc6746d0f26276e339e3ae2f951c64812468308838e0a3362d911eaa
F test/rollback2.test bc868d57899dc6972e2b4483faae0e03365a0556941474eec487ae21d8d38bb6
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7c2ec2d4cfcda9c0aa6d57bd9a12ff98b78e648533d49da27f91d5a37bf1e001 e002666ac79c3452a772323c6ecc696104341cd842e77541553ec028f188096b
-R 874fe30becc1a5c03c09070b47052542
-T +closed e002666ac79c3452a772323c6ecc696104341cd842e77541553ec028f188096b
-U drh
-Z 3bb7116d31fbb0c3e5ef362100dea8a9
+P 219b39e149a0334b577e094e066e1ca2fe686b408468e9f196611490f3a82810
+R 9047b65c4afb92b6d121e7343cd6282b
+U dan
+Z 8146267c5361e666d0319bd1ff8f7427
Table *pTab;
Incrblob *pBlob = 0;
Parse sParse;
+ int bUnlock; /* True to unlock reusable schemas before returning */
#ifdef SQLITE_ENABLE_API_ARMOR
if( ppBlob==0 ){
sqlite3_mutex_enter(db->mutex);
+ bUnlock = sqlite3LockReusableSchema(db);
pBlob = (Incrblob *)sqlite3DbMallocZero(db, sizeof(Incrblob));
do {
memset(&sParse, 0, sizeof(Parse));
} while( (++nAttempt)<SQLITE_MAX_SCHEMA_RETRY && rc==SQLITE_SCHEMA );
blob_open_out:
+ sqlite3UnlockReusableSchema(db, bUnlock);
if( rc==SQLITE_OK && db->mallocFailed==0 ){
*ppBlob = (sqlite3_blob *)pBlob;
}else{
SELECT 'nref=' || nRef, 'nschema=' || nSchema FROM schemapool ORDER BY 1;
} {26 17 18 13 14 15 4 5 6 nref=6 nschema=3}
-finish_test
+#--------------------------------------------------------------------------
+# Test the incremental-blob API with REUSE_SCHEMA connections.
+#
+catch {db1 close}
+catch {db2 close}
+catch {db3 close}
+reset_db
+do_execsql_test 5.0.1 {
+ CREATE TABLE bbb(a INTEGER PRIMARY KEY, b);
+}
+db close
+do_test 5.0.2 {
+ sqlite3 db2 test.db -reuse-schema 1
+ register_schemapool_module db2
+ for {set i 1} {$i<6} {incr i} {
+ forcedelete test.db${i}-journal test.db${i}-wal test.db${i}-wal2
+ forcecopy test.db test.db${i}
+ sqlite3 db test.db${i}
+ db eval { INSERT INTO bbb VALUES(123, 'database_' || $i) }
+ db close
+ db2 eval "ATTACH 'test.db${i}' AS db${i}"
+ }
+ execsql {
+ SELECT 'nref=' || nRef, 'nschema=' || nSchema FROM schemapool ORDER BY 1;
+ } db2
+} {nref=6 nschema=1}
+
+do_test 5.1.1 {
+ set res [list]
+ for {set i 1} {$i<6} {incr i} {
+ set chan [db2 incrblob db${i} bbb b 123]
+ lappend res [gets $chan]
+ close $chan
+ }
+ set res
+} {database_1 database_2 database_3 database_4 database_5}
+do_execsql_test -db db2 5.1.2 {
+ SELECT 'nref=' || nRef, 'nschema=' || nSchema FROM schemapool ORDER BY 1;
+} {nref=6 nschema=1}
+
+
+finish_test