Documentation Source Text

Check-in [41f9becb46]
Login

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

Overview
Comment:Begin a new change log entries for 3.27.0.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 41f9becb4667ad0de8327a2d8f94f4d72e2753ec5d393fc8dd253f82f59aee2f
User & Date: drh 2018-12-10 00:52:32.897
Context
2018-12-10
11:48
Update the change log. (check-in: 22f1dff034 user: drh tags: trunk)
00:52
Begin a new change log entries for 3.27.0. (check-in: 41f9becb46 user: drh tags: trunk)
2018-12-09
22:30
Omit the sponsor links from the homepage. (check-in: 3c035c0759 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/changes.in.
16
17
18
19
20
21
22






23
24
25
26
27
28
29
set nChng 0
proc chng {date desc {options {}}} {
  global nChng aChng xrefChng
  set aChng($nChng) [list $date $desc $options]
  set xrefChng($date) $nChng
  incr nChng
}







chng {2018-12-01 (3.26.0)} {
<li>Optimization: When doing an [UPDATE] on a table with [indexes on expressions],
    do not update the expression indexes if they do not refer to any of the columns
    of the table being updated.
<li>Allow the [xBestIndex()] method of [virtual table] implementations to return
    [SQLITE_CONSTRAINT] to indicate that the proposed query plan is unusable and







>
>
>
>
>
>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
set nChng 0
proc chng {date desc {options {}}} {
  global nChng aChng xrefChng
  set aChng($nChng) [list $date $desc $options]
  set xrefChng($date) $nChng
  incr nChng
}

chng {2019-02-00 (3.27.0)} {
<li>Added the [VACUUM INTO] command
<li>Issue an SQLITE_WARNING message on the [error log] if a 
[double-quoted string literal] is used.
}

chng {2018-12-01 (3.26.0)} {
<li>Optimization: When doing an [UPDATE] on a table with [indexes on expressions],
    do not update the expression indexes if they do not refer to any of the columns
    of the table being updated.
<li>Allow the [xBestIndex()] method of [virtual table] implementations to return
    [SQLITE_CONSTRAINT] to indicate that the proposed query plan is unusable and
Changes to pages/chronology.in.
24
25
26
27
28
29
30

31
32
33
34
35
36
37
#    ORDER BY mtime DESC;
#
# A small amount of manual editing and de-duplication followed.
#
# Manually edit the list for each subsequent release.
#      
foreach line [split {

bf8c1b2b7a|2018-12-01|Version 3.26.0
89e099fbe5|2018-11-05|Version 3.25.3
fb90e7189a|2018-09-25|Version 3.25.2
2ac9003de4|2018-09-18|Version 3.25.1
b63af6c3bd|2018-09-15|Version 3.25.0
c7ee083322|2018-06-04|Version 3.24.0
4bb2294022|2018-04-10|Version 3.23.1







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#    ORDER BY mtime DESC;
#
# A small amount of manual editing and de-duplication followed.
#
# Manually edit the list for each subsequent release.
#      
foreach line [split {
xxxxxxxxxx|pending|Version 3.27.0
bf8c1b2b7a|2018-12-01|Version 3.26.0
89e099fbe5|2018-11-05|Version 3.25.3
fb90e7189a|2018-09-25|Version 3.25.2
2ac9003de4|2018-09-18|Version 3.25.1
b63af6c3bd|2018-09-15|Version 3.25.0
c7ee083322|2018-06-04|Version 3.24.0
4bb2294022|2018-04-10|Version 3.23.1
Changes to pages/index.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<title>SQLite Home Page</title>

<p>SQLite is a [self-contained], [high-reliability], 
[serverless|embedded],
[full-featured SQL|full-featured], [public-domain],
SQL database engine.
SQLite is the [most used] database engine in the world.
<a class="button" href="about.html">More Info</a></p>

<hr class="xhr">
<span class="hdrfont">Latest Release:&nbsp;&nbsp;</span>
<a href="releaselog/3_25_2.html">Version 3.25.2</a> ([dateof:3.25.2]).
<a class="button" href="download.html">Download</a>
<a class="button" href="chronology.html">Prior Releases</a>

<hr class="xhr">
<h3>Common Links</h3>
<tcl>common_links</tcl>











|






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<title>SQLite Home Page</title>

<p>SQLite is a [self-contained], [high-reliability], 
[serverless|embedded],
[full-featured SQL|full-featured], [public-domain],
SQL database engine.
SQLite is the [most used] database engine in the world.
<a class="button" href="about.html">More Info</a></p>

<hr class="xhr">
<span class="hdrfont">Latest Release:&nbsp;&nbsp;</span>
<a href="releaselog/3_27_0.html">Version 3.27.0</a> ([dateof:3.27.0]).
<a class="button" href="download.html">Download</a>
<a class="button" href="chronology.html">Prior Releases</a>

<hr class="xhr">
<h3>Common Links</h3>
<tcl>common_links</tcl>
Changes to pages/lang.in.
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977

  <li> <p> When content is deleted from an SQLite database, the content is not
     usually erased but rather the space used to hold the content is marked as
     being available for reuse.  This can allow deleted content to be recovered
     by a hacker or by forensic analysis.  Running VACUUM will clean the database
     of all traces of deleted content, thus preventing an adversary from recovering
     deleted content.  Using VACUUM in this way is an alternative to setting
     [PRAGMA security_delete=ON]. 

  <li> <p> ^Normally, the database [page_size] and whether or not the database
     supports [auto_vacuum] must be configured before the database file is
     actually created. ^However, when not in [write-ahead log] mode, the 
     [page_size] and/or [auto_vacuum] properties of an existing database may be
     changed by using the [page_size pragma|page_size]  and/or 
     [auto_vacuum|pragma auto_vacuum] pragmas and then immediately VACUUMing







|







4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977

  <li> <p> When content is deleted from an SQLite database, the content is not
     usually erased but rather the space used to hold the content is marked as
     being available for reuse.  This can allow deleted content to be recovered
     by a hacker or by forensic analysis.  Running VACUUM will clean the database
     of all traces of deleted content, thus preventing an adversary from recovering
     deleted content.  Using VACUUM in this way is an alternative to setting
     [PRAGMA secure_delete=ON]. 

  <li> <p> ^Normally, the database [page_size] and whether or not the database
     supports [auto_vacuum] must be configured before the database file is
     actually created. ^However, when not in [write-ahead log] mode, the 
     [page_size] and/or [auto_vacuum] properties of an existing database may be
     changed by using the [page_size pragma|page_size]  and/or 
     [auto_vacuum|pragma auto_vacuum] pragmas and then immediately VACUUMing
Changes to pages/quirks.in.
228
229
230
231
232
233
234

235
236
237
238
239
240
241
</ol>
<p>
Full unicode case folding is supported in SQLite if it is compiled
with the [-DSQLITE_ENABLE_ICU] option and linked against the
[http://site.icu-project.org/|International Components for Unicode]
library.


<h1>Double-quoted String Literals Are Accepted</h1>

<p>
The SQL standard says that one should use double-quotes around identifiers
and single-quotes around string literals.
<ul>
<li> <tt>"this is a legal SQL column name"</tt>







>







228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
</ol>
<p>
Full unicode case folding is supported in SQLite if it is compiled
with the [-DSQLITE_ENABLE_ICU] option and linked against the
[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 says that one should use double-quotes around identifiers
and single-quotes around string literals.
<ul>
<li> <tt>"this is a legal SQL column name"</tt>
254
255
256
257
258
259
260



261
262
263
264
265
266
267
the SQL language to continue 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, we continue to support that capability to avoid breaking legacy
applications.




<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.







>
>
>







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
the SQL language to continue 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, we continue to support that capability to avoid breaking legacy
applications.
<p>
Update: 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].

<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.