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

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

Overview
Comment:Update SQLite core library to the 3.7.15.1 release. Also, add tests for ticket [ae5267b863].
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c83f8f3852dc7b6c11abab8f26fc8cb9a39add81
User & Date: mistachkin 2012-12-20 02:09:08
References
2012-12-20
02:31 Ticket [ae5267b863] AccessViolationException during object disposal status still Pending with 3 other changes artifact: dd0445aca9 user: mistachkin
Context
2012-12-24
01:37
Modify parsing of connection strings to allow property names and values to be quoted. check-in: 36bb982dd7 user: mistachkin tags: trunk
2012-12-20
02:09
Update SQLite core library to the 3.7.15.1 release. Also, add tests for ticket [ae5267b863]. check-in: c83f8f3852 user: mistachkin tags: trunk
02:05
Update SQLite core library to the 3.7.15.1 release. Closed-Leaf check-in: 3cac27b444 user: mistachkin tags: tkt-ae5267b863
2012-12-17
22:53
Fix typo in comment. check-in: 82dedce10b user: mistachkin tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to Doc/Extra/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.83.0 - December XX, 2012 <font color="red">(release scheduled)</font></b></p>
    47     47       <ul>
    48         -      <li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_15.html">SQLite 3.7.15</a>.</li>
           48  +      <li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_15_1.html">SQLite 3.7.15.1</a>.</li>
    49     49         <li>Add Visual Studio 2012 support to all the applicable solution/project files, their associated supporting files, and the test suite.</li>
    50     50         <li>Add Visual Studio 2012 support to the redesigned designer support installer.</li>
    51     51         <li>Allow opened connections to skip adding the extension functions included in the interop assembly via the new NoExtensionFunctions connection flag.</li>
    52     52         <li>Support loading of SQLite extensions via the new EnableExtensions and LoadExtension methods of the SQLiteConnection class. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/17045010df">[17045010df]</a>.</li>
    53     53         <li>Remove one set of surrounding single or double quotes from property names and values parsed from the connection string. Fix for <a href="http://system.data.sqlite.org/index.html/info/b4cc611998">[b4cc611998]</a>.</li>
    54     54         <li>Add ParseViaFramework property to the SQLiteConnection class to allow the built-in (i.e. framework provided) connection string parser to be used when opening a connection. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/b4cc611998">[b4cc611998]</a>.</li>
    55     55         <li>Add notifications before and after any connection is opened and closed, as well as other related notifications, via the new static Changed event.</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.7.15</SQLITE_MANIFEST_VERSION>
    13         -    <SQLITE_RC_VERSION>3,7,15</SQLITE_RC_VERSION>
           12  +    <SQLITE_MANIFEST_VERSION>3.7.15.1</SQLITE_MANIFEST_VERSION>
           13  +    <SQLITE_RC_VERSION>3,7,15,1</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_STAT3=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1</SQLITE_COMMON_DEFINES>
    15     15       <SQLITE_EXTRA_DEFINES>SQLITE_HAS_CODEC=1</SQLITE_EXTRA_DEFINES>
    16     16       <SQLITE_WINCE_DEFINES>SQLITE_OMIT_WAL=1</SQLITE_WINCE_DEFINES>
    17     17       <SQLITE_DEBUG_DEFINES>SQLITE_DEBUG=1;SQLITE_MEMDEBUG=1;SQLITE_ENABLE_EXPENSIVE_ASSERT=1</SQLITE_DEBUG_DEFINES>
    18     18       <SQLITE_RELEASE_DEFINES>SQLITE_WIN32_MALLOC=1</SQLITE_RELEASE_DEFINES>
    19     19       <SQLITE_DISABLE_WARNINGS>4055;4100;4127;4146;4210;4232;4244;4245;4267;4306;4389;4701;4703;4706</SQLITE_DISABLE_WARNINGS>
    20     20       <SQLITE_DISABLE_X64_WARNINGS></SQLITE_DISABLE_X64_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.7.15"
           17  +		Value="3.7.15.1"
    18     18   		PerformEnvironmentSet="true"
    19     19   	/>
    20     20   	<UserMacro
    21     21   		Name="SQLITE_RC_VERSION"
    22         -		Value="3,7,15"
           22  +		Value="3,7,15,1"
    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_STAT3=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=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.7.15.  By combining all the individual C code files into this 
            3  +** version 3.7.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
................................................................................
   669    669   ** string contains the date and time of the check-in (UTC) and an SHA1
   670    670   ** hash of the entire source tree.
   671    671   **
   672    672   ** See also: [sqlite3_libversion()],
   673    673   ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
   674    674   ** [sqlite_version()] and [sqlite_source_id()].
   675    675   */
   676         -#define SQLITE_VERSION        "3.7.15"
          676  +#define SQLITE_VERSION        "3.7.15.1"
   677    677   #define SQLITE_VERSION_NUMBER 3007015
   678         -#define SQLITE_SOURCE_ID      "2012-12-12 13:36:53 cd0b37c52658bfdf992b1e3dc467bae1835a94ae"
          678  +#define SQLITE_SOURCE_ID      "2012-12-19 20:39:10 6b85b767d0ff7975146156a99ad673f2c1a23318"
   679    679   
   680    680   /*
   681    681   ** CAPI3REF: Run-Time Library Version Numbers
   682    682   ** KEYWORDS: sqlite3_version, sqlite3_sourceid
   683    683   **
   684    684   ** These interfaces provide the same information as the [SQLITE_VERSION],
   685    685   ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
................................................................................
102852 102852       memcpy(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm);
102853 102853       if( pOld!=pWC->aStatic ){
102854 102854         sqlite3DbFree(db, pOld);
102855 102855       }
102856 102856       pWC->nSlot = sqlite3DbMallocSize(db, pWC->a)/sizeof(pWC->a[0]);
102857 102857     }
102858 102858     pTerm = &pWC->a[idx = pWC->nTerm++];
102859         -  pTerm->pExpr = p;
       102859  +  pTerm->pExpr = sqlite3ExprSkipCollate(p);
102860 102860     pTerm->wtFlags = wtFlags;
102861 102861     pTerm->pWC = pWC;
102862 102862     pTerm->iParent = -1;
102863 102863     return idx;
102864 102864   }
102865 102865   
102866 102866   /*
................................................................................
103637 103637     sqlite3 *db = pParse->db;        /* Database connection */
103638 103638   
103639 103639     if( db->mallocFailed ){
103640 103640       return;
103641 103641     }
103642 103642     pTerm = &pWC->a[idxTerm];
103643 103643     pMaskSet = pWC->pMaskSet;
103644         -  pExpr = sqlite3ExprSkipCollate(pTerm->pExpr);
       103644  +  pExpr = pTerm->pExpr;
       103645  +  assert( pExpr->op!=TK_AS && pExpr->op!=TK_COLLATE );
