Skip to content

Commit

Permalink
Merge pull request #265 from r-dbi/f-dbi-arrow
Browse files Browse the repository at this point in the history
  • Loading branch information
krlmlr committed Oct 13, 2022
2 parents a3eb317 + 1248fa0 commit 89b7e0d
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 16 deletions.
2 changes: 2 additions & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ RoxygenNote: 7.2.1
Collate:
'DBItest.R'
'context.R'
'dbi.R'
'expectations.R'
'generics.R'
'import-dbi.R'
'import-testthat.R'
'run.R'
Expand Down
48 changes: 48 additions & 0 deletions R/dbi.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
fetch_dbi_generics <- function() {
dbi <- asNamespace("DBI")

dbi_generics <- grep("^[.]__T__db", getNamespaceExports(dbi), value = TRUE)
clean_dbi_generics <- gsub("^[.]__T__(.*):DBI$", "\\1", dbi_generics)
active_dbi_generics <- setdiff(clean_dbi_generics, c(
"dbDriver",
"dbUnloadDriver",
"dbListConnections",
"dbListResults",
"dbSetDataMappings",
"dbGetException",
"dbCallProc",
"dbGetConnectArgs"
))
dbi_names <- sort(c(active_dbi_generics, "Id"))
dbi_names
}

create_generics <- function() {
dbi_names <- fetch_dbi_generics()
text <- paste0(
"# Created by create_generics(), do not edit by hand\nall_dbi_generics <- function() {\n c(\n",
paste0(' "', dbi_names, '",\n', collapse = ""),
" NULL\n )\n}"
)
writeLines(text, "R/generics.R")
}

dbi_generics <- function(version) {
version <- as.package_version(version)

generics <- all_dbi_generics()

if (version < as.package_version("1.7.3")) {
generics <- setdiff(generics, c(
"dbGetStream",
"dbAppendStream",
"dbStream",
"dbWriteStream",
"dbSendQueryStream",
"dbStreamTable",
"dbCreateFromStream"
))
}

generics
}
50 changes: 50 additions & 0 deletions R/generics.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Created by create_generics(), do not edit by hand
all_dbi_generics <- function() {
c(
"dbAppendStream",
"dbAppendTable",
"dbBegin",
"dbBind",
"dbCanConnect",
"dbClearResult",
"dbColumnInfo",
"dbCommit",
"dbConnect",
"dbCreateFromStream",
"dbCreateTable",
"dbDataType",
"dbDisconnect",
"dbExecute",
"dbExistsTable",
"dbFetch",
"dbGetInfo",
"dbGetQuery",
"dbGetRowCount",
"dbGetRowsAffected",
"dbGetStatement",
"dbGetStream",
"dbHasCompleted",
"dbIsReadOnly",
"dbIsValid",
"dbListFields",
"dbListObjects",
"dbListTables",
"dbQuoteIdentifier",
"dbQuoteLiteral",
"dbQuoteString",
"dbReadTable",
"dbRemoveTable",
"dbRollback",
"dbSendQuery",
"dbSendQueryStream",
"dbSendStatement",
"dbStream",
"dbStreamTable",
"dbUnquoteIdentifier",
"dbWithTransaction",
"dbWriteStream",
"dbWriteTable",
"Id",
NULL
)
}
18 changes: 2 additions & 16 deletions R/spec-compliance-methods.R
Original file line number Diff line number Diff line change
Expand Up @@ -52,22 +52,8 @@ spec_compliance_methods <- list(
pkg <- package_name(ctx)

where <- asNamespace(pkg)
dbi <- asNamespace("DBI")

dbi_generics <- grep("^[.]__T__db", getNamespaceExports(dbi), value = TRUE)
. <- gsub("^[.]__T__(.*):DBI$", "\\1", dbi_generics)
. <- setdiff(., c(
"dbDriver",
"dbUnloadDriver",
"dbListConnections",
"dbListResults",
"dbSetDataMappings",
"dbGetException",
"dbCallProc",
"dbGetConnectArgs"
))
. <- c(., "Id")
dbi_names <- .

dbi_names <- dbi_generics(ctx$tweaks$dbitest_version)

# Suppressing warning "... may not be available when loading"
exported_names <- suppressWarnings(callr::r(
Expand Down
5 changes: 5 additions & 0 deletions tests/testthat/test-dbi.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
test_that("Exported DBI methods as expected", {
skip_if_not_installed("DBI", "1.1.3.9002")

expect_equal(all_dbi_generics(), fetch_dbi_generics())
})

0 comments on commit 89b7e0d

Please sign in to comment.