Summary
Building chutoro-providers-dense fails after bumping parquet to v58.0.0 (PR #107) because the crate directly depends on arrow_array and arrow_schema at v57.x, while parquet v58.0.0 requires v58.x of those same crates. Cargo ends up with two versions of each in the dependency graph, and the trait and type identities diverge.
Errors
E0599 — wrong RecordBatchReader version imported
error[E0599]: no method named `schema` found for struct `ParquetRecordBatchReader` in the current scope
--> chutoro-providers/dense/src/provider.rs:83:29
|
83 | let schema = reader.schema();
| ^^^^^^ private field, not a method
|
note: there are multiple different versions of crate `arrow_array` in the dependency graph
RecordBatchReader is imported from arrow_array v57 in provider.rs, but ParquetRecordBatchReader (from parquet v58) implements the v58 version of the trait. The two trait instances are not interchangeable.
E0277 — From<ArrowError> not implemented for the v58 error type
error[E0277]: `?` couldn't convert the error to `DenseMatrixProviderError`
--> chutoro-providers/dense/src/provider.rs:95:30
DenseMatrixProviderError in errors.rs implements From<arrow_schema::ArrowError> (v57 path), but the iterator from parquet v58 yields arrow_schema::error::ArrowError (v58 path).
E0308 — DataType from two different arrow_schema versions
error[E0308]: mismatched types
--> chutoro-providers/dense/src/provider.rs:102:29
|
102 | actual: column_array.data_type().clone(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `arrow_schema::DataType`, found `arrow_schema::datatype::DataType`
The DataType used in errors.rs comes from arrow_schema v57, while data_type() on an array from parquet v58 returns the v58 type.
Fix
Bump the direct dependencies on arrow-array and arrow-schema (and any other arrow-* crates) in chutoro-providers/dense/Cargo.toml to v58.x to align with parquet v58.0.0.
References
Raised by @leynos.
Summary
Building
chutoro-providers-densefails after bumpingparquetto v58.0.0 (PR #107) because the crate directly depends onarrow_arrayandarrow_schemaat v57.x, whileparquetv58.0.0 requires v58.x of those same crates. Cargo ends up with two versions of each in the dependency graph, and the trait and type identities diverge.Errors
E0599 — wrong
RecordBatchReaderversion importedRecordBatchReaderis imported fromarrow_arrayv57 inprovider.rs, butParquetRecordBatchReader(fromparquetv58) implements the v58 version of the trait. The two trait instances are not interchangeable.E0277 —
From<ArrowError>not implemented for the v58 error typeDenseMatrixProviderErrorinerrors.rsimplementsFrom<arrow_schema::ArrowError>(v57 path), but the iterator fromparquetv58 yieldsarrow_schema::error::ArrowError(v58 path).E0308 —
DataTypefrom two differentarrow_schemaversionsThe
DataTypeused inerrors.rscomes fromarrow_schemav57, whiledata_type()on an array fromparquetv58 returns the v58 type.Fix
Bump the direct dependencies on
arrow-arrayandarrow-schema(and any otherarrow-*crates) inchutoro-providers/dense/Cargo.tomlto v58.x to align withparquetv58.0.0.References
chutoro-providers/dense/src/provider.rschutoro-providers/dense/src/errors.rsRaised by @leynos.