System.Data.SQLite
Check-in [f7cac79346]
Not logged in

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: f7cac7934629e6622abdd1f18ef301d84c50603b
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
Hide Diffs Side-by-Side Diffs Show Whitespace Changes Patch

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 &quot;substr&quot; core SQL function.&nbsp;<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>.&nbsp;<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.&nbsp;<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>.&nbsp;<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.

   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 &quot;substr&quot; core SQL function.&nbsp;<b>** Potentially Incompatible Change **</b></li>
          217  +    <li>Honor the pre-existing flags for connections during the Open method. Fix for [964063da16].&nbsp;<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.&nbsp;<b>** Potentially Incompatible Change **</b></li>
   219    220       <li>Add extended return codes to the SQLiteErrorCode enumeration. Pursuant to [71bedaca19].&nbsp;<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 &quot;substr&quot; core SQL function.&nbsp;<b>** Potentially Incompatible Change **</b></li>
           11  +    <li>Honor the pre-existing flags for connections during the Open method. Fix for [964063da16].&nbsp;<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.&nbsp;<b>** Potentially Incompatible Change **</b></li>
    13     14       <li>Add extended return codes to the SQLiteErrorCode enumeration. Pursuant to [71bedaca19].&nbsp;<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>