From: drh <> Date: Fri, 5 Nov 2021 23:32:17 +0000 (+0000) Subject: Merge the latest trunk enhancements into the reuse-schema branch. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bd564771f61d7a8741f0814e9e115de39b6a09b4;p=thirdparty%2Fsqlite.git Merge the latest trunk enhancements into the reuse-schema branch. FossilOrigin-Name: ca09148e13d33a74ff75cf9c1d9e776ae0bf10ce8505656d8b5ca31398761b38 --- bd564771f61d7a8741f0814e9e115de39b6a09b4 diff --cc manifest index 8378de6810,d4633cc7a3..98755107ff --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Add\sthe\srbu_exclusive_checkpoint\squery\sparameter\sto\sRBU. - D 2021-11-05T22:35:09.805 + C Merge\sthe\slatest\strunk\senhancements\sinto\sthe\sreuse-schema\sbranch. -D 2021-10-29T14:04:22.223 ++D 2021-11-05T23:32:17.572 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -484,20 -484,20 +485,20 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a - F src/alter.c 23743384e59f9d36df870ce41adfdf7934fd0adb619d7fa6fd1aac77c28a7533 - F src/analyze.c 7518b99e07c5494111fe3bd867f28f804b6c5c1ad0703ec3d116de9bab3fa516 - F src/attach.c e3f9d9a2a4a844750f3f348f37afb244535f21382cbfcd840152cb21cb41cfaf -F src/alter.c 019ec1f683685a685d7cf0e82673b2ad91de9f1895537e397b0168e6470a17e9 ++F src/alter.c 0b0b8c74bd94b6c1e3f7023b2341a57b6f45e9ff8210fedbc1e6f6b443746dec + F src/analyze.c b619f92ad33aa38c234d9620f576bceef56465088ed37f28c56d136a15c1a909 + F src/attach.c 173d0cadb5eeee2c5ac59400955a821fd80095bb248e21c99194dc84cc214078 F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf F src/backup.c 3014889fa06e20e6adfa0d07b60097eec1f6e5b06671625f476a714d2356513d F src/bitvec.c 7c849aac407230278445cb069bebc5f89bf2ddd87c5ed9459b070a9175707b3d F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 004c647dfb5332ee4b56385f3ac264ebea781cb00f7a1561a48f4a45b78fed61 +F src/btree.c 2c8a52a7fd84b1aec4a79e7861b6368aecbf011a43247cc7d9a2946c7f0ae5ea F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22 F src/btreeInt.h ee9348c4cb9077243b049edc93a82c1f32ca48baeabf2140d41362b9f9139ff7 - F src/build.c d82604122cb369fe6597cfe3b9b69bbaec4df9f31517e9c3f7894cd4bf0cd042 - F src/callback.c 106b585da1edd57d75fa579d823a5218e0bf37f191dbf7417eeb4a8a9a267dbc -F src/build.c 32f007fedbf4352a8f534f9598c4a6537ede4c52efa32b42ecf91ea52d45aa6f ++F src/build.c a28f0b0ac007d735b17549e48258ebbf81794681d1e2ff9ed76bed8ad45aba7a + F src/callback.c a3449287e62b63ac7edee94175a4db5fa56a0fbfc48fa463d8222a952af2966a F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e - F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1 + F src/ctime.c 22b5ea591c18d677b521a99d375dfc626917bc23786c5f52aca113924b8edb9e F src/date.c fa928630fecf1d436cdc7a7a5c950c781709023ca782c21b7a43cc7361a9451e F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d @@@ -511,10 -511,10 +512,10 @@@ F src/hash.c 8d7dda241d0ebdafb6ffdeda31 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144 F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71 -F src/insert.c 137038155adad9f00ba4e2c2602eec0335d6ef5ff0c3958c02f778657006dc59 +F src/insert.c 7fcbbe9114ac402ea3c0c6a3810f13fc89cae8131ea1659ec472be7caac10192 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa -F src/loadext.c 0aa9e7f08e168e3874cb54984408e3976dafdf5616d511952c425b5ac088ea3e -F src/main.c c1b2bc195d3ea0256106caaf0c8ca3bc4af0e646d658940e3028087553b0d765 +F src/loadext.c e1dcff1c916bf6834e150b492eddda5d9792453182d2ad64294d2266b6e93c4c - F src/main.c 5ed1babdec5bbf935fb4586fcb12debbff760c301948ac46cf90e720b4405a8b ++F src/main.c 710a7201a26524a23c4cc819cf24bbea9823c8cad15f0c596c172537d5f0c1af F src/malloc.c ef796bcc0e81d845d59a469f1cf235056caf9024172fd524e32136e65593647b F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de @@@ -543,24 -543,24 +544,24 @@@ F src/parse.y 0bd7971a7489bbf6c3726f1b5 F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586 F src/pcache1.c 54881292a9a5db202b2c0ac541c5e3ef9a5e8c4f1c1383adb2601d5499a60e65 - F src/pragma.c c536665ce8431c8b1efbf7e0a5c01852f49f7bf28f1954f8118b2d28e4a3797f - F src/pragma.h 87330ed2fbfa2a1274de93ca0ab850fba336189228cb256089202c3b52766fad - F src/prepare.c 7520a371f1de8a53e3023eba75bc0d3473196833c6363d285cad8d002eabef0b -F src/pragma.c 32eccbbc90e1ab77be414f006e3fb40e21f9c74198435d0b64fcabdaa45ffd36 ++F src/pragma.c 401df25173a16e13923af6e4cb6c5a2fb14106117ac0a4ec1f419f0e696d22f5 + F src/pragma.h 270bff5fefbc3c56ddcb5627d706904ec289853a5ef65662f6fac810b5a1923f -F src/prepare.c 5251d1bab075470ff6bc2acca05da8e74a3c81b057c52d27adba18e7172b2dc3 ++F src/prepare.c a5f14873aff05e64caf3b09fe5f22c23ec18a09cfe2ae08c97513d819f78490f F src/printf.c 5901672228f305f7d493cbc4e7d76a61a5caecdbc1cd06b1f9ec42ea4265cf8d F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c F src/resolve.c ae65c88f5d0d4bc0052b203773d407efa2387c2bd6b202f87178006c7bb8632c F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c 32d25b5af6c708aa63373c78c2e59681910387a7a78c08ec3086cadc77d41627 -F src/shell.c.in 7aabae161bad5985170e4d8ce6dd701503341984d04985f5ed256034b06e89e7 -F src/sqlite.h.in 3c1c015cc0b624737c528466f58467109aa60c9fa62696712e8dbc4566f72fab +F src/select.c b4b3a0f32e70d93efbb357783846853dbd8b266ec0d7035aa0a245c33eecf72d - F src/shell.c.in f8854bcb0d14707d661732698d5210d7f01694000c46e8014b323ad18f575be6 - F src/sqlite.h.in 5cd209ac7dc4180f0e19292846f40440b8488015849ca0110c70b906b57d68f0 ++F src/shell.c.in dffed693f41dbd57e3b45aefc282da8e923766ca622fce19c315f0138f9a24a4 ++F src/sqlite.h.in d36a609734942eddefdfbb6e774f8bfa46f00030e1be45a1997f761249ccb339 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 -F src/sqlite3ext.h e97f4e9b509408fea4c4e9bef5a41608dfac343b4d3c7a990dedde1e19af9510 -F src/sqliteInt.h 7080e33bb7ec7e9d040f81f1381e08d85731c667a52123bb076834b31b2fe87f +F src/sqlite3ext.h 8ff2fd2c166150b2e48639f5e506fb44e29f1a3f65031710b9e89d1c126ac839 - F src/sqliteInt.h c280f33f023f87864fa660925f5d5cb49ccfc82eea223fec4e37177c86a26b5a ++F src/sqliteInt.h 4b2d96f8e504324f247d9af3a475bc347a8afc8838a97da100b169e33fe0e421 F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 - F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1 + F src/status.c d0956e57c71160155f620a3efeb1e5c05a3f8b9a897dd09c5263268e5d237579 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 - F src/tclsqlite.c 428e813dabf82804bc13196af35a0c3c6ef4347fe557fa6717c5c66bba6e8520 + F src/tclsqlite.c 78450c0a24bbd9379a8f4827d830e743d5f884389042d6644e4bcba17fdde952 -F src/test1.c 63761c2be2607f1b425fde991beda48aed384f8d67f2b4ee549174c88b433009 +F src/test1.c d6c945a8bb211ed72ea515f0b9743caeaf38c66da6418a7b1dcf3764e1368bbb F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5 F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644 F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159 @@@ -614,25 -615,25 +616,25 @@@ F src/test_windirent.h 90dfbe95442c9762 F src/test_window.c cdae419fdcea5bad6dcd9368c685abdad6deb59e9fc8b84b153de513d394ba3f F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c - F src/tokenize.c bae853ad129d1129c063de8630a3e99e306283bc40146f359b1bb91be2c08f1e + F src/tokenize.c 9495a8272c339a330071d0078a85d1e2f36d1f4c39306495c2b080a2350060e1 F src/treeview.c 9dfdb7ff7f6645d0a6458dbdf4ffac041c071c4533a6db8bb6e502b979ac67bc - F src/trigger.c 2ef56f0b7b75349a5557d0604b475126329c2e1a02432e7d49c4c710613e8254 -F src/trigger.c db412c9616de92de782540e84095262eec7eabc5627b3a5f3974ec30bcf58204 ++F src/trigger.c 7d65985d48b89af580a6e9a69a4a5033c8dce4fcb9d668d62c4467a621c72ada F src/update.c 69c4c10bc6873a80c0a77cb578f9fc60ee90003d03f9530bc3370fa24615772d F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 F src/util.c 30df8356e231dad33be10bb27897655002668343280004ba28c734489414a167 - F src/vacuum.c 6c38ddc52f0619865c91dae9c441d4d48bf3040d7dc1bc5b22da1e45547ed0b3 - F src/vdbe.c f2b30e312d2dc69d429998f17fab74298a4d9ed8c6d57c0d23d0284414c6ea1b - F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe + F src/vacuum.c 97424abbd3b5831d0142349a3c2dad52c364e39fab67f7e0f5c60d2694463940 -F src/vdbe.c e0e548455f8f72b2856fe89c187b356e339be8cc66d8e083d02b8ab08f342bf0 ++F src/vdbe.c 99eef8f9469a5fb9b3ed8de19b9ec6cd81d950692b2f3fd8b06eef97b176b93b + F src/vdbe.h bfde0b0f429a0ba4203e5319780a6a1c8b2a809c5cd6baa9ae22e257a657b8b3 F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b F src/vdbeapi.c 7b83468feb1d42a09d4c2e5241a3eaa3d1f138e289a843cba9fd3f1dad95ca67 - F src/vdbeaux.c a57c760d1897f1b72f6fae26983df363db7a2c42d88721187e907f2c84862b42 - F src/vdbeblob.c 292e96c01c4219fca71d74e1002906d43eb232af4bd83f7552a3faec741f3eb8 + F src/vdbeaux.c 5b860382346acfc4b1748fa0ec9fd59999f5ed51de7a7e498eeee3bd4bf4cf73 + F src/vdbeblob.c 386d80da191031a1b809004a9983c17ede7e46028d2bc1d7934fbda4762d3567 F src/vdbemem.c 71a449c57be10a66a8a5620e5c5a67ebb9ca70121556dc631ffd4c4458708d8c F src/vdbesort.c 513b481c8bab4a6578c92194a60cf3bc3b48736e4a53f8d2d7918121c5b594e7 F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823 F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c - F src/vtab.c 721f0dffc4d0a7b40ec6d07fd4e071005aed6aa2f55360850bbf11a80c273cb8 -F src/vtab.c 3cf904c78bd2a034b731bb4d3408a6d625e1c076123f4df1f95e1c0b9638c957 ++F src/vtab.c 8d68fcb005991e33e9545eca129a3395bddc0c0438620a72f04a65227f60990e F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c 6ae14d4797f31c67fc2be659d24fbc6e1a6f5f423bdfb5ef831ea171bce42320 F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a @@@ -1931,8 -1939,7 +1941,8 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 - P b5c668cac831425fd3e370142f9ea501bf2ca1c77c3eb0c5b8f0a574f7667b3c 00285ff10c771066876896b28cd5185ec3792166b00702326954ef6678f19da8 - R f4405c22d17a2127f84e4a86a86f6a53 - T +closed 00285ff10c771066876896b28cd5185ec3792166b00702326954ef6678f19da8 -P cd15fc3c08373dad63ba7eafb117d0d09913b8fc339882fd909da5ec485a7138 efc7e8c99a86e9d9eb81655ce96353847bd2cca64eb8f8d10e297f6f4d38e563 -R daf5c3e96fcc187ff6adbc534688c9c2 ++P c2d33ea9d81975b27fe157d698033e7c01569cc0aa6178b7f0c43afbfba4a9e2 7623132efe9aaaf3a02d6c1ff82e199a075d2cadbe8030d2381c50509f862626 ++R fdfacbf1f65a88e1c9a5e6a08455193e ++T +closed 7623132efe9aaaf3a02d6c1ff82e199a075d2cadbe8030d2381c50509f862626 U drh - Z 14135c7edf2011f8b94a31746b9d9e0c -Z d0d263511f303465de87c6a7ea0e5f99 ++Z e63ae2e0521dda4f6def3d3a96a63688 diff --cc manifest.uuid index 33a18fd349,17803e716b..ca608e2c15 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - c2d33ea9d81975b27fe157d698033e7c01569cc0aa6178b7f0c43afbfba4a9e2 -7623132efe9aaaf3a02d6c1ff82e199a075d2cadbe8030d2381c50509f862626 ++ca09148e13d33a74ff75cf9c1d9e776ae0bf10ce8505656d8b5ca31398761b38 diff --cc src/build.c index 26b2cfa6ba,fbdf2bfe25..19780a962a --- a/src/build.c +++ b/src/build.c @@@ -401,29 -424,21 +424,21 @@@ Table *sqlite3FindTable(sqlite3 *db, co } } } - }else{ - /* Match against TEMP first */ - p = sqlite3HashFind(&db->aDb[1].pSchema->tblHash, zName); - if( p ) return p; - /* The main database is second */ - p = sqlite3HashFind(&db->aDb[0].pSchema->tblHash, zName); - if( p ) return p; - /* Attached databases are in order of attachment */ - for(i=2; inDb; i++){ - assert( sqlite3SchemaMutexHeld(db, i, 0) ); - p = sqlite3HashFind(&db->aDb[i].pSchema->tblHash, zName); - if( p ) break; + /* Not found. If the name we were looking for was temp.sqlite_master + ** then change the name to sqlite_temp_master and try again. */ - if( sqlite3StrICmp(zName, ALT_SCHEMA_TABLE)==0 ){ - zName = DFLT_SCHEMA_TABLE; ++ if( sqlite3StrICmp(zName, PREFERRED_SCHEMA_TABLE)==0 ){ ++ zName = LEGACY_SCHEMA_TABLE; + continue; } - if( p==0 && sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){ - if( sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0 ){ - p = sqlite3HashFind(&db->aDb[0].pSchema->tblHash, LEGACY_SCHEMA_TABLE); - }else if( sqlite3StrICmp(zName+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0 ){ - p = sqlite3HashFind(&db->aDb[1].pSchema->tblHash, - LEGACY_TEMP_SCHEMA_TABLE); - } - if( sqlite3StrICmp(zName, ALT_TEMP_SCHEMA_TABLE)==0 ){ - zName = DFLT_TEMP_SCHEMA_TABLE; ++ if( sqlite3StrICmp(zName, PREFERRED_TEMP_SCHEMA_TABLE)==0 ){ ++ zName = LEGACY_TEMP_SCHEMA_TABLE; + continue; } - if( sqlite3StrICmp(zName, DFLT_SCHEMA_TABLE)!=0 ) break; ++ if( sqlite3StrICmp(zName, LEGACY_SCHEMA_TABLE)!=0 ) break; + if( sqlite3_stricmp(zDatabase, db->aDb[1].zDbSName)!=0 ) break; - zName = DFLT_TEMP_SCHEMA_TABLE; ++ zName = LEGACY_TEMP_SCHEMA_TABLE; } - return p; + return 0; } /* diff --cc src/sqlite.h.in index 98a028b0b0,71cc9ba51f..5554260467 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@@ -609,9 -609,10 +609,11 @@@ int sqlite3_exec #define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_WAL 0x00080000 /* VFS only */ #define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */ +#define SQLITE_OPEN_EXRESCODE 0x02000000 /* Extended result codes */ /* Reserved: 0x00F00000 */ + #define SQLITE_OPEN_SHARED_SCHEMA 0x01000000 /* Ok for sqlite3_open_v2() */ + /* Legacy compatibility: */ #define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */ diff --cc src/vdbe.c index 5b794ff942,9e62587ffc..36420ec4b6 --- a/src/vdbe.c +++ b/src/vdbe.c @@@ -3708,18 -3700,11 +3708,11 @@@ case OP_Transaction: } } assert( pOp->p5==0 || pOp->p4type==P4_INT32 ); - if( pOp->p5 + if( rc==SQLITE_OK + && pOp->p5 && (iMeta!=pOp->p3 || db->aDb[pOp->p1].pSchema->iGeneration!=pOp->p4.i) - && rc==SQLITE_OK ){ - /* - ** IMPLEMENTATION-OF: R-03189-51135 As each SQL statement runs, the schema - ** version is checked to ensure that the schema has not changed since the - ** SQL statement was prepared. - */ - sqlite3DbFree(db, p->zErrMsg); - p->zErrMsg = sqlite3DbStrDup(db, "database schema has changed"); /* If the schema-cookie from the database file matches the cookie ** stored with the in-memory representation of the schema, do ** not reload the schema from the database file. diff --cc src/vtab.c index e6fe39d2e6,4f19b7a65b..3075661af6 --- a/src/vtab.c +++ b/src/vtab.c @@@ -696,8 -738,8 +734,9 @@@ int sqlite3VtabCallConnect(Parse *pPars int rc; assert( pTab ); - if( !IsVirtual(pTab) || sqlite3GetVTable(db, pTab) ){ + assert( IsVirtual(pTab) ); + if( sqlite3GetVTable(db, pTab) ){ + assert( !IsVirtual(pTab) || pTab->nCol>0 ); return SQLITE_OK; }