Nothing
# Run the first two tests manually
test_that("warning on garbage-collecting unused driver", {
# Needs to run manually because these warnings can't be caught
skip_if_not(interactive())
duckdb()
expect_null(NULL)
# Expecting warning: "Database is garbage-collected"
gc()
})
test_that("warning on garbage-collecting open connection", {
# Needs to run manually because these warnings can't be caught
skip_if_not(interactive())
dbConnect(duckdb())
expect_null(NULL)
# Expecting warning: "Connection is garbage-collected", but not "Database ..."
gc()
})
test_that("no warning after duckdb_shutdown() for unused driver", {
duckdb_shutdown(duckdb())
# The warning won't occur here anyway, this is to keep testthat happy
expect_warning(gc(), NA)
})
test_that("no warning after dbDisconnect() for used driver", {
con <- dbConnect(duckdb())
dbDisconnect(con)
# The warning won't occur here anyway, this is to keep testthat happy
expect_warning(gc(), NA)
})
test_that("no warning after dbDisconnect() for driver stored in variable", {
drv <- duckdb()
con <- dbConnect(drv)
dbDisconnect(con)
# The warning won't occur here anyway, this is to keep testthat happy
expect_warning(gc(), NA)
rm(drv)
expect_warning(gc(), NA)
})
test_that("no warning on dbConnect() with other dbdir", {
con <- dbConnect(duckdb(), tempfile(fileext = ".duckdb"))
dbDisconnect(con)
# The warning won't occur here anyway, this is to keep testthat happy
expect_warning(gc(), NA)
})
test_that("can connect to the same in-memory database via the same driver object", {
skip_if_not(TEST_RE2)
drv <- duckdb()
con1 <- dbConnect(drv)
on.exit(dbDisconnect(con1), add = TRUE)
dbWriteTable(con1, "x", data.frame(a = 1:3))
con2 <- dbConnect(drv)
on.exit(dbDisconnect(con2), add = TRUE)
expect_equal(dbReadTable(con2, "x"), data.frame(a = 1:3))
dbWriteTable(con2, "y", data.frame(b = 1:3))
expect_equal(dbReadTable(con1, "y"), data.frame(b = 1:3))
gc()
})
test_that("will connect to different in-memory databases via different driver objects", {
skip_if_not(TEST_RE2)
drv1 <- duckdb()
con1 <- dbConnect(drv1)
on.exit(dbDisconnect(con1), add = TRUE)
dbWriteTable(con1, "x", data.frame(a = 1:3))
drv2 <- duckdb()
con2 <- dbConnect(drv2)
on.exit(dbDisconnect(con2), add = TRUE)
expect_false(dbExistsTable(con2, "x"))
dbWriteTable(con2, "y", data.frame(b = 1:3))
expect_false(dbExistsTable(con1, "y"))
gc()
})
test_that("can connect to the same database file via the same driver object", {
skip_if_not(TEST_RE2)
drv <- duckdb(tempfile(fileext = ".duckdb"))
con1 <- dbConnect(drv)
on.exit(dbDisconnect(con1), add = TRUE)
dbWriteTable(con1, "x", data.frame(a = 1:3))
con2 <- dbConnect(drv)
on.exit(dbDisconnect(con2), add = TRUE)
expect_equal(dbReadTable(con2, "x"), data.frame(a = 1:3))
dbWriteTable(con2, "y", data.frame(b = 1:3))
expect_equal(dbReadTable(con1, "y"), data.frame(b = 1:3))
gc()
})
test_that("can connect to the same database file via different driver objects", {
skip_if_not(TEST_RE2)
path <- tempfile(fileext = ".duckdb")
writeLines(character(), path)
path <- normalizePath(path)
unlink(path)
drv1 <- duckdb(path)
con1 <- dbConnect(drv1)
on.exit(dbDisconnect(con1), add = TRUE)
dbWriteTable(con1, "x", data.frame(a = 1:3))
drv2 <- duckdb(path)
con2 <- dbConnect(drv2)
on.exit(dbDisconnect(con2), add = TRUE)
expect_equal(dbReadTable(con2, "x"), data.frame(a = 1:3))
dbWriteTable(con2, "y", data.frame(b = 1:3))
expect_equal(dbReadTable(con1, "y"), data.frame(b = 1:3))
gc()
})
test_that("read_only only applies to the first driver object for a path", {
skip_if_not(TEST_RE2)
path <- tempfile(fileext = ".duckdb")
writeLines(character(), path)
path <- normalizePath(path)
unlink(path)
drv1 <- duckdb(path)
con1 <- dbConnect(drv1)
on.exit(dbDisconnect(con1), add = TRUE)
dbWriteTable(con1, "y", data.frame(b = 1:3))
drv2 <- duckdb(path, read_only = TRUE)
con2 <- dbConnect(drv2)
on.exit(dbDisconnect(con2), add = TRUE)
dbWriteTable(con2, "x", data.frame(a = 1:3))
expect_equal(dbReadTable(con1, "x"), data.frame(a = 1:3))
gc()
})
test_that("config only applies to the first driver object for a path", {
skip_if_not(TEST_RE2)
path <- tempfile(fileext = ".duckdb")
writeLines(character(), path)
path <- normalizePath(path)
unlink(path)
drv1 <- duckdb(path)
con1 <- dbConnect(drv1)
on.exit(dbDisconnect(con1), add = TRUE)
dbWriteTable(con1, "x", data.frame(a = 1:3))
drv2 <- duckdb(path, config = list(default_order = "DESC"))
con2 <- dbConnect(drv2)
on.exit(dbDisconnect(con2), add = TRUE)
expect_equal(dbGetQuery(con2, "SELECT * FROM x ORDER BY a"), data.frame(a = 1:3))
gc()
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.