Replies: 6 comments 3 replies
|
I think we should add a built-in variant type support in Gravitino. |
|
Maybe we can fix the error types in version 1.3 using external type. We can add new built-in type in version 2.0. Just my cent. |
|
I can help with the Iceberg V3 adaptation, such as supporting built-in types like Variant :) |
|
Proposal: Native
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Current state
While working on #11927 / #11928 (the native API failing to load Iceberg tables with a V3
variantcolumn), I found that Gravitino's unified type model has no representation for Iceberg's V3 net-new types. With #11928 merged, all of them load through the native API asExternalType:variantexternal(variant)geometryexternal(GEOMETRY)geographyexternal(GEOGRAPHY)timestamp_nsexternal(TIMESTAMP_NANO)TimestampTypetakes a precisiontimestamptz_nsexternal(TIMESTAMP_NANO)TimestampTypetakes a precisionunknownexternal(UNKNOWN)NullType— defer to maintainersThe question
Is this working-as-intended, or do we want native support for these types — and if so, how?
Decisions we need
ExternalTypethe intended long-term mapping for Iceberg V3 types, or is this a gap to close?Options to seed the discussion
ExternalType. Document the limitations, defer native support. This is whatExternalTypewas designed for ([Subtask] Add ExternalType for unsolved catalog type #3500). But note the downstream cost:external(...)columns aren't always consumable — e.g.external(serial)failed when queried through Trino ([Improvement] Unsupported Gravitino datatype: external(serial) when querying via Trino #10957), and the fix there was to give the type a native mapping rather than leave it external.VariantType, geospatial types) to the unified model. These are independent types (variant, geospatial, nanosecond timestamps), so they could be pursued separately / incrementally rather than as one change.timestamp_nsin particular looks close —TimestampTypealready carries precision ([Improvement] support for time and timestamp types with precision #2431).References
How the escape hatches were designed
ExternalTypedata type #3501 —ExternalTypeadded for "unsolved catalog type" (its intended purpose).Unknowncolumn data type to handle an unresolvable type from the catalog #2117 / [#2117] improvement(api): Type adds UNPARSED column data type to handle an unresolvable type from the catalog #2140 —UnparsedTypeadded to handle an unresolvable type from the catalog (the alternative fallback).Where
ExternalTypehas caused problemsexternal(serial)unqueryable via Trino; resolved by mapping to a native type.ExternalType.catalogString()written verbatim into DDL SQL (write-path hazard).ExternalType.Iceberg V3 surface
variantload bug + fix that surfaced this.varianttype in JDBC catalog backend of Iceberg REST Server #10994 — variant on the IRC/JDBC backend; noted as under a dedicated community meeting.Timestamp precision precedent
timestamp_nslooks representable natively).cc @roryqi @markhoerth — can you help me find the right people to pull into this thread? Thanks!
All reactions