Antalya 26.6: Implement TRUNCATE TABLE for Iceberg Engine (REST … - #2125
Conversation
feature (iceberg): Implement TRUNCATE TABLE for Iceberg Engine (REST …
CI triageVerdict: 2 failing checks — both PR-caused, same root cause. Nothing flaky/infra/pre-existing. Both red checks (Build (arm_tidy) and Fast test) fail at compile time on the same code. Every other job shows There are two distinct compile problems: 1. Duplicate Iceberg field aliases in
|
|
@blau-ai commit the fix directly to this branch |
) The #1655 backport was written against the antalya-26.3 Iceberg writer API and did not compile on antalya-26.6, breaking Build (arm_tidy) and Fast test: * Constant.h re-added the `deleted_records` / `deleted_data_files` field aliases that antalya-26.6 already defines, causing macro redefinition errors. Drop the duplicate definitions. * IcebergMetadata::truncate() used the 26.3 FileNamesGenerator / MetadataGenerator / generateManifestList signatures. Rewrite it to follow the antalya-26.6 writer (IcebergStorageSink in IcebergWrites.cpp): - 4-arg FileNamesGenerator over resolver.getTableLocation(); - generateMetadataPathWithInfo() instead of the removed generateMetadataName(); - generateNextMetadata() now returns {snapshot, manifest_list_path}; resolve storage paths via IcebergPathResolver::resolve() and the catalog path via resolveForCatalog(); - generateManifestList(resolver, ...) with empty entry/size vectors. Metadata-only truncate semantics are unchanged. Not built locally; validated by CI on this PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Done — committed the fix directly to Commit: What changed (both compile errors from the triage above)1. 2.
The metadata-only truncate semantics (empty overwrite snapshot superseding all previous snapshots) are unchanged; the ValidationI can't build ClickHouse in this environment, so this is validated by CI on this PR, not locally. The two red checks (Build (arm_tidy), Fast test) both failed at compile time on exactly these two spots; a fresh run should now get past compilation. I'll be watching — ping me if anything downstream (e.g. the follow-on mismatches clang-tidy would have hidden behind its 5-error cap) still trips. |
|
The issue is reproducible locally. Will investigate and try to fix |
`test_iceberg_truncate.py` was written against `antalya-26.1`, where `docker_compose_iceberg_rest_catalog.yml` shipped its own `minio` service on port 9000 and published the REST catalog on the fixed host port 8182. Two later commits removed both: - `bba8284cd0b` replaced the fixed host port 8182 with a port allocated from the pool and exposed as `cluster.iceberg_rest_catalog_port`. - `48a014af159` dropped the per-catalog `minio`/`mc` services, so catalogs now use the standard `minio1` on port 9001. Both commits adapted the sibling test `test_read_in_order_with_pyiceberg.py`, but `test_iceberg_truncate.py` was merged in afterwards without the same adaptation, so it still referenced the deleted container and failed with `docker.errors.NotFound: No such container: ...-minio-1` in `get_instance_ip`. Derive the catalog URI from `cluster.iceberg_rest_catalog_port`, take the S3 endpoint from `cluster.minio_ip`/`cluster.minio_port`, and point `storage_endpoint` at `minio1:9001`, matching the sibling test. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CI triage for #2125Verdict: of all the red checks, only one is actually caused by this PR — the DCO sign-off. Everything else is pre-existing on Summary: 1 PR-caused (DCO), rest not (0 test regressions attributable to this PR). 🔴 PR-caused (fix required)
Fix (must be done by a human — I can't force-push). Since this is your own branch and only that commit needs it: Or, to avoid rewriting history, add a DCO remediation commit. Going forward, 🟢 Not caused by this PRStateless tests (
This is a reader-side reserved-field-id boundary check. This PR does not touch it — it only modifies the Iceberg write / TRUNCATE path ( Regression — Iceberg (1)/(2), release & aarch64 — the failing features are all
Plus, on aarch64 only, Regression — S3Export (part)/(partition), release & aarch64 — Regression — Swarms, release & aarch64 — Stress test (arm_release) — no crash / sanitizer / logical-error signature anywhere in the log; the failure is Grype Scan (server, non-alpine) — the scan reports "Completed with 0 high/critical vulnerabilities" but the job ran 6h 0m → it timed out. The alpine/keeper variants passed. Infra timeout; this PR changes no dependencies or Dockerfiles. Safe to re-run.
|
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Frontport for Antalya 26.3
CI/CD Options
Exclude tests:
Regression jobs to run:
Cherry-picked from #1655.
Adaptation notes for antalya-26.3
The following API changes between antalya-26.1 and antalya-26.3 required adaptation:
RestCatalogconstructor signature updated to matchantalya-26.3calling convention inDataLakeConfiguration.hDatabaseDataLakeSettingmember names updatedCargo.lockrestored toantalya-26.3version (our changes do not touch any Rust code)All feature logic is identical to the merged antalya-26.1 implementation.