]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge all the latest changes from the trunk into the apple-osx branch.
authordrh <drh@noemail.net>
Fri, 19 Nov 2010 23:50:48 +0000 (23:50 +0000)
committerdrh <drh@noemail.net>
Fri, 19 Nov 2010 23:50:48 +0000 (23:50 +0000)
FossilOrigin-Name: c8bc057c7def6bbbebd89ee52b582bad75fb0509

30 files changed:
1  2 
Makefile.in
ext/rtree/rtree.c
main.mk
manifest
manifest.uuid
src/func.c
src/main.c
src/mem1.c
src/os_unix.c
src/pragma.c
src/prepare.c
src/test1.c
src/test_config.c
src/vdbe.c
src/vdbeapi.c
test/exclusive.test
test/lock6.test
test/malloc_common.tcl
test/memsubsys1.test
test/pagerfault.test
test/pragma.test
test/stmt.test
test/tempdb.test
test/tester.tcl
test/wal2.test
test/wal3.test
test/walfault.test
test/walmode.test
test/walshared.test
tool/mksqlite3c.tcl

diff --cc Makefile.in
index 5932f6561eb15f733255a587d14ba701e95929f9,c9d42c622d8dc5d5ce1d74d7fd29667f58048946..00bb894c9fa767e16270cca0b8dbe3cdea7243e4
@@@ -463,17 -464,8 +467,19 @@@ EXTHDR += 
    $(TOP)/ext/rtree/rtree.h
  EXTHDR += \
    $(TOP)/ext/icu/sqliteicu.h
+ EXTHDR += \
+   $(TOP)/ext/rtree/sqlite3rtree.h
 +EXTHDR += \
 +  $(TOP)/ext/sqlrr/sqlrr.h
 +
 +# If using the amalgamation, use sqlite3.c directly to build the test
 +# fixture.  Otherwise link against libsqlite3.la.  (This distinction is
 +# necessary because the test fixture requires non-API symbols which are
 +# hidden when the library is built via the amalgamation).
 +#
 +TESTFIXTURE_SRC0 = $(TESTSRC2) libsqlite3.la
 +TESTFIXTURE_SRC1 = sqlite3.c
 +TESTFIXTURE_SRC = $(TESTSRC) $(TOP)/src/tclsqlite.c $(TESTFIXTURE_SRC$(USE_AMALGAMATION))
  
  # This is the default Makefile target.  The objects listed here
  # are what get build when you type just "make" with no arguments.
index 4fc4f43d3fd61eff67d38b94c3293fed7756d112,9cac2f3c07521da08241e0745cda8fcf5a7e7af6..0b784ea2b982e753e0c32f2fb8ea1aa018dbfbd8
  
  #include <string.h>
  #include <assert.h>
 +#include <stdint.h>
  
  #ifndef SQLITE_AMALGAMATION
+ #include "sqlite3rtree.h"
  typedef sqlite3_int64 i64;
  typedef unsigned char u8;
  typedef unsigned int u32;
@@@ -145,6 -189,15 +190,15 @@@ struct Rtree 
  #define RTREE_REINSERT(p) RTREE_MINCELLS(p)
  #define RTREE_MAXCELLS 51
  
 -/*
++/* 
+ ** The smallest possible node-size is (512-64)==448 bytes. And the largest
+ ** supported cell size is 48 bytes (8 byte rowid + ten 4 byte coordinates).
+ ** Therefore all non-root nodes must contain at least 3 entries. Since 
+ ** 2^40 is greater than 2^64, an r-tree structure always has a depth of
+ ** 40 or less.
+ */
+ #define RTREE_MAX_DEPTH 40
  /* 
  ** An rtree cursor object.
  */
@@@ -741,13 -851,39 +852,39 @@@ static int rtreeEof(sqlite3_vtab_curso
    return (pCsr->pNode==0);
  }
  
 -/*
++/* 
+ ** The r-tree constraint passed as the second argument to this function is
+ ** guaranteed to be a MATCH constraint.
+ */
+ static int testRtreeGeom(
+   Rtree *pRtree,                  /* R-Tree object */
+   RtreeConstraint *pConstraint,   /* MATCH constraint to test */
+   RtreeCell *pCell,               /* Cell to test */
+   int *pbRes                      /* OUT: Test result */
+ ){
+   int i;
+   double aCoord[RTREE_MAX_DIMENSIONS*2];
+   int nCoord = pRtree->nDim*2;
+   assert( pConstraint->op==RTREE_MATCH );
+   assert( pConstraint->pGeom );
+   for(i=0; i<nCoord; i++){
+     aCoord[i] = DCOORD(pCell->aCoord[i]);
+   }
+   return pConstraint->xGeom(pConstraint->pGeom, nCoord, aCoord, pbRes);
+ }
  /* 
  ** Cursor pCursor currently points to a cell in a non-leaf page.
- ** Return true if the sub-tree headed by the cell is filtered
+ ** Set *pbEof to true if the sub-tree headed by the cell is filtered
  ** (excluded) by the constraints in the pCursor->aConstraint[] 
  ** array, or false otherwise.
+ **
+ ** Return SQLITE_OK if successful or an SQLite error code if an error
+ ** occurs within a geometry callback.
  */
- static int testRtreeCell(Rtree *pRtree, RtreeCursor *pCursor){
+ static int testRtreeCell(Rtree *pRtree, RtreeCursor *pCursor, int *pbEof){
    RtreeCell cell;
    int ii;
    int bRes = 0;
      );
  
      switch( p->op ){
-       case RTREE_LE: case RTREE_LT: bRes = p->rValue<cell_min; break;
-       case RTREE_GE: case RTREE_GT: bRes = p->rValue>cell_max; break;
+       case RTREE_LE: case RTREE_LT: 
+         bRes = p->rValue<cell_min; 
+         break;
+       case RTREE_GE: case RTREE_GT: 
+         bRes = p->rValue>cell_max; 
+         break;
 -      case RTREE_EQ:
 +      case RTREE_EQ: 
          bRes = (p->rValue>cell_max || p->rValue<cell_min);
          break;
+       default: {
+         int rc;
+         assert( p->op==RTREE_MATCH );
+         rc = testRtreeGeom(pRtree, p, &cell, &bRes);
+         if( rc!=SQLITE_OK ){
+           return rc;
+         }
+         bRes = !bRes;
+         break;
+       }
      }
    }
  
diff --cc main.mk
Simple merge
diff --cc manifest
index 62cf24b18e3d4417f1549f585991dd8b6c111be2,4c91ca52d034d3db07967405737382d39657621f..30e6570b2572dd1d370d001fb36f64dcfe3efaa8
+++ b/manifest
@@@ -1,7 -1,7 +1,10 @@@
- C Integrated\sproxy\slocking\sfile\ssupport\sfor\sWAL\sjournal\smode\sand\sdouble\sfree\sfix
- D 2010-11-09T00:43:59
 -C Add\stests\sfor\s"PRAGMA\scheckpoint_fullfsync".
 -D 2010-11-19T18:48:10
++-----BEGIN PGP SIGNED MESSAGE-----
++Hash: SHA1
++
++C Merge\sall\sthe\slatest\schanges\sfrom\sthe\strunk\sinto\sthe\sapple-osx\sbranch.
++D 2010-11-19T23:50:48
  F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
