Versión de SQLite 3.40

Publicouse a versión de SQLite 3.40, un DBMS lixeiro deseñado como biblioteca de complementos. O código SQLite distribúese no dominio público, é dicir. pódese usar sen restricións e de forma gratuíta para calquera propósito. O apoio financeiro aos desenvolvedores de SQLite é proporcionado por un consorcio especialmente creado, que inclúe empresas como Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Principais cambios:

  • Implementouse unha funcionalidade experimental para compilar SQLite en código intermedio WebAssembly, que pode executarse nun navegador web e é axeitado para traballar coa base de datos desde aplicacións web JavaScript. Os desenvolvedores web dispoñen dunha interface orientada a obxectos de alto nivel para traballar con datos ao estilo de sql.js ou Node.js, un envoltorio arredor dunha API C de baixo nivel e unha API baseada no mecanismo Web Worker, que permite a creación de procesadores asíncronos que se executan en fíos separados. Os datos almacenados polas aplicacións web na versión WASM de SQLite pódense almacenar no lado do cliente mediante OPFS (Origin-Private FileSystem) ou a API window.localStorage.
  • Engadiuse a extensión de recuperación para recuperar datos de ficheiros de bases de datos danados. O comando "recover" úsase para a recuperación na interface da liña de comandos.
  • Mellorouse o rendemento do planificador de consultas. Elimináronse as restricións no uso de índices con táboas con máis de 63 columnas (anteriormente, a indexación non se aplicaba a operacións con columnas con números ordinais maiores de 63). Mellorouse a indexación de valores usados ​​nas expresións. Detívose a carga de filas e blobs grandes desde o disco ao procesar os operadores NOT NULL e IS NULL. Eliminouse a materialización de vistas para as que se realiza unha análise completa só unha vez.
  • Na base de código, en lugar do tipo "char *", úsase un tipo sqlite3_filename separado para representar os nomes de ficheiros.
  • Engadiuse a función interna sqlite3_value_encoding().
  • Engadiuse o modo SQLITE_DBCONFIG_DEFENSIVE, que prohibe cambiar a versión do esquema de almacenamento de datos.
  • Engadíronse comprobacións adicionais á implementación do parámetro "PRAGMA integrity_check". Por exemplo, as táboas sen o indicador STRICT non deben conter valores numéricos nas columnas TEXT nin valores de cadea con números nas columnas NUMERIC. Tamén se engadiu unha comprobación da orde correcta das filas para as táboas co indicador "WITHOUT ROWID".
  • A instrución "VACUUM INTO" ten en conta a configuración "PRAGMA síncrona".
  • Engadiuse a opción de compilación SQLITE_MAX_ALLOCATION_SIZE, que permite limitar o tamaño dos bloques ao asignar memoria.
  • O algoritmo de xeración de números pseudoaleatorios integrado de SQLite migrou do uso do cifrado de fluxo RC4 a Chacha20.
  • Permítese usar índices cos mesmos nomes en diferentes esquemas de datos.
  • Realizáronse optimizacións de rendemento que reducen a carga da CPU aproximadamente un 1 % durante a actividade típica.

Fonte: opennet.ru