]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge trunk enhancements into the reuse-schema branch. reuse-schema
authordrh <>
Wed, 22 Apr 2026 20:02:56 +0000 (20:02 +0000)
committerdrh <>
Wed, 22 Apr 2026 20:02:56 +0000 (20:02 +0000)
FossilOrigin-Name: 578bfc438ad81692d720019060a59302ce448926f3720d31375dce050a4a7af3

16 files changed:
1  2 
Makefile.msc
main.mk
manifest
manifest.uuid
src/alter.c
src/main.c
src/pager.c
src/shell.c.in
src/sqlite.h.in
src/sqliteInt.h
src/vdbe.c
src/vdbeaux.c
src/where.c
test/shell1.test
test/testrunner.tcl
test/testrunner_data.tcl

diff --cc Makefile.msc
Simple merge
diff --cc main.mk
Simple merge
diff --cc manifest
index 0a85e249f33a6663e914c5d41dad9f69a6f312bb,eed413f51ad506bd7cd55468e8be3f0b819f9945..7be9cb05cecd3385e4fa3edd8890067ccd24881e
+++ b/manifest
@@@ -1,14 -1,14 +1,14 @@@
- C Version\s3.53.0\sfor\sthe\sreuse-schema\sbranch
- D 2026-04-09T12:48:24.853
 -C When\supdating\sindexes\son\sexpressions,\somit\sthe\supdate\sif\sthe\snew\sindexed\svalues\sare\sthe\ssame\sas\sthe\sold.
 -D 2026-04-22T19:38:04.412
++C Merge\strunk\senhancements\sinto\sthe\sreuse-schema\sbranch.
++D 2026-04-22T20:02:56.390
  F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md 6bc480fc673fb4acbc4094e77edb326267dd460162d7723c7f30bee2d3d9e97d
  F Makefile.in 5fda086f33b144da08119255da1d2557f983d0764a13707f05acf0159fd89ba5
  F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0
- F Makefile.msc a797f8ce49e50288fb4bd5355f1db6f86192638ae646070759dc7c0ed5e24cd9
- F README.md f49fbd826941842e348242f3ab62f240c985ceafdf8fbe576abf4eb75317468c
- F VERSION 31435e19ded2aae3c1c67dacf06a995a37fd1b253baec5899b78d64cd29db4f7
 -F Makefile.msc 6f4294982758b5eeeac740c1a263186c3fcb9ba51d1b48261e321bcb37a41dbb
++F Makefile.msc be7092c21713cdbfc6f03d8812e421cb00a9e9d82fa96867e956d6482a23e4ae
+ F README.md e4f1a030f813c2fafc898c66d4f10bff2c75eb1a8f504eb9ad9a5ef80e3ff814
+ F VERSION 99cf3be5f13d091183e4314b7fc2e0c0e69accfbe64608b45a313338bbdd7b62
  F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5
  F art/icon-80x90.gif 65509ce3e5f86a9cd64fe7fca2d23954199f31fe44c1e09e208c80fb83d87031
  F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
@@@ -60,11 -60,10 +60,11 @@@ F doc/compile-for-unix.md ebd6e461c71d4
  F doc/compile-for-windows.md 36601c95fa4070eebfe757684271d17a7c4a586912ba706d0b5e7817e1df54ad
  F doc/json-enhancements.md e356fc834781f1f1aa22ee300027a270b2c960122468499bf347bb123ce1ea4f
  F doc/jsonb.md acd77fc3a709f51242655ad7803510c886aa8304202fa9cf2abc5f5c4e9d7ae5
 -F doc/lemon.html 2085fda0a90a94fe92159a79dccc5c30d5a2313524887a31659cd66162f17233
 +F doc/lemon.html 299868172e422206d90e7798cb4436da4f5f8eb03167b1e84b4e5e3b12c7f527
  F doc/pager-invariants.txt 83aa3a4724b2d7970cc3f3461f0295c46d4fc19a835a5781cbb35cb52feb0577
 +F doc/shared_schema.md 759fc374709fccf4e5d2d0cbd05f8fedd38fb022bdd8a6c5b5f492684c7023b9
  F doc/tcl-extension-testing.md b88861804fc1eaf83249f8e206334189b61e150c360e1b80d0dcf91af82354f5
- F doc/testrunner.md daffa0ebbbe397a73537ae1b19b3124d489ce5f89dfe570781d1f1ef1809597c
+ F doc/testrunner.md 3589f7914d36adaff6d108566e09b2c6166887bea00580e5343f8b43615ffe12
  F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a
  F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56
  F doc/vfs-shm.txt 1a55f3f0e7b6745931b117ba5c9df3640d7a0536f532ef0052563100f4416f86
@@@ -572,10 -572,9 +573,10 @@@ F ext/session/sessionrowid.test 85187c2
  F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795
  F ext/session/sessionstat1.test 5e718d5888c0c49bbb33a7a4f816366db85f59f6a4f97544a806421b85dc2dec
  F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc
- F ext/session/sqlite3session.c d5c91d5b07d2b8e860f2782ae23f7b44ce929280e00645418ee84a0fd14525b2
+ F ext/session/sqlite3session.c 871d8a4574bfc682ca0816efb55c85c5fea048e0becf9367a4b271d6a4474b2f
  F ext/session/sqlite3session.h 063e7bf7be2fff874456f452a224b5b3013b25682d108933b0351c93a1279b9c
  F ext/session/test_session.c 2a02a68b522e2f3d4a64b2a4733af54b0f3e500769aeccd5bcbdd440103db069
 +F ext/wasm/EXPORTED_FUNCTIONS.fiddle 7fb73f7150ab79d83bb45a67d257553c905c78cd3d693101699243f36c5ae6c3
  F ext/wasm/GNUmakefile 68c750f173106d9d63f12c1edf1256c6f4bad9894b155da5db64322f4912de4b
  F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a
  F ext/wasm/README.md 2e87804e12c98f1d194b7a06162a88441d33bb443efcfe00dc6565a780d2f259
@@@ -584,8 -583,7 +585,8 @@@ F ext/wasm/SQLTester/SQLTester.mjs 6b3c
  F ext/wasm/SQLTester/SQLTester.run.mjs 57f2adb33f43f2784abbf8026c1bfd049d8013af1998e7dcb8b50c89ffc332e0
  F ext/wasm/SQLTester/index.html 64f3435084c7d6139b08d1f2a713828a73f68de2ae6a3112cbb5980d991ba06f
  F ext/wasm/SQLTester/touint8array.c 2d5ece04ec1393a6a60c4bf96385bda5e1a10ad49f3038b96460fc5e5aa7e536
- F ext/wasm/api/EXPORTED_FUNCTIONS.c-pp de2ce128aebeff9ef4161cff7a0ff0089be866121bcb8941ad44a38a65f1d436
+ F ext/wasm/api/EXPORTED_FUNCTIONS.c-pp 189935d0106bca86661efc991ab13e1d5d6e1f55ec34dc7b5055a99321397edd
 +F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api c5eaceabb9e759aaae7d3101a4a3e542f96ab2c99d89a80ce20ec18c23115f33
  F ext/wasm/api/README.md a905d5c6bfc3e2df875bd391d6d6b7b48d41b43bdee02ad115b47244781a7e81
  F ext/wasm/api/extern-post-js.c-pp.js 80accc53cc6ea1e61c721595f42ba95baa7c7ea636807d9507e69403301f8c54
  F ext/wasm/api/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41
@@@ -595,11 -593,11 +596,11 @@@ F ext/wasm/api/post-js-footer.js a50c1a
  F ext/wasm/api/post-js-header.js f35d2dcf1ab7f22a93d565f8e0b622a2934fc4e743edf3b708e4dd8140eeff55
  F ext/wasm/api/pre-js.c-pp.js d6bf82f83f60caa2904bddb95a29cb738b310f672d2796cdc5fe54463ab0d6cd
  F ext/wasm/api/sqlite3-api-glue.c-pp.js 31a721ada7225838a61310a9f3f797fa5275353f8e9b0ae769d85b437be061f5
- F ext/wasm/api/sqlite3-api-oo1.c-pp.js 5f203f5bb5d48a9e43ec51e791dc411c24dca825842bfb6a2d979d871bf8cfaf
- F ext/wasm/api/sqlite3-api-prologue.js 4336f02ac24ba58e68e355adb9da2804a1eef15a4aee961fa813c7d812a56b54
+ F ext/wasm/api/sqlite3-api-oo1.c-pp.js 35e4727010f15fd72ead0dd1eb4e3c2c9bb1cc60e51544cbdff1f7c14f209de2
+ F ext/wasm/api/sqlite3-api-prologue.js 29ca376ff5d5f189714cf10b2b93b136e91b06ec8616579b53b2af9dfb4796bf
  F ext/wasm/api/sqlite3-api-worker1.c-pp.js 1fa34e9b0e3b90a8898e4f700d7125e44c81877f182627bb8564b97989bc6e78
  F ext/wasm/api/sqlite3-license-version-header.js 98d90255a12d02214db634e041c8e7f2f133d9361a8ebf000ba9c9af4c6761cc
 -F ext/wasm/api/sqlite3-opfs-async-proxy.c-pp.js 25e31482b04293a33d7599f1459eb552b3eb36ca10c02c816122d3308bf80cb2
 +F ext/wasm/api/sqlite3-opfs-async-proxy.c-pp.js 3f85af55609f1452b29c476e59893cbeed417c59560795f50911318e916083b1
  F ext/wasm/api/sqlite3-vfs-helper.c-pp.js 3f828cc66758acb40e9c5b4dcfd87fd478a14c8fb7f0630264e6c7fa0e57515d
  F ext/wasm/api/sqlite3-vfs-kvvfs.c-pp.js 27fb135ba3b805b66c90a7333b56080345bf1db79335c3e48b6d01ad7aa09607
  F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js 1c742ed92c0515c8ef97d2b132feb01168252bfd847fed5d52607d8a42d23c6a
@@@ -624,9 -622,9 +625,9 @@@ F ext/wasm/demo-worker1-promiser.c-pp.j
  F ext/wasm/demo-worker1.html 2c178c1890a2beb5a5fecb1453e796d067a4b8d3d2a04d65ca2eb1ab2c68ef5d
  F ext/wasm/demo-worker1.js fdfa90aa9d6b402bfed802cf1595fe4da6cc834ac38c8ff854bf1ee01f5ff9bb
  F ext/wasm/example_extra_init.c 2347cd69d19d839ef4e5e77b7855103a7fe3ef2af86f2e8c95839afd8b05862f
- F ext/wasm/fiddle/fiddle-worker.js 6c72acac2d381480bc9f5eb538e3f2faf2c1f72dd4fcbd05d3b409818a9a8fd5
+ F ext/wasm/fiddle/fiddle-worker.js e45bfe9ce4cf0d0270ca0ed254af8deecc7d46c399db4a56fd1d0846d5e258ec
 +F ext/wasm/fiddle/fiddle.html 550c5aafce40bd218de9bf26192749f69f9b10bc379423ecd2e162bcef885c08
- F ext/wasm/fiddle/fiddle.js 84fd75967e0af8b69d3dd849818342227d0f81d13db92e0dcbc63649b31a4893
+ F ext/wasm/fiddle/fiddle.js 2a0984cc4a35e6889c0d84ee9bf853317d5545ddb3966dfb995bbe589f923c4c
 -F ext/wasm/fiddle/index.c-pp.html 5fd1f462864710d1b00d27fc4bc6190cb846cc865d7cc93b99644423f2c4cc84
  F ext/wasm/index-dist.html db23748044e286773f2768eec287669501703b5d5f72755e8db73607dc54d290
  F ext/wasm/index.html 5bf6cf1b0a3c8b9f5f54d77f2219d7ae87a15162055ce308109c49b1dcab4239
  F ext/wasm/jaccwabyt/jaccwabyt.js 4e2b797dc170851c9c530c3567679f4aa509eec0fab73b466d945b00b356574b
@@@ -659,7 -657,7 +660,7 @@@ F ext/wasm/tests/opfs/sahpool/index.htm
  F ext/wasm/tests/opfs/sahpool/sahpool-pausing.js f264925cfc82155de38cecb3d204c36e0f6991460fff0cb7c15079454679a4e2
  F ext/wasm/tests/opfs/sahpool/sahpool-worker.js bd25a43fc2ab2d1bafd8f2854ad3943ef673f7c3be03e95ecf1612ff6e8e2a61
  F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
- F main.mk ba3c578563b40fc18b0a6b9ef86e695b7738822c1b0b49a25c13f52863bb6e85
 -F main.mk d9cbbee974a8cd3999430130378878bd87b8c5754397a69ec322f4c9cc3e4e41
++F main.mk 1a78e8173c8be50085f7aa148b98544d0f40b55f368c6e6fff7f30870c6ab43a
  F make.bat a136fd0b1c93e89854a86d5f4edcf0386d211e5d5ec2434480f6eea436c7420c
  F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
  F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
@@@ -670,20 -668,20 +671,20 @@@ F mptest/multiwrite01.test dab5c5f8f953
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 1b9c24374a85dfc7eb8fa7c4266ee0db4f9609cceecfc5481cd8307e5af04366
  F sqlite3.pc.in e6dee284fba59ef500092fdc1843df3be8433323a3733c91da96690a50a5b398
- F src/alter.c 24a02bb61b9e5c7776a1980501b9782ae12affb25d283bbdeebacf07bbf109a8
 -F src/alter.c 7d7ddbdc189f0e0c686e32ee170abdddc95c11f2089e40df4ffcee88f5334826
 -F src/analyze.c 03bcfc083fc0cccaa9ded93604e1d4244ea245c17285d463ef6a60425fcb247d
 -F src/attach.c 7cf07d4fa42b9fc8662237c60c40b730326c30aa90ae5fffc0b18b2d726ebf61
++F src/alter.c c9d79e9be79931cf56d79facd1be80bbaf07399b2cc553bce05a249f6c327cf4
 +F src/analyze.c cad85c559c13633e249023f081202f2dd22355cf00d8f384bc22528810e8f593
 +F src/attach.c 4e1f68b6188268270fcab10ac24f7832af52ae4ba5cdabf42616375dfd42652c
  F src/auth.c ebec42df26b34a62b6750d30d9c2c03554a1c522020182476f7729a439fef04f
  F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
  F src/bitvec.c e242d4496774dfc88fa278177dd23b607dce369ccafb3f61b41638eea2c9b399
  F src/btmutex.c 30dada73a819a1ef5b7583786370dce1842e12e1ad941e4d05ac29695528daea
- F src/btree.c fb350c445316c1cc0529703c0b76450770a1de0ab0440641a56b19f05d6fefbe
+ F src/btree.c 216ffbe197e330118a2999adc7d3f09b0e2eeb163df8746ba9a2b27fed3d4335
  F src/btree.h e823c46d87f63d904d735a24b76146d19f51f04445ea561f71cc3382fd1307f0
  F src/btreeInt.h 9c0f9ea5c9b5f4dcaea18111d43efe95f2ac276cd86d770dce10fd99ccc93886
 -F src/build.c 8581de0af3b6c448f5d64e2d18a91ac1e7057b3bcb8b8827e1240f80d87486a4
 -F src/callback.c 3605bbf02bd7ed46c79cd48346db4a32fc51d67624400539c0532f4eead804ad
 +F src/build.c 113bfd3f7614b29a2455192050e3981d26800625b7f245c9d6c7611ae1497a45
 +F src/callback.c 9942c75ac062c57e69072fe350fcba9e28699c36ed8cf63cf850ca2378293269
  F src/carray.c 3efe3982d5fb323334c29328a4e189ccaef6b95612a6084ad5fa124fd5db1179