- F Makefile.in c58f7d37ad0f9b28655ba4e28c6cb0f879569cd7
 -F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
++F Makefile.in 9a343cc2c92c47da1b51941ab10a37db213e50b3
  F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
  F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151
  F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
@@@ -78,25 -80,26 +83,29 @@@ F ext/icu/README.txt bf8461d8cdc6b8f514
  F ext/icu/icu.c 850e9a36567bbcce6bd85a4b68243cad8e3c2de2
  F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
  F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
- F ext/rtree/rtree.c 4646fb3f52f11842450c6465af382589d8a232ab
 -F ext/rtree/rtree.c 1a15546893b4c05df810ebc18d3bf910ac8ca601
++F ext/rtree/rtree.c d818635ff92b7ec84ed055b136b97da262b4f4d1
  F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
- F ext/rtree/rtree1.test 51bb0cd0405970501e63258401ae5ad235a4f468
- F ext/rtree/rtree2.test 7b665c44d25e51b3098068d983a39902b2e2d7a1
- F ext/rtree/rtree3.test dece988c363368af8c11862995c762071894918f
- F ext/rtree/rtree4.test 94fdd570ab5bc47244d87d4590023be43ac786bd
- F ext/rtree/rtree5.test 92508f5152a50110af6551fa5b769d1bbd7c4ef3
- F ext/rtree/rtree6.test 903720aaab819764c3693aaac0affe8174104ac8
- F ext/rtree/rtree7.test 6fd29fb8e13795c822f4ceeea92ab5d61c96976d
+ F ext/rtree/rtree1.test dbd4250ac0ad367a262eb9676f7e3080b0368206
+ F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
+ F ext/rtree/rtree3.test a494da55c30ee0bc9b01a91c80c81b387b22d2dc
+ F ext/rtree/rtree4.test 0061e6f464fd3dc6a79f82454c5a1c3dadbe42af
+ F ext/rtree/rtree5.test ce3d7ccae2cfd9d2e1052b462424964c9bdcda12
+ F ext/rtree/rtree6.test 309806a2a27ef5897d4dd6aee2e8006bf754cc22
+ F ext/rtree/rtree7.test bcb647b42920b3b5d025846689147778485cc318
+ F ext/rtree/rtree8.test 9772e16da71e17e02bdebf0a5188590f289ab37d
+ F ext/rtree/rtree9.test df9843d1a9195249c8d3b4ea6aedda2d5c73e9c2
+ F ext/rtree/rtreeA.test ace05e729a36e342d40cf94e9efc7b4723d9dcdf
  F ext/rtree/rtree_perf.tcl 6c18c1f23cd48e0f948930c98dfdd37dfccb5195
  F ext/rtree/rtree_util.tcl 06aab2ed5b826545bf215fff90ecb9255a8647ea
- F ext/rtree/tkt3363.test 2bf324f7908084a5f463de3109db9c6e607feb1b
+ F ext/rtree/sqlite3rtree.h 1af0899c63a688e272d69d8e746f24e76f10a3f0
+ F ext/rtree/tkt3363.test 142ab96eded44a3615ec79fba98c7bde7d0f96de
  F ext/rtree/viewrtree.tcl eea6224b3553599ae665b239bd827e182b466024
- F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
 +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 c65aaec3a68162beb49281cbfed56cf17f1701a1
 -F main.mk 05d0f3475dd331896bd607cfb45c5e21b94589ad
++F main.mk bb9f05a55a75ca2aed934bb9fbdb985ae97c6a3e
  F mkdll.sh 7d09b23c05d56532e9d44a50868eb4b12ff4f74a
  F mkextu.sh 416f9b7089d80e5590a29692c9d9280a10dbad9f
  F mkextw.sh 4123480947681d9b434a5e7b1ee08135abe409ac
@@@ -109,45 -112,45 +118,45 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc
  F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
- F src/alter.c 8dc27638e7e2553e80b2b621f232be5eb1e85ef3
- F src/analyze.c da65ce99bb159b10e85a1e460adbe53a88062500
- F src/attach.c 17bec1f18254d9341369f20f90ba24ce35d20d10
+ F src/alter.c 6a0c176e64a34929a4436048066a84ef4f1445b3
+ F src/analyze.c 1ea594a912a14138e20a05db09d9065e46f29a2a
+ F src/attach.c 252c4f7e36cc219349451ed63e278c60e80b26f3
  F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
- F src/backup.c 8ff0b7018df253c7f30d3f9702b0b16f19209d5c
+ F src/backup.c d5b0137bc20327af08c14772227cc35134839c30
  F src/bitvec.c af50f1c8c0ff54d6bdb7a80e2fceca5a93670bef
  F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff
- F src/btree.c 5047fb303cdf6806a42676a6f513c57e15b7d69b
- F src/btree.h b4ba2fdf6b64c7c376bdfffa826af6b786b151d9
- F src/btreeInt.h 5b034ff54800046cc5870605d683ac1f9134bd99
- F src/build.c 0018d49629fc4807100c988dd191dd95e185bb38
- F src/callback.c da3c38d0ef5d7f04fae371e519bda61aa9cb1704
+ F src/btree.c ccafb8a86e9837daabe89ec590862907a669ecad
+ F src/btree.h 10f9296bf4edf034f5adce921b7b4383a56a1c90
+ F src/btreeInt.h c424f2f131cc61ddf130f9bd736b3df12c8a51f0
+ F src/build.c 00a327120d81ace6267e714ae8010c997d55de5d
+ F src/callback.c a1d1b1c9c85415dff013af033e2fed9c8382d33b
  F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
  F src/ctime.c 4f3aadad62c6c9f0d4e5a96718516ac4e3c598df
- F src/date.c 5dd8448a0bfea8d31fb14cff487d0c06ff8c8b20
+ F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b
  F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd
- F src/expr.c 9ee507c3dc6eaa5657cbd1dad026cdeda89c559f
+ F src/expr.c 4b05c74061e9597f16bea6857b5598a8b5d5be5e
  F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
- F src/fkey.c 58bbf52c6ddd3f64ca40a3230f9e548a83a5cb16
- F src/func.c 62373e488ecf8b29a28548ff9d922a9fae36b808
+ F src/fkey.c 17950a28f28b23e8ad3feaac5fc88c324d2f600a
 -F src/func.c 2b7cf54d2569c2eba42fe81165d1932b546681a3
++F src/func.c 3856c6899fa4a9cb2da7b00cf5796171d88e34ae
  F src/global.c 02335177cf6946fe5525c6f0755cf181140debf3
  F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af
  F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970
  F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
  F src/insert.c a4995747c062256582a90b4f87f716e11b067050
  F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
 -F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
 +F src/legacy.c 015826a958f690302d27e096a68d50b3657e4201
  F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e
- F src/loadext.c 6d422ea91cf3d2d00408c5a8f2391cd458da85f8
- F src/main.c 79573a52c9746bdc3e7942e0127556fa39cdbae5
- F src/malloc.c 19a468460c7df72de245f10c06bd0625777b7c83
+ F src/loadext.c 8af9fcc75708d60b88636ccba38b4a7b3c155c3e
 -F src/main.c 721e5530b14b91a1fb6aead279af8b8729fa9a20
++F src/main.c 657885e071f21e601abb727bf4794e55c0722df8
+ F src/malloc.c 3d7284cd9346ab6e3945535761e68c23c6cf40ef
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
- F src/mem1.c 0f36f1eecd786240924a56f8796ffa850d47a96f
- F src/mem2.c 9e5f72e38573db9598fe60d3fa530d473cc8714e
 -F src/mem1.c 00bd8265c81abb665c48fea1e0c234eb3b922206
++F src/mem1.c 46095d62b241466ef51970e592aa3a7a87e443e1
+ F src/mem2.c e307323e86b5da1853d7111b68fd6b84ad6f09cf
  F src/mem3.c 9b237d911ba9904142a804be727cc6664873f8a3
- F src/mem5.c eb7a5cb98915dd7a086fa415ce3a5a0f20d0acff
- F src/memjournal.c 4a93a25ad9f76c40afa070ffd7187eb3a5fd7aee
+ F src/mem5.c 6fe00f46997bebb690397cb029719f711e7640e3
+ F src/memjournal.c 0ebce851677a7ac035ba1512a7e65851b34530c6
  F src/mutex.c 6949180803ff05a7d0e2b9334a95b4fb5a00e23f
- F src/mutex.h 6fde601e55fa6c3fae768783c439797ab84c87c6
+ F src/mutex.h fe2ef5e1c4dae531d5a544f9241f19c56d26803d
  F src/mutex_noop.c d5cfbca87168c661a0b118cd8e329a908e453151
  F src/mutex_os2.c 6a62583e374ba3ac1a3fcc0da2bfdac7d3942689
  F src/mutex_unix.c abb8c98a6c27c57280e71522d059e929c708d019
@@@ -157,33 -160,32 +166,33 @@@ F src/os.c 22ac61d06e72a0dac90040014733
  F src/os.h 9dbed8c2b9c1f2f2ebabc09e49829d4777c26bf9
  F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f
  F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e
- F src/os_unix.c 79cf726c9a0bcc4691a01389031513c10bf15bed
- F src/os_win.c 51cb62f76262d961ea4249489383d714501315a7
- F src/pager.c a5f5d9787b11dfb0b6082e6f5846d00b459a8e19
- F src/pager.h ef8c8f71ab022cc2fff768a1175dd32355be9dcd
 -F src/os_unix.c de5be4cdbf3d07018059934eaf7e5d8d594a895c
++F src/os_unix.c 357e5f1b261c601f0fef1211a040cc699056298f
+ F src/os_win.c 2f90f7bdec714fad51cd31b4ecad3cc1b4bb5aad
+ F src/pager.c a8b36940ca8afcb45224e0017669782b3b2c90a3
+ F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76
  F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
- F src/pcache.c 1e9aa2dbc0845b52e1b51cc39753b6d1e041cb07
+ F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa
  F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
- F src/pcache1.c e921e8a1d52c93abde63cb6dad1fa39770410c52
- F src/pragma.c 3dbb254a99d7a5ccaff8eb1f8689556ff82fe6d0
- F src/prepare.c 23b5da0608820c9f76aa61d4955ebdbd23ffda36
+ F src/pcache1.c e9578a3beac26f229ee558a4e16c863f2498185f
 -F src/pragma.c 8e87e9e3e8a6734995d22f60dcc8bb838db52436
 -F src/prepare.c c2b318037d626fed27905c9446730b560637217a
++F src/pragma.c a56ea45deaa2e81227a8a26a2aa6745f21699700
++F src/prepare.c 75d214bf34d3891cfafb8c4c75df3f7f9acbc4d6
  F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506
  F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
  F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
  F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
- F src/select.c 8add6cab889fc02e1492eda8dba462ccf11f51dd
+ F src/select.c 550d67688f5e8bc8022faf6d014838afba1415af
  F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
- F src/sqlite.h.in 2d72a6242df41c517e38eec8791abcf5484a36f1
+ F src/sqlite.h.in e6e87d10e6a3756b8c7e9a11703716b6a1575a40
 +F src/sqlite3_private.h 2a814d17913732831acf13e7e87860105a3416e4
- F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
- F src/sqliteInt.h e33b15e8176442bf7484f0e716edfd1ce03b2979
+ F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
+ F src/sqliteInt.h f5b5041bfebd5654212992f6ebaa3f575c4b9c17
  F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
  F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b
  F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
- F src/tclsqlite.c cacee9482417b6fc6043f6bb831ff9496d46242d
- F src/test1.c 6abff878520c77f10891b06c36a57b3226ebc3d4
+ F src/tclsqlite.c 77c5c4b8ac7b2d94ee480e1ad626fbd921d948e4
 -F src/test1.c c2aa29d0fd6db7506fb7f0de7bff1386078296df
++F src/test1.c b0cea79b02e227a8199c89c2e7a97b6e9cc613a2
  F src/test2.c 80d323d11e909cf0eb1b6fbb4ac22276483bcf31
- F src/test3.c 4c21700c73a890a47fc685c1097bfb661346ac94
+ F src/test3.c 056093cfef69ff4227a6bdb9108564dc7f45e4bc
  F src/test4.c 0528360b5025688002a5feb6be906ddce52eaaee
  F src/test5.c e1a19845625144caf038031234a12185e40d315c
  F src/test6.c c7256cc21d2409486d094277d5b017e8eced44ba
@@@ -192,9 -194,9 +201,9 @@@ F src/test8.c 6b1d12912a04fe6fca8c45bb9
  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 91e758b037c7c58a6e3b3ce6babae883666174e9
 -F src/test_config.c 55918873f0a2ebbd5b52417319987f9f99c401fa
++F src/test_config.c c3ba770a9924181aeed1717efb724b5ff17ccf34
  F src/test_demovfs.c 0aed671636735116fc872c5b03706fd5612488b5
  F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
  F src/test_func.c 13b582345fb1185a93e46c53310fae8547dcce20
@@@ -218,23 -224,23 +231,23 @@@ F src/test_vfs.c e10fcca756cafa89438311
  F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
  F src/tokenize.c 604607d6813e9551cf5189d899e0a25c12681080
  F src/trigger.c b8bedb9c0084ceb51a40f54fcca2ce048c8de852
- F src/update.c 1521162d20c2994af1fdc8833e1a88dae09052c8
+ F src/update.c 227e6cd512108b84f69421fc6c7aa1b83d60d6e0
  F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
- F src/util.c 32aebf04c10e51ad3977a928b7416bed671b620b
- F src/vacuum.c 241a8386727c1497eba4955933356dfba6ff8c9f
- F src/vdbe.c 60ef76968e7ab2288ee1e39573a090e549fd8f3d
+ F src/util.c cd78524566fe45671863eee78685969a4bfd4e4c
+ F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
 -F src/vdbe.c 63bb1e56a035bc65b20d6f9c7d7c876f19b4605f
++F src/vdbe.c d623683612ebfc7fd7cae7f900dd95b92d114aa5
  F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
- F src/vdbeInt.h ffd68c4d4229227a5089bec53a1c635146177abc
- F src/vdbeapi.c 232d20465aa606c12520840597361279c7a96236
- F src/vdbeaux.c c73bcefcebfd3d2cf91bf6a41ef0fb0d884814c6
- F src/vdbeblob.c 258a6010ba7a82b72b327fb24c55790655689256
- F src/vdbemem.c e5673f81a2381b35c60e73ef0a8502be2ab1041e
+ F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4
 -F src/vdbeapi.c fb0036185b3c56e15916a5ee96309cd4acf6818f
