No dia 9 de abril, foi lançado a versão 3.53.0 do banco de dados embarcado multiplataforma. SQLiteO código do projeto foi escrito na linguagem C e distribuído como domínio público.
Mudanças:
- Erro corrigido Bug de corrupção de banco de dados devido ao reset do WAL.. Veja a notícia anterior. SQLite 3.51.3 com correção de possível corrupção de banco de dados no modo WAL.
- Adicionada a biblioteca de formatação de resultados de consultas SQL. Formatador de Resultados de Consultas (QRF) para garantir uma leitura conveniente na tela com fonte de largura fixa.
- Método adicionado format para interface TCL para acessar o QRF de TCL.
- O QRF agora é utilizado na ferramenta de console sqlite para formatar os resultados das consultas, melhorando sua apresentação.
- Novos recursos da linguagem SQL:
- Melhoradas as funcionalidades do comando ALTER TABLE para possibilitar a adição e remoção de restrições NOT NULL e CHECK.
- Operador REINDEX EXPRESSIONS realiza a reindexação de índices de expressões. Útil para recuperação de índices de expressões obsoletos..
- Agora, triggers TEMP podem modificar e/ou consultar dados das tabelas do esquema principal.
- Melhorado o comando VACUUM INTO: ao usar como endereço de destino um nome de arquivo no formato URI, contendo o parâmetro de consulta reserve=N (onde N é um número de 0 a 255), a quantidade de reserva para a cópia do banco de dados criada é definida como N.
- Novas funções SQL adicionadas:
- Atualizações na ferramenta de console:
- Melhorias significativas no comando .mode.
- Graças a para a extensão QRF formatação dos resultados melhorada. Por exemplo, números agora são alinhados à direita por padrão no modo de saída em tabela..
- Por padrão, o QRF agora é utilizado ao usar interativamente a ferramenta de console para exibir os resultados das consultas em blocos formados com caracteres Unicode de desenho de blocos, o que melhorou a legibilidade. O formato de saída obsoleto é utilizado ao executar comandos em lote para garantir compatibilidade.
- Pontos e vírgulas únicos (não entre aspas) no final de comandos com ponto são ignorados sem aviso. Isso é uma possível incompatibilidade!
- As comandos .testcase e .check foram corrigidos. Agora funcionam de verdade e são usados em scripts que fazem parte do conjunto padrão de testes do SQLite incluído nos códigos-fonte.
- Os argumentos da linha de comando que correspondem aos padrões *.sql ou *.txt e representam nomes de arquivos não vazios são lidos e interpretados como scripts contendo comandos SQL e/ou [comandos com ponto]((https://sqlite.org/cli.html#dotcmd).
- Agora, o argumento do comando .timer pode especificar once para ativar o temporizador apenas durante a execução da próxima consulta SQL.
- O novo parâmetro —timeout S do comando .progress interrompe a execução das consultas SQL após S segundos.
- O comando .indexes foi alterado para que o argumento PATTERN agora corresponda ao nome do índice, em vez do nome da tabela indexada (o que torna o argumento PATTERN realmente útil). Além disso, várias novas opções foram adicionadas ao comando .indexes.
- Melhorias na API C:
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- Na função sqlite3_prepare_v3() foi adicionada a opção SQLITE_PREPARE_FROM_DDL, que permite que implementações de tabelas virtuais preparem de forma segura operadores SQL obtidos da estrutura do banco de dados.
- Adicionada a constante SQLITE_UTF8_ZT, que pode ser usada como parâmetro de codificação nas funções sqlite3_result_text64() ou sqlite3_bind_text64() para indicar que o valor está codificado em UTF-8 e termina em zero.
- Na função sqlite3_limit() foi adicionada a opção SQLITE_LIMIT_PARSER_DEPTH.
- Na função sqlite3_db_config() foi adicionada a opção SQLITE_DBCONFIG_FP_DIGITS. Também veja a seção 9b abaixo.
- Melhorias no planejador de consultas:
- Para EXCEPT, INTERSECT e UNION, o algoritmo de ordenação e mesclagem é sempre utilizado, pois geralmente é mais rápido do que o uso de tabelas hash.
- Melhorias no mecanismo de escolha da ordem de join ao realizar grandes junções múltiplas em um esquema estrela.
- Otimização aprimorada da conversão de EXISTS em JOIN, de modo que as condições JOIN inseridas não precisam obrigatoriamente estar nos ciclos internos, desde que todas as dependências dos ciclos de conversão de EXISTS em JOIN estejam nos ciclos externos.
- Otimização aprimorada omitindo join-no-op, de modo que possa ignorar uma cadeia de junções que não afetam o resultado.
- Otimização de consultas que utilizam GROUP BY e1 ORDER BY e2, onde e1 e e2 são idênticos, exceto pela ordem de classificação ASC/DESC, usando um único índice.
- Otimização do operador DISTINCT em tabelas virtuais em casos onde o conjunto de resultados da consulta não corresponde totalmente à condição ORDER BY.
- Em expansão de sessão novas interfaces foram adicionadas permitindo que o aplicativo adicione mudanças uma a uma ao objeto sqlite3_changegroup:
- Melhorias na conversão de números de ponto flutuante ↔ texto.
- O código foi completamente reescrito para melhorar o desempenho.
- Agora, por padrão, o arredondamento é feito para 17 dígitos significativos em vez de 15, como era em todas as versões anteriores. Esse valor pode ser alterado quando necessário usando a função sqlite3_db_config com a opção SQLITE_DBCONFIG_FP_DIGITS (veja o item 6g acima).
- Adicionada a possibilidade auto-reparo do índice para resolver o problema de índices de expressões obsoletos..
- No utilitário de console sqlite3_rsync foi adicionada a opção -p|—port.
- O suporte para Windows RT.
- JavaScript/WASM
- Foi adicionada a VFS opfs-wl, funcionalmente idêntica ao opfs, mas que utiliza Web Locks para bloqueios, permitindo uma distribuição mais justa dos bloqueios do que no protocolo opfs. O opfs-wl requer a função Atomics.waitAsync(), portanto, para seu funcionamento, são necessárias versões mais recentes dos navegadores do que para o opfs.
Fonte: linux.org.ru
