Documentation Source Text

Check-in [1d22b3977e]
Login

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

Overview
Comment:Merge documentation fixes from the 3.32 branch. Updates to the change log.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 1d22b3977ec8c5962a9400095eabb3ee19574057044a6e83e53000d3bdeac92c
User & Date: drh 2020-06-18 15:00:34.725
Context
2020-06-18
20:30
Merge fixes from the 3.32 branch. (check-in: b48705423b user: drh tags: trunk)
15:00
Merge documentation fixes from the 3.32 branch. Updates to the change log. (check-in: 1d22b3977e user: drh tags: trunk)
14:54
Add a link to a the graph of 3.32 changes on the 3.32.3 news item. (check-in: ff42d8f2f7 user: drh tags: branch-3.32)
2020-06-05
00:54
Improvements to CLI document to talk about the new output modes. (check-in: 8df47c7f07 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/changes.in.
30
31
32
33
34
35
36
37


38
39
40
41
42
43

44













45
46
47
48
49
50
51
    <li> Added four new [.mode|output modes]: "box", "json", "markdown",
         and "table".
    <li> The "column" output mode automatically expands columns to
         contain the longest output row and automatically turns
         ".header" on if it has not been previously set.
    <li> The "quote" output mode honors ".separator"
    </ol>
<li> Improve the query planner so that it is able to find a


     full-index-scan query plan for queries using [INDEXED BY]
     which previously would fail with "no query solution".
<li> Improve the query planner so that it does a better job of
     detecting missing, incomplete, and/or dodgy [sqlite_stat1]
     data and generates good query plans in spite of the
     misinformation.

}














