Foi lançado o SQLite 3.46, 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 criado especificamente.
Principais mudanças:
- Agora é possível usar o separador "_" em números para uma apresentação mais clara de literais numéricos (por exemplo, 1_234_567).
- Adicionada a função SQL json_pretty() para gerar uma saída mais legível em formato JSON, formatada com blocos indentados.
- Expandida a funcionalidade da operação "PRAGMA optimize", que otimiza o banco de dados e todos os esquemas de dados para alcançar o melhor desempenho das consultas. Implementado um limite de duração para a análise do banco de dados, evitando longos tempos de processamento em grandes bancos. Adicionada uma nova máscara de bits "PRAGMA optimize(0x10000)" para verificar atualizações em todas as tabelas. Garantido a reanálise automática de tabelas sem entradas sqlite_stat1.
- Suporte adicionado para as substituições %G, %g, %U e %V na função SQL strftime().
- Na função SQL para manipulação de datas e horas, novos modificadores ceiling e floor foram adicionados para controlar o tratamento de datas ambíguas, que surgem em operações de deslocamento de datas por um certo número de meses ou anos. Implementado o ignore dos modificadores utc e localtime, se o SQLite souber que o tempo já está em representação UTC ou localtime.
- Otimizações foram feitas no planejador de consultas. Para expressões INSERT que contêm milhares de valores na seção VALUES, a otimização "VALUES-as-coroutine" é ativada por padrão, permitindo dobrar a velocidade de análise dessas expressões e reduzir pela metade o consumo de memória. Para consultas como "SELECT count(DISTINCT col) FROM ...", a aplicação de índices é permitida, mesmo que o tamanho dos registros no índice seja igual ou maior do que os registros na tabela. Melhorada a lógica para determinar situações em que constantes são fornecidas como argumentos em funções SQL. Implementada a otimização push-down para expressões WHERE contendo subconsultas não relacionadas.
- A lógica de tratamento do estouro da pilha foi alterada — ao detectar falta de memória para a pilha, o parser agora tenta alocar memória adicional do heap, em vez de gerar o erro "estouro da pilha do parser".
- No JSON, a especificação de caracteres de controle em literais de string JSON5 é permitida. A lógica dos operadores "->" e "->>" foi alterada, de modo que, quando o operando à direita contém apenas dígitos, esses operando agora são tratados como strings, seguindo a analogia com o PostgreSQL.
- É permitido especificar grandes literais hexadecimais no valor DEFAULT em colunas de tabelas.
Fonte: opennet.ru
