Pacote 2022_06

Este tópico descreve as seguintes mudanças de comportamento (se houver) do mês:

  • Recursos que foram descontinuados.

  • Pacote de mudanças que foram ativadas.

  • Outras mudanças não inclusas no pacote que foram implementadas.

Se tiver alguma dúvida sobre estas mudanças, entre em contato com o suporte Snowflake.

Para obter mais detalhes sobre os novos recursos, melhorias e correções introduzidos neste mês, consulte Setembro de 2022.

Importante

Salvo indicação em contrário, estas mudanças estão no pacote 2022_06, que foi habilitado por padrão na versão 6.32.

Neste tópico:

Mudanças de SQL — Geral

Grupos de réplicas: tipos de objetos limitados a bancos de dados e compartilhamentos para contas que não são Business Critical Edition

O recurso de replicação de conta oferece suporte à replicação de objetos de conta, incluindo usuários, funções, bancos de dados e compartilhamentos. Para a lista completa dos tipos de objetos suportados, consulte Objetos replicados. Grupos de replicação podem incluir qualquer um ou todos os tipos de objetos suportados.

O comportamento mudou da seguinte forma:

Anteriormente

Todos os tipos de objetos de replicação de conta suportados poderiam ser incluídos em um grupo de replicação.

Atualmente

O suporte para tipos de objetos que podem ser adicionados a um grupo de replicação para contas que não são Business Critical Edition (ou superior) é limitado a bancos de dados e compartilhamentos.

Consulte a tabela de suporte do recurso da replicação de conta para obter mais detalhes sobre o suporte do recurso por edição.

Armazenamento Fail-safe: correção de erros para casos de cantos que resultam em faturamento insuficiente

Devido a um erro interno do sistema, algumas tabelas permanentes não foram faturadas para armazenamento por bytes de Fail-safe. Especificamente, se uma mesa transitória foi criada como um clone de uma tabela permanente, e a tabela permanente foi posteriormente descartada, Snowflake não cobrou pelo armazenamento Fail-safe da tabela permanente.

O faturamento para Fail-safe mudou da seguinte forma:

Anteriormente

Algumas tabelas permanentes não foram faturadas para o armazenamento do Fail-safe.

Atualmente

Os clientes são cobrados pelo armazenamento Fail-safe para todas as tabelas permanentes.

Mudanças de SQL — Comandos e funções

Comandos CREATE DATABASE e CREATE SCHEMA: cláusula OR REPLACE resulta em referências pendentes para políticas

O comportamento dos comandos CREATE DATABASE e CREATE SCHEMA mudou da seguinte forma:

Anteriormente

Snowflake permitiu que os comandos CREATE OR REPLACE DATABASE e CREATE OR REPLACE SCHEMA fossem executados no banco de dados ou esquema contendo uma política de mascaramento ou política de acesso a linhas que protegem um objeto em um banco de dados ou esquema diferente. Por exemplo:

  • Uma política de mascaramento chamada db1.s1.p1 protege uma coluna chamada db2.s1.t1.c1.

  • Uma política de acesso a linhas chamada db1.s1.p2 protege uma tabela chamada db2.s1.t1.

O resultado foi uma referência pendente que fez com que todas as consultas na coluna ou objeto falhassem.

Observe que este comportamento também se aplicava a instruções CLONE como CREATE OR REPLACE SCHEMA S1 CLONE S2;.

Atualmente

O comando CREATE OR REPLACE DATABASE ou CREATE OR REPLACE SCHEMA falha se o resultado for uma referência pendente em um objeto protegido por política. O Snowflake retorna uma das seguintes mensagens de erro:

  • Para CREATE OR REPLACE DATABASE: Cannot drop database because: Policy '<db.schema.policy>' used by schema '<db.schema>' in another database

  • Para CREATE OR REPLACE SCHEMA: Cannot drop schema because: Policy '<db.schema.policy>' used by another schema '<db.schema>'

