Lanzamiento de la base de datos SQLite 3.35

Se publicó la versión 3.35 de SQLite, un sistema de gestión de bases de datos ligero integrado como una biblioteca de enlace dinámico. El código de SQLite se distribuye como dominio público, es decir, puede ser utilizado sin restricciones y de forma gratuita para cualquier propósito. El apoyo 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 han agregado funciones matemáticas integradas (log2(), cos(), tg(), exp(), ln(), pow(), etc.) que se pueden utilizar en SQL. Para habilitar estas funciones integradas, se requiere una compilación con la opción “-DSQLITE_ENABLE_MATH_FUNCTIONS”.
  • Se ha implementado el soporte para la expresión “ALTER TABLE DROP COLUMN” para eliminar columnas de una tabla y limpiar los datos previamente almacenados en esa columna.
  • Se ha ampliado la implementación de la operación UPSERT (insertar-o-modificar), que permite a través de expresiones del tipo “INSERT … ON CONFLICT DO NOTHING/UPDATE” ignorar errores o realizar actualizaciones en lugar de inserciones si no se puede añadir datos a través de “INSERT” (por ejemplo, si ya existe un registro, en lugar de INSERT se puede realizar UPDATE). En la nueva versión se permite especificar múltiples bloques “ON CONFLICT”, que serán procesados en el orden en que aparecen. En el último bloque “ON CONFLICT”, no es necesario especificar el parámetro de definición del conflicto para usar “DO UPDATE”.
  • En las operaciones DELETE, INSERT y UPDATE se ha implementado el soporte para la expresión RETURNING, que permite devolver el contenido del registro eliminado, insertado o modificado. Por ejemplo, la expresión “insert into … returning id” devolverá el identificador de la fila agregada, y “update … set price = price * 1.10 returning price” devolverá el valor modificado del precio.
  • Para las expresiones de tabla comunes (Common Table Expression, CTE), que permiten usar conjuntos de resultados temporales con nombre, configurados mediante el operador WITH, se permite elegir entre los modos “MATERIALIZED” y “NOT MATERIALIZED”. “MATERIALIZED” implica almacenar en caché la consulta especificada en una tabla física separada, con datos recuperados de esa tabla, mientras que en “NOT MATERIALIZED” se realizarán consultas repetidas cada vez que se acceda a la vista. Originalmente, en SQLite se utilizaba por defecto el modo “NOT MATERIALIZED”, pero ahora para CTE que se utilizan más de una vez se ha cambiado a “MATERIALIZED”.
  • Se ha reducido el consumo de memoria al realizar la operación VACUUM en bases de datos que incluyen valores muy grandes de tipos TEXT o BLOB.
  • Se han realizado mejoras en el rendimiento del optimizador y del planificador de consultas:
    • Se han añadido optimizaciones al utilizar las funciones min y max con la expresión «IN».
    • Se ha acelerado la ejecución del operador EXISTS.
    • Se ha implementado el despliegue de subconsultas a partir de expresiones UNION ALL utilizadas en JOIN.
    • Se ha utilizado un índice para expresiones IS NOT NULL.
    • Se ha garantizado la conversión de «x IS NULL» y «x IS NOT NULL» en FALSE o TRUE para columnas con la característica «NOT NULL».
    • Se ha omitido la verificación de claves externas en UPDATE, si la operación no cambia columnas relacionadas con la clave externa.
    • Se permite mover partes del bloque WHERE en subconsultas que contienen funciones de ventana, siempre que estas partes estén limitadas a trabajar con constantes y copias de expresiones de los bloques «PARTITION BY» utilizados en funciones de ventana.
  • Cambios en la interfaz de línea de comandos:
    • Se ha añadido el comando «.filectrl data_version».
    • En los comandos «.once» y «.output» se ha añadido soporte para redirigir la salida a un controlador que se invoca utilizando canales anónimos («|»).
    • Al comando «.stats» se le han añadido los argumentos «stmt» y «vmstep» para mostrar estadísticas sobre expresiones y contadores de la máquina virtual.

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