diff --git a/sqlglot/parsers/databricks.py b/sqlglot/parsers/databricks.py index c7a583539f..6f2470af5c 100644 --- a/sqlglot/parsers/databricks.py +++ b/sqlglot/parsers/databricks.py @@ -14,6 +14,7 @@ class DatabricksParser(SparkParser): FUNCTIONS = { **SparkParser.FUNCTIONS, + "IFF": exp.If.from_arg_list, "GETDATE": exp.CurrentTimestamp.from_arg_list, "DATEADD": build_date_delta(exp.DateAdd), "DATE_ADD": build_date_delta(exp.DateAdd), diff --git a/tests/dialects/test_databricks.py b/tests/dialects/test_databricks.py index 4859d70b8f..390fa26137 100644 --- a/tests/dialects/test_databricks.py +++ b/tests/dialects/test_databricks.py @@ -491,6 +491,17 @@ def test_overlay(self): "SELECT OVERLAY('Spark SQL' PLACING 'ANSI ' FROM 7 FOR 0)", ) + def test_iff(self): + # IFF is a synonym for IF in Databricks; it normalizes to IF on output + self.validate_all( + "SELECT IF(x > 0, 'positive', 'non-positive')", + read={"databricks": "SELECT IFF(x > 0, 'positive', 'non-positive')"}, + write={ + "databricks": "SELECT IF(x > 0, 'positive', 'non-positive')", + "snowflake": "SELECT IFF(x > 0, 'positive', 'non-positive')", + }, + ) + def test_declare(self): self.validate_identity("DECLARE VAR x INT", "DECLARE x INT") self.validate_identity("DECLARE x INT")