*** DRAFT ***

SQLite Release 3.23.0 (Pending)

  1. Add the sqlite3_serialize() and sqlite3_deserialize() interfaced when the SQLITE_ENABLE_DESERIALIZE compile-time option is used.
  2. Recognize TRUE and FALSE as constants. (For compatibility, if there are columns named "true" or "false", then the identifiers refer to the columns rather than Boolean constants.)
  3. Support operators IS TRUE, IS FALSE, IS NOT TRUE, and IS NOT FALSE.
  4. Improve the omit-left-join optimization so that it works in cases where the right-hand table is UNIQUE but not necessarily NOT NULL.
  5. Added the SQLITE_DBSTATUS_CACHE_SPILL option to sqlite3_db_status() for reporting the number of cache spills that have occurred.
  6. The "alternate-form-2" flag ("!") on the built-in printf implemention now causes string substitutions to measure the width and precision in characters instead of bytes.
  7. If the xColumn method in a virtual table implementation returns an error message using sqlite3_result_error() then give that error message preference over internally-generated messages.
  8. Added the -A command-line option to the CLI to make it easier to manage SQLite Archive files.
  9. Bug fixes:
    1. Fix the parser to accept valid row value syntax. Ticket 7310e2fb3d046a5
    2. Fix the query planner so that it takes into account dependencies in the arguments to table-valued functions in subexpressions in the WHERE clause. Ticket 80177f0c226ff54
    3. Fix incorrect result with complex OR-connected WHERE and STAT4. Ticket ec32177c99ccac2
    4. Fix potential corruption in indexes on expressions due to automatic datatype conversions. Ticket 343634942dd54ab
    5. Assertion fault in FTS4. Ticket d6ec09eccf68cfc
    6. Incorrect result on the less-than operator in row values. Ticket f484b65f3d62305
    7. Always interpret non-zero floating-point values as TRUE, even if the integer part is zero. Ticket 36fae083b450e3a
    8. Fix an issue in the fsdir(PATH) table-valued function to the fileio.c extension, that caused a segfault if the fsdir() table was used as the inner table of a join. Problem reported on the mailing list and fixed by check-in 7ce4e71c1b7251be
  10. Additional fixes for issues detected by OSSFuzz:
    1. Fix a possible infinite loop on VACUUM for corrupt database files. Check-in 27754b74ddf64
    2. Disallow parameters in the WITH clause of triggers and views. Check-in b918d4b4e546d
    3. Fix a potential memory leak in row value processing. Check-in 2df6bbf1b8ca8
    4. Improve the performance of the replace() SQL function for cases where there are many substitutions on megabyte-sized strings, in an attempt to avoid OSSFuzz timeouts during testing. Check-in fab2c2b07b5d3


  11. SQLITE_SOURCE_ID: pending
  12. SHA3-256 for sqlite3.c: pending

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.

*** DRAFT ***