- C Only\scall\sfchown\swhen\srunning\sas\sroot\sand\ssupporting\sfiles\smismatch\sthe\sdatabase\sowner\s&\sperms
- D 2012-05-31T00:21:28.876
-C Documentation\sand\sevidence\smark\supdates.\s\sRemove\sa\sredundant\sassert().
-D 2012-06-07T17:57:23.952
++C Merge\strunk\schanges\sinto\sthe\sapple-osx\sbranch.
++D 2012-06-08T01:13:17.906
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
- F Makefile.in 957c9693400fca6cb8b533b589e69ddee7bcb27c
-F Makefile.in 4f37eb61be9d38643cdd839a74b8e3bad724cfcf
++F Makefile.in f4e42073f1092a09a9cbd42aecf2f33790208cb5
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
- F Makefile.msc 7849a871b6cdb20fd51baee6bbe5965a03326be4
+ F Makefile.msc fd86027849a59a2f621b791b79eabf3f8ffbd684
F Makefile.vxworks 3b7fe7a0571fdadc61363ebc1b23732d2d6363ca
F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
- F VERSION 1e25ebddd2ed5811c10bdabe914cd46d2dc38af8
+ F VERSION 3e857b9b826e818eec9411eafe2c3fa22c1dbb8a
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
F addopcodes.awk 17dc593f791f874d2c23a0f9360850ded0286531
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
F ext/icu/icu.c eb9ae1d79046bd7871aa97ee6da51eb770134b5a
F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
- F ext/rtree/rtree.c d918e173075fbb3699c5ecfa1a89ef2b9c978b37
-F ext/rtree/rtree.c d17aecb7a92762efa7b1f5d5fd7c88fd77d70827
++F ext/rtree/rtree.c 950e43bcef7739f3b206e6da78a339ab83b3578c
F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
F ext/rtree/rtree1.test e474a2b5eff231496dbd073fe67e5fbaf7f444c9
F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
F ext/rtree/sqlite3rtree.h c34c1e41d1ab80bb8ad09aae402c9c956871a765
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 install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
- F main.mk 92babfc15d7838f01b4bf1cc14ea8d9c06772c2b
-F main.mk 84ed9c324cf0b8f4eb6f276553d1fd092b5ae0f4
++F main.mk ad374605041017b90b4e9e55a57bf6f370ba8456
F mkdll.sh 7d09b23c05d56532e9d44a50868eb4b12ff4f74a
F mkextu.sh 416f9b7089d80e5590a29692c9d9280a10dbad9f
F mkextw.sh 4123480947681d9b434a5e7b1ee08135abe409ac
F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
F src/alter.c 149cc80d9257971b0bff34e58fb2263e01998289
F src/analyze.c 70c46504c0d2543ea5cdca01140b2cd3e1d886e7
- F src/attach.c 12c6957996908edc31c96d7c68d4942c2474405f
+ F src/attach.c 577bf5675b0c50495fc28549f2fcbdb1bac71143
F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
- F src/backup.c 6be23a344d3301ae38e92fddb3a33b91c309fce4
+ F src/backup.c d7fb4c6d2ad3fe51a4ce1a897fde7b00f4de5fef
F src/bitvec.c af50f1c8c0ff54d6bdb7a80e2fceca5a93670bef
F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7
- F src/btree.c 207d4859d759074e6101bfed65cf87cdd3f794a8
-F src/btree.c f0b71054103cb77eb5e782088c16998ec4f06624
++F src/btree.c 453a91808ad20154ff2ee6ff57e8e563ad093783
F src/btree.h 48a013f8964f12d944d90e4700df47b72dd6d923
F src/btreeInt.h 38a639c0542c29fe8331a221c4aed0cb8686249e
- F src/build.c 2bb2163bb1e69f59e9f36a9413079ead42fa1d2c
+ F src/build.c 47c4506afe4bcb4ed1f4b5357582d1cb3402f8ad
F src/callback.c 0cb4228cdcd827dcc5def98fb099edcc9142dbcd
F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
- F src/ctime.c a9c26822515f81ec21588cbb482ca6724be02e33
+ F src/ctime.c 500d019da966631ad957c37705642be87524463b
F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4
F src/delete.c 4c20ea4f6213b3bc1c6a510586864b679946e05e
F src/expr.c 06a7733d19dc725dc46ba51afd9feadb4b85d991
F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
F src/insert.c 0bbffe75c254c62a5686ab5e7f88e29235e16174
F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
-F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
+F src/legacy.c 015826a958f690302d27e096a68d50b3657e4201
F src/lempar.c 0ee69fca0be54cd93939df98d2aca4ca46f44416
F src/loadext.c f20382fbaeec832438a1ba7797bee3d3c8a6d51d
- F src/main.c 9c3003dc0a5e2c7e1d79cf94a08229dd803fd8df
-F src/main.c 07e05ba330b5994fa20d3b2e8c1c146133587d68
++F src/main.c 0d708b9357776b5c9c36299def91df1d44e31e21
F src/malloc.c fe085aa851b666b7c375c1ff957643dc20a04bf6
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c b3677415e69603d6a0e7c5410a1b3731d55beda1
F src/mutex_noop.c 7682796b7d8d39bf1c138248858efcd10c9e1553
F src/mutex_os2.c 882d735098c07c8c6a5472b8dd66e19675fe117f
F src/mutex_unix.c c3a4e00f96ba068a8dbef34084465979aaf369cc
- F src/mutex_w32.c 5e54f3ba275bcb5d00248b8c23107df2e2f73e33
+ F src/mutex_w32.c db8970270841e2385a43602477e84c4b19aff1db
F src/notify.c 976dd0f6171d4588e89e874fcc765e92914b6d30
-F src/os.c e1acdc09ff3ac2412945cca9766e2dcf4675f31c
+F src/os.c 4c8c8d72a6c58ad2fde4865783e8ae26b494a85e
- F src/os.h 59beba555b65a450bd1d804220532971d4299f60
+ F src/os.h 38aabd5e3ecd4162332076f55bb09cec02165cca
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
F src/os_os2.c 4a75888ba3dfc820ad5e8177025972d74d7f2440
- F src/os_unix.c 1f91f7309b09950ffdad97dc57d139894904a621
- F src/os_win.c 24b57b4aec07ec78ae759244ab6d9759a70fe29b
- F src/pager.c 544cc84d50fea0ca921d448037b217ecabba359b
- F src/pager.h 42926ac0fe69e9d7e17a54e6b37417e581a429d7
-F src/os_unix.c d7c96b5d140f550f07345870112fae5d7ef99757
-F src/os_win.c e3d3d3e26b65a35d4293d753137a58510bd3299b
-F src/pager.c e381c118b77dc22021a1a59d3fec24815e91df78
-F src/pager.h 8b8c9bc065a3c66769df8724dfdf492ee1aab3c5
++F src/os_unix.c 767d9ae4edd0ac186a6927f4b4b7e658f50c4542
++F src/os_win.c 85f7d60e3563efc81a06b075a76b1f9ccada73b0
++F src/pager.c ca8424ef9b807ab86381c5b0450ce4752670e16e
++F src/pager.h 491e782fbefc83e115f85588987ebb7d00d9fde6
F src/parse.y f29df90bd3adc64b33114ab1de9fb7768fcf2099
F src/pcache.c f8043b433a57aba85384a531e3937a804432a346
F src/pcache.h 1b5dcc3dc8103d03e625b177023ee67764fa6b7c
- F src/pcache1.c b30b1c35908346ecc43d8d9d17f2ddf6817f8f60
- F src/pragma.c 29db41fc84bd7853d6c7ef85f9f8bd56a8be4320
- F src/prepare.c 2e49f73ffb38d7ef3302931f17412adab61e46a1
+ F src/pcache1.c 2234d84f9c003d800a57f00f8535c91667fa4f6c
-F src/pragma.c eee3e3161f82a1e06f632a8d2a82b29ba3c45889
-F src/prepare.c 33291b83cca285718048d219c67b8298501fa3a5
++F src/pragma.c 6d617d3e19e3cad43d2e2e6335602ecbc0fe631c
++F src/prepare.c 5e2babd80c5771354ffc1eddfea41fc08e43ffed
F src/printf.c 7ffb4ebb8b341f67e049695ba031da717b3d2699
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
F src/resolve.c b3c70ab28cac60de33684c9aa9e5138dcf71d6dd
F src/rowset.c f6a49f3e9579428024662f6e2931832511f831a1
-F src/select.c f6c4833c4d8e94714761d99013d74f381e084f1d
+F src/select.c 7bc4a2e66ae0fc40bb46038441e3e7bf138d7079
F src/shell.c c16f72e34f611f060546709564c121a67cb2b31b
- F src/sqlite.h.in 192eb22f3f217c00ff48a8da356a8a020f6b4a8e
-F src/sqlite.h.in 39f041ce71a0d994e2487014fc9e8721595f5bc0
++F src/sqlite.h.in a061e38514ff4a3ef5876126991607829e63f829
+F src/sqlite3_private.h a81a9c5f97c095cc3e86914a05f8fabe0011f4a1
F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477
- F src/sqliteInt.h e68fc7ec857b71836aa73c40b39fb2f0afa6a54a
-F src/sqliteInt.h 29b5348f0056d9b46d0bb94d4853db21568afde9
++F src/sqliteInt.h 81f3ce54d7485b600df4102202390461df947092
F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
F src/status.c 35939e7e03abf1b7577ce311f48f682c40de3208
F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
F src/tclsqlite.c fe5406573e1527957e00dcaf51edd9d8bd31b918
- F src/test1.c e1163ebedf8b5c95554ea15529700e1330e6210a
-F src/test1.c fc2acf0a2db517c8d19e5e55bda8e1237db77378
++F src/test1.c 03bcc5724fecac86ea8837e701807a653d82f77d
F src/test2.c 4178056dd1e7d70f954ad8a1e3edb71a2a784daf
F src/test3.c 3c3c2407fa6ec7a19e24ae23f7cb439d0275a60d
F src/test4.c d1e5a5e904d4b444cf572391fdcb017638e36ff7
F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60
F src/test_async.c 0612a752896fad42d55c3999a5122af10dcf22ad
F src/test_autoext.c 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e
-F src/test_backup.c c129c91127e9b46e335715ae2e75756e25ba27de
+F src/test_backup.c 64fd6173ad99daade1227aa17c3ca0d18fa5e5fa
- F src/test_btree.c 47cd771250f09cdc6e12dda5bc71bc0b3abc96e2
- F src/test_config.c 805727b0fec25f9a77aec2ecd6c98f8f25e41748
+ F src/test_btree.c 5b89601dcb42a33ba8b820a6b763cc9cb48bac16
-F src/test_config.c 4f7b8030287d62fe56a1d99e68b41760feae381a
++F src/test_config.c a76e8a64c9b4833eb878188e1c490d0e6965d554
F src/test_demovfs.c 20a4975127993f4959890016ae9ce5535a880094
F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
F src/test_func.c 090f2c3339e85c2c964435f99aed6f3da9d59525
F src/test_onefile.c 0396f220561f3b4eedc450cef26d40c593c69a25
F src/test_osinst.c 90a845c8183013d80eccb1f29e8805608516edba
F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
- F src/test_quota.c 47cb7b606160ce8f603a7d47143dd1f74de09058
- F src/test_quota.h ee5da2ae7f84d1c8e0e0e2ab33f01d69f10259b5
+ F src/test_quota.c 0af3e1e9a1f22bc5f431dd3efcc32762f4109f58
+ F src/test_quota.h 8761e463b25e75ebc078bd67d70e39b9c817a0cb
-F src/test_rtree.c aba603c949766c4193f1068b91c787f57274e0d9
+F src/test_rtree.c a1bbfc30f14d2bad2f93dbea7dcc697c97a40c66
F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0
F src/test_server.c 2f99eb2837dfa06a4aacf24af24c6affdf66a84f
F src/test_spellfix.c 495535f3eb57acdc384572da570e869bb1834bf4
F src/update.c d3076782c887c10e882996550345da9c4c9f9dea
F src/utf.c 890c67dcfcc7a74623c95baac7535aadfe265e84
F src/util.c 4f6cfad661b2e3454b0cdd5b1b9d39a54942d0e3
- F src/vacuum.c bfd53f9bd20a8fdb70b0fa8e77182b866875c0d8
- F src/vdbe.c baed8c1e0525abfdaec81bdb3a8d0174ffcb7f68
+ F src/vacuum.c 587a52bb8833d7ac15af8916f25437e2575028bd
-F src/vdbe.c f5ad3c06dc3fe647097065829c013f3f1b9eadca
++F src/vdbe.c ae6803fd2e96e11898ee5d98dfa9854b4b53033f
F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb
F src/vdbeInt.h 6ff4180a05683566a8835d12f7ec504b22932c82
-F src/vdbeapi.c 3662b6a468a2a4605a15dfab313baa6dff81ad91
-F src/vdbeaux.c d52c8a424fdd4b1d5cf1ac93cc7cd20da023ec5c
+F src/vdbeapi.c bf1f632719ee596d43ccf6c2ed68ff8911f5b376
+F src/vdbeaux.c 88b9df24bcab179fbe7a39df7b3e17cce6f372d7
F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb
F src/vdbemem.c cb55e84b8e2c15704968ee05f0fae25883299b74
F src/vdbesort.c b25814d385895544ebc8118245c8311ded7f81c9
-F src/vdbetrace.c 79059ebd17b3c8545fab2a24253713e77e4ab392
+F src/vdbetrace.c 6700008a6a05e6e39531ed252c32557ceb962b91
- F src/vtab.c ae657b1c22cff43863458e768a44f915c07bc0e4
+ F src/vtab.c bb8ea3a26608bb1357538a5d2fc72beba6638998
-F src/wal.c 7bb3ad807afc7973406c805d5157ec7a2f65e146
-F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6
+F src/wal.c 1ff2ebb47ba29610abd768bf74cecd9c33049ebf
+F src/wal.h ce626f1f9000caf09a99a6634a8d794686f92e1b
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
F src/where.c 24c7494d8875ead994b4dfe5461340c27fd424ca
-F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823
+F test/8_3_names.test 0ed0f6711fefac33829ef9f1d6ca3c56c48ef1c7
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 52fc8dee494092031a556911d404ca30a749a30b
F test/badutf2.test f5bc7f2d280670ecd79b9cf4f0f1760c607fe51f
F test/bc_common.tcl 5c8689cc6d2fb44b7c0968ae4f85eb26d50022fa
F test/between.test 16b1776c6323faadb097a52d673e8e3d8be7d070
- F test/bigfile.test 82dfe93ee7eb9e2e05641afa2b39ffd947a92ff1
- F test/bigfile2.test 852f948cb492aadab45b58f4d2f3b0832a115cb0
+ F test/bigfile.test 8f88b5ef065e31c615c49d725ede94155fbe9609
+ F test/bigfile2.test 8a3c242c3c3481e7cde5a6ef2a66fdc367a095f7
F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747
-F test/bind.test 3c7b320969000c441a70952b0b15938fbb66237c
+F test/bind.test 30af0fc61bc3836034215cdbdeca46113ca1b4a1
F test/bindxfer.test efecd12c580c14df5f4ad3b3e83c667744a4f7e0
F test/bitvec.test 75894a880520164d73b1305c1c3f96882615e142
F test/blob.test e7ac6c7d3a985cc4678c64f325292529a69ae252
F test/boundary4.tcl 0bb4b1a94f4fc5ae59b79b9a2b7a140c405e2983
F test/boundary4.test 89e02fa66397b8a325d5eb102b5806f961f8ec4b
F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
-F test/cache.test f64136b0893c293d0b910ed057b3b711249099a7
+F test/cache.test 3e50417948e06959aca785db81896b28a38c36dd
F test/capi2.test 835d4cee9f542ea50fa8d01f3fe6de80b0627360
- F test/capi3.test 8dedb0050610e9ff95cd9d487beb0ce5f33a31ee
+ F test/capi3.test 56ab450125ead38846cbae7e5b6a216686c3cffa
F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4
- F test/capi3c.test 01f197d73f4d4d66316483662f475cab7ab5bd60
+ F test/capi3c.test 93d24621c9ff84da9da060f30431e0453db1cdb0
F test/capi3d.test 17b57ca28be3e37e14c2ba8f787d292d84b724a1
F test/capi3e.test f7408dda65c92b9056199fdc180f893015f83dde
F test/cast.test 4c275cbdc8202d6f9c54a3596701719868ac7dc3
F test/null.test a8b09b8ed87852742343b33441a9240022108993
F test/openv2.test 0d3040974bf402e19b7df4b783e447289d7ab394
F test/oserror.test 50417780d0e0d7cd23cf12a8277bb44024765df3
- F test/pager1.test 717d4fbe95a704c0b08b22a85b06c077b898416d
-F test/pager1.test 2163c6ef119f497a71a84137c957c63763e640ab
++F test/pager1.test f1f261a4dc5a40b385dfcef946c2e772180d12a9
F test/pager2.test 745b911dde3d1f24ae0870bd433dfa83d7c658c1
F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
-F test/pagerfault.test 452f2cc23e3bfcfa935f4442aec1da4fe1dc0442
+F test/pagerfault.test a15ef77c8495882d7debb43794e87b6e46174c8a
F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401
F test/pagerfault3.test f16e2efcb5fc9996d1356f7cbc44c998318ae1d7
F test/pageropt.test 9191867ed19a2b3db6c42d1b36b6fbc657cd1ab0
F test/pagesize.test 1dd51367e752e742f58e861e65ed7390603827a0
-F test/pcache.test 065aa286e722ab24f2e51792c1f093bf60656b16
+F test/pcache.test fa8a2b0677225765eced806d9d1676b78a9e2c40
F test/pcache2.test a83efe2dec0d392f814bfc998def1d1833942025
- F test/permutations.test dbda172249564f43ec556108a704581044c57dbd
- F test/pragma.test e284a28b6e9debfb8b55d5413b7c27996e3ae2cd
+ F test/permutations.test 2af90e00cea9e7e7c0a6b16d34727cb5bbae14dd
-F test/pragma.test cb736bcc75b8b629af21ac0ad83ba1d054a2107b
++F test/pragma.test 37d3475b699de6d7846bca81de3d0324b3a45054
F test/pragma2.test 3a55f82b954242c642f8342b17dffc8b47472947
F test/printf.test ec9870c4dce8686a37818e0bf1aba6e6a1863552
F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301
F test/selectB.test 954e4e49cf1f896d61794e440669e03a27ceea25
F test/selectC.test 871fb55d884d3de5943c4057ebd22c2459e71977
F test/server1.test 46803bd3fe8b99b30dbc5ff38ffc756f5c13a118
- F test/shared.test 9d9b7085f877a8fd4bf3b353f53e52352edbf3f5
-F test/shared.test 1da9dbad400cee0d93f252ccf76e1ae007a63746
++F test/shared.test 13376ba3be1c5685ab1ec184189adabd15fa70be
F test/shared2.test 03eb4a8d372e290107d34b6ce1809919a698e879
F test/shared3.test ebf77f023f4bdaa8f74f65822b559e86ce5c6257
F test/shared4.test 72d90821e8d2fc918a08f16d32880868d8ee8e9d
F test/table.test a59d985ca366e39b17b175f387f9d5db5a18d4e2
F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126
F test/tclsqlite.test 1597d353308531527583481d14d9da52ea8ed0af
-F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c
+F test/tempdb.test 3263e5c3f0604e54d307481e8587327c54544d18
F test/temptable.test 51edd31c65ed1560dd600b1796e8325df96318e2
F test/temptrigger.test 26670ed7a39cf2296a7f0a9e0a1d7bdb7abe936d
- F test/tester.tcl 713ddb69b5c2737aa879662e20ec59d708631ec8
-F test/tester.tcl 2665f64c9ce71944b4d41269114e658fb81bda05
++F test/tester.tcl 6e5ea4e52c6ba767e90903fcc7c4c57a28c08fd4
F test/thread001.test 7cc2ce08f9cde95964736d11e91f9ab610f82f91
F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58
F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
F test/vtab_shared.test 82f463886e18d7f8395a4b6167c91815efe54839
- F test/wal.test b03ffe24f722017c493bb512e53956583a271c15
-F test/wal.test a040047d7f2b9f34bc4d597964e5e7c09609c635
-F test/wal2.test d5021064bebfc717fe2bf4db2536ea030b76a773
-F test/wal3.test 6504bbf348b2d6dfade64a064f1050fd617e8706
-F test/wal4.test 4744e155cd6299c6bd99d3eab1c82f77db9cdb3c
-F test/wal5.test f58ed4b8b542f71c7441da12fbd769d99b362437
-F test/wal6.test 2e3bc767d9c2ce35c47106148d43fcbd072a93b3
-F test/wal7.test 2ae8f427d240099cc4b2dfef63cff44e2a68a1bd
-F test/wal8.test 5ab217d21f7e5e86af2933a4ffd0d8357cc2c0bd
-F test/wal_common.tcl a98f17fba96206122eff624db0ab13ec377be4fe
-F test/walbak.test b9f68e39646375c2b877be906babcc15d38b4877
-F test/walbig.test f437473a16cfb314867c6b5d1dbcd519e73e3434
-F test/walcksum.test f5447800a157c9e2234fbb8e80243f0813941bde
-F test/walcrash.test 4457436593be8c136f9148487c7dccd5e9013af2
-F test/walcrash2.test 019d60b89d96c1937adb2b30b850ac7e86e5a142
-F test/walcrash3.test 595e44c6197f0d0aa509fc135be2fd0209d11a2c
-F test/walfault.test 97394d8de82a99f7abf1c12ed229640607fd0ad2
-F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
-F test/walmode.test 4022fe03ae6e830583672caa101f046438a0473c
-F test/walnoshm.test 84ca10c544632a756467336b7c3b864d493ee496
-F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6
-F test/walro.test e6bb27762c9f22601cbb8bff6e0acfd124e74b63
-F test/walshared.test 6dda2293880c300baf5d791c307f653094585761
-F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a
-F test/walthread.test a2ed5270eb695284d4ad27d252517bdc3317ee2a
++F test/wal.test 5759631b0e610d616c33cc21124b3395f39cd0c7
+F test/wal2.test 0f616db53cbf93bbd7a8ef8b33f048a2b43d2f0a
+F test/wal3.test ae86a92d41d81730278fca0b71368f3e78e9c64a
+F test/wal4.test 5755887f321baa4c55de0b91066fa7d0cafcac9d
+F test/wal5.test 187ae92cc9ba1ec6803681b9025cad89af1a8c69
+F test/wal6.test c561d1e44c89f9cb458a7b03003ed4baac08ba07
+F test/wal7.test 18cf68ab8010ae0a2baaa48e5b59567a9503e63e
+F test/wal8.test a0b7dee73fc3d3bbf167e04533d37df379a0b7d1
+F test/wal_common.tcl 15f152fd55703975878741beca6cfa4209d5b3b3
+F test/walbak.test 67339b9e54db0cdaaf21287349bc8056e2919f96
+F test/walbig.test 3ca3d94751b80054eed5bda20a1339ae1f619483
+F test/walcksum.test 6510e82303f6fffc2c55bb77a7774cd0eed21a6e
+F test/walcrash.test a8fa8d8a9a50a49b7abaf8a4a7e2c7ea352c49be
+F test/walcrash2.test c032d0040374ae28b41f99fc0cc290b4e2e34f17
+F test/walcrash3.test 97e775404f4c76e5c46f71fbd09691c7e9c25c68
+F test/walfault.test e5309befcaf4ab08151c35dba20cc5b8a5846748
+F test/walhook.test 5d2bdb04fd3e220e2f96e6b566d57e00020bdaec
+F test/walmode.test aa45339b4afa435dde5d88e71a95459cc221a3f4
+F test/walnoshm.test 559b878f3aab838971d820329ca35f1caa7b038e
+F test/walpersist.test abd956d66e2f36d2d9d05d3a969f48be6d2ddbec
+F test/walro.test 180321fa4e7cf7e98b5df232763c3e0781673a41
+F test/walshared.test 04590b10c677f75318701818c50bc0dda5da64ab
+F test/walslow.test 658066419a92d3bd85be71a11ce477af4ffe9153
+F test/walthread.test c3aaf9ef7ad21ae79c2345425bfddb39cdac954f
F test/where.test 4c9f69987ed2aa0173fa930f2b41ab9879478cd8
F test/where2.test 43d4becaf5a5df854e6c21d624a1cb84c6904554
F test/where3.test 667e75642102c97a00bf9b23d3cb267db321d006
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
F tool/mksqlite3c-noext.tcl 105023aa86f696a74b1d6a4929d1e1c3baf9471c
- F tool/mksqlite3c.tcl 90f243ad9c76f814716452a4867a6a3befdb721a
-F tool/mksqlite3c.tcl f289ba51f74f45c71a80c13e6c74a6dd92763253
++F tool/mksqlite3c.tcl 2139ffe033d586b265e0c0bb0cabe706016b9dda
F tool/mksqlite3h.tcl 78013ad79a5e492e5f764f3c7a8ef834255061f8
F tool/mksqlite3internalh.tcl 7b43894e21bcb1bb39e11547ce7e38a063357e87
F tool/offsets.c fe4262fdfa378e8f5499a42136d17bf3b98f6091
F tool/symbols.sh fec58532668296d7c7dc48be9c87f75ccdb5814f
F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
- F tool/warnings-clang.sh a8a0a3babda96dfb1ff51adda3cbbf3dfb7266c2
+ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
- P 972e75bb5d7349297b94cec2f19561ee105a22cf
- R dc2606f2c7e5fe470f213999e83f4d98
- U adam
- Z f9040a054a2aa40cbe8724b598475c77
-P 7caca1939ce70d5b14ae8ca8ff6afb62f8aff361
-R 7d7d8055ffab93415bb0679c51b1e783
++P ed53b645cc791e2c75885866ecb668fff14f8e7e cfcbf9375fddd0aae0dd17bdc76a710ab77ef667
++R a2bdb973ff39fb5034d6425a7a821a3b
+ U drh
-Z 4e021c1abd989c10ef460664cb392a3f
++Z 91498d3a538de86f544b60346b3f3742
rc = robust_ftruncate(pFile->h, (off_t)nByte);
if( rc ){
- pFile->lastErrno = errno;
+ storeLastErrno(pFile, errno);
return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
}else{
- #ifndef NDEBUG
+ #ifdef SQLITE_DEBUG
/* If we are doing a normal write to a database file (as opposed to
** doing a hot-journal rollback or a write to some file other than a
** normal database file) and we truncate the file to zero length,
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
** 1 or 0 depending on whether or not bit mask of pFile->ctrlFlags is set.
}
}
++#if defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE
+static const char *proxySharedMemoryBasePath(unixFile *);
++#endif
+
/*
** Open a shared-memory area associated with open database file pDbFd.
** This particular implementation uses mmapped files.
if( unixShmSystemLock(pShmNode, F_WRLCK, UNIX_SHM_DMS, 1)==SQLITE_OK ){
if( robust_ftruncate(pShmNode->h, 0) ){
rc = unixLogError(SQLITE_IOERR_SHMOPEN, "ftruncate", zShmFilename);
- }else{
- pDbFd->ctrlFlags |= UNIXFILE_CHOWN;
+ }else{
+ /* If running as root set the uid/gid of the shm file to match
+ ** the database */
+ uid_t euid = geteuid();
+ if( (!pShmNode->isReadonly) && euid==0 && (euid!=sStat.st_uid || getegid()!=sStat.st_gid) ){
+ if( osFchown(pShmNode->h, sStat.st_uid, sStat.st_gid) ){
+ rc = SQLITE_IOERR_SHMOPEN;
+ }
+ }
}
}
if( rc==SQLITE_OK ){
rc = unixLogError(SQLITE_CANTOPEN_BKPT, "open", zName);
goto open_finished;
}
- /* If this process is running as root and if creating a new rollback
- ** journal or WAL file, set the ownership of the journal or WAL to be
- ** the same as the original database.
- */
- if( flags & (SQLITE_OPEN_WAL|SQLITE_OPEN_MAIN_JOURNAL) ){
- osFchown(fd, uid, gid);
+
- p->ctrlFlags |= UNIXFILE_CHOWN;
+ /* if we're opening the wal or journal and running as root, set the
+ ** journal uid/gid */
+ if( !isReadonly && (flags & (SQLITE_OPEN_WAL|SQLITE_OPEN_MAIN_JOURNAL)) ){
+ uid_t euid = geteuid();
+ if( euid==0 && (euid!=uid || getegid()!=gid) ){
+ if( osFchown(fd, uid, gid) ){
+ rc = SQLITE_CANTOPEN_BKPT;
+ goto open_finished;
+ }
+ }
}
}
assert( fd>=0 );
return 0;
}
++#if SQLITE_ENABLE_LOCKING_STYLE
+static int isProxyLockingMode(unixFile *pFile) {
+ return (pFile->pMethod == &proxyIoMethods) ? 1 : 0;
+}
++#endif
+
++#if defined(__APPLE__) && SQLITE_ENABLE_LOCKING_STYLE
+/*
+** Return the shared memory base path based on the lock proxy file if the
+** lock proxy file is hosted on a shared memory compatible FS
+*/
+static const char *proxySharedMemoryBasePath(unixFile *pFile) {
+ proxyLockingContext *pCtx;
+ unixFile *pLockFile;
+
+ assert(pFile!=NULL && pFile->lockingContext!=NULL);
+ assert(pFile->pMethod == &proxyIoMethods);
+ pCtx = ((proxyLockingContext *)(pFile->lockingContext));
+ pLockFile = pCtx->lockProxy;
+ if( pLockFile->pMethod->iVersion>=2 && pLockFile->pMethod->xShmMap!=0 ){
+ return pCtx->lockProxyPath;
+ }
+ return NULL;
+}
++#endif
+
/*
** Create a new VFS file descriptor (stored in memory obtained from
** sqlite3_malloc) and open the file named "path" in the file descriptor.