Documentation Source Text

Check-in [03bca65239]
Login

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

Overview
Comment:Updates to the change log for version 3.27.0.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 03bca6523910f1d7593178f69a10a3c82e390b35793a820c3f871e5f82ee58ae
User & Date: drh 2019-01-28 20:31:32.389
Context
2019-01-31
17:51
Add documentation for SQLITE_CONFIG_MEMDB_MAXSIZE. (check-in: cb850cf9a5 user: drh tags: trunk)
2019-01-28
20:31
Updates to the change log for version 3.27.0. (check-in: 03bca65239 user: drh tags: trunk)
2019-01-22
20:59
Clean up links in the arch.html and opcode.html documents. (check-in: ea5ed63f07 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/changes.in.
25
26
27
28
29
30
31
32





























33
34
35
36
37
38
39
40
<li>Added the [VACUUM INTO] command
<li>Issue an SQLITE_WARNING message on the [error log] if a 
[double-quoted string literal] is used.
<li>The [sqlite3_normalized_sql()] interface works on any prepared statement
created using [sqlite3_prepare_v2()] or [sqlite3_prepare_v3()].  It is no
longer necessary to use [sqlite3_prepare_v3()] with [SQLITE_PREPARE_NORMALIZE]
in order to use [sqlite3_normalized_sql()].
<li>Add the remove_diacritics=2 option to [FTS3] and [FTS5].





























<p><b>Bug fixes:</b>
<li>Do not use a partial index to do a table scan on an IN operator.
Ticket [https://www.sqlite.org/src/info/1d958d90596593a774|1d958d90596593a774].
<li>Fix the [query flattener] so that it works on queries that contain
subqueries that use [window functions].
Ticket [https://www.sqlite.org/src/info/f09fcd17810f65f717|709fcd17810f65f717]
<li>Ensure that ALTER TABLE modifies table and column names embedded in WITH
clauses that are part of views and triggers.







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







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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<li>Added the [VACUUM INTO] command
<li>Issue an SQLITE_WARNING message on the [error log] if a 
[double-quoted string literal] is used.
<li>The [sqlite3_normalized_sql()] interface works on any prepared statement
created using [sqlite3_prepare_v2()] or [sqlite3_prepare_v3()].  It is no
longer necessary to use [sqlite3_prepare_v3()] with [SQLITE_PREPARE_NORMALIZE]
in order to use [sqlite3_normalized_sql()].
<li>Added the remove_diacritics=2 option to [FTS3] and [FTS5].
<li>Added the [SQLITE_PREPARE_NO_VTAB] option to [sqlite3_prepare_v3()].
Use that option to prevent circular references to [shadow tables] from
causing resource leaks.
<li>Enhancements to the [sqlite3_deserialize()] interface:
<ol type="a">
<li> Add the [SQLITE_FCNTL_SIZE_LIMIT] [sqlite3_file_control|file-control] for
     setting an upper bound on the size of the in-memory database created
     by sqlite3_deserialize.  The default upper bound is 1GiB, or whatever
     alternative value is specified by [SQLITE_MEMDB_DEFAULT_MAXSIZE].
<li> Honor the [SQLITE_DESERIALIZE_READONLY] flag, which was previously described
     in the documentation, but was previously a no-op.
<li> Enhance the "deserialize" command of the [TCL Interface] to give it
     new "--maxsize N" and "--readonly BOOLEAN" options.
</ol>
<li>Enhancements to the [CLI], mostly to support testing and debugging
of the SQLite library itself:
<ol type="a">
<li> Add support for ".open --hexdb". The 
     "[https://sqlite.org/src/doc/trunk/tool/dbtotxt.md|dbtotxt]" utility 
     program used to generate the text for the "hexdb" is added to the 
     source tree.
<li> Add support for the "--maxsize N" option on ".open --deserialize".
<li> Added the "--memtrace" command-line option, to shall all memory allocations
     and deallocations.
<li> Add the ".eqp trace" option on builds with SQLITE_DEBUG, to enable
     bytecode program listing with indentation and 
     [PRAGMA vdbe_trace] all in one step.
</ol>
<li> Omit deprecated PRAGMA statements when compiling with [SQLITE_OMIT_DEPRECATED].
 <p><b>Bug fixes:</b>
<li>Do not use a partial index to do a table scan on an IN operator.
Ticket [https://www.sqlite.org/src/info/1d958d90596593a774|1d958d90596593a774].
<li>Fix the [query flattener] so that it works on queries that contain
subqueries that use [window functions].
Ticket [https://www.sqlite.org/src/info/f09fcd17810f65f717|709fcd17810f65f717]
<li>Ensure that ALTER TABLE modifies table and column names embedded in WITH
clauses that are part of views and triggers.
Changes to pages/compile.in.
483
484
485
486
487
488
489








490
491
492
493
494
495
496

COMPILE_OPTION {SQLITE_MAX_WORKER_THREADS=<i>N</i>} {
  Set an upper bound on the [sqlite3_limit](db,[SQLITE_LIMIT_WORKER_THREADS],N)
  setting that determines the maximum number of auxiliary threads that a single
  [prepared statement] will use to aid with CPU-intensive computations
  (mostly sorting).  See also the [SQLITE_DEFAULT_WORKER_THREADS] options.
}









COMPILE_OPTION {SQLITE_MINIMUM_FILE_DESCRIPTOR=<i>N</i>} {
  The unix [VFS] will never use a file descriptor less than <i>N</i>.  The
  default value of <i>N</i> is 3.
  <p>
  Avoiding the use of low-numbered file descriptors is a defense against
  accidental database corruption.  If a database file was opened using







>
>
>
>
>
>
>
>







483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504

COMPILE_OPTION {SQLITE_MAX_WORKER_THREADS=<i>N</i>} {
  Set an upper bound on the [sqlite3_limit](db,[SQLITE_LIMIT_WORKER_THREADS],N)
  setting that determines the maximum number of auxiliary threads that a single
  [prepared statement] will use to aid with CPU-intensive computations
  (mostly sorting).  See also the [SQLITE_DEFAULT_WORKER_THREADS] options.
}

COMPILE_OPTION {SQLITE_MEMDB_DEFAULT_MAXSIZE=<i>N</i>} {
  Set the default size limit (in bytes) for in-memory databases created using
  [sqlite3_deserialize()].  This is just the default.  The limit can be
  changed at run-time for individual databases using the
  [SQLITE_FCNTL_SIZE_LIMIT] [sqlite3_file_control|file-control].
  If no default is specified, 1073741824 is used.
}

COMPILE_OPTION {SQLITE_MINIMUM_FILE_DESCRIPTOR=<i>N</i>} {
  The unix [VFS] will never use a file descriptor less than <i>N</i>.  The
  default value of <i>N</i> is 3.
  <p>
  Avoiding the use of low-numbered file descriptors is a defense against
  accidental database corruption.  If a database file was opened using
1540
1541
1542
1543
1544
1545
1546
1547







1548
1549
1550
1551
1552
1553
1554
  This option causes SQLite to omit support for interfaces
  marked as deprecated.  This includes 
  [sqlite3_aggregate_count()],
  [sqlite3_expired()],
  [sqlite3_transfer_bindings()],
  [sqlite3_global_recover()],
  [sqlite3_thread_cleanup()] and
  [sqlite3_memory_alarm()] interfaces.







}

COMPILE_OPTION {SQLITE_OMIT_DISKIO} {
  This option omits all support for writing to the disk and forces
  databases to exist in memory only.  This option has not been 
  maintained and probably does not work with newer versions of SQLite.
}







|
>
>
>
>
>
>
>







1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
  This option causes SQLite to omit support for interfaces
  marked as deprecated.  This includes 
  [sqlite3_aggregate_count()],
  [sqlite3_expired()],
  [sqlite3_transfer_bindings()],
  [sqlite3_global_recover()],
  [sqlite3_thread_cleanup()] and
  [sqlite3_memory_alarm()] interfaces and
  [PRAGMA] statements [PRAGMA count_changes],
  [PRAGMA data_store_directory],
  [PRAGMA default_cache_size],
  [PRAGMA empty_result_callbacks],
  [PRAGMA full_column_names],
  [PRAGMA short_column_names], and
  [PRAGMA temp_store_directory].
}

COMPILE_OPTION {SQLITE_OMIT_DISKIO} {
  This option omits all support for writing to the disk and forces
  databases to exist in memory only.  This option has not been 
  maintained and probably does not work with newer versions of SQLite.
}
Changes to pages/lang.in.
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
else it must be an empty file, or the VACUUM INTO command will
fail with an error.

<p>
The VACUUM INTO command is transactional in the sense that
the generated output database is a consistent snapshot of the
orgininal database.  However, if the VACUUM INTO command is
interrupted by a unplanned shutdown or power lose, in that
case the generated output database might not be complete.
Also, SQLite does not invoke fsync() or FlushFileBuffers()
on the generated database to ensure that it has reached
non-volatile storage before completing.


<tcl>hd_fragment howvacuumworks {how vacuum works}</tcl>
<h3>How VACUUM works</h3>







|
|







5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
else it must be an empty file, or the VACUUM INTO command will
fail with an error.

<p>
The VACUUM INTO command is transactional in the sense that
the generated output database is a consistent snapshot of the
orgininal database.  However, if the VACUUM INTO command is
interrupted by a unplanned shutdown or power lose, then
the generated output database might be incomplete and corrupt.
Also, SQLite does not invoke fsync() or FlushFileBuffers()
on the generated database to ensure that it has reached
non-volatile storage before completing.


<tcl>hd_fragment howvacuumworks {how vacuum works}</tcl>
<h3>How VACUUM works</h3>
Changes to pages/quirks.in.
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
and single-quotes around string literals.
<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 widely popular when SQLite was first being
designed) will also use content contained in double-quotes as a string
literal if the content does not match any valid identifier.
<p>
An unfortunate side-effect of this is that a misspelled double-quoted
identifier will be interpreted as a string literal, rather than generating
an error.
Another problem is that this behavior allows developers who are new to
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.







|
|
|







240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
and single-quotes around string literals.
<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 very popular when SQLite was first being
designed) SQLite will also use content contained in double-quotes as a s
tring literal if the content does not match any valid identifier.
<p>
An unfortunate side-effect of this is that a misspelled double-quoted
identifier will be interpreted as a string literal, rather than generating
an error.
Another problem is that this behavior allows developers who are new to
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.