]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge in all recent changes from trunk.
authordrh <drh@noemail.net>
Sun, 21 Sep 2014 23:08:54 +0000 (23:08 +0000)
committerdrh <drh@noemail.net>
Sun, 21 Sep 2014 23:08:54 +0000 (23:08 +0000)
FossilOrigin-Name: 3967ebe83e7cbb1dde26e4c9a6713d5c70fefe46

21 files changed:
1  2 
main.mk
manifest
manifest.uuid
src/btree.c
src/func.c
src/legacy.c
src/main.c
src/os_unix.c
src/os_win.c
src/pager.c
src/pragma.c
src/prepare.c
src/select.c
src/sqlite.h.in
src/sqliteInt.h
src/test1.c
src/test_config.c
src/vdbe.c
src/vdbeapi.c
src/vdbeaux.c
src/wal.c

diff --cc main.mk
index 9d3a7628fa6a2fd5a70c7641b9f3779248714ff6,4a7ac02710bf841c6ca4a4976e13cdfaf42f935f..f52137d470cc6e3793f7c1812811c5d94d4e657e
+++ b/main.mk
@@@ -214,9 -214,9 +214,11 @@@ SRC += 
    $(TOP)/ext/rtree/sqlite3rtree.h \
    $(TOP)/ext/rtree/rtree.h \
    $(TOP)/ext/rtree/rtree.c
 +SRC += \
 +  $(TOP)/ext/sqlrr/sqlrr.c
+ SRC += \
+   $(TOP)/ext/userauth/userauth.c \
+   $(TOP)/ext/userauth/sqlite3userauth.h
  
  # Generated source code files
  #
@@@ -363,7 -363,24 +365,9 @@@ HDR = 
  # Header files used by extensions
  #
  EXTHDR += \
 -  $(TOP)/ext/fts1/fts1.h \
 -  $(TOP)/ext/fts1/fts1_hash.h \
 -  $(TOP)/ext/fts1/fts1_tokenizer.h
 -EXTHDR += \
 -  $(TOP)/ext/fts2/fts2.h \
 -  $(TOP)/ext/fts2/fts2_hash.h \
 -  $(TOP)/ext/fts2/fts2_tokenizer.h
 -EXTHDR += \
 -  $(TOP)/ext/fts3/fts3.h \
 -  $(TOP)/ext/fts3/fts3Int.h \
 -  $(TOP)/ext/fts3/fts3_hash.h \
 -  $(TOP)/ext/fts3/fts3_tokenizer.h
 -EXTHDR += \
 -  $(TOP)/ext/rtree/rtree.h
 -EXTHDR += \
 -  $(TOP)/ext/icu/sqliteicu.h
 +  $(TOP)/ext/sqlrr/sqlrr.h
+ EXTHDR += \
+   $(TOP)/ext/userauth/sqlite3userauth.h
  
  # This is the default Makefile target.  The objects listed here
  # are what get build when you type just "make" with no arguments.
diff --cc manifest
index c2ae14126d52d2c5556b4c9f6437a727bd199e4c,ddf26d66a17d1de43bfd2d0b9ecaac103731e169..9db3214c753cf7a61ad6a1987e34bfa1ece61517
+++ b/manifest
@@@ -1,7 -1,7 +1,7 @@@
- C Merge\sthe\slatest\strunk\schanges\sinto\sthe\sapple-osx\sbranch.
- D 2014-09-02T15:57:35.887
 -C Correctly\shandle\san\sORDER\sBY\sclause\son\san\souter\squery\swhen\sapplying\nthe\scompound-subquery\sflattening\soptimization.\s\sTicket\s[89398880bcfff].\nAlso\sadd\sthe\sSQLITE_ENABLE_SELECTTRACE\soption\sfor\sadditional\sdebugging\nand\sanalysis\sinformation\sabout\sselect\sstatement\sprocessing.
 -D 2014-09-21T22:31:52.593
++C Merge\sin\sall\srecent\schanges\sfrom\strunk.
++D 2014-09-21T23:08:54.635
  F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 -F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
 +F Makefile.in bf041d20aeed250922fb1ba4bd13d34d3fa470e9
  F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
  F Makefile.msc e31dee24038965fb6269d6d61073fd6b7e331dec
  F Makefile.vxworks 034289efa9d591b04b1a73598623119c306cbba0
@@@ -144,13 -145,13 +145,16 @@@ F ext/rtree/rtree_util.tcl 06aab2ed5b82
  F ext/rtree/sqlite3rtree.h 83349d519fe5f518b3ea025d18dd1fe51b1684bd
  F ext/rtree/tkt3363.test 142ab96eded44a3615ec79fba98c7bde7d0f96de
  F ext/rtree/viewrtree.tcl eea6224b3553599ae665b239bd827e182b466024
 +F ext/sqlrr/README.txt 4239030e73023e72a2e727808cd433577d5bf730
 +F ext/sqlrr/sqlrr.c 8d1e6571cd6a6beabdb5bcdfe3a0e723b914db41
 +F ext/sqlrr/sqlrr.h 09e4f8929ad9bc2638732c0cc0db5eef8c417824
+ F ext/userauth/sqlite3userauth.h 19cb6f0e31316d0ee4afdfb7a85ef9da3333a220
+ F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
+ F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e
  F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
  F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
  F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
- F main.mk a16b400916a463d2e563225a66df3e55b703d520
 -F main.mk bbc8b6000ed143a1a8d31d3b4995c359a3188fa1
++F main.mk 68ddbbceb1602d89d7132184bc25f9180a99eaba
  F mkopcodec.awk c2ff431854d702cdd2d779c9c0d1f58fa16fa4ea
  F mkopcodeh.awk c6b3fa301db6ef7ac916b14c60868aeaec1337b5
  F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
