Lanzamiento de la base de datos SQLite 3.31 con soporte para columnas generadas

Publicado lanzamiento SQLite 3.31.0, una base de datos liviana diseñada como una biblioteca conectable. El código de SQLite se distribuye como dominio público, es decir, puede ser utilizado sin restricciones y gratuitamente para cualquier propósito. El soporte financiero para los desarrolladores de SQLite es proporcionado por un consorcio creado específicamente, que incluye empresas como Adobe, Oracle, Mozilla, Bentley y Bloomberg.

Principales cambios:

  • Se ha añadido soporte para columnas generadas (columnas calculadas), que permiten definir una columna cuyos valores se calculan automáticamente a partir del contenido de otra columna al crear una tabla. Las columnas generadas pueden ser virtuales (creadas dinámicamente en cada acceso) o almacenadas en la base de datos (guardadas en cada actualización de columnas relacionadas). El contenido de las columnas generadas solo está disponible en modo de lectura (los cambios se realizan únicamente a través de la modificación del valor en otra columna involucrada en el cálculo). Por ejemplo:

    CREATE TABLE t1(
    a INTEGER PRIMARY KEY,
    b INT,
    c TEXT,
    d INT GENERATED ALWAYS AS (a*abs(b)) VIRTUAL,
    e TEXT GENERATED ALWAYS AS (substr(c,b,b+1)) STORED
    );

  • Se añadieron PRAGMA trusted_schema, configuración SQLITE_DBCONFIG_TRUSTED_SCHEMA y la opción de compilación «-DSQLITE_TRUSTED_SCHEMA», que permiten gestionar la inclusión de protección contra ataques? mediante la modificación del esquema de datos en la base de datos. Con la protección activa, se limita el uso de funciones SQL (no marcadas como SQLITE_INNOCUOUS) en desencadenadores, vistas, expresiones CHECK y DEFAULT, índices y columnas generadas. También se desactiva el uso de tablas virtuales en desencadenadores y vistas, a menos que la tabla virtual se declare explícitamente con la bandera SQLITE_VTAB_INNOCUOUS.
  • Se ha implementado la posibilidad de asignar a ciertas funciones SQL en aplicaciones propiedades SQLITE_INNOCUOUS (funciones inofensivas que no dependen de parámetros externos y no pueden utilizarse para realizar acciones maliciosas) y SQLITE_DIRECTONLY (solo llamada directa en consultas SQL, sin posibilidad de uso en desencadenadores, vistas y estructuras de datos);
  • Módulo añadido uuid con la implementación de funciones para el manejo de UUID (RFC-4122);
  • Se añadió PRAGMA hard_heap_limit y la función sqlite3_hard_heap_limit64() para gestionar el tamaño máximo de la pila;
  • En PRAGMA function_list se añadió la salida del tipo, propiedades y número de argumentos de cada función;
  • En la tabla virtual DBSTAT se ha agregado modo de agregación de datos;
  • En sqlite3_open_v2() se implementó la opción SQLITE_OPEN_NOFOLLOW, que permite prohibir la apertura de enlaces simbólicos;
  • Para el argumento PATH, pasado a las funciones JSON, se añadió soporte para la notación de arrays «#-N»;
  • En el sistema de distribución de memoria lookaside se ha implementado el soporte para dos grupos separados de memoria, cada uno de los cuales puede utilizarse para asignar bloques de diferente tamaño (la separación permite ampliar la aplicación del sistema lookaside, reduciendo al mismo tiempo el tamaño del búfer asignado a cada conexión de 120 a 48 KB);
  • Se ha descontinuado el soporte para PRAGMA legacy_file_format, que era incompatible con VACUUM, columnas generadas e índices descendentes (el soporte para el formato heredado se puede restaurar a través de la bandera SQLITE_DBCONFIG_LEGACY_FILE_FORMAT en sqlite3_db_config()).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster