SQLite 3.46 DBMS Version Now Available for Release

Published release SQLite 3.46, a lightweight DBMS designed as a plug-in library. SQLite code distributed by as a public domain, i.e. may be used without restrictions and free of charge for any purpose. Financial support for SQLite developers is provided by a specially created consortium.

Basic changes:


  • It is possible to use the separator “_” in numbers for a more visual representation of numeric literals (for example, 1_234_567).
  • Added SQL function json_pretty() to generate more readable output in JSON format using block indentation.
  • The capabilities of the operation have been expanded”PRAGMA optimize“, which optimizes the database and all data schemas to achieve the best query performance. An automatically applied limit on the duration of database analysis has been implemented, eliminating excessive processing time for large databases. A new bit mask “PRAGMA optimize(0x10000)” has been added to separately check for updates in all tables Provided automatic re-analysis of tables that are missing sqlite_stat1 records.
  • To SQL function strftime() added support for %G, %g, %U and %V substitutions.
  • In SQL functions for working with dates and times new modifiers added
    ceiling and floor to control the algorithm for processing ambiguous dates that arise during operations of shifting dates by a certain number of months or years. Modifiers are ignored utc and localtimeif SQLite has knowledge that the time is already in UTC or localtime.
  • Optimizations have been made to the query planner. For INSERT expressions containing thousands of values ​​in the VALUES section, the “VALUES-as-coroutine” optimization is enabled by default, which makes parsing such expressions approximately twice as fast and reduces memory consumption by half. For queries like “SELECT count(DISTINCT col) FROM …”, the use of indexes is allowed, even if the size of the records in the index is not less than the size of the records in the table. The logic for determining situations in which constants are specified in the arguments of SQL functions has been improved. Optimization applied push-down for WHERE clauses containing unrelated subqueries.
  • The logic for handling stack overflow has been changed – when it detects insufficient memory for the stack, the parser now tries to allocate additional memory from the heap, instead of displaying the error “parser stack overflow”.
  • JSON allows control characters to be specified in JSON5 string literals. Changed the logic of the operation of the operators “-›” and “-››”, when the string operand on the right side contains only numbers (by analogy with PostgreSQL, such operands are now processed as a string).
  • The DEFAULT value allows large hexadecimal literals to be specified in table columns.

Thanks for reading: