Foi lançado o SQLite 3.45, um SGBD leve, apresentado como uma biblioteca de ligação. O código SQLite é distribuído como domínio público, ou seja, pode ser usado 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 Bentley, Bloomberg, Expensify e Navigation Data Standard.
Principais mudanças:
- Todas as funções SQL para trabalhar com o formato JSON foram reescritas e convertidas para um novo formato interno de árvore de análise JSONB, que é serializado e pode ser armazenado no banco de dados para evitar reanálises ao usar valores JSON. As novas versões das funções que criam JSON agora geram o formato binário JSONB em vez do texto. A função json_valid() recebeu um segundo argumento opcional, que permite definir uma máscara de bits que especifica as características de um JSON válido (por exemplo, ao definir 0x04, um blob JSONB será considerado válido, ao definir 0x01, JSON textual no formato RFC-8259 será aceito, e ao definir 0x05, ambos os formatos serão válidos).
- Na tabela virtual FTS5, usada para busca de texto completo, foi adicionada a opção tokendata, que permite o uso de tokenizadores personalizados.
- A otimização SQLITE_DIRECT_OVERFLOW_READ está ativada por padrão, onde páginas de overflow, que são maiores que o tamanho padrão da página b-tree, são lidas diretamente do arquivo, ignorando o cache. Para desativá-la durante a compilação, pode-se usar a opção '-DSQLITE_DIRECT_OVERFLOW_READ=0'.
- No planejador de consultas, a eficiência da otimização de restrições transitivas foi melhorada e o ignoro de índices considerados de baixa qualidade durante a operação ANALYZE foi aprimorado.
- Na interface de linha de comando, a exibição de conteúdo em codificação UTF-8 na plataforma Windows foi melhorada. Foi garantida a detecção automática do uso da interface CLI ao reproduzir scripts '.dump' e feitas alterações adequadas nas configurações, como '.dbconfig defensive off' e '.dbconfig dqs_dll on'.
- Em funções SQL definidas pelo aplicativo, foi adicionada a propriedade SQLITE_RESULT_SUBTYPE, que permite chamar a função sqlite3_result_subtype() para inspecionar os subtipos dos argumentos.
Além disso, pode-se mencionar o desenvolvimento em versões experimentais do SQLite de um novo modo de registro de transações — WAL2 ("PRAGMA journal_mode = wal2"), que utiliza dois arquivos WAL ("database-wal" e "database-wal2") em vez de um. Ao gravar dados no banco de dados, novos dados são adicionados ao primeiro arquivo WAL. Se o primeiro arquivo WAL atingir um tamanho suficientemente grande, a gravação é alternada para o segundo arquivo. Após a alternância para o segundo arquivo WAL, o primeiro fica disponível para confirmação de alterações (checkpoint) e reescrita. Assim, quando o segundo arquivo WAL atinge um tamanho grande, a alternância é feita de volta para o primeiro, e assim por diante, o que resolve o problema do crescimento descontrolado do arquivo WAL em situações onde as transações não são confirmadas por muito tempo ou onde prolongados processos de leitura estão em andamento.
Fonte: opennet.ru
