]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge recent trunk enhancements into the reuse-schema branch.
authordrh <>
Mon, 9 Aug 2021 18:17:26 +0000 (18:17 +0000)
committerdrh <>
Mon, 9 Aug 2021 18:17:26 +0000 (18:17 +0000)
FossilOrigin-Name: c8d1f17fde280acd3e98772d947a5b1e698b08d25b23bcd0731ae2d18cfbddcf

1  2 
manifest
manifest.uuid
src/alter.c
src/build.c
src/callback.c
src/main.c
src/shell.c.in
src/sqliteInt.h
src/vdbeaux.c
src/vtab.c

diff --cc manifest
index 3edd007805ebbf8c9cbf1ce116b972e039c049ff,179c9e25681ced9c2e485e66159f42b8d9654626..0d262ad1a21fbee56e816a916f21f9e18a780e60
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
 -C Ensure\sthat\sthe\spcache1\scache\ssize\sdoes\snot\sget\sso\sbig\sthat\sit\soverflows\nthe\sinteger\sthat\sis\skeeping\strack\sof\sthe\scache\ssize.
 -D 2021-08-09T18:07:06.575
 +C Merge\srecent\strunk\senhancements\sinto\sthe\sreuse-schema\sbranch.
- D 2021-08-03T16:11:59.029
++D 2021-08-09T18:17:26.144
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@ -479,9 -478,9 +479,9 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c 701e809c6af98d2af6d993af0412d5b14e0bae733c62e30895a5d6d3026447ad
 -F src/alter.c 38975b971a4c36dbcc8004c74b492213a851ab368d29238c531a22636508a5d4
 -F src/analyze.c abbaaf7dca79d1c31c713500324fc0b55bf3eeac5b7b07001452a3d0f210de4f
 -F src/attach.c a514e81758ba7b3a3a0501faf70af6cfc509de8810235db726cfc9f25165e929
++F src/alter.c 618d0c615e44d3f57259530cf4737a9eeb6c381133a804e41e2b4e1706fe4a57
 +F src/analyze.c da68cbd52e696dca799da27c30721b604a55e156fdeb232be7bc5ef2618de7c3
 +F src/attach.c 74fab1b71a5fef866eae143aa5fa8c66174a4aa5829189764948e621ad3adbd6
  F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf
  F src/backup.c 3014889fa06e20e6adfa0d07b60097eec1f6e5b06671625f476a714d2356513d
  F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
@@@ -489,10 -488,10 +489,10 @@@ F src/btmutex.c 8acc2f464ee76324bf13310
  F src/btree.c e204a9c8fb4fe5dbb910a863ba487f4af9b5c501254ec4ccbfcdd6b1f65b7fb4
  F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
  F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
- F src/build.c a9e07d7af7c83357151fa8e05e9f801dbdd77cad2e17ec086e4ffd7224a347c1
- F src/callback.c d8cdf5d697a31cf54a2b64bce9001fe24f3522a566f44c9fe1eb3a0c7e291c56
 -F src/build.c ac4c6990ff076676bf172442c7098d2ae8370adf8c3ac6280aef23d05336ec9c
 -F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
++F src/build.c 336ecd22dc408b6935d2362b40e21070ef31e088d29c97d68cc6f4df74878c1d
++F src/callback.c 38b73a7a594b5b9fd322acf0a7a0e614bbc9a2edaecab437eb1d8b6d79afba3b
  F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 -F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
 +F src/ctime.c 22b5ea591c18d677b521a99d375dfc626917bc23786c5f52aca113924b8edb9e
  F src/date.c e0632f335952b32401482d099321bbf12716b29d6e72836b53ae49683ebae4bf
  F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
  F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c
@@@ -506,10 -505,10 +506,10 @@@ F src/hash.c 8d7dda241d0ebdafb6ffdeda31
  F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
  F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
  F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
- F src/insert.c c6419bc4b447f3d4cdb7b1167690baaea3b796a80cea48e7cf26da65487d430d
+ F src/insert.c 4ebff642574d3866316439b3dfce165f80e130e8969853c656d71b2afc5dd73c
  F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
  F src/loadext.c 0aa9e7f08e168e3874cb54984408e3976dafdf5616d511952c425b5ac088ea3e
