From a58786010326acd59b2143b9d1cbc17dce4f7ff0 Mon Sep 17 00:00:00 2001 From: blundellc Date: Sat, 13 Sep 2008 13:23:28 +0000 Subject: [PATCH] db: sql conformant quoting, use NULL not NA for missing values, allow build log overwrite. git-svn-id: svn://svn.r-forge.r-project.org/svnroot/cran2deb@99 edb9625f-4e0d-4859-8d74-9fd3b1da38cb --- pkg/trunk/R/db.R | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pkg/trunk/R/db.R b/pkg/trunk/R/db.R index c73f98e..8c26c15 100644 --- a/pkg/trunk/R/db.R +++ b/pkg/trunk/R/db.R @@ -74,7 +74,7 @@ db_stop <- function(con,bump=F) { } db_quote <- function(text) { - return(paste('"',gsub('([^][[:alnum:][:space:]*?.,()<>;:/=+%-])','\\\\\\1',text),'"',sep='')) + return(paste('\'', gsub('([\'"])','\\1\\1',text),'\'',sep='')) } db_now <- function() { @@ -98,6 +98,13 @@ db_get_base_epoch <- function() { return(v) } +db_get_version <- function() { + con <- db_start() + v <- db_cur_version(con) + db_stop(con) + return(v) +} + db_add_version <- function(con, version, epoch) { dbGetQuery(con,paste('INSERT INTO database_versions (version,version_date,base_epoch)' ,'VALUES (',as.integer(version),',',db_now(),',',as.integer(epoch),')')) @@ -118,7 +125,7 @@ db_sysreq_override <- function(sysreq_text) { ,db_quote(tolower(sysreq_text)),'LIKE r_pattern')) db_stop(con) if (length(results) == 0) { - return(NA) + return(NULL) } return(results$depend_alias) } @@ -276,7 +283,7 @@ db_update_package_versions <- function() { db_record_build <- function(package, deb_version, log, success=F) { con <- db_start() - dbGetQuery(con,paste('INSERT INTO builds' + dbGetQuery(con,paste('INSERT OR REPLACE INTO builds' ,'(package,r_version,deb_epoch,deb_revision,db_version,success,log)' ,'VALUES' ,'(',db_quote(package) @@ -298,21 +305,25 @@ db_latest_build <- function(pkgname) { ,'WHERE id = max_id' ,'AND builds.package =',db_quote(pkgname))) db_stop(con) + if (length(build) == 0) { + return(NULL) + } + build$success <- as.logical(build$success) return(build) } db_latest_build_version <- function(pkgname) { build <- db_latest_build(pkgname) - if (length(build) == 0) { - return(NA) + if (is.null(build)) { + return(NULL) } return(version_new(build$r_version, build$deb_revision, build$deb_epoch)) } db_latest_build_status <- function(pkgname) { build <- db_latest_build(pkgname) - if (length(build) == 0) { - return(NA) + if (is.null(build)) { + return(NULL) } return(c(build$success,build$log)) } -- 2.39.5