Skip to content

Antalya 25.8: Bump to 25.8.33 - #2287

Open
zvonand wants to merge 60 commits into
antalya-25.8from
bump/antalya-25.8/25.8.33
Open

Antalya 25.8: Bump to 25.8.33#2287
zvonand wants to merge 60 commits into
antalya-25.8from
bump/antalya-25.8/25.8.33

Conversation

@zvonand

@zvonand zvonand commented Aug 28, 2026

Copy link
Copy Markdown
Member

Changelog category (leave one):

  • Not for changelog (changelog entry is not required)

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Unit tests
  • Performance tests
  • Aarch64 tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • CAS (content-addressed storage; Antalya only)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • OAuth (5m)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

robot-clickhouse and others added 30 commits August 11, 2026 09:29
…3563

Backport ClickHouse#113563 to 25.8: Do not analyze the shared row policy AST in place in `Merge`
…icas read when the requested stage cannot absorb finalized data
Backport ClickHouse#94748 to 25.8: Fix invalid result of joining two `-Cluster` table functions
The original change was followed by a test-oracle correction which was not included in this backport. Verify that each forced dictionary reload reaches Parquet row-group reading before considering the lifetime regression covered.

CI report: ClickHouse#114927
The dictionary reload executes outside the client query profile-event accounting, so querying `system.query_log` for `ParquetReadRowGroups` always returns zero even after a reload reads Parquet row groups. Keep the forced reload checks and remove the invalid profile-event assertion.

CI report: ClickHouse#114927
…3742

Backport ClickHouse#113742 to 25.8: Skip the custom-key parallel replicas read when the requested stage cannot absorb finalized data
…7028

Backport ClickHouse#107028 to 25.8: Fix data race on FileCacheQueryLimit::query_map causing LOGICAL_ERROR
Derive the dictionary source path from the `file` table function so the test uses the actual absolute location when `user_files_path` is empty.

CI report: ClickHouse#114927
…before rewrite it, fix no such key thrown
…e_fsync_after_insert

The test read the `files` column of `system.parts` to size the
encrypted-incremental-restore fsync assertion. That column was added by
476e9fc in January, after 25.8 forked, so the automated 25.8
backport of ClickHouse#111378 (ClickHouse#115088) fails at runtime with UNKNOWN_IDENTIFIER
even though the cherry-pick applied cleanly and the script is
byte-identical to master. The empty shell variable then also fails the
`{files:UInt64}` parameter binding.

The count the assertion wants is how many files RESTORE copies and must
therefore fsync. The test already measures exactly that for its first
table via `SELECT path FROM system.parts` plus `find`, so feed the
encrypted arm the same count and drop the column read. The two tables
have identical schema, data and part-layout settings, so their parts hold
the same file set; the physical count is also larger than the checksums
map (18 vs 14 on master), since it covers checksums.txt, columns.txt and
the zero-byte arr.bin, so the assertion gets stronger rather than weaker.

Validated on the official 25.8 binary: the old test reproduces both
errors, the new one runs to completion. On master the encrypted restore
performs 20 FileSync events against a required 18, the two arms' part
file lists are identical on both branches (18 files on master, 15 on
25.8), disabling fsync_after_insert still fails the test, and 50/50 runs
pass with randomized settings.

Related: ClickHouse#111378
Related: ClickHouse#115088

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit fd8fc0c)
PedroTadim and others added 26 commits August 18, 2026 16:56
Backport ClickHouse#87838 to 25.8: unlink METADATA_VERSION_FILE_NAME before rewrite it, fix no such key thrown
Backport of ClickHouse#112327 to 25.8. The robot cherry-pick (ClickHouse#114796) conflicts in
src/Dictionaries/DictionaryHelpers.h because the materializing call in
getColumnVectorData is removeSpecialRepresentations on master and
recursiveRemoveSparse here; removeSpecialRepresentations does not exist on this
branch. The resolution keeps 25.8's call and takes the fix's predicate, so the
resolved change is the same 8 insertions and 7 deletions as the merged commit.

25.8 is affected. On the official 25.8.30.17 binary the amplified repro (a 2M-row
sparse probe joined to a FLAT dictionary with join_algorithm = 'direct')
segfaults in 2 of 7 runs, and with jemalloc junk filling it fails 4 of 4 with
"Invalid number of rows in Chunk ... expected 65409, got 0". Writing the same
data densely passes. A value comparison alone cannot see this: freed but intact
memory still returns the right numbers, which is why both arms agreed until the
freed page was poisoned.

Verified in both directions with a clang-19 Debug build, 25.8's pinned compiler,
build ids asserted against the running server. The pristine branch aborts on the
first assertion of the ported test, at PODArray::operator[] inside
FlatDictionary::hasKeys reached through IDictionary::getByKeys and
DirectKeyValueJoin::joinBlock, which is the mechanism reported on master. With
the fix the test passes and the repro returns the correct result 3 of 3 runs.

The test carries one branch adaptation: enable_lazy_columns_replication does not
exist on 25.8 and is rejected as an unknown setting, so it is dropped from the
ARRAY JOIN statement. The statement and every assertion are kept. The comment
drops ColumnReplicated from the carrier list because that class does not exist
here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The test comments describe what each statement asserts at the SQL level and no longer
name C++ functions or classes, per the review of the master commit. The statements
and the reference are unchanged: stripping comments from both revisions yields
byte-identical SQL (md5 5a88d22c5d3f4aedbdeb8befef6c0ef9), and both format to the
same AST.
…mization when the aggregate argument contains arrayJoin
Backport ClickHouse#99366 to 25.8: Fix data race between BackgroundJobsAssignee::start and finish
`unnest`, a case-insensitive alias of `arrayJoin`, was registered only in
8601d0f (2026-05-16), after the 25.8 branch point. On this branch the
analyzer throws `UNKNOWN_FUNCTION` at the second statement of the test's
single client call, which also skipped statements 3-19: every
`optimize_trivial_count_query = 0` control, the four "optimization is kept"
arms and all four `EXPLAIN` plan assertions. So the backport carried no
verification of the fix it exists to port.

This mirrors the master change c97ca0b (ClickHouse#115505), which dropped the two
`unnest` arms and relocated the alias coverage into `04241_alias_unnest` - a
test that does not exist on this branch, precisely because the alias does not.
Nothing is lost at the guard itself: `FunctionNode::resolveAsFunction` stores
the canonical name, so `hasFunctionNode(..., "arrayJoin")` sees the `unnest`
arms identically to the `arrayJoin` ones, and the surviving 20 reference lines
are byte-identical with and without them.

CI report: https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=115468&sha=77b6ebb9c8604d45e2db4a7111e93258704076fa&name_0=BackportPR
Related: ClickHouse#115227
Related: ClickHouse#115505

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…112327-25.8

Resolve the 25.8 cherry-pick conflict of ClickHouse#112327
…5227

Backport ClickHouse#115227 to 25.8: Do not use the trivial count optimization when the aggregate argument contains arrayJoin
…that hide argument nullability inside uniq
…5669

Backport ClickHouse#115669 to 25.8: Fix out-of-bounds read in `formatRowNoNewline` with empty rows
…5466

Backport ClickHouse#115466 to 25.8: Do not strip injective functions that hide argument nullability inside uniq
…0283

Backport ClickHouse#100283 to 25.8: Validate Iceberg metadata file path for null bytes
The vectorized `String = FixedString` equality on 25.8 does not ignore
the `FixedString` padding (that fix is not on this branch), so the
`arrayFilter` oracle of `04881_low_cardinality_default_value_needle`
reads 0 where master reads 1. The `LowCardinality` result itself (1)
matches master, so assert only it.

Failure: https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=115918&sha=latest&name_0=BackportPR&name_1=Stateless%20tests%20(amd_asan%2C%20distributed%20plan%2C%20parallel%2C%202%2F2)
PR: ClickHouse#115918

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…5704

Backport ClickHouse#115704 to 25.8: Do not expose uninitialized memory in query results
…4624

Backport ClickHouse#114624 to 25.8: Find a LowCardinality needle equal to the type's default value
@github-actions

Copy link
Copy Markdown

Workflow [PR], commit [448d1c1]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants