Skip to content

Antalya 26.1: Support for 'time' type in Iceberg, reading only#1613

Open
ianton-ru wants to merge 4 commits intoantalya-26.1from
bugfix/antalya-26.1/1535_time_type_read_support_1
Open

Antalya 26.1: Support for 'time' type in Iceberg, reading only#1613
ianton-ru wants to merge 4 commits intoantalya-26.1from
bugfix/antalya-26.1/1535_time_type_read_support_1

Conversation

@ianton-ru
Copy link
Copy Markdown

Changelog category (leave one):

  • Bug Fix (user-visible misbehavior in an official stable release)

Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):

Support for 'time' type in Iceberg, reading only.

Documentation entry for user-facing changes

Solved #1535
This changes time format,.
Was - seconds from midnight:

SELECT * FROM datalake.`namespace.table`

43200

Now - time with microseconds

SELECT * FROM datalake.`namespace.table`

12:00:00.000000

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Performance tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All with Aarch64
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

Workflow [PR], commit [f0e1038]

@arthurpassos
Copy link
Copy Markdown
Collaborator

in the issue it is mentioned

Issue is present on 25.8, 26.1 altinityalntalya, but not present on 25.8, 26.1 upstream.

So my first guess would be it is a backport, but it doesn't look like. Looking at the diff, i see:

    case TypeIndex::Time64:
        assert_cast<ColumnDecimal<Time64> &>(column).insertValue(static_cast<Int64>(value));
        break;

which is not present in upstream https://github.com/ClickHouse/ClickHouse/blob/master/src/Processors/Formats/Impl/AvroRowInputFormat.cpp. Why?

@arthurpassos
Copy link
Copy Markdown
Collaborator

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f0e1038e83

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 245 to +246
if (type_name == f_time)
return std::make_shared<DataTypeInt64>();
return std::make_shared<DataTypeTime64>(6);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Support Time64 in manifest Avro type mapping

After f_time is remapped to DataTypeTime64(6), inserts into Iceberg tables partitioned by a time column can fail in the write path: ChunkPartitioner::getResultTypes() returns Time64, generateManifestFile() passes that into extendSchemaForPartitions(), and getAvroType() still has no TypeIndex::Time64 branch (it only handles TypeIndex::Time), so it throws Unsupported type for iceberg Time64(...). This is a regression from the previous Int64 mapping because writes for time-partitioned tables now error during manifest generation.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants