Replies: 6 comments 3 replies
-
|
I think we should add a built-in variant type support in Gravitino. |
Beta Was this translation helpful? Give feedback.
-
|
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. |
Beta Was this translation helpful? Give feedback.
-
|
I can help with the Iceberg V3 adaptation, such as supporting built-in types like Variant :) |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Proposal: Native
|
Beta Was this translation helpful? Give feedback.
-
|
Acknowledged — #11949 is now the canonical issue tracking native Iceberg V3 |
Beta Was this translation helpful? Give feedback.
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!
Beta Was this translation helpful? Give feedback.
All reactions