新 SQL 函数:GREATEST_IGNORE_NULLS 和 LEAST_IGNORE_NULLS 可能与命名类似的 UDFs 冲突

注意

此行为变更在 2024_03 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

Snowflake 引入了两个新的内置函数:

  • GREATEST_IGNORE_NULLS:返回表达式列表中最大的非 NULL 值。如果所有实参值为 NULLs,则结果为 NULL。

    GREATEST_IGNORE_NULLS 支持所有数据类型的实参,包括 VARIANT。

  • LEAST_IGNORE_NULLS:返回表达式列表中最小的非 NULL 值。如果所有实参值为 NULLs,则结果为 NULL。

    LEAST_IGNORE_NULLS 支持所有数据类型的实参,包括 VARIANT。

如果具有名为 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 的用户定义函数 (UDF),则调用函数会产生以下影响:

变更前:

调用名为 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 的 UDF 将解析到 UDF。

变更后:

调用名为 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 的 UDF 将解析为新的内置 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 函数。内置 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 函数的运行方式可能与 UDF 不同。

如果记录的新内置 GREATEST_IGNORE_NULLS 或 LEAST_IGNORE_NULLS 函数的语义与 UDF 的语义不匹配,则可以执行以下操作之一:

  • 重命名 UDF (使用 ALTER FUNCTION ...RENAME TO ...),并将对原始 UDF 名称的所有引用替换为新名称。

  • 指定包含 UDF 的数据库和架构名以 完全限定 对 UDF 的所有引用。例如:

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

参考:1354

语言: 中文