]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge changes from the trunk into the threads branch.
authordrh <drh@noemail.net>
Thu, 29 May 2014 20:24:20 +0000 (20:24 +0000)
committerdrh <drh@noemail.net>
Thu, 29 May 2014 20:24:20 +0000 (20:24 +0000)
FossilOrigin-Name: 416cb091267de91b9cadee9f7453b8627570b7d3

1  2 
manifest
manifest.uuid
src/btree.c
src/build.c
src/os_win.c
src/select.c
src/shell.c
src/sqliteInt.h
src/vdbe.c
src/vdbesort.c

diff --cc manifest
index fa9f74befe93ea3415e4e31b7d09addc70460099,5ca3da5016047dc1c811c4e8aea35e0a5d608271..a2e0dec014ea48bf9bc5b76f3a12308587eb0c2f
+++ b/manifest
@@@ -1,9 -1,9 +1,9 @@@
- C Merge\srecent\strunk\schanges\sinto\sthe\sthreads\sbranch.
- D 2014-05-26T20:15:21.073
 -C Fix\sto\sthe\sEXPLAIN\sindentation\slogic\sin\sthe\scommand-line\sshell.
 -D 2014-05-29T20:17:57.027
++C Merge\schanges\sfrom\sthe\strunk\sinto\sthe\sthreads\sbranch.
++D 2014-05-29T20:24:20.500
  F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 -F Makefile.in dd2b1aba364ff9b05de41086f74407f285c57670
 +F Makefile.in de92112472618cb869d27249966bad1783e4a853
  F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
 -F Makefile.msc 52911c6bfeaf9b40f47ef4615ab66d98ab0f2b3d
 +F Makefile.msc f64754550a1272b7f840e8594a8b40c0b46792b4
  F Makefile.vxworks 034289efa9d591b04b1a73598623119c306cbba0
  F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8
  F VERSION 9f823c026c6a32fc5f84d212a8aae0a221dba45c
@@@ -165,10 -165,10 +165,10 @@@ F src/auth.c 523da7fb4979469955d822ff92
  F src/backup.c a729e63cf5cd1829507cb7b8e89f99b95141bb53
  F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb
  F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7
- F src/btree.c 34172d28ad9866c70ec6d64a0b39abf0fa923bdc
 -F src/btree.c 70c60a3807b2072982f184d9614e020d2953f89c
++F src/btree.c 32b552d5388fa27adf99b9d7e09f4746a08da4e7
  F src/btree.h 4245a349bfe09611d7ff887dbc3a80cee8b7955a
  F src/btreeInt.h cf180d86b2e9e418f638d65baa425c4c69c0e0e3
- F src/build.c c68e0391dbd1f16a29767a176fa71729765bfd24
 -F src/build.c 927e39b6aaf872c7b28f154f6acfeb9a05a72442
++F src/build.c ac8dc0b8b6d49001eac19a46dce94357bddc15b5
  F src/callback.c 174e3c8656bc29f91d710ab61550d16eea34be98
  F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
  F src/ctime.c 0231df905e2c4abba4483ee18ffc05adc321df2a
@@@ -176,9 -176,9 +176,9 @@@ F src/date.c 593c744b2623971e45affd0bde
  F src/delete.c bcf8f72126cea80fc3d5bc5494cf19b3f8935aaf
  F src/expr.c 4f9e497c66e2f25a4d139357a778c84d5713207c
  F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
- F src/fkey.c 5269ef07b100763134f71b889327c333bd0989cf
+ F src/fkey.c a549cff9fe8b736cdae21650ea0af6de29b77619
  F src/func.c 2e16316ec3a6365a0dc3e553c586f91b20f7f6c8
 -F src/global.c 1e4bd956dc2f608f87d2a929abc4a20db65f30e4
 +F src/global.c 77ec119d6f6453039c2820336af8e8f804f20acf
  F src/hash.c d139319967164f139c8d1bb8a11b14db9c4ba3cd
  F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
  F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
