Versão SQLite 3.35

O lançamento do SQLite 3.35, um DBMS leve projetado como uma biblioteca de plug-ins, foi publicado. O código SQLite é distribuído em domínio público, ou seja, pode ser usado sem restrições e gratuitamente para qualquer finalidade. O suporte financeiro para desenvolvedores SQLite é fornecido por um consórcio especialmente criado, que inclui empresas como Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Grandes mudanças:

  • Adicionadas funções matemáticas integradas (log2(), cos(), tg(), exp(), ln(), pow(), etc.) que podem ser usadas em SQL. A habilitação de funções integradas requer a construção com a opção "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Implementado suporte à expressão “ALTER TABLE DROP COLUMN” para remover colunas de uma tabela e limpar dados previamente armazenados em uma determinada coluna.
  • A implementação da operação UPSERT (adicionar ou modificar) foi ampliada, permitindo através de expressões como “INSERT ... ON CONFLICT DO NOTHING/UPDATE” ignorar um erro ou realizar uma atualização em vez de inserir caso seja impossível adicionar dados através de “INSERT” (por exemplo, se já existir um registro, você pode fazer UPDATE em vez de INSERT). A nova versão permite especificar vários blocos ON CONFLICT, que serão processados ​​em ordem. O último bloco "ON CONFLICT" permite omitir o parâmetro de definição de conflito para utilizar "DO UPDATE".
  • As operações DELETE, INSERT e UPDATE suportam a expressão RETURNING, que pode ser usada para exibir o conteúdo de um registro excluído, inserido ou modificado. Por exemplo, a expressão “inserir em... retornando id” retornará o identificador da linha adicionada e “atualizar... definir preço = preço * 1.10 preço de retorno” retornará o valor do preço alterado.
  • Para Common Table Expressions (CTE), que permitem o uso de conjuntos de resultados nomeados temporários especificados usando a instrução WITH, a escolha dos modos “MATERIALIZED” e “NOT MATERIALIZED” é permitida. “MATERIALIZADO” implica armazenar em cache a consulta especificada na visualização em uma tabela física separada e, em seguida, buscar dados desta tabela, e com “NÃO MATERIALIZADO” consultas repetidas serão realizadas cada vez que a visualização for acessada. SQLite originalmente padronizado como "NOT MATERIALIZED", mas agora mudou para "MATERIALIZED" para CTEs usados ​​mais de uma vez.
  • Consumo de memória reduzido ao executar uma operação VACUUM em bancos de dados que incluem valores TEXT ou BLOB muito grandes.
  • Trabalho foi feito para aumentar o desempenho do otimizador e do planejador de consultas:
    • Adicionadas otimizações ao usar as funções min e max com a expressão "IN".
    • A execução da instrução EXISTS foi acelerada.
    • Implementada expansão de subconsultas de expressões UNION ALL usadas como parte de JOIN.
    • O índice é usado para expressões IS NOT NULL.
    • Garante que "x IS NULL" e "x IS NOT NULL" sejam convertidos em FALSE ou TRUE para colunas que possuem o atributo "NOT NULL".
    • Ignore a verificação de chaves estrangeiras em UPDATE se a operação não alterar as colunas associadas à chave estrangeira.
    • É permitido mover partes de um bloco WHERE para subconsultas contendo funções de janela, desde que essas partes estejam limitadas a trabalhar com constantes e cópias de expressões de blocos PARTITION BY usados ​​em funções de janela.
  • Mudanças na interface da linha de comando:
    • Adicionado comando ".filectrl data_version".
    • Os comandos ".once" e ".output" agora suportam a passagem de saída para um manipulador chamado usando pipes sem nome ("|").
    • Os argumentos “stmt” e “vmstep” foram adicionados ao comando “.stats” para exibir estatísticas sobre expressões e contadores de máquinas virtuais.

Fonte: opennet.ru

Adicionar um comentário