Documentation Source Text

Check-in [0bdeed702c]
Login

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

Overview
Comment:Documentation updates based on code review.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 0bdeed702c3aa697935de3f5f95aee8674624f734553d50257f2d7ae390ca697
User & Date: drh 2020-05-20 17:42:32.215
Context
2020-05-21
19:16
Fix typo in the query planner documentation. (check-in: f246e9b589 user: drh tags: trunk)
2020-05-20
17:42
Documentation updates based on code review. (check-in: 0bdeed702c user: drh tags: trunk)
16:59
An extra sentence of clarification on explicit collating sequences on an IN operator. (check-in: 568e2f047e user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/bytecodevtab.in.
1
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<title>The Bytecode() And Tables_Used() Table-Valued Functions</title>
<tcl>hd_keywords bcvtab {bytecode virtual table} {tables_used virtual table}</tcl>

<fancy_format>

<h1>Overview</h1>

<p>
Bytecode and tables_used are [virtual tables] built into SQLite that
access information about [prepared statements].
Both bytecode and tables_used operate as [table-valued functions].
They take a single required argument which is either the text of
an SQL statement, or a pointer to an existing prepared statement.
The bytecode function returns one row of result for each [bytecode]
operation in the prepared statement.  The tables_used function returns
one row for each persistent btree (either a table or an index) accessed
by the prepared statement.

<h1>Usage</h1>

<p>
The bytecode and tables_used tables are only available if SQLite has
been compiled with the -DSQLITE_ENABLE_BYTECODE_VTAB compile-time option.
The [CLI] has been compiled that way, and so you can use the standard
[CLI] as a test platform to experiement.

<p>
Both virtual tables are read-only [eponymous-only virtual tables].  You use them
by mentioning them directly in the FROM clause of a SELECT statement.
They both require a single argument which is the SQL statement to be

|
>



















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<title>The Bytecode() And Tables_Used() Table-Valued Functions</title>
<tcl>hd_keywords bcvtab {bytecode virtual table} {tables_used virtual table} \
  {bytecode and tables_used virtual tables}</tcl>
<fancy_format>

<h1>Overview</h1>

<p>
Bytecode and tables_used are [virtual tables] built into SQLite that
access information about [prepared statements].
Both bytecode and tables_used operate as [table-valued functions].
They take a single required argument which is either the text of
an SQL statement, or a pointer to an existing prepared statement.
The bytecode function returns one row of result for each [bytecode]
operation in the prepared statement.  The tables_used function returns
one row for each persistent btree (either a table or an index) accessed
by the prepared statement.

<h1>Usage</h1>

<p>
The bytecode and tables_used tables are only available if SQLite has
been compiled with the [-DSQLITE_ENABLE_BYTECODE_VTAB] compile-time option.
The [CLI] has been compiled that way, and so you can use the standard
[CLI] as a test platform to experiement.

<p>
Both virtual tables are read-only [eponymous-only virtual tables].  You use them
by mentioning them directly in the FROM clause of a SELECT statement.
They both require a single argument which is the SQL statement to be
Changes to pages/changes.in.
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
<li> INSERT and UPDATE statements now always apply [column affinity]
     before computing [CHECK constraints].  This bug fix could, in
     theory, cause problems for legacy databases with unorthodox
     CHECK constraints the require the input type for an INSERT
     is different from the declared column type. See ticket
     [https://sqlite.org/src/info/86ba67afafded936|86ba67afafded936]
     for more information.
<li> Added the [sqlite3_create_filename()] and [sqlite3_free_filename()]

     interfaces to better support of [VFS shim] implementations.
<li> Increase the [SQLITE_MAX_VARIABLE_NUMBER|default upper bound]
     on the number of [parameters] from 999 to 32766.
<li> Added code for the [UINT collating sequence] as an optional
     [loadable extension].
<li> Enhancements to the [CLI]:
     <ol type="a">







|
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<li> INSERT and UPDATE statements now always apply [column affinity]
     before computing [CHECK constraints].  This bug fix could, in
     theory, cause problems for legacy databases with unorthodox
     CHECK constraints the require the input type for an INSERT
     is different from the declared column type. See ticket
     [https://sqlite.org/src/info/86ba67afafded936|86ba67afafded936]
     for more information.
<li> Added the [sqlite3_create_filename()], [sqlite3_free_filename()],
     and [sqlite3_database_file_object()]
     interfaces to better support of [VFS shim] implementations.
<li> Increase the [SQLITE_MAX_VARIABLE_NUMBER|default upper bound]
     on the number of [parameters] from 999 to 32766.
<li> Added code for the [UINT collating sequence] as an optional
     [loadable extension].
<li> Enhancements to the [CLI]:
     <ol type="a">
Changes to pages/compile.in.
880
881
882
883
884
885
886




887
888
889
890
891
892
893
  control.  This can make transactions over twice as fast, while
  simultaneously reducing wear on SSD storage devices.
<p>
  Future versions of SQLite might enable the batch-atomic-write
  capability by default, at which point this compile-time option
  will become superfluous.
}





COMPILE_OPTION {SQLITE_ENABLE_COLUMN_METADATA} {
  When this C-preprocessor macro is defined, SQLite includes some
  additional APIs that provide convenient access to meta-data about
  tables and queries.  The APIs that are enabled by this option are:

  <ul>







>
>
>
>







880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
  control.  This can make transactions over twice as fast, while
  simultaneously reducing wear on SSD storage devices.
<p>
  Future versions of SQLite might enable the batch-atomic-write
  capability by default, at which point this compile-time option
  will become superfluous.
}

COMPILE_OPTION {SQLITE_ENABLE_BYTECODE_VTAB} {
  This option enables the [bytecode and tables_used virtual tables].
}

COMPILE_OPTION {SQLITE_ENABLE_COLUMN_METADATA} {
  When this C-preprocessor macro is defined, SQLite includes some
  additional APIs that provide convenient access to meta-data about
  tables and queries.  The APIs that are enabled by this option are:

  <ul>
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547

COMPILE_OPTION {SQLITE_OMIT_BLOB_LITERAL} {
  When this option is defined, it is not possible to specify a blob in
  an SQL statement using the X'ABCD' syntax.
}

COMPILE_OPTION {SQLITE_OMIT_BTREECOUNT} {
  When this option is defined, an optimization that accelerates counting
  all entries in a table (in other words, an optimization that helps
  "SELECT count(*) FROM table" run faster) is omitted.
}

COMPILE_OPTION {SQLITE_OMIT_BUILTIN_TEST} {
  This compile-time option has been renamed to [SQLITE_UNTESTABLE].
}

COMPILE_OPTION {SQLITE_OMIT_CASE_SENSITIVE_LIKE_PRAGMA} {







|
<
<







1535
1536
1537
1538
1539
1540
1541
1542


1543
1544
1545
1546
1547
1548
1549

COMPILE_OPTION {SQLITE_OMIT_BLOB_LITERAL} {
  When this option is defined, it is not possible to specify a blob in
  an SQL statement using the X'ABCD' syntax.
}

COMPILE_OPTION {SQLITE_OMIT_BTREECOUNT} {
  This option is no longer used for anything.  It is a no-op.


}

COMPILE_OPTION {SQLITE_OMIT_BUILTIN_TEST} {
  This compile-time option has been renamed to [SQLITE_UNTESTABLE].
}

COMPILE_OPTION {SQLITE_OMIT_CASE_SENSITIVE_LIKE_PRAGMA} {