@@@ -206,7 -206,7 +206,7 @@@ F src/os.h 60d419395e32a8029fa380a80a3d
  F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
  F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
  F src/os_unix.c ae4b5240af4619d711301d7992396e182585269f
- F src/os_win.c b8c28abae3ddb3c52800a461bda257dfedf5c6ae
 -F src/os_win.c 648f842876e25391b7c454c8e49f7db1fd981d65
++F src/os_win.c cf4f35cd6cac5ab8327ffd32e6495326d88ec65e
  F src/os_win.h 057344a6720b4c8405d9bd98f58cb37a6ee46c25
  F src/pager.c f6bb1fa6cdf2062f2d8aec3e64db302bca519ab8
  F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428
@@@ -220,12 -220,12 +220,12 @@@ F src/printf.c e5a0005f8b3de21f85da6a70
  F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
  F src/resolve.c 273d5f47c4e2c05b2d3d2bffeda939551ab59e66
  F src/rowset.c a9c9aae3234b44a6d7c6f5a3cadf90dce1e627be
- F src/select.c b6a17082e897dfa18974e7538f68f61ffba3ff0f
- F src/shell.c 4b976f0461be5b9bdf0e406c04ac5f233044e792
 -F src/select.c 7df17ec5506c2427576d412bee0e6ea740e12563
 -F src/shell.c 33f6c0bc0e32eae099f7c2b79cfa7515b4b4702c
 -F src/sqlite.h.in 564fc23db33870b5096b20d72df7491ce0b8b74f
++F src/select.c 2657f35be771d14f56402e4aa8a7e26562415ae6
++F src/shell.c 3d2cdb8d6a5ec11212d727d07ff41c9706084de7
 +F src/sqlite.h.in 53858ef439c84d794719901226447e8b5defb1b2
  F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
  F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc
- F src/sqliteInt.h 7bda339d2422f20ec23c8a77d9ae7dfbe9ccc0b3
 -F src/sqliteInt.h fccdc735c27b3dc12322fec7cdad8bc76be8d00b
++F src/sqliteInt.h 00cd3cf7be9ea28b963773de165eeb800c94d17c
  F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
  F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158
  F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
@@@ -275,21 -275,20 +275,21 @@@ F src/test_thread.c 1e133a40b50e9c035b0
  F src/test_vfs.c f84075a388527892ff184988f43b69ce69b8083c
  F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
  F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 +F src/threads.c 3c63f60ce0aae4c40ed4b8dc745490ff42a05308
  F src/tokenize.c 6da2de6e12218ccb0aea5184b56727d011f4bee7
  F src/trigger.c 66f3470b03b52b395e839155786966e3e037fddb
- F src/update.c 5b3e74a03b3811e586b4f2b4cbd7c49f01c93115
+ F src/update.c 01564b3c430f6c7b0a35afaf7aba7987206fa3a5
  F src/utf.c 6dc9ec9f1b3db43ae8ba0365377f11df1ee4c01c
  F src/util.c 049fe1d3c0e2209c1bee107aec2fcff6285f909f
  F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
- F src/vdbe.c d4f57833c3cdc202d97fd924408b316b45cb4e1e
 -F src/vdbe.c 9bfe6becfc094382ae213656fbe511055ad83a54
++F src/vdbe.c 1dff86d8a861b24a7636a2f586953ceb483b445f
  F src/vdbe.h 394464909ed682334aa3d5831aae0c2fe2abef94
 -F src/vdbeInt.h e6d83e5bfd62fc6685ba1ed6153f7099f82de9f7
 +F src/vdbeInt.h c78ace64dc37495806dd50596eded1f6cd2b5a64
  F src/vdbeapi.c 0ed6053f947edd0b30f64ce5aeb811872a3450a4
 -F src/vdbeaux.c e493f38758c4b8f4ca2007cf6a700bd405d192f3
 +F src/vdbeaux.c 44d4d1f5711f71eaf0d624de5c3e4976fe4e180b
  F src/vdbeblob.c 9205ce9d3b064d9600f8418a897fc88b5687d9ac
  F src/vdbemem.c 6fc77594c60f6155404f3f8d71bf36d1fdeb4447
- F src/vdbesort.c a8b8798f23baa4b293804597532a94470e44f248
 -F src/vdbesort.c 44441d73b08b3a638dcdb725afffb87c6574ad27
++F src/vdbesort.c e2784e2e1f1819a55ce6f22c6ab22eca576ae6d8
  F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767
  F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd
  F src/wal.c 76e7fc6de229bea8b30bb2539110f03a494dc3a8
@@@ -1175,9 -1171,9 +1176,9 @@@ F tool/tostr.awk e75472c2f98dd76e06b8c9
  F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891
  F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
  F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
- F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
+ F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
  F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
- P 386e088868b44b02646e452147838d2e97b093ee 856d44a206d82e96265103556dedda39ca3602b1
- R 4f55a610bf3d15f7ef06a03a46e29034
 -P 48dce821a07ac29da6ce05e92cf3f6e52b6eb388
 -R f3f6ddac33e05ba165213ff981b802f2
++P 8215202759dbd863edf20aa26ff21da20bc35d73 8f916ed1e185ac728e00624d90e1d7bd2dda4469
++R 93affc38efdff0f238968fb6f1ed7e17
  U drh
- Z 312c26c727a59647516cffebae558cf0
 -Z 830218d29106127a2f4cf14b2b59a5e2
++Z f0e22f612bd7c7522e7f5c332e9f43cb
diff --cc manifest.uuid
index 8540623713a442acb966a0503a5791284356e681,16ffe06ff62403a6b172e6e8b5d57a54874bd896..a6ec05a37dfdeb7938ebb06945f54cc21c7f1530
@@@ -1,1 -1,1 +1,1 @@@
- 8215202759dbd863edf20aa26ff21da20bc35d73
 -8f916ed1e185ac728e00624d90e1d7bd2dda4469
++416cb091267de91b9cadee9f7453b8627570b7d3
diff --cc src/btree.c
Simple merge
diff --cc src/build.c
Simple merge
diff --cc src/os_win.c
Simple merge
diff --cc src/select.c
Simple merge
diff --cc src/shell.c
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbe.c
Simple merge
diff --cc src/vdbesort.c
index e9776914c29f1506b0f0ce55c0b244f415746797,d3690244c40f003d4ba08b5dfd4d3e8723d727e8..8065f6d982bbe85761e35a9b146d50ea7da1c5ec
@@@ -581,104 -281,28 +581,103 @@@ static int vdbePmaReadVarint(PmaReader 
    return SQLITE_OK;
  }
  
 +/*
 +** Attempt to memory map file pFile. If successful, set *pp to point to the
 +** new mapping and return SQLITE_OK. If the mapping is not attempted 
 +** (because the file is too large or the VFS layer is configured not to use
 +** mmap), return SQLITE_OK and set *pp to NULL.
 +**
 +** Or, if an error occurs, return an SQLite error code. The final value of
 +** *pp is undefined in this case.
 +*/
 +static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){
 +  int rc = SQLITE_OK;
 +  if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){
 +    rc = sqlite3OsFetch(pFile->pFd, 0, (int)pFile->iEof, (void**)pp);
 +  }
 +  return rc;
 +}
  
  /*
 -** Advance iterator pIter to the next key in its PMA. Return SQLITE_OK if
 -** no error occurs, or an SQLite error code if one does.
 +** Seek PmaReader pReadr to offset iOff within file pFile. Return SQLITE_OK 
 +** if successful, or an SQLite error code if an error occurs.
  */
 -static int vdbeSorterIterNext(
 -  sqlite3 *db,                    /* Database handle (for sqlite3DbMalloc() ) */
 -  VdbeSorterIter *pIter           /* Iterator to advance */
 +static int vdbePmaReaderSeek(
 +  SortSubtask *pTask,             /* Task context */
 +  PmaReader *pReadr,              /* Iterate to populate */
 +  SorterFile *pFile,              /* Sorter file to read from */
 +  i64 iOff                        /* Offset in pFile */
  ){
 -  int rc;                         /* Return Code */
 +  int rc = SQLITE_OK;
 +
 +  assert( pReadr->pIncr==0 || pReadr->pIncr->bEof==0 );
 +
 +  if( pReadr->aMap ){
 +    sqlite3OsUnfetch(pReadr->pFile, 0, pReadr->aMap);
 +    pReadr->aMap = 0;
 +  }
 +  pReadr->iReadOff = iOff;
 +  pReadr->iEof = pFile->iEof;
 +  pReadr->pFile = pFile->pFd;
 +
 +  rc = vdbeSorterMapFile(pTask, pFile, &pReadr->aMap);
 +  if( rc==SQLITE_OK && pReadr->aMap==0 ){
 +    int pgsz = pTask->pSorter->pgsz;
 +    int iBuf = pReadr->iReadOff % pgsz;
 +    if( pReadr->aBuffer==0 ){
 +      pReadr->aBuffer = (u8*)sqlite3Malloc(pgsz);
 +      if( pReadr->aBuffer==0 ) rc = SQLITE_NOMEM;
 +      pReadr->nBuffer = pgsz;
 +    }
 +    if( rc==SQLITE_OK && iBuf ){
 +      int nRead = pgsz - iBuf;
 +      if( (pReadr->iReadOff + nRead) > pReadr->iEof ){
 +        nRead = (int)(pReadr->iEof - pReadr->iReadOff);
 +      }
 +      rc = sqlite3OsRead(
 +          pReadr->pFile, &pReadr->aBuffer[iBuf], nRead, pReadr->iReadOff
 +      );
-       assert( rc!=SQLITE_IOERR_SHORT_READ );
 +    }
 +  }
 +
 +  return rc;
 +}
 +
 +/*
 +** Advance PmaReader pReadr to the next key in its PMA. Return SQLITE_OK if
 +** no error occurs, or an SQLite error code if one does.
 +*/
 +static int vdbePmaReaderNext(PmaReader *pReadr){
 +  int rc = SQLITE_OK;             /* Return Code */
    u64 nRec = 0;                   /* Size of record in bytes */
  
 -  if( pIter->iReadOff>=pIter->iEof ){
 -    /* This is an EOF condition */
 -    vdbeSorterIterZero(db, pIter);
 -    return SQLITE_OK;
 +
 +  if( pReadr->iReadOff>=pReadr->iEof ){
 +    IncrMerger *pIncr = pReadr->pIncr;
 +    int bEof = 1;
 +    if( pIncr ){
 +      rc = vdbeIncrSwap(pIncr);
 +      if( rc==SQLITE_OK && pIncr->bEof==0 ){
 +        rc = vdbePmaReaderSeek(
 +            pIncr->pTask, pReadr, &pIncr->aFile[0], pIncr->iStartOff
 +        );
 +        bEof = 0;
 +      }
 +    }
 +
 +    if( bEof ){
 +      /* This is an EOF condition */
 +      vdbePmaReaderClear(pReadr);
 +      return rc;
 +    }
    }
  
 -  rc = vdbeSorterIterVarint(db, pIter, &nRec);
    if( rc==SQLITE_OK ){
 -    pIter->nKey = (int)nRec;
 -    rc = vdbeSorterIterRead(db, pIter, (int)nRec, &pIter->aKey);
 +    rc = vdbePmaReadVarint(pReadr, &nRec);
 +  }
 +  if( rc==SQLITE_OK ){
 +    pReadr->nKey = (int)nRec;
 +    rc = vdbePmaReadBlob(pReadr, (int)nRec, &pReadr->aKey);
    }
  
    return rc;