Novas funções SQL: GREATEST_IGNORE_NULLS e LEAST_IGNORE_NULLS podem entrar em conflito com UDFs com nomes semelhantes

Atenção

Essa mudança de comportamento está no pacote 2024_03.

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

A Snowflake está introduzindo duas novas funções internas:

  • GREATEST_IGNORE_NULLS: retorna o maior valor diferente de NULL de uma lista de expressões. Se todos os valores dos argumentos forem NULLs, o resultado será NULL.

    GREATEST_IGNORE_NULLS oferece suporte a argumentos de todos os tipos de dados, incluindo VARIANT.

  • LEAST_IGNORE_NULLS: retorna o menor valor diferente de NULL de uma lista de expressões. Se todos os valores dos argumentos forem NULLs, o resultado será NULL.

    LEAST_IGNORE_NULLS oferece suporte a argumentos de todos os tipos de dados, incluindo VARIANT.

Se você tiver uma função definida pelo usuário (UDF) chamada LEAST_IGNORE_NULLS ou GREATEST_IGNORE_NULLS, as chamadas para sua função terão o seguinte efeito:

Antes da mudança:

Uma chamada para sua UDF chamada GREATEST_IGNORE_NULLS ou LEAST_IGNORE_NULLS é resolvida para sua UDF.

Após a mudança:

Uma chamada para sua UDF chamada GREATEST_IGNORE_NULLS ou LEAST_IGNORE_NULLS é resolvida para a nova função interna GREATEST_IGNORE_NULLS ou LEAST_IGNORE_NULLS. A função interna GREATEST_IGNORE_NULLS ou LEAST_IGNORE_NULLS pode funcionar de maneira diferente da sua UDF.

Se a semântica documentada da nova função interna GREATEST_IGNORE_NULLS ou LEAST_IGNORE_NULLS não corresponder à semântica de sua UDF, você poderá:

  • Renomear sua UDF (usando ALTER FUNCTION … RENAME TO …) e substituir todas as referências ao nome da UDF original pelo novo nome.

  • Qualificar totalmente todas as referências à sua UDF especificando os nomes do banco de dados e do esquema que contém a UDF. Por exemplo:

    SELECT my_database.my_schema.greatest_ignore_nulls(...);
    
    SELECT my_database.my_schema.least_ignore_nulls(...);
    
    Copy

Ref: 1354