Neal Richardson created ARROW-18101:
---------------------------------------
Summary: [R] RecordBatchReaderHead from ExecPlan with UDF cannot
be read
Key: ARROW-18101
URL: https://issues.apache.org/jira/browse/ARROW-18101
Project: Apache Arrow
Issue Type: Bug
Components: R
Reporter: Neal Richardson
{code}
register_scalar_function(
"times_32",
function(context, x) x * 32.0,
int32(),
float64(),
auto_convert = TRUE
)
record_batch(a = 1:1000) %>%
dplyr::mutate(b = times_32(a)) %>%
as_record_batch_reader() %>%
head(11) %>%
as_arrow_table()
# Error: NotImplemented: Call to R (resolve scalar user-defined function output
data type) from a non-R thread from an unsupported context
# /arrow/cpp/src/arrow/compute/exec.cc:649
kernel_->signature->out_type().Resolve(kernel_ctx_, args.inputs)
# /arrow/cpp/src/arrow/compute/exec/expression.cc:602
executor->Init(&kernel_context, {kernel, types, options})
# /arrow/cpp/src/arrow/compute/exec/project_node.cc:91
ExecuteScalarExpression(simplified_expr, target, plan()->exec_context())
# /arrow/cpp/src/arrow/record_batch.cc:336 ReadNext(&batch)
# /arrow/cpp/src/arrow/record_batch.cc:350 ToRecordBatches()
{code}
It works fine if you don't call {{as_record_batch_reader()}} in the middle.
Oddly, it also works fine if you add {{as_adq()}} (aka {{collapse()}}) after
head() and before evaluating to table--that is, if you run it through an
ExecPlan again, it doesn't error.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)