]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix straggler misspellings and tidy the custom dictionary. Also include pickups from... spell-check
authorlarrybr <larrybr@noemail.net>
Wed, 7 Jun 2023 17:03:22 +0000 (17:03 +0000)
committerlarrybr <larrybr@noemail.net>
Wed, 7 Jun 2023 17:03:22 +0000 (17:03 +0000)
FossilOrigin-Name: 8c291d99946eb32b20b743921202f9c7cfb716268ff526817b27adbb7942e40b

26 files changed:
1  2 
Makefile.in
manifest
manifest.uuid
src/btree.c
src/build.c
src/date.c
src/delete.c
src/expr.c
src/func.c
src/json.c
src/main.c
src/pager.c
src/parse.y
src/pragma.c
src/select.c
src/shell.c.in
src/sqlite.h.in
src/test1.c
src/test_mutex.c
src/update.c
src/vdbeaux.c
src/vdbesort.c
src/wal.c
src/where.c
src/window.c
tool/custom.txt

diff --cc Makefile.in
index 06355e7462127190d4951a62aa841718b26ac5be,8b82928472a71599232484f99a93c431d6086bb8..66bfd7ba5389671e6c120d0d3aa65c47c78c5140
@@@ -1528,6 -1528,6 +1528,7 @@@ clean
        rm -f fts5.* fts5parse.*
        rm -f threadtest5
        rm -f src-verify
++      rm -f custom.rws
  
  distclean:    clean
        rm -f sqlite_cfg.h config.log config.status libtool Makefile sqlite3.pc \
diff --cc manifest
index 7f207323fdd3027b26ed0cf29869d0193c963fd8,c324b0f322e40a506429dcf973c59c2f1150decd..71cb4cf5d7ace71785b9389a044b7e5adb3780f9
+++ b/manifest
@@@ -1,9 -1,9 +1,9 @@@
- C Add\sa\sC-source\sspell-checking\sfacility.\smake\smisspell\s(on\sNix)
- D 2023-06-07T08:40:31.431
 -C Remove\sadditional\straces\sof\sFTS1\sand\sFTS2\sthat\swere\smissed\sby\s[2bb50d5aedef0fd2]
 -D 2023-06-07T15:00:54.470
++C Fix\sstraggler\smisspellings\sand\stidy\sthe\scustom\sdictionary.\sAlso\sinclude\spickups\sfrom\s[forum:/info/c61fb09afd|forum\spost\sc61fb09afd].
++D 2023-06-07T17:03:22.151
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
- F Makefile.in 572a91092815e65bc8d5bfb53a12f31005320048f607fc05b20012ba48afe426
 -F Makefile.in 3b155551e8c78751622bc5ce903b1a91beaa6e4c04710161ae51858bbd9e2edc
++F Makefile.in bb4554cd186313a89f2e774698faa718350b3fc914386845c5ddb39710181cff
  F Makefile.linux-gcc f609543700659711fbd230eced1f01353117621dccae7b9fb70daa64236c5241
  F Makefile.msc 9c032cabd86fc0468167459b714478be7fe77e47ce43fdf1bfaf2e48e829a112
  F README.md 6f942c2e542d53202dc75b114b0617e9e02f8a6a777508fc23c3d8297951c478
@@@ -569,41 -568,41 +568,41 @@@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
  F sqlite_cfg.h.in baf2e409c63d4e7a765e17769b6ff17c5a82bbd9cbf1e284fd2e4cefaff3fcf2
 -F src/alter.c 482c534877fbb543f8295992cde925df55443febac5db5438d5aaba6f78c4940
 +F src/alter.c f1c686e7325a7449c5a0ebc16207186f52e1b6673da699392caa1de39f219511
  F src/analyze.c a1f3061af16c99f73aed0362160176c31a6452de1b02ada1d68f6839f2a37df0
  F src/attach.c cc9d00d30da916ff656038211410ccf04ed784b7564639b9b61d1839ed69fd39
 -F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf
 +F src/auth.c 19b7ccacae3dfba23fc6f1d0af68134fa216e9040e53b0681b4715445ea030b4
  F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
 -F src/bitvec.c 7c849aac407230278445cb069bebc5f89bf2ddd87c5ed9459b070a9175707b3d
 -F src/btmutex.c 6ffb0a22c19e2f9110be0964d0731d2ef1c67b5f7fabfbaeb7b9dabc4b7740ca
 -F src/btree.c 46a97286ef0d6caedfbbb7d2fb4fc66fe2eee5484458efeddfce85fb5152799b
 +F src/bitvec.c 9eac5f42c11914d5ef00a75605bb205e934f435c579687f985f1f8b0995c8645
 +F src/btmutex.c 79a43670447eacc651519a429f6ece9fd638563cf95b469d6891185ddae2b522
- F src/btree.c 148228f60581e5ecbe4b57d0ba1d0bbc0ff737c6581c841e2dedd58fa07689c0
++F src/btree.c 030e6b7b6c3d6241a23a7e62200653cfabdfc08782f9d0d781c29a372efb8d64
  F src/btree.h aa354b9bad4120af71e214666b35132712b8f2ec11869cb2315c52c81fad45cc
 -F src/btreeInt.h b900603c8956bdeb313841f9b67bdeceef32c64d962d35477c07ec25e8cf0f9b
 -F src/build.c 5512d5a335334b48d116f1ecd051edef96a60add18ae48e0ea302a395f00f3d9
 +F src/btreeInt.h 3b4eff7155c0cea6971dc51f62e3529934a15a6640ec607dd42a767e379cb3a9
- F src/build.c bf900f75fb241130fe59299e00ea07d522080eb7e75811b175f313dcb3ab3291
++F src/build.c cb54df6fd018a18e940a251c5e31780ffba8bc6c7a01e670b96a489adcbfb3b4
  F src/callback.c db3a45e376deff6a16c0058163fe0ae2b73a2945f3f408ca32cf74960b28d490
  F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
  F src/ctime.c 20507cc0b0a6c19cd882fcd0eaeda32ae6a4229fb4b024cfdf3183043d9b703d
--F src/date.c cb71f73d5df5303ec6630971b9c8b8c7df466fa3233dbdc643d613806e53e554
++F src/date.c 6e9549239d08957ffeff481bb131d071c969833b230d1dbfb836cf9dab1501b8
  F src/dbpage.c f3eea5f7ec47e09ee7da40f42b25092ecbe961fc59566b8e5f705f34335b2387
  F src/dbstat.c ec92074baa61d883de58c945162d9e666c13cd7cf3a23bc38b4d1c4d0b2c2bef
- F src/delete.c fe728a9ec79a719c2c2fb0c42822fc96a7cb457279eede8314e25d951b0e0dda
- F src/expr.c db2e4870db1577415f796c22ee893175432bd61abce082c5905902257724ad24
 -F src/delete.c 05e27e3a55dcfeadf2f7ca95a5c5e0928f182c04640ec1954ffa42f3d5c19341
 -F src/expr.c 099cf96cf72f1b8cebf0d91a8f75e111454cd011deed9c6dadcd0241c2abdca8
++F src/delete.c 1b00589aa4f2c50beba39f9da5166fc2161234580ea8c0d087b6d5c2c7a17c21
++F src/expr.c b7dabf7f5ab42ed0b70437e9725aea25700eaff8a268cc42d682b1d67bb797f8
  F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
  F src/fkey.c 03c134cc8bffe54835f742ddea0b72ebfc8f6b32773d175c71b8afeea6cb5c83
- F src/func.c e20ad8a7cf1a8a8237e7cfc5b3b3c82598e40a05c980e3de30b5323a7f8927ab
 -F src/func.c 03e6b501f3056d0ba398bda17df938b2b566aa0b3ca7e1942a3cd1925d04ec36
++F src/func.c 6303e1ccb80dbd0d9b52f902a01d3b105981486fdfd66f9e1ddfd74aaf3032fc
  F src/global.c bd0892ade7289f6e20bff44c07d06371f2ff9b53cea359e7854b9b72f65adc30
 -F src/hash.c c6af5f96a7a76d000f07c5402c48c318c2566beecdee9e78b9d9f60ce7119565
 +F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220
  F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51
 -F src/hwtime.h b638809e083b601b618df877b2e89cb87c2a47a01f4def10be4c4ebb54664ac7
 +F src/hwtime.h f9c2dfb84dce7acf95ce6d289e46f5f9d3d1afd328e53da8f8e9008e3b3caae6
  F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
 -F src/insert.c a8de1db43335fc4946370a7a7e47d89975ad678ddb15078a150e993ba2fb37d4
 -F src/json.c 39b1c7527f3111923e65f168a87b03b591f12a41400a63d05c119794bee36620
 +F src/insert.c a38bbb944a4f2771d70140db9c5d57e36c37e28d5a366497b4f93272a6d2567e
- F src/json.c 89170fc7a484073e84c0573b31c2878bdbf5210e9cc9539b9a74404153c6a779
++F src/json.c 14c474fb1249a46eb44e878e2361f36abfe686b134039b0d1883d93d61505b4a
  F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
  F src/loadext.c 176d6b2cb18a6ad73b133db17f6fc351c4d9a2d510deebdb76c22bde9cfd1465
- F src/main.c 44a6b08c61b3256634767dd6b91f7c5ce9f9520d2fe4573300fea40b7c766114
 -F src/main.c fc470d4e05d31a5f7e76127bf72ce08e5e0101ddc5bc4d70191f020a949225f8
++F src/main.c 5fd4b65d61ae6155f36756ed508a39b38b49355b031188961e8d923f43f4bc49
  F src/malloc.c 47b82c5daad557d9b963e3873e99c22570fb470719082c6658bf64e3012f7d23
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
 -F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
 +F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2
  F src/mem2.c c8bfc9446fd0798bddd495eb5d9dbafa7d4b7287d8c22d50a83ac9daa26d8a75
  F src/mem3.c 30301196cace2a085cbedee1326a49f4b26deff0af68774ca82c1f7c06fda4f6
  F src/mem5.c b7da5c10a726aacacc9ad7cdcb0667deec643e117591cc69cf9b4b9e7f3e96ff
@@@ -621,39 -620,39 +620,39 @@@ F src/os.h 1ff5ae51d339d0e30d8a9d814f4b
  F src/os_common.h 6c0eb8dd40ef3e12fe585a13e709710267a258e2c8dd1c40b1948a1d14582e06
  F src/os_kv.c 4d39e1f1c180b11162c6dc4aa8ad34053873a639bac6baae23272fc03349986a
  F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d872107
 -F src/os_unix.c 1b3ddb7814c4bf37f494c04d2ab30c1ced5b2c927267e1930ce7cd388787a96d
 -F src/os_win.c 2b2411279f7b24f927591561303fc5871845732df42641cbf695c23640b16975
 +F src/os_unix.c 95b407307deb902a3bd9a5d5666c7838709cccb337baeee6ef0a53f512d3673e
 +F src/os_win.c 79ff2345aafe92be324e8d9062050c6c5ae714c2db6b4b5334d7d28e70ea81e6
  F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
- F src/pager.c eeb41200c0d0d75b49e0c374eecb8f07f12f2c1deb0f1d3ca5573bcb300b9727
 -F src/pager.c 45e2ef5e9eb5cc0138bcc32b5d2299479be80b206f621873f59149dfb517f496
++F src/pager.c 0dfe6a9c76ca8ad8eb91a3867dd20ba1f5c854bc5e9cd9cde62112bdee1822be
  F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3
--F src/parse.y 146f9a1db7db5ef4299c6897d335e5abed348c2626190d2877d45ffa210fd4ca
 -F src/pcache.c 8ee13acccfd9accbf0af94910b7323dd7f7d55300d92ddafcf40e34fcc8e21be
++F src/parse.y 396bdbaa15c3a9b2e7ea693e2db19cab6c7bd4bdb64573b471f7ef0bdbbb5584
 +F src/pcache.c 4cd4a0043167da9ba7e19b4d179a0e6354e7fe32c16f781ecf9bf0a5ff63b40b
  F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
 -F src/pcache1.c dee95e3cd2b61e6512dc814c5ab76d5eb36f0bfc9441dbb4260fccc0d12bbddc
 -F src/pragma.c 26ed2cfdc5c12aa1c707178635709684960288cacc9cff9d491a38ff10e395f1
 +F src/pcache1.c 602acb23c471bb8d557a6f0083cc2be641d6cafcafa19e481eba7ef4c9ca0f00
- F src/pragma.c 02c8e7b47e88c2afb77fb1f6ebf2cd9331e4469ae97d4a774ce824e2875fbfcb
++F src/pragma.c 37b8fb02d090262280c86e1e2654bf59d8dbfbfe8dc6733f2b968a11374c095a
  F src/pragma.h e690a356c18e98414d2e870ea791c1be1545a714ba623719deb63f7f226d8bb7
 -F src/prepare.c 6350675966bd0e7ac3a464af9dbfe26db6f0d4237f4e1f1acdb17b12ad371e6e
 +F src/prepare.c d6c4354f8ea0dc06962fbabc4b68c4471a45276a2918c929be00f9f537f69eb1
  F src/printf.c b9320cdbeca0b336c3f139fd36dd121e4167dd62b35fbe9ccaa9bab44c0af38d
  F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 -F src/resolve.c 3e53e02ce87c9582bd7e7d22f13f4094a271678d9dc72820fa257a2abb5e4032
 -F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
 -F src/select.c a42b88d8bb9e824f45ccea16e7dfc5a812a32e2b8a0c5727b893734a14d83ade
 -F src/shell.c.in 6915835eee0775c02ea1fb474da19f07ed76acbfc92444aef09e16b963abb46f
 -F src/sqlite.h.in 6296fa5886cdf6f337d7b95da962791e352ce4c8b6aa53eff84137c1db62a79e
 +F src/resolve.c c1457b920aeb33ed106bf478fad31b7473a8950a755ea898980c428928f3a514
 +F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
- F src/select.c d1d9e1e91098763573f15671323cc2fb869b199a889d51b1405b80161c6f6c24
- F src/shell.c.in de1299f089fc8c316a17bfc8ebb1f0a038da894c09920dc0aecee5c850df7b12
- F src/sqlite.h.in ddae9f672352c9e44e1acac99a401e6700752932fd4dc7f35e5569f7e0d609dc
++F src/select.c 1ddfe4450101c3d4890ecb2d6b97ab80b78764d5a3e7022b171721df1620c419
++F src/shell.c.in 0c420738cf95292c394c2451281f76f2638c9234943805375974a20d2a5be8c3
++F src/sqlite.h.in 3076d78836b6dac53b3ab0875fc8fd15bca8077aad4d33c85336e05af6aef8c7
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4
 -F src/sqliteInt.h a531b7f352a0db457b5e0c56f41a3905273252ec8646526f8f897f0815519182
 -F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
 +F src/sqliteInt.h 924ddd5bd9dad8a499005c2c02a492c67dbe784feafbd78fdd70d712cf839499
 +F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6
  F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 -F src/tclsqlite.c 8522a04fb9c84faa1d80354430ae0ee9349727a3a4b32e3cfe39b9be8324cabd
 -F src/test1.c 2b72555fdbf1b5755d40e5f72baed1cdd1dec9154b8a3b9b3de4d6d656b94fab
 +F src/tclsqlite.c 9952874a1f1bb9fa6406b334cadf748c273cd2f2d4501152022a95dd37dc7958
- F src/test1.c f6076314e68b5803b962f94628a064aaf77850abed352999ec38db493294f2ae
++F src/test1.c 8ae514d6a0d030f7953a99ff5dca6419cb7a5ad1a1c392d1fdf0f069e6ca792b
  F src/test2.c 827446e259a3b7ab949da1542953edda7b5117982576d3e6f1c24a0dd20a5cef
 -F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644
 +F src/test3.c e5178558c41ff53236ae0271e9acb3d6885a94981d2eb939536ee6474598840e
  F src/test4.c 4533b76419e7feb41b40582554663ed3cd77aaa54e135cf76b3205098cd6e664
  F src/test5.c 328aae2c010c57a9829d255dc099d6899311672d
 -F src/test6.c ae73a3a42bbc982fb9e301b84d30bda65a307be48c6dff20aba1461e17a9b0ce
 -F src/test8.c 0c856d6ff6b0d2ff6696addc467a15ed17c6910f14475302cd5b3b4e54406161
 +F src/test6.c e53bc69dc3cb3815fb74df74f38159ec05ba6dd5273216062e26bc797f925530
 +F src/test8.c ccc5d3e2a2bf7248f7da185e2afc4c08b4c6840447f5eb4dd106db165fddbdbc
  F src/test9.c 12e5ba554d2d1cbe0158f6ab3f7ffcd7a86ee4e5
  F src/test_async.c 195ab49da082053fdb0f949c114b806a49ca770a
  F src/test_autoext.c 915d245e736652a219a907909bb6710f0d587871
@@@ -661,10 -660,10 +660,10 @@@ F src/test_backup.c bf5da90c9926df0a4b9
  F src/test_bestindex.c 68c62586d2ae9f032903fe53be743657d0c2aac0a850b880938b668e1161d516
  F src/test_blob.c ae4a0620b478548afb67963095a7417cd06a4ec0a56adb453542203bfdcb31ce
  F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
- F src/test_config.c 8264637b06a3c1f0727c88d1ea32dcf7986b9e7e358a970cae87cdac8a5b2708
+ F src/test_config.c f0cc1f517deaa96dd384822ae2bb91534fa56aa458528b439830d709941d3932
  F src/test_delete.c e2fe07646dff6300b48d49b2fee2fe192ed389e834dd635e3b3bac0ce0bf9f8f
  F src/test_demovfs.c 38a459d1c78fd9afa770445b224c485e079018d6ac07332ff9bd07b54d2b8ce9
 -F src/test_devsym.c aff2255ea290d7718da08af30cdf18e470ff7325a5eff63e0057b1496ed66593
 +F src/test_devsym.c 649434ed34d0b03fbd5a6b42df80f0f9a7e53f94dd1710aad5dd8831e91c4e86
  F src/test_fs.c ba1e1dc18fd3159fdba0b9c4256f14032159785320dfbd6776eb9973cb75d480
  F src/test_func.c 24df3a346c012b1fc9e1001d346db6054deb426db0a7437e92490630e71c9b0a
  F src/test_hexio.c 9478e56a0f08e07841a014a93b20e4ba2709ab56d039d1ca8020e26846aa19bd
@@@ -674,14 -673,14 +673,14 @@@ F src/test_intarray.h 6c3534641108cd1be
  F src/test_journal.c a0b9709b2f12b1ec819eea8a1176f283bca6d688a6d4a502bd6fd79786f4e287
  F src/test_loadext.c 337056bae59f80b9eb00ba82088b39d0f4fe6dfd
  F src/test_malloc.c 21121ea85b49ec0bdb69995847cef9036ef9beca3ce63bbb776e4ea2ecc44b97
 -F src/test_md5.c 7268e1e8c399d4a5e181b64ac20e1e6f3bc4dd9fc87abac02db145a3d951fa8c
 -F src/test_multiplex.c d8bc260a57c2028946a9bce9918d24e69e44cebd71ac6be240aa5b6b75e2b369
 -F src/test_multiplex.h 5436d03f2d0501d04f3ed50a75819e190495b635
 -F src/test_mutex.c abf486e91bd65e2448027d4bb505e7cce6ba110e1afb9bd348d1996961cadf0d
 +F src/test_md5.c 0472c86d561f7f9e4ff94080100c2783196f50e583bb83375b759450c5b81802
 +F src/test_multiplex.c 70479161239d65af2a231550b270e9d11ece717ad7bf0e13ef42206586e9dd7f
 +F src/test_multiplex.h f0ff5b6f4462bfd46dac165d6375b9530d08089b7bcbe75e88e0926110db5363
- F src/test_mutex.c abf486e91bd65e2448027d4bb505e7cce6ba110e1afb9bd348d1996961cadf0d
++F src/test_mutex.c cd5bac43f2fd168f43c4326b1febe0966439217fac52afb270a6b8215f94cb40
  F src/test_onefile.c f31e52e891c5fef6709b9fcef54ce660648a34172423a9cbdf4cbce3ba0049f4
  F src/test_osinst.c d341f9d7613e007c8c3f7eba6cd307230047506aa8f97858c1fd21f5069616bd
 -F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
 -F src/test_quota.c 6cb9297115b551f433a9ad1741817a9831abed99
 +F src/test_pcache.c 3960cd2c1350adc992c4bf7adcfb0d1ac0574733012bd1a5f94e195928577599
 +F src/test_quota.c ea44c05f29b995bdb71c55eb0c602604884e55681d59b7736e604bbcc68b0464
  F src/test_quota.h 2a8ad1952d1d2ca9af0ce0465e56e6c023b5e15d
  F src/test_rtree.c 671f3fae50ff116ef2e32a3bf1fe21b5615b4b7b
  F src/test_schema.c f5d6067dfc2f2845c4dd56df63e66ee826fb23877855c785f75cc2ca83fd0c1b
@@@ -702,31 -701,31 +701,31 @@@ F src/threads.c 4ae07fa022a3dc7c5beb373
  F src/tokenize.c 1305797eab3542a0896b552c6e7669c972c1468e11e92b370533c1f37a37082b
  F src/treeview.c 1d52fbc4e97161e65858d36e3424ea6e3fc045dd8a679c82b4b9593dc30de3bd
  F src/trigger.c ad6ab9452715fa9a8075442e15196022275b414b9141b566af8cdb7a1605f2b0
--F src/update.c 88f30d38409ddcd2d583bef1a1265a3e8c701e232096505183680b2027439a00
++F src/update.c 9fa127b8f13d39440996fdfa2323eeb1b565aba7b09ef820114ad2e77c25bdf1
  F src/upsert.c 5303dc6c518fa7d4b280ec65170f465c7a70b7ac2b22491598f6d0b4875b3145
  F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
 -F src/util.c d4bcb560471cd94e6e17d448311f8d5bf81a7e5276295a53501058ef1b95dd1a
 -F src/vacuum.c 84ce7f01f8a7a08748e107a441db83bcec13970190ddcb0c9ff522adbc1c23fd
 -F src/vdbe.c fedd2dfa5165256c8e372f2ae9454c4a82cf60ce79a04dff80a86ab2116ea15a
 -F src/vdbe.h 637ae853b7d42ae3951034cc63ab7c8af837861f79504cdb5399552fcd89a884
 -F src/vdbeInt.h a4147a4ddf613cb1bcb555ace9e9e74a9c099d65facd88155f191b1fb4d74cfb
 -F src/vdbeapi.c b4982cde547054c4f7341198db3c3008a48e1eb028f757601bf5bf2fc026cbcf
 -F src/vdbeaux.c 6ee48db408d4c297a363f1e31145c09793a580e7c508bb36063dd017d67117a2
 +F src/util.c 6f9d2f278dcc8d41c618980cd3cfe88e1bafc0626209b917c6773d8202d29ef6
 +F src/vacuum.c 604fcdaebe76f3497c855afcbf91b8fa5046b32de3045bab89cc008d68e40104
 +F src/vdbe.c c3b6d8d60f2bb89ae771326f48945b8549f68c8f9a573e026b77b444f3d7d32e
 +F src/vdbe.h 41485521f68e9437fdb7ec4a90f9d86ab294e9bb8281e33b235915e29122cfc0
 +F src/vdbeInt.h 7bd49eef8f89c1a271fbf12d80a206bf56c876814c5fc6bee340f4e1907095ae
 +F src/vdbeapi.c de9703f8705afc393cc2864669ce28cf9516983c8331d59aa2b978de01634365
- F src/vdbeaux.c 998e84345fe712e4ab3f28556daefe174e106ae0439faa7bec9f0ca674b3b276
++F src/vdbeaux.c 5a0950d8ebdfc948a016c2bc790e9c45f03c0f8db30cf8f2be011fe5e8a28899
  F src/vdbeblob.c 2516697b3ee8154eb8915f29466fb5d4f1ae39ee8b755ea909cefaf57ec5e2ce
  F src/vdbemem.c 1cac4028c0dabbf1f3259f107440e2780e05ac9fe419e9709e6eb4e166ba714b
- F src/vdbesort.c a0d71c5eb15e4da6eae6eea69c482762266adaf34551827d1f77bb49aa90ffed
 -F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35
++F src/vdbesort.c 0d40dca073c94e158ead752ef4225f4fee22dee84145e8c00ca2309afb489015
  F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823
  F src/vdbevtab.c aae4bd769410eb7e1d02c42613eec961d514459b1c3c1c63cfc84e92a137daac
 -F src/vtab.c 4758a96d36c9a120848386ae603b1ab32a4876e0a1faf81bfcfb524455e583dc
 +F src/vtab.c 1ecf8c3745d29275688d583e12822fa984d421e0286b5ef50c137bc3bf6d7a64
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
- F src/wal.c 7dbb27213acbc57819d97953e8434283b751cc5307a21b8847f664de45dc3307
 -F src/wal.c 7a65f64bfe4a783c5e2df73ffb0efc383dec934dee9e3ac706b2eeb3631d17ac
++F src/wal.c cbfeeb7415baa545efa244dd34bb5af4ae953a206fed720c6fa7f1ef763ec122
  F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
 -F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
 -F src/where.c b74a83b4c8f65b218c5c1c8d9122433f85ee1300fd9263ba1697d0e1040eeb36
 -F src/whereInt.h e25203e5bfee149f5f1225ae0166cfb4f1e65490c998a024249e98bb0647377c
 -F src/wherecode.c e63b522e780e92ed80b5e278e88f54e1166cafa272d2e06cd36297478f44bce2
 -F src/whereexpr.c 22cf19b0ececeaf838daed1039c5231a8778784eba5ad67b991442a23473fd3f
 -F src/window.c e075ea85bea322e30e361fa6e69eddba74f461e99e2a564dc09973f8a1fb27d9
 +F src/walker.c 1f1c4743e064873efff71509d8839d9f7509b8960699aa2eeb906dec41a0f667
- F src/where.c efb828cc5f42634918902d352644bb3ddce672930e19859c80748810b29d4b8b
++F src/where.c 2dc708cf8b6a691fb79f16bbc46567497ee6f991043318d421e294b2da114d93
 +F src/whereInt.h c7d19902863beadec1d04e66aca39c0bcd60b74f05f0eaa7422c7005dfc5d51a
 +F src/wherecode.c bff0bc56cb1a382de266c2db3a691135c18a4360b6ad5e069e5c415d57eb0c38
 +F src/whereexpr.c f0a29594a2c143e10af7adf513b32d11223d76c6981c7f428433ec1ccbc33f84
- F src/window.c e25c9c675a56b65c05102f592b895e8b0931a888f88bc66ece7c73cbd2226259
++F src/window.c b7ad9cff3ce8ae6f8cc25e18e1a258426cb6bd2999aace6f5248d781b2a74098
  F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
  F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627
  F test/affinity3.test f094773025eddf31135c7ad4cde722b7696f8eb07b97511f98585addf2a510a9
@@@ -1974,7 -1939,6 +1939,7 @@@ F tool/build-all-msvc.bat c817b716e0ede
  F tool/build-shell.sh 950f47c6174f1eea171319438b93ba67ff5bf367
  F tool/cg_anno.tcl c1f875f5a4c9caca3d59937b16aff716f8b1883935f1b4c9ae23124705bc8099 x
  F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2
- F tool/custom.txt 7c5402073801047526d59d9ecd770e7bcd8f9e553bc7278ab2b0ac6fac96ad32
++F tool/custom.txt 6cdf298f43e1db4bb91406d14777669b8fb1df790837823fa6754c4308decc27
  F tool/dbhash.c 5da0c61032d23d74f2ab84ffc5740f0e8abec94f2c45c0b4306be7eb3ae96df0
  F tool/dbtotxt.c ca48d34eaca6d6b6e4bd6a7be2b72caf34475869054240244c60fa7e69a518d6
  F tool/dbtotxt.md c9a57af8739957ef36d2cfad5c4b1443ff3688ed33e4901ee200c8b651f43f3c
@@@ -2075,11 -2038,8 +2040,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 2d58c77448cfaaf12887b60bcfea039d3410a750ac8955a817c45be85c00eb9e
- R 59cd5de4738b59306e8e563e728e2e6a
- T *branch * spell-check
- T *sym-spell-check *
- T -sym-trunk *
 -P 57f75e48690bdeb9b6bb3f46eee39021e3eb8cc0c488d2584177baa11ac984e5
 -R 8c49a17aac51846f7845b86202ebf5a3
 -U drh
 -Z 964a3bf027f7a3b198b82aa573575b71
++P 26c1bb4bd9e9f56613c3aa87407a7f562fd4ebde5bfd6dece02078001d9a45f8 9a12bac5d24c7a8364d2127fd12c3409a53ef83e408d10f344ddd311cdba98af
++R afa3749bf57be03443dd9fb9514c3cf7
 +U larrybr
- Z 571f9428e6a0b3c7f2d392953641b395
++Z 9fc49c02f88a65acb6e01a072053f268
  # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index 70c1a7e0ee30166bd1c6c60101971f06624858ca,c5029a1a8c01e7f6a29f792d5327b68c83bb665e..cf2a097044bc28787eed91697ae4156f0c23f2d6
@@@ -1,1 -1,1 +1,1 @@@
- 26c1bb4bd9e9f56613c3aa87407a7f562fd4ebde5bfd6dece02078001d9a45f8
 -9a12bac5d24c7a8364d2127fd12c3409a53ef83e408d10f344ddd311cdba98af
