Versión de SQLite 3.35

Publicouse a versión de SQLite 3.35, 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:

  • Engadíronse funcións matemáticas integradas (log2(), cos(), tg(), exp(), ln(), pow(), etc.) que se poden usar en SQL. Para activar as funcións integradas, é necesario construír coa opción "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Compatibilidade implementada para a expresión "ALTER TABLE DROP COLUMN" para eliminar columnas dunha táboa e borrar os datos almacenados anteriormente nunha determinada columna.
  • Ampliouse a implementación da operación UPSERT (engadir ou modificar), permitindo a través de expresións como "INSERT ... EN CONFLICTO NON FACER NADA/ACTUALIZAR" ignorar un erro ou realizar unha actualización en lugar de inserir se é imposible engadir datos a través de "INSERT" (por exemplo, se xa existe un rexistro, en lugar de INSERTAR pode realizar ACTUALIZACIÓN). A nova versión permite especificar varios bloques ON CONFLICT, que se procesarán por orde. O último bloque "ON CONFLICT" permite omitir o parámetro de definición de conflito para utilizar "DO ACTUALIZACIÓN".
  • As operacións DELETE, INSERT e UPDATE admiten a expresión RETURNING, que se pode usar para mostrar o contido dun rexistro eliminado, inserido ou modificado. Por exemplo, a expresión "inserir en... identificador de retorno" devolverá o identificador da liña engadida e "actualizar ... establecer prezo = prezo * 1.10 prezo de retorno" devolverá o valor do prezo modificado.
  • Para as expresións de táboa comúns (CTE), que permiten o uso de conxuntos de resultados nomeados temporais especificados mediante a instrución WITH, permítese a elección dos modos "MATERIALIZADO" e "NON MATERIALIZADO". "MATERIALIZADO" implica almacenar en caché a consulta especificada na vista nunha táboa física separada e despois recuperar datos desta táboa, e con "NON MATERIALIZADO" realizaranse consultas repetidas cada vez que se acceda á vista. SQLite tiña orixinalmente o modo predeterminado "NON MATERIALIZADO", pero agora cambiou a "MATERIALIZADO" para os CTE utilizados máis dunha vez.
  • Consumo de memoria reducido ao realizar unha operación VACUUM en bases de datos que inclúen valores moi grandes de TEXTO ou BLOB.
  • Traballouse para aumentar o rendemento do optimizador e do planificador de consultas:
    • Engadíronse optimizacións ao usar as funcións min e max coa expresión "IN".
    • Acelerouse a execución da declaración EXISTS.
    • Implementouse a expansión das subconsultas das expresións UNION ALL usadas como parte de JOIN.
    • O índice utilízase para as expresións IS NOT NULL.
    • Asegura que "x IS NULL" e "x IS NOT NULL" se convertan en FALSE ou TRUE para as columnas que teñen o atributo "NOT NULL".
    • Omita a comprobación das chaves estranxeiras en UPDATE se a operación non cambia as columnas asociadas á chave externa.
    • Permítese mover partes dun bloque WHERE a subconsultas que conteñan funcións de xanela, sempre que esas partes se limiten a traballar con constantes e copias de expresións dos bloques PARTITION BY utilizados nas funcións da xanela.
  • Cambios na interface da liña de comandos:
    • Engadiuse o comando ".filectrl data_version".
    • Os comandos ".once" e ".output" agora admiten pasar a saída a un controlador chamado usando canalizacións sen nome ("|").
    • Engadíronse os argumentos "stmt" e "vmstep" ao comando ".stats" para mostrar estatísticas sobre expresións e contadores de máquinas virtuais.

Fonte: opennet.ru

Engadir un comentario