-
Notifications
You must be signed in to change notification settings - Fork 4k
Closed
Description
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:
# 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_durationI would expect both a and b to create a duration object of 32 seconds, but the second one returns an int32
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
#> ]If I try to be explicit, I get somewhat of a clue why that might be happening:
Array$create(a, type = duration())
#> Array
#> <duration[s]>
#> [
#> 32
#> ]
Array$create(b, type = duration())
#> Error:
#> ! NotImplemented: ExtendNevertheless, the fallback to creating an integer was unexpected.
Reporter: Dragoș Moldovan-Grünfeld / @dragosmg
Related issues:
- [C++] Provide a way to go from numeric to duration (is superceded by)
Note: This issue was originally created as ARROW-15858. Please see the migration documentation for further details.