System.Data.SQLite
Check-in [b881022edc]
Not logged in

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

Overview
Comment:Update SQLite core library to the 3.25.3 release.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b881022edc518e1930a1a80653686d936df337c3
User & Date: mistachkin 2018-11-06 00:25:33
Context
2018-11-06
00:27
Pickup the SQLite core library 3.25.3 docs from upstream. check-in: 6c554c5ee2 user: mistachkin tags: trunk
00:25
Update SQLite core library to the 3.25.3 release. check-in: b881022edc user: mistachkin tags: trunk
2018-10-13
19:25
Update SEE integration to include the prefix file. check-in: 9e5573776e 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.110.0 - October XX, 2018 <font color="red">(release scheduled)</font></b></p>
    47     47       <ul>
    48         -      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_25_2.html">SQLite 3.25.2</a>.</li>
           48  +      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_25_3.html">SQLite 3.25.3</a>.</li>
    49     49       </ul>
    50     50       <p><b>1.0.109.0 - August 15, 2018</b></p>
    51     51       <ul>
    52     52         <li>Updated to <a href="https://www.sqlite.org/releaselog/3_24_0.html">SQLite 3.24.0</a>.</li>
    53     53         <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.2.0">Entity Framework 6.2.0</a>.</li>
    54     54         <li>Do not attempt to initialize the logging subsystem more than once.&nbsp;<b>** Potentially Incompatible Change **</b></li>
    55     55         <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for <a href="https://system.data.sqlite.org/index.html/info/baf42ee135">[baf42ee135]</a>.</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.25.2.0</SQLITE_MANIFEST_VERSION>
    13         -    <SQLITE_RC_VERSION>3,25,2,0</SQLITE_RC_VERSION>
           12  +    <SQLITE_MANIFEST_VERSION>3.25.3.0</SQLITE_MANIFEST_VERSION>
           13  +    <SQLITE_RC_VERSION>3,25,3,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_ENABLE_STMTVTAB=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.25.2.0"
           17  +		Value="3.25.3.0"
    18     18   		PerformEnvironmentSet="true"
    19     19   	/>
    20     20   	<UserMacro
    21     21   		Name="SQLITE_RC_VERSION"
    22         -		Value="3,25,2,0"
           22  +		Value="3,25,3,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;SQLITE_ENABLE_STMTVTAB=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.25.2.  By combining all the individual C code files into this
            3  +** version 3.25.3.  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
................................................................................
  1152   1152   ** been edited in any way since it was last checked in, then the last
  1153   1153   ** four hexadecimal digits of the hash may be modified.
  1154   1154   **
  1155   1155   ** See also: [sqlite3_libversion()],
  1156   1156   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
  1157   1157   ** [sqlite_version()] and [sqlite_source_id()].
  1158   1158   */
  1159         -#define SQLITE_VERSION        "3.25.2"
  1160         -#define SQLITE_VERSION_NUMBER 3025002
  1161         -#define SQLITE_SOURCE_ID      "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7"
         1159  +#define SQLITE_VERSION        "3.25.3"
         1160  +#define SQLITE_VERSION_NUMBER 3025003
         1161  +#define SQLITE_SOURCE_ID      "2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2"
  1162   1162   
  1163   1163   /*
  1164   1164   ** CAPI3REF: Run-Time Library Version Numbers
  1165   1165   ** KEYWORDS: sqlite3_version sqlite3_sourceid
  1166   1166   **
  1167   1167   ** These interfaces provide the same information as the [SQLITE_VERSION],
  1168   1168   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
................................................................................
 17908  17908   **    OPFLAG_SEEKEQ       == BTREE_SEEK_EQ
 17909  17909   **    OPFLAG_FORDELETE    == BTREE_FORDELETE
 17910  17910   **    OPFLAG_SAVEPOSITION == BTREE_SAVEPOSITION
 17911  17911   **    OPFLAG_AUXDELETE    == BTREE_AUXDELETE
 17912  17912   */
 17913  17913   #define OPFLAG_NCHANGE       0x01    /* OP_Insert: Set to update db->nChange */
 17914  17914                                        /* Also used in P2 (not P5) of OP_Delete */
        17915  +#define OPFLAG_NOCHNG        0x01    /* OP_VColumn nochange for UPDATE */
 17915  17916   #define OPFLAG_EPHEM         0x01    /* OP_Column: Ephemeral output is ok */
 17916  17917   #define OPFLAG_LASTROWID     0x20    /* Set to update db->lastRowid */
 17917  17918   #define OPFLAG_ISUPDATE      0x04    /* This OP_Insert is an sql UPDATE */
 17918  17919   #define OPFLAG_APPEND        0x08    /* This is likely to be an append */
 17919  17920   #define OPFLAG_USESEEKRESULT 0x10    /* Try to avoid a seek in BtreeInsert() */
 17920  17921   #define OPFLAG_ISNOOP        0x40    /* OP_Delete does pre-update-hook only */
 17921  17922   #define OPFLAG_LENGTHARG     0x40    /* OP_Column only used for length() */
