Skip to content

DType::from_arrow panics with unimplemented! for Duration, Interval and FixedSizeBinary instead of returning an error #8346

@joseph-isaacs

Description

@joseph-isaacs

Found by the Python API Hypothesis fuzzer (vortex-python/test/test_fuzz_file_roundtrip.py).

DType::from_arrow hits the unimplemented!() fallback arm in vortex-array/src/dtype/arrow.rs for unsupported Arrow types, which surfaces in Python as a pyo3_runtime.PanicException instead of a clean ValueError.

import pyarrow as pa
import vortex as vx

vx.array(pa.table({"c0": pa.array([1, 2], type=pa.duration("us"))}))
# pyo3_runtime.PanicException: not implemented: Arrow data type not yet supported: Duration(Microsecond)

vx.array(pa.table({"c0": pa.array([b"abc"], type=pa.binary(3))}))
# pyo3_runtime.PanicException: not implemented: Arrow data type not yet supported: FixedSizeBinary(3)

The fallback arm should return a VortexError (e.g. via a TryFrom-style conversion) so unsupported types fail cleanly. The fuzzer currently excludes Duration and FixedSizeBinary from generation; once this is fixed, those exclusions can be lifted and the clean error will be routed to the existing unsupported-type skip path.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions