The rust abdc_ffi driver exporter exports result readers via arrow-rs's FFI_ArrowArrayStream::new, whose error→errno mapping is hardcoded to the ArrowError variant: NotYetImplemented→ENOSYS, MemoryError→ENOMEM, IoError→EIO, everything else→EINVAL.
Rust ADBC drivers surface their adbc_core::error::Error through ArrowError::ExternalError, which lands in the EINVAL catch-all — so a driver whose in-flight query was cancelled has no way to report ECANCELED through the C stream, even though the ADBC spec (and the C++ validation suite's SqlQueryCancel) expect exactly that errno after AdbcStatementCancel.
Environment/Setup
adbc_ffi 0.23.0 (also present in current main)
The rust
abdc_ffidriver exporter exports result readers via arrow-rs'sFFI_ArrowArrayStream::new, whose error→errno mapping is hardcoded to theArrowErrorvariant:NotYetImplemented→ENOSYS,MemoryError→ENOMEM,IoError→EIO, everything else→EINVAL.Rust ADBC drivers surface their
adbc_core::error::ErrorthroughArrowError::ExternalError, which lands in theEINVALcatch-all — so a driver whose in-flight query was cancelled has no way to reportECANCELEDthrough the C stream, even though the ADBC spec (and the C++ validation suite'sSqlQueryCancel) expect exactly that errno afterAdbcStatementCancel.Environment/Setup
adbc_ffi0.23.0 (also present in currentmain)