++F src/vdbeapi.c 09ebd299007972e9262dec825d8fc3baedf0d239
+ F src/vdbeaux.c 762c2b146cf5fe7a7f743af1bbfed4a966aa937a
+ F src/vdbeblob.c e0ce3c54cc0c183af2ec67b63a289acf92251df4
+ F src/vdbemem.c 23723a12cd3ba7ab3099193094cbb2eb78956aa9
  F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
- F src/vtab.c 0e8e0cb30dffb078367e843e84e37ef99236c7e4
- F src/wal.c 5ac2119e23ee4424599d4275b66dc88d612a0543
- F src/wal.h 96669b645e27cd5a111ba59f0cae7743a207bc3c
+ F src/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30
+ F src/wal.c f26b8d297bd11cb792e609917f9d4c6718ac8e0e
+ F src/wal.h c1aac6593a0b02b15dc625987e619edeab39292e
  F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
- F src/where.c 7db3e41c2a846f9deeb24f1bbb75461b4010b7b5
+ F src/where.c fa22d45b2577c77146f2e894d58011d472d64103
  F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
  F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
  F test/all.test 6745008c144bd2956d58864d21f7b304689c1cce
@@@ -251,11 -257,11 +264,11 @@@ F test/async2.test bf5e2ca2c96763b4cba3
  F test/async3.test 93edaa9122f498e56ea98c36c72abc407f4fb11e
  F test/async4.test 1787e3952128aa10238bf39945126de7ca23685a
  F test/async5.test f3592d79c84d6e83a5f50d3fd500445f7d97dfdf
 -F test/attach.test ce9660e51768fab93cf129787be886c5d6c4fd81
 +F test/attach.test ccdedd5496a0244f8e45366ba9253af30083ea84
  F test/attach2.test a295d2d7061adcee5884ef4a93c7c96a82765437
  F test/attach3.test bd9830bc3a0d22ed1310c9bff6896927937017dc
- F test/attachmalloc.test 38d2da5fdaf09ba0add57296967a3061e5842584
- F test/auth.test 8f21c160a4562f54f27618e85bac869efcecbcaf
+ F test/attachmalloc.test 1d5b821a676f7bf0b00d87cc106b78966789ba57
+ F test/auth.test 26cc6f219580191539bf335abe03e55e49310846
  F test/auth2.test 270baddc8b9c273682760cffba6739d907bd2882
  F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5
  F test/autoinc.test 85ef3180a737e6580086a018c09c6f1a52759b46
@@@ -351,12 -366,14 +373,14 @@@ F test/e_vacuum.test 057cc29445746fc1d2
  F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea
  F test/enc2.test 6d91a5286f59add0cfcbb2d0da913b76f2242398
  F test/enc3.test 5c550d59ff31dccdba5d1a02ae11c7047d77c041
+ F test/enc4.test 4b575ef09e0eff896e73bd24076f96c2aa6a42de
+ F test/eqp.test 69670e7919030f21de29fb99bf1d68f97aedcbdb
  F test/eval.test bc269c365ba877554948441e91ad5373f9f91be3
- F test/exclusive.test 9e62270fdf967870921053e2ec0f293b67c140a4
- F test/exclusive2.test fcbb1c9ca9739292a0a22a3763243ad6d868086b
 -F test/exclusive.test 53e1841b422e554cecf0160f937c473d6d0e3062
++F test/exclusive.test 897074dc6706b0c4f3b1dc4580ffddffe2a79206
+ F test/exclusive2.test 76e63c05349cb70d09d60b99d2ae625525ff5155
  F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
- F test/expr.test 9f521ae22f00e074959f72ce2e55d46b9ed23f68
+ F test/expr.test 620a636cf7b7d4e5834a0b9d83a4da372e24a7b7
 -F test/fallocate.test 43dc34b8c24be6baffadc3b4401ee15710ce83c6
 +F test/fallocate.test a9927b638567e2e776c112f54d701402a0e74023
  F test/filectrl.test 97003734290887566e01dded09dc9e99cb937e9e
  F test/filefmt.test f77c92141960b7933bc6691631d2ad62257ef40a
  F test/fkey1.test 01c7de578e11747e720c2d9aeef27f239853c4da
@@@ -491,16 -518,15 +525,16 @@@ F test/lock.test db74fdf5a73bad29ab3d86
  F test/lock2.test 5242d8ac4e2d59c403aebff606af449b455aceff
  F test/lock3.test f271375930711ae044080f4fe6d6eda930870d00
  F test/lock4.test c82268c031d39345d05efa672f80b025481b3ae5
 -F test/lock5.test b2abb5e711bc59b0eae00f6c97a36ec9f458fada
 -F test/lock6.test ad5b387a3a8096afd3c68a55b9535056431b0cf5
 +F test/lock5.test d0d313f059ae5661726d3f197ba6ed8f69257d8e
- F test/lock6.test 55bbfce7a6905be8282f125c2dbeb8688e2cfd8b
++F test/lock6.test 83434ae8ca1d1c5e2eaf74d4e44aa24ab62b291c
  F test/lock7.test 64006c84c1c616657e237c7ad6532b765611cf64
- F test/lock_common.tcl 18c637fc89e12f1ac0d27d2186f12c3d3f789e3e
+ F test/lock_common.tcl 43fef46b1c5b8ac05e382eab214705c23c70bc88
 +F test/lock_proxy.test 95be9c32d79be25cf643b4e41a0aa0e53aa21621
  F test/lookaside.test 382e7bc2fab23d902c8eafb1b9ed7ababfff75a6
 -F test/main.test 9d7bbfcc1b52c88ba7b2ba6554068ecf9939f252
 +F test/main.test 753e2b772c041bd8dbd17c7e4132b3981378eaab
  F test/make-where7.tcl 05c16b5d4f5d6512881dfec560cb793915932ef9
  F test/malloc.test 927e6c8668a1d48c23aa6189bda02aff5a1b83de
- F test/malloc3.test 4bc57f850b212f706f3e1b37c4eced1d5a727cd1
+ F test/malloc3.test 4128b1e6ffa506103b278ad97af89174f310c7ca
  F test/malloc4.test 957337613002b7058a85116493a262f679f3a261
  F test/malloc5.test 4d16d1bb26d2deddd7c4f480deec341f9b2d0e22
  F test/malloc6.test 2f039d9821927eacae43e1831f815e157659a151
@@@ -519,11 -545,11 +553,11 @@@ F test/mallocH.test 79b65aed612c9b3ed2d
  F test/mallocI.test a88c2b9627c8506bf4703d8397420043a786cdb6
  F test/mallocJ.test b5d1839da331d96223e5f458856f8ffe1366f62e
  F test/mallocK.test d79968641d1b70d88f6c01bdb9a7eb4a55582cc9
- F test/malloc_common.tcl bd0b0916f03cb4f4c973bcb793f3057e84d5ecfb
 -F test/malloc_common.tcl 053003b3d925a4dbfd5159819a542266e5c8ed84
 -F test/manydb.test b3d3bc4c25657e7f68d157f031eb4db7b3df0d3c
 -F test/memdb.test 0825155b2290e900264daaaf0334b6dfe69ea498
