Version History
1.0.85.0 - March XX, 2013 (release scheduled)
- Updated to SQLite 3.7.16.
- Skip checking loaded assemblies for types tagged with the SQLiteFunction attribute when the No_SQLiteFunctions environment variable is set. Pursuant to [e4c8121f7b].
- Add HexPassword connection string property to work around the inability to include a literal semicolon in a connection string property value. Pursuant to [1c456ae75f].
- Add static Execute method to the SQLiteCommand class.
- Add public constructor to the SQLiteDataAdapter class that allows passing the parseViaFramework parameter to the SQLiteConnection constructor.
- When built with the CHECK_STATE compile-time option, skip throwing exceptions from the SQLiteDataReader class when the object is being disposed.
- Support automatic value conversions for columns with a declared type of BIGUINT, INTEGER8, INTEGER16, INTEGER32, INTEGER64, SMALLUINT, TINYSINT, UNSIGNEDINTEGER, UNSIGNEDINTEGER8, UNSIGNEDINTEGER16, UNSIGNEDINTEGER32, UNSIGNEDINTEGER64, INT8, INT16, INT32, INT64, UINT, UINT8, UINT16, UINT32, UINT64, or ULONG.
- Add BindUInt32AsInt64 connection flag to force binding of UInt32 values as Int64 instead. Pursuant to [c010fa6584].
- Remove AUTOINCREMENT from the column type name map. ** Potentially Incompatible Change **
- Avoid throwing overflow exceptions from the SQLite3.GetValue method for integral column types. Partial fix for [c010fa6584]. ** Potentially Incompatible Change **
1.0.84.0 - January 9, 2013
- Updated to SQLite 3.7.15.2.
- Explicitly dispose of all SQLiteCommand objects managed by the DbDataAdapter class. Fix for [6434e23a0f].
- Add Cancel method to the SQLiteConnection class to interrupt a long running query.
- Improve thread safety of the SQLiteLog.LogMessage method.
1.0.83.0 - December 29, 2012
- Updated to SQLite 3.7.15.1.
- Add Visual Studio 2012 support to all the applicable solution/project files, their associated supporting files, and the test suite.
- Add Visual Studio 2012 support to the redesigned designer support installer.
- Allow opened connections to skip adding the extension functions included in the interop assembly via the new NoExtensionFunctions connection flag.
- Support loading of SQLite extensions via the new EnableExtensions and LoadExtension methods of the SQLiteConnection class. Pursuant to [17045010df].
- Remove one set of surrounding single or double quotes from property names and values parsed from the connection string. Fix for [b4cc611998].
- Modify parsing of connection strings to allow property names and values to be quoted. ** Potentially Incompatible Change **
- Add ParseViaFramework property to the SQLiteConnection class to allow the built-in (i.e. framework provided) connection string parser to be used when opening a connection. Pursuant to [b4cc611998].
- Add notifications before and after any connection is opened and closed, as well as other related notifications, via the new static Changed event.
- Add an overload of the SQLiteLog.LogMessage method that takes a single string parameter.
- Add an overload of the SQLiteConnection.LogMessage method that takes a SQLiteErrorCode parameter.
- All applicable calls into the SQLite core library now return a SQLiteErrorCode instead of an integer error code.
- Make sure the error code of the SQLiteException class gets serialized.
- Make the test project for the .NET Compact Framework more flexible.
- When available, the new sqlite3_errstr function from the core library is used to get the error message for a specific return code.
- The SetMemoryStatus, Shutdown, ResultCode, ExtendedResultCode, and SetAvRetry methods of the SQLiteConnection class now return a SQLiteErrorCode instead of an integer error code. ** Potentially Incompatible Change **
- The public constructor for the SQLiteException now takes a SQLiteErrorCode instead of an integer error code. ** Potentially Incompatible Change **
- The ErrorCode property of the SQLiteException is now an Int32, to allow the property inherited from the base class to be properly overridden. ** Potentially Incompatible Change **
- The ErrorCode field of the LogEventArgs is now an object instead of an integer. ** Potentially Incompatible Change **
- The names and messages associated with the SQLiteErrorCode enumeration values have been normalized to match those in the SQLite core library. ** Potentially Incompatible Change **
- Implement more robust locking semantics for the CriticalHandle derived classes when compiled for the .NET Compact Framework.
- Cache column indexes as they are looked up when using the SQLiteDataReader to improve performance.
- Prevent the SQLiteConnection.Close method from throwing non-fatal exceptions during its disposal.
- Rename the interop assembly functions sqlite3_cursor_rowid, sqlite3_context_collcompare, sqlite3_context_collseq, sqlite3_cursor_rowid, and sqlite3_table_cursor to include an "_interop" suffix. ** Potentially Incompatible Change **
- Prevent the LastInsertRowId, MemoryUsed, and MemoryHighwater connection properties from throwing NotSupportedException when running on the .NET Compact Framework. Fix for [dd45aba387].
- Improve automatic detection of the sqlite3_close_v2 function when compiled to use the standard SQLite library.
- Add protection against ThreadAbortException asynchronously interrupting native resource initialization and finalization.
- Add native logging callback for use with the sqlite3_log function to the interop assembly, enabled via the INTEROP_LOG preprocessor definition.
- Add various diagnostic messages to the interop assembly, enabled via flags in the INTEROP_DEBUG preprocessor definition.
- Further enhancements to the build and test automation.
- Add test automation for the Windows CE binaries.
1.0.82.0 - September 3, 2012
- Updated to SQLite 3.7.14.
- Properly handle quoted data source values in the connection string. Fix for [8c3bee31c8].
- The primary NuGet package now supports x86 / x64 and the .NET Framework 2.0 / 4.0 (i.e. in a single package).
- Change the default value for the Synchronous connection string property to Full to match the default used by the SQLite core library itself. ** Potentially Incompatible Change **
- Add the ability to skip applying default connection settings to opened databases via the new SetDefaults connection string property.
- Add the ability to skip expanding data source file names to their fully qualified paths via the new ToFullPath connection string property.
- Fix the database cleanup ordering in the tests for ticket [343d392b51].
- Add support for the sqlite3_close_v2 function from the SQLite core library.
- Add support for URI file names via the new FullUri connection string property.
- Improve support for the standard SQLite core library in the LINQ assembly and the test suite.
- Add SetMemoryStatus static method to the SQLiteConnection class.
- Improve threaded handling of the delegate used by the SQLiteLog class.
- Add define constants to support enabling or disabling individual groups of trace statements.
1.0.81.0 - May 27, 2012
- Updated to SQLite 3.7.12.1.
- Support compiling the interop assembly without support for the custom extension functions and the CryptoAPI based codec.
- Add DefineConstants property to the SQLiteConnection class to return the list of define constants used when compiling the core managed assembly.
- Add release archive verification tool to the release automation.
- Fix NullReferenceException when calling the SQLiteDataAdapter.FillSchema method on a query that returns multiple result sets. Fix for [3aa50d8413].
- Fix subtle race condition between threads fetching connection handles from the connection pool and any garbage collection (GC) threads that may be running. Fix for [996d13cd87].
- Add missing call to SetTimeout in the SQLite3_UTF16.Open method.
- Add checks to prevent the SQLiteConnectionPool.Remove method from returning any connection handles that are closed or invalid.
- Modify static SQLiteBase helper methods to prevent them from passing IntPtr.Zero to the SQLite native library.
- Remove static locks from the static helper methods in the SQLiteBase class, replacing them with a lock on the connection handle instance being operated upon.
- Revise CriticalHandle derived classes to make them more thread-safe.
- Add connection pool related diagnostic messages when compiled with the DEBUG define constant.
- Add PoolCount property to the SQLiteConnection class to return the number of pool entries for the file name associated with the connection.
- Rename internal SQLiteLastError methods to GetLastError.
- Add assembly file test constraints to all tests that execute the "test.exe" or "testlinq.exe" files.
1.0.80.0 - April 1, 2012
- Updated to SQLite 3.7.11.
- In the SQLiteFunction class, when calling user-provided methods from a delegate called by native code, avoid throwing exceptions, optionally tracing the caught exceptions. Fix for [8a426d12eb].
- Add Visual Studio 2005 support to all the applicable solution/project files, their associated supporting files, and the test suite.
- Add Visual Studio 2005 support to the redesigned designer support installer.
- Add experimental support for "pre-loading" the native SQLite library based on the processor architecture of the current process. This feature is now enabled by default at compile-time.
- Add support for the native SQLite Online Backup API. Fix for [c71846ed57].
- Acquire and hold a static data lock while checking if the native SQLite library has been initialized to prevent a subtle race condition that can result in superfluous error messages. Fix for [72905c9a77].
- Support tracing of all parameter binding activity and use the connection flags to control what is traced.
- When converting a DateTime instance of an "Unspecified" kind to a string, use the same kind as the connection, if available.
- Add overload of the SQLiteDataReader.GetValues method that returns a NameValueCollection.
- Add static ToUnixEpoch method to the SQLiteConvert class to convert a DateTime value to the number of whole seconds since the Unix epoch.
- In the implicit conversion operators (to IntPtr) for both the SQLiteConnectionHandle and SQLiteStatementHandle classes, return IntPtr.Zero if the instance being converted is null.
- Write warning message to the active trace listeners (for the Debug build configuration only) if a column type or type name cannot be mapped properly. See [4bbf851fa5].
- When tracing SQL statements to be prepared, bypass the internal length limit of the sqlite3_log function by using the SQLiteLog class directly instead. Also, detect null and/or empty strings and emit a special message in that case.
- For the setup, the Visual Studio task should only be initially checked if the GAC task is available and vice-versa.
- Improve compatibility with custom command processors by using __ECHO instead of _ECHO in batch tools.
- Add OpenAndReturn method to the SQLiteConnection class to open a connection and return it.
- Add missing CheckDisposed calls to the SQLiteConnection class.
- Add missing throw statement to the SQLiteConnection class.
- Make sure the interop project uses /fp:precise for Windows CE.
- Regenerate package load key to support loading the designer package into Visual Studio 2008 without having the matching SDK installed.
- Modify transaction object disposal so that it can never cause an exception to be thrown.
1.0.79.0 - January 28, 2012
- Use the WoW64 registry keys when installing the VS designer components on 64-bit Windows. Fix for [d8491abd0b].
- Correct resource name used by the LINQ assembly to locate several key string resources. Fix for [fbebb30da9].
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
- 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.
- Add unit testing infrastructure using Eagle.
- Integrate all legacy unit tests, including the "testlinq" project, into the new test suite.
- Add projects to build the interop assembly statically linked to the Visual C++ runtime. Fix for [53f0c5cbf6].
- Add SQLITE_ENABLE_STAT2 compile-time option to the interop assembly. Fix for [74807fbf27].
- Fix mutex issues exposed when running the test suite with the debug version of SQLite.
- Fix transaction enlistment when repeated attempts are made to enlist in the same transaction. Fix for [ccfa69fc32].
- Support the SQLITE_FCNTL_WIN32_AV_RETRY file control to mitigate the impact of file sharing violations caused by external processes.
- Refactor the logging interface to be thread-safe and self-initializing.
- Shutdown the SQLite native interface when the AppDomain is being unloaded. Fix for [b4a7ddc83f].
- Support Skip operation for LINQ using OFFSET. Fix for [8b7d179c3c].
- Support EndsWith operation for LINQ using SUBSTR. Fix for [59edc1018b].
- Support all SQLite journal modes. Fix for [448d663d11].
- Do not throw exceptions when disposing SQLiteDataReader. Fix for [e1b2e0f769].
- The REAL type should be mapped to System.Double. Fix for [2c630bffa7] and [b0a5990f48].
- Minor optimization to GetParamValueBytes(). Fix for [201128cc88].
- Support the ON UPDATE, ON DELETE, and MATCH clause information when generating schema metadata for foreign keys. Partial fix for [b226147b37]. VS designer changes are not yet tested.
- 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
- 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.
- Remove hard-coded System.Data.SQLite.Linq version from SQLiteFactory_Linq.cs
- Modify the setup to support bundled packages (i.e. with the mixed-mode assembly) and standard packages (i.e. with the managed assembly separate from the native interop library).
- Disable the ability to register with the Global Assembly Cache in the standard setup package (i.e. it is available in the bundled setup only).
- Remove PATH modification from the setup.
- Modify the naming scheme for the source, setup, and binary packages to allow for the necessary variants.
- In the build automation, attempt to automatically detect if Visual Studio 2008 and/or 2010 are installed and support building binaries for both at once, when available.
- 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.
- 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].
1.0.72.0 - May 1, 2011
- Add the correct directory to the path. Fix for [50515a0c8e].
1.0.71.0 - April 27, 2011
- 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.70.0 - April 22, 2011
- Added support for sqlite3_extended_result_codes(), sqlite3_errcode(), and sqlite3_extended_errcode() via SetExtendedResultCodes(), ResultCode(), and ExtendedResultCode().
- Added support for SQLITE_CONFIG_LOG via SQLiteLogEventHandler().
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.