[ https://issues.apache.org/jira/browse/ARROW-15858?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dragoș Moldovan-Grünfeld updated ARROW-15858: --------------------------------------------- Priority: Critical (was: Major) > [C++][R] Can't cast integer difftime to duration (but works with double) > ------------------------------------------------------------------------ > > Key: ARROW-15858 > URL: https://issues.apache.org/jira/browse/ARROW-15858 > Project: Apache Arrow > Issue Type: Bug > Components: C++, R > Reporter: Dragoș Moldovan-Grünfeld > Priority: Critical > > It's possible to cast doubles to durations, but not integers. This has been > found in the R code via the issues below: > The shortest reprex I can make is as follows: > {code:r} > # Successfully cast a double to a duration > vec_to_Array(as.difftime(32, units = "secs"), NULL)$cast(duration()) > #> Array > #> <duration[s]> > #> [ > #> 32 > #> ] > # Fail to do so with an integer > vec_to_Array(as.difftime(32L, units = "secs"), NULL)$cast(duration()) > #> Error: NotImplemented: Unsupported cast from int32 to duration using > function cast_duration > {code} > ---------------------------------------------------------------------------- > I would expect both {{a}} and {{b}} to create a {{duration}} object of 32 > seconds, but the second one returns an {{int32}} > {code:r} > library(arrow, warn.conflicts = FALSE) > a <- as.difftime(32, units = "secs") # i.e. a double > b <- as.difftime(32L, units = "secs") # i.e. an integer > Array$create(a) > #> Array > #> <duration[s]> > #> [ > #> 32 > #> ] > Array$create(b) > #> Array > #> <int32> > #> [ > #> 32 > #> ] > {code} > If I try to be explicit, I get somewhat of a clue why that might be happening: > {code:r} > > Array$create(a, type = duration()) > #> Array > #> <duration[s]> > #> [ > #> 32 > #> ] > Array$create(b, type = duration()) > #> Error: > #> ! NotImplemented: Extend > {code} > Nevertheless, the fallback to creating an integer was unexpected. -- This message was sent by Atlassian Jira (v8.20.1#820001)