paleolimbot commented on code in PR #13397:
URL: https://github.com/apache/arrow/pull/13397#discussion_r915967027


##########
r/R/query-engine.R:
##########
@@ -190,7 +190,7 @@ ExecPlan <- R6Class("ExecPlan",
       }
       node
     },
-    Run = function(node) {
+    Run = function(node, as_table = FALSE) {

Review Comment:
   With the improvements to `SafeCallIntoR()` the failure mode a *little* 
better (at least mentions user-defined function).
   
   ``` r
   library(arrow, warn.conflicts = FALSE)
   #> Some features are not enabled in this build of Arrow. Run `arrow_info()` 
for more information.
   library(dplyr, warn.conflicts = FALSE)
   
   fun <- arrow_scalar_function(
     function(x) x + 1,
     int32(), int64()
   )
   
   register_user_defined_function(fun, "plus_one")
   
   record_batch(a = 2L) |> 
     mutate(b = plus_one(a)) |> 
     to_duckdb() |> 
     collect()
   #> Error in duckdb_execute(res): duckdb_execute_R: Failed to run query
   #> Error: Invalid Input Error: arrow_scan: get_next failed(): 
NotImplemented: Call to R (resolve scalar user-defined function output data 
type) from a non-R thread from an unsupported context
   #> 
/Users/deweydunnington/Desktop/rscratch/arrow/cpp/src/arrow/compute/kernel.cc:391
  resolver_(ctx, args)
   #> 
/Users/deweydunnington/Desktop/rscratch/arrow/cpp/src/arrow/compute/exec.cc:696 
 kernel_->signature->out_type().Resolve(kernel_ctx_, args.inputs)
   #> 
/Users/deweydunnington/Desktop/rscratch/arrow/cpp/src/arrow/compute/exec/expression.cc:602
  executor->Init(&kernel_context, {kernel, descrs, options})
   #> 
/Users/deweydunnington/Desktop/rscratch/arrow/cpp/src/arrow/compute/exec/project_node.cc:92
  ExecuteScalarExpression(simplified_expr, target, plan()->exec_context())
   #> 
/Users/deweydunnington/Desktop/rscratch/arrow/cpp/src/arrow/dataset/scanner.cc:79
  delegate_.Next()
   #> 
/Users/deweydunnington/Desktop/rscratch/arrow/cpp/src/arrow/c/bridge.cc:1651  
reader()->ReadNext(&batch)
   ```
   
   I could attempt something more automatic in this PR (like `read_table()` or 
`write_dataset()`) when this error occurs in `to_duckdb()`?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to