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

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

Overview
Comment:Update SQLite core library to the 3.8.8.2 release.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c0f67d5d98a67b7f411873193fb9fe934d5be125
User & Date: mistachkin 2015-01-30 17:59:12
Context
2015-02-02
20:16
Improvements to the download page. check-in: 6ce3355c9b user: mistachkin tags: trunk
2015-01-30
17:59
Update SQLite core library to the 3.8.8.2 release. check-in: c0f67d5d98 user: mistachkin tags: trunk
2015-01-29
05:22
Escape some reserved characters in the comments for a test. check-in: 15705ce58d user: mistachkin tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

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

    39     39             </td>
    40     40           </tr>
    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         -    <p><b>1.0.95.0 - January XX, 2015 <font color="red">(release scheduled)</font></b></p>
           46  +    <p><b>1.0.95.0 - February XX, 2015 <font color="red">(release scheduled)</font></b></p>
    47     47       <ul>
    48         -      <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_8_1.html">SQLite 3.8.8.1</a>.</li>
           48  +      <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_8_2.html">SQLite 3.8.8.2</a>.</li>
    49     49         <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
    50     50         <li>Make sure SQLiteIndexOutputs.ConstraintUsages instances are created prior to calling ISQLiteManagedModule.BestIndex. Fix for <a href="http://system.data.sqlite.org/index.html/info/56f511d268">[56f511d268]</a>.</li>
    51     51         <li>Correct marshalling of strings and blobs in the SQLiteValue class. Fix for <a href="http://system.data.sqlite.org/index.html/info/85b824b736">[85b824b736]</a>.</li>
    52     52         <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/e122d26e70">[e122d26e70]</a>.</li>
    53     53         <li>Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for <a href="http://system.data.sqlite.org/index.html/info/daeaf3150a">[daeaf3150a]</a>.</li>
    54     54         <li>Wrap SELECT statements in parenthesis if they have an ORDER BY, LIMIT, or OFFSET clause and a compound operator is involved. Fix for <a href="http://system.data.sqlite.org/index.html/info/0a32885109">[0a32885109]</a>.</li>
    55     55         <li>In the SQLiteDataReader.VerifyType method, remove duplicate &quot;if&quot; statement for the DbType.SByte value and move the remaining &quot;if&quot; to the Int64 affinity. Fix for <a href="http://system.data.sqlite.org/index.html/info/c5cc2fb334">[c5cc2fb334]</a>.&nbsp;<b>** Potentially Incompatible Change **</b></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.8.8.1</SQLITE_MANIFEST_VERSION>
    13         -    <SQLITE_RC_VERSION>3,8,8,1</SQLITE_RC_VERSION>
           12  +    <SQLITE_MANIFEST_VERSION>3.8.8.2</SQLITE_MANIFEST_VERSION>
           13  +    <SQLITE_RC_VERSION>3,8,8,2</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_COMMON_DEFINES>
    15     15       <SQLITE_EXTRA_DEFINES>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.8.8.1"
           17  +		Value="3.8.8.2"
    18     18   		PerformEnvironmentSet="true"
    19     19   	/>
    20     20   	<UserMacro
    21     21   		Name="SQLITE_RC_VERSION"
    22         -		Value="3,8,8,1"
           22  +		Value="3,8,8,2"
    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"
    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.8.8.1.  By combining all the individual C code files into this 
            3  +** version 3.8.8.2.  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
................................................................................
   274    274   ** string contains the date and time of the check-in (UTC) and an SHA1
   275    275   ** hash of the entire source tree.
   276    276   **
   277    277   ** See also: [sqlite3_libversion()],
   278    278   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   279    279   ** [sqlite_version()] and [sqlite_source_id()].
   280    280   */
   281         -#define SQLITE_VERSION        "3.8.8.1"
          281  +#define SQLITE_VERSION        "3.8.8.2"
   282    282   #define SQLITE_VERSION_NUMBER 3008008
   283         -#define SQLITE_SOURCE_ID      "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
          283  +#define SQLITE_SOURCE_ID      "2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098"
   284    284   
   285    285   /*
   286    286   ** CAPI3REF: Run-Time Library Version Numbers
   287    287   ** KEYWORDS: sqlite3_version, sqlite3_sourceid
   288    288   **
   289    289   ** These interfaces provide the same information as the [SQLITE_VERSION],
   290    290   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
................................................................................
 50193  50193     Wal *pWal,                      /* Wal connection */
 50194  50194     int eMode,                      /* One of PASSIVE, FULL or RESTART */
 50195  50195     int (*xBusy)(void*),            /* Function to call when busy */
 50196  50196     void *pBusyArg,                 /* Context argument for xBusyHandler */
 50197  50197     int sync_flags,                 /* Flags for OsSync() (or 0) */
 50198  50198     u8 *zBuf                        /* Temporary buffer to use */
 50199  50199   ){
 50200         -  int rc;                         /* Return code */
        50200  +  int rc = SQLITE_OK;             /* Return code */
 50201  50201     int szPage;                     /* Database page-size */
 50202  50202     WalIterator *pIter = 0;         /* Wal iterator context */
 50203  50203     u32 iDbpage = 0;                /* Next database page to write */
 50204  50204     u32 iFrame = 0;                 /* Wal frame containing data for iDbpage */
 50205  50205     u32 mxSafeFrame;                /* Max frame that can be backfilled */
 50206  50206     u32 mxPage;                     /* Max database page to write */
 50207  50207     int i;                          /* Loop counter */
 50208  50208     volatile WalCkptInfo *pInfo;    /* The checkpoint status information */
 50209  50209   
 50210  50210     szPage = walPagesize(pWal);
 50211  50211     testcase( szPage<=32768 );
 50212  50212     testcase( szPage>=65536 );
 50213  50213     pInfo = walCkptInfo(pWal);
 50214         -  if( pInfo->nBackfill>=pWal->hdr.mxFrame ) return SQLITE_OK;
 50215         -
 50216         -  /* Allocate the iterator */
 50217         -  rc = walIteratorInit(pWal, &pIter);
 50218         -  if( rc!=SQLITE_OK ){
 50219         -    return rc;
 50220         -  }
 50221         -  assert( pIter );
 50222         -
 50223         -  /* EVIDENCE-OF: R-62920-47450 The busy-handler callback is never invoked
 50224         -  ** in the SQLITE_CHECKPOINT_PASSIVE mode. */
 50225         -  assert( eMode!=SQLITE_CHECKPOINT_PASSIVE || xBusy==0 );
 50226         -
 50227         -  /* Compute in mxSafeFrame the index of the last frame of the WAL that is
 50228         -  ** safe to write into the database.  Frames beyond mxSafeFrame might
 50229         -  ** overwrite database pages that are in use by active readers and thus
 50230         -  ** cannot be backfilled from the WAL.
 50231         -  */
 50232         -  mxSafeFrame = pWal->hdr.mxFrame;
 50233         -  mxPage = pWal->hdr.nPage;
 50234         -  for(i=1; i<WAL_NREADER; i++){
 50235         -    u32 y = pInfo->aReadMark[i];
 50236         -    if( mxSafeFrame>y ){
 50237         -      assert( y<=pWal->hdr.mxFrame );
 50238         -      rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(i), 1);
 50239         -      if( rc==SQLITE_OK ){
 50240         -        pInfo->aReadMark[i] = (i==1 ? mxSafeFrame : READMARK_NOT_USED);
 50241         -        walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
 50242         -      }else if( rc==SQLITE_BUSY ){
 50243         -        mxSafeFrame = y;
 50244         -        xBusy = 0;
 50245         -      }else{
 50246         -        goto walcheckpoint_out;
 50247         -      }
 50248         -    }
 50249         -  }
 50250         -
 50251         -  if( pInfo->nBackfill<mxSafeFrame
 50252         -   && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0), 1))==SQLITE_OK
 50253         -  ){
 50254         -    i64 nSize;                    /* Current size of database file */
 50255         -    u32 nBackfill = pInfo->nBackfill;
 50256         -
 50257         -    /* Sync the WAL to disk */
 50258         -    if( sync_flags ){
 50259         -      rc = sqlite3OsSync(pWal->pWalFd, sync_flags);
 50260         -    }
 50261         -
 50262         -    /* If the database may grow as a result of this checkpoint, hint
 50263         -    ** about the eventual size of the db file to the VFS layer.
 50264         -    */
 50265         -    if( rc==SQLITE_OK ){
 50266         -      i64 nReq = ((i64)mxPage * szPage);
 50267         -      rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
 50268         -      if( rc==SQLITE_OK && nSize<nReq ){
 50269         -        sqlite3OsFileControlHint(pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq);
 50270         -      }
 50271         -    }
 50272         -
 50273         -
 50274         -    /* Iterate through the contents of the WAL, copying data to the db file. */
 50275         -    while( rc==SQLITE_OK && 0==walIteratorNext(pIter, &iDbpage, &iFrame) ){
 50276         -      i64 iOffset;
 50277         -      assert( walFramePgno(pWal, iFrame)==iDbpage );
 50278         -      if( iFrame<=nBackfill || iFrame>mxSafeFrame || iDbpage>mxPage ) continue;
 50279         -      iOffset = walFrameOffset(iFrame, szPage) + WAL_FRAME_HDRSIZE;
 50280         -      /* testcase( IS_BIG_INT(iOffset) ); // requires a 4GiB WAL file */
 50281         -      rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
 50282         -      if( rc!=SQLITE_OK ) break;
 50283         -      iOffset = (iDbpage-1)*(i64)szPage;
 50284         -      testcase( IS_BIG_INT(iOffset) );
 50285         -      rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
 50286         -      if( rc!=SQLITE_OK ) break;
 50287         -    }
 50288         -
 50289         -    /* If work was actually accomplished... */
 50290         -    if( rc==SQLITE_OK ){
 50291         -      if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
 50292         -        i64 szDb = pWal->hdr.nPage*(i64)szPage;
 50293         -        testcase( IS_BIG_INT(szDb) );
 50294         -        rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
 50295         -        if( rc==SQLITE_OK && sync_flags ){
 50296         -          rc = sqlite3OsSync(pWal->pDbFd, sync_flags);
 50297         -        }
 50298         -      }
 50299         -      if( rc==SQLITE_OK ){
 50300         -        pInfo->nBackfill = mxSafeFrame;
 50301         -      }
 50302         -    }
 50303         -
 50304         -    /* Release the reader lock held while backfilling */
 50305         -    walUnlockExclusive(pWal, WAL_READ_LOCK(0), 1);
 50306         -  }
 50307         -
 50308         -  if( rc==SQLITE_BUSY ){
 50309         -    /* Reset the return code so as not to report a checkpoint failure
 50310         -    ** just because there are active readers.  */
 50311         -    rc = SQLITE_OK;
        50214  +  if( pInfo->nBackfill<pWal->hdr.mxFrame ){
        50215  +
        50216  +    /* Allocate the iterator */
        50217  +    rc = walIteratorInit(pWal, &pIter);
        50218  +    if( rc!=SQLITE_OK ){
        50219  +      return rc;
        50220  +    }
        50221  +    assert( pIter );
        50222  +
        50223  +    /* EVIDENCE-OF: R-62920-47450 The busy-handler callback is never invoked
        50224  +    ** in the SQLITE_CHECKPOINT_PASSIVE mode. */
        50225  +    assert( eMode!=SQLITE_CHECKPOINT_PASSIVE || xBusy==0 );
        50226  +
        50227  +    /* Compute in mxSafeFrame the index of the last frame of the WAL that is
        50228  +    ** safe to write into the database.  Frames beyond mxSafeFrame might
        50229  +    ** overwrite database pages that are in use by active readers and thus
        50230  +    ** cannot be backfilled from the WAL.
        50231  +    */
        50232  +    mxSafeFrame = pWal->hdr.mxFrame;
        50233  +    mxPage = pWal->hdr.nPage;
        50234  +    for(i=1; i<WAL_NREADER; i++){
        50235  +      u32 y = pInfo->aReadMark[i];
        50236  +      if( mxSafeFrame>y ){
        50237  +        assert( y<=pWal->hdr.mxFrame );
        50238  +        rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(i), 1);
        50239  +        if( rc==SQLITE_OK ){
        50240  +          pInfo->aReadMark[i] = (i==1 ? mxSafeFrame : READMARK_NOT_USED);
        50241  +          walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
        50242  +        }else if( rc==SQLITE_BUSY ){
        50243  +          mxSafeFrame = y;
        50244  +          xBusy = 0;
        50245  +        }else{
        50246  +          goto walcheckpoint_out;
        50247  +        }
        50248  +      }
        50249  +    }
        50250  +
        50251  +    if( pInfo->nBackfill<mxSafeFrame
        50252  +     && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0),1))==SQLITE_OK
        50253  +    ){
        50254  +      i64 nSize;                    /* Current size of database file */
        50255  +      u32 nBackfill = pInfo->nBackfill;
        50256  +
        50257  +      /* Sync the WAL to disk */
        50258  +      if( sync_flags ){
        50259  +        rc = sqlite3OsSync(pWal->pWalFd, sync_flags);
        50260  +      }
        50261  +
        50262  +      /* If the database may grow as a result of this checkpoint, hint
        50263  +      ** about the eventual size of the db file to the VFS layer.
        50264  +      */
        50265  +      if( rc==SQLITE_OK ){
        50266  +        i64 nReq = ((i64)mxPage * szPage);
        50267  +        rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
        50268  +        if( rc==SQLITE_OK && nSize<nReq ){
        50269  +          sqlite3OsFileControlHint(pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq);
        50270  +        }
        50271  +      }
        50272  +
        50273  +
        50274  +      /* Iterate through the contents of the WAL, copying data to the db file */
        50275  +      while( rc==SQLITE_OK && 0==walIteratorNext(pIter, &iDbpage, &iFrame) ){
        50276  +        i64 iOffset;
        50277  +        assert( walFramePgno(pWal, iFrame)==iDbpage );
        50278  +        if( iFrame<=nBackfill || iFrame>mxSafeFrame || iDbpage>mxPage ){
        50279  +          continue;
        50280  +        }
        50281  +        iOffset = walFrameOffset(iFrame, szPage) + WAL_FRAME_HDRSIZE;
        50282  +        /* testcase( IS_BIG_INT(iOffset) ); // requires a 4GiB WAL file */
        50283  +        rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
        50284  +        if( rc!=SQLITE_OK ) break;
        50285  +        iOffset = (iDbpage-1)*(i64)szPage;
        50286  +        testcase( IS_BIG_INT(iOffset) );
        50287  +        rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
        50288  +        if( rc!=SQLITE_OK ) break;
        50289  +      }
        50290  +
        50291  +      /* If work was actually accomplished... */
        50292  +      if( rc==SQLITE_OK ){
        50293  +        if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
        50294  +          i64 szDb = pWal->hdr.nPage*(i64)szPage;
        50295  +          testcase( IS_BIG_INT(szDb) );
        50296  +          rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
        50297  +          if( rc==SQLITE_OK && sync_flags ){
        50298  +            rc = sqlite3OsSync(pWal->pDbFd, sync_flags);
        50299  +          }
        50300  +        }
        50301  +        if( rc==SQLITE_OK ){
        50302  +          pInfo->nBackfill = mxSafeFrame;
        50303  +        }
        50304  +      }
        50305  +
        50306  +      /* Release the reader lock held while backfilling */
        50307  +      walUnlockExclusive(pWal, WAL_READ_LOCK(0), 1);
        50308  +    }
        50309  +
        50310  +    if( rc==SQLITE_BUSY ){
        50311  +      /* Reset the return code so as not to report a checkpoint failure
        50312  +      ** just because there are active readers.  */
        50313  +      rc = SQLITE_OK;
        50314  +    }
 50312  50315     }
 50313  50316   
 50314  50317     /* If this is an SQLITE_CHECKPOINT_RESTART or TRUNCATE operation, and the
 50315  50318     ** entire wal file has been copied into the database file, then block 
 50316  50319     ** until all readers have finished using the wal file. This ensures that 
 50317  50320     ** the next process to write to the database restarts the wal file.
 50318  50321     */