++8c291d99946eb32b20b743921202f9c7cfb716268ff526817b27adbb7942e40b
diff --cc src/btree.c
index 59bc68dc8e522284ae7ba413ab3c6bc3226152fd,59f522c74d4a951c830abaf7243f157487cfc59b..9d6bdf2e5b6a1ce904c2d33e6877395acab70e88
@@@ -9071,7 -9070,7 +9071,7 @@@ static int btreeOverwriteContent
  ){
    int nData = pX->nData - iOffset;
    if( nData<=0 ){
--    /* Overwritting with zeros */
++    /* Overwriting with zeros */
      int i;
      for(i=0; i<iAmt && pDest[i]==0; i++){}
      if( i<iAmt ){
  ** cell.
  */
  static SQLITE_NOINLINE int btreeOverwriteOverflowCell(
--  BtCursor *pCur,                     /* Cursor pointing to cell to ovewrite */
++  BtCursor *pCur,                     /* Cursor pointing to cell to overwrite */
    const BtreePayload *pX              /* Content to write into the cell */
  ){
    int iOffset;                        /* Next byte of pX->pData to write */
diff --cc src/build.c
index d983e935ee154e2cdbac0955fb29224f87ca9747,d6d90ea5f92d0b2d7755a5630998e1467184f2db..51a26326e07256fac927ae522fbed7d6e55aa8c6
@@@ -2081,8 -2081,8 +2081,8 @@@ static int identLength(const char *z)
  ** nul-terminated string pointed to by the third parameter, zSignedIdent,
  ** to the specified offset in the buffer and updates *pIdx to refer
  ** to the first byte after the last byte written before returning.
 -** 
 -** If the string zSignedIdent consists entirely of alpha-numeric
 +**
- ** If the string zSignedIdent consists entirely of alpha-numeric
++** If the string zSignedIdent consists entirely of alphanumeric
  ** characters, does not begin with a digit and is not an SQL keyword,
  ** then it is copied to the output buffer exactly as it is. Otherwise,
  ** it is quoted using double-quotes.
diff --cc src/date.c
index dfb727155be941833b0549d88eb9a4274632902f,dfb727155be941833b0549d88eb9a4274632902f..b56df143dcaac19b682b1a2fc72cb19687f63a8b
@@@ -1238,7 -1238,7 +1238,7 @@@ static void dateFunc
  **   %M  minute 00-59
  **   %s  seconds since 1970-01-01
  **   %S  seconds 00-59
--**   %w  day of week 0-6  sunday==0
++**   %w  day of week 0-6  Sunday==0
  **   %W  week of year 00-53
  **   %Y  year 0000-9999
  **   %%  %
diff --cc src/delete.c
index 43bc2fedb168b6b0badcfc7674fcd1d6ac4c1b25,0c9e764e21b14aedabe18c13661a2dbbe78e3d88..e231a327c054a8c1bae0c9e17289883728d6d9f3
@@@ -268,7 -268,7 +268,7 @@@ Expr *sqlite3LimitWhere
        pOrderBy,0,pLimit
    );
  
--  /* now generate the new WHERE rowid IN clause for the DELETE/UDPATE */
++  /* now generate the new WHERE rowid IN clause for the DELETE/UPDATE */
    pInClause = sqlite3PExpr(pParse, TK_IN, pLhs, 0);
    sqlite3PExprAddSelect(pParse, pInClause, pSelect);
    return pInClause;
diff --cc src/expr.c
index bca83aa0b0f1c8c60bb5c5c87bb76f4cabd20a03,f5d922f5664da797850545ee18c9ea7057618e65..795f6505243d5b77d917ee2bf5701f89f8b74198
@@@ -2785,7 -2785,7 +2785,7 @@@ static int sqlite3InRhsIsConstant(Expr 
  **   IN_INDEX_INDEX_ASC  - The cursor was opened on an ascending index.
  **   IN_INDEX_INDEX_DESC - The cursor was opened on a descending index.
  **   IN_INDEX_EPH        - The cursor was opened on a specially created and
--**                         populated epheremal table.
++**                         populated ephemeral table.
  **   IN_INDEX_NOOP       - No cursor was allocated.  The IN operator must be
  **                         implemented as a sequence of comparisons.
  **
  **
  ** When IN_INDEX_LOOP is used (and the b-tree will be used to iterate
  ** through the set members) then the b-tree must not contain duplicates.
--** An epheremal table will be created unless the selected columns are guaranteed
++** An ephemeral table will be created unless the selected columns are guaranteed
  ** to be unique - either because it is an INTEGER PRIMARY KEY or due to
  ** a UNIQUE constraint or index.
  **
 -** When IN_INDEX_MEMBERSHIP is used (and the b-tree will be used 
 -** for fast set membership tests) then an epheremal table must 
 -** be used unless <columns> is a single INTEGER PRIMARY KEY column or an 
 +** When IN_INDEX_MEMBERSHIP is used (and the b-tree will be used
- ** for fast set membership tests) then an epheremal table must
++** for fast set membership tests) then an ephemeral table must
 +** be used unless <columns> is a single INTEGER PRIMARY KEY column or an
  ** index can be found with the specified <columns> as its left-most.
  **
  ** If the IN_INDEX_NOOP_OK and IN_INDEX_MEMBERSHIP are both set and
@@@ -4307,7 -4307,7 +4307,7 @@@ expr_code_doover
        if( ExprHasProperty(pExpr, EP_FixedCol) ){
          /* This COLUMN expression is really a constant due to WHERE clause
          ** constraints, and that constant is coded by the pExpr->pLeft
--        ** expresssion.  However, make sure the constant has the correct
++        ** expression.  However, make sure the constant has the correct
          ** datatype by applying the Affinity of the table column to the
          ** constant.
          */
@@@ -5991,7 -5991,7 +5991,7 @@@ int sqlite3ExprImpliesExpr
    return 0;
  }
  
--/* This is a helper functino to impliesNotNullRow().  In this routine,
++/* This is a helper function to impliesNotNullRow().  In this routine,
  ** set pWalker->eCode to one only if *both* of the input expressions
  ** separately have the implies-not-null-row property.
  */
diff --cc src/func.c
index 1d47a24b832c5ae0d507162e69456537624300a4,4d0da5deddb082a276dd1876f0d406d22198f412..14f485d4dea57d326f9284c4840267cf94a4f78b
@@@ -858,7 -858,7 +858,7 @@@ int sqlite3_like_count = 0
  
  /*
  ** Implementation of the like() SQL function.  This function implements
--** the build-in LIKE operator.  The first argument to the function is the
++** the built-in LIKE operator.  The first argument to the function is the
  ** pattern and the second argument is the string.  So, the SQL statements:
  **
  **       A LIKE B
@@@ -1244,7 -1244,7 +1244,7 @@@ static int strContainsChar(const u8 *zS
  ** decoded and returned as a blob.
  **
  ** If there is only a single argument, then it must consist only of an
--** even number of hexadeximal digits. Otherwise, return NULL.
++** even number of hexadecimal digits. Otherwise, return NULL.
  **
  ** Or, if there is a second argument, then any character that appears in
  ** the second argument is also allowed to appear between pairs of hexadecimal
diff --cc src/json.c
index 8a36136d5eb510cf35d11feee765deeccdfbdec5,8735634c8476dcc1436399b271c13a4dd3859c7b..6bad1c1e75007dcbe36a901941b2ffd2dff54f3f
@@@ -2700,7 -2700,7 +2700,7 @@@ static void jsonGroupInverse
    pStr = (JsonString*)sqlite3_aggregate_context(ctx, 0);
  #ifdef NEVER
    /* pStr is always non-NULL since jsonArrayStep() or jsonObjectStep() will
--  ** always have been called to initalize it */
++  ** always have been called to initialize it */
    if( NEVER(!pStr) ) return;
  #endif
    z = pStr->zBuf;
diff --cc src/main.c
Simple merge
diff --cc src/pager.c
index 840c1818f0b1594514caa47927fecba1c2848d4a,44384de5c0d757815c784366ed918543c66e7061..d8819c89e807f41e5b053820debdb087f0548de0
@@@ -5021,7 -5021,7 +5021,7 @@@ act_like_temp_file
  
  /*
  ** Return the sqlite3_file for the main database given the name
--** of the corresonding WAL or Journal name as passed into
++** of the corresponding WAL or Journal name as passed into
  ** xOpen.
  */
  sqlite3_file *sqlite3_database_file_object(const char *zName){
diff --cc src/parse.y
index 541b9ffe584c31381219afa7cad1fc767822c13c,541b9ffe584c31381219afa7cad1fc767822c13c..4dc064252ebbe97044f6d8ec40bf362680cf0675
@@@ -15,7 -15,7 +15,7 @@@
  ** The canonical source code to this file ("parse.y") is a Lemon grammar 
  ** file that specifies the input grammar and actions to take while parsing.
  ** That input file is processed by Lemon to generate a C-language 
--** implementation of a parser for the given grammer.  You might be reading
++** implementation of a parser for the given grammar.  You might be reading
  ** this comment as part of the translated C-code.  Edits should be made
  ** to the original parse.y sources.
  */
@@@ -267,7 -267,7 +267,7 @@@ columnname(A) ::= nm(A) typetoken(Y). {
  %wildcard ANY.
  
  // Define operator precedence early so that this is the first occurrence
--// of the operator tokens in the grammer.  Keeping the operators together
++// of the operator tokens in the grammar.  Keeping the operators together
  // causes them to be assigned integer values that are close together,
  // which keeps parser tables smaller.
  //
diff --cc src/pragma.c
index 9c4d7475efe485443aa3ff202ac7e2204d7bdf7e,68a1531853466b727710cade2f4d15ef179407ad..f15c1be279570d0ae2c72d3145501dd7902fcac9
@@@ -1629,12 -1629,12 +1629,12 @@@ void sqlite3Pragma
    **
    ** Verify the integrity of the database.
    **
 -  ** The "quick_check" is reduced version of 
 +  ** The "quick_check" is reduced version of
    ** integrity_check designed to detect most database corruption
    ** without the overhead of cross-checking indexes.  Quick_check
--  ** is linear time wherease integrity_check is O(NlogN).
++  ** is linear time whereas integrity_check is O(NlogN).
    **
 -  ** The maximum nubmer of errors is 100 by default.  A different default
 +  ** The maximum number of errors is 100 by default.  A different default
    ** can be specified using a numeric parameter N.
    **
    ** Or, the parameter N can be the name of a table.  In that case, only
diff --cc src/select.c
index 388c856a87dc8c9b39d9d857c8139ee2b75072ec,4e787036583a5844c571057fa0a18d24baf9dbb8..b492d5374d0f8c935311fd8a5a843e5742277a03
@@@ -869,7 -869,7 +869,7 @@@ static void codeOffset
  **     The returned value in this case is a copy of parameter iTab.
  **
  **   WHERE_DISTINCT_ORDERED:
--**     In this case rows are being delivered sorted order. The ephermal
++**     In this case rows are being delivered sorted order. The ephemeral
  **     table is not required. Instead, the current set of values
  **     is compared against previous row. If they match, the new row
  **     is not distinct and control jumps to VM address addrRepeat. Otherwise,
@@@ -4723,8 -4723,8 +4723,7 @@@ static int flattenSubquery
      }
    }
  
--  /* Finially, delete what is left of the subquery and return
--  ** success.
++  /* Finally, delete what is left of the subquery and return success.
    */
    sqlite3AggInfoPersistWalkerInit(&w, pParse);
    sqlite3WalkSelect(&w,pSub1);
diff --cc src/shell.c.in
index f894fe28bf2748fe27efd00d378b94fdd0c9d864,d119eb4f8b50264e8f76fdbfc1ae5f17d40f96c0..d02ec7fb9cda72a5ec430d74b6bb2ff28c0ebfc8
@@@ -1424,7 -1424,7 +1424,7 @@@ struct ShellState 
    u8 bSafeModePersist;   /* The long-term value of bSafeMode */
    ColModeOpts cmOpts;    /* Option values affecting columnar mode output */
    unsigned statsOn;      /* True to display memory stats before each finalize */
--  unsigned mEqpLines;    /* Mask of veritical lines in the EQP output graph */
++  unsigned mEqpLines;    /* Mask of vertical lines in the EQP output graph */
    int inputNesting;      /* Track nesting level of .read and other redirects */
    int outCount;          /* Revert to stdout when reaching zero */
    int cnt;               /* Number of records displayed so far */
@@@ -3454,7 -3454,7 +3454,7 @@@ static void explain_data_prepare(ShellS
      /* Grow the p->aiIndent array as required */
      if( iOp>=nAlloc ){
        if( iOp==0 ){
--        /* Do further verfication that this is explain output.  Abort if
++        /* Do further verification that this is explain output.  Abort if
          ** it is not */
          static const char *explainCols[] = {
             "addr", "opcode", "p1", "p2", "p3", "p4", "p5", "comment" };
@@@ -4023,7 -4023,7 +4023,7 @@@ columnar_end
  */
  static void exec_prepared_stmt(
    ShellState *pArg,                                /* Pointer to ShellState */
--  sqlite3_stmt *pStmt                              /* Statment to run */
++  sqlite3_stmt *pStmt                              /* Statement to run */
  ){
    int rc;
    sqlite3_uint64 nRow = 0;
@@@ -4282,7 -4282,7 +4282,7 @@@ static int shell_exec
        if( zStmtSql==0 ) zStmtSql = "";
        while( IsSpace(zStmtSql[0]) ) zStmtSql++;
  
--      /* save off the prepared statment handle and reset row count */
++      /* save off the prepared statement handle and reset row count */
        if( pArg ){
          pArg->pStmt = pStmt;
          pArg->cnt = 0;
diff --cc src/sqlite.h.in
index 6d01c0389f70a3106ceaf90c1b4b79cbdf81a1df,78af06843644b3ed44e85d3174423b3f2e82225d..c5a50c01be90d72da43d0e691497ca89382f5842
@@@ -9632,7 -9632,7 +9632,7 @@@ int sqlite3_vtab_config(sqlite3*, int o
  ** [[SQLITE_VTAB_DIRECTONLY]]<dt>SQLITE_VTAB_DIRECTONLY</dt>
  ** <dd>Calls of the form
  ** [sqlite3_vtab_config](db,SQLITE_VTAB_DIRECTONLY) from within the
--** the [xConnect] or [xCreate] methods of a [virtual table] implmentation
++** the [xConnect] or [xCreate] methods of a [virtual table] implementation
  ** prohibits that virtual table from being used from within triggers and
  ** views.
  ** </dd>
diff --cc src/test1.c
index 2bc7a58a76b30815b9239c49182c8ad453352365,cc41bb3ce11ed8488b905fae4f55e801c9e6b0b3..ac30a0d5cba1246acbebc5022db3cb4c7f706ab0
@@@ -3459,10 -3459,10 +3459,10 @@@ bad_args
  /*
  ** Usage:         sqlite3_test_errstr <err code>
  **
--** Test that the english language string equivalents for sqlite error codes
++** Test that the English language string equivalents for sqlite error codes
  ** are sane. The parameter is an integer representing an sqlite error code.
  ** The result is a list of two elements, the string representation of the
--** error code and the english language explanation.
++** error code and the English language explanation.
  */
  static int SQLITE_TCLAPI test_errstr(
    void * clientData,
index 8bd9ff85a08bf8e372725de8949651473a8227ca,8bd9ff85a08bf8e372725de8949651473a8227ca..a203208abe7172dd391ef5b746068442c04a52e6
@@@ -45,7 -45,7 +45,7 @@@ struct sqlite3_mutex 
  /* State variables */
  static struct test_mutex_globals {
    int isInstalled;           /* True if installed */
--  int disableInit;           /* True to cause sqlite3_initalize() to fail */
++  int disableInit;           /* True to cause sqlite3_initialize() to fail */
    int disableTry;            /* True to force sqlite3_mutex_try() to fail */
    int isInit;                /* True if initialized */
    sqlite3_mutex_methods m;   /* Interface to "real" mutex system */
diff --cc src/update.c
index a01585c25eefe171da87f2c7234aa5ec085491cb,a01585c25eefe171da87f2c7234aa5ec085491cb..dfe68c074b7af0dad87f5575024095432c78a895
@@@ -30,10 -30,10 +30,10 @@@ static void updateVirtualTable
  
  /*
  ** The most recently coded instruction was an OP_Column to retrieve the
--** i-th column of table pTab. This routine sets the P4 parameter of the 
++** i-th column of table pTab. This routine sets the P4 parameter of the
  ** OP_Column to the default value, if any.
  **
--** The default value of a column is specified by a DEFAULT clause in the 
++** The default value of a column is specified by a DEFAULT clause in the
  ** column definition. This was either supplied by the user when the table
  ** was created, or added later to the table definition by an ALTER TABLE
  ** command. If the latter, then the row-records in the table btree on disk
@@@ -42,9 -42,9 +42,9 @@@
  ** If the former, then all row-records are guaranteed to include a value
  ** for the column and the P4 value is not required.
  **
--** Column definitions created by an ALTER TABLE command may only have 
++** Column definitions created by an ALTER TABLE command may only have
  ** literal default values specified: a number, null or a string. (If a more
--** complicated default expression value was provided, it is evaluated 
++** complicated default expression value was provided, it is evaluated
  ** when the ALTER TABLE is executed and one of the literal values written
  ** into the sqlite_schema table.)
  **
@@@ -69,8 -69,8 +69,8 @@@ void sqlite3ColumnDefault(Vdbe *v, Tabl
      assert( !IsView(pTab) );
      VdbeComment((v, "%s.%s", pTab->zName, pCol->zCnName));
      assert( i<pTab->nCol );
--    sqlite3ValueFromExpr(sqlite3VdbeDb(v), 
--                         sqlite3ColumnExpr(pTab,pCol), enc, 
++    sqlite3ValueFromExpr(sqlite3VdbeDb(v),
++                         sqlite3ColumnExpr(pTab,pCol), enc,
                           pCol->affinity, &pValue);
      if( pValue ){
        sqlite3VdbeAppendP4(v, pValue, P4_MEM);
@@@ -150,17 -150,17 +150,17 @@@ static Expr *exprRowColumn(Parse *pPars
  ** Assuming both the pLimit and pOrderBy parameters are NULL, this function
  ** generates VM code to run the query:
  **
--**   SELECT <other-columns>, pChanges FROM pTabList WHERE pWhere 
++**   SELECT <other-columns>, pChanges FROM pTabList WHERE pWhere
  **
--** and write the results to the ephemeral table already opened as cursor 
--** iEph. None of pChanges, pTabList or pWhere are modified or consumed by 
++** and write the results to the ephemeral table already opened as cursor
++** iEph. None of pChanges, pTabList or pWhere are modified or consumed by
  ** this function, they must be deleted by the caller.
  **
  ** Or, if pLimit and pOrderBy are not NULL, and pTab is not a view:
  **
--**   SELECT <other-columns>, pChanges FROM pTabList 
++**   SELECT <other-columns>, pChanges FROM pTabList
  **   WHERE pWhere
--**   GROUP BY <other-columns> 
++**   GROUP BY <other-columns>
  **   ORDER BY pOrderBy LIMIT pLimit
  **
  ** If pTab is a view, the GROUP BY clause is omitted.
  ** the view. The results are written to the ephemeral table iEph as records
  ** with automatically assigned integer keys.
  **
--** If the table is a virtual or ordinary intkey table, then <other-columns> 
++** If the table is a virtual or ordinary intkey table, then <other-columns>
  ** is its rowid. For a virtual table, the results are written to iEph as
  ** records with automatically assigned integer keys For intkey tables, the
--** rowid value in <other-columns> is used as the integer key, and the 
--** remaining fields make up the table record. 
++** rowid value in <other-columns> is used as the integer key, and the
++** remaining fields make up the table record.
  */
  static void updateFromSelect(
    Parse *pParse,                  /* Parse context */
    assert( pChanges!=0 || pParse->db->mallocFailed );
    if( pChanges ){
      for(i=0; i<pChanges->nExpr; i++){
--      pList = sqlite3ExprListAppend(pParse, pList, 
++      pList = sqlite3ExprListAppend(pParse, pList,
            sqlite3ExprDup(db, pChanges->a[i].pExpr, 0)
        );
      }
    }
--  pSelect = sqlite3SelectNew(pParse, pList, 
--      pSrc, pWhere2, pGrp, 0, pOrderBy2, 
++  pSelect = sqlite3SelectNew(pParse, pList,
++      pSrc, pWhere2, pGrp, 0, pOrderBy2,
        SF_UFSrcCheck|SF_IncludeHidden|SF_UpdateFrom, pLimit2
    );
    if( pSelect ) pSelect->selFlags |= SF_OrderByReqd;
@@@ -357,7 -357,7 +357,7 @@@ void sqlite3Update
    }
    assert( db->mallocFailed==0 );
  
--  /* Locate the table which we want to update. 
++  /* Locate the table which we want to update.
    */
    pTab = sqlite3SrcListLookup(pParse, pTabList);
    if( pTab==0 ) goto update_cleanup;
    }
    pTabList->a[0].iCursor = iDataCur;
  
--  /* Allocate space for aXRef[], aRegIdx[], and aToOpen[].  
++  /* Allocate space for aXRef[], aRegIdx[], and aToOpen[].
    ** Initialize aXRef[] and aToOpen[] to their default values.
    */
    aXRef = sqlite3DbMallocRawNN(db, sizeof(int) * (pTab->nCol+nIdx+1) + nIdx+2 );
          else if( pTab->aCol[j].colFlags & COLFLAG_GENERATED ){
            testcase( pTab->aCol[j].colFlags & COLFLAG_VIRTUAL );
            testcase( pTab->aCol[j].colFlags & COLFLAG_STORED );
--          sqlite3ErrorMsg(pParse, 
++          sqlite3ErrorMsg(pParse,
               "cannot UPDATE generated column \"%s\"",
               pTab->aCol[j].zCnName);
            goto update_cleanup;
  
  #ifndef SQLITE_OMIT_GENERATED_COLUMNS
    /* Mark generated columns as changing if their generator expressions
--  ** reference any changing column.  The actual aXRef[] value for 
++  ** reference any changing column.  The actual aXRef[] value for
    ** generated expressions is not used, other than to check to see that it
    ** is non-negative, so the value of aXRef[] for generated columns can be
    ** set to any non-negative number.  We use 99999 so that the value is
--  ** obvious when looking at aXRef[] in a symbolic debugger. 
++  ** obvious when looking at aXRef[] in a symbolic debugger.
    */
    if( pTab->tabFlags & TF_HasGenerated ){
      int bProgress;
    }
  #endif
  
--  /* The SET expressions are not actually used inside the WHERE loop.  
++  /* The SET expressions are not actually used inside the WHERE loop.
    ** So reset the colUsed mask. Unless this is a virtual table. In that
    ** case, set all bits of the colUsed mask (to ensure that the virtual
    ** table implementation makes all columns available).
    }
    aRegIdx[nAllIdx] = ++pParse->nMem;  /* Register storing the table record */
    if( bReplace ){
--    /* If REPLACE conflict resolution might be invoked, open cursors on all 
++    /* If REPLACE conflict resolution might be invoked, open cursors on all
      ** indexes in case they are needed to delete records.  */
      memset(aToOpen, 1, nIdx+1);
    }
    */
  #if !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_TRIGGER)
    if( nChangeFrom==0 && isView ){
--    sqlite3MaterializeView(pParse, pTab, 
++    sqlite3MaterializeView(pParse, pTab,
          pWhere, pOrderBy, pLimit, iDataCur
      );
      pOrderBy = 0;
        }
      }
    }
--  
++
    if( nChangeFrom ){
      sqlite3MultiWrite(pParse);
      eOnePass = ONEPASS_OFF;
        sqlite3ExprIfFalse(pParse, pWhere, labelBreak, SQLITE_JUMPIFNULL);
        bFinishSeek = 0;
      }else{
--      /* Begin the database scan. 
++      /* Begin the database scan.
        **
        ** Do not consider a single-pass strategy for a multi-row update if
        ** there is anything that might disrupt the cursor being used to do
        /* Read the PK of the current row into an array of registers. In
        ** ONEPASS_OFF mode, serialize the array into a record and store it in
        ** the ephemeral table. Or, in ONEPASS_SINGLE or MULTI mode, change
--      ** the OP_OpenEphemeral instruction to a Noop (the ephemeral table 
++      ** the OP_OpenEphemeral instruction to a Noop (the ephemeral table
        ** is not required) and leave the PK fields in the array of registers.  */
        for(i=0; i<nPk; i++){
          assert( pPk->aiColumn[i]>=0 );
      if( nChangeFrom==0 && eOnePass!=ONEPASS_MULTI ){
        sqlite3WhereEnd(pWInfo);
      }
--  
++
      if( !isView ){
        int addrOnce = 0;
--  
++
        /* Open every index that needs updating. */
        if( eOnePass!=ONEPASS_OFF ){
          if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iBaseCur] = 0;
          if( aiCurOnePass[1]>=0 ) aToOpen[aiCurOnePass[1]-iBaseCur] = 0;
        }
--  
++
        if( eOnePass==ONEPASS_MULTI && (nIdx-(aiCurOnePass[1]>=0))>0 ){
          addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
        }
          sqlite3VdbeJumpHereOrPopInst(v, addrOnce);
        }
      }
--  
++
      /* Top of the update loop */
      if( eOnePass!=ONEPASS_OFF ){
        if( aiCurOnePass[0]!=iDataCur
    ** information is needed */
    if( chngPk || hasFK || pTrigger ){
      u32 oldmask = (hasFK ? sqlite3FkOldmask(pParse, pTab) : 0);
--    oldmask |= sqlite3TriggerColmask(pParse, 
++    oldmask |= sqlite3TriggerColmask(pParse,
          pTrigger, pChanges, 0, TRIGGER_BEFORE|TRIGGER_AFTER, pTab, onError
      );
      for(i=0; i<pTab->nCol; i++){
    ** If there are one or more BEFORE triggers, then do not populate the
    ** registers associated with columns that are (a) not modified by
    ** this UPDATE statement and (b) not accessed by new.* references. The
--  ** values for registers not modified by the UPDATE must be reloaded from 
--  ** the database after the BEFORE triggers are fired anyway (as the trigger 
++  ** values for registers not modified by the UPDATE must be reloaded from
++  ** the database after the BEFORE triggers are fired anyway (as the trigger
    ** may have modified them). So not loading those that are not going to
    ** be used eliminates some redundant opcodes.
    */
            sqlite3ExprCode(pParse, pChanges->a[j].pExpr, k);
          }
        }else if( 0==(tmask&TRIGGER_BEFORE) || i>31 || (newmask & MASKBIT32(i)) ){
--        /* This branch loads the value of a column that will not be changed 
++        /* This branch loads the value of a column that will not be changed
          ** into a register. This is done if there are no BEFORE triggers, or
          ** if there are one or more BEFORE triggers that use this value via
          ** a new.* reference in a trigger program.
    */
    if( tmask&TRIGGER_BEFORE ){
      sqlite3TableAffinity(v, pTab, regNew);
--    sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges, 
++    sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges,
          TRIGGER_BEFORE, pTab, regOldRowid, onError, labelContinue);
  
      if( !isView ){
        /* The row-trigger may have deleted the row being updated. In this
--      ** case, jump to the next row. No updates or AFTER triggers are 
++      ** case, jump to the next row. No updates or AFTER triggers are
        ** required. This behavior - what happens when the row being updated
        ** is deleted or renamed by a BEFORE trigger - is left undefined in the
        ** documentation.
        }
  
        /* After-BEFORE-trigger-reload-loop:
--      ** If it did not delete it, the BEFORE trigger may still have modified 
--      ** some of the columns of the row being updated. Load the values for 
++      ** If it did not delete it, the BEFORE trigger may still have modified
++      ** some of the columns of the row being updated. Load the values for
        ** all columns not modified by the update statement into their registers
        ** in case this has happened. Only unmodified columns are reloaded.
        ** The values computed for modified columns use the values before the
          testcase( pTab->tabFlags & TF_HasStored );
          sqlite3ComputeGeneratedColumns(pParse, regNew, pTab);
        }
--#endif 
++#endif
      }
    }
  
      ** to process, delete the old record. Otherwise, add a noop OP_Delete
      ** to invoke the pre-update hook.
      **
--    ** That (regNew==regnewRowid+1) is true is also important for the 
++    ** That (regNew==regnewRowid+1) is true is also important for the
      ** pre-update hook. If the caller invokes preupdate_new(), the returned
      ** value is copied from memory cell (regNewRowid+1+iCol), where iCol
      ** is the column index supplied by the user.
      if( hasFK ){
        sqlite3FkCheck(pParse, pTab, 0, regNewRowid, aXRef, chngKey);
      }
--  
++
      /* Insert the new index entries and the new record. */
      sqlite3CompleteInsertion(
--        pParse, pTab, iDataCur, iIdxCur, regNewRowid, aRegIdx, 
--        OPFLAG_ISUPDATE | (eOnePass==ONEPASS_MULTI ? OPFLAG_SAVEPOSITION : 0), 
++        pParse, pTab, iDataCur, iIdxCur, regNewRowid, aRegIdx,
++        OPFLAG_ISUPDATE | (eOnePass==ONEPASS_MULTI ? OPFLAG_SAVEPOSITION : 0),
          0, 0
      );
  
      /* Do any ON CASCADE, SET NULL or SET DEFAULT operations required to
      ** handle rows (possibly in other tables) that refer via a foreign key
--    ** to the row just updated. */ 
++    ** to the row just updated. */
      if( hasFK ){
        sqlite3FkActions(pParse, pTab, pChanges, regOldRowid, aXRef, chngKey);
      }
    }
  
--  /* Increment the row counter 
++  /* Increment the row counter
    */
    if( regRowCount ){
      sqlite3VdbeAddOp2(v, OP_AddImm, regRowCount, 1);
    }
  
--  sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges, 
++  sqlite3CodeRowTrigger(pParse, pTrigger, TK_UPDATE, pChanges,
        TRIGGER_AFTER, pTab, regOldRowid, onError, labelContinue);
  
    /* Repeat the above with the next record to be updated, until
@@@ -1154,7 -1154,7 +1154,7 @@@ update_cleanup
    sqlite3SrcListDelete(db, pTabList);
    sqlite3ExprListDelete(db, pChanges);
    sqlite3ExprDelete(db, pWhere);
--#if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) 
++#if defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
    sqlite3ExprListDelete(db, pOrderBy);
    sqlite3ExprDelete(db, pLimit);
  #endif
  /*
  ** Generate code for an UPDATE of a virtual table.
  **
--** There are two possible strategies - the default and the special 
--** "onepass" strategy. Onepass is only used if the virtual table 
++** There are two possible strategies - the default and the special
++** "onepass" strategy. Onepass is only used if the virtual table
  ** implementation indicates that pWhere may match at most one row.
  **
  ** The default strategy is to create an ephemeral table that contains
@@@ -1211,7 -1211,7 +1211,7 @@@ static void updateVirtualTable
    int nArg = 2 + pTab->nCol;      /* Number of arguments to VUpdate */
    int regArg;                     /* First register in VUpdate arg array */
    int regRec;                     /* Register in which to assemble record */
--  int regRowid;                   /* Register for ephem table rowid */
++  int regRowid;                   /* Register for ephemeral table rowid */
    int iCsr = pSrc->a[0].iCursor;  /* Cursor used for virtual table scan */
    int aDummy[2];                  /* Unused arg for sqlite3WhereOkOnePass() */
    int eOnePass;                   /* True to use onepass strategy */
        sqlite3WhereEnd(pWInfo);
      }
  
--    /* Begin scannning through the ephemeral table. */
++    /* Begin scanning through the ephemeral table. */
      addr = sqlite3VdbeAddOp1(v, OP_Rewind, ephemTab); VdbeCoverage(v);
  
--    /* Extract arguments from the current row of the ephemeral table and 
++    /* Extract arguments from the current row of the ephemeral table and
      ** invoke the VUpdate method.  */
      for(i=0; i<nArg; i++){
        sqlite3VdbeAddOp3(v, OP_Column, ephemTab, i, regArg+i);
diff --cc src/vdbeaux.c
index dc5514052532e4108a8803c00692241cdca4f835,ecbf2d892e6b418fbbf408d417b725adfa9c1b18..57cc2a483e28311abddeeaf40abbd889adba45e0
@@@ -1280,7 -1280,7 +1280,7 @@@ void sqlite3VdbeJumpHereOrPopInst(Vdbe 
  
  /*
  ** If the input FuncDef structure is ephemeral, then free it.  If
--** the FuncDef is not ephermal, then do nothing.
++** the FuncDef is not ephemeral, then do nothing.
  */
  static void freeEphemeralFunction(sqlite3 *db, FuncDef *pDef){
    assert( db!=0 );
diff --cc src/vdbesort.c
index 5fad1d25bbd28dfadde67ec83d8e58cbc232f2af,3958662cc69b636d32d5d014188e49dff6bd89b9..2b7da94f7f8da2fba6f9892effadb58e97ab2704
  ** of PMAs may be created by merging existing PMAs together - for example
  ** merging two or more level-0 PMAs together creates a level-1 PMA.
  **
 -** The threshold for the amount of main memory to use before flushing 
 +** The threshold for the amount of main memory to use before flushing
  ** records to a PMA is roughly the same as the limit configured for the
 -** page-cache of the main database. Specifically, the threshold is set to 
 -** the value returned by "PRAGMA main.page_size" multipled by 
 +** page-cache of the main database. Specifically, the threshold is set to
- ** the value returned by "PRAGMA main.page_size" multipled by
++** the value returned by "PRAGMA main.page_size" multiplied by
  ** that returned by "PRAGMA main.cache_size", in bytes.
  **
  ** If the sorter is running in single-threaded mode, then all PMAs generated
diff --cc src/wal.c
index 5375dcdb93ecc6d3ddfef065cc923df152a4da15,46d284c1b963aed0cb745ba6e88d960aa4acbaa8..f4d0328b2b4f86ec122e11bc5ac56d82e9b1b683
+++ b/src/wal.c
  ** NULL if there are no frames for page P in the WAL prior to M.
  **
  ** The wal-index consists of a header region, followed by an one or
- ** more index blocks. 
 -** more index blocks.  
++** more index blocks.
  **
  ** The wal-index header contains the total number of frames within the WAL
  ** in the mxFrame field.
  ** if no values greater than K0 had ever been inserted into the hash table
  ** in the first place - which is what reader one wants.  Meanwhile, the
  ** second reader using K1 will see additional values that were inserted
- ** later, which is exactly what reader two wants. 
 -** later, which is exactly what reader two wants.  
++** later, which is exactly what reader two wants.
  **
  ** When a rollback occurs, the value of K is decreased. Hash table entries
  ** that correspond to frames greater than the new K value are removed
@@@ -316,7 -316,7 +316,7 @@@ typedef struct WalCkptInfo WalCkptInfo
  **
  ** The szPage value can be any power of 2 between 512 and 32768, inclusive.
  ** Or it can be 1 to represent a 65536-byte page.  The latter case was
- ** added in 3.7.1 when support for 64K pages was added. 
 -** added in 3.7.1 when support for 64K pages was added.  
++** added in 3.7.1 when support for 64K pages was added.
  */
  struct WalIndexHdr {
    u32 iVersion;                   /* Wal-index version */
@@@ -543,7 -543,7 +543,7 @@@ struct Wal 
  ** Candidate values for Wal.exclusiveMode.
  */
  #define WAL_NORMAL_MODE     0
- #define WAL_EXCLUSIVE_MODE  1    
 -#define WAL_EXCLUSIVE_MODE  1     
++#define WAL_EXCLUSIVE_MODE  1
  #define WAL_HEAPMEMORY_MODE 2
  
  /*
@@@ -941,7 -941,7 +941,7 @@@ static const char *walLockName(int lock
    }
  }
  #endif /*defined(SQLITE_TEST) || defined(SQLITE_DEBUG) */
-    
 -    
++
  
  /*
  ** Set or release locks on the WAL.  Locks are either shared or exclusive.
@@@ -1121,9 -1121,9 +1121,9 @@@ static void walCleanupHash(Wal *pWal)
        sLoc.aHash[i] = 0;
      }
    }
-  
 -  
++
    /* Zero the entries in the aPgno array that correspond to frames with
 -  ** frame numbers greater than pWal->hdr.mxFrame. 
 +  ** frame numbers greater than pWal->hdr.mxFrame.
    */
    nByte = (int)((char *)sLoc.aHash - (char *)&sLoc.aPgno[iLimit]);
    assert( nByte>=0 );
@@@ -1167,9 -1167,9 +1167,9 @@@ static int walIndexAppend(Wal *pWal, u3
  
      idx = iFrame - sLoc.iZero;
      assert( idx <= HASHTABLE_NSLOT/2 + 1 );
-    
 -    
++
      /* If this is the first entry to be added to this hash-table, zero the
 -    ** entire hash table and aPgno[] array before proceeding. 
 +    ** entire hash table and aPgno[] array before proceeding.
      */
      if( idx==1 ){
        int nByte = (int)((u8*)&sLoc.aHash[HASHTABLE_NSLOT] - (u8*)sLoc.aPgno);
@@@ -1349,7 -1349,7 +1349,7 @@@ static int walIndexRecover(Wal *pWal)
        assert( aShare!=0 || rc!=SQLITE_OK );
        if( aShare==0 ) break;
        pWal->apWiData[iPg] = aPrivate;
-      
 -      
++
        for(iFrame=iFirst; iFrame<=iLast; iFrame++){
          i64 iOffset = walFrameOffset(iFrame, szPage);
          u32 pgno;                 /* Database page number for frame */
@@@ -1851,7 -1851,7 +1851,7 @@@ static int walIteratorInit(Wal *pWal, u
        }
        aIndex = &((ht_slot *)&p->aSegment[p->nSegment])[sLoc.iZero];
        sLoc.iZero++;
-  
 -  
++
        for(j=0; j<nEntry; j++){
          aIndex[j] = (ht_slot)j;
        }
@@@ -2045,7 -2045,7 +2045,7 @@@ static void walRestartHdr(Wal *pWal, u3
  ** database file.
  **
  ** This routine uses and updates the nBackfill field of the wal-index header.
- ** This is the only routine that will increase the value of nBackfill. 
 -** This is the only routine that will increase the value of nBackfill.  
++** This is the only routine that will increase the value of nBackfill.
  ** (A WAL reset or recovery will revert nBackfill to zero, but not increase
  ** its value.)
  **
@@@ -2358,7 -2358,7 +2358,7 @@@ static SQLITE_NO_TSAN int walIndexTryHd
    ** give false-positive warnings about these accesses because the tools do not
    ** account for the double-read and the memory barrier. The use of mutexes
    ** here would be problematic as the memory being accessed is potentially
--  ** shared among multiple processes and not all mutex implementions work
++  ** shared among multiple processes and not all mutex implementations work
    ** reliably in that environment.
    */
    aHdr = walIndexHdr(pWal);
  
    if( memcmp(&h1, &h2, sizeof(h1))!=0 ){
      return 1;   /* Dirty read */
-   } 
 -  }  
++  }
    if( h1.isInit==0 ){
      return 1;   /* Malformed header - probably all zeros */
    }
@@@ -3373,9 -3373,9 +3373,9 @@@ int sqlite3WalUndo(Wal *pWal, int (*xUn
    if( ALWAYS(pWal->writeLock) ){
      Pgno iMax = pWal->hdr.mxFrame;
      Pgno iFrame;
-  
 -  
++
      /* Restore the clients cache of the wal-index header to the state it
 -    ** was in before the client began writing to the database. 
 +    ** was in before the client began writing to the database.
      */
      memcpy(&pWal->hdr, (void *)walIndexHdr(pWal), sizeof(WalIndexHdr));
  
@@@ -3685,7 -3685,7 +3685,7 @@@ int sqlite3WalFrames
      walChecksumBytes(1, aWalHdr, WAL_HDRSIZE-2*4, 0, aCksum);
      sqlite3Put4byte(&aWalHdr[24], aCksum[0]);
      sqlite3Put4byte(&aWalHdr[28], aCksum[1]);
-    
 -    
++
      pWal->szPage = szPage;
      pWal->hdr.bigEndCksum = SQLITE_BIGENDIAN;
      pWal->hdr.aFrameCksum[0] = aCksum[0];
diff --cc src/where.c
index eb3bd0b21efb03483d3df981fdfff58e39210fcd,25405cedf4ebce1143e207776c77a63ef6c7cd3d..858e33c8ac355379622747eed217778740a59c29
@@@ -2880,7 -2880,7 +2880,7 @@@ static int whereLoopAddBtreeIndex
    Index *pProbe,                  /* An index on pSrc */
    LogEst nInMul                   /* log(Number of iterations due to IN) */
  ){
--  WhereInfo *pWInfo = pBuilder->pWInfo;  /* WHERE analyse context */
++  WhereInfo *pWInfo = pBuilder->pWInfo;  /* WHERE analyze context */
    Parse *pParse = pWInfo->pParse;        /* Parsing context */
    sqlite3 *db = pParse->db;       /* Database connection malloc context */
    WhereLoop *pNew;                /* Template WhereLoop under construction */
diff --cc src/window.c
index bbad81a720a5aff99ac595867fa37991c8f9548d,a8081aa2444dc3b35d60993817b84a2debcb78a0..d46eabc3b4471fb0b46547975d101b9679ce16ce
@@@ -1574,7 -1574,7 +1574,7 @@@ struct WindowCsrAndReg 
  **
  **     (ORDER BY a, b GROUPS BETWEEN 2 PRECEDING AND 2 FOLLOWING)
  **
--**   The windows functions implmentation caches the input rows in a temp
++**   The windows functions implementation caches the input rows in a temp
  **   table, sorted by "a, b" (it actually populates the cache lazily, and
  **   aggressively removes rows once they are no longer required, but that's
  **   a mere detail). It keeps three cursors open on the temp table. One
diff --cc tool/custom.txt
index b96bc5f15ca01f535721d2d85ab3447af53f8b4a,0000000000000000000000000000000000000000..b9c8a98587adcb2637a63d08722da52c78f1206f
mode 100644,000000..100644
--- /dev/null
@@@ -1,1342 -1,0 +1,1246 @@@
- Analyse
 +aa
 +aaa
 +abc
 +abcdefg
 +abd
 +abf
 +Abortable
 +acc
 +accessor
 +accum
 +acd
 +activecpu
 +Adaptor
 +Additionallly
 +addop
 +addoptrace
 +addr
 +adjustements
 +af
 +aff
 +afp
 +afterward
 +Agg
 +agg
 +agginfo
 +alikes
 +Alloc
 +alloc
 +alloca
 +allocator
 +allocators
 +alphabetics
 +alphanumerics
 +alternateform
 +altertab
 +altform
 +amalgamator
 +amongst
- Arg
 +analyse
 +antipenultimate
 +ap
 +api
 +appdef
 +appendall
 +appendchar
 +appendf
 +ar
- Atoi
 +arg
 +argc
 +argcount
 +arglist
 +argn
 +args
 +argv
 +arrayname
 +ascii
 +asm
 +async
- Autocommit
++atoi
 +atomics
 +auth
 +authorizer
 +autocheckpoint
- Autoext
 +autocommit
 +autoconf
- Behavioral
++autoext
 +autoextension
 +autoinc
 +autoincrement
 +autoincremented
 +autoindex
 +autoinstall
 +autovac
 +autovacuum
 +autovacuumed
 +autovacuuming
 +auxdata
 +awk
 +Ax
 +backend
 +backends
 +backfill
 +backfilled
 +backfilling
 +backtrace
 +backtraces
 +backtracing
 +bb
 +bba
 +bcb
 +bcc
 +beginthreadex
 +behavior
- Bitfield
++behavioral
 +behaviors
 +benigncnt
 +bg
 +bigblob
 +bitcount
- Bitmask
 +bitfield
- Bitmasks
 +bitmask
- Bitvec
 +bitmasks
 +bitset
- Btree
 +bitvec
 +bitvecs
 +bitwise
 +blobwrite
 +blockquote
 +Bloomfilter
 +bom
 +boolean
 +booleans
 +Borland
 +br
 +breadthfirstsearch
 +breakpoint
 +bt
- Btrees
 +btree
- Collseq
 +btrees
 +buf
 +bufpt
 +butoindex
 +bytearray
 +bytecode
 +bytecodevtab
 +byteorder
 +cacheflush
 +cachegrind
 +Cachesize
 +calc'ing
 +callgrind
 +cardinalities
 +cardinality
 +carray
 +cb
 +cd
 +cdbaa
 +ce
 +ceil
 +cellpadding
 +cellspacing
 +center
 +chacha
 +changecounter
 +changeset
 +characgter
 +characterset
 +checkpointed
 +Checkpointer
 +checkpointer
 +checkpointers
 +checkpointing
 +checksummed
 +checksums
 +chmod
 +chng
 +chown
 +chroot
 +chsize
 +chunksize
 +cid
 +cis
 +ckalloc'd
 +ckpt
 +cksum
 +cksumvfs
 +clientdata
 +closedir
 +clownshoe
 +cmd
 +cmp
 +cmpaff
 +Cmpr
 +cnt
 +codec
 +codepage
- Concat
 +collseq
 +colname
 +compileoption
- Coroutine
 +concat
 +config
 +confstr
 +connetion
 +consective
 +considertion
 +const
 +coredump
- corresonding
 +coroutine
 +coroutines
- Deallocate
 +cov
 +crashparams
 +csr
 +csv
 +Cte
 +ctime
 +Ctrl
 +ctrl
 +ctx
 +ctype
 +cume
 +Cx
 +cx
 +Cygwin
 +cygwin
 +dan
 +darkstar
 +databasename
 +databse
 +datasource
 +datatypes
 +datetime
 +dbfuzz
 +dbinfo
 +dbname
 +dbpage
 +dbpagevfs
 +dbs
 +dbsize
 +dbsqlfuzz
 +dbstat
 +dbtotxt
 +De
 +de
 +deadman
- Deallocates
 +deallocate
 +deallocated
- Deallocation
 +deallocates
 +deallocating
- Defense
 +deallocation
 +decltype
 +decrementing
- Dequote
 +defense
 +defenses
 +defn
 +defragment
 +defragmentation
 +defragmented
 +deinitialization
 +Deinitialize
 +deinitialize
 +demovfs
 +dependences
- Dequoted
 +dequote
- Dereferences
 +dequoted
 +dequoting
 +dereferenced
- Deserialize
++dereferences
 +desc
 +deserialization
- Dest
 +deserialize
 +deserialized
 +deserializes
 +deserializing
- Destructor
 +dest
- Dotfile
 +destructor
 +destructors
 +deterministically
 +dev
 +devsim
 +devsym
 +df
 +Dfdatasync
 +dflt
 +dir
 +directonly
 +dirent
 +dirs
 +disjunct
 +disjunction
 +disjuncts
 +diskfull
 +divy
 +dl
 +dll
 +dlopen
 +dlsym
 +docid
 +docids
 +dont
 +dontcache
- english
 +dotfile
 +dotlock
 +doublearray
 +drh
 +dryrun
 +dstr
 +dt
 +Duint
 +dup
 +Durian
 +dword
 +Dx
 +dylib
 +Dyn
 +Ec
 +ec
 +ecel
 +editability
 +ef
 +efc
 +eg
 +Ei
 +elif
 +emcc
 +emscripten
 +encodings
 +endeavor
 +endfor
 +endian
 +endianness
 +endif
 +endthreadex
- ephem
- epheremal
- ephermal
- Eq
 +enum
 +eof
 +eph
 +Ephem
- Errno
 +eq
 +eqp
 +equaling
 +equalities
 +errcode
 +errmsg
- Expr
 +errno
 +errorcode
 +erroroffset
 +errstr
 +esc
 +esign
 +et
 +etfs
 +etilqs
 +eval
 +exe
 +expander
 +explainer
 +expmask
- expresssion
 +expr
- Finially
- Fixup
 +exprlist
 +extern
 +fakeheap
 +fallocate
 +fanout
 +faultsim
 +favor
 +favors
 +fb
 +fc
 +fchmod
 +fchown
 +fclose
 +fcntl
 +fd
 +fdatasync
 +feb
 +fef
 +Feijoa
 +ferror
 +ffff
 +ffffeff
 +ffffffe
 +fffffff
 +ffffffff
 +fffffffffffffff
 +fflush
 +fg
 +fgets
 +fi
 +fibonacci
 +fid
 +Fifo
 +filecount
 +filectrl
 +filemapping
 +filesize
 +filesystem
 +filesystems
 +finalised
 +finalizer
 +findfirst
 +findnext
- Freeblocks
++fixup
 +fk
 +fkctr
 +fkey
 +flattener
 +fmt
 +fopen
 +foreach
 +formatter
 +fprintf
 +fputs
 +fread
 +fred
 +fred's
 +freeblock
- Freelist
 +freeblocks
- Fsync
 +freelist
 +freepage
 +freespace
 +frombind
 +fs
 +fsanitize
 +fsctl
 +fsdir
 +fseek
 +fstat
 +fstree
- Func
 +fsync
 +fsynced
 +fsyncs
 +ftell
 +ftruncate
 +fts
 +fullfsync
 +fullname
 +fullschema
 +fullshm
 +fullsync
 +fullsyncs
- functino
 +func
 +funcs
- Globbing
 +fuzzer
 +fuzzers
 +fwrite
 +Fx
 +gcc
 +gcov
 +gdb
 +getcwd
 +getenv
 +gethostuuid
 +getpagesize
 +getpid
 +getrusage
 +getsubtype
 +getter
 +getters
 +gibabyte
 +gid
 +glibc
- hexadeximal
 +globbing
 +gmtime
 +Gosub
 +Goto
 +goto
 +groupbyparent
 +Groupid
 +growable
 +grp
 +hdl
 +hdr
- Highwater
 +hexdb
 +hexdouble
 +hexio
- Idx
 +highwater
 +hijklmno
 +honor
 +honored
 +honoring
 +hostid
 +href
 +html
 +htsize
 +hw
 +Hwtime
 +icecube
 +ideographical
- implementions
- implmentation
 +idx
 +idxaff
 +idxnum
 +idxstr
 +idx'th
 +ieee
 +ifdef
 +iff
 +ifndef
 +imm
 +impl
- Incrblob
 +incr
- Init
 +incrblob
 +incrementing
 +indexable
 +indexname
 +infop
 +ing
- initalize
 +init
- Malloc
 +initfail
 +initializer
 +initializers
 +initiallly
 +inlined
 +inlines
 +inlining
 +ino
 +inode
 +inodes
 +inopertune
 +installable
 +intarray
 +inteface
 +interoperate
 +interp
 +interpretable
 +intkey
 +intptr
 +intreal
 +intrinsics
 +invalidations
 +invariants
 +io
 +ioerr
 +iotrace
 +ipk
 +iplan
 +isalnum
 +isalpha
 +isatty
 +isdigit
 +isempty
 +isexplain
 +ismemdb
 +isnan
 +isspace
 +isxdigit
 +i'th
 +iversion
 +jfd
 +jj
 +jointype
 +jointypes
 +journaled
 +journaling
 +journalled
 +journalling
 +journalmode
 +jrnl
 +jsl
 +json
 +jt
 +julian
 +julianday
 +keyinfo
 +keywordhash
 +kibibytes
 +kvstorage
 +kvvfs
 +lappend
 +lasterrno
 +lbl
 +ldl
 +le
 +leafdata
 +leftjustify
 +len
 +leveling
 +lexeme
 +lexemes
 +lhs
 +li
 +libm
 +libversion
 +lifecycle
 +lindex
 +lineno
 +Linenoise
 +linux
 +lised
 +lld
 +llvm
 +lm
 +ln
 +lncurses
 +loadext
 +localhost
 +localtime
 +lockd
 +lockdata
 +lockingcontext
 +lockless
 +lockproxy
 +locktype
 +logmsg
 +longvalue
 +longwords
 +lookahead
 +Lookaside
 +lookaside
 +lookups
 +losslessly
 +lpthread
 +lrc
 +lreadline
 +lru
 +lseek
 +lt
 +lvalue
 +lwr
 +makefile
 +makefiles
- Malloc'd
 +malloc
- Mem
 +malloc'd
 +malloced
 +mallocs
 +manditory
 +manpage
 +matchinfo
 +materializations
 +mathfuncs
 +maxsize
 +mbcs
 +Mcafee
 +md
 +Meeus
- Miscoded
 +mem
 +memcmp
 +memcpy
 +memdb
 +memdebug
 +memget
 +memmove
 +mempool
 +memset
 +memstatus
 +memsys
 +memvfs
 +mergeable
 +mergepatch
 +middleware
 +millisec
 +mincore
 +mingw
 +mis
- Multibyte
- multipled
++miscoded
 +mj
 +mkctimec
 +mkdir
 +mkkeywordhash
 +mkopcodec
 +mkopcodeh
 +mkpragmatab
 +mmap
 +mmapped
 +mno
 +modeof
 +Movepage
 +mprintf
 +msd
 +msdos
 +msec
 +msg
 +msgs
 +msize
 +msvc
 +mtime
 +mult
- Mutex
++multibyte
 +multiplex'ed
 +multiplexor
 +multithreaded
 +multiwrite
- Mutexes
 +mutex
- Namespace
 +mutexes
 +mutexing
 +mx
 +mxpathname
 +myprefix
 +nal
 +namecontext
- Noop
 +namespace
 +natively
 +nbr
 +nbsp
 +ncell
 +ncol
 +ncycle
 +nd
 +ndlt
 +neighbors
 +neq
 +nestable
 +newrowid
 +nfs
 +nlt
 +nnn
 +nocase
 +nochange
 +nochng
 +nofollow
 +nolock
 +nomem
 +nomutex
 +nonblocking
 +nonroot
- Nr
 +noop
 +noshm
 +notational
 +notheld
 +notnull
 +nowrap
- Nul
 +nr
 +ntile
- Oom
 +nul
 +nullable
 +nullif
 +nullvalue
 +Num
 +objproc
 +oc
 +offsetof
 +ofst
 +ogham
 +oid
 +Ok
 +ok
 +ol
 +onecolumn
 +onepass
 +onoff
 +onwards
- Overwritting
++oom
 +opcodesnever
 +openable
 +opendir
 +optimizers
 +optimizible
 +orconf
 +orderby
 +orderbylist
 +os
 +Oswrite
 +overread
 +overreads
 +overrideable
 +oversize
 +overwriteable
- Pagecount
 +ovewrite
 +ovfl
 +pagecache
 +pagecaches
- Pagesize
 +pagecount
 +pagelist
 +pageno
- Posix
 +pagesize
 +pagetype
 +Param
 +params
 +passwd
 +patchset
 +pathname
 +pathnames
 +pc
 +pcache
 +pclose
 +pcx
 +pgno
 +pgoffset
 +pgsize
 +pgsz
 +pid
 +pluggable
 +pmasz
 +pn
 +popen
 +pos
- Pre
 +posix
 +Postgres
 +Powersafe
 +powersafe
 +pq
 +pqr
 +pqrstuvw
 +pragma
 +pragmaed
 +pragma's
 +pragmas
- Preallocated
 +pre
 +pread
 +preallocate
- Precomputed
 +preallocated
 +precisions
 +precompiled
- Prng
 +precomputed
 +prefetch
 +prefetched
 +preformated
 +preformatted
 +prepend
 +prepended
 +prepending
 +prepends
 +prepopulate
 +preprocess
 +preprocessed
 +preprocessing
 +preprocessor
 +prereq
 +prereqs
 +preupdate
 +primarykey
 +printf
 +printfs
- Pseudotable
 +prng
 +proc
 +procs
 +profiler
 +proleptic
 +proxying
 +proxys
 +pseudocode
- Pthreads
 +pseudotable
 +psow
 +psz
 +pthread
- Ptr
 +pthreads
- Readline
 +ptr
 +ptrmap
 +ptrs
 +purgeable
 +putsnl
 +pwrite
 +pz
 +qbox
 +Qcircle
 +quotaed
 +quotefix
 +radix
 +randomblob
 +randstr
 +rarr
 +rc
 +rcauth
 +Rcvr
 +rds
 +readdir
- Realloc
 +readline
 +readlock
 +readonly
 +Readr
- Regs
 +realloc
 +reallocs
 +realvalue
 +rebalance
 +rebalanced
 +recoverability
 +redefinable
 +redux
 +reenabled
 +reentrant
 +refcount
 +refcounts
- Rekey
 +regs
 +reindexed
 +reinitializer
 +reinitializes
- Relink
 +rekey
 +rekeyed
 +relevancies
- Reparse
++relink
 +relink
 +relock
 +renormalize
 +reoptimize
- Reprepare
++reparse
 +reparse
 +reparsed
 +reparsing
 +reportable
- Reseek
++reprepare
 +reprepare
 +reprepared
 +reprepares
 +representable
 +repurpose
 +Req'd
 +requeries
 +requote
 +reregister
- Retarget
++reseek
 +reservebytes
 +resumable
- Rootpage
++retarget
 +retargeted
 +retrys
 +returntype
 +rfc
 +rhs
 +Ri
 +Rivest
 +ro
- Rowid
 +rootpage
- Rowids
 +rowid
- Rowset
 +rowids
 +Rowkey
 +rownumber
- Savepoint
 +rowset
 +runtime
 +rw
 +rwc
 +samplelib
 +sampleno
 +sandboxed
 +sandboxing
- Savepoints
 +savepoint
- scannning
 +savepoints
 +scanf
- statment
 +scanstats
 +scanstatus
 +schemas
 +sectorsize
 +selecttrace
 +selftest
 +setrlimit
 +setsubtype
 +settitle
 +sharable
 +shm
 +shmlock
 +sibs
 +sig
 +signaling
 +significand
 +sizehint
 +Sizeof
 +sizeof
 +snprintf
 +Solaris
 +sorterref
 +soundex
 +sourceid
 +speedtest
 +sprintf
 +sql
 +sqlar
 +sqlite
 +sqliteplocks
 +sqliterc
 +sqllog
 +sqllogglobal
 +sqlthread
 +sqr
 +sqrt
 +src
 +srcck
 +statfs
- Stmt
 +stderr
 +stdin
 +stdout
- Str
 +stmt
 +stmts
- Subfunction
 +str
 +strace
 +strcasecmp
 +strcmp
 +strdup
 +strerror
 +strftime
 +strglob
 +stricmp
 +stringify
 +strlen
 +strlike
 +strncmp
 +strncpy
 +strnicmp
 +stronly
 +strstr
 +struct
 +structs
 +subbitmap
 +subcases
 +subclassed
 +subclauses
 +subcomponents
 +subdirectory
 +subelement
 +subexpression
 +subexpressions
- Substring
++subfunction
 +subfunctions
 +subitem
 +subjournals
 +sublevels
 +subnode
 +suboptimal
 +subpages
 +subprocedures
 +subprog
 +subprogs
 +subq
 +subqueries
 +subquery
 +Subrtn
 +subsec
 +subsecond
 +subsequence
 +substr
- Subsubstructure
++substring
 +substrings
- Subtype
++subsubstructure
 +subsubterms
 +Subtask
 +subtasks
 +subterm
 +subterms
 +subtransaction
 +subtransactions
 +subtree
 +subtrees
- sunday
 +subtype
 +subtypes
 +sumint
- Unary
 +superclass
 +superlock
 +superset
 +superunlock
 +symlinks
 +synching
 +sys
 +syscall
 +sz
 +szosfile
 +tablename
 +tailval
 +tailvar
 +tbl
 +tblname
 +Tcl
 +tcl
 +Tclcmd
 +tclcmd
 +tclsh
 +tclsqlite
 +tclvar
 +td
 +tempfilename
 +testcase
 +testctrl
 +testfixture
 +testtag
 +testvfs
 +textarray
 +th
 +threadid
 +threadsafe
 +threadsafety
 +throughs
 +tht
 +timediff
 +tkt
 +tm
 +tmp
 +tmpdir
 +tmpfs
 +tnum
 +Todo
 +tokenize
 +tokenizer
 +tokenizing
 +tolower
 +toobig
 +toupper
 +treetrace
 +treeview
 +trimleft
 +trimright
 +truesize
 +trys
 +Tsd
 +Ts'o
 +tunable
 +tvfs
 +txn
 +txt
 +Typecheck
 +typedef
 +typedefed
 +typedefs
 +typename
 +typenames
 +typeof
 +tz
 +uber
 +uid
 +uint
 +ul
 +umask
 +Un
 +un
 +unallocated
 +unanalyzed
- Unindexed
 +unary
 +unbuffered
 +unclosed
 +uncompiled
 +uncomputed
 +undefining
 +underfull
 +unexpanded
 +unfinalized
 +unfreed
 +unhex
 +unicode
- Uninitialize
 +unindexed
 +uninit
- Unlink
++uninitialize
 +unintuitive
 +unioned
 +unissued
 +unix
 +unixepoch
- Unmap
 +unlink
 +unlinked
 +unlinking
 +unlinks
- Unregister
 +unmap
 +unmapped
 +unmapping
 +unoptimized
 +unparsed
 +unreduced
 +unref
 +unreferenced
 +unrefs
- Unregistering
 +unregister
- Valgrind
++unregistering
 +unregisters
 +unresolvable
 +unsynced
 +unterminated
 +untracked
 +untrusted
 +Upfrom
 +uppercasing
 +upr
 +Upsert
 +upsert
 +upto
 +uptr
 +uri
 +userauth
 +userdata
 +Userid
 +usleep
 +utc
 +Utf
 +utf
 +util
 +uuu
 +uuuuu
 +uuzzzz
 +va
- Vararg
 +valgrind
 +vanishingly
 +vappendf
- Varname
++vararg
 +varargs
 +varint
 +varints
- Vdbe
 +varname
 +vcolumn
- verfication
 +vdbe
 +vdbeapi
 +vdbe's
 +vdbes
 +vdbesort
 +ve
- veritical
 +verifications
- Wal
 +vfs
 +vfslog
 +vfsname
 +vfs's
 +vfstrace
 +vm
 +vmprintf
 +vmstep
 +vsnprintf
 +vt
 +vtab
 +vtabs
 +Vugt
 +vvv
 +vvvv
 +vvvvv
 +vvvvvv
 +vwait
 +vxworks
- wherease
 +wal
 +wasm
- Xfer
 +wherecode
 +whereexpr
 +wheretrace
 +whitespace
 +Willmann
 +withoutrowid
 +wr
 +wrapup
 +writeable
 +writecrash
 +writefile
 +wsd
 +ww
 +wwww
 +wwzzzzyy
 +wxyz
 +xa
 +xac
 +xb
 +xbf
 +xc
 +xd
 +xdg
 +xe
 +xf
 +xfe
 +xfer
 +xff
 +xfff
 +xfffd
 +xfffe
 +xffffffff
 +x'hhhhhh
 +xinfo
 +xlc
 +xtype
 +xxxx
 +xxxxx
 +xxxxxx
 +xxxxxxx
 +xxxxxxxx
 +xyz
 +xyzzy
 +yy
 +yyxxxxxx
 +yyy
 +yyyyy
 +yyyyyy
 +zeroblob
 +Zeroblobs
 +zerodata
 +zeropad
 +zipfile
 +zipvfs
 +zplan
 +zulu
 +zzzz
 +zzzzyyyy