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 \
- 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
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
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
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
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
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
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
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.
- 26c1bb4bd9e9f56613c3aa87407a7f562fd4ebde5bfd6dece02078001d9a45f8
-9a12bac5d24c7a8364d2127fd12c3409a53ef83e408d10f344ddd311cdba98af
++8c291d99946eb32b20b743921202f9c7cfb716268ff526817b27adbb7942e40b
){
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 */
** 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.
** %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
** %% %
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;
** 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
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.
*/
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.
*/
/*
** 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
** 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
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;
/*
** 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){
** 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.
*/
%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.
//
**
** 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
** 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,
}
}
-- /* 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);
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 */
/* 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" };
*/
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;
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;
** [[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>
/*
** 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,
/* 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 */
/*
** 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
** 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.)
**
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);
** 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;
}
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
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
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);
/*
** 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 );
** 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
** 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
**
** 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 */
** 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
/*
}
}
#endif /*defined(SQLITE_TEST) || defined(SQLITE_DEBUG) */
-
-
++
/*
** Set or release locks on the WAL. Locks are either shared or exclusive.
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 );
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);
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 */
}
aIndex = &((ht_slot *)&p->aSegment[p->nSegment])[sLoc.iZero];
sLoc.iZero++;
-
-
++
for(j=0; j<nEntry; j++){
aIndex[j] = (ht_slot)j;
}
** 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.)
**
** 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 */
}
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));
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];
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 */
**
** (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
--- /dev/null
- 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