hreddygayam opened a new pull request, #18537:
URL: https://github.com/apache/iceberg/pull/18537

   ## Why
   
   The File Format API TCK (apache/iceberg#15415) has no concrete binding for 
the generic (`Record`) object model — only Spark and Flink, whose engine row 
types cannot represent several Iceberg types. As a result, type coverage that 
only the file formats + generic model support (for example geospatial) could 
not be exercised at all. This adds the generic binding and closes the V3 
**geometry/geography** coverage gap.
   
   ## What
   
   - **`TestGenericFormatModel`** — a `BaseFormatModelTests<Record>` binding 
that runs the full TCK matrix against Avro, ORC and Parquet with the generic 
object model.
   - **`Geometry` / `Geography` data generators** (default `OGC:CRS84`), 
registered in `DataGenerators.ALL`.
   - **`FEATURE_GEOSPATIAL`** feature gate: ORC has no geospatial object-model 
support (`IllegalArgumentException: Unhandled type GEOMETRY`), so it is 
declared missing and `supportsGenerator` skips the geo generators for ORC. Avro 
and Parquet round-trip geospatial values and are covered.
   - Spark/Flink engine bindings add `GEOMETRY`/`GEOGRAPHY` to 
`UNSUPPORTED_TYPE_IDS` so the geo-only generators are cleanly skipped there 
(via the existing `assumeThat` path).
   - The generic binding normalizes nested non-`Record` structs — the 
`_partition` metadata column materializes as `PartitionData` — back into 
`GenericRecord` for comparison.
   
   ## Testing
   
   `./gradlew :iceberg-data:test --tests "*TestGenericFormatModel"` → **420 
tests, 0 failures, 26 skipped**. All 28 geometry/geography parameterizations 
pass on Avro and Parquet; ORC is gated out. `:iceberg-data:spotlessJavaCheck` 
passes.
   
   Empirically-confirmed geo round-trip support (generic engine):
   
   | Format | geometry | geography |
   |--------|----------|-----------|
   | Avro | PASS | PASS |
   | ORC | unsupported (gated) | unsupported (gated) |
   | Parquet | PASS | PASS |
   
   > Note: the data module is verified here. The Spark/Flink changes are 
two-constant additions to existing `Set.of(...)` exclusion sets; their module 
test suites should be run before merge.
   
   ## Follow-ups (not in this PR)
   
   - Non-default CRS / `EdgeAlgorithm` round-trip coverage.
   - Wire ORC geospatial object-model support, then drop `FEATURE_GEOSPATIAL` 
from ORC's missing set.
   
   Relates to apache/iceberg#15415.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to