From b7339cebfd6d1c743585ff1b139db6ac1561339e Mon Sep 17 00:00:00 2001 From: Admin_mschuemi Date: Wed, 6 Sep 2023 09:58:41 -0400 Subject: [PATCH] Translating double quotes to backticks for BigQuery. Part of #341 --- DESCRIPTION | 1 - NEWS.md | 2 ++ inst/csv/replacementPatterns.csv | 1 + tests/testthat/test-replacement-patterns-file-format.R | 4 ++-- tests/testthat/test-translate-bigquery.R | 7 ++++++- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b0bebae8..88c5a017 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -25,7 +25,6 @@ Suggests: testthat, knitr, rmarkdown, - stringr, shiny, shinydashboard RoxygenNote: 7.2.3 diff --git a/NEWS.md b/NEWS.md index 6169b517..decb8db7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,8 @@ Changes: 3. Adding support for `IIF` for Synapse. +4. Translating double quotes to backticks for BigQuery. + SqlRender 1.15.2 ================ diff --git a/inst/csv/replacementPatterns.csv b/inst/csv/replacementPatterns.csv index c102089b..1f41bc78 100644 --- a/inst/csv/replacementPatterns.csv +++ b/inst/csv/replacementPatterns.csv @@ -796,6 +796,7 @@ bigquery,NEWID(),GENERATE_UUID() bigquery,"AS @(q[0-9]+)a","AS val_@a" bigquery,"(@(q[0-9]+)a","(val_@a" bigquery,"CHARINDEX(@a,@b)","STRPOS(@b,@a)" +bigquery,"\"","`" sqlite,...@([0-9]+|y)a,xxx@a sqlite,"AS drvd(@a)","AS drvd(@a)" sqlite,"@a, @b)","@a, @b)" diff --git a/tests/testthat/test-replacement-patterns-file-format.R b/tests/testthat/test-replacement-patterns-file-format.R index b0fcad95..7d0a0c35 100644 --- a/tests/testthat/test-replacement-patterns-file-format.R +++ b/tests/testthat/test-replacement-patterns-file-format.R @@ -1,8 +1,8 @@ test_that("replacementPatterns.csv has valid format", { lines <- readLines(system.file("csv", "replacementPatterns.csv", package = "SqlRender")) for (line in lines) { - line_trim <- stringr::str_replace_all(line, '".[^"]+"', "") - comma_cnt <- stringr::str_count(line_trim, ",") + lineTrim <- gsub('"[^"]*"', "", gsub('\\\\"', "", line)) + comma_cnt <- nchar(lineTrim) - nchar(gsub(",", "", lineTrim)) expect_equal(comma_cnt, 2, label = paste0("comma counts in string: ", line)) } }) diff --git a/tests/testthat/test-translate-bigquery.R b/tests/testthat/test-translate-bigquery.R index b33eb59a..c4904ea9 100644 --- a/tests/testthat/test-translate-bigquery.R +++ b/tests/testthat/test-translate-bigquery.R @@ -37,7 +37,7 @@ test_that("translate sql server -> bigquery lowercase all but strings and variab ) expect_equal_ignore_spaces( sql, - "select x.y, 'Mixed Case String' from \"MixedCaseTableName.T\" where x.z=@camelCaseVar group by x.y" + "select x.y, 'Mixed Case String' from `MixedCaseTableName.T` where x.z=@camelCaseVar group by x.y" ) }) @@ -544,3 +544,8 @@ test_that("translate sql server -> bigquery temp dplyr ... pattern", { sql <- translate("SELECT * FROM table...1;", targetDialect = "bigquery") expect_equal_ignore_spaces(sql, "select * from tablexxx1;") }) + +test_that("translate sql server -> bigquery quotes", { + sql <- translate("SELECT \"a\" from t;", targetDialect = "bigquery") + expect_equal_ignore_spaces(sql, "select `a` from t;") +})