@@@ -164,80 -165,79 +168,80 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 3d8b83c91651f53472ca17599dae3457b8b89494
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c b00900877f766f116f9e16116f1ccacdc21d82f1
- F src/analyze.c f00f06e6ef66c61b41f154889fe7caf5ed55a0ce
- F src/attach.c 3801129015ef59d76bf23c95ef9b0069d18a0c52
- F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
+ F src/alter.c ba266a779bc7ce10e52e59e7d3dc79fa342e8fdb
+ F src/analyze.c 6290a109be876daaa242cd7216f97240f5401776
+ F src/attach.c f4e94df2d1826feda65eb0939f7f6f5f923a0ad9
+ F src/auth.c d8abcde53426275dab6243b441256fcd8ccbebb2
  F src/backup.c a31809c65623cc41849b94d368917f8bb66e6a7e
  F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb
- F src/btmutex.c ec9d3f1295dafeb278c3830211cc5584132468f4
- F src/btree.c 1e5bb10be0676d206c2608ce81251df2d4952c63
+ F src/btmutex.c 49ca66250c7dfa844a4d4cb8272b87420d27d3a5
 -F src/btree.c 6aa61c0e3d20d1d1acc8fb33d8f0ebd675305d3c
++F src/btree.c 16c922112e23d2b0aac4fd407414860eed3ba6e7
  F src/btree.h a79aa6a71e7f1055f01052b7f821bd1c2dce95c8
- F src/btreeInt.h cf180d86b2e9e418f638d65baa425c4c69c0e0e3
- F src/build.c c26b233dcdb1e2c8f468d49236c266f9f3de96d8
- F src/callback.c b97d0695ffcf6a8710ee445ffe56ee387d4d8a6f
- F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
- F src/ctime.c 0231df905e2c4abba4483ee18ffc05adc321df2a
- F src/date.c 593c744b2623971e45affd0bde347631bdfa4625
- F src/delete.c 5adcd322c6b08fc25d215d780ca62cebce66304d
- F src/expr.c e1691ab0fe6be7247ef073b0038fb8ecd9944fad
+ F src/btreeInt.h e0ecb5dba292722039a7540beb3fc448103273cc
+ F src/build.c 8dbca25988045fbf2a33c9631c42706fa6449e60
+ F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
+ F src/complete.c 535183afb3c75628b78ce82612931ac7cdf26f14
+ F src/ctime.c 16cd19215d9fd849ee2b7509b092f2e0bbd6a958
+ F src/date.c 57a7f9ba9f6b4d5268f5e411739066a611f99036
+ F src/delete.c fae81cc2eb14b75267d4f47d3cfc9ae02aae726f
+ F src/expr.c 4f101c8ddc6d5a22303c88278069f5261562a9a8
  F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
- F src/fkey.c 8d81a780ad78d16ec9082585758a8f1d6bf02ca3
- F src/func.c 7a252bf7a52b4229462d2d89639d0f4f134dca40
- F src/global.c 1e4bd956dc2f608f87d2a929abc4a20db65f30e4
+ F src/fkey.c da985ae673efef2c712caef825a5d2edb087ead7
 -F src/func.c 1629ccdd8ef3f19d7accc9d9287190489469ff81
++F src/func.c 04210a80b03a477ae2426c75e935403e2e54e867
+ F src/global.c 5110fa12e09729b84eee0191c984ec4008e21937
  F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5
  F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094
  F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
- F src/insert.c d1a104e67b33314d4cc5c1356147446086ab9fc8
+ F src/insert.c 5b9243a33726008cc4132897d2be371db12a13be
  F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
- F src/legacy.c 4d9ad7daba0d8a20fa3ecf5e54fe7ff53e2e0a49
- F src/lempar.c cdf0a000315332fc9b50b62f3b5e22e080a0952b
- F src/loadext.c 31c2122b7dd05a179049bbf163fd4839f181cbab
- F src/main.c b3d19f5a1a7341fac59fcdd5ddcdb0619fe98107
- F src/malloc.c 954de5f998c23237e04474a3f2159bf483bba65a
 -F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
++F src/legacy.c 9c17d86e06522c261307f0eb6bcb1254c8b04a59
+ F src/lempar.c 7274c97d24bb46631e504332ccd3bd1b37841770
+ F src/loadext.c de741e66e5ddc1598d904d7289239696e40ed994
 -F src/main.c d15621461fb0c52675eba2b650492ed1beef69ab
++F src/main.c ed5dc24903c9fe1b6daea92d95e6d022f07ef8f7
+ F src/malloc.c 5bb99ee1e08ad58e457063cf79ce521db0e24195
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
- F src/mem1.c c0c990fcaddff810ea277b4fb5d9138603dd5d4b
+ F src/mem1.c faf615aafd8be74a71494dfa027c113ea5c6615f
  F src/mem2.c dce31758da87ec2cfa52ba4c5df1aed6e07d8e8f
  F src/mem3.c 61c9d47b792908c532ca3a62b999cf21795c6534
- F src/mem5.c 74670012946c4adc8a6ad84d03acc80959c3e529
- F src/memjournal.c 0683aac6cab6ec2b5374c0db37c0deb2436a3785
+ F src/mem5.c 61eeb90134f9a5be6c2e68d8daae7628b25953fb
+ F src/memjournal.c 3eb2c0b51adbd869cb6a44780323f05fa904dc85
  F src/mutex.c 84a073c9a23a8d7bdd2ea832522d1730df18812c
