Skip to content

Antalya 25.8: bump to 25.8.30 - #2224

Open
zvonand wants to merge 160 commits into
antalya-25.8from
bump/antalya-25.8/25.8.30
Open

Antalya 25.8: bump to 25.8.30#2224
zvonand wants to merge 160 commits into
antalya-25.8from
bump/antalya-25.8/25.8.30

Conversation

@zvonand

@zvonand zvonand commented Aug 17, 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 May 17, 2026 23:32
…on in JOIN ON with new logical join step
…ettings absent on 25.8

The backport of ClickHouse#104785 (ClickHouse#108444) cherry-picked the master regression test
verbatim. Two of its control queries use settings that do not exist on 25.8 —
`enable_join_runtime_filters` and `use_join_disjunctions_push_down` — so the
test aborts with `UNKNOWN_SETTING` on 25.8. Those optimizations are absent on
25.8, so the "off" controls are redundant with the baseline anyway; drop them
and their reference lines. The core fix assertions (ON-side arrayJoin ghost
removed: count = 6 not 18, ARRAY-JOIN plan count = 1 not 2) and the bilateral
both-side cases are kept. Verified the test passes against a locally-built
25.8 `clickhouse` binary.

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

Fix 03918 arrayJoin-join-on test on 25.8: drop query variants using settings absent on 25.8
…ing `RemoteHostFilter` for inline DDL params
…4881

Backport ClickHouse#104881 to 25.8: Use explicit flag for secondary on cluster queries
…_log for paimon*Cluster and deltaLakeS3 t…
…4785

Backport ClickHouse#104785 to 25.8: Fix duplicate `arrayJoin` execution in JOIN ON with new logical join step
…8509

Backport ClickHouse#108509 to 25.8: Match http_forbid_headers case-insensitively
The new auth_header validation rejects values not in 'HeaderName: HeaderValue'
format. test_database_hms/test.py exists only on 25.8 (not master), so the
original PR never updated its test_hide_sensitive_info, leaving it with an
invalid auth_header. Apply the same fix as the other catalog test files.

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

Backport ClickHouse#109389 to 25.8: Fix TSan data race in uniqExact two-level parallel merge
…4822

Backport ClickHouse#104822 to 25.8: Fix race between ALTER RENAME COLUMN and merge causing data loss (ClickHouse#80648)
`used_privileges` (and `missing_privileges`) rows in `system.query_log`
could contain privilege strings from completely unrelated earlier queries
of a different user, database, and session that had finished much earlier.

`Context::makeQueryContext` seeded the new query's `QueryPrivilegesInfo`
by copying the contents of the parent context's object:

    query_privileges_info = std::make_shared<QueryPrivilegesInfo>(*query_privileges_info);

The parent is the session (or global) context. Session contexts are
created via `createCopy(global_context)` and never call `makeQueryContext`,
so the session and global contexts share a single `QueryPrivilegesInfo`
object. Any privilege string that ever landed in that shared object — and
partial state observed when the copy raced a concurrent writer — leaked
into the `used_privileges` of unrelated later queries. The one-directional
spread and the 1-2 partial entries per polluted row match a copy-vs-write
race against this shared object.

A new query has checked no privileges yet, so there is nothing legitimate
to inherit. Seed every query with an empty `QueryPrivilegesInfo`. Child
contexts created via `createCopy` still share the query's object, so
sub-operations correctly contribute to the same query's `used_privileges`.

Added a deterministic unit test `MakeQueryContextDoesNotInheritPrivileges`
that pollutes a parent context's privileges, derives a query context, and
asserts the query starts clean and that its checks do not bleed back into
the parent.

Closes: ClickHouse#105983

CI report:
https://s3.amazonaws.com/clickhouse-test-reports/json.html?REF=master&sha=fa6d98d95368955ee5619a28a21527da7a9b83cb&name_0=MasterCI&name_1=Stateless%20tests%20%28amd_asan_ubsan%2C%20distributed%20plan%2C%20parallel%2C%202%2F2%29

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 3a3c454)

# Conflicts:
#	src/Interpreters/tests/gtest_context_race.cpp
…8508

Backport ClickHouse#108508 to 25.8: Enforce access control for MySQL COM_FIELD_LIST and COM_INIT_DB
Backport ClickHouse#98827 to 25.8: Implement http header validation for DataLakeCatalog
…0529

Backport ClickHouse#100529 to 25.8: Fix: fix Credential leak in query_log for paimon*Cluster and deltaLakeS3 t…
…7675

Backport ClickHouse#107675 to 25.8: fix column order for distributed alias columns
…9874

Backport ClickHouse#109874 to 25.8: Bump libarchive from 3.8.7 to 3.8.8
robot-clickhouse and others added 25 commits August 5, 2026 17:24
…3363

Backport ClickHouse#113363 to 25.8: Fix use-after-free in async insert queue due to deadline collision
Two symbols the backport relies on differ on this branch.
`getInMemoryMetadataPtr` takes no arguments here, while master passes a
context and a `bypass_metadata_cache` flag; the no-argument form already
behaves as the `false` that was being passed.

