- Fix a bug concerning the use of row values within triggers (see ticket 8c9458e7) that was in version 3.15.0 but was not reported until moments after the 3.16.0 release was published.
- SQLITE_SOURCE_ID: "2017-01-03 18:27:03 979f04392853b8053817a3eea2fc679947b437fd"
- SHA1 for sqlite3.c: 354f6223490b30fd5320b4066b1535e4ce33988d
Changes carried forward from version 3.16.0 (2017-01-02):
- Uses 9% fewer CPU cycles. (See the CPU performance measurement report for details on how this performance increase was computed.)
- Added experimental support for PRAGMA functions.
- Added the SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE option to sqlite3_db_config().
- Enhance the date and time functions so that the 'unixepoch' modifier works for the full span of supported dates.
- Changed the default configuration of the lookaside memory allocator from 500 slots of 128 bytes each into 125 slots of 512 bytes each.
- Enhanced "WHERE x NOT NULL" partial indexes so that they are usable if the "x" column appears in a LIKE or GLOB operator.
- Enhanced sqlite3_interrupt() so that it interrupts checkpoint operations that are in process.
- Enhanced the LIKE and GLOB matching algorithm to be faster for cases when the pattern contains multiple wildcards.
- Added the SQLITE_FCNTL_WIN32_GET_HANDLE file control opcode.
- Added ".mode quote" to the command-line shell.
- Added ".lint fkey-indexes" to the command-line shell.
- Added the .imposter dot-command to the command-line shell.
- Added the remember(V,PTR) SQL function as a loadable extension.
- Rename the SQLITE_OMIT_BUILTIN_TEST compile-time option to SQLITE_UNTESTABLE to better reflect the implications of using it.
- Fix a long-standing bug in the query planner that caused incorrect results on a LEFT JOIN where the left-hand table is a subquery and the join constraint is a bare column name coming from the left-hand subquery. Ticket 2df0107b.
- Correctly handle the integer literal -0x8000000000000000 in the query planner.