Comando DROP ROLE: restrição ao descarte da função primária atual (pendente)

Atenção

Essa mudança de comportamento está no pacote 2025_01.

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

Quando esse pacote de mudança de comportamento é habilitado, o comportamento do comando DROP ROLE muda da seguinte forma:

Antes da mudança:

Os usuários podem executar um comando DROP ROLE que descarta a função primária atual. A função primária atual é a função que está ativa no momento para uma sessão. Por exemplo, essa função pode ser definida com o comando USE ROLE, definida como parte de uma conexão de usuário ou definida como a função padrão de um usuário.

Após a mudança:

Os usuários não podem mais executar um comando DROP ROLE que descarta a função primária atual. Uma tentativa de descartar essa função retorna o seguinte erro:

SQL execution error: Cannot drop role <x> as it is the current primary role.

Motivos para essa mudança

Essa mudança está sendo feita porque o comportamento atual tem as seguintes consequências:

  • Os metadados de propriedade do objeto são deixados em um estado inconsistente quando a função primária atual é descartada.

  • As sessões que estavam usando a função primária descartada são interrompidas.

Preparação para essa mudança

Para se preparar para essa mudança, verifique todos os seus processos automatizados quanto ao uso do comando DROP ROLE e certifique-se de que esses comandos não tentem descartar a função primária atual. Verifique também seu histórico de consultas para ver se há alguma instância anterior desse comportamento.

Ref: 1843