Skip to content

Antalya 26.6: support external paths in Iceberg tables - #2151

Open
zvonand wants to merge 2 commits into
antalya-26.6from
feature/antalya-26.6/pr-1859
Open

Antalya 26.6: support external paths in Iceberg tables#2151
zvonand wants to merge 2 commits into
antalya-26.6from
feature/antalya-26.6/pr-1859

Conversation

@zvonand

@zvonand zvonand commented Aug 3, 2026

Copy link
Copy Markdown
Member

Changelog category (leave one):

  • Improvement

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

Support Iceberg tables that have data files outside the table location or on a different object storage. Cherry-picked from ClickHouse#90740 (by @zvonand) (#1859 by @zvonand).

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)

Cherry-picked from #1859.

zvonand added 2 commits August 3, 2026 16:10
…next commit)

---
Original cherry-pick message follows:

Merge pull request #1859 from Altinity/feat/antalya-26.3/90740

Antalya 26.3: support external paths in Iceberg tables
# Conflicts:
#	src/IO/S3/URI.cpp
#	src/IO/S3/URI.h
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Compaction.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergDataObjectInfo.h
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergIterator.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergIterator.h
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergMetadata.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergMetadata.h
#	src/Storages/ObjectStorage/DataLakes/Iceberg/ManifestFileIterator.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Mutations.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/PositionDeleteTransform.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Utils.h
#	src/Storages/ObjectStorage/StorageObjectStorageSource.cpp
#	src/Storages/ObjectStorage/StorageObjectStorageSource.h
#	src/Storages/ObjectStorage/StorageObjectStorageStableTaskDistributor.cpp
#	src/Storages/ObjectStorage/Utils.h
Kept antalya-26.6 shapes and re-applied the PR's changes on top:

- S3::URI: appended `enable_url_encoding` after the base-branch
  `S3UriStyle uri_style` parameter and updated the two new call sites in
  Storages/ObjectStorage/Utils.cpp accordingly.
- Iceberg/Compaction.cpp: kept `static` linkage that antalya-26.6 gives
  getOldFiles()/clearOldFiles() while taking the PR's new signatures.
- IcebergIterator: dropped the PR's context-only `table_schema_id` /
  `setFileMetaInfo(DataFileMetaInfo...)` lines which do not exist on
  antalya-26.6; kept only `secondary_storages` and the
  requires_external_storage computation.
- IcebergMetadata: kept `std::move(persistent_components_)` ctor and the
  `getManifestFileEntriesHandle` prefetch call of antalya-26.6, adding
  `*secondary_storages`; kept `const persistent_components`.
- collectRetainedFiles()/collectExpiredFiles() moved out of
  Iceberg/Mutations.cpp into Iceberg/ExpireSnapshotsExecute.cpp on
  antalya-26.6: applied the PR's SecondaryStorages plumbing there, and
  likewise for the parallel helper in Iceberg/SnapshotFilesTraversal.cpp
  and for IcebergMetadata::getFilesForManifest, since
  getManifestList()/getManifestFileEntriesHandle() now require the
  parameter.
- StorageObjectStorageStableTaskDistributor: getFileIdentifier() does not
  exist on antalya-26.6 (the identifier is computed inline), so the PR's
  "prefer the Iceberg metadata path" change was applied at the two inline
  sites.
- StorageObjectStorageSource: kept base-branch `.storage_id` virtual
  column field, ProfileEvents counter, `configuration->compression_method`
  spelling and the process-list time-limit check; took the PR's
  `path_for_virtual_column`, resolved-storage read buffer and
  `resolveIcebergObjectStorageIfNeeded()`.
- SettingsChangesHistory: uncommented the existing
  `s3_propagate_credentials_to_other_storages` row in place and dropped
  the cherry-pick's duplicate row.
@zvonand zvonand added releasy Created/managed by RelEasy antalya-26.6 ai-resolved Port conflict auto-resolved by Claude labels Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Workflow [PR], commit [2585ca3]

@zvonand zvonand added the forwardport This is a frontport of code that existed in previous Antalya versions label Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-resolved Port conflict auto-resolved by Claude antalya-26.6 forwardport This is a frontport of code that existed in previous Antalya versions releasy Created/managed by RelEasy

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant