System.Data.SQLite
Check-in [58e5128d4c]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Update SQLite core library to the 3.15.1 release.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 58e5128d4cc04e259e17d8baa28ce3f001cfaba1
User & Date: mistachkin 2016-11-04 20:19:17
Context
2016-11-08
18:55
Back out the change in [6331a7209e] as one of the legacy tests depends on its previous behavior. check-in: 470cbf3de9 user: mistachkin tags: trunk
2016-11-04
20:19
Update SQLite core library to the 3.15.1 release. check-in: 58e5128d4c user: mistachkin tags: trunk
00:26
Disallow nested transactions by default. check-in: 6331a7209e user: mistachkin tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to Doc/Extra/Provider/version.html.

    41     41         </table>
    42     42       </div>
    43     43       <div id="mainSection">
    44     44       <div id="mainBody">
    45     45       <h1 class="heading">Version History</h1>
    46     46       <p><b>1.0.104.0 - December XX, 2016</b></p>
    47     47       <ul>
    48         -      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_15_0.html">SQLite 3.15.0</a>.</li>
           48  +      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_15_1.html">SQLite 3.15.1</a>.</li>
    49     49         <li>Add the &quot;%PreLoadSQLite_AssemblyDirectory%&quot;, &quot;%PreLoadSQLite_TargetFramework%&quot;, and &quot;%PreLoadSQLite_XmlConfigDirectory%&quot; <a href="https://system.data.sqlite.org/index.html/artifact?ci=trunk&filename=Doc/Extra/Provider/environment.html">replacement tokens</a> for use in configuration setting values. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/d4728aecb7">[d4728aecb7]</a>.</li>
    50     50         <li>Prevent the GetByte, GetChar, and GetInt16 methods of the SQLiteDataReader class from throwing exceptions for large integer values. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/5535448538">[5535448538]</a>.&nbsp;<b>** Potentially Incompatible Change **</b></li>
    51     51       </ul>
    52     52       <p><b>1.0.103.0 - September 15, 2016</b></p>
    53     53       <ul>
    54     54         <li>Updated to <a href="https://www.sqlite.org/releaselog/3_14_2.html">SQLite 3.14.2</a>.</li>
    55     55         <li>Add preliminary support for the .NET Framework 4.6.2.</li>

Changes to SQLite.Interop/props/sqlite3.props.

     5      5    *
     6      6    * Written by Joe Mistachkin.
     7      7    * Released to the public domain, use at your own risk!
     8      8    *
     9      9   -->
    10     10   <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
    11     11     <PropertyGroup Label="UserMacros">
    12         -    <SQLITE_MANIFEST_VERSION>3.15.0.0</SQLITE_MANIFEST_VERSION>
    13         -    <SQLITE_RC_VERSION>3,15,0,0</SQLITE_RC_VERSION>
           12  +    <SQLITE_MANIFEST_VERSION>3.15.1.0</SQLITE_MANIFEST_VERSION>
           13  +    <SQLITE_RC_VERSION>3,15,1,0</SQLITE_RC_VERSION>
    14     14       <SQLITE_COMMON_DEFINES>_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT4=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1;SQLITE_ENABLE_MEMORY_MANAGEMENT=1;SQLITE_ENABLE_API_ARMOR=1;SQLITE_ENABLE_DBSTAT_VTAB=1</SQLITE_COMMON_DEFINES>
    15     15       <SQLITE_EXTRA_DEFINES>SQLITE_PLACEHOLDER=1;SQLITE_HAS_CODEC=1</SQLITE_EXTRA_DEFINES>
    16     16       <SQLITE_WINCE_200X_DEFINES>SQLITE_OMIT_WAL=1</SQLITE_WINCE_200X_DEFINES>
    17     17       <SQLITE_WINCE_2013_DEFINES>HAVE_ERRNO_H=1;SQLITE_MSVC_LOCALTIME_API=1</SQLITE_WINCE_2013_DEFINES>
    18     18       <SQLITE_DEBUG_DEFINES>SQLITE_DEBUG=1;SQLITE_MEMDEBUG=1;SQLITE_ENABLE_EXPENSIVE_ASSERT=1</SQLITE_DEBUG_DEFINES>
    19     19       <SQLITE_RELEASE_DEFINES>SQLITE_WIN32_MALLOC=1</SQLITE_RELEASE_DEFINES>
    20     20       <SQLITE_DISABLE_WARNINGS>4055;4100;4127;4146;4210;4232;4244;4245;4267;4306;4389;4701;4703;4706</SQLITE_DISABLE_WARNINGS>

Changes to SQLite.Interop/props/sqlite3.vsprops.

    10     10   <VisualStudioPropertySheet
    11     11   	ProjectType="Visual C++"
    12     12   	Version="8.00"
    13     13   	Name="sqlite3"
    14     14   	>
    15     15   	<UserMacro
    16     16   		Name="SQLITE_MANIFEST_VERSION"
    17         -		Value="3.15.0.0"
           17  +		Value="3.15.1.0"
    18     18   		PerformEnvironmentSet="true"
    19     19   	/>
    20     20   	<UserMacro
    21     21   		Name="SQLITE_RC_VERSION"
    22         -		Value="3,15,0,0"
           22  +		Value="3,15,1,0"
    23     23   		PerformEnvironmentSet="true"
    24     24   	/>
    25     25   	<UserMacro
    26     26   		Name="SQLITE_COMMON_DEFINES"
    27     27   		Value="_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT4=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1;SQLITE_ENABLE_MEMORY_MANAGEMENT=1;SQLITE_ENABLE_API_ARMOR=1;SQLITE_ENABLE_DBSTAT_VTAB=1"
    28     28   		PerformEnvironmentSet="true"
    29     29   	/>

Changes to SQLite.Interop/src/core/sqlite3.c.

     1      1   /******************************************************************************
     2      2   ** This file is an amalgamation of many separate C source files from SQLite
     3         -** version 3.15.0.  By combining all the individual C code files into this
            3  +** version 3.15.1.  By combining all the individual C code files into this
     4      4   ** single large file, the entire code can be compiled as a single translation
     5      5   ** unit.  This allows many compilers to do optimizations that would not be
     6      6   ** possible if the files were compiled separately.  Performance improvements
     7      7   ** of 5% or more are commonly seen when SQLite is compiled as a single
     8      8   ** translation unit.
     9      9   **
    10     10   ** This file is all you need to compile SQLite.  To use SQLite in other
................................................................................
   377    377   ** string contains the date and time of the check-in (UTC) and an SHA1
   378    378   ** hash of the entire source tree.
   379    379   **
   380    380   ** See also: [sqlite3_libversion()],
   381    381   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   382    382   ** [sqlite_version()] and [sqlite_source_id()].
   383    383   */
   384         -#define SQLITE_VERSION        "3.15.0"
   385         -#define SQLITE_VERSION_NUMBER 3015000
   386         -#define SQLITE_SOURCE_ID      "2016-10-13 12:56:18 4d66ac98deaa85218be7ff0eb254f78b96d8e8d4"
          384  +#define SQLITE_VERSION        "3.15.1"
          385  +#define SQLITE_VERSION_NUMBER 3015001
          386  +#define SQLITE_SOURCE_ID      "2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36"
   387    387   
   388    388   /*
   389    389   ** CAPI3REF: Run-Time Library Version Numbers
   390    390   ** KEYWORDS: sqlite3_version, sqlite3_sourceid
   391    391   **
   392    392   ** These interfaces provide the same information as the [SQLITE_VERSION],
   393    393   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
................................................................................
  1233   1233   ** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled.
  1234   1234   **
  1235   1235   ** <li>[[SQLITE_FCNTL_HAS_MOVED]]
  1236   1236   ** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a
  1237   1237   ** pointer to an integer and it writes a boolean into that integer depending
  1238   1238   ** on whether or not the file has been renamed, moved, or deleted since it
  1239   1239   ** was first opened.
         1240  +**
         1241  +** <li>[[SQLITE_FCNTL_WIN32_GET_HANDLE]]
         1242  +** The [SQLITE_FCNTL_WIN32_GET_HANDLE] opcode can be used to obtain the
         1243  +** underlying native file handle associated with a file handle.  This file
         1244  +** control interprets its argument as a pointer to a native file handle and
         1245  +** writes the resulting value there.
  1240   1246   **
  1241   1247   ** <li>[[SQLITE_FCNTL_WIN32_SET_HANDLE]]
  1242   1248   ** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging.  This
  1243   1249   ** opcode causes the xFileControl method to swap the file handle with the one
  1244   1250   ** pointed to by the pArg argument.  This capability is used during testing
  1245   1251   ** and only needs to be supported when SQLITE_TEST is defined.
  1246   1252   **
................................................................................
  1284   1290   #define SQLITE_FCNTL_COMMIT_PHASETWO        22
  1285   1291   #define SQLITE_FCNTL_WIN32_SET_HANDLE       23
  1286   1292   #define SQLITE_FCNTL_WAL_BLOCK              24
  1287   1293   #define SQLITE_FCNTL_ZIPVFS                 25
  1288   1294   #define SQLITE_FCNTL_RBU                    26
  1289   1295   #define SQLITE_FCNTL_VFS_POINTER            27
  1290   1296   #define SQLITE_FCNTL_JOURNAL_POINTER        28
         1297  +#define SQLITE_FCNTL_WIN32_GET_HANDLE       29
  1291   1298   
  1292   1299   /* deprecated names */
  1293   1300   #define SQLITE_GET_LOCKPROXYFILE      SQLITE_FCNTL_GET_LOCKPROXYFILE
  1294   1301   #define SQLITE_SET_LOCKPROXYFILE      SQLITE_FCNTL_SET_LOCKPROXYFILE
  1295   1302   #define SQLITE_LAST_ERRNO             SQLITE_FCNTL_LAST_ERRNO
  1296   1303   
  1297   1304   
................................................................................
 13084  13091   
 13085  13092   #ifndef SQLITE_OMIT_WAL
 13086  13093   SQLITE_PRIVATE   int sqlite3PagerCheckpoint(Pager *pPager, int, int*, int*);
 13087  13094   SQLITE_PRIVATE   int sqlite3PagerWalSupported(Pager *pPager);
 13088  13095   SQLITE_PRIVATE   int sqlite3PagerWalCallback(Pager *pPager);
 13089  13096   SQLITE_PRIVATE   int sqlite3PagerOpenWal(Pager *pPager, int *pisOpen);
 13090  13097   SQLITE_PRIVATE   int sqlite3PagerCloseWal(Pager *pPager);
        13098  +SQLITE_PRIVATE   int sqlite3PagerUseWal(Pager *pPager);
 13091  13099   # ifdef SQLITE_ENABLE_SNAPSHOT
 13092  13100   SQLITE_PRIVATE   int sqlite3PagerSnapshotGet(Pager *pPager, sqlite3_snapshot **ppSnapshot);
 13093  13101   SQLITE_PRIVATE   int sqlite3PagerSnapshotOpen(Pager *pPager, sqlite3_snapshot *pSnapshot);
 13094  13102   # endif
        13103  +#else
        13104  +# define sqlite3PagerUseWal(x) 0
 13095  13105   #endif
 13096  13106   
 13097  13107   #ifdef SQLITE_ENABLE_ZIPVFS
 13098  13108   SQLITE_PRIVATE   int sqlite3PagerWalFramesize(Pager *pPager);
 13099  13109   #endif
 13100  13110   
 13101  13111   /* Functions used to query pager state and configuration. */
................................................................................
 18103  18113     u8 *aRecord;                    /* old.* database record */
 18104  18114     KeyInfo keyinfo;
 18105  18115     UnpackedRecord *pUnpacked;      /* Unpacked version of aRecord[] */
 18106  18116     UnpackedRecord *pNewUnpacked;   /* Unpacked version of new.* record */
 18107  18117     int iNewReg;                    /* Register for new.* values */
 18108  18118     i64 iKey1;                      /* First key value passed to hook */
 18109  18119     i64 iKey2;                      /* Second key value passed to hook */
 18110         -  int iPKey;                      /* If not negative index of IPK column */
 18111  18120     Mem *aNew;                      /* Array of new.* values */
        18121  +  Table *pTab;                    /* Schema object being upated */          
 18112  18122   };
 18113  18123   
 18114  18124   /*
 18115  18125   ** Function prototypes
 18116  18126   */
 18117  18127   SQLITE_PRIVATE void sqlite3VdbeError(Vdbe*, const char *, ...);
 18118  18128   SQLITE_PRIVATE void sqlite3VdbeFreeCursor(Vdbe *, VdbeCursor*);
................................................................................
 40672  40682           winIoerrRetryDelay = a[1];
 40673  40683         }else{
 40674  40684           a[1] = winIoerrRetryDelay;
 40675  40685         }
 40676  40686         OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
 40677  40687         return SQLITE_OK;
 40678  40688       }
        40689  +    case SQLITE_FCNTL_WIN32_GET_HANDLE: {
        40690  +      LPHANDLE phFile = (LPHANDLE)pArg;
        40691  +      *phFile = pFile->h;
        40692  +      OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h));
        40693  +      return SQLITE_OK;
        40694  +    }
 40679  40695   #ifdef SQLITE_TEST
 40680  40696       case SQLITE_FCNTL_WIN32_SET_HANDLE: {
 40681  40697         LPHANDLE phFile = (LPHANDLE)pArg;
 40682  40698         HANDLE hOldFile = pFile->h;
 40683  40699         pFile->h = *phFile;
 40684  40700         *phFile = hOldFile;
 40685  40701         OSTRACE(("FCNTL oldFile=%p, newFile=%p, rc=SQLITE_OK\n",
................................................................................
 47162  47178   #define isOpen(pFd) ((pFd)->pMethods!=0)
 47163  47179   
 47164  47180   /*
 47165  47181   ** Return true if this pager uses a write-ahead log instead of the usual
 47166  47182   ** rollback journal. Otherwise false.
 47167  47183   */
 47168  47184   #ifndef SQLITE_OMIT_WAL
 47169         -static int pagerUseWal(Pager *pPager){
        47185  +SQLITE_PRIVATE int sqlite3PagerUseWal(Pager *pPager){
 47170  47186     return (pPager->pWal!=0);
 47171  47187   }
        47188  +# define pagerUseWal(x) sqlite3PagerUseWal(x)
 47172  47189   #else
 47173  47190   # define pagerUseWal(x) 0
 47174  47191   # define pagerRollbackWal(x) 0
 47175  47192   # define pagerWalFrames(v,w,x,y) 0
 47176  47193   # define pagerOpenWalIfPresent(z) SQLITE_OK
 47177  47194   # define pagerBeginReadTransaction(z) SQLITE_OK
 47178  47195   #endif
................................................................................
 62823  62840           ** up loading large records that span many overflow pages.
 62824  62841           */
 62825  62842           if( (eOp&0x01)==0                                      /* (1) */
 62826  62843            && offset==0                                          /* (2) */
 62827  62844            && (bEnd || a==ovflSize)                              /* (6) */
 62828  62845            && pBt->inTransaction==TRANS_READ                     /* (4) */
 62829  62846            && (fd = sqlite3PagerFile(pBt->pPager))->pMethods     /* (3) */
 62830         -         && pBt->pPage1->aData[19]==0x01                       /* (5) */
        62847  +         && 0==sqlite3PagerUseWal(pBt->pPager)                 /* (5) */
 62831  62848            && &pBuf[-4]>=pBufStart                               /* (7) */
 62832  62849           ){
 62833  62850             u8 aSave[4];
 62834  62851             u8 *aWrite = &pBuf[-4];
 62835  62852             assert( aWrite>=pBufStart );                         /* hence (7) */
 62836  62853             memcpy(aSave, aWrite, 4);
 62837  62854             rc = sqlite3OsRead(fd, aWrite, a+4, (i64)pBt->pageSize*(nextPage-1));
................................................................................
 75074  75091     preupdate.iNewReg = iReg;
 75075  75092     preupdate.keyinfo.db = db;
 75076  75093     preupdate.keyinfo.enc = ENC(db);
 75077  75094     preupdate.keyinfo.nField = pTab->nCol;
 75078  75095     preupdate.keyinfo.aSortOrder = (u8*)&fakeSortOrder;
 75079  75096     preupdate.iKey1 = iKey1;
 75080  75097     preupdate.iKey2 = iKey2;
 75081         -  preupdate.iPKey = pTab->iPKey;
        75098  +  preupdate.pTab = pTab;
 75082  75099   
 75083  75100     db->pPreUpdate = &preupdate;
 75084  75101     db->xPreUpdateCallback(db->pPreUpdateArg, db, op, zDb, zTbl, iKey1, iKey2);
 75085  75102     db->pPreUpdate = 0;
 75086  75103     sqlite3DbFree(db, preupdate.aRecord);
 75087  75104     vdbeFreeUnpacked(db, preupdate.pUnpacked);
 75088  75105     vdbeFreeUnpacked(db, preupdate.pNewUnpacked);
................................................................................
 76806  76823       }
 76807  76824       p->aRecord = aRec;
 76808  76825     }
 76809  76826   
 76810  76827     if( iIdx>=p->pUnpacked->nField ){
 76811  76828       *ppValue = (sqlite3_value *)columnNullValue();
 76812  76829     }else{
        76830  +    Mem *pMem = *ppValue = &p->pUnpacked->aMem[iIdx];
 76813  76831       *ppValue = &p->pUnpacked->aMem[iIdx];
 76814         -    if( iIdx==p->iPKey ){
 76815         -      sqlite3VdbeMemSetInt64(*ppValue, p->iKey1);
        76832  +    if( iIdx==p->pTab->iPKey ){
        76833  +      sqlite3VdbeMemSetInt64(pMem, p->iKey1);
        76834  +    }else if( p->pTab->aCol[iIdx].affinity==SQLITE_AFF_REAL ){
        76835  +      if( pMem->flags & MEM_Int ){
        76836  +        sqlite3VdbeMemRealify(pMem);
        76837  +      }
 76816  76838       }
 76817  76839     }
 76818  76840   
 76819  76841    preupdate_old_out:
 76820  76842     sqlite3Error(db, rc);
 76821  76843     return sqlite3ApiExit(db, rc);
 76822  76844   }
................................................................................
 76885  76907         }
 76886  76908         p->pNewUnpacked = pUnpack;
 76887  76909       }
 76888  76910       if( iIdx>=pUnpack->nField ){
 76889  76911         pMem = (sqlite3_value *)columnNullValue();
 76890  76912       }else{
 76891  76913         pMem = &pUnpack->aMem[iIdx];
 76892         -      if( iIdx==p->iPKey ){
        76914  +      if( iIdx==p->pTab->iPKey ){
 76893  76915           sqlite3VdbeMemSetInt64(pMem, p->iKey2);
 76894  76916         }
 76895  76917       }
 76896  76918     }else{
 76897  76919       /* For an UPDATE, memory cell (p->iNewReg+1+iIdx) contains the required
 76898  76920       ** value. Make a copy of the cell contents and return a pointer to it.
 76899  76921       ** It is not safe to return a pointer to the memory cell itself as the
................................................................................
 76906  76928           rc = SQLITE_NOMEM;
 76907  76929           goto preupdate_new_out;
 76908  76930         }
 76909  76931       }
 76910  76932       assert( iIdx>=0 && iIdx<p->pCsr->nField );
 76911  76933       pMem = &p->aNew[iIdx];
 76912  76934       if( pMem->flags==0 ){
 76913         -      if( iIdx==p->iPKey ){
        76935  +      if( iIdx==p->pTab->iPKey ){
 76914  76936           sqlite3VdbeMemSetInt64(pMem, p->iKey2);
 76915  76937         }else{
 76916  76938           rc = sqlite3VdbeMemCopy(pMem, &p->v->aMem[p->iNewReg+1+iIdx]);
 76917  76939           if( rc!=SQLITE_OK ) goto preupdate_new_out;
 76918  76940         }
 76919  76941       }
 76920  76942     }
................................................................................
122352 122374       sqlite3CodecGetKey(db, 0, (void**)&zKey, &nKey);
122353 122375       if( nKey ) db->nextPagesize = 0;
122354 122376     }
122355 122377   #endif
122356 122378   
122357 122379     sqlite3BtreeSetCacheSize(pTemp, db->aDb[iDb].pSchema->cache_size);
122358 122380     sqlite3BtreeSetSpillSize(pTemp, sqlite3BtreeSetSpillSize(pMain,0));
122359         -  sqlite3BtreeSetPagerFlags(pTemp, PAGER_SYNCHRONOUS_OFF);
       122381  +  sqlite3BtreeSetPagerFlags(pTemp, PAGER_SYNCHRONOUS_OFF|PAGER_CACHESPILL);
122360 122382   
122361 122383     /* Begin a transaction and take an exclusive lock on the main database
122362 122384     ** file. This is done before the sqlite3BtreeGetPageSize(pMain) call below,
122363 122385     ** to ensure that we do not try to change the page-size on a WAL database.
122364 122386     */
122365 122387     rc = execSql(db, pzErrMsg, "BEGIN");
122366 122388     if( rc!=SQLITE_OK ) goto end_of_vacuum;
................................................................................
127535 127557       for(i=0; i<nLeft; i++){
127536 127558         int idxNew;
127537 127559         Expr *pNew;
127538 127560         Expr *pLeft = sqlite3ExprForVectorField(pParse, pExpr->pLeft, i);
127539 127561         Expr *pRight = sqlite3ExprForVectorField(pParse, pExpr->pRight, i);
127540 127562   
127541 127563         pNew = sqlite3PExpr(pParse, pExpr->op, pLeft, pRight, 0);
       127564  +      transferJoinMarkings(pNew, pExpr);
127542 127565         idxNew = whereClauseInsert(pWC, pNew, TERM_DYNAMIC);
127543 127566         exprAnalyze(pSrc, pWC, idxNew);
127544 127567       }
127545 127568       pTerm = &pWC->a[idxTerm];
127546 127569       pTerm->wtFlags = TERM_CODED|TERM_VIRTUAL;  /* Disable the original */
127547 127570       pTerm->eOperator = 0;
127548 127571     }
................................................................................
132638 132661       if( pLevel->addrLikeRep ){
132639 132662         sqlite3VdbeAddOp2(v, OP_DecrJumpZero, (int)(pLevel->iLikeRepCntr>>1),
132640 132663                           pLevel->addrLikeRep);
132641 132664         VdbeCoverage(v);
132642 132665       }
132643 132666   #endif
132644 132667       if( pLevel->iLeftJoin ){
       132668  +      int ws = pLoop->wsFlags;
132645 132669         addr = sqlite3VdbeAddOp1(v, OP_IfPos, pLevel->iLeftJoin); VdbeCoverage(v);
132646         -      assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
132647         -           || (pLoop->wsFlags & WHERE_INDEXED)!=0 );
132648         -      if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 ){
       132670  +      assert( (ws & WHERE_IDX_ONLY)==0 || (ws & WHERE_INDEXED)!=0 );
       132671  +      if( (ws & WHERE_IDX_ONLY)==0 ){
132649 132672           sqlite3VdbeAddOp1(v, OP_NullRow, pTabList->a[i].iCursor);
132650 132673         }
132651         -      if( pLoop->wsFlags & WHERE_INDEXED ){
       132674  +      if( (ws & WHERE_INDEXED) 
       132675  +       || ((ws & WHERE_MULTI_OR) && pLevel->u.pCovidx) 
       132676  +      ){
132652 132677           sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iIdxCur);
132653 132678         }
132654 132679         if( pLevel->op==OP_Return ){
132655 132680           sqlite3VdbeAddOp2(v, OP_Gosub, pLevel->p1, pLevel->addrFirst);
132656 132681         }else{
132657 132682           sqlite3VdbeGoto(v, pLevel->addrFirst);
132658 132683         }
................................................................................
165205 165230   ** To access ICU "language specific" case mapping, upper() or lower()
165206 165231   ** should be invoked with two arguments. The second argument is the name
165207 165232   ** of the locale to use. Passing an empty string ("") or SQL NULL value
165208 165233   ** as the second argument is the same as invoking the 1 argument version
165209 165234   ** of upper() or lower().
165210 165235   **
165211 165236   **     lower('I', 'en_us') -> 'i'
165212         -**     lower('I', 'tr_tr') -> 'ı' (small dotless i)
       165237  +**     lower('I', 'tr_tr') -> '\u131' (small dotless i)
165213 165238   **
165214 165239   ** http://www.icu-project.org/userguide/posix.html#case_mappings
165215 165240   */
165216 165241   static void icuCaseFunc16(sqlite3_context *p, int nArg, sqlite3_value **apArg){
165217 165242     const UChar *zInput;            /* Pointer to input string */
165218 165243     UChar *zOutput = 0;             /* Pointer to output buffer */
165219 165244     int nInput;                     /* Size of utf-16 input string in bytes */
................................................................................
195594 195619   static void fts5SourceIdFunc(
195595 195620     sqlite3_context *pCtx,          /* Function call context */
195596 195621     int nArg,                       /* Number of args */
195597 195622     sqlite3_value **apUnused        /* Function arguments */
195598 195623   ){
195599 195624     assert( nArg==0 );
195600 195625     UNUSED_PARAM2(nArg, apUnused);
195601         -  sqlite3_result_text(pCtx, "fts5: 2016-10-13 12:56:18 4d66ac98deaa85218be7ff0eb254f78b96d8e8d4", -1, SQLITE_TRANSIENT);
       195626  +  sqlite3_result_text(pCtx, "fts5: 2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36", -1, SQLITE_TRANSIENT);
195602 195627   }
195603 195628   
195604 195629   static int fts5Init(sqlite3 *db){
195605 195630     static const sqlite3_module fts5Mod = {
195606 195631       /* iVersion      */ 2,
195607 195632       /* xCreate       */ fts5CreateMethod,
195608 195633       /* xConnect      */ fts5ConnectMethod,

Changes to SQLite.Interop/src/core/sqlite3.h.

   117    117   ** string contains the date and time of the check-in (UTC) and an SHA1
   118    118   ** hash of the entire source tree.
   119    119   **
   120    120   ** See also: [sqlite3_libversion()],
   121    121   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   122    122   ** [sqlite_version()] and [sqlite_source_id()].
   123    123   */
   124         -#define SQLITE_VERSION        "3.15.0"
   125         -#define SQLITE_VERSION_NUMBER 3015000
   126         -#define SQLITE_SOURCE_ID      "2016-10-13 12:56:18 4d66ac98deaa85218be7ff0eb254f78b96d8e8d4"
          124  +#define SQLITE_VERSION        "3.15.1"
          125  +#define SQLITE_VERSION_NUMBER 3015001
          126  +#define SQLITE_SOURCE_ID      "2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36"
   127    127   
   128    128   /*
   129    129   ** CAPI3REF: Run-Time Library Version Numbers
   130    130   ** KEYWORDS: sqlite3_version, sqlite3_sourceid
   131    131   **
   132    132   ** These interfaces provide the same information as the [SQLITE_VERSION],
   133    133   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
................................................................................
   973    973   ** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled.
   974    974   **
   975    975   ** <li>[[SQLITE_FCNTL_HAS_MOVED]]
   976    976   ** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a
   977    977   ** pointer to an integer and it writes a boolean into that integer depending
   978    978   ** on whether or not the file has been renamed, moved, or deleted since it
   979    979   ** was first opened.
          980  +**
          981  +** <li>[[SQLITE_FCNTL_WIN32_GET_HANDLE]]
          982  +** The [SQLITE_FCNTL_WIN32_GET_HANDLE] opcode can be used to obtain the
          983  +** underlying native file handle associated with a file handle.  This file
          984  +** control interprets its argument as a pointer to a native file handle and
          985  +** writes the resulting value there.
   980    986   **
   981    987   ** <li>[[SQLITE_FCNTL_WIN32_SET_HANDLE]]
   982    988   ** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging.  This
   983    989   ** opcode causes the xFileControl method to swap the file handle with the one
   984    990   ** pointed to by the pArg argument.  This capability is used during testing
   985    991   ** and only needs to be supported when SQLITE_TEST is defined.
   986    992   **
................................................................................
  1024   1030   #define SQLITE_FCNTL_COMMIT_PHASETWO        22
  1025   1031   #define SQLITE_FCNTL_WIN32_SET_HANDLE       23
  1026   1032   #define SQLITE_FCNTL_WAL_BLOCK              24
  1027   1033   #define SQLITE_FCNTL_ZIPVFS                 25
  1028   1034   #define SQLITE_FCNTL_RBU                    26
  1029   1035   #define SQLITE_FCNTL_VFS_POINTER            27
  1030   1036   #define SQLITE_FCNTL_JOURNAL_POINTER        28
         1037  +#define SQLITE_FCNTL_WIN32_GET_HANDLE       29
  1031   1038   
  1032   1039   /* deprecated names */
  1033   1040   #define SQLITE_GET_LOCKPROXYFILE      SQLITE_FCNTL_GET_LOCKPROXYFILE
  1034   1041   #define SQLITE_SET_LOCKPROXYFILE      SQLITE_FCNTL_SET_LOCKPROXYFILE
  1035   1042   #define SQLITE_LAST_ERRNO             SQLITE_FCNTL_LAST_ERRNO
  1036   1043   
  1037   1044   

Changes to SQLite.Interop/src/ext/fts5.c.

 17113  17113   static void fts5SourceIdFunc(
 17114  17114     sqlite3_context *pCtx,          /* Function call context */
 17115  17115     int nArg,                       /* Number of args */
 17116  17116     sqlite3_value **apUnused        /* Function arguments */
 17117  17117   ){
 17118  17118     assert( nArg==0 );
 17119  17119     UNUSED_PARAM2(nArg, apUnused);
 17120         -  sqlite3_result_text(pCtx, "fts5: 2016-10-13 12:56:18 4d66ac98deaa85218be7ff0eb254f78b96d8e8d4", -1, SQLITE_TRANSIENT);
        17120  +  sqlite3_result_text(pCtx, "fts5: 2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36", -1, SQLITE_TRANSIENT);
 17121  17121   }
 17122  17122   
 17123  17123   static int fts5Init(sqlite3 *db){
 17124  17124     static const sqlite3_module fts5Mod = {
 17125  17125       /* iVersion      */ 2,
 17126  17126       /* xCreate       */ fts5CreateMethod,
 17127  17127       /* xConnect      */ fts5ConnectMethod,

Changes to readme.htm.

     2      2   <html>
     3      3   <head>
     4      4   <title></title>
     5      5   </head>
     6      6   <body>
     7      7   ADO.NET SQLite Data Provider<br />
     8      8   Version 1.0.104.0 - December XX, 2016<br />
     9         -Using <a href="https://www.sqlite.org/releaselog/3_15_0.html">SQLite 3.15.0</a><br />
            9  +Using <a href="https://www.sqlite.org/releaselog/3_15_1.html">SQLite 3.15.1</a><br />
    10     10   Originally written by Robert Simpson<br />
    11     11   Released to the public domain, use at your own risk!<br />
    12     12   Official provider website:&nbsp;<a href="https://system.data.sqlite.org/">https://system.data.sqlite.org/</a><br />
    13     13   Legacy versions:&nbsp;<a href="http://sqlite.phxsoftware.com/">http://sqlite.phxsoftware.com/</a><br />
    14     14   <br />
    15     15   The current development version can be downloaded from <a href="https://system.data.sqlite.org/index.html/timeline?y=ci">
    16     16   https://system.data.sqlite.org/index.html/timeline?y=ci</a>
................................................................................
   208    208   
   209    209   <h2><b>Version History</b></h2>
   210    210   
   211    211   <p>
   212    212       <b>1.0.104.0 - December XX, 2016</b>
   213    213   </p>
   214    214   <ul>
   215         -    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_15_0.html">SQLite 3.15.0</a>.</li>
          215  +    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_15_1.html">SQLite 3.15.1</a>.</li>
   216    216       <li>Add the &quot;%PreLoadSQLite_AssemblyDirectory%&quot;, &quot;%PreLoadSQLite_TargetFramework%&quot;, and &quot;%PreLoadSQLite_XmlConfigDirectory%&quot; <a href="https://system.data.sqlite.org/index.html/artifact?ci=trunk&filename=Doc/Extra/Provider/environment.html">replacement tokens</a> for use in configuration setting values. Pursuant to [d4728aecb7].</li>
   217    217       <li>Prevent the GetByte, GetChar, and GetInt16 methods of the SQLiteDataReader class from throwing exceptions for large integer values. Pursuant to [5535448538].&nbsp;<b>** Potentially Incompatible Change **</b></li>
   218    218   </ul>
   219    219   <p>
   220    220       <b>1.0.103.0 - September 15, 2016</b>
   221    221   </p>
   222    222   <ul>

Changes to www/news.wiki.

     2      2   
     3      3   <b>Version History</b>
     4      4   
     5      5   <p>
     6      6       <b>1.0.104.0 - December XX, 2016</b>
     7      7   </p>
     8      8   <ul>
     9         -    <li>Updated to [https://www.sqlite.org/releaselog/3_15_0.html|SQLite 3.15.0].</li>
            9  +    <li>Updated to [https://www.sqlite.org/releaselog/3_15_1.html|SQLite 3.15.1].</li>
    10     10       <li>Add the &quot;%PreLoadSQLite_AssemblyDirectory%&quot;, &quot;%PreLoadSQLite_TargetFramework%&quot;, and &quot;%PreLoadSQLite_XmlConfigDirectory%&quot; [https://system.data.sqlite.org/index.html/artifact?ci=trunk&filename=Doc/Extra/Provider/environment.html|replacement tokens] for use in configuration setting values. Pursuant to [d4728aecb7].</li>
    11     11       <li>Prevent the GetByte, GetChar, and GetInt16 methods of the SQLiteDataReader class from throwing exceptions for large integer values. Pursuant to [5535448538].&nbsp;<b>** Potentially Incompatible Change **</b></li>
    12     12   </ul>
    13     13   <p>
    14     14       <b>1.0.103.0 - September 15, 2016</b>
    15     15   </p>
    16     16   <ul>