103645 103646     prereqLeft = exprTableUsage(pMaskSet, pExpr->pLeft);
103646 103647     op = pExpr->op;
103647 103648     if( op==TK_IN ){
103648 103649       assert( pExpr->pRight==0 );
103649 103650       if( ExprHasProperty(pExpr, EP_xIsSelect) ){
103650 103651         pTerm->prereqRight = exprSelectTableUsage(pMaskSet, pExpr->x.pSelect);
103651 103652       }else{

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.7.15"
          110  +#define SQLITE_VERSION        "3.7.15.1"
   111    111   #define SQLITE_VERSION_NUMBER 3007015
   112         -#define SQLITE_SOURCE_ID      "2012-12-12 13:36:53 cd0b37c52658bfdf992b1e3dc467bae1835a94ae"
          112  +#define SQLITE_SOURCE_ID      "2012-12-19 20:39:10 6b85b767d0ff7975146156a99ad673f2c1a23318"
   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

Added Tests/tkt-ae5267b863.eagle.

            1  +###############################################################################
            2  +#
            3  +# tkt-ae5267b863.eagle --
            4  +#
            5  +# Written by Joe Mistachkin.
            6  +# Released to the public domain, use at your own risk!
            7  +#
            8  +###############################################################################
            9  +
           10  +package require Eagle
           11  +package require Eagle.Library
           12  +package require Eagle.Test
           13  +
           14  +runTestPrologue
           15  +
           16  +###############################################################################
           17  +
           18  +package require System.Data.SQLite.Test
           19  +runSQLiteTestPrologue
           20  +
           21  +###############################################################################
           22  +
           23  +runTest {test tkt-ae5267b863-1.1 {segfault during command GC} -setup {
           24  +  setupDb [set fileName tkt-ae5267b863-1.1.db]
           25  +} -body {
           26  +  set id [object invoke Interpreter.GetActive NextId]
           27  +  set dataSource [file join [getDatabaseDirectory] $fileName]
           28  +
           29  +  set sql(1) { \
           30  +    CREATE TABLE t1( \
           31  +      __rowid INTEGER PRIMARY KEY AUTOINCREMENT, \
           32  +      z STRING \
           33  +    ); \
           34  +  }
           35  +
           36  +  set sql(2) { \
           37  +    CREATE VIRTUAL TABLE t2 USING RTREE( \
           38  +      id, minx, maxx, miny, maxy \
           39  +    ); \
           40  +  }
           41  +
           42  +  set sql(3) { \
           43  +    INSERT INTO t1 VALUES({0}, \"value {0}\"); \
           44  +  }
           45  +
           46  +  set sql(4) { \
           47  +    INSERT INTO t2 VALUES({0}, {0}, {0}, {0}, {0}); \
           48  +  }
           49  +
           50  +  set sql(5) { \
           51  +    SELECT COUNT(*) FROM t1, t2 \
           52  +    WHERE t1.__rowid = t2.id AND \
           53  +    (t2.minx <= :xmax and t2.miny <= :ymax and \
           54  +     t2.maxx >= :xmin and t2.maxy >= :ymin); \
           55  +  }
           56  +
           57  +  unset -nocomplain results errors
           58  +
           59  +  set code [compileCSharpWith [subst {
           60  +    using System;
           61  +    using System.Data.SQLite;
           62  +
           63  +    namespace _Dynamic${id}
           64  +    {
           65  +      public static class Test${id}
           66  +      {
           67  +        public static void Main()
           68  +        {
           69  +          using (SQLiteConnection connection = new SQLiteConnection(
           70  +              "Data Source=${dataSource};"))
           71  +          {
           72  +            connection.Open();
           73  +
           74  +            using (SQLiteCommand command = connection.CreateCommand())
           75  +            {
           76  +              command.CommandText = "${sql(1)}";
           77  +              command.ExecuteNonQuery();
           78  +
           79  +              command.CommandText = "${sql(2)}";
           80  +              command.ExecuteNonQuery();
           81  +            }
           82  +
           83  +            using (SQLiteCommand command = connection.CreateCommand())
           84  +            {
           85  +              using (SQLiteTransaction transaction =
           86  +                  connection.BeginTransaction())
           87  +              {
           88  +                for (int index = 0; index < 10; index++)
           89  +                {
           90  +                  command.CommandText = String.Format("${sql(3)}", index);
           91  +                  command.ExecuteNonQuery();
           92  +
           93  +                  command.CommandText = String.Format("${sql(4)}", index);
           94  +                  command.ExecuteNonQuery();
           95  +                }
           96  +
           97  +                transaction.Commit();
           98  +              }
           99  +            }
          100  +
          101  +            //
          102  +            // NOTE: Perform a huge amount of command creation and execution
          103  +            //       cycles for a better chance to trigger the bug.
          104  +            //
          105  +            for (int index = 0; index < 100000; index++)
          106  +            {
          107  +              //
          108  +              // NOTE: Purposely omit the 'using' block here to test
          109  +              //       command disposal via the garbage collector.
          110  +              //
          111  +              SQLiteCommand command = connection.CreateCommand();
          112  +
          113  +              command.CommandText = "${sql(5)}";
          114  +              command.Parameters.Add(new SQLiteParameter(":xmin", 2));
          115  +              command.Parameters.Add(new SQLiteParameter(":xmax", 8));
          116  +              command.Parameters.Add(new SQLiteParameter(":ymin", 2));
          117  +              command.Parameters.Add(new SQLiteParameter(":ymax", 8));
          118  +
          119  +              using (SQLiteDataReader reader = command.ExecuteReader())
          120  +              {
          121  +                while (reader.Read()) {
          122  +                  //
          123  +                  // do nothing.
          124  +                  //
          125  +                }
          126  +              }
          127  +            }
          128  +
          129  +            connection.Close();
          130  +          }
          131  +        }
          132  +      }
          133  +    }
          134  +  }] true true true results errors System.Data.SQLite.dll]
          135  +
          136  +  list $code $results \
          137  +      [expr {[info exists errors] ? $errors : ""}] \
          138  +      [expr {$code eq "Ok" ? [catch {
          139  +        object invoke _Dynamic${id}.Test${id} Main
          140  +      } result] : [set result ""]}] $result
          141  +} -cleanup {
          142  +  cleanupDb $fileName
          143  +
          144  +  unset -nocomplain result code results errors sql dataSource id db fileName
          145  +} -constraints \
          146  +{eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -match \
          147  +regexp -result {^Ok System#CodeDom#Compiler#CompilerResults#\d+ \{\} 0 \{\}$}}
          148  +
          149  +###############################################################################
          150  +
          151  +runSQLiteTestEpilogue
          152  +runTestEpilogue

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.83.0 December XX, 2012 <font color="red">(release scheduled)</font><br />
     9         -Using <a href="http://www.sqlite.org/releaselog/3_7_15.html">SQLite 3.7.15</a><br />
            9  +Using <a href="http://www.sqlite.org/releaselog/3_7_15_1.html">SQLite 3.7.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="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>
................................................................................
   186    186   
   187    187   <h2><b>Version History</b></h2>
   188    188   
   189    189   <p>
   190    190       <b>1.0.83.0 - December XX, 2012</b>
   191    191   </p>
   192    192   <ul>
   193         -    <li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_15.html">SQLite 3.7.15</a>.</li>
          193  +    <li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_15_1.html">SQLite 3.7.15.1</a>.</li>
   194    194       <li>Add Visual Studio 2012 support to all the applicable solution/project files, their associated supporting files, and the test suite.</li>
   195    195       <li>Add Visual Studio 2012 support to the redesigned designer support installer.</li>
   196    196       <li>Allow opened connections to skip adding the extension functions included in the interop assembly via the new NoExtensionFunctions connection flag.</li>
   197    197       <li>Support loading of SQLite extensions via the new EnableExtensions and LoadExtension methods of the SQLiteConnection class. Pursuant to [17045010df].</li>
   198    198       <li>Remove one set of surrounding single or double quotes from property names and values parsed from the connection string. Fix for [b4cc611998].</li>
   199    199       <li>Add ParseViaFramework property to the SQLiteConnection class to allow the built-in (i.e. framework provided) connection string parser to be used when opening a connection. Pursuant to [b4cc611998].</li>
   200    200       <li>Add notifications before and after any connection is opened and closed, as well as other related notifications, via the new static Changed event.</li>

Changes to www/news.wiki.

     2      2   
     3      3   <b>Version History</b>
     4      4   
     5      5   <p>
     6      6       <b>1.0.83.0 - December XX, 2012 <font color="red">(release scheduled)</font></b>
     7      7   </p>
     8      8   <ul>
     9         -    <li>Updated to [http://www.sqlite.org/releaselog/3_7_15.html|SQLite 3.7.15].</li>
            9  +    <li>Updated to [http://www.sqlite.org/releaselog/3_7_15_1.html|SQLite 3.7.15.1].</li>
    10     10       <li>Add Visual Studio 2012 support to all the applicable solution/project files, their associated supporting files, and the test suite.</li>
    11     11       <li>Add Visual Studio 2012 support to the redesigned designer support installer.</li>
    12     12       <li>Allow opened connections to skip adding the extension functions included in the interop assembly via the new NoExtensionFunctions connection flag.</li>
    13     13       <li>Support loading of SQLite extensions via the new EnableExtensions and LoadExtension methods of the SQLiteConnection class. Pursuant to [17045010df].</li>
    14     14       <li>Remove one set of surrounding single or double quotes from property names and values parsed from the connection string. Fix for [b4cc611998].</li>
    15     15       <li>Add ParseViaFramework property to the SQLiteConnection class to allow the built-in (i.e. framework provided) connection string parser to be used when opening a connection. Pursuant to [b4cc611998].</li>
    16     16       <li>Add notifications before and after any connection is opened and closed, as well as other related notifications, via the new static Changed event.</li>