- F src/mutex.h 5bc526e19dccc412b7ff04642f6fdad3fdfdabea
+ F src/mutex.h 779d588e3b7756ec3ecf7d78cde1d84aba414f85
  F src/mutex_noop.c f3f09fd7a2eb4287cfc799753ffc30380e7b71a1
  F src/mutex_unix.c 1b10d5413dfc794364a8adf3eb3a192926b43fa3
  F src/mutex_w32.c 06bfff9a3a83b53389a51a967643db3967032e1e
  F src/notify.c 9711a7575036f0d3040ba61bc6e217f13a9888e7
 -F src/os.c 1b147e4cf7cc39e618115c14a086aed44bc91ace
 +F src/os.c 25df79baf4bec87f75a2c4e995d63361b66b918a
- F src/os.h 60d419395e32a8029fa380a80a3da2e9030f635e
+ F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf
  F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
  F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
- F src/os_unix.c 187835e09c26c5070d563b7a73f14a86d33f0d8c
- F src/os_win.c 07c936447222ab5333d300736265c929dd0930f3
 -F src/os_unix.c 9096a1b1449182e67e759f59994eee04113bc587
 -F src/os_win.c 0a4042ef35f322e86fa01f6c8884c5e645b911e7
++F src/os_unix.c eb7b17fa6a57d9ca0e3879ccf42261430606473b
++F src/os_win.c 1f331fe64c399490a0603c64ab321ef600e57213
  F src/os_win.h 09e751b20bbc107ffbd46e13555dc73576d88e21
- F src/pager.c 919d4e7eaf27646c290b45c9d6e0ae109f562b3d
 -F src/pager.c caab007743821d96752597c9cfd7351654697b06
 -F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428
++F src/pager.c 69e5a3f5f5fe2c82be4e17fe6344c8cfdb314b64
 +F src/pager.h 8feb18f845951ab37e1f65a319b2da24185173ac
- F src/parse.y 22d6a074e5f5a7258947a1dc55a9bf946b765dd0
- F src/pcache.c 3b3791297e8977002e56b4a9b8916f2039abad9b
+ F src/parse.y b98772da2bb5415970085b707203f92569400aa8
+ F src/pcache.c 4121a0571c18581ee9f82f086d5e2030051ebd6a
  F src/pcache.h 9b559127b83f84ff76d735c8262f04853be0c59a
- F src/pcache1.c c5af6403a55178c9d1c09e4f77b0f9c88822762c
- F src/pragma.c 4865f1a42ce4eee35a4f6de290387f2fd9bd8e50
- F src/prepare.c 8b6e247b5f574e35170ba6fa43b2f649b3add9a1
- F src/printf.c 00986c86ddfffefc2fd3c73667ff51b3b9709c74
+ F src/pcache1.c dab8ab930d4a73b99768d881185994f34b80ecaa
 -F src/pragma.c 3f3e959390a10c0131676f0e307acce372777e0f
 -F src/prepare.c 6ef0cf2f9274982988ed6b7cab1be23147e94196
++F src/pragma.c c63b5aa7b655801cf74b7f94fdb136f4d9626522
++F src/prepare.c d0ab75c13fdcad7f54a385386c6b04408ef43615
+ F src/printf.c 3a47f526b173813d9a7f4e7044007771ba68cde1
  F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
- F src/resolve.c 0ea356d32a5e884add23d1b9b4e8736681dd5697
- F src/rowset.c a9c9aae3234b44a6d7c6f5a3cadf90dce1e627be
- F src/select.c fa6b6845b09cf4407c1e5019c14a0dbfab54263f
- F src/shell.c 713cef4d73c05fc8e12f4960072329d767a05d50
- F src/sqlite.h.in b31477789bbb5bcbfcecf0afcb334240c41ea6a6
+ F src/resolve.c a3466128b52a86c466e47ac1a19e2174f7b5cf89
+ F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
 -F src/select.c a83ed8bc2a31c131e3addb6f0488b68334085e7b
++F src/select.c 66f96be20209432006b1c6dff73c3fbcee3426db
+ F src/shell.c dad23987c34faddb061a339da3e92e05ccc6935e
 -F src/sqlite.h.in 8b018219ce988913e5977d5de9ab4beb33be23b6
++F src/sqlite.h.in a6f6314b0c65acae8268448241c202b8d376cd0e
  F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
- F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc
- F src/sqliteInt.h 439ad3b98d2342862ce11955ab35948a8e82a052
 +F src/sqlite3_private.h a81a9c5f97c095cc3e86914a05f8fabe0011f4a1
 -F src/sqliteInt.h 5ecde2191721a94cdce0d5248e26a373e0b17a70
+ F src/sqlite3ext.h 17d487c3c91b0b8c584a32fbeb393f6f795eea7d
++F src/sqliteInt.h f607f57c8bd4cad37d6dbd3ce4c72c3b64a8b9f7
  F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
  F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158
- F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
- F src/tclsqlite.c 7d100e2e7aad614bb3d7026a41a0e3827dbaaebc
- F src/test1.c b7d7add79fc86c113c2ed5f1ec1206476e680819
+ F src/table.c 2e99ef7ef16187e17033d9398dc962ce22dab5cb
+ F src/tclsqlite.c c67d310c833046cccc192125d64ad422ab882684
 -F src/test1.c 523cd70ded28db71af9a30ec184cbe0957de9575
++F src/test1.c ba21c4d107695538c9ee78c7a1f548b460afc017
  F src/test2.c 98049e51a17dc62606a99a9eb95ee477f9996712
  F src/test3.c 1c0e5d6f080b8e33c1ce8b3078e7013fdbcd560c
  F src/test4.c 9b32d22f5f150abe23c1830e2057c4037c45b3df
@@@ -248,9 -248,9 +252,9 @@@ F src/test8.c 54ccd7b1df5062f0ecbf50a8f
  F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60
  F src/test_async.c 21e11293a2f72080eda70e1124e9102044531cd8
  F src/test_autoext.c dea8a01a7153b9adc97bd26161e4226329546e12
 -F src/test_backup.c 3875e899222b651e18b662f86e0e50daa946344e
 +F src/test_backup.c 2e6e6a081870150f20c526a2e9d0d29cda47d803
  F src/test_btree.c 2e9978eca99a9a4bfa8cae949efb00886860a64f
- F src/test_config.c 129629e3735088f58f275ca4d59a284ecc8cbb0b
 -F src/test_config.c 6f721f0337b96d58e81ff69bba101113c8168c2b
++F src/test_config.c 00e23428eaf3506b240e43dab98d9df9ad332452
  F src/test_demovfs.c 69b2085076654ebc18014cbc6386f04409c959a9
  F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
  F src/test_fs.c ced436e3d4b8e4681328409b8081051ce614e28f
@@@ -270,8 -270,8 +274,8 @@@ F src/test_osinst.c 3d0340bc31a9f3d8a35
  F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
  F src/test_quota.c 65f6348fec0f2b3020c907247fb47556b214abb9
  F src/test_quota.h 2a8ad1952d1d2ca9af0ce0465e56e6c023b5e15d
 -F src/test_rtree.c fdd8d29ca5165c7857987a2ba263fac5c69e231f
 +F src/test_rtree.c bfe6f4386517f70054311109f3528adffec34485
- F src/test_schema.c cd12a2223c3a394f4d07bb93bdf6d344c5c121b6
+ F src/test_schema.c 2bdba21b82f601da69793e1f1d11bf481a79b091
  F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe
  F src/test_sqllog.c c1c1bbedbcaf82b93d83e4f9dd990e62476a680e
  F src/test_stat.c 9898687a6c2beca733b0dd6fe19163d987826d31
@@@ -283,30 -283,30 +287,30 @@@ F src/test_vfs.c f84075a388527892ff1849
  F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
  F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
  F src/threads.c 22dded4283dc4b25422f6444cdcb8d6b1ea0b5ff
- F src/tokenize.c ae45399d6252b4d736af43bee1576ce7bff86aec
- F src/trigger.c 4bddd12803275aa98f1c7ce0118fceb02b2167f6
- F src/update.c ea336ce7b8b3fc5e316ba8f082e6445babf81059
- F src/utf.c 77abb5e6d27f3d236e50f7c8fff1d00e15262359
- F src/util.c 068dcd26354a3898ccc64ad5c4bdb95a7a15d33a
- F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
- F src/vdbe.c 0c353a885a413ce7239610587b637e7124b2ca48
- F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8
- F src/vdbeInt.h cdc8e421f85beb1ac9b4669ec5beadab6faa15e0
- F src/vdbeapi.c b0122a0326a576a14350f7715873facee427acb3
- F src/vdbeaux.c 5ad6f1a20be8285c13ca15bc1a9af6679afa29db
+ F src/tokenize.c 3df63041994f55afeb168b463ec836e8f1c50e7c
+ F src/trigger.c 25571661fdeae8c7f975ff40ffec205520a3f92f
+ F src/update.c 729f6f18fc27740591d085e1172cebe311144bf0
+ F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
+ F src/util.c 4006c01772bd8d8ac4306d523bbcee41d3e392d8
+ F src/vacuum.c 59f03f92bcff57faa6a8ca256eb29ccddfb0614a
 -F src/vdbe.c de1af1795bebdad20c23e82bafa2f531e9893198
++F src/vdbe.c cdeb927323bcdad77a4071e54ff9bb8d4494521e
+ F src/vdbe.h 09f5b4e3719fa454f252322b1cdab5cf1f361327
+ F src/vdbeInt.h f177bed1ec8d4eb5c7089f012aeb95f374745735
 -F src/vdbeapi.c e9e33b59834e3edc8790209765e069874c269d9d
 -F src/vdbeaux.c a05adc3c96abdaf3db14768ddd63132fc9678060
++F src/vdbeapi.c b7b086fc95b12b0d6694faa9150687e74158af69
++F src/vdbeaux.c 2e927a7641eae94ca4583d1a809cb4441ca21a5a
  F src/vdbeblob.c 848238dc73e93e48432991bb5651bf87d865eca4
- F src/vdbemem.c 921d5468a68ac06f369810992e84ca22cc730a62
- F src/vdbesort.c 02646a9f86421776ae5d7594f620f9ed669d3698
- F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767
+ F src/vdbemem.c 1e105dacf5190fc85a8ec2107c0dcc1884e75099
+ F src/vdbesort.c 5c1bacf90578d22b630fbf6ed98ccf60d83435ef
+ F src/vdbetrace.c 4f29b04edb0cec3d5fcd9b566d9f0e75c8984362
  F src/vtab.c 019dbfd0406a7447c990e1f7bd1dfcdb8895697f
- F src/wal.c 785b8a1fdd5600f2265b57691708329cae9acbad
 -F src/wal.c 10e7de7ce90865a68153f001a61f1d985cd17983
 -F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
++F src/wal.c 1c4bcbbe80d5714e4ae349b9d94d05dcfb7804b7
 +F src/wal.h 6b3a67ecd7172dcc9f18fc9cd4d76dc4c2166e68
- F src/walker.c 11edb74d587bc87b33ca96a5173e3ec1b8389e45
- F src/where.c d9eae96b2cbbe4842eac3ee156ccd1b933d802c4
- F src/whereInt.h 923820bee9726033a501a08d2fc69b9c1ee4feb3
+ F src/walker.c c253b95b4ee44b21c406e2a1052636c31ea27804
+ F src/where.c 0888567c0e01a41b6001647e333f8ccfd3ae7d36
+ F src/whereInt.h 124d970450955a6982e174b07c320ae6d62a595c
 -F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 +F test/8_3_names.test 05034aadccd2253ffe6cbefb06662b8aa4600f77
  F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
