Version History
+1.0.78.0 - January 27, 2012
+-
+
- Updated to SQLite 3.7.10. +
- Redesign the VS designer support installer and integrate it into the setup packages. +
- When emitting SQL for foreign keys in the VS designer, be sure to take all returned schema rows into account. Remainder of fix for [b226147b37]. +
- Add Flags connection string property to control extra behavioral flags for the connection. +
- Refactor all IDisposable implementations to conform to best practices, potentially eliminating leaks in certain circumstances. +
- Even more enhancements to the build and test automation. +
- Support parameter binding to more primitive types, including unsigned integer types. +
- Recognize the TIMESTAMP column data type as the DateTime type. Fix for [bb4b04d457]. +
- Prevent logging superfluous messages having to do with library initialization checking. Fix for [3fc172d1be]. +
- Support the DateTimeKind and BaseSchemaName connection string properties in the SQLiteConnectionStringBuilder class. Fix for [f3ec1e0066]. +
- Overloads of the SQLiteConvert.ToDateTime and SQLiteConvert.ToJulianDay methods that do not require an instance should be static. Partial fix for [4bbf851fa5]. ** Potentially Incompatible Change ** +
1.0.77.0 - November 28, 2011
+-
+
- Updated to SQLite 3.7.9. +
- More enhancements to the build and test automation. +
- Plug native memory leak when closing a database connection containing a statement that cannot be finalized for some reason. +
- The SQLite3 class should always attempt to dispose the contained SQLiteConnectionHandle, even when called via the finalizer. +
- When compiled with DEBUG defined, emit diagnostic information related to resource cleanup to any TraceListener objects that may be registered. +
- Stop characterizing all log messages as errors. From now on, if the errorCode is zero, the message will not be considered an error. +
- Never attempt to configure the native logging interface if the SQLite core library has already been initialized for the process. Fix for [2ce0870fad]. +
- Allow the SQLiteLog class to be used for logging messages without having an open connection. +
- Support building the core System.Data.SQLite assemblies using the .NET Framework 4.0 Client Profile. Fix for [566f1ad1e4]. +
- When generating the schema based on the contents of a SQLiteDataReader, skip flagging columns as unique if the data reader is holding the result of some kind of multi-table construct (e.g. a cross join) because we must allow duplicate values in that case. Fix for [7e3fa93744]. +
- When returning schema information that may be used by the .NET Framework to construct dynamic SQL, use a fake schema name (instead of null) so that the table names will be properly qualified with the catalog name (i.e. the attached database name). Partial fix for [343d392b51]. +
- Add SQLiteSourceId property to the SQLiteConnection class to return the SQLite source identifier. +
- Add MemoryUsed and MemoryHighwater properties to the SQLiteConnection class to help determine the memory usage of SQLite. +
- Add DateTimeKind connection string property to control the DateTimeKind of parsed DateTime values. Partial fix for [343d392b51]. ** Potentially Incompatible Change ** +
- Improve the robustness of the SQLiteLog class when it will be initialized and unloaded multiple times. +
- Fix the name of the interop assembly for Windows CE. Add unit tests to prevent this type of issue from happening again. Fix for [737ca4ff74]. +
- Formally support the SQL type name BOOLEAN in addition to BOOL. Fix for [544dba0a2f]. +
- Make sure the SQLiteConvert.TypeNameToDbType method is thread-safe. Fix for [84718e79fa]. +
1.0.76.0 - October 4, 2011
- Prevent the domain unload event handler in SQLiteLog from being registered multiple times. Fix for [0d5b1ef362].
- Stop allowing non-default application domains to initialize the SQLiteLog class. Fix for [ac47dd230a].
1.0.75.0 - October 3, 2011
-
-
- Updated to SQLite 3.7.8 [3e0da808d2]. +
- Updated to SQLite 3.7.8.
- More enhancements to the build system.
- Add official NuGet packages for x86 and x64.
- Add Changes and LastInsertRowId properties to the connection class.
- Support more formats when converting data from/to the DateTime type.
- Make all the assembly versioning attributes consistent. @@ -75,11 +110,11 @@
- Fix incorrect resource name for SR.resx in the mixed-mode assembly.
- Reduce the number of String.Compare() calls in the hot path for SQLiteCommand.ExecuteReader().
1.0.74.0 - July 4, 2011
-
-
- Updated to SQLite 3.7.7.1 [af0d91adf4]. +
- Updated to SQLite 3.7.7.1.
- Fix incorrect hard-coded .NET Framework version information SQLiteFactory_Linq.cs that was causing IServiceProvider.GetService to fail when running against the .NET Framework 3.5.
- Fix all XML documentation warnings.
- Restore support for the mixed-mode assembly (i.e. the one that can be registered in the Global Assembly Cache).
- Restore support for the Compact Framework.
- Remove unused "using" statements from the System.Data.SQLite and System.Data.SQLite.Linq projects. @@ -92,11 +127,11 @@
- Add release automation to build the source, setup, and binary packages in all supported build variants.
- Add the testlinq project to the new build system and make it work properly with Visual Studio 2008 and 2010.
1.0.73.0 - June 2, 2011
-
-
- Updated to SQLite 3.7.6.3 [ed1da510a2]. +
- Updated to SQLite 3.7.6.3.
- Minor optimization to GetBytes(). Fix for [8c1650482e].
- Update various assembly information settings.
- Correct System.Data.SQLite.Linq version and resource information. Fix for [6489c5a396] and [133daf50d6].
- Moved log handler from SQLiteConnection object to SQLiteFactory object to prevent if from being prematurely GCed.
- We should block x64 installs on x86 and we should install native only if the setup package itself is native. Fix for [e058ce156e]. @@ -110,24 +145,24 @@
- Updated to SQLite 3.7.6+ [1bd1484cd7] to get additional Windows error logging.
- Updated setup to optionally add install directory to PATH if GAC option selected.
1.0.69.0 - April 12, 2011
-
-
- Code merge with SQLite 3.7.6 +
- 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 +
- 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 +
- 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 @@ -147,49 +182,49 @@
- 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 +
- Added "bigint" to the dropdown in the table designer, plus other minor table designer bugfixes.
- 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 +
- 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 +
- If SQLiteConnection.EnlistTransaction is called multiple times for the same transaction scope, just return without throwing an error.
- 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 +
- 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 +
- 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 +
- More improvements to the test.exe program for running the tests against Sql Server for comparison purposes.
- 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 +
- 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 +
- 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 +
- 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
- 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 @@ -197,238 +232,238 @@
- 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"
- Throw a NotSupported exception in the EF Sql Gen code instead of parsing +
- 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 +
- 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 + #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 +
- 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.
- Code merge with SQLite 3.6.3. Solves - a couple different EF issues that were either giving inconsistent results or +
- 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 +
- 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 +
- 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 +
- 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 +
- 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.
- 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 +
- 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. -
- Fixed the Rollback SQLiteConnection event to not require a connection be +
- Fixed the Rollback SQLiteConnection event to not require a connection be opened first.
- Compiled against 3.6.1 with checkin - #3300 resolved, - which fixes an Entity Framework bug I was seeing. I currently have 3 other + #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 +
- 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, +
- 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 +
- 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 +
- 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 +
- 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 +
- 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.
- Fixed a bug in the table designer when designing new tables, wherein you had to +
- 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 +
- 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 +
- 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 to Entities bits heavily updated and compiled against VS2008 SP1 RTM. SQLite LINQ support is still considered beta.
- 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 + 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 +
- 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 +
- 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 +
- 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 +
- 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 +
- 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. +
- 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 +
- 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. +
- 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 +
- 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 +
- 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 +
- 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 +
- 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 +
- 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 +
- 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 +
- Added a new connection string option "URI" as an optional parameter for compatibility with other ports of the provider.
- Fixed the setup project, which somehow "forgot" to include all the binaries in +
- 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 +
- 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 +
- 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 +
- Added a new connection string parameter "Journal Mode" that allows you to set the SQLite journal mode to Delete, Persist or Off.
- Enabled sqlite_load_extension -
- Added retry/timeout code to SQLite3.Prepare() when preparing statements for +
- 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. +
- 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 +
- 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 +
- 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 +
- Changed the behavior of SQLiteCommand to allow a transaction to be set even if the command hasn't been associated with a connection yet.
- Code merge with SQLite 3.6.0 -
- Added a lot of previously-missing exports to the DEF file for the +
- 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 +
- 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. +
- 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 +
- 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 +
- 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 +
- 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. +
- 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.
- 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. +
- 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 +
- 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 +
- 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 +
- SQLite's busy handler was interfering with the provider's busy handling mechanism, so its been disabled.
- 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 +
- 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 +
- 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.
- 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 +
- 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. @@ -605,11 +640,11 @@
- 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.
- Added support for CommandBehavior.KeyInfo. +
- 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
@@ -918,25 +953,25 @@
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 + 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
+ 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 + 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 @@ -943,23 +978,23 @@
- 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 + 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 + 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 + 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
@@ -966,101 +1001,101 @@- Code merge with SQLite 3.2.3
- - Minor updates for better design-time experience. More design-time code to + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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
@@ -1091,67 +1126,67 @@
- - Made more optimizations to frequently-called functions, resulting in + 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 + 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.
- - Speed-ups to SQLiteDataReader. It was interop'ing unnecessarily every + 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 + Changed/Added some code to SQLiteConvert's internal DbType, Type and TypeAffinity functions.
- - Fixed the SQLiteDataReader to obey the flags set in the optional + 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 + 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 + 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.
- - Fixed the SQLite3 C# class step/reset functions to accomodate schema changes - that invalidate a prepared statement. Statements are recompiled + 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 + 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 + 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 + 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.
- @@ -1163,59 +1198,59 @@
- - Removed the SQLiteContext class and revamped the way UserFunctions work to + 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, + 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 + Added PageSize to the SQLiteConnectionStringBuilder and subsequently to the SQLiteConnection
- - Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after + Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after opening a connection.
- - Fixed up SQLiteCommandBuilder to correct implementation errors, which resulted - in an enormous performance boost in the InsertMany test. 10,000 row + 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 + 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 + 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 + 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 + 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.
- - 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 + 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 + 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.
- - Written from scratch on VS2005/2008 specifically for ADO.NET, implenting all the + Written from scratch on Visual Studio 2008 specifically for ADO.NET, implenting all the base classes and features recently introduced in the framework, including automatic transaction enlistment.
- Supports the Full and Compact .NET Framework, as well as 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. @@ -88,19 +88,26 @@ 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. You can add a SQLite +
- Visual Studio 2005/2008/2010 Design-Time Support. 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 Compact Framework). The core sqlite3 codebase and the ADO.NET wrapper + Available as a single file redistributable (except 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. +
- Also available as separate native and managed assemblies and optionally with the Visual C++ Runtime statically linked. +
-
+ Binaries included for Itanium, x64, x86 and ARM processors.
+
+ + Itanium processor support not currently included. + + - DbProviderFactory support.
- Full support for ATTACH'ed databases. Exposed as Catalogs in the schema. When cloning a connection, all attached databases are @@ -132,24 +139,32 @@ Full source for the entire engine and wrapper. No copyrights. Public Domain. 100% free for commercial and non-commercial use.
1.0.64.0 - July 9, 2009
1.0.63.0 - June 29, 2009
1.0.62.0 - June 20, 2009
1.0.61.0 - April 28, 2009
1.0.60.0 - October 3, 2008
-
-
1.0.59.0 - September 22, 2008
-
-
1.0.58.0 - August 30, 2008
-
-
1.0.57.0 - August 29, 2008
1.0.56.0 - August 11, 2008
-
-
1.0.55.0 - August 6, 2008
1.0.54.0 - July 25, 2008
-
-
1.0.53.0 - July 24, 2008
1.0.52.0 - July 16, 2008
1.0.51.0 - July 1, 2008
1.0.50.0 - June 27, 2008
1.0.49.0 - May 28, 2008
1.0.37.0 - November 19, 2006
-
-
1.0.07 - Mar 5, 2005
1.0.06 - Mar 1, 2005
1.0.05 - Feb 25, 2005
1.0.04 - Feb 24, 2005
1.0.03 - Feb 23, 2005
1.0.02 - Feb 21, 2005
SQLite.NET Provider Features
This SQLite provider implements every feature of the underlying SQLite database engine without omission. Here's a brief summary:
Distributing the Binaries (Desktop)
-System.Data.SQLite.DLL is a mixed assembly signed with a strong name - in case you want to add it to the Global Assembly Cache (GAC). This is the only DLL required to be redistributed with - your SQLite.NET application(s). It - comes in 3 - flavors: Win32, Itanium and x64 (AMD64).
+When using the mixed-mode assembly, the System.Data.SQLite.DLL file
+ includes all the native and managed code. In that case, this is the only
+ DLL required to be redistributed with your SQLite.NET application(s).
+ When using separate native and managed assemblies, the
+ System.Data.SQLite.DLL file contains all the managed code and the
+ SQLite.Interop.DLL file contains all the native code.
+ The native code comes in 3 flavors: Win32, Itanium and x64 (AMD64).
+
+
+ Itanium processor support not currently included.
+
+
Distributing the Binaries (Compact Framework)
-System.Data.SQLite.DLL and SQLite.Interop.XXX.DLL must be - deployed on the Compact Framework. The XXX is the build number of the - System.Data.SQLite library (e.g. "076"). SQLite.Interop.XXX is a fully - native assembly compiled for the ARM processor, and System.Data.SQLite is the - fully-managed Compact Framework assembly.
+Both the System.Data.SQLite.DLL and SQLite.Interop.XXX.DLL files + must be deployed on the Compact Framework. The XXX is the build number of + the System.Data.SQLite library (e.g. "078"). The + SQLite.Interop.XXX.DLL file is a fully native assembly compiled for + the ARM processor, and System.Data.SQLite is the fully-managed Compact + Framework assembly.