Lançamento do SGBD SQLite 3.31 com suporte para colunas geradas
publicado liberar SQLite 3.31.0, um SGBD leve projetado como uma biblioteca de plug-ins. 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 para desenvolvedores SQLite é fornecido por um consórcio especialmente criado, que inclui empresas como Adobe, Oracle, Mozilla, Bentley e Bloomberg.
Suporte adicionado colunas geradas (colunas calculadas), que permitem definir uma coluna ao criar uma tabela cujo valor é calculado automaticamente com base no conteúdo de outra coluna. As colunas geradas podem ser virtuais (geradas dinamicamente a cada acesso) ou armazenadas no banco de dados (salvas cada vez que as colunas relacionadas são atualizadas). O conteúdo das colunas geradas está disponível apenas em modo leitura (as alterações são feitas apenas através da modificação do valor em outra coluna envolvida no cálculo). Por exemplo:
CRIAR TABELA t1(
uma CHAVE PRIMÁRIA INTEIRA,
b INT,
c TEXTO,
d INT GERADO SEMPRE COMO (a*abs(b)) VIRTUAL,
e TEXTO GERADO SEMPRE COMO (substr(c,b,b+1)) ARMAZENADO
);
Adicionado PRAGMA esquema_confiável, contexto SQLITE_DBCONFIG_TRUSTED_SCHEMA e a opção de montagem “-DSQLITE_TRUSTED_SCHEMA”, que permite controlar a inclusão de proteção contra ataques através da modificação do esquema de dados no banco de dados. A proteção ativa restringe o uso de funções SQL (não marcadas como SQLITE_INNOCUOUS) em gatilhos, visualizações, instruções CHECK e DEFAULT, índices e colunas geradas. O uso de tabelas virtuais em gatilhos e visualizações também está desabilitado, a menos que a tabela virtual seja declarada explicitamente com o sinalizador SQLITE_VTAB_INNOCUOUS.
Implementada a capacidade de atribuir propriedades a funções SQL definidas em aplicativos SQLITE_INNOCUOUS (funções inofensivas que não dependem de parâmetros externos e não podem ser usadas para realizar ações maliciosas) e SQLITE_DIRECTONLY (somente chamada direta em consultas SQL, sem possibilidade de utilização em triggers, views e diagramas de estrutura de dados);
Módulo adicionado uuid com implementação de funções para processamento de UUID (RFC-4122);
Na PRAGMA lista_funções adição de saída de tipo, propriedades e número de argumentos de cada função;
Para tabela virtual DBSTAT adicionado modo de agregação de dados;
sqlite3_open_v2() implementa a opção SQLITE_OPEN_NOFOLLOW, que permite desabilitar a abertura de links simbólicos;
Para argumento PATH, passado para funções JSON, adicionou suporte para notação de array “#-N”;
No sistema de distribuição de memória olhe para o lado foi implementado suporte para dois pools de memória separados, cada um dos quais pode ser usado para alocar blocos de tamanhos diferentes (a separação permite expandir o uso do sistema lookaside, enquanto reduz o tamanho do buffer alocado para cada conexão de 120 para 48 KB);
O suporte PRAGMA foi descontinuado formato_de_arquivo_legado, que era incompatível com VACUUM, colunas geradas e índices descendentes (o suporte ao formato legado pode ser retornado por meio do sinalizador SQLITE_DBCONFIG_LEGACY_FILE_FORMAT em sqlite3_db_config()).