- F src/main.c 248165c32d1e668239c55b320df16da51bfc240fc8e86aafb57f0606d8278f6e
 -F src/main.c 9abeb9f542008eca3db9eb4d863be6c9eb778a07ff48d97d0af5fe98374055f3
++F src/main.c 6e86cafdd62cb4b9a9c0166c0771907b77252bb7751b4e0bce2d14efffa6538f
  F src/malloc.c cbc93cdd429c4594912017d92ab656e2579aca64dbd1c6888551275bed46f25b
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
@@@ -537,25 -536,25 +537,25 @@@ F src/pager.h 4bf9b3213a4b2bebbced5eaa8
  F src/parse.y 0ba0baec5de6921ec8ba8bbcf1018969144ef29d26112e17539d8fbb1662e3eb
  F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177
  F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
- F src/pcache1.c 388304fd2d91c39591080b5e0f3c62cfba87db20370e7e0554062bfb29740e9f
+ F src/pcache1.c 00541fef31d2798dc20308ee1fa46205b76ad1df2c871e9c9bfe9508e59ab54c
 -F src/pragma.c af0f43789545622fd5377d71f6d4c0e7c9b9295a3f5d5b1242e4032d38ca12b5
 -F src/pragma.h a11b4798f9c49f156f130e1f7041a9fcc9d316a64f3501b6013acdd2e4c6f549
 -F src/prepare.c 0d53d20532aada295c1690792a125adbd6435f5ce703ff0adf1b9b3605238b67
 +F src/pragma.c 0d91c5dd6c8f5088ec67962fc5730a0947d238bae5dd8b9b5290e136778ae9d7
 +F src/pragma.h 6c85e80048ea4a4fa42e769cbfdd252046f83db2c6681cebace54d7bb7c43480
 +F src/prepare.c 3668279bfdec5e58e54a284b068d36746efadd5b2ecbb7475f3a1d12a8297653
  F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b
  F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c
  F src/resolve.c 42b94d37a54200707a95566eff4f7e8a380e32d080016b699f23bd79a73a5028
  F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
- F src/select.c 52041124629704feb24b1bc7dabf8ec03a0857c69d23f2dd0c33c9ed3d074adb
- F src/shell.c.in fc91f733040ae6a9e82f639273c21eb2be43f4fe4d77272f82de3f430ca101d3
+ F src/select.c 63077c0243ded1432d97c90c1a4c3419b3a574b36634c674599a68bfe4c3bdc2
 -F src/shell.c.in f795a4ae3c35631f5edcfa754c7824ff1d8a75b23a07e22e664b50f82e826346
 -F src/sqlite.h.in 43fcf0fe2af04081f420a906fc020bde1243851ba44b0aa567a27f94bf8c3145
++F src/shell.c.in 90e7c6063d6e8abea262beda0e619b893bd3636a88e283e6d4227e58aa2985eb
 +F src/sqlite.h.in a10c0512fa8f3cea54a01391d0e559a21873d2a9f3c331198e4fb9e2c1b18727
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h e97f4e9b509408fea4c4e9bef5a41608dfac343b4d3c7a990dedde1e19af9510
- F src/sqliteInt.h d1a8974ade4372a5a24231bb8011edaa8f4a2e5939b7d0d88dfefbb63850a0fb
 -F src/sqliteInt.h 548e07437d82c9732357d5efdb2d4e0ec403dedd9dab8def66a03d3d42ee9512
++F src/sqliteInt.h e36399792ac0acd05c6480cb11b110bf050b913cae929cd8d05ce58e2f6ee285
  F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
 -F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
 +F src/status.c d0956e57c71160155f620a3efeb1e5c05a3f8b9a897dd09c5263268e5d237579
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 -F src/tclsqlite.c 05663f6b5010b044eac0ef22fc8fb5ea3406d2502700a898261683258042c88b
 +F src/tclsqlite.c 1ae70091c34402aec6f637ef5646789f68be1169fe4332d6844db0666773cee3
