Skip to content

25.8 Stable: Bump to 25.8.28#2024

Open
zvonand wants to merge 162 commits into
stable-25.8from
bump/stable-25.8/25.8.28
Open

25.8 Stable: Bump to 25.8.28#2024
zvonand wants to merge 162 commits into
stable-25.8from
bump/stable-25.8/25.8.28

Conversation

@zvonand

@zvonand zvonand commented Jul 8, 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
  • 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)
  • 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 April 10, 2026 22:24
…4047

Backport ClickHouse#104047 to 25.8: Bump libarchive form 3.8.6 to 3.8.7
…n with row policies/additional_table_filters
…2921

Backport ClickHouse#102921 to 25.8: Disable trivial LIMIT optimization with row policies/additional_table_filters
…hen its size is zero (ClickHouse#104164)

* Backport ClickHouse#104063 to 25.8: Bypass index uncompressed cache when its size is zero

* Add reload_before/reload_after to with_replace_config

Cherry-picked from b514957 (the cluster.py portion).
The whitespace-only KEEPER_PUBLISH_CLIENT hunk was skipped because that
code does not exist on this branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: robot-clickhouse <robot-clickhouse@users.noreply.github.com>
Co-authored-by: Michael Kolupaev <michael.kolupaev@clickhouse.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…2961

Backport ClickHouse#102961 to 25.8: Use max_insert_threads for plain INSERTs without materialized views
…-to-25.8

Backport fix for GCS over S3 disk broken by aws-sdk-cpp 1.11.771 to 25.8
…4141

Backport ClickHouse#104141 to 25.8: Fix write out of bounds in quantileTiming deserialization
Fix `IPv6StringToNumOrDefault` not properly zeroing output bytes on parse
failure. Only one byte was zeroed (`vec_res[i] = 0`) instead of all 16
bytes (`std::fill_n(&vec_res[out_offset], offset_inc, 0)`), causing
stale data from previous successful parses to leak into default results.

Backport of ClickHouse#93543

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…3773

Backport ClickHouse#103773 to 25.8: Fix UB while parsing dateTime
Backport fix for IPv6StringToNumOrDefault to 25.8
…1798

Backport ClickHouse#101798 to 25.8: Prevent server termination when unregistering S3 client fails
…2384

Backport ClickHouse#102384 to 25.8: Coalescing merge tree fix array
groeneai and others added 26 commits June 30, 2026 07:25
The test captures EXPLAIN PIPELINE output with its indentation. On 25.8 the
test pinned no settings, so under the fuzzer's randomized max_threads the
(ReadFromMergeTree) block loses one Resize nesting level (8 -> 6 spaces) and
the reference no longer matches.

Pin max_threads = 1, optimize_use_implicit_projections = 0 and
optimize_use_projections = 0 so the pipeline shape is deterministic, and
regenerate the reference against a 25.8 binary. The 25.8 pipeline shape differs
from master (no Filter/FilterTransform wrapper) because a17b94e is not in
25.8, so the master reference is not cherry-pickable here.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
`ParserCollectionOfLiterals::parseImpl` builds an array/tuple/map literal
iteratively with an explicit stack of layers. When a nested collection was
finished it was appended to its parent layer with
`layers.back().arr.push_back(literal->value)`, which deep-copies the whole
nested `Field` accumulated so far. For a deeply nested literal such as
`[[[ ... ]]]` this made parsing quadratic in the nesting depth.

`literal` is a local `ASTLiteral` that is discarded immediately after this
line (only the outermost layer is kept as `node`), so its value can be moved
into the parent instead of copied. This makes the parse linear.

This is needed for the backported test `04412_deep_nested_literal_format`.
It is tagged `no-fasttest, no-debug, no-sanitizers`, but the stress test job
deliberately ignores `no-{build}` tags (every test must run under stress), so
`04412` runs under `Stress test (amd_tsan)`. With the quadratic parse, building
the depth-20000 literal in `formatQuery` took ~1620s under ThreadSanitizer and,
being non-cancellable, tripped the hung-check ("Hung check failed, possible
deadlock found"). The same quadratic parse also made `04412` run for ~441s under
`Stateless tests (amd_asan, distributed plan, parallel)` and the server got
killed by signal. With the linear parse the literal is built quickly and
`formatQuery` still reports `TOO_DEEP_RECURSION` (code 306) from the
`FieldVisitorToString` stack guard, exactly as the test expects.

This mirrors the fix already applied to the 26.6 backport in
ClickHouse#108832 and the master change
ClickHouse#108892.

CI report: https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=108896&sha=0a636f95b8f50b19259d8d0280d26e62639e47a4&name_0=BackportPR&name_1=Stress%20test%20%28amd_tsan%29

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Use `std::make_shared` instead of unavailable `make_intrusive` on 25.8.

CI: ClickHouse#108847
…es::test_materialized_views_replicated

Cherry-pick of the test-only fix merged to `master` in ClickHouse#107119
(commit `6166517952c1`, change `e5479ff4869`). The fix is absent on
`25.8`, where `test_materialized_views_replicated` still uses
`disconnect_event.wait(90)` and un-timed INSERTs.

Under sanitizers the server stop+start budget alone is ~120s, so a
restart slower than the ignored 90s wait let the main thread race
ahead, and an INSERT to a half-restarted server could block up to 600s
and exhaust the 900s pytest session timeout. The fix waits 180s and
asserts it, bounds each INSERT with `timeout=60`, catches
`QueryTimeoutExceedException`, and stops the warm-up INSERT loop once
the restart finishes or its budget elapses.

This clears the `test_async_load_databases` failures observed on the
`25.8` base and on `backport/25.8/*` PRs (e.g. ClickHouse#107889). True `master`
has been clean since ClickHouse#107119 merged (2026-06-18).

Closes: ClickHouse#108914

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

Backport ClickHouse#103824 to 25.8: Fix server crash in `getTablesSplitByDependencyLevel` with cyclic dependencies
Accept `external_id` in `S3` `extra_credentials` and pass it to STS assume-role credentials so `04327` succeeds on the `25.8` backport.

Also align `02843` with current restore behavior by removing the stale restore failure expectation.

PR: ClickHouse#108847
Pass `external_id` to the remaining `BackupReaderS3` construction in read mode after adding the constructor parameter.

PR: ClickHouse#108847
The `AddAuthDelta` stores a `shared_ptr<AuthID>` that is shared between
the delta and the uncommitted state. During `commit`, the code was
move-constructing from this shared `AuthID` via `std::move(*operation.auth_id)`,
which could race with a concurrent `preprocess` call reading the same
`AuthID` through `uncommitted_state.session_and_auth` without holding
`auth_mutex`.

Fix by copying instead of moving.

https://s3.amazonaws.com/clickhouse-test-reports/json.html?REF=master&sha=3134af4b1eeebf8773015eb04eb1aa1a80bd2f17&name_0=MasterCI&name_1=Integration%20tests%20%28amd_tsan%2C%206%2F6%29

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
(cherry picked from commit 15ad49a)
…8472

Backport ClickHouse#108472 to 25.8: Enforce single-component matching for SSL certificate wildcards
…ivial-count-25.8

Stabilize 04201_trivial_count_with_additional_filter on 25.8
The `initd_test` script in `ci/jobs/install_check.py` on `25.8` runs
`clickhouse-client -q 'SELECT version()'` exactly once, immediately after
the init.d wrapper prints `Server started`. The wrapper only checks that
the pid file exists, but on a slow CI host (notably the `amd_debug` build)
the server can take several seconds longer to open the TCP listener on
port 9000. The test then fails with
`Code: 210. DB::NetException: Connection refused (localhost:9000)`.

In the same job the sibling `binary_test` already retries `SELECT version()`
in a loop, and on `25.8` backport runs it routinely takes ~4 seconds (4
retries) before the debug server accepts connections, while `initd_test`
gives up after the first attempt.

This is the same failure mode as ClickHouse#86278, which was fixed on `master` by
ClickHouse#106056 ("Extend `Run server init.d` retry budget from 5s to 30s"). That
fix never reached `25.8`, so the flake keeps blocking `25.8` backport PRs
(for example ClickHouse#108965 and ClickHouse#108917). Because the `25.8` `initd_test` predates
the retry loop entirely, ClickHouse#106056 does not cherry-pick cleanly; this commit
adapts the same fix by adding a 30-iteration poll loop that breaks early on
success, matching the existing `binary_test` and `keeper_test` patterns.

`SYSTEMCTL_SKIP_REDIRECT` is intentionally not added, since the `25.8`
init.d script does not support it.

Related: ClickHouse#86278, ClickHouse#106056

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

Fix flaky `Run server init.d` install check on 25.8 (backport of ClickHouse#106056)
…0396

Backport ClickHouse#100396 to 25.8: Fix TSan data race in Keeper AuthID between preprocess and commit
…8493

Backport ClickHouse#108493 to 25.8: Fix crash on deeply nested expressions with raised max_parser_depth
…7357

Backport ClickHouse#107357 to 25.8: Avoid storing `S3` credentials in backup metadata
…7119

Backport ClickHouse#107119 to 25.8: Fix flaky test_async_load_databases::test_materialized_views_replicated
…7693

Backport ClickHouse#107693 to 25.8: Length-encode the `info` field of the MySQL `OK` packet
…8928

Backport ClickHouse#108928 to 25.8: Fix uniqExact concurrent-merge crash with GROUPING SETS/ROLLUP/CUBE
Release v25.8.28.1-lts

# Conflicts:
#	cmake/autogenerated_versions.txt
#	src/Planner/PlannerJoinTree.cpp
@zvonand zvonand added the 25.8 25.8 Altinity Stable label Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Workflow [PR], commit [77fbf51]

zvonand and others added 2 commits July 9, 2026 09:08
The 25.8.28 point release adds the Filter/FilterTransform wrapper around
(ReadFromMergeTree) when additional_table_filters/row policies disable the
trivial count/limit optimization (the master shape that d080256 noted was
absent from 25.8). Regenerate the two Altinity references to match. Test intent
is unchanged: the optimization is still correctly disabled/enabled per case.

- 04201_trivial_count_with_additional_filter: filtered_this_table now shows
  (Filter)/FilterTransform over (ReadFromMergeTree).
- 04099_row_policy_trivial_limit_threads: additional_filter block nests one
  level deeper due to the inserted filter node.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

25.8 25.8 Altinity Stable

Projects

None yet

Development

Successfully merging this pull request may close these issues.