SQLite 3.40 release

The release of SQLite 3.40, a lightweight DBMS designed as a plug-in library, has been published. The SQLite code is distributed in the public domain, i.e. can be used without restrictions and free of charge for any purpose. Financial support for SQLite developers is provided by a specially created consortium, which includes companies such as Adobe, Oracle, Mozilla, Bentley and Bloomberg.

Major changes:

  • Implemented the experimental ability to compile SQLite into an intermediate WebAssembly code that can run in a web browser and is suitable for organizing work with the database from web applications in the JavaScript language. Web developers are provided with a high-level object-oriented interface for working with data in the style of sql.js or Node.js, wrapping over a low-level C API, and an API based on the Web Worker mechanism that allows you to create asynchronous handlers that run on separate threads. The data that web applications store in the WASM version of SQLite can be stored on the client side using OPFS (Origin-Private FileSystem) or the window.localStorage API.
  • The recovery extension has been added, designed to recover data from damaged files from the database. The command line interface uses the ".recover" command to restore.
  • Improved query planner performance. Restrictions were removed when using indexes with tables with more than 63 columns (previously, indexing was not applied for operations with columns whose ordinal number exceeded 63). Improved indexing of values ​​used in expressions. Stopped loading large strings and blobs from disk when processing NOT NULL and IS NULL operators. Excluded materialization of views for which a full scan is performed only once.
  • In the codebase, instead of using the "char *" type, a separate sqlite3_filename type is used to represent file names.
  • Added sqlite3_value_encoding() internal function.
  • Added the SQLITE_DBCONFIG_DEFENSIVE mode, which prohibits changing the storage schema version.
  • Additional checks have been added to the implementation of the "PRAGMA integrity_check" parameter. For example, tables without the STRICT attribute must not contain numeric values ​​in TEXT columns and string values ​​with numbers in NUMERIC columns. Also added check the correctness of the order of rows in tables with the attribute "WITHOUT ROWID".
  • The "VACUUM INTO" expression respects the "PRAGMA synchronous" settings.
  • Added the SQLITE_MAX_ALLOCATION_SIZE build option to limit the size of blocks when allocating memory.
  • The algorithm for generating pseudo-random numbers built into SQLite has been moved from using the RC4 stream cipher to Chacha20.
  • It is allowed to use indexes with the same name in different data schemas.
  • Performance optimizations have been made to reduce the load on the CPU by about 1% during typical activity.

Source: opennet.ru

Add a comment