]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Upgrade this branch to 3.16 plus the various fixes that appeared after its
authordan <dan@noemail.net>
Mon, 9 Jan 2017 06:33:50 +0000 (06:33 +0000)
committerdan <dan@noemail.net>
Mon, 9 Jan 2017 06:33:50 +0000 (06:33 +0000)
release.

FossilOrigin-Name: d0e212d08f82dfb5e42a156b3e2bb03dd8e21258

18 files changed:
1  2 
main.mk
manifest
manifest.uuid
src/btree.c
src/btree.h
src/btreeInt.h
src/build.c
src/pager.c
src/pager.h
src/parse.y
src/sqliteInt.h
src/test_config.c
src/vacuum.c
src/vdbe.c
src/vdbeaux.c
src/wal.c
src/wal.h
tool/addopcodes.tcl

diff --cc main.mk
Simple merge
diff --cc manifest
index b94ce9afa9397a44e95d97812300dcdda3d5a8c6,67b3b622ee5a83681e4e2c71585151b5dce7bdfe..d78d211a93b2504ef7a8cdbb74c2768fa4928532
+++ b/manifest
@@@ -1,10 -1,10 +1,10 @@@
- C Merge\sversion\s3.14\splus\ssome\ssubsequent\spatches\s(including\sthe\spage-cache\nperformance\spatch)\sfrom\strunk.
- D 2016-08-11T19:12:25.266
- F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
 -C Ensure\sthat\s"PRAGMA\scase_sensitive_like"\sand\s"PRAGMA\sshrink_memory"\sset\sthe\nnumber\sof\soutput\scolumns\sto\s0\s(as\sthey\sare\sstatements\sthat\sreturn\sno\sdata).
 -D 2017-01-06T13:49:40.112
++C Upgrade\sthis\sbranch\sto\s3.16\splus\sthe\svarious\sfixes\sthat\sappeared\safter\sits\nrelease.
++D 2017-01-09T06:33:50.719
+ F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
  F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
- F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
+ F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
  F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
- F VERSION 25e2e333adeff5965520bc8db999c658898c972d
+ F VERSION cddd8d88dc8202afa0ebc96da61fc4acbd1e96a5
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
  F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
  F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
@@@ -309,7 -312,7 +312,7 @@@ F ext/userauth/userauth.c 5fa3bdb492f48
  F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
  F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
  F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
- F main.mk 67e7995f96dcb48ec0ece72901ba2cd2a2b50437
 -F main.mk 2cf5f0362c5687fd8e912c3a327b49a2e8ba0f9b
++F main.mk a85772b3c9f3ba0a0f85e9f1c4e1151c5779c860
  F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
  F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
  F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
@@@ -321,36 -324,37 +324,37 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c cc28ab933ae615b22add0d609794ffb6596b42ea
- F src/analyze.c 37fedc80ac966ce1745811746e68e4d8fa64c7fe
- F src/attach.c 771153bd1f4ab0b97a44a13dde2c7e5e1efeba22
- F src/auth.c 5c8e0f37f785f935f589496801edd19840485853
- F src/backup.c 17cd25a36d49330df2bacd2cadf2a61f3b525976
- F src/bitvec.c 3ee4c8b2c94ed3a7377256e18199e6ff5cf33f63
- F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
- F src/btree.c 8872dcc869d648ccc0b95834fc7e81cf49c456f7
- F src/btree.h c23154635a447f37308865ce09b5d1dd2e9deef0
- F src/btreeInt.h ca40607c2c9d4b4b7ded98e3d707b15c2f17f1bf
- F src/build.c e3b41d597d4f6f24cee6bde1e64c648b1c3983ca
+ F src/alter.c 3b23977620ce9662ac54443f65b87ba996e36121
+ F src/analyze.c 3c4a63ff7a55faefecf6eb1589932fdbc06b2415
+ F src/attach.c 8c476f8bd5d2afe11d925f890d30e527e5b0ce43
+ F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792
+ F src/backup.c faf17e60b43233c214aae6a8179d24503a61e83b
+ F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
+ F src/btmutex.c 0e9ce2d56159b89b9bc8e197e023ee11e39ff8ca
 -F src/btree.c d2c100618784bd89c089fcef03ff6e789768ecae
 -F src/btree.h 2349a588abcd7e0c04f984e15c5c777b61637583
 -F src/btreeInt.h 10c4b77c2fb399580babbcc7cf652ac10dba796e
 -F src/build.c 9e799f1edd910dfa8a0bc29bd390d35d310596af
++F src/btree.c 5e5bf5079aae45b91e71eb087f3eddd28deafafe
++F src/btree.h 9306cfe42eed20cf2d0e407172704f5193af26cc
++F src/btreeInt.h bade42398d4dcadd2263c6d17886e812e2471e87
++F src/build.c efef69bbc7d0729a9b1e6d71f1047d0c5e1cdb5b
  F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
  F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
- F src/ctime.c e77f3dc297b4b65c96da78b4ae4272fdfae863d7
- F src/date.c 95c9a8d00767e7221a8e9a31f4e913fc8029bf6b
- F src/dbstat.c 4f6f7f52b49beb9636ffbd517cfe44a402ba4ad0
- F src/delete.c 4aba4214a377ce8ddde2d2e609777bcc8235200f
- F src/expr.c 9c5eca8602f6c496e8d4eefefe2aae3d831dd510
- F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
- F src/fkey.c bc4145347595b7770f9a598cff1c848302cf5413
- F src/func.c 29cc9acb170ec1387b9f63eb52cd85f8de96c771
- F src/global.c c45ea22aff29334f6a9ec549235ac3357c970015
- F src/hash.c 55b5fb474100cee0b901edaf203e26c970940f36
+ F src/ctime.c 9f2296a4e5d26ebf0e0d95a0af4628f1ea694e7a
+ F src/date.c dc3f1391d9297f8c748132813aaffcb117090d6e
+ F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
+ F src/delete.c c8bc10d145c9666a34ae906250326fdaa8d58fa5
+ F src/expr.c f06f41e5e5daca10fb090e70a2502dcc0dbc992b
+ F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
+ F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae
+ F src/func.c c67273e1ec08abbdcc14c189892a3ff6eeece86b
+ F src/global.c 4a34512d82fc5aa13c802db06bcfff5e1d3de955
+ F src/hash.c 63d0ee752a3b92d4695b2b1f5259c4621b2cfebd
  F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4
  F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
- F src/insert.c 8f4e9fcbd8e95e85f15647ba8b413b18d556ec2b
+ F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
+ F src/insert.c 7af46a3be2656f5e13791464625d93d6b07b8612
  F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e
- F src/loadext.c dd7a2b77902cc66c22555aef02e1a682554b7aec
- F src/main.c 16c1b2114eae8804caf3a8de8cb47bf2c6d83ad3
- F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec
+ F src/loadext.c 5d6642d141c07d366e43d359e94ec9de47add41d
+ F src/main.c e207b81542d13b9f13d61e78ca441f9781f055b0
+ F src/malloc.c f3fad34cd570022abca558c573f1761fb09a8212
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b
  F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3
@@@ -368,28 -372,28 +372,28 @@@ F src/os.c add02933b1dce7a39a005b00a2f5
  F src/os.h 8e976e59eb4ca1c0fca6d35ee803e38951cb0343
  F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
  F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
- F src/os_unix.c be9ca0f901a2b6c1bc93dc338f4863675180c189
- F src/os_win.c 520f23475f1de530c435d30b67b7b15fe90874b0
+ F src/os_unix.c 30e2c43e4955db990e5b5a81e901f8aa74cc8820
+ F src/os_win.c cf90abd4e50d9f56d2c20ce8e005aff55d7bd8e9
  F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
- F src/pager.c bd4867fbbe328bbb5f0669d60e3c16ac03dd776f
- F src/pager.h 3ae6549ec75fe9f36b426a274788a31b1b2b2203
- F src/parse.y e87265f23548aed30b331fb86b4712e1c13c4673
- F src/pcache.c 5583c8ade4b05075a60ba953ef471d1c1a9c05df
 -F src/pager.c 9dc72d23eebbdf992bd69f2ab954d0d3a27c7340
 -F src/pager.h d1e944291030351f362a0a7da9b5c3e34e603e39
 -F src/parse.y 29153738a7322054359320eb00b5a4cd44389f20
++F src/pager.c e5b8c9a975e0c208bc8886bf83b8780b6e578ac5
++F src/pager.h 0105583b49a9126b9d137f98ec57caefc64f51d4
++F src/parse.y bb387a078f2f7f78e5362479bfef4a05b9fd40b8
+ F src/pcache.c 51070ec9b8251bbf9c6ea3d35fd96a458752929e
  F src/pcache.h 2cedcd8407eb23017d92790b112186886e179490
- F src/pcache1.c 4bb7a6a5300c67d0b033d25adb509c120c03e812
- F src/pragma.c c8b499756658cb8b82cfdbb5845c22cf11f297aa
- F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c
- F src/prepare.c 22df6171aec1d86904ed2ad30c2348a5748aa04e
- F src/printf.c a5f0ca08ddede803c241266abb46356ec748ded1
- F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
- F src/resolve.c 0392c6686586b1d4dac9a4106959f03ddd70e9aa
+ F src/pcache1.c e3967219b2a92b9edcb9324a4ba75009090d3953
+ F src/pragma.c 0e7a7c6f1c6fd8ff50c0fff65b8bb80174bc49c5
+ F src/pragma.h 61aa5389118594bebb28120a6720401aee34ce1a
+ F src/prepare.c b1140c3d0cf59bc85ace00ce363153041b424b7a
+ F src/printf.c ff10a9b9902cd2afe5f655f3013c6307d969b1fd
+ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
+ F src/resolve.c bb070cf5f23611c44ab7e4788803684e385fc3fb
  F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
- F src/select.c f3c6e9065fb34f6a23af27ec7f1f717ffbfc2ee4
- F src/shell.c 79dda477be6c96eba6e952a934957ad36f87acc7
- F src/sqlite.h.in 0f7580280d1b009b507d8beec1ff0f197ba0cc99
+ F src/select.c 4437d9d5d56b6ffdedabf394c7fe3a07ff521ce9
+ F src/shell.c 6095531aa900decdaa765e0f3993fba7153c92c1
+ F src/sqlite.h.in 29bda4bee01248a5650567d7a22fac39bad1b542
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
- F src/sqliteInt.h cf506e205f4b15618f5f0787e45d40fafc8ff42c
 -F src/sqliteInt.h 9fdfb8789b27a621f3401468bc1705c32308f877
++F src/sqliteInt.h 0081f4d95b49a1accc29e5c96cf35296d0f68098
  F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
  F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
  F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
@@@ -407,13 -411,14 +411,14 @@@ F src/test_async.c 195ab49da082053fdb0f
  F src/test_autoext.c 915d245e736652a219a907909bb6710f0d587871
  F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0
  F src/test_bestindex.c d23f80d334c59662af69191854c76b8d3d0c8c96
- F src/test_blob.c a0f7ad49a0c9d4b72f693fe2a71c58d7e507174d
+ F src/test_blob.c 6a4c7920d1d9c6cc0f7aa50c89c4f80016aeda83
  F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
- F src/test_config.c 0e3fbf51a9e56a50b80d52bba032e295fae76848
 -F src/test_config.c 83179ea845479b5be9a651d014649e3f2722a1fe
++F src/test_config.c f3b4459a0c65933783030fb4a05073571f8fa897
+ F src/test_delete.c 8499d4d323f2ec8e28301deb3d6ddd8eef8b8139
  F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e
  F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58
- F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c
- F src/test_func.c a2b4993da973b0ea60dd5d51a7066238ede8c329
+ F src/test_fs.c e16cbe68d3b107e00a907c20a9a02629870eb69b
+ F src/test_func.c a4fdab3363b436c1b12660e9362ce3f3782b7b5e
  F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d
  F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664
  F src/test_intarray.c 988fc61cb0ff539f4172c0d95f15287c92516f64
@@@ -439,35 -444,35 +444,35 @@@ F src/test_tclvar.c df9fe1213c2634687a9
  F src/test_thread.c 911d15fb14e19c0c542bdc8aabf981c2f10a4858
  F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e
  F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
- F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61
- F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5
+ F src/test_windirent.c 600398db0198ca1c77ca183831bf456746b6f5c4
+ F src/test_windirent.h 7edc57e2faa727026dbd5d010dd0e2e665d5aa01
  F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
  F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
- F src/tokenize.c 78c8085bc7af1922aa687f0f4bbd716821330de5
- F src/treeview.c c56d6ddbed564efda746236b35bcbb8238daac4b
- F src/trigger.c e14840ee0c3e549e758ec9bf3e4146e166002280
- F src/update.c 4f05ea8cddfa367d045e03589756c02199e8f9bd
+ F src/tokenize.c 5c2f516876fc27fbd7753913f032f49eb89e83b5
+ F src/treeview.c 4e44ade3bfe59d82005039f72e09333ce2b4162c
+ F src/trigger.c c9f0810043b265724fdb1bdd466894f984dfc182
+ F src/update.c 1da7c462110bffed442a42884cb0d528c1db46d8
  F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
- F src/util.c 810ec3f22e2d1b62e66c30fe3621ebdedd23584d
- F src/vacuum.c ca88e6d3f5270533dea68e21008493b10023c214
- F src/vdbe.c 75556e9cd0fefd200515133af759205e48e9fb33
- F src/vdbe.h 67bc551f7faf04c33493892e4b378aada823ed10
- F src/vdbeInt.h c59381049af5c7751a83456c39b80d1a6fde1f9d
- F src/vdbeapi.c c3f6715a99995c11748ecad91d25e93fd9fc390b
- F src/vdbeaux.c e46568111862599cf475e7cdcbc1322551064906
- F src/vdbeblob.c 83d2d266383157b02e2b809350bb197e89d7895b
- F src/vdbemem.c 1ecaa5ee0caff07255f25d04e8dc88befb6f88d1
- F src/vdbesort.c 91fda3909326860382b0ca8aa251e609c6a9d62c
+ F src/util.c a88b0466fddf445ce752226d4698ca3faada620a
 -F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16
 -F src/vdbe.c 88bd6c32b333580d2661ac3afe33369757fb1522
++F src/vacuum.c ebcf45799c7a82729a496ef5b65c5d3b2715ef8e
++F src/vdbe.c 0254dc5bfb4d00b5ccc359332eeef26eb66dc5ee
+ F src/vdbe.h b0866e4191f096f1c987a84b042c3599bdf5423b
+ F src/vdbeInt.h 281cb70332dc8b593b8c7afe776f3a2ba7d4255e
+ F src/vdbeapi.c d6ebaa465f070eb1af8ba4e7b34583ece87bdd24
 -F src/vdbeaux.c 35c9a9908174e5a26c96d15e1f98214814a39147
++F src/vdbeaux.c d1e423b8a659705cbad5a502a219fba22f306048
+ F src/vdbeblob.c f4f98ea672b242f807c08c92c7faaa79e5091b65
+ F src/vdbemem.c 3b5a9a5b375458d3e12a50ae1aaa41eeec2175fd
+ F src/vdbesort.c eda25cb2d1727efca6f7862fea32b8aa33c0face
  F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834
- F src/vtab.c 6b3cfaff7e4397739d6b48511e777ca58c6d06d4
+ F src/vtab.c c4bbe0f870f52036553f8098aee0703997f0577a
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
- F src/wal.c 8605bf47b9d0c0202b14b36cadb4de22ab1d4f84
- F src/wal.h 520cb6942a265ac3d172e634266329a46e8c5b70
- F src/walker.c 2d2cc7fb0f320f7f415215d7247f3c584141ac09
- F src/where.c 5c9df42d50888be8274a5a0eb062eb0629869bd3
- F src/whereInt.h e5b939701a7ceffc5a3a8188a37f9746416ebcd0
- F src/wherecode.c 99707d11907c71d289ee9553d2d1a22f1fd8ba41
- F src/whereexpr.c 98ce9f3b8d92b6f741b9f3498f9619695739256e
 -F src/wal.c 40c543f0a2195d1b0dc88ef12142bea690009344
 -F src/wal.h 06b2a0b599cc0f53ea97f497cf8c6b758c999f71
++F src/wal.c 2858e71b30d521c80949fa10ed6b116367865594
++F src/wal.h 8659519a248ef0f33e575b20ab04211cebe1f430
+ F src/walker.c 91a6df7435827e41cff6bb7df50ea00934ee78b0
+ F src/where.c 6bbf9284f4f15a6fa48663d033870cc0d7f5ee66
+ F src/whereInt.h 2bcc3d176e6091cb8f50a30b65c006e88a73614d
+ F src/wherecode.c e04ac8f24c3ac8621df6c3be3ac8c7d4fa893745
+ F src/whereexpr.c 87ecdf24beba4498e4380b31c4131febb0a6ceaa
  F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
  F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
  F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
@@@ -528,10 -533,10 +533,11 @@@ F test/backup_malloc.test 0c9abdf74c51e
  F test/badutf.test d5360fc31f643d37a973ab0d8b4fb85799c3169f
  F test/badutf2.test f5bc7f2d280670ecd79b9cf4f0f1760c607fe51f
  F test/bc_common.tcl b5e42d80305be95697e6370e015af571e5333a1c
 +F test/bc_test1.c e0a092579552e066ed4ce7bcdaecfa69c4aacc8d
  F test/bestindex1.test 0cf1bd2d7b97d3a3a8c10736125274f64765c4ee
  F test/bestindex2.test 4a06b8922ab2fd09434870da8d1cdf525aaf7060
- F test/bestindex3.test dd5fa4f483cd0356549203c4522f8c9e21cb1fc0
+ F test/bestindex3.test 578b6a52dab819e63f28e3640e04b32c85aed320
+ F test/bestindex4.test 4cb5ff7dbaebadb87d366f51969271778423b455
  F test/between.test 34d375fb5ce1ae283ffe82b6b233e9f38e84fc6c
  F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
  F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
@@@ -1311,8 -1337,8 +1341,9 @@@ F test/triggerB.test 56780c031b454abac2
  F test/triggerC.test 302d8995f5ffe63bbc15053abb3ef7a39cf5a092
  F test/triggerD.test 8e7f3921a92a5797d472732108109e44575fa650
  F test/triggerE.test 15fa63f1097db1f83dd62d121616006978063d1f
+ F test/triggerF.test 55b1eb13433997faac3a4948c1d8252f6c8c636b
  F test/tt3_checkpoint.c 9e75cf7c1c364f52e1c47fd0f14c4340a9db0fe1
 +F test/tt3_core.c 8cd89ead95410f70e7fb02c79f1e040f9c5ad5cf
  F test/tt3_index.c 39eec10a35f57672225be4d182862152896dee4a
  F test/tt3_lookaside1.c 0377e202c3c2a50d688cb65ba203afeda6fafeb9
  F test/tt3_stress.c c57d804716165811d979d4a719e05baccd79277f
@@@ -1427,12 -1455,12 +1460,12 @@@ F test/wordcount.c 06efb84b7c48a4973c2c
  F test/zeroblob.test 3857870fe681b8185654414a9bccfde80b62a0fa
  F test/zerodamage.test e59a56443d6298ecf7435f618f0b27654f0c849e
  F tool/GetFile.cs a15e08acb5dd7539b75ba23501581d7c2b462cb5
- F tool/GetTclKit.bat 629d87562e0487c386db630033931d12d62e6372
+ F tool/GetTclKit.bat f94784e3bdc2f50c539266f5467cbf1f27612cb3
  F tool/Replace.cs 02c67258801c2fb5f63231e0ac0f220b4b36ba91
- F tool/addopcodes.tcl a776c2060ccb3367c470779eb2b91268a0a56fde
- F tool/build-all-msvc.bat 3e4e4043b53f1aede4308e0d2567bbd773614630 x
 -F tool/addopcodes.tcl 10c889c4a65ec6c5604e4a47306fa77ff57ae189
++F tool/addopcodes.tcl f2e9aba2c2c718624fa14059198456d9e519b925
+ F tool/build-all-msvc.bat 018c1b273458a90c8ba633c6f0c5654cfcb138bf x
  F tool/build-shell.sh 950f47c6174f1eea171319438b93ba67ff5bf367
- F tool/cg_anno.tcl 692ce4b8693d59e3a3de77ca97f4139ecfa641b0 x
+ F tool/cg_anno.tcl f95b0006c52cf7f0496b506343415b6ee3cdcdd3 x
  F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2
  F tool/dbhash.c a06228aa21ebc4e6ea8daa486601d938499238a5
  F tool/extract.c 054069d81b095fbdc189a6f5d4466e40380505e2
@@@ -1515,7 -1543,7 +1548,7 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 2c61b7ab1808d5576a21fea84c3f414db51abfa5 ed406d31ff54ee3de8db91690a966e5c561f8f94
- R 6144d43db42087097a2449fa8c85b94a
- U drh
- Z 204e3a86f7529a03a274de60935ccb45
 -P 609ac1c73f7c2b48a571c178a72383996a9538fe
 -R 812971df62a9791f0bfb0122470a2213
++P d9f8918c5b7b6c8540b3f433142e1b4aa4433885 6696cd1878be4bd44a24841b04163e52d847711e
++R 47f5758f699f0ce7270fcc21bb40e26e
+ U dan
 -Z ebefd6b7654323e8a23a6cf648753c0a
++Z 398299ab95e9ac138577a5fdad763428
diff --cc manifest.uuid
index 51761e50c242d3e34549ac41e93c61b1e67a09fd,865cc476499fa93e9c80ed5155bad9c8ae572c2c..a10503843d5c9d91c3f39cdbff4b7539cc98ddd6
@@@ -1,1 -1,1 +1,1 @@@
- d9f8918c5b7b6c8540b3f433142e1b4aa4433885
 -6696cd1878be4bd44a24841b04163e52d847711e
++d0e212d08f82dfb5e42a156b3e2bb03dd8e21258
diff --cc src/btree.c
Simple merge
diff --cc src/btree.h
Simple merge
diff --cc src/btreeInt.h
Simple merge
diff --cc src/build.c
Simple merge
diff --cc src/pager.c
index 240bbb5f63ab11271ca82c37e6c558530ac1d7a7,5813b4db476e7d6a85a9373a613c5e95fe9d1b57..a7e83242dd5862833763c1c0953cf51ff04af02f
@@@ -2083,10 -2064,11 +2114,10 @@@ static int pager_end_transaction(Pager 
    }
  #endif
  
 -  sqlite3BitvecDestroy(pPager->pInJournal);
 -  pPager->pInJournal = 0;
 +  pagerFreeBitvecs(pPager);
    pPager->nRec = 0;
    if( rc==SQLITE_OK ){
-     if( pagerFlushOnCommit(pPager, bCommit) ){
+     if( MEMDB || pagerFlushOnCommit(pPager, bCommit) ){
        sqlite3PcacheCleanAll(pPager->pPCache);
      }else{
        sqlite3PcacheClearWritable(pPager->pPCache);
@@@ -5380,105 -5364,27 +5429,37 @@@ static int getPageNormal
    int flags           /* PAGER_GET_XXX flags */
  ){
    int rc = SQLITE_OK;
-   PgHdr *pPg = 0;
-   u32 iFrame = 0;                 /* Frame to read from WAL file */
-   const int noContent = (flags & PAGER_GET_NOCONTENT);
-   /* It is acceptable to use a read-only (mmap) page for any page except
-   ** page 1 if there is no write-transaction open or the ACQUIRE_READONLY
-   ** flag was specified by the caller. And so long as the db is not a 
-   ** temporary or in-memory database.  */
-   const int bMmapOk = (pgno>1 && USEFETCH(pPager)
-    && (pPager->eState==PAGER_READER || (flags & PAGER_GET_READONLY))
- #ifdef SQLITE_HAS_CODEC
-    && pPager->xCodec==0
- #endif
-   );
+   PgHdr *pPg;
+   u8 noContent;                   /* True if PAGER_GET_NOCONTENT is set */
+   sqlite3_pcache_page *pBase;
  
-   /* Optimization note:  Adding the "pgno<=1" term before "pgno==0" here
-   ** allows the compiler optimizer to reuse the results of the "pgno>1"
-   ** test in the previous statement, and avoid testing pgno==0 in the
-   ** common case where pgno is large. */
-   if( pgno<=1 && pgno==0 ){
-     return SQLITE_CORRUPT_BKPT;
-   }
+   assert( pPager->errCode==SQLITE_OK );
    assert( pPager->eState>=PAGER_READER );
    assert( assert_pager_state(pPager) );
-   assert( noContent==0 || bMmapOk==0 );
    assert( pPager->hasHeldSharedLock==1 );
  
-   /* If the pager is in the error state, return an error immediately. 
-   ** Otherwise, request the page from the PCache layer. */
-   if( pPager->errCode!=SQLITE_OK ){
-     rc = pPager->errCode;
-   }else{
-     if( bMmapOk && pagerUseWal(pPager) ){
-       rc = sqlite3WalFindFrame(pPager->pWal, pgno, &iFrame);
-       if( rc!=SQLITE_OK ) goto pager_acquire_err;
-     }
-     if( bMmapOk && iFrame==0 ){
-       void *pData = 0;
-       rc = sqlite3OsFetch(pPager->fd, 
-           (i64)(pgno-1) * pPager->pageSize, pPager->pageSize, &pData
-       );
-       if( rc==SQLITE_OK && pData ){
-         if( pPager->eState>PAGER_READER || pPager->tempFile ){
-           pPg = sqlite3PagerLookup(pPager, pgno);
-         }
-         if( pPg==0 ){
-           rc = pagerAcquireMapPage(pPager, pgno, pData, &pPg);
-         }else{
-           sqlite3OsUnfetch(pPager->fd, (i64)(pgno-1)*pPager->pageSize, pData);
-         }
-         if( pPg ){
-           assert( rc==SQLITE_OK );
-           *ppPage = pPg;
-           return SQLITE_OK;
-         }
-       }
-       if( rc!=SQLITE_OK ){
-         goto pager_acquire_err;
-       }
-     }
-     {
-       sqlite3_pcache_page *pBase;
-       pBase = sqlite3PcacheFetch(pPager->pPCache, pgno, 3);
-       if( pBase==0 ){
-         rc = sqlite3PcacheFetchStress(pPager->pPCache, pgno, &pBase);
-         if( rc!=SQLITE_OK ) goto pager_acquire_err;
-         if( pBase==0 ){
-           pPg = *ppPage = 0;
-           rc = SQLITE_NOMEM_BKPT;
-           goto pager_acquire_err;
-         }
-       }
-       pPg = *ppPage = sqlite3PcacheFetchFinish(pPager->pPCache, pgno, pBase);
-       assert( pPg!=0 );
-     }
-   }
-   if( rc!=SQLITE_OK ){
-     /* Either the call to sqlite3PcacheFetch() returned an error or the
-     ** pager was already in the error-state when this function was called.
-     ** Set pPg to 0 and jump to the exception handler.  */
 +#ifndef SQLITE_OMIT_CONCURRENT
 +  /* If this is an CONCURRENT transaction and the page being read was
 +  ** present in the database file when the transaction was opened,
 +  ** mark it as read in the pAllRead vector.  */
 +  if( pPager->pAllRead && pgno<=pPager->dbOrigSize ){
 +    rc = sqlite3BitvecSet(pPager->pAllRead, pgno);
 +    if( rc!=SQLITE_OK ) goto pager_acquire_err;
 +  }
 +#endif
 +
+   if( pgno==0 ) return SQLITE_CORRUPT_BKPT;
+   pBase = sqlite3PcacheFetch(pPager->pPCache, pgno, 3);
+   if( pBase==0 ){
      pPg = 0;
-     goto pager_acquire_err;
+     rc = sqlite3PcacheFetchStress(pPager->pPCache, pgno, &pBase);
+     if( rc!=SQLITE_OK ) goto pager_acquire_err;
+     if( pBase==0 ){
+       rc = SQLITE_NOMEM_BKPT;
+       goto pager_acquire_err;
+     }
    }
+   pPg = *ppPage = sqlite3PcacheFetchFinish(pPager->pPCache, pgno, pBase);
    assert( pPg==(*ppPage) );
    assert( pPg->pgno==pgno );
    assert( pPg->pPager==pPager || pPg->pPager==0 );
diff --cc src/pager.h
index 03f1bd5c84e9f1215e81c9c0b58bc23f91b18f1f,dd57f598bd75ef28d7ed4a05035276caf1bf48e1..60a844c713986d1f3e3f5162efd3893764652694
@@@ -172,9 -172,8 +172,9 @@@ int sqlite3PagerOpenSavepoint(Pager *pP
  int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint);
  int sqlite3PagerSharedLock(Pager *pPager);
  
 +
  #ifndef SQLITE_OMIT_WAL
-   int sqlite3PagerCheckpoint(Pager *pPager, int, int*, int*);
+   int sqlite3PagerCheckpoint(Pager *pPager, sqlite3*, int, int*, int*);
    int sqlite3PagerWalSupported(Pager *pPager);
    int sqlite3PagerWalCallback(Pager *pPager);
    int sqlite3PagerOpenWal(Pager *pPager, int *pisOpen);
diff --cc src/parse.y
index afa37c84a8c335ff9eb54a136b753f43257ab29a,c9dbc767cdddd189f87228ed28fdf9750d1a4d45..fa2aef17a78b3cf3c1bd533fcf13db4b36d01cc6
@@@ -100,18 -91,6 +91,13 @@@ struct LimitVal 
  */
  struct TrigEvent { int a; IdList * b; };
  
- /*
- ** An instance of this structure holds the ATTACH key and the key type.
- */
- struct AttachKey { int type;  Token key; };
 +/*
 +** Generate a syntax error
 +*/
 +static void parserSyntaxError(Parse *pParse, Token *p){
 +  sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", p);
 +}
 +
  /*
  ** Disable lookaside memory allocation for objects that might be
  ** shared across database connections.
@@@ -901,10 -901,10 +917,10 @@@ expr(A) ::= VARIABLE(X).     
      assert( t.n>=2 );
      spanSet(&A, &t, &t);
      if( pParse->nested==0 ){
 -      sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
 +      parserSyntaxError(pParse, &t);
        A.pExpr = 0;
      }else{
-       A.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &t);
+       A.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
        if( A.pExpr ) sqlite3GetInt32(&t.z[1], &A.pExpr->iTable);
      }
    }
diff --cc src/sqliteInt.h
Simple merge
Simple merge
diff --cc src/vacuum.c
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/wal.c
Simple merge
diff --cc src/wal.h
index 0c1fb52a51a090142eda90cb87491daec41ecb61,4f6d01dad6291da039036918a3b4c31296ebc89c..5243bca162b8391f876a4140a7847d14521fd59b
+++ b/src/wal.h
@@@ -130,17 -131,9 +131,18 @@@ int sqlite3WalHeapMemory(Wal *pWal)
  #ifdef SQLITE_ENABLE_SNAPSHOT
  int sqlite3WalSnapshotGet(Wal *pWal, sqlite3_snapshot **ppSnapshot);
  void sqlite3WalSnapshotOpen(Wal *pWal, sqlite3_snapshot *pSnapshot);
+ int sqlite3WalSnapshotRecover(Wal *pWal);
  #endif
  
 +#ifndef SQLITE_OMIT_CONCURRENT
 +/* Tell the wal layer that we want to commit a concurrent transaction */
 +int sqlite3WalLockForCommit(Wal *pWal, PgHdr *pPg, Bitvec *pRead);
 +
 +/* Upgrade the state of the client to take into account changes written
 +** by other connections */
 +int sqlite3WalUpgradeSnapshot(Wal *pWal);
 +#endif /* SQLITE_OMIT_CONCURRENT */
 +
  #ifdef SQLITE_ENABLE_ZIPVFS
  /* If the WAL file is not empty, return the number of bytes of content
  ** stored in each frame (i.e. the db page-size when the WAL was created).
index 1922c7d22a4ca9802163b440c301d2e4a80c4182,a6c58f1a251c83cff9bc343dd1fce681cb17fce5..eae40b38184a7e3920db84bf4d4b351c934bcb76
@@@ -37,8 -37,8 +37,10 @@@ set extras 
    UMINUS
    UPLUS
    REGISTER
 +  EXCLUSIVE
 +  CONCURRENT
+   VECTOR
+   SELECT_COLUMN
    ASTERISK
    SPAN
    SPACE