1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
## 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
con <- 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(con, "tmptest")) {
cat("Removing tmptest\n")
dbRemoveTable(con, "tmptest")
}
# create temporary table (as a copy of any existing one)
# dbGetQuery(con, "BEGIN TRANSACTION")
cat("create temp table tmptest with dbGetQuery\n")
dbGetQuery(con, "CREATE TEMP TABLE tmptest (f1 int)")
# query temp table
rs<-dbGetQuery(con, "SELECT * from tmptest")
print(rs)
cat("create temp table tmptest with dbSendQuery\n")
dbSendQuery(con, "CREATE TEMP TABLE tmptest2(f2 int)")
# query temp table
rs2<-dbGetQuery(con, "SELECT * from tmptest2")
print(rs2)
## and disconnect
dbDisconnect(con)
con <- 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(con, "tmptest")) {
cat("FAIL tmptest persisted after disconnection\n")
cat("Removing tmptest\n")
dbRemoveTable(con, "tmptest")
}else{
cat("PASS tmptest disappeared after disconnection\n")
}
dbDisconnect(con)
}
|