Conversation
…next commit) --- Original cherry-pick message follows: Merge pull request #2154 from Altinity/feature/antalya-26.6/ClickHouse-ClickHouse-pr-90740 Antalya 26.6: Iceberg: support external paths in tables # Conflicts: # src/Core/ProtocolDefines.h # src/Databases/DataLake/DatabaseDataLake.cpp # src/Interpreters/IcebergMetadataLog.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/Compaction.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergDataObjectInfo.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/IcebergPath.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergWrites.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/Mutations.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/SnapshotFilesTraversal.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/StatelessMetadataFileGetter.cpp # src/Storages/ObjectStorage/DataLakes/Iceberg/Utils.cpp # src/Storages/ObjectStorage/IObjectIterator.cpp # src/Storages/ObjectStorage/IObjectIterator.h # src/Storages/ObjectStorage/ReadBufferIterator.cpp # src/Storages/ObjectStorage/StorageObjectStorageSource.cpp # src/Storages/ObjectStorage/StorageObjectStorageStableTaskDistributor.cpp
Kept antalya-26.8's structure everywhere it diverged from antalya-26.6 and re-applied the source PR's changes on top: * ProtocolDefines: 9 is already taken by ICEBERG_IDENTITY_PARTITION_COLUMNS on 26.8, so ICEBERG_ABSOLUTE_PATH becomes 10 and the current version points at it. * IcebergDataObjectInfo: merged the PR's (metadata_path, resolved_storage, resolved_key) constructor with 26.8's identity_partition_columns parameter. * IcebergIterator: 26.8 prefetches manifests and decodes delete manifests separately, so the new `secondary_storages` argument was threaded into those call sites instead of the 26.6 inline loop / deletes_iterator. * StableTaskDistributor: 26.8 has the free function `getSchedulingIdentifier` instead of `getFileIdentifier`, so the metadata-path branch was applied there. * ReadBufferIterator / StorageObjectStorageSource: kept 26.8's RelativePathWithMetadata probing and lazy-materialization guards, only switching the storage to the resolved one. * IcebergMetadata: 26.8 has no truncate / import-sink / commitImportPartition code, so those "theirs" hunks were dropped; drop() keeps 26.8's table_root_was_derived guard before the new external-file enumeration. * SnapshotFilesTraversal: kept 26.8's storage-side version-hint entry (fix 1a5e421) instead of re-routing it through the resolver. * SettingsChangesHistory: uncommented only the row this PR adds (object_storage_propagate_credentials_to_other_storages), leaving the unrelated commented rows untouched. Adapted: compactIcebergManifests/writeConsolidatedManifestFile take SecondaryStorages — manifest-only compaction exists on antalya-26.8 and calls the re-signatured getManifestList/getManifestFileEntriesHandle/generateManifestList Adapted: gtest_storage_object_storage_archive.cpp passes the new ReadTaskIterator table_location argument — that test exists on antalya-26.8
…lision_across_buckets Fix test_num_rows_cache_no_collision_across_buckets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Support Iceberg tables that have files outside table location or on different storage (ClickHouse#90740 by @zvonand).
Cherry-picked from ClickHouse#90740.
Closes ClickHouse#84609
Current logic is that all table files (data files, manifests, manifest lists) shall be "inside" the table location, in the same storage. This PR abandons that logic: now files can be located anywhere, even on a different storage type (e.g. all metadata is on s3, data file in in local storage).
In some cases, that old logic shoots back: even incorrect (non-existing) paths, i.e. with redundant items in a prefix were parsed in such a way that files from another locations were read (
/path/to/itemwas read when the specified location was/path/to/to/itemor vice versa) (#2154 by @zvonand, #2268 by @ianton-ru).CI/CD Options
Exclude tests:
Regression jobs to run:
Combined port of 2 PR(s) (group
pr-2268). Cherry-picked from #2154, #2268.