Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
This is a very initial attempt at removing the specialization features from the Rust Parquet implementation.
The specialisation is too complex to be covered by min_specialization and requires a bit of reworking in the crate.
Right now the code dispatches in sub-traits and methods on the Parquet type, and uses a combination of trait abuse, macros and transmutes to eliminate the feature.
I have broken this up into several commits ranging from the simplest removals (which could probably be taken fairly easily) to the most ugly and complex.
I am not stoked on the transmute abuse, and I think another take (or follow up) should be taken to remove as many as possible in the code.
The general trait for DataType::T has been made a private sealed trait to make it impossible to implement external to the Parquet crate, this is intentional as I dont think many of the public interfaces are sensible for end users to be able to implement.
TODO:
- Purge the added {{std::mem::transmute}}s if possible
- Refine and rationalise the unimplemented! implementations
- Performance test?
Attachments
Issue Links
- is related to
-
ARROW-10931 [Rust] [Parquet] Improve performance of the parquet compressors
- Open
- relates to
-
ARROW-6717 [Rust] Support stable Rust
- Closed
- links to