Small. Fast. Reliable.
Choose any three.
SQLite Release 3.27.2 On 2019-02-25
- Fix a bug in the IN operator that was introduced by an
attempted optimization in version 3.27.0. Ticket
- Fix a bug causing a crash when a window function is misused. Ticket
- Fix various documentation typos
- SQLITE_SOURCE_ID: bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
- SHA3-256 for sqlite3.c: 1dbae33bff261f979d0042338f72c9e734b11a80720fb32498bae9150cc576e7
Changes carried forward from version 3.27.1 (2019-02-08):
- Fix a bug in the query optimizer: an adverse interaction between
the OR optimization and the optimization that tries to use values
read directly from an expression index instead of recomputing the
Changes carried forward from version 3.27.0 (2019-02-07):
- Added the VACUUM INTO command
- Issue an SQLITE_WARNING message on the error log if a
double-quoted string literal is used.
- 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().
- Added the remove_diacritics=2 option to FTS3 and FTS5.
- 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.
- Enhancements to the sqlite3_deserialize() interface:
- Add the SQLITE_FCNTL_SIZE_LIMIT 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
- Honor the SQLITE_DESERIALIZE_READONLY flag, which was previously described
in the documentation, but was previously a no-op.
- Enhance the "deserialize" command of the TCL Interface to give it
new "--maxsize N" and "--readonly BOOLEAN" options.
- Enhancements to the CLI, mostly to support testing and debugging
of the SQLite library itself:
- Add support for ".open --hexdb". The
program used to generate the text for the "hexdb" is added to the
- Add support for the "--maxsize N" option on ".open --deserialize".
- Add the "--memtrace" command-line option, to show all memory allocations
- 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.
- Add the ".progress" command for accessing
the sqlite3_progress_handler() interface.
- Add the "--async" option to the ".backup" command.
- Add options "--expanded", "--normalized", "--plain", "--profile", "--row",
"--stmt", and "--close" to the ".trace" command.
- Increased robustness against malicious SQL that is run against a
maliciously corrupted database.
- Do not use a partial index to do a table scan on an IN operator.
- Fix the query flattener so that it works on queries that contain
subqueries that use window functions.
- Ensure that ALTER TABLE modifies table and column names embedded in WITH
clauses that are part of views and triggers.
- Fix a parser bug that prevented the use of parentheses around table-valued
- Fix a problem with the OR optimization on indexes on expressions.
- Fix a problem with the
LEFT JOIN strength reduction optimization in which the optimization
was being applied inappropriately due to an IS NOT NULL operator.
- Fix the REPLACE command so that it is no longer able to sneak a
NULL value into a NOT NULL column even if the NOT NULL column has a default
value of NULL.
- Fix a problem with the use of window functions used within
- Fix the ALTER TABLE RENAME COLUMN command so that it works for tables
that have redundant UNIQUE constraints.
- Fix a bug that caused zeroblob values to be truncated when inserted into
a table that uses an expression index.
A complete list of SQLite releases
in a single page and a chronology are both also available.
A detailed history of every
check-in is available at
SQLite version control site.