diff --git a/NEWS.md b/NEWS.md index 39bdf7f3..6169b517 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,8 @@ Changes: 2. The `render()`, `translate()`, and `translateSingleStatement()` functions now preserve attributes of the SQL object. +3. Adding support for `IIF` for Synapse. + SqlRender 1.15.2 ================ diff --git a/inst/csv/replacementPatterns.csv b/inst/csv/replacementPatterns.csv index 5c974a6a..c102089b 100644 --- a/inst/csv/replacementPatterns.csv +++ b/inst/csv/replacementPatterns.csv @@ -1341,6 +1341,7 @@ synapse,CREATE INDEX @index_name ON #@table (@variable);,-- synapse does not sup synapse,"CONSTRAINT @a DEFAULT GETDATE()","" synapse,"DEFAULT GETDATE()","" synapse,CREATE INDEX @index_name ON @table (@variable) WHERE @b;,CREATE INDEX @index_name ON @table (@variable); +synapse,"IIF(@condition, @whentrue, @whenfalse)","CASE WHEN @condition THEN @whentrue ELSE @whenfalse END" sql server,.@([^\s]+)p2...@([0-9]+)p3,x@p2...@p3 sql server,.@([^\s]+)p2...@([0-9]+)p3,x@p2...@p3 sql server,...@([0-9]+|y)a,xxx@a diff --git a/tests/testthat/test-translate-synapse.R b/tests/testthat/test-translate-synapse.R index 7e3df2e3..8a2e989b 100644 --- a/tests/testthat/test-translate-synapse.R +++ b/tests/testthat/test-translate-synapse.R @@ -38,3 +38,8 @@ test_that("translate sql server -> synapse CREATE INDEX with WHERE", { sql <- translate("CREATE INDEX idx_a ON a(c1, c2) WHERE c3 <> '';", targetDialect = "synapse") expect_equal_ignore_spaces(sql, "CREATE INDEX idx_a ON a(c1, c2);") }) + +test_that("translate sql server -> synapse IIF", { + sql <- translate("SELECT IIF(a>b, 1, b) AS max_val FROM table;", targetDialect = "synapse") + expect_equal_ignore_spaces(sql, "SELECT CASE WHEN a>b THEN 1 ELSE b END AS max_val FROM table ;") +})