Skip to content

Antalya 26.8: Implement additional Iceberg drop partition features - #2613

Merged
zvonand merged 1 commit into
antalya-26.8from
feature/antalya-26.8/advanced-iceberg-drop-partition
Oct 20, 2026
Merged

zvonand merged 1 commit into
antalya-26.8from
feature/antalya-26.8/advanced-iceberg-drop-partition

Conversation

@xieandrew

Copy link
Copy Markdown
Collaborator

Based on backport PR #2533 for basic DROP PARTITION for Iceberg. Rework of #2361 for 26.8. Adds support for catalog tables, purging data files, mixed manifests, equality deletes, and partition spec evolution for Iceberg DROP PARTITION.

Changelog category (leave one):

  • Experimental Feature

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

Add support for catalog tables, purging data files, mixed manifests, equality deletes, and partition spec evolution for Iceberg DROP PARTITION.

Documentation entry for user-facing changes

...

CI/CD Options

Exclude tests:

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

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • CAS (content-addressed storage; Antalya only)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • OAuth (5m)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

Add support for catalog tables, purging data files,
mixed manifests, equality deletes, and partition
spec evolution for Iceberg `DROP PARTITION`.

Signed-off-by: Andrew Xie <dev@xie.is>
@xieandrew xieandrew changed the title Implement additional Iceberg drop partition features Antalya 26.8: Implement additional Iceberg drop partition features Oct 19, 2026
@github-actions

Copy link
Copy Markdown

Workflow [PR], commit [d73e882]

@xieandrew xieandrew added the antalya-26.8 Session label (releasy session config) label Oct 19, 2026
@zvonand zvonand added the port-antalya PRs to be ported to all new Antalya releases label Oct 20, 2026
@zvonand

zvonand commented Oct 20, 2026

Copy link
Copy Markdown
Member

please, do not forget to put port-antalya labels to the PRs that will later be ported to future releases

@zvonand

zvonand commented Oct 20, 2026

Copy link
Copy Markdown
Member

@blau-ai

@blau-ai

blau-ai commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

CI triage for d73e8821

Verdict: 0 PR-caused failures. Every red check is pre-existing, flaky, or infra. The failures land in subsystems this PR doesn't touch (Hybrid table engine, swarms node-failure stress, Azurite config, container CVE scans), while the suites that do exercise your code — iceberg_1, iceberg_2, all s3_*/parquet_*/alter_*partition regression modules, and every stateless/integration/unit test — are green. This PR only changes src/Storages/ObjectStorage/DataLakes/Iceberg/*, the partition docs, and two Iceberg integration tests.

Evidence baseline: the previous merge into antalya-26.8 (#2586, e1e35b8) shows the same Grype, Parser-memory, and swarms failures, and passed the stress test — i.e. these are branch-level/flaky, not introduced here.

Check Class PR-caused? Evidence
GrypeScanKeeper (4 high/crit) infra / deps ❌ No Identical 4 vulns on base #2586; no Dockerfile/deps in this PR
GrypeScanServer (-alpine) (1 high/crit) infra / deps ❌ No Identical on base #2586
Parser memory check infra ❌ No ERROR: No master clickhouse-examples artifact was found (missing baseline binary); same failure on base #2586
Stress test (amd_asan_ubsan) pre-existing flaky ❌ No See below — Hybrid-engine test, not Iceberg; passed on base #2586
Regression swarms flaky / infra ❌ No Same module fails on base #2586; node-failure/cpu-overload socket timeouts
Regression s3_azure_1 flaky / infra ❌ No Azurite/config env issue; s3_azure_2 + all aws_s3/gcs/minio modules pass
PR (aggregate gate) rollup ❌ No Red only because of the above

Details

Stress test (amd_asan_ubsan) — server fails to restart:

Code: 60. Table default.test_tiered_watermark_before does not exist.
  Cannot attach table test_5.test_tiered_watermark ...
  ENGINE = Hybrid(remote(..., 'test_5', 'test_tiered_watermark_after'), date >= '2025-09-01',
                  remote(..., currentDatabase(), 'test_tiered_watermark_before'), date < '2025-09-01')

test_tiered_watermark comes from tests/queries/0_stateless/03643_hybrid.sql, the Hybrid table engine feature (merged via #2144), not from this PR. The restart fails because currentDatabase() embedded in the stored remote(...) resolves to default instead of test_5 on ATTACH. It's restart-sample-dependent (hence it passed on #2586) and lives entirely in the Hybrid feature. Not related to Iceberg drop-partition.

Regression swarms (3 scenarios, also failing on base #2586):

  • cluster discovery/check cluster discovery with wrong cluster name → Code: 279 ALL_CONNECTION_TRIES_FAILED
  • node failure/cpu overload → Code: 209 SOCKET_TIMEOUT (300s) under induced node failure + CPU overload
  • node failure/cpu overload all swarm nodes → Code: 209 SOCKET_TIMEOUT

All are server-side connection/timeout errors under node-failure stress conditions. No failing scenario name mentions iceberg/drop-partition; the two node-failure cases issue SELECT count() reads against datalakecatalog_db_* tables (not a write/drop path) and time out under load.

Regression s3_azure_1 (2 scenarios):

  • disk/remote host filter → server unhealthy: URL "http://azurite:10000" is not allowed ... remote_url_allow_hosts (UNACCEPTABLE_URL) + SSL tlsv1 alert unknown ca
  • disk/syntax → check_preprocessed_config_is_updated assertion (config reload)

Both are Azurite endpoint / config-reload environment issues. Note s3_azure_2 and every other object-storage backend (aws_s3, gcs, minio) passed, which rules out a systemic storage-code regression.

Recommended next steps

  • Re-run Stress (amd_asan_ubsan), Regression swarms, and Regression s3_azure_1 — they're flaky/infra and unrelated to this change.
  • Grype and Parser memory check are infra/branch-level (missing master baseline binary; base-image CVEs); they are red on the base branch too and aren't fixable from this PR.
  • Optional, out of scope for this PR: the Hybrid-engine restart bug (currentDatabase() captured literally in a remote(...) and mis-resolving on ATTACH) is a genuine latent issue worth a separate ticket against the Hybrid feature (Antalya 26.6: Hybrid tables #2144).

PR health

The change is scoped and self-consistent: Iceberg drop-partition code + docs + targeted integration tests, with the Iceberg and object-storage regression suites and the full functional/integration/unit matrix passing on d73e8821. No action is required on this PR for the current red checks.

🤖 Automated triage by @blau-ai. Report data is from the praktika S3 reports; I cannot build or run ClickHouse, so final correctness is confirmed by CI.

@zvonand
zvonand merged commit 25d9892 into antalya-26.8 Oct 20, 2026
301 of 315 checks passed
@DimensionWieldr

Copy link
Copy Markdown
Collaborator

CI triage looks fine.

Issues were found through AI audit, and I opened an issue here: #2620

Drop partition regression tests in iceberg/tests/iceberg_engine/drop_partition.py pass.

@DimensionWieldr DimensionWieldr added verified Approved for release verified-with-issues Verified by QA and issues found. labels Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

antalya antalya-26.8 Session label (releasy session config) port-antalya PRs to be ported to all new Antalya releases verified Approved for release verified-with-issues Verified by QA and issues found.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants