From 001c4e652586132eb7274b36fc83402b65b01e36 Mon Sep 17 00:00:00 2001 From: Hadley Wickham Date: Mon, 8 Dec 2025 17:17:52 -0600 Subject: [PATCH] Drop `base_symbols` * `NULL` doesn't do anything * `*` errors with "cannot translate a primitive function to SQL" * `pi` mismatches to columns in `select()`, and in `mutate()` it's already inlined Fixes #1531 --- NEWS.md | 1 + R/backend-.R | 5 ----- R/translate-sql.R | 5 +---- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/NEWS.md b/NEWS.md index 49422eea1..3756920ba 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ # dbplyr (development version) * Redshift: fixed syntax error in `date_build()` translation (#1512). +* dbplyr now longer attempts to translate `pi` to `PI()`. This caused problems if you had a column called `pi` (#1531). * Ensure `str_like()` and `str_ilike()` have consistent behaviour on SQL Server (@edward-burn, #1669). * SQL Server: `if`/`ifelse()`, and `if_else()` now use `CASE WHEN` instead of `IIF`. This ensures the handling of `NULL`s matches the R's `NA` handling rules (#1569). * `if_else()` uses simpler translation for `missing` (#1573). diff --git a/R/backend-.R b/R/backend-.R index 63724550d..22f6ae63f 100644 --- a/R/backend-.R +++ b/R/backend-.R @@ -360,11 +360,6 @@ base_scalar <- sql_translator( str_wrap = sql_not_supported("str_wrap") ) -base_symbols <- sql_translator( - pi = sql("PI()"), - `*` = sql("*"), - `NULL` = sql("NULL") -) sql_exp <- function(a, x) { a <- as.integer(a) if (identical(a, 1L)) { diff --git a/R/translate-sql.R b/R/translate-sql.R index e9ea8f0eb..318c869db 100644 --- a/R/translate-sql.R +++ b/R/translate-sql.R @@ -195,10 +195,7 @@ sql_data_mask <- function( idents <- lapply(names, ident) name_env <- ceply(idents, escape, con = con, parent = special_calls2) - # Known sql expressions - symbol_env <- env_clone(base_symbols, parent = name_env) - - new_data_mask(symbol_env, top_env) + new_data_mask(name_env, top_env) } is_infix_base <- function(x) {