System.Data.SQLite
Check-in [8f3314a825]
Not logged in

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

Overview
Comment:Merge updates from trunk.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | tkt-e30b820248
Files: files | file ages | folders
SHA1: 8f3314a82520608fddad20c2f90b313889925da6
User & Date: mistachkin 2011-11-13 22:16:09
Context
2011-11-13
23:47
When compiling with DEBUG defined, complain about failures to release CriticalHandle objects. Also, add more diagnostics to test case for ticket [e30b820248]. check-in: 5578f853af user: mistachkin tags: tkt-e30b820248
22:16
Merge updates from trunk. check-in: 8f3314a825 user: mistachkin tags: tkt-e30b820248
22:03
More updates to docs for release 77. check-in: f0a39e8e34 user: mistachkin tags: trunk
21:27
Formal attempt to reproduce the issue in ticket [e30b820248]. check-in: 68d2140bad user: mistachkin tags: tkt-e30b820248
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to Doc/Extra/version.html.

    44     44       <div id="mainBody">
    45     45       <h1 class="heading">Version History</h1>
    46     46       <p><b>1.0.77.0 - November XX, 2011</b></p>
    47     47       <ul>
    48     48         <li>Updated to SQLite 3.7.9 <a href="http://www.sqlite.org/src/info/c7c6050ef0">[c7c6050ef0]</a>.</li>
    49     49         <li>More enhancements to the build and test automation.</li>
    50     50         <li>Support building the core System.Data.SQLite assemblies using the .NET Framework 4.0 Client Profile. Fix for <a href="http://system.data.sqlite.org/index.html/info/566f1ad1e4">[566f1ad1e4]</a>.</li>
           51  +      <li>When generating the schema based on the contents of a SQLiteDataReader, skip flagging columns as unique if the data reader is holding the result of some kind of multi-table construct (e.g. a cross join) because we must allow duplicate values in that case. Fix for <a href="http://system.data.sqlite.org/index.html/info/7e3fa93744">[7e3fa93744]</a>.</li>
    51     52         <li>When returning schema information that may be used by the .NET Framework to construct dynamic SQL, use a fake schema name (instead of null) so that the table names will be properly qualified with the catalog name (i.e. the attached database name). Partial fix for <a href="http://system.data.sqlite.org/index.html/info/343d392b51">[343d392b51]</a>.</li>
           53  +      <li>Add MemoryUsed and MemoryHighwater properties to the SQLiteConnection class to help determine the memory usage of SQLite.</li>
    52     54         <li>Add DateTimeKind connection string property to control the DateTimeKind of parsed DateTime values. Partial fix for <a href="http://system.data.sqlite.org/index.html/info/343d392b51">[343d392b51]</a>.</li>
    53     55         <li>Improve the robustness of the SQLiteLog class when it will be initialized and unloaded multiple times.</li>
    54     56         <li>Fix the name of the interop assembly for Windows CE. Add unit tests to prevent this type of issue from happening again. Fix for <a href="http://system.data.sqlite.org/index.html/info/737ca4ff74">[737ca4ff74]</a>.</li>
    55     57         <li>Formally support the SQL type name BOOLEAN in addition to BOOL. Fix for <a href="http://system.data.sqlite.org/index.html/info/544dba0a2f">[544dba0a2f]</a>.</li>
    56     58         <li>Make sure the SQLiteConvert.TypeNameToDbType method is thread-safe. Fix for <a href="http://system.data.sqlite.org/index.html/info/84718e79fa">[84718e79fa]</a>.</li>
    57     59       </ul>
    58     60       <p><b>1.0.76.0 - October 4, 2011</b></p>

Changes to System.Data.SQLite/SQLite3.cs.

   119    119       internal override long MemoryUsed
   120    120       {
   121    121         get
   122    122         {
   123    123           return UnsafeNativeMethods.sqlite3_memory_used();
   124    124         }
   125    125       }
          126  +
          127  +    internal override long MemoryHighwater
          128  +    {
          129  +      get
          130  +      {
          131  +        return UnsafeNativeMethods.sqlite3_memory_highwater(0);
          132  +      }
          133  +    }
   126    134   
   127    135       /// <summary>
   128    136       /// Shutdown the SQLite engine so that it can be restarted with different config options.
   129    137       /// We depend on auto initialization to recover.
   130    138       /// </summary>
   131    139       /// <returns>Returns a result code</returns>
   132    140       internal override int Shutdown()