- F src/test1.c 2100f4c28bae21ce83a9a0c5ec6827efd0e15d11b93b569b614daa5654b3fcf6
+ F src/test1.c 63761c2be2607f1b425fde991beda48aed384f8d67f2b4ee549174c88b433009
  F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5
  F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644
  F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159
@@@ -616,19 -614,19 +616,19 @@@ F src/trigger.c db412c9616de92de782540e
  F src/update.c 69c4c10bc6873a80c0a77cb578f9fc60ee90003d03f9530bc3370fa24615772d
  F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
  F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
- F src/util.c b18a971c8936e9299fecc00474269a11135989d6fe9bd91b1e52137d6f27bd8c
+ F src/util.c e9fd5c474691a7c913dfc971f01cf6d3a3d5954db04e0764a6426f845505e692
 -F src/vacuum.c 454973a59fb20bb982efc2df568a098616db6328a0491b6e84e2e07f7333db45
 -F src/vdbe.c b73a5ec9940185eb001ff8cff2cfd429bb438c7e89f2885e0bfdb56c3ff13386
 -F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
 +F src/vacuum.c 344acf0354037adb6d64451968a4ec0a6a8f81e753acdc5fe852cb4d4fcf4a6a
 +F src/vdbe.c 7c72ebe8ef2457c906e78bbd9ad5dec1f628f4be35610bd32c0748fa3568526e
 +F src/vdbe.h bfde0b0f429a0ba4203e5319780a6a1c8b2a809c5cd6baa9ae22e257a657b8b3
  F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b
  F src/vdbeapi.c aa5aaf2c37676b83af5724c6cd8207a3064ed46a217fd180957f75ac84f7a2a5
- F src/vdbeaux.c 5250e05b384afdcd6499b944c41abd927ba165afe142f67450d08838abde55bf
 -F src/vdbeaux.c 2368a8888f17368d4040a05966f7d2a2276cac4eeeba50793828186d999e3c8f
 -F src/vdbeblob.c 60a7694760e35b2bba166cf49eb6a1eb0b31581102b49de78008ca3032406065
++F src/vdbeaux.c a133350fa97ca98ad4c1fb1e0cc11c677c09a74df0717384ce3ce2f9a1483baa
 +F src/vdbeblob.c ae6c3cbc723d0a21d6a5c61c573b45080f795e15a524bc29953bc3114348fa7a
  F src/vdbemem.c 53881aa0a7845922a075b3f375695588618098871a7a4120af4c297b80fa3e64
  F src/vdbesort.c cd5130f683706c1a43e165a74187745fb3351cb56052cf9dc91de820634bbde2
  F src/vdbetrace.c 666c6fd9f1b62be6999e072a45b913e3c2c3518bc60dfd4d54fe304130acb724
  F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
- F src/vtab.c 334d3ebd9743a628e17b51b78e84184e5b85ec3d08170bcbfa21a17d779b7484
 -F src/vtab.c 88404ac1517903b3eb2abe256772ee95bb09f81ac0a17e13afe5d467df4de4ee
++F src/vtab.c b2178e665a4e73818432cee82dd54ade4d765abfb3d998073572c82cff472e37
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
  F src/wal.c 2be08331d798237ad5d7ae0b252700ffb2b63189cb18d993496d009a93e2f81c
  F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
@@@ -1930,7 -1920,7 +1930,7 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 0e968f9de3b706fedb675d058ed713a9e639c46d1482dec98c3449567242501e 8b781dcaf68e0cf12a844708c82eee00193e340195cbca915d077e4846983bf3
- R 7eccf6c733924e615151419c0de9017b
 -P 7929dc2f6f304b077c174d41711b49a24120adeb0b29cb6acb4d6a40852d7e00
 -R 5ed20c4f6f3dd0873a45a27ab6ba0f51
++P d71adc3fd85cfc5902b7146101d030ab2fbe932ed05848a407a7422ddeeb4c43 bf9d70fc2fde06a3f132270a26d4abe321687169066aff26ad9e92757c7f9ee4
++R 69b8fa43accc454cc462f6123d0cbffd
  U drh
- Z 0313cb80a016f3c3414f00738038a944
 -Z c3f298e00599b50c24893f0a3ffdacea
