You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Type coord-array indices past the 32-bit range on the DuckDB fast path
The DuckDB fast write path derived the new_idx column types by inferring from
the remapped indices (arrowType(new_indices)) rather than using the pre-computed,
max_dim-aware idxtypes. With a > 2^31 along-axis offset the remapped indices are
a double, which inferred float64 and degraded to a DuckDB INTEGER temp column
that overflowed; and an append part could narrow differently from part 0.
.buildIndexMappings() now takes idxtypes and types new_idx from idxtypes[[j]]
(falling back to inference only when idxtypes is absent), so the index type
matches the R write path and is consistent across parts.
.validateMaxDim() also accepts a whole-number max_dim beyond the 32-bit range: it
validated integrality with `max_dim == as.integer(max_dim)`, overflowing such a
dimension to NA. It now checks integrality via round() without coercion and keeps
within-32-bit dims as integer, so a coordinate axis larger than ~2.1e9 can be
declared.
Tests: fast path types the index from a pinned max_dim (int32, not the uint8 the
50 present values would infer) and from a > 2^31 max_dim (uint32, no
float64/overflow). Small/within-range writes are unchanged.
0 commit comments