Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch new-dbconfig-options Excluding Merge-Ins
This is equivalent to a diff from 9f887f15e5 to 09cea3924b
2019-06-17
| ||
14:14 | Add notes about the new sqlite3_db_config() interfaces. Enhanced discussion of the double-quoted string literal misfeature. (check-in: ab87f9f72b user: drh tags: trunk) | |
13:56 | Track the revised DQS interface. (Closed-Leaf check-in: 09cea3924b user: drh tags: new-dbconfig-options) | |
2019-06-15
| ||
15:24 | Documentation on the new SQLITE_DBCONFIG options. (check-in: 4ebc1051c2 user: drh tags: new-dbconfig-options) | |
2019-06-12
| ||
20:31 | Fix the description of how collation is computed to indicate that the collation is not blocked by a CAST operator. Fix for ticket https://www.sqlite.org/src/info/b148fa61059fb6c2. (check-in: 9f887f15e5 user: drh tags: trunk) | |
10:55 | Enhancements to the change log. (check-in: 06b9f7898d user: drh tags: trunk) | |
Changes to pages/changes.in.
︙ | ︙ | |||
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | global nChng aChng xrefChng set aChng($nChng) [list $date $desc $options] set xrefChng($date) $nChng incr nChng } chng {2019-07-00 (3.29.0)} { <li> Improved optimization of AND and OR operators when one or the other operand is a constant. <li> Added the "[https://sqlite.org/src/file/ext/misc/dbdata.c|sqlite_dbdata]" virtual table for extracting raw low-level content from an SQLite database, even a database that is corrupt. <li> Enhancements to the [CLI]: <ol type="a"> <li> Add the ".recover" command which tries to recover as much content as possible from a corrupt database file. <li> Add the ".filectrl" command useful for testing. <li> Add the long-standing ".testctrl" command to the ".help" menu. </ol> } chng {2019-04-16 (3.28.0)} { <li> Enhanced [window functions]: <ol type="a"> <li> Add support the [EXCLUDE clause]. | > > > > > > > > | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | global nChng aChng xrefChng set aChng($nChng) [list $date $desc $options] set xrefChng($date) $nChng incr nChng } chng {2019-07-00 (3.29.0)} { <li> The [double-quoted string literal] misfeature is deactivated by default for DDL statements. It can be reactivated if needed, to support legacy applications, using the [SQLITE_DBCONFIG_DQS_DDL] action of the [sqlite3_db_config()] interface. <li> Added the [SQLITE_DBCONFIG_DQS_DML] action to [sqlite3_db_config()] that will disable the [double-quoted string literal] misfeature for DML statements. <li> Improved optimization of AND and OR operators when one or the other operand is a constant. <li> Added the "[https://sqlite.org/src/file/ext/misc/dbdata.c|sqlite_dbdata]" virtual table for extracting raw low-level content from an SQLite database, even a database that is corrupt. <li> Enhancements to the [CLI]: <ol type="a"> <li> Add the ".recover" command which tries to recover as much content as possible from a corrupt database file. <li> Add the ".filectrl" command useful for testing. <li> Add the long-standing ".testctrl" command to the ".help" menu. <li> Added the ".dbconfig" command </ol> } chng {2019-04-16 (3.28.0)} { <li> Enhanced [window functions]: <ol type="a"> <li> Add support the [EXCLUDE clause]. |
︙ | ︙ |
Changes to pages/lang.in.
︙ | ︙ | |||
119 120 121 122 123 124 125 | RecursiveBubbleDiagram alter-table-stmt </tcl> <p>SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table, to rename a column within a table, or to add a new column to an existing table. | | > | > > | 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | RecursiveBubbleDiagram alter-table-stmt </tcl> <p>SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table, to rename a column within a table, or to add a new column to an existing table. <tcl>hd_fragment altertabrename {ALTER TABLE RENAME} {rename table} \ {ALTER TABLE RENAME documentation}</tcl> <h3>ALTER TABLE RENAME</h3> <p> ^(The RENAME TO syntax changes the name of <yyterm>table-name</yyterm> to <yyterm>new-table-name</yyterm>.)^ This command cannot be used to move a table between attached databases, only to rename a table within the same database. ^If the table being renamed has triggers or indices, then these remain attached to the table after it has been renamed. <blockquote style='background-color: #ffd0d0;'> <b>Compatibility Note:</b> The behavior of ALTER TABLE when renaming a table was enhanced in versions 3.25.0 ([dateof:3.25.0]) and 3.26.0 ([dateof:3.26.0]) in order to carry the rename operation forward into triggers and views that reference the renamed table. This is considered an improvement. Applications that depend on the older (and arguably buggy) behavior can use the [PRAGMA legacy_alter_table=ON] statement or the [SQLITE_DBCONFIG_LEGACY_ALTER_TABLE] configuration parameter on [sqlite3_db_config()] interface to make ALTER TABLE RENAME behave as it did prior to version 3.25.0. </blockquote> <p> Beginning with release 3.25.0 ([dateof:3.25.0]), references to the table within trigger bodies and view definitions are also renamed. </p> |
︙ | ︙ |
Changes to pages/pragma.in.
︙ | ︙ | |||
816 817 818 819 820 821 822 823 824 825 826 827 828 829 | contain code that expect the incomplete behavior of [ALTER TABLE RENAME] found in older versions of SQLite. New applications should leave this flag turned off. <p>For compatibility with older [virtual table] implementations, this flag is turned on temporarily while the [sqlite3_module.xRename] method is being run. The value of this flag is restore after the [sqlite3_module.xRename] method finishes. } Pragma legacy_file_format { <p>^(<b>PRAGMA legacy_file_format; <br>PRAGMA legacy_file_format = <i>boolean</i></b></p> <p>This pragma sets or queries the value of the legacy_file_format flag.)^ ^(When this flag is on, new SQLite databases are created in | > > > | 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 | contain code that expect the incomplete behavior of [ALTER TABLE RENAME] found in older versions of SQLite. New applications should leave this flag turned off. <p>For compatibility with older [virtual table] implementations, this flag is turned on temporarily while the [sqlite3_module.xRename] method is being run. The value of this flag is restore after the [sqlite3_module.xRename] method finishes. <p>The legacy alter table behavior can also be toggled on and off using the [SQLITE_DBCONFIG_LEGACY_ALTER_TABLE] option to the [sqlite3_db_config()] interface. } Pragma legacy_file_format { <p>^(<b>PRAGMA legacy_file_format; <br>PRAGMA legacy_file_format = <i>boolean</i></b></p> <p>This pragma sets or queries the value of the legacy_file_format flag.)^ ^(When this flag is on, new SQLite databases are created in |
︙ | ︙ |
Changes to pages/quirks.in.
︙ | ︙ | |||
232 233 234 235 236 237 238 | [http://site.icu-project.org/|International Components for Unicode] library. <tcl>hd_fragment dblquote {double-quoted string literal}</tcl> <h1>Double-quoted String Literals Are Accepted</h1> <p> | | | | | > | | | | > > | < > > | > > > > > > > > > > > > > > > > > | 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | [http://site.icu-project.org/|International Components for Unicode] library. <tcl>hd_fragment dblquote {double-quoted string literal}</tcl> <h1>Double-quoted String Literals Are Accepted</h1> <p> The SQL standard requires double-quotes around identifiers and single-quotes around string literals. For example: <ul> <li> <tt>"this is a legal SQL column name"</tt> <li> <tt>'this is an SQL string literal'</tt> </ul> <p> SQLite accepts both of the above. But, in an effort to be compatible with MySQL 3.x (which was one of the most widely used RDBMSes when SQLite was first being designed) SQLite will also interpret a double-quotes string as string literal if it does not match any valid identifier. <p> This misfeature means that a misspelled double-quoted identifier will be interpreted as a string literal, rather than generating an error. It also lures developers who are new to the SQL language into bad habit of using double-quoted string literals when they really need to learn to use the correct single-quoted string literal form. <p> In hindsight, we should not have tried to make SQLite accept MySQL 3.x syntax, and should have never allowed double-quoted string literals. However, there are countless applications that make use of double-quoted string literals and so we continue to support that capability to avoid breaking legacy. <p> Updates: <ul> <li><p> As of SQLite 3.27.0 ([dateof:3.27.0]) the use of a double-quoted string literal causes a warning message to be sent to the [error log]. <li><p> As of SQLite 3.29.0 ([dateof:3.29.0]) the use of double-quoted string literals inside of DDL statements ([CREATE TABLE], [CREATE INDEX], and so forth) is disallowed and will cause a syntax error. Double quoted strings needed to be deactivated in DDL statements as they were causing problems for [ALTER TABLE]. (See the ticket at [https://www.sqlite.org/src/info/9b78184be266f] for details.) If needed for compatibility, the older behavior can be restored by disabling the [SQLITE_DBCONFIG_DQS_DDL] option on the [sqlite3_db_config()] interface. <li><p> The [SQLITE_DBCONFIG_DQS_DML] option the [sqlite3_db_config()] interface is available as of SQLite 3.29.0 ([dateof:3.29.0]) and can be used to disable double-quoted string literals for DML statements. This setting is currently off by default, but might default on in future releases of SQLite. Developers are encouraged to turn this setting on now, in preparation for the future when it might be activated by default. </ul> <h1>Keywords Can Often Be Used As Identifiers</h1> <p> The SQL language is rich in keywords. Most SQL implementations do not allow keywords to be used as identifiers (the names of table or columns) unless they are enclosed in double-quotes. |
︙ | ︙ |