Neue Funktionen: ARRAY_SORT, ARRAY_MIN und ARRAY_MAX können mit ähnlich benannten UDFs kollidieren¶
Achtung
Diese Verhaltensänderung ist in Bundle 2023_05 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Mit dem aktuellen Release führt Snowflake neue integrierte Funktionen mit den folgenden Namen und Signaturen ein:
ARRAY_SORT gibt die Elemente des Eingabe-ARRAY in sortierter Reihenfolge zurück. Diese Funktion hat die folgenden Signaturen:
ARRAY_SORT(input_array)
Sortiert die Elemente in aufsteigender Reihenfolge, wobei sich NULL-Werte am Ende des Arrays befinden.
ARRAY_SORT(input_array, sort_ascending)
Sortiert die Elemente in aufsteigender Reihenfolge, wenn
sort_ascending
gleich TRUE ist, oder in absteigender Reihenfolge, wennsort_ascending
gleich FALSE ist.NULL-Werte werden am Ende einsortiert, wenn
sort_ascending
gleich TRUE ist, oder am Anfang, wennsort_ascending
gleich FALSE ist.ARRAY_SORT(input_array, sort_ascending, nulls_first)
Sortiert die Elemente in aufsteigender Reihenfolge, wenn
sort_ascending
gleich TRUE ist, oder in absteigender Reihenfolge, wennsort_ascending
gleich FALSE ist.NULL-Werte werden am Anfang einsortiert, wenn
nulls_first
gleich TRUE ist, oder am Ende, wennnulls_first
gleich FALSE ist.
Es ist nicht garantiert, dass diese Funktion eine stabile Sortierung liefert, wenn Sie Werte zweier unterschiedlicher numerischer Typen oder Zeitstempeltypen (oder Objekte, die diese Typen enthalten) vergleichen.
ARRAY_MIN gibt das minimal definierte Element im Eingabe-Array zurück
ARRAY_MAX gibt das maximal definierte Element im Eingabe-Array zurück
Wenn Sie UDFs mit den Namen ARRAY_SORT, ARRAY_MIN oder ARRAY_MAX mit denselben Signaturen haben, hat diese Verhaltensänderung die folgende Auswirkung:
- Bisher:
Das Aufrufen von ARRAY_SORT, ARRAY_MIN oder ARRAY_MAX führt zu Ihren zugehörigen UDFs.
- Jetzt:
Das Aufrufen von ARRAY_SORT, ARRAY_MIN oder ARRAY_MAX führt zu den neuen integrierten Funktionen.
Die integrierten Funktionen funktionieren möglicherweise anders als Ihre UDFs.
Wenn die dokumentierte Semantik der neuen integrierten Funktionen nicht mit der Semantik Ihrer UDFs übereinstimmt, haben Sie zwei Möglichkeiten:
Benennen Sie Ihr UDFs um (mit ALTER FUNCTION … RENAME TO …), und ersetzen Sie alle Referenzen auf den ursprünglichen UDF-Namen durch den neuen Namen.
Verwenden Sie überall vollqualifizierte Referenzen auf Ihre UDFs, indem Sie die Namen der Datenbank und des Schemas angeben, die die UDFs enthalten. Beispiel:
SELECT my_database.my_schema.array_sort(...);
Ref.: 1135