R Under development (unstable) (2024-09-21 r87186 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > ## dbWriteTable test > ## > ## Assumes that > ## a) PostgreSQL is running, and > ## b) the current user can connect > ## both of which are not viable for release but suitable while we test > ## > ## Dirk Eddelbuettel, 10 Sep 2009 > > ## only run this if this env.var is set correctly > if (Sys.getenv("POSTGRES_USER") != "" & Sys.getenv("POSTGRES_HOST") != "" & Sys.getenv("POSTGRES_DATABASE") != "") { + + ## try to load our module and abort if this fails + stopifnot(require(RPostgreSQL)) + stopifnot(require(datasets)) + + ## load the PostgresSQL driver + drv <- dbDriver("PostgreSQL") + + ## create two independent connections + con1 <- dbConnect(drv, + user=Sys.getenv("POSTGRES_USER"), + password=Sys.getenv("POSTGRES_PASSWD"), + host=Sys.getenv("POSTGRES_HOST"), + dbname=Sys.getenv("POSTGRES_DATABASE"), + port=ifelse((p<-Sys.getenv("POSTGRES_PORT"))!="", p, 5432)) + + con2 <- dbConnect(drv, + user=Sys.getenv("POSTGRES_USER"), + password=Sys.getenv("POSTGRES_PASSWD"), + host=Sys.getenv("POSTGRES_HOST"), + dbname=Sys.getenv("POSTGRES_DATABASE"), + port=ifelse((p<-Sys.getenv("POSTGRES_PORT"))!="", p, 5432)) + + + if (dbExistsTable(con1, "rockdata")) { + cat("Removing rockdata\n") + dbRemoveTable(con1, "rockdata") + } + + cat("begin transaction in con1\n") + dbGetQuery(con1, "BEGIN TRANSACTION") + cat("create table rockdata in con1\n") + dbWriteTable(con1, "rockdata", rock) + if (dbExistsTable(con1, "rockdata")) { + cat("PASS rockdata is visible through con1\n") + }else{ + cat("FAIL rockdata is invisible through con1\n") + } + if (dbExistsTable(con2, "rockdata")) { + cat("FAIL rockdata is visible through con2\n") + }else{ + cat("PASS rockdata is invisible through con2\n") + } + cat("commit in con1\n") + dbCommit(con1) + if (dbExistsTable(con2, "rockdata")) { + cat("PASS rockdata is visible through con2\n") + }else{ + cat("FAIL rockdata is invisible through con2\n") + } + + cat("remove the table from con1\n") + dbRemoveTable(con1, "rockdata") + + if (dbExistsTable(con2, "rockdata")) { + cat("FAIL rockdata is visible through con2\n") + }else{ + cat("PASS rockdata is invisible through con2\n") + } + + cat("begin transaction in con1\n") + dbGetQuery(con1, "BEGIN TRANSACTION") + cat("create table rockdata in con1\n") + dbWriteTable(con1, "rockdata", rock) + if (dbExistsTable(con1, "rockdata")) { + cat("PASS rockdata is visible through con1\n") + }else{ + cat("FAIL rockdata is invisible through con1\n") + } + cat("RollBack con1\n") + dbRollback(con1) + if (dbExistsTable(con1, "rockdata")) { + cat("FAIL rockdata is visible through con1\n") + }else{ + cat("PASS rockdata is invisible through con1\n") + } + + ## and disconnect + dbDisconnect(con2) + dbDisconnect(con1) + } > > proc.time() user system elapsed 0.21 0.14 0.31