++Z 6f252d3e5e8964418a93d64c78ab4e77
diff --cc manifest.uuid
index 846a38634ad53e2fc8b13770df2c6899d8c4f1d5,5e0dd095a8517bb75b6d0618a26c1d1c86562eea..e9a7e57fbd316f222138eed0770bc41bc1080a54
@@@ -1,1 -1,1 +1,1 @@@
- d71adc3fd85cfc5902b7146101d030ab2fbe932ed05848a407a7422ddeeb4c43
 -bf9d70fc2fde06a3f132270a26d4abe321687169066aff26ad9e92757c7f9ee4
++c8d1f17fde280acd3e98772d947a5b1e698b08d25b23bcd0731ae2d18cfbddcf
diff --cc src/alter.c
Simple merge
diff --cc src/build.c
Simple merge
diff --cc src/callback.c
index dc450bc60aa8db480d34aa07deef4a4b4c03b4e2,421cef281444bb4f7705e29ef2ce4b030107448c..ec9f75571e94b21e063f09cb18311e6b52215349
  
  #include "sqliteInt.h"
  
-   if( IsSharedSchema(db) && db->magic!=SQLITE_MAGIC_ZOMBIE ){
 +/*
 +** Connections opened with the SQLITE_OPEN_SHARED_SCHEMA flag specified
 +** may use SchemaPool objects for any database that is not the temp db
 +** (iDb==1). For such databases (type "struct Db") there are three states
 +** the Schema/SchemaPool object may be in.
 +**
 +**   1) pSPool==0, pSchema points to an empty object allocated by
 +**      sqlite3_malloc(). DB_SchemaLoaded flag is clear.
 +**
 +**   2) pSPool!=0, pSchema points to a populated object owned by the
 +**      SchemaPool. DB_SchemaLoaded flag is set.
 +**
 +**   3) pSPool!=0, pSchema points to the SchemaPool's static object
 +**      (SchemaPool.sSchema).
 +*/
 +struct SchemaPool {
 +  int nRef;                       /* Number of pointers to this object */
 +  int nDelete;                    /* Schema objects deleted by ReleaseAll() */
 +  u64 cksum;                      /* Checksum for this Schema contents */
 +  Schema *pSchema;                /* Linked list of Schema objects */
 +  Schema sSchema;                 /* The single dummy schema object */
 +  SchemaPool *pNext;              /* Next element in schemaPoolList */
 +};
 +
 +#ifdef SQLITE_ENABLE_SHARED_SCHEMA
 +#ifdef SQLITE_DEBUG
 +static void assert_schema_state_ok(sqlite3 *db){
++  if( IsSharedSchema(db) && db->eOpenState!=SQLITE_STATE_ZOMBIE ){
 +    int i;
 +    for(i=0; i<db->nDb; i++){
 +      if( i!=1 ){
 +        Db *pDb = &db->aDb[i];
 +        Btree *pBt = pDb->pBt;
 +        if( pBt==0 ) continue;
 +        assert( sqlite3BtreeSchema(pBt, 0, 0)==0 );
 +        assert( pDb->pSchema );
 +        if( pDb->pSPool ){
 +          if( DbHasProperty(db, i, DB_SchemaLoaded)==0 ){
 +            assert( pDb->pSchema->tblHash.count==0 );
 +            assert( pDb->pSchema==&pDb->pSPool->sSchema );
 +          }else{
 +            assert( pDb->pSchema!=&pDb->pSPool->sSchema );
 +          }
 +        }else{
 +          assert( DbHasProperty(db, i, DB_SchemaLoaded)==0 );
 +          assert( pDb->pSchema->tblHash.count==0 );
 +          assert( pDb->pSchema!=&pDb->pSPool->sSchema );
 +        }
 +      }
 +    }
 +  }
 +}
 +#else
 +# define assert_schema_state_ok(x)
 +#endif
 +#endif /* ifdef SQLITE_ENABLE_SHARED_SCHEMA */
 +
  /*
  ** Invoke the 'collation needed' callback to request a collation sequence
  ** in the encoding enc of name zName, length nName.
diff --cc src/main.c
Simple merge
diff --cc src/shell.c.in
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/vtab.c
Simple merge