新函数:ARRAY_SORT、ARRAY_MIN 和 ARRAY_MAX 可能与命名类似的函数 UDFs 冲突¶
在当前版本中,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(...);
参考:1135