Skip to content

Commit

Permalink
Fix warnings related to RSQLite (#200)
Browse files Browse the repository at this point in the history
* disconnect in on.exit handler

* mute warnings
  • Loading branch information
krlmlr authored and KentonWhite committed Apr 26, 2018
1 parent 1ea617a commit 35a181d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 17 deletions.
7 changes: 1 addition & 6 deletions R/db.reader.R
Expand Up @@ -22,6 +22,7 @@ db.reader <- function(data.file, filename, variable.name)
sqlite.driver <- DBI::dbDriver("SQLite")
connection <- DBI::dbConnect(sqlite.driver,
dbname = filename)
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)

tables <- DBI::dbListTables(connection)
for (table in tables)
Expand All @@ -36,10 +37,4 @@ db.reader <- function(data.file, filename, variable.name)
data.parcel,
envir = .TargetEnv)
}

disconnect.success <- DBI::dbDisconnect(connection)
if (! disconnect.success)
{
warning(paste('Unable to disconnect from database:', filename))
}
}
18 changes: 8 additions & 10 deletions R/sql.reader.R
Expand Up @@ -174,6 +174,8 @@ sql.reader <- function(data.file, filename, variable.name)
dbname = database.info[['dbname']],
port = as.integer(database.info[['port']]),
unix.socket = database.info[['socket']])
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)

DBI::dbGetQuery(connection, "SET NAMES 'utf8'") # Switch to utf-8 strings
}

Expand All @@ -185,6 +187,7 @@ sql.reader <- function(data.file, filename, variable.name)

connection <- DBI::dbConnect(sqlite.driver,
dbname = database.info[['dbname']])
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)

if (!is.null(database.info[['plugin']]) && database.info[['plugin']] == 'extension')
{
Expand All @@ -210,6 +213,7 @@ sql.reader <- function(data.file, filename, variable.name)
host = database.info[['host']],
dbname = database.info[['dbname']],
port = as.integer(database.info[['port']]))
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)
}

if (database.info[['type']] == 'oracle')
Expand All @@ -228,6 +232,7 @@ sql.reader <- function(data.file, filename, variable.name)
user = database.info[['user']],
password = database.info[['password']],
dbname = database.info[['dbname']])
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)
}

if (database.info[['type']] == 'jdbc')
Expand All @@ -247,6 +252,7 @@ sql.reader <- function(data.file, filename, variable.name)
database.info[['url']],
user = database.info[['user']],
password = database.info[['password']])
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)
}

if (database.info[['type']] == 'heroku')
Expand All @@ -269,6 +275,7 @@ sql.reader <- function(data.file, filename, variable.name)
database.info[['url']],
user = database.info[['user']],
password = database.info[['password']])
on.exit(try(DBI::dbDisconnect(connection), silent = TRUE), add = TRUE)
}

# Added support for queries.
Expand Down Expand Up @@ -342,7 +349,7 @@ sql.reader <- function(data.file, filename, variable.name)
query <- whisker::whisker.render(query, data = .GlobalEnv)
}
data.parcel <- try(DBI::dbGetQuery(connection, query))
err <- DBI::dbGetException(connection)
suppressWarnings(err <- DBI::dbGetException(connection))

if (class(data.parcel) == 'data.frame' && (length(err) == 0 || err$errorNum == 0))
{
Expand Down Expand Up @@ -375,13 +382,4 @@ sql.reader <- function(data.file, filename, variable.name)
envir = .TargetEnv)
return()
}

# Disconnect from database resources. Warn if failure.
disconnect.success <- DBI::dbDisconnect(connection)

if (! disconnect.success)
{
warning(paste('Unable to disconnect from database:',
database.info[['dbname']]))
}
}
2 changes: 1 addition & 1 deletion tests/testthat/test-load.R
Expand Up @@ -180,7 +180,7 @@ test_that('ignored data files are not loaded', {
# reload the project, now with an illegal Thumbs.db
rm(list = ls(envir = .TargetEnv), envir = .TargetEnv)
# The Thumbs.db is not a valid SQLite database so should raise an error
expect_error(load.project(data_ignore = ''), "file is not a database")
expect_error(suppressWarnings(load.project(override.config = list(data_ignore = ''))))

# reload the project, ignore *.csv
rm(list = ls(envir = .TargetEnv), envir = .TargetEnv)
Expand Down

0 comments on commit 35a181d

Please sign in to comment.