The Vertica Forum recently got a makeover! Let us know what you think by filling out this short, anonymous survey.
Please take this survey to help us learn more about how you use third party tools. Your input is greatly appreciated!

UDTF R Error: RInterface.cpp:1387 Unable to find the cause.

edited March 2017 in General Discussion

Hi,

I am getting the following error when running an updated R UDF that calculates p-values. Having a very difficult time determining the cause of the error. We have similar code to calculate a fisher test which is working. Could use some help determining the cause of the error. The complete R UDF code is below.

[Vertica]VJDBC ERROR: Failure in UDx RPC call InvokeProcessPartition(): Error calling processPartition() in User Defined Object [p_adjust] at [/scratch_a/release/svrtar28745/vbuild/vertica/OSS/UDxFence/RInterface.cpp:1387], error code: 0, message: Exception in processPartitionForR: [Returned string value '[90]' with length [2] is greater than declared field length of [1] at output column index [0]])

R_version: R version 3.3.2 (2016-10-31)
Vertica Analytic Database v7.2.3-14


whatcurrentTime <- function() {
return(format(Sys.time(), "%Y-%m-%d %H:%M:%S"))
}

logMessage <- function(message) {
print(paste0(c(message, ": ", currentTime()), collapse=""))
}

p_adjust <- function(data, params) {
logMessage("Executing p_adjust")
logMessage("Extracting parameter values")

colnames(data) <- c("ID", "p_value")

res <- data.frame(ID=data$ID, p_value=data$p_value, stringsAsFactors=FALSE)

p_adjust_method <- match.arg(params[["method"]], choices=p.adjust.methods, several.ok=FALSE)

logMessage("Calculating adjusted p-values")
res$padj <- p.adjust(data$p_value, method=p_adjust_method)

return(res)

}

p_adjust_factory <- function() {
return(list(name=p_adjust, udxtype=c("transform"), intype=c("char", "float"),
outtype=c("char", "float", "float"),
outtypecallback=p_adjust_output, parametertypecallback=p_adjust_parameters, volatility=c("stable")))
}

p_adjust_output <- function(data, params) {
return(data.frame(datatype = c("char", "float", "float"), length = NA, scale = NA,
name = c("ID", "p_value", "padj")))
}

p_adjust_parameters <- function(data, params) {
return(data.frame(datatype = c("varchar"), length = NA, scale = NA, name = c("method")))
}

--- EOF ----

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file