System.Data.SQLite
Check-in [98379cefde]
Not logged in

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

Overview
Comment:Update SQLite core library to the 3.8.7.4 release.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 98379cefde226bd4dcecde4c93cb17003caa72aa
User & Date: mistachkin 2014-12-09 23:13:40
Context
2014-12-16
18:41
Update master release archive manifest. check-in: 6198c5f180 user: mistachkin tags: trunk
2014-12-09
23:13
Update SQLite core library to the 3.8.7.4 release. check-in: 98379cefde user: mistachkin tags: trunk
19:23
Update the included core library documentation. check-in: 9ade973926 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 - December XX, 2014 <font color="red">(release scheduled)</font></b></p>
           46  +    <p><b>1.0.95.0 - January 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_7_2.html">SQLite 3.8.7.2</a>.</li>
           48  +      <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_7_4.html">SQLite 3.8.7.4</a>.</li>
    49     49         <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
    50     50         <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>
    51     51         <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>
    52     52         <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>
    53     53         <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>
    54     54         <li>Handle Julian Day values that fall outside of the supported range for OLE Automation dates. Fix for <a href="http://system.data.sqlite.org/index.html/info/3e783eecbe">[3e783eecbe]</a>.&nbsp;<b>** Potentially Incompatible Change **</b></li>
    55     55         <li>Make sure the interop files are copied when publishing a project that refers to a NuGet package containing them. Fix for <a href="http://system.data.sqlite.org/index.html/info/e796ac82c1">[e796ac82c1]</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.7.2</SQLITE_MANIFEST_VERSION>
    13         -    <SQLITE_RC_VERSION>3,8,7,2</SQLITE_RC_VERSION>
           12  +    <SQLITE_MANIFEST_VERSION>3.8.7.4</SQLITE_MANIFEST_VERSION>
           13  +    <SQLITE_RC_VERSION>3,8,7,4</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.7.2"
           17  +		Value="3.8.7.4"
    18     18   		PerformEnvironmentSet="true"
    19     19   	/>
    20     20   	<UserMacro
    21     21   		Name="SQLITE_RC_VERSION"
    22         -		Value="3,8,7,2"
           22  +		Value="3,8,7,4"
    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.7.2.  By combining all the individual C code files into this 
            3  +** version 3.8.7.4.  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
................................................................................
   227    227   ** string contains the date and time of the check-in (UTC) and an SHA1
   228    228   ** hash of the entire source tree.
   229    229   **
   230    230   ** See also: [sqlite3_libversion()],
   231    231   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   232    232   ** [sqlite_version()] and [sqlite_source_id()].
   233    233   */
   234         -#define SQLITE_VERSION        "3.8.7.2"
          234  +#define SQLITE_VERSION        "3.8.7.4"
   235    235   #define SQLITE_VERSION_NUMBER 3008007
   236         -#define SQLITE_SOURCE_ID      "2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93"
          236  +#define SQLITE_SOURCE_ID      "2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e"
   237    237   
   238    238   /*
   239    239   ** CAPI3REF: Run-Time Library Version Numbers
   240    240   ** KEYWORDS: sqlite3_version, sqlite3_sourceid
   241    241   **
   242    242   ** These interfaces provide the same information as the [SQLITE_VERSION],
   243    243   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
................................................................................
 11533  11533     AggInfo *pAggInfo;     /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
 11534  11534     Table *pTab;           /* Table for TK_COLUMN expressions. */
 11535  11535   };
 11536  11536   
 11537  11537   /*
 11538  11538   ** The following are the meanings of bits in the Expr.flags field.
 11539  11539   */
 11540         -#define EP_FromJoin  0x000001 /* Originated in ON or USING clause of a join */
        11540  +#define EP_FromJoin  0x000001 /* Originates in ON/USING clause of outer join */
 11541  11541   #define EP_Agg       0x000002 /* Contains one or more aggregate functions */
 11542  11542   #define EP_Resolved  0x000004 /* IDs have been resolved to COLUMNs */
 11543  11543   #define EP_Error     0x000008 /* Expression contains one or more errors */
 11544  11544   #define EP_Distinct  0x000010 /* Aggregate function with DISTINCT keyword */
 11545  11545   #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */
 11546  11546   #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */
 11547  11547   #define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */
................................................................................
 11553  11553   #define EP_Reduced   0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
 11554  11554   #define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
 11555  11555   #define EP_Static    0x008000 /* Held in memory not obtained from malloc() */
 11556  11556   #define EP_MemToken  0x010000 /* Need to sqlite3DbFree() Expr.zToken */
 11557  11557   #define EP_NoReduce  0x020000 /* Cannot EXPRDUP_REDUCE this Expr */
 11558  11558   #define EP_Unlikely  0x040000 /* unlikely() or likelihood() function */
 11559  11559   #define EP_Constant  0x080000 /* Node is a constant */
        11560  +#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
 11560  11561   
 11561  11562   /*
 11562  11563   ** These macros can be used to test, set, or clear bits in the 
 11563  11564   ** Expr.flags field.
 11564  11565   */
 11565  11566   #define ExprHasProperty(E,P)     (((E)->flags&(P))!=0)
 11566  11567   #define ExprHasAllProperty(E,P)  (((E)->flags&(P))==(P))
................................................................................
 79500  79501               break;
 79501  79502             }
 79502  79503           }
 79503  79504         }
 79504  79505         if( pMatch ){
 79505  79506           pExpr->iTable = pMatch->iCursor;
 79506  79507           pExpr->pTab = pMatch->pTab;
        79508  +        assert( (pMatch->jointype & JT_RIGHT)==0 ); /* RIGHT JOIN not (yet) supported */
        79509  +        if( (pMatch->jointype & JT_LEFT)!=0 ){
        79510  +          ExprSetProperty(pExpr, EP_CanBeNull);
        79511  +        }
 79507  79512           pSchema = pExpr->pTab->pSchema;
 79508  79513         }
 79509  79514       } /* if( pSrcList ) */
 79510  79515   
 79511  79516   #ifndef SQLITE_OMIT_TRIGGER
 79512  79517       /* If we have not already resolved the name, then maybe 
 79513  79518       ** it is a new.* or old.* trigger argument reference
................................................................................
 82036  82041       case TK_INTEGER:
 82037  82042       case TK_STRING:
 82038  82043       case TK_FLOAT:
 82039  82044       case TK_BLOB:
 82040  82045         return 0;
 82041  82046       case TK_COLUMN:
 82042  82047         assert( p->pTab!=0 );
 82043         -      return p->iColumn>=0 && p->pTab->aCol[p->iColumn].notNull==0;
        82048  +      return ExprHasProperty(p, EP_CanBeNull) ||
        82049  +             (p->iColumn>=0 && p->pTab->aCol[p->iColumn].notNull==0);
 82044  82050       default:
 82045  82051         return 1;
 82046  82052     }
 82047  82053   }
 82048  82054   
 82049  82055   /*
 82050  82056   ** Return TRUE if the given expression is a constant which would be
................................................................................
 87411  87417         int i;                    /* Used to iterate through samples */
 87412  87418         tRowcnt sumEq = 0;        /* Sum of the nEq values */
 87413  87419         tRowcnt avgEq = 0;
 87414  87420         tRowcnt nRow;             /* Number of rows in index */
 87415  87421         i64 nSum100 = 0;          /* Number of terms contributing to sumEq */
 87416  87422         i64 nDist100;             /* Number of distinct values in index */
 87417  87423   
 87418         -      if( pIdx->aiRowEst==0 || pIdx->aiRowEst[iCol+1]==0 ){
        87424  +      if( !pIdx->aiRowEst || iCol>=pIdx->nKeyCol || pIdx->aiRowEst[iCol+1]==0 ){
 87419  87425           nRow = pFinal->anLt[iCol];
 87420  87426           nDist100 = (i64)100 * pFinal->anDLt[iCol];
 87421  87427           nSample--;
 87422  87428         }else{
 87423  87429           nRow = pIdx->aiRowEst[0];
 87424  87430           nDist100 = ((i64)100 * pIdx->aiRowEst[0]) / pIdx->aiRowEst[iCol+1];
 87425  87431         }
................................................................................
125884 125890     /* Free any outstanding Savepoint structures. */
125885 125891     sqlite3CloseSavepoints(db);
125886 125892   
125887 125893     /* Close all database connections */
125888 125894     for(j=0; j<db->nDb; j++){
125889 125895       struct Db *pDb = &db->aDb[j];
125890 125896       if( pDb->pBt ){
       125897  +      if( pDb->pSchema ){
       125898  +        /* Must clear the KeyInfo cache.  See ticket [e4a18565a36884b00edf] */
       125899  +        sqlite3BtreeEnter(pDb->pBt);
       125900  +        for(i=sqliteHashFirst(&pDb->pSchema->idxHash); i; i=sqliteHashNext(i)){
       125901  +          Index *pIdx = sqliteHashData(i);
       125902  +          sqlite3KeyInfoUnref(pIdx->pKeyInfo);
       125903  +          pIdx->pKeyInfo = 0;
       125904  +        }
       125905  +        sqlite3BtreeLeave(pDb->pBt);
       125906  +      }
125891 125907         sqlite3BtreeClose(pDb->pBt);
125892 125908         pDb->pBt = 0;
125893 125909         if( j!=1 ){
125894 125910           pDb->pSchema = 0;
125895 125911         }
125896 125912       }
125897 125913     }
................................................................................
127531 127547     if( rc!=SQLITE_OK ){
127532 127548       if( rc==SQLITE_IOERR_NOMEM ){
127533 127549         rc = SQLITE_NOMEM;
127534 127550       }
127535 127551       sqlite3Error(db, rc);
127536 127552       goto opendb_out;
127537 127553     }
       127554  +  sqlite3BtreeEnter(db->aDb[0].pBt);
127538 127555     db->aDb[0].pSchema = sqlite3SchemaGet(db, db->aDb[0].pBt);
       127556  +  sqlite3BtreeLeave(db->aDb[0].pBt);
127539 127557     db->aDb[1].pSchema = sqlite3SchemaGet(db, 0);
127540 127558   
127541 127559     /* The default safety_level for the main database is 'full'; for the temp
127542 127560     ** database it is 'NONE'. This matches the pager layer defaults.  
127543 127561     */
127544 127562     db->aDb[0].zName = "main";
127545 127563     db->aDb[0].safety_level = 3;

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.7.2"
          110  +#define SQLITE_VERSION        "3.8.7.4"
   111    111   #define SQLITE_VERSION_NUMBER 3008007
   112         -#define SQLITE_SOURCE_ID      "2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93"
          112  +#define SQLITE_SOURCE_ID      "2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e"
   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 December XX, 2014 <font color="red">(release scheduled)</font><br />
     9         -Using <a href="http://www.sqlite.org/releaselog/3_8_7_2.html">SQLite 3.8.7.2</a><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_7_4.html">SQLite 3.8.7.4</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 - December XX, 2014 <font color="red">(release scheduled)</font></b>
          212  +    <b>1.0.95.0 - January XX, 2015 <font color="red">(release scheduled)</font></b>
   213    213   </p>
   214    214   <ul>
   215    215       <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_7.html">SQLite 3.8.7</a>.</li>
   216    216       <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
   217    217       <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</li>
   218    218       <li>Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for [daeaf3150a].</li>
   219    219       <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>

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 - December XX, 2014 <font color="red">(release scheduled)</font></b>
            6  +    <b>1.0.95.0 - January 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_7_2.html|SQLite 3.8.7.2].</li>
            9  +    <li>Updated to [http://www.sqlite.org/releaselog/3_8_7_4.html|SQLite 3.8.7.4].</li>
    10     10       <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
    11     11       <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</li>
    12     12       <li>Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for [daeaf3150a].</li>
    13     13       <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>
    14     14       <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>
    15     15       <li>Handle Julian Day values that fall outside of the supported range for OLE Automation dates. Fix for [3e783eecbe].&nbsp;<b>** Potentially Incompatible Change **</b></li>
    16     16       <li>Make sure the interop files are copied when publishing a project that refers to a NuGet package containing them. Fix for [e796ac82c1].&nbsp;<b>** Potentially Incompatible Change **</b></li>