]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge trunk enhancements into begin-concurrent-pnu branch.
authordrh <>
Thu, 21 Oct 2021 14:27:00 +0000 (14:27 +0000)
committerdrh <>
Thu, 21 Oct 2021 14:27:00 +0000 (14:27 +0000)
FossilOrigin-Name: 4d972744c3d76254540837f0339731f4e62601cee924320aa3f3c0de7ee97ff3

21 files changed:
1  2 
Makefile.in
ext/session/sqlite3session.c
manifest
manifest.uuid
src/bitvec.c
src/btree.c
src/btreeInt.h
src/build.c
src/func.c
src/main.c
src/os_unix.c
src/pager.c
src/parse.y
src/pragma.h
src/select.c
src/sqlite.h.in
src/sqliteInt.h
src/vdbe.c
src/vdbeaux.c
test/corruptN.test
tool/mkpragmatab.tcl

diff --cc Makefile.in
Simple merge
index 4669f0a46911d08ef1c6ef35db45ad919cc1157c,a892804b49bcac6737830b24cce44dce9b378790..93a9f2c73dcd4b409e0293524c06e9af48661e2c
@@@ -2594,10 -2610,11 +2617,11 @@@ static int sessionGenerateChangeset
                  sessionAppendCol(&buf, pSel, iCol, &rc);
                }
              }else{
 -              rc = sessionAppendUpdate(&buf, bPatchset, pSel, p, abPK);
+               assert( abPK!=0 );  /* Because sessionSelectStmt() returned ok */
 +              rc = sessionAppendUpdate(&buf, ePatchset, pSel, p, abPK);
              }
            }else if( p->op!=SQLITE_INSERT ){
 -            rc = sessionAppendDelete(&buf, bPatchset, p, nCol, abPK);
 +            rc = sessionAppendDelete(&buf, ePatchset, p, nCol, abPK);
            }
            if( rc==SQLITE_OK ){
              rc = sqlite3_reset(pSel);
@@@ -2654,8 -2671,10 +2678,11 @@@ int sqlite3session_changeset
    int *pnChangeset,               /* OUT: Size of buffer at *ppChangeset */
    void **ppChangeset              /* OUT: Buffer containing changeset */
  ){
-   int rc = sessionGenerateChangeset(
+   int rc;
+   if( pnChangeset==0 || ppChangeset==0 ) return SQLITE_MISUSE;
 -  rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset,ppChangeset);
++  rc = sessionGenerateChangeset(
 +      pSession, SESSIONS_CHANGESET, 0, 0, pnChangeset, ppChangeset);
    assert( rc || pnChangeset==0 
         || pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize 
    );
@@@ -2670,8 -2689,8 +2697,9 @@@ int sqlite3session_changeset_strm
    int (*xOutput)(void *pOut, const void *pData, int nData),
    void *pOut
  ){
 -  return sessionGenerateChangeset(pSession, 0, xOutput, pOut, 0, 0);
+   if( xOutput==0 ) return SQLITE_MISUSE;
 +  return sessionGenerateChangeset(
 +      pSession, SESSIONS_CHANGESET, xOutput, pOut, 0, 0);
  }
  
  /*
@@@ -2682,8 -2701,8 +2710,9 @@@ int sqlite3session_patchset_strm
    int (*xOutput)(void *pOut, const void *pData, int nData),
    void *pOut
  ){
 -  return sessionGenerateChangeset(pSession, 1, xOutput, pOut, 0, 0);
+   if( xOutput==0 ) return SQLITE_MISUSE;
 +  return sessionGenerateChangeset(
 +      pSession, SESSIONS_PATCHSET, xOutput, pOut, 0, 0);
  }
  
  /*
@@@ -2698,20 -2717,10 +2727,21 @@@ int sqlite3session_patchset
    int *pnPatchset,                /* OUT: Size of buffer at *ppChangeset */
    void **ppPatchset               /* OUT: Buffer containing changeset */
  ){
 -  return sessionGenerateChangeset(pSession, 1, 0, 0, pnPatchset, ppPatchset);
+   if( pnPatchset==0 || ppPatchset==0 ) return SQLITE_MISUSE;
 +  return sessionGenerateChangeset(
 +      pSession, SESSIONS_PATCHSET, 0, 0, pnPatchset, ppPatchset);
  }
  
 +int sqlite3session_fullchangeset(
 +  sqlite3_session *pSession,      /* Session object */
 +  int *pnChangeset,               /* OUT: Size of buffer at *ppChangeset */
 +  void **ppChangeset              /* OUT: Buffer containing changeset */
 +){
 +  return sessionGenerateChangeset(
 +      pSession, SESSIONS_FULLCHANGESET, 0, 0, pnChangeset, ppChangeset);
 +}
 +
 +
  /*
  ** Enable or disable the session object passed as the first argument.
  */
