Open
Description
I'm not sure if this is expected behaviour, a bug in RPostgres, or a bug in Postgres itself. But it took quite some time to figure out the issue...
con <- DBI::dbConnect(RPostgres::Postgres())
write_table <- function(n) {
DBI::dbWriteTable(
con,
"df_x",
tibble::tibble(x = 1:n),
temporary = TRUE,
overwrite = TRUE
)
}
DBI::dbWithTransaction(
con, {
write_table(2e3)
res <- DBI::dbSendQuery(con, "SELECT * FROM df_x")
DBI::dbFetch(res, n = 0)
DBI::dbClearResult(res)
DBI::dbGetQuery(con, "SELECT * FROM df_x LIMIT 1")
}
)
#> Error: Failed to prepare query: ERROR: current transaction is aborted, commands ignored until end of transaction block
# Interestingly, this works if the table is small
DBI::dbWithTransaction(
con, {
write_table(200)
res <- DBI::dbSendQuery(con, "SELECT * FROM df_x")
DBI::dbFetch(res, n = 0)
DBI::dbClearResult(res)
DBI::dbGetQuery(con, "SELECT * FROM df_x LIMIT 1")
}
)
#> x
#> 1 1
Created on 2023-03-09 with reprex v2.0.2