- F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
+ F test/aggnested.test b35b4cd69fc913f90d39a575e171e1116c3a4bb7
  F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
  F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783
  F test/alter.test 547dc2d292644301ac9a7dda22b319b74f9c08d2
@@@ -332,14 -332,14 +336,14 @@@ F test/async3.test d73a062002376d7edc1f
  F test/async4.test 1787e3952128aa10238bf39945126de7ca23685a
  F test/async5.test 383ab533fdb9f7ad228cc99ee66e1acb34cc0dc0
  F test/atof1.test 08a61df9365c341f334a65f4348897312d8f3db7
 -F test/attach.test 0d112b7713611fdf0340260192749737135fda5f
 +F test/attach.test 63033baa59be42c811ef0d4e73ebd2d6dba4805c
  F test/attach2.test 0ec5defa340363de6cd50fd595046465e9aaba2d
  F test/attach3.test 359eb65d00102cdfcef6fa4e81dc1648f8f80b27
 -F test/attach4.test 53bf502f17647c6d6c5add46dda6bac8b6f4665c
 +F test/attach4.test faaaf33fa51f986b414520cb03cecdc7999df108
  F test/attachmalloc.test 3a4bfca9545bfe906a8d2e622de10fbac5b711b0
- F test/auth.test 5bdf154eb28c0e4bbc0473f335858c0d96171768
- F test/auth2.test c3b415b76c033bedb81292118fb7c01f5f10cbcd
- F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5
+ F test/auth.test 855233ef26eb3601b6886567ea4e326c72959360
+ F test/auth2.test 264c6af53cad9aba5218c68bbe18036e39007bfa
+ F test/auth3.test 5cfa94ed90c6617c42b7ba4b133fd79678b251c7
  F test/autoinc.test c58912526998a39e11f66b533e23cfabea7f25b7
  F test/autoindex1.test 762ff3f8e25d852aae55c6462ca166a80c0cde61
  F test/autoindex2.test 60d2fc6f38364308ce73a9beb01b47ded38697de
@@@ -859,13 -859,13 +864,13 @@@ F test/speed4p.test 0e51908951677de5a96
  F test/speedtest1.c 83f6b3318f7ee60e52b978b5a5e5dd7e83dfb7ee
  F test/spellfix.test 24f676831acddd2f4056a598fd731a72c6311f49
  F test/sqllimits1.test b1aae27cc98eceb845e7f7adf918561256e31298
 -F test/stat.test 76fd746b85459e812a0193410fb599f0531f22de
 -F test/stmt.test 25d64e3dbf9a3ce89558667d7f39d966fe2a71b9
 +F test/stat.test 1e5faf39649a0bb368770f780f926847520ea3f4
 +F test/stmt.test 78a6764439cfa5abdcbf98d4d084739e81eeec4f
  F test/subquery.test 666fdecceac258f5fd84bed09a64e49d9f37edd9
- F test/subquery2.test 91e1e364072aeff431d1f9689b15147e421d88c7
+ F test/subquery2.test 438f8a7da1457277b22e4176510f7659b286995f
  F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4
  F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a
 -F test/superlock.test 1cde669f68d2dd37d6c9bd35eee1d95491ae3fc2
 +F test/superlock.test 2b27b4ae7c6b9d534b0412e0d99f989aa1f3b9cf
  F test/sync.test a34cd43e98b7fb84eabbf38f7ed8f7349b3f3d85
  F test/syscall.test d2fdaad713f103ac611fe7ef9b724c7b69f8149c
  F test/sysfault.test fa776e60bf46bdd3ae69f0b73e46ee3977a58ae6
@@@ -1198,7 -1199,8 +1204,7 @@@ F tool/vdbe_profile.tcl 67746953071a9f8
  F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
  F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
  F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
- P 5c273111058fcb3a1707ea0f3c7ac4b04525aeb0 9779c7a9eb1e2bd36e9286331a9314f064014d80
- R 912a9b080065865a0e00bf5ab38071d4
 -P 59e2c9df02d7e988c5ad44c560ead1e5288b12e7 9683e001ed38b41979220eef0bdfcb54df5f3191
 -R df45958fe8f93552efb788581c98f0f7
 -T +closed 9683e001ed38b41979220eef0bdfcb54df5f3191
++P 696dc935f78dc883faf98cf446f75ce4028e98f8 d5880abd63c83c88e135257373afa0a3fd88297e
++R 591ffab50f7f25d0fcbfd5e941acbbd0
  U drh
- Z d40b462fc9fb4d58e62829bccf3196e6
 -Z d861c46be738b6f104b52fa4441ce204
++Z 20cea348a8ee956bf4a047634dfa1828
diff --cc manifest.uuid
index 212bfd8c97ff643f4e9782b7944125d068a4e0d5,7cf6d685c3637afbb9131321692577b03ac9af4d..df48a59a0a41fbe3f4719520cd1b1499ddf2bb27
@@@ -1,1 -1,1 +1,1 @@@
- 696dc935f78dc883faf98cf446f75ce4028e98f8
 -d5880abd63c83c88e135257373afa0a3fd88297e
++3967ebe83e7cbb1dde26e4c9a6713d5c70fefe46
diff --cc src/btree.c
Simple merge
diff --cc src/func.c
Simple merge
diff --cc src/legacy.c
index b92f384e825c458215da90e059acd70a94079ef2,a10006e55847d4f78cd2912db44d5de48ab9129a..7842deb55059bc3fe08d8ed8e54017a154a22eb1
@@@ -128,12 -123,9 +128,12 @@@ int sqlite3_exec
  exec_out:
    if( pStmt ) sqlite3VdbeFinalize((Vdbe *)pStmt);
    sqlite3DbFree(db, azCols);
 +#ifdef SQLITE_ENABLE_SQLRR
 +  SRRecExecEnd(db);
 +#endif
  
    rc = sqlite3ApiExit(db, rc);
