Problem
Arrow-rs and Spark can derive different Arrow types and name matches from the same Parquet file. For projected Variant storage this can change the reconstructed value, reject a file Spark reads, or select the wrong physical column.
Parent: #5546
Depends on: #5549
Cleanup trackers: #5474, #5477
Resolved prerequisite: #5495 (merged in #5602)
Solution
At the projected, explicitly marked Variant boundary only:
The JVM Variant scan gate remains closed in this task.
Tests
Use generated Parquet inputs rather than committed fixtures for:
- encoded storage children and supported unsigned widths;
- timestamp, fixed binary, and fixed-size-list storage;
- positive and negative wide DECIMAL values;
- ENUM versus UTF8 versus raw BINARY;
- advisory Arrow-schema hints;
- field-ID shadowing and integration with the shared Unicode name matcher;
- encrypted fallback; and
- pruning that does not activate compatibility work for an unread Variant column.
Each compatibility branch must link its upstream owner and the corresponding cleanup tracker.
Problem
Arrow-rs and Spark can derive different Arrow types and name matches from the same Parquet file. For projected Variant storage this can change the reconstructed value, reject a file Spark reads, or select the wrong physical column.
Parent: #5546
Depends on: #5549
Cleanup trackers: #5474, #5477
Resolved prerequisite: #5495 (merged in #5602)
Solution
At the projected, explicitly marked Variant boundary only:
ARROW:schematypes from overriding Spark's physical Parquet interpretation.The JVM Variant scan gate remains closed in this task.
Tests
Use generated Parquet inputs rather than committed fixtures for:
Each compatibility branch must link its upstream owner and the corresponding cleanup tracker.