System.Data.SQLite

Check-in [42082ffc4d]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add support for new DBCONFIG options from the SQLite core library. Pursuant to [03b6b0edd7].
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 42082ffc4dd6d8e772116803af9e639e40e8a9d7
User & Date: mistachkin 2019-10-05 03:32:17.465
Context
2019-10-06
00:54
Fix 'checkForSecurityProtocols' test suite helper procedure for use with .NET Core. check-in: 385a304305 user: mistachkin tags: trunk
2019-10-05
17:47
Initial work on supporting the .NET Standard 2.1 (and .NET Core 3.0). check-in: c1dd57b1a1 user: mistachkin tags: netStandard21
03:32
Add support for new DBCONFIG options from the SQLite core library. Pursuant to [03b6b0edd7]. check-in: 42082ffc4d user: mistachkin tags: trunk
03:01
Move test suite SecurityProtocol handling into the vendor script and make it more robust. check-in: f68d495bea user: mistachkin tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to Doc/Extra/Provider/version.html.
42
43
44
45
46
47
48

49
50
51
52
53
54
55
    </div>
    <div id="mainSection">
    <div id="mainBody">
    <h1 class="heading">Version History</h1>
    <p><b>1.0.112.0 - October XX, 2019 <font color="red">(release scheduled)</font></b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_0.html">SQLite 3.30.0</a>.</li>

    </ul>
    <p><b>1.0.111.0 - June 10, 2019</b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_28_0.html">SQLite 3.28.0</a>.</li>
      <li>Add No_SQLiteLog environment variable.</li>
    </ul>
    <p><b>1.0.110.0 - March 4, 2019</b></p>







>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    </div>
    <div id="mainSection">
    <div id="mainBody">
    <h1 class="heading">Version History</h1>
    <p><b>1.0.112.0 - October XX, 2019 <font color="red">(release scheduled)</font></b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_0.html">SQLite 3.30.0</a>.</li>
      <li>Add support for new DBCONFIG options from the SQLite core library. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/03b6b0edd7">[03b6b0edd7]</a>.</li>
    </ul>
    <p><b>1.0.111.0 - June 10, 2019</b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_28_0.html">SQLite 3.28.0</a>.</li>
      <li>Add No_SQLiteLog environment variable.</li>
    </ul>
    <p><b>1.0.110.0 - March 4, 2019</b></p>
Changes to System.Data.SQLite/SQLite3.cs.
3073
3074
3075
3076
3077
3078
3079






3080
3081
3082
3083
3084
3085
3086
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_TRIGGER: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_QPSG: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_TRIGGER_EQP: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_RESET_DATABASE: // int int*






                {
                    if (!(value is bool))
                    {
                        throw new SQLiteException(HelperMethods.StringFormat(
                            CultureInfo.CurrentCulture,
                            "configuration value type mismatch, must be of type {0}",
                            typeof(bool)));







>
>
>
>
>
>







3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_TRIGGER: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_QPSG: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_TRIGGER_EQP: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_RESET_DATABASE: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_DEFENSIVE: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_WRITABLE_SCHEMA: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_DQS_DML: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_DQS_DDL: // int int*
            case SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_ENABLE_VIEW: // int int*
                {
                    if (!(value is bool))
                    {
                        throw new SQLiteException(HelperMethods.StringFormat(
                            CultureInfo.CurrentCulture,
                            "configuration value type mismatch, must be of type {0}",
                            typeof(bool)));
Changes to System.Data.SQLite/SQLiteBase.cs.
1602
1603
1604
1605
1606
1607
1608
1609






















































1610
1611
1612
1613
1614
1615
1616

      /// <summary>
      /// This option is used as part of the process to reset a database back
      /// to an empty state.  Because resetting a database is destructive and
      /// irreversible, the process requires the use of this obscure flag and
      /// multiple steps to help ensure that it does not happen by accident.
      /// </summary>
      SQLITE_DBCONFIG_RESET_DATABASE = 1009 // int int*






















































  }

  // These are the options to the internal sqlite3_config call.
  internal enum SQLiteConfigOpsEnum
  {
    SQLITE_CONFIG_NONE = 0, // nil
    SQLITE_CONFIG_SINGLETHREAD = 1, // nil







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670

      /// <summary>
      /// This option is used as part of the process to reset a database back
      /// to an empty state.  Because resetting a database is destructive and
      /// irreversible, the process requires the use of this obscure flag and
      /// multiple steps to help ensure that it does not happen by accident.
      /// </summary>
      SQLITE_DBCONFIG_RESET_DATABASE = 1009, // int int*

      /// <summary>
      /// This option activates or deactivates the "defensive" flag for a
      /// database connection.  When the defensive flag is enabled, language
      /// features that allow ordinary SQL to deliberately corrupt the database
      /// file are disabled.  The disabled features include but are not limited
      /// to the following:
      /// <![CDATA[<ul>]]>
      /// <![CDATA[<li>]]>
      /// The PRAGMA writable_schema=ON statement.
      /// <![CDATA[</li>]]>
      /// <![CDATA[<li>]]>
      /// The PRAGMA journal_mode=OFF statement.
      /// <![CDATA[</li>]]>
      /// <![CDATA[<li>]]>
      /// Writes to the sqlite_dbpage virtual table.
      /// <![CDATA[</li>]]>
      /// <![CDATA[<li>]]>
      /// Direct writes to shadow tables.
      /// <![CDATA[</li>]]>
      /// <![CDATA[</ul>]]>
      /// </summary>
      SQLITE_DBCONFIG_DEFENSIVE = 1010, // int int*

      /// <summary>
      /// This option activates or deactivates the "writable_schema" flag.
      /// </summary>
      SQLITE_DBCONFIG_WRITABLE_SCHEMA = 1011, // int int*

      /// <summary>
      /// This option activates or deactivates the legacy behavior of the ALTER
      /// TABLE RENAME command such it behaves as it did prior to version 3.24.0
      /// (2018-06-04).
      /// </summary>
      SQLITE_DBCONFIG_LEGACY_ALTER_TABLE = 1012, // int int*

      /// <summary>
      /// This option activates or deactivates the legacy double-quoted string
      /// literal misfeature for DML statement only, that is DELETE, INSERT,
      /// SELECT, and UPDATE statements.
      /// </summary>
      SQLITE_DBCONFIG_DQS_DML = 1013, // int int*

      /// <summary>
      /// This option activates or deactivates the legacy double-quoted string
      /// literal misfeature for DDL statements, such as CREATE TABLE and CREATE
      /// INDEX.
      /// </summary>
      SQLITE_DBCONFIG_DQS_DDL = 1014, // int int*

      /// <summary>
      /// This option is used to enable or disable CREATE VIEW.
      /// </summary>
      SQLITE_DBCONFIG_ENABLE_VIEW = 1015 // int int*
  }

  // These are the options to the internal sqlite3_config call.
  internal enum SQLiteConfigOpsEnum
  {
    SQLITE_CONFIG_NONE = 0, // nil
    SQLITE_CONFIG_SINGLETHREAD = 1, // nil
Changes to Tests/basic.eagle.
4957
4958
4959
4960
4961
4962
4963







4964
4965
4966
4967
4968
4969
4970
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_FKEY; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_TRIGGER; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_QPSG; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_TRIGGER_EQP; # int int*








  set connection [getDbConnection]

  foreach dbConfig $dbConfigs {
    switch -exact -- $dbConfig {
      SQLITE_DBCONFIG_NONE {
        set value null







>
>
>
>
>
>
>







4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_FKEY; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_TRIGGER; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_QPSG; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_TRIGGER_EQP; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_RESET_DATABASE; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_DEFENSIVE; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_WRITABLE_SCHEMA; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_LEGACY_ALTER_TABLE; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_DQS_DML; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_DQS_DDL; # int int*
  lappend dbConfigs SQLITE_DBCONFIG_ENABLE_VIEW; # int int*

  set connection [getDbConnection]

  foreach dbConfig $dbConfigs {
    switch -exact -- $dbConfig {
      SQLITE_DBCONFIG_NONE {
        set value null
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
  }

  unset -nocomplain current highwater ints count size ptr value
  unset -nocomplain result dbConfig dbConfigs
  unset -nocomplain connection db fileName
} -constraints {eagle monoBug28 command.sql compile.DATA SQLite\
System.Data.SQLite} -match regexp -result {^\{\} \{\} \{\} \{\} \{\} \{\} \{\}\
\{\} \{\} \{\} Ok 0 0 Ok \d+ \d+ True True$}}

###############################################################################

runTest {test data-1.96 {connection pool interaction with read-only} -setup {
  catch {
    object invoke -flags +NonPublic \
        System.Data.SQLite.SQLiteConnectionPool _poolOpened 0







|







5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
  }

  unset -nocomplain current highwater ints count size ptr value
  unset -nocomplain result dbConfig dbConfigs
  unset -nocomplain connection db fileName
} -constraints {eagle monoBug28 command.sql compile.DATA SQLite\
System.Data.SQLite} -match regexp -result {^\{\} \{\} \{\} \{\} \{\} \{\} \{\}\
\{\} \{\} \{\} \{\} \{\} \{\} \{\} \{\} \{\} \{\} Ok 0 0 Ok \d+ \d+ True True$}}

###############################################################################

runTest {test data-1.96 {connection pool interaction with read-only} -setup {
  catch {
    object invoke -flags +NonPublic \
        System.Data.SQLite.SQLiteConnectionPool _poolOpened 0
Changes to readme.htm.
208
209
210
211
212
213
214

215
216
217
218
219
220
221
<h2><b>Version History</b></h2>

<p>
    <b>1.0.112.0 - October XX, 2019 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_0.html">SQLite 3.30.0</a>.</li>

</ul>
<p>
    <b>1.0.111.0 - June 10, 2019</b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_28_0.html">SQLite 3.28.0</a>.</li>
    <li>Add No_SQLiteLog environment variable.</li>







>







208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<h2><b>Version History</b></h2>

<p>
    <b>1.0.112.0 - October XX, 2019 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_0.html">SQLite 3.30.0</a>.</li>
    <li>Add support for new DBCONFIG options from the SQLite core library. Pursuant to [03b6b0edd7].</li>
</ul>
<p>
    <b>1.0.111.0 - June 10, 2019</b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_28_0.html">SQLite 3.28.0</a>.</li>
    <li>Add No_SQLiteLog environment variable.</li>
Changes to www/news.wiki.
45
46
47
48
49
50
51

52
53
54
55
56
57
58
<div align="center"><h2><b>Version History</b></h2></div>

<p>
    <b>1.0.112.0 - October XX, 2019 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_30_0.html|SQLite 3.30.0].</li>

</ul>
<p>
    <b>1.0.111.0 - June 10, 2019</b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_28_0.html|SQLite 3.28.0].</li>
    <li>Add No_SQLiteLog environment variable.</li>







>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<div align="center"><h2><b>Version History</b></h2></div>

<p>
    <b>1.0.112.0 - October XX, 2019 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_30_0.html|SQLite 3.30.0].</li>
    <li>Add support for new DBCONFIG options from the SQLite core library. Pursuant to [03b6b0edd7].</li>
</ul>
<p>
    <b>1.0.111.0 - June 10, 2019</b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_28_0.html|SQLite 3.28.0].</li>
    <li>Add No_SQLiteLog environment variable.</li>