................................................................................
 50319  50322     if( rc==SQLITE_OK && eMode!=SQLITE_CHECKPOINT_PASSIVE ){
 50320  50323       assert( pWal->writeLock );
 50321  50324       if( pInfo->nBackfill<pWal->hdr.mxFrame ){
 50322  50325         rc = SQLITE_BUSY;
 50323  50326       }else if( eMode>=SQLITE_CHECKPOINT_RESTART ){
 50324  50327         u32 salt1;
 50325  50328         sqlite3_randomness(4, &salt1);
 50326         -      assert( mxSafeFrame==pWal->hdr.mxFrame );
        50329  +      assert( pInfo->nBackfill==pWal->hdr.mxFrame );
 50327  50330         rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(1), WAL_NREADER-1);
 50328  50331         if( rc==SQLITE_OK ){
 50329  50332           if( eMode==SQLITE_CHECKPOINT_TRUNCATE ){
 50330  50333             /* IMPLEMENTATION-OF: R-44699-57140 This mode works the same way as
 50331  50334             ** SQLITE_CHECKPOINT_RESTART with the addition that it also
 50332  50335             ** truncates the log file to zero bytes just prior to a
 50333  50336             ** successful return.
................................................................................
128365 128368     if( zDb && zDb[0] ){
128366 128369       iDb = sqlite3FindDbName(db, zDb);
128367 128370     }
128368 128371     if( iDb<0 ){
128369 128372       rc = SQLITE_ERROR;
128370 128373       sqlite3ErrorWithMsg(db, SQLITE_ERROR, "unknown database: %s", zDb);
128371 128374     }else{
       128375  +    db->busyHandler.nBusy = 0;
128372 128376       rc = sqlite3Checkpoint(db, iDb, eMode, pnLog, pnCkpt);
128373 128377       sqlite3Error(db, rc);
128374 128378     }
128375 128379     rc = sqlite3ApiExit(db, rc);
128376 128380     sqlite3_mutex_leave(db->mutex);
128377 128381     return rc;
128378 128382   #endif

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

   103    103   ** string contains the date and time of the check-in (UTC) and an SHA1
   104    104   ** hash of the entire source tree.
   105    105   **
   106    106   ** See also: [sqlite3_libversion()],
   107    107   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   108    108   ** [sqlite_version()] and [sqlite_source_id()].
   109    109   */
   110         -#define SQLITE_VERSION        "3.8.8.1"
          110  +#define SQLITE_VERSION        "3.8.8.2"
   111    111   #define SQLITE_VERSION_NUMBER 3008008
   112         -#define SQLITE_SOURCE_ID      "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
          112  +#define SQLITE_SOURCE_ID      "2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098"
   113    113   
   114    114   /*
   115    115   ** CAPI3REF: Run-Time Library Version Numbers
   116    116   ** KEYWORDS: sqlite3_version, sqlite3_sourceid
   117    117   **
   118    118   ** These interfaces provide the same information as the [SQLITE_VERSION],
   119    119   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros

Changes to readme.htm.

     1      1   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     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         -Version 1.0.95.0 - January XX, 2015 <font color="red">(release scheduled)</font><br />
     9         -Using <a href="http://www.sqlite.org/releaselog/3_8_8_1.html">SQLite 3.8.8.1</a><br />
            8  +Version 1.0.95.0 - February XX, 2015 <font color="red">(release scheduled)</font><br />
            9  +Using <a href="http://www.sqlite.org/releaselog/3_8_8_2.html">SQLite 3.8.8.2</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="http://system.data.sqlite.org/">http://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="http://system.data.sqlite.org/index.html/timeline?y=ci">
    16     16   http://system.data.sqlite.org/index.html/timeline?y=ci</a>
................................................................................
   205    205   designed for robustness and maximum backward compatibility with previously
   206    206   released versions of System.Data.SQLite.
   207    207   </p>
   208    208   
   209    209   <h2><b>Version History</b></h2>
   210    210   
   211    211   <p>
   212         -    <b>1.0.95.0 - January XX, 2015 <font color="red">(release scheduled)</font></b>
          212  +    <b>1.0.95.0 - February XX, 2015 <font color="red">(release scheduled)</font></b>
   213    213   </p>
   214    214   <ul>
   215         -    <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_8_1.html">SQLite 3.8.8.1</a>.</li>
          215  +    <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_8_2.html">SQLite 3.8.8.2</a>.</li>
   216    216       <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
   217    217       <li>Make sure SQLiteIndexOutputs.ConstraintUsages instances are created prior to calling ISQLiteManagedModule.BestIndex. Fix for [56f511d268].</li>
   218    218       <li>Correct marshalling of strings and blobs in the SQLiteValue class. Fix for [85b824b736].</li>
   219    219       <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</li>
   220    220       <li>Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for [daeaf3150a].</li>
   221    221       <li>Wrap SELECT statements in parenthesis if they have an ORDER BY, LIMIT, or OFFSET clause and a compound operator is involved. Fix for [0a32885109].</li>
   222    222       <li>In the SQLiteDataReader.VerifyType method, remove duplicate &quot;if&quot; statement for the DbType.SByte value and move the remaining &quot;if&quot; to the Int64 affinity. Fix for [c5cc2fb334].&nbsp;<b>** Potentially Incompatible Change **</b></li>

Changes to www/news.wiki.

     1      1   <title>News</title>
     2      2   
     3      3   <b>Version History</b>
     4      4   
     5      5   <p>
     6         -    <b>1.0.95.0 - January XX, 2015 <font color="red">(release scheduled)</font></b>
            6  +    <b>1.0.95.0 - February XX, 2015 <font color="red">(release scheduled)</font></b>
     7      7   </p>
     8      8   <ul>
     9         -    <li>Updated to [http://www.sqlite.org/releaselog/3_8_8_1.html|SQLite 3.8.8.1].</li>
            9  +    <li>Updated to [http://www.sqlite.org/releaselog/3_8_8_2.html|SQLite 3.8.8.2].</li>
    10     10       <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
    11     11       <li>Make sure SQLiteIndexOutputs.ConstraintUsages instances are created prior to calling ISQLiteManagedModule.BestIndex. Fix for [56f511d268].</li>
    12     12       <li>Correct marshalling of strings and blobs in the SQLiteValue class. Fix for [85b824b736].</li>
    13     13       <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</li>
    14     14       <li>Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for [daeaf3150a].</li>
    15     15       <li>Wrap SELECT statements in parenthesis if they have an ORDER BY, LIMIT, or OFFSET clause and a compound operator is involved. Fix for [0a32885109].</li>
    16     16       <li>In the SQLiteDataReader.VerifyType method, remove duplicate &quot;if&quot; statement for the DbType.SByte value and move the remaining &quot;if&quot; to the Int64 affinity.  Fix for [c5cc2fb334].&nbsp;<b>** Potentially Incompatible Change **</b></li>