chng {2020-06-04 (3.32.2)} {
<li> Fix a long-standing bug in the byte-code engine that can cause a
     [COMMIT] command report as success when in fact it failed
     to commit.  Ticket
     [https://www.sqlite.org/src/info/810dc8038872e212|810dc8038872e212]
<p><b>Hashes:</b>







|
>
>
|
|
|
|
|
|
>

>
>
>
>
>
>
>
>
>
>
>
>
>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    <li> Added four new [.mode|output modes]: "box", "json", "markdown",
         and "table".
    <li> The "column" output mode automatically expands columns to
         contain the longest output row and automatically turns
         ".header" on if it has not been previously set.
    <li> The "quote" output mode honors ".separator"
    </ol>
<li> Query planner improvments:
     <ol type="a">
     <li> Add the ability to find a
          full-index-scan query plan for queries using [INDEXED BY]
          which previously would fail with "no query solution".
     <li> Do a better job of
          detecting missing, incomplete, and/or dodgy [sqlite_stat1]
          data and generates good query plans in spite of the
          misinformation.
     </ol>
}

chng {2020-06-18 (3.32.3)} {
<li> Various minor bug fixes including fixes for tickets
     [https://www.sqlite.org/src/info/8f157e8010b22af0|8f157e8010b22af0],
     [https://www.sqlite.org/src/info/9fb26d37cefaba40|9fb26d37cefaba40],
     [https://www.sqlite.org/src/info/e367f31901ea8700|e367f31901ea8700],
     [https://www.sqlite.org/src/info/b706351ce2ecf59a|b706351ce2ecf59a],
     [https://www.sqlite.org/src/info/7c6d876f84e6e7e2|7c6d876f84e6e7e2], and
     [https://www.sqlite.org/src/info/c8d3b9f0a750a529|c8d3b9f0a750a529].
<p><b>Hashes:</b>
<li>SQLITE_SOURCE_ID: 2020-06-18 14:00:33 7ebdfa80be8e8e73324b8d66b3460222eb74c7e9dfd655b48d6ca7e1933cc8fd
<li>SHA3-256 for sqlite3.c: b62b77ee1c561a69a71bb557694aaa5141f1714c1ff6cc1ba8aa8733c92d4f52
} {patchagainst 3.32.0 patchagainst 3.32.1 patchagainst 3.32.2}

chng {2020-06-04 (3.32.2)} {
<li> Fix a long-standing bug in the byte-code engine that can cause a
     [COMMIT] command report as success when in fact it failed
     to commit.  Ticket
     [https://www.sqlite.org/src/info/810dc8038872e212|810dc8038872e212]
<p><b>Hashes:</b>
Changes to pages/chronology.in.
28
29
30
31
32
33
34

35
36
37
38
39
40
41
#
# 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.33.0

ec02243ea6|2020-06-04|Version 3.32.2
0c1fcf4711|2020-05-25|Version 3.32.1
5998789c9c|2020-05-22|Version 3.32.0
3bfa9cc97d|2020-01-27|Version 3.31.1
f6affdd416|2020-01-22|Version 3.31.0
18db032d05|2019-10-10|Version 3.30.1
c20a353364|2019-10-04|Version 3.30.0







>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#
# 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.33.0
7ebdfa80be|2020-06-18|Version 3.32.3
ec02243ea6|2020-06-04|Version 3.32.2
0c1fcf4711|2020-05-25|Version 3.32.1
5998789c9c|2020-05-22|Version 3.32.0
3bfa9cc97d|2020-01-27|Version 3.31.1
f6affdd416|2020-01-22|Version 3.31.0
18db032d05|2019-10-10|Version 3.30.1
c20a353364|2019-10-04|Version 3.30.0
Changes to pages/cksumvfs.in.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[sqlite3_load_extension()] API and shutdown the dummy database
connection.  All subsequent database connections that are opened
will include this extension.  For example:

<codeblock>
    sqlite3 *db;
    sqlite3_open(":memory:", &db);
    sqlite3_load_extention(db, "./cksumvfs");
    sqlite3_close(db);
</codeblock>

<p>If this extension is compiled with -DSQLITE_CKSUMVFS_STATIC and
statically linked against the application, initialize it using
a single API call as follows:








|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[sqlite3_load_extension()] API and shutdown the dummy database
connection.  All subsequent database connections that are opened
will include this extension.  For example:

<codeblock>
    sqlite3 *db;
    sqlite3_open(":memory:", &db);
    sqlite3_load_extension(db, "./cksumvfs");
    sqlite3_close(db);
</codeblock>

<p>If this extension is compiled with -DSQLITE_CKSUMVFS_STATIC and
statically linked against the application, initialize it using
a single API call as follows:

Changes to pages/lang_expr.in.
1
2
3
4
5
6
7
8
<title>SQL Langauge Expressions</title>
<tcl>
hd_keywords *langexpr *expression {expression syntax}
</tcl>

<table_of_contents>
<h1>Syntax</h1>

|







1
2
3
4
5
6
7
8
<title>SQL Language Expressions</title>
<tcl>
hd_keywords *langexpr *expression {expression syntax}
</tcl>

<table_of_contents>
<h1>Syntax</h1>

Changes to pages/lang_with.in.
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<tcl>hd_fragment rcex1</tcl>
<h2>Recursive Query Examples</h2>

<p>The following query returns all integers between 1 and 1000000:

<blockquote><pre>
WITH RECURSIVE
  cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1000000)
SELECT x FROM cnt;
</pre></blockquote>

<p>Consider how this query works.  The initial-select
runs first and returns a single row
with a single column "1".  This one row is added to the queue.  In
step 2a, that one row is extracted from the queue and added to "cnt".







|







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<tcl>hd_fragment rcex1</tcl>
<h2>Recursive Query Examples</h2>

<p>The following query returns all integers between 1 and 1000000:

<blockquote><pre>
WITH RECURSIVE
  cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x&lt;1000000)
SELECT x FROM cnt;
</pre></blockquote>

<p>Consider how this query works.  The initial-select
runs first and returns a single row
with a single column "1".  This one row is added to the queue.  In
step 2a, that one row is extracted from the queue and added to "cnt".
Changes to pages/news.in.
12
13
14
15
16
17
18










19
20
21
22
23
24
25
      {<a href="releaselog/\2_\3_\4.html">\0</a>} title
  }
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  hd_resolve "<blockquote>$txt</blockquote>"
  hd_puts "<hr width=\"50%\">"
}











newsitem {2020-06-04} {Release 3.32.2} {
The 3.32.2 release is a one-line change relative to 3.32.1
that fixes a long-standing bug in the COMMIT command.  Since
[version 3.17.0], if you were to retry a COMMIT command over
and over after it returns [SQLITE_BUSY], it might eventually
report success, even though it was still blocked.  This patch







>
>
>
>
>
>
>
>
>
>







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
      {<a href="releaselog/\2_\3_\4.html">\0</a>} title
  }
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  hd_resolve "<blockquote>$txt</blockquote>"
  hd_puts "<hr width=\"50%\">"
}

newsitem {2020-06-18} {Release 3.32.3} {
The 3.32.3 release is a patch release that contains fixes for
various issues discovered by fuzzers.  None of the issues fixed
are likely to be encountered by applications that use SQLite in
ordinary ways, though upgrading never hurts.
<p>
Map of all changes since the 3.32.0 release:
[https://www.sqlite.org/src/timeline?p=version-3.32.3&n=39]
}

newsitem {2020-06-04} {Release 3.32.2} {
The 3.32.2 release is a one-line change relative to 3.32.1
that fixes a long-standing bug in the COMMIT command.  Since
[version 3.17.0], if you were to retry a COMMIT command over
and over after it returns [SQLITE_BUSY], it might eventually
report success, even though it was still blocked.  This patch
Changes to pages/prosupport.in.
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
individual client, but generally include direct telephone support
and priority handling of issues and bugs.  Guaranteed response time
is available as an option.  The cost of
technical support varies but is generally
in the range of $8000 to $35000 per year.</p>

<p>If SQLite is "mission critical" to your company, then you may
want to becoming an 
<a href="https://www.hwaci.com/sw/sqlite/member.html">SQLite Consortium 
Member</a>.  The SQLite
Consortium is a collaboration of companies who sponsor ongoing development
of SQLite in exchange for enterprise-level technical support, on-site
visits from the SQLite developers, unlimited access to all licensed
products, and strong guarantees that SQLite will remain in the public
domain, free and independent, and will not come under the control of







|







166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
individual client, but generally include direct telephone support
and priority handling of issues and bugs.  Guaranteed response time
is available as an option.  The cost of
technical support varies but is generally
in the range of $8000 to $35000 per year.</p>

<p>If SQLite is "mission critical" to your company, then you may
want to become an 
<a href="https://www.hwaci.com/sw/sqlite/member.html">SQLite Consortium 
Member</a>.  The SQLite
Consortium is a collaboration of companies who sponsor ongoing development
of SQLite in exchange for enterprise-level technical support, on-site
visits from the SQLite developers, unlimited access to all licensed
products, and strong guarantees that SQLite will remain in the public
domain, free and independent, and will not come under the control of