- F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
+ F src/complete.c f216b970ce99c5a657556cf1f17e7ddd494515d3beb63df426bf59ff43bd3d9a
  F src/date.c 61e92f1f7e2e88e1cd91e91dc69eb2b2854e7877254470f9fabd776bfac922b8
  F src/dbpage.c c9ea81c11727f27e02874611e92773e68e2a90a875ef2404b084564c235fd91f
  F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c
@@@ -697,11 -695,11 +698,11 @@@ F src/hash.c 03c8c0f4be9e8bcb6de65aa26d
  F src/hash.h 46b92795a95bfefb210f52f0c316e9d7cdbcdd7e7fcfb0d8be796d3a5767cddf
  F src/hwtime.h 21c2cf1f736e7b97502c3674d0c386db3f06870d6f10d0cf8174e2a4b8cb726e
  F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
- F src/insert.c dfd311b0ac2d4f6359e62013db67799757f4d2cc56cca5c10f4888acfbbfa3fd
+ F src/insert.c 77aa90e7ddbebf131c5de504854b5a61c25b11d53580649fb375b23752793651
  F src/json.c 5027b856cd9b621dc9ba66b211e21a440ccdc63cefdefb44c51e7d3ac550d1a4
  F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
- F src/loadext.c 56a542244fbefc739a2ef57fac007c16b2aefdb4377f584e9547db2ce3e071f9
- F src/main.c 2b8335837a1c778f4976a3b3242f74205bdda0b5100c43b6a882fd3b147dd85e
+ F src/loadext.c 78d5b06f18996ffa1203129b28fea043f63a87a4117539678f1d761c30b4ff65
 -F src/main.c 6180079f53ccdd784df2eddc3751f49ea7153c5959bee792b19ad9f4bdbcf437
++F src/main.c e007f0b39137b3e4eeef125b5d6302a8c14a571d5ac12c5b3609c09a517b77e9
  F src/malloc.c 422f7e0498e1c9ef967f06283b6f2c0b16db6b905d8e06f6dbc8baaa3e4e6c5a
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2
@@@ -722,31 -720,31 +723,31 @@@ F src/os.h 1ff5ae51d339d0e30d8a9d814f4b
  F src/os_common.h 6c0eb8dd40ef3e12fe585a13e709710267a258e2c8dd1c40b1948a1d14582e06
  F src/os_kv.c e7d96727db5b67e39d590a68cc61c86daf4c093c36c011a09ebfb521182ec28d
  F src/os_setup.h 8efc64eda6a6c2f221387eefc2e7e45fd5a3d5c8337a7a83519ba4fbd2957ae2
- F src/os_unix.c fa5e09b4df35ad845440cad67b86908cfe1fd4c28c51915f82e23633d1992bf4
+ F src/os_unix.c a07dce662f6c4e18098f6faa9f7ec7cf311f56ee9151bed2aad4dcd55852c9e2
 -F src/os_win.c 0d553b6e8b92c8eb85e7f1b4a8036fe8638c8b32c9ad8d9d72a861c10f81b4c5
 +F src/os_win.c 8262eab29c5b5e6ac204eb6e9639bb1c4d02983a38584399f73b127b0fbbf0ba
  F src/os_win.h 5e168adf482484327195d10f9c3bce3520f598e04e07ffe62c9c5a8067c1037b
- F src/pager.c 446fd99bd2f05eb8dc1430ae183c7d778474fb126e85aa29ff667343ae6e12ba
 -F src/pager.c fbec9063ea139dfa5d94ce540671752b89f8e8dc38f8a1f614bab1aa04a2dd40
++F src/pager.c d47ef44a7e5ad1da936f19f7f9a0f8f17e5dca997758e27e905d50bc65754d36
  F src/pager.h 6137149346e6c8a3ddc1eeb40aee46381e9bc8b0fcc6dda8a1efde993c2275b8
- F src/parse.y 3b784d6083380a950e3b1b32ce5ddd303e8c7c209d8ab788df2c62aaf9ee8eb3
+ F src/parse.y 8c8003a932f6f98ac612fd239d3cdc7ca64480f61ca5f4f680c4fe69b1bc68c9
  F src/pcache.c 588cc3c5ccaaadde689ed35ce5c5c891a1f7b1f4d1f56f6cf0143b74d8ee6484
  F src/pcache.h 092b758d2c5e4dabb30eae46d8dfad77c0f70b16bf3ff1943f7a232b0fe0d4ba
  F src/pcache1.c 131ca0daf4e66b4608d2945ae76d6ed90de3f60539afbd5ef9ec65667a5f2fcd
 -F src/pragma.c 789ef67117b74b5be0a2db6681f7f0c55e6913791b9da309aefd280de2c8a74d
 -F src/prepare.c f6a6e28a281bd1d1da12f47d370a81af46159b40f73bf7fa0b276b664f9c8b7d
 +F src/pragma.c 16bfe475bb6bcc14eb9dbb2847fec6383fb7361fc4cd23b390e3e10daf089bd7
 +F src/prepare.c 40312476d751aa775fc7de9620c3b6fe42b268f3f49f832eb8c27588a7dd9cbe
- F src/printf.c 41fb76fcb5ed7e16aaddc659d3b23891abebea45549fe125fc2e6ec380cc7175
+ F src/printf.c 50be92de0725e88c8b38978775ab46f9b42d74e21f65045c3423503173eb0566
  F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
  F src/resolve.c 928ff887f2a7c64275182060d94d06fdddbe32226c569781cf7e7edc6f58d7fd
  F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
- F src/select.c ffe199f025a0dd74670d2a77232bdea364a4d7b36f32c64a6572d39ba6a11576
- F src/shell.c.in 71f4665701667a163d481d0db12d6755a6ae6373ba817d27260b3e128f0697fd
- F src/sqlite.h.in 456716f6eda68f104c7ed6369a1d25632aa12c63c90e5ec8746a7d0bdb06c62c
+ F src/select.c 4c05cde130f26991b7411d8c6809e0630625e18078742c963a047b4b9cc01d49
 -F src/shell.c.in 68ce578f06cf2fcf6fa17867f9a35a139be1c39fd019be3ab1a7b9e6732e78ea
 -F src/sqlite.h.in 39d2e09114d2bdb7afd998f4a469c8f8cd065f8093835a7d0422f260fc78fb4f
++F src/shell.c.in fc532c5deb1c94ee1f0617a90987b1dea91cccb2e56bb210aca907e9b2a809d5
++F src/sqlite.h.in 583511a8b5e6a8de6c992c567a2dbbb104b6eded0a6fd0f17541fd33a124d269
  F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
- F src/sqlite3ext.h 1b7a0ee438bb5c2896d0609c537e917d8057b3340f6ad004d2de44f03e3d3cca
- F src/sqliteInt.h 178f65cf8ec0aa05915b69bce3878bb4a47d2f69530b40a6f84d1f222096cc3e
+ F src/sqlite3ext.h 9788c301f95370fa30e808861f1d2e6f022a816ddbe2a4f67486784c1b31db2e
 -F src/sqliteInt.h 1e9df4f7f0a754cebbc5e1494ff74b54bf510046b800db1d5382393972f53499
++F src/sqliteInt.h 54eb771a8587faab762368641cb8b08006c9dbcbff49e2d2ef8c136511f63827
  F src/sqliteLimit.h c70656b67ab5b96741a8f1c812bdd80c81f2b1c1e443d0cc3ea8c33bb1f1a092
 -F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592
 +F src/status.c 426bbfac49c3501675d3c2db63834a29d78e14587695e81327f86689d7eb1593
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 -F src/tclsqlite.c 7401c73c917a4d1b380c896a324c8d8eb533a999559d9e339d479596553bebfd
 +F src/tclsqlite.c 2a8c7f54fc667a4d4aa71c93bf547b7ca05d33bd3f96394ec80462c25a7bb1ed
  F src/tclsqlite.h 614b3780a62522bc9f8f2b9fb22689e8009958e7aa77e572d0f3149050af348a
  F src/test1.c 3e3b013f59ffcb57dce00c90d55907072d71d4e970cb0a590cb261efe11bae9c
  F src/test2.c 2b9ab96bba63a1c369d5769390475259ad210f144a877805f2e32e563f9e93c1
@@@ -803,14 -800,14 +804,14 @@@ F src/trigger.c 5497958d682b6269924b19c
  F src/update.c 3e5e7ff66fa19ebe4d1b113d480639a24cc1175adbefabbd1a948a07f28e37cf
  F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1
  F src/utf.c 7267c3fb9e2467020507601af3354c2446c61f444387e094c779dccd5ca62165
- F src/util.c 4f0abc15f63829e12cdfeeb490faf25ac65894b0bcc20d660e3f3757b8e2360b
+ F src/util.c 377af5da226519a0f374dc3c6d408c9d303a92943e3ae5986432c7d52e6679a2
 -F src/vacuum.c d3d35d8ae893d419ade5fa196d761a83bddcbb62137a1a157ae751ef38b26e82
 -F src/vdbe.c 981719899b473de0c71b3559b7a313f280e1f4c1abf4eecded29867037d9cd05
 -F src/vdbe.h 70e862ac8a11b590f8c1eaac17a0078429d42bc4ea3f757a9af0f451dd966a71
 +F src/vacuum.c 13b7c418199d6344e341eb6ae3759b7886f925c0f5920d30925dbe45fc933fbd
- F src/vdbe.c 3c797690341d92a6330088fa2212f8dd3c2329ceadc46ad0b36e6fcca4c853bf
++F src/vdbe.c 05add2272ecaf424a6da9d85a97edd61d0a3757c5a437f00e7f18d6b498f8412
 +F src/vdbe.h e085d965c37e722b60303ec9345f42bd14a89e0c5ae9760ce648f24d6848fd86
  F src/vdbeInt.h c31ba4dc8d280c2b1dc89c6fcee68f2555e3813ab34279552c20b964c0e338b1
  F src/vdbeapi.c 6cdcbe5c7afa754c998e73d2d5d2805556268362914b952811bdfb9c78a37cf1
