Foi lançado o versão 3.40 do SQLite, um SGBD leve, disponibilizado na forma de uma biblioteca incorporável. O código do SQLite é distribuído como domínio público, ou seja, pode ser utilizado sem restrições e gratuitamente para quaisquer fins. 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:
- Foi implementada uma funcionalidade experimental para compilar o SQLite em código intermediário WebAssembly, capaz de ser executado em navegadores da web e adequado para trabalhar com bancos de dados em aplicações web usando JavaScript. Os desenvolvedores web têm acesso a uma interface orientada a objetos de alto nível para trabalhar com dados ao estilo do sql.js ou Node.js, uma camada sobre a API de C de baixo nível e uma API baseada no mecanismo Web Worker, que permite criar manipuladores assíncronos executados em threads separadas. Os dados que as aplicações web salvam na versão WASM do SQLite podem ser armazenados no lado do cliente usando OPFS (Origin-Private FileSystem) ou a API window.localStorage.
- Foi adicionada a extensão recovery, destinada à recuperação de dados de arquivos de banco de dados corrompidos. Na interface da linha de comando, a recuperação é feita usando o comando “.recover”.
- Melhorou o funcionamento do planejador de consultas. Foram removidas as limitações ao usar índices com tabelas que possuem mais de 63 colunas (anteriormente, operações em colunas cujo número sequencial excedia 63 não aplicavam indexação). Melhorou-se a indexação de valores utilizados em expressões. Foi interrompido o carregamento de grandes linhas e blobs do disco ao processar os operadores NOT NULL e IS NULL. A materialização de visões para as quais a varredura completa é executada apenas uma vez foi excluída.
- Na base de código, o tipo ‘char *’ para representar nomes de arquivos foi substituído por um tipo distinto sqlite3_filename.
- Foi adicionada a função interna sqlite3_value_encoding().
- Foi adicionado o modo SQLITE_DBCONFIG_DEFENSIVE, que proíbe a alteração da versão do esquema de armazenamento de dados.
- O parâmetro 'PRAGMA integrity_check' recebeu verificações adicionais. Por exemplo, tabelas sem o sinalizador STRICT não devem conter valores numéricos em colunas do tipo TEXT e valores de texto que representam números em colunas do tipo NUMERIC. Também foi adicionada uma verificação da ordem correta das linhas em tabelas com a marca 'WITHOUT ROWID'.
- A expressão 'VACUUM INTO' agora considera as configurações 'PRAGMA synchronous'.
- Foi adicionada a opção de compilação SQLITE_MAX_ALLOCATION_SIZE, permitindo limitar o tamanho dos blocos ao alocar memória.
- O algoritmo de geração de números pseudoaleatórios embutido no SQLite foi alterado do uso do cifrador de fluxo RC4 para o Chacha20.
- Agora é permitido o uso de índices com os mesmos nomes em diferentes esquemas de dados.
- Foram feitas otimizações de desempenho que reduziram a carga na CPU em cerca de 1% sob atividade típica.
Fonte: opennet.ru