................................................................................
 80099  80100       return rc;
 80100  80101     }
 80101  80102   
 80102  80103     /* The index entry must begin with a header size */
 80103  80104     (void)getVarint32((u8*)m.z, szHdr);
 80104  80105     testcase( szHdr==3 );
 80105  80106     testcase( szHdr==m.n );
 80106         -  if( unlikely(szHdr<3 || (int)szHdr>m.n) ){
        80107  +  testcase( szHdr>0x7fffffff );
        80108  +  assert( m.n>=0 );
        80109  +  if( unlikely(szHdr<3 || szHdr>(unsigned)m.n) ){
 80107  80110       goto idx_rowid_corruption;
 80108  80111     }
 80109  80112   
 80110  80113     /* The last field of the index should be an integer - the ROWID.
 80111  80114     ** Verify that the last entry really is an integer. */
 80112  80115     (void)getVarint32((u8*)&m.z[szHdr-1], typeRowid);
 80113  80116     testcase( typeRowid==1 );
................................................................................
 89612  89615   ** Synopsis: r[P3]=vcolumn(P2)
 89613  89616   **
 89614  89617   ** Store in register P3 the value of the P2-th column of
 89615  89618   ** the current row of the virtual-table of cursor P1.
 89616  89619   **
 89617  89620   ** If the VColumn opcode is being used to fetch the value of
 89618  89621   ** an unchanging column during an UPDATE operation, then the P5
 89619         -** value is 1.  Otherwise, P5 is 0.  The P5 value is returned
 89620         -** by sqlite3_vtab_nochange() routine and can be used
 89621         -** by virtual table implementations to return special "no-change"
 89622         -** marks which can be more efficient, depending on the virtual table.
        89622  +** value is OPFLAG_NOCHNG.  This will cause the sqlite3_vtab_nochange()
        89623  +** function to return true inside the xColumn method of the virtual
        89624  +** table implementation.  The P5 column might also contain other
        89625  +** bits (OPFLAG_LENGTHARG or OPFLAG_TYPEOFARG) but those bits are
        89626  +** unused by OP_VColumn.
 89623  89627   */
 89624  89628   case OP_VColumn: {
 89625  89629     sqlite3_vtab *pVtab;
 89626  89630     const sqlite3_module *pModule;
 89627  89631     Mem *pDest;
 89628  89632     sqlite3_context sContext;
 89629  89633   
................................................................................
 89637  89641       break;
 89638  89642     }
 89639  89643     pVtab = pCur->uc.pVCur->pVtab;
 89640  89644     pModule = pVtab->pModule;
 89641  89645     assert( pModule->xColumn );
 89642  89646     memset(&sContext, 0, sizeof(sContext));
 89643  89647     sContext.pOut = pDest;
 89644         -  if( pOp->p5 ){
        89648  +  testcase( (pOp->p5 & OPFLAG_NOCHNG)==0 && pOp->p5!=0 );
        89649  +  if( pOp->p5 & OPFLAG_NOCHNG ){
 89645  89650       sqlite3VdbeMemSetNull(pDest);
 89646  89651       pDest->flags = MEM_Null|MEM_Zero;
 89647  89652       pDest->u.nZero = 0;
 89648  89653     }else{
 89649  89654       MemSetTypeFlag(pDest, MEM_Null);
 89650  89655     }
 89651  89656     rc = pModule->xColumn(pCur->uc.pVCur, &sContext, pOp->p2);
................................................................................
125436 125441     int eDest = SRT_Fifo;         /* How to write to Queue */
125437 125442     SelectDest destQueue;         /* SelectDest targetting the Queue table */
125438 125443     int i;                        /* Loop counter */
125439 125444     int rc;                       /* Result code */
125440 125445     ExprList *pOrderBy;           /* The ORDER BY clause */
125441 125446     Expr *pLimit;                 /* Saved LIMIT and OFFSET */
125442 125447     int regLimit, regOffset;      /* Registers used by LIMIT and OFFSET */
       125448  +
       125449  +#ifndef SQLITE_OMIT_WINDOWFUNC
       125450  +  if( p->pWin ){
       125451  +    sqlite3ErrorMsg(pParse, "cannot use window functions in recursive queries");
       125452  +    return;
       125453  +  }
       125454  +#endif
125443 125455   
125444 125456     /* Obtain authorization to do a recursive query */
125445 125457     if( sqlite3AuthCheck(pParse, SQLITE_RECURSIVE, 0, 0, 0) ) return;
125446 125458   
125447 125459     /* Process the LIMIT and OFFSET clauses, if they exist */
125448 125460     addrBreak = sqlite3VdbeMakeLabel(v);
125449 125461     p->nSelectRow = 320;  /* 4 billion rows */
................................................................................
127186 127198   #endif
127187 127199   
127188 127200     return 1;
127189 127201   }
127190 127202   #endif /* !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) */
127191 127203   
127192 127204   /*
127193         -** A structure to keep track of all of the column values that fixed to
       127205  +** A structure to keep track of all of the column values that are fixed to
127194 127206   ** a known value due to WHERE clause constraints of the form COLUMN=VALUE.
127195 127207   */
127196 127208   typedef struct WhereConst WhereConst;
127197 127209   struct WhereConst {
127198 127210     Parse *pParse;   /* Parsing context */
127199 127211     int nConst;      /* Number for COLUMN=CONSTANT terms */
127200 127212     int nChng;       /* Number of times a constant is propagated */
127201 127213     Expr **apExpr;   /* [i*2] is COLUMN and [i*2+1] is VALUE */
127202 127214   };
127203 127215   
127204 127216   /*
127205         -** Add a new entry to the pConst object
       127217  +** Add a new entry to the pConst object.  Except, do not add duplicate
       127218  +** pColumn entires.
127206 127219   */
127207 127220   static void constInsert(
127208         -  WhereConst *pConst,
127209         -  Expr *pColumn,
127210         -  Expr *pValue
       127221  +  WhereConst *pConst,      /* The WhereConst into which we are inserting */
       127222  +  Expr *pColumn,           /* The COLUMN part of the constraint */
       127223  +  Expr *pValue             /* The VALUE part of the constraint */
127211 127224   ){
       127225  +  int i;
       127226  +  assert( pColumn->op==TK_COLUMN );
       127227  +
       127228  +  /* 2018-10-25 ticket [cf5ed20f]
       127229  +  ** Make sure the same pColumn is not inserted more than once */
       127230  +  for(i=0; i<pConst->nConst; i++){
       127231  +    const Expr *pExpr = pConst->apExpr[i*2];
       127232  +    assert( pExpr->op==TK_COLUMN );
       127233  +    if( pExpr->iTable==pColumn->iTable
       127234  +     && pExpr->iColumn==pColumn->iColumn
       127235  +    ){
       127236  +      return;  /* Already present.  Return without doing anything. */
       127237  +    }
       127238  +  }
127212 127239   
127213 127240     pConst->nConst++;
127214 127241     pConst->apExpr = sqlite3DbReallocOrFree(pConst->pParse->db, pConst->apExpr,
127215 127242                            pConst->nConst*2*sizeof(Expr*));
127216 127243     if( pConst->apExpr==0 ){
127217 127244       pConst->nConst = 0;
127218 127245     }else{
................................................................................
131970 131997   
131971 131998     /* Populate the argument registers. */
131972 131999     for(i=0; i<pTab->nCol; i++){
131973 132000       if( aXRef[i]>=0 ){
131974 132001         sqlite3ExprCode(pParse, pChanges->a[aXRef[i]].pExpr, regArg+2+i);
131975 132002       }else{
131976 132003         sqlite3VdbeAddOp3(v, OP_VColumn, iCsr, i, regArg+2+i);
131977         -      sqlite3VdbeChangeP5(v, 1); /* Enable sqlite3_vtab_nochange() */
       132004  +      sqlite3VdbeChangeP5(v, OPFLAG_NOCHNG);/* Enable sqlite3_vtab_nochange() */
131978 132005       }
131979 132006     }
131980 132007     if( HasRowid(pTab) ){
131981 132008       sqlite3VdbeAddOp2(v, OP_Rowid, iCsr, regArg);
131982 132009       if( pRowid ){
131983 132010         sqlite3ExprCode(pParse, pRowid, regArg+1);
131984 132011       }else{
................................................................................
134925 134952       ExprList *pLhs = 0;         /* New LHS after mods */
134926 134953       int i;                      /* Loop counter */
134927 134954       Select *pSelect;            /* Pointer to the SELECT on the RHS */
134928 134955   
134929 134956       for(i=iEq; i<pLoop->nLTerm; i++){
134930 134957         if( pLoop->aLTerm[i]->pExpr==pX ){
134931 134958           int iField = pLoop->aLTerm[i]->iField - 1;
134932         -        assert( pOrigRhs->a[iField].pExpr!=0 );
       134959  +        if( pOrigRhs->a[iField].pExpr==0 ) continue; /* Duplicate PK column */
134933 134960           pRhs = sqlite3ExprListAppend(pParse, pRhs, pOrigRhs->a[iField].pExpr);
134934 134961           pOrigRhs->a[iField].pExpr = 0;
134935 134962           assert( pOrigLhs->a[iField].pExpr!=0 );
134936 134963           pLhs = sqlite3ExprListAppend(pParse, pLhs, pOrigLhs->a[iField].pExpr);
134937 134964           pOrigLhs->a[iField].pExpr = 0;
134938 134965         }
134939 134966       }
................................................................................
138118 138145     ** virtual term of that form.
138119 138146     **
138120 138147     ** Note that the virtual term must be tagged with TERM_VNULL.
138121 138148     */
138122 138149     if( pExpr->op==TK_NOTNULL
138123 138150      && pExpr->pLeft->op==TK_COLUMN
138124 138151      && pExpr->pLeft->iColumn>=0
       138152  +   && !ExprHasProperty(pExpr, EP_FromJoin)
138125 138153      && OptimizationEnabled(db, SQLITE_Stat34)
138126 138154     ){
138127 138155       Expr *pNewExpr;
138128 138156       Expr *pLeft = pExpr->pLeft;
138129 138157       int idxNew;
138130 138158       WhereTerm *pNewTerm;
138131 138159   
................................................................................
159157 159185     sqlite3_int64 *piFirst,         /* OUT: Selected child node */
159158 159186     sqlite3_int64 *piLast           /* OUT: Selected child node */
159159 159187   ){
159160 159188     int rc = SQLITE_OK;             /* Return code */
159161 159189     const char *zCsr = zNode;       /* Cursor to iterate through node */
159162 159190     const char *zEnd = &zCsr[nNode];/* End of interior node buffer */
159163 159191     char *zBuffer = 0;              /* Buffer to load terms into */
159164         -  int nAlloc = 0;                 /* Size of allocated buffer */
       159192  +  i64 nAlloc = 0;                 /* Size of allocated buffer */
159165 159193     int isFirstTerm = 1;            /* True when processing first term on page */
159166 159194     sqlite3_int64 iChild;           /* Block id of child node to descend to */
159167 159195   
159168 159196     /* Skip over the 'height' varint that occurs at the start of every 
159169 159197     ** interior node. Then load the blockid of the left-child of the b-tree
159170 159198     ** node into variable iChild.  
159171 159199     **
................................................................................
159195 159223       if( !isFirstTerm ){
159196 159224         zCsr += fts3GetVarint32(zCsr, &nPrefix);
159197 159225       }
159198 159226       isFirstTerm = 0;
159199 159227       zCsr += fts3GetVarint32(zCsr, &nSuffix);
159200 159228       
159201 159229       assert( nPrefix>=0 && nSuffix>=0 );
159202         -    if( &zCsr[nSuffix]>zEnd ){
       159230  +    if( nPrefix>zCsr-zNode || nSuffix>zEnd-zCsr ){
159203 159231         rc = FTS_CORRUPT_VTAB;
159204 159232         goto finish_scan;
159205 159233       }
159206         -    if( nPrefix+nSuffix>nAlloc ){
       159234  +    if( (i64)nPrefix+nSuffix>nAlloc ){
159207 159235         char *zNew;
159208         -      nAlloc = (nPrefix+nSuffix) * 2;
159209         -      zNew = (char *)sqlite3_realloc(zBuffer, nAlloc);
       159236  +      nAlloc = ((i64)nPrefix+nSuffix) * 2;
       159237  +      zNew = (char *)sqlite3_realloc64(zBuffer, nAlloc);
159210 159238         if( !zNew ){
159211 159239           rc = SQLITE_NOMEM;
159212 159240           goto finish_scan;
159213 159241         }
159214 159242         zBuffer = zNew;
159215 159243       }
159216 159244       assert( zBuffer );
................................................................................
168784 168812     rc = fts3SegReaderRequire(pReader, pNext, FTS3_VARINT_MAX*2);
168785 168813     if( rc!=SQLITE_OK ) return rc;
168786 168814     
168787 168815     /* Because of the FTS3_NODE_PADDING bytes of padding, the following is 
168788 168816     ** safe (no risk of overread) even if the node data is corrupted. */
168789 168817     pNext += fts3GetVarint32(pNext, &nPrefix);
168790 168818     pNext += fts3GetVarint32(pNext, &nSuffix);
168791         -  if( nPrefix<0 || nSuffix<=0 
168792         -   || &pNext[nSuffix]>&pReader->aNode[pReader->nNode] 
       168819  +  if( nSuffix<=0 
       168820  +   || (&pReader->aNode[pReader->nNode] - pNext)<nSuffix
       168821  +   || nPrefix>pReader->nTermAlloc
168793 168822     ){
168794 168823       return FTS_CORRUPT_VTAB;
168795 168824     }
168796 168825   
168797         -  if( nPrefix+nSuffix>pReader->nTermAlloc ){
168798         -    int nNew = (nPrefix+nSuffix)*2;
168799         -    char *zNew = sqlite3_realloc(pReader->zTerm, nNew);
       168826  +  /* Both nPrefix and nSuffix were read by fts3GetVarint32() and so are
       168827  +  ** between 0 and 0x7FFFFFFF. But the sum of the two may cause integer
       168828  +  ** overflow - hence the (i64) casts.  */
       168829  +  if( (i64)nPrefix+nSuffix>(i64)pReader->nTermAlloc ){
       168830  +    i64 nNew = ((i64)nPrefix+nSuffix)*2;
       168831  +    char *zNew = sqlite3_realloc64(pReader->zTerm, nNew);
168800 168832       if( !zNew ){
168801 168833         return SQLITE_NOMEM;
168802 168834       }
168803 168835       pReader->zTerm = zNew;
168804 168836       pReader->nTermAlloc = nNew;
168805 168837     }
168806 168838   
................................................................................
168814 168846     pReader->aDoclist = pNext;
168815 168847     pReader->pOffsetList = 0;
168816 168848   
168817 168849     /* Check that the doclist does not appear to extend past the end of the
168818 168850     ** b-tree node. And that the final byte of the doclist is 0x00. If either 
168819 168851     ** of these statements is untrue, then the data structure is corrupt.
168820 168852     */
168821         -  if( &pReader->aDoclist[pReader->nDoclist]>&pReader->aNode[pReader->nNode] 
       168853  +  if( (&pReader->aNode[pReader->nNode] - pReader->aDoclist)<pReader->nDoclist
168822 168854      || (pReader->nPopulate==0 && pReader->aDoclist[pReader->nDoclist-1])
168823 168855     ){
168824 168856       return FTS_CORRUPT_VTAB;
168825 168857     }
168826 168858     return SQLITE_OK;
168827 168859   }
168828 168860   
................................................................................
171140 171172       p->aNode = 0;
171141 171173     }else{
171142 171174       if( bFirst==0 ){
171143 171175         p->iOff += fts3GetVarint32(&p->aNode[p->iOff], &nPrefix);
171144 171176       }
171145 171177       p->iOff += fts3GetVarint32(&p->aNode[p->iOff], &nSuffix);
171146 171178   
       171179  +    if( nPrefix>p->iOff || nSuffix>p->nNode-p->iOff ){
       171180  +      return SQLITE_CORRUPT_VTAB;
       171181  +    }
171147 171182       blobGrowBuffer(&p->term, nPrefix+nSuffix, &rc);
171148 171183       if( rc==SQLITE_OK ){
171149 171184         memcpy(&p->term.a[nPrefix], &p->aNode[p->iOff], nSuffix);
171150 171185         p->term.n = nPrefix+nSuffix;
171151 171186         p->iOff += nSuffix;
171152 171187         if( p->iChild==0 ){
171153 171188           p->iOff += fts3GetVarint32(&p->aNode[p->iOff], &p->nDoclist);
       171189  +        if( (p->nNode-p->iOff)<p->nDoclist ){
       171190  +          return SQLITE_CORRUPT_VTAB;
       171191  +        }
171154 171192           p->aDoclist = &p->aNode[p->iOff];
171155 171193           p->iOff += p->nDoclist;
171156 171194         }
171157 171195       }
171158 171196     }
171159 171197   
171160 171198     assert( p->iOff<=p->nNode );
171161         -
171162 171199     return rc;
171163 171200   }
171164 171201   
171165 171202   /*
171166 171203   ** Release all dynamic resources held by node-reader object *p.
171167 171204   */
171168 171205   static void nodeReaderRelease(NodeReader *p){
................................................................................
214440 214477   static void fts5SourceIdFunc(
214441 214478     sqlite3_context *pCtx,          /* Function call context */
214442 214479     int nArg,                       /* Number of args */
214443 214480     sqlite3_value **apUnused        /* Function arguments */
214444 214481   ){
214445 214482     assert( nArg==0 );
214446 214483     UNUSED_PARAM2(nArg, apUnused);
214447         -  sqlite3_result_text(pCtx, "fts5: 2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7", -1, SQLITE_TRANSIENT);
       214484  +  sqlite3_result_text(pCtx, "fts5: 2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2", -1, SQLITE_TRANSIENT);
214448 214485   }
214449 214486   
214450 214487   static int fts5Init(sqlite3 *db){
214451 214488     static const sqlite3_module fts5Mod = {
214452 214489       /* iVersion      */ 2,
214453 214490       /* xCreate       */ fts5CreateMethod,
214454 214491       /* xConnect      */ fts5ConnectMethod,
................................................................................
219150 219187   #endif
219151 219188     return rc;
219152 219189   }
219153 219190   #endif /* SQLITE_CORE */
219154 219191   #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
219155 219192   
219156 219193   /************** End of stmt.c ************************************************/
219157         -#if __LINE__!=219157
       219194  +#if __LINE__!=219194
219158 219195   #undef SQLITE_SOURCE_ID
219159         -#define SQLITE_SOURCE_ID      "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792alt2"
       219196  +#define SQLITE_SOURCE_ID      "2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b750alt2"
219160 219197   #endif
219161 219198   /* Return the source-id for this library */
219162 219199   SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
219163 219200   /************************** End of sqlite3.c ******************************/

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

   119    119   ** been edited in any way since it was last checked in, then the last
   120    120   ** four hexadecimal digits of the hash may be modified.
   121    121   **
   122    122   ** See also: [sqlite3_libversion()],
   123    123   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   124    124   ** [sqlite_version()] and [sqlite_source_id()].
   125    125   */
   126         -#define SQLITE_VERSION        "3.25.2"
   127         -#define SQLITE_VERSION_NUMBER 3025002
   128         -#define SQLITE_SOURCE_ID      "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7"
          126  +#define SQLITE_VERSION        "3.25.3"
          127  +#define SQLITE_VERSION_NUMBER 3025003
          128  +#define SQLITE_SOURCE_ID      "2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2"
   129    129   
   130    130   /*
   131    131   ** CAPI3REF: Run-Time Library Version Numbers
   132    132   ** KEYWORDS: sqlite3_version sqlite3_sourceid
   133    133   **
   134    134   ** These interfaces provide the same information as the [SQLITE_VERSION],
   135    135   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros

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

 17534  17534   static void fts5SourceIdFunc(
 17535  17535     sqlite3_context *pCtx,          /* Function call context */
 17536  17536     int nArg,                       /* Number of args */
 17537  17537     sqlite3_value **apUnused        /* Function arguments */
 17538  17538   ){
 17539  17539     assert( nArg==0 );
 17540  17540     UNUSED_PARAM2(nArg, apUnused);
 17541         -  sqlite3_result_text(pCtx, "fts5: 2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7", -1, SQLITE_TRANSIENT);
        17541  +  sqlite3_result_text(pCtx, "fts5: 2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2", -1, SQLITE_TRANSIENT);
 17542  17542   }
 17543  17543   
 17544  17544   static int fts5Init(sqlite3 *db){
 17545  17545     static const sqlite3_module fts5Mod = {
 17546  17546       /* iVersion      */ 2,
 17547  17547       /* xCreate       */ fts5CreateMethod,
 17548  17548       /* 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.110.0 - October XX, 2018 <font color="red">(release scheduled)</font><br />
     9         -Using <a href="https://www.sqlite.org/releaselog/3_25_2.html">SQLite 3.25.2</a><br />Originally written by Robert Simpson<br />
            9  +Using <a href="https://www.sqlite.org/releaselog/3_25_3.html">SQLite 3.25.3</a><br />Originally written by Robert Simpson<br />
    10     10   Released to the public domain, use at your own risk!<br />
    11     11   Official provider website:&nbsp;<a href="https://system.data.sqlite.org/">https://system.data.sqlite.org/</a><br />
    12     12   Legacy versions:&nbsp;<a href="https://sourceforge.net/projects/sqlite-dotnet2/">https://sourceforge.net/projects/sqlite-dotnet2/</a><br />
    13     13   <br />
    14     14   The current development version can be downloaded from <a href="https://system.data.sqlite.org/index.html/timeline?y=ci">
    15     15   https://system.data.sqlite.org/index.html/timeline?y=ci</a>
    16     16   <br />
................................................................................
   207    207   
   208    208   <h2><b>Version History</b></h2>
   209    209   
   210    210   <p>
   211    211       <b>1.0.110.0 - October XX, 2018 <font color="red">(release scheduled)</font></b>
   212    212   </p>
   213    213   <ul>
   214         -    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_25_2.html">SQLite 3.25.2</a>.</li>
          214  +    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_25_3.html">SQLite 3.25.3</a>.</li>
   215    215   </ul>
   216    216   <p>
   217    217       <b>1.0.109.0 - August 15, 2018</b>
   218    218   </p>
   219    219   <ul>
   220    220       <li>Updated to <a href="https://www.sqlite.org/releaselog/3_24_0.html">SQLite 3.24.0</a>.</li>
   221    221       <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.2.0">Entity Framework 6.2.0</a>.</li>

Changes to www/news.wiki.

    44     44   
    45     45   <div align="center"><h2><b>Version History</b></h2></div>
    46     46   
    47     47   <p>
    48     48       <b>1.0.110.0 - October XX, 2018 <font color="red">(release scheduled)</font></b>
    49     49   </p>
    50     50   <ul>
    51         -    <li>Updated to [https://www.sqlite.org/releaselog/3_25_2.html|SQLite 3.25.2].</li>
           51  +    <li>Updated to [https://www.sqlite.org/releaselog/3_25_3.html|SQLite 3.25.3].</li>
    52     52   </ul>
    53     53   <p>
    54     54       <b>1.0.109.0 - August 15, 2018</b>
    55     55   </p>
    56     56   <ul>
    57     57       <li>Updated to [https://www.sqlite.org/releaselog/3_24_0.html|SQLite 3.24.0].</li>
    58     58       <li>Updated to [https://www.nuget.org/packages/EntityFramework/6.2.0|Entity Framework 6.2.0].</li>