]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge latest changes from wal2 into this branch.
authordan <Dan Kennedy>
Fri, 21 May 2021 17:31:04 +0000 (17:31 +0000)
committerdan <Dan Kennedy>
Fri, 21 May 2021 17:31:04 +0000 (17:31 +0000)
FossilOrigin-Name: 4efefb5938c1ec83ee367ae5cc4bba906729b4e8699fa81adc6ca3618c73eb03

24 files changed:
1  2 
ext/session/sqlite3session.c
ext/session/sqlite3session.h
ext/session/test_session.c
main.mk
manifest
manifest.uuid
src/btree.c
src/build.c
src/func.c
src/main.c
src/os_unix.c
src/pager.c
src/parse.y
src/select.c
src/sqlite.h.in
src/sqliteInt.h
src/test1.c
src/test_config.c
src/update.c
src/vdbe.c
src/vdbeaux.c
src/wal.c
test/corruptN.test
test/permutations.test

index f069a42e1f37dae611a4353f76af6f2690913adc,1f6c58b4db67af84d096dd21930e1a172d7f1c9f..e2f997393f301b511c160a8f6c5b3db9e2ee9d91
@@@ -2527,8 -2631,11 +2638,12 @@@ int sqlite3session_changeset
    int *pnChangeset,               /* OUT: Size of buffer at *ppChangeset */
    void **ppChangeset              /* OUT: Buffer containing changeset */
  ){
-   return sessionGenerateChangeset(
 -  int rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset,ppChangeset);
++  int rc = sessionGenerateChangeset(
 +      pSession, SESSIONS_CHANGESET, 0, 0, pnChangeset, ppChangeset);
+   assert( rc || pnChangeset==0 
+        || pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize 
+   );
+   return rc;
  }
  
  /*
index 107bcfb6a9ba4705af2dc027499601c75cdd31bb,10d0133901622d690dd2312111116dd418ba9704..0090f67d76b01993cf5f5e9f226e1ca835542ce2
@@@ -323,32 -355,22 +355,48 @@@ int sqlite3session_changeset
    void **ppChangeset              /* OUT: Buffer containing changeset */
  );
  
 +/*
 +** CAPI3REF: Generate A Full Changeset From A Session Object
 +**
 +** This function is similar to sqlite3session_changeset(), except that for
 +** each row affected by an UPDATE statement, all old.* values are recorded
 +** as part of the changeset, not just those modified.
 +*/
 +int sqlite3session_fullchangeset(
 +  sqlite3_session *pSession,      /* Session object */
 +  int *pnChangeset,               /* OUT: Size of buffer at *ppChangeset */
 +  void **ppChangeset              /* OUT: Buffer containing changeset */
 +);
 +
 +/*
 +** CAPI3REF: Generate A Full Changeset From A Session Object
 +**
 +** This function is similar to sqlite3session_changeset(), except that for
 +** each row affected by an UPDATE statement, all old.* values are recorded
 +** as part of the changeset, not just those modified.
 +*/
 +int sqlite3session_fullchangeset(
 +  sqlite3_session *pSession,      /* Session object */
 +  int *pnChangeset,               /* OUT: Size of buffer at *ppChangeset */
 +  void **ppChangeset              /* OUT: Buffer containing changeset */
 +);
 +
+ /*
+ ** CAPI3REF: Return An Upper-limit For The Size Of The Changeset
+ ** METHOD: sqlite3_session
+ **
+ ** By default, this function always returns 0. For it to return
+ ** a useful result, the sqlite3_session object must have been configured
+ ** to enable this API using sqlite3session_object_config() with the
+ ** SQLITE_SESSION_OBJCONFIG_SIZE verb.
+ **
+ ** When enabled, this function returns an upper limit, in bytes, for the size 
+ ** of the changeset that might be produced if sqlite3session_changeset() were
+ ** called. The final changeset size might be equal to or smaller than the
+ ** size in bytes returned by this function.
+ */
+ sqlite3_int64 sqlite3session_changeset_size(sqlite3_session *pSession);
  /*
  ** CAPI3REF: Load The Difference Between Tables Into A Session
  ** METHOD: sqlite3_session
index d968699e029ecea199b212a8836fb744fb5b354a,f2fc77eee3f596fe0b6df982af03f081b78ea051..009f2990d0dc7386fe6aca16843ed4fbb9b62eee
@@@ -235,18 -234,20 +235,20 @@@ static int SQLITE_TCLAPI test_session_c
      const char *zSub;
      int nArg;
      const char *zMsg;
 -    int iSub;
    } aSub[] = {
 -    { "attach",       1, "TABLE",      }, /* 0 */
 -    { "changeset",    0, "",           }, /* 1 */
 -    { "delete",       0, "",           }, /* 2 */
 -    { "enable",       1, "BOOL",       }, /* 3 */
 -    { "indirect",     1, "BOOL",       }, /* 4 */
 -    { "isempty",      0, "",           }, /* 5 */
 -    { "table_filter", 1, "SCRIPT",     }, /* 6 */
 +    { "attach",       1, "TABLE"       }, /* 0 */
 +    { "changeset",    0, ""            }, /* 1 */
 +    { "delete",       0, ""            }, /* 2 */
 +    { "enable",       1, "BOOL"        }, /* 3 */
 +    { "indirect",     1, "BOOL"        }, /* 4 */
 +    { "isempty",      0, ""            }, /* 5 */
 +    { "table_filter", 1, "SCRIPT"      }, /* 6 */
      { "patchset",     0, "",           }, /* 7 */
 -    { "diff",         2, "FROMDB TBL", }, /* 8 */
 -    { "memory_used",  0, "",           }, /* 9 */
 -    { "changeset_size", 0, "",         }, /* 10 */
 -    { "object_config_size", 1, "INTEGER", }, /* 11 */
 +    { "diff",         2, "FROMDB TBL"  }, /* 8 */
 +    { "fullchangeset",0, ""            }, /* 9 */
 +    { "memory_used",  0, "",           }, /* 10 */
++    { "changeset_size", 0, "",         }, /* 11 */
++    { "object_config_size", 1, "INTEGER", }, /* 12 */
      { 0 }
    };
    int iSub;
        Tcl_SetObjResult(interp, Tcl_NewWideIntObj(nMalloc));
        break;
      }
 -    case 10: {
 -    case 11: {
++    case 11: {
+       sqlite3_int64 nSize = sqlite3session_changeset_size(pSession);
+       Tcl_SetObjResult(interp, Tcl_NewWideIntObj(nSize));
+       break;
+     }
++    case 12: {
+       int rc;
+       int iArg;
+       if( Tcl_GetIntFromObj(interp, objv[2], &iArg) ){
+         return TCL_ERROR;
+       }
+       rc = sqlite3session_object_config(
+           pSession, SQLITE_SESSION_OBJCONFIG_SIZE, &iArg
+       );
+       if( rc!=SQLITE_OK ){
+         extern const char *sqlite3ErrName(int);
+         Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+       }else{
+         Tcl_SetObjResult(interp, Tcl_NewIntObj(iArg));
+       }
+       break;
+     }
    }
  
    return TCL_OK;
diff --cc main.mk
index 1aabb4d9651a78b9e25055c988ca81ee00269fed,cf0739ca3872e4b7fcc65281fad43c570993b5db..2a085a3163a3d89e3c438f20ff3e493593f01eee
+++ b/main.mk
@@@ -440,8 -440,8 +440,9 @@@ TESTSRC2 = 
    $(TOP)/ext/async/sqlite3async.c \
    $(TOP)/ext/misc/stmt.c \
    $(TOP)/ext/session/sqlite3session.c \
-   $(TOP)/ext/session/test_session.c 
 +  $(TOP)/ext/session/sqlite3changebatch.c \
+   $(TOP)/ext/session/test_session.c \
+   fts5.c
  
  # Header files used by all library source files.
  #
diff --cc manifest
index 801dddf141df9cad58ebd5c65b0a53bb5c0b79a9,cc95fece473d52aebbdd018585a73235abd7efc4..c04ab4523f2918f61b6ea2f048cd18ace33cd000
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
- C Merge\sup\sall\sthe\s3.35.3\schanges\sinto\sthe\sbegin-concurrent-pnu-wal2\sbranch.
- D 2021-03-26T14:04:34.993
 -C Merge\sthe\slatest\strunk\senhancements\sinto\sthe\swal2\sbranch.
 -D 2021-05-21T16:42:05.867
++C Merge\slatest\schanges\sfrom\swal2\sinto\sthis\sbranch.
++D 2021-05-21T17:31:04.357
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@ -38,8 -38,7 +38,8 @@@ F configure c658869fc056a2460a2212fb296
  F configure.ac 4e4b58b32f88c8da9914a2f2c3158f80e69907eccc019fcc7e3ba14ffd91c640
  F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad
  F doc/F2FS.txt c1d4a0ae9711cfe0e1d8b019d154f1c29e0d3abfe820787ba1e9ed7691160fcd
- F doc/lemon.html 1bb72ece6271df0d901d233551dd985f2c6ba30d09382cf2d321ed951ab57491
 +F doc/begin_concurrent.md 4bee2c3990d1eb800f1ce3726a911292a8e4b889300b2ffd4b08d357370db299
+ F doc/lemon.html efc0cd2345d66905505d98f862e1c571512def0ceb5b016cb658fd4918eb76a3
  F doc/pager-invariants.txt 27fed9a70ddad2088750c4a2b493b63853da2710
  F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a
  F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56
@@@ -458,20 -455,19 +458,21 @@@ F ext/session/sessioninvert.test 040755
  F ext/session/sessionmem.test f2a735db84a3e9e19f571033b725b0b2daf847f3f28b1da55a0c1a4e74f1de09
  F ext/session/sessionnoop.test a9366a36a95ef85f8a3687856ebef46983df399541174cb1ede2ee53b8011bc7
  F ext/session/sessionrebase.test ccfa716b23bd1d3b03217ee58cfd90c78d4b99f53e6a9a2f05e82363b9142810
+ F ext/session/sessionsize.test 6f644aff31c7f1e4871e9ff3542766e18da68fc7e587b83a347ea9820a002dd8
  F ext/session/sessionstat1.test 218d351cf9fcd6648f125a26b607b140310160184723c2666091b54450a68fb5
  F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
 -F ext/session/sqlite3session.c 703634ca25b4b903ae8ec25045802a8c8deca36a65d2b993c4bc8888f6d6c7ee
 -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 5eb3a3cb490912376c5720d24eb256753e4a29a2a62f39ac708a084d854b4fea
- F ext/session/sqlite3session.h cae11f96e40915220076acf4d7b3e4eb26f817d92064bd5983d47f9fe7f31ec6
- F ext/session/test_session.c 18372dfe254a219705f89bc95c5ef26744236c4dbac5cdfbe71959290afc928d
++F ext/session/sqlite3session.c 381b2437cd5607193b5bf4c07b7f6026adfd7a3258435af1ee8f833eaf935b99
++F ext/session/sqlite3session.h 01807bb8c8f531c23052032e9d531eec49af79b7394f8213cf5a49784325b6a8
++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
  F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
  F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
  F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
- F main.mk 884bf69d5658fdb71862a7e4bab17bdd7fd3c6782992f6879d2ea95d7c024af5
 -F main.mk dc93796a395c79ce1493b2358e8a06f04d71b138a216db20fd4d3349893a91f1
++F main.mk 026b21dfd84fccc01479857995685246ddabc6f7d28e9079cdd5ca89874912cd
  F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
  F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
  F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
@@@ -483,37 -479,37 +484,37 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c 2d631213818b654faaf08755f26e934134c4769757ae9286981401cd6b571081
+ F src/alter.c df53c39fd4f32528fc7ad8188b3bf2b506e1a8b3bb975b14f16a1bc6e901950f
  F src/analyze.c 01c6c6765cb4d40b473b71d85535093730770bb186f2f473abac25f07fcdee5c
- F src/attach.c 9cbe761e464025694df8e6f6ee4d9f41432c3a255ca9443ccbb4130eeb87cf72
+ F src/attach.c a514e81758ba7b3a3a0501faf70af6cfc509de8810235db726cfc9f25165e929
  F src/auth.c 08954fdc4cc2da5264ba5b75cfd90b67a6fc7d1710a02ccf917c38eadec77853
  F src/backup.c 3014889fa06e20e6adfa0d07b60097eec1f6e5b06671625f476a714d2356513d
 -F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
 +F src/bitvec.c 8433d9e98dd6f2ea3286e0d2fe5d65de1bfc18a706486eb2026b01be066b5806
  F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
- F src/btree.c 0ee2ae302a6e6985f655f3ebcf0e7fc61d0963da66c512780b0bf0709372d8e6
 -F src/btree.c 8e6896c17b8cac46912891ceb19b98485d4922e503eeee6bfca05654270e4109
 -F src/btree.h 096cc53baa58be22b02c896d1cf933c38cfc6d65f9253c1367ece8cc88a24de5
 -F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
 -F src/build.c daeb1beb04e3729456f095686bc26bb0cde026263fc281257d431ba22c2e7f21
++F src/btree.c 8869176dd073fef60c2fab8074ea84fafd3edfdec21a60cbe3e91832e0d4dde0
 +F src/btree.h ccdc64bd1eee7ba79d4c0b2af22b6df1e5ededdbf9606f45f4fca4738dd6fa0b
 +F src/btreeInt.h 1e9f10107a4ec5d2940ae5b859242ae83b81402986724bed08b8491a5ea64a4d
- F src/build.c 9f06854962aad6b5d465c38f9f6e8c307028fbb4efa9fccb0531f0874bd088df
++F src/build.c b470cd22b984fcb9c35ae24855b2a167a83098f56fbad744291df421570ec5cc
  F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
  F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
- F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410
+ F src/ctime.c 3052b6b05ed9ef547a3dd66b8e01bfa9d582e78752ad6ed327da84652641e038
  F src/date.c e0632f335952b32401482d099321bbf12716b29d6e72836b53ae49683ebae4bf
  F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
  F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c
  F src/delete.c 73f57a9a183532c344a3135cf8f2a5589376e39183e0b5f562d6b61b2af0f4d8
- F src/expr.c d681f0b48b1e16173ad8e1e8f7323cda120a0c517cb7a3d5b329c4e2c57f18bd
+ F src/expr.c c56c74d40d1ca5359177f1425d2eb2aa050c30da0b49e014da1f109aa38ece0f
  F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
  F src/fkey.c e9063648396c58778f77583a678342fe4a9bc82436bf23c5f9f444f2df0fdaa4
- F src/func.c e701e9a1cbc2e1814d381ce781925c2e8776cdf994e7c17f53578ec3cc7af40a
- F src/global.c ed55af196a9b66e198aaeda3f5454c3aa7d7d050c6c938181fd044b70d180a81
 -F src/func.c 88fd711754a7241cb9f8eb1391370fd0c0cea756b3358efa274c5d1efd59af93
++F src/func.c 0e97ea309f882c4045a73d25219d816e60d2baf3c60068bb5d74f801a46355a9
+ F src/global.c 25ba4d58476f6be29bba9d9d14f7f146b78476d3a4d75ebb8c3b736328afe0f9
  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 e36be69e3810902eaf7e171260c885bc9547b1d41616c868f1cc46e6a0a3b7fd
+ F src/insert.c 2189e0e596010a0dc5405d9f14f78db1ee2fa71138c931f5b6ea96610b95bfc1
  F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
  F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067
- F src/main.c 5becd80bb8369fe73cea609ac830dd43453d0a356c56ef361fd74698988484a0
 -F src/main.c 2b2044221a10e7c5f49a98f50563ce9a944511241ba5946d1754dcc2a7437a07
++F src/main.c 28f45be66f575edf05465a2bc91ec50ebff6bb49099ef884f4dd506d83fd7769
  F src/malloc.c c1af4ac5a463648cd2953fd4ac679b3ba9022ce5ec794a60806150ad69dfd33a
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
@@@ -533,33 -529,33 +534,33 @@@ F src/os.c 6e94cd64b134c9317e52ad534117
  F src/os.h 48388821692e87da174ea198bf96b1b2d9d83be5dfc908f673ee21fafbe0d432
  F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
  F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
- F src/os_unix.c f0d42250fcded6615ff81af94c7b3005dc2a52d67467b4d7ca2b29427019e2b1
 -F src/os_unix.c efa60c1cb54dba767abbba3c6dd67d3df5ef8aa26e2e499c37f055f56a374068
++F src/os_unix.c 430266b3c1fcd3868c2db04a504a78b9a71de82092fc511e968919a0d661f7eb
  F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
  F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
- F src/pager.c 964ebfc5105bdfe1b85fcdcd8b79fc3b971c994d2eaffa8a9dde288d3091e356
 -F src/pager.c e007e483923437707b8636d7450f1656e63c8d2dc1e09a605c24b3a9a1900220
 -F src/pager.h 9d38ac4b9f0e1361f7ddb6aa0675a54f5e4f085703108d3aafe7868872113f92
 -F src/parse.y ac294bd2891c4310b0b23a67ea3bbca2d0bf5b7662c4444b6517c3986be4a437
++F src/pager.c 08f6583f5463ea4e0d1a584455a321bbf66475fa33e740ea5731751558e77ae2
 +F src/pager.h 034a193e53d6649bdb641aa996e38094dbb7cbe365d8c10eba871a38a0f5ebb3
- F src/parse.y 3a7f2156485e377a637b4217b797001cf2ed9228e501f8d34fd06a9f46a40a73
++F src/parse.y 68f3bdc6ab07f5660944cde812318eab6007416fd1ea008422a96f1675c75ff2
  F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177
  F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
  F src/pcache1.c 388304fd2d91c39591080b5e0f3c62cfba87db20370e7e0554062bfb29740e9f
  F src/pragma.c 4577091a839722cd74e5492f10dc238a93751f4bcc0c8c9ee572d7592f3936be
 -F src/pragma.h 8dc78ab7e9ec6ce3ded8332810a2066f1ef6267e2e03cd7356ee00276125c6cf
 +F src/pragma.h b93fd693bd38cefeaf8e2c7e8c929717f7799a9770104cdd2bae8df2a84e2da7
- F src/prepare.c e21b54489b5c73b06ada15e6fc79b5c6f64b06701924a6ca98944ae59e06256f
- F src/printf.c 2b03a80d7c11bb422115dca175a18bf430e9c9dbaa0eee63b758f0c022f8f34f
+ F src/prepare.c d778af9986f3b0107c5b255dcfe2696e8e99e00fb77c5115bbfea4e92c3302e7
+ F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b
 -F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
 +F src/random.c f27af4099afaea7284ade5c206224dcfdb2334cfd119d018b470d46356b3f27d
- F src/resolve.c dd47248c2c914feb0d4428c27d782e2723971d32cfa5536f49306d080df4d45a
+ F src/resolve.c 40e216d9a72e52841a9c8e0aec7d367bade8e2df17b804653b539b20c1ab5660
  F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
- F src/select.c bdcfed8ae9cb311f145fd204be32e3d03f7bf359c796159900d1eec0b557991b
- F src/shell.c.in aa28256887d049badaf93aa30ab5c76a2ec88143a674d685c0e739056702e5c3
- F src/sqlite.h.in 71ba363afc97d615d43ab4d1c6992036e82efb799852fe96106b79c94bb87f7f
 -F src/select.c 8f9ecc60f9ffb5954f726d2adf5722c638072260838490d0349e71d2e4a31822
++F src/select.c 52ed98f39e1629ccf568b372f29b376ca6007158a46cdd956dbdcf8cab05fc89
+ F src/shell.c.in 1b32ba2918ede13b68df47c7b92b72ba0d06e68d384e78bb9d7456527271d400
 -F src/sqlite.h.in 5c950066775ca9efdaa49077c05d38d0bef6418f3bd07d2dce0210f1d2f3c326
++F src/sqlite.h.in a5d8462d3c5a45240a258e6ed401b6fc14b7f4d2e00e94b864c31fc019151ce1
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e
- F src/sqliteInt.h c4fd0becfa9115e307446ed62228c8c6007ddd03d84b9376ab1bba09ea28a9c3
 -F src/sqliteInt.h 6d0c49ed218f9f6ffabfdc8bed1a5de89f61e70c96a62156aeebeb20c1be9bf0
++F src/sqliteInt.h 00259853d647cd714b93834ffef171d242077629e8fa905c9f19de3995c046c8
  F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
  F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
- F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71
- F src/test1.c 6de6fac373fbf2533e8e772543398cb826d09e6aa38e199a496e09e2a4d1c75d
+ F src/tclsqlite.c 97645e4a15dde6a6ad6de8d81057ff9869413b866015a89e208fedacd709493e
 -F src/test1.c 2100f4c28bae21ce83a9a0c5ec6827efd0e15d11b93b569b614daa5654b3fcf6
++F src/test1.c bb6fe83c5a0e255930c14cc6f0b29414410661839fcdd95015abed823df636b4
  F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5
  F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644
  F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159
@@@ -574,7 -570,7 +575,7 @@@ F src/test_backup.c bf5da90c9926df0a4b9
  F src/test_bestindex.c 78809f11026f18a93fcfd798d9479cba37e1201c830260bf1edc674b2fa9b857
  F src/test_blob.c ae4a0620b478548afb67963095a7417cd06a4ec0a56adb453542203bfdcb31ce
  F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
- F src/test_config.c 21aa5fc3e6bb11c60ba7f9a33b73951af8cb7a2042355f07469146b7e5e36765
 -F src/test_config.c 9c8e12823c46082a01765addf43be9309889f4e9dfb5a512a6c974e1c4efb413
++F src/test_config.c 7768197f40225aacf0ab4a325b0c30c0dd6ebdf2c64f62da90ad5d4989b42bf5
  F src/test_delete.c e2fe07646dff6300b48d49b2fee2fe192ed389e834dd635e3b3bac0ce0bf9f8f
  F src/test_demovfs.c 86142ba864d4297d54c5b2e972e74f3141ae4b30f05b3a95824184ed2d3d7f91
  F src/test_devsym.c aff2255ea290d7718da08af30cdf18e470ff7325a5eff63e0057b1496ed66593
@@@ -613,34 -609,34 +614,34 @@@ 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 0b9c82fa628b5adce93e2bcaf935a24d43eb83344fb51551f7835526d0693fc4
- F src/treeview.c c6260e1fa5f41c361b2409edc9b0050bcaef5bc4d6abc467fbc45f0d7ccf3d84
- F src/trigger.c 861c3ec2c5b0fc830bdf82470454a9324fad70cbaa96d2e208fb54577c9e8d28
- F src/update.c 254aa78e23a18767a5d55b9d7efb6d808b1fcfd52124c774fa7868546f2ca2af
+ F src/tokenize.c bae853ad129d1129c063de8630a3e99e306283bc40146f359b1bb91be2c08f1e
+ F src/treeview.c e483aeedf6f207000db1f90eb6abd816350493314c30e8749d319bdb9ab3b08c
+ F src/trigger.c e0fd347b2571a2d956318cdc6d011ccca7ce862d10a0ca04188a37920ef5440c
 -F src/update.c 56fa0458b1ffc1042629f926443e8ed44203983df3ab2b0db2ba556e6ceed68c
++F src/update.c e94570c89b2e339a7ae3e9f7f031ec69487112983e86608d93a8b1171be8b7da
  F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235
  F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
  F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048
 -F src/vacuum.c 492422c1463c076473bae1858799c7a0a5fe87a133d1223239447c422cd26286
 -F src/vdbe.c d36e7d1db4f9d1f1868387de909f32879e9a3e7d98239705624c20d274ae39b2
 +F src/vacuum.c 9d6ac090ff36d80f0a2c5bfc63994b714c464bfc44efa5056c457a6a4163dc99
- F src/vdbe.c cb96a5890cab40cf01511296b61c1720df5b421e426ca3e7358d183dad906468
++F src/vdbe.c 52918feb4b91ac67b45990105101818a0c1887a9ba2ad000345f7bdca0fb4bc1
  F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
- F src/vdbeInt.h 000d9ab1ea4cb55a80de15e28f3f595645b4fddef34bca4347fb3db8031d9041
- F src/vdbeapi.c 4a43e303ec3354c785f453e881521969378e85628278ab74ba4a9df790c0d93b
- F src/vdbeaux.c cf79a11bff51f6b99fc898d10117f4ec289edd92858fae313a3ff8c4f0c60f0f
- F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1
- F src/vdbemem.c 947f2a65910edb4014dc981d33e414a68c51f169f9df8c4c493a0ba840b6eb1f
+ F src/vdbeInt.h 58980223a32495ad059d10581b83e133abdc77248b1bab85c080cab8a13bd819
+ F src/vdbeapi.c d9e99daf59fec928986838b3389a7337e82fec6b3b5de30206cb99fb4661b94e
 -F src/vdbeaux.c 065a10392378109f08435bd50d03dff315e384cde2831d6b8dbaec05f33b10af
++F src/vdbeaux.c 708f3479a4b1f895f654e29b4fa597ee4c2927ecde3a27ed07dda964a3a12b3a
+ F src/vdbeblob.c c6b8db50b227f66fb404215732068df76485b5b433e5f9d4d9ac27410b218193
+ F src/vdbemem.c 175c73ced03edbb0f6567a41c8032afaeb83372090fa7bddfc88a67e28da2b8a
  F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a
  F src/vdbetrace.c 666c6fd9f1b62be6999e072a45b913e3c2c3518bc60dfd4d54fe304130acb724
  F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
- F src/vtab.c 032a0165c147fda16927e6a3230e90c068d4af93f887ce94e26f678fe48e5e4c
+ F src/vtab.c b928405ccb66040fc6c3a11eaa93ddb02cbf20f9ab6860b301b222b9b50dc089
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
- F src/wal.c 14561b22781dbf67ec97dddce537e31c1419f94e06d548d2d26cb5c44552ecda
 -F src/wal.c cacabe92b75366a30bc185a74da529e9fa0b2eabdbe29b4ae5727d8335391e31
 -F src/wal.h d01234e828943e002040c22a7e017642962f9fd9b2dc142fa599769ae4e459e9
++F src/wal.c 24068dd5d1c25d55d4fb6e362edc2fa680a85ced86a9650d88ab3edaecb1035d
 +F src/wal.h 7a733af13b966ecb81872ce397e862116b3575ea53245b90b139a2873ee87825
- F src/walker.c d42d6c80ea363ef689a462e65eefcfe87deab924c50de5baa37ecb6af7d7ddaa
- F src/where.c 10d06b16670a1d2a992d52a9f08e49426d38a08fb0a7ae5f7f62fd023d560e1e
- F src/whereInt.h 446e5e8018f83358ef917cf32d8e6a86dc8430113d0b17e720f1839d3faa44c4
- F src/wherecode.c e57a8690311a75d06e723e8d379f9831de04aba300e07174d236e32a7f9c7a13
- F src/whereexpr.c 53452fe2fb07be2f4cb17f55cc721416fae0092c00717f106faf289c990b6494
- F src/window.c 7e89ac4b6cd6bb9b7772234a625d19c39b530f4ac06e43688a8b7e6a1ab512a2
+ F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac
+ F src/where.c 32f41c3c93c6785e0077e3a2cdc669c3ccfe70173787847be77f294c18fc7dc3
+ F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b
+ F src/wherecode.c 110ed13049e0f1dc27e9dd942eb870417b36480cb7819302f5804cbcf9330b0e
+ F src/whereexpr.c 5a9c9f5d2dac4bcdcaae3035034b4667523f731df228e0bb1d4efc669efa9da5
+ F src/window.c ce5e73ab88a8527d268673906bf89cbe58c61bca8d54d38ed8c33c3220a276ee
  F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
  F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627
  F test/affinity3.test eecb0dabee4b7765a8465439d5e99429279ffba23ca74a7eae270a452799f9e7
@@@ -718,18 -715,17 +720,18 @@@ F test/backup_malloc.test 0c9abdf74c51e
  F test/badutf.test d5360fc31f643d37a973ab0d8b4fb85799c3169f
  F test/badutf2.test f310fd3b24a491b6b77bccdf14923b85d6ebcce751068c180d93a6b8ff854399
  F test/bc_common.tcl b5e42d80305be95697e6370e015af571e5333a1c
- F test/bestindex1.test 705b57d7f51d53ee5fd043dd9666236e1fc18f4d59abf51da0ea5ea1b4804947
- F test/bestindex2.test 9a0ccd320b6525eec3a706aae6cdab7e1b7b5abca75027e39f39f755e76e5928
- F test/bestindex3.test 7622e792ff2da16d262d3cea6ad914591ac4806d57ed128e6c940b7920b47b84
- F test/bestindex4.test 038e3d0789332f3f1d61474f9bbc9c6d08c6bd1783a978f31f38ad82688de601
 +F test/bc_test1.c e0a092579552e066ed4ce7bcdaecfa69c4aacc8d
+ F test/bestindex1.test 2e92e046148b3f8a2be62af9c0f307413547a33677af0df159c0fcc76e5134a2
+ F test/bestindex2.test 60266e2854055788459cbfd86cef575601eabe74a2c61faba72601739fea4398
+ F test/bestindex3.test e061a6ed0f519beee037ba7e7a4c37f80c8a7e4a303e2559ed1f760e4b0235eb
+ F test/bestindex4.test 82250e7dcc6d5b15244edc9d6554b1760583af1b8548c2a255a1c4f28e744c0e
  F test/bestindex5.test 67c1166131bb59f9e47c00118f7d432ca5491e6cae6ca3f87ca9db20103a78f9
  F test/bestindex6.test d856a9bb63d927493575823eed44053bc36251e241aa364e54d0f2a2d302e1d4
- F test/bestindex7.test f36ada201973d3022cf7afffffe08de9e58341996020e7a2df9a1d2f2be20132
- F test/between.test 68137a6e941c221417c15b6fe2d55f27bb1b6ab48bdf9e2aa51efdd85bc53802
+ F test/bestindex7.test a11348824aed0de2bb9030f092636929000cd72882bdf919adacc3792f67ccbd
+ F test/between.test b9a65fb065391980119e8a781a7409d3fcf059d89968279c750e190a9a1d5263
  F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
  F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
- F test/bigmmap.test e906cf9729d7c362270ffe9fa6471f4c39c28ba83f0f77fb795e1b4d38a22ba0
+ F test/bigmmap.test b820c234daa56d24bc3bf006e3ac7aa9d9623c8ac656a38f59063b444a2d65d1
  F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747
  F test/bigsort.test 8299fa9298f4f1e02fc7d2712e8b77d6cd60e5a2
  F test/bind.test 1e136709b306f7ed3192d349c2930d89df6ab621654ad6f1a72381d3fe76f483
@@@ -780,17 -776,7 +782,17 @@@ F test/collateA.test b8218ab90d1fa5c59d
  F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151ecac0b95
  F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1
  F test/colname.test 87ad5458bb8709312dac0d6755fd30e8e4ca83298d0a9ef6e5c24277a3c3390e
- F test/columncount.test eff33d402a7b0fde0a52a1920d238af200ca573327021e0ce3b7e5688de41449
+ F test/columncount.test d86fb6307261186370698962790ad2088ed419e4a4e823512b502f17d443b1b7
 +F test/concfault.test 500f17c3fcfe7705114422bcc6ddd3c740001a43
 +F test/concfault2.test 34b3fd258836aa305475d00e804c7450ade92f0de0bf9fa620e701446669bb12
 +F test/concurrent.test a0248ec6e3e79a5948453649cf86b5b359175cba55ea636b15426d6f0fa6c3da
 +F test/concurrent2.test 847cd11edc82229a95e1eaf88b55c974430b0f669cefd67a453d274e3480981c
 +F test/concurrent3.test 530671ac706f6a1d0f4992dbdd33a86408330d03cd90fb9e82ecb1b27f5fd081
 +F test/concurrent4.test e0b12cd467137e50259df3b4f837507e82aaa07c35941c88664dc8ed1d089c44
 +F test/concurrent5.test 0c16cbf7446af162a14e6def30445e94016064eb994e5aa4ebb2bebc59554176
 +F test/concurrent6.test a7860e9ca13bb5fb76bcf41c5524fbfa9c37e6e258ecf84ffb5748a272488c67
 +F test/concurrent7.test b96fa5c4cfdf8d5c0bc66b6934214500bad0260884a736f054ccc76e81aae85d
 +F test/concurrent8.test b93937e74a8efb8b84f2fea7595b53418c5f29777bbe9cbdb5dc219b3dd72a7d
  F test/conflict.test ac0667090f66130ac77d5fb764655558ca6600dd6d88f670ca9123b61c448337
  F test/conflict2.test 5557909ce683b1073982f5d1b61dfb1d41e369533bfdaf003180c5bc87282dd1
  F test/conflict3.test 81865d9599609aca394fb3b9cd5f561d4729ea5b176bece3644f6ecb540f88ac
@@@ -815,13 -801,13 +817,13 @@@ F test/corruptH.test 79801d97ec5c2f9f3c
  F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
  F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
  F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
- F test/corruptL.test 22589f503602cc5984e80f27f46c4de2134f24f1515ba2440513c377cb692258
+ F test/corruptL.test df132ba9ffd6fa15038380b4154998b9904ab8f1ea78400d7da53c920cb3b13d
  F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
- F test/corruptN.test 781c5f26a2d8918f03d45ac4968a738031eeb113a4b153c7588756d9b09c7b04
- F test/cost.test 1d156ce9858780a966c062694687afe0343a0ed12d081d071fb57027e726bafc
- F test/count.test e0699a15712bc2a4679d60e408921c2cce7f6365a30340e790c98e0f334a9c77
 -F test/corruptN.test f56e3417fe9a444efd765ae55acbe65595d7b8f747785fe0fd785dbdc424932a
++F test/corruptN.test 187d14093c333ddc705ea6c4aef8355febf260d5174d1b7cbc31c1ac8867951d
+ F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
+ F test/count.test 5364003488249957750a5f15ee42ca1cd7b100b1131c2dc71fff266a1250bf55
  F test/countofview.test e17d6e6688cf74f22783c9ec6e788c0790ee4fbbaee713affd00b1ac0bb39b86
- F test/coveridxscan.test 5ec98719a2e2914e8908dc75f7247d9b54a26df04625f846ac7900d5483f7296
+ F test/coveridxscan.test f35c7208dedc4f98e471c569df64c0f95a49f6e072d8dc7c8f99bdee2697de1b
  F test/crash.test fb9dc4a02dcba30d4aa5c2c226f98b220b2b959f
  F test/crash2.test 5b14d4eb58b880e231361d3b609b216acda86651
  F test/crash3.test 8f5de9d32ab9ab95475a9efe7f47a940aa889418
@@@ -1280,7 -1266,8 +1282,7 @@@ F test/pagesize.test 5769fc62d8c890a83a
  F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
  F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
  F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
- F test/permutations.test 1f08abeae53780436b5a9c6716e1cb48ebf830cd6b0a9df615d952030c05d84b
 -F test/permutations.test b78ac4e6876825294501b18800b9a8bd96c7e3dfe403f8f0168ab4b85b17c370
++F test/permutations.test 5dc2b65860e54e2fd15d994065035867368c0e29af17053935ec095ecce4cc85
  F test/pg_common.tcl 3b27542224db1e713ae387459b5d117c836a5f6e328846922993b6d2b7640d9f
  F test/pragma.test 50b91bedea9324d3ab48e793f908ee7d2c7dcf84bfa2281e792838be59641ec8
  F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
@@@ -1476,8 -1463,9 +1478,9 @@@ F test/thread2.test f35d2106452b77523b3
  F test/thread_common.tcl 334639cadcb9f912bf82aa73f49efd5282e6cadd
  F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
  F test/threadtest2.c a70a8e94bef23339d34226eb9521015ef99f4df8
 -F test/threadtest3.c e63013af10cf236c7610eb06d33bde08c861806dc64be811940ff4d9ddd34a4f
 +F test/threadtest3.c cfd72c74a40de3eb7576f1ab2da28183390deadb13f2aa5c8d077aacd41eda60
  F test/threadtest4.c c1e67136ceb6c7ec8184e56ac61db28f96bd2925
+ F test/threadtest5.c 9b4d782c58d8915d7e955ff8051f3d03628bda0d33b82971ea8c0f2f2808c421
  F test/time-wordcount.sh 8e0b0f8109367827ad5d58f5cc849705731e4b90
  F test/tkt-02a8e81d44.test 6c80d9c7514e2a42d4918bf87bf6bc54f379110c
  F test/tkt-18458b1a.test 6a62cb1ee50fa3c620da59e3a6f531eb38fceaf7e2166203816b724524e6f1d6
@@@ -1647,10 -1635,9 +1650,10 @@@ F test/triggerD.test 8e7f3921a92a5797d4
  F test/triggerE.test 612969cb57a4ef792059ad6d01af0117e1ae862c283753ffcc9a6428642b22ee
  F test/triggerF.test 5d76f0a8c428ff87a4d5ed52da06f6096a2c787a1e21b846111dfac4123de3ad
  F test/triggerG.test 2b816093c91ba73c733cfa8aedcc210ad819d72a98b1da30768a3c56505233e9
- F test/triggerupfrom.test d25961fa70a99b6736193da7b49a36d8c1d28d56188f0be6406d4366315cd6e4
+ F test/triggerupfrom.test d1f9e56090408115c522bee626cc33a2f3370f627a5e341d832589d72e3aa271
  F test/trustschema1.test 4e970aef0bfe0cee139703cc7209d0e0f07725d999b180ba50770f49edef1494
  F test/tt3_checkpoint.c 9e75cf7c1c364f52e1c47fd0f14c4340a9db0fe1
 +F test/tt3_core.c 8cd89ead95410f70e7fb02c79f1e040f9c5ad5cf
  F test/tt3_index.c 39eec10a35f57672225be4d182862152896dee4a
  F test/tt3_lookaside1.c 0377e202c3c2a50d688cb65ba203afeda6fafeb9
  F test/tt3_shared.c b37d22defc944a2ac4c91c927fd06c1d48cd51e2ce9d004fe868625bd2399f93
@@@ -1759,8 -1746,8 +1763,8 @@@ F test/walprotocol.test 1b3f922125e3417
  F test/walprotocol2.test 7e4bedd5ee83607e2928ac438bf7332a396b980d3e02aa0746509ce11ad1f13c
  F test/walro.test cb438d05ba0d191f10b688e39c4f0cd5b71569a1d1f4440e5bdf3c6880e08c20
  F test/walro2.test 0e79dd15cbdb4f482c01ea248373669c732414a726b357d04846a816afafb768
 -F test/walrofault.test c70cb6e308c443867701856cce92ad8288cd99488fa52afab77cca6cfd51af68
 +F test/walrofault.test 5a25f91c16a68bae65edec7cdef4495e5c6494c8408743fe9b29045fa6665cd0
- F test/walsetlk.test 11f7fe792fdce54cf09874dab824e0627f2eedecfb9f7983e325606ec5184e0c
+ F test/walsetlk.test 3185bebc90557e0d611442c8d64f7a0cb7b06f8e156eea37a4a7358f722715be
  F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
  F test/walslow.test c05c68d4dc2700a982f89133ce103a1a84cc285f
  F test/walthread.test 14b20fcfa6ae152f5d8e12f5dc8a8a724b7ef189f5d8ef1e2ceab79f2af51747
@@@ -1870,9 -1857,9 +1874,9 @@@ F tool/mkctimec.tcl 06b0d503ee0e6c2d4ab
  F tool/mkkeywordhash.c 08b6e4d7a482a7f37a9a0032e7ba968e26624a027b6b2e9ba589be6f5e3d8c2c
  F tool/mkmsvcmin.tcl 6ecab9fe22c2c8de4d82d4c46797bda3d2deac8e763885f5a38d0c44a895ab33
  F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
- F tool/mkopcodeh.tcl 352a4319c0ad869eb26442bf7c3b015aa15594c21f1cce5a6420dbe999367c21
+ F tool/mkopcodeh.tcl acc798757e2c60e4b6e16745505b9595fca76c206815c8ada576a136cf3608ed
  F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
 -F tool/mkpragmatab.tcl ae5585ae76ca26e4d6ccd5ea9cdebaf5efefb318bf989497a0e846cd711d9ab1
 +F tool/mkpragmatab.tcl d189900fe12be39539f7101222968ac7a5774a63638471f0b6bff9c35006743a
  F tool/mkshellc.tcl 70a9978e363b0f3280ca9ce1c46d72563ff479c1930a12a7375e3881b7325712
  F tool/mksourceid.c 36aa8020014aed0836fd13c51d6dc9219b0df1761d6b5f58ff5b616211b079b9
  F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
@@@ -1941,7 -1926,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 939b9e75307de5067a11351dd4010046a5400e8126c5c2bafea4fbea97e00f86 a1b8d9d2131830510df291832565311803aa3e047fe07ba979fc69bb0ff329b0
- R 7bbf6335d87c431b256bdcc0e37c4449
 -P a1b8d9d2131830510df291832565311803aa3e047fe07ba979fc69bb0ff329b0 240f7494bfa3e0806ae2f971e78039c62a419de647cb9e807309f90e1d2a536d
 -R 45664146f52399c43838593e9298ec78
--U drh
- Z bcbd80bc941321d81490b0f3b639d622
 -Z c3e10b368f39e609c667c740557d8122
++P 4d425e641d3c45692904018aa8fcff678836b45509e640e67fa2d1ade625a746 95cc7783457b39bbe0866295648a86e7ee5e1660048ab133f1ccf300498ef1bf
++R 066113fe997854e21efe7108e9d23406
++U dan
++Z 8826b40f6989cab227702a244668a78d
diff --cc manifest.uuid
index 4725df972549749239e8cad5ce132969bf060331,f79d0898d28d956420ed3aa0b969008ab55eb724..6fb353864d4814c9abf0ce69627ea3747a1dd3b1
@@@ -1,1 -1,1 +1,1 @@@
- 4d425e641d3c45692904018aa8fcff678836b45509e640e67fa2d1ade625a746
 -95cc7783457b39bbe0866295648a86e7ee5e1660048ab133f1ccf300498ef1bf
++4efefb5938c1ec83ee367ae5cc4bba906729b4e8699fa81adc6ca3618c73eb03
diff --cc src/btree.c
index c6f205bba3b7caaccf2f8179fd82f726a3eb4ca5,0f134cb6f19ba214789fe36afe88b668ee9097f4..8c8268835ae70ff2cd5f041225c8b503d131f586
@@@ -9924,10 -9485,10 +9955,10 @@@ static int clearDatabasePage
    for(i=0; i<pPage->nCell; i++){
      pCell = findCell(pPage, i);
      if( !pPage->leaf ){
 -      rc = clearDatabasePage(pBt, get4byte(pCell), 1, pnChange);
 +      rc = clearDatabasePage(pBt, get4byte(pCell), 1, pnChange, pgnoRoot);
        if( rc ) goto cleardatabasepage_out;
      }
-     rc = clearCell(pPage, pCell, &info);
+     BTREE_CLEAR_CELL(rc, pPage, pCell, info);
      if( rc ) goto cleardatabasepage_out;
    }
    if( !pPage->leaf ){
@@@ -9977,8 -9536,10 +10008,10 @@@ int sqlite3BtreeClearTable(Btree *p, in
      /* Invalidate all incrblob cursors open on table iTable (assuming iTable
      ** is the root of a table b-tree - if it is not, the following call is
      ** a no-op).  */
-     invalidateIncrblobCursors(p, (Pgno)iTable, 0, 1);
+     if( p->hasIncrblobCur ){
+       invalidateIncrblobCursors(p, (Pgno)iTable, 0, 1);
+     }
 -    rc = clearDatabasePage(pBt, (Pgno)iTable, 0, pnChange);
 +    rc = clearDatabasePage(pBt, (Pgno)iTable, 0, pnChange, (Pgno)iTable);
    }
    sqlite3BtreeLeave(p);
    return rc;
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
index 698ff695f6d6d786df7ad2b5a413e75180678b1f,8909995104caaf39ca77b7b8eef9b763907866d8..cd19eb5e1c5b6d2f8aaab164f3ad284e77d13e4c
@@@ -5922,8 -5834,9 +5923,8 @@@ int sqlite3PagerBegin(Pager *pPager, in
    assert( pPager->eState>=PAGER_READER && pPager->eState<PAGER_ERROR );
    pPager->subjInMemory = (u8)subjInMemory;
  
-   if( ALWAYS(pPager->eState==PAGER_READER) ){
+   if( pPager->eState==PAGER_READER ){
      assert( pPager->pInJournal==0 );
 -
      if( pagerUseWal(pPager) ){
        /* If the pager is configured to use locking_mode=exclusive, and an
        ** exclusive lock on the database is not already held, obtain it now.
diff --cc src/parse.y
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/test1.c
Simple merge
Simple merge
diff --cc src/update.c
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/wal.c
Simple merge
index 4f7667ce1e98b81de2c380ec54d5900e003e4b05,4349468bb59b9396cbc2875f3ff3c74db0339fa0..e6997b24f71ce28745a72474bce04d830a9e0dca
@@@ -102,5 -102,121 +102,121 @@@ do_catchsql_test 1.1 
    VACUUM;
  } {1 {database disk image is malformed}}
  
 -} {1 {database disk image is malformed}}
+ # 2021-04-05 dbsqlfuzz b92b72e4de80b5140c30ab71372ca719b8feb618
+ do_test 2.0 {
+   sqlite3 db {}
+   db deserialize [decode_hexdb {
+ | size 16384 pagesize 4096 filename c-b92b.txt.db
+ | page 1 offset 0
+ |      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
+ |     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 04   .....@  ........
+ |     32: 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 04   ................
+ |     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
+ |     96: 00 00 00 00 0d 0f f8 00 04 0f 12 00 0f 91 0f d3   ................
+ |    112: 0f 67 0f 12 00 00 00 00 00 00 00 00 00 00 00 00   .g..............
+ |   3856: 00 00 53 04 07 1b 13 11 08 81 0d 74 72 69 67 67   ..S........trigg
+ |   3872: 65 72 74 72 30 74 31 43 52 45 41 54 45 20 54 52   ertr0t1CREATE TR
+ |   3888: 49 47 47 45 52 20 74 72 30 20 44 45 4c 45 54 45   IGGER tr0 DELETE
+ |   3904: 20 4f 4e 20 74 31 20 42 45 47 49 4e 0a 20 20 55    ON t1 BEGIN.  U
+ |   3920: 50 44 41 54 45 20 74 31 20 53 45 54 20 62 20 3d   PDATE t1 SET b =
+ |   3936: 20 61 3b 0a 45 4e 44 28 03 06 17 11 11 01 3d 69    a;.END(......=i
+ |   3952: 6e 64 65 78 69 30 74 31 04 43 52 45 41 54 45 20   ndexi0t1.CREATE 
+ |   3968: 49 4e 44 45 58 20 69 30 20 4f 4e 20 74 31 28 62   INDEX i0 ON t1(b
+ |   3984: 29 40 01 06 17 11 11 01 6d 74 61 62 6c 65 74 31   )@......mtablet1
+ |   4000: 74 31 02 43 52 45 41 54 45 20 54 41 42 4c 45 20   t1.CREATE TABLE 
+ |   4016: 74 31 28 61 20 55 4e 49 51 55 45 20 4f 4e 20 43   t1(a UNIQUE ON C
+ |   4032: 4f 4e 46 4c 49 43 54 20 52 45 50 4c 41 43 45 2c   ONFLICT REPLACE,
+ |   4048: 20 62 29 23 02 06 17 37 11 01 00 69 6e 64 65 78    b)#...7...index
+ |   4064: 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78   sqlite_autoindex
+ |   4080: 5f 74 31 5f 31 74 31 03 00 00 00 08 00 00 00 00   _t1_1t1.........
+ | page 2 offset 4096
+ |      0: 0d 00 00 00 02 0f 00 00 00 00 00 00 00 00 00 00   ................
+ |   4080: 00 00 05 02 03 01 01 09 0d 05 01 03 01 01 04 0c   ................
+ | page 3 offset 8192
+ |      0: 0a 00 00 00 02 0f f5 00 0f fb 0f f5 00 00 00 00   ................
+ |   4080: 00 00 00 00 00 05 03 01 01 09 02 04 03 01 09 04   ................
+ | page 4 offset 12288
+ |      0: 0a 00 00 00 02 0f f5 00 0f fb 0f f5 00 00 00 00   ................
+ |   4080: 00 00 00 00 00 05 03 01 01 0d 02 04 03 00 00 00   ................
+ | end c-b92b.txt.db
+ }]} {}
+ prng_seed 0 db
+ do_catchsql_test 2.1 {
+ SELECT count(*) FROM sqlite_schema;
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<1000)
+ INSERT INTO t1(a) SELECT randomblob(null) FROM c;
++} {0 4}
+ reset_db
+ if {![info exists ::G(perm:presql)]} {
+   do_execsql_test 3.0 {
+     CREATE TABLE t1(x INTEGER PRIMARY KEY AUTOINCREMENT, y);
+     PRAGMA writable_schema = 1;
+     UPDATE sqlite_schema 
+       SET sql = 'CREATE TABLE sqlite_sequence(name-seq)' 
+       WHERE name = 'sqlite_sequence';
+   }
+   db close
+   sqlite3 db test.db
+   do_catchsql_test 3.1 {
+     PRAGMA writable_schema = 1;
+     INSERT INTO t1(y) VALUES('abc');
+   } {1 {database disk image is malformed}}
+   reset_db
+   do_execsql_test 4.1 {
+     CREATE TABLE x1(a INTEGER PRIMARY KEY, b UNIQUE, c UNIQUE);
+     INSERT INTO x1 VALUES(1, 1, 2);
+     INSERT INTO x1 VALUES(2, 2, 3);
+     INSERT INTO x1 VALUES(3, 3, 4);
+     INSERT INTO x1 VALUES(4, 5, 6);
+     PRAGMA writable_schema = 1;
+     UPDATE sqlite_schema SET rootpage = (
+       SELECT rootpage FROM sqlite_schema WHERE name = 'sqlite_autoindex_x1_2'
+     ) WHERE name = 'sqlite_autoindex_x1_1';
+   }
+   db close
+   sqlite3 db test.db
+   breakpoint
+   do_catchsql_test 4.2 {
+     PRAGMA writable_schema = 1;
+     REPLACE INTO x1 VALUES(5, 2, 3);
+   } {1 {database disk image is malformed}}
+ }
+ #-------------------------------------------------------------------------
+ reset_db
+ ifcapable json1&&vtab {
+   db func strreplace strreplace
+   proc strreplace {orig a b} {
+     string map [list $a $b] $orig
+   }
+   do_execsql_test 5.0 {
+     CREATE TABLE t1(a, b);
+     CREATE INDEX t1a ON t1(a);
+     CREATE INDEX t1b ON t1(b);
+     PRAGMA writable_schema = 1;
+     UPDATE sqlite_schema 
+       SET sql = strreplace(sql, 't1', 'json_each') 
+       WHERE type='index';
+   }
+   db close
+   sqlite3 db test.db
+   do_execsql_test 5.1 {
+     PRAGMA writable_schema = 1;
+     SELECT * FROM t1
+   }
+ }; # ifcapable json1&&vtab
  
  finish_test
Simple merge