diff --git a/dev/CODE_OF_CONDUCT.html b/dev/CODE_OF_CONDUCT.html index 0058f7a1..bae729f9 100644 --- a/dev/CODE_OF_CONDUCT.html +++ b/dev/CODE_OF_CONDUCT.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/CONTRIBUTING.html b/dev/CONTRIBUTING.html index ed414940..86b3bb6f 100644 --- a/dev/CONTRIBUTING.html +++ b/dev/CONTRIBUTING.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/ISSUE_TEMPLATE.html b/dev/ISSUE_TEMPLATE.html index 889e7d4d..3807a3ca 100644 --- a/dev/ISSUE_TEMPLATE.html +++ b/dev/ISSUE_TEMPLATE.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/LICENSE-text.html b/dev/LICENSE-text.html index e3340a06..7ee1342a 100644 --- a/dev/LICENSE-text.html +++ b/dev/LICENSE-text.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/LICENSE.html b/dev/LICENSE.html index be702ac6..fbeefabc 100644 --- a/dev/LICENSE.html +++ b/dev/LICENSE.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/articles/index.html b/dev/articles/index.html index 3af406cb..024205c7 100644 --- a/dev/articles/index.html +++ b/dev/articles/index.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/articles/work-queue.html b/dev/articles/work-queue.html index de63fef8..e6daee53 100644 --- a/dev/articles/work-queue.html +++ b/dev/articles/work-queue.html @@ -21,7 +21,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/authors.html b/dev/authors.html index e3320189..ec3ba127 100644 --- a/dev/authors.html +++ b/dev/authors.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 @@ -70,13 +70,13 @@ Citation Wickham H, Ooms J, Müller K (2024). RPostgres: C++ Interface to PostgreSQL. -R package version 1.4.7.9009, https://github.com/r-dbi/RPostgres, https://rpostgres.r-dbi.org. +R package version 1.4.7.9010, https://github.com/r-dbi/RPostgres, https://rpostgres.r-dbi.org. @Manual{, title = {RPostgres: C++ Interface to PostgreSQL}, author = {Hadley Wickham and Jeroen Ooms and Kirill Müller}, year = {2024}, - note = {R package version 1.4.7.9009, https://github.com/r-dbi/RPostgres}, + note = {R package version 1.4.7.9010, https://github.com/r-dbi/RPostgres}, url = {https://rpostgres.r-dbi.org}, } diff --git a/dev/index.html b/dev/index.html index 50f260b3..d04bf2b4 100644 --- a/dev/index.html +++ b/dev/index.html @@ -23,7 +23,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/news/index.html b/dev/news/index.html index 53033cfa..91e8eb06 100644 --- a/dev/news/index.html +++ b/dev/news/index.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 @@ -36,6 +36,15 @@ Changelog Source: NEWS.md + +RPostgres 1.4.7.9010 (2024-08-31) + +Continuous integration +Install local package for pkgdown builds. +Improve support for protected branches with fledge. +Improve support for protected branches, without fledge. + + RPostgres 1.4.7.9009 (2024-08-17) diff --git a/dev/pkgdown.yml b/dev/pkgdown.yml index 1d5ab762..c6c1e8d9 100644 --- a/dev/pkgdown.yml +++ b/dev/pkgdown.yml @@ -3,7 +3,7 @@ pkgdown: 2.1.0 pkgdown_sha: ~ articles: work-queue: work-queue.html -last_built: 2024-08-30T09:50Z +last_built: 2024-09-14T08:39Z urls: reference: https://rpostgres.r-dbi.org/reference article: https://rpostgres.r-dbi.org/articles diff --git a/dev/reference/Postgres.html b/dev/reference/Postgres.html index 4a56a842..154d1a7e 100644 --- a/dev/reference/Postgres.html +++ b/dev/reference/Postgres.html @@ -17,7 +17,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/PqConnection-class.html b/dev/reference/PqConnection-class.html index f765ae81..875ed232 100644 --- a/dev/reference/PqConnection-class.html +++ b/dev/reference/PqConnection-class.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/PqDriver-class.html b/dev/reference/PqDriver-class.html index 47395062..c5cd1e7c 100644 --- a/dev/reference/PqDriver-class.html +++ b/dev/reference/PqDriver-class.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/PqResult-class.html b/dev/reference/PqResult-class.html index 2ac9d9f4..270af48b 100644 --- a/dev/reference/PqResult-class.html +++ b/dev/reference/PqResult-class.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/RPostgres-package.html b/dev/reference/RPostgres-package.html index 7062522a..00e2e66e 100644 --- a/dev/reference/RPostgres-package.html +++ b/dev/reference/RPostgres-package.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/Redshift.html b/dev/reference/Redshift.html index 16cbe942..f64051c2 100644 --- a/dev/reference/Redshift.html +++ b/dev/reference/Redshift.html @@ -11,7 +11,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/dbDataType.html b/dev/reference/dbDataType.html index a629fac4..45abfd14 100644 --- a/dev/reference/dbDataType.html +++ b/dev/reference/dbDataType.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/index.html b/dev/reference/index.html index 6c59d60f..3897da38 100644 --- a/dev/reference/index.html +++ b/dev/reference/index.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/postgres-query.html b/dev/reference/postgres-query.html index 590f7b99..ce435594 100644 --- a/dev/reference/postgres-query.html +++ b/dev/reference/postgres-query.html @@ -13,7 +13,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/postgres-tables.html b/dev/reference/postgres-tables.html index 2445dbb1..470b1112 100644 --- a/dev/reference/postgres-tables.html +++ b/dev/reference/postgres-tables.html @@ -19,7 +19,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/postgres-transactions.html b/dev/reference/postgres-transactions.html index 65c801f9..bee6a2eb 100644 --- a/dev/reference/postgres-transactions.html +++ b/dev/reference/postgres-transactions.html @@ -9,7 +9,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/postgresHasDefault.html b/dev/reference/postgresHasDefault.html index 2a3e10af..22cb4da8 100644 --- a/dev/reference/postgresHasDefault.html +++ b/dev/reference/postgresHasDefault.html @@ -17,7 +17,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/postgresIsTransacting.html b/dev/reference/postgresIsTransacting.html index 98a4d4ee..b737ae06 100644 --- a/dev/reference/postgresIsTransacting.html +++ b/dev/reference/postgresIsTransacting.html @@ -11,7 +11,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/postgresWaitForNotify.html b/dev/reference/postgresWaitForNotify.html index ce40fcb1..8378a7e6 100644 --- a/dev/reference/postgresWaitForNotify.html +++ b/dev/reference/postgresWaitForNotify.html @@ -9,7 +9,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/quote.html b/dev/reference/quote.html index 47fba5b9..200a4ecc 100644 --- a/dev/reference/quote.html +++ b/dev/reference/quote.html @@ -9,7 +9,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/reference/reexports.html b/dev/reference/reexports.html index 60a69850..988f201e 100644 --- a/dev/reference/reexports.html +++ b/dev/reference/reexports.html @@ -21,7 +21,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010 diff --git a/dev/search.json b/dev/search.json index abd850ea..77e8141b 100644 --- a/dev/search.json +++ b/dev/search.json @@ -1 +1 @@ -[{"path":"https://rpostgres.r-dbi.org/dev/CODE_OF_CONDUCT.html","id":null,"dir":"","previous_headings":"","what":"Contributor Code of Conduct","title":"Contributor Code of Conduct","text":"contributors maintainers project, pledge respect people contribute reporting issues, posting feature requests, updating documentation, submitting pull requests patches, activities. committed making participation project harassment-free experience everyone, regardless level experience, gender, gender identity expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion. Examples unacceptable behavior participants include use sexual language imagery, derogatory comments personal attacks, trolling, public private harassment, insults, unprofessional conduct. Project maintainers right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct. Project maintainers follow Code Conduct may removed project team. Instances abusive, harassing, otherwise unacceptable behavior may reported opening issue contacting one project maintainers. Code Conduct adapted Contributor Covenant (https://www.contributor-covenant.org), version 1.0.0, available https://contributor-covenant.org/version/1/0/0/.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contributing to RPostgres","title":"Contributing to RPostgres","text":"outlines propose change RPostgres.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"fixing-typos","dir":"","previous_headings":"","what":"Fixing typos","title":"Contributing to RPostgres","text":"Small typos grammatical errors documentation may edited directly using GitHub web interface, long changes made source file. YES: edit roxygen comment .R file R/. : edit .Rd file man/.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"prerequisites","dir":"","previous_headings":"","what":"Prerequisites","title":"Contributing to RPostgres","text":"make substantial pull request, always file issue make sure someone team agrees ’s problem. ’ve found bug, create associated issue illustrate bug minimal reprex.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"pull-request-process","dir":"","previous_headings":"","what":"Pull request process","title":"Contributing to RPostgres","text":"recommend create Git branch pull request (PR). Look Travis AppVeyor build status making changes. README contain badges continuous integration services used package. use roxygen2, Markdown syntax, documentation. use testthat. Contributions test cases included easier accept. Please update NEWS.md.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contributing to RPostgres","text":"Please note RPostgres project released Contributor Code Conduct. contributing project agree abide terms.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2023 RPostgres authors Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/articles/work-queue.html","id":"listen-notify","dir":"Articles","previous_headings":"","what":"LISTEN / NOTIFY","title":"Implementing a Work Queue using RPostgres","text":"Postgres LISTEN NOTIFY commands allow send receive messages clients connected PostgreSQL database. known publish/subscribe architecture. tell Postgres interested receiving messages using LISTEN. example: …case, “grapevine” arbitrary, don’t need create channels ahead time. make sure something receive, can start separate R process using callr. Ordinarily part another R script, maybe another computer. wait bit, use NOTIFY send message, finish: Finally, wait incoming messages. , use postgresWaitForNotify. payload contain message R process:","code":"con <- dbConnect(RPostgres::Postgres()) dbExecute(con, \"LISTEN grapevine\") #> [1] 0 rp <- callr::r_bg(function() { library(DBI) Sys.sleep(0.3) db_notify <- dbConnect(RPostgres::Postgres()) dbExecute(db_notify, \"NOTIFY grapevine, 'psst'\") dbDisconnect(db_notify) }) # Sleep until we get the message n <- NULL while (is.null(n)) { n <- RPostgres::postgresWaitForNotify(con) } n$payload #> [1] \"psst\""},{"path":"https://rpostgres.r-dbi.org/dev/articles/work-queue.html","id":"skip-locked","dir":"Articles","previous_headings":"","what":"SKIP LOCKED","title":"Implementing a Work Queue using RPostgres","text":"can use LISTEN/NOTIFY inform workers something done, decide worker actually work? done using SKIP LOCKED. notify workers input 99 ready processing. receiving , following: One lucky worker get row back, thanks UPDATE, row now locked. worker, row now locked, skip (SKIP LOCKED) find something else . jobs available, nothing returned. Using SKIP LOCKED discussed detail article.","code":"rs <- dbSendQuery(con, \" SELECT in_val FROM sqroot_vignette_example WHERE in_val = $1 FOR UPDATE SKIP LOCKED \", params = list(99))"},{"path":"https://rpostgres.r-dbi.org/dev/articles/work-queue.html","id":"implementing-our-worker","dir":"Articles","previous_headings":"","what":"Implementing our worker","title":"Implementing a Work Queue using RPostgres","text":"Now can put concepts together. following implements worker function (, running script several servers): worker connects database, starts listening loops indefinitely. First, wait new notifications. aren’t notifications, search old items generate new notifications. allows items picked didn’t get processed first time around, e.g. workers listening. got shutdown message, stop. Try grab row new item, win, one worker , fill square root. Let’s use callr start 2 workers: Now client can add values table notify workers ’s something : …wait, answers populated workers us: Finally, can use NOTIFY stop workers: see messages printed run: Notice work shared 2 workers. 2 weren’t enough, happily add keep system going.","code":"worker <- function() { library(DBI) db_worker <- dbConnect(RPostgres::Postgres()) on.exit(dbDisconnect(db_worker)) dbExecute(db_worker, \"LISTEN sqroot\") dbExecute(db_worker, \"LISTEN sqroot_shutdown\") while (TRUE) { # Wait for new work to do n <- RPostgres::postgresWaitForNotify(db_worker, 60) if (is.null(n)) { # If nothing to do, send notifications of any not up-to-date work dbExecute(db_worker, \" SELECT pg_notify('sqroot', in_val::TEXT) FROM sqroot_vignette_example WHERE out_val IS NULL \") next } # If we've been told to shutdown, stop right away if (n$channel == 'sqroot_shutdown') { writeLines(\"Shutting down.\") break } in_val <- strtoi(n$payload) tryCatch( { dbWithTransaction(db_worker, { # Try and fetch the item we got notified about rs <- dbSendQuery(db_worker, \" SELECT in_val FROM sqroot_vignette_example WHERE out_val IS NULL -- if another worker already finished, don't reprocess AND in_val = $1 FOR UPDATE SKIP LOCKED -- Don't let another worker work on this at the same time \", params = list(in_val)) in_val <- dbFetch(rs)[1, 1] dbClearResult(rs) if (!is.na(in_val)) { # Actually do the sqrt writeLines(paste(\"Sqroot-ing\", in_val, \"... \")) Sys.sleep(in_val * 0.1) out_val <- sqrt(in_val) # Update the datbase with the result dbExecute(db_worker, \" UPDATE sqroot_vignette_example SET out_val = $1 WHERE in_val = $2 \", params = list(out_val, in_val)) } else { writeLines(paste(\"Not sqroot-ing as another worker got there first\")) } }) }, error = function(e) { # Something went wrong. Report error and carry on writeLines(paste(\"Failed to sqroot:\", e$message)) }) } } stdout_1 <- tempfile() stdout_2 <- tempfile() rp <- callr::r_bg(worker, stdout = stdout_1, stderr = stdout_1) rp <- callr::r_bg(worker, stdout = stdout_2, stderr = stdout_2) Sys.sleep(1) # Give workers a chance to set themselves up con <- dbConnect(RPostgres::Postgres()) add_sqroot <- function(in_val) { dbExecute(con, \" INSERT INTO sqroot_vignette_example (in_val) VALUES ($1) \", params = list(in_val)) dbExecute(con, \" SELECT pg_notify('sqroot', $1) \", params = list(in_val)) } add_sqroot(7) #> [1] 0 add_sqroot(8) #> [1] 0 add_sqroot(9) #> [1] 0 Sys.sleep(3) rs <- dbSendQuery(con, \"SELECT * FROM sqroot_vignette_example ORDER BY in_val\") dbFetch(rs) #> in_val out_val #> 1 7 2.645751 #> 2 8 2.828427 #> 3 9 3.000000 dbClearResult(rs) ; rs <- NULL dbExecute(con, \"NOTIFY sqroot_shutdown, ''\") #> [1] 0 # We can't control which worker will process the first entry, # so we sort the results so the vignette output stays the same. outputs <- sort(c( paste(readLines(con = stdout_1), collapse = \"\\n\"), paste(readLines(con = stdout_2), collapse = \"\\n\"))) writeLines(outputs[[1]]) writeLines(outputs[[2]]) #> Sqroot-ing 7 ... #> Sqroot-ing 8 ... #> Sqroot-ing 9 ... #> Shutting down. #> [1] 0"},{"path":"https://rpostgres.r-dbi.org/dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Hadley Wickham. Author. Jeroen Ooms. Author. Kirill Müller. Author, maintainer. . Copyright holder. R Consortium. Funder. Tomoaki Nishiyama. Contributor. Code encoding vectors strings derived RPostgreSQL","code":""},{"path":"https://rpostgres.r-dbi.org/dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Wickham H, Ooms J, Müller K (2024). RPostgres: C++ Interface PostgreSQL. R package version 1.4.7.9009, https://github.com/r-dbi/RPostgres, https://rpostgres.r-dbi.org.","code":"@Manual{, title = {RPostgres: C++ Interface to PostgreSQL}, author = {Hadley Wickham and Jeroen Ooms and Kirill Müller}, year = {2024}, note = {R package version 1.4.7.9009, https://github.com/r-dbi/RPostgres}, url = {https://rpostgres.r-dbi.org}, }"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"rpostgres","dir":"","previous_headings":"","what":"C++ Interface to PostgreSQL","title":"C++ Interface to PostgreSQL","text":"RPostgres DBI-compliant interface postgres database. ’s ground-rewrite using C++ cpp11. Compared RPostgreSQL, : full support parameterised queries via dbSendQuery(), dbBind(). Automatically cleans open connections result sets, ensuring don’t need worry leaking connections memory. little faster, saving ~5 ms per query. (reference, takes around 5ms retrieve 1000 x 25 result set local database, decent speed smaller queries.) simplified build process relies system libpq.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"C++ Interface to PostgreSQL","text":"Discussions associated DBI related database packages take place R-SIG-DB. website Databases using R describes tools best practices ecosystem.","code":"# Install the latest RPostgres release from CRAN: install.packages(\"RPostgres\") # Or the the development version from GitHub: # install.packages(\"remotes\") remotes::install_github(\"r-dbi/RPostgres\")"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"basic-usage","dir":"","previous_headings":"","what":"Basic usage","title":"C++ Interface to PostgreSQL","text":"","code":"library(DBI) # Connect to the default postgres database con <- dbConnect(RPostgres::Postgres()) dbListTables(con) dbWriteTable(con, \"mtcars\", mtcars) dbListTables(con) dbListFields(con, \"mtcars\") dbReadTable(con, \"mtcars\") # You can fetch all results: res <- dbSendQuery(con, \"SELECT * FROM mtcars WHERE cyl = 4\") dbFetch(res) dbClearResult(res) # Or a chunk at a time res <- dbSendQuery(con, \"SELECT * FROM mtcars WHERE cyl = 4\") while(!dbHasCompleted(res)){ chunk <- dbFetch(res, n = 5) print(nrow(chunk)) } # Clear the result dbClearResult(res) # Disconnect from the database dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"connecting-to-a-specific-postgres-instance","dir":"","previous_headings":"","what":"Connecting to a specific Postgres instance","title":"C++ Interface to PostgreSQL","text":"","code":"library(DBI) # Connect to a specific postgres database i.e. Heroku con <- dbConnect(RPostgres::Postgres(),dbname = 'DATABASE_NAME', host = 'HOST', # i.e. 'ec2-54-83-201-96.compute-1.amazonaws.com' port = 5432, # or any other port specified by your DBA user = 'USERNAME', password = 'PASSWORD')"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"design-notes","dir":"","previous_headings":"","what":"Design notes","title":"C++ Interface to PostgreSQL","text":"original DBI design imagined package instantiate X drivers, driver Y connections connection Z results. turns general: driver real state, PostgreSQL connection can one result set. RPostgres package ’s one class C side: connection, optionally contains result set. R side, driver class just dummy class contents (used dispatch), connection result objects point external pointer. Please note ‘RPostgres’ project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":null,"dir":"Reference","previous_headings":"","what":"Postgres driver — Postgres","title":"Postgres driver — Postgres","text":"DBI::dbConnect() establishes connection database. Set drv = Postgres() connect PostgreSQL(-ish) database. Use drv = Redshift() instead connect AWS Redshift cluster. Manually disconnecting connection necessary RPostgres, still recommended; delete object containing connection, automatically disconnected next GC warning.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Postgres driver — Postgres","text":"","code":"Postgres() # S4 method for class 'PqDriver' dbConnect( drv, dbname = NULL, host = NULL, port = NULL, password = NULL, user = NULL, service = NULL, ..., bigint = c(\"integer64\", \"integer\", \"numeric\", \"character\"), check_interrupts = FALSE, timezone = \"UTC\", timezone_out = NULL ) # S4 method for class 'PqConnection' dbDisconnect(conn, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Postgres driver — Postgres","text":"drv DBI::DBIDriver. Use Postgres() connect PostgreSQL(-ish) database Redshift() connect AWS Redshift cluster. Use existing DBI::DBIConnection object clone existing connection. dbname Database name. NULL, defaults user name. Note argument can contain database name, parsed connection string (internally, expand_dbname set false call PQconnectdbParams()). host, port Host port. NULL, retrieved PGHOST PGPORT env vars. user, password User name password. NULL, retrieved PGUSER PGPASSWORD envvars, appropriate line ~/.pgpass. See https://www.postgresql.org/docs/current/libpq-pgpass.html details. service Name service connect . NULL, ignored. Otherwise, connection parameters loaded pg_service.conf file used. See https://www.postgresql.org/docs/current/libpq-pgservice.html details file syntax. ... name-value pairs describe additional connection options described https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS bigint R type 64-bit integer types mapped , default bit64::integer64, allows full range 64 bit integers. check_interrupts user interrupts checked query execution (first row data available)? Setting TRUE allows interruption queries running long. timezone Sets timezone connection. default \"UTC\". NULL timezone set, defaults server's time zone. timezone_out time zone returned R, defaults timezone. want display datetime values local timezone, set Sys.timezone() \"\". setting change time values returned, display. conn Connection disconnect.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Postgres driver — Postgres","text":"","code":"library(DBI) # Pass more arguments as necessary to dbConnect() con <- dbConnect(RPostgres::Postgres()) dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqConnection-class.html","id":null,"dir":"Reference","previous_headings":"","what":"PqConnection and methods. — PqConnection-class","title":"PqConnection and methods. — PqConnection-class","text":"PqConnection methods.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqConnection-class.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PqConnection and methods. — PqConnection-class","text":"","code":"# S3 method for class 'PqConnection' format(x, ...) # S4 method for class 'PqConnection' dbGetInfo(dbObj, ...) # S4 method for class 'PqConnection' dbIsValid(dbObj, ...) # S4 method for class 'PqConnection' show(object)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqDriver-class.html","id":null,"dir":"Reference","previous_headings":"","what":"PqDriver and methods. — PqDriver-class","title":"PqDriver and methods. — PqDriver-class","text":"PqDriver methods.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqDriver-class.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PqDriver and methods. — PqDriver-class","text":"","code":"# S4 method for class 'PqDriver' dbGetInfo(dbObj, ...) # S4 method for class 'PqDriver' dbUnloadDriver(drv, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqResult-class.html","id":null,"dir":"Reference","previous_headings":"","what":"PostgreSQL results. — PqResult-class","title":"PostgreSQL results. — PqResult-class","text":"PostgreSQL results.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqResult-class.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PostgreSQL results. — PqResult-class","text":"","code":"# S4 method for class 'PqResult' dbColumnInfo(res, ...) # S4 method for class 'PqResult' dbGetRowCount(res, ...) # S4 method for class 'PqResult' dbGetRowsAffected(res, ...) # S4 method for class 'PqResult' dbGetStatement(res, ...) # S4 method for class 'PqDriver' dbIsValid(dbObj, ...) # S4 method for class 'PqResult' dbIsValid(dbObj, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/RPostgres-package.html","id":null,"dir":"Reference","previous_headings":"","what":"RPostgres: C++ Interface to PostgreSQL — RPostgres-package","title":"RPostgres: C++ Interface to PostgreSQL — RPostgres-package","text":"Fully DBI-compliant C++-backed interface PostgreSQL https://www.postgresql.org/, open-source relational database.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/reference/RPostgres-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"RPostgres: C++ Interface to PostgreSQL — RPostgres-package","text":"Maintainer: Kirill Müller kirill@cynkra.com (ORCID) Authors: Hadley Wickham Jeroen Ooms contributors: RStudio [copyright holder] R Consortium [funder] Tomoaki Nishiyama (Code encoding vectors strings derived RPostgreSQL) [contributor]","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Redshift.html","id":null,"dir":"Reference","previous_headings":"","what":"Redshift driver/connection — Redshift","title":"Redshift driver/connection — Redshift","text":"Use drv = Redshift() instead drv = Postgres() connect AWS Redshift cluster. methods RPostgres downstream packages can called connections. different behavior Redshift connections, ensure better interoperability.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Redshift.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Redshift driver/connection — Redshift","text":"","code":"Redshift() # S4 method for class 'RedshiftDriver' dbConnect( drv, dbname = NULL, host = NULL, port = NULL, password = NULL, user = NULL, service = NULL, ..., bigint = c(\"integer64\", \"integer\", \"numeric\", \"character\"), check_interrupts = FALSE, timezone = \"UTC\" )"},{"path":"https://rpostgres.r-dbi.org/dev/reference/Redshift.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Redshift driver/connection — Redshift","text":"drv DBI::DBIDriver. Use Postgres() connect PostgreSQL(-ish) database Redshift() connect AWS Redshift cluster. Use existing DBI::DBIConnection object clone existing connection. dbname Database name. NULL, defaults user name. Note argument can contain database name, parsed connection string (internally, expand_dbname set false call PQconnectdbParams()). host, port Host port. NULL, retrieved PGHOST PGPORT env vars. user, password User name password. NULL, retrieved PGUSER PGPASSWORD envvars, appropriate line ~/.pgpass. See https://www.postgresql.org/docs/current/libpq-pgpass.html details. service Name service connect . NULL, ignored. Otherwise, connection parameters loaded pg_service.conf file used. See https://www.postgresql.org/docs/current/libpq-pgservice.html details file syntax. ... name-value pairs describe additional connection options described https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS bigint R type 64-bit integer types mapped , default bit64::integer64, allows full range 64 bit integers. check_interrupts user interrupts checked query execution (first row data available)? Setting TRUE allows interruption queries running long. timezone Sets timezone connection. default \"UTC\". NULL timezone set, defaults server's time zone.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/dbDataType.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine database type for R vector. — dbDataType_PqConnection","title":"Determine database type for R vector. — dbDataType_PqConnection","text":"Determine database type R vector.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/dbDataType.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine database type for R vector. — dbDataType_PqConnection","text":"","code":"# S4 method for class 'PqConnection' dbDataType(dbObj, obj, ...) # S4 method for class 'PqDriver' dbDataType(dbObj, obj, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/dbDataType.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine database type for R vector. — dbDataType_PqConnection","text":"dbObj Postgres driver connection. obj Object convert","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute a SQL statement on a database connection — postgres-query","title":"Execute a SQL statement on a database connection — postgres-query","text":"retrieve results chunk time, use dbSendQuery(), dbFetch(), dbClearResult(). Alternatively, want results (fit memory) use dbGetQuery() sends, fetches clears .","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute a SQL statement on a database connection — postgres-query","text":"","code":"# S4 method for class 'PqResult' dbBind(res, params, ...) # S4 method for class 'PqResult' dbClearResult(res, ...) # S4 method for class 'PqResult' dbFetch(res, n = -1, ..., row.names = FALSE) # S4 method for class 'PqResult' dbHasCompleted(res, ...) # S4 method for class 'PqConnection' dbSendQuery(conn, statement, params = NULL, ..., immediate = FALSE)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute a SQL statement on a database connection — postgres-query","text":"res Code PqResult produced DBI::dbSendQuery(). params list query parameters substituted parameterised query. Query parameters sent strings, correct type imputed PostgreSQL. fails, can manually cast parameter e.g. \"$1::bigint\". ... arguments needed compatibility generic (currently ignored). n Number rows return. less zero returns rows. row.names Either TRUE, FALSE, NA string. TRUE, always translate row names column called \"row_names\". FALSE, never translate row names. NA, translate rownames character vector. string equivalent TRUE, allows override default name. backward compatibility, NULL equivalent FALSE. conn PqConnection created DBI::dbConnect(). statement SQL string execute. immediate TRUE, uses PGsendQuery() API instead PGprepare(). allows pass multiple statements turns ability pass parameters.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"multiple-queries-and-statements","dir":"Reference","previous_headings":"","what":"Multiple queries and statements","title":"Execute a SQL statement on a database connection — postgres-query","text":"immediate = TRUE, possible pass multiple queries statements, separated semicolons. multiple statements, resulting value DBI::dbGetRowsAffected() corresponds total number affected rows. multiple queries used, queries must return data column names types. Queries statements can mixed.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Execute a SQL statement on a database connection — postgres-query","text":"","code":"library(DBI) db <- dbConnect(RPostgres::Postgres()) dbWriteTable(db, \"usarrests\", datasets::USArrests, temporary = TRUE) # Run query to get results as dataframe dbGetQuery(db, \"SELECT * FROM usarrests LIMIT 3\") #> Murder Assault UrbanPop Rape #> 1 13.2 236 58 21.2 #> 2 10.0 263 48 44.5 #> 3 8.1 294 80 31.0 # Send query to pull requests in batches res <- dbSendQuery(db, \"SELECT * FROM usarrests\") dbFetch(res, n = 2) #> Murder Assault UrbanPop Rape #> 1 13.2 236 58 21.2 #> 2 10.0 263 48 44.5 dbFetch(res, n = 2) #> Murder Assault UrbanPop Rape #> 1 8.1 294 80 31.0 #> 2 8.8 190 50 19.5 dbHasCompleted(res) #> [1] FALSE dbClearResult(res) dbRemoveTable(db, \"usarrests\") dbDisconnect(db)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":null,"dir":"Reference","previous_headings":"","what":"Convenience functions for reading/writing DBMS tables — postgres-tables","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"DBI::dbAppendTable() overridden RPostgres uses placeholders form $1, $2 etc. instead ?. DBI::dbWriteTable() executes several SQL statements create/overwrite table fill values. RPostgres use parameterised queries insert rows benchmarks revealed considerably slower using single SQL string.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"","code":"# S4 method for class 'PqConnection' dbAppendTable(conn, name, value, copy = NULL, ..., row.names = NULL) # S4 method for class 'PqConnection,Id' dbExistsTable(conn, name, ...) # S4 method for class 'PqConnection,character' dbExistsTable(conn, name, ...) # S4 method for class 'PqConnection,Id' dbListFields(conn, name, ...) # S4 method for class 'PqConnection,character' dbListFields(conn, name, ...) # S4 method for class 'PqConnection' dbListObjects(conn, prefix = NULL, ...) # S4 method for class 'PqConnection' dbListTables(conn, ...) # S4 method for class 'PqConnection,character' dbReadTable(conn, name, ..., check.names = TRUE, row.names = FALSE) # S4 method for class 'PqConnection,character' dbRemoveTable(conn, name, ..., temporary = FALSE, fail_if_missing = TRUE) # S4 method for class 'PqConnection,character,data.frame' dbWriteTable( conn, name, value, ..., row.names = FALSE, overwrite = FALSE, append = FALSE, field.types = NULL, temporary = FALSE, copy = NULL ) # S4 method for class 'PqConnection' sqlData(con, value, row.names = FALSE, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"conn PqConnection object, produced DBI::dbConnect() name character string specifying table name. Names automatically quoted can use sequence characters, just valid bare table name. Alternatively, pass name quoted DBI::dbQuoteIdentifier(), Id() object, string escaped DBI::SQL(). value data.frame write database. copy TRUE, serializes data frame single string uses COPY name stdin. fast, supported postgres servers (e.g. Amazon's Redshift). FALSE, generates single SQL string. slower, always supported. default maps TRUE connections established via Postgres() FALSE connections established via Redshift(). ... Ignored. row.names Either TRUE, FALSE, NA string. TRUE, always translate row names column called \"row_names\". FALSE, never translate row names. NA, translate rownames character vector. string equivalent TRUE, allows override default name. backward compatibility, NULL equivalent FALSE. prefix fully qualified path database's namespace, NULL. argument processed dbUnquoteIdentifier(). given method return objects accessible prefix. check.names TRUE, default, column names converted valid R identifiers. temporary TRUE, temporary tables considered. fail_if_missing FALSE, dbRemoveTable() succeeds table exist. overwrite logical specifying whether overwrite existing table . default FALSE. append logical specifying whether append existing table DBMS. default FALSE. field.types character vector named SQL field types names names new table's columns. missing, types inferred DBI::dbDataType()). types can specified append = FALSE. con database connection.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"schemas-catalogs-tablespaces","dir":"Reference","previous_headings":"","what":"Schemas, catalogs, tablespaces","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"Pass identifier created Id() name argument specify schema catalog, e.g. name = Id(catalog = \"my_catalog\", schema = \"my_schema\", table = \"my_table\") . specify tablespace, use dbExecute(conn, \"SET default_tablespace my_tablespace\") creating table.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"","code":"library(DBI) con <- dbConnect(RPostgres::Postgres()) dbListTables(con) #> character(0) dbWriteTable(con, \"mtcars\", mtcars, temporary = TRUE) dbReadTable(con, \"mtcars\") #> mpg cyl disp hp drat wt qsec vs am gear carb #> 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 #> 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 #> 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 #> 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 #> 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 #> 6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 #> 7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 #> 8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 #> 9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 #> 10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 #> 11 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 #> 12 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 #> 13 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 #> 14 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 #> 15 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 #> 16 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 #> 17 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 #> 18 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 #> 19 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 #> 20 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 #> 21 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 #> 22 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 #> 23 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 #> 24 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 #> 25 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 #> 26 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 #> 27 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 #> 28 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 #> 29 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 #> 30 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 #> 31 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 #> 32 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 dbListTables(con) #> [1] \"mtcars\" dbExistsTable(con, \"mtcars\") #> [1] TRUE # A zero row data frame just creates a table definition. dbWriteTable(con, \"mtcars2\", mtcars[0, ], temporary = TRUE) dbReadTable(con, \"mtcars2\") #> [1] mpg cyl disp hp drat wt qsec vs am gear carb #> <0 rows> (or 0-length row.names) dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":null,"dir":"Reference","previous_headings":"","what":"Transaction management. — postgres-transactions","title":"Transaction management. — postgres-transactions","text":"dbBegin() starts transaction. dbCommit() dbRollback() end transaction either committing rolling back changes.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transaction management. — postgres-transactions","text":"","code":"# S4 method for class 'PqConnection' dbBegin(conn, ..., name = NULL) # S4 method for class 'PqConnection' dbCommit(conn, ..., name = NULL) # S4 method for class 'PqConnection' dbRollback(conn, ..., name = NULL)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transaction management. — postgres-transactions","text":"conn PqConnection object, produced DBI::dbConnect() ... Unused, extensibility. name provided, uses SAVEPOINT SQL syntax establish, remove (commit) undo ßsavepoint.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transaction management. — postgres-transactions","text":"boolean, indicating success failure.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transaction management. — postgres-transactions","text":"","code":"library(DBI) con <- dbConnect(RPostgres::Postgres()) dbWriteTable(con, \"USarrests\", datasets::USArrests, temporary = TRUE) dbGetQuery(con, 'SELECT count(*) from \"USarrests\"') #> count #> 1 50 dbBegin(con) dbExecute(con, 'DELETE from \"USarrests\" WHERE \"Murder\" > 1') #> [1] 49 dbGetQuery(con, 'SELECT count(*) from \"USarrests\"') #> count #> 1 1 dbRollback(con) # Rolling back changes leads to original count dbGetQuery(con, 'SELECT count(*) from \"USarrests\"') #> count #> 1 50 dbRemoveTable(con, \"USarrests\") dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if default database is available. — postgresHasDefault","title":"Check if default database is available. — postgresHasDefault","text":"RPostgres examples tests connect default database via dbConnect(Postgres()). function checks database available, , displays informative message. postgresDefault() works similarly returns connection success throws testthat skip condition failure, making suitable use tests.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if default database is available. — postgresHasDefault","text":"","code":"postgresHasDefault(...) postgresDefault(...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if default database is available. — postgresHasDefault","text":"... Additional arguments passed DBI::dbConnect()","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check if default database is available. — postgresHasDefault","text":"","code":"if (postgresHasDefault()) { db <- postgresDefault() print(dbListTables(db)) dbDisconnect(db) } else { message(\"No database connection.\") } #> character(0)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":null,"dir":"Reference","previous_headings":"","what":"Return whether a transaction is ongoing — postgresIsTransacting","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"Detect whether transaction active given connection. transaction might started DBI::dbBegin() wrapped within DBI::dbWithTransaction().","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"","code":"postgresIsTransacting(conn)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"conn PqConnection object, produced DBI::dbConnect()","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"boolean, indicating transaction ongoing.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":null,"dir":"Reference","previous_headings":"","what":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"subscribe notifications LISTEN, use wait responses channel.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"","code":"postgresWaitForNotify(conn, timeout = 1)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"conn PqConnection object, produced DBI::dbConnect() timeout long wait, seconds. Default 1","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"notification available, list : channel Name channel pid PID notifying server process payload Content notification notifications available, return NULL","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"","code":"library(DBI) library(callr) # listen for messages on the grapevine db_listen <- dbConnect(RPostgres::Postgres()) dbExecute(db_listen, \"LISTEN grapevine\") #> [1] 0 # Start another process, which sends a message after a delay rp <- r_bg(function() { library(DBI) Sys.sleep(0.3) db_notify <- dbConnect(RPostgres::Postgres()) dbExecute(db_notify, \"NOTIFY grapevine, 'psst'\") dbDisconnect(db_notify) }) # Sleep until we get the message n <- NULL while (is.null(n)) { n <- RPostgres::postgresWaitForNotify(db_listen, 60) } stopifnot(n$payload == 'psst') # Tidy up rp$wait() dbDisconnect(db_listen)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":null,"dir":"Reference","previous_headings":"","what":"Quote postgres strings, identifiers, and literals — quote","title":"Quote postgres strings, identifiers, and literals — quote","text":"object class Id used dbQuoteIdentifier(), needs one table component one schema component.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quote postgres strings, identifiers, and literals — quote","text":"","code":"# S4 method for class 'PqConnection,Id' dbQuoteIdentifier(conn, x, ...) # S4 method for class 'PqConnection,SQL' dbQuoteIdentifier(conn, x, ...) # S4 method for class 'PqConnection,character' dbQuoteIdentifier(conn, x, ...) # S4 method for class 'PqConnection' dbQuoteLiteral(conn, x, ...) # S4 method for class 'PqConnection,SQL' dbQuoteString(conn, x, ...) # S4 method for class 'PqConnection,character' dbQuoteString(conn, x, ...) # S4 method for class 'PqConnection,SQL' dbUnquoteIdentifier(conn, x, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quote postgres strings, identifiers, and literals — quote","text":"conn PqConnection created dbConnect() x character vector quoted. ... arguments needed compatibility generic (currently ignored).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Quote postgres strings, identifiers, and literals — quote","text":"","code":"library(DBI) con <- dbConnect(RPostgres::Postgres()) x <- c(\"a\", \"b c\", \"d'e\", \"\\\\f\") dbQuoteString(con, x) #> 'a' #> 'b c' #> 'd''e' #> E'\\\\f' dbQuoteIdentifier(con, x) #> \"a\" #> \"b c\" #> \"d'e\" #> \"\\f\" dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. DBI Id","code":""},{"path":"https://rpostgres.r-dbi.org/dev/security.html","id":null,"dir":"","previous_headings":"","what":"Process for reporting security vulnerabilities","title":"Process for reporting security vulnerabilities","text":"reporting security vulnerability, please e-mail package maintainer krlmlr+r@mailbox.org instructions. include confidential information e-mail.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9009","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9009 (2024-08-17)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/10425486593","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9009","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9009 (2024-08-17)","text":"Sync latest developments.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9008","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9008 (2024-08-10)","text":"Use v2 instead master.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9007","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9007 (2024-08-06)","text":"Inline action.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9006","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9006 (2024-08-03)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/10224248168","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9005","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9005 (2024-08-02)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/10200112323","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9005","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9005 (2024-08-02)","text":"Use dev roxygen2 decor.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9004","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9004 (2024-07-02)","text":"Fix Windows, tweak lock workflow.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9003","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9003 (2024-07-01)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/9728443553","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9002","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9002 (2024-06-28)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/9692464325","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9002","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9002 (2024-06-28)","text":"Avoid checking bashisms Windows. Allow NOTEs R-devel. Better commit message. Bump versions, better default, consume custom matrix. Recent updates.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-1479001-2024-06-03","dir":"Changelog","previous_headings":"","what":"RPostgres 1.4.7.9001 (2024-06-03)","title":"RPostgres 1.4.7.9001 (2024-06-03)","text":"Merge branch ‘cran-1.4.7’.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-1479000-2024-05-26","dir":"Changelog","previous_headings":"","what":"RPostgres 1.4.7.9000 (2024-05-26)","title":"RPostgres 1.4.7.9000 (2024-05-26)","text":"Merge branch ‘cran-1.4.7’.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-7","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.7 (2024-05-26)","text":"Breaking change: Avoid appending numeric suffix duplicate column names (#463).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-7","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.7 (2024-05-26)","text":"dbWriteTable() correctly handles name clashes temporary permanent tables (#402, #431). Fix dbQuoteIdentifier() Id() objects longer rely names (#460).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7 (2024-05-26)","text":"Bump preferred libpq version MacOS 15 (#441, #465). Refactor dbListTables() et al. (@dpprdan, #413). Refactor list_fields() (#462). Use Id exists_table() (#461).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"documentation-1-4-7","dir":"Changelog","previous_headings":"","what":"Documentation","title":"RPostgres 1.4.7 (2024-05-26)","text":"Use dbitemplate (@maelle, #456).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"testing-1-4-7","dir":"Changelog","previous_headings":"","what":"Testing","title":"RPostgres 1.4.7 (2024-05-26)","text":"Test columns dbQuoteIdentifier() (@dpprdan, #263, #372). Fix tests DBItest installed (#448).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"breaking-changes-1-4-6","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"RPostgres 1.4.6 (2023-10-22)","text":"Breaking change: dbListObjects() allows Id() objects prefix argument (@dpprdan, #390).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-6","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.6 (2023-10-22)","text":"Use NULL favor NULL::text quoting strings literals, support JSON text-ish types. Fixes regression introduced #370 (#393, #425).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-6","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.6 (2023-10-22)","text":"dbQuoteLiteral() correctly quotes 64-bit integers bit64 package (class \"integer64\") (@karawoo, #435, #436). Breaking change: dbListObjects() allows Id() objects prefix argument (@dpprdan, #390).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"libraries-1-4-6","dir":"Changelog","previous_headings":"","what":"Libraries","title":"RPostgres 1.4.6 (2023-10-22)","text":"Windows: update libpq-15.3 (#442). Upgrade boost 1.81.0-1 fix sprintf warnings (#417).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"documentation-1-4-6","dir":"Changelog","previous_headings":"","what":"Documentation","title":"RPostgres 1.4.6 (2023-10-22)","text":"Suppress warning gcc-12 (#443). Tweak driver docs (@dpprdan, #433). Relicense MIT.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"testing-1-4-6","dir":"Changelog","previous_headings":"","what":"Testing","title":"RPostgres 1.4.6 (2023-10-22)","text":"Close result set.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-6","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.6 (2023-10-22)","text":"Replace Rcpp cpp11 (@Antonov548, #419).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-5","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.5 (2023-01-19)","text":"Upgrade boost 1.81.0-1 fix sprintf warnings (#417). One-click setup https://gitpod.io (@Antonov548, #407). Use testthat edition 3 (#408).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-4","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.4 (2022-05-01)","text":"Allow connection pg_type table missing (#394, #395, @pedrobtz). Fix dbExecute(immediate = TRUE) dbAppendTable() (#382, #384).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-4","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.4 (2022-05-01)","text":"Expand tests dbConnect(check_interrupts = TRUE) (#385, @zozlak). Ignore extended timestamp tests i386 (#387).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-3","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.3 (2021-12-20)","text":"New postgresIsTransacting() (#351, @jakob-r). Temporary tables now discovered correctly Redshift() connections, DBItest tests pass (#358, @galachad).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-3","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.3 (2021-12-20)","text":"Make method definition similar S3. setMethod() calls refer top-level functions (#380).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-2","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.2 (2021-12-05)","text":"dbWriteTable() uses savepoints transactions, even external transaction open. affect Redshift, savepoints supproted (#342). dbConnect(check_interrupts = TRUE), interrupting query now gives dedicated error message. short-running queries longer take one second complete (#344).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-2","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.2 (2021-12-05)","text":"dbQuoteLiteral() correctly quotes length-0 values (#355) generates typed NULL expressions NA values (#357). SET DATESTYLE query sent connecting uses quotes compatibility CockroachDB (#360).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-2","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.2 (2021-12-05)","text":"dbConnect() executes initial queries immediate = TRUE (#346). Check Postgres starting version 10 GitHub Actions (#368). Fix build Ubuntu 16.04 (#352). Mention libssl-dev configure script (#350).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.1 (2021-09-26)","text":"Avoid crash dereferencing 0-size vector (#343).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-0","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.0 (2021-09-25)","text":"Redshift() connections now adhere almost DBI specification connecting Redshift cluster. BLOBs supported Redshift, limitations enumerating temporary persistent tables (#215, #326). dbBegin(), dbCommit() dbRollback() gain name argument support savepoints. unnamed transaction must started beforehand (#13). dbWriteTable() uses transaction (#307). dbSendQuery() gains immediate argument. Multiple queries (separated semicolons) can passed mode, query parameters supported (#272). dbConnect(check_interrupts = TRUE) now aborts running query faster reliably user signals interrupt, e.g. pressing Ctrl+C (#336). dbAppendTable() gains copy argument. set TRUE, data imported via COPY name STDIN (#241, @hugheylab). Postgres NOTICE messages now forwarded proper R messages can captured suppressed (#208).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.0 (2021-09-25)","text":"dbQuoteLiteral() converts timestamp values input time zone, used writing tables Redshift (#325).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-0","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.0 (2021-09-25)","text":"Skip timestamp tests i386 (#318). dbSendQuery() dbQuoteLiteral() use single dispatch (#320). dbWriteTable() dbAppendTable() default copy = NULL, translates TRUE Postgres() FALSE Redshift() connections (#329).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"documentation-1-4-0","dir":"Changelog","previous_headings":"","what":"Documentation","title":"RPostgres 1.4.0 (2021-09-25)","text":"Order help topics pkgdown site. Use @examplesIf method documentation. Document field.types used dbWriteTable() (#206). Document setting tablespace writing table (#246). Tweak error message named params argument dbBind() (#266).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-133-2021-07-05","dir":"Changelog","previous_headings":"","what":"RPostgres 1.3.3 (2021-07-05)","title":"RPostgres 1.3.3 (2021-07-05)","text":"Fix dbConnect(check_interrupts = TRUE) Windows (#244, @zozlak). Windows: update libpq 13.2.0 add UCRT support (#309, @jeroen).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-132-2021-04-12","dir":"Changelog","previous_headings":"","what":"RPostgres 1.3.2 (2021-04-12)","title":"RPostgres 1.3.2 (2021-04-12)","text":"Remove BH dependency inlining header files (#300). Use Autobrew libpq older version 12 (#294, @jeroen). dbConnect() now issues SET datestyle iso, mdy avoid translation errors datetime values databases configured differently (#287, @baderstine).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-3-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.3.1 (2021-01-19)","text":"Inf, -Inf NaN values returned correctly Windows (#267). Fix behavior invalid time zone (#284, @ateucher).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-3-1","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.3.1 (2021-01-19)","text":"dbConnect() defaults timezone_out = NULL, means use timezone. FORCE_AUTOBREW environment variable enforces use autobrew configure (#283, @jeroen). Fix configure macOS, small tweaks (#282, #283, @jeroen). Fix configure script, remove $() reliably detected checkbashisms. configure uses shell script longer forwards src/configure.bash (#265).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-130-2021-01-05","dir":"Changelog","previous_headings":"","what":"RPostgres 1.3.0 (2021-01-05)","title":"RPostgres 1.3.0 (2021-01-05)","text":"dbConnect() gains timezone_out argument, default NULL means use timezone (#222). dbQuoteLiteral() now quotes difftime values interval (#270). New postgresWaitForNotify() adds LISTEN/NOTIFY support (#237, @lentinj).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-3-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.3.0 (2021-01-05)","text":"Inf, -Inf NaN values returned correctly Windows (#267). DATETIME values (=without time zone) DATETIMETZ values (=time zone) returned correctly (#190, #205, #229), also start 1970 (#221).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-3-0","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.3.0 (2021-01-05)","text":"configure uses shell script longer forwards src/configure.bash (#265). Switch GitHub Actions (#268, thanks @ankane). Now imports lubridate package.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-121-2020-09-28","dir":"Changelog","previous_headings":"","what":"RPostgres 1.2.1 (2020-09-28)","title":"RPostgres 1.2.1 (2020-09-28)","text":"Gains new Redshift driver connecting Redshift databases. Redshift databases behave almost identically Postgres driver allows downstream packages distinguish two (#258). Datetime values now passed database using unambiguous time zone format (#255, @imlijunda). Document Postgres() together dbConnect() (#242). Windows: update libpq 12.2.0.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"communication-with-the-database-1-2-0","dir":"Changelog","previous_headings":"","what":"Communication with the database","title":"RPostgres 1.2.0 (2019-12-18)","text":"Breaking: Translate floating-point values DOUBLE PRECISION default (#194). Avoid aggressive rounding passing numeric values database (#184). Avoid adding extra spaces numerics (#216). Column names error messages UTF-8 encoded (#172). dbWriteTable(copy = FALSE), sqlData() dbAppendTable() now work character columns (#209), always converted UTF-8.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"new-features-1-2-0","dir":"Changelog","previous_headings":"","what":"New features","title":"RPostgres 1.2.0 (2019-12-18)","text":"Add timezone argument dbConnect() (#187, @trafficonese). Implement dbGetInfo() driver connection object. dbConnect() gains check_interrupts argument allows interrupting execution safely waiting query results ready (#193, @zozlak). dbUnquoteIdentifier() also handles unquoted identifiers form table schema.table, compatibility dbplyr. addition, catalog component supported quoting unquoting Id(). dbQuoteLiteral() available \"character\" (#209). Windows: update libpq 11.1.0. Fulfill CII badge requirements (#227, @TSchiefer).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-2-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.2.0 (2019-12-18)","text":"Hide unused symbols shared library (#230, @troels). Fix partial argument matching dbAppendTable() (r-dbi/DBI#249). Fix binding whole numbers POSIXt timestamps (#191).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-2-0","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.2.0 (2019-12-18)","text":"sqlData(copy = FALSE) now uses dbQuoteLiteral() (#209). Add tests dbUnquoteIdentifier() (#220, @baileych). Improved tests numerical precision (#203, @harvey131). Fix test: change REAL DOUBLE PRECISION (#204, @harvey131). Implement dbAppendTable() connection class, don’t hijack base class implementation (r-dbi/RMariaDB#119). Avoid including call errors. Align DbResult classes RSQLite RMariaDB.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-113-2019-12-07","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.3 (2019-12-07)","title":"RPostgres 1.1.3 (2019-12-07)","text":"Replace std::mem_fn() boost::mem_fn() works older compilers.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-112-2019-12-03","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.2 (2019-12-03)","title":"RPostgres 1.1.2 (2019-12-03)","text":"Replace std::mem_fun_ref() std::mem_fn().","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-111-2018-05-05","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.1 (2018-05-05)","title":"RPostgres 1.1.1 (2018-05-05)","text":"Add support bigint argument dbConnect(), supported values \"integer64\", \"integer\", \"numeric\" \"character\". Large integers returned values type (r-dbi/DBItest#133). Data frames resulting query always unique non-empty column names (r-dbi/DBItest#137). New arguments temporary fail_if_missing (default: TRUE) dbRemoveTable() (r-dbi/DBI#141, r-dbi/DBI#197). Using dbCreateTable() dbAppendTable() internally (r-dbi/DBI#74). field.types argument dbWriteTable() now must named. Using current_schemas(true) also dbListObjects() dbListTables(), consistency dbListFields(). Objects pg_catalog schema still excluded. dbListFields() doesn’t list fields tables found pg_catalog schema. dbListFields() method now works correctly name argument quoted identifier class Id, throws error table found (r-dbi/DBI#75). Implement format() method SqliteConnection (r-dbi/DBI#163). Reexporting Id(), DBI::dbIsReadOnly() DBI::dbCanConnect(). Now imports DBI 1.0.0.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-110-2018-04-04","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.0 (2018-04-04)","title":"RPostgres 1.1.0 (2018-04-04)","text":"Breaking change: dbGetException() longer reexported DBI. Make “typname” information available dbFetch() dbGetQuery(). Values unknown type returned character vector class \"pq_xxx\", \"xxx\" “typname” returned PostgreSQL. particular, JSON JSONB values now class \"pq_json\" \"pq_jsonb\", respectively. return value dbColumnInfo() gains new columns \".oid\" (integer), \". known\" (logical) \".typname\" (character) (#114, @etiennebr). Values class \"integer64\" now supported dbWriteTable() dbBind() (#178). Schema support, specified DBI: dbListObjects(), dbUnquoteIdentifier() Id(). Names x argument dbQuoteIdentifier() preserved output (r-dbi/DBI#173). generics defined DBI (e.g., dbGetQuery()) now exported, even package doesn’t provide custom implementation (#168). Replace non-portable timegm() private implementation. Correct reference RPostgreSQL package (#165, @ClaytonJY).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-10-4-2017-12-20","dir":"Changelog","previous_headings":"","what":"RPostgres 1.0-4 (2017-12-20)","title":"RPostgres 1.0-4 (2017-12-20)","text":"call PQcancel() query hasn’t completed, fixes transactions Amazon Redshift (#159, @mmuurr). Fix installation macOS. Check libpq version configure script (need least 9.0). Fix UBSAN warning: reference binding null pointer (#156). Fix rchk warning: PROTECT internal temporary SEXP objects (#157). Fix severe memory leak fetching results (#154).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-10-3-2017-12-01","dir":"Changelog","previous_headings":"","what":"RPostgres 1.0-3 (2017-12-01)","title":"RPostgres 1.0-3 (2017-12-01)","text":"Initial release, compliant DBI specification. Test almost test cases DBI specification. Fully support parametrized queries. Spec-compliant transactions. 64-bit integers now supported bit64 package. also means numeric literals (SELECT 1) returned 64-bit integers. bigint argument dbConnect() allows overriding data type per-connection basis. Correct handling DATETIME TIME columns. New default row.names = FALSE.","code":""}] +[{"path":"https://rpostgres.r-dbi.org/dev/CODE_OF_CONDUCT.html","id":null,"dir":"","previous_headings":"","what":"Contributor Code of Conduct","title":"Contributor Code of Conduct","text":"contributors maintainers project, pledge respect people contribute reporting issues, posting feature requests, updating documentation, submitting pull requests patches, activities. committed making participation project harassment-free experience everyone, regardless level experience, gender, gender identity expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion. Examples unacceptable behavior participants include use sexual language imagery, derogatory comments personal attacks, trolling, public private harassment, insults, unprofessional conduct. Project maintainers right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct. Project maintainers follow Code Conduct may removed project team. Instances abusive, harassing, otherwise unacceptable behavior may reported opening issue contacting one project maintainers. Code Conduct adapted Contributor Covenant (https://www.contributor-covenant.org), version 1.0.0, available https://contributor-covenant.org/version/1/0/0/.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contributing to RPostgres","title":"Contributing to RPostgres","text":"outlines propose change RPostgres.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"fixing-typos","dir":"","previous_headings":"","what":"Fixing typos","title":"Contributing to RPostgres","text":"Small typos grammatical errors documentation may edited directly using GitHub web interface, long changes made source file. YES: edit roxygen comment .R file R/. : edit .Rd file man/.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"prerequisites","dir":"","previous_headings":"","what":"Prerequisites","title":"Contributing to RPostgres","text":"make substantial pull request, always file issue make sure someone team agrees ’s problem. ’ve found bug, create associated issue illustrate bug minimal reprex.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"pull-request-process","dir":"","previous_headings":"","what":"Pull request process","title":"Contributing to RPostgres","text":"recommend create Git branch pull request (PR). Look Travis AppVeyor build status making changes. README contain badges continuous integration services used package. use roxygen2, Markdown syntax, documentation. use testthat. Contributions test cases included easier accept. Please update NEWS.md.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contributing to RPostgres","text":"Please note RPostgres project released Contributor Code Conduct. contributing project agree abide terms.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2023 RPostgres authors Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/articles/work-queue.html","id":"listen-notify","dir":"Articles","previous_headings":"","what":"LISTEN / NOTIFY","title":"Implementing a Work Queue using RPostgres","text":"Postgres LISTEN NOTIFY commands allow send receive messages clients connected PostgreSQL database. known publish/subscribe architecture. tell Postgres interested receiving messages using LISTEN. example: …case, “grapevine” arbitrary, don’t need create channels ahead time. make sure something receive, can start separate R process using callr. Ordinarily part another R script, maybe another computer. wait bit, use NOTIFY send message, finish: Finally, wait incoming messages. , use postgresWaitForNotify. payload contain message R process:","code":"con <- dbConnect(RPostgres::Postgres()) dbExecute(con, \"LISTEN grapevine\") #> [1] 0 rp <- callr::r_bg(function() { library(DBI) Sys.sleep(0.3) db_notify <- dbConnect(RPostgres::Postgres()) dbExecute(db_notify, \"NOTIFY grapevine, 'psst'\") dbDisconnect(db_notify) }) # Sleep until we get the message n <- NULL while (is.null(n)) { n <- RPostgres::postgresWaitForNotify(con) } n$payload #> [1] \"psst\""},{"path":"https://rpostgres.r-dbi.org/dev/articles/work-queue.html","id":"skip-locked","dir":"Articles","previous_headings":"","what":"SKIP LOCKED","title":"Implementing a Work Queue using RPostgres","text":"can use LISTEN/NOTIFY inform workers something done, decide worker actually work? done using SKIP LOCKED. notify workers input 99 ready processing. receiving , following: One lucky worker get row back, thanks UPDATE, row now locked. worker, row now locked, skip (SKIP LOCKED) find something else . jobs available, nothing returned. Using SKIP LOCKED discussed detail article.","code":"rs <- dbSendQuery(con, \" SELECT in_val FROM sqroot_vignette_example WHERE in_val = $1 FOR UPDATE SKIP LOCKED \", params = list(99))"},{"path":"https://rpostgres.r-dbi.org/dev/articles/work-queue.html","id":"implementing-our-worker","dir":"Articles","previous_headings":"","what":"Implementing our worker","title":"Implementing a Work Queue using RPostgres","text":"Now can put concepts together. following implements worker function (, running script several servers): worker connects database, starts listening loops indefinitely. First, wait new notifications. aren’t notifications, search old items generate new notifications. allows items picked didn’t get processed first time around, e.g. workers listening. got shutdown message, stop. Try grab row new item, win, one worker , fill square root. Let’s use callr start 2 workers: Now client can add values table notify workers ’s something : …wait, answers populated workers us: Finally, can use NOTIFY stop workers: see messages printed run: Notice work shared 2 workers. 2 weren’t enough, happily add keep system going.","code":"worker <- function() { library(DBI) db_worker <- dbConnect(RPostgres::Postgres()) on.exit(dbDisconnect(db_worker)) dbExecute(db_worker, \"LISTEN sqroot\") dbExecute(db_worker, \"LISTEN sqroot_shutdown\") while (TRUE) { # Wait for new work to do n <- RPostgres::postgresWaitForNotify(db_worker, 60) if (is.null(n)) { # If nothing to do, send notifications of any not up-to-date work dbExecute(db_worker, \" SELECT pg_notify('sqroot', in_val::TEXT) FROM sqroot_vignette_example WHERE out_val IS NULL \") next } # If we've been told to shutdown, stop right away if (n$channel == 'sqroot_shutdown') { writeLines(\"Shutting down.\") break } in_val <- strtoi(n$payload) tryCatch( { dbWithTransaction(db_worker, { # Try and fetch the item we got notified about rs <- dbSendQuery(db_worker, \" SELECT in_val FROM sqroot_vignette_example WHERE out_val IS NULL -- if another worker already finished, don't reprocess AND in_val = $1 FOR UPDATE SKIP LOCKED -- Don't let another worker work on this at the same time \", params = list(in_val)) in_val <- dbFetch(rs)[1, 1] dbClearResult(rs) if (!is.na(in_val)) { # Actually do the sqrt writeLines(paste(\"Sqroot-ing\", in_val, \"... \")) Sys.sleep(in_val * 0.1) out_val <- sqrt(in_val) # Update the datbase with the result dbExecute(db_worker, \" UPDATE sqroot_vignette_example SET out_val = $1 WHERE in_val = $2 \", params = list(out_val, in_val)) } else { writeLines(paste(\"Not sqroot-ing as another worker got there first\")) } }) }, error = function(e) { # Something went wrong. Report error and carry on writeLines(paste(\"Failed to sqroot:\", e$message)) }) } } stdout_1 <- tempfile() stdout_2 <- tempfile() rp <- callr::r_bg(worker, stdout = stdout_1, stderr = stdout_1) rp <- callr::r_bg(worker, stdout = stdout_2, stderr = stdout_2) Sys.sleep(1) # Give workers a chance to set themselves up con <- dbConnect(RPostgres::Postgres()) add_sqroot <- function(in_val) { dbExecute(con, \" INSERT INTO sqroot_vignette_example (in_val) VALUES ($1) \", params = list(in_val)) dbExecute(con, \" SELECT pg_notify('sqroot', $1) \", params = list(in_val)) } add_sqroot(7) #> [1] 0 add_sqroot(8) #> [1] 0 add_sqroot(9) #> [1] 0 Sys.sleep(3) rs <- dbSendQuery(con, \"SELECT * FROM sqroot_vignette_example ORDER BY in_val\") dbFetch(rs) #> in_val out_val #> 1 7 2.645751 #> 2 8 2.828427 #> 3 9 3.000000 dbClearResult(rs) ; rs <- NULL dbExecute(con, \"NOTIFY sqroot_shutdown, ''\") #> [1] 0 # We can't control which worker will process the first entry, # so we sort the results so the vignette output stays the same. outputs <- sort(c( paste(readLines(con = stdout_1), collapse = \"\\n\"), paste(readLines(con = stdout_2), collapse = \"\\n\"))) writeLines(outputs[[1]]) writeLines(outputs[[2]]) #> Sqroot-ing 7 ... #> Sqroot-ing 8 ... #> Sqroot-ing 9 ... #> Shutting down. #> [1] 0"},{"path":"https://rpostgres.r-dbi.org/dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Hadley Wickham. Author. Jeroen Ooms. Author. Kirill Müller. Author, maintainer. . Copyright holder. R Consortium. Funder. Tomoaki Nishiyama. Contributor. Code encoding vectors strings derived RPostgreSQL","code":""},{"path":"https://rpostgres.r-dbi.org/dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Wickham H, Ooms J, Müller K (2024). RPostgres: C++ Interface PostgreSQL. R package version 1.4.7.9010, https://github.com/r-dbi/RPostgres, https://rpostgres.r-dbi.org.","code":"@Manual{, title = {RPostgres: C++ Interface to PostgreSQL}, author = {Hadley Wickham and Jeroen Ooms and Kirill Müller}, year = {2024}, note = {R package version 1.4.7.9010, https://github.com/r-dbi/RPostgres}, url = {https://rpostgres.r-dbi.org}, }"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"rpostgres","dir":"","previous_headings":"","what":"C++ Interface to PostgreSQL","title":"C++ Interface to PostgreSQL","text":"RPostgres DBI-compliant interface postgres database. ’s ground-rewrite using C++ cpp11. Compared RPostgreSQL, : full support parameterised queries via dbSendQuery(), dbBind(). Automatically cleans open connections result sets, ensuring don’t need worry leaking connections memory. little faster, saving ~5 ms per query. (reference, takes around 5ms retrieve 1000 x 25 result set local database, decent speed smaller queries.) simplified build process relies system libpq.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"C++ Interface to PostgreSQL","text":"Discussions associated DBI related database packages take place R-SIG-DB. website Databases using R describes tools best practices ecosystem.","code":"# Install the latest RPostgres release from CRAN: install.packages(\"RPostgres\") # Or the the development version from GitHub: # install.packages(\"remotes\") remotes::install_github(\"r-dbi/RPostgres\")"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"basic-usage","dir":"","previous_headings":"","what":"Basic usage","title":"C++ Interface to PostgreSQL","text":"","code":"library(DBI) # Connect to the default postgres database con <- dbConnect(RPostgres::Postgres()) dbListTables(con) dbWriteTable(con, \"mtcars\", mtcars) dbListTables(con) dbListFields(con, \"mtcars\") dbReadTable(con, \"mtcars\") # You can fetch all results: res <- dbSendQuery(con, \"SELECT * FROM mtcars WHERE cyl = 4\") dbFetch(res) dbClearResult(res) # Or a chunk at a time res <- dbSendQuery(con, \"SELECT * FROM mtcars WHERE cyl = 4\") while(!dbHasCompleted(res)){ chunk <- dbFetch(res, n = 5) print(nrow(chunk)) } # Clear the result dbClearResult(res) # Disconnect from the database dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"connecting-to-a-specific-postgres-instance","dir":"","previous_headings":"","what":"Connecting to a specific Postgres instance","title":"C++ Interface to PostgreSQL","text":"","code":"library(DBI) # Connect to a specific postgres database i.e. Heroku con <- dbConnect(RPostgres::Postgres(),dbname = 'DATABASE_NAME', host = 'HOST', # i.e. 'ec2-54-83-201-96.compute-1.amazonaws.com' port = 5432, # or any other port specified by your DBA user = 'USERNAME', password = 'PASSWORD')"},{"path":"https://rpostgres.r-dbi.org/dev/index.html","id":"design-notes","dir":"","previous_headings":"","what":"Design notes","title":"C++ Interface to PostgreSQL","text":"original DBI design imagined package instantiate X drivers, driver Y connections connection Z results. turns general: driver real state, PostgreSQL connection can one result set. RPostgres package ’s one class C side: connection, optionally contains result set. R side, driver class just dummy class contents (used dispatch), connection result objects point external pointer. Please note ‘RPostgres’ project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":null,"dir":"Reference","previous_headings":"","what":"Postgres driver — Postgres","title":"Postgres driver — Postgres","text":"DBI::dbConnect() establishes connection database. Set drv = Postgres() connect PostgreSQL(-ish) database. Use drv = Redshift() instead connect AWS Redshift cluster. Manually disconnecting connection necessary RPostgres, still recommended; delete object containing connection, automatically disconnected next GC warning.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Postgres driver — Postgres","text":"","code":"Postgres() # S4 method for class 'PqDriver' dbConnect( drv, dbname = NULL, host = NULL, port = NULL, password = NULL, user = NULL, service = NULL, ..., bigint = c(\"integer64\", \"integer\", \"numeric\", \"character\"), check_interrupts = FALSE, timezone = \"UTC\", timezone_out = NULL ) # S4 method for class 'PqConnection' dbDisconnect(conn, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Postgres driver — Postgres","text":"drv DBI::DBIDriver. Use Postgres() connect PostgreSQL(-ish) database Redshift() connect AWS Redshift cluster. Use existing DBI::DBIConnection object clone existing connection. dbname Database name. NULL, defaults user name. Note argument can contain database name, parsed connection string (internally, expand_dbname set false call PQconnectdbParams()). host, port Host port. NULL, retrieved PGHOST PGPORT env vars. user, password User name password. NULL, retrieved PGUSER PGPASSWORD envvars, appropriate line ~/.pgpass. See https://www.postgresql.org/docs/current/libpq-pgpass.html details. service Name service connect . NULL, ignored. Otherwise, connection parameters loaded pg_service.conf file used. See https://www.postgresql.org/docs/current/libpq-pgservice.html details file syntax. ... name-value pairs describe additional connection options described https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS bigint R type 64-bit integer types mapped , default bit64::integer64, allows full range 64 bit integers. check_interrupts user interrupts checked query execution (first row data available)? Setting TRUE allows interruption queries running long. timezone Sets timezone connection. default \"UTC\". NULL timezone set, defaults server's time zone. timezone_out time zone returned R, defaults timezone. want display datetime values local timezone, set Sys.timezone() \"\". setting change time values returned, display. conn Connection disconnect.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Postgres.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Postgres driver — Postgres","text":"","code":"library(DBI) # Pass more arguments as necessary to dbConnect() con <- dbConnect(RPostgres::Postgres()) dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqConnection-class.html","id":null,"dir":"Reference","previous_headings":"","what":"PqConnection and methods. — PqConnection-class","title":"PqConnection and methods. — PqConnection-class","text":"PqConnection methods.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqConnection-class.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PqConnection and methods. — PqConnection-class","text":"","code":"# S3 method for class 'PqConnection' format(x, ...) # S4 method for class 'PqConnection' dbGetInfo(dbObj, ...) # S4 method for class 'PqConnection' dbIsValid(dbObj, ...) # S4 method for class 'PqConnection' show(object)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqDriver-class.html","id":null,"dir":"Reference","previous_headings":"","what":"PqDriver and methods. — PqDriver-class","title":"PqDriver and methods. — PqDriver-class","text":"PqDriver methods.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqDriver-class.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PqDriver and methods. — PqDriver-class","text":"","code":"# S4 method for class 'PqDriver' dbGetInfo(dbObj, ...) # S4 method for class 'PqDriver' dbUnloadDriver(drv, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqResult-class.html","id":null,"dir":"Reference","previous_headings":"","what":"PostgreSQL results. — PqResult-class","title":"PostgreSQL results. — PqResult-class","text":"PostgreSQL results.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/PqResult-class.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PostgreSQL results. — PqResult-class","text":"","code":"# S4 method for class 'PqResult' dbColumnInfo(res, ...) # S4 method for class 'PqResult' dbGetRowCount(res, ...) # S4 method for class 'PqResult' dbGetRowsAffected(res, ...) # S4 method for class 'PqResult' dbGetStatement(res, ...) # S4 method for class 'PqDriver' dbIsValid(dbObj, ...) # S4 method for class 'PqResult' dbIsValid(dbObj, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/RPostgres-package.html","id":null,"dir":"Reference","previous_headings":"","what":"RPostgres: C++ Interface to PostgreSQL — RPostgres-package","title":"RPostgres: C++ Interface to PostgreSQL — RPostgres-package","text":"Fully DBI-compliant C++-backed interface PostgreSQL https://www.postgresql.org/, open-source relational database.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/reference/RPostgres-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"RPostgres: C++ Interface to PostgreSQL — RPostgres-package","text":"Maintainer: Kirill Müller kirill@cynkra.com (ORCID) Authors: Hadley Wickham Jeroen Ooms contributors: RStudio [copyright holder] R Consortium [funder] Tomoaki Nishiyama (Code encoding vectors strings derived RPostgreSQL) [contributor]","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Redshift.html","id":null,"dir":"Reference","previous_headings":"","what":"Redshift driver/connection — Redshift","title":"Redshift driver/connection — Redshift","text":"Use drv = Redshift() instead drv = Postgres() connect AWS Redshift cluster. methods RPostgres downstream packages can called connections. different behavior Redshift connections, ensure better interoperability.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/Redshift.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Redshift driver/connection — Redshift","text":"","code":"Redshift() # S4 method for class 'RedshiftDriver' dbConnect( drv, dbname = NULL, host = NULL, port = NULL, password = NULL, user = NULL, service = NULL, ..., bigint = c(\"integer64\", \"integer\", \"numeric\", \"character\"), check_interrupts = FALSE, timezone = \"UTC\" )"},{"path":"https://rpostgres.r-dbi.org/dev/reference/Redshift.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Redshift driver/connection — Redshift","text":"drv DBI::DBIDriver. Use Postgres() connect PostgreSQL(-ish) database Redshift() connect AWS Redshift cluster. Use existing DBI::DBIConnection object clone existing connection. dbname Database name. NULL, defaults user name. Note argument can contain database name, parsed connection string (internally, expand_dbname set false call PQconnectdbParams()). host, port Host port. NULL, retrieved PGHOST PGPORT env vars. user, password User name password. NULL, retrieved PGUSER PGPASSWORD envvars, appropriate line ~/.pgpass. See https://www.postgresql.org/docs/current/libpq-pgpass.html details. service Name service connect . NULL, ignored. Otherwise, connection parameters loaded pg_service.conf file used. See https://www.postgresql.org/docs/current/libpq-pgservice.html details file syntax. ... name-value pairs describe additional connection options described https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS bigint R type 64-bit integer types mapped , default bit64::integer64, allows full range 64 bit integers. check_interrupts user interrupts checked query execution (first row data available)? Setting TRUE allows interruption queries running long. timezone Sets timezone connection. default \"UTC\". NULL timezone set, defaults server's time zone.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/dbDataType.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine database type for R vector. — dbDataType_PqConnection","title":"Determine database type for R vector. — dbDataType_PqConnection","text":"Determine database type R vector.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/dbDataType.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine database type for R vector. — dbDataType_PqConnection","text":"","code":"# S4 method for class 'PqConnection' dbDataType(dbObj, obj, ...) # S4 method for class 'PqDriver' dbDataType(dbObj, obj, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/dbDataType.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine database type for R vector. — dbDataType_PqConnection","text":"dbObj Postgres driver connection. obj Object convert","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute a SQL statement on a database connection — postgres-query","title":"Execute a SQL statement on a database connection — postgres-query","text":"retrieve results chunk time, use dbSendQuery(), dbFetch(), dbClearResult(). Alternatively, want results (fit memory) use dbGetQuery() sends, fetches clears .","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute a SQL statement on a database connection — postgres-query","text":"","code":"# S4 method for class 'PqResult' dbBind(res, params, ...) # S4 method for class 'PqResult' dbClearResult(res, ...) # S4 method for class 'PqResult' dbFetch(res, n = -1, ..., row.names = FALSE) # S4 method for class 'PqResult' dbHasCompleted(res, ...) # S4 method for class 'PqConnection' dbSendQuery(conn, statement, params = NULL, ..., immediate = FALSE)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute a SQL statement on a database connection — postgres-query","text":"res Code PqResult produced DBI::dbSendQuery(). params list query parameters substituted parameterised query. Query parameters sent strings, correct type imputed PostgreSQL. fails, can manually cast parameter e.g. \"$1::bigint\". ... arguments needed compatibility generic (currently ignored). n Number rows return. less zero returns rows. row.names Either TRUE, FALSE, NA string. TRUE, always translate row names column called \"row_names\". FALSE, never translate row names. NA, translate rownames character vector. string equivalent TRUE, allows override default name. backward compatibility, NULL equivalent FALSE. conn PqConnection created DBI::dbConnect(). statement SQL string execute. immediate TRUE, uses PGsendQuery() API instead PGprepare(). allows pass multiple statements turns ability pass parameters.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"multiple-queries-and-statements","dir":"Reference","previous_headings":"","what":"Multiple queries and statements","title":"Execute a SQL statement on a database connection — postgres-query","text":"immediate = TRUE, possible pass multiple queries statements, separated semicolons. multiple statements, resulting value DBI::dbGetRowsAffected() corresponds total number affected rows. multiple queries used, queries must return data column names types. Queries statements can mixed.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-query.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Execute a SQL statement on a database connection — postgres-query","text":"","code":"library(DBI) db <- dbConnect(RPostgres::Postgres()) dbWriteTable(db, \"usarrests\", datasets::USArrests, temporary = TRUE) # Run query to get results as dataframe dbGetQuery(db, \"SELECT * FROM usarrests LIMIT 3\") #> Murder Assault UrbanPop Rape #> 1 13.2 236 58 21.2 #> 2 10.0 263 48 44.5 #> 3 8.1 294 80 31.0 # Send query to pull requests in batches res <- dbSendQuery(db, \"SELECT * FROM usarrests\") dbFetch(res, n = 2) #> Murder Assault UrbanPop Rape #> 1 13.2 236 58 21.2 #> 2 10.0 263 48 44.5 dbFetch(res, n = 2) #> Murder Assault UrbanPop Rape #> 1 8.1 294 80 31.0 #> 2 8.8 190 50 19.5 dbHasCompleted(res) #> [1] FALSE dbClearResult(res) dbRemoveTable(db, \"usarrests\") dbDisconnect(db)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":null,"dir":"Reference","previous_headings":"","what":"Convenience functions for reading/writing DBMS tables — postgres-tables","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"DBI::dbAppendTable() overridden RPostgres uses placeholders form $1, $2 etc. instead ?. DBI::dbWriteTable() executes several SQL statements create/overwrite table fill values. RPostgres use parameterised queries insert rows benchmarks revealed considerably slower using single SQL string.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"","code":"# S4 method for class 'PqConnection' dbAppendTable(conn, name, value, copy = NULL, ..., row.names = NULL) # S4 method for class 'PqConnection,Id' dbExistsTable(conn, name, ...) # S4 method for class 'PqConnection,character' dbExistsTable(conn, name, ...) # S4 method for class 'PqConnection,Id' dbListFields(conn, name, ...) # S4 method for class 'PqConnection,character' dbListFields(conn, name, ...) # S4 method for class 'PqConnection' dbListObjects(conn, prefix = NULL, ...) # S4 method for class 'PqConnection' dbListTables(conn, ...) # S4 method for class 'PqConnection,character' dbReadTable(conn, name, ..., check.names = TRUE, row.names = FALSE) # S4 method for class 'PqConnection,character' dbRemoveTable(conn, name, ..., temporary = FALSE, fail_if_missing = TRUE) # S4 method for class 'PqConnection,character,data.frame' dbWriteTable( conn, name, value, ..., row.names = FALSE, overwrite = FALSE, append = FALSE, field.types = NULL, temporary = FALSE, copy = NULL ) # S4 method for class 'PqConnection' sqlData(con, value, row.names = FALSE, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"conn PqConnection object, produced DBI::dbConnect() name character string specifying table name. Names automatically quoted can use sequence characters, just valid bare table name. Alternatively, pass name quoted DBI::dbQuoteIdentifier(), Id() object, string escaped DBI::SQL(). value data.frame write database. copy TRUE, serializes data frame single string uses COPY name stdin. fast, supported postgres servers (e.g. Amazon's Redshift). FALSE, generates single SQL string. slower, always supported. default maps TRUE connections established via Postgres() FALSE connections established via Redshift(). ... Ignored. row.names Either TRUE, FALSE, NA string. TRUE, always translate row names column called \"row_names\". FALSE, never translate row names. NA, translate rownames character vector. string equivalent TRUE, allows override default name. backward compatibility, NULL equivalent FALSE. prefix fully qualified path database's namespace, NULL. argument processed dbUnquoteIdentifier(). given method return objects accessible prefix. check.names TRUE, default, column names converted valid R identifiers. temporary TRUE, temporary tables considered. fail_if_missing FALSE, dbRemoveTable() succeeds table exist. overwrite logical specifying whether overwrite existing table . default FALSE. append logical specifying whether append existing table DBMS. default FALSE. field.types character vector named SQL field types names names new table's columns. missing, types inferred DBI::dbDataType()). types can specified append = FALSE. con database connection.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"schemas-catalogs-tablespaces","dir":"Reference","previous_headings":"","what":"Schemas, catalogs, tablespaces","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"Pass identifier created Id() name argument specify schema catalog, e.g. name = Id(catalog = \"my_catalog\", schema = \"my_schema\", table = \"my_table\") . specify tablespace, use dbExecute(conn, \"SET default_tablespace my_tablespace\") creating table.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-tables.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convenience functions for reading/writing DBMS tables — postgres-tables","text":"","code":"library(DBI) con <- dbConnect(RPostgres::Postgres()) dbListTables(con) #> character(0) dbWriteTable(con, \"mtcars\", mtcars, temporary = TRUE) dbReadTable(con, \"mtcars\") #> mpg cyl disp hp drat wt qsec vs am gear carb #> 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 #> 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 #> 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 #> 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 #> 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 #> 6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 #> 7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 #> 8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 #> 9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 #> 10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 #> 11 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 #> 12 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 #> 13 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 #> 14 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 #> 15 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 #> 16 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 #> 17 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 #> 18 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 #> 19 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 #> 20 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 #> 21 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 #> 22 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 #> 23 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 #> 24 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 #> 25 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 #> 26 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 #> 27 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 #> 28 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 #> 29 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 #> 30 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 #> 31 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 #> 32 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 dbListTables(con) #> [1] \"mtcars\" dbExistsTable(con, \"mtcars\") #> [1] TRUE # A zero row data frame just creates a table definition. dbWriteTable(con, \"mtcars2\", mtcars[0, ], temporary = TRUE) dbReadTable(con, \"mtcars2\") #> [1] mpg cyl disp hp drat wt qsec vs am gear carb #> <0 rows> (or 0-length row.names) dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":null,"dir":"Reference","previous_headings":"","what":"Transaction management. — postgres-transactions","title":"Transaction management. — postgres-transactions","text":"dbBegin() starts transaction. dbCommit() dbRollback() end transaction either committing rolling back changes.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transaction management. — postgres-transactions","text":"","code":"# S4 method for class 'PqConnection' dbBegin(conn, ..., name = NULL) # S4 method for class 'PqConnection' dbCommit(conn, ..., name = NULL) # S4 method for class 'PqConnection' dbRollback(conn, ..., name = NULL)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transaction management. — postgres-transactions","text":"conn PqConnection object, produced DBI::dbConnect() ... Unused, extensibility. name provided, uses SAVEPOINT SQL syntax establish, remove (commit) undo ßsavepoint.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transaction management. — postgres-transactions","text":"boolean, indicating success failure.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgres-transactions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transaction management. — postgres-transactions","text":"","code":"library(DBI) con <- dbConnect(RPostgres::Postgres()) dbWriteTable(con, \"USarrests\", datasets::USArrests, temporary = TRUE) dbGetQuery(con, 'SELECT count(*) from \"USarrests\"') #> count #> 1 50 dbBegin(con) dbExecute(con, 'DELETE from \"USarrests\" WHERE \"Murder\" > 1') #> [1] 49 dbGetQuery(con, 'SELECT count(*) from \"USarrests\"') #> count #> 1 1 dbRollback(con) # Rolling back changes leads to original count dbGetQuery(con, 'SELECT count(*) from \"USarrests\"') #> count #> 1 50 dbRemoveTable(con, \"USarrests\") dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if default database is available. — postgresHasDefault","title":"Check if default database is available. — postgresHasDefault","text":"RPostgres examples tests connect default database via dbConnect(Postgres()). function checks database available, , displays informative message. postgresDefault() works similarly returns connection success throws testthat skip condition failure, making suitable use tests.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if default database is available. — postgresHasDefault","text":"","code":"postgresHasDefault(...) postgresDefault(...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if default database is available. — postgresHasDefault","text":"... Additional arguments passed DBI::dbConnect()","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresHasDefault.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check if default database is available. — postgresHasDefault","text":"","code":"if (postgresHasDefault()) { db <- postgresDefault() print(dbListTables(db)) dbDisconnect(db) } else { message(\"No database connection.\") } #> character(0)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":null,"dir":"Reference","previous_headings":"","what":"Return whether a transaction is ongoing — postgresIsTransacting","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"Detect whether transaction active given connection. transaction might started DBI::dbBegin() wrapped within DBI::dbWithTransaction().","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"","code":"postgresIsTransacting(conn)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"conn PqConnection object, produced DBI::dbConnect()","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresIsTransacting.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return whether a transaction is ongoing — postgresIsTransacting","text":"boolean, indicating transaction ongoing.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":null,"dir":"Reference","previous_headings":"","what":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"subscribe notifications LISTEN, use wait responses channel.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"","code":"postgresWaitForNotify(conn, timeout = 1)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"conn PqConnection object, produced DBI::dbConnect() timeout long wait, seconds. Default 1","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"notification available, list : channel Name channel pid PID notifying server process payload Content notification notifications available, return NULL","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/postgresWaitForNotify.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Wait for and return any notifications that return within timeout — postgresWaitForNotify","text":"","code":"library(DBI) library(callr) # listen for messages on the grapevine db_listen <- dbConnect(RPostgres::Postgres()) dbExecute(db_listen, \"LISTEN grapevine\") #> [1] 0 # Start another process, which sends a message after a delay rp <- r_bg(function() { library(DBI) Sys.sleep(0.3) db_notify <- dbConnect(RPostgres::Postgres()) dbExecute(db_notify, \"NOTIFY grapevine, 'psst'\") dbDisconnect(db_notify) }) # Sleep until we get the message n <- NULL while (is.null(n)) { n <- RPostgres::postgresWaitForNotify(db_listen, 60) } stopifnot(n$payload == 'psst') # Tidy up rp$wait() dbDisconnect(db_listen)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":null,"dir":"Reference","previous_headings":"","what":"Quote postgres strings, identifiers, and literals — quote","title":"Quote postgres strings, identifiers, and literals — quote","text":"object class Id used dbQuoteIdentifier(), needs one table component one schema component.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quote postgres strings, identifiers, and literals — quote","text":"","code":"# S4 method for class 'PqConnection,Id' dbQuoteIdentifier(conn, x, ...) # S4 method for class 'PqConnection,SQL' dbQuoteIdentifier(conn, x, ...) # S4 method for class 'PqConnection,character' dbQuoteIdentifier(conn, x, ...) # S4 method for class 'PqConnection' dbQuoteLiteral(conn, x, ...) # S4 method for class 'PqConnection,SQL' dbQuoteString(conn, x, ...) # S4 method for class 'PqConnection,character' dbQuoteString(conn, x, ...) # S4 method for class 'PqConnection,SQL' dbUnquoteIdentifier(conn, x, ...)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quote postgres strings, identifiers, and literals — quote","text":"conn PqConnection created dbConnect() x character vector quoted. ... arguments needed compatibility generic (currently ignored).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/reference/quote.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Quote postgres strings, identifiers, and literals — quote","text":"","code":"library(DBI) con <- dbConnect(RPostgres::Postgres()) x <- c(\"a\", \"b c\", \"d'e\", \"\\\\f\") dbQuoteString(con, x) #> 'a' #> 'b c' #> 'd''e' #> E'\\\\f' dbQuoteIdentifier(con, x) #> \"a\" #> \"b c\" #> \"d'e\" #> \"\\f\" dbDisconnect(con)"},{"path":"https://rpostgres.r-dbi.org/dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. DBI Id","code":""},{"path":"https://rpostgres.r-dbi.org/dev/security.html","id":null,"dir":"","previous_headings":"","what":"Process for reporting security vulnerabilities","title":"Process for reporting security vulnerabilities","text":"reporting security vulnerability, please e-mail package maintainer krlmlr+r@mailbox.org instructions. include confidential information e-mail.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9010","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9010 (2024-08-31)","text":"Install local package pkgdown builds. Improve support protected branches fledge. Improve support protected branches, without fledge.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9009","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9009 (2024-08-17)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/10425486593","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9009","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9009 (2024-08-17)","text":"Sync latest developments.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9008","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9008 (2024-08-10)","text":"Use v2 instead master.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9007","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9007 (2024-08-06)","text":"Inline action.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9006","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9006 (2024-08-03)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/10224248168","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9005","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9005 (2024-08-02)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/10200112323","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9005","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9005 (2024-08-02)","text":"Use dev roxygen2 decor.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9004","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9004 (2024-07-02)","text":"Fix Windows, tweak lock workflow.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9003","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9003 (2024-07-01)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/9728443553","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7-9002","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7.9002 (2024-06-28)","text":"Auto-update GitHub Actions. Run: https://github.com/r-dbi/RPostgres/actions/runs/9692464325","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"continuous-integration-1-4-7-9002","dir":"Changelog","previous_headings":"","what":"Continuous integration","title":"RPostgres 1.4.7.9002 (2024-06-28)","text":"Avoid checking bashisms Windows. Allow NOTEs R-devel. Better commit message. Bump versions, better default, consume custom matrix. Recent updates.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-1479001-2024-06-03","dir":"Changelog","previous_headings":"","what":"RPostgres 1.4.7.9001 (2024-06-03)","title":"RPostgres 1.4.7.9001 (2024-06-03)","text":"Merge branch ‘cran-1.4.7’.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-1479000-2024-05-26","dir":"Changelog","previous_headings":"","what":"RPostgres 1.4.7.9000 (2024-05-26)","title":"RPostgres 1.4.7.9000 (2024-05-26)","text":"Merge branch ‘cran-1.4.7’.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-7","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.7 (2024-05-26)","text":"Breaking change: Avoid appending numeric suffix duplicate column names (#463).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-7","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.7 (2024-05-26)","text":"dbWriteTable() correctly handles name clashes temporary permanent tables (#402, #431). Fix dbQuoteIdentifier() Id() objects longer rely names (#460).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"chore-1-4-7","dir":"Changelog","previous_headings":"","what":"Chore","title":"RPostgres 1.4.7 (2024-05-26)","text":"Bump preferred libpq version MacOS 15 (#441, #465). Refactor dbListTables() et al. (@dpprdan, #413). Refactor list_fields() (#462). Use Id exists_table() (#461).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"documentation-1-4-7","dir":"Changelog","previous_headings":"","what":"Documentation","title":"RPostgres 1.4.7 (2024-05-26)","text":"Use dbitemplate (@maelle, #456).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"testing-1-4-7","dir":"Changelog","previous_headings":"","what":"Testing","title":"RPostgres 1.4.7 (2024-05-26)","text":"Test columns dbQuoteIdentifier() (@dpprdan, #263, #372). Fix tests DBItest installed (#448).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"breaking-changes-1-4-6","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"RPostgres 1.4.6 (2023-10-22)","text":"Breaking change: dbListObjects() allows Id() objects prefix argument (@dpprdan, #390).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-6","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.6 (2023-10-22)","text":"Use NULL favor NULL::text quoting strings literals, support JSON text-ish types. Fixes regression introduced #370 (#393, #425).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-6","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.6 (2023-10-22)","text":"dbQuoteLiteral() correctly quotes 64-bit integers bit64 package (class \"integer64\") (@karawoo, #435, #436). Breaking change: dbListObjects() allows Id() objects prefix argument (@dpprdan, #390).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"libraries-1-4-6","dir":"Changelog","previous_headings":"","what":"Libraries","title":"RPostgres 1.4.6 (2023-10-22)","text":"Windows: update libpq-15.3 (#442). Upgrade boost 1.81.0-1 fix sprintf warnings (#417).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"documentation-1-4-6","dir":"Changelog","previous_headings":"","what":"Documentation","title":"RPostgres 1.4.6 (2023-10-22)","text":"Suppress warning gcc-12 (#443). Tweak driver docs (@dpprdan, #433). Relicense MIT.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"testing-1-4-6","dir":"Changelog","previous_headings":"","what":"Testing","title":"RPostgres 1.4.6 (2023-10-22)","text":"Close result set.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-6","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.6 (2023-10-22)","text":"Replace Rcpp cpp11 (@Antonov548, #419).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-5","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.5 (2023-01-19)","text":"Upgrade boost 1.81.0-1 fix sprintf warnings (#417). One-click setup https://gitpod.io (@Antonov548, #407). Use testthat edition 3 (#408).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-4","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.4 (2022-05-01)","text":"Allow connection pg_type table missing (#394, #395, @pedrobtz). Fix dbExecute(immediate = TRUE) dbAppendTable() (#382, #384).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-4","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.4 (2022-05-01)","text":"Expand tests dbConnect(check_interrupts = TRUE) (#385, @zozlak). Ignore extended timestamp tests i386 (#387).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-3","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.3 (2021-12-20)","text":"New postgresIsTransacting() (#351, @jakob-r). Temporary tables now discovered correctly Redshift() connections, DBItest tests pass (#358, @galachad).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-3","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.3 (2021-12-20)","text":"Make method definition similar S3. setMethod() calls refer top-level functions (#380).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-2","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.2 (2021-12-05)","text":"dbWriteTable() uses savepoints transactions, even external transaction open. affect Redshift, savepoints supproted (#342). dbConnect(check_interrupts = TRUE), interrupting query now gives dedicated error message. short-running queries longer take one second complete (#344).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-2","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.2 (2021-12-05)","text":"dbQuoteLiteral() correctly quotes length-0 values (#355) generates typed NULL expressions NA values (#357). SET DATESTYLE query sent connecting uses quotes compatibility CockroachDB (#360).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-2","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.2 (2021-12-05)","text":"dbConnect() executes initial queries immediate = TRUE (#346). Check Postgres starting version 10 GitHub Actions (#368). Fix build Ubuntu 16.04 (#352). Mention libssl-dev configure script (#350).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.1 (2021-09-26)","text":"Avoid crash dereferencing 0-size vector (#343).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"features-1-4-0","dir":"Changelog","previous_headings":"","what":"Features","title":"RPostgres 1.4.0 (2021-09-25)","text":"Redshift() connections now adhere almost DBI specification connecting Redshift cluster. BLOBs supported Redshift, limitations enumerating temporary persistent tables (#215, #326). dbBegin(), dbCommit() dbRollback() gain name argument support savepoints. unnamed transaction must started beforehand (#13). dbWriteTable() uses transaction (#307). dbSendQuery() gains immediate argument. Multiple queries (separated semicolons) can passed mode, query parameters supported (#272). dbConnect(check_interrupts = TRUE) now aborts running query faster reliably user signals interrupt, e.g. pressing Ctrl+C (#336). dbAppendTable() gains copy argument. set TRUE, data imported via COPY name STDIN (#241, @hugheylab). Postgres NOTICE messages now forwarded proper R messages can captured suppressed (#208).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-4-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.4.0 (2021-09-25)","text":"dbQuoteLiteral() converts timestamp values input time zone, used writing tables Redshift (#325).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-4-0","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.4.0 (2021-09-25)","text":"Skip timestamp tests i386 (#318). dbSendQuery() dbQuoteLiteral() use single dispatch (#320). dbWriteTable() dbAppendTable() default copy = NULL, translates TRUE Postgres() FALSE Redshift() connections (#329).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"documentation-1-4-0","dir":"Changelog","previous_headings":"","what":"Documentation","title":"RPostgres 1.4.0 (2021-09-25)","text":"Order help topics pkgdown site. Use @examplesIf method documentation. Document field.types used dbWriteTable() (#206). Document setting tablespace writing table (#246). Tweak error message named params argument dbBind() (#266).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-133-2021-07-05","dir":"Changelog","previous_headings":"","what":"RPostgres 1.3.3 (2021-07-05)","title":"RPostgres 1.3.3 (2021-07-05)","text":"Fix dbConnect(check_interrupts = TRUE) Windows (#244, @zozlak). Windows: update libpq 13.2.0 add UCRT support (#309, @jeroen).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-132-2021-04-12","dir":"Changelog","previous_headings":"","what":"RPostgres 1.3.2 (2021-04-12)","title":"RPostgres 1.3.2 (2021-04-12)","text":"Remove BH dependency inlining header files (#300). Use Autobrew libpq older version 12 (#294, @jeroen). dbConnect() now issues SET datestyle iso, mdy avoid translation errors datetime values databases configured differently (#287, @baderstine).","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-3-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.3.1 (2021-01-19)","text":"Inf, -Inf NaN values returned correctly Windows (#267). Fix behavior invalid time zone (#284, @ateucher).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-3-1","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.3.1 (2021-01-19)","text":"dbConnect() defaults timezone_out = NULL, means use timezone. FORCE_AUTOBREW environment variable enforces use autobrew configure (#283, @jeroen). Fix configure macOS, small tweaks (#282, #283, @jeroen). Fix configure script, remove $() reliably detected checkbashisms. configure uses shell script longer forwards src/configure.bash (#265).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-130-2021-01-05","dir":"Changelog","previous_headings":"","what":"RPostgres 1.3.0 (2021-01-05)","title":"RPostgres 1.3.0 (2021-01-05)","text":"dbConnect() gains timezone_out argument, default NULL means use timezone (#222). dbQuoteLiteral() now quotes difftime values interval (#270). New postgresWaitForNotify() adds LISTEN/NOTIFY support (#237, @lentinj).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-3-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.3.0 (2021-01-05)","text":"Inf, -Inf NaN values returned correctly Windows (#267). DATETIME values (=without time zone) DATETIMETZ values (=time zone) returned correctly (#190, #205, #229), also start 1970 (#221).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-3-0","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.3.0 (2021-01-05)","text":"configure uses shell script longer forwards src/configure.bash (#265). Switch GitHub Actions (#268, thanks @ankane). Now imports lubridate package.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-121-2020-09-28","dir":"Changelog","previous_headings":"","what":"RPostgres 1.2.1 (2020-09-28)","title":"RPostgres 1.2.1 (2020-09-28)","text":"Gains new Redshift driver connecting Redshift databases. Redshift databases behave almost identically Postgres driver allows downstream packages distinguish two (#258). Datetime values now passed database using unambiguous time zone format (#255, @imlijunda). Document Postgres() together dbConnect() (#242). Windows: update libpq 12.2.0.","code":""},{"path":[]},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"communication-with-the-database-1-2-0","dir":"Changelog","previous_headings":"","what":"Communication with the database","title":"RPostgres 1.2.0 (2019-12-18)","text":"Breaking: Translate floating-point values DOUBLE PRECISION default (#194). Avoid aggressive rounding passing numeric values database (#184). Avoid adding extra spaces numerics (#216). Column names error messages UTF-8 encoded (#172). dbWriteTable(copy = FALSE), sqlData() dbAppendTable() now work character columns (#209), always converted UTF-8.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"new-features-1-2-0","dir":"Changelog","previous_headings":"","what":"New features","title":"RPostgres 1.2.0 (2019-12-18)","text":"Add timezone argument dbConnect() (#187, @trafficonese). Implement dbGetInfo() driver connection object. dbConnect() gains check_interrupts argument allows interrupting execution safely waiting query results ready (#193, @zozlak). dbUnquoteIdentifier() also handles unquoted identifiers form table schema.table, compatibility dbplyr. addition, catalog component supported quoting unquoting Id(). dbQuoteLiteral() available \"character\" (#209). Windows: update libpq 11.1.0. Fulfill CII badge requirements (#227, @TSchiefer).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"bug-fixes-1-2-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"RPostgres 1.2.0 (2019-12-18)","text":"Hide unused symbols shared library (#230, @troels). Fix partial argument matching dbAppendTable() (r-dbi/DBI#249). Fix binding whole numbers POSIXt timestamps (#191).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"internal-1-2-0","dir":"Changelog","previous_headings":"","what":"Internal","title":"RPostgres 1.2.0 (2019-12-18)","text":"sqlData(copy = FALSE) now uses dbQuoteLiteral() (#209). Add tests dbUnquoteIdentifier() (#220, @baileych). Improved tests numerical precision (#203, @harvey131). Fix test: change REAL DOUBLE PRECISION (#204, @harvey131). Implement dbAppendTable() connection class, don’t hijack base class implementation (r-dbi/RMariaDB#119). Avoid including call errors. Align DbResult classes RSQLite RMariaDB.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-113-2019-12-07","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.3 (2019-12-07)","title":"RPostgres 1.1.3 (2019-12-07)","text":"Replace std::mem_fn() boost::mem_fn() works older compilers.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-112-2019-12-03","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.2 (2019-12-03)","title":"RPostgres 1.1.2 (2019-12-03)","text":"Replace std::mem_fun_ref() std::mem_fn().","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-111-2018-05-05","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.1 (2018-05-05)","title":"RPostgres 1.1.1 (2018-05-05)","text":"Add support bigint argument dbConnect(), supported values \"integer64\", \"integer\", \"numeric\" \"character\". Large integers returned values type (r-dbi/DBItest#133). Data frames resulting query always unique non-empty column names (r-dbi/DBItest#137). New arguments temporary fail_if_missing (default: TRUE) dbRemoveTable() (r-dbi/DBI#141, r-dbi/DBI#197). Using dbCreateTable() dbAppendTable() internally (r-dbi/DBI#74). field.types argument dbWriteTable() now must named. Using current_schemas(true) also dbListObjects() dbListTables(), consistency dbListFields(). Objects pg_catalog schema still excluded. dbListFields() doesn’t list fields tables found pg_catalog schema. dbListFields() method now works correctly name argument quoted identifier class Id, throws error table found (r-dbi/DBI#75). Implement format() method SqliteConnection (r-dbi/DBI#163). Reexporting Id(), DBI::dbIsReadOnly() DBI::dbCanConnect(). Now imports DBI 1.0.0.","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-110-2018-04-04","dir":"Changelog","previous_headings":"","what":"RPostgres 1.1.0 (2018-04-04)","title":"RPostgres 1.1.0 (2018-04-04)","text":"Breaking change: dbGetException() longer reexported DBI. Make “typname” information available dbFetch() dbGetQuery(). Values unknown type returned character vector class \"pq_xxx\", \"xxx\" “typname” returned PostgreSQL. particular, JSON JSONB values now class \"pq_json\" \"pq_jsonb\", respectively. return value dbColumnInfo() gains new columns \".oid\" (integer), \". known\" (logical) \".typname\" (character) (#114, @etiennebr). Values class \"integer64\" now supported dbWriteTable() dbBind() (#178). Schema support, specified DBI: dbListObjects(), dbUnquoteIdentifier() Id(). Names x argument dbQuoteIdentifier() preserved output (r-dbi/DBI#173). generics defined DBI (e.g., dbGetQuery()) now exported, even package doesn’t provide custom implementation (#168). Replace non-portable timegm() private implementation. Correct reference RPostgreSQL package (#165, @ClaytonJY).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-10-4-2017-12-20","dir":"Changelog","previous_headings":"","what":"RPostgres 1.0-4 (2017-12-20)","title":"RPostgres 1.0-4 (2017-12-20)","text":"call PQcancel() query hasn’t completed, fixes transactions Amazon Redshift (#159, @mmuurr). Fix installation macOS. Check libpq version configure script (need least 9.0). Fix UBSAN warning: reference binding null pointer (#156). Fix rchk warning: PROTECT internal temporary SEXP objects (#157). Fix severe memory leak fetching results (#154).","code":""},{"path":"https://rpostgres.r-dbi.org/dev/news/index.html","id":"rpostgres-10-3-2017-12-01","dir":"Changelog","previous_headings":"","what":"RPostgres 1.0-3 (2017-12-01)","title":"RPostgres 1.0-3 (2017-12-01)","text":"Initial release, compliant DBI specification. Test almost test cases DBI specification. Fully support parametrized queries. Spec-compliant transactions. 64-bit integers now supported bit64 package. also means numeric literals (SELECT 1) returned 64-bit integers. bigint argument dbConnect() allows overriding data type per-connection basis. Correct handling DATETIME TIME columns. New default row.names = FALSE.","code":""}] diff --git a/dev/security.html b/dev/security.html index f24a4bfe..bc1de412 100644 --- a/dev/security.html +++ b/dev/security.html @@ -7,7 +7,7 @@ RPostgres - 1.4.7.9009 + 1.4.7.9010
Wickham H, Ooms J, Müller K (2024). RPostgres: C++ Interface to PostgreSQL. -R package version 1.4.7.9009, https://github.com/r-dbi/RPostgres, https://rpostgres.r-dbi.org. +R package version 1.4.7.9010, https://github.com/r-dbi/RPostgres, https://rpostgres.r-dbi.org.
@Manual{, title = {RPostgres: C++ Interface to PostgreSQL}, author = {Hadley Wickham and Jeroen Ooms and Kirill Müller}, year = {2024}, - note = {R package version 1.4.7.9009, https://github.com/r-dbi/RPostgres}, + note = {R package version 1.4.7.9010, https://github.com/r-dbi/RPostgres}, url = {https://rpostgres.r-dbi.org}, }
NEWS.md
Install local package for pkgdown builds.
Improve support for protected branches with fledge.
Improve support for protected branches, without fledge.