Changes to System.Data.SQLite/SQLiteBase.cs.

    29     29       /// </summary>
    30     30       internal abstract long LastInsertRowId { get; }
    31     31       /// <summary>
    32     32       /// Returns the number of changes the last executing insert/update caused.
    33     33       /// </summary>
    34     34       internal abstract int Changes { get; }
    35     35       /// <summary>
    36         -    /// Returns the amount of memory, in bytes, currently in use by SQLite core library.
           36  +    /// Returns the amount of memory (in bytes) currently in use by the SQLite core library.
    37     37       /// </summary>
    38     38       internal abstract long MemoryUsed { get; }
           39  +    /// <summary>
           40  +    /// Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset.
           41  +    /// </summary>
           42  +    internal abstract long MemoryHighwater { get; }
    39     43       /// <summary>
    40     44       /// Shutdown the SQLite engine so that it can be restarted with different config options.
    41     45       /// We depend on auto initialization to recover.
    42     46       /// </summary>
    43     47       internal abstract int Shutdown();
    44     48       /// <summary>
    45     49       /// Returns non-zero if a database connection is open.

Changes to System.Data.SQLite/SQLiteConnection.cs.

  1035   1035             throw new InvalidOperationException("Database connection not valid for getting number of changes.");
  1036   1036   
  1037   1037           return _sql.Changes;
  1038   1038         }
  1039   1039       }
  1040   1040   
  1041   1041       /// <summary>
  1042         -    /// Returns the amount of memory, in bytes, currently in use by SQLite core library.
         1042  +    /// Returns the amount of memory (in bytes) currently in use by the SQLite core library.
  1043   1043       /// </summary>
  1044   1044   #if !PLATFORM_COMPACTFRAMEWORK
  1045   1045       [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
  1046   1046   #endif
  1047   1047       public long MemoryUsed
  1048   1048       {
  1049   1049         get
................................................................................
  1050   1050         {
  1051   1051           if (_sql == null)
  1052   1052             throw new InvalidOperationException("Database connection not valid for getting memory used.");
  1053   1053   
  1054   1054           return _sql.MemoryUsed;
  1055   1055         }
  1056   1056       }
         1057  +
         1058  +    /// <summary>
         1059  +    /// Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset.
         1060  +    /// </summary>
         1061  +#if !PLATFORM_COMPACTFRAMEWORK
         1062  +    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
         1063  +#endif
         1064  +    public long MemoryHighwater
         1065  +    {
         1066  +      get
         1067  +      {
         1068  +        if (_sql == null)
         1069  +          throw new InvalidOperationException("Database connection not valid for getting maximum memory used.");
         1070  +
         1071  +          return _sql.MemoryHighwater;
         1072  +      }
         1073  +    }
  1057   1074   
  1058   1075       /// <summary>
  1059   1076       /// Returns the version of the underlying SQLite database engine
  1060   1077       /// </summary>
  1061   1078       public static string SQLiteVersion
  1062   1079       {
  1063   1080         get { return SQLite3.SQLiteVersion; }

Changes to System.Data.SQLite/UnsafeNativeMethods.cs.

   375    375   #if !PLATFORM_COMPACTFRAMEWORK
   376    376       [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
   377    377   #else
   378    378       [DllImport(SQLITE_DLL)]
   379    379   #endif
   380    380       internal static extern long sqlite3_memory_used();
   381    381   
          382  +#if !PLATFORM_COMPACTFRAMEWORK
          383  +    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
          384  +#else
          385  +    [DllImport(SQLITE_DLL)]
          386  +#endif
          387  +    internal static extern long sqlite3_memory_highwater(int resetFlag);
          388  +
   382    389   #if !PLATFORM_COMPACTFRAMEWORK
   383    390       [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
   384    391   #else
   385    392       [DllImport(SQLITE_DLL)]
   386    393   #endif
   387    394       internal static extern int sqlite3_shutdown();
   388    395   

Changes to Tests/common.eagle.

   476    476         # NOTE: Delete the test database file now.  For now, all test database
   477    477         #       files are stored in the temporary directory.
   478    478         #
   479    479         catch {file delete [file join [getTemporaryPath] [file tail $fileName]]}
   480    480       }
   481    481   
   482    482       proc reportSQLiteResources { channel } {
   483         -      tputs $channel "---- memory now in use by SQLite... "
          483  +      tputs $channel "---- current memory in use by SQLite... "
          484  +
          485  +      if {[catch {object invoke -flags +NonPublic \
          486  +              System.Data.SQLite.UnsafeNativeMethods \
          487  +              sqlite3_memory_used} memory] == 0} then {
          488  +        tputs $channel [appendArgs $memory " bytes\n"]
          489  +      } else {
          490  +        #
          491  +        # NOTE: Maybe the SQLite native library is unavailable?
          492  +        #
          493  +        tputs $channel unknown\n
          494  +      }
          495  +
          496  +      tputs $channel "---- maximum memory in use by SQLite... "
   484    497   
   485    498         if {[catch {object invoke -flags +NonPublic \
   486         -              System.Data.SQLite.UnsafeNativeMethods sqlite3_memory_used} \
   487         -              memory] == 0} then {
          499  +              System.Data.SQLite.UnsafeNativeMethods \
          500  +              sqlite3_memory_highwater 0} memory] == 0} then {
   488    501           tputs $channel [appendArgs $memory " bytes\n"]
   489    502         } else {
   490    503           #
   491    504           # NOTE: Maybe the SQLite native library is unavailable?
   492    505           #
   493    506           tputs $channel unknown\n
   494    507         }

Changes to Tests/tkt-7e3fa93744.eagle.

    83     83       FROM t1, t2 \
    84     84       ORDER BY t1.id1, t2.id1, t2.id2; \
    85     85     }
    86     86   
    87     87     unset -nocomplain results errors
    88     88   
    89     89     set code [compileCSharpWith [subst {
    90         -    using System;
    91     90       using System.Data;
    92     91       using System.Data.SQLite;
    93     92   
    94     93       namespace _Dynamic${id}
    95     94       {
    96     95         public class Test${id}
    97     96         {

Changes to readme.htm.

   192    192   <p>
   193    193       <b>1.0.77.0 - November XX, 2011</b>
   194    194   </p>
   195    195   <ul>
   196    196       <li>Updated to SQLite 3.7.9 <a href="http://www.sqlite.org/src/info/c7c6050ef0">[c7c6050ef0]</a>.</li>
   197    197       <li>More enhancements to the build and test automation.</li>
   198    198       <li>Support building the core System.Data.SQLite assemblies using the .NET Framework 4.0 Client Profile. Fix for [566f1ad1e4].</li>
          199  +    <li>When generating the schema based on the contents of a SQLiteDataReader, skip flagging columns as unique if the data reader is holding the result of some kind of multi-table construct (e.g. a cross join) because we must allow duplicate values in that case. Fix for [7e3fa93744].</li>
   199    200       <li>When returning schema information that may be used by the .NET Framework to construct dynamic SQL, use a fake schema name (instead of null) so that the table names will be properly qualified with the catalog name (i.e. the attached database name). Partial fix for [343d392b51].</li>
          201  +    <li>Add MemoryUsed and MemoryHighwater properties to the SQLiteConnection class to help determine the memory usage of SQLite.</li>
   200    202       <li>Add DateTimeKind connection string property to control the DateTimeKind of parsed DateTime values. Partial fix for [343d392b51].</li>
   201    203       <li>Improve the robustness of the SQLiteLog class when it will be initialized and unloaded multiple times.</li>
   202    204       <li>Fix the name of the interop assembly for Windows CE. Add unit tests to prevent this type of issue from happening again. Fix for [737ca4ff74].</li>
   203    205       <li>Formally support the SQL type name BOOLEAN in addition to BOOL. Fix for [544dba0a2f].</li>
   204    206       <li>Make sure the SQLiteConvert.TypeNameToDbType method is thread-safe. Fix for [84718e79fa].</li>
   205    207   </ul>
   206    208   <p>

Changes to www/news.wiki.

     5      5   <p>
     6      6       <b>1.0.77.0 - November XX, 2011</b>
     7      7   </p>
     8      8   <ul>
     9      9       <li>Updated to SQLite 3.7.9 <a href="http://www.sqlite.org/src/info/c7c6050ef0">[c7c6050ef0]</a>.</li>
    10     10       <li>More enhancements to the build and test automation.</li>
    11     11       <li>Support building the core System.Data.SQLite assemblies using the .NET Framework 4.0 Client Profile. Fix for [566f1ad1e4].</li>
           12  +    <li>When generating the schema based on the contents of a SQLiteDataReader, skip flagging columns as unique if the data reader is holding the result of some kind of multi-table construct (e.g. a cross join) because we must allow duplicate values in that case. Fix for [7e3fa93744].</li>
    12     13       <li>When returning schema information that may be used by the .NET Framework to construct dynamic SQL, use a fake schema name (instead of null) so that the table names will be properly qualified with the catalog name (i.e. the attached database name). Partial fix for [343d392b51].</li>
           14  +    <li>Add MemoryUsed and MemoryHighwater properties to the SQLiteConnection class to help determine the memory usage of SQLite.</li>
    13     15       <li>Add DateTimeKind connection string property to control the DateTimeKind of parsed DateTime values. Partial fix for [343d392b51].</li>
    14     16       <li>Improve the robustness of the SQLiteLog class when it will be initialized and unloaded multiple times.</li>
    15     17       <li>Fix the name of the interop assembly for Windows CE. Add unit tests to prevent this type of issue from happening again. Fix for [737ca4ff74].</li>
    16     18       <li>Formally support the SQL type name BOOLEAN in addition to BOOL. Fix for [544dba0a2f].</li>
    17     19       <li>Make sure the SQLiteConvert.TypeNameToDbType method is thread-safe. Fix for [84718e79fa].</li>
    18     20   </ul>
    19     21   <p>