Index: Doc/Extra/Provider/version.html
==================================================================
--- Doc/Extra/Provider/version.html
+++ Doc/Extra/Provider/version.html
@@ -46,10 +46,13 @@
1.0.95.0 - February XX, 2015 (release scheduled)
- Updated to SQLite 3.8.8.2.
- Updated to Entity Framework 6.1.2.
- Modify configuration file transforms performed by the NuGet packages to allow Entity Framework 6 design-time integration to work automatically. Fix for [2be4298631], [abad7c577d], and [417d669435].
+ - The "System.Data.SQLite.EF6*" and "System.Data.SQLite.Linq*" NuGet packages no longer depend on the "System.Data.SQLite.Core*" packages. ** Potentially Incompatible Change **
+ - The "System.Data.SQLite.MSIL*" NuGet packages no longer directly include any files; they are now meta-packages. ** Potentially Incompatible Change **
+ - The "System.Data.SQLite.x86*" and "System.Data.SQLite.x64*" NuGet packages now depend on the "System.Data.SQLite.Linq" and "System.Data.SQLite.EF6" NuGet packages. ** Potentially Incompatible Change **
- Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.
- Make sure SQLiteIndexOutputs.ConstraintUsages instances are created prior to calling ISQLiteManagedModule.BestIndex. Fix for [56f511d268].
- Correct marshalling of strings and blobs in the SQLiteValue class. Fix for [85b824b736].
- Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].
- Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for [daeaf3150a].
@@ -60,10 +63,11 @@
- Make sure the interop files are copied before the PostBuildEvent. Fix for [f16c93a932]. ** Potentially Incompatible Change **
- Modify GetSchemaTable method to avoid setting SchemaTableColumn.IsKey column to true when more than one table is referenced. Fix for [47c6fa04d3]. ** Potentially Incompatible Change **
- Add AppendManifestToken_SQLiteProviderManifest environment variable to enable better integration between LINQ and the underlying store connection.
- Add SQLite_ForceLogPrepare environment variable to force logging of all prepared SQL regardless of the flags for the associated connection.
- Honor the DateTimeFormat, DateTimeKind, DateTimeFormatString, BinaryGUID connection string and/or provider manifest token properties from within the LINQ assembly. Fix for [8d928c3e88]. ** Potentially Incompatible Change **
+ - Add PrepareRetries connection string property to allow the maximum number of retries when preparing a query to be overridden. Fix for [647d282d11].
1.0.94.0 - September 9, 2014
- Updated to SQLite 3.8.6.
- Updated to Entity Framework 6.1.1.
Index: NuGet/SQLite.EF6.Beta.nuspec
==================================================================
--- NuGet/SQLite.EF6.Beta.nuspec
+++ NuGet/SQLite.EF6.Beta.nuspec
@@ -19,19 +19,10 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.EF6.Test.nuspec
==================================================================
--- NuGet/SQLite.EF6.Test.nuspec
+++ NuGet/SQLite.EF6.Test.nuspec
@@ -19,19 +19,10 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.EF6.nuspec
==================================================================
--- NuGet/SQLite.EF6.nuspec
+++ NuGet/SQLite.EF6.nuspec
@@ -19,19 +19,10 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.Linq.Beta.nuspec
==================================================================
--- NuGet/SQLite.Linq.Beta.nuspec
+++ NuGet/SQLite.Linq.Beta.nuspec
@@ -18,24 +18,10 @@
https://system.data.sqlite.org/
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.Linq.Test.nuspec
==================================================================
--- NuGet/SQLite.Linq.Test.nuspec
+++ NuGet/SQLite.Linq.Test.nuspec
@@ -18,24 +18,10 @@
https://system.data.sqlite.org/
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.Linq.nuspec
==================================================================
--- NuGet/SQLite.Linq.nuspec
+++ NuGet/SQLite.Linq.nuspec
@@ -18,24 +18,10 @@
https://system.data.sqlite.org/
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.MSIL.Beta.nuspec
==================================================================
--- NuGet/SQLite.MSIL.Beta.nuspec
+++ NuGet/SQLite.MSIL.Beta.nuspec
@@ -19,45 +19,42 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Index: NuGet/SQLite.MSIL.Test.nuspec
==================================================================
--- NuGet/SQLite.MSIL.Test.nuspec
+++ NuGet/SQLite.MSIL.Test.nuspec
@@ -19,45 +19,42 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Index: NuGet/SQLite.MSIL.nuspec
==================================================================
--- NuGet/SQLite.MSIL.nuspec
+++ NuGet/SQLite.MSIL.nuspec
@@ -19,45 +19,42 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Index: NuGet/SQLite.x64.nuspec
==================================================================
--- NuGet/SQLite.x64.nuspec
+++ NuGet/SQLite.x64.nuspec
@@ -18,18 +18,30 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
@@ -38,25 +50,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: NuGet/SQLite.x86.nuspec
==================================================================
--- NuGet/SQLite.x86.nuspec
+++ NuGet/SQLite.x86.nuspec
@@ -18,18 +18,30 @@
https://system.data.sqlite.org/images/sqlite128.png
https://www.sqlite.org/copyright.html
sqlite database ado.net provider interop
Public Domain
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
@@ -38,25 +50,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: SQLite.Interop/src/win/interop.c
==================================================================
--- SQLite.Interop/src/win/interop.c
+++ SQLite.Interop/src/win/interop.c
@@ -6,10 +6,22 @@
********************************************************/
#define SQLITE_API __declspec(dllexport)
#include "../core/sqlite3.c"
+
+#if defined(INTEROP_INCLUDE_EXTRA)
+#include "../ext/extra.c"
+#endif
+
+#if defined(INTEROP_INCLUDE_CEROD)
+#include "../ext/cerod.c"
+#endif
+
+#if defined(INTEROP_INCLUDE_SEE)
+#include "../ext/see.c"
+#endif
#if defined(INTEROP_VIRTUAL_TABLE) && SQLITE_VERSION_NUMBER >= 3004001
#include "../ext/vtshim.c"
#endif
@@ -29,14 +41,12 @@
#include "../contrib/extension-functions.c"
extern int RegisterExtensionFunctions(sqlite3 *db);
#endif
#if defined(SQLITE_OS_WIN)
-#if defined(INTEROP_CODEC)
+#if defined(INTEROP_CODEC) && !defined(INTEROP_INCLUDE_SEE)
#include "crypt.c"
-#elif defined(INTEROP_INCLUDE_SEE)
-#include "../ext/see.c"
#endif
#include "interop.h"
#define INTEROP_DEBUG_NONE (0x0000)
@@ -87,10 +97,16 @@
#ifdef INTEROP_DEBUG
"DEBUG=" CTIMEOPT_VAL(INTEROP_DEBUG),
#endif
#ifdef INTEROP_EXTENSION_FUNCTIONS
"EXTENSION_FUNCTIONS",
+#endif
+#ifdef INTEROP_INCLUDE_CEROD
+ "INCLUDE_CEROD",
+#endif
+#ifdef INTEROP_INCLUDE_EXTRA
+ "INCLUDE_EXTRA",
#endif
#ifdef INTEROP_INCLUDE_SEE
"INCLUDE_SEE",
#endif
#ifdef INTEROP_LEGACY_CLOSE
Index: SQLite.Interop/src/win/interop.h
==================================================================
--- SQLite.Interop/src/win/interop.h
+++ SQLite.Interop/src/win/interop.h
@@ -8,11 +8,11 @@
#ifndef INTEROP_VERSION
#define INTEROP_VERSION "1.0.95.0"
#endif
#ifndef INTEROP_SOURCE_ID
-#define INTEROP_SOURCE_ID "c0f67d5d98a67b7f411873193fb9fe934d5be125"
+#define INTEROP_SOURCE_ID "0000000000000000000000000000000000000000"
#endif
#ifndef INTEROP_SOURCE_TIMESTAMP
-#define INTEROP_SOURCE_TIMESTAMP "2015-01-30 17:59:12 UTC"
+#define INTEROP_SOURCE_TIMESTAMP "0000-00-00 00:00:00 UTC"
#endif
Index: System.Data.SQLite/SQLite3.cs
==================================================================
--- System.Data.SQLite/SQLite3.cs
+++ System.Data.SQLite/SQLite3.cs
@@ -976,10 +976,11 @@
IntPtr stmt = IntPtr.Zero;
IntPtr ptr = IntPtr.Zero;
int len = 0;
SQLiteErrorCode n = SQLiteErrorCode.Schema;
int retries = 0;
+ int maximumRetries = (cnn != null) ? cnn._prepareRetries : SQLiteConnection.DefaultPrepareRetries;
byte[] b = ToUTF8(strSql);
string typedefs = null;
SQLiteStatement cmd = null;
Random rnd = null;
uint starttick = (uint)Environment.TickCount;
@@ -987,11 +988,11 @@
GCHandle handle = GCHandle.Alloc(b, GCHandleType.Pinned);
IntPtr psql = handle.AddrOfPinnedObject();
SQLiteStatementHandle statementHandle = null;
try
{
- while ((n == SQLiteErrorCode.Schema || n == SQLiteErrorCode.Locked || n == SQLiteErrorCode.Busy) && retries < 3)
+ while ((n == SQLiteErrorCode.Schema || n == SQLiteErrorCode.Locked || n == SQLiteErrorCode.Busy) && retries < maximumRetries)
{
try
{
// do nothing.
}
Index: System.Data.SQLite/SQLiteConnection.cs
==================================================================
--- System.Data.SQLite/SQLiteConnection.cs
+++ System.Data.SQLite/SQLiteConnection.cs
@@ -375,10 +375,11 @@
private const bool DefaultPooling = false; // TODO: Maybe promote this to static property?
private const bool DefaultLegacyFormat = false;
private const bool DefaultForeignKeys = false;
private const bool DefaultEnlist = true;
private const bool DefaultSetDefaults = true;
+ internal const int DefaultPrepareRetries = 3;
private const int SQLITE_FCNTL_CHUNK_SIZE = 6;
private const int SQLITE_FCNTL_WIN32_AV_RETRY = 9;
private const string _dataDirectory = "|DataDirectory|";
@@ -515,11 +516,18 @@
private string _defaultTypeName;
///
/// Default command timeout
///
- private int _defaultTimeout = 30;
+ private int _defaultTimeout = DefaultConnectionTimeout;
+
+ ///
+ /// The maximum number of retries when preparing SQL to be executed. This
+ /// normally only applies to preparation errors resulting from the database
+ /// schema being changed.
+ ///
+ internal int _prepareRetries = DefaultPrepareRetries;
///
/// Non-zero if the built-in (i.e. framework provided) connection string
/// parser should be used when opening the connection.
///
@@ -1356,11 +1364,11 @@
public override int ConnectionTimeout
{
get
{
CheckDisposed();
- return 30;
+ return DefaultConnectionTimeout;
}
}
#endif
///
@@ -2539,10 +2547,11 @@
{
bool usePooling = SQLiteConvert.ToBoolean(FindKey(opts, "Pooling", GetDefaultPooling().ToString()));
int maxPoolSize = Convert.ToInt32(FindKey(opts, "Max Pool Size", DefaultMaxPoolSize.ToString()), CultureInfo.InvariantCulture);
_defaultTimeout = Convert.ToInt32(FindKey(opts, "Default Timeout", DefaultConnectionTimeout.ToString()), CultureInfo.InvariantCulture);
+ _prepareRetries = Convert.ToInt32(FindKey(opts, "PrepareRetries", DefaultPrepareRetries.ToString()), CultureInfo.InvariantCulture);
enumValue = TryParseEnum(typeof(IsolationLevel), FindKey(opts, "Default IsolationLevel", DefaultIsolationLevel.ToString()), true);
_defaultIsolation = (enumValue is IsolationLevel) ? (IsolationLevel)enumValue : DefaultIsolationLevel;
_defaultIsolation = GetEffectiveIsolationLevel(_defaultIsolation);
@@ -2755,10 +2764,21 @@
public int DefaultTimeout
{
get { CheckDisposed(); return _defaultTimeout; }
set { CheckDisposed(); _defaultTimeout = value; }
}
+
+ ///
+ /// The maximum number of retries when preparing SQL to be executed. This
+ /// normally only applies to preparation errors resulting from the database
+ /// schema being changed.
+ ///
+ public int PrepareRetries
+ {
+ get { CheckDisposed(); return _prepareRetries; }
+ set { CheckDisposed(); _prepareRetries = value; }
+ }
///
/// Non-zero if the built-in (i.e. framework provided) connection string
/// parser should be used when opening the connection.
///
Index: System.Data.SQLite/SQLiteConnectionStringBuilder.cs
==================================================================
--- System.Data.SQLite/SQLiteConnectionStringBuilder.cs
+++ System.Data.SQLite/SQLiteConnectionStringBuilder.cs
@@ -249,10 +249,32 @@
set
{
this["default timeout"] = value;
}
}
+
+ ///
+ /// Gets/sets the maximum number of retries when preparing SQL to be executed.
+ /// This normally only applies to preparation errors resulting from the database
+ /// schema being changed.
+ ///
+ [DisplayName("Prepare Retries")]
+ [Browsable(true)]
+ [DefaultValue(3)]
+ public int PrepareRetries
+ {
+ get
+ {
+ object value;
+ TryGetValue("prepareretries", out value);
+ return Convert.ToInt32(value, CultureInfo.CurrentCulture);
+ }
+ set
+ {
+ this["prepareretries"] = value;
+ }
+ }
///
/// Determines whether or not the connection will automatically participate
/// in the current distributed transaction (if one exists)
///
Index: System.Data.SQLite/SQLiteDefineConstants.cs
==================================================================
--- System.Data.SQLite/SQLiteDefineConstants.cs
+++ System.Data.SQLite/SQLiteDefineConstants.cs
@@ -33,10 +33,18 @@
#endif
#if INTEROP_EXTENSION_FUNCTIONS
"INTEROP_EXTENSION_FUNCTIONS",
#endif
+
+#if INTEROP_INCLUDE_CEROD
+ "INTEROP_INCLUDE_CEROD",
+#endif
+
+#if INTEROP_INCLUDE_EXTRA
+ "INTEROP_INCLUDE_EXTRA",
+#endif
#if INTEROP_INCLUDE_SEE
"INTEROP_INCLUDE_SEE",
#endif
Index: System.Data.SQLite/SQLitePatchLevel.cs
==================================================================
--- System.Data.SQLite/SQLitePatchLevel.cs
+++ System.Data.SQLite/SQLitePatchLevel.cs
@@ -7,10 +7,10 @@
using System.Data.SQLite;
///////////////////////////////////////////////////////////////////////////////
-[assembly: AssemblySourceId("c0f67d5d98a67b7f411873193fb9fe934d5be125")]
+[assembly: AssemblySourceId(null)]
///////////////////////////////////////////////////////////////////////////////
-[assembly: AssemblySourceTimeStamp("2015-01-30 17:59:12 UTC")]
+[assembly: AssemblySourceTimeStamp(null)]
Index: System.Data.SQLite/Targets/System.Data.SQLite.Properties.targets
==================================================================
--- System.Data.SQLite/Targets/System.Data.SQLite.Properties.targets
+++ System.Data.SQLite/Targets/System.Data.SQLite.Properties.targets
@@ -95,11 +95,11 @@
$(DefineConstants);TRACK_MEMORY_BYTES
$(DefineConstants);USE_INTEROP_DLL
@@ -162,10 +162,27 @@
-->
$(DefineConstants);INTEROP_INCLUDE_SEE
+
+
+ $(DefineConstants);INTEROP_INCLUDE_CEROD
+
+
+
+
+ $(DefineConstants);INTEROP_INCLUDE_EXTRA
+
+
Index: Targets/SQLite.NET.Settings.targets
==================================================================
--- Targets/SQLite.NET.Settings.targets
+++ Targets/SQLite.NET.Settings.targets
@@ -354,10 +354,45 @@
both for the corresponding version(s) of Visual Studio.
-->
false
+
+ false
+
+
+ false
+