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.

O principal mudanças:

  • 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);
  • Adicionado PRAGMA hard_heap_limit e função sqlite3_hard_heap_limit64() para controlar o tamanho máximo de heap;
  • 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()).

Fonte: opennet.ru

Adicionar um comentário