diff --cc manifest
index bad0335347a0ca12cdbabc15f0e51f686d9b1e26,f4a1eebc38fa9b7b39a6cb596de05f5e7d844a40..9a2b856dce118168ef671bfa72b04fcb77037910
+++ b/manifest
@@@ -1,11 -1,11 +1,11 @@@
- C Merge\srecent\strunk\senhancements\sinto\sbegin-concurrent-pnu\sbranch.
- D 2021-10-04T12:09:44.389
 -C Fix\san\sincorrect\sJSON\sassert()\sthat\swas\sadded\s5\sdays\sago\sby\scheck-in\s[7b8ea2298927fd34].
 -D 2021-10-20T20:22:37.259
++C Merge\strunk\senhancements\sinto\sbegin-concurrent-pnu\sbranch.
++D 2021-10-21T14:27:00.241
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
- F Makefile.in 6597bda4cf6e47691ecafe84255309f53f76be4c3547b30553971c650bf80c03
 -F Makefile.in 457a0f10540bd18a700c9d45add8dcc06e040bc9d1e948c9816b9b6eab1de384
++F Makefile.in 2eaa7439d9e196f5f1a4e3598b4ee5ec8b9984a78c4cf70b01eee18134a91082
  F Makefile.linux-gcc f609543700659711fbd230eced1f01353117621dccae7b9fb70daa64236c5241
- F Makefile.msc b18738be47ba9293dbea2048fe1d5a737456fdc630361cc98ef2c2f73bf3395c
+ F Makefile.msc fef1e54f1a2138aa2de79ad8a928f1711106d082e6a35cdfbbfec9e8fd0c59c3
  F README.md 27fb76aa7eb57ed63a53bbba7292b6bf71f51125554f79f16b5d040edd1e6110
  F VERSION c6595fef606851f2bc3ebed6a7386c73751835fc909feab7c093739fa4b3c1d1
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
@@@ -465,11 -462,9 +465,11 @@@ F ext/session/sessionrebase.test ccfa71
  F ext/session/sessionsize.test 6f644aff31c7f1e4871e9ff3542766e18da68fc7e587b83a347ea9820a002dd8
  F ext/session/sessionstat1.test 218d351cf9fcd6648f125a26b607b140310160184723c2666091b54450a68fb5
  F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
 -F ext/session/sqlite3session.c 1d019c5caf51936ef24c761db63552b06e0e0d951c8740bba9639b17fa0cb107
 -F ext/session/sqlite3session.h 0907de79bc13a2e3af30a6dc29acc60792a3eaf7d33d44cf52500d0f3c2b2171
 -F ext/session/test_session.c f433f68a8a8c64b0f5bc74dc725078f12483301ad4ae8375205eef790274a787
 +F ext/session/sqlite3changebatch.c d5553b79e012ee2cb06c0a96bdf9dfe19e66354390ea0036cc46c4953142d517
 +F ext/session/sqlite3changebatch.h e72016998c9a22d439ddfd547b69e1ebac810c24
- F ext/session/sqlite3session.c edec9a0ba226ec6d9e51eb760e2ebf97c80e61e3194caa7c39e3d900c0b347c0
++F ext/session/sqlite3session.c 421854336ece362552508426d89091c1832148066f0641e8d72e22f58d9241f3
 +F ext/session/sqlite3session.h c26e54521584ad26dcb459171d94bbe6412ca26ed4613551c7f0c80aad129abd
 +F ext/session/test_session.c 226461035031632255c8098f3bcfa4ea27f0b051efd88857a2a36bcea5c294b9
  F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
  F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
  F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
@@@ -488,37 -483,37 +488,37 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c a6afe961ef3544104fa635a0c3161bfe1a34382f32e2a28706993abadedbffed
- F src/analyze.c 979b6d2cdaca992a9c9f0818de55d08fb9a4e52929a509752b52d9fd23bb86d3
- F src/attach.c a514e81758ba7b3a3a0501faf70af6cfc509de8810235db726cfc9f25165e929
+ F src/alter.c d6b32481211fd5628b31d86329df6434bfc92e3372b53215339dc8cb47408644
+ F src/analyze.c 7518b99e07c5494111fe3bd867f28f804b6c5c1ad0703ec3d116de9bab3fa516
+ F src/attach.c e3f9d9a2a4a844750f3f348f37afb244535f21382cbfcd840152cb21cb41cfaf
  F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf
  F src/backup.c 3014889fa06e20e6adfa0d07b60097eec1f6e5b06671625f476a714d2356513d
- F src/bitvec.c 8433d9e98dd6f2ea3286e0d2fe5d65de1bfc18a706486eb2026b01be066b5806
 -F src/bitvec.c 7c849aac407230278445cb069bebc5f89bf2ddd87c5ed9459b070a9175707b3d
++F src/bitvec.c 3907fcbe8a0c8c2db58d97087d15cdabbf2842adb9125df9ab9ff87d3db16775
  F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
- F src/btree.c 8495859cfe26d84e48bf4ea11b29914bb2c8d38df663b10f57581482dff5cad0
 -F src/btree.c 0604f4af97624ffbe2f0757c559c51f57760c6ad3d8ee3ee94fa6ec5795f2832
 -F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
 -F src/btreeInt.h ee9348c4cb9077243b049edc93a82c1f32ca48baeabf2140d41362b9f9139ff7
 -F src/build.c 8bdda90f9b1189c7b0813575171b3c6b2d74b3ade57c11cb4383776781ea9335
++F src/btree.c 93a0ee8eee6e4ab8233a1ee79223eda7c649f85129e57c5d63e7b6f24bd9977f
 +F src/btree.h 900067641b64d619e6e2a93bd115c952a52f41d3bee32e551e2a4ceee05fc431
- F src/btreeInt.h 1e9f10107a4ec5d2940ae5b859242ae83b81402986724bed08b8491a5ea64a4d
- F src/build.c 0d7fb44fae1f9dfe3872f4d38a71072bc735254651799d890d3794fb95ecb69e
- F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
++F src/btreeInt.h 3f19f0be5af0b68cff55e58df4b11e7a0692d9e8a820ceaeba4084659a86cf28
++F src/build.c 3638d6e7dbb47ab1e05ac0ec89323d3b35579689f077159ebab7711954fdff89
+ F src/callback.c 106b585da1edd57d75fa579d823a5218e0bf37f191dbf7417eeb4a8a9a267dbc
  F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
  F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1
- F src/date.c 467848d8187382764e37fd7678d6825cdfb90d9e564648527ed832e999ea7b85
+ F src/date.c fa928630fecf1d436cdc7a7a5c950c781709023ca782c21b7a43cc7361a9451e
  F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
  F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
- F src/delete.c 3ce6af6b64c8b476de51ccc32da0cb3142d42e65754e1d8118addf65b8bcba15
- F src/expr.c ebc76aa98b9bcd556c2855942c18f4d2f52c6504c13f7285413026bdd1c7bbf5
+ F src/delete.c 0c151975fa99560767d7747f9b60543d0093d9f8b89f13d2d6058e9c83ad19e7
+ F src/expr.c 529f7eca2821e874a375b1b318e697d62cb28f56069677c93f587f2de5dceb54
  F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
- F src/fkey.c 1905af1821b88321e1bb9d6a69e704495b6844a9b6c29398d40117cc251e893c
- F src/func.c f2516e2bf3b806a8afe38cb7e245708a09981ef596f410fa47310a4ef47c8d75
- F src/global.c 612ea60c9acbcb45754c2ed659b4a56936a06814718e969636fedc7e3b889808
+ F src/fkey.c 187b67af20c5795953a592832c5d985e4313fe503ebd8f95e3e9e9ad5a730bb5
 -F src/func.c 1cfb09d7ffca81238eccefdb0293e1f5b7cfebbd1816dfad5ec6024742a7496b