- F src/vdbeaux.c fa683c4bdfa13c7b8f03b76698cce403589000d81114f1a0e77d6f7946f6bb48
 -F src/vdbeaux.c 8749b5f4f6d65e048ba78143d2dfc6898f65010ecef213891094e8166d1557da
 -F src/vdbeblob.c b3f0640db9642fbdc88bd6ebcc83d6009514cafc98f062f675f2c8d505d82692
++F src/vdbeaux.c 407f89847f4673c4a5b8710d9e8aa505e9d25723c40f4f7c94f4c3884b4b1613
 +F src/vdbeblob.c ad7e1db18b53074702ce267f48106c12fb1ac76b54b6eb3aefa4188411eb7c46
  F src/vdbemem.c efacb8f229422d2a4db0ed38e49b7f3897862a98d82b261aa3b43d7a2d98c6da
  F src/vdbesort.c b69220f4ea9ffea5fdef34d968c60305444eea909252a81933b54c296d9cca70
  F src/vdbetrace.c 49e689f751505839742f4a243a1a566e57d5c9eaf0d33bbaa26e2de3febf7b41
@@@ -820,7 -817,7 +821,7 @@@ F src/vxworks.h 9d18819c5235b49c2340a8a
  F src/wal.c 7340d4f9bb827bd349127cac6b2cf0cb7f76b9fda645f7b9b0bf7a6e0b1e2e7c
  F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
  F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
- F src/where.c cb57149141e5379b1f5c670d4f83adfe280d131ce0f748de1e6c558cddb80089
 -F src/where.c 7241a71725d8c193ddd9e69a299820fcd755943f3b5ac376a84b2716e2848401
++F src/where.c 0f5236c04ed1a7fe65b2e2c39e630e2182f56bd8a2e3ddf20e2256a4158609a2
  F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da
  F src/wherecode.c 676cb6cb02878643e817d9917a2d3522b83a3736b2cedd3dc8a01d7bb92af6c2
  F src/whereexpr.c e9f7185fba366d9365aa7a97329609e4cf00b3dd0400d069fbaa5187350c17c6
@@@ -1632,17 -1624,18 +1637,18 @@@ F test/sharedA.test 64bdd21216dda2c6a3b
  F test/sharedB.test 1a84863d7a2204e0d42f2e1606577c5e92e4473fa37ea0f5bdf829e4bf8ee707
  F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939
  F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
- F test/shell1.test 493512007f637d79a2529e30d5655d3cf9e2e7686451fe659bb8f5514864ad94
+ F test/shell-prompt.sql 43ed98433bfde83171b5d06c300525154f4cab9230570a326ca606aaef351db6
 -F test/shell1.test c84eff209f93ad17ccdf7e1634969fc8231684254edeb21d9b13d67c3179cdb5
++F test/shell1.test b46953a435db5d22ccd4ccdb63740478a4b1e348977b81aad2ae514fa29df0e4
  F test/shell2.test dc541d2681503e55466a24d35a4cbf8ca5b90b8fcdef37fc4db07373a67d31d3
 -F test/shell3.test 91efdd545097a61a1f72cf79c9ad5b49da080f3f10282eaf4c3c272cd1012db2
 +F test/shell3.test 05ee11f53272c76557406f9ac8b36eadea17fff967772db98bcb4067e342c849
  F test/shell4.test e25580a792b7b54560c3a76b6968bd8189261f38979fe28e6bc6312c5db280db
  F test/shell5.test a9cd2c8b62e125049ef500937674f47dd6787f0157ac0515aa554044a4dc3ea9
  F test/shell6.test e3b883b61d4916b6906678a35f9d19054861123ad91b856461e0a456273bdbb8
  F test/shell7.test 43fd8e511c533bab5232e95c7b4be93b243451709e89582600d4b6e67693d5c3
  F test/shell8.test 38c9e4d7e85d2a3ecfacaa9f6cda4f7a81bf4fffb5f3f37f9cd76827c6883192
 -F test/shell9.test c0e8871061a92151450b3332279a893b516fa73a6c46d4f51a0998407cbf8c89
 +F test/shell9.test ae86ac0ad4ed2c8be0950b7fb0f217bf43217e2d424fe5998191cfcaa93ef812
  F test/shellA.test 05cdaafa1f79913654487ce3aefa038d4106245d58f52e02faf506140a76d480
- F test/shellB.test 31df04230f6062069bb7c5d0e5c5439ca44448fa9da1a55aa461a4b872fe6bd9
+ F test/shellB.test 82622da7783c32ce931138bec3d5016e802d70361b9f9364b5d49c1dfc2f5af9
  F test/shmlock.test 9f1f729a7fe2c46c88b156af819ac9b72c0714ac6f7246638a73c5752b5fd13c
  F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3
  F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
@@@ -1725,10 -1718,10 +1731,10 @@@ F test/temptable2.test 76821347810ecc88
  F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
  F test/temptrigfault.tes fc5918e64f3867156fefe7cfca9d8e1f495134a5229b2b511b0dc11c07f2eab4
  F test/temptrigger.test a00f258ed8d21a0e8fd4f322f15e8cfb5cef2e43655670e07a753e3fb4769d61
 -F test/tester.tcl 2d943f60200e0a36bcd3f1f0baf181a751cd3604ef6b6bd4c8dc39b4e8a53116
 +F test/tester.tcl cb0cd9807cc34a3ea2849f049515ce2301fb838357ae671a12c8cc53a6ab2f91
  F test/testloadext.c 862b848783eaed9985fbce46c65cd214664376b549fae252b364d5d1ef350a27
