Lançamento do SGBD SQLite 3.35

Foi lançado o SQLite 3.35, um SGBD leve, apresentado como uma biblioteca plugável. O código do SQLite é distribuído como domínio público, ou seja, pode ser utilizado sem restrições e gratuitamente para qualquer finalidade. O suporte financeiro aos desenvolvedores do SQLite é fornecido por um consórcio especialmente criado, que inclui empresas como Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Principais mudanças:

  • Foram adicionadas funções matemáticas embutidas (log2(), cos(), tg(), exp(), ln(), pow() etc.) que podem ser utilizadas no SQL. Para habilitar as funções embutidas, é necessário compilar com a opção "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Foi implementado o suporte à expressão "ALTER TABLE DROP COLUMN" para remover colunas de uma tabela e limpar os dados anteriormente armazenados nessa coluna.
  • Foi expandida a implementação da operação UPSERT (inserir-ou-modificar), permitindo através de expressões do tipo "INSERT … ON CONFLICT DO NOTHING/UPDATE" ignorar um erro ou executar uma atualização em vez de uma inserção, caso a adição de dados através de "INSERT" não seja possível (por exemplo, se o registro já existir, em vez de INSERT, pode ser realizado um UPDATE). Na nova versão, é permitido especificar vários blocos "ON CONFLICT", que serão processados na ordem em que aparecem. No último bloco "ON CONFLICT", não é necessário especificar o parâmetro de definição de conflito para usar "DO UPDATE."
  • Nas operações DELETE, INSERT e UPDATE, foi implementado o suporte à expressão RETURNING, com a qual é possível exibir o conteúdo do registro excluído, inserido ou modificado. Por exemplo, a expressão "insert into … returning id" retornará o identificador da linha adicionada, enquanto "update … set price = price * 1.10 returning price" retornará o valor alterado do price.
  • Para expressões de tabela comuns (Common Table Expression, CTE), que permitem o uso de conjuntos de resultados nomeados temporários definidos através da instrução WITH, foi permitido escolher entre os modos "MATERIALIZED" e "NOT MATERIALIZED." "MATERIALIZED" implica o cache dos resultados apresentados em uma tabela física separada, com a subsequente recuperação de dados dessa tabela, enquanto "NOT MATERIALIZED" realizará novas consultas sempre que houver acesso à visualização. Inicialmente, no SQLite, o modo padrão era "NOT MATERIALIZED", mas agora, para CTEs que são utilizados mais de uma vez, foi alterado para "MATERIALIZED."
  • Reduzido o consumo de memória ao executar a operação VACUUM para bancos de dados que incluem valores muito grandes com tipos TEXT ou BLOB.
  • Trabalhos realizados 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 do operador EXISTS foi acelerada.
    • Implementado o desdobramento de subconsultas de expressões UNION ALL usadas como parte do JOIN.
    • Um índice foi utilizado para expressões IS NOT NULL.
    • As expressões «x IS NULL» e «x IS NOT NULL» foram convertidas em FALSE ou TRUE para colunas com a característica «NOT NULL».
    • A verificação de chaves estrangeiras foi ignorada na atualização, se a operação não alterar colunas relacionadas à chave estrangeira.
    • Permitido mover partes do bloco WHERE para subconsultas que contêm funções de janela, se essas partes estiverem restritas a trabalhar com constantes e cópias de expressões dos blocos «PARTITION BY», usadas nas funções de janela.
  • Mudanças na interface da linha de comando:
    • Adicionada o comando «.filectrl data_version».
    • Nos comandos «.once» e «.output», foi adicionada a capacidade de direcionar a saída para um manipulador chamado usando canais não nomeados («|»).
    • Nos comandos «.stats», foram adicionados os argumentos «stmt» e «vmstep» para exibir estatísticas sobre expressões e contadores da máquina virtual.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster