Documentation Source Text

Check-in [ecbe9a0cbc]
Login

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

Overview
Comment:Add the "News" for the 3.10.0 release and fix some typos. Add hashes and correct dates to the change log.
Timelines: family | ancestors | descendants | both | trunk | release | version-3.10.0
Files: files | file ages | folders
SHA1: ecbe9a0cbc2195abfacaad53b65808c168ae0d81
User & Date: drh 2016-01-06 11:05:09
Context
2016-01-06
12:23
Update download.in to look for products with version numbers starting with "31" instead of "30". check-in: 55ba3b7506 user: dan tags: trunk
11:05
Add the "News" for the 3.10.0 release and fix some typos. Add hashes and correct dates to the change log. check-in: ecbe9a0cbc user: drh tags: trunk, release, version-3.10.0
2016-01-04
00:44
Add the SQLITE_LIKE_DOESNT_MATCH_BLOBS compile-time option to the changes log. check-in: df761d0907 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to pages/changes.in.

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
..
60
61
62
63
64
65
66




67
68
69
70
71
72
73
set nChng 0
proc chng {date desc {options {}}} {
  global nChng aChng
  set aChng($nChng) [list $date $desc $options]
  incr nChng
}

chng {2016-00-00 (3.10.0)} {
<p><b>General improvements:</b>
<li>Added support for [LIKE], [GLOB], and [REGEXP] operators on [virtual tables].
<li>Added the [colUsed field] to [sqlite3_index_info] for use by
    the [sqlite3_module.xBestIndex] method.
<li>Enhance the [PRAGMA cache_spill] statement to accept a 32-bit integer
    parameter which is the threshold below which cache spilling is prohibited.
<li>On unix, if a symlink to a database file is opened, then the corresponding
................................................................................
    could result in a corrupt index if the index is created on a table
    column that contains both large integers and floating point values
    of similar magnitude.  Ticket 
    [https://www.sqlite.org/src/tktview?name=38a97a87a6|38a97a87a6].
<li>Fix an infinite-loop in the query planner that could occur on
    malformed [common table expressions].
<li>Various bug fixes in the [sqldiff] tool.




}

chng {2015-11-03 (3.9.2)} {
<li>Fix the schema parser so that it interprets certain 
    (obscure and ill-formed)
    CREATE TABLE statements the same as legacy.  Fix for ticket
    [https://www.sqlite.org/src/info/ac661962a2aeab3c331|ac661962a2aeab3c331]







|







 







>
>
>
>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
..
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
set nChng 0
proc chng {date desc {options {}}} {
  global nChng aChng
  set aChng($nChng) [list $date $desc $options]
  incr nChng
}

chng {2016-01-06 (3.10.0)} {
<p><b>General improvements:</b>
<li>Added support for [LIKE], [GLOB], and [REGEXP] operators on [virtual tables].
<li>Added the [colUsed field] to [sqlite3_index_info] for use by
    the [sqlite3_module.xBestIndex] method.
<li>Enhance the [PRAGMA cache_spill] statement to accept a 32-bit integer
    parameter which is the threshold below which cache spilling is prohibited.
<li>On unix, if a symlink to a database file is opened, then the corresponding
................................................................................
    could result in a corrupt index if the index is created on a table
    column that contains both large integers and floating point values
    of similar magnitude.  Ticket 
    [https://www.sqlite.org/src/tktview?name=38a97a87a6|38a97a87a6].
<li>Fix an infinite-loop in the query planner that could occur on
    malformed [common table expressions].
<li>Various bug fixes in the [sqldiff] tool.
<p><b>Hashes:</b>
<li>SQLITE_SOURCE_ID: "2016-01-06 11:01:07 fd0a50f0797d154fefff724624f00548b5320566"
<li>SHA1 for sqlite3.c: b92ca988ebb6df02ac0c8f866dbf3256740408ac

}

chng {2015-11-03 (3.9.2)} {
<li>Fix the schema parser so that it interprets certain 
    (obscure and ill-formed)
    CREATE TABLE statements the same as legacy.  Fix for ticket
    [https://www.sqlite.org/src/info/ac661962a2aeab3c331|ac661962a2aeab3c331]

Changes to pages/docs.in.

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

heading {SQLite Technical/Design Documentation} {
  These documents are oriented toward describing the internal
  implementation details and operation of SQLite.  
}

doc {How Database Corruption Can Occur} {howtocorrupt.html} {
  SQLite is highly resistent to database corruption.  But application,
  OS, and hardware bugs can still result in corrupt database files.
  This article describes many of the ways that SQLite database files
  can go corrupt.
}

doc {Temporary Files Used By SQLite} {tempfiles.html} {
  SQLite can potentially use many different temporary files when







|







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

heading {SQLite Technical/Design Documentation} {
  These documents are oriented toward describing the internal
  implementation details and operation of SQLite.  
}

doc {How Database Corruption Can Occur} {howtocorrupt.html} {
  SQLite is highly resistant to database corruption.  But application,
  OS, and hardware bugs can still result in corrupt database files.
  This article describes many of the ways that SQLite database files
  can go corrupt.
}

doc {Temporary Files Used By SQLite} {tempfiles.html} {
  SQLite can potentially use many different temporary files when

Changes to pages/json1.in.

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
...
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
         {json_array_length}</tcl>
<h3>3.3 The json_array_length() function</h3>

<p>The json_array_length(X) function returns the number of elements
in the JSON array X, or 0 if X is some kind of JSON value other
than an array.  The json_array_length(X,P) locates the array at path P
within X and returns the length of that array, or 0 if path P locates
a element or X other than an JSON array, and NULL if path P does not
locate any element of X.  Errors are thrown if either X is not 
well-formed JSON or if P is not a well-formed path.

<p>Examples:

<tcl>
jexample \
................................................................................
<tr>
<td>json_set()<td align='center'>Yes<td align='center'>Yes
</table></center>

<p>The json_insert(), json_replace(), and json_set() functions always
take an odd number of arguments.  The first argument is always the original
JSON to be edited.  Subsequent arguments occur in pairs with the first
element of each pair being a path and the second element being an value
to insert or replace or set on that path.

<p>Edits occurs sequentially from left to right.  Changes caused by
prior edits can affect the path search for subsequent edits.

<p>If the value of a path/value pair is an SQLite TEXT value, then it
is normally inserted as a quoted JSON string, even if the string looks







|







 







|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
...
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
         {json_array_length}</tcl>
<h3>3.3 The json_array_length() function</h3>

<p>The json_array_length(X) function returns the number of elements
in the JSON array X, or 0 if X is some kind of JSON value other
than an array.  The json_array_length(X,P) locates the array at path P
within X and returns the length of that array, or 0 if path P locates
a element or X other than a JSON array, and NULL if path P does not
locate any element of X.  Errors are thrown if either X is not 
well-formed JSON or if P is not a well-formed path.

<p>Examples:

<tcl>
jexample \
................................................................................
<tr>
<td>json_set()<td align='center'>Yes<td align='center'>Yes
</table></center>

<p>The json_insert(), json_replace(), and json_set() functions always
take an odd number of arguments.  The first argument is always the original
JSON to be edited.  Subsequent arguments occur in pairs with the first
element of each pair being a path and the second element being the value
to insert or replace or set on that path.

<p>Edits occurs sequentially from left to right.  Changes caused by
prior edits can affect the path search for subsequent edits.

<p>If the value of a path/value pair is an SQLite TEXT value, then it
is normally inserted as a quoted JSON string, even if the string looks

Changes to pages/news.in.

14
15
16
17
18
19
20




21
22
23
24
25
26
27
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  regsub -all {[Tt]icket #(\d+)} $txt \
      {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
  hd_resolve "<blockquote>$txt</blockquote>"
  hd_puts "<hr width=\"50%\">"
}





newsitem {2015-11-02} {Release 3.9.2} {
<p>SQLite [version 3.9.2] is a patch release fixing two obscure bugs.
(Details: [https://www.sqlite.org/src/tktview?name=8a2adec166|(1)],
[https://www.sqlite.org/src/tktview?name=ac661962a2|(2)]).
Upgrade only if you are having problems.
}







>
>
>
>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  regsub -all {[Tt]icket #(\d+)} $txt \
      {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
  hd_resolve "<blockquote>$txt</blockquote>"
  hd_puts "<hr width=\"50%\">"
}

newsitem {2016-01-06} {Release 3.10.0} {
<p>SQLite [version 3.10.0] is a regularly scheduled maintenance release.
}

newsitem {2015-11-02} {Release 3.9.2} {
<p>SQLite [version 3.9.2] is a patch release fixing two obscure bugs.
(Details: [https://www.sqlite.org/src/tktview?name=8a2adec166|(1)],
[https://www.sqlite.org/src/tktview?name=ac661962a2|(2)]).
Upgrade only if you are having problems.
}

Changes to pages/rbu.in.

325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
  CREATE VIEW data0_ccc_fts AS SELECT * FROM data_ccc;
}</tcl>
 
<p>
  The data_ccc table may then be populated as normal with the updates intended
  for target database table ccc. The same updates will be read by RBU from
  the data0_ccc_fts view and applied to FTS table ccc_fts. Because
  "data0_ccc_fts" is smalle than "data_ccc", the FTS table will be updated
  first, as required.

<p>
  Cases in which the underlying content table has an explicit INTEGER PRIMARY
  KEY column are slightly more difficult, as the text values stored in the
  ota_control column are slightly different for the FTS index and its
  underlying content table. For the underlying content table, a character







|







325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
  CREATE VIEW data0_ccc_fts AS SELECT * FROM data_ccc;
}</tcl>
 
<p>
  The data_ccc table may then be populated as normal with the updates intended
  for target database table ccc. The same updates will be read by RBU from
  the data0_ccc_fts view and applied to FTS table ccc_fts. Because
  "data0_ccc_fts" is smaller than "data_ccc", the FTS table will be updated
  first, as required.

<p>
  Cases in which the underlying content table has an explicit INTEGER PRIMARY
  KEY column are slightly more difficult, as the text values stored in the
  ota_control column are slightly different for the FTS index and its
  underlying content table. For the underlying content table, a character

Changes to pages/versionnumbers.in.

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
..
71
72
73
74
75
76
77
78
79
80
81
82
83
<title>Version Numbers in SQLite</title>

<h1>SQLite Version Numbers</h1>

<p>
Beginning with [version 3.9.0] SQLite uses 
[http://semver.org|semantic versioning].
Prior to that time, SQLlite employed a version identifier that
contained between two and four numbers.

<h2>The New Version Numbering System (After 2015-10-01)</h2>

<p>
All SQLite releases starting with 3.9.0 use a three-number
"[http://semver.org|semantic version]" of the form X.Y.Z.
................................................................................
[next generation query planner].

<p>
The minor version number Y was historically incremented for new
features and/or new interfaces that did not significantly change
the structure of the code.  The addition of [common table expressions],
[partial indexes], and [indexes on expressions] are all examples of
"minor" changes.  Again, the destinction between "major" and "minor"
is subjective.

<p>
The patch level Z was historically only used for bug-fix releases
that changed only a small number of code lines.







|







 







|





2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
..
71
72
73
74
75
76
77
78
79
80
81
82
83
<title>Version Numbers in SQLite</title>

<h1>SQLite Version Numbers</h1>

<p>
Beginning with [version 3.9.0] SQLite uses 
[http://semver.org|semantic versioning].
Prior to that time, SQLite employed a version identifier that
contained between two and four numbers.

<h2>The New Version Numbering System (After 2015-10-01)</h2>

<p>
All SQLite releases starting with 3.9.0 use a three-number
"[http://semver.org|semantic version]" of the form X.Y.Z.
................................................................................
[next generation query planner].

<p>
The minor version number Y was historically incremented for new
features and/or new interfaces that did not significantly change
the structure of the code.  The addition of [common table expressions],
[partial indexes], and [indexes on expressions] are all examples of
"minor" changes.  Again, the distinction between "major" and "minor"
is subjective.

<p>
The patch level Z was historically only used for bug-fix releases
that changed only a small number of code lines.