Skip to content

Commit 337adef

Browse files
author
Zac Davies
committed
Simplifying backends + borrowing translation from sparklyr + fixing behaviour
1 parent f60d487 commit 337adef

9 files changed

Lines changed: 460 additions & 292 deletions

NAMESPACE

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ S3method(dbplyr_edition,DatabricksConnection)
44
S3method(sql_query_fields,DatabricksConnection)
55
S3method(sql_query_save,DatabricksConnection)
66
S3method(sql_table_analyze,DatabricksConnection)
7+
S3method(sql_translation,DatabricksConnection)
78
export(DatabricksSQL)
89
export(access_control_req_group)
910
export(access_control_req_user)
@@ -276,27 +277,33 @@ exportMethods(show)
276277
import(DBI)
277278
import(cli)
278279
import(httr2)
279-
importFrom(DBI,SQL)
280280
importFrom(R6,R6Class)
281281
importFrom(cli,cli_abort)
282282
importFrom(dbplyr,base_agg)
283283
importFrom(dbplyr,base_scalar)
284284
importFrom(dbplyr,base_win)
285+
importFrom(dbplyr,build_sql)
285286
importFrom(dbplyr,dbplyr_edition)
287+
importFrom(dbplyr,simulate_spark_sql)
286288
importFrom(dbplyr,sql)
287289
importFrom(dbplyr,sql_prefix)
288290
importFrom(dbplyr,sql_query_fields)
289291
importFrom(dbplyr,sql_query_save)
290292
importFrom(dbplyr,sql_quote)
291293
importFrom(dbplyr,sql_table_analyze)
294+
importFrom(dbplyr,sql_translation)
292295
importFrom(dbplyr,sql_translator)
293296
importFrom(dbplyr,sql_variant)
294297
importFrom(dbplyr,translate_sql)
298+
importFrom(dbplyr,win_current_group)
299+
importFrom(dbplyr,win_current_order)
300+
importFrom(dbplyr,win_over)
295301
importFrom(glue,glue)
296302
importFrom(glue,glue_sql)
297303
importFrom(methods,new)
298304
importFrom(methods,setClass)
299305
importFrom(methods,setMethod)
306+
importFrom(rlang,"%||%")
300307
importFrom(rlang,.data)
301308
importFrom(stats,setNames)
302309
importFrom(utils,object.size)

R/databricks-dbi.R

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,3 +621,52 @@ setMethod("dbDataType", "DatabricksConnection", function(dbObj, obj, ...) {
621621
}
622622
)
623623
})
624+
625+
# Identifier Quoting Methods ----------------------------------------------------
626+
627+
#' Quote identifiers for Databricks SQL
628+
#' @param conn A DatabricksConnection object
629+
#' @param x Character vector of identifiers to quote
630+
#' @param ... Additional arguments (ignored)
631+
#' @return SQL object with quoted identifiers
632+
#' @export
633+
setMethod(
634+
"dbQuoteIdentifier",
635+
signature("DatabricksConnection", "character"),
636+
function(conn, x, ...) {
637+
# Simple identifiers - wrap in backticks
638+
quoted <- paste0("`", x, "`")
639+
DBI::SQL(quoted)
640+
}
641+
)
642+
643+
#' Quote SQL objects (passthrough)
644+
#' @param conn A DatabricksConnection object
645+
#' @param x SQL object (already quoted)
646+
#' @param ... Additional arguments (ignored)
647+
#' @return The SQL object unchanged
648+
#' @export
649+
setMethod(
650+
"dbQuoteIdentifier",
651+
signature("DatabricksConnection", "SQL"),
652+
function(conn, x, ...) {
653+
# SQL objects are already quoted
654+
x
655+
}
656+
)
657+
658+
#' Quote complex identifiers (schema.table)
659+
#' @param conn A DatabricksConnection object
660+
#' @param x Id object with catalog/schema/table components
661+
#' @param ... Additional arguments (ignored)
662+
#' @return SQL object with quoted identifier components
663+
#' @export
664+
setMethod(
665+
"dbQuoteIdentifier",
666+
signature("DatabricksConnection", "Id"),
667+
function(conn, x, ...) {
668+
# Handle schema.table identifiers
669+
names <- purrr::map_chr(x@name, ~ paste0("`", .x, "`"))
670+
DBI::SQL(paste(names, collapse = "."))
671+
}
672+
)

0 commit comments

Comments
 (0)