++F src/func.c a5dce8a8ff85310e2c88262a25bcded0a7e92be9a4bda24bbf6eab78e99c2f13
+ F src/global.c 59bfd5705a623f0b45e91622699953cfd1be2c176e78d8ff610463f2ea4ec51b
  F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
  F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
  F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
  F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
- F src/insert.c 16fa4b66709db6db5bb31475f2321d0a839269765aa2461a520c151c385e8b9d
+ F src/insert.c b32e2dcbca838cb8acd4777a59243db4bcea53089e3181b0ea3e4dc75b43aeff
  F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
  F src/loadext.c 0aa9e7f08e168e3874cb54984408e3976dafdf5616d511952c425b5ac088ea3e
- F src/main.c 80a5018291ab7d28565ac0ccd08d955d2b659b157d21aa2a64eff6416f11954d
 -F src/main.c bfe067d61ebbd0e6eb023f1fb6b353021e621cf1657e061d629064a740bfbf6f
++F src/main.c 7128184e581e79689a283647e804dbbbaff88bdf1fe7e77046adbb39b1d37b38
  F src/malloc.c ef796bcc0e81d845d59a469f1cf235056caf9024172fd524e32136e65593647b
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
@@@ -538,28 -533,28 +538,28 @@@ F src/os.c 91fc69f95ef0528368174dca20f0
  F src/os.h 26890f540b475598cd9881dcc68931377b8d429d3ea3e2eeb64470cde64199f8
  F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
  F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
- F src/os_unix.c 20614e98809738c27daeb38d8a298b748508059879300e5a20f6d20fa4103257
 -F src/os_unix.c feac74a0ba7652c405ba30f61d9e738be717d15899f2915a129ef160a3e5b26b
++F src/os_unix.c 5d4a80fe497e48d87078e67ea88e9e44cd714dc02b9f1f20f40831883f81411d
  F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
  F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
- F src/pager.c f48aa94bc2adf3c016b7f10d3678b17fe3f542c3ef859b2f7c29aa42007a1c60
 -F src/pager.c 71e3102150ae1b5567043ccda932aa81fb7de9848f501dafe491087c940e34dc
 -F src/pager.h 4bf9b3213a4b2bebbced5eaa8b219cf25d4a82f385d093cd64b7e93e5285f66f
 -F src/parse.y 0bd7971a7489bbf6c3726f1b50da6e508bdff8fa493e9cc3f5a96b12cbb2361e
++F src/pager.c 3c8211b75001c9a625fe9f4a48c705345bc46494456c3ac6235d8c170ef0b99b
 +F src/pager.h fdc30693c403aa9b4293d0b126346db7e450f8f0e5d2c1bb8355acb1cb8da6fd
- F src/parse.y 6a20fbf70d4eeb36bd7030b96d55ed4da83b728eff4467f21ddfedb4c04ef073
++F src/parse.y 59631359574901cc5cd4780939a6740f6bc597bd473334e744c1a1c32d9adef3
  F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b
  F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
  F src/pcache1.c 54881292a9a5db202b2c0ac541c5e3ef9a5e8c4f1c1383adb2601d5499a60e65
- F src/pragma.c 4a473feae3646063996ce3bfae78032009fa950765908d97424f7578b202813c
- F src/pragma.h e6951efe2304341b3830219adad899e20e0b0e3e29bb99bb0a2383eb2e59b97d
+ F src/pragma.c 12760c6ae92a350f5924896644a3e58d969c7c78e346b8cb542f2a8cef7c45d1
 -F src/pragma.h 87330ed2fbfa2a1274de93ca0ab850fba336189228cb256089202c3b52766fad
++F src/pragma.h f98354c48571c490927029510566839bf9e7242569bfbb48032dafeb008481d2
  F src/prepare.c 8f07616db04337057b8498b72d051ee90f73c54615c2e908c05404cef1e060b7
  F src/printf.c 5901672228f305f7d493cbc4e7d76a61a5caecdbc1cd06b1f9ec42ea4265cf8d
 -F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c
 +F src/random.c c6e61d041f230d46c658e6dfe7165fc1ecb0093d5fe28cfe74f389d261dc3af8
