Lanzamento de DBMS SQLite 3.31 con soporte para columnas xeradas

publicado liberación SQLite 3.31.0, un DBMS lixeiro deseñado como biblioteca de complementos. O código SQLite distribúese como un dominio público, é dicir. pode utilizarse sen restricións e de xeito gratuíto 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.

O principal cambios:

  • Soporte engadido columnas xeradas (columnas calculadas), que permiten definir unha columna cando crea unha táboa cuxo valor se calcula automaticamente en función do contido doutra columna. As columnas xeradas poden ser virtuais (xeradas sobre a marcha con cada acceso) ou almacenadas na base de datos (gardadas cada vez que se actualizan as columnas relacionadas). O contido das columnas xeradas só está dispoñible no modo de lectura (os cambios realízanse só mediante a modificación do valor noutra columna implicada no cálculo). Por exemplo:

    CREAR TÁBOA t1(
    unha CLAVE PRIMARIA ENTEIRA,
    b INT,
    c TEXTO,
    d INT XERADO SEMPRE COMO (a*abs(b)) VIRTUAL,
    e TEXTO XERADO SEMPRE COMO (substr(c,b,b+1)) ALMACENADO
    );

  • Engadido PRAGMA esquema_confiable, configuración SQLITE_DBCONFIG_TRUSTED_SCHEMA e a opción de montaxe "-DSQLITE_TRUSTED_SCHEMA", que permite controlar a inclusión de protección contra ataques mediante a modificación do esquema de datos na base de datos. A protección activa restrinxe o uso de funcións SQL (non marcadas como SQLITE_INNOCUOUS) en activadores, vistas, instrucións CHECK e DEFAULT, índices e columnas xeradas. O uso de táboas virtuais en activadores e vistas tamén está desactivado a non ser que a táboa virtual estea declarada explícitamente coa marca SQLITE_VTAB_INNOCUOUS.
  • Implementouse a capacidade de asignar propiedades ás funcións SQL definidas nas aplicacións SQLITE_INNOCUOUS (funcións inofensivas que non dependen de parámetros externos e non se poden utilizar para realizar accións maliciosas) e SQLITE_DIRECTONLY (só chamada directa en consultas SQL, sen posibilidade de utilizar en disparadores, vistas e diagramas de estrutura de datos);
  • Módulo engadido uuid con implementación de funcións para procesar UUID (RFC-4122);
  • Engadido PRAGMA límite_difícil_de_monto e función sqlite3_hard_heap_limit64() para controlar o tamaño máximo do montón;
  • EN PRAGMA lista_funcións saída engadida do tipo, propiedades e número de argumentos de cada función;
  • Á táboa virtual DBSTAT engadido modo de agregación de datos;
  • sqlite3_open_v2() implementa a opción SQLITE_OPEN_NOFOLLOW, que permite desactivar a apertura de ligazóns simbólicas;
  • Para argumentar PATH, pasado ás funcións JSON, engadiu soporte para a notación matricial "#-N";
  • No sistema de distribución da memoria mira ao lado implementouse o soporte para dúas agrupacións de memoria separadas, cada unha das cales se pode usar para asignar bloques de diferentes tamaños (a separación permítelle ampliar o uso do sistema Lookaside, mentres reduce o tamaño do búfer asignado a cada conexión de 120 a 48). KB);
  • O soporte de PRAGMA descontinuouse formato_arquivo_herdado, que era incompatible con VACUUM, as columnas xeradas e os índices descendentes (a compatibilidade con formatos heredados pódese devolver mediante a marca SQLITE_DBCONFIG_LEGACY_FILE_FORMAT en sqlite3_db_config()).

Fonte: opennet.ru

Engadir un comentario