`isLoadingFromExistingMetadata` does not exist on this branch at all, so
add it next to the enum it tests. Nothing else calls it yet. The comment
drops master's reference to `dynamic_disk_allow_*`, a setting that has no
counterpart here.

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

Backport ClickHouse#112594 to 25.8: Bump `simdjson` from v4.2.4 to v4.6.5
The backported code calls `isLoadingFromExistingMetadata`, which does not
exist on this branch, so add it next to the enum it tests. Nothing else
here calls it yet.

Identical to the addition in the backport of ClickHouse#113372 to this branch, so
whichever merges second is not a conflict.

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

Backport ClickHouse#113372 to 25.8: Infer an omitted Buffer structure under the user's context
…2593

Backport ClickHouse#112593 to 25.8: Bump vendored `libexpat` from 2.8.1 to 2.8.2
…3220

Backport ClickHouse#113220 to 25.8: Infer an omitted Distributed structure under the user's context
…2614

Backport ClickHouse#112614 to 25.8: Bump `google-protobuf` to v35.1 and `grpc` to v1.83.0
Backport ClickHouse#88573 to 25.8: test: fix flakiness of test_async_load_databases (pushing to MV reordered and lack of proper cleanup)
…3224

Backport ClickHouse#113224 to 25.8: Do not read the internal database of temporary tables in `Merge`
…9675

Backport ClickHouse#109675 to 25.8: Fix segfault due to bad shutdown ordering on startup exception
Fixes 10 CVEs from the curl 8.21.0 security disclosure that apply
to our build (connection reuse, cookie handling, proxy/Digest auth,
mTLS matching, WebSocket support). Updated curl-cmake/CMakeLists.txt
for curl 8.21.0's source layout: lib/noproxy.c was removed upstream
(logic moved into new lib/proxy.c); also added cf-recvbuf.c,
cf-setup.c, creds.c, peer.c, and vtls/vtls_config.c.

Verified: ninja _curl builds and links clean.
…2601

Backport ClickHouse#112601 to 25.8: Iterate ColumnObject subcolumns in sorted path order
…2784

Backport ClickHouse#112784 to 25.8: Fix startup and ATTACH of a view with a recursive CTE with the old analyzer
…3390

Backport ClickHouse#113390 to 25.8: Fix ATTACH of Kafka tables with a large kafka_num_consumers
Release v25.8.30.16-lts

# Conflicts:
#	.gitmodules
#	cmake/autogenerated_versions.txt
#	src/Access/AuthenticationData.cpp
#	src/Interpreters/Context.cpp
#	src/Interpreters/Context.h
#	src/Parsers/FunctionSecretArgumentsFinder.h
#	src/Storages/ObjectStorage/DataLakes/Iceberg/StatelessMetadataFileGetter.cpp
#	src/Storages/ObjectStorageQueue/ObjectStorageQueueIFileMetadata.cpp
#	src/Storages/StorageMergeTree.cpp
#	tests/integration/test_database_iceberg/test.py
#	tests/integration/test_mask_sensitive_info/test.py
#	tests/integration/test_storage_iceberg/test.py
@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown

Workflow [PR], commit [e329783]

$CLICKHOUSE_CLIENT already carries --send_logs_level from shell_config.sh,
so passing it again makes the client fail with
"option '--send_logs_level' cannot be specified more than once".
Runs without settings randomization (Fast test) do not add
--allow_repeated_settings, so add it explicitly in the test.
@zvonand

zvonand commented Aug 18, 2026

Copy link
Copy Markdown
Member Author

@blau-ai

@blau-ai

blau-ai commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

CI triage for #2224 (bump to 25.8.30)

Verdict: 8 red checks, none is a product regression introduced by this bump.
1 infra, 1 expected-for-bump (DCO), 1 pre-existing crash unrelated to the diff, and 4 stateless failures that are all new tests brought in by the bump failing in one specific CI config each (test-harness tagging), plus one deltalake test that needs a look but shows no security regression. Head SHA e3297834526.

Evidence: this PR is only 2 commits past antalya-25.8; the "product" surface is the merge of the v25.8.30.16-lts tag. All four failing stateless tests were added by that merge (none exist on the base branch), and every one of them passes in every other config and fails in exactly the config a standard exclusion tag would remove.


Not caused by this PR

Integration tests (amd_binary, 1/5 … 5/5) — all five shards report infrastructure error with no test-level results (only a job.log, no test artifacts). Runner/infra failure, not a product failure. → Re-run.

DCO — fails because the merge commit Merge tag 'v25.8.30.16-lts' and the upstream backport commits carry no Signed-off-by trailer. This is inherent to a version-bump PR that merges upstream history. → Maintainer bypass / override, as for previous bump PRs. Not a code issue.

AST fuzzer (amd_debug)Logical error: 'Bad cast from type ColumnVector<unsigned long> to ColumnVector<char8_t>'. This is a real but pre-existing crash, not introduced here:

  • Crash site: src/Processors/Formats/Impl/Parquet/Reader.cpp:2125 in Parquet::Reader::applyPrewhere — a typeid_cast<ColumnVector<UInt8>> on a ColumnVector<UInt64> column, i.e. a fuzzed PREWHERE cityHash64(...) (UInt64) fed to the native Parquet reader v3 (input_format_parquet_use_native_reader_v3=1).
  • This bump makes zero changes under src/Processors/Formats/Impl/Parquet/ (git diff antalya-25.8..HEAD -- .../Parquet/ is empty), and applyPrewhere already exists on antalya-25.8. The bug lives on the base branch.
  • → Not a blocker for this PR. Worth a separate issue against the native Parquet v3 reader (PREWHERE filter column must be cast to UInt8, not blindly to the column's own type). Safe to re-run the fuzzer here.

Introduced by the bump, but test-only / low-risk (owned by this PR)

All four are brand-new tests that came in with the tag merge. Three are missing a CI-config exclusion tag; one is a security test whose security invariant still holds.

1. 04299_deltalake_local_path_traversal — fails in all 6 stateless configs (deterministic).
Diff: the expected GOT ACCESS DENIED ERROR line is missing for both allow_experimental_delta_kernel_rs=1 and =0; but NO LEAK holds in every config — the crafted path-traversal delta log does not leak the out-of-table secret. So there is no security regression; only the specific PATH_ACCESS_DENIED error the test asserts is not being raised.
The guard (resolvePathInsideTable, backport ClickHouse#106115) is present and wired into both readers (DeltaLakeMetadata.cpp, DeltaLake/TableSnapshot.cpp), so this is most likely a path-normalization detail in the CI temp layout (e.g. pathStartsWith on the non-normalized base/../secret combination, or CLICKHOUSE_TMP under a symlinked path) rather than a missing check.
Needs a real look by the delta-lake owner (or the bump author): reproduce deltaLakeLocal(<crafted dir>, 'RawBLOB') and capture the actual error, then either fix the guard so PATH_ACCESS_DENIED is raised, or relax the test to assert "read is blocked" rather than the exact code. Not a merge blocker on security grounds, but must go green.

2. 03918_arrayjoin_join_on_duplicate_execution — fails only under old analyzer.
The old analyzer rejects arrayJoin(...) in a JOIN ON key with INVALID_JOIN_ON_EXPRESSION; the test is a regression test for a new-analyzer plan optimization (query_plan_use_new_logical_join_step) and passes under the new analyzer. → Tag it no-old-analyzer (that tag is already used by 04330_join_global_left_semi_chunk_consistency.sql).

--- Tags: long, no-random-settings
+-- Tags: long, no-random-settings, no-old-analyzer

3. 04510_s3_explicit_url_named_secret_mask — fails only under DatabaseReplicated.
Masking works ([HIDDEN] present); the reference mismatch is the extra replicated-DDL lines DatabaseReplicated injects into the SHOW CREATE stream (CREATE TABLE … UUID '…' and /* ddl_entry=… */ DROP TABLE … SYNC). → Tag no-replicated-database.

--- Tags: no-fasttest
+-- Tags: no-fasttest, no-replicated-database

4. 04296_alter_rename_column_in_memory_rollback — fails only under DatabaseReplicated (sequential).
The test enables the mt_alter_throw_in_start_mutation failpoint, which is specific to StorageMergeTree::alter. Under DatabaseReplicated the MergeTree table becomes ReplicatedMergeTree, whose ALTER path differs, so the in-memory rollback the test checks isn't exercised as intended (→ SELECT id, d hits UNKNOWN_IDENTIFIER: d). It passes in every non-replicated sequential config. → Tag no-replicated-database.

-# Tags: no-parallel
+# Tags: no-parallel, no-replicated-database

(One caveat worth a maintainer glance: confirm the ALTER-rename rollback semantics are equivalent — or intentionally out of scope — under a Replicated engine, so the tag documents a real scope boundary rather than hiding a Replicated-path gap.)


Suggested next steps

  • Re-run the 5 Integration (amd_binary) shards and the AST fuzzer (both non-PR).
  • DCO: maintainer override, as usual for bump PRs.
  • File a separate issue for the pre-existing native-Parquet-v3 PREWHERE bad-cast crash.
  • Tag fixes for 03918, 04510, 04296 (three one-line diffs above) — these will clear those three stateless suites.
  • 04299_deltalake: hand to the delta-lake owner to confirm why PATH_ACCESS_DENIED isn't raised (no leak, so low severity).

I can open a blau/* PR with the three tagging one-liners against this branch if you'd like — just say the word (or tell me to commit them directly to bump/antalya-25.8/25.8.30). I'd leave 04299 and the Parquet-v3 crash for their code owners.

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.