++F test/malloc_common.tcl 520f8f1318586d09b6378315803c937d0be7795d
 +F test/manydb.test 7faa0df55bbab2b14c25f323801db336c4e7ce3a
 +F test/memdb.test f773146f66ee2c635854a8264317f39a6cc3e18c
  F test/memleak.test 10b9c6c57e19fc68c32941495e9ba1c50123f6e2
- F test/memsubsys1.test 98d5ff4c9f534cc863c07b74043bd44921893f29
 -F test/memsubsys1.test 4cbec6f202c91504bfc4717bfc2ffd6160316c4c
++F test/memsubsys1.test 6827c7d06d5d60eda7a23c8d0b75d6922bd539dc
  F test/memsubsys2.test 72a731225997ad5e8df89fdbeae9224616b6aecc
  F test/minmax.test 722d80816f7e096bf2c04f4111f1a6c1ba65453d
  F test/minmax2.test 33504c01a03bd99226144e4b03f7631a274d66e0
@@@ -545,17 -572,17 +580,17 @@@ F test/notify3.test d60923e186e0900f481
  F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347
  F test/null.test a8b09b8ed87852742343b33441a9240022108993
  F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec
- F test/pager1.test 4d3bf78c043af2054cfb63897ef3f990a420c6a5
+ F test/pager1.test 07b06b89d50bc38bb118a18b99c7bee645b315de
  F test/pager2.test 0fbb6b6dc40ce1fecfe758c555a748ad2e9beaa3
  F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
- F test/pagerfault.test f168ec2c659faccffc083ec1847bf4295dd67d14
 -F test/pagerfault.test 9de4d3e0c59970b4c6cb8dac511fa242f335d8a7
++F test/pagerfault.test bea066b9162e1ab6843c2c1524ebb0965715e956
  F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401
  F test/pageropt.test 8146bf448cf09e87bb1867c2217b921fb5857806
  F test/pagesize.test 76aa9f23ecb0741a4ed9d2e16c5fa82671f28efb
  F test/pcache.test 4118a183908ecaed343a06fcef3ba82e87e0129d
  F test/pcache2.test 0d85f2ab6963aee28c671d4c71bec038c00a1d16
- F test/permutations.test 17498d1219f922d5a6da893a94c4dc7766fb2426
- F test/pragma.test 90f2386eba9785875dc19c6c464106ad7cca12c1
+ F test/permutations.test 193238b7828759805091ecddd9a0912767f236a4
 -F test/pragma.test fdfc09067ea104a0c247a1a79d8093b56656f850
++F test/pragma.test 88048136eed6baa2097dd7ab5145d3288128ca70
  F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
  F test/printf.test 05970cde31b1a9f54bd75af60597be75a5c54fea
  F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301
@@@ -593,8 -624,8 +632,8 @@@ F test/selectA.test 06d1032fa9009314c95
  F test/selectB.test f305cc6660804cb239aab4e2f26b0e288b59958b
  F test/selectC.test f9bf1bc4581b5b8158caa6e4e4f682acb379fb25
  F test/server1.test f5b790d4c0498179151ca8a7715a65a7802c859c
 -F test/shared.test b9114eaea7e748a3a4c8ff7b9ca806c8f95cef3e
 +F test/shared.test e5ed27551ba06b28e851101683f0caef1445f4ac
- F test/shared2.test d6ba4ca1827ea36a1ac23a99e3c36eeac9165450
+ F test/shared2.test 7f6ad2d857d0f4e5d6a0b9a897b5e56a6b6ea18c
  F test/shared3.test d69bdd5f156580876c5345652d21dc2092e85962
  F test/shared4.test d0fadacb50bb6981b2fb9dc6d1da30fa1edddf83
  F test/shared6.test 990d2584b5db28e6e1f24742c711b26e59757b67
@@@ -615,8 -646,8 +654,8 @@@ F test/speed4.test abc0ad3399dcf9703abe
  F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa
  F test/speed4p.test 0e51908951677de5a969b723e03a27a1c45db38b
  F test/sqllimits1.test e90a0ed94452076f6a10209d378e06b5f75ef0a0
- F test/stat.test 8b7342007bdb49a9427d57a9bb94d02d6e54f2d0
- F test/stmt.test 8e39760750cdf8044d4ca441b2b95053817c9a5f
+ F test/stat.test c7b20ea43003dc2dc33335e231c27be8284c4a2a
 -F test/stmt.test 25d64e3dbf9a3ce89558667d7f39d966fe2a71b9
++F test/stmt.test 78a6764439cfa5abdcbf98d4d084739e81eeec4f
  F test/subquery.test b524f57c9574b2c0347045b4510ef795d4686796
  F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4
  F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a
@@@ -624,10 -656,10 +664,10 @@@ F test/sync.test ded6b39d8d8ca3c0c55185
  F test/table.test 04ba066432430657712d167ebf28080fe878d305
  F test/tableapi.test 7262a8cbaa9965d429f1cbd2747edc185fa56516
  F test/tclsqlite.test 8c154101e704170c2be10f137a5499ac2c6da8d3
- F test/tempdb.test 285dda9fdf10730702549e8aa19c9258bbf753b8
 -F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c
++F test/tempdb.test 3263e5c3f0604e54d307481e8587327c54544d18
  F test/temptable.test f42121a0d29a62f00f93274464164177ab1cc24a
  F test/temptrigger.test b0273db072ce5f37cf19140ceb1f0d524bbe9f05
- F test/tester.tcl e4bed769a9e7b55d569fe90e9548fc86d405acf8
 -F test/tester.tcl 45e8f7b56ef93c5c66886f1bbd05dda78d248d86
++F test/tester.tcl 33bbb5f93084f1280acec57f6a1879dfe8960718
  F test/thread001.test a3e6a7254d1cb057836cb3145b60c10bf5b7e60f
  F test/thread002.test afd20095e6e845b405df4f2c920cb93301ca69db
  F test/thread003.test b824d4f52b870ae39fc5bae4d8070eca73085dca
@@@ -706,8 -743,8 +751,8 @@@ F test/tkt3346.test 6f67c3ed7db94dfc5df
  F test/tkt3357.test 77c37c6482b526fe89941ce951c22d011f5922ed
  F test/tkt3419.test 1bbf36d7ea03b638c15804251287c2391f5c1f6b
  F test/tkt3424.test 61f831bd2b071bd128fa5d00fbda57e656ca5812
- F test/tkt3442.test 89d7b41a4ec4d9d9b40ab8575d648579fb13cb4f
+ F test/tkt3442.test 0adb70e9fe9cb750a702065a68ad647409dbc158
 -F test/tkt3457.test edbf54b05cbe5165f00192becbd621038f1615e4
 +F test/tkt3457.test 8a8f29536bf65b994bef5dde881404530b61a62a
  F test/tkt3461.test 228ea328a5a21e8663f80ee3d212a6ad92549a19
  F test/tkt3493.test 1686cbde85f8721fc1bdc0ee72f2ef2f63139218
  F test/tkt3508.test d75704db9501625c7f7deec119fcaf1696aefb7d
@@@ -789,25 -826,26 +834,26 @@@ F test/vtabE.test 7c4693638d7797ce2eda1
  F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
  F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
  F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d
 -F test/wal.test 70227190e713b3e7eb2a7d5ec3510b66db01f327
 -F test/wal2.test f4ad3095da5269c89c823e7090ba2c116cdd1d63
 -F test/wal3.test 957a5f2a8fe8a6ff01de1a15285ecf2f376fcaf8
 -F test/wal4.test 3404b048fa5e10605facaf70384e6d2943412e30
 +F test/wal.test d83c3d227e9e9bb5c7a0c1447ea4a3c6cd5fced4
