Neue SQL-Funktionen: GREATEST_IGNORE_NULLS und LEAST_IGNORE_NULLS können mit gleich benannten UDFs kollidieren

Achtung

Diese Verhaltensänderung ist in Bundle 2024_03 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Snowflake führt zwei neue integrierte Funktionen ein:

  • GREATEST_IGNORE_NULLS: Gibt den größten Nicht-NULL-Wert aus einer Liste von Ausdrücken zurück. Wenn alle Argumente den Wert NULL haben, ist das Ergebnis NULL.

    GREATEST_IGNORE_NULLS unterstützt Argumente aller Datentypen, einschließlich VARIANT.

  • LEAST_IGNORE_NULLS: Gibt den kleinsten Nicht-NULL-Wert aus einer Liste von Ausdrücken zurück. Wenn alle Argumente den Wert NULL haben, ist das Ergebnis NULL.

    LEAST_IGNORE_NULLS unterstützt Argumente aller Datentypen, einschließlich VARIANT.

Wenn Sie eine benutzerdefinierte Funktion (UDF) mit dem Namen GREATEST_IGNORE_NULLS oder LEAST_IGNORE_NULLS haben, haben Aufrufe der Funktion die folgende Auswirkungen:

Vor der Änderung:

Ein Aufruf Ihrer UDF mit dem Namen GREATEST_IGNORE_NULLS oder LEAST_IGNORE_NULLS wird zu Ihrer UDF aufgelöst.

Nach der Änderung:

Ein Aufruf Ihrer UDF mit dem Namen GREATEST_IGNORE_NULLS oder LEAST_IGNORE_NULLS führt zu der neuen integrierten Funktion GREATEST_IGNORE_NULLS bzw. LEAST_IGNORE_NULLS. Die integrierte Funktion GREATEST_IGNORE_NULLS bzw. LEAST_IGNORE_NULLS funktioniert möglicherweise anders als Ihre UDF.

Wenn die dokumentierte Semantik der neuen integrierten GREATEST_IGNORE_NULLS- bzw. LEAST_IGNORE_NULLS-Funktion nicht mit der Semantik Ihrer UDF übereinstimmt, haben Sie folgende Möglichkeiten:

  • Benennen Sie Ihre UDF um (mit ALTER FUNCTION … RENAME TO …), und ersetzen Sie alle Verweise auf den ursprünglichen UDF-Namen durch den neuen Namen.

  • Verwenden Sie überall vollqualifizierte Referenzen auf Ihre UDF, indem Sie die Namen der Datenbank und des Schemas angeben, die die UDF enthalten. Beispiel:

    SELECT my_database.my_schema.greatest_ignore_nulls(...);
    
    SELECT my_database.my_schema.least_ignore_nulls(...);
    
    Copy

Ref.: 1354