-   if( rc!=SQLITE_OK && ALWAYS(rc==sqlite3_errcode(db)) && pzErrMsg ){
+   if( rc!=SQLITE_OK && pzErrMsg ){
      int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db));
      *pzErrMsg = sqlite3Malloc(nErrMsg);
      if( *pzErrMsg ){
diff --cc src/main.c
Simple merge
diff --cc src/os_unix.c
index fb2752ed9c8f923af57ec75b89d7223934297b24,fcd9e72d06e25485569853202416199320cb89c4..33d4e6bfd70442f8ae94dd528549ddbfa1db2742
@@@ -4005,9 -3616,9 +4026,9 @@@ static int unixTruncate(sqlite3_file *i
      nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk;
    }
  
-   rc = robust_ftruncate(pFile->h, (off_t)nByte);
+   rc = robust_ftruncate(pFile->h, nByte);
    if( rc ){
 -    pFile->lastErrno = errno;
 +    storeLastErrno(pFile, errno);
      return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
    }else{
  #ifdef SQLITE_DEBUG
@@@ -4139,310 -3750,8 +4160,310 @@@ static int fcntlSizeHint(unixFile *pFil
    return SQLITE_OK;
  }
  
 +
 +#if (SQLITE_ENABLE_APPLE_SPI>0) && defined(__APPLE__)
 +#include "sqlite3_private.h"
 +#include <copyfile.h>
 +static int getDbPathForUnixFile(unixFile *pFile, char *dbPath);
 +#endif
 +
 +#if SQLITE_ENABLE_LOCKING_STYLE
 +static int isProxyLockingMode(unixFile *);
 +#endif
 +
 +#if (SQLITE_ENABLE_APPLE_SPI>0) && defined(__APPLE__)
 +static int unixTruncateDatabase(unixFile *, int);
 +
 +static int unixInvalidateSupportFiles(unixFile *, int);
 +
 +static int findCreateFileMode(const char *, int, mode_t*, uid_t *,gid_t *);
 +
 +/* opens a read/write connection to a file zName inheriting the appropriate
 +** user/perms from the database file if running as root.  Returns the file 
 +** descriptor by reference
 +*/
 +static int unixOpenChildFile(
 +  const char *zName,
 +  int openFlags,
 +  int dbOpenFlags,
 +  int protFlags,
 +  int *pFd
 +){
 +  int fd = -1;
 +  mode_t openMode;              /* Permissions to create file with */
 +  uid_t uid;                    /* Userid for the file */
 +  gid_t gid;                    /* Groupid for the file */
 +  int rc;
 +  
 +  assert(pFd!=NULL);
 +  rc = findCreateFileMode(zName, dbOpenFlags, &openMode, &uid, &gid);
 +  if( rc!=SQLITE_OK ){
 +    return rc;
 +  }
 +  fd = robust_open(zName, openFlags, openMode);
 +  OSTRACE(("OPENX   %-3d %s 0%o\n", fd, zName, openFlags));
 +  if( fd<0 ){
 +    rc = unixLogError(SQLITE_CANTOPEN_BKPT, "open", zName);
 +    return rc;
 +  }
 +  /* if we're opening the wal or journal and running as root, set
 +  ** the journal uid/gid */
 +  if( dbOpenFlags & (SQLITE_OPEN_WAL|SQLITE_OPEN_MAIN_JOURNAL) ){
 +    uid_t euid = geteuid();
 +    if( euid==0 && (euid!=uid || getegid()!=gid) ){
 +      if( fchown(fd, uid, gid) ){
 +        rc = SQLITE_CANTOPEN_BKPT;
 +      }
 +    }
 +  }
 +  if( rc==SQLITE_OK ){
 +    *pFd = fd;
 +  } else {
 +    *pFd = -1;
 +    close(fd);
 +  }
 +  return rc;
 +}
 +
 +static int unixReplaceDatabase(unixFile *pFile, sqlite3 *srcdb) {
 +  sqlite3_file *id = (sqlite3_file *)pFile;
 +  Btree *pSrcBtree = NULL;
 +  sqlite3_file *src_file = NULL;
 +  unixFile *pSrcFile = NULL;
 +  char srcWalPath[MAXPATHLEN+5];
 +  int srcWalFD = -1;
 +  int rc = SQLITE_OK;
 +  void *pLock = NULL;
 +  int flags = 0;
 +  sqlite3 *srcdb2 = NULL;
 +  copyfile_state_t s;
 +  int corruptSrcFileLock = 0;
 +  int corruptDstFileLock = 0;
 +  int isSrcCorrupt = 0;
 +  int isDstCorrupt = 0;
 +  
 +  if( !sqlite3SafetyCheckOk(srcdb) ){
 +    return SQLITE_MISUSE;
 +  }
 +    
 +#if SQLITE_ENABLE_DATA_PROTECTION
 +  flags |= pFile->protFlags;
 +#endif
 +#if SQLITE_ENABLE_LOCKING_STYLE
 +  if( isProxyLockingMode(pFile) ){
 +    flags |= SQLITE_OPEN_AUTOPROXY;
 +  }
 +#endif
 +  
 +  rc = sqlite3demo_superlock(pFile->zPath, 0, flags, 0, 0, &pLock);
 +  if( rc ){
 +    if( rc==SQLITE_CORRUPT || rc==SQLITE_NOTADB ){
 +      isDstCorrupt = 1;
 +      rc = sqlite3demo_superlock_corrupt(id, SQLITE_LOCK_EXCLUSIVE,
 +                                         &corruptDstFileLock);
 +    }
 +    if( rc ){
 +      return rc;
 +    }
 +  }
 +  /* get the src file descriptor adhering to the db struct access rules 
 +   ** this code is modeled after sqlite3_file_control() in main.c
 +   */ 
 +  sqlite3_mutex_enter(srcdb->mutex);
 +  if( srcdb->nDb>0 ){
 +    pSrcBtree = srcdb->aDb[0].pBt;
 +  }
 +  if( pSrcBtree ){
 +    Pager *pSrcPager;
 +    sqlite3BtreeEnter(pSrcBtree);
 +    pSrcPager = sqlite3BtreePager(pSrcBtree);
 +    assert( pSrcPager!=0 );
 +    src_file = sqlite3PagerFile(pSrcPager);
 +    assert( src_file!=0 );
 +    if( src_file->pMethods ){
 +      int srcFlags = 0;
 +      pSrcFile = (unixFile *)src_file;
 +#if SQLITE_ENABLE_LOCKING_STYLE || defined(__APPLE__)
 +      if ((pSrcFile->openFlags & O_RDWR) == O_RDWR) {
 +        srcFlags = SQLITE_OPEN_READWRITE;
 +      } else {
 +        srcFlags = SQLITE_OPEN_READONLY;
 +      }
 +#else
 +      srcFlags = SQLITE_OPEN_READWRITE;
 +#endif
 +#if SQLITE_ENABLE_DATA_PROTECTION
 +      srcFlags |= pSrcFile->protFlags;
 +#endif
 +#if SQLITE_ENABLE_LOCKING_STYLE
 +      if( isProxyLockingMode(pSrcFile) ){
 +        srcFlags |= SQLITE_OPEN_AUTOPROXY;
 +      }
 +#endif
 +      rc = sqlite3_open_v2(pSrcFile->zPath, &srcdb2, srcFlags, 0);
 +      if( rc==SQLITE_OK ){
 +        /* start a deferred transaction and read to establish a read lock */
 +        rc = sqlite3_exec(srcdb2, "BEGIN DEFERRED; PRAGMA schema_version",
 +                          0, 0, 0);
 +        if( rc==SQLITE_CORRUPT || rc==SQLITE_NOTADB ){
 +          isSrcCorrupt = 1;
 +          rc = sqlite3demo_superlock_corrupt(src_file, SQLITE_LOCK_SHARED,
 +                                             &corruptSrcFileLock);
 +        }
 +      }
 +    }
 +  }
 +  if( !srcdb2 || pSrcFile==NULL || pSrcFile->h<0){
 +    rc = SQLITE_INTERNAL;
 +  }
 +  if( rc!=SQLITE_OK ){
 +    goto end_replace_database;
 +  }
 +  /* both databases are locked appropriately, copy the src wal journal if 
 +   ** one exists and then the actual database file
 +   */
 +  strlcpy(srcWalPath, pSrcFile->zPath, MAXPATHLEN+5);
 +  strlcat(srcWalPath, "-wal", MAXPATHLEN+5);
 +  srcWalFD = open(srcWalPath, O_RDONLY);
 +  if( !(srcWalFD<0) ){
 +    char dstWalPath[MAXPATHLEN+5];
 +    int dstWalFD = -1;
 +    int protFlags = 0;
 +    strlcpy(dstWalPath, pFile->zPath, MAXPATHLEN+5);
 +    strlcat(dstWalPath, "-wal", MAXPATHLEN+5);
 +
 +    rc = unixOpenChildFile(dstWalPath, O_RDWR|O_CREAT, SQLITE_OPEN_WAL,
 +                           protFlags, &dstWalFD);
 +    if( rc==SQLITE_OK ){
 +      s = copyfile_state_alloc();
 +      lseek(srcWalFD, 0, SEEK_SET);
 +      lseek(dstWalFD, 0, SEEK_SET);
 +      if( fcopyfile(srcWalFD, dstWalFD, s, COPYFILE_DATA) ){
 +        int err=errno;
 +        switch(err) {
 +          case ENOMEM:
 +            rc = SQLITE_NOMEM;
 +            break;
 +          default:
 +            storeLastErrno(pFile, err);
 +            rc = SQLITE_IOERR;
 +        }
 +      }
 +      copyfile_state_free(s);
 +      close(dstWalFD);
 +    }
 +    close(srcWalFD);
 +  }
 +  if( rc==SQLITE_OK ){
 +    /* before we copy, ensure that the file change counter will be modified */
 +    uint32_t srcChange = 0;
 +    uint32_t dstChange = 0;
 +    pread(pSrcFile->h, &srcChange, 4, 24);
 +    pread(pFile->h, &dstChange, 4, 24);
 +    
 +    /* copy the actual database */
 +    s = copyfile_state_alloc();
 +    lseek(pSrcFile->h, 0, SEEK_SET);
 +    lseek(pFile->h, 0, SEEK_SET);
 +    if( fcopyfile(pSrcFile->h, pFile->h, s, COPYFILE_DATA) ){
 +      int err=errno;
 +      switch(err) {
 +        case ENOMEM:
 +          rc = SQLITE_NOMEM;
 +          break;
 +        default:
 +          storeLastErrno(pFile, err);
 +          rc = SQLITE_IOERR;
 +      }
 +    }
 +    copyfile_state_free(s);
 +    
 +    if (srcChange == dstChange) {
 +      /* modify the change counter to force page zero to be reloaded */
 +      dstChange ++;
 +      pwrite(pFile->h, &dstChange, 4, 24);
 +    }
 +  }
 +  if( isSrcCorrupt ){
 +    sqlite3demo_superunlock_corrupt(src_file, corruptSrcFileLock);
 +  }else{
 +    /* done with the source db so end the transaction */
 +    sqlite3_exec(srcdb2, "COMMIT", 0, 0, 0);
 +  }
 +  /* zero out any old journal clutter */
 +  if( rc==SQLITE_OK ){
 +    int skipWAL = (srcWalFD<0)?0:1;
 +    unixInvalidateSupportFiles(pFile, skipWAL);
 +  }
 +  
 +end_replace_database:
 +  if( pSrcBtree ){
 +    sqlite3_close(srcdb2);
 +    sqlite3BtreeLeave(pSrcBtree);
 +  }
 +  sqlite3_mutex_leave(srcdb->mutex);
 +  if( isDstCorrupt ){
 +    sqlite3demo_superunlock_corrupt(id, corruptDstFileLock);
 +  }else{
 +    sqlite3demo_superunlock(pLock);
 +  }
 +  return rc;
 +}
 +#define SQLITE_FILE_HEADER_LEN 16
 +/* Check for a conflicting lock.  If one is found, print an this
 + ** on standard output using the format string given and return 1.
 + ** If there are no conflicting locks, return 0.
 + */
 +static int unixIsLocked(
 +  pid_t pid,            /* PID to test for lock owner */
 +  int h,                /* File descriptor to check */
 +  int type,             /* F_RDLCK or F_WRLCK */
 +  unsigned int iOfst,   /* First byte of the lock */
 +  unsigned int iCnt,    /* Number of bytes in the lock range */
 +  const char *zType     /* Type of lock */
 +){
 +  struct flock lk;
 +  int err;
 +  
 +  memset(&lk, 0, sizeof(lk));
 +  lk.l_type = type;
 +  lk.l_whence = SEEK_SET;
 +  lk.l_start = iOfst;
 +  lk.l_len = iCnt;
 +  
 +  if( pid!=SQLITE_LOCKSTATE_ANYPID ){
 +#ifndef F_GETLKPID
 +# warning F_GETLKPID undefined, _sqlite3_lockstate falling back to F_GETLK
 +    err = fcntl(h, F_GETLK, &lk);
 +#else
 +    lk.l_pid = pid;
 +    err = fcntl(h, F_GETLKPID, &lk);
 +#endif
 +  }else{
 +    err = fcntl(h, F_GETLK, &lk);
 +  }
 +  
 +  if( err==(-1) ){
 +    fprintf(stderr, "fcntl(%d) failed: errno=%d\n", h, errno);
 +    return -1;
 +  }
 +  
 +  if( lk.l_type!=F_UNLCK && (pid==SQLITE_LOCKSTATE_ANYPID || lk.l_pid==pid) ){
 +#ifdef SQLITE_DEBUG
 +    fprintf(stderr, "%s lock held by %d\n", zType, (int)lk.l_pid);
 +#endif
 +    return 1;
 +  } 
 +  return 0;
 +}
 +
 +static int unixLockstatePid(unixFile *, pid_t, int *);
 +
 +#endif /* (SQLITE_ENABLE_APPLE_SPI>0) && defined(__APPLE__) */
 +
 +
  /*
- ** If *pArg is inititially negative then this is a query.  Set *pArg to
+ ** If *pArg is initially negative then this is a query.  Set *pArg to
  ** 1 or 0 depending on whether or not bit mask of pFile->ctrlFlags is set.
  **
  ** If *pArg is 0 or 1, then clear or set the mask bit of pFile->ctrlFlags.
diff --cc src/os_win.c
Simple merge
diff --cc src/pager.c
Simple merge
diff --cc src/pragma.c
Simple merge
diff --cc src/prepare.c
Simple merge
diff --cc src/select.c
Simple merge
diff --cc src/sqlite.h.in
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/test1.c
Simple merge
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeapi.c
index 605fe6c8bd8d64aa9dfb633ccef54823c5504f37,dc38132382031377a5f94d81d404d0c10d93ef2f..da03e9bf6a781b7251eedbc5227f14436073334e
@@@ -1139,11 -1181,22 +1197,25 @@@ int sqlite3_bind_blob
    int nData, 
    void (*xDel)(void*)
  ){
 +#ifdef SQLITE_ENABLE_SQLRR
 +  SRRecBindBlob(pStmt, i, zData, nData);
 +#endif
    return bindText(pStmt, i, zData, nData, xDel, 0);
  }
+ int sqlite3_bind_blob64(
+   sqlite3_stmt *pStmt, 
+   int i, 
+   const void *zData, 
+   sqlite3_uint64 nData, 
+   void (*xDel)(void*)
+ ){
+   assert( xDel!=SQLITE_DYNAMIC );
+   if( nData>0x7fffffff ){
+     return invokeValueDestructor(zData, xDel, 0);
+   }else{
+     return bindText(pStmt, i, zData, (int)nData, xDel, 0);
+   }
+ }
  int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
    int rc;
    Vdbe *p = (Vdbe *)pStmt;
@@@ -1195,11 -1236,24 +1267,27 @@@ int sqlite3_bind_text
    int nData, 
    void (*xDel)(void*)
  ){
 +#ifdef SQLITE_ENABLE_SQLRR
 +  SRRecBindText(pStmt, i, zData, nData);
 +#endif
    return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
  }
+ int sqlite3_bind_text64( 
+   sqlite3_stmt *pStmt, 
+   int i, 
+   const char *zData, 
+   sqlite3_uint64 nData, 
+   void (*xDel)(void*),
+   unsigned char enc
+ ){
+   assert( xDel!=SQLITE_DYNAMIC );
+   if( nData>0x7fffffff ){
+     return invokeValueDestructor(zData, xDel, 0);
+   }else{
+     if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
+     return bindText(pStmt, i, zData, (int)nData, xDel, enc);
+   }
+ }
  #ifndef SQLITE_OMIT_UTF16
  int sqlite3_bind_text16(
    sqlite3_stmt *pStmt, 
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/wal.c
Simple merge