Iceberg v3 support: nanosecond timestamp types #2538
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Linked issue: Ref #2536
Add foundation type system support for Iceberg V3 nanosecond timestamp types. This is the first step toward full Iceberg V3 support in Fluss, enabling storage of timestamps with
nanosecond precision as required by the V3 specification.
Brief change log
TIMESTAMP_NANO_WITHOUT_TIME_ZONEandTIMESTAMP_NANO_WITH_LOCAL_TIME_ZONEtoDataTypeRootenumTimestampNanoTypeclass for timestamps without timezone (stored as 64-bit nanoseconds from epoch)LocalZonedTimestampNanoTypeclass for timestamps with local timezoneDataTypeVisitorandDataTypeDefaultVisitorwith new visit methodsTIMESTAMP_NS()andTIMESTAMP_NS_LTZ()factory methods toDataTypesFlussDataTypeToIcebergDataTypemapping toTypes.TimestampNanoTypeTests
DataTypesTest#testTimestampNanoType- Validates type creation, nullability, serialization, and type family membershipDataTypesTest#testLocalZonedTimestampNanoType- Validates timezone variant with same coverageIcebergTieringTestpasses with new type converter methodsAPI and Format
TimestampNanoTypeandLocalZonedTimestampNanoTypeto the type system