in R/R/sqlPackage.R [2306:2358]
sqlSyncRemovePackages <- function(hodbc, pkgs, externalLibraryIds, scope, user, queryUser, verbose, languageName)
{
if(verbose)
{
write(sprintf("%s Removing packages from library path, this may take some time...", pkgTime()), stdout())
}
scopeint <- parseScope(scope)
checkdf <- sqlRemoteExecuteFun(hodbc, findPackages, pkgs, scopeint, asuser = user, languageName = languageName)
if(!(is.null(externalLibraryIds) || is.null(queryUser)))
{
setupFailures <- sqlQueryExternalLibrarySetupErrors(hodbc, externalLibraryIds, queryUser)
# issue specific errors for packages that failed to be removed from the library path
#
if((!is.null(setupFailures)) && (nrow(setupFailures) > 0))
{
errors <- mapply(
function(packageName, errorCode, errorMessage)
{
sprintf("failed to remove package (%s) from library path: user='%s', scope='%s', error code='%s', error message='%s'", packageName, user, scope, as.hexmode(errorCode), errorMessage)
},
setupFailures[,"name"], setupFailures[,"error_code"], setupFailures[,"error_message"]
)
stop(paste(errors, collapse = " ; "), call. = FALSE)
}
}
# issue generic errors for packages that are still present in the library path
#
failedPackages <- unlist(mapply(
function(packageName,found)
{
if (found == TRUE)
{
return (packageName)
}
return (NULL)
},
checkdf[,"Package"], checkdf[,"Found"],
SIMPLIFY=TRUE,
USE.NAMES=FALSE
))
if(length(failedPackages) > 0)
{
stop(sprintf("failed to remove packages (%s) from library path: user='%s', scope='%s'", paste(failedPackages, collapse = ", "), user, scope), call. = FALSE)
}
return(pkgs)
}