- F test/wal2.test 998e1807c7bea96f1a5246adf670d02137118339
- F test/wal3.test 09278a6f54b3a847b502f426a63a0a3028c4e57e
++F test/wal2.test ca023e6440625f897f5ebcf4ae2d8bb652b181f3
++F test/wal3.test 375c08e62b54233ad557473d1e63114f085be7a1
 +F test/wal4.test 6a68c45bc1ca24a3592ec449ddcb92b29d0e0e87
  F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b
 -F test/walbak.test 4df1c7369da0301caeb9a48fa45997fd592380e4
 -F test/walbig.test e882bc1d014afffbfa2b6ba36e0f07d30a633ad0
 -F test/walcksum.test a37b36375c595e61bdb7e1ec49b5f0979b6fc7ce
 -F test/walcrash.test e763841551d6b23677ccb419797c1589dcbdbaf5
 -F test/walcrash2.test 019d60b89d96c1937adb2b30b850ac7e86e5a142
 -F test/walfault.test 81ed760def1c1573151d416b0d09178cf006f9fd
 -F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
 -F test/walmode.test 22ddccd073c817ac9ead62b88ac446e8dedc7d2c
 +F test/walbak.test 767e1c9e0ea0cfb907873b332883e66e187fa4bc
 +F test/walbig.test 78ac493db2abdb65b9c6cace5b851cc32df1d449
 +F test/walcksum.test cf6787f2ee1a6a3da6f0c2b20b9ede5153e4e03f
 +F test/walcrash.test 80c1cc3173a0ef09d8303fa556cb0187a36d82ea
 +F test/walcrash2.test 929c99d14ee2e3e3ef82585058968a8b12f72706
- F test/walfault.test 60527645638532a565a8e729db287ef0dba85ece
++F test/walfault.test 395354b447eb3b249b725651fdbb6a83c461b5b4
 +F test/walhook.test c934ac5219fee2b4e7653d291db9107b8dc73bba
- F test/walmode.test 8746ec81f78597e0f988d8e31347dc1b9b22ebbd
- F test/walshared.test 51082db7d1edc720256c524e9b22e92c50f72149
++F test/walmode.test feb39956ec6f415fbb9dcb12d91243391c2c4715
+ F test/walnoshm.test a074428046408f4eb5c6a00e09df8cc97ff93317
 -F test/walshared.test 6dda2293880c300baf5d791c307f653094585761
 -F test/walslow.test d21625e2e99e11c032ce949e8a94661576548933
 -F test/walthread.test a25a393c068a2b42b44333fa3fdaae9072f1617c
++F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
 +F test/walslow.test 989854bc5c214700a9f2d545bb158643813b8881
 +F test/walthread.test e6e32e93ccebfa401dfc0dd930c79daa3472b0ae
  F test/where.test de337a3fe0a459ec7c93db16a519657a90552330
  F test/where2.test 43d4becaf5a5df854e6c21d624a1cb84c6904554
- F test/where3.test 3bf8006d441b66a57bee02bb420423f84eb8fde3
+ F test/where3.test 8ebedae552e13fc7f2b4e8df6cbe72a095347400
  F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
  F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
  F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
@@@ -828,8 -866,8 +874,8 @@@ F tool/lempar.c 01ca97f87610d1dac6d8cd9
  F tool/mkkeywordhash.c d2e6b4a5965e23afb80fbe74bb54648cd371f309
  F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
  F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
- F tool/mksqlite3c.tcl be5206d081291aa4c0e1a328331171425bdbe77c
- F tool/mksqlite3h.tcl eb100dce83f24b501b325b340f8b5eb8e5106b3b
 -F tool/mksqlite3c.tcl e0db70c2c52b0e3d0867ca931229e5b90ffe7837
++F tool/mksqlite3c.tcl 136c838dba145ad65296522ff27cdd792657eaa0
+ F tool/mksqlite3h.tcl 03b6ca938c833814923674d8a160e91fcedb4571
  F tool/mksqlite3internalh.tcl 7b43894e21bcb1bb39e11547ce7e38a063357e87
  F tool/omittest.tcl 27d6f6e3b1e95aeb26a1c140e6eb57771c6d794a
  F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c
@@@ -851,7 -889,7 +897,14 @@@ F tool/speedtest2.tcl ee2149167303ba8e9
  F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
  F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
  F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
- P e01c5f3eda7fe6e6afe9c3894384f09b58173da1
- R 0f46b01a6860ee53146a14c10ec341dc
- U adam
- Z d51fce1db464c676813e4eba90c98e2f
 -P 570e79a8eb3bb2d2a15c46c55fbf52c9dd3e3ae8
 -R a950411020f2e9a3c9e01441aa43e538
 -U dan
 -Z 40fbbee993478998a34279e6b6efa9ec
++P fd4d38fa66de85676189ff4922fb1bf5f8cac9c4 765aa1b862fa38cede89bafe0e10c094e0544b7e
++R edc048689b86400e131d2f6440a0714d
++U drh
++Z e6c803c3f15462e630f40d2ef9def8b5
++-----BEGIN PGP SIGNATURE-----
++Version: GnuPG v1.4.6 (GNU/Linux)
++
++iD8DBQFM5w1boxKgR168RlERAkoAAJ9hX7bgyTYQryBDS6tUIBir1HRHMACeJ1nu
++KNrsAbBP663ZyA6UuIYCzmY=
++=H0Oq
++-----END PGP SIGNATURE-----
diff --cc manifest.uuid
index 2d60ca9cf60001f0a6b66d814be07e1de9f0a52f,738b7d77442e94883c0a61485d184da2bf29211c..c8576f9d7c81a1257e65db66e9e68dd621bf8725
@@@ -1,1 -1,1 +1,1 @@@
- fd4d38fa66de85676189ff4922fb1bf5f8cac9c4
 -765aa1b862fa38cede89bafe0e10c094e0544b7e
++c8bc057c7def6bbbebd89ee52b582bad75fb0509
diff --cc src/func.c
Simple merge
diff --cc src/main.c
index cfe3c32bc46e445b5b427b528318d6f7af14b5ee,f9e1a1c1386ab4c1ad06e29a8e7497ef40e00758..9153092c7de45fe28e6cb1e8e16c400b41b16165
@@@ -1663,14 -1711,8 +1718,14 @@@ int sqlite3_limit(sqlite3 *db, int limi
      }
      db->aLimit[limitId] = newLimit;
    }
-   return oldLimit;
+   return oldLimit;                     /* IMP: R-53341-35419 */
  }
 +#if defined(SQLITE_ENABLE_AUTO_PROFILE)
 +static void profile_sql(void *aux, const char *sql, u64 ns) {
 +#pragma unused(aux)
 +      fprintf(stderr, "Query: %s\n Execution Time: %llu ms\n", sql, ns / 1000000);
 +}
 +#endif
  
  /*
  ** This routine does the work of opening a database on behalf of
diff --cc src/mem1.c
index 29452d0485fe86aff791d99232f61fdbc4810fa3,61fbf4bdbab2ff9935ef90b12deabbef1f3cf9b9..6b1c30afb53ab19f6144b64da9741338d1367063
@@@ -111,9 -89,9 +111,9 @@@ static int sqlite3MemSize(void *pPrior)
  static void *sqlite3MemRealloc(void *pPrior, int nByte){
    sqlite3_int64 *p = (sqlite3_int64*)pPrior;
    assert( pPrior!=0 && nByte>0 );
-   nByte = ROUND8(nByte);
+   assert( nByte==ROUND8(nByte) ); /* EV: R-46199-30249 */
    p--;
 -  p = realloc(p, nByte+8 );
 +  p = SQLITE_REALLOC(p, nByte+8 );
    if( p ){
      p[0] = nByte;
      p++;
diff --cc src/os_unix.c
Simple merge
diff --cc src/pragma.c
Simple merge
diff --cc src/prepare.c
Simple merge
diff --cc src/test1.c
index e8059f4a1de61bc63c4b3d278963f65bbdeac3fa,27834f36e1b083f7a5e9692d73ce3af09d9f9e97..d712e533002645b315e4a8efc9f5f0420a413454
@@@ -5297,8 -5483,7 +5593,9 @@@ int Sqlitetest1_Init(Tcl_Interp *interp
       { "file_control_lockproxy_test", file_control_lockproxy_test,  0   },
       { "file_control_chunksize_test", file_control_chunksize_test,  0   },
       { "sqlite3_vfs_list",           vfs_list,     0   },
+      { "sqlite3_create_function_v2", test_create_function_v2, 0 },
 +     { "path_is_local",              path_is_local,  0   },
 +     { "path_is_dos",                path_is_dos,  0   },
  
       /* Functions from os.h */
  #ifndef SQLITE_OMIT_UTF16
index c037e34e9a21ea6b2d3f3a1be0c131133104c2c3,12df78709af71a9e1b25a5b071548f9418f24b08..5e92a8aa26301bf4f785a2595c629135012ebac9
@@@ -528,23 -534,7 +534,23 @@@ Tcl_SetVar2(interp, "sqlite_options", "
  #else
    Tcl_SetVar2(interp, "sqlite_options", "yytrackmaxstackdepth", "0", TCL_GLOBAL_ONLY);
  #endif
-   
 +  
 +#ifdef __APPLE__
 +# if  defined(__ppc__)
 +  Tcl_SetVar2(interp, "os_options", "arch", "ppc", TCL_GLOBAL_ONLY);
 +# elif defined(__i386__)
 +  Tcl_SetVar2(interp, "os_options", "arch", "i386", TCL_GLOBAL_ONLY);
 +# elif defined(__x86_64__)
 +  Tcl_SetVar2(interp, "os_options", "arch", "x86_64", TCL_GLOBAL_ONLY);
 +# elif defined(__arm__)
 +  Tcl_SetVar2(interp, "os_options", "arch", "arm", TCL_GLOBAL_ONLY);
 +# else
 +#  error Unrecognized architecture for exec_options
 +# endif
 +#else
 +  Tcl_SetVar2(interp, "os_options", "arch", "unknown", TCL_GLOBAL_ONLY);
 +#endif
  #define LINKVAR(x) { \
      static const int cv_ ## x = SQLITE_ ## x; \
      Tcl_LinkVar(interp, "SQLITE_" #x, (char *)&(cv_ ## x), \
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeapi.c
Simple merge
Simple merge
diff --cc test/lock6.test
Simple merge
Simple merge
index 659dd0d95fe42b69ab6b50ef3990eee2ae319edd,c24a8bf95db5ab72a372ae2616dc053b27183d61..3fa9993167f1145c3d5180c65bb31bef3fe3f3d3
@@@ -190,21 -180,18 +180,21 @@@ build_test_db memsubsys1-5 {PRAGMA page
  #show_memstats
  do_test memsubsys1-5.3 {
    set pg_used [lindex [sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0] 2]
- } 23
+ } 24
 -do_test memsubsys1-5.4 {
 -  set maxreq [lindex [sqlite3_status SQLITE_STATUS_MALLOC_SIZE 0] 2]
 -  expr {$maxreq>4096}
 -} 1
 -do_test memsubsys1-5.5 {
 -  set s_used [lindex [sqlite3_status SQLITE_STATUS_SCRATCH_USED 0] 2]
 -} 0
 -do_test memsubsys1-5.6 {
 -  set s_ovfl [lindex [sqlite3_status SQLITE_STATUS_SCRATCH_OVERFLOW 0] 2]
 -  expr {$s_ovfl>6000}
 -} 1
 +set msize [sqlite3_status SQLITE_STATUS_MALLOC_SIZE 0]
 +if {[lindex $msize 2]!=0} {
 +  do_test memsubsys1-5.4 {
 +    set maxreq [lindex [sqlite3_status SQLITE_STATUS_MALLOC_SIZE 0] 2]
 +    expr {$maxreq>4096}
 +  } 1
 +  do_test memsubsys1-5.5 {
 +    set s_used [lindex [sqlite3_status SQLITE_STATUS_SCRATCH_USED 0] 2]
 +  } 0
 +  do_test memsubsys1-5.6 {
 +    set s_ovfl [lindex [sqlite3_status SQLITE_STATUS_SCRATCH_OVERFLOW 0] 2]
 +    expr {$s_ovfl>6000}
 +  } 1
 +}
  
  # Test 6:  Activate both PAGECACHE and SCRATCH with a 4k page size.
  # Make it so that SCRATCH is large enough
Simple merge
index 36a304fedb3a91696c833fa0a8e7234801f2e8b6,4b4418299cb4c6874912032fe290d8c490c38908..8cbfef54348b7737ce2119ac886fd3889e53330f
@@@ -1292,12 -1292,7 +1292,12 @@@ sqlite3 dbX :memory
  dbX eval {PRAGMA temp_store_directory = ""}
  dbX close
  
 -ifcapable lock_proxy_pragmas&&prefer_proxy_locking {
 +set skip_lock_proxy_tests [path_is_dos "."]
- ifcapable !lock_proxy_pragmas&&prefer_proxy_locking {
++ifcapable !(lock_proxy_pragmas&&prefer_proxy_locking) {
 +  set skip_lock_proxy_tests 1
 +}
 +
 +if !$skip_lock_proxy_tests {
    set sqlite_hostid_num 1
  
    set using_proxy 0
    } {1}
    
    set sqlite_hostid_num 2
 +  # db access should be limited to one host at a time (simulate 2nd host id)
    do_test pragma-16.7 {
-     sqlite3 db test2.db
-     execsql {
-       PRAGMA lock_proxy_file=":auto:";
-     } 
-     catchsql {
-       select * from sqlite_master;
-     }
+     list [catch {
+       sqlite3 db test2.db
+       execsql { 
+         PRAGMA lock_proxy_file=":auto:";
+         select * from sqlite_master;
+       }
+     } msg] $msg
    } {1 {database is locked}}
    db close
    
 +  # default to using proxy locking (simulate network file system detection)
    do_test pragma-16.8 {
-     sqlite3 db test2.db
-     catchsql {
-       select * from sqlite_master;
-     } 
+     list [catch {
+       sqlite3 db test2.db
+       execsql { select * from sqlite_master } 
+     } msg] $msg
    } {1 {database is locked}}
  
    db2 close
diff --cc test/stmt.test
Simple merge
Simple merge
diff --cc test/tester.tcl
index ba87aa4aad2559b0296d3e81b111970d672079e7,5911f5a54454d10c6dec9fe7afc3bdccd95ed728..f096bbadebde4fb8341b7e09064bece6b2d37b8c
@@@ -335,14 -337,100 +337,100 @@@ proc do_test {name cmd expected} 
    }
    flush stdout
  }
 -
 +    
- proc do_execsql_test {testname sql result} {
-   uplevel do_test $testname [list "execsql {$sql}"] [list $result]
+ proc fix_testname {varname} {
+   upvar $varname testname
+   if {[info exists ::testprefix] 
+    && [string is digit [string range $testname 0 0]]
+   } {
+     set testname "${::testprefix}-$testname"
+   }
+ }
+     
+ proc do_execsql_test {testname sql {result {}}} {
+   fix_testname testname
+   uplevel do_test $testname [list "execsql {$sql}"] [list [list {*}$result]]
  }
  proc do_catchsql_test {testname sql result} {
+   fix_testname testname
    uplevel do_test $testname [list "catchsql {$sql}"] [list $result]
  }
+ proc do_eqp_test {name sql res} {
+   uplevel do_execsql_test $name [list "EXPLAIN QUERY PLAN $sql"] [list $res]
+ }
+ #-------------------------------------------------------------------------
+ #   Usage: do_select_tests PREFIX ?SWITCHES? TESTLIST
+ #
+ # Where switches are:
+ #
+ #   -errorformat FMTSTRING
+ #   -count
+ #   -query SQL
+ #   -tclquery TCL
+ #   -repair TCL
+ #
+ proc do_select_tests {prefix args} {
+   set testlist [lindex $args end]
+   set switches [lrange $args 0 end-1]
+   set errfmt ""
+   set countonly 0
+   set tclquery ""
+   set repair ""
+   for {set i 0} {$i < [llength $switches]} {incr i} {
+     set s [lindex $switches $i]
+     set n [string length $s]
+     if {$n>=2 && [string equal -length $n $s "-query"]} {
+       set tclquery [list execsql [lindex $switches [incr i]]]
+     } elseif {$n>=2 && [string equal -length $n $s "-tclquery"]} {
+       set tclquery [lindex $switches [incr i]]
+     } elseif {$n>=2 && [string equal -length $n $s "-errorformat"]} {
+       set errfmt [lindex $switches [incr i]]
+     } elseif {$n>=2 && [string equal -length $n $s "-repair"]} {
+       set repair [lindex $switches [incr i]]
+     } elseif {$n>=2 && [string equal -length $n $s "-count"]} {
+       set countonly 1
+     } else {
+       error "unknown switch: $s"
+     }
+   }
  
+   if {$countonly && $errfmt!=""} {
+     error "Cannot use -count and -errorformat together"
+   }
+   set nTestlist [llength $testlist]
+   if {$nTestlist%3 || $nTestlist==0 } {
+     error "SELECT test list contains [llength $testlist] elements"
+   }
+   eval $repair
+   foreach {tn sql res} $testlist {
+     if {$tclquery != ""} {
+       execsql $sql
+       uplevel do_test ${prefix}.$tn [list $tclquery] [list [list {*}$res]]
+     } elseif {$countonly} {
+       set nRow 0
+       db eval $sql {incr nRow}
+       uplevel do_test ${prefix}.$tn [list [list set {} $nRow]] [list $res]
+     } elseif {$errfmt==""} {
+       uplevel do_execsql_test ${prefix}.${tn} [list $sql] [list [list {*}$res]]
+     } else {
+       set res [list 1 [string trim [format $errfmt {*}$res]]]
+       uplevel do_catchsql_test ${prefix}.${tn} [list $sql] [list $res]
+     }
+     eval $repair
+   }
+ }
+ proc delete_all_data {} {
+   db eval {SELECT tbl_name AS t FROM sqlite_master WHERE type = 'table'} {
+     db eval "DELETE FROM '[string map {' ''} $t]'"
+   }
+ }
  
  # Run an SQL script.  
  # Return the number of microseconds per statement.
diff --cc test/wal2.test
index 16f5ce5f26b1c0135eaa0d0e44bdac8b642ef0d1,5dfc25525182a0c97a42ce061b5c546e498a7717..26ea1ddfd730e284fa1f9db15fff038defee475f
@@@ -1151,6 -1152,61 +1156,61 @@@ if {$::tcl_platform(platform) == "unix"
      }
      catch { db close }
    }
 -} 
 +}
  
+ #-------------------------------------------------------------------------
+ # Test that "PRAGMA checkpoint_fullsync" appears to be working.
+ #
+ foreach {tn sql reslist} {
+   1 { }                                 {8 0 3 0 5 0}
+   2 { PRAGMA checkpoint_fullfsync = 1 } {8 4 3 2 5 2}
+   3 { PRAGMA checkpoint_fullfsync = 0 } {8 0 3 0 5 0}
+ } {
+   faultsim_delete_and_reopen
+   execsql $sql
+   do_execsql_test wal2-14.$tn.1 { PRAGMA journal_mode = WAL } {wal}
+   set sqlite_sync_count 0
+   set sqlite_fullsync_count 0
+   do_execsql_test wal2-14.$tn.2 {
+     PRAGMA wal_autocheckpoint = 10;
+     CREATE TABLE t1(a, b);                -- 2 wal syncs
+     INSERT INTO t1 VALUES(1, 2);          -- 1 wal sync
+     PRAGMA wal_checkpoint;                -- 1 wal sync, 1 db sync
+     BEGIN;
+       INSERT INTO t1 VALUES(3, 4);
+       INSERT INTO t1 VALUES(5, 6);
+     COMMIT;                               -- 1 wal sync
+     PRAGMA wal_checkpoint;                -- 1 wal sync, 1 db sync
+   } {10}
+   do_test wal2-14.$tn.3 {
+     list $sqlite_sync_count $sqlite_fullsync_count
+   } [lrange $reslist 0 1]
+   set sqlite_sync_count 0
+   set sqlite_fullsync_count 0
+   do_test wal2-14.$tn.4 {
+     execsql { INSERT INTO t1 VALUES(7, zeroblob(12*4096)) }
+     list $sqlite_sync_count $sqlite_fullsync_count
+   } [lrange $reslist 2 3]
+   set sqlite_sync_count 0
+   set sqlite_fullsync_count 0
+   do_test wal2-14.$tn.5 {
+     execsql { PRAGMA wal_autocheckpoint = 1000 }
+     execsql { INSERT INTO t1 VALUES(9, 10) }
+     execsql { INSERT INTO t1 VALUES(11, 12) }
+     execsql { INSERT INTO t1 VALUES(13, 14) }
+     db close
+     list $sqlite_sync_count $sqlite_fullsync_count
+   } [lrange $reslist 4 5]
+ }
  finish_test
diff --cc test/wal3.test
Simple merge
Simple merge
Simple merge
index 8e53ea66e4d5596b1f737a67a3651a445635cd68,73a3fb8bc1bd7199a156768523e08275fee9ad50..fbbdeb4de37a05bb6dd4eaec21ffe68cee98ea14
@@@ -64,4 -60,4 +60,3 @@@ do_test walshared-1.4 
  
  sqlite3_enable_shared_cache $::enable_shared_cache
  finish_test
--
Simple merge