System.Data.SQLite
Check-in [425f258bee]
Not logged in

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

Overview
Comment:Update for release.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 425f258bee8fe8069b42699713fb0dc437eadb29
User & Date: shaneh 2011-04-13 02:46:29
Context
2011-04-13
02:57
More updates to features list. check-in: 62f4222cb5 user: shaneh tags: trunk
02:46
Update for release. check-in: 425f258bee user: shaneh tags: trunk
02:00
Fix issue where parens in a command would mess up IF-THEN parsing in batch file. check-in: 72b3ddb5fd user: shaneh tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to readme.htm.

     1      1   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2      2   <html>
     3         -  <head>
     4         -    <title></title>
     5         -  </head>
     6         -  <body>
     7         -    ADO.NET 4.0 SQLite Data Provider<br>
     8         -    Version 1.0.67.0 January 3, 2011<br>
     9         -    Using SQLite 3.7.4<br>
    10         -    Written by Robert Simpson (<a href="mailto:robert@blackcastlesoft.com">robert@blackcastlesoft.com</a>)<br>
    11         -    Released to the public domain, use at your own risk!<br>
    12         -    Official provider website:&nbsp; <a href="http://sqlite.phxsoftware.com">http://sqlite.phxsoftware.com</a><br />
    13         -    <br>
    14         -    The latest version can be downloaded <a href="http://sourceforge.net/projects/sqlite-dotnet2">
    15         -      here</a>
    16         -    <br>
    17         -    <br>
    18         -    <b></b>
    19         -    <h2>
    20         -      <b>Features:</b><br>
    21         -    </h2>
    22         -    <UL>
    23         -      <LI>
    24         -      Written from scratch on VS2008 specifically for ADO.NET 2.0, implementing all the
    25         -      base classes and features recently introduced in the framework, including automatic
    26         -      transaction enlistment.<li>Supports the Full
    27         -        and Compact .NET Framework, and native C/C++ development.&nbsp; 100% binary
    28         -        compatible with the original sqlite3.dll.</li>
    29         -      <li>Full support for Mono via a &quot;managed only&quot; provider that runs against the 
    30         -        official SQLite 3.6.1 or higher library.</li>
    31         -      <li>Full Entity Framework support (ADO.NET 3.5 SP1)</li>
    32         -      <LI>
    33         -      On the Compact Framework, it is faster than Sql Server 
    34         -      Mobile.  SQLite's installed size is a fraction of Sql Mobile's. It uses less memory at runtime, runs queries faster, and has a smaller database file size as well.
    35         -      <li>Encrypted database support.&nbsp; Encrypted databases are fully encrypted and
    36         -        support both binary and cleartext password types.</li>
    37         -      <LI>
    38         -      Visual Studio 2005/2008 Design-Time Support, works with all versions of VS2005/2008,
    39         -        including
    40         -      all Express Editions of VS2005.&nbsp; You can add a SQLite 
    41         -      database to the Servers list, design queries with the Query Designer, 
    42         -      drag-and-drop tables onto a Typed DataSet, etc.<LI>
    43         -        Full SQLite schema editing inside Visual Studio.&nbsp;
    44         -        You can create/edit tables, views, triggers, indexes, check constraints and foreign keys.<LI>
    45         -      Single file redistributable (except on Compact Framework).&nbsp; The core sqlite3 codebase and the ADO.NET wrapper 
    46         -      are combined into one multi-module assembly.
    47         -      <LI>
    48         -              Binaries included for Itanium, x64, x86 and ARM processors.<LI>
    49         -      DbProviderFactory support.
    50         -      <LI>
    51         -        Full support for ATTACH'ed databases.&nbsp; Exposed as <I>Catalogs</I>
    52         -      in the schema.&nbsp; When cloning a connection, all attached databases are 
    53         -      automatically re-attached to the new connection.
    54         -      <LI>
    55         -        DbConnection.GetSchema(...) support includes <I>ReservedWords, MetaDataCollections</I>, <I>DataSourceInformation</I>,
    56         -        <I>DataTypes, Columns</I>, <I>Tables</I>, <I>Views, ViewColumns, </I><I>Catalogs, </I><I>Indexes, 
    57         -          IndexColumns, </I><EM>ForeignKeys </EM>and<EM> Triggers</EM>.
    58         -      <LI>
    59         -      Enhanced DbDataReader.GetSchemaTable() functionality returns catalog, namespace 
    60         -      and detailed schema information even for complex queries.
    61         -      <LI>
    62         -      Named and unnamed parameters.
    63         -      <LI>
    64         -      Full UTF-8 and UTF-16 support, each with optimized pipelines into the native 
    65         -      database core.
    66         -      <LI>
    67         -      Multiple simultaneous DataReaders (one DataReader per Command however).
    68         -      <LI>
    69         -      Full support for user-defined scalar and aggregate functions, encapsulated into 
    70         -      an easy-to-use base class in which only a couple of overrides are necessary to 
    71         -      implement new SQL functions.
    72         -      <LI>
    73         -      Full support for user-defined collating sequences, every bit as simple to 
    74         -      implement as user-defined functions and uses the same base class.
    75         -      <LI>
    76         -        Full source for the entire engine and wrapper.&nbsp; No copyrights.&nbsp; 
    77         -        Public Domain.&nbsp; 100% free for commercial and non-commercial use.&nbsp;</LI></UL>
    78         -    <strong></strong>
    79         -    <h2>
    80         -      <strong>Design-Time Support</strong></h2>
    81         -    <P>
    82         -      In Windows Explorer, navigate to the <STRONG>SQLite.NET\bin\Designer</STRONG>
    83         -        folder and execute the <STRONG>INSTALL.EXE</STRONG>
    84         -      file.&nbsp; The program will
    85         -      automatically detect what version(s) of Visual Studio 2005/2008 are installed and allow
    86         -      you to selectively install and uninstall the designer for each edition.</P>
    87         -    <H2><STRONG>DbFactory Support (Non-Compact Framework)</STRONG></H2>
    88         -    In order to use the SQLiteFactory and have the SQLite data provider enumerated 
    89         -    in the DbProviderFactories methods, you must add the following segment into your application's app.config file:<br>
    90         -    <br>
    91         -    <pre>&lt;configuration&gt;
    92         -  &lt;system.data&gt;
    93         -    &lt;DbProviderFactories&gt;
    94         -      &lt;remove invariant="System.Data.SQLite"/&gt;
    95         -      &lt;add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"<BR > type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /&gt;
    96         -    &lt;/DbProviderFactories&gt;
    97         -  &lt;/system.data&gt;
            3  +<head>
            4  +<title></title>
            5  +</head>
            6  +<body>
            7  +ADO.NET 2.0 SQLite Data Provider<br />
            8  +Version 1.0.69.0 April 12, 2011<br />
            9  +Using SQLite 3.7.6<br />
           10  +Originally written by Robert Simpson<br />
           11  +Released to the public domain, use at your own risk!<br />
           12  +Official provider website:&nbsp; <a href="http://system.data.sqlite.org">http://system.data.sqlite.org</a><br />
           13  +Legacy versions:&nbsp; <a href="http://sqlite.phxsoftware.com">http://sqlite.phxsoftware.com</a><br />
           14  +<br />
           15  +The current development version can be downloaded from <a href="http://system.data.sqlite.org/index.html/timeline?n=20&y=ci">
           16  +http://system.data.sqlite.org/index.html/timeline?n=20&y=ci</a>
           17  +<br />
           18  +<br />
           19  +
           20  +<h2><b>Features</b></h2>
           21  +
           22  +<ul>
           23  +<li>Written from scratch on VS2008 specifically for ADO.NET 2.0, implementing all
           24  +the base classes and features recently introduced in the framework, including automatic
           25  +transaction enlistment.<li>Supports the Full and Compact .NET Framework, and native
           26  +C/C++ development.&nbsp; 100% binary compatible with the original sqlite3.dll.<br />
           27  +<font color="red">Compact framework not currently not included. We hope to have
           28  +this feature included again soon.</font></li>
           29  +
           30  +<li>Full support for Mono via a &quot;managed only&quot; provider that runs against
           31  +the official SQLite 3.6.1 or higher library.</li>
           32  +
           33  +<li>Full Entity Framework support (ADO.NET 3.5 SP1)</li>
           34  +
           35  +<li>On the Compact Framework, it is faster than Sql Server Mobile. SQLite's installed
           36  +size is a fraction of Sql Mobile's. It uses less memory at runtime, runs queries
           37  +faster, and has a smaller database file size as well. <font color="red">Compact
           38  +framework not currently not included. We hope to have this feature included again
           39  +soon.</font>
           40  +
           41  +<li>Encrypted database support.&nbsp; Encrypted databases are fully encrypted and
           42  +support both binary and cleartext password types.</li>
           43  +
           44  +<li>Visual Studio 2005/2008 Design-Time Support, works with all versions of VS2005/2008,
           45  +including all Express Editions of VS2005.&nbsp; You can add a SQLite database to
           46  +the Servers list, design queries with the Query Designer, drag-and-drop tables onto
           47  +a Typed DataSet, etc.<li>Full SQLite schema editing inside Visual Studio.&nbsp;
           48  +You can create/edit tables, views, triggers, indexes, check constraints and foreign
           49  +keys.<br />
           50  +<font color="red">Currently not included.  We are still updating the Design-Time
           51  +support installer.</font>
           52  +</li>
           53  +
           54  +<li>Single file redistributable (except on Compact Framework).&nbsp; The core
           55  +sqlite3 codebase and the ADO.NET wrapper are combined into one multi-module assembly.<br />
           56  +<font color="red">Currently all versions provided as System.Data.SQLite.dll and SQLite.Interop.dll.
           57  +This provides consistency across all packages, including Compact and Mono.</font>
           58  +</li>
           59  +
           60  +<li>Binaries included for Itanium, x64, x86 and ARM processors.<br />
           61  +<font color="red">Currently only x64 and x86 included.  
           62  +We hope to have more processors included again soon.</font>
           63  +</li>
           64  +
           65  +<li>DbProviderFactory support</li>
           66  +
           67  +<li>Full support for ATTACH'ed databases.&nbsp; Exposed as <i>Catalogs</i> in the
           68  +schema.&nbsp; When cloning a connection, all attached databases are automatically
           69  +re-attached to the new connection.
           70  +</li>
           71  +
           72  +<li>DbConnection.GetSchema(...) support includes <i>ReservedWords, MetaDataCollections</i>,
           73  +<i>DataSourceInformation</i>, <i>DataTypes, Columns</i>, <i>Tables</i>, <i>Views,
           74  +ViewColumns, </i><i>Catalogs, </i><i>Indexes, IndexColumns, </i><em>ForeignKeys
           75  +</em>and<em> Triggers</em>.
           76  +
           77  +<li>Enhanced DbDataReader.GetSchemaTable() functionality returns catalog, namespace
           78  +and detailed schema information even for complex queries.
           79  +
           80  +<li>Named and unnamed parameters.
           81  +
           82  +<li>Full UTF-8 and UTF-16 support, each with optimized pipelines into the native
           83  +database core.
           84  +
           85  +<li>Multiple simultaneous DataReaders (one DataReader per Command however).
           86  +
           87  +<li>Full support for user-defined scalar and aggregate functions, encapsulated into
           88  +an easy-to-use base class in which only a couple of overrides are necessary to implement
           89  +new SQL functions.
           90  +
           91  +<li>Full support for user-defined collating sequences, every bit as simple to implement
           92  +as user-defined functions and uses the same base class.
           93  +
           94  +<li>Full source for the entire engine and wrapper.&nbsp; No copyrights.&nbsp; Public
           95  +Domain.&nbsp; 100% free for commercial and non-commercial use.&nbsp;</li>
           96  +
           97  +</ul>
           98  +
           99  +<h2><strong>Design-Time Support</strong></h2>
          100  +<font color="red">Currently not included.  We are still updating the Design-Time
          101  +support installer.</font>
          102  +<p>
          103  +In Windows Explorer, navigate to the <strong>SQLite.NET\bin\Designer</strong> folder
          104  +and execute the <strong>INSTALL.EXE</strong> file.&nbsp; The program will automatically
          105  +detect what version(s) of Visual Studio 2005/2008 are installed and allow you to
          106  +selectively install and uninstall the designer for each edition.</p>
          107  +<h2>
          108  +<strong>DbFactory Support (Non-Compact Framework)</strong></h2>
          109  +In order to use the SQLiteFactory and have the SQLite data provider enumerated in
          110  +the DbProviderFactories methods, you must add the following segment into your application's
          111  +app.config file:<br />
          112  +<pre>
          113  +&lt;configuration&gt;
          114  +    &lt;system.data&gt;
          115  +        &lt;DbProviderFactories&gt;
          116  +            &lt;remove invariant="System.Data.SQLite" /&gt;
          117  +            &lt;add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
          118  +                 type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /&gt;
          119  +        &lt;/DbProviderFactories&gt;
          120  +    &lt;/system.data&gt;
    98    121   &lt;/configuration&gt;
    99    122   </pre>
   100         -    <p>See the help documentation for further details on implementing both version-specific (GAC enabled) and version independent DBProviderFactories support.
   101         -      </p>
   102         -    <h3>
   103         -      Compiling for the Compact Framework</h3>
   104         -    <p>
   105         -      Just change the target platform from Win32 to Compact Framework and 
   106         -      recompile.&nbsp; <STRONG>The Compact Framework has no support for enumerating 
   107         -        attributes in an assembly, therefore all user-defined collating sequences and 
   108         -        functions must be explicitly registered.</STRONG>&nbsp; See the <STRONG>testce</STRONG>
   109         -      sample application for an example of how to explicitly register user-defined 
   110         -      collating sequences and functions.</p>
   111         -    <h2>
   112         -      <b><A name="redist"></A>Distributing The SQLite Engine and ADO.NET Assembly</b></h2>
   113         -    <P>
   114         -      On the desktop, only the <STRONG>System.Data.SQLite.DLL</STRONG> file needs to be distributed with your 
   115         -      application(s).&nbsp; This DLL contains both the managed wrapper and the native 
   116         -      SQLite3 codebase.&nbsp; For the Compact Framework, you will have to distribute 
   117         -      both the CF version of System.Data.SQLite.DLL, as well as the 
   118         -      SQLite.Interop.XXX.DLL.&nbsp; This is a breaking change as of 1.0.59.0.&nbsp; 
   119         -      Recent Windows Mobile frameworks are not supporting the mixed CF assembly I was 
   120         -      building prior to this version.</P>
   121         -    <H2><B>Development Notes Regarding the SQLite 3 Source Code</B></H2>
   122         -    <p>
   123         -      The core sqlite engine is compiled directly from the unmodified source code available
   124         -      at the sqlite.org website.&nbsp; Several additional pieces are compiled on top of
   125         -      it to extend its functionality, but the core engine's source is not changed.</p>
   126         -    <p></p>
   127         -    <p>
   128         -      <b>Version History</b></p>
   129         -    <p><b>1.0.67.0 - January 3, 2011</b></p>
   130         -    <ul>
   131         -      <li>Code merge with SQLite 3.7.4</li>
   132         -      <li>Continuing work on supporting Visual Studio 2010</li>
   133         -    </ul>
   134         -    <p><b>1.0.66.1 - August 1, 2010</b></p>
   135         -    <ul>
   136         -      <li>Code merge with SQLite 3.7.0.1</li>
   137         -      <li>Re-enabled VS2005 designer support, broken in previous versions during the 2008 transition</li>
   138         -      <li>Implemented new forms of Take/Skip in the EF framework courtesy jlsantiago</li>
   139         -      <li>Added "Foreign Keys" to the connection string parameters</li>
   140         -      <li>Added the Truncate option to the Journal Modes enumeration</li>
   141         -    </ul>
   142         -    <p><b>1.0.66.0 - April 18, 2010</b></p>
   143         -    <ul>
   144         -      <li>Code merge with SQLite 3.6.23.1</li>
   145         -      <li>Fixed a bug in the installer that accidentally modified the machine.config on .NET versions prior to 2.0, invaliding the config file.</li>
   146         -      <li>Fixed INTERSECT and EXCEPT union query generation in EF</li>
   147         -      <li>Fixed an out of memory error in the trigger designer in cases where a WHEN clause is used in the trigger</li>
   148         -    </ul>
   149         -    <p><b>1.0.65.0 - July 26, 2009</b></p>
   150         -    <ul>
   151         -      <li>Fixed a bug in the encryption module to prevent a double free() when rekeying a database.</li>
   152         -      <li>Fixed a bug in the encryption module when ATTACHing an encrypted database.</li>
   153         -      <li>Incorporated the WinCE locking fix from ticket
   154         -        <a href="http://www.sqlite.org/cvstrac/tktview?tn=3991">#3991</a></li>
   155         -      <li>Added &quot;bigint&quot; to the dropdown in the table designer, plus other minor table 
   156         -        designer bugfixes.</li>
   157         -    </ul>
   158         -    <p><b>1.0.64.0 - July 9, 2009</b></p>
   159         -    <ul>
   160         -      <li>Fixed the missing resources problem from the 63 release.</li>
   161         -      <li>Added preliminary support for the Visual Studio 2010 beta.</li>
   162         -      <li>Fixed a bug in SQLiteCommand that threw a null reference exception when 
   163         -        setting the Transaction object to null.</li>
   164         -      <li>If SQLiteConnection.EnlistTransaction is called multiple times for the same 
   165         -        transaction scope, just return without throwing an error.</li>
   166         -    </ul>
   167         -    <p><b>1.0.63.0 - June 29, 2009</b></p>
   168         -    <ul>
   169         -      <li>Code merge with SQLite 3.6.16</li>
   170         -      <li>Check the autocommit mode of the connection to which a transaction is bound 
   171         -        during the disposal of the transaction.&nbsp; If autocommit is enabled, then the 
   172         -        database has already rolled back the transaction and we don&#39;t need to do it 
   173         -        during dispose, and can quietly ignore the step without throwing an error.</li>
   174         -      <li>Eliminated the mergebin step altogether.&nbsp; It was developed primarily to 
   175         -        merge the Compact Framework binaries together, but since we&#39;re not doing that 
   176         -        anymore, its use is limited.&nbsp; Its non-standard method of merging a binary 
   177         -        on the desktop framework is redundant as well.&nbsp; The desktop binary now 
   178         -        hard-links to MSCOREE, but as of Windows XP, this was redundant as well since XP 
   179         -        and beyond automatically attempt to load MSCOREE on startup when a DLL has a 
   180         -        .NET header.</li>
   181         -      <li>More improvements to the test.exe program for running the tests against Sql 
   182         -        Server for comparison purposes.</li>
   183         -    </ul>
   184         -    <p><b>1.0.62.0 - June 19, 2009</b></p>
   185         -    <ul>
   186         -      <li>Code merge with SQLite 3.6.15</li>
   187         -      <li>Fixed the decimal reading bug in the SQLiteDataReader</li>
   188         -      <li>Changed Join()&#39;s to Sleep()&#39;s in the statement retry code to prevent message 
   189         -        pumping</li>
   190         -      <li>Fixed a bad pointer conversion when retrieving blobs using GetBytes() in 
   191         -        64-bit land</li>
   192         -      <li>Several changes to the Test program that comes with the provider.&nbsp; Tests 
   193         -        can now be individually disabled, and the test program can run against several 
   194         -        provider back-ends</li>
   195         -    </ul>
   196         -    <p><b>1.0.61.0 - April 28, 2009</b></p>
   197         -    <ul>
   198         -      <li>Code merge with SQLite 3.6.13.  The new backup features are as yet unimplemented in the provider, but will be forthcoming in a subsequent release</li>
   199         -      <li>Fixed the default-value lookups in SQLiteConnectionStringBuilder when accessing properties</li>
   200         -      <li>Lock the SQLiteTransaction object during dispose to avoid potential race condition during cleanup</li>
   201         -      <li>Fixed SQLiteDataReader.GetDecimal() processing and parsing of decimal values for cases when SQLite returns things like "1.0e-05" instead of "0.0001"</li>
   202         -    </ul>
   203         -    <p><b>1.0.60.0 - October 3, 2008</b></p>
   204         -    <ul>
   205         -      <li>Throw a NotSupported exception in the EF Sql Gen code instead of parsing 
   206         -        illegal SQL during an update/insert/delete where no primary key is defined.</li>
   207         -      <li>Fixed the Compact Framework interop library.&nbsp; Since the linker flag 
   208         -        /subsystem had no version specified, it was causing a problem for many CE-based 
   209         -        platforms.</li>
   210         -      <li>Incorporated SQLite patch for ticket
   211         -        <a href="http://www.sqlite.org/cvstrac/tktview?tn=3387">#3387</a> and reverted 
   212         -        out the vfs override code I added in build 59 to work around this problem.</li>
   213         -      <li>Fixed a designer issue when creating a new table from the Server Explorer.&nbsp; 
   214         -        After initially saving it, if you then continued to edit it and tried to save it 
   215         -        again, it would generate the change SQL using the old temporary table name 
   216         -        rather than the new name.</li>
   217         -    </ul>
   218         -    <p><b>1.0.59.0 - September 22, 2008</b></p>
   219         -    <ul>
   220         -      <li>Code merge with SQLite 3.6.3.&nbsp; Solves 
   221         -        a couple different EF issues that were either giving inconsistent results or 
   222         -        crashing the engine.</li>
   223         -      <li>Fixed the parsing of literal binaries in the EF SqlGen code.&nbsp; SQLite now 
   224         -        passes nearly all the testcases in 
   225         -        <a href="http://sqlite.phxsoftware.com/forums/p/1377/5921.aspx#5921">Microsoft's EF Query Samples</a> application -- 
   226         -        the exception being the <i>datetimeoffset </i>and<i> time</i> constants tests, and tests 
   227         -        that use the <i>APPLY </i>keyword which are unsupported for now.</li>
   228         -      <li>Revamped the Compact Framework mixed-mode assembly.&nbsp; Tired of playing cat 
   229         -        and mouse with the Compact Framework&#39;s support for mixed-mode assemblies.&nbsp; 
   230         -        The CF build now requires that you distribute both the System.Data.SQLite 
   231         -        library and the paired SQLite.Interop.XXX library.&nbsp;&nbsp; The XXX denotes 
   232         -        the build number of the library.</li>
   233         -      <li>Implemented a workaround for Vista&#39;s overzealous caching by turning off 
   234         -        FILE_FLAG_RANDOM_ACCESS for OS versions above XP.&nbsp; This is implemented 
   235         -        as a custom (default override) VFS in the interop.c file, so no changes are made 
   236         -        to the SQLite source code.</li>
   237         -      <li>Fixed some registry issues in the designer install.exe, which prevented some 
   238         -        design-time stuff from working on the Compact Framework when .NET 3.5 was 
   239         -        installed.</li>
   240         -    </ul>
   241         -    <p><b>1.0.58.0 - August 30, 2008</b></p>
   242         -    <ul>
   243         -      <li>Code merge with SQLite 3.6.2.&nbsp; If only I&#39;d waited one more day to release 
   244         -        57!&nbsp; Several LINQ issues have been resolved with this engine release 
   245         -        relating to deeply-nested subqueries that the EF SqlGen creates.</li>
   246         -      <li>The Rollback SQLiteConnection event no longer requires an open connection in 
   247         -        order to subscribe to it.&nbsp; Missed this one in the 57 release.</li>
   248         -    </ul>
   249         -    <p><b>1.0.57.0 - August 29, 2008</b></p>
   250         -    <ul>
   251         -      <li>Compiled against 3.6.1 with checkin
   252         -        <a href="http://www.sqlite.org/cvstrac/tktview?tn=3300">#3300</a> resolved, 
   253         -        which fixes an Entity Framework bug I was seeing.&nbsp; I currently have 3 other 
   254         -        tickets out on the engine, which are not yet resolved and relate to EF.</li>
   255         -      <li>Fixed decimal types to store and fetch using InvariantCulture.&nbsp; If you&#39;re 
   256         -        using decimal datatypes in your database and were affected by the 56 release, 
   257         -        please issue an UPDATE &lt;table&gt; SET &lt;column&gt; = REPLACE(&lt;column&gt;, &#39;,&#39;, &#39;.&#39;);&nbsp; 
   258         -        to fix the decimal separators.&nbsp; Apologies for not testing that more 
   259         -        thoroughly before releasing 56.</li>
   260         -      <li>Too many LINQ fixes to list.&nbsp; Fixed views so they generate, 
   261         -        fixed the LIMIT clause, implemented additional functionality and removed unnecessary code.</li>
   262         -      <li>Fixed foreign key names in the designer so viewing the SQL script on a new 
   263         -        unsaved table after renaming it in the properties toolwindow will reflect in the 
   264         -        script properly.</li>
   265         -      <li>Fixed the Update and Commit events on SQLiteConnection so they don&#39;t require 
   266         -        the connection to be opened first.</li>
   267         -      <li>Fixed userdef aggregate functions so they play nice with each other when 
   268         -        appearing multiple times in the same statement.</li>
   269         -      <li>Fixed the editing and saving of default values in the table designer.</li>
   270         -      <li>Fixed ForeignKeys schema to support multi-column foreign keys.&nbsp; Also 
   271         -        hacked support for them in the table designer, provided two foreign keys in the 
   272         -        designer have the same name and reference the same foreign table and different 
   273         -        columns.&nbsp; Will implement first-class support for this in the next release.</li>
   274         -    </ul>
   275         -    <p><b>1.0.56.0 - August 11, 2008</b></p>
   276         -    <ul>
   277         -      <li>Fixed a bug in the table designer when designing new tables, wherein you had to 
   278         -        save the table first before being able to create indexes and foreign keys.</li>
   279         -      <li>Tweaks to decimal type handling.&nbsp; The &#39;decimal&#39; type can&#39;t be represented 
   280         -        by Int64 or Double (without loss of precision) in SQLite, so we have to fudge it 
   281         -        by treating it like a string and converting it back and forth in the provider.&nbsp; 
   282         -        Unfortunately backing it to the db as a string causes sorting problems.&nbsp; 
   283         -        See <a href="http://sqlite.phxsoftware.com/forums/p/1296/5595.aspx#5595">this 
   284         -        post</a> 
   285         -        for details on using a custom collation sequence to overcome the sorting issue arising from this patch.</li>
   286         -      <li>Minor tweaks and bugfixes to the test program and the provider.</li>
   287         -      <li>More adjustments to make the managed-only version of the provider run and pass 
   288         -        all tests on Mono.</li>
   289         -      <li>LINQ to Entities bits heavily updated and compiled against VS2008 SP1 RTM.&nbsp; SQLite 
   290         -        LINQ support is still considered beta.</li>
   291         -    </ul>
   292         -    <p><b>1.0.55.0 - August 6, 2008</b></p>
   293         -    <ul>
   294         -      <li>Code merge with SQLite 3.6.1</li>
   295         -      <li>Added support for the user-contributed extension-functions at
   296         -        <a href="http://www.sqlite.org/contrib">http://www.sqlite.org/contrib</a>.&nbsp; 
   297         -        Feel free to override any of them with your own implementation.&nbsp; The new 
   298         -        functions are: <i>acos, asin, atan, atn2, atan2, acosh, asinh, atanh, 
   299         -        difference, degrees, radians, cos, sin, tan, cot, cosh, sinh, tanh, coth, exp, 
   300         -        log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate, charindex, 
   301         -        leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter,</i> and 
   302         -        aggregates <i>stdev, variance, mode, median, lower_quartile, upper_quartile.</i></li>
   303         -      <li>Moved the last_rows_affected() function to the C extension library.</li>
   304         -      <li>Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the 
   305         -        ability for a user-defined function to get the collating sequence during the 
   306         -        Invoke/Step methods.&nbsp; User-defined functions can use the collating sequence 
   307         -        as a helper to compare values.</li>
   308         -      <li>When registering user-defined collation sequences and functions, the provider 
   309         -        will now register both a UTF8 and a UTF16 version instead of just UTF8.</li>
   310         -      <li>Revamped connection pooling and added static ClearPool() and ClearAllPools() 
   311         -        functions to SQLiteConnection.&nbsp; Behavior of the pool and its clearing 
   312         -        mechanics match SqlClient.</li>
   313         -      <li>Fixed connections going to the pool so that any unfinalized lingering commands 
   314         -        from un-collected datareaders are automatically reset and any lurking 
   315         -        transactions made on the connection are rolled back.</li>
   316         -      <li>Transaction isolation levels are now partially supported.&nbsp; Serializable 
   317         -        is the default, which obtains read/write locks immediately -- this is compatible 
   318         -        with previous releases of the provider.&nbsp; Unspecified will default to 
   319         -        whatever the default isolation mode is set to, and ReadCommitted will cause a 
   320         -        deferred lock to be obtained.&nbsp; No other values are legal.</li>
   321         -      <li>Revamped the test.exe program.&nbsp; It&#39;s now an interactive GUI application.&nbsp; 
   322         -        Easier for me to add tests now.</li>
   323         -      <li>Tweaks to the VS designer package and installer.</li>
   324         -      <li>More adjustments to the internal SQLite3.Prepare() method to account for both 
   325         -        kinds of lock errors when retrying.</li>
   326         -      <li>Stripped a lot of unnecessary interop() calls and replaced with base sqlite calls.&nbsp; 
   327         -        Revamped most of UnsafeNativeMethods to make it easier to port the code.</li>
   328         -      <li>Rerigged internal callbacks for userdef functions and other native to managed 
   329         -        callbacks.&nbsp; More portable this way.</li>
   330         -      <li>Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol to 
   331         -        force the wrapper to use the stock sqlite3 library.&nbsp; Some functionality is 
   332         -        missing, but its minimal.&nbsp; None of the precompiled binaries are compiled 
   333         -        using this setting, but its useful for testing portability.</li>
   334         -      <li>Added &quot;boolean&quot; and a couple other missing datatypes to the &quot;DataTypes&quot; schema 
   335         -        xml file.&nbsp; Used by the VS designer when displaying tables and querying.</li>
   336         -      <li>Added a new connection string option &quot;Read Only&quot;.&nbsp; When set to True, the 
   337         -        database will be opened in read-only mode.</li>
   338         -      <li>Added a new connection string option &quot;Max Pool Size&quot; to set the maximum size 
   339         -        of the connection pool for a given db file connection.</li>
   340         -      <li>Added a new connection string option &quot;Default IsolationLevel&quot; to set the 
   341         -        default isolation level of transactions.&nbsp; Possible values are Serializable and 
   342         -        ReadCommitted.</li>
   343         -      <li>Added a new connection string option &quot;URI&quot; as an optional parameter for 
   344         -        compatibility with other ports of the provider.</li>
   345         -    </ul>
   346         -    <p><b>1.0.54.0 - July 25, 2008</b></p>
   347         -    <ul>
   348         -      <li>Fixed the setup project, which somehow &quot;forgot&quot; to include all the binaries in 
   349         -        the 53 release.</li>
   350         -      <li>Fixed a crash in the table designer when creating a new table and tabbing past 
   351         -        the &quot;Allow Nulls&quot; cell in the grid while creating a new column.</li>
   352         -      <li>Fixed a mostly-benign bug in SQLiteDataReader&#39;s GetEnumerator, which failed to 
   353         -        pass along a flag to the underyling DbEnumerator it creates.&nbsp; This one&#39;s 
   354         -        been around since day 1 and nobody&#39;s noticed it in all these years.</li>
   355         -      <li>Added a new connection string parameter &quot;Journal Mode&quot; that allows you to set 
   356         -        the SQLite journal mode to Delete, Persist or Off.</li>
   357         -    </ul>
   358         -    <p><b>1.0.53.0 - July 24, 2008</b></p>
   359         -    <ul>
   360         -      <li>Enabled sqlite_load_extension</li>
   361         -      <li>Added retry/timeout code to SQLite3.Prepare() when preparing statements for 
   362         -        execution and a SQLITE_BUSY error occurs.</li>
   363         -      <li>Added a new schema to SQLiteConnection.GetSchema() called <i>Triggers</i>.&nbsp; 
   364         -        Used to retrieve the trigger(s) associated with a database and/or table/view.</li>
   365         -      <li>Extensive updates to table/view editing capabilities inside Visual Studio&#39;s 
   366         -        Server Explorer.&nbsp; The program now parses and lets you edit CHECK constraints and 
   367         -        triggers on a table, as well as define triggers on views.&nbsp; Experimental 
   368         -        still, so e-mail me if you have issues.</li>
   369         -      <li>Minor bugfix to the ViewColumns schema to return the proper base column name 
   370         -        for a view that aliases a column.</li>
   371         -      <li>Fixed the insert/update/delete DML support in the Linq module.</li>
   372         -      <li>Changed the behavior of SQLiteCommand to allow a transaction to be set even if 
   373         -        the command hasn&#39;t been associated with a connection yet.</li>
   374         -    </ul>
   375         -    <p><b>1.0.52.0 - July 16, 2008</b></p>
   376         -    <ul>
   377         -      <li>Code merge with SQLite 3.6.0</li>
   378         -      <li>Added a lot of previously-missing exports to the DEF file for the 
   379         -        native library.</li>
   380         -      <li>Fixed SQLiteDataReader to check for an invalid connection before operating on 
   381         -        an open cursor.</li>
   382         -      <li>Implemented the Cancel() function of SQLiteCommand to cancel an active reader.</li>
   383         -      <li>Added beta table and view designers to the Visual Studio Server Explorer.&nbsp; You can now 
   384         -        edit/create tables and views, manage indexes and foreign keys from Visual Studio.&nbsp; 
   385         -        This feature is still undergoing testing so use at your own risk!</li>
   386         -      <li>Fixed the Server Explorer so VS2005 users can once again right-click tables 
   387         -        and views and open the table data.</li>
   388         -      <li>Added some new interop code to assist in returning more metadata not normally 
   389         -        available through the SQLite API.&nbsp; Specifically, index column sort modes 
   390         -        and collating sequences.&nbsp; Also added code to detect (but not parse) CHECK 
   391         -        constraints, so the table designer can pop up a warning when editing a table 
   392         -        with these constraints.&nbsp; Since I can&#39;t currently parse them.</li>
   393         -      <li>Lots of LINQ SQL generation improvements and fixes.</li>
   394         -      <li>Made some progress cleaning up and fixing up the schema definitions and 
   395         -        manifests for EdmGen.</li>
   396         -      <li>Added a built-in SQLiteFunction called last_rows_affected() which can be 
   397         -        called from SQL to get the number of rows affected by the last update/insert 
   398         -        operation on the connection.&nbsp; This is roughly equivalent to Sql Server&#39;s 
   399         -        @@ROWCOUNT variable.</li>      
   400         -    </ul>
   401         -    <p><b>1.0.51.0 - July 1, 2008</b></p>
   402         -    <ul>
   403         -      <li><b>VS2008 SP1 Beta1 LINQ Support</b></li>
   404         -      <li>Added experimental Entity Framework support in a new library, 
   405         -        System.Data.SQLite.Linq.&nbsp; Some things work, some don&#39;t.&nbsp; I haven&#39;t 
   406         -        finished rigging everything up yet.&nbsp; The core library remains stable.&nbsp; 
   407         -        All LINQ-specific code is completely separate from the core.</li>
   408         -      <li>Added some columns to several existing schemas to support some of the 
   409         -        EDM framework stuff.</li>
   410         -      <li>Minor tweaks to the factory to better support dynamic loading of the Linq 
   411         -        extension library for SQLite.</li>
   412         -      <li>SQLite&#39;s busy handler was interfering with the provider&#39;s busy handling 
   413         -        mechanism, so its been disabled.</li>
   414         -    </ul>
   415         -    <p><b>1.0.50.0 - June 27, 2008</b></p>
   416         -    <ul>
   417         -      <li>Fixed some lingering dispose issues and race conditions when some objects were finalized.</li>
   418         -      <li>Fixed the SQLiteConvert.Split() routine to be a little smarter when splitting 
   419         -        strings, which solves the quoted data source filename problem.</li>
   420         -      <li>Enhanced the mergebin utility to work around the strong name validation bug on 
   421         -        the Compact Framework.&nbsp; The old workaround kludged the DLL and caused WM6.1 
   422         -        to fail to load it.&nbsp; This new solution is permanent and no longer kludges 
   423         -        the DLL.</li>
   424         -    </ul>
   425         -    <p><b>1.0.49.0 - May 28, 2008</b></p>
   426         -    <ul>
   427         -      <li>Code merge with SQLite 3.5.9</li>
   428         -      <li>Fixed schema problems when querying the TEMP catalog.</li>
   429         -      <li>Changed BLOB datatype schema to return IsLong = False instead of True.&nbsp; This
   430         -        was preventing DbCommandBuilder from using GUID's and BLOB's as primary keys.</li>
   431         -      <li>Fix rollover issue with SQLite3.Reset() using TickCount.</li>
   432         -      <li>Fixed SQLiteDataReader to dispose of its command (if called for) before 
   433         -        closing the connection (when flagged to do so) instead of the other way around.</li>
   434         -      <li>Fixed a DbNull error when retrieving items not backed by a table schema.</li>
   435         -      <li>Fixed foreign key constraint parsing bug.</li>
   436         -      <li>Added FailIfMissing property to the SQLiteConnectionStringBuilder.</li>
   437         -      <li>Converted the source projects to Visual Studio 2008.</li>
   438         -    </ul>
   439         -    <p><b>1.0.48.0 - December 28, 2007</b></p>
   440         -    <ul>
   441         -      <li>Code merge with SQLite 3.5.4</li>
   442         -      <li>Calling SQLiteDataReader.GetFieldType() on a column with no schema information
   443         -        and whos first row is initially NULL now returns type Object instead of type DbNull.</li>
   444         -      <li>Added support for a new DateTime type, JulianDay.&nbsp; SQLite uses Julian dates
   445         -        internally.</li>
   446         -      <li>Added a new connection string parameter "Default Timeout" and a corresponding
   447         -        method on the SQLiteConnection object to change the default command timeout.&nbsp;
   448         -        This is especially useful for changing the timeout on transactions, which use SQLiteCommand
   449         -        objects internally and have no ADO.NET-friendly way to adjust the command timeout
   450         -        on those commands.</li>
   451         -      <li>FTS1 and FTS2 modules were removed from the codebase.&nbsp; Please upgrade all
   452         -        full-text indexes to use the FTS3 module.&nbsp;</li>
   453         -    </ul>
   454         -    <p><b>1.0.47.2 - December 10, 2007</b></p>
   455         -    <ul>
   456         -      <li>Fixed yet one more bug when closing a database with unfinalized command objects</li>
   457         -      <li>Fixed the DataReader's GetFieldType function when dealing with untyped SQLite affinities</li>
   458         -    </ul>
   459         -    <p><b>1.0.47.1 - December 5, 2007</b></p>
   460         -    <ul>
   461         -      <li>Fixed a leftover bug from the codemerge with SQLite 3.5.3 that failed to close a database.</li>
   462         -      <li>Fixed the broken Compact Framework distribution binary.</li>
   463         -      <li>SQLite 3.5.x changed some internal infrastructure pieces in the encryption interface
   464         -        which I didn't catch initially.&nbsp; Fixed.&nbsp;</li>
   465         -    </ul>
   466         -    <p><b>1.0.47.0 - December 4, 2007</b></p>
   467         -    <ul>
   468         -      <li>Code merge with SQLite 3.5.3</li>
   469         -      <li>Added installer support for Visual Studio 2008.&nbsp; Code is still using the
   470         -        VS2005 SDK so one or two bells and whistles are missing, but nothing significant.</li>
   471         -      <li>This is the last version that the FTS1 and FTS2 extensions will appear.&nbsp;
   472         -        Everyone should rebuild their fulltext indexes using the new FTS3 module.&nbsp;
   473         -        FTS1 and FTS2 suffer from a design flaw that could cause database corruption with
   474         -        certain vacuum operations.</li>
   475         -      <li>Fixed pooled connections so they rollback any outstanding transactions before
   476         -        going to the pool.&nbsp; </li>
   477         -      <li>Fixed the unintended breaking of the TYPES keyword, and mis-typing of untyped
   478         -        or indeterminate column types. </li>
   479         -      <li>Assert a FileIOPermission() requirement in the static SQLiteFunction constructor.
   480         -      </li>
   481         -      <li>The CE-only SQLiteFunction.RegisterFunction() is now available on the desktop
   482         -        platform for dynamic registration of functions.&nbsp; You must still close and re-open
   483         -        a connection in order for the new function to be seen by a connection.</li>
   484         -      <li>Fixed the "database is locked" errors by implementing behavioral changes in the
   485         -        interop.c file for SQLite.&nbsp; Closing a database force-finalizes any prepared
   486         -        statements on the database to ensure the connection is fully closed.&nbsp; This
   487         -        was rather tricky because the GC thread could still be finalizing statements itself.
   488         -        &nbsp;</li>
   489         -      <li>Modifed the mergebin utility to help circumvent a long-standing strong name verification
   490         -        bug in the Compact Framework.</li>
   491         -    </ul>
   492         -    <p><b>1.0.46.0 - September 30, 2007</b></p>
   493         -    <ul>
   494         -    <li>Fixed faulty logic in type discovery code when using SQLiteDataReader.GetValue().</li>
   495         -      <li>Fixed Connection.Open() bug when dealing with :memory: databases.</li>
   496         -      <li>Fixed SQLiteCommand.ExecuteScalar() to return a properly-typed value.</li>
   497         -      <li>Added support for SQLiteParameter.ResetDbType().</li>
   498         -      <li>Added test cases for rigid and flexible type testing.</li>
   499         -    </ul>
   500         -    <p><b>1.0.45.0 - September 25, 2007</b></p>
   501         -    <ul>
   502         -    <li><strong>Breaking change in GetSchema("Indexes") </strong>-- MetaDataCollections
   503         -      restrictions and identifier parts counts were wrong for this schema and I was using
   504         -      the wrong final parameter as the final restriction.&nbsp; Meaning, if you use the
   505         -      Indexes schema and are querying for a specific index the array should now be {catalog,
   506         -      null, table, index } instead of {catalog, null, table, null, index}</li>
   507         -      <li>Code merge with SQLite 3.4.2</li>
   508         -      <li>Fixed some errors in the encryption module, most notably when a non-default page
   509         -        size is specified in the connection string. </li>
   510         -      <li>Fixed SQLiteDataReader to better handle type-less usage scenarios, which also
   511         -        fixes problems with null values and datetimes.</li>
   512         -      <li>Fixed the leftover temp files problem on WinCE </li>
   513         -      <li>Added connection pooling.&nbsp; The default is disabled for now, but may change
   514         -      in the future.&nbsp; Set "Pooling=True" in the connection string to enable it. </li>
   515         -      <li>Sped up SQLiteConnection.Open() considerably.</li>
   516         -      <li>Added some more robust cleanup code regarding SQLiteFunctions.</li>
   517         -      <li>Minor additions to the code to allow for future LINQ integration into the main
   518         -        codebase.</li>
   519         -      <li>Fixed a long-standing bug in the Open() command of SQLiteConnection which failed
   520         -      to honor the documented default behavior of the SQLite.NET provider to open the
   521         -      database in "Synchronous=Normal" mode.&nbsp; The default was "Full". </li>
   522         -      <li>If Open() fails, it no longer sets the connection state to Broken.&nbsp; It instead
   523         -        reverts back to Closed, and cleans up after itself.</li>
   524         -      <li>Added several new parameters to the ConnectionString for setting max page count,
   525         -        legacy file format, and another called FailIfMissing to raise an error rather than
   526         -        create the database file automatically if it does not already exist.</li>
   527         -      <li>Fixed some designer toolbox references to the wrong version of the SQLite.Designer</li>
   528         -      <li>Fixed a bug in the mergebin utility with regards to COR20 metadata rowsize computations.&nbsp;
   529         -      </li>
   530         -      <li>Minor documentation corrections &nbsp;&nbsp;</li>
   531         -    </ul>
   532         -    <p><b>1.0.44.0 - July 21, 2007</b></p>
   533         -    <ul>
   534         -    <li>Code merge with SQLite 3.4.1</li>
   535         -      <li>Fixed a bug in SQLiteConnection.Open() which threw the wrong kind of error in
   536         -        the wrong kind of way when a database file could not be opened or created.&nbsp;</li>
   537         -      <li>Small enhancements to the TYPES keyword, and added documentation for it in the
   538         -        help file.</li>
   539         -      <li>Hopefully fixed the occasional SQLITE_BUSY errors that cropped up when starting
   540         -        a transaction.&nbsp; Usually occurred in high-contention scenarios, and the underlying
   541         -        SQLite engine bypasses the busy handler in this scenario to return immediately.</li>
   542         -    </ul>
   543         -    <p><b>1.0.43.0 - June 21, 2007</b></p>
   544         -    <ul>
   545         -    <li>Code merge with SQLite 3.4.0</li>
   546         -      <li>Fixed a reuse bug in the SQLiteDataAdapter in conjunction with the SQLiteCommandBuilder.&nbsp;
   547         -      It's been there unnoticed for more than a year, so it looks like most folks never
   548         -      encountered it. </li>
   549         -      <li>Fixed an event handler bug in SQLiteCommandBuilder in which it could fail to unlatch
   550         -        from the DataAdapter when reused.&nbsp; Relates to the previous bugfix.</li>
   551         -      <li>Fixed a double-dispose bug in SQLiteStatement that triggered a SQLiteException.&nbsp;</li>
   552         -    </ul>
   553         -    <p><b>1.0.42.0 - June 1, 2007</b></p>
   554         -    <ul>
   555         -    <li>Code merge with SQLite 3.3.17</li>
   556         -      <li>Changed the SQLiteFunction static constructor so it only enumerates loaded modules
   557         -        that have referenced the SQLite assembly, which hopefully should cut down dramatically
   558         -        the time it takes for that function to execute.&nbsp;</li>
   559         -      <li>Added the FTS2 full-text search extension to the project.&nbsp; Look for FTS1
   560         -        to disappear within the next couple of revisions.&nbsp;</li>
   561         -      <li>Fixed a bug introduced with the finalizers that triggered an error when statements
   562         -        ended with a semi-colon or had other non-parsable comments at the end of a statement&nbsp;</li>
   563         -      <li>Fixed an intermittent multi-threaded race condition between the garbage collector
   564         -        thread and the main application thread which lead to an occasional SQLITE_MISUSE
   565         -        error.</li>
   566         -      <li>Fixed another issue relating to SQLite's inherent typelessness when dealing with
   567         -        aggregate functions which could return Int64 or Double or even String for a given
   568         -        row depending on what was aggregated.</li>
   569         -      <li>Remembered to recompile the DDEX portion of the engine this time, so Compact Framework
   570         -        users can once again use the design-time functionality</li>
   571         -    </ul>
   572         -    <p><b>1.0.41.0 - April 23, 2007</b></p>
   573         -    <ul>
   574         -    <li>Code merge with SQLite 3.3.16</li>
   575         -      <li>Second go at implementing proper finalizers to cleanup after folks who've forgotten to Dispose() of the SQLite objects</li>
   576         -      <li>Enhanced GetSchema(IndexColumns) to provide numeric scale and precision values</li>
   577         -      <li>Fixed the column ordinals in GetSchema(IndexColumns) to report the ordinal of the column in the index, not the table</li>
   578         -      <li>Fixed a bug whereby parameters named with an empty string (such as String.Empty) were treated like a named parameter instead of an unnamed parameter</li>
   579         -    </ul>
   580         -    <p><b>1.0.40.0 - January 31, 2007</b></p>
   581         -    <ul>
   582         -    <li>Code merge with SQLite 3.3.12</li>
   583         -      <li>Lots of new code to handle misuse of the library.&nbsp; Implemented finalizers
   584         -        where it made sense, fixed numerous garbage collector issues when objects are not
   585         -        disposed properly, &nbsp;fixed some object lifetime issues, etc.</li>
   586         -      <li>A failed Commit() on a transaction no longer leaves the transaction in an unusable
   587         -        state.</li>
   588         -    </ul>
   589         -    <p><b>1.0.39.1 - January 11, 2007</b></p>
   590         -    <ul>
   591         -    <li>Fixed a really dumb mistake that for some reason didn't trigger any errors in
   592         -      the testcases, whereby commands when associated with a connection were not adding
   593         -      or removing themselves from an internal list of commands for that connection --
   594         -      causing a "database is locked" error when trying to close the connection.</li>
   595         -    </ul>
   596         -    <p><b>1.0.39.0 - January 10, 2007</b></p>
   597         -    <ul>
   598         -    <li>Code merge with SQLite 3.3.10</li>
   599         -      <li>Fixed a multi-threaded race condition bug in the garbage collector when commands
   600         -        and/or connections are not properly disposed by the user. </li>
   601         -      <li>Switched the encryption's internal deallocation code to use sqlite's built-in
   602         -        aux functions instead of modifying the pager.c source to free the crypt block.&nbsp;
   603         -        This eliminates the last of the code changes the provider makes to the original
   604         -        sqlite engine sources.&nbsp; Props to Ralf Junker for pointing that out.</li>
   605         -    </ul>
   606         -    <p><b>1.0.38.0 - November 22, 2006</b></p>
   607         -    <ul>
   608         -    <li>Fixed a bug when using CommandBehavior.KeyInfo whereby integer primary key columns may be duplicated in the results. </li>
   609         -      <li>Enhanced the CommandBuilder so that update/delete statements are optimized when the affected table contains unique constraints and
   610         -      a primary key is present.</li>
   611         -      <li>Fixed a bug in the DataReader when used in conjunction with CommandBehavior.CloseConnection.</li></ul>
   612         -    <p><b>1.0.37.0 - November 19, 2006</b></p>
   613         -    <ul>
   614         -    <li>Added support for CommandBehavior.KeyInfo.&nbsp; 
   615         -      When specified in a query, additional column(s) will be returned describing the
   616         -      key(s) defined for the table(s) selected in the query.&nbsp; This is optimized when
   617         -      INTEGER PRIMARY KEY is set for the given tables, but does additional work for other
   618         -      kinds of primary keys.</li>
   619         -      <li>Removed the default values from SQLiteDataReader.GetTableSchema(), to better follow
   620         -        Sql Server's pattern and suppress schema errors when loading the records into a
   621         -        dataset/datatable.</li>
   622         -      <li>Allow integers to implicitly convert to double/decimal/single.</li></ul>
   623         -    <p><b>1.0.36.1 - October 25, 2006</b></p>
   624         -    <ul>
   625         -    <li>Added support for LONGVARCHAR, SMALLDATE and SMALLDATETIME.  These were actually added in 1.0.36.0 but were undocumented.</li>
   626         -    <li>Fixed the embedded helpfile which was accidentally built from old sources. </li>
   627         -    <li>Fixed an unfortunate re-entry of a bug in the .36 codebase that caused the provider to "forget" about commands on a connection under certain circumstances.</li>
   628         -    </ul>
   629         -    <p><b>1.0.36.0 - October 23, 2006</b></p>
   630         -    <ul>
   631         -    <li>Code merge with SQLite 3.3.8, including support for full-text search via the FTS1
   632         -      extension.&nbsp;</li><li>Fixed a bug retrieving data types when UseUtf16Encoding is true.  Side-effect of further merging the common code between the two base classes.</li>
   633         -      <li>Fixed a bug with System.Transactions whereby a connection closed/disposed within
   634         -        a transaction scope is rolled back and cannot be committed.</li>
   635         -      <li>Added more error checking and reporting to transactions to help user's isolate
   636         -        the source of transaction failures.</li>
   637         -      <li>Implemented a workaround for a Compact Framework issue regarding strong-named
   638         -        assemblies containing a PE section with a raw size less than the virtual size.&nbsp;</li>
   639         -    </ul>
   640         -    <p><b>1.0.35.1 - September 12, 2006</b></p>
   641         -    <ul>
   642         -    <li>Fixed the TYPES keyword to work when UseUTF16Encoding is true.</li>
   643         -    <li>Fix another bug revealed in 1.0.35.0 regarding infinite loops when the 2nd or subsequent statements of a semi-colon separated command cannot be parsed.</li>
   644         -      <li>Updated the help documentation.&nbsp;</li>
   645         -    </ul>
   646         -    <p><b>1.0.35.0 - September 10, 2006</b></p>
   647         -    <ul>
   648         -    <li>Fixed an infinite loop bug in SQLiteCommand caused when multiple semi-colon separated
   649         -      statements in a single command are executed via datareader and one of the statements
   650         -      contains a syntax error preventing it from being prepared.&nbsp;</li><li>Added the TYPES preparser keyword to be placed before a SELECT statement to
   651         -    aid the wrapper in converting expressions in a subsequent select clause into more
   652         -    robust types.&nbsp; Documentation yet to be integrated, but available on the forums.</li>
   653         -      <li>Added a new connectionstring parameter "BinaryGUID=true/false" (default is "true").&nbsp;
   654         -        When true, guid types are stored in the database as binary blobs to save space.&nbsp;
   655         -        Binary has been the default format since 1.0.32.0 but this parameter eases backward
   656         -        compatibility.</li>
   657         -    </ul>
   658         -    <p><b>1.0.34.0 - September 4, 2006</b></p>
   659         -    <ul>
   660         -    <li>Fixed a bug in SQLiteParameterCollection.RemoveAt(namedparam)</li>
   661         -    <li>Fixed a bug in SQLiteDataReader introduced in 1.0.30 that broke DateTimes using the Ticks option in the connection string.</li>
   662         -      <li>Fixed a bug in the recent changes to guid behavior wherein using a datareader's
   663         -        indexer to fetch a guid from a column containing both binary and text guids would
   664         -        sometimes return a byte array instead of a guid.</li>
   665         -      <li>Enacted a workaround involving typed datasets in Compact Framework projects in
   666         -        which it took an excessive amount of time to open a form and generated a lot of
   667         -        temporary files in the user's Local Settings\Application Data\Microsoft\VisualStudio\8.0\Assembly
   668         -        References folder.</li>
   669         -    </ul>
   670         -    <p><b>1.0.33.0 - August 21, 2006</b></p>
   671         -    <ul>
   672         -    <li>Code merge with SQLite 3.3.7</li>
   673         -      <li>Fixed a bug in SQLiteConnection that caused it to "forget" about commands bound
   674         -      to it and occasionally throw an error when a database is closed and opened repeatedly.&nbsp;
   675         -      </li>
   676         -    </ul>
   677         -    <p><b>1.0.32.0 - August 6, 2006</b></p>
   678         -    <ul>
   679         -    <li>Added AllowPartiallyTrustedCallers attribute to the assembly</li><li>Added the missing "nchar" type</li>
   680         -      <li>Added support for binary Guid's.&nbsp; Guids are now stored as binary by default
   681         -        when using parameterized queries.&nbsp; Text guids are still fully supported.</li>
   682         -      <li>Fixed a TransactionScope() error that caused the transaction not to be completed.</li>
   683         -      <li>Enhanced parameter names so that if they are added to the Parameters collection
   684         -        without their prefix character (@ : or $) they are still properly mapped.&nbsp;</li>
   685         -    </ul>
   686         -    <p><b>1.0.31.0 - July 16, 2006</b></p>
   687         -    <ul>
   688         -    <li>Re-applied the view parsing bugfix in 1.0.29.0 that was accidentally reverted
   689         -      out of the 30 build.</li><li>Fixed SQLiteCommand.ExecuteScalar() to return null instead of DbNull.Value
   690         -    when no rows were returned.</li>
   691         -      <li>Design-time installer now installs the package-based designer on full Visual Studio
   692         -        versions.&nbsp; Express editions continue to use the packageless designer.</li>
   693         -      <li>In Visual Studio (not Express), you can now right-click a SQLite connection in
   694         -        the Server Explorer and vacuum the database and change the encryption password.</li>
   695         -    </ul>
   696         -    <p><b>1.0.30.1 - July 2, 2006</b></p>
   697         -    <ul>
   698         -    <li>Code merge with SQLite 3.3.6</li>
   699         -      <li>Added support for the |DataDirectory| keyword in the Data Source filename string.&nbsp;
   700         -      </li>
   701         -      <li>Added hook notification support to SQLiteConnection.&nbsp; Specifically, there
   702         -      are three new events on the SQLiteConnection object which are raised when an update/insert/delete
   703         -      occurs and when transactions are committed and rolled back.</li><li>Changed SQLiteTransaction to default to BEGIN IMMEDIATE instead of just BEGIN,
   704         -    which solves a multithreaded race condition.&nbsp;</li>
   705         -      <li>Changed SQLiteDataReader to better support SQLite's typelessness.&nbsp; The data
   706         -        reader no longer caches column affinity, but re-evaluates it for each column/row.</li>
   707         -      <li>Fixed a bug in Prepare() which caused an intermittant fault due to the code accessing
   708         -        the memory of an unpinned variable.&nbsp;</li>
   709         -      <li>Fixed a multithreaded lock-retry bug in in SQLiteConnection.Open() and in
   710         -    SQLiteTransaction, which failed to use a command timeout before giving up.</li>
   711         -    </ul>
   712         -    <p><b>1.0.29.0 - May 16, 2006</b></p>
   713         -    <ul>
   714         -    <li>Fixed a bug in the Views schema information which caused multi-line view definition statements not to be parsed</li>
   715         -    <li>Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y) datatypes with specified precision and scale</li>
   716         -    <li>Fixed a bug in SQLiteConnection.Open() which tried to automatically enlist in an ambient transaction but had not yet set the state of the database to Opened, thereby causing a transaction fault</li>
   717         -    <li>Changed SQLiteException to inherit from DbException on the full framework</li>
   718         -    </ul>
   719         -    <p><b>1.0.28.0 - April 14, 2006</b></p>
   720         -    <ul>
   721         -    <li>Code merge with SQLite 3.3.5</li>
   722         -      <li>You can now specify a relative path in the Compact Framework's "Data Source" by
   723         -        prefixing the file with ".\".&nbsp; i.e. "Data Source=.\\mydb.db3"</li>
   724         -      <li>Several more changes and enhancements to schemas for better compatibility.</li>
   725         -      <li>Fixed several bugs with the 64-bit builds of the provider.&nbsp; The x64 binary
   726         -        is now optimized.</li>
   727         -      <li>Design-time installer now tries to install the 64-bit builds into the GAC along
   728         -        with the 32-bit build.</li>
   729         -      <li>Fixed a bug in the SQLiteDataReader.GetSchemaTable() function when used with tables
   730         -        containing apostrophes.</li>
   731         -      <li>Fixed an XSD-related bug whereby the XSD utility was unable to locate the provider
   732         -        and could not generate typed datasets.</li>
   733         -      <li>Added NTEXT and STRING datatypes to the list of recognized keywords (used for
   734         -        schema retrieval).</li>
   735         -      <li>Due to the XSD bug and other potential problems related to external build utilities,
   736         -        changes to the installation of the designer have had to be made.&nbsp; The installer
   737         -        used to write the DbProviderFactories XML into the devenv.exe.config file and its
   738         -        express cousins, but now has to write instead to the machine.config.</li>
   739         -      <li>Installer writes to both the 32-bit machine.config and the 64-bit machine.config
   740         -        if it exists.&nbsp;</li>
   741         -    </ul>
   742         -    <p><b>1.0.27.1 - February 28, 2006</b></p>
   743         -    <ul>
   744         -    <li>Fixed a bug when doing data binding in Compact Framework projects that prevented
   745         -      you from assigning a typed dataset to a bindingsource.&nbsp; It turns out, the CF
   746         -      version of the SQLite provider needs to be flagged as retargetable so it'll work
   747         -      in the design-time desktop environment.&nbsp; No changes were made to the desktop
   748         -      build, but the revision was bumped on all libraries anyway in order to keep them
   749         -      sync'd.&nbsp;</li></ul>
   750         -    <p><b>1.0.27.0 - February 27, 2006</b></p>
   751         -    <ul>
   752         -    <li>Many optimizations and a few more minor adjustments to schemas and schema retrieval
   753         -      performance.</li>
   754         -      <li>Lots of design-time attributes added to the code.&nbsp; The DbDataAdapter, DbCommand,
   755         -        and DbConnection objects now have greatly enhanced design-time capabilities when
   756         -        added to the toolbox and dropped on a form.</li>
   757         -      <li>Lots of Server Explorer enhancements.</li>
   758         -      <li>Binaries are now distributed in a setup program for easier administration and
   759         -        configuration of the provider.</li>
   760         -    </ul>
   761         -    <p><b>1.0.26.2 - February 15, 2006</b></p>
   762         -    <ul>
   763         -    <li>Yet another bugfix to index schemas, which was incorrectly marking most indexes
   764         -      as primary key indexes.</li><li>Fixed GetSchema() to accept a null string array.</li><li>Fixed a misspelled export in the core C library that prevented databases opened
   765         -    with UTF16Encoding from getting schema information and would likely cause an error
   766         -    if attempted.</li></ul>
   767         -    <p><b>1.0.26.1 - February 14, 2006</b></p>
   768         -    <ul>
   769         -    <li>Fixed even more minor schema bugs having to do with indexes.</li><li>Added two missing pieces in the SQLite designer which were preventing it from
   770         -    being used from within VS Express editions.&nbsp;</li><li>Several bugfixes to the design-time installer program, including supporting
   771         -    64-bit environments.</li></ul>
   772         -    <p><b>1.0.26.0 - February 11, 2006</b></p>
   773         -    <ul>
   774         -    <li>Code merge with SQLite 3.3.4</li><li>Fixed an encryption bug when changing the password of databases over 1gb in
   775         -      size.&nbsp;</li><li>Fixed various designer issues related to construction of named parameters.</li>
   776         -      <li>Retooled the GetSchema() method of SQLiteDataReader to use the new 3.3.4 API functions,
   777         -        and made several enhancements and fixes to schemas.&nbsp;</li>
   778         -      <li>Implemented the SourceColumnNullMapping property of SQLiteParameter to fix
   779         -    a DbCommandBuilder code generation bug.&nbsp;</li><li>Removed the runtime dependency on MSVCR80.DLL.&nbsp; File size is somewhat
   780         -    larger for the varying desktop versions.</li><li>Created an install program to manage installation and uninstallation of the
   781         -    SQLite design-time support.</li>
   782         -      <li>Designer support now works for all Visual Studio editions, including all Express
   783         -        Editions.</li>
   784         -      <li>Design-time installer will now remove (if present) the machine.config SQLite entries
   785         -        in favor of installing the xml code into the devenv.exe.config file (or any of the
   786         -        variations for express editions).&nbsp; The officially-accepted behavior of using
   787         -        DbProviderFactories is to add the code to your app.config file, and the machine.config
   788         -        file should not be touched.</li>
   789         -    </ul>
   790         -    <p><b>1.0.25.0 - January 31, 2006</b></p>
   791         -    <ul>
   792         -    <li>Code merge with SQLite 3.3.3</li><li>Added automatic distributed transaction enlistment and implemented the DbConnection.EnlistTransaction
   793         -    method for manual enlistment.</li>
   794         -      <li>Nested transactions are now supported.</li>
   795         -      <li>Rearranged the timing of SetPassword(), which now must be called before the database
   796         -        is opened instead of afterwards.&nbsp; Optionally, the password can be supplied
   797         -        in the ConnectionString.</li>
   798         -      <li>Fixed a bug in SQLiteFunction that caused a failure when an empty resultset was
   799         -        returned and a custom user aggregate function was used in the query.</li>
   800         -      <li>The designer has had another round of cleanup applied, in preparation for moving
   801         -        to a VS package.</li>
   802         -      <li>Added SQLiteMetaDataCollectionNames class.</li>
   803         -    </ul>
   804         -    <p><b>1.0.24.6 beta - January 23, 2006</b></p>
   805         -    <ul>
   806         -    <li>This beta is built from sqlite.org's 3.3.2 beta.</li><li>Eliminated the static linking of mscoree from all binaries.&nbsp; Native projects
   807         -      can now use the library without any dependencies on the .NET framework, while managed
   808         -      projects continue to be able to use the library normally.</li></ul>
   809         -    <p><b>1.0.24.5 beta - January 20, 2006</b></p>
   810         -    <ul>
   811         -    <li>This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress code.&nbsp; Therefore no guarantees
   812         -      can be made regarding its suitability for production use.</li>
   813         -    <li><strong>You no longer need to distribute 2 files on the CompactFramework.&nbsp;
   814         -      You can delete SQLite.Interop.DLL entirely.&nbsp; </strong>I wrote a custom tool
   815         -      called "mergebin" (available in the source zip file) which combines the two libraries
   816         -      and gets around a glaring defect in the VS2005 linker for ARM processors which doesn't
   817         -      allow you to link netmodules.</li>
   818         -      <li><strong>x64 and ia64 builds now use the same strong name as the x86 build.</strong>&nbsp;
   819         -        This means breaking backward compatibility, but it was necessary in order to allow
   820         -        you to drop any of those 3 builds onto a PC and have your .NET program run properly.&nbsp;
   821         -        Prior to this, you'd get an error if you built your program using the x86 build,
   822         -        and then installed the x64 version on a target machine and tried to run your program
   823         -        against it.</li>
   824         -      <li>The entire source project has been gone over top to bottom.&nbsp; A debug build
   825         -        no longer combines the binaries into a single module, which was preventing proper
   826         -        debugging.</li></ul>
   827         -    <p><b>1.0.24.4 beta - January 16, 2006</b></p>
   828         -    <ul>
   829         -    <li>This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress code.&nbsp; Therefore no guarantees
   830         -      can be made regarding its suitability for production use.</li>
   831         -    <li>Fixed a bug in the UTF-16 handling code for preparing statements due to a behavioral
   832         -      change in SQLite 3.3.0.</li>
   833         -      <li>Added pager.c code necessary to cleanup after an encrypted file is closed.</li>
   834         -      <li>Fixed an encryption bug that caused a fault when an encrypted file was rolled
   835         -        back.</li>
   836         -      <li>Modified the testcase code to take advantage of optimizations regarding the use
   837         -        of a DbCommandBuilder.&nbsp; DataAdapter insert speed increased dramatically as
   838         -        a result.</li>
   839         -    </ul>
   840         -    <p><b>1.0.24.3 beta - January 10, 2006</b></p>
   841         -    <ul>
   842         -    <li>This beta is built from sqlite.org's 3.3.0 alpha and contains development-in-progress code.&nbsp; Therefore no guarantees
   843         -      can be made regarding its suitability for production use.</li><li>Added support for database encryption at the pager level.&nbsp; Databases
   844         -    are encrypted using a 128-bit RC4 stream algorithm.&nbsp; To open an existing encrypted
   845         -    database, you may now specify a "Password={password}" text in the ConnectionString,
   846         -    or you may call the SQLiteConnection.SetPassword() function to set the password
   847         -    on an open connection. &nbsp;To encrypt existing non-encrypted databases or to change
   848         -    the password on an encrypted database, you must use the SQLiteConnection.ChangePassword()
   849         -    function.&nbsp; If you use SetPassword() instead of specifying a password in the
   850         -    connection string, or call ChangePassword() you may use a binary byte array or a
   851         -    text string as the password.</li>
   852         -      <li>Rewrote the locking implementation for the Compact Framework.&nbsp; It is now
   853         -        more robust and incorporates into the SQLite codebase more efficiently than the
   854         -        previous CE adaptation.</li>
   855         -      <li>Moved some of the embedded schema XML data into a resource file to ease code readability.</li>
   856         -      <li>Automated the fixup of the original sqlite codebase's source prior to compiling,
   857         -        to ease merging with sqlite.org's source.</li>
   858         -      <li>Fixed a memory leak in SQLiteCommand due to it not removing an internal reference
   859         -        to itself in SQLiteConnection.&nbsp; </li>
   860         -    </ul>
   861         -    <p><b>1.0.24.2 - December 30, 2005</b></p>
   862         -    <ul>
   863         -    <li>Fixed the SQLiteDataReader.HasRows property to return the proper value.</li>
   864         -      <li>Implemented the inadvertently neglected RecordsAffected property on SQLiteDataReader.
   865         -      </li>
   866         -      <li>SQLiteFunction static constructor was changed to pre-filter classes with only the
   867         -        SQLiteFunctionAttribute.&nbsp; The code was throwing an exception when certain
   868         -        assemblies were referenced in a project. </li>
   869         -      <li>Fixed the SQLiteDataAdapter OnRowUpdated event, which was using the wrong variable
   870         -        to find the attached event handler and subsequently not raising the event.</li>
   871         -      <li>Small optimizations and fixes to SQLiteDataReader.NextResult().&nbsp;</li>
   872         -    </ul>
   873         -    <p><b>1.0.24.1 - December 19, 2005</b></p>
   874         -    <ul>
   875         -    <li>Update core SQLite engine to 3.2.8&nbsp;</li></ul>
   876         -    <p><b>1.0.24 - December 9, 2005</b></p>
   877         -    <ul>
   878         -    <li>Fixed the<em> Catalogs</em> schema bug that caused attached databases not to be re-attached to a cloned connection
   879         -    </li>
   880         -      <li>Enhanced transactions to allow for a deferred or immediate writelock. &nbsp;SQLiteConnection.BeginTransaction()
   881         -        now has an additional overload to support it&nbsp;</li><li>Commands are now prepared as they are executed instead of beforehand.&nbsp; This
   882         -      fixes a bug whereby a multi-statement command that alters the database and subsequently
   883         -      references the altered data would fail during Prepare().</li><li>Tightened up the SQLiteDataReader to prevent reading columns before calling
   884         -    the first Read() and to prevent reading columns after the last Read().</li>
   885         -      <li>A more descriptive error is thrown if there aren't enough parameters in the command
   886         -        to satisfy the parameters required by the statement(s).&nbsp;</li>
   887         -    </ul>
   888         -    <p><b>1.0.23 - November 21, 2005</b></p>
   889         -    <ul>
   890         -    <li>Named parameters may now begin with <strong>@</strong> to ease portability of
   891         -      the provider. SQLite's named parameters are ordinarily prefixed with a <strong>: </strong>
   892         -      or<strong> $</strong>.&nbsp; The designer will still use the <strong>$</strong>
   893         -      prefix however, since its more compatible with the default SQLite engine.</li><li>Added several alternate ISO8601 date/time formats to SQLiteConvert.cs to increase
   894         -    compatibility.</li>
   895         -      <li>Relaxed coersion restrictions to work better with SQLite's inherent typelessness.&nbsp;</li>
   896         -    </ul>
   897         -    <p><b>1.0.22 - November 11, 2005</b></p>
   898         -    <ul>
   899         -    <li>Fixed some globalization issues which resulted in incorrect case-insensitive comparisons</li>
   900         -      <li>Fixed a bug in the routine that finds all user-defined functions in a loaded assembly.&nbsp;
   901         -        It would throw an exception if any of the types in the assembly could not be loaded.&nbsp;
   902         -        The exception is now caught and handled appropriately.</li>
   903         -    </ul>
   904         -    <p><b>1.0.21 - November 4, 2005</b></p>
   905         -    <UL>
   906         -      <li>Fixed a designer bug when creating typed datasets with parameterized queries.</li>
   907         -      <li>The above fix then exposed another bug in the datareader's ability to query schema
   908         -        information on parameterized commands, which was also fixed.</li>
   909         -      <li>Compiled against the RTM version of VS2005.</li>
   910         -      <li>Rewrote the design-time install script to use the XML DOM objects when writing
   911         -        to the machine.config and to automatically register the DLL in the GAC.</li><li>Made changes to the app.config descriptions and help file to improve version-independent
   912         -        factory support.</li></UL>
   913         -    <p><b>1.0.20 - October 19, 2005</b></p>
   914         -    <UL>
   915         -      <li>
   916         -        Fixed a shortcut in SQLiteBase.GetValue which was insufficient for 
   917         -        international environments.&nbsp; The shortcut was removed and the "proper" 
   918         -        procedure put in.</li></UL>
   919         -    <p><b>1.0.19 - October 5, 2005</b></p>
   920         -    <UL>
   921         -      <li>
   922         -      Code merge with SQLite 3.2.7
   923         -      <LI>
   924         -      Fixed bugs in the CE port code (os_wince.c)&nbsp;which were brought to 
   925         -      light&nbsp;by&nbsp;recent changes in the SQLite engine.
   926         -      <LI>
   927         -        Recompiled and modified to be compatible with the September VS2005 Release 
   928         -        Candidate.<br>
   929         -        Beta 2 users should continue to use 1.0.18.1</LI></UL>
   930         -    <p><b>1.0.18.1 - September 19, 2005</b></p>
   931         -    <UL>
   932         -      <li>
   933         -        Code merge with SQLite 3.2.6</li></UL>
   934         -    <p><b>1.0.18 - September 1, 2005</b></p>
   935         -    <UL>
   936         -      <li>
   937         -        Added type-specific method calls when using the various SQLite classes that 
   938         -        would've normally returned a a generic Db base class, which aligns the code 
   939         -        better with the Microsoft-supplied data providers.</li></UL>
   940         -    <p><b>1.0.17 - August 26, 2005</b></p>
   941         -    <ul>
   942         -      <li>
   943         -      Code merge with SQLite 3.2.5
   944         -      <li>
   945         -      Added Itanium and x64 build settings to the project (needs testing)
   946         -      <li>
   947         -      Bugfixes and enhancements to several schema types
   948         -      <li>
   949         -      Additional design-time support to include index and foreign key 
   950         -      enumerations.&nbsp; Requires re-registering the designer using 
   951         -      INSTALL.CMD.&nbsp; The new designer code now allows the VS query designer and 
   952         -      typed datasets to automatically link up foreign keys, use indexes, and 
   953         -      automatically generate relationships from the schema.<li>
   954         -        Additional static methods on SQLiteConnection to create a database file, 
   955         -        encrypt a file using the Encrypted File System (EFS) on NTFS (requires NT 2K or 
   956         -        above) and NTFS file compression</li>
   957         -    </ul>
   958         -    <p><b>1.0.16 - August 24, 2005</b></p>
   959         -    <ul>
   960         -      <li>
   961         -      Code merge with SQLite 3.2.4 with the large delete bugfix in CVS (which will 
   962         -      become 3.2.5 soon)
   963         -      <li>
   964         -        Added new GetSchema() types: IndexColumns, ViewColumns, ForeignKeys</li>
   965         -    </ul>
   966         -    <p><b>1.0.15 - August 22, 2005</b><br>
   967         -    </p>
   968         -    <ul>
   969         -      <li>
   970         -      Code merge with SQLite 3.2.3
   971         -      <LI>
   972         -        Minor updates for better design-time experience. More design-time code to 
   973         -        follow in subsequent releases.</LI>
   974         -    </ul>
   975         -    <p><b>1.0.14 - August 16, 2005</b><br>
   976         -    </p>
   977         -    <ul>
   978         -      <li>
   979         -      Fixed a bug in the SQLiteDataAdapter due to insufficient implementation of the 
   980         -      class.&nbsp; The RowUpdating and RowUpdated events are now properly 
   981         -      implemented, but unfortunately inserting and updating data in a DataTable or 
   982         -      DataSet is now much slower.&nbsp; This is the proper design however, so the 
   983         -      changes are here to stay.
   984         -      <LI>
   985         -      Lots of schema changes to support Visual Studio's Data Designer architecture.<li>Added 
   986         -        Designer support for the provider.&nbsp; It's not 100%, but you can design 
   987         -        queries, add typed datasets and perform quite a number of tasks all within 
   988         -        Visual Studio now.</li></ul>
   989         -    <P><B>1.0.13 - August 8, 2005</B><BR>
   990         -    </P>
   991         -    <DIV>
   992         -      <UL>
   993         -        <LI>
   994         -        Fixed a named parameter bug in the base SQLite_UTF16 class, which of course 
   995         -        only showed up when a database connection was opened using the 
   996         -        UseUTF16Encoding=True parameter.
   997         -        <LI>
   998         -          Fixed a performance issue in SQLite_UTF16 involving string marshaling.</LI></UL>
   999         -    </DIV>
  1000         -    <P><B>1.0.12 - August 5, 2005</B><BR>
  1001         -    </P>
  1002         -    <DIV>
  1003         -      <UL>
  1004         -        <LI>
  1005         -          Full support for the Compact Framework.&nbsp; Each build (Debug/Release) now 
  1006         -          has a&nbsp;platform, either Win32 or Compact Framework.&nbsp; The correct 
  1007         -          projects are built accordingly.&nbsp; See the&nbsp;<A href="#redist">Distributing 
  1008         -            SQLite</A>
  1009         -        section for information on what files need to be distributed for each 
  1010         -        platform.&nbsp;
  1011         -        <LI>
  1012         -        Modified SQLite3.Reset() and Step() functions to transparently handle timeouts 
  1013         -        while waiting on the database to become available (typically when a writer is 
  1014         -        waiting on a reader to finish, or a reader is waiting on a writer to finish).
  1015         -        <LI>
  1016         -        Lots of code cleanup&nbsp;as suggested&nbsp;by the Code Analyzer (FxCop).
  1017         -        <LI>
  1018         -        Lots of updates to the helpfile (as you can see).
  1019         -        <LI>
  1020         -          Statements&nbsp;were already prepared lazily&nbsp;in a SQLiteCommand, but now 
  1021         -          its even more lazy.&nbsp; Statements are now only prepared if the statements 
  1022         -          haven't been previously prepared and a Prepare() function is called (and the 
  1023         -          command is associated with a connection) or just prior to the command being 
  1024         -          executed.&nbsp;</LI></UL>
  1025         -    </DIV>
  1026         -    <P><B>1.0.11 - August 1, 2005</B><BR>
  1027         -    </P>
  1028         -    <UL>
  1029         -      <LI>
  1030         -        <STRONG>For everything except the Compact Framework, System.Data.SQLite.DLL is 
  1031         -          now the <EM>only</EM> DLL required to use this provider!</STRONG>&nbsp; The 
  1032         -      assembly is now a multi-module assembly, containing both the native SQLite3 
  1033         -      codebase and the C# classes built on top of it.&nbsp; The Compact Framework 
  1034         -      version (when completed) will not be able to support this feature, so backwards 
  1035         -      compatibility with the Compact Framework has been preserved for the future.
  1036         -      <LI>
  1037         -        Fixed a bug in SQLiteCommand.ExecuteScalar() that caused it to stop executing 
  1038         -        commands once it obtained the first column of the first row-returning 
  1039         -        resultset.&nbsp; Any remaining statements after the row-returning statement was 
  1040         -        ignored.
  1041         -      </LI>
  1042         -    </UL>
  1043         -    <P><B>1.0.10 - June 10, 2005</B><BR>
  1044         -    </P>
  1045         -    <UL>
  1046         -      <LI>
  1047         -      Fixed a bug in the SQLite3.cs Prepare() function that created a statement even 
  1048         -      when the SQLite engine returned a NULL pointer. Typically this occurs when 
  1049         -      multiple statements are processed and there are trailing comments at the end of 
  1050         -      the statement.
  1051         -      <LI>
  1052         -        Fixed a bug in SQLiteStatement.cs that retrieved parameter names for a 
  1053         -        parameterized query.&nbsp; SQLite's parameters are 1-based, and the function 
  1054         -        was starting at 0.&nbsp; This was fine when all parameters were unnamed, but 
  1055         -        for named parameters it caused the parameters to be out of whack.
  1056         -      </LI>
  1057         -    </UL>
  1058         -    <P><B>1.0.09a - May 25, 2005</B><BR>
  1059         -    </P>
  1060         -    <UL>
  1061         -      <LI>
  1062         -      Fixed a broken helpfile and corrected some obsolete help remarks in 
  1063         -      SQLiteFunction.cs
  1064         -      <LI>
  1065         -        Added a version resource to the SQLite.Interop.DLL.&nbsp;</LI></UL>
  1066         -    <P><B>1.0.09 - May 24, 2005</B><BR>
  1067         -    </P>
  1068         -    <UL>
  1069         -      <LI>
  1070         -      Code merge with the latest 3.21 version of SQLite.
  1071         -      <LI>
  1072         -        Removed obsolete methods and properties for Whidbey Beta 2</LI></UL>
  1073         -    <P><B>1.0.08 Refresh - Mar 24, 2005<BR>
  1074         -      </B>
  1075         -    </P>
  1076         -    <UL>
  1077         -      <LI>
  1078         -      Code merge with the latest 3.20 version of SQLite.
  1079         -      <LI>
  1080         -        Recompiled the help file to fix a build error in it.
  1081         -      </LI>
  1082         -    </UL>
  1083         -    <P><B>1.0.08 - Mar 11, 2005<BR>
  1084         -      </B>
  1085         -    </P>
  1086         -    <UL>
  1087         -      <LI>
  1088         -      Added additional #if statements to support the old beta 1 edition of VS2005.
  1089         -      <LI>
  1090         -        Code merged the SQLite 3.14 source.
  1091         -      </LI>
  1092         -    </UL>
  1093         -    <P><B>1.0.07 - Mar 5, 2005</B><BR>
  1094         -    </P>
  1095         -    <UL>
  1096         -      <LI>
  1097         -      Made more optimizations to frequently-called functions, resulting in 
  1098         -      significant performance gains in all tests.
  1099         -      <LI>
  1100         -        Recompiled the binaries using the latest VS2005 February CTP, resulting in yet 
  1101         -        more significant speed gains.&nbsp; The 100k insert test used to take 3.5 
  1102         -        seconds and the insertwithidentity took almost 8 seconds.&nbsp; With the above 
  1103         -        two changes, those tests are now executing in 1.9 and 4.9 seconds respectively.</LI></UL>
  1104         -    <P><B>1.0.06 - Mar 1, 2005<BR>
  1105         -      </B>
  1106         -    </P>
  1107         -    <UL>
  1108         -      <LI>
  1109         -      Speed-ups to SQLiteDataReader.&nbsp; It was interop'ing unnecessarily every 
  1110         -      time it tried to fetch a field due to a logic error.
  1111         -      <LI>
  1112         -      Changed/Added some code to SQLiteConvert's internal DbType, Type and 
  1113         -      TypeAffinity functions.
  1114         -      <LI>
  1115         -      Fixed the SQLiteDataReader to obey the flags set in the optional 
  1116         -      CommandBehavior flag from SQLiteCommand.ExecuteReader().
  1117         -      <LI>
  1118         -      Changed the default page size to 1024 to reflect the defaults of SQLite.&nbsp; 
  1119         -      Ignores the "Page Size" connection string option for memory databases, as tests 
  1120         -      revealed that changing it resulted in memory corruption errors.
  1121         -      <LI>
  1122         -        Performance enhancements to the SQLiteCommand and SQLiteStatement classes which 
  1123         -        reduced the 100,000 row insert execution time as well as the various Function 
  1124         -        execution times significantly.
  1125         -      </LI>
  1126         -    </UL>
  1127         -    <P><B>1.0.05 - Feb 25, 2005</B>
  1128         -    </P>
  1129         -    <UL>
  1130         -      <LI>
  1131         -      Fixed the SQLite3 C# class step/reset functions to accomodate schema changes 
  1132         -      that invalidate a prepared statement.&nbsp; Statements are recompiled 
  1133         -      transparently.
  1134         -      <LI>
  1135         -      Moved all native DLL declarations to an UnsafeNativeMethods class.
  1136         -      <LI>
  1137         -      Split several classes into their own modules for readability.
  1138         -      <LI>
  1139         -      Renamed many internal variables, reviewed access to variables marked as 
  1140         -      internal and altered their protection levels accordingly.
  1141         -      <LI>
  1142         -      Due to the presence of the altered sqlite3 codebase and so many added interop 
  1143         -      functions, I decided to rename the sqlite3 C project and the DLL to 
  1144         -      SQLite.Interop.DLL.&nbsp; This is the same core sqlite3 codebase but designed 
  1145         -      specifically for this ADO.NET provider.&nbsp; This eliminates any possibility 
  1146         -      of someone dropping another build of sqlite3.dll into the system and rendering 
  1147         -      the provider inoperable.&nbsp; In the future if the folks at sqlite.org finally 
  1148         -      introduce a method of retrieving column usage for an arbitrary prepared 
  1149         -      statement, I'll retool this library to be a lightweight function call wrapper 
  1150         -      around the core binary distribution.
  1151         -      <LI>
  1152         -      Added [SuppressUnmanagedCodeSecurity] attribute to the UnsafeNativeMethods 
  1153         -      class which brings VS2005 November CTP execution speeds inline with the 
  1154         -      December CTP.
  1155         -      <LI>
  1156         -        Added a <B>bin</B>
  1157         -      directory to the project root where pre-compiled binaries can be found.
  1158         -      <LI>
  1159         -        Added a <B>doc</B>
  1160         -      directory where preliminary documentation on the class library can be found.
  1161         -      <LI>
  1162         -        Documented a lot more of the classes internally.
  1163         -      </LI>
  1164         -    </UL>
  1165         -    <P><B>1.0.04 - Feb 24, 2005</B>
  1166         -    </P>
  1167         -    <UL>
  1168         -      <LI>
  1169         -      Removed the SQLiteContext class and revamped the way UserFunctions work to 
  1170         -      simplify the imlementation.
  1171         -      <LI>
  1172         -      Fixed a counting bug in the TestCases class, specifically in the function tests 
  1173         -      where I wasn't resetting the counter and it was consequently reporting 
  1174         -      intrinsic and raw select calls as being much much faster than they actually 
  1175         -      were.&nbsp; The numbers are now much closer to what I expected for performance, 
  1176         -      with .NET user-functions still being the slowest, but only by a small margin.
  1177         -      <LI>
  1178         -      Small performance tweaks to SQLiteDataReader.
  1179         -      <LI>
  1180         -      Added PageSize to the SQLiteConnectionStringBuilder and subsequently to the 
  1181         -      SQLiteConnection
  1182         -      <LI>
  1183         -        Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after 
  1184         -        opening a connection.
  1185         -      </LI>
  1186         -    </UL>
  1187         -    <P><B>1.0.03 - Feb 23, 2005</B>
  1188         -    </P>
  1189         -    <UL>
  1190         -      <LI>
  1191         -      Fixed up SQLiteCommandBuilder to correct implementation errors, which resulted 
  1192         -      in an enormous performance boost in the InsertMany test.&nbsp;&nbsp; 10,000 row 
  1193         -      insert that executed in 1500ms now executes in 500ms.
  1194         -      <LI>
  1195         -      Fixed several errors in the SQLite3_UTF16 class.&nbsp; ToString() was working 
  1196         -      incorrectly and the Open() method failed to register user defined functions and 
  1197         -      collations.
  1198         -      <LI>
  1199         -      Fixed a bug in SQLiteCommand.ClearCommands() whereby only the first statement 
  1200         -      was being properly cleaned up.
  1201         -      <LI>
  1202         -      Fixed a bug in SQLiteDataReader whereby calling NextResult() would not properly 
  1203         -      reset the previously-executed command in the sequence.
  1204         -      <LI>
  1205         -        Added an InsertManyWithIdentityFetch test, which appends a select clause to 
  1206         -        populate the ID of the last inserted row into the InsertCommand, demonstrating 
  1207         -        ADO.NET's ability to auto-fetch identity columns on insert.
  1208         -      </LI>
  1209         -    </UL>
  1210         -    <P><B>1.0.02 - Feb 21, 2005</B></P>
  1211         -    <UL>
  1212         -      <LI>
  1213         -      Tweaks to the xxx_interop functions that return char *'s, so they also return 
  1214         -      the length.&nbsp; Saves an interop call to get the UTF-8 string length during 
  1215         -      conversion to a .NET string.
  1216         -      <LI>
  1217         -      Reworked the whole interop.c thing into interop.h and reduced the code required 
  1218         -      to merge the main sqlite3 codebase.
  1219         -      <LI>
  1220         -        Added support for user-defined collations.
  1221         -      </LI>
  1222         -    </UL>
  1223         -  </body>
          123  +<p>
          124  +See the help documentation for further details on implementing both version-specific
          125  +(GAC enabled) and version independent DBProviderFactories support.
          126  +</p>
          127  +
          128  +<h2>Compiling for the Compact Framework</h2>
          129  +<font color="red">Compact framework not currently not included. We hope to have
          130  +this feature included again soon.</font></li>
          131  +<p>
          132  +Just change the target platform from Win32 to Compact Framework and recompile.&nbsp;
          133  +<strong>The Compact Framework has no support for enumerating attributes in an assembly,
          134  +therefore all user-defined collating sequences and functions must be explicitly
          135  +registered.</strong>&nbsp; See the <strong>testce</strong> sample application for
          136  +an example of how to explicitly register user-defined collating sequences and functions.</p>
          137  +
          138  +<h2><b><a name="redist"></a>Distributing The SQLite Engine and ADO.NET Assembly</b></h2>
          139  +<font color="red">Currently all versions provided as System.Data.SQLite.dll and SQLite.Interop.dll.
          140  +This provides consistency across all packages, including Compact and Mono.</font>
          141  +<p>
          142  +On the desktop, only the <strong>System.Data.SQLite.DLL</strong> file needs to be
          143  +distributed with your application(s).&nbsp; This DLL contains both the managed wrapper
          144  +and the native SQLite3 codebase.&nbsp; For the Compact Framework, you will have
          145  +to distribute both the CF version of System.Data.SQLite.DLL, as well as the SQLite.Interop.XXX.DLL.&nbsp;
          146  +This is a breaking change as of 1.0.59.0.&nbsp; Recent Windows Mobile frameworks
          147  +are not supporting the mixed CF assembly I was building prior to this version.</p>
          148  +
          149  +<h2><b>Development Notes Regarding the SQLite 3 Source Code</b></h2>
          150  +
          151  +<p>
          152  +The core sqlite engine is compiled directly from the unmodified source code available
          153  +at the sqlite.org website.&nbsp; Several additional pieces are compiled on top of
          154  +it to extend its functionality, but the core engine's source is not changed.</p>
          155  +<p>
          156  +</p>
          157  +
          158  +<h2><b>Version History</b></h2>
          159  +
          160  +<p>
          161  +  <b>1.0.69.0 - April 12, 2011</b>
          162  +</p>
          163  +<ul>
          164  +  <li>Code merge with SQLite 3.7.6</li>
          165  +  <li>New VS2008 and VS2010 solution files</li>
          166  +  <li>Build and packaging automation</li>
          167  +  <li>New Inno Setup files</li>
          168  +  <li>Designer support currently not ready for release</li>
          169  +</ul>
          170  +<p>
          171  +  <b>1.0.68.0 - February 2011</b>
          172  +</p>
          173  +<ul>
          174  +  <li>Code merge with SQLite 3.7.5</li>
          175  +  <li>Continuing work on supporting Visual Studio 2010</li>
          176  +</ul>
          177  +
          178  +<p>
          179  +<b>1.0.67.0 - January 3, 2011</b></p>
          180  +<ul>
          181  +<li>Code merge with SQLite 3.7.4</li>
          182  +<li>Continuing work on supporting Visual Studio 2010</li>
          183  +</ul>
          184  +<p>
          185  +<b>1.0.66.1 - August 1, 2010</b></p>
          186  +<ul>
          187  +<li>Code merge with SQLite 3.7.0.1</li>
          188  +<li>Re-enabled VS2005 designer support, broken in previous versions during the 2008
          189  +transition</li>
          190  +<li>Implemented new forms of Take/Skip in the EF framework courtesy jlsantiago</li>
          191  +<li>Added "Foreign Keys" to the connection string parameters</li>
          192  +<li>Added the Truncate option to the Journal Modes enumeration</li>
          193  +</ul>
          194  +<p>
          195  +<b>1.0.66.0 - April 18, 2010</b></p>
          196  +<ul>
          197  +<li>Code merge with SQLite 3.6.23.1</li>
          198  +<li>Fixed a bug in the installer that accidentally modified the machine.config on
          199  +.NET versions prior to 2.0, invaliding the config file.</li>
          200  +<li>Fixed INTERSECT and EXCEPT union query generation in EF</li>
          201  +<li>Fixed an out of memory error in the trigger designer in cases where a WHEN clause
          202  +is used in the trigger</li>
          203  +</ul>
          204  +<p>
          205  +<b>1.0.65.0 - July 26, 2009</b></p>
          206  +<ul>
          207  +<li>Fixed a bug in the encryption module to prevent a double free() when rekeying
          208  +a database.</li>
          209  +<li>Fixed a bug in the encryption module when ATTACHing an encrypted database.</li>
          210  +<li>Incorporated the WinCE locking fix from ticket <a href="http://www.sqlite.org/cvstrac/tktview?tn=3991">
          211  +#3991</a></li>
          212  +<li>Added &quot;bigint&quot; to the dropdown in the table designer, plus other minor
          213  +table designer bugfixes.</li>
          214  +</ul>
          215  +<p>
          216  +<b>1.0.64.0 - July 9, 2009</b></p>
          217  +<ul>
          218  +<li>Fixed the missing resources problem from the 63 release.</li>
          219  +<li>Added preliminary support for the Visual Studio 2010 beta.</li>
          220  +<li>Fixed a bug in SQLiteCommand that threw a null reference exception when setting
          221  +the Transaction object to null.</li>
          222  +<li>If SQLiteConnection.EnlistTransaction is called multiple times for the same
          223  +transaction scope, just return without throwing an error.</li>
          224  +</ul>
          225  +<p>
          226  +<b>1.0.63.0 - June 29, 2009</b></p>
          227  +<ul>
          228  +<li>Code merge with SQLite 3.6.16</li>
          229  +<li>Check the autocommit mode of the connection to which a transaction is bound
          230  +during the disposal of the transaction.&nbsp; If autocommit is enabled, then the
          231  +database has already rolled back the transaction and we don&#39;t need to do it
          232  +during dispose, and can quietly ignore the step without throwing an error.</li>
          233  +<li>Eliminated the mergebin step altogether.&nbsp; It was developed primarily to
          234  +merge the Compact Framework binaries together, but since we&#39;re not doing that
          235  +anymore, its use is limited.&nbsp; Its non-standard method of merging a binary on
          236  +the desktop framework is redundant as well.&nbsp; The desktop binary now hard-links
          237  +to MSCOREE, but as of Windows XP, this was redundant as well since XP and beyond
          238  +automatically attempt to load MSCOREE on startup when a DLL has a .NET header.</li>
          239  +<li>More improvements to the test.exe program for running the tests against Sql
          240  +Server for comparison purposes.</li>
          241  +</ul>
          242  +<p>
          243  +<b>1.0.62.0 - June 19, 2009</b></p>
          244  +<ul>
          245  +<li>Code merge with SQLite 3.6.15</li>
          246  +<li>Fixed the decimal reading bug in the SQLiteDataReader</li>
          247  +<li>Changed Join()&#39;s to Sleep()&#39;s in the statement retry code to prevent
          248  +message pumping</li>
          249  +<li>Fixed a bad pointer conversion when retrieving blobs using GetBytes() in 64-bit
          250  +land</li>
          251  +<li>Several changes to the Test program that comes with the provider.&nbsp; Tests
          252  +can now be individually disabled, and the test program can run against several provider
          253  +back-ends</li>
          254  +</ul>
          255  +<p>
          256  +<b>1.0.61.0 - April 28, 2009</b></p>
          257  +<ul>
          258  +<li>Code merge with SQLite 3.6.13. The new backup features are as yet unimplemented
          259  +in the provider, but will be forthcoming in a subsequent release</li>
          260  +<li>Fixed the default-value lookups in SQLiteConnectionStringBuilder when accessing
          261  +properties</li>
          262  +<li>Lock the SQLiteTransaction object during dispose to avoid potential race condition
          263  +during cleanup</li>
          264  +<li>Fixed SQLiteDataReader.GetDecimal() processing and parsing of decimal values
          265  +for cases when SQLite returns things like "1.0e-05" instead of "0.0001"</li>
          266  +</ul>
          267  +<p>
          268  +<b>1.0.60.0 - October 3, 2008</b></p>
          269  +<ul>
          270  +<li>Throw a NotSupported exception in the EF Sql Gen code instead of parsing illegal
          271  +SQL during an update/insert/delete where no primary key is defined.</li>
          272  +<li>Fixed the Compact Framework interop library.&nbsp; Since the linker flag /subsystem
          273  +had no version specified, it was causing a problem for many CE-based platforms.</li>
          274  +<li>Incorporated SQLite patch for ticket <a href="http://www.sqlite.org/cvstrac/tktview?tn=3387">
          275  +#3387</a> and reverted out the vfs override code I added in build 59 to work around
          276  +this problem.</li>
          277  +<li>Fixed a designer issue when creating a new table from the Server Explorer.&nbsp;
          278  +After initially saving it, if you then continued to edit it and tried to save it
          279  +again, it would generate the change SQL using the old temporary table name rather
          280  +than the new name.</li>
          281  +</ul>
          282  +<p>
          283  +<b>1.0.59.0 - September 22, 2008</b></p>
          284  +<ul>
          285  +<li>Code merge with SQLite 3.6.3.&nbsp; Solves a couple different EF issues that
          286  +were either giving inconsistent results or crashing the engine.</li>
          287  +<li>Fixed the parsing of literal binaries in the EF SqlGen code.&nbsp; SQLite now
          288  +passes nearly all the testcases in <a href="http://sqlite.phxsoftware.com/forums/p/1377/5921.aspx#5921">
          289  +Microsoft's EF Query Samples</a> application -- the exception being the <i>datetimeoffset
          290  +</i>and<i> time</i> constants tests, and tests that use the <i>APPLY </i>keyword
          291  +which are unsupported for now.</li>
          292  +<li>Revamped the Compact Framework mixed-mode assembly.&nbsp; Tired of playing cat
          293  +and mouse with the Compact Framework&#39;s support for mixed-mode assemblies.&nbsp;
          294  +The CF build now requires that you distribute both the System.Data.SQLite library
          295  +and the paired SQLite.Interop.XXX library.&nbsp;&nbsp; The XXX denotes the build
          296  +number of the library.</li>
          297  +<li>Implemented a workaround for Vista&#39;s overzealous caching by turning off
          298  +FILE_FLAG_RANDOM_ACCESS for OS versions above XP.&nbsp; This is implemented as a
          299  +custom (default override) VFS in the interop.c file, so no changes are made to the
          300  +SQLite source code.</li>
          301  +<li>Fixed some registry issues in the designer install.exe, which prevented some
          302  +design-time stuff from working on the Compact Framework when .NET 3.5 was installed.</li>
          303  +</ul>
          304  +<p>
          305  +<b>1.0.58.0 - August 30, 2008</b></p>
          306  +<ul>
          307  +<li>Code merge with SQLite 3.6.2.&nbsp; If only I&#39;d waited one more day to release
          308  +57!&nbsp; Several LINQ issues have been resolved with this engine release relating
          309  +to deeply-nested subqueries that the EF SqlGen creates.</li>
          310  +<li>The Rollback SQLiteConnection event no longer requires an open connection in
          311  +order to subscribe to it.&nbsp; Missed this one in the 57 release.</li>
          312  +</ul>
          313  +<p>
          314  +<b>1.0.57.0 - August 29, 2008</b></p>
          315  +<ul>
          316  +<li>Compiled against 3.6.1 with checkin <a href="http://www.sqlite.org/cvstrac/tktview?tn=3300">
          317  +#3300</a> resolved, which fixes an Entity Framework bug I was seeing.&nbsp; I currently
          318  +have 3 other tickets out on the engine, which are not yet resolved and relate to
          319  +EF.</li>
          320  +<li>Fixed decimal types to store and fetch using InvariantCulture.&nbsp; If you&#39;re
          321  +using decimal datatypes in your database and were affected by the 56 release, please
          322  +issue an UPDATE &lt;table&gt; SET &lt;column&gt; = REPLACE(&lt;column&gt;, &#39;,&#39;,
          323  +&#39;.&#39;);&nbsp; to fix the decimal separators.&nbsp; Apologies for not testing
          324  +that more thoroughly before releasing 56.</li>
          325  +<li>Too many LINQ fixes to list.&nbsp; Fixed views so they generate, fixed the LIMIT
          326  +clause, implemented additional functionality and removed unnecessary code.</li>
          327  +<li>Fixed foreign key names in the designer so viewing the SQL script on a new unsaved
          328  +table after renaming it in the properties toolwindow will reflect in the script
          329  +properly.</li>
          330  +<li>Fixed the Update and Commit events on SQLiteConnection so they don&#39;t require
          331  +the connection to be opened first.</li>
          332  +<li>Fixed userdef aggregate functions so they play nice with each other when appearing
          333  +multiple times in the same statement.</li>
          334  +<li>Fixed the editing and saving of default values in the table designer.</li>
          335  +<li>Fixed ForeignKeys schema to support multi-column foreign keys.&nbsp; Also hacked
          336  +support for them in the table designer, provided two foreign keys in the designer
          337  +have the same name and reference the same foreign table and different columns.&nbsp;
          338  +Will implement first-class support for this in the next release.</li>
          339  +</ul>
          340  +<p>
          341  +<b>1.0.56.0 - August 11, 2008</b></p>
          342  +<ul>
          343  +<li>Fixed a bug in the table designer when designing new tables, wherein you had
          344  +to save the table first before being able to create indexes and foreign keys.</li>
          345  +<li>Tweaks to decimal type handling.&nbsp; The &#39;decimal&#39; type can&#39;t
          346  +be represented by Int64 or Double (without loss of precision) in SQLite, so we have
          347  +to fudge it by treating it like a string and converting it back and forth in the
          348  +provider.&nbsp; Unfortunately backing it to the db as a string causes sorting problems.&nbsp;
          349  +See <a href="http://sqlite.phxsoftware.com/forums/p/1296/5595.aspx#5595">this post</a>
          350  +for details on using a custom collation sequence to overcome the sorting issue arising
          351  +from this patch.</li>
          352  +<li>Minor tweaks and bugfixes to the test program and the provider.</li>
          353  +<li>More adjustments to make the managed-only version of the provider run and pass
          354  +all tests on Mono.</li>
          355  +<li>LINQ to Entities bits heavily updated and compiled against VS2008 SP1 RTM.&nbsp;
          356  +SQLite LINQ support is still considered beta.</li>
          357  +</ul>
          358  +<p>
          359  +<b>1.0.55.0 - August 6, 2008</b></p>
          360  +<ul>
          361  +<li>Code merge with SQLite 3.6.1</li>
          362  +<li>Added support for the user-contributed extension-functions at <a href="http://www.sqlite.org/contrib">
          363  +http://www.sqlite.org/contrib</a>.&nbsp; Feel free to override any of them with
          364  +your own implementation.&nbsp; The new functions are: <i>acos, asin, atan, atn2,
          365  +atan2, acosh, asinh, atanh, difference, degrees, radians, cos, sin, tan, cot, cosh,
          366  +sinh, tanh, coth, exp, log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate,
          367  +charindex, leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter,</i>
          368  +and aggregates <i>stdev, variance, mode, median, lower_quartile, upper_quartile.</i></li>
          369  +<li>Moved the last_rows_affected() function to the C extension library.</li>
          370  +<li>Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the
          371  +ability for a user-defined function to get the collating sequence during the Invoke/Step
          372  +methods.&nbsp; User-defined functions can use the collating sequence as a helper
          373  +to compare values.</li>
          374  +<li>When registering user-defined collation sequences and functions, the provider
          375  +will now register both a UTF8 and a UTF16 version instead of just UTF8.</li>
          376  +<li>Revamped connection pooling and added static ClearPool() and ClearAllPools()
          377  +functions to SQLiteConnection.&nbsp; Behavior of the pool and its clearing mechanics
          378  +match SqlClient.</li>
          379  +<li>Fixed connections going to the pool so that any unfinalized lingering commands
          380  +from un-collected datareaders are automatically reset and any lurking transactions
          381  +made on the connection are rolled back.</li>
          382  +<li>Transaction isolation levels are now partially supported.&nbsp; Serializable
          383  +is the default, which obtains read/write locks immediately -- this is compatible
          384  +with previous releases of the provider.&nbsp; Unspecified will default to whatever
          385  +the default isolation mode is set to, and ReadCommitted will cause a deferred lock
          386  +to be obtained.&nbsp; No other values are legal.</li>
          387  +<li>Revamped the test.exe program.&nbsp; It&#39;s now an interactive GUI application.&nbsp;
          388  +Easier for me to add tests now.</li>
          389  +<li>Tweaks to the VS designer package and installer.</li>
          390  +<li>More adjustments to the internal SQLite3.Prepare() method to account for both
          391  +kinds of lock errors when retrying.</li>
          392  +<li>Stripped a lot of unnecessary interop() calls and replaced with base sqlite
          393  +calls.&nbsp; Revamped most of UnsafeNativeMethods to make it easier to port the
          394  +code.</li>
          395  +<li>Rerigged internal callbacks for userdef functions and other native to managed
          396  +callbacks.&nbsp; More portable this way.</li>
          397  +<li>Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol
          398  +to force the wrapper to use the stock sqlite3 library.&nbsp; Some functionality
          399  +is missing, but its minimal.&nbsp; None of the precompiled binaries are compiled
          400  +using this setting, but its useful for testing portability.</li>
          401  +<li>Added &quot;boolean&quot; and a couple other missing datatypes to the &quot;DataTypes&quot;
          402  +schema xml file.&nbsp; Used by the VS designer when displaying tables and querying.</li>
          403  +<li>Added a new connection string option &quot;Read Only&quot;.&nbsp; When set to
          404  +True, the database will be opened in read-only mode.</li>
          405  +<li>Added a new connection string option &quot;Max Pool Size&quot; to set the maximum
          406  +size of the connection pool for a given db file connection.</li>
          407  +<li>Added a new connection string option &quot;Default IsolationLevel&quot; to set
          408  +the default isolation level of transactions.&nbsp; Possible values are Serializable
          409  +and ReadCommitted.</li>
          410  +<li>Added a new connection string option &quot;URI&quot; as an optional parameter
          411  +for compatibility with other ports of the provider.</li>
          412  +</ul>
          413  +<p>
          414  +<b>1.0.54.0 - July 25, 2008</b></p>
          415  +<ul>
          416  +<li>Fixed the setup project, which somehow &quot;forgot&quot; to include all the
          417  +binaries in the 53 release.</li>
          418  +<li>Fixed a crash in the table designer when creating a new table and tabbing past
          419  +the &quot;Allow Nulls&quot; cell in the grid while creating a new column.</li>
          420  +<li>Fixed a mostly-benign bug in SQLiteDataReader&#39;s GetEnumerator, which failed
          421  +to pass along a flag to the underyling DbEnumerator it creates.&nbsp; This one&#39;s
          422  +been around since day 1 and nobody&#39;s noticed it in all these years.</li>
          423  +<li>Added a new connection string parameter &quot;Journal Mode&quot; that allows
          424  +you to set the SQLite journal mode to Delete, Persist or Off.</li>
          425  +</ul>
          426  +<p>
          427  +<b>1.0.53.0 - July 24, 2008</b></p>
          428  +<ul>
          429  +<li>Enabled sqlite_load_extension</li>
          430  +<li>Added retry/timeout code to SQLite3.Prepare() when preparing statements for
          431  +execution and a SQLITE_BUSY error occurs.</li>
          432  +<li>Added a new schema to SQLiteConnection.GetSchema() called <i>Triggers</i>.&nbsp;
          433  +Used to retrieve the trigger(s) associated with a database and/or table/view.</li>
          434  +<li>Extensive updates to table/view editing capabilities inside Visual Studio&#39;s
          435  +Server Explorer.&nbsp; The program now parses and lets you edit CHECK constraints
          436  +and triggers on a table, as well as define triggers on views.&nbsp; Experimental
          437  +still, so e-mail me if you have issues.</li>
          438  +<li>Minor bugfix to the ViewColumns schema to return the proper base column name
          439  +for a view that aliases a column.</li>
          440  +<li>Fixed the insert/update/delete DML support in the Linq module.</li>
          441  +<li>Changed the behavior of SQLiteCommand to allow a transaction to be set even
          442  +if the command hasn&#39;t been associated with a connection yet.</li>
          443  +</ul>
          444  +<p>
          445  +<b>1.0.52.0 - July 16, 2008</b></p>
          446  +<ul>
          447  +<li>Code merge with SQLite 3.6.0</li>
          448  +<li>Added a lot of previously-missing exports to the DEF file for the native library.</li>
          449  +<li>Fixed SQLiteDataReader to check for an invalid connection before operating on
          450  +an open cursor.</li>
          451  +<li>Implemented the Cancel() function of SQLiteCommand to cancel an active reader.</li>
          452  +<li>Added beta table and view designers to the Visual Studio Server Explorer.&nbsp;
          453  +You can now edit/create tables and views, manage indexes and foreign keys from Visual
          454  +Studio.&nbsp; This feature is still undergoing testing so use at your own risk!</li>
          455  +<li>Fixed the Server Explorer so VS2005 users can once again right-click tables
          456  +and views and open the table data.</li>
          457  +<li>Added some new interop code to assist in returning more metadata not normally
          458  +available through the SQLite API.&nbsp; Specifically, index column sort modes and
          459  +collating sequences.&nbsp; Also added code to detect (but not parse) CHECK constraints,
          460  +so the table designer can pop up a warning when editing a table with these constraints.&nbsp;
          461  +Since I can&#39;t currently parse them.</li>
          462  +<li>Lots of LINQ SQL generation improvements and fixes.</li>
          463  +<li>Made some progress cleaning up and fixing up the schema definitions and manifests
          464  +for EdmGen.</li>
          465  +<li>Added a built-in SQLiteFunction called last_rows_affected() which can be called
          466  +from SQL to get the number of rows affected by the last update/insert operation
          467  +on the connection.&nbsp; This is roughly equivalent to Sql Server&#39;s @@ROWCOUNT
          468  +variable.</li>
          469  +</ul>
          470  +<p>
          471  +<b>1.0.51.0 - July 1, 2008</b></p>
          472  +<ul>
          473  +<li><b>VS2008 SP1 Beta1 LINQ Support</b></li>
          474  +<li>Added experimental Entity Framework support in a new library, System.Data.SQLite.Linq.&nbsp;
          475  +Some things work, some don&#39;t.&nbsp; I haven&#39;t finished rigging everything
          476  +up yet.&nbsp; The core library remains stable.&nbsp; All LINQ-specific code is completely
          477  +separate from the core.</li>
          478  +<li>Added some columns to several existing schemas to support some of the EDM framework
          479  +stuff.</li>
          480  +<li>Minor tweaks to the factory to better support dynamic loading of the Linq extension
          481  +library for SQLite.</li>
          482  +<li>SQLite&#39;s busy handler was interfering with the provider&#39;s busy handling
          483  +mechanism, so its been disabled.</li>
          484  +</ul>
          485  +<p>
          486  +<b>1.0.50.0 - June 27, 2008</b></p>
          487  +<ul>
          488  +<li>Fixed some lingering dispose issues and race conditions when some objects were
          489  +finalized.</li>
          490  +<li>Fixed the SQLiteConvert.Split() routine to be a little smarter when splitting
          491  +strings, which solves the quoted data source filename problem.</li>
          492  +<li>Enhanced the mergebin utility to work around the strong name validation bug
          493  +on the Compact Framework.&nbsp; The old workaround kludged the DLL and caused WM6.1
          494  +to fail to load it.&nbsp; This new solution is permanent and no longer kludges the
          495  +DLL.</li>
          496  +</ul>
          497  +<p>
          498  +<b>1.0.49.0 - May 28, 2008</b></p>
          499  +<ul>
          500  +<li>Code merge with SQLite 3.5.9</li>
          501  +<li>Fixed schema problems when querying the TEMP catalog.</li>
          502  +<li>Changed BLOB datatype schema to return IsLong = False instead of True.&nbsp;
          503  +This was preventing DbCommandBuilder from using GUID's and BLOB's as primary keys.</li>
          504  +<li>Fix rollover issue with SQLite3.Reset() using TickCount.</li>
          505  +<li>Fixed SQLiteDataReader to dispose of its command (if called for) before closing
          506  +the connection (when flagged to do so) instead of the other way around.</li>
          507  +<li>Fixed a DbNull error when retrieving items not backed by a table schema.</li>
          508  +<li>Fixed foreign key constraint parsing bug.</li>
          509  +<li>Added FailIfMissing property to the SQLiteConnectionStringBuilder.</li>
          510  +<li>Converted the source projects to Visual Studio 2008.</li>
          511  +</ul>
          512  +<p>
          513  +<b>1.0.48.0 - December 28, 2007</b></p>
          514  +<ul>
          515  +<li>Code merge with SQLite 3.5.4</li>
          516  +<li>Calling SQLiteDataReader.GetFieldType() on a column with no schema information
          517  +and whos first row is initially NULL now returns type Object instead of type DbNull.</li>
          518  +<li>Added support for a new DateTime type, JulianDay.&nbsp; SQLite uses Julian dates
          519  +internally.</li>
          520  +<li>Added a new connection string parameter "Default Timeout" and a corresponding
          521  +method on the SQLiteConnection object to change the default command timeout.&nbsp;
          522  +This is especially useful for changing the timeout on transactions, which use SQLiteCommand
          523  +objects internally and have no ADO.NET-friendly way to adjust the command timeout
          524  +on those commands.</li>
          525  +<li>FTS1 and FTS2 modules were removed from the codebase.&nbsp; Please upgrade all
          526  +full-text indexes to use the FTS3 module.&nbsp;</li>
          527  +</ul>
          528  +<p>
          529  +<b>1.0.47.2 - December 10, 2007</b></p>
          530  +<ul>
          531  +<li>Fixed yet one more bug when closing a database with unfinalized command objects</li>
          532  +<li>Fixed the DataReader's GetFieldType function when dealing with untyped SQLite
          533  +affinities</li>
          534  +</ul>
          535  +<p>
          536  +<b>1.0.47.1 - December 5, 2007</b></p>
          537  +<ul>
          538  +<li>Fixed a leftover bug from the codemerge with SQLite 3.5.3 that failed to close
          539  +a database.</li>
          540  +<li>Fixed the broken Compact Framework distribution binary.</li>
          541  +<li>SQLite 3.5.x changed some internal infrastructure pieces in the encryption interface
          542  +which I didn't catch initially.&nbsp; Fixed.&nbsp;</li>
          543  +</ul>
          544  +<p>
          545  +<b>1.0.47.0 - December 4, 2007</b></p>
          546  +<ul>
          547  +<li>Code merge with SQLite 3.5.3</li>
          548  +<li>Added installer support for Visual Studio 2008.&nbsp; Code is still using the
          549  +VS2005 SDK so one or two bells and whistles are missing, but nothing significant.</li>
          550  +<li>This is the last version that the FTS1 and FTS2 extensions will appear.&nbsp;
          551  +Everyone should rebuild their fulltext indexes using the new FTS3 module.&nbsp;
          552  +FTS1 and FTS2 suffer from a design flaw that could cause database corruption with
          553  +certain vacuum operations.</li>
          554  +<li>Fixed pooled connections so they rollback any outstanding transactions before
          555  +going to the pool.&nbsp; </li>
          556  +<li>Fixed the unintended breaking of the TYPES keyword, and mis-typing of untyped
          557  +or indeterminate column types. </li>
          558  +<li>Assert a FileIOPermission() requirement in the static SQLiteFunction constructor.
          559  +</li>
          560  +<li>The CE-only SQLiteFunction.RegisterFunction() is now available on the desktop
          561  +platform for dynamic registration of functions.&nbsp; You must still close and re-open
          562  +a connection in order for the new function to be seen by a connection.</li>
          563  +<li>Fixed the "database is locked" errors by implementing behavioral changes in
          564  +the interop.c file for SQLite.&nbsp; Closing a database force-finalizes any prepared
          565  +statements on the database to ensure the connection is fully closed.&nbsp; This
          566  +was rather tricky because the GC thread could still be finalizing statements itself.
          567  +&nbsp;</li>
          568  +<li>Modifed the mergebin utility to help circumvent a long-standing strong name
          569  +verification bug in the Compact Framework.</li>
          570  +</ul>
          571  +<p>
          572  +<b>1.0.46.0 - September 30, 2007</b></p>
          573  +<ul>
          574  +<li>Fixed faulty logic in type discovery code when using SQLiteDataReader.GetValue().</li>
          575  +<li>Fixed Connection.Open() bug when dealing with :memory: databases.</li>
          576  +<li>Fixed SQLiteCommand.ExecuteScalar() to return a properly-typed value.</li>
          577  +<li>Added support for SQLiteParameter.ResetDbType().</li>
          578  +<li>Added test cases for rigid and flexible type testing.</li>
          579  +</ul>
          580  +<p>
          581  +<b>1.0.45.0 - September 25, 2007</b></p>
          582  +<ul>
          583  +<li><strong>Breaking change in GetSchema("Indexes") </strong>-- MetaDataCollections
          584  +restrictions and identifier parts counts were wrong for this schema and I was using
          585  +the wrong final parameter as the final restriction.&nbsp; Meaning, if you use the
          586  +Indexes schema and are querying for a specific index the array should now be {catalog,
          587  +null, table, index } instead of {catalog, null, table, null, index}</li>
          588  +<li>Code merge with SQLite 3.4.2</li>
          589  +<li>Fixed some errors in the encryption module, most notably when a non-default
          590  +page size is specified in the connection string. </li>
          591  +<li>Fixed SQLiteDataReader to better handle type-less usage scenarios, which also
          592  +fixes problems with null values and datetimes.</li>
          593  +<li>Fixed the leftover temp files problem on WinCE </li>
          594  +<li>Added connection pooling.&nbsp; The default is disabled for now, but may change
          595  +in the future.&nbsp; Set "Pooling=True" in the connection string to enable it. </li>
          596  +<li>Sped up SQLiteConnection.Open() considerably.</li>
          597  +<li>Added some more robust cleanup code regarding SQLiteFunctions.</li>
          598  +<li>Minor additions to the code to allow for future LINQ integration into the main
          599  +codebase.</li>
          600  +<li>Fixed a long-standing bug in the Open() command of SQLiteConnection which failed
          601  +to honor the documented default behavior of the SQLite.NET provider to open the
          602  +database in "Synchronous=Normal" mode.&nbsp; The default was "Full". </li>
          603  +<li>If Open() fails, it no longer sets the connection state to Broken.&nbsp; It
          604  +instead reverts back to Closed, and cleans up after itself.</li>
          605  +<li>Added several new parameters to the ConnectionString for setting max page count,
          606  +legacy file format, and another called FailIfMissing to raise an error rather than
          607  +create the database file automatically if it does not already exist.</li>
          608  +<li>Fixed some designer toolbox references to the wrong version of the SQLite.Designer</li>
          609  +<li>Fixed a bug in the mergebin utility with regards to COR20 metadata rowsize computations.&nbsp;
          610  +</li>
          611  +<li>Minor documentation corrections &nbsp;&nbsp;</li>
          612  +</ul>
          613  +<p>
          614  +<b>1.0.44.0 - July 21, 2007</b></p>
          615  +<ul>
          616  +<li>Code merge with SQLite 3.4.1</li>
          617  +<li>Fixed a bug in SQLiteConnection.Open() which threw the wrong kind of error in
          618  +the wrong kind of way when a database file could not be opened or created.&nbsp;</li>
          619  +<li>Small enhancements to the TYPES keyword, and added documentation for it in the
          620  +help file.</li>
          621  +<li>Hopefully fixed the occasional SQLITE_BUSY errors that cropped up when starting
          622  +a transaction.&nbsp; Usually occurred in high-contention scenarios, and the underlying
          623  +SQLite engine bypasses the busy handler in this scenario to return immediately.</li>
          624  +</ul>
          625  +<p>
          626  +<b>1.0.43.0 - June 21, 2007</b></p>
          627  +<ul>
          628  +<li>Code merge with SQLite 3.4.0</li>
          629  +<li>Fixed a reuse bug in the SQLiteDataAdapter in conjunction with the SQLiteCommandBuilder.&nbsp;
          630  +It's been there unnoticed for more than a year, so it looks like most folks never
          631  +encountered it. </li>
          632  +<li>Fixed an event handler bug in SQLiteCommandBuilder in which it could fail to
          633  +unlatch from the DataAdapter when reused.&nbsp; Relates to the previous bugfix.</li>
          634  +<li>Fixed a double-dispose bug in SQLiteStatement that triggered a SQLiteException.&nbsp;</li>
          635  +</ul>
          636  +<p>
          637  +<b>1.0.42.0 - June 1, 2007</b></p>
          638  +<ul>
          639  +<li>Code merge with SQLite 3.3.17</li>
          640  +<li>Changed the SQLiteFunction static constructor so it only enumerates loaded modules
          641  +that have referenced the SQLite assembly, which hopefully should cut down dramatically
          642  +the time it takes for that function to execute.&nbsp;</li>
          643  +<li>Added the FTS2 full-text search extension to the project.&nbsp; Look for FTS1
          644  +to disappear within the next couple of revisions.&nbsp;</li>
          645  +<li>Fixed a bug introduced with the finalizers that triggered an error when statements
          646  +ended with a semi-colon or had other non-parsable comments at the end of a statement&nbsp;</li>
          647  +<li>Fixed an intermittent multi-threaded race condition between the garbage collector
          648  +thread and the main application thread which lead to an occasional SQLITE_MISUSE
          649  +error.</li>
          650  +<li>Fixed another issue relating to SQLite's inherent typelessness when dealing
          651  +with aggregate functions which could return Int64 or Double or even String for a
          652  +given row depending on what was aggregated.</li>
          653  +<li>Remembered to recompile the DDEX portion of the engine this time, so Compact
          654  +Framework users can once again use the design-time functionality</li>
          655  +</ul>
          656  +<p>
          657  +<b>1.0.41.0 - April 23, 2007</b></p>
          658  +<ul>
          659  +<li>Code merge with SQLite 3.3.16</li>
          660  +<li>Second go at implementing proper finalizers to cleanup after folks who've forgotten
          661  +to Dispose() of the SQLite objects</li>
          662  +<li>Enhanced GetSchema(IndexColumns) to provide numeric scale and precision values</li>
          663  +<li>Fixed the column ordinals in GetSchema(IndexColumns) to report the ordinal of
          664  +the column in the index, not the table</li>
          665  +<li>Fixed a bug whereby parameters named with an empty string (such as String.Empty)
          666  +were treated like a named parameter instead of an unnamed parameter</li>
          667  +</ul>
          668  +<p>
          669  +<b>1.0.40.0 - January 31, 2007</b></p>
          670  +<ul>
          671  +<li>Code merge with SQLite 3.3.12</li>
          672  +<li>Lots of new code to handle misuse of the library.&nbsp; Implemented finalizers
          673  +where it made sense, fixed numerous garbage collector issues when objects are not
          674  +disposed properly, &nbsp;fixed some object lifetime issues, etc.</li>
          675  +<li>A failed Commit() on a transaction no longer leaves the transaction in an unusable
          676  +state.</li>
          677  +</ul>
          678  +<p>
          679  +<b>1.0.39.1 - January 11, 2007</b></p>
          680  +<ul>
          681  +<li>Fixed a really dumb mistake that for some reason didn't trigger any errors in
          682  +the testcases, whereby commands when associated with a connection were not adding
          683  +or removing themselves from an internal list of commands for that connection --
          684  +causing a "database is locked" error when trying to close the connection.</li>
          685  +</ul>
          686  +<p>
          687  +<b>1.0.39.0 - January 10, 2007</b></p>
          688  +<ul>
          689  +<li>Code merge with SQLite 3.3.10</li>
          690  +<li>Fixed a multi-threaded race condition bug in the garbage collector when commands
          691  +and/or connections are not properly disposed by the user. </li>
          692  +<li>Switched the encryption's internal deallocation code to use sqlite's built-in
          693  +aux functions instead of modifying the pager.c source to free the crypt block.&nbsp;
          694  +This eliminates the last of the code changes the provider makes to the original
          695  +sqlite engine sources.&nbsp; Props to Ralf Junker for pointing that out.</li>
          696  +</ul>
          697  +<p>
          698  +<b>1.0.38.0 - November 22, 2006</b></p>
          699  +<ul>
          700  +<li>Fixed a bug when using CommandBehavior.KeyInfo whereby integer primary key columns
          701  +may be duplicated in the results. </li>
          702  +<li>Enhanced the CommandBuilder so that update/delete statements are optimized when
          703  +the affected table contains unique constraints and a primary key is present.</li>
          704  +<li>Fixed a bug in the DataReader when used in conjunction with CommandBehavior.CloseConnection.</li></ul>
          705  +<p>
          706  +<b>1.0.37.0 - November 19, 2006</b></p>
          707  +<ul>
          708  +<li>Added support for CommandBehavior.KeyInfo.&nbsp; When specified in a query,
          709  +additional column(s) will be returned describing the key(s) defined for the table(s)
          710  +selected in the query.&nbsp; This is optimized when INTEGER PRIMARY KEY is set for
          711  +the given tables, but does additional work for other kinds of primary keys.</li>
          712  +<li>Removed the default values from SQLiteDataReader.GetTableSchema(), to better
          713  +follow Sql Server's pattern and suppress schema errors when loading the records
          714  +into a dataset/datatable.</li>
          715  +<li>Allow integers to implicitly convert to double/decimal/single.</li></ul>
          716  +<p>
          717  +<b>1.0.36.1 - October 25, 2006</b></p>
          718  +<ul>
          719  +<li>Added support for LONGVARCHAR, SMALLDATE and SMALLDATETIME. These were actually
          720  +added in 1.0.36.0 but were undocumented.</li>
          721  +<li>Fixed the embedded helpfile which was accidentally built from old sources. </li>
          722  +<li>Fixed an unfortunate re-entry of a bug in the .36 codebase that caused the provider
          723  +to "forget" about commands on a connection under certain circumstances.</li>
          724  +</ul>
          725  +<p>
          726  +<b>1.0.36.0 - October 23, 2006</b></p>
          727  +<ul>
          728  +<li>Code merge with SQLite 3.3.8, including support for full-text search via the
          729  +FTS1 extension.&nbsp;</li><li>Fixed a bug retrieving data types when UseUtf16Encoding
          730  +is true. Side-effect of further merging the common code between the two base classes.</li>
          731  +<li>Fixed a bug with System.Transactions whereby a connection closed/disposed within
          732  +a transaction scope is rolled back and cannot be committed.</li>
          733  +<li>Added more error checking and reporting to transactions to help user's isolate
          734  +the source of transaction failures.</li>
          735  +<li>Implemented a workaround for a Compact Framework issue regarding strong-named
          736  +assemblies containing a PE section with a raw size less than the virtual size.&nbsp;</li>
          737  +</ul>
          738  +<p>
          739  +<b>1.0.35.1 - September 12, 2006</b></p>
          740  +<ul>
          741  +<li>Fixed the TYPES keyword to work when UseUTF16Encoding is true.</li>
          742  +<li>Fix another bug revealed in 1.0.35.0 regarding infinite loops when the 2nd or
          743  +subsequent statements of a semi-colon separated command cannot be parsed.</li>
          744  +<li>Updated the help documentation.&nbsp;</li>
          745  +</ul>
          746  +<p>
          747  +<b>1.0.35.0 - September 10, 2006</b></p>
          748  +<ul>
          749  +<li>Fixed an infinite loop bug in SQLiteCommand caused when multiple semi-colon
          750  +separated statements in a single command are executed via datareader and one of
          751  +the statements contains a syntax error preventing it from being prepared.&nbsp;</li><li>
          752  +Added the TYPES preparser keyword to be placed before a SELECT statement to aid
          753  +the wrapper in converting expressions in a subsequent select clause into more robust
          754  +types.&nbsp; Documentation yet to be integrated, but available on the forums.</li>
          755  +<li>Added a new connectionstring parameter "BinaryGUID=true/false" (default is "true").&nbsp;
          756  +When true, guid types are stored in the database as binary blobs to save space.&nbsp;
          757  +Binary has been the default format since 1.0.32.0 but this parameter eases backward
          758  +compatibility.</li>
          759  +</ul>
          760  +<p>
          761  +<b>1.0.34.0 - September 4, 2006</b></p>
          762  +<ul>
          763  +<li>Fixed a bug in SQLiteParameterCollection.RemoveAt(namedparam)</li>
          764  +<li>Fixed a bug in SQLiteDataReader introduced in 1.0.30 that broke DateTimes using
          765  +the Ticks option in the connection string.</li>
          766  +<li>Fixed a bug in the recent changes to guid behavior wherein using a datareader's
          767  +indexer to fetch a guid from a column containing both binary and text guids would
          768  +sometimes return a byte array instead of a guid.</li>
          769  +<li>Enacted a workaround involving typed datasets in Compact Framework projects
          770  +in which it took an excessive amount of time to open a form and generated a lot
          771  +of temporary files in the user's Local Settings\Application Data\Microsoft\VisualStudio\8.0\Assembly
          772  +References folder.</li>
          773  +</ul>
          774  +<p>
          775  +<b>1.0.33.0 - August 21, 2006</b></p>
          776  +<ul>
          777  +<li>Code merge with SQLite 3.3.7</li>
          778  +<li>Fixed a bug in SQLiteConnection that caused it to "forget" about commands bound
          779  +to it and occasionally throw an error when a database is closed and opened repeatedly.&nbsp;
          780  +</li>
          781  +</ul>
          782  +<p>
          783  +<b>1.0.32.0 - August 6, 2006</b></p>
          784  +<ul>
          785  +<li>Added AllowPartiallyTrustedCallers attribute to the assembly</li><li>Added the
          786  +missing "nchar" type</li>
          787  +<li>Added support for binary Guid's.&nbsp; Guids are now stored as binary by default
          788  +when using parameterized queries.&nbsp; Text guids are still fully supported.</li>
          789  +<li>Fixed a TransactionScope() error that caused the transaction not to be completed.</li>
          790  +<li>Enhanced parameter names so that if they are added to the Parameters collection
          791  +without their prefix character (@ : or $) they are still properly mapped.&nbsp;</li>
          792  +</ul>
          793  +<p>
          794  +<b>1.0.31.0 - July 16, 2006</b></p>
          795  +<ul>
          796  +<li>Re-applied the view parsing bugfix in 1.0.29.0 that was accidentally reverted
          797  +out of the 30 build.</li><li>Fixed SQLiteCommand.ExecuteScalar() to return null
          798  +instead of DbNull.Value when no rows were returned.</li>
          799  +<li>Design-time installer now installs the package-based designer on full Visual
          800  +Studio versions.&nbsp; Express editions continue to use the packageless designer.</li>
          801  +<li>In Visual Studio (not Express), you can now right-click a SQLite connection
          802  +in the Server Explorer and vacuum the database and change the encryption password.</li>
          803  +</ul>
          804  +<p>
          805  +<b>1.0.30.1 - July 2, 2006</b></p>
          806  +<ul>
          807  +<li>Code merge with SQLite 3.3.6</li>
          808  +<li>Added support for the |DataDirectory| keyword in the Data Source filename string.&nbsp;
          809  +</li>
          810  +<li>Added hook notification support to SQLiteConnection.&nbsp; Specifically, there
          811  +are three new events on the SQLiteConnection object which are raised when an update/insert/delete
          812  +occurs and when transactions are committed and rolled back.</li><li>Changed SQLiteTransaction
          813  +to default to BEGIN IMMEDIATE instead of just BEGIN, which solves a multithreaded
          814  +race condition.&nbsp;</li>
          815  +<li>Changed SQLiteDataReader to better support SQLite's typelessness.&nbsp; The
          816  +data reader no longer caches column affinity, but re-evaluates it for each column/row.</li>
          817  +<li>Fixed a bug in Prepare() which caused an intermittant fault due to the code
          818  +accessing the memory of an unpinned variable.&nbsp;</li>
          819  +<li>Fixed a multithreaded lock-retry bug in in SQLiteConnection.Open() and in SQLiteTransaction,
          820  +which failed to use a command timeout before giving up.</li>
          821  +</ul>
          822  +<p>
          823  +<b>1.0.29.0 - May 16, 2006</b></p>
          824  +<ul>
          825  +<li>Fixed a bug in the Views schema information which caused multi-line view definition
          826  +statements not to be parsed</li>
          827  +<li>Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y)
          828  +datatypes with specified precision and scale</li>
          829  +<li>Fixed a bug in SQLiteConnection.Open() which tried to automatically enlist in
          830  +an ambient transaction but had not yet set the state of the database to Opened,
          831  +thereby causing a transaction fault</li>
          832  +<li>Changed SQLiteException to inherit from DbException on the full framework</li>
          833  +</ul>
          834  +<p>
          835  +<b>1.0.28.0 - April 14, 2006</b></p>
          836  +<ul>
          837  +<li>Code merge with SQLite 3.3.5</li>
          838  +<li>You can now specify a relative path in the Compact Framework's "Data Source"
          839  +by prefixing the file with ".\".&nbsp; i.e. "Data Source=.\\mydb.db3"</li>
          840  +<li>Several more changes and enhancements to schemas for better compatibility.</li>
          841  +<li>Fixed several bugs with the 64-bit builds of the provider.&nbsp; The x64 binary
          842  +is now optimized.</li>
          843  +<li>Design-time installer now tries to install the 64-bit builds into the GAC along
          844  +with the 32-bit build.</li>
          845  +<li>Fixed a bug in the SQLiteDataReader.GetSchemaTable() function when used with
          846  +tables containing apostrophes.</li>
          847  +<li>Fixed an XSD-related bug whereby the XSD utility was unable to locate the provider
          848  +and could not generate typed datasets.</li>
          849  +<li>Added NTEXT and STRING datatypes to the list of recognized keywords (used for
          850  +schema retrieval).</li>
          851  +<li>Due to the XSD bug and other potential problems related to external build utilities,
          852  +changes to the installation of the designer have had to be made.&nbsp; The installer
          853  +used to write the DbProviderFactories XML into the devenv.exe.config file and its
          854  +express cousins, but now has to write instead to the machine.config.</li>
          855  +<li>Installer writes to both the 32-bit machine.config and the 64-bit machine.config
          856  +if it exists.&nbsp;</li>
          857  +</ul>
          858  +<p>
          859  +<b>1.0.27.1 - February 28, 2006</b></p>
          860  +<ul>
          861  +<li>Fixed a bug when doing data binding in Compact Framework projects that prevented
          862  +you from assigning a typed dataset to a bindingsource.&nbsp; It turns out, the CF
          863  +version of the SQLite provider needs to be flagged as retargetable so it'll work
          864  +in the design-time desktop environment.&nbsp; No changes were made to the desktop
          865  +build, but the revision was bumped on all libraries anyway in order to keep them
          866  +sync'd.&nbsp;</li></ul>
          867  +<p>
          868  +<b>1.0.27.0 - February 27, 2006</b></p>
          869  +<ul>
          870  +<li>Many optimizations and a few more minor adjustments to schemas and schema retrieval
          871  +performance.</li>
          872  +<li>Lots of design-time attributes added to the code.&nbsp; The DbDataAdapter, DbCommand,
          873  +and DbConnection objects now have greatly enhanced design-time capabilities when
          874  +added to the toolbox and dropped on a form.</li>
          875  +<li>Lots of Server Explorer enhancements.</li>
          876  +<li>Binaries are now distributed in a setup program for easier administration and
          877  +configuration of the provider.</li>
          878  +</ul>
          879  +<p>
          880  +<b>1.0.26.2 - February 15, 2006</b></p>
          881  +<ul>
          882  +<li>Yet another bugfix to index schemas, which was incorrectly marking most indexes
          883  +as primary key indexes.</li><li>Fixed GetSchema() to accept a null string array.</li><li>
          884  +Fixed a misspelled export in the core C library that prevented databases opened
          885  +with UTF16Encoding from getting schema information and would likely cause an error
          886  +if attempted.</li></ul>
          887  +<p>
          888  +<b>1.0.26.1 - February 14, 2006</b></p>
          889  +<ul>
          890  +<li>Fixed even more minor schema bugs having to do with indexes.</li><li>Added two
          891  +missing pieces in the SQLite designer which were preventing it from being used from
          892  +within VS Express editions.&nbsp;</li><li>Several bugfixes to the design-time installer
          893  +program, including supporting 64-bit environments.</li></ul>
          894  +<p>
          895  +<b>1.0.26.0 - February 11, 2006</b></p>
          896  +<ul>
          897  +<li>Code merge with SQLite 3.3.4</li><li>Fixed an encryption bug when changing the
          898  +password of databases over 1gb in size.&nbsp;</li><li>Fixed various designer issues
          899  +related to construction of named parameters.</li>
          900  +<li>Retooled the GetSchema() method of SQLiteDataReader to use the new 3.3.4 API
          901  +functions, and made several enhancements and fixes to schemas.&nbsp;</li>
          902  +<li>Implemented the SourceColumnNullMapping property of SQLiteParameter to fix a
          903  +DbCommandBuilder code generation bug.&nbsp;</li><li>Removed the runtime dependency
          904  +on MSVCR80.DLL.&nbsp; File size is somewhat larger for the varying desktop versions.</li><li>
          905  +Created an install program to manage installation and uninstallation of the SQLite
          906  +design-time support.</li>
          907  +<li>Designer support now works for all Visual Studio editions, including all Express
          908  +Editions.</li>
          909  +<li>Design-time installer will now remove (if present) the machine.config SQLite
          910  +entries in favor of installing the xml code into the devenv.exe.config file (or
          911  +any of the variations for express editions).&nbsp; The officially-accepted behavior
          912  +of using DbProviderFactories is to add the code to your app.config file, and the
          913  +machine.config file should not be touched.</li>
          914  +</ul>
          915  +<p>
          916  +<b>1.0.25.0 - January 31, 2006</b></p>
          917  +<ul>
          918  +<li>Code merge with SQLite 3.3.3</li><li>Added automatic distributed transaction
          919  +enlistment and implemented the DbConnection.EnlistTransaction method for manual
          920  +enlistment.</li>
          921  +<li>Nested transactions are now supported.</li>
          922  +<li>Rearranged the timing of SetPassword(), which now must be called before the
          923  +database is opened instead of afterwards.&nbsp; Optionally, the password can be
          924  +supplied in the ConnectionString.</li>
          925  +<li>Fixed a bug in SQLiteFunction that caused a failure when an empty resultset
          926  +was returned and a custom user aggregate function was used in the query.</li>
          927  +<li>The designer has had another round of cleanup applied, in preparation for moving
          928  +to a VS package.</li>
          929  +<li>Added SQLiteMetaDataCollectionNames class.</li>
          930  +</ul>
          931  +<p>
          932  +<b>1.0.24.6 beta - January 23, 2006</b></p>
          933  +<ul>
          934  +<li>This beta is built from sqlite.org's 3.3.2 beta.</li><li>Eliminated the static
          935  +linking of mscoree from all binaries.&nbsp; Native projects can now use the library
          936  +without any dependencies on the .NET framework, while managed projects continue
          937  +to be able to use the library normally.</li></ul>
          938  +<p>
          939  +<b>1.0.24.5 beta - January 20, 2006</b></p>
          940  +<ul>
          941  +<li>This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress
          942  +code.&nbsp; Therefore no guarantees can be made regarding its suitability for production
          943  +use.</li>
          944  +<li><strong>You no longer need to distribute 2 files on the CompactFramework.&nbsp;
          945  +You can delete SQLite.Interop.DLL entirely.&nbsp; </strong>I wrote a custom tool
          946  +called "mergebin" (available in the source zip file) which combines the two libraries
          947  +and gets around a glaring defect in the VS2005 linker for ARM processors which doesn't
          948  +allow you to link netmodules.</li>
          949  +<li><strong>x64 and ia64 builds now use the same strong name as the x86 build.</strong>&nbsp;
          950  +This means breaking backward compatibility, but it was necessary in order to allow
          951  +you to drop any of those 3 builds onto a PC and have your .NET program run properly.&nbsp;
          952  +Prior to this, you'd get an error if you built your program using the x86 build,
          953  +and then installed the x64 version on a target machine and tried to run your program
          954  +against it.</li>
          955  +<li>The entire source project has been gone over top to bottom.&nbsp; A debug build
          956  +no longer combines the binaries into a single module, which was preventing proper
          957  +debugging.</li></ul>
          958  +<p>
          959  +<b>1.0.24.4 beta - January 16, 2006</b></p>
          960  +<ul>
          961  +<li>This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress
          962  +code.&nbsp; Therefore no guarantees can be made regarding its suitability for production
          963  +use.</li>
          964  +<li>Fixed a bug in the UTF-16 handling code for preparing statements due to a behavioral
          965  +change in SQLite 3.3.0.</li>
          966  +<li>Added pager.c code necessary to cleanup after an encrypted file is closed.</li>
          967  +<li>Fixed an encryption bug that caused a fault when an encrypted file was rolled
          968  +back.</li>
          969  +<li>Modified the testcase code to take advantage of optimizations regarding the
          970  +use of a DbCommandBuilder.&nbsp; DataAdapter insert speed increased dramatically
          971  +as a result.</li>
          972  +</ul>
          973  +<p>
          974  +<b>1.0.24.3 beta - January 10, 2006</b></p>
          975  +<ul>
          976  +<li>This beta is built from sqlite.org's 3.3.0 alpha and contains development-in-progress
          977  +code.&nbsp; Therefore no guarantees can be made regarding its suitability for production
          978  +use.</li><li>Added support for database encryption at the pager level.&nbsp; Databases
          979  +are encrypted using a 128-bit RC4 stream algorithm.&nbsp; To open an existing encrypted
          980  +database, you may now specify a "Password={password}" text in the ConnectionString,
          981  +or you may call the SQLiteConnection.SetPassword() function to set the password
          982  +on an open connection. &nbsp;To encrypt existing non-encrypted databases or to change
          983  +the password on an encrypted database, you must use the SQLiteConnection.ChangePassword()
          984  +function.&nbsp; If you use SetPassword() instead of specifying a password in the
          985  +connection string, or call ChangePassword() you may use a binary byte array or a
          986  +text string as the password.</li>
          987  +<li>Rewrote the locking implementation for the Compact Framework.&nbsp; It is now
          988  +more robust and incorporates into the SQLite codebase more efficiently than the
          989  +previous CE adaptation.</li>
          990  +<li>Moved some of the embedded schema XML data into a resource file to ease code
          991  +readability.</li>
          992  +<li>Automated the fixup of the original sqlite codebase's source prior to compiling,
          993  +to ease merging with sqlite.org's source.</li>
          994  +<li>Fixed a memory leak in SQLiteCommand due to it not removing an internal reference
          995  +to itself in SQLiteConnection.&nbsp; </li>
          996  +</ul>
          997  +<p>
          998  +<b>1.0.24.2 - December 30, 2005</b></p>
          999  +<ul>
         1000  +<li>Fixed the SQLiteDataReader.HasRows property to return the proper value.</li>
         1001  +<li>Implemented the inadvertently neglected RecordsAffected property on SQLiteDataReader.
         1002  +</li>
         1003  +<li>SQLiteFunction static constructor was changed to pre-filter classes with only
         1004  +the SQLiteFunctionAttribute.&nbsp; The code was throwing an exception when certain
         1005  +assemblies were referenced in a project. </li>
         1006  +<li>Fixed the SQLiteDataAdapter OnRowUpdated event, which was using the wrong variable
         1007  +to find the attached event handler and subsequently not raising the event.</li>
         1008  +<li>Small optimizations and fixes to SQLiteDataReader.NextResult().&nbsp;</li>
         1009  +</ul>
         1010  +<p>
         1011  +<b>1.0.24.1 - December 19, 2005</b></p>
         1012  +<ul>
         1013  +<li>Update core SQLite engine to 3.2.8&nbsp;</li></ul>
         1014  +<p>
         1015  +<b>1.0.24 - December 9, 2005</b></p>
         1016  +<ul>
         1017  +<li>Fixed the<em> Catalogs</em> schema bug that caused attached databases not to
         1018  +be re-attached to a cloned connection </li>
         1019  +<li>Enhanced transactions to allow for a deferred or immediate writelock. &nbsp;SQLiteConnection.BeginTransaction()
         1020  +now has an additional overload to support it&nbsp;</li><li>Commands are now prepared
         1021  +as they are executed instead of beforehand.&nbsp; This fixes a bug whereby a multi-statement
         1022  +command that alters the database and subsequently references the altered data would
         1023  +fail during Prepare().</li><li>Tightened up the SQLiteDataReader to prevent reading
         1024  +columns before calling the first Read() and to prevent reading columns after the
         1025  +last Read().</li>
         1026  +<li>A more descriptive error is thrown if there aren't enough parameters in the
         1027  +command to satisfy the parameters required by the statement(s).&nbsp;</li>
         1028  +</ul>
         1029  +<p>
         1030  +<b>1.0.23 - November 21, 2005</b></p>
         1031  +<ul>
         1032  +<li>Named parameters may now begin with <strong>@</strong> to ease portability of
         1033  +the provider. SQLite's named parameters are ordinarily prefixed with a <strong>:
         1034  +</strong>or<strong> $</strong>.&nbsp; The designer will still use the <strong>$</strong>
         1035  +prefix however, since its more compatible with the default SQLite engine.</li><li>
         1036  +Added several alternate ISO8601 date/time formats to SQLiteConvert.cs to increase
         1037  +compatibility.</li>
         1038  +<li>Relaxed coersion restrictions to work better with SQLite's inherent typelessness.&nbsp;</li>
         1039  +</ul>
         1040  +<p>
         1041  +<b>1.0.22 - November 11, 2005</b></p>
         1042  +<ul>
         1043  +<li>Fixed some globalization issues which resulted in incorrect case-insensitive
         1044  +comparisons</li>
         1045  +<li>Fixed a bug in the routine that finds all user-defined functions in a loaded
         1046  +assembly.&nbsp; It would throw an exception if any of the types in the assembly
         1047  +could not be loaded.&nbsp; The exception is now caught and handled appropriately.</li>
         1048  +</ul>
         1049  +<p>
         1050  +<b>1.0.21 - November 4, 2005</b></p>
         1051  +<ul>
         1052  +<li>Fixed a designer bug when creating typed datasets with parameterized queries.</li>
         1053  +<li>The above fix then exposed another bug in the datareader's ability to query
         1054  +schema information on parameterized commands, which was also fixed.</li>
         1055  +<li>Compiled against the RTM version of VS2005.</li>
         1056  +<li>Rewrote the design-time install script to use the XML DOM objects when writing
         1057  +to the machine.config and to automatically register the DLL in the GAC.</li><li>
         1058  +Made changes to the app.config descriptions and help file to improve version-independent
         1059  +factory support.</li></ul>
         1060  +<p>
         1061  +<b>1.0.20 - October 19, 2005</b></p>
         1062  +<ul>
         1063  +<li>Fixed a shortcut in SQLiteBase.GetValue which was insufficient for international
         1064  +environments.&nbsp; The shortcut was removed and the "proper" procedure put in.</li></ul>
         1065  +<p>
         1066  +<b>1.0.19 - October 5, 2005</b></p>
         1067  +<ul>
         1068  +<li>Code merge with SQLite 3.2.7
         1069  +<li>Fixed bugs in the CE port code (os_wince.c)&nbsp;which were brought to light&nbsp;by&nbsp;recent
         1070  +changes in the SQLite engine.
         1071  +<li>Recompiled and modified to be compatible with the September VS2005 Release Candidate.<br />
         1072  +Beta 2 users should continue to use 1.0.18.1</li></ul>
         1073  +<p>
         1074  +<b>1.0.18.1 - September 19, 2005</b></p>
         1075  +<ul>
         1076  +<li>Code merge with SQLite 3.2.6</li></ul>
         1077  +<p>
         1078  +<b>1.0.18 - September 1, 2005</b></p>
         1079  +<ul>
         1080  +<li>Added type-specific method calls when using the various SQLite classes that
         1081  +would've normally returned a a generic Db base class, which aligns the code better
         1082  +with the Microsoft-supplied data providers.</li></ul>
         1083  +<p>
         1084  +<b>1.0.17 - August 26, 2005</b></p>
         1085  +<ul>
         1086  +<li>Code merge with SQLite 3.2.5
         1087  +<li>Added Itanium and x64 build settings to the project (needs testing)
         1088  +<li>Bugfixes and enhancements to several schema types
         1089  +<li>Additional design-time support to include index and foreign key enumerations.&nbsp;
         1090  +Requires re-registering the designer using INSTALL.CMD.&nbsp; The new designer code
         1091  +now allows the VS query designer and typed datasets to automatically link up foreign
         1092  +keys, use indexes, and automatically generate relationships from the schema.<li>
         1093  +Additional static methods on SQLiteConnection to create a database file, encrypt
         1094  +a file using the Encrypted File System (EFS) on NTFS (requires NT 2K or above) and
         1095  +NTFS file compression</li>
         1096  +</ul>
         1097  +<p>
         1098  +<b>1.0.16 - August 24, 2005</b></p>
         1099  +<ul>
         1100  +<li>Code merge with SQLite 3.2.4 with the large delete bugfix in CVS (which will
         1101  +become 3.2.5 soon)
         1102  +<li>Added new GetSchema() types: IndexColumns, ViewColumns, ForeignKeys</li>
         1103  +</ul>
         1104  +<p>
         1105  +<b>1.0.15 - August 22, 2005</b><br />
         1106  +</p>
         1107  +<ul>
         1108  +<li>Code merge with SQLite 3.2.3
         1109  +<li>Minor updates for better design-time experience. More design-time code to follow
         1110  +in subsequent releases.</li>
         1111  +</ul>
         1112  +<p>
         1113  +<b>1.0.14 - August 16, 2005</b><br />
         1114  +</p>
         1115  +<ul>
         1116  +<li>Fixed a bug in the SQLiteDataAdapter due to insufficient implementation of the
         1117  +class.&nbsp; The RowUpdating and RowUpdated events are now properly implemented,
         1118  +but unfortunately inserting and updating data in a DataTable or DataSet is now much
         1119  +slower.&nbsp; This is the proper design however, so the changes are here to stay.
         1120  +<li>Lots of schema changes to support Visual Studio's Data Designer architecture.<li>
         1121  +Added Designer support for the provider.&nbsp; It's not 100%, but you can design
         1122  +queries, add typed datasets and perform quite a number of tasks all within Visual
         1123  +Studio now.</li></ul>
         1124  +<p>
         1125  +<b>1.0.13 - August 8, 2005</b><br />
         1126  +</p>
         1127  +<div>
         1128  +<ul>
         1129  +<li>Fixed a named parameter bug in the base SQLite_UTF16 class, which of course
         1130  +only showed up when a database connection was opened using the UseUTF16Encoding=True
         1131  +parameter.
         1132  +<li>Fixed a performance issue in SQLite_UTF16 involving string marshaling.</li></ul>
         1133  +</div>
         1134  +<p>
         1135  +<b>1.0.12 - August 5, 2005</b><br />
         1136  +</p>
         1137  +<div>
         1138  +<ul>
         1139  +<li>Full support for the Compact Framework.&nbsp; Each build (Debug/Release) now
         1140  +has a&nbsp;platform, either Win32 or Compact Framework.&nbsp; The correct projects
         1141  +are built accordingly.&nbsp; See the&nbsp;<a href="#redist">Distributing SQLite</a>
         1142  +section for information on what files need to be distributed for each platform.&nbsp;
         1143  +<li>Modified SQLite3.Reset() and Step() functions to transparently handle timeouts
         1144  +while waiting on the database to become available (typically when a writer is waiting
         1145  +on a reader to finish, or a reader is waiting on a writer to finish).
         1146  +<li>Lots of code cleanup&nbsp;as suggested&nbsp;by the Code Analyzer (FxCop).
         1147  +<li>Lots of updates to the helpfile (as you can see).
         1148  +<li>Statements&nbsp;were already prepared lazily&nbsp;in a SQLiteCommand, but now
         1149  +its even more lazy.&nbsp; Statements are now only prepared if the statements haven't
         1150  +been previously prepared and a Prepare() function is called (and the command is
         1151  +associated with a connection) or just prior to the command being executed.&nbsp;</li></ul>
         1152  +</div>
         1153  +<p>
         1154  +<b>1.0.11 - August 1, 2005</b><br />
         1155  +</p>
         1156  +<ul>
         1157  +<li><strong>For everything except the Compact Framework, System.Data.SQLite.DLL
         1158  +is now the <em>only</em> DLL required to use this provider!</strong>&nbsp; The assembly
         1159  +is now a multi-module assembly, containing both the native SQLite3 codebase and
         1160  +the C# classes built on top of it.&nbsp; The Compact Framework version (when completed)
         1161  +will not be able to support this feature, so backwards compatibility with the Compact
         1162  +Framework has been preserved for the future.
         1163  +<li>Fixed a bug in SQLiteCommand.ExecuteScalar() that caused it to stop executing
         1164  +commands once it obtained the first column of the first row-returning resultset.&nbsp;
         1165  +Any remaining statements after the row-returning statement was ignored. </li>
         1166  +</ul>
         1167  +<p>
         1168  +<b>1.0.10 - June 10, 2005</b><br />
         1169  +</p>
         1170  +<ul>
         1171  +<li>Fixed a bug in the SQLite3.cs Prepare() function that created a statement even
         1172  +when the SQLite engine returned a NULL pointer. Typically this occurs when multiple
         1173  +statements are processed and there are trailing comments at the end of the statement.
         1174  +<li>Fixed a bug in SQLiteStatement.cs that retrieved parameter names for a parameterized
         1175  +query.&nbsp; SQLite's parameters are 1-based, and the function was starting at 0.&nbsp;
         1176  +This was fine when all parameters were unnamed, but for named parameters it caused
         1177  +the parameters to be out of whack. </li>
         1178  +</ul>
         1179  +<p>
         1180  +<b>1.0.09a - May 25, 2005</b><br />
         1181  +</p>
         1182  +<ul>
         1183  +<li>Fixed a broken helpfile and corrected some obsolete help remarks in SQLiteFunction.cs
         1184  +<li>Added a version resource to the SQLite.Interop.DLL.&nbsp;</li></ul>
         1185  +<p>
         1186  +<b>1.0.09 - May 24, 2005</b><br />
         1187  +</p>
         1188  +<ul>
         1189  +<li>Code merge with the latest 3.21 version of SQLite.
         1190  +<li>Removed obsolete methods and properties for Whidbey Beta 2</li></ul>
         1191  +<p>
         1192  +<b>1.0.08 Refresh - Mar 24, 2005<br />
         1193  +</b>
         1194  +</p>
         1195  +<ul>
         1196  +<li>Code merge with the latest 3.20 version of SQLite.
         1197  +<li>Recompiled the help file to fix a build error in it. </li>
         1198  +</ul>
         1199  +<p>
         1200  +<b>1.0.08 - Mar 11, 2005<br />
         1201  +</b>
         1202  +</p>
         1203  +<ul>
         1204  +<li>Added additional #if statements to support the old beta 1 edition of VS2005.
         1205  +<li>Code merged the SQLite 3.14 source. </li>
         1206  +</ul>
         1207  +<p>
         1208  +<b>1.0.07 - Mar 5, 2005</b><br />
         1209  +</p>
         1210  +<ul>
         1211  +<li>Made more optimizations to frequently-called functions, resulting in significant
         1212  +performance gains in all tests.
         1213  +<li>Recompiled the binaries using the latest VS2005 February CTP, resulting in yet
         1214  +more significant speed gains.&nbsp; The 100k insert test used to take 3.5 seconds
         1215  +and the insertwithidentity took almost 8 seconds.&nbsp; With the above two changes,
         1216  +those tests are now executing in 1.9 and 4.9 seconds respectively.</li></ul>
         1217  +<p>
         1218  +<b>1.0.06 - Mar 1, 2005<br />
         1219  +</b>
         1220  +</p>
         1221  +<ul>
         1222  +<li>Speed-ups to SQLiteDataReader.&nbsp; It was interop'ing unnecessarily every
         1223  +time it tried to fetch a field due to a logic error.
         1224  +<li>Changed/Added some code to SQLiteConvert's internal DbType, Type and TypeAffinity
         1225  +functions.
         1226  +<li>Fixed the SQLiteDataReader to obey the flags set in the optional CommandBehavior
         1227  +flag from SQLiteCommand.ExecuteReader().
         1228  +<li>Changed the default page size to 1024 to reflect the defaults of SQLite.&nbsp;
         1229  +Ignores the "Page Size" connection string option for memory databases, as tests
         1230  +revealed that changing it resulted in memory corruption errors.
         1231  +<li>Performance enhancements to the SQLiteCommand and SQLiteStatement classes which
         1232  +reduced the 100,000 row insert execution time as well as the various Function execution
         1233  +times significantly. </li>
         1234  +</ul>
         1235  +<p>
         1236  +<b>1.0.05 - Feb 25, 2005</b>
         1237  +</p>
         1238  +<ul>
         1239  +<li>Fixed the SQLite3 C# class step/reset functions to accomodate schema changes
         1240  +that invalidate a prepared statement.&nbsp; Statements are recompiled transparently.
         1241  +<li>Moved all native DLL declarations to an UnsafeNativeMethods class.
         1242  +<li>Split several classes into their own modules for readability.
         1243  +<li>Renamed many internal variables, reviewed access to variables marked as internal
         1244  +and altered their protection levels accordingly.
         1245  +<li>Due to the presence of the altered sqlite3 codebase and so many added interop
         1246  +functions, I decided to rename the sqlite3 C project and the DLL to SQLite.Interop.DLL.&nbsp;
         1247  +This is the same core sqlite3 codebase but designed specifically for this ADO.NET
         1248  +provider.&nbsp; This eliminates any possibility of someone dropping another build
         1249  +of sqlite3.dll into the system and rendering the provider inoperable.&nbsp; In the
         1250  +future if the folks at sqlite.org finally introduce a method of retrieving column
         1251  +usage for an arbitrary prepared statement, I'll retool this library to be a lightweight
         1252  +function call wrapper around the core binary distribution.
         1253  +<li>Added [SuppressUnmanagedCodeSecurity] attribute to the UnsafeNativeMethods class
         1254  +which brings VS2005 November CTP execution speeds inline with the December CTP.
         1255  +<li>Added a <b>bin</b> directory to the project root where pre-compiled binaries
         1256  +can be found.
         1257  +<li>Added a <b>doc</b> directory where preliminary documentation on the class library
         1258  +can be found.
         1259  +<li>Documented a lot more of the classes internally. </li>
         1260  +</ul>
         1261  +<p>
         1262  +<b>1.0.04 - Feb 24, 2005</b>
         1263  +</p>
         1264  +<ul>
         1265  +<li>Removed the SQLiteContext class and revamped the way UserFunctions work to simplify
         1266  +the imlementation.
         1267  +<li>Fixed a counting bug in the TestCases class, specifically in the function tests
         1268  +where I wasn't resetting the counter and it was consequently reporting intrinsic
         1269  +and raw select calls as being much much faster than they actually were.&nbsp; The
         1270  +numbers are now much closer to what I expected for performance, with .NET user-functions
         1271  +still being the slowest, but only by a small margin.
         1272  +<li>Small performance tweaks to SQLiteDataReader.
         1273  +<li>Added PageSize to the SQLiteConnectionStringBuilder and subsequently to the
         1274  +SQLiteConnection
         1275  +<li>Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after
         1276  +opening a connection. </li>
         1277  +</ul>
         1278  +<p>
         1279  +<b>1.0.03 - Feb 23, 2005</b>
         1280  +</p>
         1281  +<ul>
         1282  +<li>Fixed up SQLiteCommandBuilder to correct implementation errors, which resulted
         1283  +in an enormous performance boost in the InsertMany test.&nbsp;&nbsp; 10,000 row
         1284  +insert that executed in 1500ms now executes in 500ms.
         1285  +<li>Fixed several errors in the SQLite3_UTF16 class.&nbsp; ToString() was working
         1286  +incorrectly and the Open() method failed to register user defined functions and
         1287  +collations.
         1288  +<li>Fixed a bug in SQLiteCommand.ClearCommands() whereby only the first statement
         1289  +was being properly cleaned up.
         1290  +<li>Fixed a bug in SQLiteDataReader whereby calling NextResult() would not properly
         1291  +reset the previously-executed command in the sequence.
         1292  +<li>Added an InsertManyWithIdentityFetch test, which appends a select clause to
         1293  +populate the ID of the last inserted row into the InsertCommand, demonstrating ADO.NET's
         1294  +ability to auto-fetch identity columns on insert. </li>
         1295  +</ul>
         1296  +<p>
         1297  +<b>1.0.02 - Feb 21, 2005</b></p>
         1298  +<ul>
         1299  +<li>Tweaks to the xxx_interop functions that return char *'s, so they also return
         1300  +the length.&nbsp; Saves an interop call to get the UTF-8 string length during conversion
         1301  +to a .NET string.
         1302  +<li>Reworked the whole interop.c thing into interop.h and reduced the code required
         1303  +to merge the main sqlite3 codebase.
         1304  +<li>Added support for user-defined collations. </li>
         1305  +</ul>
         1306  +</body>
  1224   1307   </html>