Skip to content

[Rust] Remove specialisation from Rust parquet #26592

@asfimport

Description

@asfimport

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::transmutes if possible
  • Refine and rationalise the unimplemented! implementations
  • Performance test?

Reporter: Greg Bowyer / @GregBowyer
Assignee: Greg Bowyer / @GregBowyer

Related issues:

PRs and other links:

Note: This issue was originally created as ARROW-10636. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions