Foi lançado o SQLite 3.51, um SGBD leve, desenvolvido como uma biblioteca portátil. O código do SQLite é disponibilizado no 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 criado especificamente para esse propósito.
Principais mudanças:
- Novas funções JSON jsonb_each() e jsonb_tree() foram adicionadas, que diferem das funções json_each() e json_tree() anteriormente disponíveis, pois retornam valores JSONB para dados do tipo array ou object.
- O código das extensões carray e percentile foi transferido para o arquivo base 'sqlite3.c' com o código incorporado do SQLite. Por padrão, esses dados adicionais estão desativados e requerem que os parâmetros '-DSQLITE_ENABLE_CARRAY' e '-DSQLITE_ENABLE_PERCENTILE' sejam especificados na compilação.
- A interface para usar SQLite em scripts Tcl foi aprimorada. O comando 'eval' agora inclui a flag '-asdict' para exibir strings usando o tipo 'dict' em vez de 'array'. Foi adicionada a possibilidade de interromper funções definidas pelo usuário para retornar um valor NULL.
- Mudanças na interface da linha de comando:
- A precisão do comando '.timer' foi aumentada para microssegundos;
- Nos modos de formatação 'box' e 'column', o suporte a caracteres de largura dupla foi implementado;
- O comando '.imposter' agora pode fornecer no modo somente leitura tabelas impostoras (que permitem o acesso aos dados em um índice como se fosse uma tabela), funcionando com a operação VACUUM e sem necessidade de ser executado com a flag '—unsafe-testing';
- Uma opção '—ifexists' foi adicionada ao utilitário sqlite e ao comando '.open'.
- A largura máxima da linha definida pelo comando '.width' é limitada a 30000 caracteres.
- Otimizações de desempenho foram realizadas:
- A carga de CPU foi reduzida ao confirmar transações limitadas ao acesso de leitura;
- A determinação de operações de junção (JOIN) que não retornam linhas devido a uma ou mais tabelas não conterem linhas foi aprimorada;
- A execução de subconsultas escalares que não afetam o resultado foi eliminada;
- A execução de funções de janela em consultas com a expressão 'BETWEEN 😡 FOLLOWING AND :y FOLLOWING' e com um valor muito grande para ':y' foi acelerada.
- Foi adicionada a pragma 'PRAGMA wal_checkpoint=NOOP' e a função da API sqlite3_wal_checkpoint() para confirmar alterações no log WAL.
- Funções sqlite3_set_errmsg() e sqlite3_db_status64() foram adicionadas à API.
- Na versão JavaScript/WASM do SQLite, foi implementado suporte para compilação em uma representação WebAssembly com ponteiros de 64 bits.
- Aumentada a resistência a danos no banco de dados em aplicativos que removem bloqueios POSIX através da chamada close().
- Melhor suporte para a plataforma VxWorks.
Fonte: opennet.ru
