apache / apache/gravitino

[Subtask] Complete V3 type compatibility for the Flink connector

Open
#12,058 0 comments 0 reactions 1 assignee Claimed by @nevzheng View on GitHub
2.0.0 subtask
Dominant language
Java
Stars
3.2k
Forks
935
Avg merge
1d 17h
Merged PRs (30d)
339

Description

### Describe the subtask

Complete and document the five-family compatibility contract for Flink 1.18 through 1.20.

**Compatibility outcomes**

- **Nanosecond timestamps:** Round-trip exactly through `TIMESTAMP(9)` and `TIMESTAMP_LTZ(9)`. Reject precision 10 through 12 and unrepresentable offset semantics.
- **Variant:** Reject because the supported Flink versions have no faithful equivalent.
- **Unknown/Null:** Round-trip nullable Unknown through Flink `NULL`; reject non-null fields.
- **Geometry:** Reject with a CRS-preservation explanation.
- **Geography:** Reject with a CRS and edge-algorithm preservation explanation.

**Acceptance**

- Reproduce all five families through the connector's public create/conversion path and its alter/load paths where supported.
- A supported mapping must round-trip without losing type identity or parameters.
- An unsupported mapping must return `IllegalArgumentException` before external metadata mutation; no fallback to a narrower or opaque type is allowed.
- Cover nested types where the connector supports complex columns.
- Add focused converter/operation tests and an integration or no-side-effect test appropriate to the connector.
- Update the connector documentation with a five-family compatibility matrix and rejection rationale.
- Keep implementation commits atomic by connector and type family.

**Connector-specific verification**

Reproduce through `TypeUtils` and catalog-create conversion. Verify exact round trips for supported values and pre-mutation rejection for unsupported values in the shared suite and the Flink 1.18, 1.19, and 1.20 suites.

**Documentation**

`docs/flink-connector/flink-connector.md`

### Parent issue

#12056

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.