Skip to content

Antalya 26.8: Hybrid tables - #2372

Open
zvonand wants to merge 3 commits into
antalya-26.8from
feature/antalya-26.8/pr-2144
Open

zvonand wants to merge 3 commits into
antalya-26.8from
feature/antalya-26.8/pr-2144

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 support for Hybrid tables, which combine local MergeTree storage with data in object storage behind a configurable watermark. Watermarks can be moved with ALTER TABLE MODIFY SETTING and inspected via the new system.hybrid_watermarks table, and queries now skip segments that cannot match the combination of the WHERE clause and the segment predicate.

DONE
Add support for Hybrid tables, which combine local MergeTree storage with data in object storage behind a configurable watermark. Watermarks can be moved with ALTER TABLE MODIFY SETTING and inspected via the new system.hybrid_watermarks table, and queries now skip segments that cannot match the combination of the WHERE clause and the segment predicate.

DONE (#1694 by @zvonand, #1723 by @mkmkme, #1788 by @mkmkme, #1789 by @mkmkme) (#2144 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 #2144.

mkmkme and others added 2 commits September 15, 2026 18:26
…next commit)

---
Original cherry-pick message follows:

Merge pull request #2144 from Altinity/feature/antalya-26.6/auto-grp-pr-1694

Antalya 26.6: Hybrid tables
# Conflicts:
#	docs/reference/engines/table-engines/special/hybrid.md
#	src/Common/FailPoint.cpp
#	src/Interpreters/ClusterProxy/executeQuery.h
#	src/Parsers/ASTIdentifier.h
#	src/Storages/StorageDistributed.cpp
#	src/Storages/StorageDistributed.h
#	src/Storages/registerStorages.cpp
All conflicts were additive: kept the antalya-26.8 side and the Hybrid
additions from the port side next to each other.

- src/Common/FailPoint.cpp, src/Storages/registerStorages.cpp,
  src/Interpreters/ClusterProxy/executeQuery.h,
  src/Parsers/ASTIdentifier.h, src/Storages/StorageDistributed.h:
  kept both sides (new fail point, registerStorageHybrid, <span>,
  resetSemanticTable(), Hybrid members) — base-branch lines untouched.
- src/Storages/StorageDistributed.cpp: kept the base `Remote`/
  `RemoteSecure` engine (registerStorageRemote, finalizeDistributedSettings,
  parseRemoteFunctionArguments include, ACCESS_DENIED) and added the port's
  registerStorageHybrid / Hybrid layout helpers / StorageTableFunction
  include / SUPPORT_IS_DISABLED alongside it.

In buildQueryTreeDistributed() the port modified the local
`ReplaseAliasColumnsVisitor`, which antalya-26.8 no longer has: commit
9ca234c (upstream ClickHouse#108855) moved ALIAS-column inlining out of
StorageDistributed.cpp into `inlineAliasColumns()` in
buildQueryTreeForShard.cpp. The call site was translated to the moved
helper, keeping all Hybrid-specific parts of the hunk (segment predicate
merged into WHERE, buildColumnNodesForTableExpression and
ReplaceColumnNodesForTableExpressionVisitor). As a consequence the
`__aliasMarker` injection that the port added inside that visitor has no
landing site on this branch (the base solves the same mergeable-state
naming problem in `inlineAliasColumns` + `buildShardCollapseFanOut`); the
rest of the alias-marker support (setting, function, planner handling)
came in unchanged from the port.

Adapted: buildQueryTreeDistributed() now calls inlineAliasColumns() instead of the ReplaseAliasColumnsVisitor that antalya-26.8 moved to buildQueryTreeForShard.cpp (upstream ClickHouse#108855, commit 9ca234c)
@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 [8d6c253]

@zvonand zvonand mentioned this pull request Sep 15, 2026
27 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