sqlMakeTopLevel <- function()

in R/R/sqlPackage.R [1840:1898]


sqlMakeTopLevel <- function(connectionString, packages, owner, scope, languageName)
{
    changeTo = 1
    haveUser <- (owner != '')

    if (haveUser)
    {
        user = "?"
        query = ""
    }
    else
    {
        user = "@currentUser"
        query = "DECLARE @currentUser NVARCHAR(128);
        SELECT @currentUser = CURRENT_USER;"
    }
    query = paste0(query, "EXEC sp_updateextendedproperty @name = N'IsTopPackage', @value=", changeTo,", @level0type=N'USER',
                   @level0name=", user, ", @level1type = N'external library', @level1name=?")

    packageList <- enumerateTopPackages(connectionString, packages, owner, scope, languageName)$name

    tryCatch(
    {
        hodbc <- connectToServer(connectionString)

        for(pkg in intersect(packages,packageList))
        {
            if (haveUser)
            {
                queryResult <- dbSendQuery(hodbc, query, owner, pkg)
            }
            else
            {
                queryResult <- dbSendQuery(hodbc, query, pkg)
            }

            result <- dbFetch(queryResult)
        }
    },
    error = function(err)
    {
        stop(sprintf("Attribution of packages %s failed with error %s",
                     paste(packages, collapse = ', '), err$message), call. = FALSE)
    },
    finally =
    {
        if(!is.null(queryResult))
        {
            dbClearResult(queryResult)
        }

        if (!is.null(hodbc))
        {
            dbDisconnect(hodbc)
        }
    })

    return(TRUE)
}