Se uma das duas mensagens de erro ocorrer, consulte a exibição POLICY_REFERENCES do Account Usage, use uma função para desativar a política de mascaramento ou de acesso a linhas e, em seguida, tente novamente a instrução CREATE OR REPLACE.

Por exemplo:

  1. Consultar a exibição:

    • Referências de política de esquema cruzado que precisam ser removidas antes da substituição:

      select * from snowflake.account_usage.policy_references
      where policy_db=<policy_db> and
      policy_schema=<policy_schema_to_replace> and ref_schema_name != <policy_schema>;
      
      Copy
    • Referências de política de banco de dados cruzado que precisam ser removidas antes da substituição:

      select * from snowflake.account_usage.policy_references
      where policy_db=<policy_db_to_replace>’ and ref_database_name != <policy_db>;
      
      Copy
  2. Remover as políticas:

    • Para políticas de mascaramento:

      alter table <table_name> modify column <col_name> unset masking policy;
      
      Copy
    • Para políticas de acesso a linhas:

      alter table <table_name> drop all row access policies;
      
      Copy
  3. Execute o comando CREATE OR REPLACE novamente.

Observe que, com operações CLONE, você deve armazenar os objetos da política em um banco de dados ou esquema separado antes de executar as instruções CLONE.

Funções INFER_SCHEMA: nova coluna ORDER_ID na saída

A saída da função INFER_SCHEMA agora inclui uma nova coluna ORDER_ID que indica a ordem das colunas nos arquivos preparados.

Atualmente, quando você cria uma tabela com as definições das colunas derivadas de um conjunto de arquivos preparados (usando CREATE TABLE … USING TEMPLATE), a ordem das colunas na tabela é aleatória. Embora a ordem de colunas da tabela não seja importante para o Snowflake, isto pode causar confusão quando você compara a ordem da coluna de arquivo com a ordem da coluna da tabela. A nova coluna ORDER_ID na saída INFER_SCHEMA pode ajudar você a garantir que as tabelas criadas com o esquema detectado tenham a mesma ordem de coluna.

Você pode recuperar o esquema de qualquer arquivo usando INFER_SCHEMA, como o exemplo a seguir demonstra. A saída inclui uma nova coluna ORDER_ID e é ordenada automaticamente por ORDER_ID para o cenário de esquema único:

SELECT *
  FROM TABLE(
  INFER_SCHEMA(
  LOCATION=>'@***_****_STAGE/' , FILE_FORMAT=>'FFPARQUET'
  )
  );
Copy

Além disso, você pode criar uma tabela usando o esquema detectado a partir de arquivos preparados e ordenar as colunas por ORDER_ID, como o exemplo a seguir demonstra:

CREATE OR REPLACE TABLE BIG_TABLE
  USING TEMPLATE (
  SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*))
  WITHIN GROUP (ORDER BY ORDER_ID) // NEW
  FROM TABLE( INFER_SCHEMA(LOCATION=>'@***_****_STAGE/', FILE_FORMAT=>'FFPARQUET')
  )
  );

DESC TABLE BIG_TABLE;
Copy

Observe que a ordenação das colunas por ORDER_ID só se aplica se todos os arquivos preparados compartilharem um único esquema. Se o conjunto de arquivos de dados preparados incluir vários esquemas com nomes de colunas compartilhadas, a ordem representada na coluna ORDER_ID pode não corresponder a nenhum arquivo único.

Mudanças de SQL — Exibições de uso e exibições Information Schema/funções de tabela

Exibição FUNCTIONS (Account Usage): novas colunas na exibição

A saída da exibição FUNCTIONS no Account Usage agora inclui as seguintes colunas novas:

Nome da coluna

Tipo de dados

Descrição

PACKAGES

STRING

Especifica os pacotes solicitados pela função.

RUNTIME_VERSION

STRING

Especifica a versão do runtime da função. NULL se a função for SQL ou Javascript.

INSTALLED_PACKAGES

STRING

Lista todos os pacotes instalados pela função. Saída apenas para as funções Python.