Neal Richardson created ARROW-17601:
---------------------------------------
Summary: [C++] Error when creating Expression on Decimal128 types:
precision out of range
Key: ARROW-17601
URL: https://issues.apache.org/jira/browse/ARROW-17601
Project: Apache Arrow
Issue Type: Bug
Components: C++
Reporter: Neal Richardson
Reproducer in R:
{code}
library(arrow)
library(dplyr)
tab <- Table$create(col1 = 1:4, col2 = 5:8)
tab <- tab$cast(schema(col1 = decimal128(33, 4), col2 = decimal128(15, 2)))
tab %>% mutate(col1 * col2)
# Error: Invalid: Decimal precision out of range [1, 38]: 49
# /Users/me/arrow/cpp/src/arrow/compute/kernels/scalar_arithmetic.cc:1078
DecimalType::Make(left_type.id(), precision, scale)
# /Users/me/arrow/cpp/src/arrow/compute/exec/expression.cc:413
call.kernel->signature->out_type().Resolve(&kernel_context, types)
{code}
With integers and floats, we upcast to a wider size in some compute functions
like multiplication. Should this go up to Decimal256? Or is there a better way
to determine the size required?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)