Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-6717 [Rust] Support stable Rust
  3. ARROW-10636

[Rust] Remove specialisation from Rust parquet

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              gbowyer@fastmail.co.uk Greg Bowyer
              gbowyer@fastmail.co.uk Greg Bowyer
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 8h 50m
                  8h 50m