Nouvelles fonctions : ARRAY_SORT, ARRAY_MIN et ARRAY_MAX peuvent entrer en conflit avec des UDFs nommées de la même manière¶
Attention
Ce changement de comportement est présent dans le bundle 2023_05.
Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.
Dans la version actuelle, Snowflake introduit de nouvelles fonctions intégrées avec les noms suivants et les signatures suivants :
ARRAY_SORT renvoie les éléments du tableau ARRAY d’entrée dans l’ordre trié. Cette fonction a les signatures suivantes :
ARRAY_SORT(input_array)
Trie les éléments par ordre croissant, les NULLs étant placés à la fin du tableau.
ARRAY_SORT(input_array, sort_ascending)
Trie les éléments dans l’ordre croissant si
sort_ascending
est TRUE ou dans l’ordre décroissant sisort_ascending
est FALSE.Les NULLs sont triés en dernier si
sort_ascending
est TRUE ou en premier sisort_ascending
est FALSE.ARRAY_SORT(input_array, sort_ascending, nulls_first)
Trie les éléments dans l’ordre croissant si
sort_ascending
est TRUE ou dans l’ordre décroissant sisort_ascending
est FALSE.Les NULLs sont triés en premier si
nulls_first
est TRUE ou en dernier sinulls_first
est FALSE.
Il n’est pas garanti que cette fonction fournisse un tri stable lors de la comparaison de valeurs de deux types numériques ou d’horodatage différents (ou d’objets contenant ces types).
ARRAY_MIN renvoie l’élément défini minimum dans le tableau d’entrée
ARRAY_MAX renvoie l’élément défini maximal dans le tableau d’entrée
Si vous avez des UDFs nommées ARRAY_SORT, ARRAY_MIN ou ARRAY_MAX avec les mêmes signatures, ce changement de comportement a l’effet suivant :
- Précédemment:
Les appels à ARRAY_SORT, ARRAY_MIN ou ARRAY_MAX sont résolus par vos UDFs.
- Actuellement:
Les appels à ARRAY_SORT, ARRAY_MIN ou ARRAY_MAX seront résolus par les nouvelles fonctions intégrées.
Les fonctions intégrées peuvent fonctionner différemment de vos UDFs.
Si la sémantique documentée des nouvelles fonctions intégrées ne correspond pas à la sémantique de vos UDFs, vous pouvez soit :
Renommer vos UDFs (en utilisant ALTER FUNCTION … RENAME TO …) et remplacer toutes les références au nom de l’UDF d’origine par le nouveau nom.
Qualifier complètement toutes les références à vos UDFs en spécifiant les noms de la base de données et du schéma contenant les UDFs. Par exemple :
SELECT my_database.my_schema.array_sort(...);
Réf : 1135