Funções CURRENT_DATABASE e CURRENT_SCHEMA: garantia de resultados determinísticos com políticas, exibições e UDFs

Atenção

Essa mudança de comportamento está no pacote 2023_08.

Para saber o status atual do pacote, consulte Histórico do pacote.

O comportamento das funções CURRENT_DATABASE e CURRENT_SCHEMA é o seguinte:

Antes da mudança

Os valores de retorno ao chamar a função CURRENT_DATABASE ou CURRENT_SCHEMA não são determinísticos:

Quando você chama a função dentro de uma política de acesso a dados, como uma política de mascaramento ou de acesso a linhas, as funções retornam um de dois valores:

  • O banco de dados ou esquema que contém a política.

  • O banco de dados ou esquema em uso na sessão.

Quando você chama a função na definição de uma exibição ou de UDF e a palavra-chave SELECT não precede a função, a função retorna um de dois valores:

  • O banco de dados ou esquema em uso na sessão.

  • O banco de dados ou esquema que contém a UDF ou a exibição.

Após a mudança

Os valores de retorno ao chamar a função CURRENT_DATABASE ou CURRENT_SCHEMA são determinísticos:

  • Quando você chama a função dentro de uma política de acesso a dados, como uma política de mascaramento ou de acesso a linhas, as funções retornam o banco de dados ou o esquema que contém a tabela ou exibição protegida.

  • Quando você chama a função na definição de uma exibição ou UDF, a função retorna o banco de dados ou esquema que contém a UDF ou a exibição.

Para minimizar o impacto dessas alterações, faça o seguinte:

  • Se sua definição de visualização ou UDF usar qualquer uma dessas funções e a palavra-chave SELECT não preceder a função, verifique novamente para garantir que a definição da UDF esteja correta para como a função deve ser usada.

  • Se a sua política chamar qualquer uma dessas funções, verifique novamente para garantir que o corpo da política tenha sido gravado para o banco de dados ou esquema que contém a tabela protegida e não para o banco de dados ou esquema em uso para a sessão.

Ref: 1337