Skip to content

Antalya 26.8: auto-grp-pr-2183: combined port of 2 PRs - #2379

Open
zvonand wants to merge 5 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2183
Open

zvonand wants to merge 5 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2183

Conversation

@zvonand

@zvonand zvonand commented Sep 15, 2026

Copy link
Copy Markdown
Member

Changelog category (leave one):

  • New Feature

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

Add read support for Iceberg deletion vectors, applying Puffin deletion-vector-v1 bitmaps when querying Iceberg tables over local, object storage, and cluster reads, together with new Puffin and PuffinMetadata input formats and a configurable process-global Puffin files cache that can be cleared with SYSTEM DROP PUFFIN FILES CACHE. Deletion vectors stored by Databricks in standalone .bin files are also recognised and applied.
Add read support for Iceberg deletion vectors, applying Puffin deletion-vector-v1 bitmaps when querying Iceberg tables over local, object storage, and cluster reads, together with new Puffin and PuffinMetadata input formats and a configurable process-global Puffin files cache that can be cleared with SYSTEM DROP PUFFIN FILES CACHE. Deletion vectors stored by Databricks in standalone .bin files are also recognised and applied (#2183 by @ianton-ru, #2271 by @ianton-ru).

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)

Combined port of 2 PR(s) (group auto-grp-pr-2183). Cherry-picked from #2183, #2271.

mkmkme and others added 4 commits September 15, 2026 21:28
…next commit)

---
Original cherry-pick message follows:

Merge pull request #2183 from Altinity/feature/antalya-26.6/iceberg-puffin-deletion-vectors-read-2

Iceberg deletion vector support (attempt #2)
# Conflicts:
#	docs/en/sql-reference/table-functions/icebergCluster.md
#	docs/reference/statements/system.mdx
#	src/Access/Common/AccessType.h
#	src/AggregateFunctions/AggregateFunctionGroupBitmapData.h
#	src/Common/ProfileEvents.cpp
#	src/Core/Settings.cpp
#	src/Interpreters/InterpreterSystemQuery.cpp
#	src/Parsers/ASTSystemQuery.cpp
#	src/Parsers/ASTSystemQuery.h
#	src/Parsers/ParserSystemQuery.cpp
#	src/Processors/Formats/Impl/Parquet/Reader.cpp
#	src/Storages/ObjectStorage/DataLakes/Common/AvroForIcebergDeserializer.cpp
#	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/ManifestFileIterator.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Mutations.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Snapshot.h
#	src/Storages/ObjectStorage/IObjectIterator.h
#	src/Storages/ObjectStorage/StorageObjectStorageSource.cpp
#	src/Storages/ObjectStorage/tests/gtest_rendezvous_hashing.cpp
#	tests/queries/0_stateless/01271_show_privileges.reference
#	tests/queries/0_stateless/04117_parser_system_query_variants.reference
#	tests/queries/0_stateless/04117_parser_system_query_variants.sql
Kept the antalya-26.8 side for everything outside the source PR's scope
(point-in-polygon / paimon cache entries, lazy-materialization
`rows_to_read`, identity partition columns, `_headers` count-cache guard,
26.8 path resolution without secondary storages, existing manifest-count
and snapshot-summary comments) and applied the PR's deletion-vector
changes on top of it.

Also moved the PR's `use_puffin_files_cache` settings-history row into the
branch's own (empty) `26.8.1.20001.altinityantalya` block: the
three-way merge had spliced the PR's `26.6.2.20001.altinityantalya` block
into the middle of the `26.8` row list, breaking the file.

Applied the PR's 6-line `icebergCluster` deletion-vector docs section to
`docs/reference/functions/table-functions/icebergCluster.mdx`, the current
location of that page on antalya-26.8, instead of re-adding the whole
pre-restructure `docs/en/sql-reference/table-functions/icebergCluster.md`
file that the cherry-pick resurrected.

Adapted: Parquet `Reader::prefilterAndInitRowGroups` lazy-materialization slice and the trailing `rows_to_read` bound now read `global_offsets[...]` / `global_offsets.back()`, because the PR replaces the running `total_rows` counter with `buildRowGroupGlobalOffsets()`
Adapted: `InterpreterSystemQuery::getRequiredAccessForDDLOnCluster` emplaces `SYSTEM_DROP_PUFFIN_FILES_CACHE` in its own case, because antalya-26.8 replaced the grouped fall-through with one `required_access.emplace_back` per cache type
Adapted: the PR's delete-file classification (deletion vectors vs parquet position deletes) is applied in `IcebergIterator::decodeDeleteManifests()`, because antalya-26.8 moved delete-manifest decoding out of the constructor into that lazy method
Adapted: deletion-vector loading uses `object_storage` + `persistent_components.path_resolver.resolve(...)` instead of `resolveObjectStorageForPath(..., *secondary_storages, ...)`, which does not exist on antalya-26.8
Adapted: `ManifestFileEntriesHandle::getRowsCountInAllFilesExcludingDeleted` keeps antalya-26.8's `std::optional<UInt64>` signature while delegating to the PR's shared `getRecordCountInAllFilesExcludingDeleted` helper
Adapted: `IcebergMetadata::totalRows` keeps antalya-26.8's delete-file bail-out, comment and mismatch warning, and only adds the PR's `common::addOverflow` guard on the cross-manifest total
Adapted: `canUseCountFromFilesCache` replaces antalya-26.8's `hasAttachedDeletes` gate (same purpose, both call sites), which is what the PR's `effective_need_only_count` refinement supersedes; antalya-26.8's `rows_to_read` and `_headers` guards are preserved
Adapted: added `ObjectInfo::clone()` / `IcebergDataObjectInfo::clone()` (two lines, verbatim from the source branch) as the minimum scaffolding for the PR's new `gtest_iceberg_data_object_info_clone` test; that virtual came to antalya-26.6 via #2154 (upstream ClickHouse#90740) and is not on antalya-26.8
Adapted: `#include <Poco/String.h>` in AvroForIcebergDeserializer.cpp, which antalya-26.8 does not include but the PR's `Poco::toLower(file_format)` needs
Source-PR: #2183 (#2183)
…next commit)

---
Original cherry-pick message follows:

Merge pull request #2271 from Altinity/iceberg-delta-bin-deletion-vectors

Support for Databricks deletion vectors
# Conflicts:
#	docs/en/sql-reference/table-functions/icebergCluster.md
The legacy Docusaurus doc docs/en/sql-reference/table-functions/icebergCluster.md was removed on antalya-26.8 (commit 9440ca7, new layout docs/reference/...mdx), so the cherry-pick re-added it as a modify/delete conflict. Applied the PR's one-line deletion-vector wording change to the current file docs/reference/functions/table-functions/icebergCluster.mdx instead and dropped the re-added legacy copy.

Source-PR: #2271 (#2271)
@zvonand zvonand added releasy Created/managed by RelEasy antalya-26.8 Session label (releasy session config) forwardport This is a frontport of code that existed in previous Antalya versions ai-resolved Port conflict auto-resolved by Claude labels Sep 15, 2026
@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

Workflow [PR], commit [b2677ee]

@zvonand zvonand mentioned this pull request Sep 15, 2026
27 tasks
@subkanthi subkanthi mentioned this pull request Sep 16, 2026
14 tasks
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.8 Session label (releasy session config) 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.

2 participants