**Describe what's wrong** Reading a `Distributed` table through a `Merge` engine drops the global sort: `SELECT ... ORDER BY x` returns each shard's stream sorted individually and concatenated, not a globally ordered result. With `LIMIT n` this silently returns the wrong rows (the first shard's top-n instead of the global top-n). Querying the same `Distribut
Reading a Paimon primary-key table returns duplicate/stale rows silently: the reader collects the raw union of base and delta data files with no merge-on-read, so superseded row versions from upserts are returned alongside current ones. Primary keys are parsed from the table schema (`PaimonSchemaProcessor::getPrimaryKeys`) and the LSM merge metadata is parse
🕵 Found by `AST fuzzer (amd_debug, targeted, old_compatibility)` on an unrelated PR (https://github.com/ClickHouse/ClickHouse/pull/91993, which only touches hex encoding): [CI report](https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=91993&sha=eae3a3cbbfb5d81bed061634d53c701167dce04a&name_0=PR&name_1=AST%20fuzzer%20%28amd_debug%2C%20targeted%2C%2
### Company or project name _No response_ ### Describe the unexpected behaviour Reading an Iceberg table that contains Parquet DATE values outside the ClickHouse Date32 range ([-25567, 120530] / 1900-01-01..2299-12-31) throws VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE when querying through the IcebergS3 table engine, even with: SETTINGS date_time_overflow_behavior =
### Company or project name Cabify ### Use case We are using Clickhouse Cloud. We are using dictionaries to populate data from other ClickHouse tables. The source looks sth like this: ``` SOURCE(CLICKHOUSE( USER '${CH_DICT_USER}' PASSWORD '${CH_DICT_PASSWORD}' DATABASE '${CH_DB}' TABLE '${CH_TABLE}' ) ``` The issue we are encountering is that we cannot rotat
When the query planner needs column statistics — for join reordering, for prewhere selectivity estimation, or for part pruning — it currently loads statistics for every column of the table from disk on the first access, even when the query only filters or joins on a handful of columns. This PR reduces statistics-file I/O during query planning on wide tables.
Related: https://github.com/ClickHouse/ClickHouse/issues/34668 Adds `output_format_csv_quote_date_time_types`, a backward-compatible CSV output setting for users that need date and time values emitted without surrounding double quotes while keeping existing `CSV` behavior by default. The setting applies to `Date`, `Date32`, `DateTime`, `DateTime64`, `Time`,
Related: https://github.com/ClickHouse/ClickHouse/pull/105020 ### Changelog category (leave one): - Improvement ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Added opt-in Prometheus gauges for current filesystem cac
<!-- Linked issues and pull requests. Use full GitHub URLs, one relationship per line; delete the lines you don't need. Closes: https://github.com/ClickHouse/ClickHouse/issues/NNNNN (auto-closes the issue when this PR is merged into the default branch) Related: https://github.com/ClickHouse/ClickHouse/pull/NNNNN --> The query below applies the same `1 PRECED
<!-- Related: https://github.com/ClickHouse/ClickHouse/issues/109064 --> Scheduler-side support for reclaimable memory tracking and dynamic spilling, built on top of the memory reservations subsystem. The design is described in #109064. Queries can report the portion of an allocation that can be spilled or discarded on request (`IAllocationQueue::setReclaima
When neither `port` nor `secure`/`no-secure` is specified, `clickhouse-client` now probes both the default port 9000 and the secure port 9440 concurrently and uses the protocol of the port that answers first. A server that answers on one port only is connected to without waiting out the connect timeout of the other one, and a server that answers on both is c
Closes: https://github.com/ClickHouse/ClickHouse/issues/110352 ### Changelog category (leave one): - New Feature ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Add `aiFilter` function that evaluates a natural-languag
importance 7@ylw510closedpr-featurecan be testedpr-synced-to-cloudOriginal evidence ↗
Adds an experimental `PCO` compression codec that links the [pcodec](https://github.com/pcodec/pcodec) (`pco`) Rust crate — the reference implementation — rather than reimplementing it. `pco` is a lossless codec specialized for sequences of fixed-width numbers; on numeric columns with smooth, multimodal, or high-entropy distributions (measurements, timings,
<!-- Linked issues and pull requests. Use full GitHub URLs, one relationship per line; delete the lines you don't need. Related: https://github.com/ClickHouse/ClickHouse/pull/110975 --> ### Changelog category (leave one): - Bug Fix (user-visible misbehavior in an official stable release) ### Changelog entry (a [user-readable short description](https://github
<!-- Linked issues and pull requests. Use full GitHub URLs, one relationship per line; delete the lines you don't need. Closes: https://github.com/ClickHouse/ClickHouse/issues/111211 (auto-closes the issue when this PR is merged into the default branch) --> ### Changelog category (leave one): - Bug Fix (user-visible misbehavior in an official stable release)
<!-- Related: https://github.com/ClickHouse/ClickHouse/pull/96844 Related: https://github.com/ClickHouse/ClickHouse/pull/110694 --> ### Changelog category (leave one): - CI Fix or Improvement (changelog entry is not required) ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_gui
importance 7@groeneaican be testedpr-synced-to-cloudpr-ciOriginal evidence ↗
Draft. Cross-compiles `clickhouse.exe` for `x86_64-w64-windows-gnu` (mingw-w64 + clang + lld → a native PE, no emulation layer and no MSVC licence). The goal is `clickhouse-client` and `clickhouse-local` running natively on Windows. **State: it links, it has never been run.** The development host is aarch64 and its Wine has no x86-on-ARM emulator, so everyth
Related: https://github.com/ClickHouse/ClickHouse/pull/100242 Related: https://github.com/ClickHouse/ClickHouse/issues/106591 Every `MemorySanitizer` report produced in CI since 2026-05-28 is truncated to a single line: ``` ==117==WARNING: MemorySanitizer: use-of-uninitialized-value MemorySanitizer: nested bug in the same thread, aborting. ``` No stack trace
Related: https://github.com/ClickHouse/ClickHouse/pull/113025 The valueless `SETTINGS name` form stands for `name = true`, and the SQL parser always writes Bool `true` for it, so the `shorthand` flag paired with any other value is a parser-impossible shape that can only arrive from the AST JSON dialect. #113025 made `BaseSettings::checkShorthandChange` rejec
Automated bump of `contrib/silk` from `52d2039c428` to `78aab9d603d`, the tip of [`clickhouse-public`](https://github.com/ClickHouse/silk/tree/clickhouse-public) in [ClickHouse/silk](https://github.com/ClickHouse/silk). Changes in `silk` ([compare](https://github.com/ClickHouse/silk/compare/52d2039c42830601013d8654ddf750be971481fa...78aab9d603d43247fa8f05f86
### Changelog category (leave one): - New Feature ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): * Implemented generic block nested loop join
<!-- Linked issues and pull requests. Use full GitHub URLs, one relationship per line; delete the lines you don't need. Closes: https://github.com/ClickHouse/ClickHouse/issues/NNNNN (auto-closes the issue when this PR is merged into the default branch) Related: https://github.com/ClickHouse/ClickHouse/pull/NNNNN --> Failure report: https://s3.amazonaws.com/c
importance 7@groeneaiclosedcan be testedpr-synced-to-cloudpr-ciOriginal evidence ↗
<!--- A technical comment, you are free to remove or leave it as it is when PR is created The following categories are used in the next scripts, update them accordingly utils/changelog/changelog.py tests/ci/cancel_and_rerun_workflow_lambda/app.py --> ### Changelog category: - Experimental Feature ### Changelog entry: Added the experimental `Pulsar` table eng
importance 7@SteveBalayanAKAMedianopensubmodule changedmanual approvecan be testedpr-experimentalOriginal evidence ↗
### Company or project name ClickHouse ### Describe what's wrong During implementation of Full-Text Search framework I found the issue when using Light-Weight Updates. Particularly, when patch parts have to be applied, `MATERIALIZED` column can't be utilized in FTS index - `serverError UNKNOWN_IDENTIFIER` is thrown. However, other non-`MATERIALIZED` columns
* New distributed execution doesn't support some kinds of `IN (subquery)` queries. However we have amazing feature which rewrites `IN -> JOIN`: https://github.com/ClickHouse/ClickHouse/pull/83991. So `rewrite_in_to_join=1` should be enabled automatically if `make_distributed_plan=1` is specified. * Parallel replicas-style reads are not supported by `make_dis
**Describe what's wrong** With automatic parallel replicas — `parallel_replicas_min_number_of_rows_per_replica > 0` — a valid `RIGHT JOIN` that selects a left-table column fails with `10 NOT_FOUND_COLUMN_IN_BLOCK`: the left table's column is resolved against the **right** table. The same query works with plain parallel replicas (`parallel_replicas_min_number
**Describe what's wrong** `ANY INNER JOIN` deduplicates per join key — but over a `Distributed` table it deduplicates on each shard independently, so a key whose rows span shards is returned once **per shard**. When the sharding key differs from the join key (the common case), the distributed result is a multiple of the correct local result. **Does it reprod
### Company or project name ClickHouse Cloud support on behalf of a customer ### Describe what's wrong `KILL QUERY` requires the user to have `SELECT` privilege on `system.processes` table in the Cloud. In specific use cases (e.g. using a BI tool like Metabase), it can lead to a security hole where a user would be forced to open all records if that table to
### Company or project name _No response_ ### Describe what's wrong `c1 = SOME([1, NULL])` is lowered to `has([1, NULL], c1)`. For `c1 = 0`, that is a definite, non-NULL **false** — `0` is not `1`, and "not found, but the array also contains NULL" evaluates to false, not unknown, per the row's own projection. So `NOT (c1 = SOME([1, NULL]))` must be true. Wit
A Paimon table containing a nullable `ARRAY` or `MAP` column cannot be read at all: schema parsing wraps the composite type in `Nullable`, which ClickHouse forbids, so `DESC` and `SELECT` throw an exception before any data is read. Since Paimon columns are nullable by default (e.g. any Spark-created table with an array column), this makes fairly ordinary Pai
<details><summary>Stack trace details</summary> The sipHash64(st.trace_full) is 7748280104269371522 The trace is from the master or release branch: True The query for CIDB to compare the trace with the known one: ```sql WITH ( SELECT groupArrayDistinct(cleanStackTrace(trace_full) AS trace) FROM default.stack_traces WHERE sipHash64(trace) IN (7748280104269371
### Describe the bug Writing a `Variant` whose branches map to ORC `string` and ORC `binary` produces a valid ORC file, but schema inference on that file then fails, so `SELECT * FROM file('x.orc', ORC)` does not work on a file ClickHouse just wrote. The data itself is fine and is returned correctly if the structure is supplied explicitly — this is an infere
_Found via ClickGap automated review — close or comment if this is wrong._ ### Describe what's wrong With parallel replicas enabled, `SELECT k, a_v FROM t ORDER BY k WITH FILL ... INTERPOLATE (...)` where `a_v` is an `ALIAS` column whose body is an expression fails with `Code: 20. Number of columns doesn't match (source: 5 and result: 4). (NUMBER_OF_COLUMNS_
🕵 A lossy codec is accepted on a column that is part of the sorting key. Because the loss is applied on every write, the values that come back from a part are not the values the merge sorted, so a merged part can end up out of order. In a debug build the merge aborts with `Sort order of blocks violated`; in a release build nothing is reported and the part -
### Company or project name _No response_ ### Describe what's wrong when shared nested offsets are enabled a name in `DROP COLUMN <name>` that is not a column of the table denotes the whole group of columns `<name>.*` and the drop removes all of them The stages of an `ALTER` disagree about this meaning: validation and the mutation stage treat the name as the
### Company or project name ClickHouse ### Use case Cardinality estimation for equality and `IN` predicates on skewed columns is currently weak. When only `uniq`/`uniq_v2` statistics are available, `ColumnStatistics::estimateEqual()` falls back to a uniform assumption of `rows / ndv`, which can be off by orders of magnitude for skewed data: ```sql WHERE coun
### Company or project name ClickHouse Inc. ### Use case A text index with `tokenizer = 'array'` stores the whole column value as a single token, so its dictionary is the set of distinct values of the column, and a `LIKE` filter over that dictionary is exactly the query predicate. Today only patterns of the shape `%needle%`, with an alphanumeric needle, are
`ALTER TABLE ... MODIFY COLUMN <col> Tuple(...)` on a named `Tuple` that only adds new subfields is now metadata-only (no mutation). Gated behind `SET allow_experimental_metadata_only_named_tuple_alter = 1` (default `false`). Subfield additions through `Array`/`Map`/nested `Tuple` wrappers are also handled. `Nullable(Tuple(...))` is blocked (null map incompa
<!-- Linked issues and pull requests. Use full GitHub URLs, one relationship per line; delete the lines you don't need. Closes: https://github.com/ClickHouse/ClickHouse/issues/NNNNN (auto-closes the issue when this PR is merged into the default branch) Related: https://github.com/ClickHouse/ClickHouse/pull/NNNNN --> ### Changelog category (leave one): - Impr
### Changelog category (leave one): - Experimental Feature ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Added an experimental native Google Cloud Storage integration built on the Google Cloud C++ SDK (`google-cloud
Enable `INSERT ... VALUES` with inline data in the polyglot SQL dialect (`dialect = 'polyglot'`). Previously, running e.g. `INSERT INTO t VALUES (1), (2), (3)` with `dialect = 'polyglot'` failed with `Multi-statement queries are not supported in polyglot dialect mode`. The underlying problem is that transpiling inside the parser cannot deliver inline data to
Related: https://github.com/ClickHouse/ClickHouse/pull/109405 Related: https://github.com/ClickHouse/ClickHouse/pull/110911 ### Changelog category (leave one): - Improvement ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.
importance 6@skuznetsovopenpr-improvementcan be testedv26.7-must-backportOriginal evidence ↗
Related: https://github.com/ClickHouse/ClickHouse/pull/110431 Related: https://github.com/ClickHouse/ClickHouse/pull/110308 `Stateless tests (amd_binary, flaky check)` bounced a pull request from the merge queue with "Test runs too long (> 180s)" for `04538_final_read_in_order_limit_no_layers`, while all four flaky checks in that pull request's own CI were g
<!-- Linked issues and pull requests. Use full GitHub URLs, one relationship per line; delete the lines you don't need. Closes: https://github.com/ClickHouse/ClickHouse/issues/112213 Related: https://github.com/ClickHouse/ClickHouse/pull/106988 --> ### Changelog category (leave one): - Bug Fix (user-visible misbehavior in an official stable release) ### Chan
Related: https://github.com/ClickHouse/ClickHouse/pull/109005 Implements the two algorithms planned in [this discussion](https://github.com/ClickHouse/ClickHouse/pull/109005#discussion_r3694159098): `full_sorting_merge` and `parallel_full_sorting_merge` are always supported, so anything listed after them in `join_algorithm` is unreachable — listing them is a
Check for cancellation in the h3 array-expanding functions ### Changelog category (leave one): - Bug Fix (user-visible misbehavior in an official stable release) ### Changelog entry (a [user-readable short description](https://github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixed `
Related: https://github.com/ClickHouse/ClickHouse/pull/112070 Related: https://github.com/ClickHouse/ClickHouse/pull/110615 The empty-override rejection in `StorageMySQL::getSSLParams` only ran when the base named collection stored a credential *path*: with the credential stored in the contents form (`ssl_ca_pem` / `ssl_cert_pem` / `ssl_key_pem`), `get_path`