[
https://issues.apache.org/jira/browse/ARROW-18334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated ARROW-18334:
-----------------------------------
Labels: pull-request-available (was: )
> add function for timestamp/duration is not commutative
> ------------------------------------------------------
>
> Key: ARROW-18334
> URL: https://issues.apache.org/jira/browse/ARROW-18334
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
> Reporter: Weston Pace
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> The expression simplification currently has a small set of functions which it
> knows are commutative (IsBinaryAssociativeCommutative). "add" (and
> "add_checked" are in this list. This should be ok for
> add(timestamp,duration) since this boils down to add(int64,int64) which is
> commutative. However, the way the kernels are currently implemented, we are
> getting the incorrect output type.
> Concretely, we have kernels:
> {noformat}
> add_checked<Timestamp,Duration>() -> types[0]
> add_checked<Duration,Timestamp>() -> types[1]
> {noformat}
> A call is made with expression {{field_ref("x") + duration_literal}}. This
> call is bound to {{add_checked<Timestamp, Duration>}}. However, the
> expression is then simplified to {{duration_literal + field_ref("x")}}.
> Oddly enough, the math in this case is correct, since it is just addition,
> but the output type is not. It assigns an output type of duration instead of
> timestamp.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)