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(...);
Ref.: 1354