- F test/testrunner.tcl 03492caf6d7785a3a2409f6359b45627afd2e8c695d105a4edca91c51d8a8fc4 x
- F test/testrunner_data.tcl f94a357fee02c29a0cba4e87357488c7e96551903d6515c2cc52eec6f19b44ca
 -F test/testrunner.tcl 1ad787b744277532521a2a9898ac66ee6a8363fbcc1211027db0dadad4ee3214 x
 -F test/testrunner_data.tcl dfcf192d274e965845189cc014ac89fff91dde92b6e2ac9e1262897fc21ee2e0
++F test/testrunner.tcl e154881c634995424065d7ed5adc5e2092fa54902ff1f2dec8773333a5cbca36 x
++F test/testrunner_data.tcl dec9cee60fe74bf7e462261a99bef8b35ac9e1064c15dfcc2a3e65fb0ccabc6e
  F test/testrunner_estwork.tcl 81e2ae10238f50540f42fbf2d94913052a99bfb494b69e546506323f195dcff9
  F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
  F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502
@@@ -2142,8 -2134,8 +2148,8 @@@ F tool/genfkey.README e550911fa984c8255
  F tool/genfkey.test b6afd7b825d797a1e1274f519ab5695373552ecad5cd373530c63533638a5a4f
  F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce
  F tool/index_usage.c f62a0c701b2c7ff2f3e21d206f093c123f222dbf07136a10ffd1ca15a5c706c5
 -F tool/lemon.c 3fdc16b23f1ea0c91c049b518fc3f75c71843dbfe2b447fcb3cd92d9e4f219f8
 +F tool/lemon.c 3dac4b8daf2781d072d44bfa72f8bc3bb0ef1dab3957dc32b8398330ad809478
- F tool/lempar.c b57e1780bf8098dd4a9a5bba537f994276ea825a420f6165153e5894dc2dfb07
+ F tool/lempar.c a8de510526f9cbfb45ff0aca9d16f1c828600246f198c1c7d49c8d5492142ffa
  F tool/libvers.c caafc3b689638a1d88d44bc5f526c2278760d9b9
  F tool/loadfts.c 63412f9790e5e8538fbde0b4f6db154aaaf80f7a10a01e3c94d14b773a8dd5a6
  F tool/logest.c c34e5944318415de513d29a6098df247a9618c96d83c38d4abd88641fe46e669
@@@ -2211,8 -2203,9 +2217,8 @@@ F tool/warnings-clang.sh bbf6a1e685e534
  F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
  F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
  F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
- P b1b6002eda43d948dc6bb955d2d93f6155c8da731158bac3a5fbd70ddf7d838b 4525003a53a7fc63ca75c59b22c79608659ca12f0131f52c18637f829977f20b
- R b3a75341a328e8ceb96a124533b0bfe2
 -P 5e1b5ff1c170e94956bf77bd38afcad6369cb9f9333864711212af045281ad0e 685be705a2a69e79de0d581e5bbe9d942133817342121786a551d95d59a4af6c
 -R d93ff546001d5b8e63f19e558bfbb1fe
 -T +closed 685be705a2a69e79de0d581e5bbe9d942133817342121786a551d95d59a4af6c
 -U dan
 -Z 875a2795405bb6857eccd218f82c65cb
++P 0237eddad10f8c2370642cd09b178bd29c31a7608ce1e9abe35a7aed689b4ef0 f0fc4e5ec334da3a1db8b0334e23d1911874c96675690da94210b2afb45f7307
++R 8be127bbca616f04611b710804ec0371
 +U drh
- Z 93210d1e9ca4c1abff4339268ecc460c
++Z 0fbb05e570bec964aa1dbae4a7dc7147
  # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index e74f56285a86ee1197f1f8b6e8ec86a52c32f695,eb677780189639ff23b574c5a40ac0e010e4c960..282425e5047419fc56d58fbdda8511e902c21cda
@@@ -1,1 -1,1 +1,1 @@@
- 0237eddad10f8c2370642cd09b178bd29c31a7608ce1e9abe35a7aed689b4ef0
 -f0fc4e5ec334da3a1db8b0334e23d1911874c96675690da94210b2afb45f7307