- F src/resolve.c b9e60afa56d0484ee573aba54d9e73603736236df33d2ae3421b4cd0367d907d
+ F src/resolve.c ae65c88f5d0d4bc0052b203773d407efa2387c2bd6b202f87178006c7bb8632c
  F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
- F src/select.c 586b6adc13c80ef67252bc74b3663ad3af3fce9ae931ac6d1446427da827afdf
- F src/shell.c.in 923671ae56ad899db71296d0ebefea9c85e7e52ef087c8a097f3f3a3a3ade98c
- F src/sqlite.h.in 8b9e5003e969aa28b726f855dbd5dfc96ae33a239031e2ee6215eea2c2ada050
 -F src/select.c 32d25b5af6c708aa63373c78c2e59681910387a7a78c08ec3086cadc77d41627
++F src/select.c 8c2341a9802e0979092d920544823a778f4c2bddf59d323d5e4ed6204ab50550
+ F src/shell.c.in e80fe5118fc3b942c1becc67ebfca6a887dbab9295e0bd5b6da61c4375baa637
 -F src/sqlite.h.in f0c1ecb5af508aa8e970cd8bc0ec851e6c380b81825038d458846c2fcdfcef50
++F src/sqlite.h.in 024a062670b27cd9ff7aeb5f63d341a6d32b95ebf5eff08c13bb07322f3d004a
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h e97f4e9b509408fea4c4e9bef5a41608dfac343b4d3c7a990dedde1e19af9510
- F src/sqliteInt.h 8af03a8091bd7d7e8e581c02ca36d24836987e24e9f3ae639cd47b71372a6baa
 -F src/sqliteInt.h df3bc11691f5977041efb0d16fcd2b5e10e97bc5f8231edd3fbc0ed24978be30
++F src/sqliteInt.h e0f023435136c891b95df9ba7462563b960e10c5bff8183728f6ca32f25b7cd4
  F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
  F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@@ -619,33 -614,33 +619,33 @@@ F src/test_window.c cdae419fdcea5bad6dc
  F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
  F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
  F src/tokenize.c bae853ad129d1129c063de8630a3e99e306283bc40146f359b1bb91be2c08f1e
- F src/treeview.c 43f88d0fd19976a60aee6867959213b438593276f1e8179048df85f416a1ab19
+ F src/treeview.c 9dfdb7ff7f6645d0a6458dbdf4ffac041c071c4533a6db8bb6e502b979ac67bc
  F src/trigger.c 3f612ce5f0858b6c23460a3c799d01f408b49b0b29d931d8b8e6fc224a8667de
 -F src/update.c 69c4c10bc6873a80c0a77cb578f9fc60ee90003d03f9530bc3370fa24615772d
 +F src/update.c 440b9aae32b930fc8c40beff27cdc6060a2fc4c99d911e415f92bb8a4e6eab68
  F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
  F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
- F src/util.c 3f27a1eae01c8bbbb8cdef2f26bd8e6a2a7db08106ef7c3dcc990787a5da6e86
+ F src/util.c 30df8356e231dad33be10bb27897655002668343280004ba28c734489414a167
 -F src/vacuum.c 454973a59fb20bb982efc2df568a098616db6328a0491b6e84e2e07f7333db45
 -F src/vdbe.c a80943ed189ed5f4215636bde0aa7901319b051baffc0706f93a786bdf49ffcf
 +F src/vacuum.c a02ce4cb7c45741675bac31528b4bb7b8821727cf3306ade2b06361b4704b248
- F src/vdbe.c 62660b3d4d8adbe46ab6a3341a44b0d87abdac7acb1be5552b01d66d2509e18f
++F src/vdbe.c 4faf394ea085d18f55881baa97c7c25b2b572fa149ed0bc3170e2d4fc661d1c6
  F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
  F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b
