Index: readme.htm
==================================================================
--- readme.htm
+++ readme.htm
@@ -1,1224 +1,1307 @@
-
-
-
-
- ADO.NET 4.0 SQLite Data Provider
- Version 1.0.67.0 January 3, 2011
- Using SQLite 3.7.4
- Written by Robert Simpson (robert@blackcastlesoft.com)
- Released to the public domain, use at your own risk!
- Official provider website: http://sqlite.phxsoftware.com
-
- The latest version can be downloaded
- here
-
-
-
-
- Features:
-
-
- -
- Written from scratch on VS2008 specifically for ADO.NET 2.0, implementing all the
- base classes and features recently introduced in the framework, including automatic
- transaction enlistment.
- Supports the Full
- and Compact .NET Framework, and native C/C++ development. 100% binary
- compatible with the original sqlite3.dll.
- - Full support for Mono via a "managed only" provider that runs against the
- official SQLite 3.6.1 or higher library.
- - Full Entity Framework support (ADO.NET 3.5 SP1)
- -
- On the Compact Framework, it is faster than Sql Server
- 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.
-
- Encrypted database support. Encrypted databases are fully encrypted and
- support both binary and cleartext password types.
- -
- Visual Studio 2005/2008 Design-Time Support, works with all versions of VS2005/2008,
- including
- all Express Editions of VS2005. You can add a SQLite
- database to the Servers list, design queries with the Query Designer,
- drag-and-drop tables onto a Typed DataSet, etc.
-
- Full SQLite schema editing inside Visual Studio.
- You can create/edit tables, views, triggers, indexes, check constraints and foreign keys.
-
- Single file redistributable (except on Compact Framework). The core sqlite3 codebase and the ADO.NET wrapper
- are combined into one multi-module assembly.
-
-
- Binaries included for Itanium, x64, x86 and ARM processors.
-
- DbProviderFactory support.
-
-
- Full support for ATTACH'ed databases. Exposed as Catalogs
- in the schema. When cloning a connection, all attached databases are
- automatically re-attached to the new connection.
-
-
- DbConnection.GetSchema(...) support includes ReservedWords, MetaDataCollections, DataSourceInformation,
- DataTypes, Columns, Tables, Views, ViewColumns, Catalogs, Indexes,
- IndexColumns, ForeignKeys and Triggers.
-
-
- Enhanced DbDataReader.GetSchemaTable() functionality returns catalog, namespace
- and detailed schema information even for complex queries.
-
-
- Named and unnamed parameters.
-
-
- Full UTF-8 and UTF-16 support, each with optimized pipelines into the native
- database core.
-
-
- Multiple simultaneous DataReaders (one DataReader per Command however).
-
-
- Full support for user-defined scalar and aggregate functions, encapsulated into
- an easy-to-use base class in which only a couple of overrides are necessary to
- implement new SQL functions.
-
-
- Full support for user-defined collating sequences, every bit as simple to
- implement as user-defined functions and uses the same base class.
-
-
- Full source for the entire engine and wrapper. No copyrights.
- Public Domain. 100% free for commercial and non-commercial use.
-
-
- Design-Time Support
-
- In Windows Explorer, navigate to the SQLite.NET\bin\Designer
- folder and execute the INSTALL.EXE
- file. The program will
- automatically detect what version(s) of Visual Studio 2005/2008 are installed and allow
- you to selectively install and uninstall the designer for each edition.
- DbFactory Support (Non-Compact Framework)
- In order to use the SQLiteFactory and have the SQLite data provider enumerated
- in the DbProviderFactories methods, you must add the following segment into your application's app.config file:
-
- <configuration>
- <system.data>
- <DbProviderFactories>
- <remove invariant="System.Data.SQLite"/>
- <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
- </DbProviderFactories>
- </system.data>
+
+
+
+
+ADO.NET 2.0 SQLite Data Provider
+Version 1.0.69.0 April 12, 2011
+Using SQLite 3.7.6
+Originally written by Robert Simpson
+Released to the public domain, use at your own risk!
+Official provider website: http://system.data.sqlite.org
+Legacy versions: http://sqlite.phxsoftware.com
+
+The current development version can be downloaded from
+http://system.data.sqlite.org/index.html/timeline?n=20&y=ci
+
+
+
+Features
+
+
+- Written from scratch on VS2008 specifically for ADO.NET 2.0, implementing all
+the base classes and features recently introduced in the framework, including automatic
+transaction enlistment.
- Supports the Full and Compact .NET Framework, and native
+C/C++ development. 100% binary compatible with the original sqlite3.dll.
+Compact framework not currently not included. We hope to have
+this feature included again soon.
+
+- Full support for Mono via a "managed only" provider that runs against
+the official SQLite 3.6.1 or higher library.
+
+- Full Entity Framework support (ADO.NET 3.5 SP1)
+
+- On the Compact Framework, it is faster than Sql Server 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. Compact
+framework not currently not included. We hope to have this feature included again
+soon.
+
+
- Encrypted database support. Encrypted databases are fully encrypted and
+support both binary and cleartext password types.
+
+- Visual Studio 2005/2008 Design-Time Support, works with all versions of VS2005/2008,
+including all Express Editions of VS2005. You can add a SQLite database to
+the Servers list, design queries with the Query Designer, drag-and-drop tables onto
+a Typed DataSet, etc.
- Full SQLite schema editing inside Visual Studio.
+You can create/edit tables, views, triggers, indexes, check constraints and foreign
+keys.
+Currently not included. We are still updating the Design-Time
+support installer.
+
+
+- Single file redistributable (except on Compact Framework). The core
+sqlite3 codebase and the ADO.NET wrapper are combined into one multi-module assembly.
+Currently all versions provided as System.Data.SQLite.dll and SQLite.Interop.dll.
+This provides consistency across all packages, including Compact and Mono.
+
+
+- Binaries included for Itanium, x64, x86 and ARM processors.
+Currently only x64 and x86 included.
+We hope to have more processors included again soon.
+
+
+- DbProviderFactory support
+
+- Full support for ATTACH'ed databases. Exposed as Catalogs in the
+schema. When cloning a connection, all attached databases are automatically
+re-attached to the new connection.
+
+
+- DbConnection.GetSchema(...) support includes ReservedWords, MetaDataCollections,
+DataSourceInformation, DataTypes, Columns, Tables, Views,
+ViewColumns, Catalogs, Indexes, IndexColumns, ForeignKeys
+and Triggers.
+
+
- Enhanced DbDataReader.GetSchemaTable() functionality returns catalog, namespace
+and detailed schema information even for complex queries.
+
+
- Named and unnamed parameters.
+
+
- Full UTF-8 and UTF-16 support, each with optimized pipelines into the native
+database core.
+
+
- Multiple simultaneous DataReaders (one DataReader per Command however).
+
+
- Full support for user-defined scalar and aggregate functions, encapsulated into
+an easy-to-use base class in which only a couple of overrides are necessary to implement
+new SQL functions.
+
+
- Full support for user-defined collating sequences, every bit as simple to implement
+as user-defined functions and uses the same base class.
+
+
- Full source for the entire engine and wrapper. No copyrights. Public
+Domain. 100% free for commercial and non-commercial use.
+
+
+
+Design-Time Support
+Currently not included. We are still updating the Design-Time
+support installer.
+
+In Windows Explorer, navigate to the SQLite.NET\bin\Designer folder
+and execute the INSTALL.EXE file. The program will automatically
+detect what version(s) of Visual Studio 2005/2008 are installed and allow you to
+selectively install and uninstall the designer for each edition.
+
+DbFactory Support (Non-Compact Framework)
+In order to use the SQLiteFactory and have the SQLite data provider enumerated in
+the DbProviderFactories methods, you must add the following segment into your application's
+app.config file:
+
+<configuration>
+ <system.data>
+ <DbProviderFactories>
+ <remove invariant="System.Data.SQLite" />
+ <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
+ type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
+ </DbProviderFactories>
+ </system.data>
</configuration>
- See the help documentation for further details on implementing both version-specific (GAC enabled) and version independent DBProviderFactories support.
-
-
- Compiling for the Compact Framework
-
- Just change the target platform from Win32 to Compact Framework and
- recompile. The Compact Framework has no support for enumerating
- attributes in an assembly, therefore all user-defined collating sequences and
- functions must be explicitly registered. See the testce
- sample application for an example of how to explicitly register user-defined
- collating sequences and functions.
-
- Distributing The SQLite Engine and ADO.NET Assembly
-
- On the desktop, only the System.Data.SQLite.DLL file needs to be distributed with your
- application(s). This DLL contains both the managed wrapper and the native
- SQLite3 codebase. For the Compact Framework, you will have to distribute
- both the CF version of System.Data.SQLite.DLL, as well as the
- SQLite.Interop.XXX.DLL. This is a breaking change as of 1.0.59.0.
- Recent Windows Mobile frameworks are not supporting the mixed CF assembly I was
- building prior to this version.
- Development Notes Regarding the SQLite 3 Source Code
-
- The core sqlite engine is compiled directly from the unmodified source code available
- at the sqlite.org website. Several additional pieces are compiled on top of
- it to extend its functionality, but the core engine's source is not changed.
-
-
- Version History
- 1.0.67.0 - January 3, 2011
-
- - Code merge with SQLite 3.7.4
- - Continuing work on supporting Visual Studio 2010
-
- 1.0.66.1 - August 1, 2010
-
- - Code merge with SQLite 3.7.0.1
- - Re-enabled VS2005 designer support, broken in previous versions during the 2008 transition
- - Implemented new forms of Take/Skip in the EF framework courtesy jlsantiago
- - Added "Foreign Keys" to the connection string parameters
- - Added the Truncate option to the Journal Modes enumeration
-
- 1.0.66.0 - April 18, 2010
-
- - Code merge with SQLite 3.6.23.1
- - Fixed a bug in the installer that accidentally modified the machine.config on .NET versions prior to 2.0, invaliding the config file.
- - Fixed INTERSECT and EXCEPT union query generation in EF
- - Fixed an out of memory error in the trigger designer in cases where a WHEN clause is used in the trigger
-
- 1.0.65.0 - July 26, 2009
-
- - Fixed a bug in the encryption module to prevent a double free() when rekeying a database.
- - Fixed a bug in the encryption module when ATTACHing an encrypted database.
- - Incorporated the WinCE locking fix from ticket
- #3991
- - Added "bigint" to the dropdown in the table designer, plus other minor table
- designer bugfixes.
-
- 1.0.64.0 - July 9, 2009
-
- - Fixed the missing resources problem from the 63 release.
- - Added preliminary support for the Visual Studio 2010 beta.
- - Fixed a bug in SQLiteCommand that threw a null reference exception when
- setting the Transaction object to null.
- - If SQLiteConnection.EnlistTransaction is called multiple times for the same
- transaction scope, just return without throwing an error.
-
- 1.0.63.0 - June 29, 2009
-
- - Code merge with SQLite 3.6.16
- - Check the autocommit mode of the connection to which a transaction is bound
- during the disposal of the transaction. If autocommit is enabled, then the
- database has already rolled back the transaction and we don't need to do it
- during dispose, and can quietly ignore the step without throwing an error.
- - Eliminated the mergebin step altogether. It was developed primarily to
- merge the Compact Framework binaries together, but since we're not doing that
- anymore, its use is limited. Its non-standard method of merging a binary
- on the desktop framework is redundant as well. The desktop binary now
- hard-links to MSCOREE, but as of Windows XP, this was redundant as well since XP
- and beyond automatically attempt to load MSCOREE on startup when a DLL has a
- .NET header.
- - More improvements to the test.exe program for running the tests against Sql
- Server for comparison purposes.
-
- 1.0.62.0 - June 19, 2009
-
- - Code merge with SQLite 3.6.15
- - Fixed the decimal reading bug in the SQLiteDataReader
- - Changed Join()'s to Sleep()'s in the statement retry code to prevent message
- pumping
- - Fixed a bad pointer conversion when retrieving blobs using GetBytes() in
- 64-bit land
- - Several changes to the Test program that comes with the provider. Tests
- can now be individually disabled, and the test program can run against several
- provider back-ends
-
- 1.0.61.0 - April 28, 2009
-
- - 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
- - Fixed the default-value lookups in SQLiteConnectionStringBuilder when accessing properties
- - Lock the SQLiteTransaction object during dispose to avoid potential race condition during cleanup
- - Fixed SQLiteDataReader.GetDecimal() processing and parsing of decimal values for cases when SQLite returns things like "1.0e-05" instead of "0.0001"
-
- 1.0.60.0 - October 3, 2008
-
- - Throw a NotSupported exception in the EF Sql Gen code instead of parsing
- illegal SQL during an update/insert/delete where no primary key is defined.
- - Fixed the Compact Framework interop library. Since the linker flag
- /subsystem had no version specified, it was causing a problem for many CE-based
- platforms.
- - Incorporated SQLite patch for ticket
- #3387 and reverted
- out the vfs override code I added in build 59 to work around this problem.
- - Fixed a designer issue when creating a new table from the Server Explorer.
- After initially saving it, if you then continued to edit it and tried to save it
- again, it would generate the change SQL using the old temporary table name
- rather than the new name.
-
- 1.0.59.0 - September 22, 2008
-
- - Code merge with SQLite 3.6.3. Solves
- a couple different EF issues that were either giving inconsistent results or
- crashing the engine.
- - Fixed the parsing of literal binaries in the EF SqlGen code. SQLite now
- passes nearly all the testcases in
- Microsoft's EF Query Samples application --
- the exception being the datetimeoffset and time constants tests, and tests
- that use the APPLY keyword which are unsupported for now.
- - Revamped the Compact Framework mixed-mode assembly. Tired of playing cat
- and mouse with the Compact Framework's support for mixed-mode assemblies.
- The CF build now requires that you distribute both the System.Data.SQLite
- library and the paired SQLite.Interop.XXX library. The XXX denotes
- the build number of the library.
- - Implemented a workaround for Vista's overzealous caching by turning off
- FILE_FLAG_RANDOM_ACCESS for OS versions above XP. This is implemented
- as a custom (default override) VFS in the interop.c file, so no changes are made
- to the SQLite source code.
- - Fixed some registry issues in the designer install.exe, which prevented some
- design-time stuff from working on the Compact Framework when .NET 3.5 was
- installed.
-
- 1.0.58.0 - August 30, 2008
-
- - Code merge with SQLite 3.6.2. If only I'd waited one more day to release
- 57! Several LINQ issues have been resolved with this engine release
- relating to deeply-nested subqueries that the EF SqlGen creates.
- - The Rollback SQLiteConnection event no longer requires an open connection in
- order to subscribe to it. Missed this one in the 57 release.
-
- 1.0.57.0 - August 29, 2008
-
- - Compiled against 3.6.1 with checkin
- #3300 resolved,
- which fixes an Entity Framework bug I was seeing. I currently have 3 other
- tickets out on the engine, which are not yet resolved and relate to EF.
- - Fixed decimal types to store and fetch using InvariantCulture. If you're
- using decimal datatypes in your database and were affected by the 56 release,
- please issue an UPDATE <table> SET <column> = REPLACE(<column>, ',', '.');
- to fix the decimal separators. Apologies for not testing that more
- thoroughly before releasing 56.
- - Too many LINQ fixes to list. Fixed views so they generate,
- fixed the LIMIT clause, implemented additional functionality and removed unnecessary code.
- - Fixed foreign key names in the designer so viewing the SQL script on a new
- unsaved table after renaming it in the properties toolwindow will reflect in the
- script properly.
- - Fixed the Update and Commit events on SQLiteConnection so they don't require
- the connection to be opened first.
- - Fixed userdef aggregate functions so they play nice with each other when
- appearing multiple times in the same statement.
- - Fixed the editing and saving of default values in the table designer.
- - Fixed ForeignKeys schema to support multi-column foreign keys. Also
- hacked support for them in the table designer, provided two foreign keys in the
- designer have the same name and reference the same foreign table and different
- columns. Will implement first-class support for this in the next release.
-
- 1.0.56.0 - August 11, 2008
-
- - Fixed a bug in the table designer when designing new tables, wherein you had to
- save the table first before being able to create indexes and foreign keys.
- - Tweaks to decimal type handling. The 'decimal' type can't be represented
- by Int64 or Double (without loss of precision) in SQLite, so we have to fudge it
- by treating it like a string and converting it back and forth in the provider.
- Unfortunately backing it to the db as a string causes sorting problems.
- See this
- post
- for details on using a custom collation sequence to overcome the sorting issue arising from this patch.
- - Minor tweaks and bugfixes to the test program and the provider.
- - More adjustments to make the managed-only version of the provider run and pass
- all tests on Mono.
- - LINQ to Entities bits heavily updated and compiled against VS2008 SP1 RTM. SQLite
- LINQ support is still considered beta.
-
- 1.0.55.0 - August 6, 2008
-
- - Code merge with SQLite 3.6.1
- - Added support for the user-contributed extension-functions at
- http://www.sqlite.org/contrib.
- Feel free to override any of them with your own implementation. The new
- functions are: acos, asin, atan, atn2, atan2, acosh, asinh, atanh,
- difference, degrees, radians, cos, sin, tan, cot, cosh, sinh, tanh, coth, exp,
- log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate, charindex,
- leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter, and
- aggregates stdev, variance, mode, median, lower_quartile, upper_quartile.
- - Moved the last_rows_affected() function to the C extension library.
- - Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the
- ability for a user-defined function to get the collating sequence during the
- Invoke/Step methods. User-defined functions can use the collating sequence
- as a helper to compare values.
- - When registering user-defined collation sequences and functions, the provider
- will now register both a UTF8 and a UTF16 version instead of just UTF8.
- - Revamped connection pooling and added static ClearPool() and ClearAllPools()
- functions to SQLiteConnection. Behavior of the pool and its clearing
- mechanics match SqlClient.
- - Fixed connections going to the pool so that any unfinalized lingering commands
- from un-collected datareaders are automatically reset and any lurking
- transactions made on the connection are rolled back.
- - Transaction isolation levels are now partially supported. Serializable
- is the default, which obtains read/write locks immediately -- this is compatible
- with previous releases of the provider. Unspecified will default to
- whatever the default isolation mode is set to, and ReadCommitted will cause a
- deferred lock to be obtained. No other values are legal.
- - Revamped the test.exe program. It's now an interactive GUI application.
- Easier for me to add tests now.
- - Tweaks to the VS designer package and installer.
- - More adjustments to the internal SQLite3.Prepare() method to account for both
- kinds of lock errors when retrying.
- - Stripped a lot of unnecessary interop() calls and replaced with base sqlite calls.
- Revamped most of UnsafeNativeMethods to make it easier to port the code.
- - Rerigged internal callbacks for userdef functions and other native to managed
- callbacks. More portable this way.
- - Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol to
- force the wrapper to use the stock sqlite3 library. Some functionality is
- missing, but its minimal. None of the precompiled binaries are compiled
- using this setting, but its useful for testing portability.
- - Added "boolean" and a couple other missing datatypes to the "DataTypes" schema
- xml file. Used by the VS designer when displaying tables and querying.
- - Added a new connection string option "Read Only". When set to True, the
- database will be opened in read-only mode.
- - Added a new connection string option "Max Pool Size" to set the maximum size
- of the connection pool for a given db file connection.
- - Added a new connection string option "Default IsolationLevel" to set the
- default isolation level of transactions. Possible values are Serializable and
- ReadCommitted.
- - Added a new connection string option "URI" as an optional parameter for
- compatibility with other ports of the provider.
-
- 1.0.54.0 - July 25, 2008
-
- - Fixed the setup project, which somehow "forgot" to include all the binaries in
- the 53 release.
- - Fixed a crash in the table designer when creating a new table and tabbing past
- the "Allow Nulls" cell in the grid while creating a new column.
- - Fixed a mostly-benign bug in SQLiteDataReader's GetEnumerator, which failed to
- pass along a flag to the underyling DbEnumerator it creates. This one's
- been around since day 1 and nobody's noticed it in all these years.
- - Added a new connection string parameter "Journal Mode" that allows you to set
- the SQLite journal mode to Delete, Persist or Off.
-
- 1.0.53.0 - July 24, 2008
-
- - Enabled sqlite_load_extension
- - Added retry/timeout code to SQLite3.Prepare() when preparing statements for
- execution and a SQLITE_BUSY error occurs.
- - Added a new schema to SQLiteConnection.GetSchema() called Triggers.
- Used to retrieve the trigger(s) associated with a database and/or table/view.
- - Extensive updates to table/view editing capabilities inside Visual Studio's
- Server Explorer. The program now parses and lets you edit CHECK constraints and
- triggers on a table, as well as define triggers on views. Experimental
- still, so e-mail me if you have issues.
- - Minor bugfix to the ViewColumns schema to return the proper base column name
- for a view that aliases a column.
- - Fixed the insert/update/delete DML support in the Linq module.
- - Changed the behavior of SQLiteCommand to allow a transaction to be set even if
- the command hasn't been associated with a connection yet.
-
- 1.0.52.0 - July 16, 2008
-
- - Code merge with SQLite 3.6.0
- - Added a lot of previously-missing exports to the DEF file for the
- native library.
- - Fixed SQLiteDataReader to check for an invalid connection before operating on
- an open cursor.
- - Implemented the Cancel() function of SQLiteCommand to cancel an active reader.
- - Added beta table and view designers to the Visual Studio Server Explorer. You can now
- edit/create tables and views, manage indexes and foreign keys from Visual Studio.
- This feature is still undergoing testing so use at your own risk!
- - Fixed the Server Explorer so VS2005 users can once again right-click tables
- and views and open the table data.
- - Added some new interop code to assist in returning more metadata not normally
- available through the SQLite API. Specifically, index column sort modes
- and collating sequences. Also added code to detect (but not parse) CHECK
- constraints, so the table designer can pop up a warning when editing a table
- with these constraints. Since I can't currently parse them.
- - Lots of LINQ SQL generation improvements and fixes.
- - Made some progress cleaning up and fixing up the schema definitions and
- manifests for EdmGen.
- - Added a built-in SQLiteFunction called last_rows_affected() which can be
- called from SQL to get the number of rows affected by the last update/insert
- operation on the connection. This is roughly equivalent to Sql Server's
- @@ROWCOUNT variable.
-
- 1.0.51.0 - July 1, 2008
-
- - VS2008 SP1 Beta1 LINQ Support
- - Added experimental Entity Framework support in a new library,
- System.Data.SQLite.Linq. Some things work, some don't. I haven't
- finished rigging everything up yet. The core library remains stable.
- All LINQ-specific code is completely separate from the core.
- - Added some columns to several existing schemas to support some of the
- EDM framework stuff.
- - Minor tweaks to the factory to better support dynamic loading of the Linq
- extension library for SQLite.
- - SQLite's busy handler was interfering with the provider's busy handling
- mechanism, so its been disabled.
-
- 1.0.50.0 - June 27, 2008
-
- - Fixed some lingering dispose issues and race conditions when some objects were finalized.
- - Fixed the SQLiteConvert.Split() routine to be a little smarter when splitting
- strings, which solves the quoted data source filename problem.
- - Enhanced the mergebin utility to work around the strong name validation bug on
- the Compact Framework. The old workaround kludged the DLL and caused WM6.1
- to fail to load it. This new solution is permanent and no longer kludges
- the DLL.
-
- 1.0.49.0 - May 28, 2008
-
- - Code merge with SQLite 3.5.9
- - Fixed schema problems when querying the TEMP catalog.
- - Changed BLOB datatype schema to return IsLong = False instead of True. This
- was preventing DbCommandBuilder from using GUID's and BLOB's as primary keys.
- - Fix rollover issue with SQLite3.Reset() using TickCount.
- - Fixed SQLiteDataReader to dispose of its command (if called for) before
- closing the connection (when flagged to do so) instead of the other way around.
- - Fixed a DbNull error when retrieving items not backed by a table schema.
- - Fixed foreign key constraint parsing bug.
- - Added FailIfMissing property to the SQLiteConnectionStringBuilder.
- - Converted the source projects to Visual Studio 2008.
-
- 1.0.48.0 - December 28, 2007
-
- - Code merge with SQLite 3.5.4
- - Calling SQLiteDataReader.GetFieldType() on a column with no schema information
- and whos first row is initially NULL now returns type Object instead of type DbNull.
- - Added support for a new DateTime type, JulianDay. SQLite uses Julian dates
- internally.
- - Added a new connection string parameter "Default Timeout" and a corresponding
- method on the SQLiteConnection object to change the default command timeout.
- This is especially useful for changing the timeout on transactions, which use SQLiteCommand
- objects internally and have no ADO.NET-friendly way to adjust the command timeout
- on those commands.
- - FTS1 and FTS2 modules were removed from the codebase. Please upgrade all
- full-text indexes to use the FTS3 module.
-
- 1.0.47.2 - December 10, 2007
-
- - Fixed yet one more bug when closing a database with unfinalized command objects
- - Fixed the DataReader's GetFieldType function when dealing with untyped SQLite affinities
-
- 1.0.47.1 - December 5, 2007
-
- - Fixed a leftover bug from the codemerge with SQLite 3.5.3 that failed to close a database.
- - Fixed the broken Compact Framework distribution binary.
- - SQLite 3.5.x changed some internal infrastructure pieces in the encryption interface
- which I didn't catch initially. Fixed.
-
- 1.0.47.0 - December 4, 2007
-
- - Code merge with SQLite 3.5.3
- - Added installer support for Visual Studio 2008. Code is still using the
- VS2005 SDK so one or two bells and whistles are missing, but nothing significant.
- - This is the last version that the FTS1 and FTS2 extensions will appear.
- Everyone should rebuild their fulltext indexes using the new FTS3 module.
- FTS1 and FTS2 suffer from a design flaw that could cause database corruption with
- certain vacuum operations.
- - Fixed pooled connections so they rollback any outstanding transactions before
- going to the pool.
- - Fixed the unintended breaking of the TYPES keyword, and mis-typing of untyped
- or indeterminate column types.
- - Assert a FileIOPermission() requirement in the static SQLiteFunction constructor.
-
- - The CE-only SQLiteFunction.RegisterFunction() is now available on the desktop
- platform for dynamic registration of functions. You must still close and re-open
- a connection in order for the new function to be seen by a connection.
- - Fixed the "database is locked" errors by implementing behavioral changes in the
- interop.c file for SQLite. Closing a database force-finalizes any prepared
- statements on the database to ensure the connection is fully closed. This
- was rather tricky because the GC thread could still be finalizing statements itself.
-
- - Modifed the mergebin utility to help circumvent a long-standing strong name verification
- bug in the Compact Framework.
-
- 1.0.46.0 - September 30, 2007
-
- - Fixed faulty logic in type discovery code when using SQLiteDataReader.GetValue().
- - Fixed Connection.Open() bug when dealing with :memory: databases.
- - Fixed SQLiteCommand.ExecuteScalar() to return a properly-typed value.
- - Added support for SQLiteParameter.ResetDbType().
- - Added test cases for rigid and flexible type testing.
-
- 1.0.45.0 - September 25, 2007
-
- - Breaking change in GetSchema("Indexes") -- MetaDataCollections
- restrictions and identifier parts counts were wrong for this schema and I was using
- the wrong final parameter as the final restriction. Meaning, if you use the
- Indexes schema and are querying for a specific index the array should now be {catalog,
- null, table, index } instead of {catalog, null, table, null, index}
- - Code merge with SQLite 3.4.2
- - Fixed some errors in the encryption module, most notably when a non-default page
- size is specified in the connection string.
- - Fixed SQLiteDataReader to better handle type-less usage scenarios, which also
- fixes problems with null values and datetimes.
- - Fixed the leftover temp files problem on WinCE
- - Added connection pooling. The default is disabled for now, but may change
- in the future. Set "Pooling=True" in the connection string to enable it.
- - Sped up SQLiteConnection.Open() considerably.
- - Added some more robust cleanup code regarding SQLiteFunctions.
- - Minor additions to the code to allow for future LINQ integration into the main
- codebase.
- - Fixed a long-standing bug in the Open() command of SQLiteConnection which failed
- to honor the documented default behavior of the SQLite.NET provider to open the
- database in "Synchronous=Normal" mode. The default was "Full".
- - If Open() fails, it no longer sets the connection state to Broken. It instead
- reverts back to Closed, and cleans up after itself.
- - Added several new parameters to the ConnectionString for setting max page count,
- legacy file format, and another called FailIfMissing to raise an error rather than
- create the database file automatically if it does not already exist.
- - Fixed some designer toolbox references to the wrong version of the SQLite.Designer
- - Fixed a bug in the mergebin utility with regards to COR20 metadata rowsize computations.
-
- - Minor documentation corrections
-
- 1.0.44.0 - July 21, 2007
-
- - Code merge with SQLite 3.4.1
- - Fixed a bug in SQLiteConnection.Open() which threw the wrong kind of error in
- the wrong kind of way when a database file could not be opened or created.
- - Small enhancements to the TYPES keyword, and added documentation for it in the
- help file.
- - Hopefully fixed the occasional SQLITE_BUSY errors that cropped up when starting
- a transaction. Usually occurred in high-contention scenarios, and the underlying
- SQLite engine bypasses the busy handler in this scenario to return immediately.
-
- 1.0.43.0 - June 21, 2007
-
- - Code merge with SQLite 3.4.0
- - Fixed a reuse bug in the SQLiteDataAdapter in conjunction with the SQLiteCommandBuilder.
- It's been there unnoticed for more than a year, so it looks like most folks never
- encountered it.
- - Fixed an event handler bug in SQLiteCommandBuilder in which it could fail to unlatch
- from the DataAdapter when reused. Relates to the previous bugfix.
- - Fixed a double-dispose bug in SQLiteStatement that triggered a SQLiteException.
-
- 1.0.42.0 - June 1, 2007
-
- - Code merge with SQLite 3.3.17
- - Changed the SQLiteFunction static constructor so it only enumerates loaded modules
- that have referenced the SQLite assembly, which hopefully should cut down dramatically
- the time it takes for that function to execute.
- - Added the FTS2 full-text search extension to the project. Look for FTS1
- to disappear within the next couple of revisions.
- - Fixed a bug introduced with the finalizers that triggered an error when statements
- ended with a semi-colon or had other non-parsable comments at the end of a statement
- - Fixed an intermittent multi-threaded race condition between the garbage collector
- thread and the main application thread which lead to an occasional SQLITE_MISUSE
- error.
- - Fixed another issue relating to SQLite's inherent typelessness when dealing with
- aggregate functions which could return Int64 or Double or even String for a given
- row depending on what was aggregated.
- - Remembered to recompile the DDEX portion of the engine this time, so Compact Framework
- users can once again use the design-time functionality
-
- 1.0.41.0 - April 23, 2007
-
- - Code merge with SQLite 3.3.16
- - Second go at implementing proper finalizers to cleanup after folks who've forgotten to Dispose() of the SQLite objects
- - Enhanced GetSchema(IndexColumns) to provide numeric scale and precision values
- - Fixed the column ordinals in GetSchema(IndexColumns) to report the ordinal of the column in the index, not the table
- - 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
-
- 1.0.40.0 - January 31, 2007
-
- - Code merge with SQLite 3.3.12
- - Lots of new code to handle misuse of the library. Implemented finalizers
- where it made sense, fixed numerous garbage collector issues when objects are not
- disposed properly, fixed some object lifetime issues, etc.
- - A failed Commit() on a transaction no longer leaves the transaction in an unusable
- state.
-
- 1.0.39.1 - January 11, 2007
-
- - Fixed a really dumb mistake that for some reason didn't trigger any errors in
- the testcases, whereby commands when associated with a connection were not adding
- or removing themselves from an internal list of commands for that connection --
- causing a "database is locked" error when trying to close the connection.
-
- 1.0.39.0 - January 10, 2007
-
- - Code merge with SQLite 3.3.10
- - Fixed a multi-threaded race condition bug in the garbage collector when commands
- and/or connections are not properly disposed by the user.
- - Switched the encryption's internal deallocation code to use sqlite's built-in
- aux functions instead of modifying the pager.c source to free the crypt block.
- This eliminates the last of the code changes the provider makes to the original
- sqlite engine sources. Props to Ralf Junker for pointing that out.
-
- 1.0.38.0 - November 22, 2006
-
- - Fixed a bug when using CommandBehavior.KeyInfo whereby integer primary key columns may be duplicated in the results.
- - Enhanced the CommandBuilder so that update/delete statements are optimized when the affected table contains unique constraints and
- a primary key is present.
- - Fixed a bug in the DataReader when used in conjunction with CommandBehavior.CloseConnection.
- 1.0.37.0 - November 19, 2006
-
- - Added support for CommandBehavior.KeyInfo.
- When specified in a query, additional column(s) will be returned describing the
- key(s) defined for the table(s) selected in the query. This is optimized when
- INTEGER PRIMARY KEY is set for the given tables, but does additional work for other
- kinds of primary keys.
- - Removed the default values from SQLiteDataReader.GetTableSchema(), to better follow
- Sql Server's pattern and suppress schema errors when loading the records into a
- dataset/datatable.
- - Allow integers to implicitly convert to double/decimal/single.
- 1.0.36.1 - October 25, 2006
-
- - Added support for LONGVARCHAR, SMALLDATE and SMALLDATETIME. These were actually added in 1.0.36.0 but were undocumented.
- - Fixed the embedded helpfile which was accidentally built from old sources.
- - 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.
-
- 1.0.36.0 - October 23, 2006
-
- - Code merge with SQLite 3.3.8, including support for full-text search via the FTS1
- extension.
- Fixed a bug retrieving data types when UseUtf16Encoding is true. Side-effect of further merging the common code between the two base classes.
- - Fixed a bug with System.Transactions whereby a connection closed/disposed within
- a transaction scope is rolled back and cannot be committed.
- - Added more error checking and reporting to transactions to help user's isolate
- the source of transaction failures.
- - Implemented a workaround for a Compact Framework issue regarding strong-named
- assemblies containing a PE section with a raw size less than the virtual size.
-
- 1.0.35.1 - September 12, 2006
-
- - Fixed the TYPES keyword to work when UseUTF16Encoding is true.
- - 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.
- - Updated the help documentation.
-
- 1.0.35.0 - September 10, 2006
-
- - Fixed an infinite loop bug in SQLiteCommand caused when multiple semi-colon separated
- statements in a single command are executed via datareader and one of the statements
- contains a syntax error preventing it from being prepared.
- Added the TYPES preparser keyword to be placed before a SELECT statement to
- aid the wrapper in converting expressions in a subsequent select clause into more
- robust types. Documentation yet to be integrated, but available on the forums.
- - Added a new connectionstring parameter "BinaryGUID=true/false" (default is "true").
- When true, guid types are stored in the database as binary blobs to save space.
- Binary has been the default format since 1.0.32.0 but this parameter eases backward
- compatibility.
-
- 1.0.34.0 - September 4, 2006
-
- - Fixed a bug in SQLiteParameterCollection.RemoveAt(namedparam)
- - Fixed a bug in SQLiteDataReader introduced in 1.0.30 that broke DateTimes using the Ticks option in the connection string.
- - Fixed a bug in the recent changes to guid behavior wherein using a datareader's
- indexer to fetch a guid from a column containing both binary and text guids would
- sometimes return a byte array instead of a guid.
- - Enacted a workaround involving typed datasets in Compact Framework projects in
- which it took an excessive amount of time to open a form and generated a lot of
- temporary files in the user's Local Settings\Application Data\Microsoft\VisualStudio\8.0\Assembly
- References folder.
-
- 1.0.33.0 - August 21, 2006
-
- - Code merge with SQLite 3.3.7
- - Fixed a bug in SQLiteConnection that caused it to "forget" about commands bound
- to it and occasionally throw an error when a database is closed and opened repeatedly.
-
-
- 1.0.32.0 - August 6, 2006
-
- - Added AllowPartiallyTrustedCallers attribute to the assembly
- Added the missing "nchar" type
- - Added support for binary Guid's. Guids are now stored as binary by default
- when using parameterized queries. Text guids are still fully supported.
- - Fixed a TransactionScope() error that caused the transaction not to be completed.
- - Enhanced parameter names so that if they are added to the Parameters collection
- without their prefix character (@ : or $) they are still properly mapped.
-
- 1.0.31.0 - July 16, 2006
-
- - Re-applied the view parsing bugfix in 1.0.29.0 that was accidentally reverted
- out of the 30 build.
- Fixed SQLiteCommand.ExecuteScalar() to return null instead of DbNull.Value
- when no rows were returned.
- - Design-time installer now installs the package-based designer on full Visual Studio
- versions. Express editions continue to use the packageless designer.
- - In Visual Studio (not Express), you can now right-click a SQLite connection in
- the Server Explorer and vacuum the database and change the encryption password.
-
- 1.0.30.1 - July 2, 2006
-
- - Code merge with SQLite 3.3.6
- - Added support for the |DataDirectory| keyword in the Data Source filename string.
-
- - Added hook notification support to SQLiteConnection. Specifically, there
- are three new events on the SQLiteConnection object which are raised when an update/insert/delete
- occurs and when transactions are committed and rolled back.
- Changed SQLiteTransaction to default to BEGIN IMMEDIATE instead of just BEGIN,
- which solves a multithreaded race condition.
- - Changed SQLiteDataReader to better support SQLite's typelessness. The data
- reader no longer caches column affinity, but re-evaluates it for each column/row.
- - Fixed a bug in Prepare() which caused an intermittant fault due to the code accessing
- the memory of an unpinned variable.
- - Fixed a multithreaded lock-retry bug in in SQLiteConnection.Open() and in
- SQLiteTransaction, which failed to use a command timeout before giving up.
-
- 1.0.29.0 - May 16, 2006
-
- - Fixed a bug in the Views schema information which caused multi-line view definition statements not to be parsed
- - Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y) datatypes with specified precision and scale
- - 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
- - Changed SQLiteException to inherit from DbException on the full framework
-
- 1.0.28.0 - April 14, 2006
-
- - Code merge with SQLite 3.3.5
- - You can now specify a relative path in the Compact Framework's "Data Source" by
- prefixing the file with ".\". i.e. "Data Source=.\\mydb.db3"
- - Several more changes and enhancements to schemas for better compatibility.
- - Fixed several bugs with the 64-bit builds of the provider. The x64 binary
- is now optimized.
- - Design-time installer now tries to install the 64-bit builds into the GAC along
- with the 32-bit build.
- - Fixed a bug in the SQLiteDataReader.GetSchemaTable() function when used with tables
- containing apostrophes.
- - Fixed an XSD-related bug whereby the XSD utility was unable to locate the provider
- and could not generate typed datasets.
- - Added NTEXT and STRING datatypes to the list of recognized keywords (used for
- schema retrieval).
- - Due to the XSD bug and other potential problems related to external build utilities,
- changes to the installation of the designer have had to be made. The installer
- used to write the DbProviderFactories XML into the devenv.exe.config file and its
- express cousins, but now has to write instead to the machine.config.
- - Installer writes to both the 32-bit machine.config and the 64-bit machine.config
- if it exists.
-
- 1.0.27.1 - February 28, 2006
-
- - Fixed a bug when doing data binding in Compact Framework projects that prevented
- you from assigning a typed dataset to a bindingsource. It turns out, the CF
- version of the SQLite provider needs to be flagged as retargetable so it'll work
- in the design-time desktop environment. No changes were made to the desktop
- build, but the revision was bumped on all libraries anyway in order to keep them
- sync'd.
- 1.0.27.0 - February 27, 2006
-
- - Many optimizations and a few more minor adjustments to schemas and schema retrieval
- performance.
- - Lots of design-time attributes added to the code. The DbDataAdapter, DbCommand,
- and DbConnection objects now have greatly enhanced design-time capabilities when
- added to the toolbox and dropped on a form.
- - Lots of Server Explorer enhancements.
- - Binaries are now distributed in a setup program for easier administration and
- configuration of the provider.
-
- 1.0.26.2 - February 15, 2006
-
- - Yet another bugfix to index schemas, which was incorrectly marking most indexes
- as primary key indexes.
- Fixed GetSchema() to accept a null string array.
- Fixed a misspelled export in the core C library that prevented databases opened
- with UTF16Encoding from getting schema information and would likely cause an error
- if attempted.
- 1.0.26.1 - February 14, 2006
-
- - Fixed even more minor schema bugs having to do with indexes.
- Added two missing pieces in the SQLite designer which were preventing it from
- being used from within VS Express editions.
- Several bugfixes to the design-time installer program, including supporting
- 64-bit environments.
- 1.0.26.0 - February 11, 2006
-
- - Code merge with SQLite 3.3.4
- Fixed an encryption bug when changing the password of databases over 1gb in
- size.
- Fixed various designer issues related to construction of named parameters.
- - Retooled the GetSchema() method of SQLiteDataReader to use the new 3.3.4 API functions,
- and made several enhancements and fixes to schemas.
- - Implemented the SourceColumnNullMapping property of SQLiteParameter to fix
- a DbCommandBuilder code generation bug.
- Removed the runtime dependency on MSVCR80.DLL. File size is somewhat
- larger for the varying desktop versions.
- Created an install program to manage installation and uninstallation of the
- SQLite design-time support.
- - Designer support now works for all Visual Studio editions, including all Express
- Editions.
- - Design-time installer will now remove (if present) the machine.config SQLite entries
- in favor of installing the xml code into the devenv.exe.config file (or any of the
- variations for express editions). The officially-accepted behavior of using
- DbProviderFactories is to add the code to your app.config file, and the machine.config
- file should not be touched.
-
- 1.0.25.0 - January 31, 2006
-
- - Code merge with SQLite 3.3.3
- Added automatic distributed transaction enlistment and implemented the DbConnection.EnlistTransaction
- method for manual enlistment.
- - Nested transactions are now supported.
- - Rearranged the timing of SetPassword(), which now must be called before the database
- is opened instead of afterwards. Optionally, the password can be supplied
- in the ConnectionString.
- - Fixed a bug in SQLiteFunction that caused a failure when an empty resultset was
- returned and a custom user aggregate function was used in the query.
- - The designer has had another round of cleanup applied, in preparation for moving
- to a VS package.
- - Added SQLiteMetaDataCollectionNames class.
-
- 1.0.24.6 beta - January 23, 2006
-
- - This beta is built from sqlite.org's 3.3.2 beta.
- Eliminated the static linking of mscoree from all binaries. Native projects
- can now use the library without any dependencies on the .NET framework, while managed
- projects continue to be able to use the library normally.
- 1.0.24.5 beta - January 20, 2006
-
- - This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress code. Therefore no guarantees
- can be made regarding its suitability for production use.
- - You no longer need to distribute 2 files on the CompactFramework.
- You can delete SQLite.Interop.DLL entirely. I wrote a custom tool
- called "mergebin" (available in the source zip file) which combines the two libraries
- and gets around a glaring defect in the VS2005 linker for ARM processors which doesn't
- allow you to link netmodules.
- - x64 and ia64 builds now use the same strong name as the x86 build.
- This means breaking backward compatibility, but it was necessary in order to allow
- you to drop any of those 3 builds onto a PC and have your .NET program run properly.
- Prior to this, you'd get an error if you built your program using the x86 build,
- and then installed the x64 version on a target machine and tried to run your program
- against it.
- - The entire source project has been gone over top to bottom. A debug build
- no longer combines the binaries into a single module, which was preventing proper
- debugging.
- 1.0.24.4 beta - January 16, 2006
-
- - This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress code. Therefore no guarantees
- can be made regarding its suitability for production use.
- - Fixed a bug in the UTF-16 handling code for preparing statements due to a behavioral
- change in SQLite 3.3.0.
- - Added pager.c code necessary to cleanup after an encrypted file is closed.
- - Fixed an encryption bug that caused a fault when an encrypted file was rolled
- back.
- - Modified the testcase code to take advantage of optimizations regarding the use
- of a DbCommandBuilder. DataAdapter insert speed increased dramatically as
- a result.
-
- 1.0.24.3 beta - January 10, 2006
-
- - This beta is built from sqlite.org's 3.3.0 alpha and contains development-in-progress code. Therefore no guarantees
- can be made regarding its suitability for production use.
- Added support for database encryption at the pager level. Databases
- are encrypted using a 128-bit RC4 stream algorithm. To open an existing encrypted
- database, you may now specify a "Password={password}" text in the ConnectionString,
- or you may call the SQLiteConnection.SetPassword() function to set the password
- on an open connection. To encrypt existing non-encrypted databases or to change
- the password on an encrypted database, you must use the SQLiteConnection.ChangePassword()
- function. If you use SetPassword() instead of specifying a password in the
- connection string, or call ChangePassword() you may use a binary byte array or a
- text string as the password.
- - Rewrote the locking implementation for the Compact Framework. It is now
- more robust and incorporates into the SQLite codebase more efficiently than the
- previous CE adaptation.
- - Moved some of the embedded schema XML data into a resource file to ease code readability.
- - Automated the fixup of the original sqlite codebase's source prior to compiling,
- to ease merging with sqlite.org's source.
- - Fixed a memory leak in SQLiteCommand due to it not removing an internal reference
- to itself in SQLiteConnection.
-
- 1.0.24.2 - December 30, 2005
-
- - Fixed the SQLiteDataReader.HasRows property to return the proper value.
- - Implemented the inadvertently neglected RecordsAffected property on SQLiteDataReader.
-
- - SQLiteFunction static constructor was changed to pre-filter classes with only the
- SQLiteFunctionAttribute. The code was throwing an exception when certain
- assemblies were referenced in a project.
- - Fixed the SQLiteDataAdapter OnRowUpdated event, which was using the wrong variable
- to find the attached event handler and subsequently not raising the event.
- - Small optimizations and fixes to SQLiteDataReader.NextResult().
-
- 1.0.24.1 - December 19, 2005
-
- - Update core SQLite engine to 3.2.8
- 1.0.24 - December 9, 2005
-
- - Fixed the Catalogs schema bug that caused attached databases not to be re-attached to a cloned connection
-
- - Enhanced transactions to allow for a deferred or immediate writelock. SQLiteConnection.BeginTransaction()
- now has an additional overload to support it
- Commands are now prepared as they are executed instead of beforehand. This
- fixes a bug whereby a multi-statement command that alters the database and subsequently
- references the altered data would fail during Prepare().
- Tightened up the SQLiteDataReader to prevent reading columns before calling
- the first Read() and to prevent reading columns after the last Read().
- - A more descriptive error is thrown if there aren't enough parameters in the command
- to satisfy the parameters required by the statement(s).
-
- 1.0.23 - November 21, 2005
-
- - Named parameters may now begin with @ to ease portability of
- the provider. SQLite's named parameters are ordinarily prefixed with a :
- or $. The designer will still use the $
- prefix however, since its more compatible with the default SQLite engine.
- Added several alternate ISO8601 date/time formats to SQLiteConvert.cs to increase
- compatibility.
- - Relaxed coersion restrictions to work better with SQLite's inherent typelessness.
-
- 1.0.22 - November 11, 2005
-
- - Fixed some globalization issues which resulted in incorrect case-insensitive comparisons
- - Fixed a bug in the routine that finds all user-defined functions in a loaded assembly.
- It would throw an exception if any of the types in the assembly could not be loaded.
- The exception is now caught and handled appropriately.
-
- 1.0.21 - November 4, 2005
-
- - Fixed a designer bug when creating typed datasets with parameterized queries.
- - The above fix then exposed another bug in the datareader's ability to query schema
- information on parameterized commands, which was also fixed.
- - Compiled against the RTM version of VS2005.
- - Rewrote the design-time install script to use the XML DOM objects when writing
- to the machine.config and to automatically register the DLL in the GAC.
- Made changes to the app.config descriptions and help file to improve version-independent
- factory support.
- 1.0.20 - October 19, 2005
-
- -
- Fixed a shortcut in SQLiteBase.GetValue which was insufficient for
- international environments. The shortcut was removed and the "proper"
- procedure put in.
- 1.0.19 - October 5, 2005
-
- -
- Code merge with SQLite 3.2.7
-
-
- Fixed bugs in the CE port code (os_wince.c) which were brought to
- light by recent changes in the SQLite engine.
-
-
- Recompiled and modified to be compatible with the September VS2005 Release
- Candidate.
- Beta 2 users should continue to use 1.0.18.1
- 1.0.18.1 - September 19, 2005
-
- -
- Code merge with SQLite 3.2.6
- 1.0.18 - September 1, 2005
-
- -
- Added type-specific method calls when using the various SQLite classes that
- would've normally returned a a generic Db base class, which aligns the code
- better with the Microsoft-supplied data providers.
- 1.0.17 - August 26, 2005
-
- -
- Code merge with SQLite 3.2.5
-
-
- Added Itanium and x64 build settings to the project (needs testing)
-
-
- Bugfixes and enhancements to several schema types
-
-
- Additional design-time support to include index and foreign key
- enumerations. Requires re-registering the designer using
- INSTALL.CMD. The new designer code now allows the VS query designer and
- typed datasets to automatically link up foreign keys, use indexes, and
- automatically generate relationships from the schema.
-
- Additional static methods on SQLiteConnection to create a database file,
- encrypt a file using the Encrypted File System (EFS) on NTFS (requires NT 2K or
- above) and NTFS file compression
-
- 1.0.16 - August 24, 2005
-
- -
- Code merge with SQLite 3.2.4 with the large delete bugfix in CVS (which will
- become 3.2.5 soon)
-
-
- Added new GetSchema() types: IndexColumns, ViewColumns, ForeignKeys
-
- 1.0.15 - August 22, 2005
-
-
- -
- Code merge with SQLite 3.2.3
-
-
- Minor updates for better design-time experience. More design-time code to
- follow in subsequent releases.
-
- 1.0.14 - August 16, 2005
-
-
- -
- Fixed a bug in the SQLiteDataAdapter due to insufficient implementation of the
- class. The RowUpdating and RowUpdated events are now properly
- implemented, but unfortunately inserting and updating data in a DataTable or
- DataSet is now much slower. This is the proper design however, so the
- changes are here to stay.
-
-
- Lots of schema changes to support Visual Studio's Data Designer architecture.
- Added
- Designer support for the provider. It's not 100%, but you can design
- queries, add typed datasets and perform quite a number of tasks all within
- Visual Studio now.
- 1.0.13 - August 8, 2005
-
-
-
- -
- Fixed a named parameter bug in the base SQLite_UTF16 class, which of course
- only showed up when a database connection was opened using the
- UseUTF16Encoding=True parameter.
-
-
- Fixed a performance issue in SQLite_UTF16 involving string marshaling.
-
- 1.0.12 - August 5, 2005
-
-
-
- -
- Full support for the Compact Framework. Each build (Debug/Release) now
- has a platform, either Win32 or Compact Framework. The correct
- projects are built accordingly. See the Distributing
- SQLite
- section for information on what files need to be distributed for each
- platform.
-
-
- Modified SQLite3.Reset() and Step() functions to transparently handle timeouts
- while waiting on the database to become available (typically when a writer is
- waiting on a reader to finish, or a reader is waiting on a writer to finish).
-
-
- Lots of code cleanup as suggested by the Code Analyzer (FxCop).
-
-
- Lots of updates to the helpfile (as you can see).
-
-
- Statements were already prepared lazily in a SQLiteCommand, but now
- its even more lazy. Statements are now only prepared if the statements
- haven't been previously prepared and a Prepare() function is called (and the
- command is associated with a connection) or just prior to the command being
- executed.
-
- 1.0.11 - August 1, 2005
-
-
- -
- For everything except the Compact Framework, System.Data.SQLite.DLL is
- now the only DLL required to use this provider! The
- assembly is now a multi-module assembly, containing both the native SQLite3
- codebase and the C# classes built on top of it. The Compact Framework
- version (when completed) will not be able to support this feature, so backwards
- compatibility with the Compact Framework has been preserved for the future.
-
-
- Fixed a bug in SQLiteCommand.ExecuteScalar() that caused it to stop executing
- commands once it obtained the first column of the first row-returning
- resultset. Any remaining statements after the row-returning statement was
- ignored.
-
-
- 1.0.10 - June 10, 2005
-
-
- -
- Fixed a bug in the SQLite3.cs Prepare() function that created a statement even
- when the SQLite engine returned a NULL pointer. Typically this occurs when
- multiple statements are processed and there are trailing comments at the end of
- the statement.
-
-
- Fixed a bug in SQLiteStatement.cs that retrieved parameter names for a
- parameterized query. SQLite's parameters are 1-based, and the function
- was starting at 0. This was fine when all parameters were unnamed, but
- for named parameters it caused the parameters to be out of whack.
-
-
- 1.0.09a - May 25, 2005
-
-
- -
- Fixed a broken helpfile and corrected some obsolete help remarks in
- SQLiteFunction.cs
-
-
- Added a version resource to the SQLite.Interop.DLL.
- 1.0.09 - May 24, 2005
-
-
- -
- Code merge with the latest 3.21 version of SQLite.
-
-
- Removed obsolete methods and properties for Whidbey Beta 2
- 1.0.08 Refresh - Mar 24, 2005
-
-
-
- -
- Code merge with the latest 3.20 version of SQLite.
-
-
- Recompiled the help file to fix a build error in it.
-
-
- 1.0.08 - Mar 11, 2005
-
-
-
- -
- Added additional #if statements to support the old beta 1 edition of VS2005.
-
-
- Code merged the SQLite 3.14 source.
-
-
- 1.0.07 - Mar 5, 2005
-
-
- -
- Made more optimizations to frequently-called functions, resulting in
- significant performance gains in all tests.
-
-
- Recompiled the binaries using the latest VS2005 February CTP, resulting in yet
- more significant speed gains. The 100k insert test used to take 3.5
- seconds and the insertwithidentity took almost 8 seconds. With the above
- two changes, those tests are now executing in 1.9 and 4.9 seconds respectively.
- 1.0.06 - Mar 1, 2005
-
-
-
- -
- Speed-ups to SQLiteDataReader. It was interop'ing unnecessarily every
- time it tried to fetch a field due to a logic error.
-
-
- Changed/Added some code to SQLiteConvert's internal DbType, Type and
- TypeAffinity functions.
-
-
- Fixed the SQLiteDataReader to obey the flags set in the optional
- CommandBehavior flag from SQLiteCommand.ExecuteReader().
-
-
- Changed the default page size to 1024 to reflect the defaults of SQLite.
- Ignores the "Page Size" connection string option for memory databases, as tests
- revealed that changing it resulted in memory corruption errors.
-
-
- Performance enhancements to the SQLiteCommand and SQLiteStatement classes which
- reduced the 100,000 row insert execution time as well as the various Function
- execution times significantly.
-
-
- 1.0.05 - Feb 25, 2005
-
-
- -
- Fixed the SQLite3 C# class step/reset functions to accomodate schema changes
- that invalidate a prepared statement. Statements are recompiled
- transparently.
-
-
- Moved all native DLL declarations to an UnsafeNativeMethods class.
-
-
- Split several classes into their own modules for readability.
-
-
- Renamed many internal variables, reviewed access to variables marked as
- internal and altered their protection levels accordingly.
-
-
- Due to the presence of the altered sqlite3 codebase and so many added interop
- functions, I decided to rename the sqlite3 C project and the DLL to
- SQLite.Interop.DLL. This is the same core sqlite3 codebase but designed
- specifically for this ADO.NET provider. This eliminates any possibility
- of someone dropping another build of sqlite3.dll into the system and rendering
- the provider inoperable. In the future if the folks at sqlite.org finally
- introduce a method of retrieving column usage for an arbitrary prepared
- statement, I'll retool this library to be a lightweight function call wrapper
- around the core binary distribution.
-
-
- Added [SuppressUnmanagedCodeSecurity] attribute to the UnsafeNativeMethods
- class which brings VS2005 November CTP execution speeds inline with the
- December CTP.
-
-
- Added a bin
- directory to the project root where pre-compiled binaries can be found.
-
-
- Added a doc
- directory where preliminary documentation on the class library can be found.
-
-
- Documented a lot more of the classes internally.
-
-
- 1.0.04 - Feb 24, 2005
-
-
- -
- Removed the SQLiteContext class and revamped the way UserFunctions work to
- simplify the imlementation.
-
-
- Fixed a counting bug in the TestCases class, specifically in the function tests
- where I wasn't resetting the counter and it was consequently reporting
- intrinsic and raw select calls as being much much faster than they actually
- were. The numbers are now much closer to what I expected for performance,
- with .NET user-functions still being the slowest, but only by a small margin.
-
-
- Small performance tweaks to SQLiteDataReader.
-
-
- Added PageSize to the SQLiteConnectionStringBuilder and subsequently to the
- SQLiteConnection
-
-
- Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after
- opening a connection.
-
-
- 1.0.03 - Feb 23, 2005
-
-
- -
- Fixed up SQLiteCommandBuilder to correct implementation errors, which resulted
- in an enormous performance boost in the InsertMany test. 10,000 row
- insert that executed in 1500ms now executes in 500ms.
-
-
- Fixed several errors in the SQLite3_UTF16 class. ToString() was working
- incorrectly and the Open() method failed to register user defined functions and
- collations.
-
-
- Fixed a bug in SQLiteCommand.ClearCommands() whereby only the first statement
- was being properly cleaned up.
-
-
- Fixed a bug in SQLiteDataReader whereby calling NextResult() would not properly
- reset the previously-executed command in the sequence.
-
-
- Added an InsertManyWithIdentityFetch test, which appends a select clause to
- populate the ID of the last inserted row into the InsertCommand, demonstrating
- ADO.NET's ability to auto-fetch identity columns on insert.
-
-
- 1.0.02 - Feb 21, 2005
-
- -
- Tweaks to the xxx_interop functions that return char *'s, so they also return
- the length. Saves an interop call to get the UTF-8 string length during
- conversion to a .NET string.
-
-
- Reworked the whole interop.c thing into interop.h and reduced the code required
- to merge the main sqlite3 codebase.
-
-
- Added support for user-defined collations.
-
-
-
+
+See the help documentation for further details on implementing both version-specific
+(GAC enabled) and version independent DBProviderFactories support.
+
+
+Compiling for the Compact Framework
+Compact framework not currently not included. We hope to have
+this feature included again soon.
+
+Just change the target platform from Win32 to Compact Framework and recompile.
+The Compact Framework has no support for enumerating attributes in an assembly,
+therefore all user-defined collating sequences and functions must be explicitly
+registered. See the testce sample application for
+an example of how to explicitly register user-defined collating sequences and functions.
+
+Distributing The SQLite Engine and ADO.NET Assembly
+Currently all versions provided as System.Data.SQLite.dll and SQLite.Interop.dll.
+This provides consistency across all packages, including Compact and Mono.
+
+On the desktop, only the System.Data.SQLite.DLL file needs to be
+distributed with your application(s). This DLL contains both the managed wrapper
+and the native SQLite3 codebase. For the Compact Framework, you will have
+to distribute both the CF version of System.Data.SQLite.DLL, as well as the SQLite.Interop.XXX.DLL.
+This is a breaking change as of 1.0.59.0. Recent Windows Mobile frameworks
+are not supporting the mixed CF assembly I was building prior to this version.
+
+Development Notes Regarding the SQLite 3 Source Code
+
+
+The core sqlite engine is compiled directly from the unmodified source code available
+at the sqlite.org website. Several additional pieces are compiled on top of
+it to extend its functionality, but the core engine's source is not changed.
+
+
+
+Version History
+
+
+ 1.0.69.0 - April 12, 2011
+
+
+ - Code merge with SQLite 3.7.6
+ - New VS2008 and VS2010 solution files
+ - Build and packaging automation
+ - New Inno Setup files
+ - Designer support currently not ready for release
+
+
+ 1.0.68.0 - February 2011
+
+
+ - Code merge with SQLite 3.7.5
+ - Continuing work on supporting Visual Studio 2010
+
+
+
+1.0.67.0 - January 3, 2011
+
+- Code merge with SQLite 3.7.4
+- Continuing work on supporting Visual Studio 2010
+
+
+1.0.66.1 - August 1, 2010
+
+- Code merge with SQLite 3.7.0.1
+- Re-enabled VS2005 designer support, broken in previous versions during the 2008
+transition
+- Implemented new forms of Take/Skip in the EF framework courtesy jlsantiago
+- Added "Foreign Keys" to the connection string parameters
+- Added the Truncate option to the Journal Modes enumeration
+
+
+1.0.66.0 - April 18, 2010
+
+- Code merge with SQLite 3.6.23.1
+- Fixed a bug in the installer that accidentally modified the machine.config on
+.NET versions prior to 2.0, invaliding the config file.
+- Fixed INTERSECT and EXCEPT union query generation in EF
+- Fixed an out of memory error in the trigger designer in cases where a WHEN clause
+is used in the trigger
+
+
+1.0.65.0 - July 26, 2009
+
+- Fixed a bug in the encryption module to prevent a double free() when rekeying
+a database.
+- Fixed a bug in the encryption module when ATTACHing an encrypted database.
+- Incorporated the WinCE locking fix from ticket
+#3991
+- Added "bigint" to the dropdown in the table designer, plus other minor
+table designer bugfixes.
+
+
+1.0.64.0 - July 9, 2009
+
+- Fixed the missing resources problem from the 63 release.
+- Added preliminary support for the Visual Studio 2010 beta.
+- Fixed a bug in SQLiteCommand that threw a null reference exception when setting
+the Transaction object to null.
+- If SQLiteConnection.EnlistTransaction is called multiple times for the same
+transaction scope, just return without throwing an error.
+
+
+1.0.63.0 - June 29, 2009
+
+- Code merge with SQLite 3.6.16
+- Check the autocommit mode of the connection to which a transaction is bound
+during the disposal of the transaction. If autocommit is enabled, then the
+database has already rolled back the transaction and we don't need to do it
+during dispose, and can quietly ignore the step without throwing an error.
+- Eliminated the mergebin step altogether. It was developed primarily to
+merge the Compact Framework binaries together, but since we're not doing that
+anymore, its use is limited. Its non-standard method of merging a binary on
+the desktop framework is redundant as well. The desktop binary now hard-links
+to MSCOREE, but as of Windows XP, this was redundant as well since XP and beyond
+automatically attempt to load MSCOREE on startup when a DLL has a .NET header.
+- More improvements to the test.exe program for running the tests against Sql
+Server for comparison purposes.
+
+
+1.0.62.0 - June 19, 2009
+
+- Code merge with SQLite 3.6.15
+- Fixed the decimal reading bug in the SQLiteDataReader
+- Changed Join()'s to Sleep()'s in the statement retry code to prevent
+message pumping
+- Fixed a bad pointer conversion when retrieving blobs using GetBytes() in 64-bit
+land
+- Several changes to the Test program that comes with the provider. Tests
+can now be individually disabled, and the test program can run against several provider
+back-ends
+
+
+1.0.61.0 - April 28, 2009
+
+- 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
+- Fixed the default-value lookups in SQLiteConnectionStringBuilder when accessing
+properties
+- Lock the SQLiteTransaction object during dispose to avoid potential race condition
+during cleanup
+- Fixed SQLiteDataReader.GetDecimal() processing and parsing of decimal values
+for cases when SQLite returns things like "1.0e-05" instead of "0.0001"
+
+
+1.0.60.0 - October 3, 2008
+
+- Throw a NotSupported exception in the EF Sql Gen code instead of parsing illegal
+SQL during an update/insert/delete where no primary key is defined.
+- Fixed the Compact Framework interop library. Since the linker flag /subsystem
+had no version specified, it was causing a problem for many CE-based platforms.
+- Incorporated SQLite patch for ticket
+#3387 and reverted out the vfs override code I added in build 59 to work around
+this problem.
+- Fixed a designer issue when creating a new table from the Server Explorer.
+After initially saving it, if you then continued to edit it and tried to save it
+again, it would generate the change SQL using the old temporary table name rather
+than the new name.
+
+
+1.0.59.0 - September 22, 2008
+
+- Code merge with SQLite 3.6.3. Solves a couple different EF issues that
+were either giving inconsistent results or crashing the engine.
+- Fixed the parsing of literal binaries in the EF SqlGen code. SQLite now
+passes nearly all the testcases in
+Microsoft's EF Query Samples application -- the exception being the datetimeoffset
+and time constants tests, and tests that use the APPLY keyword
+which are unsupported for now.
+- Revamped the Compact Framework mixed-mode assembly. Tired of playing cat
+and mouse with the Compact Framework's support for mixed-mode assemblies.
+The CF build now requires that you distribute both the System.Data.SQLite library
+and the paired SQLite.Interop.XXX library. The XXX denotes the build
+number of the library.
+- Implemented a workaround for Vista's overzealous caching by turning off
+FILE_FLAG_RANDOM_ACCESS for OS versions above XP. This is implemented as a
+custom (default override) VFS in the interop.c file, so no changes are made to the
+SQLite source code.
+- Fixed some registry issues in the designer install.exe, which prevented some
+design-time stuff from working on the Compact Framework when .NET 3.5 was installed.
+
+
+1.0.58.0 - August 30, 2008
+
+- Code merge with SQLite 3.6.2. If only I'd waited one more day to release
+57! Several LINQ issues have been resolved with this engine release relating
+to deeply-nested subqueries that the EF SqlGen creates.
+- The Rollback SQLiteConnection event no longer requires an open connection in
+order to subscribe to it. Missed this one in the 57 release.
+
+
+1.0.57.0 - August 29, 2008
+
+- Compiled against 3.6.1 with checkin
+#3300 resolved, which fixes an Entity Framework bug I was seeing. I currently
+have 3 other tickets out on the engine, which are not yet resolved and relate to
+EF.
+- Fixed decimal types to store and fetch using InvariantCulture. If you're
+using decimal datatypes in your database and were affected by the 56 release, please
+issue an UPDATE <table> SET <column> = REPLACE(<column>, ',',
+'.'); to fix the decimal separators. Apologies for not testing
+that more thoroughly before releasing 56.
+- Too many LINQ fixes to list. Fixed views so they generate, fixed the LIMIT
+clause, implemented additional functionality and removed unnecessary code.
+- Fixed foreign key names in the designer so viewing the SQL script on a new unsaved
+table after renaming it in the properties toolwindow will reflect in the script
+properly.
+- Fixed the Update and Commit events on SQLiteConnection so they don't require
+the connection to be opened first.
+- Fixed userdef aggregate functions so they play nice with each other when appearing
+multiple times in the same statement.
+- Fixed the editing and saving of default values in the table designer.
+- Fixed ForeignKeys schema to support multi-column foreign keys. Also hacked
+support for them in the table designer, provided two foreign keys in the designer
+have the same name and reference the same foreign table and different columns.
+Will implement first-class support for this in the next release.
+
+
+1.0.56.0 - August 11, 2008
+
+- Fixed a bug in the table designer when designing new tables, wherein you had
+to save the table first before being able to create indexes and foreign keys.
+- Tweaks to decimal type handling. The 'decimal' type can't
+be represented by Int64 or Double (without loss of precision) in SQLite, so we have
+to fudge it by treating it like a string and converting it back and forth in the
+provider. Unfortunately backing it to the db as a string causes sorting problems.
+See this post
+for details on using a custom collation sequence to overcome the sorting issue arising
+from this patch.
+- Minor tweaks and bugfixes to the test program and the provider.
+- More adjustments to make the managed-only version of the provider run and pass
+all tests on Mono.
+- LINQ to Entities bits heavily updated and compiled against VS2008 SP1 RTM.
+SQLite LINQ support is still considered beta.
+
+
+1.0.55.0 - August 6, 2008
+
+- Code merge with SQLite 3.6.1
+- Added support for the user-contributed extension-functions at
+http://www.sqlite.org/contrib. Feel free to override any of them with
+your own implementation. The new functions are: acos, asin, atan, atn2,
+atan2, acosh, asinh, atanh, difference, degrees, radians, cos, sin, tan, cot, cosh,
+sinh, tanh, coth, exp, log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate,
+charindex, leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter,
+and aggregates stdev, variance, mode, median, lower_quartile, upper_quartile.
+- Moved the last_rows_affected() function to the C extension library.
+- Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the
+ability for a user-defined function to get the collating sequence during the Invoke/Step
+methods. User-defined functions can use the collating sequence as a helper
+to compare values.
+- When registering user-defined collation sequences and functions, the provider
+will now register both a UTF8 and a UTF16 version instead of just UTF8.
+- Revamped connection pooling and added static ClearPool() and ClearAllPools()
+functions to SQLiteConnection. Behavior of the pool and its clearing mechanics
+match SqlClient.
+- Fixed connections going to the pool so that any unfinalized lingering commands
+from un-collected datareaders are automatically reset and any lurking transactions
+made on the connection are rolled back.
+- Transaction isolation levels are now partially supported. Serializable
+is the default, which obtains read/write locks immediately -- this is compatible
+with previous releases of the provider. Unspecified will default to whatever
+the default isolation mode is set to, and ReadCommitted will cause a deferred lock
+to be obtained. No other values are legal.
+- Revamped the test.exe program. It's now an interactive GUI application.
+Easier for me to add tests now.
+- Tweaks to the VS designer package and installer.
+- More adjustments to the internal SQLite3.Prepare() method to account for both
+kinds of lock errors when retrying.
+- Stripped a lot of unnecessary interop() calls and replaced with base sqlite
+calls. Revamped most of UnsafeNativeMethods to make it easier to port the
+code.
+- Rerigged internal callbacks for userdef functions and other native to managed
+callbacks. More portable this way.
+- Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol
+to force the wrapper to use the stock sqlite3 library. Some functionality
+is missing, but its minimal. None of the precompiled binaries are compiled
+using this setting, but its useful for testing portability.
+- Added "boolean" and a couple other missing datatypes to the "DataTypes"
+schema xml file. Used by the VS designer when displaying tables and querying.
+- Added a new connection string option "Read Only". When set to
+True, the database will be opened in read-only mode.
+- Added a new connection string option "Max Pool Size" to set the maximum
+size of the connection pool for a given db file connection.
+- Added a new connection string option "Default IsolationLevel" to set
+the default isolation level of transactions. Possible values are Serializable
+and ReadCommitted.
+- Added a new connection string option "URI" as an optional parameter
+for compatibility with other ports of the provider.
+
+
+1.0.54.0 - July 25, 2008
+
+- Fixed the setup project, which somehow "forgot" to include all the
+binaries in the 53 release.
+- Fixed a crash in the table designer when creating a new table and tabbing past
+the "Allow Nulls" cell in the grid while creating a new column.
+- Fixed a mostly-benign bug in SQLiteDataReader's GetEnumerator, which failed
+to pass along a flag to the underyling DbEnumerator it creates. This one's
+been around since day 1 and nobody's noticed it in all these years.
+- Added a new connection string parameter "Journal Mode" that allows
+you to set the SQLite journal mode to Delete, Persist or Off.
+
+
+1.0.53.0 - July 24, 2008
+
+- Enabled sqlite_load_extension
+- Added retry/timeout code to SQLite3.Prepare() when preparing statements for
+execution and a SQLITE_BUSY error occurs.
+- Added a new schema to SQLiteConnection.GetSchema() called Triggers.
+Used to retrieve the trigger(s) associated with a database and/or table/view.
+- Extensive updates to table/view editing capabilities inside Visual Studio's
+Server Explorer. The program now parses and lets you edit CHECK constraints
+and triggers on a table, as well as define triggers on views. Experimental
+still, so e-mail me if you have issues.
+- Minor bugfix to the ViewColumns schema to return the proper base column name
+for a view that aliases a column.
+- Fixed the insert/update/delete DML support in the Linq module.
+- Changed the behavior of SQLiteCommand to allow a transaction to be set even
+if the command hasn't been associated with a connection yet.
+
+
+1.0.52.0 - July 16, 2008
+
+- Code merge with SQLite 3.6.0
+- Added a lot of previously-missing exports to the DEF file for the native library.
+- Fixed SQLiteDataReader to check for an invalid connection before operating on
+an open cursor.
+- Implemented the Cancel() function of SQLiteCommand to cancel an active reader.
+- Added beta table and view designers to the Visual Studio Server Explorer.
+You can now edit/create tables and views, manage indexes and foreign keys from Visual
+Studio. This feature is still undergoing testing so use at your own risk!
+- Fixed the Server Explorer so VS2005 users can once again right-click tables
+and views and open the table data.
+- Added some new interop code to assist in returning more metadata not normally
+available through the SQLite API. Specifically, index column sort modes and
+collating sequences. Also added code to detect (but not parse) CHECK constraints,
+so the table designer can pop up a warning when editing a table with these constraints.
+Since I can't currently parse them.
+- Lots of LINQ SQL generation improvements and fixes.
+- Made some progress cleaning up and fixing up the schema definitions and manifests
+for EdmGen.
+- Added a built-in SQLiteFunction called last_rows_affected() which can be called
+from SQL to get the number of rows affected by the last update/insert operation
+on the connection. This is roughly equivalent to Sql Server's @@ROWCOUNT
+variable.
+
+
+1.0.51.0 - July 1, 2008
+
+- VS2008 SP1 Beta1 LINQ Support
+- Added experimental Entity Framework support in a new library, System.Data.SQLite.Linq.
+Some things work, some don't. I haven't finished rigging everything
+up yet. The core library remains stable. All LINQ-specific code is completely
+separate from the core.
+- Added some columns to several existing schemas to support some of the EDM framework
+stuff.
+- Minor tweaks to the factory to better support dynamic loading of the Linq extension
+library for SQLite.
+- SQLite's busy handler was interfering with the provider's busy handling
+mechanism, so its been disabled.
+
+
+1.0.50.0 - June 27, 2008
+
+- Fixed some lingering dispose issues and race conditions when some objects were
+finalized.
+- Fixed the SQLiteConvert.Split() routine to be a little smarter when splitting
+strings, which solves the quoted data source filename problem.
+- Enhanced the mergebin utility to work around the strong name validation bug
+on the Compact Framework. The old workaround kludged the DLL and caused WM6.1
+to fail to load it. This new solution is permanent and no longer kludges the
+DLL.
+
+
+1.0.49.0 - May 28, 2008
+
+- Code merge with SQLite 3.5.9
+- Fixed schema problems when querying the TEMP catalog.
+- Changed BLOB datatype schema to return IsLong = False instead of True.
+This was preventing DbCommandBuilder from using GUID's and BLOB's as primary keys.
+- Fix rollover issue with SQLite3.Reset() using TickCount.
+- Fixed SQLiteDataReader to dispose of its command (if called for) before closing
+the connection (when flagged to do so) instead of the other way around.
+- Fixed a DbNull error when retrieving items not backed by a table schema.
+- Fixed foreign key constraint parsing bug.
+- Added FailIfMissing property to the SQLiteConnectionStringBuilder.
+- Converted the source projects to Visual Studio 2008.
+
+
+1.0.48.0 - December 28, 2007
+
+- Code merge with SQLite 3.5.4
+- Calling SQLiteDataReader.GetFieldType() on a column with no schema information
+and whos first row is initially NULL now returns type Object instead of type DbNull.
+- Added support for a new DateTime type, JulianDay. SQLite uses Julian dates
+internally.
+- Added a new connection string parameter "Default Timeout" and a corresponding
+method on the SQLiteConnection object to change the default command timeout.
+This is especially useful for changing the timeout on transactions, which use SQLiteCommand
+objects internally and have no ADO.NET-friendly way to adjust the command timeout
+on those commands.
+- FTS1 and FTS2 modules were removed from the codebase. Please upgrade all
+full-text indexes to use the FTS3 module.
+
+
+1.0.47.2 - December 10, 2007
+
+- Fixed yet one more bug when closing a database with unfinalized command objects
+- Fixed the DataReader's GetFieldType function when dealing with untyped SQLite
+affinities
+
+
+1.0.47.1 - December 5, 2007
+
+- Fixed a leftover bug from the codemerge with SQLite 3.5.3 that failed to close
+a database.
+- Fixed the broken Compact Framework distribution binary.
+- SQLite 3.5.x changed some internal infrastructure pieces in the encryption interface
+which I didn't catch initially. Fixed.
+
+
+1.0.47.0 - December 4, 2007
+
+- Code merge with SQLite 3.5.3
+- Added installer support for Visual Studio 2008. Code is still using the
+VS2005 SDK so one or two bells and whistles are missing, but nothing significant.
+- This is the last version that the FTS1 and FTS2 extensions will appear.
+Everyone should rebuild their fulltext indexes using the new FTS3 module.
+FTS1 and FTS2 suffer from a design flaw that could cause database corruption with
+certain vacuum operations.
+- Fixed pooled connections so they rollback any outstanding transactions before
+going to the pool.
+- Fixed the unintended breaking of the TYPES keyword, and mis-typing of untyped
+or indeterminate column types.
+- Assert a FileIOPermission() requirement in the static SQLiteFunction constructor.
+
+- The CE-only SQLiteFunction.RegisterFunction() is now available on the desktop
+platform for dynamic registration of functions. You must still close and re-open
+a connection in order for the new function to be seen by a connection.
+- Fixed the "database is locked" errors by implementing behavioral changes in
+the interop.c file for SQLite. Closing a database force-finalizes any prepared
+statements on the database to ensure the connection is fully closed. This
+was rather tricky because the GC thread could still be finalizing statements itself.
+
+- Modifed the mergebin utility to help circumvent a long-standing strong name
+verification bug in the Compact Framework.
+
+
+1.0.46.0 - September 30, 2007
+
+- Fixed faulty logic in type discovery code when using SQLiteDataReader.GetValue().
+- Fixed Connection.Open() bug when dealing with :memory: databases.
+- Fixed SQLiteCommand.ExecuteScalar() to return a properly-typed value.
+- Added support for SQLiteParameter.ResetDbType().
+- Added test cases for rigid and flexible type testing.
+
+
+1.0.45.0 - September 25, 2007
+
+- Breaking change in GetSchema("Indexes") -- MetaDataCollections
+restrictions and identifier parts counts were wrong for this schema and I was using
+the wrong final parameter as the final restriction. Meaning, if you use the
+Indexes schema and are querying for a specific index the array should now be {catalog,
+null, table, index } instead of {catalog, null, table, null, index}
+- Code merge with SQLite 3.4.2
+- Fixed some errors in the encryption module, most notably when a non-default
+page size is specified in the connection string.
+- Fixed SQLiteDataReader to better handle type-less usage scenarios, which also
+fixes problems with null values and datetimes.
+- Fixed the leftover temp files problem on WinCE
+- Added connection pooling. The default is disabled for now, but may change
+in the future. Set "Pooling=True" in the connection string to enable it.
+- Sped up SQLiteConnection.Open() considerably.
+- Added some more robust cleanup code regarding SQLiteFunctions.
+- Minor additions to the code to allow for future LINQ integration into the main
+codebase.
+- Fixed a long-standing bug in the Open() command of SQLiteConnection which failed
+to honor the documented default behavior of the SQLite.NET provider to open the
+database in "Synchronous=Normal" mode. The default was "Full".
+- If Open() fails, it no longer sets the connection state to Broken. It
+instead reverts back to Closed, and cleans up after itself.
+- Added several new parameters to the ConnectionString for setting max page count,
+legacy file format, and another called FailIfMissing to raise an error rather than
+create the database file automatically if it does not already exist.
+- Fixed some designer toolbox references to the wrong version of the SQLite.Designer
+- Fixed a bug in the mergebin utility with regards to COR20 metadata rowsize computations.
+
+- Minor documentation corrections
+
+
+1.0.44.0 - July 21, 2007
+
+- Code merge with SQLite 3.4.1
+- Fixed a bug in SQLiteConnection.Open() which threw the wrong kind of error in
+the wrong kind of way when a database file could not be opened or created.
+- Small enhancements to the TYPES keyword, and added documentation for it in the
+help file.
+- Hopefully fixed the occasional SQLITE_BUSY errors that cropped up when starting
+a transaction. Usually occurred in high-contention scenarios, and the underlying
+SQLite engine bypasses the busy handler in this scenario to return immediately.
+
+
+1.0.43.0 - June 21, 2007
+
+- Code merge with SQLite 3.4.0
+- Fixed a reuse bug in the SQLiteDataAdapter in conjunction with the SQLiteCommandBuilder.
+It's been there unnoticed for more than a year, so it looks like most folks never
+encountered it.
+- Fixed an event handler bug in SQLiteCommandBuilder in which it could fail to
+unlatch from the DataAdapter when reused. Relates to the previous bugfix.
+- Fixed a double-dispose bug in SQLiteStatement that triggered a SQLiteException.
+
+
+1.0.42.0 - June 1, 2007
+
+- Code merge with SQLite 3.3.17
+- Changed the SQLiteFunction static constructor so it only enumerates loaded modules
+that have referenced the SQLite assembly, which hopefully should cut down dramatically
+the time it takes for that function to execute.
+- Added the FTS2 full-text search extension to the project. Look for FTS1
+to disappear within the next couple of revisions.
+- Fixed a bug introduced with the finalizers that triggered an error when statements
+ended with a semi-colon or had other non-parsable comments at the end of a statement
+- Fixed an intermittent multi-threaded race condition between the garbage collector
+thread and the main application thread which lead to an occasional SQLITE_MISUSE
+error.
+- Fixed another issue relating to SQLite's inherent typelessness when dealing
+with aggregate functions which could return Int64 or Double or even String for a
+given row depending on what was aggregated.
+- Remembered to recompile the DDEX portion of the engine this time, so Compact
+Framework users can once again use the design-time functionality
+
+
+1.0.41.0 - April 23, 2007
+
+- Code merge with SQLite 3.3.16
+- Second go at implementing proper finalizers to cleanup after folks who've forgotten
+to Dispose() of the SQLite objects
+- Enhanced GetSchema(IndexColumns) to provide numeric scale and precision values
+- Fixed the column ordinals in GetSchema(IndexColumns) to report the ordinal of
+the column in the index, not the table
+- 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
+
+
+1.0.40.0 - January 31, 2007
+
+- Code merge with SQLite 3.3.12
+- Lots of new code to handle misuse of the library. Implemented finalizers
+where it made sense, fixed numerous garbage collector issues when objects are not
+disposed properly, fixed some object lifetime issues, etc.
+- A failed Commit() on a transaction no longer leaves the transaction in an unusable
+state.
+
+
+1.0.39.1 - January 11, 2007
+
+- Fixed a really dumb mistake that for some reason didn't trigger any errors in
+the testcases, whereby commands when associated with a connection were not adding
+or removing themselves from an internal list of commands for that connection --
+causing a "database is locked" error when trying to close the connection.
+
+
+1.0.39.0 - January 10, 2007
+
+- Code merge with SQLite 3.3.10
+- Fixed a multi-threaded race condition bug in the garbage collector when commands
+and/or connections are not properly disposed by the user.
+- Switched the encryption's internal deallocation code to use sqlite's built-in
+aux functions instead of modifying the pager.c source to free the crypt block.
+This eliminates the last of the code changes the provider makes to the original
+sqlite engine sources. Props to Ralf Junker for pointing that out.
+
+
+1.0.38.0 - November 22, 2006
+
+- Fixed a bug when using CommandBehavior.KeyInfo whereby integer primary key columns
+may be duplicated in the results.
+- Enhanced the CommandBuilder so that update/delete statements are optimized when
+the affected table contains unique constraints and a primary key is present.
+- Fixed a bug in the DataReader when used in conjunction with CommandBehavior.CloseConnection.
+
+1.0.37.0 - November 19, 2006
+
+- Added support for CommandBehavior.KeyInfo. When specified in a query,
+additional column(s) will be returned describing the key(s) defined for the table(s)
+selected in the query. This is optimized when INTEGER PRIMARY KEY is set for
+the given tables, but does additional work for other kinds of primary keys.
+- Removed the default values from SQLiteDataReader.GetTableSchema(), to better
+follow Sql Server's pattern and suppress schema errors when loading the records
+into a dataset/datatable.
+- Allow integers to implicitly convert to double/decimal/single.
+
+1.0.36.1 - October 25, 2006
+
+- Added support for LONGVARCHAR, SMALLDATE and SMALLDATETIME. These were actually
+added in 1.0.36.0 but were undocumented.
+- Fixed the embedded helpfile which was accidentally built from old sources.
+- 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.
+
+
+1.0.36.0 - October 23, 2006
+
+- Code merge with SQLite 3.3.8, including support for full-text search via the
+FTS1 extension.
- Fixed a bug retrieving data types when UseUtf16Encoding
+is true. Side-effect of further merging the common code between the two base classes.
+- Fixed a bug with System.Transactions whereby a connection closed/disposed within
+a transaction scope is rolled back and cannot be committed.
+- Added more error checking and reporting to transactions to help user's isolate
+the source of transaction failures.
+- Implemented a workaround for a Compact Framework issue regarding strong-named
+assemblies containing a PE section with a raw size less than the virtual size.
+
+
+1.0.35.1 - September 12, 2006
+
+- Fixed the TYPES keyword to work when UseUTF16Encoding is true.
+- 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.
+- Updated the help documentation.
+
+
+1.0.35.0 - September 10, 2006
+
+- Fixed an infinite loop bug in SQLiteCommand caused when multiple semi-colon
+separated statements in a single command are executed via datareader and one of
+the statements contains a syntax error preventing it from being prepared.
-
+Added the TYPES preparser keyword to be placed before a SELECT statement to aid
+the wrapper in converting expressions in a subsequent select clause into more robust
+types. Documentation yet to be integrated, but available on the forums.
+- Added a new connectionstring parameter "BinaryGUID=true/false" (default is "true").
+When true, guid types are stored in the database as binary blobs to save space.
+Binary has been the default format since 1.0.32.0 but this parameter eases backward
+compatibility.
+
+
+1.0.34.0 - September 4, 2006
+
+- Fixed a bug in SQLiteParameterCollection.RemoveAt(namedparam)
+- Fixed a bug in SQLiteDataReader introduced in 1.0.30 that broke DateTimes using
+the Ticks option in the connection string.
+- Fixed a bug in the recent changes to guid behavior wherein using a datareader's
+indexer to fetch a guid from a column containing both binary and text guids would
+sometimes return a byte array instead of a guid.
+- Enacted a workaround involving typed datasets in Compact Framework projects
+in which it took an excessive amount of time to open a form and generated a lot
+of temporary files in the user's Local Settings\Application Data\Microsoft\VisualStudio\8.0\Assembly
+References folder.
+
+
+1.0.33.0 - August 21, 2006
+
+- Code merge with SQLite 3.3.7
+- Fixed a bug in SQLiteConnection that caused it to "forget" about commands bound
+to it and occasionally throw an error when a database is closed and opened repeatedly.
+
+
+
+1.0.32.0 - August 6, 2006
+
+- Added AllowPartiallyTrustedCallers attribute to the assembly
- Added the
+missing "nchar" type
+- Added support for binary Guid's. Guids are now stored as binary by default
+when using parameterized queries. Text guids are still fully supported.
+- Fixed a TransactionScope() error that caused the transaction not to be completed.
+- Enhanced parameter names so that if they are added to the Parameters collection
+without their prefix character (@ : or $) they are still properly mapped.
+
+
+1.0.31.0 - July 16, 2006
+
+- Re-applied the view parsing bugfix in 1.0.29.0 that was accidentally reverted
+out of the 30 build.
- Fixed SQLiteCommand.ExecuteScalar() to return null
+instead of DbNull.Value when no rows were returned.
+- Design-time installer now installs the package-based designer on full Visual
+Studio versions. Express editions continue to use the packageless designer.
+- In Visual Studio (not Express), you can now right-click a SQLite connection
+in the Server Explorer and vacuum the database and change the encryption password.
+
+
+1.0.30.1 - July 2, 2006
+
+- Code merge with SQLite 3.3.6
+- Added support for the |DataDirectory| keyword in the Data Source filename string.
+
+- Added hook notification support to SQLiteConnection. Specifically, there
+are three new events on the SQLiteConnection object which are raised when an update/insert/delete
+occurs and when transactions are committed and rolled back.
- Changed SQLiteTransaction
+to default to BEGIN IMMEDIATE instead of just BEGIN, which solves a multithreaded
+race condition.
+- Changed SQLiteDataReader to better support SQLite's typelessness. The
+data reader no longer caches column affinity, but re-evaluates it for each column/row.
+- Fixed a bug in Prepare() which caused an intermittant fault due to the code
+accessing the memory of an unpinned variable.
+- Fixed a multithreaded lock-retry bug in in SQLiteConnection.Open() and in SQLiteTransaction,
+which failed to use a command timeout before giving up.
+
+
+1.0.29.0 - May 16, 2006
+
+- Fixed a bug in the Views schema information which caused multi-line view definition
+statements not to be parsed
+- Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y)
+datatypes with specified precision and scale
+- 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
+- Changed SQLiteException to inherit from DbException on the full framework
+
+
+1.0.28.0 - April 14, 2006
+
+- Code merge with SQLite 3.3.5
+- You can now specify a relative path in the Compact Framework's "Data Source"
+by prefixing the file with ".\". i.e. "Data Source=.\\mydb.db3"
+- Several more changes and enhancements to schemas for better compatibility.
+- Fixed several bugs with the 64-bit builds of the provider. The x64 binary
+is now optimized.
+- Design-time installer now tries to install the 64-bit builds into the GAC along
+with the 32-bit build.
+- Fixed a bug in the SQLiteDataReader.GetSchemaTable() function when used with
+tables containing apostrophes.
+- Fixed an XSD-related bug whereby the XSD utility was unable to locate the provider
+and could not generate typed datasets.
+- Added NTEXT and STRING datatypes to the list of recognized keywords (used for
+schema retrieval).
+- Due to the XSD bug and other potential problems related to external build utilities,
+changes to the installation of the designer have had to be made. The installer
+used to write the DbProviderFactories XML into the devenv.exe.config file and its
+express cousins, but now has to write instead to the machine.config.
+- Installer writes to both the 32-bit machine.config and the 64-bit machine.config
+if it exists.
+
+
+1.0.27.1 - February 28, 2006
+
+- Fixed a bug when doing data binding in Compact Framework projects that prevented
+you from assigning a typed dataset to a bindingsource. It turns out, the CF
+version of the SQLite provider needs to be flagged as retargetable so it'll work
+in the design-time desktop environment. No changes were made to the desktop
+build, but the revision was bumped on all libraries anyway in order to keep them
+sync'd.
+
+1.0.27.0 - February 27, 2006
+
+- Many optimizations and a few more minor adjustments to schemas and schema retrieval
+performance.
+- Lots of design-time attributes added to the code. The DbDataAdapter, DbCommand,
+and DbConnection objects now have greatly enhanced design-time capabilities when
+added to the toolbox and dropped on a form.
+- Lots of Server Explorer enhancements.
+- Binaries are now distributed in a setup program for easier administration and
+configuration of the provider.
+
+
+1.0.26.2 - February 15, 2006
+
+- Yet another bugfix to index schemas, which was incorrectly marking most indexes
+as primary key indexes.
- Fixed GetSchema() to accept a null string array.
-
+Fixed a misspelled export in the core C library that prevented databases opened
+with UTF16Encoding from getting schema information and would likely cause an error
+if attempted.
+
+1.0.26.1 - February 14, 2006
+
+- Fixed even more minor schema bugs having to do with indexes.
- Added two
+missing pieces in the SQLite designer which were preventing it from being used from
+within VS Express editions.
- Several bugfixes to the design-time installer
+program, including supporting 64-bit environments.
+
+1.0.26.0 - February 11, 2006
+
+- Code merge with SQLite 3.3.4
- Fixed an encryption bug when changing the
+password of databases over 1gb in size.
- Fixed various designer issues
+related to construction of named parameters.
+- Retooled the GetSchema() method of SQLiteDataReader to use the new 3.3.4 API
+functions, and made several enhancements and fixes to schemas.
+- Implemented the SourceColumnNullMapping property of SQLiteParameter to fix a
+DbCommandBuilder code generation bug.
- Removed the runtime dependency
+on MSVCR80.DLL. File size is somewhat larger for the varying desktop versions.
-
+Created an install program to manage installation and uninstallation of the SQLite
+design-time support.
+- Designer support now works for all Visual Studio editions, including all Express
+Editions.
+- Design-time installer will now remove (if present) the machine.config SQLite
+entries in favor of installing the xml code into the devenv.exe.config file (or
+any of the variations for express editions). The officially-accepted behavior
+of using DbProviderFactories is to add the code to your app.config file, and the
+machine.config file should not be touched.
+
+
+1.0.25.0 - January 31, 2006
+
+- Code merge with SQLite 3.3.3
- Added automatic distributed transaction
+enlistment and implemented the DbConnection.EnlistTransaction method for manual
+enlistment.
+- Nested transactions are now supported.
+- Rearranged the timing of SetPassword(), which now must be called before the
+database is opened instead of afterwards. Optionally, the password can be
+supplied in the ConnectionString.
+- Fixed a bug in SQLiteFunction that caused a failure when an empty resultset
+was returned and a custom user aggregate function was used in the query.
+- The designer has had another round of cleanup applied, in preparation for moving
+to a VS package.
+- Added SQLiteMetaDataCollectionNames class.
+
+
+1.0.24.6 beta - January 23, 2006
+
+- This beta is built from sqlite.org's 3.3.2 beta.
- Eliminated the static
+linking of mscoree from all binaries. Native projects can now use the library
+without any dependencies on the .NET framework, while managed projects continue
+to be able to use the library normally.
+
+1.0.24.5 beta - January 20, 2006
+
+- This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress
+code. Therefore no guarantees can be made regarding its suitability for production
+use.
+- You no longer need to distribute 2 files on the CompactFramework.
+You can delete SQLite.Interop.DLL entirely. I wrote a custom tool
+called "mergebin" (available in the source zip file) which combines the two libraries
+and gets around a glaring defect in the VS2005 linker for ARM processors which doesn't
+allow you to link netmodules.
+- x64 and ia64 builds now use the same strong name as the x86 build.
+This means breaking backward compatibility, but it was necessary in order to allow
+you to drop any of those 3 builds onto a PC and have your .NET program run properly.
+Prior to this, you'd get an error if you built your program using the x86 build,
+and then installed the x64 version on a target machine and tried to run your program
+against it.
+- The entire source project has been gone over top to bottom. A debug build
+no longer combines the binaries into a single module, which was preventing proper
+debugging.
+
+1.0.24.4 beta - January 16, 2006
+
+- This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress
+code. Therefore no guarantees can be made regarding its suitability for production
+use.
+- Fixed a bug in the UTF-16 handling code for preparing statements due to a behavioral
+change in SQLite 3.3.0.
+- Added pager.c code necessary to cleanup after an encrypted file is closed.
+- Fixed an encryption bug that caused a fault when an encrypted file was rolled
+back.
+- Modified the testcase code to take advantage of optimizations regarding the
+use of a DbCommandBuilder. DataAdapter insert speed increased dramatically
+as a result.
+
+
+1.0.24.3 beta - January 10, 2006
+
+- This beta is built from sqlite.org's 3.3.0 alpha and contains development-in-progress
+code. Therefore no guarantees can be made regarding its suitability for production
+use.
- Added support for database encryption at the pager level. Databases
+are encrypted using a 128-bit RC4 stream algorithm. To open an existing encrypted
+database, you may now specify a "Password={password}" text in the ConnectionString,
+or you may call the SQLiteConnection.SetPassword() function to set the password
+on an open connection. To encrypt existing non-encrypted databases or to change
+the password on an encrypted database, you must use the SQLiteConnection.ChangePassword()
+function. If you use SetPassword() instead of specifying a password in the
+connection string, or call ChangePassword() you may use a binary byte array or a
+text string as the password.
+- Rewrote the locking implementation for the Compact Framework. It is now
+more robust and incorporates into the SQLite codebase more efficiently than the
+previous CE adaptation.
+- Moved some of the embedded schema XML data into a resource file to ease code
+readability.
+- Automated the fixup of the original sqlite codebase's source prior to compiling,
+to ease merging with sqlite.org's source.
+- Fixed a memory leak in SQLiteCommand due to it not removing an internal reference
+to itself in SQLiteConnection.
+
+
+1.0.24.2 - December 30, 2005
+
+- Fixed the SQLiteDataReader.HasRows property to return the proper value.
+- Implemented the inadvertently neglected RecordsAffected property on SQLiteDataReader.
+
+- SQLiteFunction static constructor was changed to pre-filter classes with only
+the SQLiteFunctionAttribute. The code was throwing an exception when certain
+assemblies were referenced in a project.
+- Fixed the SQLiteDataAdapter OnRowUpdated event, which was using the wrong variable
+to find the attached event handler and subsequently not raising the event.
+- Small optimizations and fixes to SQLiteDataReader.NextResult().
+
+
+1.0.24.1 - December 19, 2005
+
+- Update core SQLite engine to 3.2.8
+
+1.0.24 - December 9, 2005
+
+- Fixed the Catalogs schema bug that caused attached databases not to
+be re-attached to a cloned connection
+- Enhanced transactions to allow for a deferred or immediate writelock. SQLiteConnection.BeginTransaction()
+now has an additional overload to support it
- Commands are now prepared
+as they are executed instead of beforehand. This fixes a bug whereby a multi-statement
+command that alters the database and subsequently references the altered data would
+fail during Prepare().
- Tightened up the SQLiteDataReader to prevent reading
+columns before calling the first Read() and to prevent reading columns after the
+last Read().
+- A more descriptive error is thrown if there aren't enough parameters in the
+command to satisfy the parameters required by the statement(s).
+
+
+1.0.23 - November 21, 2005
+
+- Named parameters may now begin with @ to ease portability of
+the provider. SQLite's named parameters are ordinarily prefixed with a :
+or $. The designer will still use the $
+prefix however, since its more compatible with the default SQLite engine.
-
+Added several alternate ISO8601 date/time formats to SQLiteConvert.cs to increase
+compatibility.
+- Relaxed coersion restrictions to work better with SQLite's inherent typelessness.
+
+
+1.0.22 - November 11, 2005
+
+- Fixed some globalization issues which resulted in incorrect case-insensitive
+comparisons
+- Fixed a bug in the routine that finds all user-defined functions in a loaded
+assembly. It would throw an exception if any of the types in the assembly
+could not be loaded. The exception is now caught and handled appropriately.
+
+
+1.0.21 - November 4, 2005
+
+- Fixed a designer bug when creating typed datasets with parameterized queries.
+- The above fix then exposed another bug in the datareader's ability to query
+schema information on parameterized commands, which was also fixed.
+- Compiled against the RTM version of VS2005.
+- Rewrote the design-time install script to use the XML DOM objects when writing
+to the machine.config and to automatically register the DLL in the GAC.
-
+Made changes to the app.config descriptions and help file to improve version-independent
+factory support.
+
+1.0.20 - October 19, 2005
+
+- Fixed a shortcut in SQLiteBase.GetValue which was insufficient for international
+environments. The shortcut was removed and the "proper" procedure put in.
+
+1.0.19 - October 5, 2005
+
+- Code merge with SQLite 3.2.7
+
- Fixed bugs in the CE port code (os_wince.c) which were brought to light by recent
+changes in the SQLite engine.
+
- Recompiled and modified to be compatible with the September VS2005 Release Candidate.
+Beta 2 users should continue to use 1.0.18.1
+
+1.0.18.1 - September 19, 2005
+
+- Code merge with SQLite 3.2.6
+
+1.0.18 - September 1, 2005
+
+- Added type-specific method calls when using the various SQLite classes that
+would've normally returned a a generic Db base class, which aligns the code better
+with the Microsoft-supplied data providers.
+
+1.0.17 - August 26, 2005
+
+- Code merge with SQLite 3.2.5
+
- Added Itanium and x64 build settings to the project (needs testing)
+
- Bugfixes and enhancements to several schema types
+
- Additional design-time support to include index and foreign key enumerations.
+Requires re-registering the designer using INSTALL.CMD. The new designer code
+now allows the VS query designer and typed datasets to automatically link up foreign
+keys, use indexes, and automatically generate relationships from the schema.
-
+Additional static methods on SQLiteConnection to create a database file, encrypt
+a file using the Encrypted File System (EFS) on NTFS (requires NT 2K or above) and
+NTFS file compression
+
+
+1.0.16 - August 24, 2005
+
+- Code merge with SQLite 3.2.4 with the large delete bugfix in CVS (which will
+become 3.2.5 soon)
+
- Added new GetSchema() types: IndexColumns, ViewColumns, ForeignKeys
+
+
+1.0.15 - August 22, 2005
+
+
+- Code merge with SQLite 3.2.3
+
- Minor updates for better design-time experience. More design-time code to follow
+in subsequent releases.
+
+
+1.0.14 - August 16, 2005
+
+
+- Fixed a bug in the SQLiteDataAdapter due to insufficient implementation of the
+class. The RowUpdating and RowUpdated events are now properly implemented,
+but unfortunately inserting and updating data in a DataTable or DataSet is now much
+slower. This is the proper design however, so the changes are here to stay.
+
- Lots of schema changes to support Visual Studio's Data Designer architecture.
-
+Added Designer support for the provider. It's not 100%, but you can design
+queries, add typed datasets and perform quite a number of tasks all within Visual
+Studio now.
+
+1.0.13 - August 8, 2005
+
+
+
+- Fixed a named parameter bug in the base SQLite_UTF16 class, which of course
+only showed up when a database connection was opened using the UseUTF16Encoding=True
+parameter.
+
- Fixed a performance issue in SQLite_UTF16 involving string marshaling.
+
+
+1.0.12 - August 5, 2005
+
+
+
+- Full support for the Compact Framework. Each build (Debug/Release) now
+has a platform, either Win32 or Compact Framework. The correct projects
+are built accordingly. See the Distributing SQLite
+section for information on what files need to be distributed for each platform.
+
- Modified SQLite3.Reset() and Step() functions to transparently handle timeouts
+while waiting on the database to become available (typically when a writer is waiting
+on a reader to finish, or a reader is waiting on a writer to finish).
+
- Lots of code cleanup as suggested by the Code Analyzer (FxCop).
+
- Lots of updates to the helpfile (as you can see).
+
- Statements were already prepared lazily in a SQLiteCommand, but now
+its even more lazy. Statements are now only prepared if the statements haven't
+been previously prepared and a Prepare() function is called (and the command is
+associated with a connection) or just prior to the command being executed.
+
+
+1.0.11 - August 1, 2005
+
+
+- For everything except the Compact Framework, System.Data.SQLite.DLL
+is now the only DLL required to use this provider! The assembly
+is now a multi-module assembly, containing both the native SQLite3 codebase and
+the C# classes built on top of it. The Compact Framework version (when completed)
+will not be able to support this feature, so backwards compatibility with the Compact
+Framework has been preserved for the future.
+
- Fixed a bug in SQLiteCommand.ExecuteScalar() that caused it to stop executing
+commands once it obtained the first column of the first row-returning resultset.
+Any remaining statements after the row-returning statement was ignored.
+
+
+1.0.10 - June 10, 2005
+
+
+- Fixed a bug in the SQLite3.cs Prepare() function that created a statement even
+when the SQLite engine returned a NULL pointer. Typically this occurs when multiple
+statements are processed and there are trailing comments at the end of the statement.
+
- Fixed a bug in SQLiteStatement.cs that retrieved parameter names for a parameterized
+query. SQLite's parameters are 1-based, and the function was starting at 0.
+This was fine when all parameters were unnamed, but for named parameters it caused
+the parameters to be out of whack.
+
+
+1.0.09a - May 25, 2005
+
+
+- Fixed a broken helpfile and corrected some obsolete help remarks in SQLiteFunction.cs
+
- Added a version resource to the SQLite.Interop.DLL.
+
+1.0.09 - May 24, 2005
+
+
+- Code merge with the latest 3.21 version of SQLite.
+
- Removed obsolete methods and properties for Whidbey Beta 2
+
+1.0.08 Refresh - Mar 24, 2005
+
+
+
+- Code merge with the latest 3.20 version of SQLite.
+
- Recompiled the help file to fix a build error in it.
+
+
+1.0.08 - Mar 11, 2005
+
+
+
+- Added additional #if statements to support the old beta 1 edition of VS2005.
+
- Code merged the SQLite 3.14 source.
+
+
+1.0.07 - Mar 5, 2005
+
+
+- Made more optimizations to frequently-called functions, resulting in significant
+performance gains in all tests.
+
- Recompiled the binaries using the latest VS2005 February CTP, resulting in yet
+more significant speed gains. The 100k insert test used to take 3.5 seconds
+and the insertwithidentity took almost 8 seconds. With the above two changes,
+those tests are now executing in 1.9 and 4.9 seconds respectively.
+
+1.0.06 - Mar 1, 2005
+
+
+
+- Speed-ups to SQLiteDataReader. It was interop'ing unnecessarily every
+time it tried to fetch a field due to a logic error.
+
- Changed/Added some code to SQLiteConvert's internal DbType, Type and TypeAffinity
+functions.
+
- Fixed the SQLiteDataReader to obey the flags set in the optional CommandBehavior
+flag from SQLiteCommand.ExecuteReader().
+
- Changed the default page size to 1024 to reflect the defaults of SQLite.
+Ignores the "Page Size" connection string option for memory databases, as tests
+revealed that changing it resulted in memory corruption errors.
+
- Performance enhancements to the SQLiteCommand and SQLiteStatement classes which
+reduced the 100,000 row insert execution time as well as the various Function execution
+times significantly.
+
+
+1.0.05 - Feb 25, 2005
+
+
+- Fixed the SQLite3 C# class step/reset functions to accomodate schema changes
+that invalidate a prepared statement. Statements are recompiled transparently.
+
- Moved all native DLL declarations to an UnsafeNativeMethods class.
+
- Split several classes into their own modules for readability.
+
- Renamed many internal variables, reviewed access to variables marked as internal
+and altered their protection levels accordingly.
+
- Due to the presence of the altered sqlite3 codebase and so many added interop
+functions, I decided to rename the sqlite3 C project and the DLL to SQLite.Interop.DLL.
+This is the same core sqlite3 codebase but designed specifically for this ADO.NET
+provider. This eliminates any possibility of someone dropping another build
+of sqlite3.dll into the system and rendering the provider inoperable. In the
+future if the folks at sqlite.org finally introduce a method of retrieving column
+usage for an arbitrary prepared statement, I'll retool this library to be a lightweight
+function call wrapper around the core binary distribution.
+
- Added [SuppressUnmanagedCodeSecurity] attribute to the UnsafeNativeMethods class
+which brings VS2005 November CTP execution speeds inline with the December CTP.
+
- Added a bin directory to the project root where pre-compiled binaries
+can be found.
+
- Added a doc directory where preliminary documentation on the class library
+can be found.
+
- Documented a lot more of the classes internally.
+
+
+1.0.04 - Feb 24, 2005
+
+
+- Removed the SQLiteContext class and revamped the way UserFunctions work to simplify
+the imlementation.
+
- Fixed a counting bug in the TestCases class, specifically in the function tests
+where I wasn't resetting the counter and it was consequently reporting intrinsic
+and raw select calls as being much much faster than they actually were. The
+numbers are now much closer to what I expected for performance, with .NET user-functions
+still being the slowest, but only by a small margin.
+
- Small performance tweaks to SQLiteDataReader.
+
- Added PageSize to the SQLiteConnectionStringBuilder and subsequently to the
+SQLiteConnection
+
- Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after
+opening a connection.
+
+
+1.0.03 - Feb 23, 2005
+
+
+- Fixed up SQLiteCommandBuilder to correct implementation errors, which resulted
+in an enormous performance boost in the InsertMany test. 10,000 row
+insert that executed in 1500ms now executes in 500ms.
+
- Fixed several errors in the SQLite3_UTF16 class. ToString() was working
+incorrectly and the Open() method failed to register user defined functions and
+collations.
+
- Fixed a bug in SQLiteCommand.ClearCommands() whereby only the first statement
+was being properly cleaned up.
+
- Fixed a bug in SQLiteDataReader whereby calling NextResult() would not properly
+reset the previously-executed command in the sequence.
+
- Added an InsertManyWithIdentityFetch test, which appends a select clause to
+populate the ID of the last inserted row into the InsertCommand, demonstrating ADO.NET's
+ability to auto-fetch identity columns on insert.
+
+
+1.0.02 - Feb 21, 2005
+
+- Tweaks to the xxx_interop functions that return char *'s, so they also return
+the length. Saves an interop call to get the UTF-8 string length during conversion
+to a .NET string.
+
- Reworked the whole interop.c thing into interop.h and reduced the code required
+to merge the main sqlite3 codebase.
+
- Added support for user-defined collations.
+
+