v26.2 Changelog for Cloud

- Vector search can now distribute the load across replicas in a cluster, enabling support for large vector indexes that exceed the memory capacity of a single VM. [#95876](https://github.com/ClickHouse/ClickHouse/pull/95876) ([Shankar Iyer](https://github.com/shankar-iyer)).
- Added a server-side AST fuzzer controlled by the `ast_fuzzer_runs` and `ast_fuzzer_any_query` settings. When enabled, the server runs randomized mutations of each query after its normal execution, discarding the results. [#97568](https://github.com/ClickHouse/ClickHouse/pull/97568) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

## Improvements[​](#improvements "Direct link to Improvements")

### Query and SQL[​](#query-and-sql-improvements "Direct link to Query and SQL")

- Correlated subqueries now support more table engines and data source kinds. [#90175](https://github.com/ClickHouse/ClickHouse/pull/90175) ([Dmitry Novik](https://github.com/novikd)).
- Non-constant `IN` is now supported for scalars (e.g. `val1 NOT IN if(cond, val2, val3)`). [#93495](https://github.com/ClickHouse/ClickHouse/pull/93495) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
- Added support for extended table aliases for JOINs (e.g. `SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b`). [#95331](https://github.com/ClickHouse/ClickHouse/pull/95331) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
- `EXPLAIN indices = 1` is now supported as an alias for `EXPLAIN indexes = 1`. [#92774](https://github.com/ClickHouse/ClickHouse/pull/92774) ([Pranav Tiwari](https://github.com/pranavt84)).
- Improved filter pushdown for `numbers` and `primes` table functions — ClickHouse can now derive conservative value bounds from `WHERE` conditions to restrict sequence generation, avoiding unbounded scans. [#96115](https://github.com/ClickHouse/ClickHouse/pull/96115) ([Nihal Z. Miaji](https://github.com/nihalzp)).
- Equivalent sets optimization now works across multiple consecutive `INNER JOIN` operations, so filters applied to any table in the chain are automatically pushed down to all related tables. [#96596](https://github.com/ClickHouse/ClickHouse/pull/96596) ([Vladimir Cherkasov](https://github.com/vdimir)).
- Automatic cluster table functions are now used for single subqueries in `FROM`. [#96332](https://github.com/ClickHouse/ClickHouse/pull/96332) ([phulv94](https://github.com/phulv94)).
- The primary key index is now used when filtering with `startsWithUTF8` if the prefix contains only ASCII characters. [#97055](https://github.com/ClickHouse/ClickHouse/pull/97055) ([vkcku](https://github.com/vkcku)).
- `assumeNotNull`, `coalesce`, and `ifNull` now enable primary key and skip index pruning for range predicates when key columns are wrapped in these functions. [#94754](https://github.com/ClickHouse/ClickHouse/pull/94754) ([Nihal Z. Miaji](https://github.com/nihalzp)).
- Unused columns are now also removed from the reading step when reading from MergeTree, which is especially useful when a filter is pushed down into `PREWHERE`. [#89982](https://github.com/ClickHouse/ClickHouse/pull/89982) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
- The `use_join_disjunctions_push_down` optimization is now enabled by default. [#89313](https://github.com/ClickHouse/ClickHouse/pull/89313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- The `enable_join_runtime_filters` optimization is now enabled by default. [#89314](https://github.com/ClickHouse/ClickHouse/pull/89314) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- JOIN runtime filter overhead is now reduced by automatically disabling filters when too many bits are set in the bloom filter or too few rows are filtered out. [#91578](https://github.com/ClickHouse/ClickHouse/pull/91578) ([Alexander Gololobov](https://github.com/davenger)).
- Added `use_hash_table_stats_for_join_reordering` setting (enabled by default) to control whether runtime hash table size statistics are used for join reordering. [#93912](https://github.com/ClickHouse/ClickHouse/pull/93912) ([Vladimir Cherkasov](https://github.com/vdimir)).
- Index analysis is now performed only once regardless of whether the query executes locally or with parallel replicas. [#94854](https://github.com/ClickHouse/ClickHouse/pull/94854) ([Nikita Taranov](https://github.com/nickitat)).
- If a skip index in a `FINAL` query is on a column that is part of the primary key, the additional primary key intersection check in other parts is now skipped. [#93899](https://github.com/ClickHouse/ClickHouse/pull/93899) ([Shankar Iyer](https://github.com/shankar-iyer)).
- `DROP DATABASE` now drops tables in reverse dependency order, improving crash-safety when the database contains tables with loading dependencies. [#97057](https://github.com/ClickHouse/ClickHouse/pull/97057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Synchronous waiting for mutations now respects query cancellation and time limits. [#96756](https://github.com/ClickHouse/ClickHouse/pull/96756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Prevented resurrection of dropped data if `ADD COLUMN` is run quickly after a `DROP COLUMN` mutation. [#96713](https://github.com/ClickHouse/ClickHouse/pull/96713) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Conflicting `ALTER` expressions with `UPDATE` and `RENAME COLUMN` now throw a proper exception instead of a logical error. [#96022](https://github.com/ClickHouse/ClickHouse/pull/96022) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Estimated total row count and NDV (number of distinct values) statistics are now collected for aggregation key columns. [#92812](https://github.com/ClickHouse/ClickHouse/pull/92812) ([Alexander Gololobov](https://github.com/davenger)).
- All replicas can now steal orphaned ranges in parallel replicas reading, improving load balancing and reducing long-tail latency. [#91374](https://github.com/ClickHouse/ClickHouse/pull/91374) ([zoomxi](https://github.com/zoomxi)).
- Improved estimation accuracy for automatic parallel replicas with highly selective `PREWHERE` filters. [#97231](https://github.com/ClickHouse/ClickHouse/pull/97231) ([Nikita Taranov](https://github.com/nickitat)).
- `joinGet` now supports temporary tables. [#92973](https://github.com/ClickHouse/ClickHouse/pull/92973) ([Eduard Karacharov](https://github.com/korowa)).
- External aggregation, sorting, and join now respect the `temporary_files_codec` query setting in all contexts. [#92388](https://github.com/ClickHouse/ClickHouse/pull/92388) ([Vladimir Cherkasov](https://github.com/vdimir)).
- Vector similarity search plan optimizations are now only applied when an index exists for the search column. [#94998](https://github.com/ClickHouse/ClickHouse/pull/94998) ([Eduard Karacharov](https://github.com/korowa)).

### Table engines and storage[​](#table-engines-and-storage-improvements "Direct link to Table engines and storage")