++578bfc438ad81692d720019060a59302ce448926f3720d31375dce050a4a7af3
diff --cc src/alter.c
Simple merge
diff --cc src/main.c
Simple merge
diff --cc src/pager.c
index 3ed7e316c843fb7b1478cb90dccb22fbf40e1051,ded0439c477d2dcf7e885babc2db2f6fffc9547b..23957103e3c44af509bfaf5e5f902b646ff0eef1
@@@ -5100,118 -5100,9 +5100,118 @@@ sqlite3_file *sqlite3_database_file_obj
  }
  
  
 +#ifdef SQLITE_ENABLE_READONLY_WALJOURNAL
 +/*
 +** This is used by a read-only database connection in cases where there
 +** is a hot journal which cannot be rolled back, but the hot journal was
 +** created by an aborted "PRAGMA journal_mode = wal" statement. In this
 +** case we can proceed, but must set bytes 18 and 19 of page 1 of the
 +** db file to indicate that this is not a wal mode database.
 +*/
 +static int getPageOneNoWal(
 +  Pager *pPager,      /* The pager open on the database file */
 +  Pgno pgno,          /* Page number to fetch */
 +  DbPage **ppPage,    /* Write a pointer to the page here */
 +  int flags           /* PAGER_GET_XXX flags */
 +){
 +  int rc = SQLITE_OK;
 +
 +  assert( pgno==1 );
 +  assert( pPager->readOnly );
 +  assert( !isOpen(pPager->jfd) );
 +
 +  rc = getPageNormal(pPager, pgno, ppPage, flags);
 +  if( rc==SQLITE_OK ){
 +    int f = SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_JOURNAL;
 +    u8 *aPg = (u8*)(*ppPage)->pData;
 +    u8 aHdr[28];
 +    rc = sqlite3OsOpen(pPager->pVfs, pPager->zJournal, pPager->jfd, f, &f);
 +    if( rc==SQLITE_OK ){
 +      rc = sqlite3OsRead(pPager->jfd, (void*)aHdr, sizeof(aHdr), 0);
 +    }
 +    if( rc==SQLITE_OK ){
 +      u32 off = sqlite3Get4byte(&aHdr[20]);
 +      rc = sqlite3OsRead(pPager->jfd, (void*)aPg, pPager->pageSize, off+4);
 +    }
 +    sqlite3OsClose(pPager->jfd);
 +  }
 +  setGetterMethod(pPager);
 +  return rc;
 +}
 +#endif /* SQLITE_ENABLE_READONLY_WALJOURNAL */
 +
 +/*
 +** This function is called after a potentially hot journal has been opened
 +** to inspect its contents and determine whether or not it really is a
 +** hot journal. The journal is not a hot journal in two cases:
 +**
 +**   * The first byte of the journal is 0x00, or, 
 +**
 +**   * The connection is opened read-only, the journal consist of page 1
 +**     of the db only, and the contents of page 1 differs from the contents
 +**     of the db only in bytes 18 and 19 (the wal mode setting).
 +**
 +** If the journal is not hot, then output variable (*pbHot) is set to 0
 +** before this function returns. Otherwise, if the journal is hot, (*pbHot)
 +** is set to 1.
 +*/
 +static int checkHotJournal(Pager *pPager, int *pbHot){
 +  char aHdr[28];
 +  int rc = SQLITE_OK;
 +
 +  *pbHot = 1;
 +  rc = sqlite3OsRead(pPager->jfd, (void *)aHdr, sizeof(aHdr), 0);
 +  if( rc==SQLITE_OK ){
 +    if( aHdr[0]==0 ){
 +      *pbHot = 0;
 +    }
 +#ifdef SQLITE_ENABLE_READONLY_WALJOURNAL
 +    else if( pPager->readOnly ){
 +      u32 nPg = sqlite3Get4byte(&aHdr[8]);
 +      u32 off = sqlite3Get4byte(&aHdr[20]);
 +      u32 pgsz = sqlite3Get4byte(&aHdr[24]);
 +
 +      if( nPg==0xFFFFFFFF ){
 +        i64 sz = 0;
 +        rc = sqlite3OsFileSize(pPager->jfd, &sz);
 +        nPg = ((sz-off) / pgsz);
 +      }
 +      if( nPg==1 ){
 +        u8 *a1 = 0;
 +        a1 = sqlite3_malloc(pgsz*2);
 +        if( a1==0 ){
 +          rc = SQLITE_NOMEM_BKPT;
 +        }else{
 +          u8 *a2 = &a1[pgsz];
 +          rc = sqlite3OsRead(pPager->jfd, a1, pgsz, off+4);
 +          if( rc==SQLITE_OK ){
 +            rc = sqlite3OsRead(pPager->fd, a2, pgsz, 0);
 +            memcpy(&a2[18], &a1[18], 2);
 +            memcpy(&a2[24], &a1[24], 4);
 +            memcpy(&a2[92], &a1[92], 8);
 +#ifdef SQLITE_ENABLE_ZIPVFS
 +            memcpy(&a2[176], &a1[176], 4);
 +#endif
 +          }
 +          if( rc==SQLITE_OK && memcmp(a1, a2, pgsz)==0 ){
 +            *pbHot = 0;
 +            pPager->xGet = getPageOneNoWal;
 +          }
 +          sqlite3_free(a1);
 +        }
 +      }
 +    }
 +#endif /* SQLITE_ENABLE_READONLY_WALJOURNAL */
 +  }
 +  if( rc==SQLITE_IOERR_SHORT_READ ){
 +    rc = SQLITE_OK;
 +  }
 +  return rc;
 +}
 +
  /*
- ** This function is called after transitioning from PAGER_UNLOCK to
- ** PAGER_SHARED state. It tests if there is a hot journal present in
+ ** This function is called while transitioning from PAGER_OPEN to a
+ ** higher state. It tests if there is a hot journal present in
  ** the file-system for the given pager. A hot journal is one that
  ** needs to be played back. According to this function, a hot-journal
  ** file exists if the following criteria are met:
diff --cc src/shell.c.in
Simple merge
diff --cc src/sqlite.h.in
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/where.c
Simple merge
Simple merge
Simple merge
Simple merge