]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge the latest enhancements and fixes from trunk.
authordan <dan@noemail.net>
Thu, 14 Jan 2016 15:46:31 +0000 (15:46 +0000)
committerdan <dan@noemail.net>
Thu, 14 Jan 2016 15:46:31 +0000 (15:46 +0000)
FossilOrigin-Name: fccc5f20c360fa17c3692a9f1fc1d16612632a7f

14 files changed:
1  2 
manifest
manifest.uuid
src/btree.c
src/btree.h
src/btreeInt.h
src/build.c
src/pager.c
src/pager.h
src/parse.y
src/sqliteInt.h
src/vdbe.c
src/vdbeaux.c
src/wal.c
src/wal.h

diff --cc manifest
index 8143778f77c14fc7cf102926fba2019ecf59c265,1354db7a40cdc0da16e48becf6754e4acb76e67d..2c574e7290e7d2010d7c661be6fa182fa9d91682
+++ b/manifest
@@@ -1,10 -1,10 +1,10 @@@
- C Merge\schanges\sfor\sversion\s3.10.0.
- D 2016-01-06T15:49:19.937
- F Makefile.in 7c8cc4c2f0179efc6fa9492141d1fb65f4807054
 -C Yet\sanother\schange\sto\sFTS5\strying\sto\sget\sit\sto\smerge\ssuccessfully\sinto\ssessions.
 -D 2016-01-14T14:33:36.733
++C Merge\sthe\slatest\senhancements\sand\sfixes\sfrom\strunk.
++D 2016-01-14T15:46:31.755
+ F Makefile.in cfa1ac03c4b414992fd53f24d978b45b0c21de55
  F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
- F Makefile.msc e45d8b9b56dfa3f2cd860b2c28bd9d304513b042
+ F Makefile.msc 1dc36cfd3c047c9685e539257e158485f16ef035
  F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
- F VERSION 8b9d3ac6f1962f94e06ba05462422a544f9c4e36
+ F VERSION 866588d1edf0ccb5b0d33896974338f97564f719
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
  F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
  F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
@@@ -275,11 -280,11 +280,11 @@@ F src/attach.c e944d0052b577703b9b83aac
  F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240
  F src/backup.c 2869a76c03eb393ee795416e2387005553df72bc
  F src/bitvec.c 1a78d450a17c5016710eec900bedfc5729bf9bdf
- F src/btmutex.c 45a968cc85afed9b5e6cf55bf1f42f8d18107f79
- F src/btree.c 90fda80e91d132e617da87eded024079a00e7825
- F src/btree.h beef31274289a103fa811a7d7adc2dcedbcf2077
- F src/btreeInt.h 2a56cce8bd48f745ab5a767dd9fad8b95a1b0827
- F src/build.c 7fcb454e802c35f2b50be9b977dc9168367380e3
+ F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
 -F src/btree.c 5d93e2477acb99d50a8b045f2e26a0be3d7751fe
 -F src/btree.h 68ef301795e00cdf1d3ab93abc44a43b7fe771e0
 -F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5
 -F src/build.c 9d497ff4bf3c82cecb520436e0e9963785627583
++F src/btree.c 04dccbd580639509b927da2a3f926fc70973205e
++F src/btree.h 8b91bee00ad110e0ae1645ca51d52d23db529380
++F src/btreeInt.h ca40607c2c9d4b4b7ded98e3d707b15c2f17f1bf
++F src/build.c fd8be668b4171f033790566019c0b80ad9c8d17f
  F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
  F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f
  F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198
@@@ -317,14 -322,14 +322,14 @@@ F src/os.c 8fd25588eeba74068d41102d2681
  F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf
  F src/os_common.h abdb9a191a367793268fe553d25bab894e986a0e
  F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
- F src/os_unix.c 0ca6d8710366fbb01a275160f018334cd347cbda
+ F src/os_unix.c b509b49b40a269e7b75ab511b6e92b2dc9444359
  F src/os_win.c 386fba30419e8458b13209781c2af5590eab2811
  F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
- F src/pager.c e290899d28c063a66029f813b39c61eb07018420
- F src/pager.h d72d174e10f8ed64dbfb8172279c042c1d046f2e
- F src/parse.y b0ad024157be717d43f9e1eb4f377873574153a3
 -F src/pager.c f4e9ac39fbb1e0fde97af85c0f4e00eb90764b67
 -F src/pager.h 1c2a49143dfba9e69cc8159ef019f472ed8d260b
 -F src/parse.y caad1e98edeca6960493d0c60d31b76820dd7776
