Skip to content

Conversation

@Shekharrajak
Copy link

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

  • Add TIMESTAMP_NANO_WITHOUT_TIME_ZONE and TIMESTAMP_NANO_WITH_LOCAL_TIME_ZONE to DataTypeRoot enum
  • Add TimestampNanoType class for timestamps without timezone (stored as 64-bit nanoseconds from epoch)
  • Add LocalZonedTimestampNanoType class for timestamps with local timezone
  • Update DataTypeVisitor and DataTypeDefaultVisitor with new visit methods
  • Add TIMESTAMP_NS() and TIMESTAMP_NS_LTZ() factory methods to DataTypes
  • Add Iceberg type conversion in FlussDataTypeToIcebergDataType mapping to Types.TimestampNanoType

Tests

  • DataTypesTest#testTimestampNanoType - Validates type creation, nullability, serialization, and type family membership
  • DataTypesTest#testLocalZonedTimestampNanoType - Validates timezone variant with same coverage
  • Existing IcebergTieringTest passes with new type converter methods

API and Format

  • API: Adds new public types TimestampNanoType and LocalZonedTimestampNanoType to the type system
  • Format: No storage format changes in this PR. Types will be used when V3 table support is enabled.

@Shekharrajak Shekharrajak changed the title Feature/iceberg v3 support Iceberg v3 support: nanosecond timestamp types Feb 1, 2026
@Shekharrajak
Copy link
Author

Please approve hte workflow trigger

@MehulBatra MehulBatra marked this pull request as draft February 3, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant