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, wenn sort_ascending gleich FALSE ist.

      NULL-Werte werden am Ende einsortiert, wenn sort_ascending gleich TRUE ist, oder am Anfang, wenn sort_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, wenn sort_ascending gleich FALSE ist.

      NULL-Werte werden am Anfang einsortiert, wenn nulls_first gleich TRUE ist, oder am Ende, wenn nulls_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(...);
    
    Copy

Ref.: 1135