++F src/pager.c d718fb21839adc7b7e1e7f568c06d5d3323bf957
++F src/pager.h 4a489a631d6f6dfcd52f629dd22e9932e58efcaf
++F src/parse.y 2a2b07ab26adc58878bc9c6091e16b87b89c40cc
  F src/pcache.c 73895411fa6b7bd6f0091212feabbe833b358d23
- F src/pcache.h 1ff11adce609ba7de139b6abfabaf9a2bac947b5
+ F src/pcache.h 4d0ccaad264d360981ec5e6a2b596d6e85242545
  F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051
  F src/pragma.c f3e7147299ca05ef4304a36f1fd6e002729c72c6
  F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c
@@@ -333,12 -338,12 +338,12 @@@ F src/printf.c af589a27b7d40f6f4f704e9e
  F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
  F src/resolve.c a83b41104e6ff69855d03cd0aaa09e93927ec39f
  F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
- F src/select.c f8fded11fc443a9f5a73cc5db069d06b34460e2f
- F src/shell.c ed71dc7679e6f087a3f1ea3f9dae4b0fae7209c3
- F src/sqlite.h.in 7d87d71b9a4689c51fa092f48f16590ff71558e3
+ F src/select.c 5b0f2aa9f73ec7b65d1711d485471854d5bad23c
+ F src/shell.c dcd7a83645ef2a58ee9c6d0ea4714d877d7835c4
+ F src/sqlite.h.in 214476a62012e578f42133a9a3b4f97a9aa421a3
  F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
  F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d
- F src/sqliteInt.h 17f1f082e4f5e0af76ab027034079b153fcad22a
 -F src/sqliteInt.h b8ccd34a919e4b6bab8c4164046330002aa9a27a
++F src/sqliteInt.h 98ad874dbea2fef13f200baa6dc9df9b6b75c422
  F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46
  F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba
  F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e
@@@ -397,22 -402,22 +402,22 @@@ F src/trigger.c de3ed31ad3218a20d7d7e18
  F src/update.c 17332f9fe818cbc0444c36a811800af8498af4c3
  F src/utf.c 32d7f82aa921322f3e1c956f4b58f019ebd2c6b3
  F src/util.c e802e8e311a0d6c48cd1b3e89db164f6f0248d70
 -F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
 -F src/vdbe.c 6572d00eefeaa0b14b325fdf3a409920ec3fee82
 +F src/vacuum.c 983cc3754718ef169a6ea9aef86798bd28106f21
- F src/vdbe.c 83c09bc78d03c3bc7f596c2698858bc3b7615fd1
++F src/vdbe.c fd831237035c6d25d89ca131420d1bf8ae3bcbb3
  F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637
- F src/vdbeInt.h 75c2e82ee3357e9210c06474f8d9bdf12c81105d
+ F src/vdbeInt.h 42eefa4f9e7432b9968d321b44e48821ec13b189
  F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca
- F src/vdbeaux.c 83120486af1eb23c9889c0a80572051fa3b8cd00
 -F src/vdbeaux.c f2e6b4fae037db04323be8de7bcd266375746471
++F src/vdbeaux.c a05ffe92f6c8edc523b28ef1a4a5947145f0380e
  F src/vdbeblob.c fdc4a81605ae7a35ae94a55bd768b66d6be16f15
  F src/vdbemem.c fdd1578e47bea61390d472de53c565781d81e045
- F src/vdbesort.c a7ec02da4494c59dfd071126dd3726be5a11459d
+ F src/vdbesort.c 0971557e5d3c289e46f56a52aed2197c13251de7
  F src/vdbetrace.c 8befe829faff6d9e6f6e4dee5a7d3f85cc85f1a0
  F src/vtab.c 2a8b44aa372c33f6154208e7a7f6c44254549806
- F src/vxworks.h c18586c8edc1bddbc15c004fa16aeb1e1342b4fb
- F src/wal.c 773ba7c089be217dabc9c7e91941345d2b26d30d
- F src/wal.h e3ae126b25817dd1e5d779a1aaaa742218de5139
- F src/walker.c 2e14d17f592d176b6dc879c33fbdec4fbccaa2ba
- F src/where.c c6d3d2f6af57d574a7365ee2b225a5024f2a6bec
+ F src/vxworks.h 974e7d9a98f602d6310d563e1dc4e08f9fc48e47
 -F src/wal.c d21b99fd1458159d0b1ecdccc8ee6ada4fdc4c54
 -F src/wal.h 2f7c831cf3b071fa548bf2d5cac640846a7ff19c
++F src/wal.c 2390cb2e5cc8529ab4dee92ee8292db1a4f824d8
++F src/wal.h 327e94c3e366154f52a8d9be9be0ea790cc4e08c
+ F src/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354
+ F src/where.c bb69654f841ae7af0a20cc6fb8f0ac57901c31be
  F src/whereInt.h 78b6b4de94db84aecbdc07fe3e38f648eb391e9a
  F src/wherecode.c dfbfe198e418b01f208b489e088edd230c91a4e7
  F src/whereexpr.c eebba8340c90de73b3d3bbe8c43b84559b8e6e2c
@@@ -1282,8 -1284,8 +1287,8 @@@ F test/vtabI.test 751b07636700dbdea328e
  F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
  F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
  F test/vtab_shared.test ea8778d5b0df200adef2ca7c00c3c37d4375f772
- F test/wal.test dbfc482e10c7263298833bb1fc60b3ac9d6340a1
+ F test/wal.test 65bfc68f3f09dcbc62cee9f794e560428d96cec7
 -F test/wal2.test 1f841d2048080d32f552942e333fd99ce541dada
 +F test/wal2.test dc801f6d3f8f39d1534ffbd15a715b0b287508db
  F test/wal3.test b1d425f68a1f61d12563f0fa1ee6fca7d5afabf4
  F test/wal4.test 4744e155cd6299c6bd99d3eab1c82f77db9cdb3c
  F test/wal5.test 88b5d9a6a3d1532497ee9f4296f010d66f07e33c
@@@ -1409,7 -1412,7 +1415,7 @@@ F tool/vdbe_profile.tcl 246d0da094856d7
  F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
  F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
  F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
- P 6bea792c3d71be34ccb9c14a0df8a5244d2d3678 fd0a50f0797d154fefff724624f00548b5320566
- R fa29b06decacdf51ca71abe2a91cec92
 -P f791fc7009d68941c60d7bf953bab19d86112133
 -R 52083946c40dd4f44744cbc0b447540f
--U drh
- Z 7c114826f0fefe126dc2832b00c1f66c
 -Z 9b36451b3b0b6d81cfd6f7c438e3b3aa
++P e1d2ffc06d47b550ca9447a71443dea08b98d1ad 8dedff3b9ac3e6bf9c131fee19f7d26dc1ebd61f
++R 51a8de6fb41bec6ffe9c6c29c20306b1
++U dan
++Z 6037bb30250c5bc4a0c6399b67d0df45
diff --cc manifest.uuid
index 846f1bec7b46d2197c37eb24558f9a4179065336,92616336dff511057125335ec56ea458a299bffa..2d84e3fb02ee35d07be9b6e4ad19946f5bc79b23
@@@ -1,1 -1,1 +1,1 @@@
- e1d2ffc06d47b550ca9447a71443dea08b98d1ad
 -8dedff3b9ac3e6bf9c131fee19f7d26dc1ebd61f
++fccc5f20c360fa17c3692a9f1fc1d16612632a7f
diff --cc src/btree.c
index 174204f5c9ec51b0528b9b773e93c48bcb23e247,b5a1ee3b2c2641dbd5ddf934e24c6c68a90e9340..209685cb87ff84e3d3fe43df3b0902133b8a4f43
@@@ -3329,10 -3122,8 +3325,9 @@@ int sqlite3BtreeNewDb(Btree *p)
  ** proceed.
  */
  int sqlite3BtreeBeginTrans(Btree *p, int wrflag){
-   sqlite3 *pBlock = 0;
    BtShared *pBt = p->pBt;
    int rc = SQLITE_OK;
 +  int bConcurrent = (p->db->bConcurrent && !ISAUTOVACUUM);
  
    sqlite3BtreeEnter(p);
    btreeIntegrity(p);
@@@ -10078,29 -9670,11 +10076,38 @@@ int sqlite3BtreeIsReadonly(Btree *p)
  */
  int sqlite3HeaderSizeBtree(void){ return ROUND8(sizeof(MemPage)); }
  
 +/*
 +** This function is called to ensure that all locks required to commit the
 +** current write-transaction to the database file are held. If the db is
 +** in rollback mode, this means the EXCLUSIVE lock on the database file.
 +**
 +** Or, if this is an CONCURRENT transaction on a wal-mode database, the WRITER
 +** lock on the wal file. In this case this function also checks that the
 +** CONCURRENT transaction can be safely committed (does not commit with any
 +** other transaction committed since it was opened).
 +**
 +** SQLITE_OK is returned if successful. SQLITE_BUSY if the required locks
 +** cannot be obtained due to a conflicting lock. If the locks cannot be
 +** obtained for an CONCURRENT transaction due to a conflict with an already
 +** committed transaction, SQLITE_BUSY_SNAPSHOT is returned. Otherwise, if
 +** some other error (OOM, IO, etc.) occurs, the relevant SQLite error code
 +** is returned.
 +*/
 +int sqlite3BtreeExclusiveLock(Btree *p){
 +  int rc;
 +  BtShared *pBt = p->pBt;
 +  assert( p->inTrans==TRANS_WRITE && pBt->pPage1 );
 +  sqlite3BtreeEnter(p);
 +  rc = sqlite3PagerExclusiveLock(pBt->pPager, pBt->pPage1->pDbPage);
 +  sqlite3BtreeLeave(p);
 +  return rc;
 +}
++
+ #if !defined(SQLITE_OMIT_SHARED_CACHE)
+ /*
+ ** Return true if the Btree passed as the only argument is sharable.
+ */
+ int sqlite3BtreeSharable(Btree *p){
+   return p->sharable;
+ }
+ #endif
diff --cc src/btree.h
Simple merge
diff --cc src/btreeInt.h
Simple merge
diff --cc src/build.c
Simple merge
diff --cc src/pager.c
Simple merge
diff --cc src/pager.h
Simple merge
diff --cc src/parse.y
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/wal.c
index bab055a02fe6a92d796e5b86ca3a26411b5804a4,7cf2cabffb64c85aec9e6d34ff261ed51751f665..12856bb956dd6082cc72196cf245e02e584451c3
+++ b/src/wal.c
@@@ -2646,34 -2617,6 +2651,35 @@@ Pgno sqlite3WalDbsize(Wal *pWal)
    return 0;
  }
  
 +/*
 +** Take the WRITER lock on the WAL file. Return SQLITE_OK if successful,
 +** or an SQLite error code otherwise. This routine does not invoke any
 +** busy-handler callbacks, that is done at a higher level.
 +*/
 +static int walWriteLock(Wal *pWal){
 +  int rc;
 +
 +  /* Cannot start a write transaction without first holding a read lock */
 +  assert( pWal->readLock>=0 );
 +  assert( pWal->writeLock==0 );
++  assert( pWal->iReCksum==0 );
 +
 +  /* If this is a read-only connection, obtaining a write-lock is not
 +  ** possible. In this case return SQLITE_READONLY. Otherwise, attempt
 +  ** to grab the WRITER lock. Set Wal.writeLock to true and return
 +  ** SQLITE_OK if successful, or leave Wal.writeLock clear and return 
 +  ** an SQLite error code (possibly SQLITE_BUSY) otherwise. */
 +  if( pWal->readOnly ){
 +    rc = SQLITE_READONLY;
 +  }else{
 +    rc = walLockExclusive(pWal, WAL_WRITE_LOCK, 1);
 +    if( rc==SQLITE_OK ){
 +      pWal->writeLock = 1;
 +    }
 +  }
 +
 +  return rc;
 +}
  
  /* 
  ** This function starts a write transaction on the WAL.
@@@ -3214,6 -3079,13 +3302,14 @@@ int sqlite3WalFrames
      if( rc ) return rc;
      pLast = p;
      iOffset += szFrame;
+     p->flags |= PGHDR_WAL_APPEND;
+   }
++
+   /* Recalculate checksums within the wal file if required. */
+   if( isCommit && pWal->iReCksum ){
+     rc = walRewriteChecksums(pWal, iFrame);
+     if( rc ) return rc;
    }
  
    /* If this is the end of a transaction, then we might need to pad
diff --cc src/wal.h
Simple merge