新函数:ARRAY_SORT、ARRAY_MIN 和 ARRAY_MAX 可能与命名类似的函数 UDFs 冲突

注意

此行为变更在 2023_05 捆绑包中。

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

在当前版本中,Snowflake 引入了具有以下名称和签名的新内置函数:

  • ARRAY_SORT 按排序顺序返回输入 ARRAY 的元素。此函数具有以下签名:

    • ARRAY_SORT(input_array)

      按升序对元素进行排序,并将 NULLs 放置在数组的末尾。

    • ARRAY_SORT(input_array, sort_ascending)

      如果 sort_ascending 为 TRUE,则按升序对元素进行排序,如果 sort_ascending 为 FALSE,则按降序对元素进行排序。

      如果 sort_ascending 为 TRUE,则将 NULLs 排在最后,如果 sort_ascending 为 FALSE,则将其排在第一位。

    • ARRAY_SORT(input_array, sort_ascending, nulls_first)

      如果 sort_ascending 为 TRUE,则按升序对元素进行排序,如果 sort_ascending 为 FALSE,则按降序对元素进行排序。

      如果 nulls_first 为 TRUE,则 NULLs 排在第一位,如果 nulls_first 为 FALSE,则将其排在最后。

    在比较两种不同的数值或时间戳类型(或包含这些类型的对象)的值时,此函数不能保证提供稳定的排序。

  • ARRAY_MIN 返回输入数组中定义的最小元素

  • ARRAY_MAX 返回输入数组中定义的最大元素

如果名为 ARRAY_SORT、ARRAY_MIN 或 ARRAY_MAX 的 UDFs 具有相同的签名,则此行为变更将产生以下效果:

之前:

调用 ARRAY_SORT、ARRAY_MIN 或 ARRAY_MAX 以解析 UDFs。

现在:

调用 ARRAY_SORT、ARRAY_MIN 或 ARRAY_MAX 将解析为新的内置函数。

内置函数的工作方式可能与 UDFs 不同。

如果新内置函数的记录语义与 UDFs 的语义不匹配,您可以执行以下任一操作:

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

  • 指定包含 UDFs 的数据库和架构名以:doc:完全限定 </sql-reference/name-resolution> 对 UDFs 的所有引用。例如:

    SELECT my_database.my_schema.array_sort(...);
    
    Copy

参考:1135

语言: 中文