- F src/vdbeapi.c aa5aaf2c37676b83af5724c6cd8207a3064ed46a217fd180957f75ac84f7a2a5
- F src/vdbeaux.c d27f21b5292f3fa693620396691ed735c20628c85d30dbd8e56b2f3e9dbb6779
- F src/vdbeblob.c 60a7694760e35b2bba166cf49eb6a1eb0b31581102b49de78008ca3032406065
- F src/vdbemem.c 0e830c2aab24241eed85bd4c8a5bd8c9b959081316477440bfffb35089ba7d0b
+ F src/vdbeapi.c 7b83468feb1d42a09d4c2e5241a3eaa3d1f138e289a843cba9fd3f1dad95ca67
 -F src/vdbeaux.c a57c760d1897f1b72f6fae26983df363db7a2c42d88721187e907f2c84862b42
++F src/vdbeaux.c ec21bd1475c69543d961b241b51ad4321342ae1ec1d64969063efbb3db7d23a0
+ F src/vdbeblob.c 292e96c01c4219fca71d74e1002906d43eb232af4bd83f7552a3faec741f3eb8
+ F src/vdbemem.c 8be0af1060012520381d3296fcb1718e80cd5b99ce04f51f7e1c4dba4072caac
  F src/vdbesort.c cd5130f683706c1a43e165a74187745fb3351cb56052cf9dc91de820634bbde2
  F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823
  F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
- F src/vtab.c c289aa504f278f23b64cb33c95d284495c5f405bd363b419d31c92c61c14df1f
+ F src/vtab.c d07cc24dd84b0b51bf05adb187b0d2e6b0cac56cfbc0197995a26d4f8fa5c7e2
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 -F src/wal.c 2be08331d798237ad5d7ae0b252700ffb2b63189cb18d993496d009a93e2f81c
 -F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
 +F src/wal.c e3a21abbd23d5c8f30fb03e545ba292d3640890968e62ef1604c4ff30c0f043a
 +F src/wal.h 7ffe787437f20a098af347011967a6d3bb8e5c3dc645e6be59eff44d2b2c5297
- F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac
- F src/where.c d9215db24449143da844ab86c727bbbef94ad45c53cc17bc0051386472db5789
- F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b
- F src/wherecode.c 0208553a0602146b5640747c0e3f7a8c785108c2d06a160b69f23491e9dc781e
- F src/whereexpr.c e5fdac355deef93a821f03b90770f92f2be833e92bbdeff8ac1b6c2ae1f74356
- F src/window.c f27e34e896f84e0bedec32b027d4531f224971ce3e16f8e1d97a968875ddcec1
+ F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
+ F src/where.c ecabef93b0f14442a73eca205fc960428984d75fbdc7d60226b7fc9cac127187
+ F src/whereInt.h 83877a75a1bce056ea44aff02f1dfa958ad1d6038c213ddadb8652003b45151d
+ F src/wherecode.c a1d79cc5a11f44b079bf2352e542ddb265f84cfa6c835d40a9f195dbe5fff83e
+ F src/whereexpr.c 17bdbf4f5b490e70a18635498f0b910a558f953a9bf80af7f19cbde6e60e6825
+ F src/window.c 0dff6fedf61493490d21ced5d7a7b4321d4c0db6c8123f0179c46080a860850a
  F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
  F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627
  F test/affinity3.test eecb0dabee4b7765a8465439d5e99429279ffba23ca74a7eae270a452799f9e7
@@@ -823,7 -808,7 +823,7 @@@ F test/corruptJ.test 4d5ccc4bf959464229
  F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
  F test/corruptL.test 7d3440831ca24ba64305583c4d4506d417d3f89f5775c0b7cc8102db078f8ff5
  F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
- F test/corruptN.test b8fd041aabfc0a3ff173f38bdefa907c02dfe58f7e639c79bac7e2e5791c958a
 -F test/corruptN.test 14962dc3f5567b5722a24d166bf143bec790673476f7b0932d82609210d1becd
++F test/corruptN.test 89d078b7c5c5197f4fca14b4ed1d45196fcad52aa22439ffbc61baac758a56b6
  F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
  F test/count.test 5364003488249957750a5f15ee42ca1cd7b100b1131c2dc71fff266a1250bf55
  F test/countofview.test e17d6e6688cf74f22783c9ec6e788c0790ee4fbbaee713affd00b1ac0bb39b86
@@@ -1878,7 -1862,7 +1878,7 @@@ F tool/mkmsvcmin.tcl 6ecab9fe22c2c8de4d
  F tool/mkopcodec.tcl 33d20791e191df43209b77d37f0ff0904620b28465cca6990cf8d60da61a07ef
  F tool/mkopcodeh.tcl 130b88697da6ec5b89b41844d955d08fb62c2552e889dec8c7bcecb28d8f50bd
  F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
- F tool/mkpragmatab.tcl 9e0f8690f36b059bac0f60abedcdcf0a57ea91ee501ba586bfd90fcf986d8361
 -F tool/mkpragmatab.tcl de206c64b6e9ac8cd5e3cbd0ffe456f07d5710605ef8385d677e60ce3335ea12
++F tool/mkpragmatab.tcl 6c5c676b10f9ccac33b38b2b27d3b0578561f5c39137410e1e616ac3b79a4316
  F tool/mkshellc.tcl df5d249617f9cc94d5c48eb0401673eb3f31f383ecbc54e8a13ca3dd97e89450
  F tool/mksourceid.c 36aa8020014aed0836fd13c51d6dc9219b0df1761d6b5f58ff5b616211b079b9
  F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
@@@ -1945,7 -1929,7 +1945,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 514b3cef6b7403cde90dcc926d67355ad6340b79b6a1b06004d97bebfc4eaced 8b24c177061c38361588f419eda9b7943b72a0c6b2855b6f39272451b8a1b813
- R 41d213bf93b3cca60509b4d84285d67b
 -P f52b84e69e5fcbe59ccc6163e7e78aa3822f2c354c88f8a76a2d1d4c90a99821
 -R 670ebc316cf1a452957a2d11a7221cf2
++P 35ad7bc6e0b31d838a80451300123e160c4a9367a3ea600f01e515a8135563ef e162da3ab4c183b67872be004035c48fc8f20084bc5757aec27410ce23a36631
++R 751941e4c1b7a0c647e10acaaf511c51
  U drh
- Z 82145dbe7c57cb541c75738c14e7e787
 -Z 70867d1471ed7c4b89f3d005caea5399
++Z 0fa6fb424fa4c6aed6eca941cc965041
diff --cc manifest.uuid
index 53e866dcf713081d9175073d3cd95e3b99fd894e,2057820b87766ca8695df6fadec82f742e3d3903..0388597a53d346395b9184ba09def28f3d7a693f
@@@ -1,1 -1,1 +1,1 @@@
- 35ad7bc6e0b31d838a80451300123e160c4a9367a3ea600f01e515a8135563ef
 -e162da3ab4c183b67872be004035c48fc8f20084bc5757aec27410ce23a36631
++4d972744c3d76254540837f0339731f4e62601cee924320aa3f3c0de7ee97ff3
diff --cc src/bitvec.c
Simple merge
diff --cc src/btree.c
index cc263e2684563d35566c908969a09e36be3e430e,ccb7eac1a76cb34071f6cda55039c5e175c8565e..323fbdc3105e1bc8aa301a24a80e4c6370c5e1cd
@@@ -10026,8 -9549,9 +10018,10 @@@ static int clearDatabasePage
    }
    rc = getAndInitPage(pBt, pgno, &pPage, 0, 0);
    if( rc ) return rc;
-   if( pPage->bBusy ){
 +  setMempageRoot(pPage, pgnoRoot);
+   if( (pBt->openFlags & BTREE_SINGLE)==0 
+    && sqlite3PagerPageRefcount(pPage->pDbPage)!=1
+   ){
      rc = SQLITE_CORRUPT_BKPT;
      goto cleardatabasepage_out;
    }
diff --cc src/btreeInt.h
Simple merge
diff --cc src/build.c
Simple merge
diff --cc src/func.c
Simple merge
diff --cc src/main.c
Simple merge
diff --cc src/os_unix.c
Simple merge
diff --cc src/pager.c
Simple merge
diff --cc src/parse.y
Simple merge
diff --cc src/pragma.h
Simple merge
diff --cc src/select.c
Simple merge
diff --cc src/sqlite.h.in
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge
Simple merge
Simple merge