test_that("querying closed connection throws error", {
db <- postgresDefault()
dbDisconnect(db)
expect_error(dbSendQuery(db, "select * from foo"), "bad_weak_ptr")
})
test_that("warn if previous result set is invalidated", {
con <- postgresDefault()
on.exit(dbDisconnect(con))
rs1 <- dbSendQuery(con, "SELECT 1 + 1")
expect_warning(
rs2 <- dbSendQuery(con, "SELECT 1 + 1"),
"Closing open result set, cancelling previous query",
fixed = TRUE
)
expect_false(dbIsValid(rs1))
dbClearResult(rs2)
})
test_that("no warning if previous result set is closed", {
con <- postgresDefault()
on.exit(dbDisconnect(con))
rs1 <- dbSendQuery(con, "SELECT 1 + 1")
dbClearResult(rs1)
expect_warning(rs2 <- dbSendQuery(con, "SELECT 1 + 1"), NA)
dbClearResult(rs2)
})
test_that("warning if close connection with open results", {
con <- postgresDefault()
rs1 <- dbSendQuery(con, "SELECT 1 + 1")
expect_warning(dbDisconnect(con), "still in use")
dbClearResult(rs1)
})
test_that("passing other options parameters", {
con <- postgresDefault(application_name = "apple")
on.exit(dbDisconnect(con))
pid <- dbGetInfo(con)$pid
r <- dbGetQuery(con, "SELECT application_name FROM pg_stat_activity WHERE pid=$1",
list(pid))
expect_identical(r$application_name, "apple")
})
test_that("error if passing unkown parameters", {
skip_on_cran()
expect_error(dbConnect(Postgres(), fruit = "apple"), 'invalid connection option "fruit"')
})
test_that("NOTICEs are captured as messages", {
skip_on_cran()
con <- postgresDefault()
on.exit(dbDisconnect(con))
expect_message(
DBI::dbExecute(con, "
DO language plpgsql $$
BEGIN
RAISE NOTICE 'hello, world!';
END
$$;"),
"hello, world"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.