Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Honor the pre-existing flags for connections during the Open method. Fix for [964063da16]. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
f7cac7934629e6622abdd1f18ef301d8 |
User & Date: | mistachkin 2015-07-14 19:29:51 |
References
2015-07-14
| ||
19:30 | • Closed ticket [964063da16]: SQLiteConnection.Flags property not properly observed plus 4 other changes artifact: 7d8fffc3dd user: mistachkin | |
Context
2015-07-14
| ||
20:08 | Improvements to the download page. check-in: d354cfb193 user: mistachkin tags: trunk | |
19:29 | Honor the pre-existing flags for connections during the Open method. Fix for [964063da16]. check-in: f7cac79346 user: mistachkin tags: trunk | |
2015-07-13
| ||
22:41 | Add tests for ticket [71bedaca19]. check-in: 1ddef23eb9 user: mistachkin tags: trunk | |
Changes
Changes to Doc/Extra/Provider/version.html.
43 43 <div id="mainSection"> 44 44 <div id="mainBody"> 45 45 <h1 class="heading">Version History</h1> 46 46 <p><b>1.0.98.0 - August XX, 2015 <font color="red">(release scheduled)</font></b></p> 47 47 <ul> 48 48 <li>Updated to <a href="https://www.sqlite.org/draft/releaselog/3_8_11.html">SQLite 3.8.11</a>.</li> 49 49 <li>Implement the Substring method for LINQ using the "substr" core SQL function. <b>** Potentially Incompatible Change **</b></li> 50 + <li>Honor the pre-existing flags for connections during the Open method. Fix for <a href="https://system.data.sqlite.org/index.html/info/964063da16">[964063da16]</a>. <b>** Potentially Incompatible Change **</b></li> 50 51 <li>Remove errant semi-colons from the SQL used by LINQ to INSERT and then SELECT rows with composite primary keys. Fix for <a href="https://system.data.sqlite.org/index.html/info/9d353b0bd8">[9d353b0bd8]</a>.</li> 51 52 <li>Change the base type for the SQLiteConnectionFlags enumeration to long integer. <b>** Potentially Incompatible Change **</b></li> 52 53 <li>Add extended return codes to the SQLiteErrorCode enumeration. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/71bedaca19">[71bedaca19]</a>. <b>** Potentially Incompatible Change **</b></li> 53 54 <li>Improve exception handling in all native callbacks implemented in the SQLiteConnection class.</li> 54 55 <li>Add Progress event and ProgressOps connection string property to enable raising progress events during long-running queries.</li> 56 + <li>Add NoDefaultFlags connection string property to prevent the default connection flags from being used. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/964063da16">[964063da16]</a>.</li> 55 57 <li>Add VfsName connection string property to allow a non-default VFS to be used by the SQLite core library.</li> 56 58 <li>Add BusyTimeout connection string property to set the busy timeout to be used by the SQLite core library.</li> 57 59 <li>Enable integration with the <a href="http://www.hwaci.com/sw/sqlite/zipvfs.html">ZipVFS</a> extension.</li> 58 60 </ul> 59 61 <p><b>1.0.97.0 - May 26, 2015</b></p> 60 62 <ul> 61 63 <li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_10_2.html">SQLite 3.8.10.2</a>.</li>
Changes to Setup/data/verify.lst.
753 753 Tests/tkt-8554170e09.eagle 754 754 Tests/tkt-85b824b736.eagle 755 755 Tests/tkt-8b7d179c3c.eagle 756 756 Tests/tkt-8c3bee31c8.eagle 757 757 Tests/tkt-8d928c3e88.eagle 758 758 Tests/tkt-92dbf1229a.eagle 759 759 Tests/tkt-94252b9059.eagle 760 + Tests/tkt-964063da16.eagle 760 761 Tests/tkt-996d13cd87.eagle 761 762 Tests/tkt-9ba9346f75.eagle 762 763 Tests/tkt-9d353b0bd8.eagle 763 764 Tests/tkt-a4d9c7ee94.eagle 764 765 Tests/tkt-a7d04fb111.eagle 765 766 Tests/tkt-aba4549801.eagle 766 767 Tests/tkt-ac47dd230a.eagle
Changes to System.Data.SQLite/SQLiteConnection.cs.
187 187 /// <description> 188 188 /// This is the default type name to use when one cannot be determined based on the column metadata 189 189 /// and the configured type mappings. 190 190 /// </description> 191 191 /// <description>N</description> 192 192 /// <description>null</description> 193 193 /// </item> 194 + /// <item> 195 + /// <description>NoDefaultFlags</description> 196 + /// <description> 197 + /// <b>True</b> - Do not combine the specified (or existing) connection flags with the value of the 198 + /// <see cref="DefaultFlags" /> property. 199 + /// <br/> 200 + /// <b>False</b> - Combine the specified (or existing) connection flags with the value of the 201 + /// <see cref="DefaultFlags" /> property. 202 + /// </description> 203 + /// <description>N</description> 204 + /// <description>false</description> 205 + /// </item> 194 206 /// <item> 195 207 /// <description>NoSharedFlags</description> 196 208 /// <description> 197 - /// <b>True</b> - Do not combine the specified (or default) connection flags with the value of the 209 + /// <b>True</b> - Do not combine the specified (or existing) connection flags with the value of the 198 210 /// <see cref="SharedFlags" /> property. 199 211 /// <br/> 200 - /// <b>False</b> - Combine the specified (or default) connection flags with the value of the 212 + /// <b>False</b> - Combine the specified (or existing) connection flags with the value of the 201 213 /// <see cref="SharedFlags" /> property. 202 214 /// </description> 203 215 /// <description>N</description> 204 216 /// <description>false</description> 205 217 /// </item> 206 218 /// <item> 207 219 /// <description>VfsName</description> ................................................................................ 460 472 private const int DefaultVersion = 3; 461 473 private const int DefaultPageSize = 1024; 462 474 private const int DefaultMaxPageCount = 0; 463 475 private const int DefaultCacheSize = 2000; 464 476 private const int DefaultMaxPoolSize = 100; 465 477 private const int DefaultConnectionTimeout = 30; 466 478 private const int DefaultBusyTimeout = 0; 479 + private const bool DefaultNoDefaultFlags = false; 467 480 private const bool DefaultNoSharedFlags = false; 468 481 private const bool DefaultFailIfMissing = false; 469 482 private const bool DefaultReadOnly = false; 470 483 internal const bool DefaultBinaryGUID = true; 471 484 private const bool DefaultUseUTF16Encoding = false; 472 485 private const bool DefaultToFullPath = true; 473 486 private const bool DefaultPooling = false; // TODO: Maybe promote this to static property? ................................................................................ 794 807 #endif 795 808 796 809 _cachedSettings = new Dictionary<string, object>( 797 810 new TypeNameStringComparer()); 798 811 799 812 _typeNames = new SQLiteDbTypeMap(); 800 813 _parseViaFramework = parseViaFramework; 801 - _flags = SQLiteConnectionFlags.Default; 814 + _flags = SQLiteConnectionFlags.None; 802 815 _defaultDbType = null; 803 816 _defaultTypeName = null; 804 817 _vfsName = null; 805 818 _connectionState = ConnectionState.Closed; 806 819 _connectionString = null; 807 820 808 821 if (connectionString != null) ................................................................................ 2231 2244 static internal string FindKey(SortedList<string, string> items, string key, string defValue) 2232 2245 { 2233 2246 string ret; 2234 2247 2235 2248 if (String.IsNullOrEmpty(key)) return defValue; 2236 2249 if (items.TryGetValue(key, out ret)) return ret; 2237 2250 if (items.TryGetValue(key.Replace(" ", String.Empty), out ret)) return ret; 2251 + if (items.TryGetValue(key.Replace(" ", "_"), out ret)) return ret; 2238 2252 2239 2253 return defValue; 2240 2254 } 2241 2255 2242 2256 /// <summary> 2243 2257 /// Attempts to convert the string value to an enumerated value of the specified type. 2244 2258 /// </summary> ................................................................................ 2596 2610 2597 2611 OnChanged(this, new ConnectionEventArgs( 2598 2612 SQLiteConnectionEventType.ConnectionString, null, null, null, null, 2599 2613 null, _connectionString, new object[] { opts })); 2600 2614 2601 2615 object enumValue; 2602 2616 2603 - enumValue = TryParseEnum(typeof(SQLiteConnectionFlags), FindKey(opts, "Flags", DefaultFlags.ToString()), true); 2604 - _flags = (enumValue is SQLiteConnectionFlags) ? (SQLiteConnectionFlags)enumValue : DefaultFlags; 2617 + enumValue = TryParseEnum(typeof(SQLiteConnectionFlags), FindKey(opts, "Flags", null), true); 2618 + 2619 + // 2620 + // BUGFIX: Always preserve the pre-existing instance flags. This is OK 2621 + // because when the connection object is initially created, they 2622 + // are "None"; therefore, OR-ing the connection string property 2623 + // flags with the instance flags would produce exactly the same 2624 + // result. If the "Flags" connection string property is absent, 2625 + // OR-ing the the instance flags with the static DefaultFlags is 2626 + // done instead. This is OK for the same reason as before: when 2627 + // the connection object is initially created, they are "None" 2628 + // by default. If they are different now, they must have been 2629 + // manually set by the application. 2630 + // 2631 + bool noDefaultFlags = SQLiteConvert.ToBoolean(FindKey(opts, "NoDefaultFlags", DefaultNoDefaultFlags.ToString())); 2632 + 2633 + if (enumValue is SQLiteConnectionFlags) 2634 + _flags |= (SQLiteConnectionFlags)enumValue; 2635 + else if (!noDefaultFlags) 2636 + _flags |= DefaultFlags; 2605 2637 2606 2638 bool noSharedFlags = SQLiteConvert.ToBoolean(FindKey(opts, "NoSharedFlags", DefaultNoSharedFlags.ToString())); 2607 2639 if (!noSharedFlags) { lock (_syncRoot) { _flags |= _sharedFlags; } } 2608 2640 2609 2641 enumValue = TryParseEnum(typeof(DbType), FindKey(opts, "DefaultDbType", null), true); 2610 2642 _defaultDbType = (enumValue is DbType) ? (DbType)enumValue : (DbType?)null; 2611 2643
Changes to System.Data.SQLite/SQLiteConnectionStringBuilder.cs.
1 1 /******************************************************** 2 2 * ADO.NET 2.0 Data Provider for SQLite Version 3.X 3 3 * Written by Robert Simpson (robert@blackcastlesoft.com) 4 - * 4 + * 5 5 * Released to the public domain, use at your own risk! 6 6 ********************************************************/ 7 7 8 8 namespace System.Data.SQLite 9 9 { 10 10 using System; 11 11 using System.Data.Common; ................................................................................ 228 228 set 229 229 { 230 230 this["fulluri"] = value; 231 231 } 232 232 } 233 233 234 234 /// <summary> 235 - /// Gets/sets the default command timeout for newly-created commands. This is especially useful for 235 + /// Gets/sets the default command timeout for newly-created commands. This is especially useful for 236 236 /// commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. 237 237 /// </summary> 238 238 [DisplayName("Default Timeout")] 239 239 [Browsable(true)] 240 240 [DefaultValue(30)] 241 241 public int DefaultTimeout 242 242 { ................................................................................ 846 846 return SQLiteConvert.ToBoolean(value); 847 847 } 848 848 set 849 849 { 850 850 this["tofullpath"] = value; 851 851 } 852 852 } 853 + 854 + /// <summary> 855 + /// If enabled, skip using the configured default connection flags. 856 + /// </summary> 857 + [DisplayName("No Default Flags")] 858 + [Browsable(true)] 859 + [DefaultValue(false)] 860 + public bool NoDefaultFlags 861 + { 862 + get 863 + { 864 + object value; 865 + TryGetValue("nodefaultflags", out value); 866 + return SQLiteConvert.ToBoolean(value); 867 + } 868 + set 869 + { 870 + this["nodefaultflags"] = value; 871 + } 872 + } 853 873 854 874 /// <summary> 855 875 /// If enabled, skip using the configured shared connection flags. 856 876 /// </summary> 857 877 [DisplayName("No Shared Flags")] 858 878 [Browsable(true)] 859 879 [DefaultValue(false)]
Changes to Tests/basic.eagle.
1050 1050 BinaryGUID "Data Source" Uri FullUri "Default Timeout" \ 1051 1051 Enlist FailIfMissing "Legacy Format" "Read Only" \ 1052 1052 Password "Page Size" "Max Page Count" "Cache Size" \ 1053 1053 DateTimeFormat DateTimeKind DateTimeFormatString \ 1054 1054 BaseSchemaName "Journal Mode" "Default IsolationLevel" \ 1055 1055 "Foreign Keys" Flags SetDefaults ToFullPath HexPassword \ 1056 1056 DefaultDbType DefaultTypeName NoSharedFlags PrepareRetries \ 1057 - ZipVfsVersion VfsName BusyTimeout ProgressOps] 1057 + ZipVfsVersion VfsName BusyTimeout ProgressOps \ 1058 + NoDefaultFlags] 1058 1059 1059 1060 set values [list null 3 Normal True False \ 1060 1061 True test.db test.db file:test.db 60 \ 1061 1062 False True False True \ 1062 1063 secret 4096 1024 8192 \ 1063 1064 UnixEpoch Utc yyyy-MM-dd sqlite_schema \ 1064 1065 Memory Serializable False \ 1065 1066 Default False False 736563726574 String \ 1066 - TEXT True 20 v2 test 1000 2000] 1067 + TEXT True 20 v2 test 1000 2000 True] 1067 1068 1068 1069 set propertyNames [list null Version SyncMode UseUTF16Encoding Pooling \ 1069 1070 BinaryGUID DataSource Uri FullUri DefaultTimeout \ 1070 1071 Enlist FailIfMissing LegacyFormat ReadOnly \ 1071 1072 Password PageSize MaxPageCount CacheSize \ 1072 1073 DateTimeFormat DateTimeKind DateTimeFormatString \ 1073 1074 BaseSchemaName JournalMode DefaultIsolationLevel \ 1074 1075 ForeignKeys Flags SetDefaults ToFullPath \ 1075 1076 HexPassword DefaultDbType DefaultTypeName \ 1076 1077 NoSharedFlags PrepareRetries ZipVfsVersion \ 1077 - VfsName BusyTimeout ProgressOps] 1078 + VfsName BusyTimeout ProgressOps NoDefaultFlags] 1078 1079 1079 1080 foreach key $keys value $values propertyName $propertyNames { 1080 1081 set code [catch { 1081 1082 object invoke _Dynamic${id}.Test${id} GetConnectionString \ 1082 1083 $key $value $propertyName 1083 1084 } result] 1084 1085 ................................................................................ 1106 1107 \{Serializable, Default IsolationLevel=Serializable\} 0 \{False, Foreign\ 1107 1108 Keys=False\} 0 \{(?:Default|LogCallbackException),\ 1108 1109 Flags=(?:Default|LogCallbackException)\} 0 \{False, SetDefaults=False\} 0\ 1109 1110 \{False, ToFullPath=False\} 0 {736563726574, HexPassword=736563726574} 0\ 1110 1111 \{String, DefaultDbType=String\} 0 \{TEXT, DefaultTypeName=TEXT\} 0 \{True,\ 1111 1112 NoSharedFlags=True\} 0 \{20, PrepareRetries=20\} 0 \{v2, ZipVfsVersion=v2\} 0\ 1112 1113 \{test, VfsName=test\} 0 \{1000, BusyTimeout=1000\} 0 \{2000,\ 1113 -ProgressOps=2000\}$}} 1114 +ProgressOps=2000\} 0 \{True, NoDefaultFlags=True\}$}} 1114 1115 1115 1116 ############################################################################### 1116 1117 1117 1118 runTest {test data-1.18 {SQLiteConvert ToDateTime (Julian Day)} -body { 1118 1119 set dateTime [object invoke -create System.Data.SQLite.SQLiteConvert \ 1119 1120 ToDateTime 2455928.0 Utc] 1120 1121
Added Tests/tkt-964063da16.eagle.
1 +############################################################################### 2 +# 3 +# tkt-964063da16.eagle -- 4 +# 5 +# Written by Joe Mistachkin. 6 +# Released to the public domain, use at your own risk! 7 +# 8 +############################################################################### 9 + 10 +package require Eagle 11 +package require Eagle.Library 12 +package require Eagle.Test 13 + 14 +runTestPrologue 15 + 16 +############################################################################### 17 + 18 +package require System.Data.SQLite.Test 19 +runSQLiteTestPrologue 20 + 21 +############################################################################### 22 + 23 +runTest {test tkt-964063da16-1.1 {pre-existing connection flags} -body { 24 + set connection [object create -alias \ 25 + System.Data.SQLite.SQLiteConnection \ 26 + "Data Source=:memory:;NoDefaultFlags=False;"] 27 + 28 + $connection Open 29 + $connection Flags 30 +} -cleanup { 31 + unset -nocomplain connection 32 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 33 +{Default}} 34 + 35 +############################################################################### 36 + 37 +runTest {test tkt-964063da16-1.2 {pre-existing connection flags} -body { 38 + set connection [object create -alias \ 39 + System.Data.SQLite.SQLiteConnection \ 40 + "Data Source=:memory:;NoDefaultFlags=True;"] 41 + 42 + $connection Open 43 + $connection Flags 44 +} -cleanup { 45 + unset -nocomplain connection 46 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 47 +{None}} 48 + 49 +############################################################################### 50 + 51 +runTest {test tkt-964063da16-1.3 {pre-existing connection flags} -body { 52 + set connection [object create -alias \ 53 + System.Data.SQLite.SQLiteConnection \ 54 + "Data Source=:memory:;NoDefaultFlags=False;"] 55 + 56 + $connection Flags NoExtensionFunctions; $connection Open 57 + $connection Flags 58 +} -cleanup { 59 + unset -nocomplain connection 60 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 61 +{NoExtensionFunctions, Default}} 62 + 63 +############################################################################### 64 + 65 +runTest {test tkt-964063da16-1.4 {pre-existing connection flags} -body { 66 + set connection [object create -alias \ 67 + System.Data.SQLite.SQLiteConnection \ 68 + "Data Source=:memory:;NoDefaultFlags=True;"] 69 + 70 + $connection Flags NoExtensionFunctions; $connection Open 71 + $connection Flags 72 +} -cleanup { 73 + unset -nocomplain connection 74 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 75 +{NoExtensionFunctions}} 76 + 77 +############################################################################### 78 + 79 +runTest {test tkt-964063da16-1.5 {pre-existing connection flags} -body { 80 + set connection [object create -alias \ 81 + System.Data.SQLite.SQLiteConnection \ 82 + "Data Source=:memory:;NoDefaultFlags=False;Flags=GetAllAsText;"] 83 + 84 + $connection Open 85 + $connection Flags 86 +} -cleanup { 87 + unset -nocomplain connection 88 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 89 +{GetAllAsText}} 90 + 91 +############################################################################### 92 + 93 +runTest {test tkt-964063da16-1.6 {pre-existing connection flags} -body { 94 + set connection [object create -alias \ 95 + System.Data.SQLite.SQLiteConnection \ 96 + "Data Source=:memory:;NoDefaultFlags=True;Flags=GetAllAsText;"] 97 + 98 + $connection Open 99 + $connection Flags 100 +} -cleanup { 101 + unset -nocomplain connection 102 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 103 +{GetAllAsText}} 104 + 105 +############################################################################### 106 + 107 +runTest {test tkt-964063da16-1.7 {pre-existing connection flags} -body { 108 + set connection [object create -alias \ 109 + System.Data.SQLite.SQLiteConnection \ 110 + "Data Source=:memory:;NoDefaultFlags=False;Flags=GetAllAsText;"] 111 + 112 + $connection Flags NoExtensionFunctions; $connection Open 113 + $connection Flags 114 +} -cleanup { 115 + unset -nocomplain connection 116 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 117 +{NoExtensionFunctions, GetAllAsText}} 118 + 119 +############################################################################### 120 + 121 +runTest {test tkt-964063da16-1.8 {pre-existing connection flags} -body { 122 + set connection [object create -alias \ 123 + System.Data.SQLite.SQLiteConnection \ 124 + "Data Source=:memory:;NoDefaultFlags=True;Flags=GetAllAsText;"] 125 + 126 + $connection Flags NoExtensionFunctions; $connection Open 127 + $connection Flags 128 +} -cleanup { 129 + unset -nocomplain connection 130 +} -constraints {eagle command.object SQLite System.Data.SQLite} -result \ 131 +{NoExtensionFunctions, GetAllAsText}} 132 + 133 +############################################################################### 134 + 135 +runSQLiteTestEpilogue 136 +runTestEpilogue
Changes to readme.htm.
210 210 211 211 <p> 212 212 <b>1.0.98.0 - August XX, 2015 <font color="red">(release scheduled)</font></b> 213 213 </p> 214 214 <ul> 215 215 <li>Updated to <a href="https://www.sqlite.org/draft/releaselog/3_8_11.html">SQLite 3.8.11</a>.</li> 216 216 <li>Implement the Substring method for LINQ using the "substr" core SQL function. <b>** Potentially Incompatible Change **</b></li> 217 + <li>Honor the pre-existing flags for connections during the Open method. Fix for [964063da16]. <b>** Potentially Incompatible Change **</b></li> 217 218 <li>Remove errant semi-colons from the SQL used by LINQ to INSERT and then SELECT rows with composite primary keys. Fix for [9d353b0bd8].</li> 218 219 <li>Change the base type for the SQLiteConnectionFlags enumeration to long integer. <b>** Potentially Incompatible Change **</b></li> 219 220 <li>Add extended return codes to the SQLiteErrorCode enumeration. Pursuant to [71bedaca19]. <b>** Potentially Incompatible Change **</b></li> 220 221 <li>Improve exception handling in all native callbacks implemented in the SQLiteConnection class.</li> 221 222 <li>Add Progress event and ProgressOps connection string property to enable raising progress events during long-running queries.</li> 223 + <li>Add NoDefaultFlags connection string property to prevent the default connection flags from being used. Pursuant to [964063da16].</li> 222 224 <li>Add VfsName connection string property to allow a non-default VFS to be used by the SQLite core library.</li> 223 225 <li>Add BusyTimeout connection string property to set the busy timeout to be used by the SQLite core library.</li> 224 226 <li>Enable integration with the <a href="http://www.hwaci.com/sw/sqlite/zipvfs.html">ZipVFS</a> extension.</li> 225 227 </ul> 226 228 <p> 227 229 <b>1.0.97.0 - May 26, 2015</b> 228 230 </p>
Changes to www/news.wiki.
4 4 5 5 <p> 6 6 <b>1.0.98.0 - August XX, 2015 <font color="red">(release scheduled)</font></b> 7 7 </p> 8 8 <ul> 9 9 <li>Updated to [https://www.sqlite.org/draft/releaselog/3_8_11.html|SQLite 3.8.11].</li> 10 10 <li>Implement the Substring method for LINQ using the "substr" core SQL function. <b>** Potentially Incompatible Change **</b></li> 11 + <li>Honor the pre-existing flags for connections during the Open method. Fix for [964063da16]. <b>** Potentially Incompatible Change **</b></li> 11 12 <li>Remove errant semi-colons from the SQL used by LINQ to INSERT and then SELECT rows with composite primary keys. Fix for [9d353b0bd8].</li> 12 13 <li>Change the base type for the SQLiteConnectionFlags enumeration to long integer. <b>** Potentially Incompatible Change **</b></li> 13 14 <li>Add extended return codes to the SQLiteErrorCode enumeration. Pursuant to [71bedaca19]. <b>** Potentially Incompatible Change **</b></li> 14 15 <li>Improve exception handling in all native callbacks implemented in the SQLiteConnection class.</li> 15 16 <li>Add Progress event and ProgressOps connection string property to enable raising progress events during long-running queries.</li> 17 + <li>Add NoDefaultFlags connection string property to prevent the default connection flags from being used. Pursuant to [964063da16].</li> 16 18 <li>Add VfsName connection string property to allow a non-default VFS to be used by the SQLite core library.</li> 17 19 <li>Add BusyTimeout connection string property to set the busy timeout to be used by the SQLite core library.</li> 18 20 <li>Enable integration with the [http://www.hwaci.com/sw/sqlite/zipvfs.html|ZipVFS] extension.</li> 19 21 </ul> 20 22 <p> 21 23 <b>1.0.97.0 - May 26, 2015</b> 22 24 </p>