SQLite 3.53 has been released, a lightweight DBMS available as a dynamic library. Version 3.52 has been canceled. SQLite code is distributed as public domain, meaning it can be used without restrictions and free of charge for any purpose. The financial support for SQLite developers is provided by a specially created consortium.
Key Changes:
- A bug that led to database corruption has been fixed. This problem has existed since version 3.7.0 (2010), affecting databases in WAL (Write-Ahead Logging) mode and manifesting due to a race condition when two or more connections to the database, which attempted to write or commit transactions to the same database instance, were opened simultaneously. It is claimed that the circumstances leading to the failure are extremely rare and could only be reproduced in a specially crafted test scenario.
- The ALTER TABLE command now allows the removal of NOT NULL and CHECK constraints.
- The REINDEX EXPRESSIONS command has been added for rebuilding indexes based on expressions where an index element is a function over a column or operations on columns. This command can be used to restore stale indexes.
- Inside temporary triggers created by the CREATE TEMP TRIGGER command and applied to tables in other databases, table modifications or data queries from tables are now permitted.
- In the VACUUM INTO command, when specifying the target file through a URL, the reserve=N parameter is implemented to define the number of backup copies of the database created.
- New SQL functions json_array_insert() and jsonb_array_insert() have been implemented for inserting elements into JSON arrays.
- A QRF (Query Result Formatter) library has been added and utilized in the command-line utility for formatting the results of SQL query executions into a readable format.
- Changes in the command-line utility:
- The .mode command has been significantly expanded.
- Output formatting has been improved, for example, border rendering is now enabled by default, and numerical values are right-aligned in tabulated output.
- Semicolon characters (;) after commands are now ignored.
- The content of files specified in the command line with extensions *.sql and *.txt is now read and interpreted as sets of SQL expressions and dot commands.
- The command ".timer" has added support for the value "once" to apply the timer only to the next SQL statement.
- The command ".progress" has added the option "—timeout S" for forcibly interrupting the SQL statement after the timeout expires.
- The behavior of templates in the ".indexes" command has been changed, which now applies to index names rather than the names of indexed tables.
- Optimizations have been made to the query scheduler, speeding up table merging and operations like EXCEPT, INTERSECT, and UNION.
- The performance of functions for converting floating-point numbers to text representation has been improved.
- A VFS "opfs-wl" has been added to the implementation compiled to WebAssembly intermediate code, which is identical to the VFS "opfs" but uses the Web Locks API for handling locks.
- The sqlite3_rsync utility has added the option "-p|—port".
- Support for the Windows RT platform has been discontinued.
Source: opennet.ru
