> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Журнал изменений за 2026 год

# Журнал изменений 2026

<div id="267">
  ### Релиз ClickHouse 26.7, 2026-07-22. [Презентация](https://presentations.clickhouse.com/2026-release-26.7/), [Видео](https://www.youtube.com/watch?v=mKBNLaFOVDA)
</div>

<div id="267-backward-incompatible-change">
  #### обратно несовместимое изменение
</div>

* Доступ к S3 из пользовательских SQL-запросов теперь по умолчанию больше не использует собственные облачные учетные данные сервера (environment, IMDS/IRSA, instance profile, AWS config files, STS на основе `role_arn`, GCP OAuth metadata); такой запрос должен использовать явные учетные данные или `NOSIGN`. В именованных коллекциях значение `use_environment_credentials` теперь по умолчанию равно `0`. Прежнее поведение можно вернуть для отдельного запроса с помощью `use_environment_credentials = 1` (или глобально через конфигурацию `<s3>`) вместе с новой настройкой `s3_allow_server_credentials_in_user_queries` (по умолчанию отключена). Явно указанные учетные данные и учетные данные из конфигурации, подготовленной оператором, не затрагиваются. При запуске сервера или `RESTORE` постоянная таблица `S3`/`S3Queue`, динамический диск S3 или `DataLakeCatalog`, чье определение использует такие учетные данные, теперь загружается анонимно (и остается недоступной до повторной настройки учетных данных) вместо прерывания запуска; это поведение управляется новой настройкой сервера `s3_load_table_anonymously_if_credentials_restricted` (по умолчанию включена). [#106855](https://github.com/ClickHouse/ClickHouse/pull/106855) ([Raúl Marín](https://github.com/Algunenano)).
* Glob-шаблон `**/` (любое количество каталогов) теперь также соответствует тому же каталогу. Ранее `**/` в glob-шаблонах не обрабатывался как особый случай, поэтому `data/**/file.txt` не соответствовал `data/file.txt` (нулевой уровень каталогов). [#97676](https://github.com/ClickHouse/ClickHouse/pull/97676) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Формат архивов резервных копий `zip`/`zipx` теперь не допускается для резервных копий, хранящихся в объектном хранилище — прямые пункты назначения `S3(...)`/`AzureBlobStorage(...)` и пункты назначения `Disk(...)` на базе S3 или Azure — как для `BACKUP`, так и для `RESTORE`. Для чтения центрального каталога zip требуется произвольный доступ к файлу, что очень медленно в объектном хранилище. Вместо этого используйте формат на основе tar, например `tar.gz`. [#101770](https://github.com/ClickHouse/ClickHouse/pull/101770) ([Yash ](https://github.com/Onyx2406)).
* Поддерживаемый диапазон `DateTime64` расширен с `[1900-01-01, 2299-12-31]` до `[0000-01-01, 9999-12-31]`. Значения за пределами прежнего диапазона теперь вычисляются корректно (через cctz), а не ограничиваются граничными значениями. При precision 8 или 9 диапазон остается более узким, поскольку тики хранятся как `Int64` (при наносекундной точности максимум по-прежнему `2262-04-11`). Обратная совместимость: если вы раньше использовали дату и время вне диапазона, но полагались на очень специфические правила насыщения внутри старого диапазона, имейте в виду, что теперь результаты изменятся и станут более корректными. [#107907](https://github.com/ClickHouse/ClickHouse/pull/107907) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `AggregatingMergeTree` теперь отклоняет при создании таблицы схемы, в которых столбец не является ни частью ключа сортировки, ни мерой состояния агрегации (`AggregateFunction`/`SimpleAggregateFunction`). Такие столбцы молча схлопываются до произвольного значения во время фоновых слияний, что приводит к неверным результатам для запросов, использующих `GROUP BY` или фильтрацию по этим столбцам. Установите `allow_dimensions_outside_sorting_key = 1`, чтобы вернуть прежнее поведение. Закрывает [#751](https://github.com/ClickHouse/ClickHouse/issues/751). [#108087](https://github.com/ClickHouse/ClickHouse/pull/108087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалена конфигурация планирования рабочих нагрузок на основе config (разделы конфигурации сервера `resources` и `workload_classifiers`). Вместо этого используйте запросы `CREATE RESOURCE` и `CREATE WORKLOAD`. Устаревшие разделы конфигурации игнорируются с предупреждением. [#108286](https://github.com/ClickHouse/ClickHouse/pull/108286) ([Sergei Trifonov](https://github.com/serxa)).
* ClickHouse теперь всегда использует единый хеш для дедупликации вставок — как для синхронных, так и для асинхронных вставок; прежние механизмы дедупликации для отдельных вставок удалены. Настройка сервера `insert_deduplication_version` сохранена как защитный механизм при миграции: сервер отказывается запускаться, если для неё задано устаревшее значение (`old_separate_hashes` или `compatible_double_hashes`). Чтобы обновиться с версии, где использовалось устаревшее значение, сначала запустите релиз с поддержкой `compatible_double_hashes` (он записывает и устаревшие, и единые хеши). Для реплицируемых таблиц запускайте его как минимум в течение `replicated_deduplication_window_seconds` (по умолчанию один час; окна по умолчанию сохраняют единые хеши всех вставок за этот интервал, чего считается достаточно для цикла повторных попыток вставки). Для нереплицируемых таблиц с `non_replicated_deduplication_window` > 0 это окно определяется количеством вставок, а не временем, поэтому используйте `compatible_double_hashes` как минимум на протяжении такого количества вставок. Затем удалите эту настройку (или установите значение `new_unified_hash`) перед обновлением до этой версии. [#108361](https://github.com/ClickHouse/ClickHouse/pull/108361) ([Sema Checherinda](https://github.com/CheSema)). Если вы никогда не задавали `insert_deduplication_version`, этот пункт можно игнорировать.
* Удалены давно устаревшие функции `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake` и `dateTime64ToSnowflake`. Они были объявлены устаревшими ещё в v24.6 в пользу `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID` и `dateTime64ToSnowflakeID`, которые теперь и следует использовать. Настройка `allow_deprecated_snowflake_conversion_functions` (которая раньше снова включала их) теперь устарела и не оказывает никакого эффекта. [#108711](https://github.com/ClickHouse/ClickHouse/pull/108711) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Значение настройки `use_legacy_to_time` теперь по умолчанию равно `0`, поэтому `toTime` преобразует значения в тип данных `Time`, а не преобразует дату и время в фиксированную дату. Прежнее поведение по-прежнему доступно через функцию `toTimeWithFixedDate` или при установке `use_legacy_to_time = 1`. [#108729](https://github.com/ClickHouse/ClickHouse/pull/108729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Модели Naive Bayes (используемые `naiveBayesClassifier`) теперь настраиваются как словарь с layout `NAIVE_BAYES`, который при загрузке строится из таблицы с предварительно агрегированными по классам значениями n-gram counts, вместо прежней конфигурации на стороне сервера (XML-файл конфигурации со ссылками на сериализованные файлы моделей `.bin`), которая больше не поддерживается — существующие модели необходимо пересоздать в виде словарей. Вместе с `naiveBayesClassifier` добавлены три новые функции: `naiveBayesClassifierWithProb` возвращает предсказанный класс вместе с его вероятностью, `naiveBayesClassifierWithAllProbs` возвращает все классы с их вероятностями, а `naiveBayesNgrams` разбивает текст на n-граммы так же, как это делает словарь, что позволяет строить обучающие данные из исходных размеченных текстов. Кроме того, было внесено несколько оптимизаций производительности: на языковой модели триграмм кодовых точек размером 9.7 MiB используется примерно в 49 раз меньше оперативной памяти (с 1.84 GiB до 38 MiB), загрузка происходит примерно в 11 раз быстрее, и классификация выполняется примерно в 11 раз быстрее. [#108773](https://github.com/ClickHouse/ClickHouse/pull/108773) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Функция `hasColumnInTable` больше не принимает необязательные аргументы `hostname`, `username` и `password` для проверки столбца на произвольном удалённом сервере; остаётся только форма `hasColumnInTable(database, table, column)`. Удалённый режим создавал угрозу безопасности: он позволял любому пользователю инициировать исходящие подключения к произвольным хостам и приводил к утечке учётных данных в журнал запросов, при этом не был ограничен какой-либо привилегией. [#110881](https://github.com/ClickHouse/ClickHouse/pull/110881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-new-feature">
  #### Новая возможность
</div>

* Добавлен `EXPLAIN ANALYZE` для анализа производительности запросов: запрос выполняется, а фактические метрики выполнения отображаются в привычном формате плана запроса. [#106586](https://github.com/ClickHouse/ClickHouse/pull/106586) ([Kirill Kopnev](https://github.com/Fgrtue)). [#110668](https://github.com/ClickHouse/ClickHouse/pull/110668) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Добавлена поддержка предложений `WHERE` в определениях проекций. Проекции с `WHERE` материализуют только строки, соответствующие предикату, и оптимизатор может использовать их (на основе стоимости), когда `WHERE` запроса подразумевает `WHERE` проекции. [#102347](https://github.com/ClickHouse/ClickHouse/pull/102347) ([S Bala Vignesh](https://github.com/SBALAVIGNESH123)).
* Добавлена настройка `skip_unavailable_shards_mode` (также доступная как настройка движка `Distributed`) для управления тем, какие исключения от удаленного сегмента будут незаметно игнорироваться при включенном `skip_unavailable_shards`. [#79091](https://github.com/ClickHouse/ClickHouse/pull/79091) ([cjw](https://github.com/byte-sourcerer)).
* Добавлена агрегатная функция `groupFormat`, которая форматирует строки в каждой группе в указанном формате вывода и возвращает результат в виде строки. [#93201](https://github.com/ClickHouse/ClickHouse/pull/93201) ([Yang Hu](https://github.com/wandersofb)).
* Добавлен `AWS_MSK_IAM` как поддерживаемое значение для `kafka_sasl_mechanism`, что позволяет ClickHouse аутентифицироваться в Amazon MSK с использованием ролей IAM без необходимости управлять учетными данными SASL/SCRAM. [#96100](https://github.com/ClickHouse/ClickHouse/pull/96100) ([kalavt](https://github.com/kalavt)).
* Добавлен комбинатор агрегатной функции `-Tuple`, который независимо применяет базовую агрегатную функцию к каждому элементу столбца `Tuple` и возвращает `Tuple` с результатами, сохраняя имена элементов: `sumTuple(t)` для `t = (a, b)` возвращает `(sum(a), sum(b))`. Агрегатные функции с несколькими аргументами принимают по одному кортежу на аргумент, сопоставляя элементы по позиции: `corrTuple((a1, a2), (b1, b2))` возвращает `(corr(a1, b1), corr(a2, b2))`. В отличие от `-ForEach` для массивов, элементы могут иметь разные типы, при этом типы и имена результатов для каждого элемента сохраняются. [#98190](https://github.com/ClickHouse/ClickHouse/pull/98190) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Текстовые индексы теперь поддерживают аргумент `postprocessor` — произвольное выражение, которое преобразует каждый токен после токенизации (например, `lower`). [#98939](https://github.com/ClickHouse/ClickHouse/pull/98939) ([Jimmy Aguilar Mena](https://github.com/Ergus)). [#108606](https://github.com/ClickHouse/ClickHouse/pull/108606) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Добавлена системная таблица `system.stemmers`, в которой перечислены все языки, которые можно указать для функции `stem`. [#100611](https://github.com/ClickHouse/ClickHouse/pull/100611) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Добавлена поддержка `WITH TIES` для отрицательного `LIMIT`. [#100930](https://github.com/ClickHouse/ClickHouse/pull/100930) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена поддержка постфиксных операторов стандартного SQL `AT TIME ZONE` и `AT LOCAL` как синтаксического сахара для `toTimeZone`. Выражение `expr AT TIME ZONE zone` теперь эквивалентно `toTimeZone(expr, zone)`, а `expr AT LOCAL` — `toTimeZone(expr, timeZone())`. [#106092](https://github.com/ClickHouse/ClickHouse/pull/106092) ([lizepeng](https://github.com/lvzhipin03)).
* Движок таблицы `URL` и табличная функция `url` теперь направляются к соответствующему backend в зависимости от схемы URL: `file://` обрабатывается движком `File`, `s3://`/`gs://`/`gcs://`/`oss://` — `S3`, `az://`/`azure://`/`abfss://`/`abfs://` — `AzureBlobStorage`, `hdfs://` — `HDFS`, а `http(s)://` — как и раньше движком `URL`. Настройка `url_base` применяется до выбора по схеме. Направляются только схемы S3, разрешаемые `url_scheme_mappers` по умолчанию; другие S3-compatible схемы поставщиков (`cos`, `obs`, ...) не поддерживаются таким образом и требуют прямого использования движка или функции `s3`. [#106093](https://github.com/ClickHouse/ClickHouse/pull/106093) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены движки таблиц `Remote` и `RemoteSecure` — постоянные аналоги табличных функций `remote` и `remoteSecure`. Теперь помимо `CREATE TABLE ... AS remote(...)` работает и `CREATE TABLE ... ENGINE = Remote('addresses', db, table, ...)`. [#106189](https://github.com/ClickHouse/ClickHouse/pull/106189) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены не зависящие от движка команды `SYSTEM STOP`, `SYSTEM START`, `SYSTEM PAUSE`, `SYSTEM CANCEL` и `SYSTEM REFRESH`, а также их общесерверные формы `... ALL BACKGROUND`, чтобы через единый интерфейс управлять фоновой активностью таблиц `Kafka`, `RabbitMQ`, `NATS`, `S3Queue`/`AzureQueue` и refreshable materialized views. Для refreshable materialized views они служат псевдонимами существующих команд `SYSTEM ... VIEW`. В рамках поддержки этих механизмов управления для NATS таблицы JetStream теперь подтверждают сообщения только после успешной вставки (at-least-once; раньше сообщения автоматически подтверждались при доставке и могли теряться, если вставка завершалась ошибкой). Новая настройка `nats_wait_for_flush_interval` (по умолчанию `false`, что сохраняет прежнее поведение с низкой задержкой) позволяет удерживать цикл consumption открытым на весь интервал flush вместо выполнения flush сразу после опустошения queue. Новая настройка `nats_commit_on_select` заставляет прямой `SELECT` из таблицы JetStream потреблять (подтверждать) прочитанные сообщения. [#107476](https://github.com/ClickHouse/ClickHouse/pull/107476) ([Samuel Krempaský](https://github.com/NIKTONIKTO717)).
* Добавлена поддержка передачи пользовательского запроса в табличные функции и движки таблиц `mysql`, `postgresql` и `sqlite` (вместо имени таблицы) с его отправкой во внешнюю СУБД как есть; запрос можно записать либо как подзапрос `(SELECT ...)`, либо как `query('SELECT ...')`. Структура результирующей таблицы выводится из query result, а сама такая таблица доступна только для чтения. Закрывает [#46758](https://github.com/ClickHouse/ClickHouse/issues/46758). Основано на первоначальной реализации [Denis Vidiaev](https://github.com/the-devid) ([#79652](https://github.com/ClickHouse/ClickHouse/pull/79652)). [#107740](https://github.com/ClickHouse/ClickHouse/pull/107740) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В ClickHouse Web интерфейс (Play) добавлены вкладки для одновременной работы с несколькими запросами. Вкладки, их заголовки, параметры, активное состояние и небольшие снимки результатов сохраняются между перезагрузками (крупные результаты и изображения не восстанавливаются), интегрированы с историей браузера и URL, а переключаться между ними можно колесом мыши. [#107826](https://github.com/ClickHouse/ClickHouse/pull/107826) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Представлен движок таблицы `QueryRunner`. Записи, вставленные в таблицу `QueryRunner`, представляют собой запросы, которые этот движок выполняет. Движок можно использовать для асинхронного выполнения запросов, пакетного выполнения сгенерированных запросов, направления запросов в удалённые кластеры, бенчмарков, фаззинга и тестирования с теневым трафиком. [#107888](https://github.com/ClickHouse/ClickHouse/pull/107888) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлен выходной формат `GeoJSON` для записи документов [GeoJSON](https://geojson.org/) `FeatureCollection`, при этом для каждой строки создаётся один объект `feature`. Единственный столбец с геотипом (`Point`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Ring` или `Geometry`) становится `geometry` этого `feature`; столбец с именем `id` становится `id` `feature`; а все оставшиеся столбцы становятся `properties` `feature`, при этом единственный столбец объектного типа с именем `properties` (`JSON`, `Map` или именованный `Tuple`) записывается напрямую как объект `properties`. `Ring` записывается как `Polygon` с одним кольцом. Новая настройка `format_geojson_validate_geometry` (включена по умолчанию) определяет, будут ли геометрии, не являющиеся корректными фигурами GeoJSON, — например, `Polygon` менее чем с четырьмя точками или незамкнутое кольцо `Polygon` — отклоняться при чтении и записи. Кроме того, входной формат `GeoJSON` теперь выводит столбец `id` как `Nullable(String)` вместо `String`, поэтому `feature` с отсутствующим или явно заданным членом `"id": null` читается как `NULL` и остаётся отличимым от пустой строки `""`. Основано на первоначальной реализации [Mark Needham](https://github.com/mneedham) ([#98124](https://github.com/ClickHouse/ClickHouse/pull/98124)). [#108065](https://github.com/ClickHouse/ClickHouse/pull/108065) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена функция `dotProductTransposed` (псевдоним `scalarProductTransposed`), которая вычисляет приближённое скалярное произведение между столбцом `QBit` и опорным вектором, дополняя существующие функции `L2DistanceTransposed` и `cosineDistanceTransposed`. [#108100](https://github.com/ClickHouse/ClickHouse/pull/108100) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Также добавлены квантованные функции транспонированного расстояния `cosineDistanceTransposedQuantized`, `L2DistanceTransposedQuantized` и `dotProductTransposedQuantized`, которые работают с `QBit(Int8)` кодов Lloyd-Max из `quantizeBFloat16ToInt8`, деквантуя сохранённые коды на лету. Опорный вектор типа с плавающей точкой представляет собой полноточный запрос и сравнивается с точностью `Float32` (запрос `Float64` сужается); опорный `Array(Int8)` деквантуется сам, что даёт симметричное расстояние quantized-vs-quantized. [#109405](https://github.com/ClickHouse/ClickHouse/pull/109405) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В тип данных `QBit` добавлен необязательный параметр stride (`QBit(T, dimension, stride)`), который сохраняет группы размерностей в отдельных потоках, чтобы векторный поиск мог эффективно читать только первые размерности (например, для Matryoshka embeddings). Функции транспонированного расстояния принимают необязательный четвёртый аргумент `used_dims` для чтения уменьшенного числа размерностей. [#108103](https://github.com/ClickHouse/ClickHouse/pull/108103) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка типа элементов `Int8` в типе данных `QBit`, что позволяет хранить квантованные 8-битные целочисленные векторы и выполнять по ним векторный поиск с транспонированным расстоянием (`L2DistanceTransposed`, `cosineDistanceTransposed`). [#108105](https://github.com/ClickHouse/ClickHouse/pull/108105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Новая функция `randomHadamardTransform(vector[, seed[, output_dims]])`: детерминированное рандомизированное преобразование Адамара для вектора с плавающей точкой — ортогональный поворот с сохранением нормы, полезный для предварительной обработки embeddings перед квантованием, а также (в усечённом виде) как случайная проекция Джонсона–Линденштраусса / subsampled-randomized-Hadamard. [#108227](https://github.com/ClickHouse/ClickHouse/pull/108227) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка настройки отложенной загрузки словарей для каждого словаря отдельно с помощью параметра `dictionary_lazy_load` в определении словаря, который переопределяет глобальную настройку сервера `dictionaries_lazy_load`, так что одни словари могут загружаться отложенно, а другие — сразу. [#108314](https://github.com/ClickHouse/ClickHouse/pull/108314) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена встроенная страница поиска по документации, доступная по пути `/docs` HTTP interface, которая обеспечивает мгновенный поиск по таблице `system.documentation` и отображает справочную документацию (с подсветкой синтаксиса, математическими формулами и перекрестными ссылками). [#108345](https://github.com/ClickHouse/ClickHouse/pull/108345) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена функция `xxHash64Spark`, которая вычисляет совместимые со Spark значения `xxHash64` для входных данных `String` и `NULL`, используя seed `42`, и возвращает `Int64`. [#108436](https://github.com/ClickHouse/ClickHouse/pull/108436) ([Lalit Yadav](https://github.com/lalitium)).
* `ALTER USER`, `ALTER ROLE` и `ALTER SETTINGS PROFILE` теперь принимают `SET name = value` как Alias for `MODIFY SETTING name = value`. Это изменяет отдельные настройки на месте, сохраняя остальные, в отличие от bare `SETTINGS`, который заменяет весь список настроек. Это снижает вероятность случайно стереть другие настройки пользователя. [#108722](https://github.com/ClickHouse/ClickHouse/pull/108722) ([Groene AI](https://github.com/groeneai)).
* Добавлена поддержка `ALTER TABLE ... MODIFY CONSTRAINT [IF EXISTS] name CHECK expr`, позволяющая изменять выражение существующего ограничения на месте. [#108768](https://github.com/ClickHouse/ClickHouse/pull/108768) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: добавлен переключатель цветового кодирования для каждого столбца (значок 🌈 в заголовке столбца), позволяющий переключаться между режимами bar, heatmap, categorical и без визуализации. Выбранные режимы сохраняются в URL и истории браузера. [#108873](https://github.com/ClickHouse/ClickHouse/pull/108873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Keeper` теперь корректно обрабатывает opcode `CreateContainer` (19) из `ZooKeeper`, управляемый новым opt-in feature flag `create_container` (по умолчанию отключен, как и `create_ttl`). После включения, по завершении полного upgrade всего ensemble, внешние клиенты `ZooKeeper` (например, Java `ZooKeeper` 3.9+) могут создавать узлы-контейнеры в `Keeper` вместо получения `ConnectionLoss`; для узлов-контейнеров возвращается ожидаемое sentinel-значение `ephemeralOwner`, а фоновый поток GC на лидере автоматически удаляет контейнеры без дочерних узлов. Обычный request `Create`, содержащий флаг режима создания `CONTAINER` без opcode 19, по-прежнему отклоняется (`ZBADARGUMENTS`): ни один известный клиент `ZooKeeper` не использует такую комбинацию. Это только server-side compatibility протокола: собственный клиент `ZooKeeper` в ClickHouse (`zkutil`) не изменился и не имеет API для самостоятельного создания узлов-контейнеров. [#108908](https://github.com/ClickHouse/ClickHouse/pull/108908) ([unintended](https://github.com/unintended)).
* Добавлены функции `geoToUTM`, `UTMToGeo`, `geoToMGRS` и `MGRSToGeo` для преобразования между географическими координатами WGS84 и системами координат UTM и MGRS. [#108939](https://github.com/ClickHouse/ClickHouse/pull/108939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена функция `digits(n, offset[, length])`, которая возвращает цифры числа `n`, начиная с 1-based смещения `offset` и охватывая `length` цифр, либо до конца числа, если `length` не указан. [#109012](https://github.com/ClickHouse/ClickHouse/pull/109012) ([Umang Agrawal](https://github.com/1000ms)).
* Добавлена арифметическая функция `sqr` для вычисления квадрата числа. [#109061](https://github.com/ClickHouse/ClickHouse/pull/109061) ([Lalit Yadav](https://github.com/lalitium)).
* Добавлена новая функция `dictGetRoot`, которая возвращает самого верхнего предка (корень) ключа в иерархическом словаре. Это удобный эквивалент `dictGetHierarchy(dict_name, key)[-1]`. [#109459](https://github.com/ClickHouse/ClickHouse/pull/109459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены команды `SYSTEM UNLOAD DICTIONARY` и `SYSTEM UNLOAD DICTIONARIES`, позволяющие освобождать память, занимаемую словарём, без удаления его определения. Словари будут повторно загружаться по требованию при следующем обращении. [#109639](https://github.com/ClickHouse/ClickHouse/pull/109639) ([Matheus Nerone](https://github.com/Manerone)).
* Добавлены функции `geometryIntersectCartesian` и `geometryIntersectSpherical`, которые определяют, пересекаются ли две геометрии. В отличие от `polygonsIntersectCartesian`/`polygonsIntersectSpherical`, они принимают любой geometry data type (`Point`, `LineString`, `MultiLineString`, `Ring`, `Polygon`, `MultiPolygon`), включая общий тип `Geometry`, при этом два аргумента могут быть разных типов. [#110062](https://github.com/ClickHouse/ClickHouse/pull/110062) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Параметры запроса (подстановки `{name:Type}`) теперь можно использовать в качестве значений настроек — как в clause `SETTINGS` запроса (например, `SELECT` или `INSERT`), так и в автономных запросах `SET`, например: `SELECT ... SETTINGS max_threads = {threads:UInt64}` и `SET max_threads = {threads:UInt64}`. [#108760](https://github.com/ClickHouse/ClickHouse/pull/108760) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Раскрытие подстановочных шаблонов для табличной функции `url` и движка таблицы `URL`: подстановочные шаблоны в пути URL раскрываются путём обхода HTTP-страниц индекса (HTML или списков каталогов в plaintext) и извлечения совпадающих URL, с ограничениями на размер страницы индекса и количество читаемых каталогов. Включается настройкой `allow_experimental_url_wildcard_from_index_pages`. [#95181](https://github.com/ClickHouse/ClickHouse/pull/95181) ([Yue Ni](https://github.com/niyue)).
* Текстовые индексы теперь могут хранить позиции токенов (аргумент индекса `support_phrase_search`), чтобы поддерживать точное сопоставление фраз с прямым чтением для функции `hasPhrase`. Требуется включить настройку `MergeTree` `allow_experimental_text_index_phrase_search`. [#103172](https://github.com/ClickHouse/ClickHouse/pull/103172) ([Elmi Ahmadov](https://github.com/ahmadov)). Изначально этот аргумент был представлен под именем `positions`. [#109900](https://github.com/ClickHouse/ClickHouse/pull/109900) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Добавлена поддержка compaction файлов manifest для таблиц `Iceberg` через `OPTIMIZE TABLE ... MANIFEST` (под защитой настройки `allow_experimental_iceberg_compaction`). Закрывает [#95174](https://github.com/ClickHouse/ClickHouse/issues/95174). [#98178](https://github.com/ClickHouse/ClickHouse/pull/98178) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)). Исправлен `OPTIMIZE TABLE ... MANIFEST` для таблиц `Iceberg`, когда кортежи партиций в manifest не соответствуют их спецификации партиции. [#111368](https://github.com/ClickHouse/ClickHouse/pull/111368) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Добавлены вариант Real Doubles (RD) и необязательный аргумент `ALP(AUTO|STD|RD)` для экспериментального кодека `ALP`. `ALP` без параметров теперь автоматически выбирает между существующей схемой `STD` и `RD`, а не всегда использует `STD`. [#99654](https://github.com/ClickHouse/ClickHouse/pull/99654) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Добавлен SLRU-кеш в памяти для десериализованных файлов metadata `Paimon` (manifest list и manifests). При включении через настройку `use_paimon_metadata_files_cache` повторные запросы к одной и той же таблице `Paimon` пропускают повторную загрузку и повторный разбор metadata из Объектного хранилища. [#104657](https://github.com/ClickHouse/ClickHouse/pull/104657) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Добавлены "драйверы" для исполняемых пользовательских функций. Драйвер, объявленный в `<user_defined_executable_function_drivers_config>`, можно использовать в `CREATE FUNCTION name ARGUMENTS (...) RETURNS T ENGINE = DriverName(...) AS '...code...'`, чтобы компилировать или иным образом обрабатывать пользовательский фрагмент кода во время создания функции и получать готовую к запуску исполняемую UDF. Полученная configuration сохраняется в `<dynamic_user_defined_executable_functions_path>`, а исходный запрос сохраняется как `ATTACH FUNCTION`, чтобы функция переживала перезапуски сервера. Proof-of-concept-драйвер `c_function_body` компилирует и запускает тела функций C внутри изолированных контейнеров Docker в режиме `executable_pool`. Основано на первоначальной реализации [Daniil Timižev](https://github.com/dahbka-lis) ([#77128](https://github.com/ClickHouse/ClickHouse/pull/77128)). [#105131](https://github.com/ClickHouse/ClickHouse/pull/105131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SELECT count(*) FROM t WHERE col <op> default(col)` теперь может обслуживаться из статистики разреженности по столбцам в `serialization.json` без какого-либо сканирования данных, когда predicate точно разделяет столбец на значения по умолчанию и отличные от значений по умолчанию (при новой экспериментальной настройке `optimize_trivial_count_with_sparsity_filter`, отключённой по умолчанию). [#105890](https://github.com/ClickHouse/ClickHouse/pull/105890) ([Raúl Marín](https://github.com/Algunenano)).
* API-запросы Prometheus Query API к `/api/v1/query` и `/api/v1/query_range` теперь записываются в `system.query_log` с метриками `read_rows` и `read_bytes`. [#106611](https://github.com/ClickHouse/ClickHouse/pull/106611) ([James Cunningham](https://github.com/JTCunning)).
* Экспериментальный путь чтения `ReaderExecutor` (`use_reader_executor`, по умолчанию отключён) теперь может держать соединение с удалённым источником открытым и повторно использовать его при последовательных чтениях, уменьшая число запросов к объектному хранилищу при сканировании. [#107735](https://github.com/ClickHouse/ClickHouse/pull/107735) ([Sema Checherinda](https://github.com/CheSema)). Теперь он также поддерживает чтение зашифрованных файлов с глобальным кэшем заголовков шифрования, который настраивается через настройку сервера `encryption_header_cache_size` и очищается командой `SYSTEM DROP ENCRYPTION HEADERS CACHE`. [#109702](https://github.com/ClickHouse/ClickHouse/pull/109702) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлена поддержка чтения по распределённому плану запроса для `SELECT ... FINAL` на таблицах семейства `MergeTree`, если включён `make_distributed_plan`. [#108148](https://github.com/ClickHouse/ClickHouse/pull/108148) ([Alexander Gololobov](https://github.com/davenger)).
* Добавлено экспериментальное выполнение запросов `MergeTree` на основе плана с использованием параллельных реплик. [#108504](https://github.com/ClickHouse/ClickHouse/pull/108504) ([Igor Nikonov](https://github.com/devcrafter)).
* Добавлено экспериментальное семейство векторных кодеков `Quantize`, а также включаемое по выбору двухэтапное приблизительное преобразование векторного поиска поверх квантованных сопутствующих потоков. [#108565](https://github.com/ClickHouse/ClickHouse/pull/108565) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Возвращён экспериментальный кодек сжатия с потерями `SZ3` с ограничением ошибки для столбцов `Float32`/`Float64` (и их массивов), изначально реализованный [Konstantin Vedernikov](https://github.com/scanhex12) ([#83088](https://github.com/ClickHouse/ClickHouse/pull/83088)). Для него требуется `allow_experimental_codecs`. [#108788](https://github.com/ClickHouse/ClickHouse/pull/108788) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Исправлено чтение данных, сжатых с помощью `SZ3('ALGO_LORENZO_REG', ...)`, которое ранее завершалось ошибкой `CORRUPTED_DATA`, а также устранено неопределённое поведение при сжатии нефинитных значений с плавающей точкой (`NaN` и бесконечностей). [#110762](https://github.com/ClickHouse/ClickHouse/pull/110762) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен экспериментальный кодек `ZXC` — асимметричный LZ-кодек с медленным сжатием и очень быстрой распаковкой, с коэффициентом сжатия между `LZ4` и `ZSTD`. Для него требуется `allow_experimental_codecs = 1`, а `system.compression_codecs` помечает его как экспериментальный. [#110620](https://github.com/ClickHouse/ClickHouse/pull/110620) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#111007](https://github.com/ClickHouse/ClickHouse/pull/111007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь вы можете аутентифицироваться в OneLake с помощью заранее полученного Bearer-токена через настройку `onelake_bearer_token` вместо `onelake_client_id` и `onelake_client_secret`. Это позволяет избежать передачи долгоживущего секрета клиента. Токен не обновляется, поэтому после истечения срока его действия базу данных нужно пересоздать. [#109104](https://github.com/ClickHouse/ClickHouse/pull/109104) ([Asya Shneerson](https://github.com/asya-ch)).
* Функции ИИ больше не принимают именованную коллекцию как первый позиционный аргумент. Учётные данные берутся из настроек `ai_function_text_default_credentials` / `ai_function_embedding_default_credentials` или из ключа `credentials` в необязательном завершающем аргументе `Map(String, String)`, который также содержит настраиваемые параметры (`model`, `max_tokens`, `temperature`, `system_prompt`, `instructions`, `dimensions`). [#109232](https://github.com/ClickHouse/ClickHouse/pull/109232) ([George Larionov](https://github.com/george-larionov)). Функция `aiEmbed` теперь принимает `model` как обязательный позиционный аргумент (`aiEmbed(text, model[, params])`) вместо чтения его из именованной коллекции, что обеспечивает воспроизводимость эмбеддингов. [#110619](https://github.com/ClickHouse/ClickHouse/pull/110619) ([George Larionov](https://github.com/george-larionov)).
* Исправлено значение `data_uncompressed_bytes` для skip-индексов, упакованных в `skp_idx.packed` (через `packed_skip_index_max_bytes`): сообщаемый несжатый размер был равен сжатому, что также могло мешать активации `distributed_index_analysis`. [#109272](https://github.com/ClickHouse/ClickHouse/pull/109272) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлено экспериментальное packed-хранилище data part для таблиц `MergeTree`, в котором большинство файлов part хранятся в одном архиве `data.packed` вместо отдельного файла для каждого потока (проекции и несколько служебных файлов, таких как `txn_version.txt`, по-прежнему записываются отдельно). Оно управляется настройками `min_bytes_for_full_part_storage`, `min_rows_for_full_part_storage` и `min_level_for_full_part_storage` и по умолчанию отключено. После того как таблица начинает записывать packed parts, старые версии server уже не могут их читать, поэтому включение этого формата делает невозможным понижение версии server. [#108118](https://github.com/ClickHouse/ClickHouse/pull/108118) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена экспериментальная table function `eval`, которая вычисляет константное expression в строку запроса и выполняет получившийся запрос `SELECT`. Возможность по умолчанию отключена и может быть включена с помощью настройки `allow_experimental_eval_table_function`. Автор: [Yue Ni](https://github.com/niyue). [#110132](https://github.com/ClickHouse/ClickHouse/pull/110132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка сжатия `zstd` в экспериментальный HTTP-handler Prometheus remote-write v1. [#110907](https://github.com/ClickHouse/ClickHouse/pull/110907) ([James Cunningham](https://github.com/JTCunning)).
* Запись в таблицы `DeltaLake` (настройка `allow_experimental_delta_lake_writes`) переведена в статус Beta. [#107034](https://github.com/ClickHouse/ClickHouse/pull/107034) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлены `ProfileEvents` `DistributedPlanRemoteTasks`, `DistributedPlanLocalExecution` и `DistributedPlanHostsUsed` для наблюдения за выполнением экспериментальных distributed query plans (`make_distributed_plan`). [#107985](https://github.com/ClickHouse/ClickHouse/pull/107985) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Удалено экспериментальное хранилище на базе RocksDB в Keeper (`experimental_use_rocksdb`). Скоро появится новое, более совершенное on-disk хранилище. [#108000](https://github.com/ClickHouse/ClickHouse/pull/108000) ([Michael Kolupaev](https://github.com/al13n321)).
* Distributed index analysis (экспериментальная возможность, управляемая настройкой `distributed_index_analysis`) теперь отправляет большие списки имен data part на remote server как скаляры, а не встраивает их в query text. Это позволяет избежать возможных сбоев из-за ограничений `max_ast_elements` / `max_query_size` и устраняет overhead на parsing AST. [#110419](https://github.com/ClickHouse/ClickHouse/pull/110419) ([Azat Khuzhin](https://github.com/azat)).
* Оптимизированы экспериментальные aggregation functions `timeSeries*ToGrid`: buckets теперь выровнены и по step, и по window, а финальная aggregation выполняется намного быстрее, когда window значительно больше step. Формат serialization aggregation state был изменен несовместимым образом (эти функции экспериментальные). [#106724](https://github.com/ClickHouse/ClickHouse/pull/106724) ([Vitaly Baranov](https://github.com/vitlibar)).
* External target tables таблицы `TimeSeries` теперь регистрируются как ссылочные зависимости: аналогично materialized views, это запрещает dropping external target table до удаления таблицы `TimeSeries`, которая на нее ссылается (если включен `check_referential_table_dependencies`). [#108388](https://github.com/ClickHouse/ClickHouse/pull/108388) ([Vitaly Baranov](https://github.com/vitlibar)).
* Добавлена функция PromQL `increase`. [#111023](https://github.com/ClickHouse/ClickHouse/pull/111023) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* `JOIN` теперь может использовать индекс первичного ключа или индекс пропуска данных в левой таблице для отсечения гранул. Управляется настройкой `enable_join_runtime_filters_index_analysis`. [#109085](https://github.com/ClickHouse/ClickHouse/pull/109085) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Сериализация и десериализация векторов тривиально сериализуемых типов теперь используют один вызов буферизованного ввода-вывода вместо обработки отдельных элементов. [#89842](https://github.com/ClickHouse/ClickHouse/pull/89842) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Оптимизированы обратные обращения к словарю: предикат равенства с константой, такой как `WHERE dictGet(dict, attr, key_expr) = value`, теперь напрямую сворачивается в фильтр по ключу (`key_expr = const`, `key_expr IN [...]` или `WHERE 0`) вместо переписывания в подзапрос `IN (SELECT ... FROM dictionary(...))`, а константный путь `dictGetKeys` теперь выполняется параллельно. [#91164](https://github.com/ClickHouse/ClickHouse/pull/91164) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена новая настройка `merge_tree_generic_exclusion_search_max_steps`, которая ограничивает число шагов, затрачиваемых универсальным алгоритмом поиска с исключением на анализ индекса первичного ключа каждой части данных. Бюджет сначала расходуется на самые большие оставшиеся диапазоны ключей, поэтому даже небольшой бюджет позволяет отсечь основную часть данных; диапазоны, которые не были полностью проанализированы, читаются целиком, поэтому результаты запроса остаются корректными, но может быть прочитано больше гранул. Ограничение применяется нестрого: оно может быть превышено максимум на `merge_tree_coarse_index_granularity` шагов, плюс на один шаг для каждого диапазона, на которые эта часть уже разбита (например, кэшем условий запроса). Значение по умолчанию 0 означает неограниченное число шагов. [#92779](https://github.com/ClickHouse/ClickHouse/pull/92779) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Запросы с `ORDER BY` и `LIMIT` к представлениям поверх таблиц `Distributed` теперь используют оптимизацию merge-sorted-streams: внешний `ORDER BY`/`LIMIT` проталкивается во внутренний запрос простого представления, поэтому каждый шард сортирует свои данные локально, а координатор объединяет заранее отсортированные потоки вместо полной сортировки. [#94102](https://github.com/ClickHouse/ClickHouse/pull/94102) ([matanper](https://github.com/matanper)).
* `optimize_or_like_chain` теперь включена по умолчанию. Закрывает [#87779](https://github.com/ClickHouse/ClickHouse/issues/87779). [#94517](https://github.com/ClickHouse/ClickHouse/pull/94517) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ротируемые нереплицируемые системные таблицы логов `MergeTree` без TTL теперь помечаются как `table_readonly`, чтобы избежать ненужных фоновых операций. Настройка `table_readonly` для `MergeTree` теперь также подавляет всю фоновую работу в обычной таблице `MergeTree` — обычные слияния, TTL (`DELETE`/`MOVE`/recompression) и слияния с повторным сжатием, фоновые мутации и фоновые перемещения частей — и отклоняет команды изменения партиций (`ATTACH`/`MOVE`/`DROP`/`DROP DETACHED`/`FETCH`/`REPLACE PARTITION` и `MOVE PARTITION ... TO TABLE` в эту таблицу), в дополнение к вставкам, мутациям и `OPTIMIZE`, которые уже отклонялись. В результате таблица `table_readonly` с TTL больше не удаляет свои устаревшие данные, пока эта настройка включена. [#95079](https://github.com/ClickHouse/ClickHouse/pull/95079) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* Улучшена производительность получения одной записи пользователя из `system.users`, когда на сервере много пользователей. [#96699](https://github.com/ClickHouse/ClickHouse/pull/96699) ([Alistair Evans](https://github.com/alistairjevans)).
* Упорядоченное чтение с параллельными репликами теперь использует ту же логику разбиения таблицы на `max_threads` частей, что и локальное чтение, для лучшего параллелизма. [#101434](https://github.com/ClickHouse/ClickHouse/pull/101434) ([Nikita Taranov](https://github.com/nickitat)).
* Используются границы minmax-индекса партиций, чтобы отсеивать больше гранул при анализе primary key для таблиц `MergeTree`, когда столбец primary key также входит в ключ партиционирования. Например, в таблице `MergeTree` с `ORDER BY (id, event_time)` и `PARTITION BY toYYYYMM(event_time)` ClickHouse будет использовать minmax-индекс партиции по `event_time` при анализе primary key index, чтобы точнее решать, какие гранулы можно отсечь. Это поведение управляется новой настройкой `use_partition_minmax_for_primary_key_pruning` (включена по умолчанию). [#103480](https://github.com/ClickHouse/ClickHouse/pull/103480) ([UnamedRus](https://github.com/UnamedRus)).
* Включён кэш условий запроса для запросов, использующих динамическую фильтрацию Top-K (`ORDER BY ... LIMIT n`). Запись в кэше разделяется по параметрам плана Top-K, поэтому один и тот же запрос повторно использует закэшированные результаты фильтра `WHERE`, а другое значение `LIMIT`, столбец сортировки или направление сортировки создаёт новую запись. [#104478](https://github.com/ClickHouse/ClickHouse/pull/104478) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена настройка `use_constant_folding_in_index_analysis` (по умолчанию отключена). Когда она включена, анализ primary key, `MinMax` и skip-index в `MergeTree` подставляет константы уровня партиции в предикат фильтра отдельно для каждой части, улучшая pruning для фильтров, ветви которых зависят от значений партиции, например `(a = 1 AND b >= 1) OR (a = 2 AND b > 10)` с `PARTITION BY a`. [#104582](https://github.com/ClickHouse/ClickHouse/pull/104582) ([Mikhail Artemenko](https://github.com/Michicosun)).
* `LIMIT` теперь проталкивается в aggregation-in-order, чтобы обеспечить раннее завершение, когда ключ `GROUP BY` совпадает с ключом `ORDER BY` и ключом сортировки таблицы, что значительно сокращает число считываемых строк. [#104859](https://github.com/ClickHouse/ClickHouse/pull/104859) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Обновление profile events теперь выполняется до 30 раз быстрее благодаря per-CPU атомарным операциям для общесерверных и пользовательских счётчиков. Это поведение управляется настройкой сервера `user_profile_events_per_cpu` (она использует около 640 КиБ на пользователя на 64 ядрах, поэтому при очень большом числе пользователей её может быть разумно оставить отключённой). [#105056](https://github.com/ClickHouse/ClickHouse/pull/105056) ([Azat Khuzhin](https://github.com/azat)).
* `allow_aggregate_partitions_independently` теперь включена по умолчанию. Когда ключ `GROUP BY` соответствует ключу партиционирования, ClickHouse может агрегировать каждую партицию независимо и пропускать этап глобального слияния. Эвристики времени выполнения автоматически отключают эту оптимизацию, если структура партиций делает её невыгодной (слишком мало партиций, слишком много партиций или сильно неравномерные размеры партиций). [#105128](https://github.com/ClickHouse/ClickHouse/pull/105128) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запросы векторного поиска с пересчётом оценок (`vector_search_with_rescoring = 1`) теперь вычисляют точное расстояние только для строк, возвращённых векторным индексом, применяя точный фильтр по позиции строки вместо brute-force-пересчёта оценок для соседних строк из той же гранулы `MergeTree`. [#105591](https://github.com/ClickHouse/ClickHouse/pull/105591) ([Sergey Kuznetsov](https://github.com/skuznetsov)). [#108846](https://github.com/ClickHouse/ClickHouse/pull/108846) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Повышена производительность алгоритма join `partial_merge` на ключах `FixedString`: теперь он сравнивает серии значений сразу, а не выполняет отдельный вызов сравнения для каждого значения. [#105737](https://github.com/ClickHouse/ClickHouse/pull/105737) ([Artem Zuikov](https://github.com/4ertus2)).
* `SHOW TABLES` и `system.tables` для каталогов озера данных (Iceberg REST, Glue, Unity, Hive, Paimon) теперь проталкивают в каталог предикаты, ограниченные пространством имен, что позволяет избежать полного сканирования каталога. Закрывает [#105022](https://github.com/ClickHouse/ClickHouse/issues/105022). [#106029](https://github.com/ClickHouse/ClickHouse/pull/106029) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Ограничили объем неотслеживаемой памяти на CPU, чтобы избежать overcommit и ошибок нехватки памяти (лимиты задаются настройками сервера `max_per_cpu_untracked_memory` и `per_cpu_untracked_memory_thread_buffer`). [#106055](https://github.com/ClickHouse/ClickHouse/pull/106055) ([Azat Khuzhin](https://github.com/azat)).
* Ускорили операторы, которые сканируют отсортированный поток в поисках серий одинаковых значений ключа — `DISTINCT` in order, `LIMIT BY` in order, отрицательный `LIMIT BY` in order, `full_sorting_merge` и `partial_merge` JOIN. [#106502](https://github.com/ClickHouse/ClickHouse/pull/106502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Реализовали нативные reader и writer для форматов `Arrow` и `ArrowStream`, не использующие библиотеку Apache Arrow, что позволяет избежать лишних копирований и преобразований данных. Теперь они используются по умолчанию (настройки `input_format_arrow_use_native_reader` и `output_format_arrow_use_native_writer`) и работают быстрее как при чтении, так и при записи. [#106522](https://github.com/ClickHouse/ClickHouse/pull/106522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Снова включили LTO для jemalloc после исправления повреждения кэша потоков, возникавшего при LTO, что повышает производительность. [#106898](https://github.com/ClickHouse/ClickHouse/pull/106898) ([Azat Khuzhin](https://github.com/azat)).
* Снизили использование памяти и повысили производительность `JOIN`. Правая сторона hash join теперь использует компактную 8-байтную ссылку на строку на основе индекса, поэтому элементы hash-таблицы для `ALL` JOIN стали такими же компактными, как и для `ANY` JOIN, при любом типе ключей. Бенчмарк проводился на крупных запросах `parallel_hash` JOIN — `INNER` и `ANY` JOIN таблиц размером 100–300 миллионов строк по ключам `UInt64` и `String`, как с уникальными, так и с повторяющимися ключами: медианный запрос стал примерно на 12% быстрее и использовал примерно на 15% меньше пикового потребления памяти, при этом ни один запрос не стал медленнее. `INNER` JOIN по ключам `UInt64` дали наибольший прирост (медианно примерно на 21% быстрее при снижении использования памяти на 38%). [#107189](https://github.com/ClickHouse/ClickHouse/pull/107189) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Одноколоночные ключи JOIN типа `LowCardinality(String)` без `Nullable` теперь нативно поддерживаются в hash join. [#107264](https://github.com/ClickHouse/ClickHouse/pull/107264) ([Nikita Taranov](https://github.com/nickitat)).
* Добавили алгоритм перебора порядка JOIN `dpsub` (dynamic programming over subsets), который строит оптимальные планы JOIN с меньшими накладными расходами на оптимизацию, чем `dpsize`, и поддерживает не только `INNER` JOIN. [#107351](https://github.com/ClickHouse/ClickHouse/pull/107351) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Ускорили загрузку файлового кэша при запуске, кодируя размер каждого файла кэша в его имени (`<offset>_<size>`), что позволяет избежать вызова `stat` для каждого файла. Поддержка загрузки файлов кэша, записанных старыми версиями, сохранена. [#107415](https://github.com/ClickHouse/ClickHouse/pull/107415) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Повысили производительность `arrayElement` для `Array(LowCardinality(String))` и map-функций `LIKE` для `Map` с ключами или значениями типа `LowCardinality(String)` за счет устранения ненужной материализации строк. [#107450](https://github.com/ClickHouse/ClickHouse/pull/107450) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Исключили преобразование одноуровневой агрегации в двухуровневую при малом использовании памяти, отслеживая память самого состояния агрегации, а не память всего запроса. [#107490](https://github.com/ClickHouse/ClickHouse/pull/107490) ([Hechem Selmi](https://github.com/m-selmi)).
* Ускорили анализ агрегирующих запросов: ключ кэша для статистики размера hash-таблицы агрегации теперь вычисляется по плану запроса вместо построения полного AST запроса. [#107643](https://github.com/ClickHouse/ClickHouse/pull/107643) ([Dmitry Novik](https://github.com/novikd)).
* Производительность `INTERSECT ALL` и `EXCEPT ALL` (режима по умолчанию для `INTERSECT` и `EXCEPT`) повышена в несколько раз за счёт использования значения строки в качестве ключа мультимножества вместо хеширования каждой строки с помощью SipHash. [#107649](https://github.com/ClickHouse/ClickHouse/pull/107649) ([Raúl Marín](https://github.com/Algunenano)).
* Фильтры политик строк теперь перестраиваются без удержания блокировки кэша, что повышает масштабируемость запросов при одновременном выполнении `CREATE ROW POLICY` и `DROP ROW POLICY`. [#107917](https://github.com/ClickHouse/ClickHouse/pull/107917) ([Azat Khuzhin](https://github.com/azat)).
* Ускорены функции `match`, `extract`, `extractAll`, `replaceRegexpOne` и `replaceRegexpAll` для простых регулярных выражений за счёт компиляции в нативный код с помощью LLVM. Это управляется новой настройкой `compile_regular_expressions` (включена по умолчанию); шаблоны регулярных выражений вне поддерживаемого подмножества автоматически обрабатываются движком RE2. [#108004](https://github.com/ClickHouse/ClickHouse/pull/108004) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ускорена распаковка ZSTD на AArch64 (ARM) для столбцов с небольшими смещениями совпадений, таких как целочисленные столбцы фиксированной ширины, за счёт векторизации перекрывающихся копирований с короткими смещениями с помощью NEON. Например, распаковка столбца `UInt64` на AWS Graviton 4 теперь выполняется до \~2.3x быстрее. [#108049](https://github.com/ClickHouse/ClickHouse/pull/108049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Для сжатия и распаковки gzip/zlib/deflate теперь используется библиотека `libdeflate`, что повышает скорость (сжатие — \~1.15× при лучшем коэффициенте, распаковка — \~1.4–1.5×) для данных `.gz`/HTTP/`url`/`s3` и кодека Parquet GZIP. [#108074](https://github.com/ClickHouse/ClickHouse/pull/108074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшена производительность запросов текстового поиска в сочетании с фильтром по первичному ключу. [#108114](https://github.com/ClickHouse/ClickHouse/pull/108114) ([Anton Popov](https://github.com/CurtizJ)).
* Для оптимизации последующих запусков теперь используется runtime-статистика, собранная во время первого выполнения запроса: алгоритм `hash` JOIN может автоматически переключаться на `parallel_hash` на основе собранной статистики. [#108125](https://github.com/ClickHouse/ClickHouse/pull/108125) ([Hechem Selmi](https://github.com/m-selmi)). Размер runtime-фильтров JOIN теперь оптимизируется с использованием размера хеш-таблицы из runtime-статистики JOIN; это управляется новой настройкой `join_runtime_filter_size_from_hash_table_stats`. [#108313](https://github.com/ClickHouse/ClickHouse/pull/108313) ([Hechem Selmi](https://github.com/m-selmi)).
* Повышена скорость распаковки LZ4 для столбцов фиксированного размера с низкой мощностью. [#108175](https://github.com/ClickHouse/ClickHouse/pull/108175) ([Nikita Taranov](https://github.com/nickitat)).
* Ускорены функции `trimLeft`/`trimRight`/`trimBoth`, удаляющие пробелы по умолчанию (и их псевдонимы `ltrim`/`rtrim`/`trim`): последовательные строки, которым не требуется обрезка, копируются одним батчем, а посимвольная проверка пробелов выполняется только для строк, у которых действительно есть пробел в начале или в конце. [#108177](https://github.com/ClickHouse/ClickHouse/pull/108177) ([Groene AI](https://github.com/groeneai)).
* Повышена производительность `replaceAll` и `replaceRegexpAll`, когда шаблон — один символ, а замена — тоже один символ (например, `replaceRegexpAll(s, ' ', '_')`). Такие замены больше не меняют структуру строки, поэтому теперь столбец копируется один раз, а совпадающие байты переписываются на месте вместо выполнения отдельного цикла поиска для каждого совпадения. [#108178](https://github.com/ClickHouse/ClickHouse/pull/108178) ([Groene AI](https://github.com/groeneai)).
* Улучшена производительность функции `pointInPolygon` при работе с константным многоугольником. Кэш предварительно обработанных многоугольников теперь использует в качестве ключа исходные константные аргументы, поэтому константный многоугольник разбирается только один раз (при cache miss), а не заново для каждого входного блока. [#108184](https://github.com/ClickHouse/ClickHouse/pull/108184) ([Groene AI](https://github.com/groeneai)).
* Ускорен разбор канонического представления даты и времени `YYYY-MM-DD hh:mm:ss` в режиме best-effort (`date_time_input_format = 'best_effort'`, `cast_string_to_date_time_mode = 'best_effort'`), который используется по умолчанию. Это устраняет регрессию производительности разбора, появившуюся после переключения этих значений по умолчанию с `basic` на `best_effort`. [#108187](https://github.com/ClickHouse/ClickHouse/pull/108187) ([Groene AI](https://github.com/groeneai)).
* Исключено ведение счётчиков селективности в `system.predicate_statistics_log` на пути чтения `MergeTree`, когда эта возможность отключена (`predicate_statistics_sample_rate = 0`, значение по умолчанию). Это убирает атомарное обновление на гранулу и `O(rows)` popcount фильтра при каждом чтении, устраняя регрессию производительности, наиболее заметную на AArch64. [#108190](https://github.com/ClickHouse/ClickHouse/pull/108190) ([Groene AI](https://github.com/groeneai)).
* Ускорен разбор чисел с плавающей запятой из текста при `precise_float_parsing = 1`, так что он стал не медленнее, а на большинстве входных данных даже быстрее парсера по умолчанию. Также обновлена включённая в поставку библиотека `fast_float` до v8.2.10. [#108205](https://github.com/ClickHouse/ClickHouse/pull/108205) ([Raúl Marín](https://github.com/Algunenano)).
* Для функций кодирования и декодирования base64 теперь используется библиотека `simdutf`, что повышает их производительность. [#108333](https://github.com/ClickHouse/ClickHouse/pull/108333) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Оптимизирован `DISTINCT` для дорогих ключей с высокой кардинальностью. [#108366](https://github.com/ClickHouse/ClickHouse/pull/108366) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* В сборках не для Linux (macOS и FreeBSD) jemalloc больше не очищает грязные страницы слишком активно (один системный вызов `madvise` на каждый `free`); теперь, как и в Linux, используется фоновый поток очистки с конечным `dirty_decay_ms`. Это значительно ускоряет рабочие нагрузки с интенсивным выделением памяти, такие как рекурсивные CTE (\~2x в бенчмарке рекурсивных CTE на macOS), при пренебрежимо малом влиянии на RSS. [#108430](https://github.com/ClickHouse/ClickHouse/pull/108430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ускорено планирование запросов в анализаторе для выражений, которые ссылаются на один и тот же алиас `WITH` или многократно повторяют одно и то же подвыражение (например, глубоко вложенные цепочки `if`/`multiIf`), за счёт отказа от повторной сборки общих подвыражений при построении DAG действий. [#108523](https://github.com/ClickHouse/ClickHouse/pull/108523) ([Dmitry Novik](https://github.com/novikd)).
* Runtime filters теперь строятся по ключам равенства, даже если предложение `ON` также содержит предикаты неравенства, что уменьшает число строк, попадающих в hash join, для JOIN, сочетающих условия равенства и неравенства. `LEFT ANTI JOIN` не затронут. [#108579](https://github.com/ClickHouse/ClickHouse/pull/108579) ([Antonio Álvarez Caballero](https://github.com/29antonioac)).
* Глобально включён `-fno-math-errno` во всей кодовой базе, что позволяет компилятору лучше оптимизировать математические функции. [#108628](https://github.com/ClickHouse/ClickHouse/pull/108628) ([Nikita Taranov](https://github.com/nickitat)).
* Порог software-prefetch для hash tables агрегации и JOIN снижен с `4 * L2 cache size` до `L2 cache size`, чтобы prefetch включался, как только hash table перестаёт помещаться в L2. Это устраняет регрессию для `GROUP BY` и `JOIN` на hash tables среднего размера (\~1-8 MiB) на платформах с большим заявленным L2 (например, AArch64 с L2 на 2 MiB). [#108655](https://github.com/ClickHouse/ClickHouse/pull/108655) ([Groene AI](https://github.com/groeneai)).
* Повышена производительность оконных функций. Оконные запросы к широким таблицам с `SELECT *` теперь потребляют значительно меньше памяти и выполняются быстрее. Оконные агрегатные функции, включая `quantile*`, `uniq*` и `groupArray`, работают быстрее с `OVER ()` и `OVER (ORDER BY ... RANGE ...)`. Функция `cume_dist` тоже ускорена, а окна с `PARTITION BY` или `ORDER BY` теперь лучше работают на столбцах с большим количеством повторяющихся значений. [#108688](https://github.com/ClickHouse/ClickHouse/pull/108688) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ускорен анализ запросов с большим количеством или очень длинными цепочками сравнений через `AND`: оптимизация `optimize_and_compare_chain` теперь ограничивается бюджетом вычислений (новая настройка `optimize_and_compare_chain_max_hash_work`) вместо хеширования значительной части дерева запроса, а при разрешении lambda-выражений больше не пересчитываются хеши тел lambda для защиты от рекурсии. [#108757](https://github.com/ClickHouse/ClickHouse/pull/108757) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена регрессия производительности при многопоточном чтении столбцов `JSON`/`Dynamic`: получение значения настройки `input_format_binary_max_type_complexity` для каждого значения приводило к конкуренции за счётчик ссылок в общем контексте запроса, из-за чего параллельные чтения фактически сериализовались; теперь значение настройки кэшируется отдельно в каждом потоке. [#108797](https://github.com/ClickHouse/ClickHouse/pull/108797) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлена регрессия производительности (появившаяся в [#71781](https://github.com/ClickHouse/ClickHouse/issues/71781)), из-за которой чтение множества небольших файлов из объектного хранилища через `s3` и другие табличные функции переставало использовать prefetching и возвращалось к синхронным чтениям, что заметно замедляло однопоточные чтения и чтения с низким параллелизмом при работе с большим количеством мелких файлов. [#108872](https://github.com/ClickHouse/ClickHouse/pull/108872) ([Nikita Fomichev](https://github.com/fm4v)). Начальный prefetch для небольших объектов теперь также выполняется, когда чтение из объектного хранилища идёт через файловый кэш (`filesystem_cache_name`), поэтому чтение множества небольших файлов (например, при ингестии `S3Queue`) с включённым кэшем больше не является синхронным и ограниченным задержками. [#109478](https://github.com/ClickHouse/ClickHouse/pull/109478) ([Nikita Fomichev](https://github.com/fm4v)).
* Разбор глубоко вложенных литералов массивов и кортежей теперь выполняется за линейное, а не за квадратичное время. [#108892](https://github.com/ClickHouse/ClickHouse/pull/108892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Снижены накладные расходы из-за конкуренции за блокировки в алгоритме JOIN `parallel_hash`. [#108938](https://github.com/ClickHouse/ClickHouse/pull/108938) ([Hechem Selmi](https://github.com/m-selmi)).
* Ускорена работа `estimateCompressionRatio` для столбцов с кодированием `T64` за счёт аналитического вычисления сжатого размера вместо фактического сжатия. [#109054](https://github.com/ClickHouse/ClickHouse/pull/109054) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Устранено однопоточное узкое место на этапе shuffle в распределённых планах выполнения запросов: теперь каждый входящий stream независимо распределяет свои строки по бакетам назначения, вместо того чтобы пропускать весь поток данных через одно преобразование. [#109206](https://github.com/ClickHouse/ClickHouse/pull/109206) ([Alexander Gololobov](https://github.com/davenger)).
* Снижено потребление CPU сервером Keeper в режиме простоя. [#109255](https://github.com/ClickHouse/ClickHouse/pull/109255) ([Michael Kolupaev](https://github.com/al13n321)).
* Ускорены сериализация и слияние столбцов `JSON`, чьи общие данные содержат много разрежённых path: при flattening общих данных в отдельные столбцы по path устранено посрочное сканирование всех накопленных столбцов path, а пропуски теперь заполняются пакетно вместо вставки значений по умолчанию по одной ячейке за раз. [#109341](https://github.com/ClickHouse/ClickHouse/pull/109341) ([Groene AI](https://github.com/groeneai)).
* Снижены накладные расходы CPU на вычисление выражений для queries с большим количеством столбцов (например, при векторном поиске по столбцу `QBit` с малым stride, когда каждый вектор разворачивается в сотни битовых подстолбцов, которые затем передаются в один вызов `*DistanceTransposed`). [#109380](https://github.com/ClickHouse/ClickHouse/pull/109380) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Повышена производительность H3 Geo-функций (`h3ToGeoBoundary`, `h3ToGeo`, `h3CellAreaM2`/`h3CellAreaRads2`, `geoToH3`) за счёт совместного вычисления пар sine/cosine и устранения избыточных тригонометрических вызовов при преобразовании координат. Результаты не изменились (побитово идентичны). [#109399](https://github.com/ClickHouse/ClickHouse/pull/109399) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* До 7 раз повышена производительность сравнений (`<`, `>`, `<=`, `>=`) для широких целочисленных типов (`Int128`, `UInt128`, `Int256`, `UInt256` и типов на их основе, таких как `Decimal128`), а также преобразования целых чисел со знаком в `Int256` (до 7 раз на данных со смешанными знаками) за счёт устранения ветвлений в коде сравнения и знакового расширения. [#109474](https://github.com/ClickHouse/ClickHouse/pull/109474) ([Manuel](https://github.com/raimannma)).
* Оптимизированы `uniqCombined` (включая случай aggregation без keys) и `uniqHLL12`. [#109794](https://github.com/ClickHouse/ClickHouse/pull/109794) ([Anton Popov](https://github.com/CurtizJ)). [#109831](https://github.com/ClickHouse/ClickHouse/pull/109831) ([Anton Popov](https://github.com/CurtizJ)).
* Функции `arraySort` и `arrayReverseSort` работают в несколько раз быстрее на числовых массивах (включая `Decimal` и `DateTime64`) при вызове без lambda. [#109832](https://github.com/ClickHouse/ClickHouse/pull/109832) ([Manuel](https://github.com/raimannma)).
* Ускорены `addDays`, `addWeeks`, `subtractDays` и `subtractWeeks` для значений `DateTime` и `DateTime64` в часовых поясах с фиксированным смещением (например, UTC) за счёт использования быстрого арифметического пути. [#109836](https://github.com/ClickHouse/ClickHouse/pull/109836) ([Manuel](https://github.com/raimannma)).
* Оптимизирован анализ text index. [#109886](https://github.com/ClickHouse/ClickHouse/pull/109886) ([Anton Popov](https://github.com/CurtizJ)).
* Распараллелена обработка несоединённых строк в join algorithm `parallel_hash` ещё в двух случаях: при наличии остаточного filter и в случае малых join keys (одноуровневая хеш-таблица). [#110008](https://github.com/ClickHouse/ClickHouse/pull/110008) ([Hechem Selmi](https://github.com/m-selmi)).
* Ответы встроенного web UI (Play UI, панели мониторинга и обработчики статических файлов) теперь сжимаются в соответствии с header `Accept-Encoding` клиента с использованием zstd, gzip, deflate, brotli, lz4, xz, snappy или bzip2. Например, страница `/play` уменьшается с \~350 КБ в несжатом виде до менее 120 КБ при использовании zstd, что сокращает время загрузки на медленных соединениях. Уже сжатые Response остаются без изменений, а для корректного разбиения CDN и cache по вариантам выдаётся `Vary: Accept-Encoding`. [#110108](https://github.com/ClickHouse/ClickHouse/pull/110108) ([Sayantanu Dey](https://github.com/sayantanu-dey)).
* Теперь фильтр можно проталкивать ниже оконной функции или `LIMIT BY`, когда это безопасно: предикат, заданный над ними (внешний `WHERE` вокруг подзапроса или конъюнкт в `QUALIFY`), который ссылается только на столбцы `PARTITION BY` окна или только на столбцы ключа `LIMIT BY` (для `LIMIT n BY` при `n >= 1` и без `OFFSET`), теперь опускается до уровня хранилища и позволяет задействовать отсечение по первичному ключу и партициям, индексы пропуска данных и проекции. Например, `SELECT ... row_number() OVER (PARTITION BY key ORDER BY ts) AS rn ... QUALIFY rn = 1 AND key = 'x'` больше не читает всю таблицу и не вычисляет оконную функцию для неё целиком. [#110114](https://github.com/ClickHouse/ClickHouse/pull/110114) ([Groene AI](https://github.com/groeneai)). [#110116](https://github.com/ClickHouse/ClickHouse/pull/110116) ([Groene AI](https://github.com/groeneai)).
* При `join_use_nulls = 1` `WHERE`, отбрасывающий `NULL` и ссылающийся на столбцы с обеих сторон внешнего JOIN (например, `WHERE l.k = 42 AND r.k = 42`), теперь преобразует JOIN в `INNER` (или `LEFT`/`RIGHT`) и позволяет выполнять отсечение по первичному ключу, как и при `join_use_nulls = 0`. Ранее в этом случае такое преобразование не выполнялось, и обе таблицы читались целиком. [#110121](https://github.com/ClickHouse/ClickHouse/pull/110121) ([Groene AI](https://github.com/groeneai)).
* Функции с одним неконстантным аргументом `Nullable` теперь используют общую с результатом null map аргумента вместо выделения и слияния новой. [#110151](https://github.com/ClickHouse/ClickHouse/pull/110151) ([Manuel](https://github.com/raimannma)).
* Убрано одно выделение памяти в куче на каждую проверку гиперпрямоугольника при анализе индекса первичного ключа, что ускоряет фильтрацию по меткам на 5–26% в зависимости от структуры запроса. [#110153](https://github.com/ClickHouse/ClickHouse/pull/110153) ([Manuel](https://github.com/raimannma)).
* Повышена производительность функций `arrayMin` и `arrayMax` для числовых массивов примерно в 1,3–1,5 раза за счёт векторизованной редукции вместо цикла посэлементного сравнения. [#110163](https://github.com/ClickHouse/ClickHouse/pull/110163) ([Manuel](https://github.com/raimannma)).
* Векторизована декомпрессия кодека `Delta`. Декодирование теперь выполняется в 1,5–5 раз быстрее для 8-/16-/32-битных типов данных, что ускоряет сканирование столбцов, сжатых кодеком `Delta`, до 20%. [#110189](https://github.com/ClickHouse/ClickHouse/pull/110189) ([Manuel](https://github.com/raimannma)).
* Ускорены string search functions (`like`, `position`, `match`, `countSubstrings`, `hasToken` и т. д.) для столбцов `Enum` с константной искомой строкой: теперь поиск выполняется только по уникальным именам enum, а затем результаты сопоставляются со строками, вместо поиска по каждой строке отдельно. [#110325](https://github.com/ClickHouse/ClickHouse/pull/110325) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ускорены агрегатные функции `groupBitOr`/`groupBitAnd`/`groupBitXor` и семейство функций для дисперсии (`varPop`, `varSamp`, `stddevPop`, `stddevSamp`, `skewPop`, `skewSamp`, `kurtPop`, `kurtSamp`, `covarPop`, `covarSamp`, `corr`) за счёт векторизованной пакетной обработки: ускорение до 4 раз с комбинатором `-If` при непредсказуемых условиях и до 3 раз для семейства дисперсии без него. [#110461](https://github.com/ClickHouse/ClickHouse/pull/110461) ([Manuel](https://github.com/raimannma)).
* Ускорен анализ text index (этап, на котором выбирается, какие гранулы читать): теперь используется поиск по исключению вместо перебора всех гранул, а также исключено создание временного битового массива для каждой проверки диапазона. [#110530](https://github.com/ClickHouse/ClickHouse/pull/110530) ([Anton Popov](https://github.com/CurtizJ)).
* В автоматической оптимизации `PREWHERE` теперь учитывается размер подстолбцов `Map` на диске. Это исправляет регрессию производительности в `PREWHERE`, появившуюся в [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). Часть [#110462](https://github.com/ClickHouse/ClickHouse/issues/110462). [#110623](https://github.com/ClickHouse/ClickHouse/pull/110623) ([Pavel Kruglov](https://github.com/Avogar)).
* Ускорен разбор значений `UUID` из текста (например, `JSONExtract` в `LowCardinality(UUID)`, `toUUID`, `CAST AS UUID`) за счет проверки и преобразования шестнадцатеричных цифр за один проход вместо двух. [#110625](https://github.com/ClickHouse/ClickHouse/pull/110625) ([Groene AI](https://github.com/groeneai)).
* Значительно повышена производительность агрегатных функций `timeSeries*ToGrid` за счет более быстрых реализаций сортировки и хеш-таблиц. [#110875](https://github.com/ClickHouse/ClickHouse/pull/110875) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Запросы вида `SELECT * FROM t WHERE id` теперь используют пропуск данных по индексу для столбца `id`. Закрывает [#89222](https://github.com/ClickHouse/ClickHouse/issues/89222). [#89603](https://github.com/ClickHouse/ClickHouse/pull/89603) ([Aditya Chopra](https://github.com/adityachopra29)).
* Добавлена настройка `query_plan_merge_expression_into_join` (включена по умолчанию), которая позволяет объединять шаги вычисления выражений со шагами `JOIN` при оптимизации переупорядочивания `JOIN`. Это позволяет переупорядочивать `JOIN` между подзапросами, оборачивающими `JOIN` (например, когда `JOIN` находится внутри подзапроса с вычисляемыми столбцами), что улучшает оптимизацию сложных деревьев `JOIN`. [#98533](https://github.com/ClickHouse/ClickHouse/pull/98533) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Оптимизированы цепочки `AND` с несколькими условиями сравнения для одного и того же выражения: обнаруживаются противоречия (например, `a < 3 AND a > 5` → `false`) и удаляются избыточные условия (например, `a = 3 AND a < 5` → `a = 3`). [#99736](https://github.com/ClickHouse/ClickHouse/pull/99736) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Materialized CTEs, на которые ссылаются из нескольких ветвей запроса `UNION`, теперь материализуются один раз и совместно используются всеми ветвями. Ранее каждая ветвь получала собственную копию CTE, которая встраивалась в запрос и вычислялась отдельно. [#102107](https://github.com/ClickHouse/ClickHouse/pull/102107) ([Dmitry Novik](https://github.com/novikd)).
* Потоки в `BackgroundSchedulePool` теперь создаются лениво, по мере необходимости, а не все сразу при запуске сервера. Новая настройка сервера `background_schedule_pool_initial_size` (по умолчанию `16`) задает, сколько воркеров создается заранее; при необходимости пул увеличивается до `background_schedule_pool_size`. Это уменьшает число простаивающих потоков на серверах с низкой нагрузкой. Закрывает [#85265](https://github.com/ClickHouse/ClickHouse/issues/85265). [#105066](https://github.com/ClickHouse/ClickHouse/pull/105066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Пропускается ненужная загрузка файлов меток для расширенной сериализации общих данных типа `JSON`. [#107051](https://github.com/ClickHouse/ClickHouse/pull/107051) ([Pavel Kruglov](https://github.com/Avogar)).
* Кэш предварительно обработанных константных полигонов для функции `pointInPolygon` теперь общий для всех запросов и потоков и ограничен новой настройкой сервера `point_in_polygon_cache_size` (по умолчанию 256 MiB, `0` отключает кэш, настройку можно менять во время выполнения). Ранее кэш хранил до `max_threads` копий каждого предварительно обработанного полигона, неограниченно разрастался при появлении разных полигонов и никогда не освобождался до перезапуска сервера. Его можно очистить командой `SYSTEM DROP POINT IN POLYGON CACHE`, а текущее использование отображается в `system.metrics` как `PointInPolygonCacheBytes`, `PointInPolygonCacheCells` и `PointInPolygonCacheSizeLimit`. Закрывает [#106393](https://github.com/ClickHouse/ClickHouse/issues/106393). [#107247](https://github.com/ClickHouse/ClickHouse/pull/107247) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Keeper больше не удерживает внутреннюю блокировку снимков во время сериализации и записи снимка на диск или перемещения снимков между дисками, поэтому передача снимков другим узлам и обработка Raft больше не задерживаются из-за локального создания снимка. [#107595](https://github.com/ClickHouse/ClickHouse/pull/107595) ([Antonio Andelic](https://github.com/antonio2368)).
* Распараллелено фоновое вытеснение файлового кэша (управляется настройками `keep_free_space_ratio`). Добавлена новая настройка `keep_free_space_eviction_threads` для управления параллелизмом, а значение по умолчанию для `keep_free_space_remove_batch` увеличено со `100` до `250`. [#108147](https://github.com/ClickHouse/ClickHouse/pull/108147) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Число одновременно подготавливаемых частей при копировании в Azure Blob Storage по схеме read-then-write (используется резервными копиями, когда нативное копирование недоступно) ограничено значением `max_inflight_parts_for_one_file`, что предотвращает чрезмерное использование памяти при параллельном копировании большого числа крупных файлов. [#108232](https://github.com/ClickHouse/ClickHouse/pull/108232) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Все три кэша текстового индекса теперь включены глобально — раньше они были включены только внутри запросов. Кроме того, размер кэша списков вхождений теперь равен нулю, что фактически снова его отключает, поскольку списки вхождений велики и их кэширование обходится слишком дорого. [#108274](https://github.com/ClickHouse/ClickHouse/pull/108274) ([Robert Schulze](https://github.com/rschu1ze)).
* Добавлено потоковое сжатие marks в памяти при их загрузке, чтобы уменьшить пиковое потребление памяти. Закрывает [#108285](https://github.com/ClickHouse/ClickHouse/issues/108285). [#108325](https://github.com/ClickHouse/ClickHouse/pull/108325) ([Pavel Kruglov](https://github.com/Avogar)).
* Новая настройка файлового кэша `reserve_granularity` (по умолчанию 4 MiB) заранее резервирует место более крупными гранулами, снижая конкуренцию за блокировки на горячем пути резервирования пространства файлового кэша. [#108369](https://github.com/ClickHouse/ClickHouse/pull/108369) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Уменьшен объём памяти, используемой метаданными файлового кэша (для каждого file segment и каждого ключа). [#108477](https://github.com/ClickHouse/ClickHouse/pull/108477) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Запросы к `system.iceberg_history` с фильтрами `WHERE` по столбцам `database` и `table` теперь обращаются только к соответствующим базам данных, что может сэкономить время, если на сервере много несвязанных удалённых баз данных. [#108492](https://github.com/ClickHouse/ClickHouse/pull/108492) ([Den Kalantaevskii](https://github.com/Diskein)).
* Из файлового кэша удалены лишние блокировки, чтобы снизить конкуренцию за них. [#108932](https://github.com/ClickHouse/ClickHouse/pull/108932) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Снижено использование памяти при обработке метаданных `BACKUP` и `RESTORE`. При открытии резервной копии (для `RESTORE` или в качестве базы для инкрементального `BACKUP`) метаданные `.backup` теперь разбираются как поток, а не загружаются в XML-дерево документа в памяти, что для больших (особенно инкрементальных) резервных копий позволяет избежать выделения многогигабайтного DOM-дерева. [#109107](https://github.com/ClickHouse/ClickHouse/pull/109107) ([Julia Kartseva](https://github.com/jkartseva)). При завершении `BACKUP` больше не копируются метаданные всех файлов во временный вектор, что для резервных копий с миллионами файлов раньше временно требовало несколько гигабайт памяти. [#109861](https://github.com/ClickHouse/ClickHouse/pull/109861) ([Julia Kartseva](https://github.com/jkartseva)). При записи записей резервной копии также больше не копируется список метаданных файлов текущего хоста. [#111162](https://github.com/ClickHouse/ClickHouse/pull/111162) ([Julia Kartseva](https://github.com/jkartseva)).
* Снижено потребление памяти в агрегаторе. [#109224](https://github.com/ClickHouse/ClickHouse/pull/109224) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлена поддержка кэша условий запроса для локальных файлов `Parquet`, читаемых через движок таблицы `File` (ранее это поддерживалось только для Объектного хранилища и озёр данных). [#109247](https://github.com/ClickHouse/ClickHouse/pull/109247) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Использование памяти кэшем заголовков текстового индекса снижено в 2–2,5 раза. В кэш помещается больше заголовков частей данных (настройка `text_index_header_cache_size`), что уменьшает число чтений с диска для запросов текстового поиска. [#109332](https://github.com/ClickHouse/ClickHouse/pull/109332) ([Anton Popov](https://github.com/CurtizJ)).
* Транспонированные функции расстояния для векторов `L2DistanceTransposed`, `cosineDistanceTransposed` и `dotProductTransposed` теперь применяют оптимизацию частичного чтения битовых плоскостей к столбцам `Nullable(QBit)`, считывая только запрошенные битовые плоскости вместо всего столбца. [#109358](https://github.com/ClickHouse/ClickHouse/pull/109358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `IS NOT DISTINCT FROM` и `IS TRUE` теперь используют первичный ключ и MinMax-индексы для отсечения гранул, как и `=`. Ранее `k IS NOT DISTINCT FROM 42` и `(k = 42) IS TRUE` сканировали все гранулы. [#110006](https://github.com/ClickHouse/ClickHouse/pull/110006) ([Groene AI](https://github.com/groeneai)).
* Соединения из пула больше не проверяются с помощью `Ping` перед каждым использованием. Это убирает обмен `Ping`-`Pong`, который добавлялся к каждому повторно используемому соединению, уменьшая задержку распределённых запросов и `clickhouse-benchmark`. Неактуальное соединение в пуле обнаруживается с помощью `poll` с нулевым тайм-аутом (неблокирующая проверка, не добавляющая лишнего сетевого обмена) и восстанавливается повторным подключением. [#110068](https://github.com/ClickHouse/ClickHouse/pull/110068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены ложные переподключения HTTP keep-alive-соединений из пула поверх TLS (HTTPS, S3). Проверка неактуального соединения использовала `poll` на сокете, из-за чего активное защищённое соединение с непрочитанной TLS-записью после рукопожатия (session ticket или `KeyUpdate`) ошибочно определялось как закрытое; теперь используются неблокирующий `MSG_PEEK` для обычных сокетов и `SSL_peek`/`SSL_has_pending` для TLS-сокетов, что также корректно определяет штатное завершение TLS и TLS-запись, пришедшую лишь частично. [#110402](https://github.com/ClickHouse/ClickHouse/pull/110402) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запросы, ускоренные динамической фильтрацией TopK (`ORDER BY ... LIMIT k`), теперь полнее используют кэш условий запроса: кэш заполняется даже тогда, когда к запросу применяется отложенная материализация, и такие запросы могут повторно использовать записи, ранее сохранённые обычным запросом с тем же предикатом `WHERE`. [#110507](https://github.com/ClickHouse/ClickHouse/pull/110507) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Шаблон `LIKE`/`NOT LIKE` без подстановочных шаблонов (`%`, `_`) теперь использует точный диапазон первичного ключа, поэтому читает то же количество гранул, что и эквивалентный предикат `=`/`!=`, а не более широкий префиксный диапазон. [#107077](https://github.com/ClickHouse/ClickHouse/pull/107077) ([Groene AI](https://github.com/groeneai)).
* Исправлено избыточное состязание за блокировки сегментов файлов (регрессия производительности, появившаяся в 26.1) при чтении данных через файловый кэш. [#109577](https://github.com/ClickHouse/ClickHouse/pull/109577) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена проблема, из-за которой индекс пропуска данных, определённый на подстолбцах `Tuple`, не использовался, когда к полю обращались через `tupleElement(t, 'name')`, `tupleElement(t, N)` или `t.N`, а полный кортеж также читался в том же запросе (например, `SELECT *`). Теперь все эти формы отсекают гранулы так же, как и обращение к именованному подстолбцу `t.name`. [#110056](https://github.com/ClickHouse/ClickHouse/pull/110056) ([Groene AI](https://github.com/groeneai)).
* Исправлены медленные запросы `ORDER BY ... LIMIT` на таблицах `Distributed`, когда `prefer_localhost_replica` выбирает локальную реплику: из плана локального шарда был удалён предварительный limit, который мешал отложенной материализации и динамической top-K-фильтрации. [#110136](https://github.com/ClickHouse/ClickHouse/pull/110136) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Исправлена проблема, из-за которой текстовый индекс не использовался для оператора `ILIKE`, если индекс был определён по выражению, а не по обычному столбцу (например, `assumeNotNull(col)` с препроцессором `lower(...)`): такие запросы читали все гранулы вместо использования индекса. Это закрывает [#110350](https://github.com/ClickHouse/ClickHouse/issues/110350). [#110595](https://github.com/ClickHouse/ClickHouse/pull/110595) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Снижено состязание за блокировки в файловом кэше: запросы, читающие из кэша, больше не блокируются на блокировке очереди с приоритетами при обновлении LRU-приоритета записи. [#109065](https://github.com/ClickHouse/ClickHouse/pull/109065) ([Antonio Andelic](https://github.com/antonio2368)).
* Запросы к текстовому индексу, использующие выражение `postprocessor` только для фильтрации (например, `if(..., '', token)`), теперь отбрасывают пустые токены заранее, вместо того чтобы материализовать их построчно, что повышает производительность. [#109049](https://github.com/ClickHouse/ClickHouse/pull/109049) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Снижено состязание за блокировки в очередях системных логов, что уменьшает хвостовую задержку запросов в нагруженных кластерах. [#110539](https://github.com/ClickHouse/ClickHouse/pull/110539) ([Sean Haynes](https://github.com/seandhaynes)).
* Повышена производительность функций поиска подстроки (`position`, `countSubstrings`, `multiSearch*`, `replaceAll`, `replaceOne` и их регистронезависимых и UTF-8-вариантов) с неконстантной искомой строкой — до 1.5x — за счёт использования SIMD-ускоренных поисковиков строк на пути построчной обработки вместо наивной реализации. [#110580](https://github.com/ClickHouse/ClickHouse/pull/110580) ([Raúl Marín](https://github.com/Algunenano)).
* Отложенная материализация теперь применяется к запросам `ReplacingMergeTree` с `FINAL`, фильтром и небольшим `LIMIT` даже без `ORDER BY`. Столбцы, не нужные для фильтра и слияния `FINAL`, извлекаются только для строк, оставшихся после limit, что делает такие запросы значительно быстрее, когда они выбирают широкие столбцы с селективным фильтром. Управляется параметрами `query_plan_optimize_lazy_materialization` и `query_plan_max_limit_for_lazy_materialization`. [#110722](https://github.com/ClickHouse/ClickHouse/pull/110722) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Улучшена производительность async insert, когда включена дедупликация и одна операция flush разбивается на несколько партиций: ClickHouse теперь повторно использует вычисленные хеши дедупликации между партициями вместо того, чтобы заново вычислять их для каждой из них. [#111150](https://github.com/ClickHouse/ClickHouse/pull/111150) ([Valery Petrov](https://github.com/valerypetrov)).

<div id="267-improvement">
  #### Улучшения
</div>

* Добавлена настройка `input_format_csv_missing_nullable_as_empty_string` (по умолчанию отключена). Когда она включена, отсутствующее значение в столбце `Nullable(String)` во входных CSV-данных читается как пустой `String` вместо `NULL`, независимо от `input_format_csv_empty_as_default`. [#58225](https://github.com/ClickHouse/ClickHouse/pull/58225) ([kevinyhzou](https://github.com/KevinyhZou)). [#107577](https://github.com/ClickHouse/ClickHouse/pull/107577) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Функции `toDateOrNull`, `toDateTimeOrNull` и `toDateTime64OrNull` теперь принимают целочисленные аргументы всех встроенных целочисленных типов (они интерпретируются так же, как в `toDate`, `toDateTime` и `toDateTime64`, с необязательным аргументом часового пояса) и возвращают `NULL` для значений вне диапазона результирующего типа. Например, `toDateTimeOrNull(1583851242, 'Asia/Shanghai')` возвращает `2020-03-10 22:40:42`, а `toDateTimeOrNull(4294967296)` возвращает `NULL`. [#79791](https://github.com/ClickHouse/ClickHouse/pull/79791) ([Jitendra](https://github.com/jitendra1411)).
* В таблицу `system.grants` добавлен столбец `is_wildcard`, который показывает, использует ли grant сопоставление по префиксу с подстановочным знаком (например, `GRANT SELECT ON db*.*`). Раньше в `system.grants` нельзя было отличить grants с подстановочными знаками от точных grants с тем же именем. Закрывает [#92835](https://github.com/ClickHouse/ClickHouse/issues/92835). [#98577](https://github.com/ClickHouse/ClickHouse/pull/98577) ([DQ](https://github.com/il9ue)).
* Добавлена поддержка сжатия Snappy в HTTP-интерфейсе (`Accept-Encoding: snappy`), а также настройка `snappy_mode`, позволяющая выбирать между блочным форматом Hadoop Snappy и форматом кадрирования Snappy для общего snappy I/O `file`/`url`. [#100752](https://github.com/ClickHouse/ClickHouse/pull/100752) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка совместимости со старым analyzer через настройку `analyzer_compatibility_allow_non_aggregate_in_having`. Если она включена, неагрегатные условия переносятся из `HAVING` в `WHERE`. [#104232](https://github.com/ClickHouse/ClickHouse/pull/104232) ([Dmitry Novik](https://github.com/novikd)).
* Добавлена новая настройка сервера `memory_worker_rss_speculative_reserve_ratio` (по умолчанию `1.0`), из-за которой глобальный трекер памяти спекулятивно резервирует память сверх наблюдаемого RSS, если рост RSS между выборками опережает учёт трекера. Благодаря этому `MEMORY_LIMIT_EXCEEDED` для выделений возникает раньше, а kernel OOM-killer срабатывает с меньшей вероятностью. Установите коэффициент в `0`, чтобы отключить эту спекуляцию. [#104976](https://github.com/ClickHouse/ClickHouse/pull/104976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены опциональные метрики Prometheus для активности вытеснения файлового кэша (`filesystem_cache_evictions_total`, `filesystem_cache_evicted_bytes_total`, `filesystem_cache_evicted_segment_hits`, `filesystem_cache_evicted_segment_size_bytes` и их варианты для каждого пользователя с меткой `user_id`), доступные для каждого кэша через `system.dimensional_metrics`, `system.histogram_metrics` и конечную точку Prometheus. Они управляются настройками конфигурации cache disk `expose_prometheus_eviction_metrics` и `expose_prometheus_eviction_metrics_per_user` (обе по умолчанию выключены), которые можно переключать во время выполнения через `SYSTEM RELOAD CONFIG`. [#105020](https://github.com/ClickHouse/ClickHouse/pull/105020) ([Sacheendra Talluri](https://github.com/sacheendra)).
* `EXPLAIN [PLAN] actions=1, compact=1, pretty=1` теперь используется по умолчанию. [#105036](https://github.com/ClickHouse/ClickHouse/pull/105036) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Обновлён `delta-kernel-rs` (библиотека, лежащая в основе интеграции `DeltaLake`) до v0.23.0. [#105861](https://github.com/ClickHouse/ClickHouse/pull/105861) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* В `clickhouse-disks` добавлены команды `du` и `wc`. Первая выводит общий размер указанного файла или каталога в байтах, вторая — количество байтов, строк и слов в файле. [#106268](https://github.com/ClickHouse/ClickHouse/pull/106268) ([Asya Shneerson](https://github.com/asya-ch)).
* Добавлена новая асинхронная Метрика `UntrackedMemory` (видна в `system.asynchronous_metrics`), которая показывает память, уже выделенную потоками, но еще не учтенную в глобальном счетчике отслеживания памяти: каждый поток локально накапливает небольшие выделения и затем сообщает о них одним пакетом. Это помогает объяснить расхождения между `MemoryTracking` и фактическим использованием памяти процессом. Сообщения об ошибке `MEMORY_LIMIT_EXCEEDED` теперь также включают объем неотслеживаемой памяти, что упрощает понимание того, почему запрос или сервер достиг лимита памяти. [#106386](https://github.com/ClickHouse/ClickHouse/pull/106386) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* ClickStack (UI для обсервабилити) обновлен до версии 2.28.0. [#106406](https://github.com/ClickHouse/ClickHouse/pull/106406) ([Aaron Knudtson](https://github.com/knudtty)).
* Добавлена поддержка `BFloat16` в `dotProduct`, а также повышена производительность за счет пакетной обработки SIMD-пути. [#106569](https://github.com/ClickHouse/ClickHouse/pull/106569) ([Nikita Taranov](https://github.com/nickitat)).
* Настройки `max_named_collection_num_to_throw`, `max_table_num_to_throw`, `max_replicated_table_num_to_throw`, `max_view_num_to_throw`, `max_dictionary_num_to_throw` и `max_database_num_to_throw` теперь можно изменять без перезапуска сервера. [#106821](https://github.com/ClickHouse/ClickHouse/pull/106821) ([Maxim Orlovsky](https://github.com/UberDever)).
* Для настройки `s3_storage_class_name` добавлена поддержка значений `REDUCED_REDUNDANCY`, `STANDARD_IA`, `ONEZONE_IA`, `GLACIER_IR` и `EXPRESS_ONEZONE` (в дополнение к `STANDARD` и `INTELLIGENT_TIERING`). [#107251](https://github.com/ClickHouse/ClickHouse/pull/107251) ([Aditya Kumar](https://github.com/adityaksolves)).
* Для движка базы данных `MaterializedPostgreSQL` добавлена настройка времени создания `materialized_postgresql_use_extended_date_and_time_types`. По умолчанию (если она включена) столбцы PostgreSQL `date`/`timestamp` определяются как `Date32`/`DateTime64`; если задать ей значение `0` во время `CREATE DATABASE`, будут определены более узкие типы `Date`/`DateTime`. Эта настройка не применяется к движку таблицы `MaterializedPostgreSQL`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Квантификатор массива `SOME` / `ALL` (`expr OP SOME(array)` / `expr OP ALL(array)`) теперь также поддерживает предикаты сравнения по ключевым словам `IS DISTINCT FROM` и `IS NOT DISTINCT FROM`, а также строковые предикаты поиска `LIKE`, `ILIKE`, `NOT LIKE`, `NOT ILIKE` и `REGEXP`, которые переписываются в `arrayExists` / `arrayAll`. [#107454](https://github.com/ClickHouse/ClickHouse/pull/107454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена утечка памяти, возникавшая при неудачном открытии базы данных SQLite (например, когда табличной функции `sqlite` или движку базы данных `SQLite` передается путь, который невозможно открыть). [#107807](https://github.com/ClickHouse/ClickHouse/pull/107807) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В Web UI (`play.html`) подсказка с сочетанием клавиш для запуска теперь показывает `Cmd+Enter` на Mac и `Ctrl+Enter` на других платформах вместо постоянного `Ctrl/Cmd+Enter`, а часть `, +Shift to run all` отображается только при наличии нескольких запросов. [#107817](https://github.com/ClickHouse/ClickHouse/pull/107817) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#108957](https://github.com/ClickHouse/ClickHouse/pull/108957) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Движок таблицы `Alias` теперь поддерживает чтение с параллельных реплик, если целевая таблица относится к семейству `MergeTree`. [#107830](https://github.com/ClickHouse/ClickHouse/pull/107830) ([Kai Zhu](https://github.com/nauu)).
* Добавлен тип статистики столбцов `uniq_v2` — легковесная альтернатива статистике `uniq`, основанная на скетче `uniqCombined64`. [#107863](https://github.com/ClickHouse/ClickHouse/pull/107863) ([Han Fei](https://github.com/hanfei1991)). Тип статистики столбцов `minmax` объявлен устаревшим, а значение по умолчанию для `auto_statistics_types` изменено на `basic, uniq_v2`. [#108680](https://github.com/ClickHouse/ClickHouse/pull/108680) ([Han Fei](https://github.com/hanfei1991)).
* Функции ИИ (`aiGenerate`, `aiEmbed`, `aiClassify`, `aiExtract`, `aiTranslate`) теперь повторяют попытки при временных сетевых сбоях (сбросе соединения, ошибках TLS-подключения, тайм-аутах, недоступности адресов), если задан параметр `ai_function_max_retries`, что соответствует поведению повторных попыток у табличной функции `url`. Ранее повторные попытки выполнялись только для HTTP-ответов с ошибками со стороны провайдера. [#107927](https://github.com/ClickHouse/ClickHouse/pull/107927) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `INSERT` в таблицу `MergeTree` теперь учитывает отмену запроса и `max_execution_time` при записи большого числа частей, вместо того чтобы потенциально продолжать выполняться еще долго после принудительной остановки. [#107929](https://github.com/ClickHouse/ClickHouse/pull/107929) ([Michael Kolupaev](https://github.com/al13n321)).
* В Web UI (`play.html`) значок Web Terminal теперь можно открыть в новой вкладке браузера щелчком средней кнопкой мыши или Ctrl/Cmd/Shift+щелчком. [#108006](https://github.com/ClickHouse/ClickHouse/pull/108006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Генерация SQL с помощью ИИ в клиенте больше не отправляет параметр `temperature`, если он не задан явно через `ai.temperature` в конфигурации. Это исправляет генерацию SQL с помощью ИИ для моделей, которые не принимают параметр `temperature`. [#108014](https://github.com/ClickHouse/ClickHouse/pull/108014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В сборки с открытым исходным кодом добавлены таблица `system.masking_policies` и интроспекция `SHOW MASKING POLICIES`. Сами masking policies по-прежнему остаются возможностью ClickHouse Cloud, поэтому в сборках с открытым исходным кодом таблица пуста, но запросы интроспекции больше не завершаются ошибкой. [#108030](https://github.com/ClickHouse/ClickHouse/pull/108030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Kafka consumer на базе Keeper теперь случайным образом меняет порядок захвата временных блокировок партиций между репликами, что улучшает равномерность распределения партиций и снижает конкуренцию за блокировки. Ранее это перемешивание фактически не работало. [#108033](https://github.com/ClickHouse/ClickHouse/pull/108033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В Web UI (`play.html`) добавлено автодополнение на основе `system.completions` и SQL-лексера на базе WASM. [#108059](https://github.com/ClickHouse/ClickHouse/pull/108059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` и `clickhouse-local` теперь показывают подсказки автодополнения по мере ввода (встроенный "призрачный" текст) с наиболее подходящим вариантом, когда курсор находится в конце строки ввода. Наиболее релевантные подсказки (недавно использованные и идентификаторы, уже присутствующие в запросе) показываются первыми. Перемещайтесь с помощью Up/Down (или Ctrl-Up/Ctrl-Down); принимайте одиночную или выбранную подсказку с помощью Tab или Right, а выбранную подсказку — с помощью Enter; Tab также открывает классический список дополнений. Управляется новой опцией `--hints` (включена по умолчанию; требует `--highlight`). [#108070](https://github.com/ClickHouse/ClickHouse/pull/108070) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка функции `length` для типа данных `QBit` — она возвращает размерность вектора как константу. [#108071](https://github.com/ClickHouse/ClickHouse/pull/108071) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Также поддерживается `CAST` из `QBit` в `Array` с восстановлением исходного вектора — это преобразование, обратное уже существующему преобразованию из `Array` в `QBit`. [#108072](https://github.com/ClickHouse/ClickHouse/pull/108072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запросы к REST-каталогам озёр данных (например, OneLake) теперь включают заголовок ClickHouse `User-Agent`. [#108117](https://github.com/ClickHouse/ClickHouse/pull/108117) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* `arrayFold` теперь корректно обрабатывает отмену запроса и `max_execution_time`. Ранее свёртка по очень длинному массиву полностью выполнялась внутри одного вызова функции и не могла быть прервана, поэтому `KILL QUERY` и ограничения по времени игнорировались до завершения свёртки. [#108192](https://github.com/ClickHouse/ClickHouse/pull/108192) ([Groene AI](https://github.com/groeneai)).
* `MVTEncodeGeom` теперь привязывает геометрию к целочисленной пиксельной сетке перед обрезкой и обрезает полигоны с помощью библиотеки `wagyu`, поэтому обрезанный результат получается корректным (самопересекающиеся кольца исправляются) и выровненным по границам, как в PostGIS `ST_AsMVTGeom`. [#108248](https://github.com/ClickHouse/ClickHouse/pull/108248) ([Saarthak Gupta](https://github.com/saarthak2002)).
* Добавлены `ProfileEvents` для отдельных фаз подготовки запроса к выполнению: `QueryParseMicroseconds`, `QueryAnalysisMicroseconds`, `QueryPlanBuildMicroseconds` и `QueryPipelineBuildMicroseconds`. Они показывают, на что тратится время до выполнения запроса (разбор, анализ, построение плана запроса, построение конвейера), и доступны в `system.query_log` и `system.events`. [#108282](https://github.com/ClickHouse/ClickHouse/pull/108282) ([Jordi Villar](https://github.com/jrdi)).
* Операции `ALTER TABLE`, которые привели бы к созданию метаданных таблицы, превышающих `max_query_size`, теперь отклоняются заранее, что предотвращает ситуации, при которых таблицу не смогут загрузить такие компоненты, как распределение DDL и восстановление реплики. [#108283](https://github.com/ClickHouse/ClickHouse/pull/108283) ([Andrew Kravchuk](https://github.com/lockie)).
* В `system.backups` и `system.backup_log` добавлены столбцы `settings` и `engine_settings`. `settings` показывает настройки резервного копирования/восстановления, запрошенные для операции (например, `allow_s3_native_copy`, `deduplicate_files`, `structure_only`), а `engine_settings` — настройки, фактически использованные модулями чтения и записи движка резервного копирования (например, настройки S3 request, такие как `allow_native_copy`, которые могут отличаться от запрошенных после слияния конфигурации конечной точки). Это позволяет увидеть, с какими именно настройками фактически выполнялась операция `BACKUP`/`RESTORE`. [#108334](https://github.com/ClickHouse/ClickHouse/pull/108334) ([Julia Kartseva](https://github.com/jkartseva)).
* В `system.documentation` добавлен столбец `source`, содержащий путь к исходному файлу, где определена документация для каждой сущности. Теперь в этой таблице также документируются кодеки сжатия, profile events, текущие метрики, асинхронные метрики и сами системные таблицы (вместе с их столбцами), а документация настроек теперь включает их тип и значение по умолчанию. [#108346](https://github.com/ClickHouse/ClickHouse/pull/108346) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Пустое значение настройки по умолчанию теперь отображается как *пустая строка*, а не как пустые обратные кавычки. [#108708](https://github.com/ClickHouse/ClickHouse/pull/108708) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка асинхронного чтения с удалённых реплик (`async_socket_for_remote`) в macOS за счёт реализации примитивов polling на основе epoll поверх `kqueue`. Это позволяет распределённым запросам читать шарды параллельно в macOS, а не последовательно. [#108403](https://github.com/ClickHouse/ClickHouse/pull/108403) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена поддержка `BFloat16` в функциях бинарной математики. [#108442](https://github.com/ClickHouse/ClickHouse/pull/108442) ([Zhang Yifan](https://github.com/zhangyifan27)).
* `MergeTree` теперь может читать сжатый поток, блоки которого используют разные кодеки. Это необходимая предпосылка на стороне чтения для адаптивного выбора кодека ([#105404](https://github.com/ClickHouse/ClickHouse/issues/105404)). [#108592](https://github.com/ClickHouse/ClickHouse/pull/108592) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Автоматическое значение `max_threads` и аналогичных настроек теперь отображается в `system.settings` как `auto(8)`, а не как `'auto(8)'`; окружающие одинарные кавычки были давним артефактом, встроенным в само значение. Совместимость между версиями сохранена: прежняя форма в кавычках по-прежнему принимается при разборе настроек, полученных от более старых серверов. [#108657](https://github.com/ClickHouse/ClickHouse/pull/108657) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Несколько улучшений удобства использования веб-интерфейса `/schema`: загрузка схемы по Enter, полосы прокрутки с учётом темы, читаемые имена таблиц, согласованная группировка независимых таблиц по базам данных, отсутствие выделения текста при перетаскивании и форма аутентификации в стиле `play` (Credential Management API, учётные данные, передаваемые через URL, с удалением пароля и проверкой учётных данных в реальном времени). [#108724](https://github.com/ClickHouse/ClickHouse/pull/108724) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Режим отложенного применения posting list для текстового индекса больше не является экспериментальным и может быть выбран с помощью `text_index_posting_list_apply_mode = 'lazy'` без `allow_experimental_text_index_lazy_apply`. Настройка порога плотности была переименована из `text_index_density_threshold` в `text_index_lazy_intersection_density_threshold`. [#108814](https://github.com/ClickHouse/ClickHouse/pull/108814) ([Anton Popov](https://github.com/CurtizJ)).
* В `DataLakeCatalog` добавлен тип каталога `delta_sharing` для Iceberg REST-конечной точки Databricks Delta Sharing, у которой плоские пространства имен и которая игнорирует фильтр списка `parent`. Используйте его вместо `catalog_type = 'rest'` для таких конечных точек, где иначе `SHOW TABLES` будет зависать. [#108865](https://github.com/ClickHouse/ClickHouse/pull/108865) ([Seva Potapov](https://github.com/seva-potapov)).
* Добавлена новая опция `clickhouse-client`/`clickhouse-local` `--echo-query-separator`, которая выводит пользовательский разделитель перед отформатированным эхо запроса, благодаря чему проще отличить введённый запрос от его переформатированной версии. По умолчанию отключена. [#108888](https://github.com/ClickHouse/ClickHouse/pull/108888) ([David Meng](https://github.com/davidmenggx)).
* Улучшения панели баз данных веб-интерфейса: количество таблиц теперь отображается в скобках рядом с именем базы данных, когда она раскрыта. [#108891](https://github.com/ClickHouse/ClickHouse/pull/108891) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Кнопка обновления рядом с раскрытой базой данных перезагружает список её таблиц. [#108958](https://github.com/ClickHouse/ClickHouse/pull/108958) ([Alexey Milovidov](https://github.com/alexey-milovidov)). При повторном открытии панели ранее раскрытые базы данных восстанавливаются. [#108964](https://github.com/ClickHouse/ClickHouse/pull/108964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь в `EXPLAIN WHATIF` можно вычислять совокупный эффект skip-index: показывается доля данных для пересечения всех существующих подходящих гипотетических индексов. [#108934](https://github.com/ClickHouse/ClickHouse/pull/108934) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлен сброс позиции горизонтальной прокрутки результирующей таблицы в веб-интерфейсе при переходе по ссылке в ячейке и возврате на страницу. [#108941](https://github.com/ClickHouse/ClickHouse/pull/108941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `MySQL` database engine, движок таблицы и table function теперь сопоставляют пространственные типы столбцов MySQL (`LINESTRING`, `POLYGON`, `MULTILINESTRING`, `MULTIPOLYGON` и обобщённый `GEOMETRY`) с соответствующими геометрическими типами ClickHouse вместо `String`. Это поведение управляется новым флагом `geometry` настройки `mysql_datatypes_support_level`, включённым по умолчанию. `POINT` по-прежнему всегда преобразуется в `Point`. Обобщённый столбец `GEOMETRY` сопоставляется с универсальным типом `Geometry`; чтение значения, чей подтип не имеет аналога в ClickHouse (`MULTIPOINT`, `GEOMETRYCOLLECTION`), генерирует исключение при чтении. [#108944](https://github.com/ClickHouse/ClickHouse/pull/108944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Веб-интерфейс (`play.html`): полная навигация с клавиатуры — перемещение клавишами со стрелками в панели баз данных и результирующей таблице, доступ с клавиатуры к кнопкам панели инструментов, переключателю темы и меню загрузки, а также видимые контуры фокуса. [#108972](https://github.com/ClickHouse/ClickHouse/pull/108972) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* HTTP-интерфейс: если учётные данные переданы одновременно через URL-параметры (`user`/`password`) и заголовок `Authorization`, приоритет теперь имеют URL-параметры, а не отклоняется запрос. Это исправляет ошибку, из-за которой загрузка результатов из веб-интерфейса (`play.html`) завершалась сбоем с `AUTHENTICATION_FAILED` (ошибка 516), когда браузер запоминал Basic credentials. [#108980](https://github.com/ClickHouse/ClickHouse/pull/108980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Восстановлена настройка `show_data_lake_catalogs_in_system_tables`, которая теперь управляет только видимостью `DataLakeCatalog` в `system.tables`, `system.columns` и `system.completions`. Добавлена настройка `show_remote_databases_in_system_tables`, включённая по умолчанию, чтобы пользователи могли отдельно скрывать базы данных `MySQL` и `PostgreSQL` из этих системных таблиц. [#109082](https://github.com/ClickHouse/ClickHouse/pull/109082) ([Pablo Marcos](https://github.com/pamarcos)).
* По умолчанию теперь используется точный (максимально близкий к представимому) алгоритм разбора чисел с плавающей точкой, а настройка `precise_float_parsing` применяется к входным форматам (`CSV`, `TSV`, `JSON`, `VALUES`, ...) и числовым литералам, а не только к `toFloat*`/`CAST`. Установите `precise_float_parsing = 0`, чтобы вернуть прежнее поведение, которое в некоторых случаях быстрее, но менее точно. Закрывает [#60146](https://github.com/ClickHouse/ClickHouse/issues/60146). Закрывает [#74647](https://github.com/ClickHouse/ClickHouse/issues/74647). Закрывает [#68914](https://github.com/ClickHouse/ClickHouse/issues/68914). [#109086](https://github.com/ClickHouse/ClickHouse/pull/109086) ([Raúl Marín](https://github.com/Algunenano)).
* Запрос с одним CTE теперь форматируется с теми же переносом строки и отступом, что и запрос с несколькими CTE. Ранее `WITH a AS (...)` оставлял CTE на той же строке, что и `WITH`, тогда как при двух и более CTE `WITH` размещался на отдельной строке, а каждый CTE — с отступом. [#109092](https://github.com/ClickHouse/ClickHouse/pull/109092) ([Groene AI](https://github.com/groeneai)).
* Web UI: если выделенное автодополнение совпадает с уже введённым словом или с тем же словом в другом регистре (например, когда для введённого `hash` предлагается `HASH`), нажатие Right/Tab/Enter больше не переписывает слово и не перехватывается автодополнением — клавиша, как и ожидается, перемещает курсор или вставляет новую строку. [#109106](https://github.com/ClickHouse/ClickHouse/pull/109106) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#109384](https://github.com/ClickHouse/ClickHouse/pull/109384) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В Web UI (`play.html`) добавлены радужные скобки, подсветка парных скобок, совпадающих идентификаторов и групп цифр — как в `clickhouse-client`. [#109108](https://github.com/ClickHouse/ClickHouse/pull/109108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В Web UI клавиши `Tab` и `Shift+Tab` теперь увеличивают и уменьшают отступ у выбранных строк на 4 пробела. [#109110](https://github.com/ClickHouse/ClickHouse/pull/109110) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: позиция синтаксической ошибки в редакторе запросов теперь подсвечивается красным фоном. Подсветка снимается, как только пользователь возвращает фокус в редактор. [#109112](https://github.com/ClickHouse/ClickHouse/pull/109112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-compressor --stat` и определение default-codec для старых частей теперь сообщают о повреждённых заголовках блоков как о повреждении, а не как о вводящей в заблуждение ошибке конца файла. [#109157](https://github.com/ClickHouse/ClickHouse/pull/109157) ([Raufs Dunamalijevs](https://github.com/rienath)).
* ClickHouse Keeper теперь учитывает настройку `os_collect_psi_metrics` и пропускает сбор PSI-метрик, если она отключена. [#109179](https://github.com/ClickHouse/ClickHouse/pull/109179) ([Maxim Orlovsky](https://github.com/UberDever)).
* В Web UI, когда отображаются вкладки запросов, параметры подключения (`host`, `user`, `password`) теперь скрыты за кнопкой с ключом в правом верхнем углу и показываются по запросу в выпадающем меню. [#109243](https://github.com/ClickHouse/ClickHouse/pull/109243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI: результат из одного значения (одна строка, один столбец, например `SHOW CREATE TABLE`) теперь показывается во всю высоту вместо ограничения тремя строками. [#109245](https://github.com/ClickHouse/ClickHouse/pull/109245) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В Web UI щелчок по таблице на панели баз данных средней кнопкой мыши, с Shift или с модификатором открытия новой вкладки платформы (Cmd в macOS, Ctrl в остальных случаях) теперь открывает запрос к ней в новой вкладке Web UI. [#109246](https://github.com/ClickHouse/ClickHouse/pull/109246) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Для удалённых файлов `Parquet` в объектном хранилище кэш условий запроса теперь использует в качестве ключа ETag в дополнение к пути, чтобы перезапись объекта на месте больше не приводила к выдаче устаревших кэшированных результатов. [#109310](https://github.com/ClickHouse/ClickHouse/pull/109310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В Web UI пустые строки и NULL больше не раскрашиваются в режиме категориальной раскраски. [#109342](https://github.com/ClickHouse/ClickHouse/pull/109342) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: при нажатии на значок таблицы на панели базы данных теперь отображается список её столбцов со значками типов, полосой размера, пропорциональной compressed size, и всплывающей подсказкой с compressed/uncompressed size и коэффициентом сжатия. [#109346](https://github.com/ClickHouse/ClickHouse/pull/109346) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: если заголовок вкладки обрезан, при наведении теперь показывается всплывающая подсказка с его полным текстом. [#109354](https://github.com/ClickHouse/ClickHouse/pull/109354) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: щелчок средней кнопкой мыши по заголовку вкладки (или Ctrl/Shift/Cmd+щелчок) теперь дублирует вкладку. [#109357](https://github.com/ClickHouse/ClickHouse/pull/109357) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: области итогового прогресса и статистики запроса теперь изменяются равномерно, чтобы при узком окне браузера их содержимое не переносилось некрасиво. [#109363](https://github.com/ClickHouse/ClickHouse/pull/109363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: выбранная на панели базы данных теперь используется как база данных по умолчанию для запросов, запускаемых из редактора. [#109372](https://github.com/ClickHouse/ClickHouse/pull/109372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка `reinterpret` из `Array` элементов фиксированного размера в `String` — обратного преобразования к уже существующему `reinterpret` из `String`/`FixedString` в `Array`. [#109383](https://github.com/ClickHouse/ClickHouse/pull/109383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: переключатели цветового кодирования по столбцам больше не отображаются, если результат содержит не более одной строки. [#109385](https://github.com/ClickHouse/ClickHouse/pull/109385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Разрешён `CAST` между типами `QBit`, различающимися типом элемента и/или stride, при условии, что размерность остаётся той же (например, `CAST(x AS QBit(Float64, N))` из `QBit(Float32, N)`). Изменения только stride выполняются без потерь; при изменении типа элемента применяется семантика соответствующего преобразования `Array` (например, при преобразовании `Float32` в `BFloat16` возможна потеря точности, а `accurateCast` / `accurateCastOrNull` отклоняют строки, которые нельзя представить точно). [#109387](https://github.com/ClickHouse/ClickHouse/pull/109387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Functions `quantizeBFloat16ToInt8` и `dequantizeInt8ToBFloat16` теперь также принимают аргументы `Array` и `QBit`, применяя кодек Lloyd-Max ко всему вектору (и возвращая `Array`/`QBit` с соответствующим типом элемента) в дополнение к уже существующим скалярным перегрузкам. [#109398](https://github.com/ClickHouse/ClickHouse/pull/109398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе: ссылка Documentation теперь передаёт в URL имя current user. [#109419](https://github.com/ClickHouse/ClickHouse/pull/109419) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка `arraySum`, `arrayAvg` и `arrayProduct` для массивов `BFloat16`. [#109420](https://github.com/ClickHouse/ClickHouse/pull/109420) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Спецификатор формата MySQL `%f` в `parseDateTime` / `parseDateTime64` (и их вариантах `OrZero` / `OrNull`) теперь принимает от 1 до 6 дробных цифр, которые интерпретируются как микросекунды с выравниванием влево, как в MySQL `STR_TO_DATE`, вместо прежнего требования ровно 6. Также исправлено неправильное выравнивание таблиц `PrettyCompact` в примерах документации встроенных функций. [#109421](https://github.com/ClickHouse/ClickHouse/pull/109421) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Веб-интерфейс: вкладки запросов теперь сохраняются между переключениями — каждая вкладка хранит свой отрисованный результат (включая изображения и диаграммы) и выполняющийся запрос, когда вы переключаетесь на другую вкладку и обратно, а долгие запросы продолжают выполняться в фоне. В заголовках вкладок для запросов теперь показываются спиннер, шкала прогресса и галочка завершения. [#109425](https://github.com/ClickHouse/ClickHouse/pull/109425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Веб-интерфейс: теперь корректно отображается ошибка, если запрос завершается с ошибкой после того, как часть результата уже была передана потоком, вместо показа клиентской `SyntaxError: Unexpected end of JSON input` (или, при `http_write_exception_in_output_format`, пометки завершившегося с ошибкой запроса как успешного). [#109430](https://github.com/ClickHouse/ClickHouse/pull/109430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейс добавлены закреплённые столбцы: столбец можно закрепить из его заголовка, чтобы он оставался видимым (у края экрана), пока таблица результатов прокручивается по горизонтали. [#109439](https://github.com/ClickHouse/ClickHouse/pull/109439) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В расширенной панели мониторинга (`/dashboard`) диаграммы для конкретных метрик теперь можно добавлять напрямую по имени метрики в том виде, в каком оно указано в исходном коде или документации, что упрощает добавление нескольких метрик во время сеансов отладки. [#109449](https://github.com/ClickHouse/ClickHouse/pull/109449) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Веб-интерфейс: исправлено закрытие выпадающего списка настроек соединения при выделении текста мышью и перетаскивании курсора за его границу. [#109451](https://github.com/ClickHouse/ClickHouse/pull/109451) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Веб-интерфейс: при наведении на заголовок столбца таблицы результатов теперь во всплывающей подсказке показываются полные имя столбца и тип, чтобы усечённые заголовки можно было прочитать целиком. [#109463](https://github.com/ClickHouse/ClickHouse/pull/109463) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Исправлено усечение заголовков столбцов многоточием даже в случаях, когда столбец был достаточно широким, чтобы показать заголовок полностью. [#110397](https://github.com/ClickHouse/ClickHouse/pull/110397) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка словарей с кэшем на SSD (layout `SSD_CACHE`) и движка таблицы `FileLog` в сборках для macOS. [#109493](https://github.com/ClickHouse/ClickHouse/pull/109493) ([Raúl Marín](https://github.com/Algunenano)).
* Веб-интерфейс: при открытии страницы больше не восстанавливаются вкладки с пустыми запросами. [#109529](https://github.com/ClickHouse/ClickHouse/pull/109529) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены нечитаемые подсказки автодополнения при вводе и слишком яркие цвета в интерактивном клиенте в терминалах, у которых `TERM` не содержит `256` (например, Ghostty, kitty, Alacritty, foot): яркие цвета теперь всегда выводятся как коды ярких цветов aixterm вместо отката к полужирному + тёмному цвету, который современные терминалы отображают как тёмный, плохо читаемый цвет на тёмном фоне. [#109622](https://github.com/ClickHouse/ClickHouse/pull/109622) ([Alasdair Brown](https://github.com/sdairs)).
* В сборках для macOS включены jemalloc per-CPU arenas и профилирование выделений памяти. [#109684](https://github.com/ClickHouse/ClickHouse/pull/109684) ([Raúl Marín](https://github.com/Algunenano)).
* Разрешено изменять некоторые настройки аутентификации базы данных каталога озера данных `OneLake` с помощью `ALTER DATABASE ... MODIFY SETTING`. [#110019](https://github.com/ClickHouse/ClickHouse/pull/110019) ([alesapin](https://github.com/alesapin)).
* Движок `Hive` теперь читает метаданные файлов `ORC` (индексы min/max, количество строк) с помощью собственного `ORC`-ридера ClickHouse вместо адаптера `ORC` из Apache Arrow. [#110086](https://github.com/ClickHouse/ClickHouse/pull/110086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Размер бинарного файла уменьшен примерно на 10.5 MB за счёт того, что операции сравнения и арифметические операции для редко используемых смешанных пар типов (`Decimal` и целое число другой разрядности, а также пары с `Int128`/`UInt128`/`Int256`/`UInt256`) теперь выполняются через приведение к общему типу, а не через отдельный скомпилированный kernel для каждой комбинации типов. Для пар одинаковых типов, часто используемых пар и ограниченных памятью `plus`/`minus`/`multiply` отдельные kernel сохранены; результаты, типы результатов и исключительные случаи не изменились. [#110131](https://github.com/ClickHouse/ClickHouse/pull/110131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Подзапрос в правой части `IN`, единственный столбец которого представляет собой массив на одну размерность глубже, чем левый аргумент, теперь интерпретируется как множество элементов массива (как литерал массива или функция, возвращающая массив), а не завершается с запутанной ошибкой несоответствия типов. Например, `x IN (SELECT groupArray(x) FROM ...)` теперь работает. [#110169](https://github.com/ClickHouse/ClickHouse/pull/110169) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Чтение из движка таблицы `SQLite` или табличной функции `sqlite` больше не загружает впустую целое ядро CPU, когда база данных SQLite заблокирована другим соединением. Теперь чтение простаивает в ожидании снятия блокировки и остаётся доступным для отмены. [#110248](https://github.com/ClickHouse/ClickHouse/pull/110248) ([Groene AI](https://github.com/groeneai)).
* Значения затраченного времени, скорости и отношения в сообщениях журнала и исключений теперь округляются до трёх цифр, поэтому числа вроде `1.345844286 sec.` больше не выводятся с полной точностью. [#110277](https://github.com/ClickHouse/ClickHouse/pull/110277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе (Play) `BFloat16` теперь распознаётся как число с плавающей запятой, и его столбцы выравниваются по правому краю и соответствующим образом раскрашиваются. [#110433](https://github.com/ClickHouse/ClickHouse/pull/110433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка секции `SETTINGS` для движка таблицы `PostgreSQL` и табличной функции `postgresql` (например, `SETTINGS postgresql_connection_pool_size = 50`), что обеспечивает паритет возможностей с движком `MySQL`. [#110614](https://github.com/ClickHouse/ClickHouse/pull/110614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SHOW CREATE TABLE` (а также `SHOW CREATE VIEW` / `SHOW CREATE DICTIONARY`) теперь предлагает в сообщении об ошибке таблицу с похожим именем, если запрошенная таблица не существует, так же, как это делают запросы `SELECT`. [#110633](https://github.com/ClickHouse/ClickHouse/pull/110633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Настройка `merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once` теперь включена по умолчанию: селектор слияний теперь автоматически уменьшает максимальное число частей, объединяемых за один раз, в зависимости от того, насколько заполнена партиция. См. [#91163](https://github.com/ClickHouse/ClickHouse/pull/91163). [#110726](https://github.com/ClickHouse/ClickHouse/pull/110726) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Команды очистки PostgreSQL `RESET`, `UNLISTEN` и `DISCARD` теперь принимаются как операции без действия в PostgreSQL wire protocol, а не завершаются синтаксической ошибкой. Это улучшает совместимость с драйверами, такими как Skunk, которые отправляют `RESET ALL` и `UNLISTEN *` при установке и очистке соединения. [#110780](https://github.com/ClickHouse/ClickHouse/pull/110780) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Изменено значение по умолчанию настройки `auto_statistics_types` с `basic, uniq` на `basic, uniq_v2`. [#110878](https://github.com/ClickHouse/ClickHouse/pull/110878) ([Han Fei](https://github.com/hanfei1991)).
* `randomHadamardTransform` теперь вычисляет точное преобразование с сохранением длины для векторов любой длины, у которой наибольший нечётный множитель не превышает 64 (например, `3584 = 512 * 7`, что часто встречается в моделях эмбеддингов), расширяя прежние семейства `2^N`, `2^k * {12, 20}` и `2^k * 9`. Полное преобразование для длины, которую нельзя представить точно, теперь вызывает исключение вместо того, чтобы молча дополнять вектор нулями до большей длины; передайте `output_dims`, чтобы вычислить усечённую проекцию произвольной длины. [#111006](https://github.com/ClickHouse/ClickHouse/pull/111006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` при резервном копировании базы данных `Replicated`, которая одновременно удаляется и создаётся заново; такие резервные копии теперь корректно завершаются ошибкой `CANNOT_GET_REPLICATED_DATABASE_SNAPSHOT`. [#100651](https://github.com/ClickHouse/ClickHouse/pull/100651) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь, если zip-архив не удаётся распаковать, показывается реальная исходная ошибка (например, когда архив читается из S3, а буфер чтения не поддерживает `seek`). Раньше фактическая ошибка скрывалась за общим сообщением `Couldn't unpack zip archive: Code = -100` / `Couldn't open zip archive`. [#105103](https://github.com/ClickHouse/ClickHouse/pull/105103) ([Groene AI](https://github.com/groeneai)).
* Исправлена сбивающая с толку подсказка "Maybe you meant X?" после перезапуска сервера (или `DETACH DATABASE`/`ATTACH DATABASE`): при удалении уже удалённой таблицы в качестве альтернативы могло предлагаться только что удалённое имя. [#106238](https://github.com/ClickHouse/ClickHouse/pull/106238) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка (`Logical error: 'removed'`, приводившая к аварийному завершению сервера в debug-сборках) в фоновой очереди удаления таблиц; она срабатывала, когда один и тот же явный UUID повторно использовался в нескольких запросах `CREATE OR REPLACE TABLE`, из-за чего в очередь попадало более одной удалённой таблицы с этим UUID. [#107031](https://github.com/ClickHouse/ClickHouse/pull/107031) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка `Inconsistent AST formatting`, которая могла аварийно завершить сервер в debug- и sanitizer-сборках, если лямбда-выражение с псевдонимом использовалось как операнд оператора доступа (элемент кортежа `.N` или элемент массива `[]`) не на первой позиции в списке выражений, например `SELECT 1, ((p0, p1) -> p0 AS a7).4[3] FROM t`. [#107092](https://github.com/ClickHouse/ClickHouse/pull/107092) ([Groene AI](https://github.com/groeneai)).
* Табличная функция cluster (`urlCluster`, `fileCluster`, `s3Cluster`, ...), вложенная в другой распределённый запрос, например `clusterAllReplicas(..., urlCluster(...))`, теперь отклоняется с ошибкой `BAD_ARGUMENTS` вместо сбоя с логической ошибкой (`Distributed task iterator is not initialized`). [#107107](https://github.com/ClickHouse/ClickHouse/pull/107107) ([Groene AI](https://github.com/groeneai)).
* `OPTIMIZE ... DRY RUN`, прерванный из-за тайм-аута запроса (`max_execution_time` с `timeout_overflow_mode = 'break'`), теперь возвращает `TIMEOUT_EXCEEDED` вместо логической ошибки, связанной с `rows_sources` (которая приводила к аварийному завершению сервера в debug/sanitizer-сборках). [#107114](https://github.com/ClickHouse/ClickHouse/pull/107114) ([Groene AI](https://github.com/groeneai)).
* Прекращено логирование безвредной ошибки `Net Exception: Socket is not connected` при завершении сеанса `ZooKeeper` на macOS. `clickhouse keeper-client` больше не выводит эту ложную ошибку в stderr при завершении работы. [#107438](https://github.com/ClickHouse/ClickHouse/pull/107438) ([Groene AI](https://github.com/groeneai)).
* Исправлено переполнение знакового целого числа, когда refreshable materialized view повторно пытается выполнить неудавшееся обновление при `refresh_retries`, установленном в очень большое значение (близкое к максимуму `Int64`). Это переполнение могло приводить к аварийному завершению сервера в сборках с sanitizer неопределённого поведения. [#108005](https://github.com/ClickHouse/ClickHouse/pull/108005) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (аварийное завершение сервера в debug/sanitizer-сборках), возникавший, когда `JOIN` использует null-safe оператор сравнения (`<=>` / `IS NOT DISTINCT FROM`), а один из ключей — скалярный подзапрос, например `... JOIN t2 ON (SELECT x FROM t1) <=> t2.k`, при использовании старого анализатора (`enable_analyzer = 0`). Теперь такой запрос возвращает обычную ошибку `NOT_FOUND_COLUMN_IN_BLOCK` вместо логической ошибки. [#108123](https://github.com/ClickHouse/ClickHouse/pull/108123) ([Groene AI](https://github.com/groeneai)).
* Запросы векторного поиска, выбирающие столбец `_distance`, теперь возвращают корректную ошибку вместо сбоя с логической ошибкой. [#108423](https://github.com/ClickHouse/ClickHouse/pull/108423) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлен `std::future_error` (`The associated promise has been destructed prior to the associated state becoming ready`), который мог возникать и приводить к аварийному завершению сервера в debug- и sanitizer-сборках, если не удавалось запланировать финальную асинхронную задачу завершения multipart upload для S3/Azure (например, при исчерпании пула потоков). Теперь вместо этого сообщается фактическая ошибка планирования. [#108730](https://github.com/ClickHouse/ClickHouse/pull/108730) ([Groene AI](https://github.com/groeneai)).
* Устранены чрезмерный вывод логов сервера и слишком большое сообщение об ошибке при компиляции очень большого регулярного выражения (например, шаблона `LIKE` или `match` с сотнями тысяч подстановочных символов); теперь такие шаблоны завершаются с понятной ошибкой `CANNOT_COMPILE_REGEXP`. [#108821](https://github.com/ClickHouse/ClickHouse/pull/108821) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено неопределённое поведение при преобразовании в строку типа пакета протокола вне допустимого диапазона (например, в сообщениях об ошибках `Unexpected packet from server` / `Received ... packet`) при рассинхронизированном или подвергнутом фаззингу соединении. [#108885](https://github.com/ClickHouse/ClickHouse/pull/108885) ([Groene AI](https://github.com/groeneai)).
* Исправлена вводящая в заблуждение внутренняя ошибка (`Method getResultType is not supported for TABLE query tree node`), возникавшая, когда табличное выражение использовалось как левый аргумент оператора `IN`; теперь такие запросы выдают понятное сообщение об ошибке. [#109412](https://github.com/ClickHouse/ClickHouse/pull/109412) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено чтение таблицы Iceberg с файлом метаданных, номер версии которого состоял только из цифр, но выходил за пределы диапазона 32-битного целого числа (например, `v99999999999999999999.metadata.json`). Ранее такое имя приводило к неясному `std::out_of_range` (`STD_EXCEPTION`) вместо понятной ошибки `BAD_ARGUMENTS`. [#109619](https://github.com/ClickHouse/ClickHouse/pull/109619) ([Groene AI](https://github.com/groeneai)).
* Исправлена возможная ошибка `Logical error: 'ReadBuffer is canceled. Can't read from it.'`, возникавшая, когда построчный формат ввода (например, `TSV`/`CSV`) не мог разобрать входные данные, а базовое чтение уже было отменено (например, из-за некорректного HTTP-чанка или усечённого тела). Построение подробной диагностики разбора больше не читает данные из отменённого буфера. [#109708](https://github.com/ClickHouse/ClickHouse/pull/109708) ([Groene AI](https://github.com/groeneai)).
* Фильтрующие выражения в row policy, использующие `arrayJoin` (или его алиас `unnest`), теперь отклоняются с понятной ошибкой; ранее такие policy вызывали логическую ошибку `column->size() == num_rows` во время выполнения запроса. [#109753](https://github.com/ClickHouse/ClickHouse/pull/109753) ([Raúl Marín](https://github.com/Algunenano)). [#109973](https://github.com/ClickHouse/ClickHouse/pull/109973) ([Raúl Marín](https://github.com/Algunenano)).
* Чтение таблицы Paimon, чья схема содержит неподдерживаемый вложенный тип (например, поле `ROW`), теперь сообщает понятную ошибку `BAD_ARGUMENTS` с указанием неподдерживаемого типа вместо простого `DB::Exception. (OK)` с кодом ошибки 0 и без сообщения. [#109762](https://github.com/ClickHouse/ClickHouse/pull/109762) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`std::length_error`), возникавший, когда запрос с экспериментальной настройкой `make_distributed_plan = 1` использовал слишком большое значение `distributed_plan_default_reader_bucket_count` или `distributed_plan_default_shuffle_join_bucket_count`. Такие значения теперь отклоняются с ошибкой `INVALID_SETTING_VALUE`. [#109770](https://github.com/ClickHouse/ClickHouse/pull/109770) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`query tree node does not have valid source node`), возникавший, когда рекурсивный CTE разрешал идентификатор из внешней области видимости как коррелированный столбец (при `allow_experimental_correlated_subqueries = 1`). Такие запросы теперь возвращают понятную ошибку `UNSUPPORTED_METHOD`. [#109863](https://github.com/ClickHouse/ClickHouse/pull/109863) ([Groene AI](https://github.com/groeneai)).
* Исправлено переполнение знакового целого числа, когда `ORDER BY ... WITH FILL` пропускает очень большой промежуток в столбце `Int64`/`UInt64` (например, шаг 2 через промежуток вблизи 2^63). Такое переполнение приводило к неопределённому поведению при использовании sanitizer'ов и молча приводило к переполнению по кругу в release-сборках. [#109937](https://github.com/ClickHouse/ClickHouse/pull/109937) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка `Bad cast from type DB::FunctionNode to DB::ConstantNode` (аварийное завершение server в debug/sanitizer-сборках) при выполнении `SELECT ... ORDER BY ... WITH FILL` для таблицы `Distributed` с низким значением `optimize_const_name_size`. [#109938](https://github.com/ClickHouse/ClickHouse/pull/109938) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка `Invalid number of rows in Chunk`, возникавшая, когда цель `INTERPOLATE` была псевдонимом столбца `WITH FILL` при использовании старого analyzer (`enable_analyzer = 0`). Такие запросы теперь отклоняются с понятной ошибкой `INVALID_WITH_FILL_EXPRESSION`. [#110103](https://github.com/ClickHouse/ClickHouse/pull/110103) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка (аварийное завершение server в debug/sanitizer-сборках), возникавшая, когда функциям `indexHint`/`ignore`/`isZeroOrNull` передавался аргумент, тип которого разрешался в `Nothing`, например внутри выражений вроде `indexHint(assumeNotNull(materialize(NULL)))`. [#110192](https://github.com/ClickHouse/ClickHouse/pull/110192) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка `Too large size (...) passed to allocator`, которая могла возникать, когда для настройки размера буфера чтения, такой как `max_read_buffer_size` или `max_read_buffer_size_local_fs`, задавалось значение вне допустимого диапазона. Такие значения теперь ограничиваются 256 MiB при проверке корректности настроек, а также дополнительно в месте использования для `INSERT ... FROM INFILE`, который читает файлы внутри клиента ClickHouse, где эта проверка не применяется. [#110207](https://github.com/ClickHouse/ClickHouse/pull/110207) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `CHECK TABLE` теперь сообщает о фактическом повреждении projection part, если не удалось загрузить её metadata, вместо вводящей в заблуждение ошибки `Columns doesn't match ... Expected: 0 columns`. [#110262](https://github.com/ClickHouse/ClickHouse/pull/110262) ([Raúl Marín](https://github.com/Algunenano)).
* Несоответствие типов, когда значение, прочитанное из источника PostgreSQL (например, через table function `postgresql` или движок таблицы `PostgreSQL`), не может быть разобрано в объявленный тип столбца (например, столбец `text`, объявленный как `Int32`), теперь сообщается как корректная ошибка запроса; ранее это приводило к аварийному завершению server в debug- и sanitizer-сборках. [#110264](https://github.com/ClickHouse/ClickHouse/pull/110264) ([Groene AI](https://github.com/groeneai)).
* Добавлена поддержка query profiler, profiler'ов памяти и trace, а также symbolization для `system.trace_log` на macOS. [#109825](https://github.com/ClickHouse/ClickHouse/pull/109825) ([Raúl Marín](https://github.com/Algunenano)).
* Обновлен `chdig` до [v26.7.1](https://github.com/azat/chdig/releases/tag/v26.7.1): сжатые трассировки стека для общего доступа, шаблоны запроса, поддержка памяти с раздельными Arena, улучшения Perfetto и исправления совместимости. [#110938](https://github.com/ClickHouse/ClickHouse/pull/110938) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен некорректный вывод монотонности для `intDiv` на беззнаковом ключе, деленном на знаковую константу, из-за которого могло отключаться отсечение по индексу основного ключа для предикатов `IN`/`NOT IN`, пересекающих знаковую границу результирующего типа; в отладочных сборках также возникал `LOGICAL_ERROR` `Invalid binary search result in MergeTreeSetIndex`. [#107586](https://github.com/ClickHouse/ClickHouse/pull/107586) ([Groene AI](https://github.com/groeneai)).
* Добавлена настройка `allow_lossy_numeric_supertype` (по умолчанию отключена). Когда она включена, `if`, `multiIf`, `coalesce`, `ifNull`, `array` и `map` для числовых аргументов, у которых нет общего типа без потери точности (например, `Decimal` и `Float64` или `Int64` и `Float64`), приводятся к `Float64` вместо `Variant`, поэтому результат можно использовать с агрегатными функциями, такими как `sum`, `avg`, `min` и `max`. Соответствующие сообщения об ошибках агрегатных функций теперь упоминают эту настройку по имени. Закрывает [#106707](https://github.com/ClickHouse/ClickHouse/issues/106707). [#107236](https://github.com/ClickHouse/ClickHouse/pull/107236) ([Groene AI](https://github.com/groeneai)).
* Конечная точка Prometheus (для конфигураций только с метриками) и асинхронный сбор метрик теперь запускаются до загрузки таблиц, чтобы метрики были доступны во время потенциально долгой фазы загрузки метаданных. [#108402](https://github.com/ClickHouse/ClickHouse/pull/108402) ([Christoph Wurm](https://github.com/cwurm)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* Исправлена ошибка, из-за которой `TRUNCATE TABLE` и `DROP PARTITION` завершались сбоем на таблицах с большим количеством блоков дедупликации: их удаление одним запросом к ZooKeeper могло превысить ограничение `jute.maxbuffer` по умолчанию в 1 МБ. [#105991](https://github.com/ClickHouse/ClickHouse/pull/105991) ([Clayton McClure](https://github.com/cmcclure-twilio)). Это затрагивает только пользователей Apache ZooKeeper (не рекомендуется) вместо ClickHouse Keeper.
* Исправлена работа с полными именами столбцов (`database.table.column`) в предложении `WHERE` мутаций, таких как `DELETE FROM` и `ALTER TABLE ... UPDATE/DELETE`, для таблиц семейства `MergeTree`; ранее такие запросы завершались ошибкой об отсутствующих столбцах. Закрывает [#71760](https://github.com/ClickHouse/ClickHouse/issues/71760). [#109491](https://github.com/ClickHouse/ClickHouse/pull/109491) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлен кэш результатов запросов для PromQL-запросов. Диалект `promql` обходил проверку недетерминированных функций и мог отдавать устаревшие результаты, привязанные к `now()`; HTTP API Prometheus (`/api/v1/query`, `/api/v1/query_range`) при этом вообще не сохранял записи кэша. [#110887](https://github.com/ClickHouse/ClickHouse/pull/110887) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Исправлена ошибка, из-за которой сервер не запускался, если переменная окружения `TZ` была пустой. Закрывает [#68920](https://github.com/ClickHouse/ClickHouse/issues/68920). [#68921](https://github.com/ClickHouse/ClickHouse/pull/68921) ([Ardenwick](https://github.com/ardenwick)).
* Исправлена ошибка, из-за которой сервер не запускался, если движок базы данных `Backup` ссылался на ставшую недоступной резервную копию (например, если её файлы были удалены или нижележащее хранилище недоступно). Теперь база данных загружается без таблиц, вместо того чтобы препятствовать запуску всего сервера. [#83188](https://github.com/ClickHouse/ClickHouse/pull/83188) ([Vitaly Orlov](https://github.com/orloffv)).
* При использовании фоновых вставок в таблицы с движком `Distributed` задержки, вызванные повторяющимися ошибками при отправке данных на удалённые шарды, теперь уменьшаются после устранения этих ошибок. Ранее задержка могла только расти и никогда не сбрасывалась. [#87378](https://github.com/ClickHouse/ClickHouse/pull/87378) ([Andrei Kochemirovskii](https://github.com/Blackmorse)).
* Исправлены `broken_data_files` в `system.distribution_queue` и метрика `BrokenDistributedFilesToInsert`, которые всегда показывали `0` для повреждённых файлов, обнаруженных при сканировании очереди async-insert движка `Distributed` при запуске. [#92124](https://github.com/ClickHouse/ClickHouse/pull/92124) ([KG.Xu](https://github.com/squalfof)).
* Исправлено восстановление логирования после переполнения диска. Ранее, когда диск для логов заполнялся, ClickHouse переходил в состояние сбоя и непрерывно засорял syslog сообщениями об ошибках (потенциально записывая более 100 ГБ/час), не восстанавливаясь даже после освобождения места на диске. Теперь система логирования автоматически восстанавливается, как только на диске снова появляется место, без необходимости перезапуска сервера. [#93127](https://github.com/ClickHouse/ClickHouse/pull/93127) ([jaehanbyun](https://github.com/jaehanbyun)).
* Статические учётные данные S3 теперь передаются при чтении таблиц Unity `DataLakeCatalog`, когда `vended_credentials` отключён, что предотвращает ошибки анонимного доступа к объектному хранилищу. [#96910](https://github.com/ClickHouse/ClickHouse/pull/96910) ([kgeg401](https://github.com/kgeg401)).
* Исправлен сбой в коде разбора схемы движка таблицы `DeltaLake`. [#97112](https://github.com/ClickHouse/ClickHouse/pull/97112) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена проблема безопасности, из-за которой неаутентифицированный TCP-клиент мог проверять существование таблиц и состояние репликации через interserver-порт. [#99854](https://github.com/ClickHouse/ClickHouse/pull/99854) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена синтаксическая ошибка, возникавшая, когда за подзапросом в `DESCRIBE TABLE` следует псевдоним. Исправляет [#100031](https://github.com/ClickHouse/ClickHouse/issues/100031). [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено Исключение в correlated subqueries, возникавшее, когда outer columns становились `Nullable` при `group_by_use_nulls` с `ROLLUP`/`CUBE`. [#100365](https://github.com/ClickHouse/ClickHouse/pull/100365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено аварийное завершение server (в сборках с sanitizer) и незаметная потеря данных при запуске table, когда откаченная transactional часть `MergeTree` пересекается с committed частью. [#100992](https://github.com/ClickHouse/ClickHouse/pull/100992) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлен возврат некорректных результатов функцией `indexOfAssumeSorted` для столбцов `Array(LowCardinality(String))` в таблицах `MergeTree`. [#101771](https://github.com/ClickHouse/ClickHouse/pull/101771) ([Yash ](https://github.com/Onyx2406)).
* Исправлено некорректное pruning по primary key, когда ключ сортировки table оборачивает столбец `Date` в `toDateTime` (например, `ORDER BY toDateTime(date_column)`), а запрос фильтрует по исходному столбцу сравнением вида `WHERE date_column >= '...'`. `toDateTime(Date)` вызывает overflow для значений `Date`, выходящих за диапазон `DateTime` (после `2106-02-07`), поэтому сохранённый ключ становится немонотонным; ClickHouse больше не использует pruning по primary key для этой комбинации ключа и предиката, поскольку это могло бы отбросить granules, содержащие подходящие строки. Закрывает [#101744](https://github.com/ClickHouse/ClickHouse/issues/101744). [#101814](https://github.com/ClickHouse/ClickHouse/pull/101814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено поведение, при котором `intDivOrNull`, `moduloOrNull` и `positiveModuloOrNull` возвращали `0` вместо `NULL`, а `intDivOrNull` и `intDivOrZero` вызывали исключение вместо возврата `NULL` / `0`, когда деление приводило к исключению с плавающей запятой (деление на ноль или `INT_MIN / -1`), в том числе для смешанных signed/unsigned argument. [#101976](https://github.com/ClickHouse/ClickHouse/pull/101976) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлены Исключения `LOGICAL_ERROR` при чтении таблиц `Iceberg` или `DeltaLake` в редких случаях, таких как concurrent обновления metadata `Iceberg` или чтение через `merge` table function поверх таблиц `DeltaLake`. [#102033](https://github.com/ClickHouse/ClickHouse/pull/102033) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка, из-за которой исходящие HTTP request (например, функция `aiGenerate`, table function `url`, S3) завершались с `No route to host` на хостах, у которых объявлены и IPv4-, и IPv6-адреса, когда маршрутизируется только одно семейство адресов. HTTP connection pool теперь переключается на следующий разрешённый адрес, если первый завершается сетевой ошибкой, вместо того чтобы сразу возвращать ошибку уже при самом первом request. [#103786](https://github.com/ClickHouse/ClickHouse/pull/103786) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено аварийное завершение server во время `RESTORE` резервных копий, содержащих таблицы с циклическими dependencies. [#103824](https://github.com/ClickHouse/ClickHouse/pull/103824) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Schema inference для столбцов Arrow `time32`/`time64` (например, `SELECT * FROM file(..., 'Arrow')`) теперь определяет `Time64` вместо `DateTime64`; всё, что далее зависит от ранее определявшегося типа, после обновления будет видеть новый тип. Кроме того, значения `Time`/`Time64` теперь можно экспортировать в Arrow с выбором подходящего временного типа Apache Arrow в зависимости от precision. Исправляет [#104038](https://github.com/ClickHouse/ClickHouse/issues/104038). [#104316](https://github.com/ClickHouse/ClickHouse/pull/104316) ([/bin/cat](https://github.com/Maoyao233)).
* Исправлена race condition между `ALTER TABLE ... RENAME COLUMN` и конкурентным `OPTIMIZE TABLE ... FINAL` (или любым фоновым merge) в `MergeTree`, из-за которой данные переименованного столбца могли незаметно заменяться значениями по умолчанию. [#104822](https://github.com/ClickHouse/ClickHouse/pull/104822) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `Block structure mismatch`, возникавшая при конкурентном `INSERT`, пока выполняется `ALTER TABLE ... RENAME COLUMN`, в базе данных `Atomic` с `lazy_load_tables = 1` после `DETACH DATABASE`/`ATTACH DATABASE`. [#104852](https://github.com/ClickHouse/ClickHouse/pull/104852) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `groupConcat`, когда смешиваются параметрическая форма и форма с двумя аргументами, например `groupConcat(',', 2)(x, '/')`: параметр, ограничивающий число строк, незаметно игнорировался, поэтому возвращались все строки вместо запрошенного количества; теперь разделитель из второго аргумента корректно переопределяет параметр. [#104882](https://github.com/ClickHouse/ClickHouse/pull/104882) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена `LOGICAL_ERROR` (`Expected one block from input stream`), возникавшая в `KILL QUERY`/`KILL MUTATION`/`KILL PART_MOVE_TO_SHARD`/`KILL TRANSACTION`, когда их `WHERE` clause содержит подзапрос, вычисляемый для каждой строки, либо когда `max_block_size` настолько мал, что внутренний `SELECT` по соответствующей таблице `system.*` выдаёт более одного блока. [#104927](https://github.com/ClickHouse/ClickHouse/pull/104927) ([Groene AI](https://github.com/groeneai)).
* Исправлен `CAST` из меньших interval в более крупные, возвращавший неверные результаты (например, `CAST(toIntervalSecond(60) AS IntervalMinute)` возвращал `0` вместо `1`). Закрывает [#104986](https://github.com/ClickHouse/ClickHouse/issues/104986). [#105058](https://github.com/ClickHouse/ClickHouse/pull/105058) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена logical error (`Assertion 'row < chunk.getNumRows()' failed`) в запросах `LIMIT ... WITH TIES`, выполняемых с конвейером чтения в порядке сортировки (`optimize_read_in_order = 1` и `read_in_order_use_virtual_row_per_block = 1`). [#105102](https://github.com/ClickHouse/ClickHouse/pull/105102) ([Groene AI](https://github.com/groeneai)).
* Исправлена утечка в refreshable materialized views (`MATERIALIZED VIEW ... REFRESH ...`): временную внутреннюю таблицу, которую refresh выводил из использования через `EXCHANGE TABLES`, нельзя было удалить, если её размер превышал `max_table_size_to_drop`, поэтому каждый последующий refresh создавал ещё одну временную внутреннюю таблицу, увеличивая каталог данных представления, пока не заканчивалось место на диске. Внутренний drop в задаче refresh теперь обходит `max_table_size_to_drop` и `max_partition_size_to_drop`; эти защитные ограничения по-прежнему применяются к выполняемому пользователем `DROP TABLE` самого представления. Закрывает [#104900](https://github.com/ClickHouse/ClickHouse/issues/104900). [#105106](https://github.com/ClickHouse/ClickHouse/pull/105106) ([Groene AI](https://github.com/groeneai)).
* Исправлена неожиданная ошибка `DATA_TYPE_CANNOT_BE_USED_IN_KEY` в запросах `ALTER`, которые не изменяют ключ сортировки (изменение settings, comments, codecs, добавление столбца, не входящего в ключ, и т. д.), для таблиц `MergeTree`, у которых в ключе сортировки используется `SimpleAggregateFunction` (или другой тип, допустимый только при `allow_suspicious_primary_key = 1`). [#105111](https://github.com/ClickHouse/ClickHouse/pull/105111) ([Groene AI](https://github.com/groeneai)).
* Исправлено обращение к уже освобождённой памяти при запросе столбцов состояния реплик `system.clusters` (таких как `is_active`, `unsynced_after_recovery`, `recovery_time`) в момент, когда база данных `Replicated` удаляется или отсоединяется. Кроме того, безвредные исключения Keeper, которые в этом участке кода ранее подавлялись (затронутая база данных считается временно недоступной и пропускается), теперь записываются в журнал с уровнем `Information` вместо `Error`, поэтому при значении по умолчанию `send_logs_level = 'warning'` они больше не доходят до клиентов. [#105149](https://github.com/ClickHouse/ClickHouse/pull/105149) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема, из-за которой при выполнении нескольких команд в `clickhouse-local --ignore-error` в сообщение об ошибке для каждой лексической ошибки или ошибки несогласованных скобок попадали все последующие команды. [#105480](https://github.com/ClickHouse/ClickHouse/pull/105480) ([Groene AI](https://github.com/groeneai)).
* Исправлен редкий сбой server, возникавший при одновременном удалении или замене refreshable materialized views и планировании их обновления. [#105588](https://github.com/ClickHouse/ClickHouse/pull/105588) ([Groene AI](https://github.com/groeneai)).
* Для таблиц `Iceberg`, у которых формат файла данных не `Parquet`, `ALTER TABLE ... DELETE` и `ALTER TABLE ... UPDATE` теперь отклоняются с понятной ошибкой `NOT_IMPLEMENTED` вместо сбоя server или незаметного повреждения таблицы. [#105893](https://github.com/ClickHouse/ClickHouse/pull/105893) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты для представления, определённого с помощью `EXCEPT` или `INTERSECT`, если его операндом была цепочка `UNION`, после `DETACH`/`ATTACH` или перезапуска server. Форматтер не добавлял скобки вокруг дочерних выражений `UNION` у `INTERSECT`/`EXCEPT`, из-за чего сохранённый SQL повторно разбирался с обратным старшинством. [#105935](https://github.com/ClickHouse/ClickHouse/pull/105935) ([Groene AI](https://github.com/groeneai)).
* Исправлено ошибочное определение данных `JSON` как `TSKV` при автоопределении format. Закрывает [#100797](https://github.com/ClickHouse/ClickHouse/issues/100797). [#106009](https://github.com/ClickHouse/ClickHouse/pull/106009) ([Pavel Kruglov](https://github.com/Avogar)).
* Запрещено создавать индекс пропуска данных `minmax` непосредственно на столбцах `JSON` — впоследствии это могло приводить к сбою вставки с исключением `NO_COMMON_TYPE`, когда вставлялись массивы со смешанными типами. Вместо этого создавайте индекс на типизированных подстолбцах (например, `INDEX idx json.field TYPE minmax`). [#106094](https://github.com/ClickHouse/ClickHouse/pull/106094) ([linhaojie](https://github.com/linhaojie)).
* Исправлена logical error (`Parsed partition value ... doesn't match partition value for an existing part with the same partition ID`), возникавшая при выполнении `OPTIMIZE TABLE ... PARTITION ...` и других запросов, которые определяют значение партиции, в таблицах с ключом партиционирования типа `Time`. [#106202](https://github.com/ClickHouse/ClickHouse/pull/106202) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, при которой data part ошибочно помечалась как имеющая повреждённую projection после того, как легковесное удаление не оставляло после себя projection part — либо когда projection пересобиралась с нулевым количеством выходных строк, либо когда она удалялась (`lightweight_mutation_projection_mode = 'rebuild'`/`'drop'`). Это состояние ранее отключало оптимизацию projection для запросов к этой part. [#106273](https://github.com/ClickHouse/ClickHouse/pull/106273) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено поведение `removeDirectory` на дисках объектного хранилища `plain` (таких как `s3_plain`): он удалял все файлы внутри непустого каталога так, как будто удаление было рекурсивным; теперь удаление непустого каталога завершается ошибкой `CANNOT_RMDIR`, а рекурсивное удаление явно обрабатывает его содержимое. [#106281](https://github.com/ClickHouse/ClickHouse/pull/106281) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Исправлена logical error (`Part ... doesn't exist`), которая могла прервать работу server во время recovery quorum `INSERT` после аппаратной ошибки Keeper, если quorum одновременно помечался как завершившийся неудачей. [#106424](https://github.com/ClickHouse/ClickHouse/pull/106424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` из-за дублирующихся имен столбцов при применении политик доступа на уровне строк. [#106438](https://github.com/ClickHouse/ClickHouse/pull/106438) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлено поведение `CREATE OR REPLACE TABLE` и `REPLACE TABLE`, при котором на диске оставалась «зависшая» таблица `_tmp_replace_*`, а исходная таблица заменялась пустой, если размер существующей целевой таблицы превышал `max_table_size_to_drop`. Теперь проверка размера выполняется до подмены, поэтому при нарушении операция корректно прерывается, а в сообщении об ошибке используется видимое пользователю имя таблицы. [#106782](https://github.com/ClickHouse/ClickHouse/pull/106782) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `JSON_QUERY`/`JSON_VALUE`/`JSON_EXISTS`, которые возвращали `Dynamic` вместо `String`/`UInt8` для аргументов типа `Dynamic`. Закрывает [#106461](https://github.com/ClickHouse/ClickHouse/issues/106461). [#106877](https://github.com/ClickHouse/ClickHouse/pull/106877) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены неверные результаты при запросах к таблице `ReplacingMergeTree` с `FINAL` и фильтром по текстовому индексу, когда был включен `query_plan_optimize_lazy_final`. Отложенная оптимизация `FINAL` строила шаги чтения, которые не воспроизводили прямое чтение из текстового индекса, из-за чего фильтр отбрасывал все подходящие строки. [#106894](https://github.com/ClickHouse/ClickHouse/pull/106894) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* `query_masking_rules` теперь применяется к сообщениям, дописываемым к исключениям, чтобы учетные данные, закодированные для URL, в суффиксах `(in file/uri ...)` ошибок из табличных функций `jdbc`/`odbc` не раскрывались при настроенных правилах маскирования. [#106916](https://github.com/ClickHouse/ClickHouse/pull/106916) ([Gaurav Dubey](https://github.com/gaurav0107)).
* Исправлена проблема, из-за которой части помечались как поврежденные и переводились в состояние detached при любой перезагрузке части (перезапуске сервера, `DETACH`/`ATTACH`) для таблиц со столбцом `LowCardinality(Nullable(...))` в ключе партиционирования. Начиная с 26.5, для каждой части не записывался файл индекса minmax, если минимальное и максимальное значения такого столбца были `NULL`, при этом проверка целостности части по-прежнему требовала этот файл. Части, записанные затронутыми версиями, не содержат файл индекса minmax и по-прежнему требуют повторного `ATTACH` вручную. Закрывает [#106837](https://github.com/ClickHouse/ClickHouse/issues/106837). [#106945](https://github.com/ClickHouse/ClickHouse/pull/106945) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлено исключение `LOGICAL_ERROR` (`Unexpected expression in JOIN ON section. Expected boolean (UInt8), got 'Nothing'`), возникавшее, когда предикат неэквивалентного `JOIN ... ON` ссылался на столбец типа `Nothing`, например созданный с помощью `ARRAY JOIN []`. [#106981](https://github.com/ClickHouse/ClickHouse/pull/106981) ([Groene AI](https://github.com/groeneai)).
* Исправлены редкое исключение `LOGICAL_ERROR` (`Attempt to release query context that does not exist`) и сопровождавший его сбой сервера при чтении таблиц `MergeTree` через диск файлового кэша, созданный с `enable_filesystem_query_cache_limit = 1`. [#107028](https://github.com/ClickHouse/ClickHouse/pull/107028) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера при перемещении пустой части на диск `plain_rewritable` (например, с помощью `ALTER TABLE ... MOVE PARTITION ... TO DISK` для пустой части, сохраненной из-за `remove_empty_parts = 0`). [#107040](https://github.com/ClickHouse/ClickHouse/pull/107040) ([Groene AI](https://github.com/groeneai)).
* Исправлен неверный порядок строк в запросах `ORDER BY` к `UNION ALL` при включенных `optimize_read_in_order` и `read_in_order_use_virtual_row`. Закрывает [#106879](https://github.com/ClickHouse/ClickHouse/issues/106879). [#107053](https://github.com/ClickHouse/ClickHouse/pull/107053) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлен `LOGICAL_ERROR` (`Unsupported argument types`) в функции `geohashesInBox`, возникавший, когда её аргументы координат содержали смесь константных и неконстантных значений или когда координата имела тип `BFloat16`. Смешанные const/non-const аргументы `Float32` теперь работают, а аргументы `BFloat16` отклоняются с понятной ошибкой. [#107063](https://github.com/ClickHouse/ClickHouse/pull/107063) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты (дублирующиеся строки) для `SELECT DISTINCT` поверх `GROUP BY` с `WITH CUBE`, `WITH ROLLUP` или `GROUPING SETS` по тем же ключам. Оптимизация `query_plan_remove_redundant_distinct` больше не удаляет `DISTINCT` в этих случаях, поскольку модификаторы группировки создают дополнительные строки, в которых столбцы ключа получают значения по умолчанию, и они могут совпадать с реальными значениями групп. [#107072](https://github.com/ClickHouse/ClickHouse/pull/107072) ([Groene AI](https://github.com/groeneai)).
* Исправлен неверный результат в `OUTER JOIN`, когда фильтр `WHERE` представляет собой конъюнкцию с константным членом (например, `p AND 1` или `WHERE p QUALIFY NULL`, где `QUALIFY NULL` объединяется с `WHERE`). Константная часть конъюнкции могла быть протолкнута в неподлежающую сохранению сторону JOIN и удалена из фильтра после JOIN, из-за чего JOIN создавал несовпавшие строки со значениями по умолчанию в столбцах этой стороны, и эти строки ошибочно проходили фильтр. [#107084](https://github.com/ClickHouse/ClickHouse/pull/107084) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение пользовательских функций `executable_pool`, настроенных с `<lifetime>`, из-за которого они не подхватывали изменения в базовом скрипте. Ранее только `SYSTEM RELOAD FUNCTIONS` перечитывал изменённый скрипт; периодические перезагрузки по `<lifetime>` продолжали выполнять старую версию. [#107087](https://github.com/ClickHouse/ClickHouse/pull/107087) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `LOGICAL_ERROR` (`Cannot find input column ... on its position in inputs of expression actions DAG`) для коррелированного скалярного подзапроса над источником, который дважды проецирует один и тот же идентификатор столбца (например, `SELECT number, *`), когда `correlated_subqueries_default_join_kind = 'left'`. [#107112](https://github.com/ClickHouse/ClickHouse/pull/107112) ([Groene AI](https://github.com/groeneai)).
* Исправлена гонка данных в глобальном для server сборщике трассировок между worker thread, запускающим свой профилировщик, и остановкой server. [#107307](https://github.com/ClickHouse/ClickHouse/pull/107307) ([Groene AI](https://github.com/groeneai)).
* Инкрементные резервные копии больше не сохраняют учётные данные `S3` в локаторе `<base_backup>` файла метаданных `.backup`. Резервные копии, созданные с `use_same_s3_credentials_for_base_backup = 1` или с явными учётными данными базовой резервной копии, совпадающими с локатором этой резервной копии, сохраняют несекретный маркер и восстанавливаются без дополнительных настроек на этапе восстановления; для резервных копий, созданных с другими явными учётными данными базовой резервной копии или дополнительными аргументами authentication для базовой резервной копии, передавайте их в `RESTORE` с настройкой `base_backup`. Резервные копии, созданные старыми версиями со встроенными учётными данными, по-прежнему можно восстановить. [#107357](https://github.com/ClickHouse/ClickHouse/pull/107357) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлена ситуация, когда заголовок `CSVWithNames` и `CSVWithNamesAndTypes` содержал меньше столбцов, чем данные, если включена `output_format_csv_serialize_tuple_into_separate_columns` (по умолчанию). Заголовок (и строка с типами) теперь разворачивает столбцы `Tuple` в конечные поля с точечными именами (например, `t.a`, `t.b`), так что число столбцов в заголовке соответствует данным. Это поведение управляется новой настройкой `output_format_csv_header_serialize_tuple_into_separate_columns` (по умолчанию `1`); её можно установить в `0`, чтобы вернуть прежний заголовок с одним именем. [#107371](https://github.com/ClickHouse/ClickHouse/pull/107371) ([Groene AI](https://github.com/groeneai)).
* Исправлено чтение таблиц `Iceberg` v3, чьи data files `Parquet` содержат зарезервированные столбцы происхождения строк (например, `_row_id`); встроенный reader `Parquet` больше не вызывает `ICEBERG_SPECIFICATION_VIOLATION` для зарезервированных идентификаторов field, которые не входят в schema table. [#107377](https://github.com/ClickHouse/ClickHouse/pull/107377) ([Greg Maher](https://github.com/gregakinman)).
* Исправлено редкое аварийное завершение server при остановке (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`), вызванное тем, что запланированная задача удалялась из очереди пула потоков до запуска. [#107383](https://github.com/ClickHouse/ClickHouse/pull/107383) ([Groene AI](https://github.com/groeneai)).
* Исправлены движки table и database `MaterializedPostgreSQL`: теперь можно реплицировать одну table или database из схемы PostgreSQL, отличной от схемы по умолчанию (`materialized_postgresql_schema`), в том числе если table с одинаковыми именами существуют в нескольких схемах одной и той же database (раньше они использовали общие публикацию и слот репликации и конфликтовали друг с другом). [#107425](https://github.com/ClickHouse/ClickHouse/pull/107425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена остановка репликации всей database в `MaterializedPostgreSQL` (с `LOGICAL_ERROR: Columns number mismatch`), если структура одной реплицируемой table менялась, пока server был недоступен. Теперь пропускается только затронутая table, и ее можно восстановить с помощью `DETACH`/`ATTACH`. [#107427](https://github.com/ClickHouse/ClickHouse/pull/107427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `BACKUP` database `MaterializedPostgreSQL` больше не зависает навсегда с `Table ... were created or changed its definition during scanning`, а также теперь действительно сохраняет данные table в резервную копию (это делегируется базовому `ReplacingMergeTree`), которую затем можно восстановить как автономный `ReplacingMergeTree`. [#107433](https://github.com/ClickHouse/ClickHouse/pull/107433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена регрессия, из-за которой настройка `compatibility = '26.6'` (неявно включающая стратегию партиционирования `hive`) молча принимала `{_partition_id}` в путях table S3/Объектное хранилище вместо того, чтобы выдавать `BAD_ARGUMENTS`. [#107437](https://github.com/ClickHouse/ClickHouse/pull/107437) ([Lefteris](https://github.com/LefterisXefteris)).
* Исправлена утечка памяти во встроенном `mongo-c-driver`, которая могла возникать при чтении из MongoDB (например, через словарь MongoDB или table function `mongodb`), если за retryable-ошибкой чтения следовал неудачный повторный выбор server. [#107448](https://github.com/ClickHouse/ClickHouse/pull/107448) ([Groene AI](https://github.com/groeneai)).
* Исправлено Исключение при вставке в table `Iceberg`, чьи metadata были созданы external engine и не содержали необязательных массивов `snapshots`, `metadata-log` или `snapshot-log`. Теперь такие вставки завершаются успешно, а не с ошибкой. [#107473](https://github.com/ClickHouse/ClickHouse/pull/107473) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено требование привилегии `ALTER UPDATE` для `DELETE FROM` (легковесное удаление) в дополнение к `ALTER DELETE`. Теперь пользователь, которому выдана только `ALTER DELETE`, может выполнять `DELETE FROM`, как и указано в документации. [#107491](https://github.com/ClickHouse/ClickHouse/pull/107491) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен `NOT_FOUND_COLUMN_IN_BLOCK` при чтении файлов, партиционированных Hive, с `use_hive_partitioning = 1` и предложением `WHERE`/`PREWHERE`, которое фильтрует реальный (не виртуальный) столбец, при этом также выбирается столбец партиции Hive. [#107505](https://github.com/ClickHouse/ClickHouse/pull/107505) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`Different order of columns in UNION subquery`), возникавший, когда старый analyzer (`enable_analyzer = 0`) читал подмножество столбцов из подзапроса, у которого дочерние элементы `UNION` представляют собой операции над множествами `INTERSECT`/`EXCEPT`. [#107511](https://github.com/ClickHouse/ClickHouse/pull/107511) ([Groene AI](https://github.com/groeneai)).
* Исправлено молчаливое преобразование значений `NULL` в пустые строки при вставке данных `Arrow`/`ORC` в столбец `LowCardinality(Nullable(...))`. Эта регрессия появилась в 26.5. [#107532](https://github.com/ClickHouse/ClickHouse/pull/107532) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлена логическая ошибка (`Stream ... variant_discr ... is not found`), которая могла возникать при слиянии или чтении части `MergeTree`, созданной в результате мутации таблицы со столбцом `Dynamic`. [#107562](https://github.com/ClickHouse/ClickHouse/pull/107562) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка (`WhichDataType(const_type).isArray()`), возникавшая при анализе первичного ключа, когда `pointInPolygon` вызывается с константным аргументом-полигоном обёрточного типа, например `Variant` или `Dynamic` (например, `pointInPolygon((x, y), if(c, [(0, 0), ...], NULL))`). [#107589](https://github.com/ClickHouse/ClickHouse/pull/107589) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка (`Last stored last_written_position in meta file ... is bigger than current last_written_pos`) в движке `FileLog`, которая могла возникать, если отслеживаемый файл удаляли и создавали заново с повторным использованием того же inode. [#107617](https://github.com/ClickHouse/ClickHouse/pull/107617) ([Groene AI](https://github.com/groeneai)).
* Исправлено редкое аварийное завершение сервера (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`) при обработке запроса клиента ZooKeeper, когда асинхронный запрос к Keeper отбрасывался во время отправки, например при нехватке памяти. [#107647](https://github.com/ClickHouse/ClickHouse/pull/107647) ([Groene AI](https://github.com/groeneai)).
* Исправлен `RESTORE` для таблиц `ReplicatedMergeTree`: части с дублирующимся содержимым из резервной копии теперь сохраняются, а не дедуплицируются молча. [#107652](https://github.com/ClickHouse/ClickHouse/pull/107652) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлен runtime join filter, из-за которого для столбцов `JSON` могли возвращаться неверные результаты. Закрывает [#107646](https://github.com/ClickHouse/ClickHouse/issues/107646). [#107663](https://github.com/ClickHouse/ClickHouse/pull/107663) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены некорректные результаты распределённых запросов, выбирающих столбцы `ALIAS` с общим подвыражением: столбцы могли смещаться, и значения возвращались не под тем столбцом. [#107675](https://github.com/ClickHouse/ClickHouse/pull/107675) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Квоты с ключом `normalized_query_hash` теперь учитывают все ресурсы (`read_rows`, `read_bytes`, `result_rows`, `result_bytes`, `execution_time`, `written_bytes`, `errors`) для каждого шаблона запроса, как и счётчики количества запросов, вместо того чтобы учитывать их в одном общем бакете на пользователя. [#107681](https://github.com/ClickHouse/ClickHouse/pull/107681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка `Block structure mismatch in UnionStep stream` (аварийное завершение сервера в debug/sanitizer builds, `Code: 49` в release builds), которая возникала, когда соседние ветви в `UNION`/`INTERSECT`/`EXCEPT` различались только условием `WHERE`, и условие одной из ветвей сворачивалось в константный столбец `Const`. [#107719](https://github.com/ClickHouse/ClickHouse/pull/107719) ([Groene AI](https://github.com/groeneai)).
* Исправлены логические ошибки (`Bad cast`), вызванные несогласованным удалением `LowCardinality`, вложенного в столбцы `Variant` и `Dynamic`, например в `concat`, `format` и при анализе первичного ключа. Закрывает [#107598](https://github.com/ClickHouse/ClickHouse/issues/107598). [#107773](https://github.com/ClickHouse/ClickHouse/pull/107773) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен серьёзный перекос в распределении работы при использовании параллельных реплик, когда кластер содержит неактивные реплики (например, устаревшие записи, оставшиеся после автомасштабирования). Такие реплики больше не учитываются координатором чтения, поэтому нагрузка распределяется между активными репликами, а не сваливается на одну из них. [#107805](https://github.com/ClickHouse/ClickHouse/pull/107805) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `Not-ready Set is passed as the second argument`, которое могло возникать, если при построении множества для подзапроса `IN` во время анализа primary key сбой происходил без явной ошибки (например, тайм-аут подзапроса с `overflow_mode = 'break'`), из-за чего множество навсегда оставалось непостроенным в конвейере выполнения запроса. [#107924](https://github.com/ClickHouse/ClickHouse/pull/107924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой сервера в predicate pushdown (`enable_optimize_predicate_expression`, legacy analyzer), когда подзапрос `UNION` встречается внутри условия `JOIN ... ON`. [#107930](https://github.com/ClickHouse/ClickHouse/pull/107930) ([Groene AI](https://github.com/groeneai)).
* Исправлены ложные ошибки `CHECKSUM_DOESNT_MATCH` и ошибки чтения `Parquet` (а для некоторых форматов — и незаметно неверные результаты), возникавшие, когда объект S3 или S3-compatible (например, GCS) перезаписывался на месте во время чтения. Теперь такие операции чтения завершаются понятной, retryable ошибкой, а не возвращают данные, сшитые из двух версий объекта; поведение управляется новой настройкой `s3_validate_etag_on_read` (включена по умолчанию). [#107934](https://github.com/ClickHouse/ClickHouse/pull/107934) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена ошибка `SELECT` с `NOT_FOUND_COLUMN_IN_BLOCK` на таблице с data-skipping индексом `set`, когда ROW POLICY фильтрует её с помощью всегда истинного условия в сочетании с проверкой по неиндексированному столбцу. [#107971](https://github.com/ClickHouse/ClickHouse/pull/107971) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен parsing параметров команды executable user-defined function: плейсхолдеры с пустыми или недопустимыми именами больше не принимаются как параметры. [#107983](https://github.com/ClickHouse/ClickHouse/pull/107983) ([Goutam Adwant](https://github.com/goutamadwant)).
* Исправлена регрессия производительности для подстолбцов `Map` с `PREWHERE`. Закрывает [#107912](https://github.com/ClickHouse/ClickHouse/issues/107912). Вызвана изменением [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена запись за пределы допустимого диапазона при чтении столбца `Variant` из повреждённого блока `Native`, в котором discriminator'ы ссылаются на несуществующий индекс варианта. [#107991](https://github.com/ClickHouse/ClickHouse/pull/107991) ([uwezkhan](https://github.com/uwezkhan)).
* Исправлены неверные query results из-за некорректного pruning по primary key и партициям, когда `toStartOfDay`, `toStartOfISOYear`, `toDaysSinceYearZero`, `toRelativeSecondNum`, `toRelativeMinuteNum`, `toRelativeHourNum`, `toRelativeWeekNum`, `toRelativeDayNum`, `toMonthNumSinceEpoch` или `toYearNumSinceEpoch` применяется к key column `Date32`, содержащему даты вне диапазона, представимого этой функцией (в частности, даты до `1970-01-01`). Эти функции сообщают primary index, что они монотонны, но раньше для таких arguments происходило переполнение с циклическим переходом, из-за чего индекс мог отбрасывать granules, которые на самом деле содержали подходящие строки; теперь значения насыщаются на границах типа результата, а сами функции сохраняют монотонность во всём диапазоне `Date32`. [#108018](https://github.com/ClickHouse/ClickHouse/pull/108018) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен `accurateCastOrNull` для `Tuple`, элемент которого имеет тип `Dynamic`/`Variant`: настоящий исходный `NULL` трактовался как ошибка преобразования. Для целевого элемента `Nullable` исходный `NULL` теперь остаётся элементом `NULL` (как и в случае с обычным источником `Tuple(Nullable(...))`); для целевого элемента без `Nullable` исходный `NULL` теперь делает `NULL` весь кортеж вместо подстановки значения элемента по умолчанию; ошибки разбора/переполнения по-прежнему делают `NULL` весь кортеж. [#108023](https://github.com/ClickHouse/ClickHouse/pull/108023) ([Groene AI](https://github.com/groeneai)). Также исправлена логическая ошибка при приведении столбца `Dynamic` или `Variant`, вложенного в `Tuple`, к типу элемента без `Nullable` с помощью `accurateCastOrNull` или `accurateCastOrDefault`. [#108061](https://github.com/ClickHouse/ClickHouse/pull/108061) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой `numericIndexedVectorPointwiseMultiply` возвращала пустой результат при умножении на вектор, полностью состоящий из единиц, но с другой конфигурацией BSI (bit-sliced index). [#108027](https://github.com/ClickHouse/ClickHouse/pull/108027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой `toTime64` и `CAST(... AS Time64)` не ограничивали выходящие за диапазон значения пределами диапазона `Time64` в режимах переполнения `saturate` и `ignore`, что могло приводить к появлению значений, которые отображаются одинаково, но сравниваются как разные. [#108028](https://github.com/ClickHouse/ClickHouse/pull/108028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `getClientHTTPHeader` теперь корректно считается недетерминированным, поэтому его результат больше не переиспользуется по ошибке кешем результатов запросов. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client --port 9440` снова автоматически включает защищённое соединение (TLS); это перестало работать после рефакторинга, из-за которого порт перестал передаваться в проверку защищённого соединения. [#108032](https://github.com/ClickHouse/ClickHouse/pull/108032) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Временная ошибка при обновлении частей данных таблицы только для чтения больше не приводит к полной остановке фоновой задачи обновления. [#108034](https://github.com/ClickHouse/ClickHouse/pull/108034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено отставание предупреждений о перегрузке памяти/CPU/мутаций в `system.warnings` на один цикл асинхронных метрик (и их отсутствие в первом цикле). [#108035](https://github.com/ClickHouse/ClickHouse/pull/108035) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Табличная функция `mongodb` теперь принимает `oid_columns`, переданный как именованный argument (например, `oid_columns='_id'`), вместо того чтобы отклонять его с `BAD_ARGUMENTS`. [#108039](https://github.com/ClickHouse/ClickHouse/pull/108039) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `Bad cast from type DB::ColumnNullable to DB::ColumnVector<...>` (логическая ошибка), возникавшее, когда квалифицированная звёздочка (`t.*`) выбирает ключ `JOIN USING`, а этот `JOIN` вложен под `PASTE`/`CROSS`/JOIN через запятую или внешний `ON` JOIN, при `join_use_nulls = 0`. [#108043](https://github.com/ClickHouse/ClickHouse/pull/108043) ([Groene AI](https://github.com/groeneai)).
* Исправлена некорректная обработка утверждений нулевой ширины (`\b`, `^`, `$`) в regexp-функциях "match all" `extractAll`, `extractAllGroupsVertical`, `extractAllGroupsHorizontal`, `countMatches` и `splitByRegexp`. Например, `extractAll('new york is the greatest', '\b(\w)')` теперь корректно возвращает первую букву каждого слова, а не каждую букву. [#108047](https://github.com/ClickHouse/ClickHouse/pull/108047) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение `CREATE TABLE ... AS SELECT` в базах данных `Atomic`, из-за которого после сбоя запроса оставалась пустая таблица — например, когда у пользователя нет доступа к таблице, на которую ссылается подзапрос. Ранее при повторной попытке вместо исходной ошибки сообщалось, что таблица уже существует. Теперь таблица создаётся через временную таблицу и становится видимой только после полного заполнения. [#108048](https://github.com/ClickHouse/ClickHouse/pull/108048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Разрешено выполнять запросы к словарю `range_hashed` или `complex_key_range_hashed`, использующему диапазон `DateTime64`, `Decimal` или диапазон с плавающей запятой, с соответствующим аргументом для `dictGet`/`dictHas`. Ранее такие запросы завершались ошибкой `must be convertible to Int64`, а открытые интервалы диапазонов `Decimal`/`DateTime64` некорректно возвращали значение по умолчанию. [#108052](https://github.com/ClickHouse/ClickHouse/pull/108052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение (`CANNOT_PARSE_TEXT`) при загрузке словаря с составным ключом, если столбцы ключа не были первыми в определении словаря, для локального source `ClickHouse`, использующего явный запрос. Теперь исходные столбцы сопоставляются со структурой словаря по имени, а не по позиции. [#108053](https://github.com/ClickHouse/ClickHouse/pull/108053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка в table function `values`, из-за которой возникал `ARGUMENT_OUT_OF_BOUND`, если использовался десятичный литерал, который нельзя точно представить в узком столбце с плавающей запятой (например, `0.1` для столбца `Float32`), например: `SELECT * FROM values('x Float32', 0.1)`. Теперь такие значения принимаются и преобразуются в ближайшее представимое значение, как и в `CAST` и `INSERT ... VALUES`. [#108055](https://github.com/ClickHouse/ClickHouse/pull/108055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR` (`No available columns`) при выполнении `SELECT count()` (или других тривиальных запросов) на таблице, где пользователю предоставлена привилегия `SELECT` только для столбца `ALIAS`. [#108056](https://github.com/ClickHouse/ClickHouse/pull/108056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение `mapFilter`, `mapSort` (и его вариантов) и `mapConcat`, из-за которого `LowCardinality` удалялся из типов ключа и значения у `Map`. Ранее `mapFilter` для столбца `Map(LowCardinality(String), String)` возвращал `Map(String, String)`, что могло повредить метаданные таблицы, созданной через `CREATE TABLE ... AS SELECT`, и приводить к сбою `CHECK TABLE`. [#108057](https://github.com/ClickHouse/ClickHouse/pull/108057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены некорректные результаты при использовании `hasToken` на текстовых индексах с токенизатором, отличным от `splitByNonAlpha`. [#108066](https://github.com/ClickHouse/ClickHouse/pull/108066) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлено зависание `SYSTEM RELOAD DICTIONARIES` (и `RELOAD DICTIONARY`), возникавшее, когда множество MySQL-словарей, определённых в XML, использовали один общий пул соединений через `share_connection`. Теперь такие пулы учитывают `connection_pool_size` и `connection_wait_timeout` (по умолчанию 5 секунд) из конфигурации, как и словари, определённые через named collections. [#108083](https://github.com/ClickHouse/ClickHouse/pull/108083) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Разрешён `EXISTS <dictionary>` для пользователя, у которого есть только привилегия `SHOW DICTIONARIES` на словарь (ранее требовался `SHOW TABLES`). [#108084](https://github.com/ClickHouse/ClickHouse/pull/108084) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение `CREATE TABLE dst AS src SETTINGS ...` (и аналогичных вариантов с `ORDER BY`/`PARTITION BY`, но без явного `ENGINE`), которое молча отбрасывало движок исходной таблицы, секции хранения (например, табличный `TTL` и ключи) и настройки. Теперь движок и не переопределённые секции хранения наследуются от исходной таблицы, а указанные настройки объединяются с настройками исходной таблицы поверх них. [#108085](https://github.com/ClickHouse/ClickHouse/pull/108085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой `INSERT` в таблицы `MergeTree` завершался сбоем с `filesystem error: in rename: Permission denied` в файловых системах на базе Windows (WSL, CIFS/SMB, Docker Desktop bind mounts). Причиной было то, что компонент записи part оставлял файловые дескрипторы открытыми во время переименования каталога part. [#108089](https://github.com/ClickHouse/ClickHouse/pull/108089) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой (разыменование нулевого указателя) при выполнении запроса к таблице `Hive` без секции `WHERE`, например `SELECT * FROM hive_table`. [#108094](https://github.com/ClickHouse/ClickHouse/pull/108094) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR` ("Unexpected return type from if") при чтении столбца с `apply_mutations_on_fly = 1` после `ALTER UPDATE col = ... WHERE <cond>` с неконстантным или ложным условием, за которым следует `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `toStartOfInterval` и `dateTrunc`, которые возвращали округлённое значение вместо начала содержащего интервала, когда входные данные имели более высокую точность, чем единица интервала. Например, `toStartOfInterval(toDateTime64('2023-10-09 10:11:12.000999', 6), INTERVAL 1 millisecond)` возвращал `10:11:12.001` вместо `10:11:12.000`. Перегрузка с явно заданной точкой отсчёта тоже была затронута. Закрывает [#103535](https://github.com/ClickHouse/ClickHouse/issues/103535). [#108186](https://github.com/ClickHouse/ClickHouse/pull/108186) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Скрыта конфиденциальная информация в столбце `view_query` таблицы `system.query_views_log`. [#108214](https://github.com/ClickHouse/ClickHouse/pull/108214) ([Valerii Mordovskii](https://github.com/Fidelaggio)).
* Исправлено зависание таблицы `MergeTree`, присоединённой с устаревшим индексом пропуска данных `hypothesis` (удалённый тип индекса, сохранённый только для совместимости с `ATTACH`). Ранее легковесный `DELETE`, `OPTIMIZE`, обычный `INSERT` или отфильтрованный `SELECT` для такой таблицы завершались ошибкой `ILLEGAL_INDEX` ("Index of type 'hypothesis' is no longer supported"), а мутация `DELETE` бесконечно повторялась. Теперь такой индекс считается инертным: он без изменений переносится при merge/мутациях, пропускается при вставке и планировании запросов, и его по-прежнему можно удалить с помощью `ALTER TABLE ... DROP INDEX`. [#108217](https://github.com/ClickHouse/ClickHouse/pull/108217) ([Groene AI](https://github.com/groeneai)).
* Исправлено то, что настройка `type_json_allow_duplicated_key_with_literal_and_nested_object` не работала с типизированными путями в `JSON`. [#108218](https://github.com/ClickHouse/ClickHouse/pull/108218) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен `LOGICAL_ERROR` (`Different list of shards in child plans`) при выполнении запроса с `make_distributed_plan = 1` к таблице `MergeTree`, у которой есть обычная или агрегатная проекция. [#108256](https://github.com/ClickHouse/ClickHouse/pull/108256) ([Groene AI](https://github.com/groeneai)).
* Исправлены `replaceRegexpOne` и `replaceRegexpAll`, чтобы `.` по умолчанию сопоставлялся с символами новой строки, как и в других функциях регулярных выражений. [#108265](https://github.com/ClickHouse/ClickHouse/pull/108265) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* Исправлена логическая ошибка при приведении `Array(Dynamic)` или `Array(Variant)` к `QBit` с помощью `accurateCastOrNull`, например `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* Теперь `index_granularity_bytes` учитывается для столбцов состояний `AggregateFunction`. Ранее ограничение размера гранулы в байтах для таких столбцов игнорировалось (например, для состояний `uniqExact` в таблицах `AggregatingMergeTree` и агрегирующих проекциях), из-за чего гранулы получались значительно больше заданного предела, что увеличивало read amplification и расход памяти во время выполнения запроса. [#108297](https://github.com/ClickHouse/ClickHouse/pull/108297) ([Groene AI](https://github.com/groeneai)).
* Исправлено двойное вычисление условий в легковесных `UPDATE`/`DELETE`, которое могло приводить к некорректному поведению для недетерминированных условий и лишней работе для детерминированных. Закрывает [#86032](https://github.com/ClickHouse/ClickHouse/issues/86032). [#108323](https://github.com/ClickHouse/ClickHouse/pull/108323) ([ofeliacode](https://github.com/ofeliacode)).
* Исправлено исключение в предопределённом HTTP-обработчике, возникавшее, когда в запросе отсутствовал заголовок, для которого регулярное выражение `headers_regexp` допускает пустое значение. [#108324](https://github.com/ClickHouse/ClickHouse/pull/108324) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлена работа `arrayPartialSort` с неконстантным аргументом `limit`. [#108327](https://github.com/ClickHouse/ClickHouse/pull/108327) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлена проблема, из-за которой отменённый или завершённый через `KILL` `INSERT` мог ещё долго продолжать выполняться при построении индекса пропуска данных (например, неограниченного индекса `set(0)` по столбцу с большим числом уникальных значений). Теперь построение индекса останавливается сразу после отмены запроса. [#108351](https://github.com/ClickHouse/ClickHouse/pull/108351) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена ситуация, когда `SELECT` из табличной функции `primes` не реагировал на отмену: при большом `step` (или `limit`) запрос мог ещё долго выполняться после `KILL QUERY` или тайм-аута. Теперь он останавливается сразу. [#108353](https://github.com/ClickHouse/ClickHouse/pull/108353) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен разбор имён типов данных, содержащих подстроку `INT` (например, имени в стиле функции вроде `quantileInterpolatedWeighted`, используемого в позиции типа данных). Такие имена ошибочно принимались за целочисленные типы MySQL, и их первая группа аргументов `(...)` незаметно поглощалась как модификатор ширины отображения, что могло нарушать корректность повторного разбора отформатированного запроса. [#108354](https://github.com/ClickHouse/ClickHouse/pull/108354) ([Groene AI](https://github.com/groeneai)).
* Исправлена несогласованность, из-за которой некорректный `ARRAY JOIN`, за которым следовали запятая и заключённый в скобки список таблиц, ошибочно разбирался как `CROSS JOIN` вместо того, чтобы быть отклонённым. [#108365](https://github.com/ClickHouse/ClickHouse/pull/108365) ([Raúl Marín](https://github.com/Algunenano)).
* Скрыты секретные аргументы таких функций, как `encrypt`, `decrypt` и `HMAC`, в выводе `EXPLAIN actions`, `EXPLAIN header` и `EXPLAIN PIPELINE`, когда `format_display_secrets_in_show_and_select` отключён (по умолчанию). [#108386](https://github.com/ClickHouse/ClickHouse/pull/108386) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена работа `CREATE OR REPLACE` для refreshable materialized view с целью `TO`: ранее операция ошибочно отклонялась, поскольку целевая таблица уже принадлежит заменяемому представлению. [#108392](https://github.com/ClickHouse/ClickHouse/pull/108392) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлен сбой сервера (`Received signal 4`, illegal instruction), который мог быть вызван некорректным или рассинхронизированным потоком собственного TCP-протокола. Перед разбором исходный адрес, переданный клиентом, теперь проверяется на то, что это числовой `host:port`, вместо того чтобы позволять нечисловому порту попадать в перехватываемую функцию libc `getservbyname`. [#108410](https://github.com/ClickHouse/ClickHouse/pull/108410) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера при завершении работы, если при остановке базы данных генерируется исключение (например, когда `flush` таблицы упирается в тайм-аут ZooKeeper). Остальная часть последовательности завершения работы больше не пропускается, поэтому системные логи сбрасываются, а их потоки дожидаются завершения через join перед выходом сервера. [#108417](https://github.com/ClickHouse/ClickHouse/pull/108417) ([Groene AI](https://github.com/groeneai)).
* Исправлены функции регулярных выражений (`match`, `extract`, `extractAll`, `replaceRegexpOne`, `replaceRegexpAll` и т. д.), которые молча возвращали неверные результаты, если шаблон содержал байт NUL (`\0`). Теперь NUL обрабатывается как обычный литеральный байт, в соответствии с RE2. [#108427](https://github.com/ClickHouse/ClickHouse/pull/108427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение `clickhouse-local`, который возвращал пустой ответ на HTTP-запросы `OPTIONS`, когда `http_options_response` не настроен, из-за чего веб-интерфейс (`/play`) показывал соединение как неработающее, хотя запросы выполнялись. [#108428](https://github.com/ClickHouse/ClickHouse/pull/108428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` ("Invalid action query tree node ..."), возникавшее, когда distributed query одновременно выполнял дедупликацию структурно идентичных дубликатов столбцов `ALIAS` и ссылался на table function с аргументом именованной коллекции в виде `key = value` (например, `oss(s3_conn, filename = '...')`). [#108435](https://github.com/ClickHouse/ClickHouse/pull/108435) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера (`LOGICAL_ERROR: 'Unexpected exception in refresh scheduling'`), который мог происходить при запуске, когда координируемый refreshable materialized view в базе данных `Replicated` подключался к Keeper, не поддерживающему флаг возможности `MULTI_READ` (например, после понижения версии Keeper). Теперь представление корректно останавливается вместо аварийного завершения сервера. [#108441](https://github.com/ClickHouse/ClickHouse/pull/108441) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK` (например, `Column _part not found`) при выборке virtual columns из таблицы `MergeTree` в режиме параллельных реплик, в том числе через `SELECT *` с `asterisk_include_virtual_columns = 1`. [#108451](https://github.com/ClickHouse/ClickHouse/pull/108451) ([Groene AI](https://github.com/groeneai)).
* Для `SYSTEM RESET DDL WORKER` теперь требуется новая привилегия `SYSTEM RESET DDL WORKER`. Ранее любой аутентифицированный пользователь (включая `readonly`) мог выполнять эту команду и многократно сбрасывать состояние DDL-воркера, блокируя DDL с предложением ON CLUSTER. [#108460](https://github.com/ClickHouse/ClickHouse/pull/108460) ([Groene AI](https://github.com/groeneai)).
* Путь к модели для `catboostEvaluate` ограничен директорией `user_files`, как и у table function `file` и dictionary sources. Ранее функция принимала произвольный путь в файловой системе без проверки ограничения, что позволяло проверять существование файлов вне `user_files` и инициировать их чтение. Теперь модели должны располагаться внутри `user_files`. [#108463](https://github.com/ClickHouse/ClickHouse/pull/108463) ([Groene AI](https://github.com/groeneai)).
* Для функции `hasColumnInTable` теперь требуется привилегия `SHOW COLUMNS` на целевую таблицу — та же, что нужна для `DESCRIBE` и `SHOW CREATE TABLE`. Ранее любой пользователь мог вызывать `hasColumnInTable`, чтобы проверять имена столбцов и существование таблиц и баз данных без какой-либо проверки доступа. [#108464](https://github.com/ClickHouse/ClickHouse/pull/108464) ([Groene AI](https://github.com/groeneai)).
* Исправлено чрезмерное выделение памяти при десериализации специально сформированных состояний агрегатных функций `mannWhitneyUTest`, `rankCorr`, `largestTriangleThreeBuckets`, `quantileGK`, `sequenceMatch`/`sequenceCount` и `groupArrayIntersect`. Некорректное состояние могло объявить огромное число элементов и заставить сервер попытаться выделить десятки гигабайт памяти на основе всего нескольких байт входных данных; теперь такие состояния отклоняются с ошибкой `TOO_LARGE_ARRAY_SIZE`. [#108465](https://github.com/ClickHouse/ClickHouse/pull/108465) ([Groene AI](https://github.com/groeneai)).
* Проверяется, что цель перенаправления в ответе S3 `301 Moved Permanently` соответствует `remote_url_allow_hosts` (`RemoteHostFilter`). Ранее обработка 301 в AWS SDK переходила на конечную точку, заданную атакующим в ответе (заголовок `Location` или элемент `<Endpoint>`), без проверки хоста, поэтому вредоносный или скомпрометированный S3-compatible сервер мог перенаправить ClickHouse на произвольный хост (SSRF). Для перенаправления 307 эта проверка уже выполнялась; теперь оба варианта работают одинаково. [#108466](https://github.com/ClickHouse/ClickHouse/pull/108466) ([Groene AI](https://github.com/groeneai)).
* Исправлена утечка учётных данных: устаревшие настройки `storage_aws_access_key_id`, `storage_aws_secret_access_key`, `storage_catalog_credential` и `storage_auth_header` движка базы данных `DataLakeCatalog` отображались в открытом виде в `system.databases.engine_full` и `SHOW CREATE DATABASE`. Теперь они маскируются как `[HIDDEN]`. [#108470](https://github.com/ClickHouse/ClickHouse/pull/108470) ([Groene AI](https://github.com/groeneai)).
* Исправлена идентификация пользователя по `ssl_certificate`: одиночный wildcard `*` теперь соответствует ровно одному компоненту имени (RFC 6125 6.4.3). Ранее wildcard в субъекте `CN` или `DNS:` SAN (например, `*.corp.example.com`) также соответствовал именам с несколькими метками, таким как `evil.deep.corp.example.com`, что позволяло владельцу сертификата для более глубокого поддомена аутентифицироваться как wildcard-пользователь. Сопоставление `URI:` SAN не изменилось. [#108472](https://github.com/ClickHouse/ClickHouse/pull/108472) ([Groene AI](https://github.com/groeneai)).
* Исправлена SQL-инъекция в протоколе MySQL: аргумент `SHOW TABLE STATUS LIKE` и значение `SET <mysql_setting>`, отправляемое через MySQL interface (порт 9004), теперь разбираются и заново заключаются в кавычки, а не дословно подставляются в переписанный запрос. Также исправлено поведение, при котором `KILL QUERY <id>` через MySQL interface молча игнорировал многозначные идентификаторы соединений. [#108474](https://github.com/ClickHouse/ClickHouse/pull/108474) ([Groene AI](https://github.com/groeneai)).
* Чувствительные значения, передаваемые как параметры строки запроса HTTP (например, привязки query-параметров `param_*`, такие как `param_secret_key`/`param_aws_secret_access_key`, параметр `password` или параметры `signature` в стиле S3), больше не записываются в `system.text_log` или спаны OpenTelemetry в исходном виде. Строка журнала `Request URI` теперь маскирует значения параметров, чьи имена выглядят чувствительными, заменяя их на `[HIDDEN]`. [#108475](https://github.com/ClickHouse/ClickHouse/pull/108475) ([Groene AI](https://github.com/groeneai)).
* Конфигурация `http_forbid_headers` теперь принудительно применяется при определении схемы для табличной функции `url` и движка хранения `URL`. Ранее запрещённый заголовок всё равно отправлялся по сети при определении схемы (например, с форматом `Regexp` или `DESCRIBE`), а его тело ответа могло затем попасть в ошибку разбора, раскрывая секреты. Теперь фильтр заголовков проверяется до любого сетевого доступа на пути определения схемы, что соответствует уже существующему поведению `urlCluster`. [#108476](https://github.com/ClickHouse/ClickHouse/pull/108476) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты при использовании `SELECT ... SAMPLE ...` вместе с кэшем условий запроса (настройка `use_query_condition_cache`, включена по умолчанию). [#108488](https://github.com/ClickHouse/ClickHouse/pull/108488) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера (переполнение стека), вызванный глубоко вложенными выражениями, такими как `[[[ ... ]]]` или `array(array( ... ))`, когда для `max_parser_depth` задано большое значение. [#108493](https://github.com/ClickHouse/ClickHouse/pull/108493) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено бесконечное зависание движка таблицы `RabbitMQ` при `DROP TABLE` или остановке сервера, когда брокер закрывает AMQP-соединение из-за пропущенных heartbeat-сигналов без отправки TCP RST. Все блокирующие вызовы цикла событий теперь имеют тайм-аут 30 секунд, поэтому остановка всегда завершается. [#108497](https://github.com/ClickHouse/ClickHouse/pull/108497) ([Aly Ayman](https://github.com/alyelmorsy-dataengineer)).
* Вторичные запросы, выполняемые в рамках внутренних запросов, теперь будут логироваться как внутренние запросы. [#108506](https://github.com/ClickHouse/ClickHouse/pull/108506) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Движок таблицы `ArrowFlight` и табличная функция `arrowFlight` теперь учитывают список разрешённых хостов `<remote_url_allow_hosts>`. Ранее хост и порт соединения не проверялись, поэтому запрос мог обращаться к хостам, отсутствующим в этом списке. [#108507](https://github.com/ClickHouse/ClickHouse/pull/108507) ([Groene AI](https://github.com/groeneai)).
* Команды протокола MySQL `COM_FIELD_LIST` (`mysql_list_fields`) и `COM_INIT_DB` (`USE database`) теперь применяют то же управление доступом, что и их SQL-эквиваленты (`SHOW COLUMNS`/`DESCRIBE` и `USE`). Ранее они могли раскрывать имена столбцов таблиц, на которые у пользователя были только частичные привилегии на столбцы, а также переключать текущую базу данных без привилегии `SHOW DATABASES`. [#108508](https://github.com/ClickHouse/ClickHouse/pull/108508) ([Groene AI](https://github.com/groeneai)).
* `http_forbid_headers` теперь сопоставляется регистронезависимо. Имена HTTP-заголовков регистронезависимы, поэтому запрет `Authorization` теперь также блокирует `authorization`, `AUTHORIZATION` и другие варианты регистра. Настроенные шаблоны `header_regexp` теперь тоже сопоставляются регистронезависимо без необходимости явно указывать флаг `(?i)`. [#108509](https://github.com/ClickHouse/ClickHouse/pull/108509) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера (segmentation fault), который мог возникать, когда распределённый запрос ссылался на ещё не материализованный `MATERIALIZED` CTE как на внешнюю таблицу, а удалённый источник создавался лениво. [#108547](https://github.com/ClickHouse/ClickHouse/pull/108547) ([Groene AI](https://github.com/groeneai)).
* Исправлены неправильные результаты, когда кэш условий запроса (`use_query_condition_cache = 1`) повторно использовал исключение меток, полученное из индекса пропуска данных, для запроса, в котором выполнялся другой набор индексов пропуска данных, например с `use_skip_indexes = 0`, `ignore_data_skipping_indices` или иным режимом `use_skip_indexes_for_disjunctions`. Записи кэша, полученные из индекса пропуска данных, теперь привязываются к фактическому набору выполненных индексов пропуска данных. [#108548](https://github.com/ClickHouse/ClickHouse/pull/108548) ([Groene AI](https://github.com/groeneai)).
* Исправлено несколько ошибок в `changeYear`, `changeMonth`, `changeDay`, `changeHour`, `changeMinute` и `changeSecond` с аргументами типа `DateTime64`: столбец результата создавался с жёстко заданным scale по умолчанию 3 вместо scale аргумента, что приводило к `LOGICAL_ERROR` (`writeSlice expects same column types`), когда результат передавался в `arrayPushBack`/`arrayPushFront`/`arrayConcat`; входные данные с наносекундной точностью (scale 9) вызывали `DECIMAL_OVERFLOW`; а входные данные с долями секунды до эпохи возвращали неправильную календарную секунду. Также исправлено поведение `timeSlots` для `DateTime64`: ранее функция игнорировала scale необязательного аргумента `Size` в объявленном return type и возвращала неправильные временные метки для максимального scale в `Size`. [#108551](https://github.com/ClickHouse/ClickHouse/pull/108551) ([Groene AI](https://github.com/groeneai)). [#108681](https://github.com/ClickHouse/ClickHouse/pull/108681) ([Takumi Hara](https://github.com/takumihara)). [#108994](https://github.com/ClickHouse/ClickHouse/pull/108994) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK`, возникавшая, когда составному предикату назначался псевдоним в `GROUP BY`, а затем на него снова ссылались при включенном `enable_identifier_resolve_cache` (по умолчанию). [#108553](https://github.com/ClickHouse/ClickHouse/pull/108553) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка (`Equal values are not contiguous within the range assumed to be sorted`), возникавшая при выполнении `DISTINCT` поверх чтения `STREAM` (`SELECT DISTINCT ... FROM table STREAM`). Оптимизации чтения в порядке сортировки больше не применяются к чтениям `STREAM`, которые выдают строки в порядке коммитов, а не в порядке ключа сортировки. [#108568](https://github.com/ClickHouse/ClickHouse/pull/108568) ([Groene AI](https://github.com/groeneai)).
* Исправлены случаи, когда проекции возвращали типовое значение по умолчанию для столбца'а (например, `0`) вместо объявленного значения `DEFAULT` (например, `-1`) в двух ситуациях: при чтении столбца, добавленного через `ALTER TABLE ... ADD COLUMN ... DEFAULT` после создания проекции (чтение из базовой таблицы уже работало корректно), и после истечения `TTL` столбца в части Wide. [#108569](https://github.com/ClickHouse/ClickHouse/pull/108569) ([Shaohua Wang](https://github.com/tiandiwonder)). [#109013](https://github.com/ClickHouse/ClickHouse/pull/109013) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена ошибка `ReadBuffer is canceled. Can't read from it.`, которая могла возникать при повторной попытке загрузки в S3 (например, резервной копии) после временной ошибки чтения. [#108573](https://github.com/ClickHouse/ClickHouse/pull/108573) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `ATTACH PARTITION ... FROM`, из-за которого отклонялись таблицы, чьи первичные ключи эквивалентны, но объявлены по-разному (в одном случае явный `PRIMARY KEY`, в другом — неявный из `ORDER BY`). [#108590](https://github.com/ClickHouse/ClickHouse/pull/108590) ([Jordi Orihuela](https://github.com/jordiori)).
* Исправлен сбой прямого чтения из текстового индекса, возникавший, когда несколько текстовых индексов были частично материализованы. Исправляет [#108530](https://github.com/ClickHouse/ClickHouse/issues/108530). [#108607](https://github.com/ClickHouse/ClickHouse/pull/108607) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено раскрытие метаданных, при котором `DESCRIBE loop('db', 'table')` и `DESCRIBE loop(<inner table function>)` обходили проверку доступа `SHOW COLUMNS` / к источнику, позволяя непривилегированному пользователю читать схему столбцов таблицы. [#108624](https://github.com/ClickHouse/ClickHouse/pull/108624) ([Groene AI](https://github.com/groeneai)).
* Исправлен виртуальный столбец `_etag` для движков таблиц `S3Queue` и `AzureQueue`: он был объявлен, но никогда не заполнялся, поэтому `SELECT _etag` всегда возвращал пустую строку. Теперь он возвращает ETag объекта, как и движок `S3` и табличная функция `s3`. [#108625](https://github.com/ClickHouse/ClickHouse/pull/108625) ([Groene AI](https://github.com/groeneai)).
* Исправлено чтение файлов `Arrow`, `ArrowStream` и основанных на Arrow файлов `ORC`, у которых столбец временной метки содержит фиксированное числовое смещение UTC (например, `+05:30`, `-08:00`, `00:00`) или не-IANA-маркер `fixed` в качестве часового пояса; ранее это приводило к ошибке `Cannot load time zone ...` (`BAD_ARGUMENTS`). [#108633](https://github.com/ClickHouse/ClickHouse/pull/108633) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение (`LOGICAL_ERROR: Join is supported only for pipelines with one output port` или `NOT_IMPLEMENTED: MergeJoinAlgorithm is not implemented for strictness Semi`), возникавшее, когда `join_algorithm = 'full_sorting_merge'` использовался для `SEMI`/`ANTI` JOIN, включая JOIN, полученные при декорреляции коррелированного подзапроса `EXISTS`. Теперь `full_sorting_merge` отклоняет комбинации strictness/kind, которые не может выполнить, поэтому планировщик переключается на другой включенный алгоритм или сообщает, что JOIN не может быть выполнен. [#108658](https://github.com/ClickHouse/ClickHouse/pull/108658) ([Groene AI](https://github.com/groeneai)).
* Исправлено переполнение буфера кучи при построении text index с `positions = 1` на множестве различных коротких токенов. [#108659](https://github.com/ClickHouse/ClickHouse/pull/108659) ([Groene AI](https://github.com/groeneai)).
* Запрос, читающий из S3 или записывающий в S3, который отменяется (например, через `KILL QUERY`) во время выполнения s3 request, теперь помечается как отменённый, а не как сетевая/S3 ошибка, вводящая в заблуждение. В частности, отменённые backup или restore в S3 теперь показывают `BACKUP_CANCELLED`/`RESTORE_CANCELLED` в `system.backups`. [#108673](https://github.com/ClickHouse/ClickHouse/pull/108673) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлена ошибка запуска, из-за которой database `DataLakeCatalog`, созданная в старой версии (25.12 или ранее) с некорректным `auth_header`, не могла быть attached после обновления до 26.2 или новее, что не позволяло запустить server. Теперь `auth_header` проверяется только при `CREATE`, а при `ATTACH` каталог создаётся лениво при первом использовании, а не во время запуска, поэтому одна неверно настроенная или недоступная база данных каталога больше не блокирует запуск server. [#108674](https://github.com/ClickHouse/ClickHouse/pull/108674) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error (`Sort order of blocks violated`) во время слияния, а также некорректные reads, когда не-nullable элемент `LowCardinality` столбца `Nullable(Tuple(...))` используется как подстолбец (например, как ключ сортировки). [#108679](https://github.com/ClickHouse/ClickHouse/pull/108679) ([Groene AI](https://github.com/groeneai)).
* Исправлен возможный crash (use-after-free), когда `SYSTEM FLUSH DISTRIBUTED` выполняется одновременно с `DROP TABLE` для той же `Distributed` table. [#108684](https://github.com/ClickHouse/ClickHouse/pull/108684) ([Groene AI](https://github.com/groeneai)).
* Исправлен crash при декодировании Base64-ключа аккаунта Azure, достижимый через `azureBlobStorage` (и связанные Azure table functions и хранилища), когда key не является корректным Base64: байт `>= 0x80` вызывал чтение за пределами границ, а любой некорректный байт приводил к undefined behaviour. Некорректные ключи теперь корректно отклоняются. [#108716](https://github.com/ClickHouse/ClickHouse/pull/108716) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NUMBER_OF_COLUMNS_DOESNT_MATCH`, возникающая, когда subquery по `Distributed` table читает два или более столбца `ALIAS`, разворачивающихся в одно и то же expression (например, `a1 String ALIAS toString(x), a2 String ALIAS toString(x)`), и результаты этого subquery передаются во внешний запрос, например `SELECT count() FROM (SELECT a1, a2 FROM dist GROUP BY a1, a2)`. [#108725](https://github.com/ClickHouse/ClickHouse/pull/108725) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `CREATE OR REPLACE MATERIALIZED VIEW ... POPULATE`, при котором новая materialized view оставалась не подписанной на свою исходную таблицу, из-за чего молча отбрасывалась каждая строка, вставленная после replace. [#108728](https://github.com/ClickHouse/ClickHouse/pull/108728) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение (`Cannot find sharding key column`, а в debug- и sanitizer-сборках — аварийное завершение server), возникавшее, когда ключ сегментирования `Distributed` table представлял собой expression, которое analyzer сворачивал в константу, например `if(1, toInt32(id), toInt32(id) + 1)`, при `optimize_skip_unused_shards = 1`. [#108737](https://github.com/ClickHouse/ClickHouse/pull/108737) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error (`Bad cast from type DB::ColumnNullable to DB::ColumnString`) и возможные неверные результаты при использовании `group_by_use_nulls` с константным ключом группировки `LowCardinality` в `GROUPING SETS`/`ROLLUP`/`CUBE`. [#108771](https://github.com/ClickHouse/ClickHouse/pull/108771) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема, из-за которой отсечение по партициям и первичному ключу незаметно отключалось, если ключевой столбец `LowCardinality(FixedString)` (или `LowCardinality(Nullable(FixedString))`) был обёрнут в функцию в ключе, например `PARTITION BY sipHash64(k) % N` с `WHERE k = 'literal'`. В таких запросах сканировались все партиции вместо их отсечения. [#108777](https://github.com/ClickHouse/ClickHouse/pull/108777) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error (аварийное завершение сервера в debug- и sanitizer-сборках), возникавшая, когда `INSERT ... SELECT` через таблицу `Alias` или в таблицу `TimeSeries` отменялся без исключения, например при `timeout_overflow_mode = 'break'`. [#108783](https://github.com/ClickHouse/ClickHouse/pull/108783) ([Groene AI](https://github.com/groeneai)). [#108796](https://github.com/ClickHouse/ClickHouse/pull/108796) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена logical error `Bad cast from type DB::ColumnSparse to DB::ColumnString` (аварийное завершение сервера в debug- и sanitizer-сборках), возникавшая, когда `groupConcat` применяется к `Tuple`, у которого элемент `String` хранится в разреженном виде. [#108790](https://github.com/ClickHouse/ClickHouse/pull/108790) ([Groene AI](https://github.com/groeneai)).
* Исправлен `TYPE_MISMATCH` в `mapFilter`, `mapSort`, `mapReverseSort`, `mapPartialSort` и `mapConcat`, когда значение `Map` содержит вложенный `Map` с `LowCardinality`, например `mapFilter((k, v) -> 1, map('a'::LowCardinality(String), map('x'::LowCardinality(String), 'y')))`. [#108798](https://github.com/ClickHouse/ClickHouse/pull/108798) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда `insert_quorum = 'auto'` не отклонял вставки сразу, если в живых оставалось меньше большинства реплик. Теперь такие вставки сразу завершаются ошибкой `TOO_FEW_LIVE_REPLICAS` вместо записи локальной части и последующего тайм-аута с `UNKNOWN_STATUS_OF_INSERT`. [#108800](https://github.com/ClickHouse/ClickHouse/pull/108800) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Исправлена ошибка, из-за которой строка `WITH TOTALS` в `JOIN` могла содержать значения по умолчанию (например, `0`) вместо константных значений из константного подзапроса на одной из сторон JOIN. Неправильный результат появлялся только при некоторых порядках JOIN или при использовании настройки `query_plan_join_swap_table`. [#108807](https://github.com/ClickHouse/ClickHouse/pull/108807) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена segmentation fault (разыменование нулевого указателя), которая могла возникать, когда завершение работы сервера происходило одновременно с остановкой таблицы `S3Queue`/`AzureQueue`. [#108810](https://github.com/ClickHouse/ClickHouse/pull/108810) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено аварийное завершение при запуске (`Cannot allocate ThreadStack`, `EINVAL`) в glibc-сборках, работающих на CPU с большим размером стека сигналов (например, Intel Sapphire Rapids / Granite Rapids с ядром с поддержкой AMX), где размер альтернативного стека сигналов не округлялся вверх до величины, кратной размеру страницы. [#108813](https://github.com/ClickHouse/ClickHouse/pull/108813) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда distributed queries иногда завершались ошибкой `UNEXPECTED_PACKET_FROM_SERVER` (`expected TablesStatusResponse, got ProfileInfo`), если из пула повторно использовалось connection, которое предыдущий отменённый запрос оставил в рассинхронизированном состоянии. [#108854](https://github.com/ClickHouse/ClickHouse/pull/108854) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена logical error (исключение в release-сборках, аварийное завершение server в debug- и sanitizer-сборках), которая могла возникать при вызове функции с более чем одним аргументом `LowCardinality` для distributed таблицы, например `concatAssumeInjective((SELECT toLowCardinality('p')), s)`, используемом в качестве ключа `GROUP BY` с table function `remote`. Сообщения были такими: `Default functions implementation for LowCardinality is supported only with a single LowCardinality argument` или `Expected the argument ... to have N rows, but it has M`. [#108871](https://github.com/ClickHouse/ClickHouse/pull/108871) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `reinterpret(x, 'Decimal128(scale)')` (а также для целевых типов `Decimal32`/`Decimal64`/`Decimal256`/`DateTime64`): в некоторых случаях создавался результирующий столбец, у которого внутренняя scale совпадала со scale источника, а не с запрошенной scale целевого типа, если источник и цель имели один и тот же физический тип. Значения были корректны, но объект столбца был структурно несовместим со своим объявленным типом. [#108878](https://github.com/ClickHouse/ClickHouse/pull/108878) ([Groene AI](https://github.com/groeneai)).
* Исправлена `LOGICAL_ERROR` (`New empty part is about to materialize but the directory already exist`), которая могла приводить к аварийному завершению server в debug- и sanitizer-сборках, когда операция `DROP`/`DETACH`/`MOVE`/`REPLACE PARTITION` над таблицей `MergeTree` выполнялась после того, как предыдущая аналогичная операция была прервана (например, из-за отката transaction или сбоя) и оставила после себя устаревший каталог `tmp_empty_<part>`. Теперь такой устаревший каталог освобождается и используется повторно вместо завершения с ошибкой. [#108879](https://github.com/ClickHouse/ClickHouse/pull/108879) ([Groene AI](https://github.com/groeneai)).
* Исправлено, что ClickHouse Keeper возвращал некорректное значение `dataLength = 0` в `Stat` ответов `Create2`, а клиент ClickHouse ZooKeeper не десериализовал `Stat` из ответов `Create2`. [#108909](https://github.com/ClickHouse/ClickHouse/pull/108909) ([unintended](https://github.com/unintended)).
* Исправлено поведение `clickhouse-local`, который отклонял пустое значение параметра, записанное вплотную к `=` (например, `--format_csv_null_representation=''`); теперь он ведет себя так же, как `--format_csv_null_representation ""` и `SET format_csv_null_representation = ''`. [#108910](https://github.com/ClickHouse/ClickHouse/pull/108910) ([Vismay](https://github.com/vismaytiwari)).
* Исправлена `LOGICAL_ERROR` (`Inconsistent AST formatting`), из-за которой server аварийно завершался в debug- и sanitizer-сборках при форматировании data type `Tuple`, в котором смешаны именованные и неименованные элементы (например, `Tuple(a UInt8, UInt16)`). [#108915](https://github.com/ClickHouse/ClickHouse/pull/108915) ([Groene AI](https://github.com/groeneai)).
* Исправлен segmentation fault при слиянии состояний агрегатной функции `uniqExact` с `GROUPING SETS`, `ROLLUP` или `CUBE` и `max_threads > 1`. [#108928](https://github.com/ClickHouse/ClickHouse/pull/108928) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлены возможные неправильные результаты или выход за границы при чтении, когда `INSERT` откатывается после ошибки в середине пакета (например, в таблицах `Buffer`, при асинхронных вставках или в движках `Kafka`/`RabbitMQ`/`FileLog`), пока действует отложенная репликация столбцов (`enable_lazy_columns_replication`). [#108935](https://github.com/ClickHouse/ClickHouse/pull/108935) ([Groene AI](https://github.com/groeneai)).
* Теперь `join_any_take_last_row` учитывается во всех поддерживаемых путях JOIN на основе хеширования, включая JOIN с автоматическим spilling to disk. [#108936](https://github.com/ClickHouse/ClickHouse/pull/108936) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлен bug в analyzer, из-за которого `FINAL` для одной таблицы в `JOIN` (например, `FROM t1 FINAL JOIN t2`) ошибочно применялся и к другим соединяемым таблицам, из-за чего такие запросы могли выполняться медленнее. [#108979](https://github.com/ClickHouse/ClickHouse/pull/108979) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлен `LOGICAL_ERROR` ("Cannot find `__grouping_set` column in header of MergingAggregatedTransform with grouping sets" или "Chunk info was not set for chunk in MergingAggregatedTransform"), который мог возникать при отключенном analyzer в `UNION ALL`/`INTERSECT`/`EXCEPT`, где в одной ветке используется `GROUP BY GROUPING SETS` с параллельными репликами, а в другой — `FINAL`. [#109003](https://github.com/ClickHouse/ClickHouse/pull/109003) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` в автоматическом планировщике параллельных реплик, который мог возникать, когда `automatic_parallel_replicas_mode` включен, а `parallel_replicas_min_number_of_rows_per_replica` больше 0. [#109011](https://github.com/ClickHouse/ClickHouse/pull/109011) ([Groene AI](https://github.com/groeneai)).
* Исправлено чрезмерное выделение памяти при schema inference формата `MsgPack`: поврежденный входной поток, в котором заголовок array/map/string/binary указывает огромное число элементов, больше не приводит к единовременному многогигабайтному выделению памяти и отклоняется как некорректный ввод. Это устраняет состояние out-of-memory в release-сборках (и аварийное завершение `allocation-size-too-big` при использовании sanitizer). [#109019](https://github.com/ClickHouse/ClickHouse/pull/109019) ([Groene AI](https://github.com/groeneai)).
* Исправлено игнорирование `use_client_time_zone` для строковых литералов `DateTime`/`DateTime64`, интерпретируемых на сервере (асинхронный `INSERT`, литералы `SELECT`). Теперь клиент передает свой локальный часовой пояс как `session_timezone`, когда включен `use_client_time_zone`, поэтому разбор на стороне сервера соответствует пути синхронного `INSERT`. [#109051](https://github.com/ClickHouse/ClickHouse/pull/109051) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK`, возникавшая, когда `query_plan_optimize_lazy_final` включен одновременно с фильтром `WHERE`, частично перенесенным в `PREWHERE` (через `optimize_move_to_prewhere_if_final`). [#109073](https://github.com/ClickHouse/ClickHouse/pull/109073) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка при использовании квалифицированной звездочки, такой как `b.*`, в запросе, где `b` — это алиас таблицы (или подзапроса/CTE), совпадающий по имени с несоставным столбцом другой таблицы. Такие запросы больше не завершаются ошибкой и корректно выбирают все столбцы `b`. [#109078](https://github.com/ClickHouse/ClickHouse/pull/109078) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена logical error `Block structure mismatch in JoinStep` (аварийное завершение сервера в debug- и sanitizer-сборках), возникавшая, когда коррелированный подзапрос преобразуется в JOIN, а исходное отношение содержит одно и то же имя столбца более одного раза, например `WITH t AS (SELECT number, * FROM numbers(3)) SELECT *, (SELECT t.number WHERE t.number >= 0) FROM t` с `correlated_subqueries_default_join_kind = 'right'`. [#109114](https://github.com/ClickHouse/ClickHouse/pull/109114) ([Groene AI](https://github.com/groeneai)).
* Исправлено зависание, при котором запрос, читающий через файловый кэш, мог продолжать ждать незавершенную загрузку после отмены с помощью `KILL QUERY`, а удаление refreshable materialized view или выполнение для нее `SYSTEM STOP VIEW`, если ее обновление зависло в таком ожидании, приводило к блокировке. [#109116](https://github.com/ClickHouse/ClickHouse/pull/109116) ([Murphy](https://github.com/murphy-4o)).
* Исправлено игнорирование настройки `parallel_view_processing` при вставке в таблицу с materialized view — начиная с 25.10, view всегда выполнялись параллельно независимо от этой настройки. [#109170](https://github.com/ClickHouse/ClickHouse/pull/109170) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена несогласованность в парсере: список столбцов `INSERT` принимал квалифицированный сопоставитель столбцов, записанный как `t.* LIKE '<pattern>'` / `t.* ILIKE '<pattern>'`, но отклонял его каноническую форму `t.COLUMNS('<regexp>')`, из-за чего нарушался round-trip формата запроса (и происходило аварийное завершение сервера в debug- и sanitizer-сборках). [#109176](https://github.com/ClickHouse/ClickHouse/pull/109176) ([Groene AI](https://github.com/groeneai)).
* Исправлены немонотонные приращения `ProfileEvents`: счётчики `NetworkReceiveBytes` и `AIOWriteBytes` могли увеличиваться на отрицательную величину (с переполнением до огромного значения) при тайм-ауте сокета или сбое AIO, а для `MemoryOvercommitWaitTimeMicroseconds` использовались немонотонные часы. [#109180](https://github.com/ClickHouse/ClickHouse/pull/109180) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен вывод схемы для форматов `Arrow`, `ArrowStream`, `Avro`, а также устаревших средств чтения `ORC` и `Parquet`, которые возвращали `Nullable(Tuple)` для nullable-столбцов структур, хотя тип `Nullable(Tuple)` недопустим (`allow_experimental_nullable_tuple_type` отключён). `DESCRIBE` возвращал тип, который `CREATE TABLE` не принимает, поэтому создание таблицы или вставка данных с использованием выведенной схемы завершались ошибкой `Nullable Tuple type is not allowed`. [#109185](https://github.com/ClickHouse/ClickHouse/pull/109185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен неверный результат коррелированных `EXISTS` и скалярных подзапросов, когда корреляция присутствует только в проекции подзапроса вместе с некоррелированным предложением `WHERE` (в этом случае подзапрос мог вычисляться в false / `NULL` для каждой строки). Исправляет [#105760](https://github.com/ClickHouse/ClickHouse/issues/105760). [#109186](https://github.com/ClickHouse/ClickHouse/pull/109186) ([Dmitry Novik](https://github.com/novikd)).
* Исправлено поведение `CREATE USER ... HOST LIKE 'a', 'b'` (и эквивалентного `ALTER USER`), при котором молча сохранялся только первый шаблон. Теперь все указанные шаблоны `HOST LIKE` сохраняются в списке разрешённых хостов пользователя. [#109187](https://github.com/ClickHouse/ClickHouse/pull/109187) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором текстовый индекс, определённый для `mapValues(map)` или `mapKeys(map)`, молча не использовался при запросах к таблице через таблицу с движком `Distributed` и analyzer. Индекс использовался для локальной таблицы и через табличные функции `cluster`/`remote`, но при запросе через таблицу с движком `Distributed` пропускался (и приводил к ошибке `INDEX_NOT_USED` при `force_data_skipping_indices`). [#109188](https://github.com/ClickHouse/ClickHouse/pull/109188) ([Groene AI](https://github.com/groeneai)).
* Исправлена ложная ошибка `LOGICAL_ERROR` (`There was an error on <host>: Cannot obtain error message (probably it's a bug)`), которая могла аварийно завершить сервер в debug- и sanitizer-сборках при выполнении DDL-запроса для базы данных `Replicated`, если её узел статуса `finished` для конкретного хоста в Keeper уже был очищен. [#109192](https://github.com/ClickHouse/ClickHouse/pull/109192) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором коэффициенты `SAMPLE` с exponent, величина которого переполняет `Int32` (например, `SAMPLE 1e-3000000000`), молча обрабатывались как `SAMPLE 1`. [#109197](https://github.com/ClickHouse/ClickHouse/pull/109197) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена проверка доступа для `SYSTEM PREWARM PRIMARY INDEX CACHE ... ON CLUSTER`, которая ошибочно требовала привилегию `SYSTEM PREWARM MARK CACHE` вместо `SYSTEM PREWARM PRIMARY INDEX CACHE`. [#109198](https://github.com/ClickHouse/ClickHouse/pull/109198) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено падение запросов `ALTER` для таблиц `MergeTree`, созданных с пользовательской настройкой `disk` (`SETTINGS disk = disk(...)`). Исправляет [#63019](https://github.com/ClickHouse/ClickHouse/issues/63019). [#109199](https://github.com/ClickHouse/ClickHouse/pull/109199) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлен сбой сервера при чтении состояний агрегатных функций `cramersV`, `cramersVBiasCorrected`, `contingency` или `theilsU`, если они объединяются из оконного контекста (`OVER ()`) и обычной агрегации через цепочки операций над множествами (`EXCEPT`, `INTERSECT`) или вложенные `UNION ALL`, например с помощью комбинатора `-Merge`. [#109200](https://github.com/ClickHouse/ClickHouse/pull/109200) ([Groene AI](https://github.com/groeneai)).
* Исправлен неверный результат для `ANY JOIN` с константным условием `ON` (например, `t1 ANY INNER JOIN t2 ON 1`): запрос возвращал полное декартово произведение вместо результата `ANY JOIN`. [#109207](https://github.com/ClickHouse/ClickHouse/pull/109207) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлен сбой сервера при асинхронной вставке с дедупликацией, когда `optimize_on_insert` делает вставляемый блок пустым (например, если строки суммируются в ноль в `SummingMergeTree`). [#109229](https://github.com/ClickHouse/ClickHouse/pull/109229) ([Den Kalantaevskii](https://github.com/Diskein)).
* Исправлены `SYSTEM DROP REPLICA` и `SYSTEM DROP DATABASE REPLICA ... FROM ZKPATH`: теперь они отклоняют пустые пути ZooKeeper или пути, состоящие только из корня, на этапе разбора с `BAD_ARGUMENTS`, направляют вспомогательные пути Keeper в именованный Keeper и канонизируют пути Keeper, чтобы локальные проверки самозащиты не могли ошибочно выбрать не ту реплику или обойти защиту целевой реплики. [#109230](https://github.com/ClickHouse/ClickHouse/pull/109230) ([Groene AI](https://github.com/groeneai)).
* Исправлен приоритет настроек S3: теперь блок конечной точки `<s3>` с областью действия URL имеет приоритет над верхнеуровневыми значениями `<s3>` по умолчанию. [#109251](https://github.com/ClickHouse/ClickHouse/pull/109251) ([Bharat Nallan](https://github.com/bharatnc)).
* Исправлена ошибка, из-за которой значения `DEFAULT` для столбца не применялись при `INSERT INTO TABLE FUNCTION` (например, `remote` или `file`) со встроенными данными `VALUES`, когда сервер сам разбирает встроенные данные (`send_table_structure_on_insert_with_inline_data = 0`). Явный `NULL`, вставленный в столбец без `Nullable` с `DEFAULT`, превращался в `0` вместо объявленного значения по умолчанию. Теперь это работает так же, как обычный `INSERT` в таблицу и HTTP-протокол. [#109258](https://github.com/ClickHouse/ClickHouse/pull/109258) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `CREATE TABLE ... AS SELECT` из `s3Cluster` (и других кластерных табличных функций, таких как `fileCluster`/`urlCluster`), которая приводила к сбою с `NOT_FOUND_COLUMN_IN_BLOCK` внутри базы данных `Replicated`. [#109266](https://github.com/ClickHouse/ClickHouse/pull/109266) ([Groene AI](https://github.com/groeneai)).
* Исправлено различие в результатах `SHOW TABLES` и `SELECT ... FROM system.tables` для баз данных каталогов озёр данных: таблицы, которые ClickHouse не может читать, теперь последовательно скрываются в обоих случаях. [#109273](https://github.com/ClickHouse/ClickHouse/pull/109273) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлена ошибка, из-за которой слияние таблицы `MergeTree` с проекциями при включённой настройке `enable_block_number_column` или `enable_block_offset_column` приводило к созданию частей проекции, содержащих лишний столбец `_block_number`/`_block_offset`. После этого объединённая часть проекции переставала соответствовать определению проекции и частям проекции, созданным при вставке, поэтому `CHECK TABLE` и `OPTIMIZE ... DRY RUN` сообщали о ней как о повреждённой (`CORRUPTED_DATA`). [#109284](https://github.com/ClickHouse/ClickHouse/pull/109284) ([Groene AI](https://github.com/groeneai)).
* Разрешено читать Avro `array` из записей `{key, value}` с двумя полями в столбец ClickHouse `Map`. Именно такое кодирование Iceberg и Spark создают для `MAP<K, V>` с ключом нестрокового типа (собственные map в Avro поддерживают только строковые ключи). Ранее такой файл можно было читать как `Array(Tuple(key, value))`, но не как `Map(K, V)`, что приводило к ошибке `Type Map(...) is not compatible with Avro array`. [#109289](https://github.com/ClickHouse/ClickHouse/pull/109289) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера при `CREATE HYPOTHETICAL INDEX ... TYPE set` (и `ngrambf_v1`/`tokenbf_v1`), если обязательный аргумент индекса опущен. Теперь такие операторы отклоняются с понятной ошибкой. [#109294](https://github.com/ClickHouse/ClickHouse/pull/109294) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`Current component is empty`), который мог возникать при операциях мутации, таких как `KILL MUTATION`, над таблицей `MergeTree`, хранящей свои метаданные в Keeper, если включена настройка сервера `enforce_keeper_component_tracking`. [#109297](https://github.com/ClickHouse/ClickHouse/pull/109297) ([Groene AI](https://github.com/groeneai)).
* Исправлено чтение временных меток `ORC` за пределами примерно 2262 года в столбец `DateTime64` с scale меньше 9. Встроенный reader `ORC` ранее преобразовывал каждую временную метку через фиксированный промежуточный `DateTime64(9)`, что приводило к overflow `Int64` на наносекундном масштабе и отклонению таких значений с `VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE`, даже если запрошенный scale `DateTime64` (например, `DateTime64(6)`, как в Iceberg) позволяет представить это значение. Теперь временные метки читаются сразу в запрошенном scale, а `date_time_overflow_behavior` учитывается, если значение не помещается даже в целевой scale. [#109302](https://github.com/ClickHouse/ClickHouse/pull/109302) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-local`, работающий как сервер (после `SYSTEM START LISTEN HTTP`), теперь обслуживает HTTP-соединения, используя `TabSeparated` как output format по умолчанию, как и `clickhouse-server`, вместо интерактивного значения по умолчанию `PrettyCompact`. Это исправляет подключение к `clickhouse-local` по HTTP через драйверы, такие как `clickhouse-connect`. Интерактивная сессия в terminal по-прежнему отображает результаты в формате `PrettyCompact`. [#109362](https://github.com/ClickHouse/ClickHouse/pull/109362) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен временный сбой `Code: 499 ... InvalidPart` (`S3_ERROR`) при S3 multipart-загрузках. MinIO может кратковременно сообщать об отсутствии только что загруженной части при `CompleteMultipartUpload`; теперь для этой ошибки выполняются повторные попытки, как и для уже обрабатываемой `NoSuchKey`, с ограничением `s3_max_unexpected_write_error_retries`. [#109364](https://github.com/ClickHouse/ClickHouse/pull/109364) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `UNKNOWN_IDENTIFIER` при `ALTER TABLE ... DROP COLUMN`, когда у другого столбца есть выражение `DEFAULT` или `MATERIALIZED`, которое определяет и использует встроенный alias. [#109374](https://github.com/ClickHouse/ClickHouse/pull/109374) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена data race (и вызванный ею редкий crash) при параллельном merge состояний агрегатной функции `uniqExact` с двухуровневыми sets, что могло происходить при `GROUPING SETS`, `ROLLUP` и `CUBE`. [#109389](https://github.com/ClickHouse/ClickHouse/pull/109389) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка (`NOT_FOUND_COLUMN_IN_BLOCK` или `std::bad_function_call` в старых версиях) при выполнении `CREATE TABLE ... ON CLUSTER ... AS SELECT`, читающего `Distributed`-таблицу в кластере с двумя или более шардами. [#109407](https://github.com/ClickHouse/ClickHouse/pull/109407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены merge для таблиц с `TTL ... GROUP BY` (rollup): части, которые уже были полностью агрегированы, могли снова и снова бесконечно планироваться на merge, а таблицы со столбцами `MATERIALIZED` или с включенными persistent virtual columns обрабатывались некорректно — теперь такие столбцы агрегируются с помощью `any`. Закрывает [#105647](https://github.com/ClickHouse/ClickHouse/issues/105647). [#109410](https://github.com/ClickHouse/ClickHouse/pull/109410) ([Mikhail Artemenko](https://github.com/Michicosun)). [#109532](https://github.com/ClickHouse/ClickHouse/pull/109532) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлено поведение `IN` с обычным столбцом типа Array в правом аргументе: ранее выражение могло молча возвращать неверный результат (всегда `false`) или генерировать исключение; теперь `x IN arr` ведёт себя как `has(arr, x)`. [#109416](https://github.com/ClickHouse/ClickHouse/pull/109416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены ошибки `UNKNOWN_IDENTIFIER` в операциях `ALTER TABLE` (`RENAME`/`ADD`/`MODIFY COLUMN`, а также `MATERIALIZE INDEX` на таблице с недавно вставленными частями) для таблиц `MergeTree` с неявным индексом min-max по persistent virtual columns `_block_number`/`_block_offset` (включается через `add_minmax_index_for_block_number_column`/`add_minmax_index_for_block_offset_column`). [#109428](https://github.com/ClickHouse/ClickHouse/pull/109428) ([Groene AI](https://github.com/groeneai)). [#110236](https://github.com/ClickHouse/ClickHouse/pull/110236) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` в `arrayFold` для неконстантного аргумента `Array(LowCardinality(T))` (например, `arrayFold((acc, x) -> acc + x, materialize([1, 2, 3]::Array(LowCardinality(Int64))), toInt64(0))`), который завершался ошибкой `Arguments of 'plus' have incorrect data types` (с аварийным завершением сервера в debug- и sanitizer-сборках). [#109462](https://github.com/ClickHouse/ClickHouse/pull/109462) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `CHECK TABLE` для таблицы `ReplicatedMergeTree`: корректная часть больше не помечается как повреждённая, если во время проверки возникает временная retryable ошибка ZooKeeper (например, потеря connection); теперь такие ошибки отображаются как retryable ошибка запроса. [#109465](https://github.com/ClickHouse/ClickHouse/pull/109465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены segfault в `groupArrayLastMerge` и aggregate function `largestTriangleThreeBuckets`: deserialization состояния агрегатной функции теперь проверяется, поэтому повреждённое состояние больше не приводит к выходу за границы памяти. [#109485](https://github.com/ClickHouse/ClickHouse/pull/109485) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). [#109492](https://github.com/ClickHouse/ClickHouse/pull/109492) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлена ситуация, когда глобальное ограничение `max_rows_in_join` / `max_bytes_in_join` не применялось к join algorithm `parallel_hash`, из-за чего запрос с `join_overflow_mode = 'throw'` мог молча завершиться успешно вместо генерации `SET_SIZE_LIMIT_EXCEEDED`. [#109488](https://github.com/ClickHouse/ClickHouse/pull/109488) ([Hechem Selmi](https://github.com/m-selmi)).
* Исправлено чтение таблиц Paimon, разбитых на партиции по столбцу `BIGINT`, значение которого не помещается в `Int32`. Такие значения партиции усекались (например, `9223372036854775807` становилось `-1`), что приводило к неверному пути партиции и завершалось ошибкой файловой системы. [#109510](https://github.com/ClickHouse/ClickHouse/pull/109510) ([Groene AI](https://github.com/groeneai)).
* Исправлен crash при чтении таблиц Iceberg с файлами equality delete. Если столбец в файле equality delete допускал NULL, а в схеме таблицы не допускал NULL (или наоборот), значения, прочитанные из файла delete, вставлялись в столбец другого типа через непроверенное приведение (ошибочное смешение типов столбцов), что повреждало столбец и приводило к аварийному завершению сервера. [#109551](https://github.com/ClickHouse/ClickHouse/pull/109551) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено то, что `connect_timeout`, а также тайм-ауты чтения и записи для MySQL не вступали в силу: попытка connection к не отвечающему серверу MySQL могла зависнуть более чем на две минуты даже при `connect_timeout = 1`, потому что периодические сигналы выборочного профилировщика запросов постоянно сбрасывали внутренний дедлайн poll в клиенте MySQL. [#109592](https://github.com/ClickHouse/ClickHouse/pull/109592) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен `LOGICAL_ERROR` (`creation_csn is not set while removal_csn is set to 1`), который мог возникать, когда нетранзакционный `TRUNCATE` выполнялся одновременно с незакоммиченной транзакцией, вставившей данные в ту же таблицу. Теперь такой `TRUNCATE` больше не удаляет части, созданные ещё не закоммиченными транзакциями. [#109598](https://github.com/ClickHouse/ClickHouse/pull/109598) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлены ошибки `TYPE_MISMATCH` при чтении столбцов `struct` в `Parquet`, если их физическая nullability отличается от запрошенного типа ClickHouse: не-nullable группа `Parquet` теперь может читаться как `Nullable(Tuple(...))`, а нативный reader `Parquet` теперь может читать физически nullable `struct` (группу `OPTIONAL` в `Parquet`) как `Nullable(Tuple(...))`. [#109615](https://github.com/ClickHouse/ClickHouse/pull/109615) ([Groene AI](https://github.com/groeneai)). [#109898](https://github.com/ClickHouse/ClickHouse/pull/109898) ([Groene AI](https://github.com/groeneai)).
* Исправлена незаметная потеря данных, возникавшая, когда после `INSERT ... VALUES` в потоке из нескольких запросов шёл завершающий SQL-комментарий (например, `VALUES (1) -- comment`) при использовании server-side inline parsing для вставок (`send_table_structure_on_insert_with_inline_data = 0`). Этот комментарий разбирался как данные строки после завершающего `;`, из-за чего последующие запросы в потоке молча пропускались. [#109643](https://github.com/ClickHouse/ClickHouse/pull/109643) ([Groene AI](https://github.com/groeneai)).
* Исправлен segfault, возникавший, если запрос поступал в короткий промежуток во время остановки server после ошибки при запуске. [#109675](https://github.com/ClickHouse/ClickHouse/pull/109675) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлены устаревшие skip-индексы (`text`, `bloom_filter` и т. д.) и проекции после материализации легковесных обновлений с помощью `ALTER TABLE ... APPLY PATCHES`. Ранее файлы индексов и проекций, зависящие от столбца, обновлённого через patch, оставались без изменений, поэтому запросы, использующие их, могли возвращать неверные результаты (например, `hasToken` не находил обновлённую строку, а проекция возвращала устаревшие агрегаты после удаления израсходованной patch part). [#109709](https://github.com/ClickHouse/ClickHouse/pull/109709) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема, из-за которой `system.tables` молча пропускала базы данных для пользователей с правами на уровне отдельных баз данных, когда запрос читал только столбцы `name`/`database`. Добавленный в 26.2. [#109723](https://github.com/ClickHouse/ClickHouse/pull/109723) ([Samay Sharma](https://github.com/samay-sharma)).
* Исправлен `LOGICAL_ERROR` при записи столбца `LowCardinality(Time)` в формат `Arrow` с `output_format_arrow_low_cardinality_as_dictionary = 1`. [#109730](https://github.com/ClickHouse/ClickHouse/pull/109730) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема, из-за которой `ObjectStorageQueue`/`AzureQueue` (и table function `azureBlobStorage`) молча пропускали object, когда Объектное хранилище возвращало пустую страницу списка вместе с токеном продолжения. Azure Blob Storage ведёт себя именно так (например, когда список пересекает внутреннюю границу партиции), а асинхронный итератор списка воспринимал пустую страницу как конец списка и отбрасывал токен. Теперь он следует токену продолжения. [#109761](https://github.com/ClickHouse/ClickHouse/pull/109761) ([Gal Ben Moshe](https://github.com/GalBenMoshe)).
* Исправлена ошибка, из-за которой partition pruning не возвращал ни одной строки для таблица Iceberg, партиционированных по столбцу временной метки (`DateTime64`). [#109764](https://github.com/ClickHouse/ClickHouse/pull/109764) ([Den Kalantaevskii](https://github.com/Diskein)).
* Исправлено исключение `ILLEGAL_COLUMN` в функции `conv` для аргументов `FixedString`; теперь они корректно приводятся к `String`. Закрывает [#109670](https://github.com/ClickHouse/ClickHouse/issues/109670). [#109771](https://github.com/ClickHouse/ClickHouse/pull/109771) ([hp](https://github.com/hp77-creator)).
* Функция `getClientHTTPHeader` теперь обрабатывает имена заголовков как регистронезависимые в соответствии с [RFC 9110](https://www.rfc-editor.org/info/rfc9110/#section-5.1); в частности, заголовок `authorization` теперь отфильтровывается независимо от регистра. Закрывает [#103957](https://github.com/ClickHouse/ClickHouse/issues/103957). [#109791](https://github.com/ClickHouse/ClickHouse/pull/109791) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Исправлена проблема, из-за которой `max_execution_time` (с `timeout_overflow_mode = 'throw'`) иногда вообще не отменял запрос: если внутренний механизм отслеживания тайм-аута уже ждал запрос с более поздним deadline, то запрос с более ранним deadline, зарегистрированный позже, мог быть полностью пропущен и продолжать выполняться намного дольше допустимого времени. [#109792](https://github.com/ClickHouse/ClickHouse/pull/109792) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено имя файла для сжатых gzip файлов метаданных Iceberg. ClickHouse записывал их как `v{N}.gzip.metadata.json` (токен HTTP `Content-Encoding`), тогда как спецификация Iceberg ожидает расширение `gz`: `v{N}.gz.metadata.json`. В результате Spark и другие читатели Hadoop catalog не могли найти метаданные, записанные ClickHouse. Теперь ClickHouse записывает `v{N}.gz.metadata.json` и по-прежнему читает устаревшее имя `gzip` для обратной совместимости. [#109812](https://github.com/ClickHouse/ClickHouse/pull/109812) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_IMPLEMENTED` ("Method getDataAt is not supported for Nullable(String)"), которая могла возникать при JOIN с `enable_join_runtime_filters = 1` (включено по умолчанию начиная с 26.2), когда ключ JOIN на build side имел тип `LowCardinality(Nullable(...))` со значениями `NULL`, а runtime filter переключался на свой bloom filter. [#109824](https://github.com/ClickHouse/ClickHouse/pull/109824) ([Groene AI](https://github.com/groeneai)).
* Внешние движки баз данных (например, `PostgreSQL`) больше не выполняют pushdown сравнений диапазона (`>=`, `>`, `<=`, `<`) для столбцов `UUID`. ClickHouse и внешние СУБД по-разному упорядочивают UUID, поэтому такой pushdown незаметно исключал строки из результата; теперь такие предикаты вычисляются в ClickHouse. [#109833](https://github.com/ClickHouse/ClickHouse/pull/109833) ([Vismay](https://github.com/vismaytiwari)).
* Исправлен сбой сервера, возникавший, когда lambda-выражение передавалось туда, где higher-order function ожидает конкретное значение (например, аккумулятор `arrayFold`, как в `arrayFold(lambda, arr, another_lambda)`). Теперь такие запросы отклоняются с `ILLEGAL_TYPE_OF_ARGUMENT` вместо аварийного завершения при `enable_analyzer = 0`. [#109840](https://github.com/ClickHouse/ClickHouse/pull/109840) ([Groene AI](https://github.com/groeneai)).
* Исправлены table function `icebergLocal` и движок `IcebergLocal`, которые объявляли `azure` вместо `local` в качестве типа объектного хранилища, из-за чего они не проходили проверку типа диска (`Disk type doesn't match`) при использовании с локальным диском через `SETTINGS disk = '...'`. [#109872](https://github.com/ClickHouse/ClickHouse/pull/109872) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлено чтение таблиц Iceberg, партиционированных по одному и тому же исходному столбцу более одного раза (например, `PARTITIONED BY (hours(ts), ts)`). Ранее такие таблицы завершались ошибкой `Cannot add column ...: column with this name already exists (ILLEGAL_COLUMN)`. [#109895](https://github.com/ClickHouse/ClickHouse/pull/109895) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты запроса, вызванные тем, что индекс первичного ключа неправильно отсеивал гранулы для таблиц с обратным (`DESC`) ключевым столбцом, когда части не имеют финальной отметки (неадаптивная granularity, `index_granularity_bytes = 0`). [#109901](https://github.com/ClickHouse/ClickHouse/pull/109901) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен случай, когда `generateRandomStructure` иногда создавал недопустимую строку структуры с двумя слитно записанными типами данных (например, `Decimal32(7)IPv4`), если вложенность типов превышала внутренний предел глубины, из-за чего результат невозможно было распарсить. [#109928](https://github.com/ClickHouse/ClickHouse/pull/109928) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_IMPLEMENTED` (`Method getDataAt is not supported for Nullable(String) in case if value is NULL`), возникавшая, когда `text`-индекс строился по `Array(LowCardinality(Nullable(String)))` (включая поля `Nested`, хранящиеся в таком виде), а индексируемый массив содержал элемент `NULL`. Теперь элементы массива со значением `NULL` пропускаются при построении индекса, что соответствует поведению `Array(Nullable(String))`. [#110055](https://github.com/ClickHouse/ClickHouse/pull/110055) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты, когда индекс пропуска данных `minmax` строится по столбцу `LowCardinality(Nullable(...))`: предикаты `WHERE`/`PREWHERE`/`HAVING ... IS NULL`, проталкиваемые в хранилище, ранее отбрасывали все гранулы и возвращали 0 строк, даже если столбец содержал значения `NULL`. [#110061](https://github.com/ClickHouse/ClickHouse/pull/110061) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `distinct_overflow_mode = 'break'`: теперь `DISTINCT` возвращает частичный результат, накопленный до достижения лимита, и прекращает чтение источника, как и задокументировано. Ранее фрагмент, на котором превышался `max_rows_in_distinct` / `max_bytes_in_distinct`, отбрасывался (что приводило к усечённым или пустым результатам), а запрос продолжал чтение и вставку в хеш-таблицу до конца входных данных, что могло закончиться `MEMORY_LIMIT_EXCEEDED`. [#110075](https://github.com/ClickHouse/ClickHouse/pull/110075) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Исправлена логическая ошибка `ChunkInfoRowNumbers does not exist` при `OPTIMIZE TABLE` Iceberg-таблицы, содержащей файл данных в формате, отличном от Parquet (например, `ORC`), который новее всех файлов позиционного удаления. [#110107](https://github.com/ClickHouse/ClickHouse/pull/110107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены `max_bytes_in_distinct` и `max_bytes_in_set`: строковые ключи хранятся в arena, которая не учитывалась при проверке лимитов, поэтому `DISTINCT` / `IN` по строковым ключам могли занимать памяти больше байтового лимита на полный размер полезной нагрузки ключей (без ограничения по длине ключа). Теперь лимиты учитывают arena, в соответствии с документацией; запросы со строковыми ключами, близкие к байтовому лимиту, теперь могут достигать его раньше (и это корректно). [#110120](https://github.com/ClickHouse/ClickHouse/pull/110120) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Исправлена ошибка `LOGICAL_ERROR` (`Bad cast from type ColumnLowCardinality to ColumnString`), когда `identity` (или результат scalar subquery) оборачивает значение, содержащее вложенный `LowCardinality`, а запрос использует `WITH TOTALS`/`WITH ROLLUP`. [#110138](https://github.com/ClickHouse/ClickHouse/pull/110138) ([Groene AI](https://github.com/groeneai)).
* Исправлено чтение файлов `Npy` с внутренними размерностями нулевого размера: теперь число materialized строк и результаты `count` с оптимизацией и без неё совпадают. [#110146](https://github.com/ClickHouse/ClickHouse/pull/110146) ([Yanjun Qiu](https://github.com/qiuyanjun888)).
* Исправлен квадратичный рост времени выполнения (и отсутствие реакции на `max_execution_time`) в aggregation in order при группировке по нескольким ключам, когда sort order является лишь префиксом grouping key. [#110159](https://github.com/ClickHouse/ClickHouse/pull/110159) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка (`Unexpected number of columns in result sample block`), возникавшая, когда фильтр, содержащий correlated subquery (например, `exists((SELECT ...))`), оптимизировался с `convert_query_to_cnf` или `optimize_and_compare_chain`. [#110187](https://github.com/ClickHouse/ClickHouse/pull/110187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение (`UNION mode UNION_DEFAULT must be normalized`), возникавшее, когда мутация `DELETE` или `ALTER UPDATE` использовала операцию над множествами (`UNION`/`UNION ALL`/`UNION DISTINCT`/`EXCEPT`/`INTERSECT`) внутри подзапроса в условии `WHERE` или в присваивании `UPDATE`. [#110196](https://github.com/ClickHouse/ClickHouse/pull/110196) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка `ReadBuffer is canceled. Can't read from it.` (аварийное завершение сервера в debug/sanitizer-сборках), которая могла возникать при чтении zip-архива (например, во время `RESTORE` из zip-резервной копии), если предыдущее чтение из того же архива прерывалось с ошибкой посреди потока. [#110197](https://github.com/ClickHouse/ClickHouse/pull/110197) ([Groene AI](https://github.com/groeneai)).
* Исправлены медленное завершение работы сервера и отсутствие отклика у `KILL MUTATION`, когда мутация с `x IN (subquery)` строила множество подзапроса во время анализа первичного ключа; теперь построение множества отменяется сразу. [#110198](https://github.com/ClickHouse/ClickHouse/pull/110198) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Keeper теперь отклоняет установку настроек coordination `max_requests_batch_size` и `max_requests_append_size` в значение `0` вместо того, чтобы застревать в бесконечном append-entries-цикле в многоузловой конфигурации. [#110200](https://github.com/ClickHouse/ClickHouse/pull/110200) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK` при использовании `GROUP BY ALL` для кортежного выражения вместе с `ORDER BY`. [#110206](https://github.com/ClickHouse/ClickHouse/pull/110206) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK` при `INSERT` в таблицу с ограничением `CHECK`, ссылающимся на подстолбец (например, `x.null` у столбца `Nullable` или `arr.size0` у `Array`). [#110208](https://github.com/ClickHouse/ClickHouse/pull/110208) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено чтение таблиц Iceberg, у которых порядок сортировки по умолчанию ссылается на столбец, требующий кавычек (например, `@timestamp`). Такие таблицы были нечитаемы, потому что синтезированный `ORDER BY` хранилища строился из исходного имени столбца и не разбирался, приводя к `SYNTAX_ERROR`. [#110233](https://github.com/ClickHouse/ClickHouse/pull/110233) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `system.tables` для базы данных `DataLakeCatalog` (Iceberg/Glue), при котором весь запрос аварийно завершался или таблицы молча пропадали, если не удавалось разрешить метаданные одной таблицы. Теперь такая таблица остаётся в списке по имени, со значениями по умолчанию/NULL в столбцах, для которых требуется открытый объект хранилища (`engine`, `total_rows` и т. д.), независимо от `database_datalake_require_metadata_access`. Прямой доступ к повреждённой таблице по-прежнему возвращает ошибку. [#110242](https://github.com/ClickHouse/ClickHouse/pull/110242) ([Groene AI](https://github.com/groeneai)).
* Исправлено возможное аварийное завершение (heap-buffer-overflow), когда столбец состояния агрегатной функции семейства `quantileTDigest` использовался как ключ `GROUP BY` и одновременно сериализовался несколькими потоками. [#110263](https://github.com/ClickHouse/ClickHouse/pull/110263) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка при `INSERT` в таблицу `DataLakeCatalog` Microsoft Fabric / OneLake с `IncorrectEndpointError` (HTTP 400): запись в ADLS Gen2 (DFS) теперь направляется на хост конечной точки `.dfs`, а не на хост `.blob`. Примечание: при использовании `remote_url_allow_hosts` для `INSERT` в список разрешённых должны быть добавлены оба хоста Fabric — `.blob` (чтение) и `.dfs` (запись). [#110290](https://github.com/ClickHouse/ClickHouse/pull/110290) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Исправлено аварийное завершение сервера при разборе некоторых PRQL-запросов (`SET dialect = 'prql'`). Паника внутри компилятора `prqlc` приводила к аварийному завершению процесса вместо того, чтобы возвращаться как ошибка запроса. [#110316](https://github.com/ClickHouse/ClickHouse/pull/110316) ([Groene AI](https://github.com/groeneai)).
* Исправлены случаи, когда запрос мог незаметно возвращать неверные результаты, если часть проекции была записана до изменения набора столбцов проекции (например, после обновления между версиями, которые по-разному материализуют источник столбца `ALIAS`, или после того, как `ALTER TABLE ... MODIFY COLUMN` переназначает столбец `ALIAS`, используемый проекцией), а затем читалась через проекцию или участвовала в слиянии: отсутствующий столбец заполнялся значениями по умолчанию вместо реальных данных. Такие части теперь читаются из базовой таблицы, а при слиянии проекция заново строится из базовых данных. [#110328](https://github.com/ClickHouse/ClickHouse/pull/110328) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено поведение, при котором `ORDER BY ... WITH FILL` не учитывал `max_execution_time` и медленно отменялся при генерации большого диапазона заполнения (особенно с `INTERPOLATE`). [#110332](https://github.com/ClickHouse/ClickHouse/pull/110332) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка (аварийное завершение сервера в debug/sanitizer-сборках), возникавшая при выполнении многокомандного `ALTER`, например `UPDATE ..., DELETE ...`, для Iceberg table. Такие мутации теперь отклоняются с понятной ошибкой `NOT_IMPLEMENTED`. [#110347](https://github.com/ClickHouse/ClickHouse/pull/110347) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка парсера, из-за которой `COMMENT` ошибочно воспринимался как неявный alias, когда запрос `SELECT` заканчивался сразу после простого идентификатора таблицы (например, `... FROM t COMMENT 'x'`), что приводило к вводящей в заблуждение синтаксической ошибке вместо применения комментария к представлению/таблице. [#110372](https://github.com/ClickHouse/ClickHouse/pull/110372) ([Aditya Kumar](https://github.com/adityaksolves)).
* Исправлен сбой сервера (native stack overflow), возникавший при копировании или уничтожении глубоко вложенного литерала `Array`/`Tuple`/`Map`/`Object`, например в запросе с очень глубоко вложенным литералом при увеличенном `max_parser_depth`. [#110393](https://github.com/ClickHouse/ClickHouse/pull/110393) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлены два случая, когда векторный поиск мог возвращать меньше строк, чем ожидалось: значения `vector_search_index_fetch_multiplier` ниже 1.0 могли обрезать вычисленное число извлекаемых строк до нуля и давать пустой результат (такие значения теперь отклоняются), а оптимизация векторного поиска теперь пропускается для запросов `LIMIT ... WITH TIES`, поскольку она ограничивала поиск ровно N кандидатами и отбрасывала строки, совпадающие с N-й строкой. [#110452](https://github.com/ClickHouse/ClickHouse/pull/110452) ([Tamish Mhatre](https://github.com/tamish560)). [#110453](https://github.com/ClickHouse/ClickHouse/pull/110453) ([Tamish Mhatre](https://github.com/tamish560)).
* Исправлены логическая ошибка `Expected CommonSubplanReferenceStep to reference CommonSubplanStep`, ошибка `Subplan cannot be used to build pipeline` и логическая ошибка `Trying to extract chunk from ChunkBuffer before all inputs are finished` для `IN (subquery)`, где подзапрос содержит коррелированный подзапрос, а Set строится во время анализа индекса. [#110491](https://github.com/ClickHouse/ClickHouse/pull/110491) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена подстановка параметров запроса внутри определений именованного предложения `WINDOW`. Ранее параметры там незаметно оставались неподставленными, а незаданный параметр `Identifier` мог приводить к исключению `Logical error: '!part.empty()'` во время `EXPLAIN SYNTAX`. [#110506](https://github.com/ClickHouse/ClickHouse/pull/110506) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой запуска сервера для таблиц `MergeTree` на дисках объектного хранилища, когда оставшийся файл `txn_version.txt.tmp` повреждал метаданные на уровне диска. [#110519](https://github.com/ClickHouse/ClickHouse/pull/110519) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена logical error в файловом кэше (`Expected file ... not to exist`), которая могла возникать, когда фоновая загрузка кэша завершалась ошибкой, не связанной с файловой системой (например, при выполнении `OPTIMIZE` для Iceberg table), оставляя после себя пустой осиротевший файл кэша. [#110549](https://github.com/ClickHouse/ClickHouse/pull/110549) ([Groene AI](https://github.com/groeneai)).
* Исправлено чтение повреждённого потока в формате `Native`, у которого число типов `Dynamic` или число путей `JSON`/`Object` близко к `SIZE_MAX`: такой некорректный входной поток теперь отклоняется с понятной ошибкой `INCORRECT_DATA` вместо неперехваченного `std::length_error`. [#110590](https://github.com/ClickHouse/ClickHouse/pull/110590) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено падение сервера в database engine `MaterializedPostgreSQL`, которое могло происходить, если table была detached (или её structure изменялась), пока она всё ещё находилась в очереди на синхронизацию. [#110596](https://github.com/ClickHouse/ClickHouse/pull/110596) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено некорректное поведение `SET param_<name>` в клиенте (и флагов `--param_<name>`), когда имя parameter совпадало с именем встроенной setting, например `limit`, `offset`, `max_threads` или `log_comment`. В зависимости от конфликтующей setting, запрос завершался ошибкой `CANNOT_PARSE_QUOTED_STRING`, значение молча нормализовалось (например, `max_threads=0` превращалось в `auto(N)`), либо терялось имя алиаса setting. Такой parameter также ломал все последующие `SET param_*` в той же сессии. [#110597](https://github.com/ClickHouse/ClickHouse/pull/110597) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено чтение подстолбцов столбца, который имеет выражение `DEFAULT` и не materialized в part (например, после `ALTER TABLE ADD COLUMN` или во время `ALTER TABLE MATERIALIZE COLUMN`): подстолбец заполнялся значениями по умолчанию для type вместо вычисленного выражения `DEFAULT`, а transposed функции расстояния между векторами (`cosineDistanceTransposed` и другие) на таких столбцах `QBit` завершались ошибкой `SIZES_OF_ARRAYS_DONT_MATCH`. Это закрывает [#110634](https://github.com/ClickHouse/ClickHouse/issues/110634). [#110636](https://github.com/ClickHouse/ClickHouse/pull/110636) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка `LOGICAL_ERROR` `Invalid partition key size: 0`, из-за которой могла завершиться неудачей операция `INSERT` в партиционированную table `MergeTree` с включённой `non_replicated_deduplication_window`, когда пакет async insert был дедуплицирован лишь частично (некоторые значения `insert_deduplication_token` были дубликатами, а некоторые — новыми). [#110651](https://github.com/ClickHouse/ClickHouse/pull/110651) ([Groene AI](https://github.com/groeneai)).
* Фоновый flush asynchronous insert теперь оперативно останавливается при завершении через `KILL QUERY`; ранее flush большого буферизованного полезного содержимого продолжал разбор до конца и игнорировал отмену. [#110652](https://github.com/ClickHouse/ClickHouse/pull/110652) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлены неверные результаты `GROUP BY` с `optimize_aggregation_in_order` и `DISTINCT` с `optimize_distinct_in_order`, размещёнными поверх `partial_merge` JOIN. Оптимизация чтения в порядке распространялась через partial-merge JOIN, который повторно сортирует свой левый вход по ключу JOIN и поэтому не сохраняет исходный порядок левого потока, из-за чего строки группировались некорректно. [#110671](https://github.com/ClickHouse/ClickHouse/pull/110671) ([Groene AI](https://github.com/groeneai)).
* Исправлено переполнение знакового целого числа в `toStartOfInterval` при экстремальном количестве interval `MONTH`, `WEEK` или `DAY` для значений `Date`/`Date32`/`DateTime64`. [#110688](https://github.com/ClickHouse/ClickHouse/pull/110688) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK` для запросов с подзапросом в `FROM`, когда параллельные реплики работают в режиме `custom_key_sampling` / `custom_key_range`. Такие запросы (например, `SELECT * FROM (SELECT id, k, v FROM t WHERE id < 20) ORDER BY k`) ранее завершались ошибкой `Not found column __table2.id in block ...`. [#110690](https://github.com/ClickHouse/ClickHouse/pull/110690) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `readWKT`, из-за которого функция отклоняла строки WKT с ведущими пробелами (например, `readWKT(' POINT(1 2)')`), хотя они допускаются типизированными функциями чтения `readWKTPoint`/`readWKTPolygon`/... и грамматикой WKT. [#110706](https://github.com/ClickHouse/ClickHouse/pull/110706) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error (`Column ... already added for reading`, аварийное завершение сервера в debug/sanitizer builds), возникавшая, когда один и тот же предикат текстового индекса использовался и в `PREWHERE`, и в предложении `WHERE` в запросе к таблице `Merge` поверх таблицы `Distributed`. [#110710](https://github.com/ClickHouse/ClickHouse/pull/110710) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK` для транспонированных функций расстояния над столбцами `QBit` (таких как `cosineDistanceTransposed`), вызываемых со скалярным подзапросом или константным reference vector при включённых параллельных репликах. Это закрывает [#110719](https://github.com/ClickHouse/ClickHouse/issues/110719). [#110729](https://github.com/ClickHouse/ClickHouse/pull/110729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена редкая `LOGICAL_ERROR` (`Unexpected number of parts to remove from parts_queue`; аварийное завершение сервера в debug/sanitizer builds) в `ReplicatedMergeTree`, возникавшая, когда две операции с партициями (например, два запроса `MOVE PARTITION`/`REPLACE PARTITION` или один такой запрос, выполняющийся одновременно с фоновым `DROP_RANGE`) одновременно отменяли фоновую проверку частей на перекрывающихся диапазонах. [#110738](https://github.com/ClickHouse/ClickHouse/pull/110738) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `Hash is not set for serialization`, которая могла возникать, когда столбец с кодеком `Quantized(...)` был обёрнут в другую сериализацию, например в таблице `Merge` поверх Sources, где одноимённый столбец имеет разные типы (объединяемые в `Variant`). [#110776](https://github.com/ClickHouse/ClickHouse/pull/110776) ([Groene AI](https://github.com/groeneai)).
* Исправлено зависание сервера при умножении состояния aggregate function `median`/`quantile` на очень большую целочисленную константу (например, `medianState(x) * 18446744073709551615`). Запрос переставал реагировать на отмену и мог выполняться бесконечно. [#110779](https://github.com/ClickHouse/ClickHouse/pull/110779) ([Groene AI](https://github.com/groeneai)).
* Исправлено падение сервера (целочисленное деление на ноль), возникавшее при использовании квоты с интервалом нулевой длины (например, `CREATE QUOTA q FOR INTERVAL 0 SECOND MAX queries = 1000`). Теперь неположительная длительность интервала квоты отклоняется при создании квоты. [#110846](https://github.com/ClickHouse/ClickHouse/pull/110846) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлено поведение `throwIf(notLike(col, pattern))` (и других `throwIf`, применённых к функции), при котором исключение генерировалось безусловно, если `col` имеет тип `LowCardinality`. Реализация `LowCardinality` по умолчанию запускала `throwIf` по всему словарю, который всегда содержит зарезервированное значение по умолчанию, даже если на него не ссылается ни одна строка, поэтому ненулевое значение в этом неиспользуемом слоте заставляло `throwIf` генерировать исключение для данных, не удовлетворяющих условию. [#110864](https://github.com/ClickHouse/ClickHouse/pull/110864) ([Groene AI](https://github.com/groeneai)).
* Исправлена передача активных ролей запроса (`SET ROLE` или параметр `role`) на удалённые узлы при чтении через parallel-replica и `Distributed` в кластере, защищённом межсерверным секретом; ранее удалённые узлы переключались на роли пользователя по умолчанию, из-за чего политики на уровне строк применялись иначе, чем на узле-инициаторе. [#110867](https://github.com/ClickHouse/ClickHouse/pull/110867) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлена ошибка, из-за которой таблица Iceberg создавала дублирующиеся ID полей после `ALTER TABLE ... ADD COLUMN`, если исходная схема содержала вложенные поля (`Tuple`/`Array`/`Map`). Теперь `last-column-id` сохраняет максимальный назначенный ID поля, включая вложенные дочерние элементы, поэтому добавленный позже столбец больше не использует повторно ID вложенного поля, а чтение больше не завершается ошибкой `ICEBERG_SPECIFICATION_VIOLATION` (`Duplicate field id`). [#110884](https://github.com/ClickHouse/ClickHouse/pull/110884) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой в FIPS-сборках при использовании SSH-ключа Ed25519 (`CREATE USER ... IDENTIFIED WITH ssh_key ... TYPE 'ssh-ed25519'` или такого ключа в `users.xml`). Ed25519 не одобрен для FIPS; теперь такие ключи отклоняются с понятной ошибкой `LIBSSH_ERROR`. [#110891](https://github.com/ClickHouse/ClickHouse/pull/110891) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлены результаты с пониженной точностью у транспонированных функций расстояния для столбцов `QBit` (`cosineDistanceTransposed`, `L2DistanceTransposed`, `dotProductTransposed`). Значения, усечённые до `precision` битовых плоскостей, восстанавливались с заполнением отброшенных битов нулями, что смещало каждое восстановленное значение к нулю и давало вырожденный результат при низкой точности: для `QBit(BFloat16)` при precision 1 сохраняется только знаковый бит, поэтому каждое значение восстанавливалось в `±0.0`, а расстояние становилось одной и той же константой для каждой строки, не неся информации для ранжирования. Теперь усечённые значения восстанавливаются в ограниченную середину оставшейся ячейки точности (сырые коды `Int8` — в центр своей ячейки; точные нули и бесконечности сохраняются), так что меньшая `precision` означает обмен точности на скорость без сильного смещения результатов. Результаты с полной точностью не изменились. Это закрывает [#110898](https://github.com/ClickHouse/ClickHouse/issues/110898). [#110911](https://github.com/ClickHouse/ClickHouse/pull/110911) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой сервера (use-after-free) во время корректного завершения работы после выполнения запросов к таблицам Iceberg из сеансов, в которых также использовались временные таблицы. [#110914](https://github.com/ClickHouse/ClickHouse/pull/110914) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлена ошибка `LOGICAL_ERROR: Cannot sum Bools` (аварийное завершение сервера в debug/sanitizer-сборках) при слиянии состояний агрегатной функции `sumMap`/`sumMapWithOverflow`/`sumMapFiltered` со значениями `Bool`, сериализованными в старом формате состояния (version 0). Это же исправление также устраняет два случая молчаливо неверного результата для состояний `Bool` версии 0: ключи map типа `Bool` не дедуплицировались между состояниями, а compaction нулевых значений удалял неправильные записи. [#110922](https://github.com/ClickHouse/ClickHouse/pull/110922) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой, возникавший, когда агрегатная функция с комбинатором `-Tuple` использовалась с `RESPECT NULLS` и создавала промежуточное состояние (`-State`, распределённая агрегация, `WITH ROLLUP`/`WITH CUBE`). Комбинированная функция получала имя по неправильному варианту состояния, поэтому её сериализованный тип `AggregateFunction` при round-trip повторно разрешался в несовместимое представление в памяти. [#110930](https://github.com/ClickHouse/ClickHouse/pull/110930) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема, из-за которой `PREWHERE` (и политики на уровне строк) для столбца Iceberg, переименованного через изменение схемы, молча возвращал `0` строк для старых data files. Теперь такие запросы возвращают правильные строки, как и `WHERE`. [#110941](https://github.com/ClickHouse/ClickHouse/pull/110941) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`LazyMaterializingTransform: Number of rows in lazy chunk N does not match number of offsets M`), который мог возникать в запросах векторного поиска с `vector_search_with_rescoring = 1` в сочетании с отложенной материализацией, когда несколько расстояний совпадали. [#111003](https://github.com/ClickHouse/ClickHouse/pull/111003) ([Groene AI](https://github.com/groeneai)).
* Исправлено чтение данных `Arrow`/`ArrowStream` с пустыми вложенными столбцами `Array`/`Map`, созданных в Apache Arrow Java \< 19.0.0 (входит в состав Apache Spark), которые ранее отклонялись с ошибкой `INCORRECT_DATA` о слишком маленьком буфере offsets. [#111101](https://github.com/ClickHouse/ClickHouse/pull/111101) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено чтение устаревших данных на дисках `plain_rewritable` при включённом page cache. [#111105](https://github.com/ClickHouse/ClickHouse/pull/111105) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлена ошибка `CANNOT_CONVERT_TYPE` для констант типа `Variant` (включая `Geometry`) в распределённых запросах и запросах с параллельными репликами. [#111136](https://github.com/ClickHouse/ClickHouse/pull/111136) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлена ошибка, из-за которой чтение больших файлов из HDFS могло завершаться сбоем или давать некорректный результат, если один запрос на чтение превышал 32-битный предел размера `hdfsPread` (`INT_MAX`). [#98470](https://github.com/ClickHouse/ClickHouse/pull/98470) ([Arup Chauhan](https://github.com/arup-chauhan)).
* Исправлено некорректное использование text index для проверок на равенство с пустой строкой поиска. [#108340](https://github.com/ClickHouse/ClickHouse/pull/108340) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлено зависание в `SYSTEM SYNC MERGES` с селектором слияния `Manual`, когда запланированное слияние не удавалось поместить в заполненный фоновый пул. [#108770](https://github.com/ClickHouse/ClickHouse/pull/108770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение `ATTACH TABLE ... AS REPLICATED`, при котором отбрасывались закоммиченные данные и восстанавливались строки до применения mutation, если в части данных оставался устаревший файл `txn_version.txt.tmp`. [#108772](https://github.com/ClickHouse/ClickHouse/pull/108772) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена возможная race condition в `ALTER TABLE ... MOVE PARTITION TO TABLE` с нереплицируемыми таблицами `MergeTree`, которая могла приводить к появлению пересекающихся частей данных, поскольку коммит перемещённых частей и выделение номеров блоков выполнялись не под одной и той же блокировкой. [#108922](https://github.com/ClickHouse/ClickHouse/pull/108922) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлено чтение таблиц `Iceberg`, записанных Databricks UniForm, который записывает в manifest files вырожденную placeholder-схему (с пустым списком полей). [#108945](https://github.com/ClickHouse/ClickHouse/pull/108945) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена ошибка use-after-free при многопоточном чтении непартиционированной таблицы `Hive`. [#109164](https://github.com/ClickHouse/ClickHouse/pull/109164) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение, при котором уровень логирования консоли не возвращался к исходному после запуска сервера, если задан `logger.startup_console_log_level`: уровень считывался из неверного ключа конфигурации, поэтому консоль оставалась на повышенном startup level на протяжении всей работы сервера. Закрывает [#103472](https://github.com/ClickHouse/ClickHouse/issues/103472). [#109858](https://github.com/ClickHouse/ClickHouse/pull/109858) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* Исправлены аномалии snapshot isolation в транзакциях метаданных диска `plain_rewritable`. Исправляет [#92055](https://github.com/ClickHouse/ClickHouse/issues/92055). [#110948](https://github.com/ClickHouse/ClickHouse/pull/110948) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлено аварийное завершение (`front() called on an empty vector`) в `clickhouse-client --login`, когда хост не передавался явно через аргумент `--host`, например если он брался из `--connection`, файла конфигурации или переменной окружения `CLICKHOUSE_HOST`. Закрывает [#103603](https://github.com/ClickHouse/ClickHouse/issues/103603). [#110279](https://github.com/ClickHouse/ClickHouse/pull/110279) ([Christoph Wurm](https://github.com/cwurm)).
* Исправлена логическая ошибка (`!part.empty()`), возникавшая, когда аргумент лямбда-выражения — это идентификатор в обратных кавычках, имя которого содержит точку (например, `__table1.`). Ранее такой запрос приводил к обрабатываемому исключению в релизных сборках и аварийно завершал сервер в debug- и sanitizer-сборках при форматировании сообщения об ошибке. [#108735](https://github.com/ClickHouse/ClickHouse/pull/108735) ([Groene AI](https://github.com/groeneai)).
* Исправлена `LOGICAL_ERROR` (`No set is registered for key`) в `ALTER TABLE ... DROP COLUMN`, мутациях `ALTER TABLE ... DELETE`/`UPDATE` и легковесном `DELETE FROM` для таблиц со столбцом `ALIAS`, выражение которого использует оператор `IN` (в том числе через другой столбец `ALIAS`). [#111039](https://github.com/ClickHouse/ClickHouse/pull/111039) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлена незаметная потеря данных при async inserts и дедупликации (`async_insert=1`, `async_insert_deduplicate=1`). Когда несколько записей async-insert с разными значениями `insert_deduplication_token` объединялись в один flush, записывающий данные в непересекающиеся партиции, каждый токен регистрировался в журнале дедупликации всех партиций, которых касался flush, а не только той партиции, куда попадали соответствующие строки. В результате более поздняя вставка, повторно использующая один из этих токенов в партиции, в которую она никогда не писала, незаметно дедуплицировалась. Теперь токены регистрируются только для той партиции, куда их строки действительно были записаны. Закрывает [#111031](https://github.com/ClickHouse/ClickHouse/issues/111031). [#111049](https://github.com/ClickHouse/ClickHouse/pull/111049) ([Groene AI](https://github.com/groeneai)).
* Исправлены исключение `LOGICAL_ERROR` (`ScatterExchangeStep should have one source shard, got 8`) и дублирование строк при выполнении запроса к таблице `Merge` поверх таблиц или представлений `Distributed` с экспериментальной настройкой `make_distributed_plan = 1`. Закрывает [#107946](https://github.com/ClickHouse/ClickHouse/issues/107946). [#108401](https://github.com/ClickHouse/ClickHouse/pull/108401) ([Groene AI](https://github.com/groeneai)).
* Столбец `Nullable(Tuple(...))` теперь сериализуется как одно поле `CSV` вместо развертывания в отдельные столбцы. Ранее значение, отличное от `NULL`, записывалось как несколько полей `CSV`, тогда как `NULL` записывался как один `\N`, из-за чего количество столбцов зависело от строки, что ломало заголовки `CSVWithNames`/`CSVWithNamesAndTypes` и round-trip. [#108959](https://github.com/ClickHouse/ClickHouse/pull/108959) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка (`KeyCondition uses PREWHERE output`) в reader `Parquet` v3, когда условие по ключу на уровне формата ссылается на столбец, который не читается из файла `Parquet`. [#109267](https://github.com/ClickHouse/ClickHouse/pull/109267) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты при чтении через table function с `FINAL` или `SAMPLE` при `serialize_query_plan = 1`. Также исправлен ключ кэша статистики hash-таблицы aggregation для table functions, чтобы разные table functions больше не использовали одну и ту же запись предварительного выделения. [#109847](https://github.com/ClickHouse/ClickHouse/pull/109847) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена очистка `BACKUP ... TO Memory(...)`, завершающегося ошибкой до финализации: неудавшийся backup оставался зарегистрированным, поэтому его имя нельзя было использовать повторно. [#109947](https://github.com/ClickHouse/ClickHouse/pull/109947) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлена арифметика экстремальных interval в `WITH FILL STEP` и функциях date/time interval `add*` / `subtract*`: дельты вне допустимого диапазона больше не полагаются на signed overflow, а `WITH FILL` с огромным шагом `YEAR` больше не зависает, прокручивая календарь назад. [#110158](https://github.com/ClickHouse/ClickHouse/pull/110158) ([Groene AI](https://github.com/groeneai)).
* Исправлены ошибки `411 Length Required` от сервисов Azure: Azure HTTP transport на базе Poco теперь задаёт `Content-Length` на основе request body для SDK-клиентов, которые не устанавливают его самостоятельно, например Azure Key Vault. [#110299](https://github.com/ClickHouse/ClickHouse/pull/110299) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Отложенная оптимизация `FINAL` (`query_plan_optimize_lazy_final`, по умолчанию отключена) больше не применяется, если запрос читает данные в порядке ключа сортировки, поскольку её заменяющий plan не сохраняет этот порядок и может возвращать результаты в неверном порядке. Она также больше не применяется, когда `LIMIT`, меньший числа читаемых строк, применяется непосредственно на шаге чтения, где обязательный проход построения множества сводит на нет возможность раннего завершения. [#110576](https://github.com/ClickHouse/ClickHouse/pull/110576) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлены `readWKT` и `readWKTPoint`, которые для `POINT EMPTY` возвращали неинициализированные координаты (в scalar-режиме) или устаревшие координаты из предыдущей строки (в vectorized-режиме). Теперь `POINT EMPTY` отклоняется с ошибкой `CANNOT_PARSE_TEXT`, поскольку ClickHouse `Point` — это фиксированный `Tuple(Float64, Float64)` без представления пустого значения. [#110692](https://github.com/ClickHouse/ClickHouse/pull/110692) ([Groene AI](https://github.com/groeneai)).
* Исправлена некорректная обработка timezone при materializing столбцов правой стороны в hash joins. Закрывает [#111033](https://github.com/ClickHouse/ClickHouse/issues/111033). [#111074](https://github.com/ClickHouse/ClickHouse/pull/111074) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлены неверные результаты `count()` и пропуск строк, когда ключ `String` (или более узкий `FixedString`) либо индекс пропуска данных minmax фильтруется сравнением с более широкой константой `FixedString`, например `toFixedString('abc', 257) = string_col`. Primary key и minmax pruning строили диапазон по дополненной NUL-байтами константе и ошибочно пропускали подходящие granules. [#111106](https://github.com/ClickHouse/ClickHouse/pull/111106) ([Groene AI](https://github.com/groeneai)).
* Исправлены асинхронные inserts в формате `Native`: теперь одна буферизованная запись, ставшая несовместимой после `ALTER ... MODIFY COLUMN`, больше не приводит к сбою всего пакета. Закрывает [#111064](https://github.com/ClickHouse/ClickHouse/issues/111064). [#111108](https://github.com/ClickHouse/ClickHouse/pull/111108) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Исправлен `CREATE OR REPLACE` для словаря с объектом другого типа: операция завершалась ошибкой `CANNOT_DETACH_DICTIONARY_AS_TABLE` уже после того, как замена была committed, оставляя осиротевшую таблицу `_tmp_replace_*`. [#111142](https://github.com/ClickHouse/ClickHouse/pull/111142) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлен `INCOMPATIBLE_TYPE_OF_JOIN` для `ANY` JOIN по таблице движка `Join`, когда фильтр в предложении WHERE по столбцу правой стороны позволял planner переписать JOIN в `SEMI` или `ANTI`. У таблицы движка `Join` фиксированная объявленная strictness, которую нельзя изменить, поэтому теперь для таких таблиц это преобразование не выполняется. [#111362](https://github.com/ClickHouse/ClickHouse/pull/111362) ([Groene AI](https://github.com/groeneai)).
* Исправлена table function `format`, которая не возвращала столбцы, если входные данные разбирались в ноль строк (например, пустой JSON document или GeoJSON `FeatureCollection` без features). Теперь она возвращает пустой результат с корректными столбцами вместо `NOT_FOUND_COLUMN_IN_BLOCK`. Закрывает [#111390](https://github.com/ClickHouse/ClickHouse/issues/111390). [#111428](https://github.com/ClickHouse/ClickHouse/pull/111428) ([Groene AI](https://github.com/groeneai)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* Сборки с sanitizer теперь сохраняют отчёт sanitizer в глобальный buffer `sanitizer_report`, чтобы анализатор core dump мог прочитать его из core dump. [#109333](https://github.com/ClickHouse/ClickHouse/pull/109333) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `musl` теперь собирается из исходного кода вместо использования вендорных бинарных файлов. [#97452](https://github.com/ClickHouse/ClickHouse/pull/97452) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используются SIMD-реализации `memcmp`/`memcpy`/`memmove`/`memset`/`bcmp`/`memmem` из LLVM-libc. [#107566](https://github.com/ClickHouse/ClickHouse/pull/107566) ([Konstantin Bogdanov](https://github.com/thevar1able)). Исправлено незаметное повреждение данных в `memmove` в отладочных сборках с `-O0` (`-DDEBUG_O_LEVEL=0`) на машинах с AVX-512. [#110904](https://github.com/ClickHouse/ClickHouse/pull/110904) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Удалено использование библиотеки `curl` по всей кодовой базе и во включённых сторонних библиотеках. [#108296](https://github.com/ClickHouse/ClickHouse/pull/108296) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `mariadb-connector-c` обновлён до 3.4.9. [#108328](https://github.com/ClickHouse/ClickHouse/pull/108328) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `libssh` обновлён до 0.12.0. [#108329](https://github.com/ClickHouse/ClickHouse/pull/108329) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлено зависание при transaction `COMMIT` на macOS. [#108375](https://github.com/ClickHouse/ClickHouse/pull/108375) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена опция CMake `COMPRESS_DEBUG_SECTIONS`, которая сжимает отладочные секции DWARF в object file (`-gz`); она автоматически включается там, где это поддерживает compiler, чтобы уменьшить размер каталогов Debug-сборок. При этом итоговые бинарные файлы остаются несжатыми, поэтому символизация stack trace во время выполнения не затрагивается. [#109306](https://github.com/ClickHouse/ClickHouse/pull/109306) ([Murphy](https://github.com/murphy-4o)). Входящий в комплект toolchain LLVM теперь собирается с zlib, поэтому его clang поддерживает `-gz=zlib`, а также была добавлена отсутствующая символическая ссылка `clang++-21`. [#109596](https://github.com/ClickHouse/ClickHouse/pull/109596) ([Murphy](https://github.com/murphy-4o)).
* Debug-сборки теперь компилируют вендорные Rust-крейты с сокращённой отладочной информацией (`debug = 1`, уровень cargo `limited`) и без incremental cache (`REDUCE_RUST_DEBUG_INFO`, включено по умолчанию), что уменьшает размер Rust-артефактов сборки (\~12 → \~7 GB при сборке с нуля) и предотвращает неограниченный рост cache cargo при повторных сборках. Установите `-DREDUCE_RUST_DEBUG_INFO=OFF`, чтобы вернуть полный DWARF и incremental compilation. [#109471](https://github.com/ClickHouse/ClickHouse/pull/109471) ([Murphy](https://github.com/murphy-4o)).
* Добавлена поддержка streaming distributed query exchange и чтений `STREAM` на macOS. [#109769](https://github.com/ClickHouse/ClickHouse/pull/109769) ([Raúl Marín](https://github.com/Algunenano)).
* `libarchive` обновлён с 3.8.7 до 3.8.8. [#109874](https://github.com/ClickHouse/ClickHouse/pull/109874) ([Robert Schulze](https://github.com/rschu1ze)).
* `c-ares` обновлён с 1.34.6 до 1.34.8. [#109905](https://github.com/ClickHouse/ClickHouse/pull/109905) ([Robert Schulze](https://github.com/rschu1ze)).
* `krb5` обновлён для исправления CVE-2026-40355 и CVE-2026-40356. [#109910](https://github.com/ClickHouse/ClickHouse/pull/109910) ([Robert Schulze](https://github.com/rschu1ze)).
* Удалена сторонняя зависимость `libpng`. Вместо неё `FORMAT PNG` теперь использует небольшой встроенный PNG-кодировщик (на основе включённого в комплект zlib). [#110051](https://github.com/ClickHouse/ClickHouse/pull/110051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* На macOS raw C-выделения памяти (не проходящие через `operator new`) теперь отслеживаются в трекере памяти за счёт обёртки над malloc zone из jemalloc, поэтому для них применяются ограничения памяти. [#110370](https://github.com/ClickHouse/ClickHouse/pull/110370) ([Raúl Marín](https://github.com/Algunenano)).
* Docker-образы `-distroless` для `clickhouse-server` и `clickhouse-keeper` теперь собираются из не содержащей shell стадии продакшн; ранее они собирались из стадии отладки и включали `/busybox/sh`. Закрывает [#105677](https://github.com/ClickHouse/ClickHouse/issues/105677). [#105678](https://github.com/ClickHouse/ClickHouse/pull/105678) ([ashishch432](https://github.com/ashishch432)).
* `abseil-cpp` обновлён до LTS `20260526.0`. [#108991](https://github.com/ClickHouse/ClickHouse/pull/108991) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="266">
  ### Релиз ClickHouse 26.6, 2026-06-25. [Презентация](https://presentations.clickhouse.com/2026-release-26.6/), [Видео](https://www.youtube.com/watch?v=-NmqMH9y4EY)
</div>

<div id="267-backward-incompatible-change">
  #### обратно несовместимое изменение
</div>

* Это изменение удаляет возможность `allow_experimental_query_deduplication`. Эта возможность долгое время оставалась экспериментальной, не имеет тестов и поддерживаться не будет (изначальные тесты были нестабильными и были удалены в [#49579](https://github.com/ClickHouse/ClickHouse/pull/49579)). [#99398](https://github.com/ClickHouse/ClickHouse/pull/99398) ([Igor Nikonov](https://github.com/devcrafter)).
* Возможность `SYSTEM INSTRUMENT` на основе XRay теперь использует `arguments` вместо `parameters`: столбец `system.instrumentation.parameters` был переименован в `arguments`, а синтаксис `SYSTEM INSTRUMENT ADD ... HANDLER PARAMETERS ...` — в `SYSTEM INSTRUMENT ADD ... HANDLER ARGUMENTS ...`. Запросы и автоматизация, использующие старый столбец или синтаксис, нужно обновить на новые имена; старые имена больше не поддерживаются. [#103854](https://github.com/ClickHouse/ClickHouse/pull/103854) ([Pablo Marcos](https://github.com/pamarcos)).
* Настройка `show_data_lake_catalogs_in_system_tables` была переименована в `show_remote_databases_in_system_tables` и получила более широкое действие: когда её значение равно 0 (по умолчанию), базы данных `MySQL` и `PostgreSQL` также скрываются из `system.tables`, `system.columns` и `system.completions` в дополнение к каталогам озер данных. Старое имя настройки сохранено как псевдоним. [#104416](https://github.com/ClickHouse/ClickHouse/pull/104416) ([Pablo Marcos](https://github.com/pamarcos)).
* Сборка x86 по умолчанию теперь нацелена на x86-64-v3 (AVX2) вместо x86-64-v2 (SSE4.2). Для этого требуется CPU с поддержкой AVX2 (Intel Haswell или новее, AMD Excavator или новее). Если ваш CPU не поддерживает AVX2, используйте сборку `amd64compat`, рассчитанную на обычный x86-64. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* Вложенные `Dynamic`/`Variant` в агрегатах `min`/`max` и индексах `minmax` теперь отклоняются. Ранее проверялись только `Dynamic`/`Variant` верхнего уровня. Закрывает [#104747](https://github.com/ClickHouse/ClickHouse/issues/104747). [#105468](https://github.com/ClickHouse/ClickHouse/pull/105468) ([Pavel Kruglov](https://github.com/Avogar)).
* `icebergHash` и `icebergBucket` теперь отклоняют аргументы `Int128`, `UInt128`, `Int256`, `UInt256` и `Decimal256`, выдавая явную ошибку. Ранее они молча усекали значения большей разрядности и создавали коллизии хэшей. Спецификация Iceberg определяет хэширование только для 32-/64-битных целых чисел и decimal-значений с precision до 38; приведите значение к `Int64` или `Decimal128`, чтобы сохранить прежнее поведение для подходящих значений. [#105866](https://github.com/ClickHouse/ClickHouse/pull/105866) ([Raúl Marín](https://github.com/Algunenano)).
* В CLI добавлен более гибкий контроль вывода запросов. Опция `--echo` теперь принимает необязательное булевое значение и работает как в интерактивном режиме, так и в batch mode. Новые опции `--echo-formatted` и `--echo-query-id` управляют тем, будут ли выводимые запросы форматироваться и будет ли печататься `query_id` соответственно. Опция `--hilite`/`--highlight` теперь также управляет подсветкой выводимых запросов. Как побочный эффект, `--echo` теперь является опцией с булевым значением, поэтому позиционный запрос сразу после `--echo` без указанного значения воспринимается как её значение; вместо этого используйте `--echo --query "..."` или `--echo=false`. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалены экспериментальные функции KQL (Kusto) `array_sort_asc` и `array_sort_desc`, а также их SQL-backend'ы `kql_array_sort_asc` и `kql_array_sort_desc`. Эти функции были экспериментальными, были некачественно реализованы и служили источником ошибок корректности и парсера. Запросы, использующие эти имена, теперь возвращают `UNKNOWN_FUNCTION`. [#108101](https://github.com/ClickHouse/ClickHouse/pull/108101) ([Groene AI](https://github.com/groeneai)).
* `ALTER TABLE ... REPLACE PARTITION ... FROM ...` больше не удаляет молча данные целевой партиции, если в исходной таблице нет частей в запрошенной партиции. Раньше такой запрос удалял целевую партицию и ничего не записывал взамен — опасное поведение, которое могло привести к потере данных. Теперь по умолчанию такой запрос отклоняется с ошибкой `BAD_ARGUMENTS`. Чтобы вернуть прежнее поведение с неявной очисткой, установите новую настройку `allow_replace_partition_from_empty_source = 1` или задайте `compatibility` равным `26.5` или ниже; чтобы явно удалить данные в целевой партиции, используйте `ALTER TABLE ... DROP PARTITION`. [#104939](https://github.com/ClickHouse/ClickHouse/pull/104939) ([Groene AI](https://github.com/groeneai)).
* Значение по умолчанию для настройки сервера `insert_deduplication_version` меняется с `compatible_double_hashes` на `new_unified_hash`. Дедупликация вставки теперь работает для всего вставляемого блока (на одну вставку), а не отдельно для каждой части/партиции: повтор той же вставки по-прежнему дедуплицируется, но две разные вставки, создающие идентичную часть, больше не дедуплицируются между собой, и вставки одних и тех же строк в разном порядке тоже больше не дедуплицируются. Установите `insert_deduplication_version = compatible_double_hashes`, чтобы вернуть прежнее поведение. Экземпляры, которые обновляются напрямую с релиза, где значением по умолчанию был `old_separate_hashes`, должны сначала работать с `compatible_double_hashes`, пока не истечёт максимально длительное релевантное окно дедупликации, и лишь после этого полагаться на `new_unified_hash`. [#107886](https://github.com/ClickHouse/ClickHouse/pull/107886) ([Sema Checherinda](https://github.com/CheSema)).

<div id="267-new-feature">
  #### Новая возможность
</div>

* Добавлена поддержка непрерывных запросов к таблицам `MergeTree`, реализованная в виде серии операций чтения снимка. Это первый шаг к полноценной поддержке потоковых запросов. [#105114](https://github.com/ClickHouse/ClickHouse/pull/105114) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Добавлены гипотетические (what-if) индекс пропуска данных. Используйте `CREATE HYPOTHETICAL INDEX ... ON t (expr) TYPE ...`, чтобы определить виртуальный индекс пропуска данных, действующий в рамках сессии, а затем `EXPLAIN WHATIF SELECT ...`, чтобы оценить его коэффициент пропуска и стоимость без материализации. Определённые индексы видны в новой таблице `system.hypothetical_indexes`. [#104608](https://github.com/ClickHouse/ClickHouse/pull/104608) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлен встроенный веб-интерфейс `/schema` в `clickhouse-server`, визуализирующий граф зависимостей между таблицами, materialized view, refreshable materialized view, словарями, distributed таблицами и представлениями. [#105276](https://github.com/ClickHouse/ClickHouse/pull/105276) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Добавлена поддержка output format `PNG`, позволяющая напрямую выводить результаты запроса в виде PNG-изображений. [#74691](https://github.com/ClickHouse/ClickHouse/pull/74691) ([Maksim Dergousov](https://github.com/m7kss1)).
* Добавлено определение ИИ-агента для написания кода (Claude Code, Cursor, Codex, Gemini CLI, Goose и т. д.), вызвавшего `clickhouse-client` или `clickhouse-local`, на основе переменных окружения. Обнаруженный агент указывается в новом столбце `client_agent` таблиц `system.query_log`, `system.query_thread_log` и `system.processes`. [#106619](https://github.com/ClickHouse/ClickHouse/pull/106619) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая system table `system.documentation`, которая собирает встроенную справочную документацию по унифицированным компонентам системы (functions, table engines, data types, settings, formats и другим) в одну таблицу, при этом документация отображается в формате Markdown. [#107463](https://github.com/ClickHouse/ClickHouse/pull/107463) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен input format `GeoJSON` для чтения документов [GeoJSON](https://geojson.org/) `FeatureCollection`, создающий по одной строке на каждый объект со столбцами `id` (`String`), `geometry` (`Geometry`) и `properties` (`Nullable(JSON)`). Геометрии `Point`, `LineString`, `MultiLineString`, `Polygon` и `MultiPolygon` считываются в нативный тип `Geometry` ClickHouse. `GeometryCollection` и `MultiPoint`, которые тип `Geometry` не может представить, по умолчанию генерируют исключение, либо могут сохраняться как `NULL` с помощью настройки `input_format_geojson_unsupported_geometry_handling`. Вклад в [#91533](https://github.com/ClickHouse/ClickHouse/issues/91533). [#98124](https://github.com/ClickHouse/ClickHouse/pull/98124) ([Mark Needham](https://github.com/mneedham)).
* Добавлены функции для прямой выдачи векторных тайлов Mapbox из SQL: `MVTEncodeGeom` проецирует геометрию в пиксельное пространство тайла slippy-map и обрезает её, `MVTEncode` агрегирует спроецированные геометрии группы в двоичное представление однослойного тайла, а `MVTBoundingBox` / `MVTBoundingBoxMercator` возвращают ограничивающий прямоугольник тайла для отбора строк в его пределах. Поддерживается геометрия точек, линий и полигонов. Также доступны псевдонимы PostGIS `ST_AsMVTGeom` и `ST_AsMVT`. [#106107](https://github.com/ClickHouse/ClickHouse/pull/106107) ([Saarthak Gupta](https://github.com/saarthak2002)).
* `clickhouse-local` теперь поддерживает запросы `SYSTEM START LISTEN` и `SYSTEM STOP LISTEN`, что позволяет превратить его в сервер, принимающий TCP- и HTTP-соединения. [#101143](https://github.com/ClickHouse/ClickHouse/pull/101143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена интерактивная команда `help` в `clickhouse-client` и `clickhouse-local`. При вводе `help <name>` (а также `/help`, `man`, `/man`) в терминале отображается документация по функции, движку таблицы, типу данных, формату, настройке или другому компоненту, отрендеренная из Markdown с подсветкой синтаксиса SQL. Если слово неоднозначно, показываются все совпадения, а если оно не найдено, предлагаются похожие названия. [#108042](https://github.com/ClickHouse/ClickHouse/pull/108042) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка записи в Azure Data Lake Storage Gen2. [#105406](https://github.com/ClickHouse/ClickHouse/pull/105406) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлен формат `RowBinaryWithNamesAndTypesAndDefaults` для более качественной поддержки изменения схемы. [#105736](https://github.com/ClickHouse/ClickHouse/pull/105736) ([Mark Zitnik](https://github.com/mzitnik)).
* Добавлена поддержка `ADD ENUM VALUES` в запросах `ALTER TABLE`, чтобы упростить добавление новых значений в существующий тип `Enum` без необходимости заново указывать все текущие значения `Enum`. [#93830](https://github.com/ClickHouse/ClickHouse/pull/93830) ([Ilya Golshtein](https://github.com/ilejn)).
* refreshable materialized view теперь поддерживает `REFRESH DEPENDS ON`, что позволяет запускать обновление при обновлении другого RMV, а не по расписанию, привязанному ко времени. (`REFRESH EVERY ... DEPENDS ON` уже существовал, но его нельзя было надёжно использовать в этом сценарии.) См. документацию `CREATE MATERIALIZED VIEW`. [#104440](https://github.com/ClickHouse/ClickHouse/pull/104440) ([Michael Kolupaev](https://github.com/al13n321)).
* Добавлена поддержка выбора столбцов по шаблону имени с помощью `* LIKE '<pattern>'` и `* ILIKE '<pattern>'`, включая квалифицированные формы, такие как `table.* LIKE '<pattern>'` и `table.* ILIKE '<pattern>'`. `LIKE` сопоставляет имена столбцов с учётом регистра, `ILIKE` — без учёта регистра. [#104569](https://github.com/ClickHouse/ClickHouse/pull/104569) ([Yue Ni](https://github.com/niyue)).
* Добавлен синтаксис `ESCAPE`, позволяющий задать собственный символ экранирования в шаблоне `LIKE`, чтобы `%` и `_` трактовались как обычные символы, а не как подстановочные. [#99774](https://github.com/ClickHouse/ClickHouse/pull/99774) ([Ilya Yatsishin](https://github.com/qoega)).
* Добавлены настройки таблицы `MergeTree` `materialize_projections_on_insert` и `materialize_projections_on_merge`. Когда `materialize_projections_on_insert = 0`, операции `INSERT` пропускают построение частей проекций, что повышает пропускную способность вставки для таблиц с большим количеством проекций. Когда `materialize_projections_on_merge = 1`, слияние перестраивает проекцию, отсутствующую во всех исходных частях, так что проекции можно строить во время слияний, а не при вставке. Слияния по-прежнему объединяют только части с одинаковым набором проекций. [#100993](https://github.com/ClickHouse/ClickHouse/pull/100993) ([Christoph Wurm](https://github.com/cwurm)).
* Добавлена новая неизменяемая настройка `MergeTree` `allow_tuple_element_aggregation`, по умолчанию отключённая. Когда она включена, `SummingMergeTree`, `AggregatingMergeTree` и `CoalescingMergeTree` рекурсивно разворачивают столбцы `Tuple` и агрегируют каждый листовой элемент независимо во время слияний, точно так же, как если бы это был столбец верхнего уровня: `SummingMergeTree` суммирует его, `AggregatingMergeTree` объединяет его состояние агрегатной функции, а `CoalescingMergeTree` сохраняет его последнее значение, отличное от NULL. Эту настройку нужно задавать при создании таблицы, и движки, которые её не поддерживают, молча её игнорируют. [#98039](https://github.com/ClickHouse/ClickHouse/pull/98039) ([johnjing](https://github.com/JingYanchao)).
* Новые функции `quantizeBFloat16ToInt8` и `dequantizeInt8ToBFloat16`: скалярный кодек для сжатия компонентов эмбеддингов до 8 бит с помощью 256-уровневого гауссова квантователя Ллойда — Макса, из которого затем можно извлекать коды Int4/Int2/бинарные коды путём усечения битов. [#108102](https://github.com/ClickHouse/ClickHouse/pull/108102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены функции `arrayTopK` и `arrayBottomK`: - `arrayTopK(k, array)` возвращает K наибольших элементов в порядке убывания - `arrayBottomK(k, array)` возвращает K наименьших элементов в порядке возрастания. [#104563](https://github.com/ClickHouse/ClickHouse/pull/104563) ([Vitaly Baranov](https://github.com/vitlibar)).
* Добавлена новая системная таблица `system.iceberg_files`, предоставляющая метаданные отдельных файлов для таблиц `Iceberg`, по одной строке на каждый файл данных или файл удаления в текущем снимке каждой таблицы. Это закрывает [#98777](https://github.com/ClickHouse/ClickHouse/issues/98777). [#104415](https://github.com/ClickHouse/ClickHouse/pull/104415) ([Asya Shneerson](https://github.com/asya-ch)).
* Добавлена таблица `system.constraints`, которая предоставляет информацию обо всех ограничениях `CHECK` и `ASSUME` во всех таблицах, включая имя ограничения, тип и выражение. [#105337](https://github.com/ClickHouse/ClickHouse/pull/105337) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Добавлена новая таблица `system.dictionary_layouts`, в которой перечислены доступные структуры словарей вместе со встроенной документацией (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106182](https://github.com/ClickHouse/ClickHouse/pull/106182) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая таблица `system.dictionary_sources`, в которой перечислены доступные источники словарей вместе со встроенной документацией (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106184](https://github.com/ClickHouse/ClickHouse/pull/106184) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая таблица `system.data_skipping_index_types`, в которой перечислены доступные типы индексов с пропуском данных вместе со встроенной документацией (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106186](https://github.com/ClickHouse/ClickHouse/pull/106186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая таблица `system.disk_types`, в которой перечислены доступные типы дисков вместе со встроенной документацией (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106187](https://github.com/ClickHouse/ClickHouse/pull/106187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Реализована команда `SYSTEM RESTART DISK <name>`: теперь она заново загружает хранящиеся в памяти метаданные диска и повторно сканирует части данных таблиц с репликами только для чтения, расположенных на нём. Это позволяет реплике таблицы только для чтения на общем хранилище `plain_rewritable` по запросу увидеть данные, записанные другим сервером, не дожидаясь `refresh_parts_interval` и без перезапуска сервера. [#106645](https://github.com/ClickHouse/ClickHouse/pull/106645) ([Jordi Villar](https://github.com/jrdi)).
* Теперь поддерживается синтаксис в стиле PostgreSQL `expr OP SOME(array)` / `expr OP ALL(array)` (с правой частью не в форме с подзапросом), который переписывается в `has` / `NOT has` для `=`/`<>` или в лямбда-выражения `arrayExists` / `arrayAll` для других операторов сравнения. `ANY` не принимается для формы с массивом, поскольку `any` также является агрегатной функцией; используйте вместо этого `SOME`. Форма с подзапросом для `ANY`/`SOME`/`ALL` по-прежнему сводится к `IN` / `NOT IN`. [#105129](https://github.com/ClickHouse/ClickHouse/pull/105129) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены две новые стратегии `load_balancing`, `hostname_longest_common_prefix` и `hostname_longest_common_suffix`, которые отдают предпочтение той реплике, чей хост имеет самый длинный общий префикс (соответственно, суффикс) с хостом инициатора. Они полезны, когда дата-центр закодирован как префикс или суффикс в именах хостов, числовые сегменты которых имеют переменную длину, и существующие стратегии `nearest_hostname` и `hostname_levenshtein_distance` выбирают неправильную реплику. [#107360](https://github.com/ClickHouse/ClickHouse/pull/107360) ([Denny \[DBA at Innervate\]](https://github.com/den-crane)).
* В таблицу `system.session_log` добавлена информация о TLS-сертификате клиента (subjects, серийный номер, издатель и срок действия), чтобы улучшить обсервабилити аутентификации на основе сертификатов. [#107679](https://github.com/ClickHouse/ClickHouse/pull/107679) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен необязательный учетный параметр `external_id` для role-based access к `S3`. [#106941](https://github.com/ClickHouse/ClickHouse/pull/106941) ([Elian Gidoni](https://github.com/eliangidoni)).
* Добавлена новая настройка `S3Queue` `after_processing_move_preserve_path`. Когда она включена вместе с `after_processing='move'` и `after_processing_move_prefix`, обработанные объекты перемещаются с сохранением полного исходного пути под префиксом пункта назначения, а не сводятся только к имени файла. [#105354](https://github.com/ClickHouse/ClickHouse/pull/105354) ([Asya Shneerson](https://github.com/asya-ch)).
* Добавлена настройка сервера `message_queue_disable_insertion`, чтобы отключить вставку из движков очередей сообщений (`Kafka`, `RabbitMQ`, `NATS`) в materialized view в состоянии attached. Полезно для сценариев с репликой только для чтения. [#104911](https://github.com/ClickHouse/ClickHouse/pull/104911) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Добавлены `LOCALTIME` и `LOCALTIMESTAMP` (SQL-стандарт / синтаксис PostgreSQL). `LOCALTIMESTAMP` — это псевдоним для `now()` (возвращает `DateTime`); `LOCALTIME` возвращает текущее время суток как значение `Time`. [#106139](https://github.com/ClickHouse/ClickHouse/pull/106139) ([Thomas Cabral](https://github.com/thomas-cabral)).
* Добавлен `date_part('unit', expr)` как синтаксический сахар для `EXTRACT(unit FROM expr)`. Поддерживаются все стандартные виды интервалов, а также дополнительные варианты PostgreSQL (`epoch`, `dow`, `doy`, `isodow`, `isoyear`, `century`, `decade`, `millennium`). [#105127](https://github.com/ClickHouse/ClickHouse/pull/105127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена PostgreSQL-совместимая поддержка `EXTRACT(TIMEZONE_HOUR FROM dt)` и `EXTRACT(TIMEZONE_MINUTE FROM dt)` для получения часов и минут смещения часового пояса, а также `EXTRACT(<unit> FROM INTERVAL n <unit>)` / `date_part('<unit>', INTERVAL n <unit>)` для извлечения значения из интервала. [#106227](https://github.com/ClickHouse/ClickHouse/pull/106227) ([Vinayak Joshi](https://github.com/vinayakj592)).
* Добавлены агрегатные псевдонимы `min_by` и `max_by` для `argMin` и `argMax`. [#105712](https://github.com/ClickHouse/ClickHouse/pull/105712) ([Joey Yu](https://github.com/itsjoeoui)). Эти псевдонимы дурацкие, настоящие инженеры используют оригинальные имена ClickHouse.
* Добавлен `REGEXP_SUBSTR` как регистронезависимый псевдоним `regexpExtract` для совместимости с Oracle/MySQL/Snowflake. [#105122](https://github.com/ClickHouse/ClickHouse/pull/105122) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен `SESSION_USER` как регистронезависимый псевдоним `currentUser()` для совместимости с PostgreSQL / SQL-стандартом. [#106081](https://github.com/ClickHouse/ClickHouse/pull/106081) ([Takumi Hara](https://github.com/takumihara)).
* Поддерживается завершающий модификатор `NULL` / `NOT NULL` в `ALTER TABLE ... ADD/MODIFY COLUMN`, по аналогии с `CREATE TABLE`. [#106150](https://github.com/ClickHouse/ClickHouse/pull/106150) ([Takumi Hara](https://github.com/takumihara)).
* Теперь можно использовать функцию `h3PolygonToCellsWithContainment` из h3, чтобы задействовать их новый алгоритм, поддерживающий режимы включения по центру, полного включения и перекрытия. [#104455](https://github.com/ClickHouse/ClickHouse/pull/104455) ([Youssef Kadry](https://github.com/yousefQadry)).
* Добавлены флаги `IPV4_PREFIX_BITS` и `IPV6_PREFIX_BITS`, если формирование ключей выполняется по `IP_ADDRESS` или `FORWARDED_IP_ADDRESS`. [#89270](https://github.com/ClickHouse/ClickHouse/pull/89270) ([Aditya Chopra](https://github.com/adityachopra29)).
* `formatReadableTimeDelta` теперь принимает на вход выражение `INTERVAL` типа, отличного от `Month` и `Year`. [#64315](https://github.com/ClickHouse/ClickHouse/pull/64315) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* Теперь можно указать необязательный аргумент precision для функций `formatReadableSize`, `formatReadableDecimalSize` и `formatReadableQuantity`, который задаёт количество цифр после десятичной точки. Значение по умолчанию — 2, что сохраняет прежнее поведение. [#104648](https://github.com/ClickHouse/ClickHouse/pull/104648) ([Antonio Filipovic](https://github.com/antoniofilipovic)).
* Добавлена настройка `output_format_float_precision`, управляющая количеством десятичных цифр в текстовом выводе чисел с плавающей запятой. [#99721](https://github.com/ClickHouse/ClickHouse/pull/99721) ([phulv94](https://github.com/phulv94)).
* Добавлена настройка `output_format_always_write_decimal_point_in_float_and_decimal`, которая всегда выводит десятичную точку для чисел с плавающей запятой и чисел `Decimal` в текстовых форматах, даже если значение является целым числом. Например, выводится `1.` вместо `1`. По умолчанию отключена. [#62614](https://github.com/ClickHouse/ClickHouse/pull/62614) ([Ilya Yatsishin](https://github.com/qoega)).
* Добавлена поддержка новых элементов configuration HTTP-обработчика: `<url_prefix>` и `<full_url_prefix>` (сопоставляют все path в пределах базового path, полезно, например, для обработчиков Prometheus), а также `<url_regexp>`, `<full_url_regexp>` и `<headers_regexp>`. Старая форма `<url>regex:...</url>` теперь Obsolete. [#107492](https://github.com/ClickHouse/ClickHouse/pull/107492) ([Vitaly Baranov](https://github.com/vitlibar)).
* Добавлена поддержка статистики `basic` — компактной статистики по каждому столбцу, которая хранит числовые min/max, среднюю длину строк и количество значений NULL там, где это применимо. [#106048](https://github.com/ClickHouse/ClickHouse/pull/106048) ([Han Fei](https://github.com/hanfei1991)).
* Добавлена поддержка TTL-узлов в ClickHouse Keeper; включается флагом возможности `create_ttl`. [#100397](https://github.com/ClickHouse/ClickHouse/pull/100397) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Представлена возможность резервирования памяти для рабочих нагрузок. См. документацию по [планированию рабочих нагрузок](https://clickhouse.com/docs/operations/workload-scheduling). [#82414](https://github.com/ClickHouse/ClickHouse/pull/82414) ([Sergei Trifonov](https://github.com/serxa)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Многостадийное выполнение распределённого запроса: планировщик разбивает план запроса на стадии, соединённые обменами scatter / broadcast / gather / shuffle, и отправляет фрагменты плана на узлы-воркеры. Данные между стадиями передаются потоком по TCP или через временные файлы в общем объектном хранилище; этот механизм поддерживает distributed shuffle и broadcast hash JOIN, shuffle-агрегацию и распределённую сортировку. Эта возможность экспериментальная и по умолчанию отключена. [#106020](https://github.com/ClickHouse/ClickHouse/pull/106020) ([Alexander Gololobov](https://github.com/davenger)). Экспериментальный движок планов распределённых запросов (`make_distributed_plan`) теперь может использовать разные порты для диспетчеризации задач и streaming exchange для каждого воркера, настраиваемые для каждой реплики в `<remote_servers>` с помощью `stateless_worker_port` и `streaming_exchange_port`. Если они не заданы, используются прежние порты уровня сервера (`stateless_worker_client.port` и `distributed_query.streaming_exchange_port`). Это позволяет запускать несколько воркеров на одном хосте. [#107885](https://github.com/ClickHouse/ClickHouse/pull/107885) ([Alexander Gololobov](https://github.com/davenger)).
* Добавлен экспериментальный алгоритм переупорядочивания JOIN `dphyp` для inner JOIN в качестве опции настройки `query_plan_optimize_join_order_algorithm`, а также настройка `query_plan_optimize_join_order_max_searched_plans`, которая ограничивает поиск порядка JOIN и при превышении лимита переключается на следующий алгоритм в цепочке; установите `0`, чтобы сохранить прежнее неограниченное поведение поиска. [#98798](https://github.com/ClickHouse/ClickHouse/pull/98798) ([Alexander Gololobov](https://github.com/davenger)).
* Добавлена функция `aiEmbed` для использования API LLM и генерации эмбеддингов прямо из ClickHouse. [#102922](https://github.com/ClickHouse/ClickHouse/pull/102922) ([George Larionov](https://github.com/george-larionov)).
* Добавлена экспериментальная Linux OOM-канарейка: жертвенный дочерний процесс, который Linux OOM killer завершает раньше основного процесса сервера. При включении с помощью `oom_canary_enable` она снижает нехватку памяти, очищая кэши аллокатора, отменяя запросы, отменяя слияния и записывая событие в `system.crash_log`. Реакция на OOM требует наличия свидетельства OOM-kill в `memory.events` cgroup v2. [#101942](https://github.com/ClickHouse/ClickHouse/pull/101942) ([Peng](https://github.com/fastio)).
* Веб-интерфейс терминала по адресу `/webterminal` теперь является production-функцией и включён по умолчанию. Он управляется новой серверной настройкой `enable_webterminal`; прежняя настройка `allow_experimental_webterminal` устарела, но по-прежнему поддерживается для обратной совместимости. Чтобы отключить конечную точку, установите `enable_webterminal` в `false`. [#106255](https://github.com/ClickHouse/ClickHouse/pull/106255) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* HTTP-конечные точки PromQL теперь поддерживают указание базы данных и таблицы через параметры запроса URL (`database=`, `table=`, или `table=db.table`). Прежний неявный fallback на таблицу `default.prometheus` удалён: если ни config обработчика, ни URL не указывают таблицу, обработчик теперь возвращает `The time series table name is not set`. Чтобы сохранить прежнее поведение, настройте `<table>default.prometheus</table>` или передайте `table=...` в URL. [#107553](https://github.com/ClickHouse/ClickHouse/pull/107553) ([Vitaly Baranov](https://github.com/vitlibar)).
* Добавлена поддержка функции PromQL `histogram_quantile` в табличных функциях `prometheusQuery` и `prometheusQueryRange`. Это позволяет вычислять квантили по классическим бакетам гистограммы Prometheus, определяемым меткой `le`. [#103477](https://github.com/ClickHouse/ClickHouse/pull/103477) ([Joe Smith](https://github.com/Yasumoto)).
* Добавлен отложенный режим применения списка вхождений для текстового индекса. При включении через `SET allow_experimental_text_index_lazy_apply = 1` и `SET text_index_posting_list_apply_mode = 'lazy'` списки вхождений декодируются по требованию на уровне упакованных блоков с использованием подхода на основе курсора вместо полной материализации в Roaring Bitmaps, что снижает использование памяти и время CPU для выборочных запросов к текстовому индексу. [#100035](https://github.com/ClickHouse/ClickHouse/pull/100035) ([Peng](https://github.com/fastio)).
* Добавлена поддержка ABI [AssemblyScript](https://www.assemblyscript.org) для WebAssembly UDF. Попробовать ABI AssemblyScript можно без локальной установки toolchain — в браузерной [песочнице](https://pastila.nl/?0009878e/b9768c4e2144d0c2f3dd512e7a1aaf69.html), которая компилирует код AssemblyScript и загружает получившийся модуль WebAssembly в локальный ClickHouse. [#104606](https://github.com/ClickHouse/ClickHouse/pull/104606) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Разрешено подключать обработчики Prometheus на основном HTTP-порту с необязательным префиксом. [#104975](https://github.com/ClickHouse/ClickHouse/pull/104975) ([James Cunningham](https://github.com/JTCunning)).
* Добавлен экспериментальный параметр `MergeTree` `packed_skip_index_max_bytes`, который объединяет небольшие подстримы skip-индексов в один архив `skp_idx.packed` для каждой части, снижая расход inode, когда для таблицы определено много skip-индексов. Решение принимается для каждого подстрима во время записи: подстримы, чей сериализованный размер остаётся ниже порога, попадают в архив, а всё, что больше, сохраняет автономную структуру `skp_idx_<name>.idx2` / `.mrk2`. В одной части можно сочетать оба варианта структуры. Полнотекстовые индексы не поддерживаются и всегда хранятся в отдельных файлах. Значение по умолчанию — 0 (упаковка отключена). [#105321](https://github.com/ClickHouse/ClickHouse/pull/105321) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена поддержка сериализации `Buffers` для WebAssembly UDF с использованием `ABI BUFFERED_V1`, а также добавлен `webassembly_udf_enable_fuel` как сохраняемый параметр функции WASM UDF. [#105574](https://github.com/ClickHouse/ClickHouse/pull/105574) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлен экспериментальный параметр `use_reader_executor` (по умолчанию выключен), который направляет чтение через новый конвейерный `ReaderExecutor` вместо legacy-цепочки буферов чтения. [#106570](https://github.com/ClickHouse/ClickHouse/pull/106570) ([Sema Checherinda](https://github.com/CheSema)). Добавлены метрики обсервабилити для экспериментального пути чтения `use_reader_executor`, включая моделируемый KPI стоимости чтения (`ReaderExecutorModeledCostMsPerRequestedMiB`). [#106968](https://github.com/ClickHouse/ClickHouse/pull/106968) ([Sema Checherinda](https://github.com/CheSema)). Добавлен буфер `ChainedBuffers` для экспериментального пути чтения `use_reader_executor` с метрикой `ReaderExecutorChainedBufferBytes`. [#107210](https://github.com/ClickHouse/ClickHouse/pull/107210) ([Sema Checherinda](https://github.com/CheSema)).
* Нисходящий порядок сортировки в ключах сортировки `MergeTree` (например, `ORDER BY (time DESC, key)`) теперь поддерживается всегда и больше не требует экспериментального параметра `allow_experimental_reverse_key`, который стал устаревшим. [#106440](https://github.com/ClickHouse/ClickHouse/pull/106440) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `Nullable(Tuple(...))` теперь в статусе бета. По умолчанию отключено; чтобы использовать, установите `enable_nullable_tuple_type = 1`. [#107754](https://github.com/ClickHouse/ClickHouse/pull/107754) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* Различные изменения в Keeper, которые в целом ускоряют его примерно в 2 раза (улучшенная пакетная обработка, конвейерная отправка сообщений лидеру, конвейерное добавление записей в журнал). [#101757](https://github.com/ClickHouse/ClickHouse/pull/101757) ([Michael Kolupaev](https://github.com/al13n321)).
* Снижены накладные расходы на запрос для простых запросов `SELECT` (разбор, анализ и планирование). Например, `SELECT count() FROM hits` через одно соединение теперь выполняется примерно на 50% быстрее. [#104513](https://github.com/ClickHouse/ClickHouse/pull/104513) ([Raúl Marín](https://github.com/Algunenano)).
* Оптимизирован анализ индекса первичного ключа для длинных первичных ключей и первичных ключей с высокой кардинальностью. Для длинного первичного ключа время анализа индекса теперь в основном зависит от сложности фильтра запроса (то есть от столбцов ключа, которые он действительно использует), а не от длины самого первичного ключа — поэтому расширение ключа сортировки почти не добавляет накладных расходов на анализ индекса для запросов, которые фильтруют только по нескольким его столбцам. Для первичного ключа с высокой кардинальностью, где ClickHouse хранит в памяти только выборочный префикс столбцов ключа и не загружает последующие, анализ индекса теперь работает только с этим префиксом в памяти, а не со всем ключом. Оптимизация включена по умолчанию, а отключить ее можно с помощью новой настройки `use_lightweight_primary_key_index_analysis`. Закрывает [#65103](https://github.com/ClickHouse/ClickHouse/issues/65103). [#91836](https://github.com/ClickHouse/ClickHouse/pull/91836) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Сборка x86 по умолчанию теперь ориентирована на x86-64-v3 (AVX2) вместо x86-64-v2 (SSE4.2). Для этого требуется CPU с поддержкой AVX2 (Intel Haswell или новее, AMD Excavator или новее). Если ваш CPU не поддерживает AVX2, используйте сборку `amd64compat`, ориентированную на обычный x86-64. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* Для сравнительных сортировок общего назначения теперь используются `ipnsort` и `driftsort` (стабильная сортировка) — порты на C++ реализаций сортировки из стандартной библиотеки Rust. Это ускоряет `ORDER BY` для нечисловых столбцов и стабильных сортировок, а также устраняет худший сценарий для входных данных, отсортированных в обратном порядке. [#106650](https://github.com/ClickHouse/ClickHouse/pull/106650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Новая оптимизация `GROUP BY` для равномерно распределенных ключей с высокой кардинальностью распределяет строки по потокам с помощью хеширования ключа группировки, так что каждый поток агрегирует непересекающееся подмножество ключей без этапа слияния. Чтобы включить ее, установите `enable_sharding_aggregator = 1`. [#104233](https://github.com/ClickHouse/ClickHouse/pull/104233) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Включена предвыборка hash table для запросов `GROUP BY` со строковыми ключами, что повышает производительность агрегации строк с высокой кардинальностью примерно на 8%. [#101007](https://github.com/ClickHouse/ClickHouse/pull/101007) ([Le Zhang](https://github.com/damahua)).
* Снижено пиковое потребление памяти при слиянии частичных результатов двухуровневой агрегации с большими состояниями агрегатной функции (например, `groupArray`) за счет поэтапного освобождения исходных состояний каждого бакета во время слияния, вместо того чтобы держать их все в памяти до завершения процесса. [#102330](https://github.com/ClickHouse/ClickHouse/pull/102330) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* Оптимизировано представление `Enum` `DataType` в памяти. Потребление памяти таблицами, содержащими тип `Enum`, для компонента `Enum` может снизиться до 10 раз. Время получения имени по значению (числу) осталось прежним или стало меньше. Поиск по имени стал немного медленнее, но такой вариант доступа используется реже. [#95668](https://github.com/ClickHouse/ClickHouse/pull/95668) ([Ilya Yatsishin](https://github.com/qoega)).
* Добавлено кэширование разрешения идентификаторов, чтобы избежать повторного разрешения одних и тех же идентификаторов при анализе запроса. [#88043](https://github.com/ClickHouse/ClickHouse/pull/88043) ([Max Justus Spransy](https://github.com/maxjustus)).
* Улучшена производительность анализа запросов к таблицам с большим числом столбцов: исключено вычисление хешей узлов столбцов (которые включают всё выражение исходной таблицы), когда в этом нет необходимости. Анализ вложенных подзапросов `SELECT *` для таблицы с \~1200 столбцами теперь выполняется примерно в 50 раз быстрее. [#106957](https://github.com/ClickHouse/ClickHouse/pull/106957) ([Dmitry Novik](https://github.com/novikd)).
* Ускорен анализ запросов с большим количеством вызовов функций или с глубоко вложенными вызовами за счёт удаления избыточного хеша дерева запроса из кэша разрешения функций. [#107516](https://github.com/ClickHouse/ClickHouse/pull/107516) ([Dmitry Novik](https://github.com/novikd)).
* Исправлены длительные зависания при входе и запуске запросов в реплицируемом хранилище прав доступа, когда одновременно изменяется много сущностей доступа (политики строк, роли, квоты, профили настроек). Теперь каждый кэш отдельных сущностей пересчитывается один раз на батч уведомлений, а не по одному разу на каждую изменённую сущность, что устраняет квадратичную нагрузку, из-за которой блокировка доступа могла удерживаться минутами. [#107672](https://github.com/ClickHouse/ClickHouse/pull/107672) ([Azat Khuzhin](https://github.com/azat)).
* `FixedHashMap` из hash JOIN теперь используется как JOIN runtime filter на стороне probe. Если hash table на стороне build является `FixedHashMap` (или может быть преобразована в него), она публикуется как runtime filter и заменяет `Set`/`BloomFilter`, который в противном случае устанавливал бы `BuildRuntimeFilterStep`. Это поведение управляется новой настройкой `join_runtime_filter_from_fixed_hash_table` (по умолчанию `true`). [#105640](https://github.com/ClickHouse/ClickHouse/pull/105640) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Отложенное применение selector и индексов репликации в случаях, когда после `JOIN` идёт селективный `LIMIT`, `TopN` или другой `JOIN`. Чтобы управлять количеством столбцов полезной нагрузки для включения отложенных selector-индексов, используйте настройку `query_plan_min_columns_for_join_lazy_indexing` (0 означает, что оптимизация отключена). Чтобы управлять значением `LIMIT`, при котором применяется оптимизация, используйте настройку `query_plan_max_limit_for_join_lazy_indexing`. [#106566](https://github.com/ClickHouse/ClickHouse/pull/106566) ([Hechem Selmi](https://github.com/m-selmi)).
* DP (dynamic programming) переупорядочивание JOIN теперь разрешено с параллельными репликами. [#105889](https://github.com/ClickHouse/ClickHouse/pull/105889) ([Nikita Taranov](https://github.com/nickitat)).
* Улучшен план запроса, когда JOIN использует runtime filters (при включённой по умолчанию настройке `enable_join_runtime_filters`): модель стоимости переупорядочивания JOIN теперь учитывает `WindowTransform` (и другие шаги плана, сохраняющие строки) в правом поддереве и использует базовое количество строк и NDV по каждому столбцу вместо отката к отсутствию статистики. [#107229](https://github.com/ClickHouse/ClickHouse/pull/107229) ([UnamedRus](https://github.com/UnamedRus)).
* Де-виртуализован вывод несоединённых строк в RIGHT и FULL join за счёт их батчинга. [#105679](https://github.com/ClickHouse/ClickHouse/pull/105679) ([Hechem Selmi](https://github.com/m-selmi)).
* Добавлена поддержка packed-методов `keys32` и `keys64` в `HashJoin`. [#107202](https://github.com/ClickHouse/ClickHouse/pull/107202) ([Nikita Taranov](https://github.com/nickitat)).
* Добавлена поддержка packed-методов `keys32` и `keys64` в `Set`. [#107564](https://github.com/ClickHouse/ClickHouse/pull/107564) ([Nikita Taranov](https://github.com/nickitat)).
* Оптимизирована обработка столбцов с типом Nullable в агрегации. [#106015](https://github.com/ClickHouse/ClickHouse/pull/106015) ([Nikita Taranov](https://github.com/nickitat)).
* Улучшена производительность запросов `LIMIT BY`. [#103349](https://github.com/ClickHouse/ClickHouse/pull/103349) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ускорены запросы `ORDER BY ... LIMIT BY`: `LIMIT BY` теперь выполняется внутри каждого параллельного отсортированного потока на этапе `Sort`, если столбцы `LIMIT BY` образуют префикс `ORDER BY`. Это уменьшает число строк, проходящих через финальное слияние сортировки и последующие этапы конвейера. Эта оптимизация управляется новой настройкой `query_plan_push_limit_by_into_sort` (включена по умолчанию). [#104000](https://github.com/ClickHouse/ClickHouse/pull/104000) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ускорены запросы `SELECT ... LIMIT N BY <cols>`, когда `<cols>` являются префиксом ключа сортировки таблицы или становятся им после того, как `WHERE col = const` фиксирует начальные столбцы. При включенной опции `MergeTree` читает данные в порядке первичного ключа, а `LIMIT BY` сначала фильтрует их в стриминговом режиме с памятью O(1) на каждый отсортированный поток, отсекая большую часть данных; затем на уменьшенном наборе данных выполняется обычный `LIMIT BY` для получения итогового результата. Управляется новой настройкой `optimize_limit_by_in_order` (включена по умолчанию). [#105135](https://github.com/ClickHouse/ClickHouse/pull/105135) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ускорены запросы `LIMIT BY` на партиционированных таблицах `MergeTree` за счет выполнения `LIMIT BY` внутри потока каждой партиции параллельно, вместо слияния всех потоков в один перед применением ограничения. Это применимо, когда выражение партиционирования является детерминированной функцией от столбцов `LIMIT BY`, так что ни одна группа `LIMIT BY` не может охватывать две партиции. Управляется новой настройкой `allow_limit_by_partitions_independently` (включена по умолчанию). [#105126](https://github.com/ClickHouse/ClickHouse/pull/105126) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ускорены запросы `LIMIT BY` за счет удаления избыточных ключевых выражений: ключ, который является детерминированной функцией других ключей, отбрасывается (например, `LIMIT 5 BY x, f(x)` превращается в `LIMIT 5 BY x`), а инъективная функция от ключа заменяется ее аргументом (например, `LIMIT 5 BY toString(x)` превращается в `LIMIT 5 BY x`). Это уменьшает число вычисляемых выражений на строку и снижает их стоимость. Управляется новыми настройками `optimize_limit_by_function_keys` и `optimize_injective_functions_in_limit_by`, обе включены по умолчанию. [#106818](https://github.com/ClickHouse/ClickHouse/pull/106818) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ускорены агрегация по сегментам, распределение по бакетам в `grace_hash` join и параллельное партиционирование окон за счет замены хеширования столбцов для каждого фрагмента на kernel, использующий аппаратный CRC32C. [#106538](https://github.com/ClickHouse/ClickHouse/pull/106538) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Оптимизированы `L1Distance`, `L2Distance`, `L2SquaredDistance`, `LinfDistance` и `cosineDistance` для аргументов типа Array с многоцелевой автовекторизацией на x86-64-v4/v3. Для неконстантных аргументов типа Array все они, кроме `LpDistance`, который использует `std::pow` с exponent времени выполнения, теперь могут использовать kernel, векторизованные компилятором. Существующие быстрые пути для константных аргументов на базе AVX-512 и Sapphire Rapids `BFloat16` для `L2Distance` и `cosineDistance` сохранены. [#101310](https://github.com/ClickHouse/ClickHouse/pull/101310) ([Peng](https://github.com/fastio)).
* Улучшена производительность функций `{Norm}Distance` и `dotProduct`. [#106007](https://github.com/ClickHouse/ClickHouse/pull/106007) ([Nikita Taranov](https://github.com/nickitat)).
* Улучшена производительность функции `arrayNorm`. [#106211](https://github.com/ClickHouse/ClickHouse/pull/106211) ([Nikita Taranov](https://github.com/nickitat)).
* В некоторых случаях улучшена производительность `dotProduct`. [#106210](https://github.com/ClickHouse/ClickHouse/pull/106210) ([Nikita Taranov](https://github.com/nickitat)).
* Улучшена производительность AVX-512 const-left путей для `L2Distance` и `cosineDistance` на `Array(Float32)`, `Array(Float64)` и `Array(BFloat16)`, когда длина массива делится на ширину векторизованной обработки без остатка. [#104625](https://github.com/ClickHouse/ClickHouse/pull/104625) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Включена генерация кода AVX-512 для AMD и улучшена генерация кода для `arrayDistance`. [#106505](https://github.com/ClickHouse/ClickHouse/pull/106505) ([Nikita Taranov](https://github.com/nickitat)).
* Улучшена производительность функций `L2DistanceTransposed` и `cosineDistanceTransposed` для типа данных `QBit`. [#106701](https://github.com/ClickHouse/ClickHouse/pull/106701) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Производительность функций `encrypt`, `decrypt`, `tryDecrypt`, `aes_encrypt_mysql` и `aes_decrypt_mysql` увеличена до порядка величины, что позволило восстановить производительность, потерянную при миграции с BoringSSL на OpenSSL 3.x (24.4). [#107339](https://github.com/ClickHouse/ClickHouse/pull/107339) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Улучшена производительность функций `encrypt`, `decrypt` и `halfMD5` за счёт исключения неявных построчных обращений к provider OpenSSL в OpenSSL 3.x. [#99105](https://github.com/ClickHouse/ClickHouse/pull/99105) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Добавлена SIMD-реализация `SHA1`, которая хеширует несколько входных значений параллельно с использованием AVX-512, повышая пропускную способность. [#105459](https://github.com/ClickHouse/ClickHouse/pull/105459) ([Joanna Hulboj](https://github.com/jh0x)).
* Добавлен backend AArch64 ASIMD/NEON для многобуферной реализации `MD5`. [#105563](https://github.com/ClickHouse/ClickHouse/pull/105563) ([Venkata  Vineel ](https://github.com/vyalamar)).
* Исходные blocks теперь укрупняются перед вычислением projection во время `MATERIALIZE PROJECTION`, чтобы уменьшить число временных projection parts и накладные расходы на merge. Ускорение \~3.4x на таблице с 50M строк. [#100047](https://github.com/ClickHouse/ClickHouse/pull/100047) ([Amos Bird](https://github.com/amosbird)).
* Снижена latency `INSERT` для таблиц `MergeTree` с skip-индексами на столбцах `ORDER BY` за счёт исключения избыточных перестановок столбцов при записи части (\~17% на рабочих нагрузках, характерных для traces). [#101101](https://github.com/ClickHouse/ClickHouse/pull/101101) ([Amos Bird](https://github.com/amosbird)).
* Включены SIMD-пути кода Arrow's (NEON на ARM, SSE4.2/AVX2/AVX512 на x86), которые использованы для ускорения декодирования столбцов Parquet `FLOAT`/`DOUBLE`, закодированных с помощью `BYTE_STREAM_SPLIT`. [#106376](https://github.com/ClickHouse/ClickHouse/pull/106376) ([Raúl Marín](https://github.com/Algunenano)).
* Улучшена производительность вставки для столбцов `LowCardinality` с индексами `bloom_filter`. [#106410](https://github.com/ClickHouse/ClickHouse/pull/106410) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Копирование blob в `DiskObjectStorageTransaction::copyFile` распараллелено с использованием отдельного пула потоков для каждого disk. [#105089](https://github.com/ClickHouse/ClickHouse/pull/105089) ([Asya Shneerson](https://github.com/asya-ch)).
* Исключено чтение содержимого файла при использовании input format `One` с file-подобными table functions, такими как `file` и `s3`. [#105157](https://github.com/ClickHouse/ClickHouse/pull/105157) ([Yue Ni](https://github.com/niyue)).
* Запуск `clickhouse` на macOS ускорен примерно в 3 раза за счёт отказа от экспорта динамических символов, которые в противном случае динамический компоновщик обрабатывал бы при каждом запуске. [#107768](https://github.com/ClickHouse/ClickHouse/pull/107768) ([Raúl Marín](https://github.com/Algunenano)).
* Ускорена загрузка файлового кэша при запуске за счет устранения лишнего открытия каталога для каждого ключа кэша. [#107414](https://github.com/ClickHouse/ClickHouse/pull/107414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ускорена загрузка файлового кэша при запуске: после завершения перечисления каталога потоки, выполнявшие его, теперь помогают загружать метаданные кэша, вместо того чтобы оставлять половину потоков бездействующими. [#107416](https://github.com/ClickHouse/ClickHouse/pull/107416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Снижены накладные расходы на запуск процесса `clickhouse` за счет обновления встроенной библиотеки WasmEdge, которая больше не генерирует случайный hash-секрет в глобальном инициализаторе при каждом запуске. [#107869](https://github.com/ClickHouse/ClickHouse/pull/107869) ([Raúl Marín](https://github.com/Algunenano)).
* Основной ключ `MergeTree` и индекс пропуска данных теперь могут отсекать гранулы для фильтров, в которых `ifNull` или `coalesce` оборачивает условие, например `ifNull(key = 0, 0)` или `coalesce(key = 0, 0)`. Такие предикаты — их генераторы запросов часто создают, чтобы преобразовать сравнение с возможным `NULL` в однозначное булево значение — ранее были непрозрачны для анализа индексов и не позволяли пропускать гранулы. Это расширяет действие существующей настройки `allow_key_condition_coalesce_rewrite` (включена по умолчанию). Закрывает [#106264](https://github.com/ClickHouse/ClickHouse/issues/106264). [#106272](https://github.com/ClickHouse/ClickHouse/pull/106272) ([Andy Zhao](https://github.com/andyzzhao)).
* Вычисление индекса пропуска данных для типов `DateTime64` в 26.6 должно потреблять меньше CPU. [#107707](https://github.com/ClickHouse/ClickHouse/pull/107707) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Улучшена производительность анализа текстового индекса при поиске по нескольким токенам за счет оптимизации обработки редких токенов. [#98226](https://github.com/ClickHouse/ClickHouse/pull/98226) ([Anton Popov](https://github.com/CurtizJ)).
* Для сжатых сегментов posting list текстового индекса теперь используется кэш. [#106299](https://github.com/ClickHouse/ClickHouse/pull/106299) ([Anton Popov](https://github.com/CurtizJ)).
* Улучшена производительность универсального алгоритма поиска с исключением для запросов, выбирающих большие непрерывные диапазоны таблицы. [#93813](https://github.com/ClickHouse/ClickHouse/pull/93813) ([Michael Jarrett](https://github.com/EmeraldShift)).
* `S3`-клиенты с одинаковыми конечной точкой и bucket используют общий кэш, что позволяет избежать повторного определения региона. Закрывает [#92482](https://github.com/ClickHouse/ClickHouse/issues/92482). [#96802](https://github.com/ClickHouse/ClickHouse/pull/96802) ([Andrey Zvonov](https://github.com/zvonand)).
* Если запрос содержит `has(<constant array>, <expr>)`, analyzer преобразует узел так, чтобы по возможности использовать более быструю реализацию `in`. [#97341](https://github.com/ClickHouse/ClickHouse/pull/97341) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Когда в `ThreadPool` планируется новая задача, пробуждается рабочий поток, который последним перешел в бездействующее состояние (LIFO), а не произвольный. Это уменьшает фрагментацию памяти из-за кэшей allocator, привязанных к потокам. Порядок обработки задач не меняется. [#100177](https://github.com/ClickHouse/ClickHouse/pull/100177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшена производительность приближенных Runtime Filters и индексов Bloom filter. [#100201](https://github.com/ClickHouse/ClickHouse/pull/100201) ([Christoph Viebig](https://github.com/cv4g)).
* Для `ASOF JOIN` теперь можно использовать алгоритм JOIN `parallel_hash`, распараллеливая построение по различным значениям ключей равенства. Ранее `ASOF` всегда исключался из `parallel_hash`. [#105375](https://github.com/ClickHouse/ClickHouse/pull/105375) ([Greg Maher](https://github.com/gregakinman)).
* Исключено чтение неограниченных входных данных для запросов `INTERSECT` и `EXCEPT`, когда при пустом входе результат заведомо пуст. [#105393](https://github.com/ClickHouse/ClickHouse/pull/105393) ([Yue Ni](https://github.com/niyue)).
* Для различных блокировщиков `MemoryTracker` добавлен `constinit`. [#105490](https://github.com/ClickHouse/ClickHouse/pull/105490) ([Azat Khuzhin](https://github.com/azat)).
* Повышена производительность `bitmapContains` для состояний `groupBitmap` с типами, отличными от `UInt64`, за счёт устранения повторных вызовов `rb_max` при проверке диапазона. [#105960](https://github.com/ClickHouse/ClickHouse/pull/105960) ([Yue Ni](https://github.com/niyue)).
* Ускорены запросы с несмежным доступом для столбцов `LowCardinality`, использующих один словарь. [#103662](https://github.com/ClickHouse/ClickHouse/pull/103662) ([Ivan Babrou](https://github.com/bobrik)).
* Для probe в `HashJoin` добавлен быстрый путь, когда блок содержит одну строку. [#106008](https://github.com/ClickHouse/ClickHouse/pull/106008) ([Nikita Taranov](https://github.com/nickitat)).
* Предикаты из запросов вида `SELECT ... FROM view(SELECT ... FROM remote(...)) WHERE ... ` теперь проталкиваются в запрос, отправляемый на удалённый шард. В оптимизации `allow_push_predicate_ast_for_distributed_subqueries` не хватало обработки табличных функций. [#105986](https://github.com/ClickHouse/ClickHouse/pull/105986) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `enable_join_transitive_predicates` теперь включён по умолчанию. [#103724](https://github.com/ClickHouse/ClickHouse/pull/103724) ([Alexander Gololobov](https://github.com/davenger)).
* Добавлена поддержка функций `multiSearchAny`, `multiSearchAnyUTF8` и `multiMatchAny` в текстовых индексах. Также улучшен анализ текстовых индексов для функции `match`: теперь шаблоны с альтернативными группами позволяют пропускать больше гранул. [#106279](https://github.com/ClickHouse/ClickHouse/pull/106279) ([Anton Popov](https://github.com/CurtizJ)).
* Теперь фильтры, появляющиеся после первоначального отбора PREWHERE (predicate pushdown, runtime filters или явный PREWHERE плюс предложение WHERE, заданное планировщиком), можно объединять с существующим PREWHERE на втором проходе оптимизатора, а не оставлять отдельным шагом Filter над чтением `MergeTree`. [#105445](https://github.com/ClickHouse/ClickHouse/pull/105445) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `QueryConditionCache` теперь отдельно фиксирует отфильтрованные гранулы даже внутри пакетов чтения, которые лишь частично проходят PREWHERE, что уменьшает число меток, повторно считываемых последующими запросами с тем же условием. [#105335](https://github.com/ClickHouse/ClickHouse/pull/105335) ([Han Fei](https://github.com/hanfei1991)).
* Добавлена настройка Keeper `nuraft_use_bg_thread_for_snapshot_io`, включённая по умолчанию, чтобы `NuRaft` читал объекты снимков в фоновом потоке, а не в worker threads Raft. [#106285](https://github.com/ClickHouse/ClickHouse/pull/106285) ([Antonio Andelic](https://github.com/antonio2368)).
* Снижено пиковое потребление памяти при применении полученных снимков в ClickHouse Keeper с `KeeperMemoryStorage`. [#105851](https://github.com/ClickHouse/ClickHouse/pull/105851) ([Antonio Andelic](https://github.com/antonio2368)).
* Выделения LLVM/JIT теперь направляются в выделенную arena jemalloc. Это уменьшает фрагментацию RSS, вызванную чередованием долгоживущих служебных структур JIT с краткоживущими выделениями запросов. Для обсервабилити добавлены новые асинхронные метрики `jemalloc.jit_arena.active_bytes`, `jemalloc.jit_arena.dirty_bytes`, `CompiledExpressionCacheBytesMax` и `CompiledExpressionCacheCountMax`. `SYSTEM DROP COMPILED EXPRESSION CACHE` теперь также удаляет базовые экземпляры CHJIT и очищает JIT arena. [#104113](https://github.com/ClickHouse/ClickHouse/pull/104113) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено избыточное резервирование памяти при чтении разрежённых словарно-кодированных столбцов `Nullable(String)` из `Parquet` с помощью нативного V3-ридера. [#102805](https://github.com/ClickHouse/ClickHouse/pull/102805) ([Francisco](https://github.com/Milias)).
* Исправлена работа `CREATE TABLE ... CLONE AS (and REPLACE / ATTACH PARTITION ... FROM)` на дисках `encrypted`: данные копировались вместо создания жёстких ссылок. [#106731](https://github.com/ClickHouse/ClickHouse/pull/106731) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Улучшена оценка мощности в оптимизаторе плана запроса: столбец, полученный детерминированной одноаргументной функцией (например, `toYear(date)`), теперь наследует число различных значений своего аргумента как верхнюю границу, а не остаётся без статистики, что позволяет точнее переупорядочивать JOIN. [#107757](https://github.com/ClickHouse/ClickHouse/pull/107757) ([Alexander Gololobov](https://github.com/davenger)).
* Снижены накладные расходы CPU на асинхронное логирование при высокой интенсивности логов: потребитель лога теперь уведомляется только при переходе queue из пустого состояния в непустое, а не для каждого сообщения. [#107352](https://github.com/ClickHouse/ClickHouse/pull/107352) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* В большем числе сценариев устранены дублирующиеся вычисления во время выполнения запроса. [#106113](https://github.com/ClickHouse/ClickHouse/pull/106113) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Распараллелена обработка результата рекурсивного CTE: `GROUP BY` и другие операции над большим результатом `WITH RECURSIVE` больше не ограничены одним thread. [#107694](https://github.com/ClickHouse/ClickHouse/pull/107694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшена производительность регистронезависимого поиска подстроки (`positionCaseInsensitiveUTF8`, `ILIKE`, `multiSearchAnyCaseInsensitiveUTF8` и связанных функций) за счёт добавления NEON SIMD-пути на ARM и более широкого AVX2-ядра на x86. [#107882](https://github.com/ClickHouse/ClickHouse/pull/107882) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена регрессия пропускной способности кодека `FPC` для чисел с плавающей точкой на ARM примерно на 16%, возникшая после того, как его таблицы предсказателя начали использовать `VectorWithMemoryTracking`. [#108182](https://github.com/ClickHouse/ClickHouse/pull/108182) ([Groene AI](https://github.com/groeneai)).

<div id="267-improvement">
  #### Улучшения
</div>

* Фоновый `MemoryWorker` теперь периодически обновляет жёсткий лимит памяти сервера на основе текущего использования памяти и объёма памяти, который ядро считает доступным, чтобы ClickHouse оставлял место для других процессов на том же хосте. Формула: `(resident memory + system MemAvailable) * max_server_memory_usage_to_ram_ratio`. Одна и та же настройка сервера `max_server_memory_usage_to_ram_ratio` управляет и ограничением при запуске, и динамической корректировкой; установите её в `0`, чтобы отключить оба механизма. Чтобы сохранить только статическое ограничение при запуске/перезагрузке (как в предыдущих версиях), установите новую настройку сервера `memory_worker_dynamic_hard_limit` в `0`. [#104964](https://github.com/ClickHouse/ClickHouse/pull/104964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка PostgreSQL client для C# в протоколе `PostgreSQL`. Это закрывает [#18611](https://github.com/ClickHouse/ClickHouse/issues/18611). [#80785](https://github.com/ClickHouse/ClickHouse/pull/80785) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Мутации теперь используют analyzer. [#98884](https://github.com/ClickHouse/ClickHouse/pull/98884) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Добавлен более гибкий контроль вывода запросов в CLI. Опция `--echo` теперь принимает необязательное булевое значение и работает как в интерактивном режиме, так и в пакетном режиме. Новые опции `--echo-formatted` и `--echo-query-id` управляют соответственно форматированием выводимых запросов и выводом `query_id`. Опция `--hilite`/`--highlight` теперь также управляет подсветкой выводимых запросов. Побочный эффект этого изменения: `--echo` теперь является опцией с булевым значением, поэтому позиционный запрос, указанный сразу после `--echo` без значения, трактуется как её значение; вместо этого используйте `--echo --query "..."` или `--echo=false`. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Поддерживается изменение схемы вместе с параллельными проверками согласованности для каталогов озёр данных. [#106102](https://github.com/ClickHouse/ClickHouse/pull/106102) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Разрешено использовать cache disk для движков таблиц data lake. [#102017](https://github.com/ClickHouse/ClickHouse/pull/102017) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Исправлено чтение данных таблиц в базах данных `DataLakeCatalog` с `catalog_type = 'onelake'`: теперь по умолчанию используется конечная точка OneLake Blob (`.blob.fabric.microsoft.com`). Установите `onelake_use_blob_endpoint = false`, чтобы сохранить прежнее поведение с DFS-конечной точкой (`.dfs.fabric.microsoft.com`). [#106843](https://github.com/ClickHouse/ClickHouse/pull/106843) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Значение по умолчанию для настройки `persistent_processing_node_ttl_seconds` в `S3(Azure)Queue` изменено с `1 hour` на `6 hours` (это время очистки после нештатного перезапуска сервиса и т. п.). Предыдущее значение по умолчанию подходило для TTL узлов обработки, но оно также используется для TTL блокировки бакета, которая может удерживаться дольше, поэтому 1 часа было недостаточно. [#106838](https://github.com/ClickHouse/ClickHouse/pull/106838) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Размер metadata cache `Iceberg` по умолчанию уменьшен с 1 GB до 128 MB. [#106492](https://github.com/ClickHouse/ClickHouse/pull/106492) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* `query_id` стриминг-задачи `S3Queue` теперь передаётся в зависимые операции вставки в таблицы. [#106494](https://github.com/ClickHouse/ClickHouse/pull/106494) ([Christoph Wurm](https://github.com/cwurm)).
* Поле `used_storages` в `system.query_log` теперь заполняется именем storage engine при выполнении запросов к таблицам через `DataLakeCatalog`. [#100706](https://github.com/ClickHouse/ClickHouse/pull/100706) ([Melvyn Peignon](https://github.com/melvynator)).
* Вы можете проверить, какие значения `operation` и `summary` есть у снимков Iceberg. Полезно для тестирования и отладки. [#106246](https://github.com/ClickHouse/ClickHouse/pull/106246) ([Den Kalantaevskii](https://github.com/Diskein)).
* Финальный запрос multipart-загрузки в `S3` теперь выполняется асинхронно через task tracker, поэтому он может перекрываться с загрузкой последней части, а не выполняться последовательно на этапе finalize. [#105487](https://github.com/ClickHouse/ClickHouse/pull/105487) ([Asya Shneerson](https://github.com/asya-ch)).
* Добавлены четыре новые настройки таблицы `MergeTree` для управления параметрами текстовых индексов по умолчанию: `text_index_dictionary_block_size`, `text_index_dictionary_block_frontcoding_compression`, `text_index_posting_list_block_size` и `text_index_posting_list_codec`. Эти настройки позволяют настраивать поведение текстовых индексов на уровне таблицы без указания параметров в каждом определении индекса. Явно заданные аргументы отдельных индексов по-прежнему имеют приоритет. [#100626](https://github.com/ClickHouse/ClickHouse/pull/100626) ([Anton Popov](https://github.com/CurtizJ)).
* Проекциям разрешено переопределять дополнительные настройки `MergeTree` (сжатие, формат частей, сериализацию), а не только `index_granularity`; для этого используются список разрешённых настроек и валидация. [#101170](https://github.com/ClickHouse/ClickHouse/pull/101170) ([Amos Bird](https://github.com/amosbird)).
* В `system.merges` добавлены столбцы `current_projection`, `current_projection_progress`, `projections_completed` и `projections_remaining`, чтобы отображать прогресс слияния проекций. [#102611](https://github.com/ClickHouse/ClickHouse/pull/102611) ([Amos Bird](https://github.com/amosbird)).
* Исправлена ситуация, при которой `PREWHERE` с подзапросом `IN` по столбцам первичного ключа не использовал индекс первичного ключа для отсечения гранул, что приводило к полному сканированию таблицы вместо чтения только нужных гранул. [#102570](https://github.com/ClickHouse/ClickHouse/pull/102570) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Функция `h3PolygonToCells` теперь применяет ограничение на максимальный размер массива ко всем полигонам `MultiPolygon`, проверяет коды возврата базовой библиотеки H3 и отклоняет аргументы `MultiLineString` вместо того, чтобы молча возвращать пустой результат. [#106399](https://github.com/ClickHouse/ClickHouse/pull/106399) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена новая таблица `system.keeper_snapshots`, доступная только в Keeper, с информацией о локальных снимках ClickHouse Keeper. [#105571](https://github.com/ClickHouse/ClickHouse/pull/105571) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена новая таблица `system.keeper_changelogs`, доступная только в Keeper, с информацией о локальных файлах changelog ClickHouse Keeper (журналах Raft). [#105617](https://github.com/ClickHouse/ClickHouse/pull/105617) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена таблица `system.keeper_cluster`, доступная только в Keeper. Она содержит по одной строке на каждого участника кластера Raft, как его видит текущий Keeper. [#105646](https://github.com/ClickHouse/ClickHouse/pull/105646) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Для watches добавлено больше событий профиля Keeper (server-side + client-side). Закрывает [#97703](https://github.com/ClickHouse/ClickHouse/issues/97703). [#105336](https://github.com/ClickHouse/ClickHouse/pull/105336) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлены `coordination_settings` Keeper для ограничения допуска неподтверждённых записей в журнал `NuRaft` и throttling обратного probe для append-entries. [#106108](https://github.com/ClickHouse/ClickHouse/pull/106108) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлена настройка `enable_compression` для табличной функции `mysql`, движка таблицы `MySQL`, движка базы данных `MySQL`, словаря `SOURCE(MYSQL)` и именованных коллекций. Когда она включена, ClickHouse согласовывает сжатие на уровне протокола MySQL для всех данных, передаваемых по соединению. [#103229](https://github.com/ClickHouse/ClickHouse/pull/103229) ([Bernard Lim](https://github.com/bernardlim)).
* Снижена задержка отмены для запросов, выполняемых по протоколу PostgreSQL: `KILL QUERY` теперь прерывает сериализацию вывода в пределах одного фрагмента, вместо того чтобы ждать отправки клиенту всего фрагмента. [#106535](https://github.com/ClickHouse/ClickHouse/pull/106535) ([Roman Vasin](https://github.com/rvasin)).
* Снижена задержка отмены для запросов, выполняемых по протоколу MySQL: `KILL QUERY` теперь прерывает сериализацию вывода в пределах одного фрагмента, вместо того чтобы ждать отправки клиенту всего фрагмента. [#107228](https://github.com/ClickHouse/ClickHouse/pull/107228) ([Roman Vasin](https://github.com/rvasin)).
* Исправлено чтение длины `auth_response` при рукопожатии MySQL: байт длины `>= 128` интерпретировался как значение размером в несколько гигабайт, поскольку считывался как знаковый `char`. [#107384](https://github.com/ClickHouse/ClickHouse/pull/107384) ([uwezkhan](https://github.com/uwezkhan)).
* `MaterializedPostgreSQL` теперь сопоставляет столбцы PostgreSQL `numeric(p, 0)` с precision больше 76 (например, `numeric(78, 0)`, используемый для 256-битных целых чисел) с ClickHouse `Int256` вместо завершения с ошибкой "Precision too big". Значения, которые не помещаются в `Int256`, отклоняются с понятным сообщением об ошибке. [#107431](https://github.com/ClickHouse/ClickHouse/pull/107431) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Клиенту теперь отправляется Исключение, если не удаётся установить TCP-соединение. [#107317](https://github.com/ClickHouse/ClickHouse/pull/107317) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Пользователи теперь могут вставлять поля `Avro` `Fixed` для 8-/16-/32-/64-битных целочисленных вариантов. [#98139](https://github.com/ClickHouse/ClickHouse/pull/98139) ([Patrick Pichler](https://github.com/patrickpichler)).
* Формат `AvroConfluent` теперь повторяет попытки через Confluent Schema Registry HTTP client при временных сбоях (тайм-аутах транспорта, отказе в соединении, ошибках DNS, HTTP `5xx`/`408`/`429`) с экспоненциальной задержкой, вместо того чтобы прерывать INSERT при первом же сетевом сбое. Политику задают новые настройки `format_avro_schema_registry_max_retries` (по умолчанию `5`) и `format_avro_schema_registry_retry_initial_backoff_ms` (по умолчанию `100`). Ошибки валидации схемы (HTTP `409`, некорректный Avro JSON) по-прежнему считаются фатальными. [#106661](https://github.com/ClickHouse/ClickHouse/pull/106661) ([Groene AI](https://github.com/groeneai)).
* В `system.query_log.used_privileges` теперь записываются привилегии для всех проверок выданных прав доступа, включая проверки, проходящие через путь без генерации исключения `isGranted` (`checkAccessWithFilter`). Ранее записывались только привилегии, проверенные через точки входа с генерацией исключения (`checkAccess` / `checkGrantOption`), из-за чего `READ ON FILE` / `READ ON S3` / `READ ON AZURE` / `READ ON URL` не отображались в журнале аудита для `DESCRIBE`, `CREATE TABLE AS` и подобных запросов, использующих табличные функции `file` / `s3` / `azure` / `url`. Применение правил доступа не изменилось. [#104693](https://github.com/ClickHouse/ClickHouse/pull/104693) ([Alexey Bakharew](https://github.com/alexbakharew)).
* Добавлены асинхронные метрики `TotalUncompressedBytesOfMergeTreeTables` и `TotalUncompressedBytesOfMergeTreeTablesSystem`, которые показывают общий несжатый размер данных, хранящихся в таблицах семейства MergeTree. [#106364](https://github.com/ClickHouse/ClickHouse/pull/106364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлено событие профиля `GlobalMemoryLimitExceeded`, чтобы операторы могли отслеживать моменты, когда достигается общий лимит памяти сервера. [#106466](https://github.com/ClickHouse/ClickHouse/pull/106466) ([Sacheendra Talluri](https://github.com/sacheendra)).
* Счетчики `ExecutableUserDefinedFunction*` в `ProfileEvents` теперь заполняются для UDF `executable_pool`. В `system.query_log.ProfileEvents` теперь отображаются количество вызовов, затраченное реальное время и время ожидания в пуле для каждого вызова, использование CPU дочерними процессами, пиковое потребление памяти, а также объем байтов stdin/stdout. [#105010](https://github.com/ClickHouse/ClickHouse/pull/105010) ([Xu Jia](https://github.com/XuJia0210)) [#105618](https://github.com/ClickHouse/ClickHouse/pull/105618) ([Ilya Andreev](https://github.com/andreev-io)).
* Добавлены асинхронные метрики `ExecutableUserDefinedFunctionMemoryResidentBytes` и `ExecutableUserDefinedFunctionProcesses`, которые показывают объем resident memory (`VmRSS`) и количество работающих процессов пользовательских функций `executable` и `executable_pool`, включая descendant processes и простаивающие воркеры пула. [#107300](https://github.com/ClickHouse/ClickHouse/pull/107300) ([Hanzi Jiang](https://github.com/HanziJiang)).
* Добавлены три асинхронные метрики только для Linux — `MemoryThreadStacksCount`, `MemoryThreadStacksVirtual` и `MemoryThreadStacksResident`, — которые отдельно показывают память стеков pthread, не смешивая ее с остальной анонимной памятью. Включаются через `asynchronous_metrics_enable_heavy_metrics`. Требуются Linux 5.17+ (`prctl(PR_SET_VMA_ANON_NAME)`) и доступный для чтения `/proc/self/smaps`; в противном случае метрики отсутствуют, а ограничение фиксируется в `system.warnings`. [#106230](https://github.com/ClickHouse/ClickHouse/pull/106230) ([Raúl Marín](https://github.com/Algunenano)).
* Асинхронные метрики `MemoryThreadStacks*` (resident/virtual size и количество стеков потоков) теперь доступны в macOS. [#107752](https://github.com/ClickHouse/ClickHouse/pull/107752) ([Raúl Marín](https://github.com/Algunenano)).
* Движки таблиц теперь содержат встроенную документацию, доступную для анализа через новые столбцы `description`, `syntax`, `examples`, `introduced_in` и `related` таблицы `system.table_engines`. [#106177](https://github.com/ClickHouse/ClickHouse/pull/106177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Движки баз данных теперь содержат встроенную документацию, доступную для анализа через новые столбцы `description`, `syntax`, `examples`, `introduced_in` и `related` таблицы `system.database_engines`. [#106178](https://github.com/ClickHouse/ClickHouse/pull/106178) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Типы данных теперь содержат встроенную документацию, доступную для анализа через новые столбцы `description`, `syntax`, `examples`, `introduced_in` и `related` таблицы `system.data_type_families`. [#106180](https://github.com/ClickHouse/ClickHouse/pull/106180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Форматы ввода/вывода теперь содержат встроенную документацию, доступную для анализа через новые столбцы `description`, `examples`, `introduced_in` и `related` таблицы `system.formats`. [#106181](https://github.com/ClickHouse/ClickHouse/pull/106181) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Комбинаторы aggregate function теперь содержат встроенную документацию, доступную для анализа через новые столбцы `description`, `syntax`, `examples`, `introduced_in` и `related` таблицы `system.aggregate_function_combinators`. [#106185](https://github.com/ClickHouse/ClickHouse/pull/106185) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В `клиент ClickHouse`, `clickhouse-local` и встроенный клиент добавлена опция командной строки `--chime`. Когда запрос завершается (успешно или с ошибкой) после выполнения в течение как минимум N секунд, клиент записывает в stderr управляющий ASCII-символ `BEL` (`\x07`). Будет ли терминал издавать звук или показывать визуальную вспышку, зависит от настроек пользователя. По умолчанию опция включена с порогом 5 секунд; передайте `--chime N`, чтобы задать свой порог, или `--chime 0`, чтобы отключить ее. Закрывает [#92718](https://github.com/ClickHouse/ClickHouse/issues/92718). [#104545](https://github.com/ClickHouse/ClickHouse/pull/104545) ([Groene AI](https://github.com/groeneai)).
* В `clickhouse-client`, если терминал не поддерживает bracketed paste, переводы строк во вставленном многострочном запросе теперь сворачиваются в одном буфере редактирования, а не вызывают переход к prompt продолжения для каждой строки. Вставленный запрос остается под одним prompt, а клавиши со стрелками позволяют перемещаться между его строками. Это улучшение работает по мере возможности и опирается на типичное поведение вставки с буферизацией TTY. [#104299](https://github.com/ClickHouse/ClickHouse/pull/104299) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Теперь это также работает при отключенной подсветке синтаксиса (`--highlight 0`). [#106665](https://github.com/ClickHouse/ClickHouse/pull/106665) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлено управление pager во время выполнения в стиле MySQL для `clickhouse-client`/`clickhouse-local`. [#105706](https://github.com/ClickHouse/ClickHouse/pull/105706) ([Azat Khuzhin](https://github.com/azat)).
* `clickhouse-client` теперь корректно работает с терминалами без UTF-8: если кодирование символов терминала не UTF-8 (например, при `LANG=C`), форматы `Pretty` переключаются на рамки ASCII вместо вывода Unicode-символов псевдографики, которые могли бы исказить отображение в терминале. [#106213](https://github.com/ClickHouse/ClickHouse/pull/106213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Очищены отображаемые строки, передаваемые сервером при обработке пакета `Hello` в `clickhouse-client` (имя сервера, часовой пояс, отображаемое имя, шаблоны и сообщения правил пароля), чтобы враждебный сервер не мог внедрить байты, которые клиент отобразит как есть; также ограничен их размер для защиты от неограниченного выделения памяти. [#105243](https://github.com/ClickHouse/ClickHouse/pull/105243) ([Raúl Marín](https://github.com/Algunenano)).
* Web UI теперь отображает результат как изображение, если запрос использует выходной формат изображения, например `FORMAT PNG`, вместо показа raw bytes в виде таблицы. [#107638](https://github.com/ClickHouse/ClickHouse/pull/107638) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена настройка `output_format_pretty_use_nbsp_for_padding`, чтобы отображать дополнение в табличной раскладке табличных форматов `Pretty` как `U+00A0` NO-BREAK SPACE, когда `output_format_pretty_grid_charset` равно `UTF-8`. Это помогает сохранять выравнивание таблицы при копировании вывода `Pretty` в инструменты, которые схлопывают обычные пробелы. По умолчанию настройка отключена, а вывод с кодировкой `ASCII` сохраняет обычные пробелы. [#103559](https://github.com/ClickHouse/ClickHouse/pull/103559) ([Ashrith Bandla](https://github.com/ashrithb)).
* Универсальный скрипт установки теперь также устанавливает `clickhousectl` в `~/.local/bin` на Linux и macOS, создавая символьную ссылку `chctl`. Чтобы пропустить это, установите `CLICKHOUSE_ONLY=1`. [#105399](https://github.com/ClickHouse/ClickHouse/pull/105399) ([Alasdair Brown](https://github.com/sdairs)).
* Исправлена ложная ошибка `Syntax error: Unterminated quoted string`, которая могла периодически возникать при установке ClickHouse через `curl https://clickhouse.com/ | sh`, если в текущем каталоге уже существовал бинарный файл `clickhouse`. [#106417](https://github.com/ClickHouse/ClickHouse/pull/106417) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена высота левой панели на странице `play.html`, когда открыт web terminal, чтобы кнопка переключения терминала внизу оставалась видимой. [#105087](https://github.com/ClickHouse/ClickHouse/pull/105087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Устранено автоматическое выделение единственного запроса в Web UI после его выполнения. [#105711](https://github.com/ClickHouse/ClickHouse/pull/105711) ([Joey Yu](https://github.com/itsjoeoui)).
* Web SQL UI теперь расширяет редактор запросов, если запрос выше текущей высоты редактора не более чем на 30%. [#105713](https://github.com/ClickHouse/ClickHouse/pull/105713) ([Joey Yu](https://github.com/itsjoeoui)).
* В веб-интерфейсе значки нижнего меню (веб-терминал и GitHub) теперь располагаются горизонтально, когда левая панель развернута, что дает списку баз данных и таблиц больше вертикального пространства. [#106427](https://github.com/ClickHouse/ClickHouse/pull/106427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В веб-интерфейсе (`play.html`) нажатие `Escape` теперь снимает выделение с текущей ячейки таблицы результатов. [#107777](https://github.com/ClickHouse/ClickHouse/pull/107777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшена панель баз данных в Web SQL UI (Play): добавлена всплывающая подсказка на значке базы данных, кнопка скрытия панели, кликабельные названия баз данных и таблиц во всю ширину, а также исправлено смещение ширины панели при появлении полосы прокрутки. [#108013](https://github.com/ClickHouse/ClickHouse/pull/108013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена настройка сервера (`min_allocation_size_to_throw_on_memory_limit`), позволяющая любой операции выделения памяти сгенерировать исключение `MEMORY_LIMIT_EXCEEDED`; это должно помочь предотвратить OOM. [#105265](https://github.com/ClickHouse/ClickHouse/pull/105265) ([Azat Khuzhin](https://github.com/azat)).
* Разрешена аутентификация `NONE` для SSH (это предотвращает запрос пароля для пользователей `no_password`). [#105476](https://github.com/ClickHouse/ClickHouse/pull/105476) ([Azat Khuzhin](https://github.com/azat)).
* В `clickhouse su` перед сбросом привилегий теперь очищается список дополнительных групп, что соответствует поведению `/bin/su` и `sudo`. Ранее процесс после сброса привилегий наследовал дополнительные группы пользователя, вызвавшего команду. [#105247](https://github.com/ClickHouse/ClickHouse/pull/105247) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена поддержка `BFloat16` для функций числовых предикатов (`isFinite`, `isNaN`). [#105391](https://github.com/ClickHouse/ClickHouse/pull/105391) ([Mohamed Hussain S](https://github.com/mohhddhassan)).
* Снижено использование памяти полигональных словарей (`polygon_index_cell`, `polygon_index_each`), а также исправлено отображение в `system.dictionaries.bytes_allocated` индекса поиска, который они строят. [#105431](https://github.com/ClickHouse/ClickHouse/pull/105431) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена работа consumers движка таблицы Kafka, которые после назначения партиций продолжали использовать короткий интервал опроса: теперь они возвращаются к настроенному `kafka_poll_timeout_ms`, что позволяет избежать избыточных пустых опросов, слишком мелких вставляемых частей и лишних накладных расходов на слияние после перебалансировок. [#100431](https://github.com/ClickHouse/ClickHouse/pull/100431) ([sugaf1204](https://github.com/sugaf1204)).
* При удалении неиспользуемых столбцов в плане запроса столбцы теперь идентифицируются по позиции, а не по имени. Это позволяет удалять неиспользуемые столбцы при наличии дублирующихся имен столбцов. [#100586](https://github.com/ClickHouse/ClickHouse/pull/100586) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* ClickHouse теперь выдает корректное исключение при попытке использовать `table_readonly` для движков с репликацией, а также улучшена обработка исключений для DDL-запросов (и `DatabaseReplicated`), связанных с этой настройкой. [#100950](https://github.com/ClickHouse/ClickHouse/pull/100950) ([alesapin](https://github.com/alesapin)). `OPTIMIZE TABLE ... ON CLUSTER` и другие DDL больше не зависают, если у целевой таблицы задано `table_readonly = 1`. Эта настройка теперь генерирует новый отдельный код ошибки `TABLE_IS_PERMANENTLY_READ_ONLY`, который `DDLWorker` считает не подлежащим повторной попытке (в отличие от временного `TABLE_IS_READ_ONLY`, возникающего при временных отключениях `ReplicatedMergeTree` от ZooKeeper). Настройка `table_readonly` теперь также явно запрещена для `ReplicatedMergeTree` — как при создании, так и через `ALTER MODIFY SETTING`. В продолжение [#97652](https://github.com/ClickHouse/ClickHouse/issues/97652). [#105109](https://github.com/ClickHouse/ClickHouse/pull/105109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены обновления refreshable materialized view, которые могли завершаться ошибкой `UNKNOWN_TABLE` после замены целевой таблицы (например, через `EXCHANGE TABLES` или удаление с последующим повторным созданием): теперь при обновлении целевая таблица определяется по имени, а не по устаревшему UUID. [#102724](https://github.com/ClickHouse/ClickHouse/pull/102724) ([Seva Potapov](https://github.com/seva-potapov)).
* Добавлена настройка `wait_for_part_commit_in_dependent_materialized_views` (по умолчанию `false`). Когда `SELECT` в materialized view читает данные из собственной исходной таблицы (например, через `INNER JOIN` с источником), каскад мог пропустить строку, вставляемую в данный момент, поскольку вставленный part коммитится только после выполнения зависимых представлений. При включении этой настройки коммит part выполняется до срабатывания зависимых представлений, поэтому они видят строку, находящуюся в процессе вставки, ценой снижения параллелизма вставки. [#105943](https://github.com/ClickHouse/ClickHouse/pull/105943) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Не подавлять фатальные ошибки (например, `MEMORY_LIMIT_EXCEEDED`) в `tryDeserialize`. [#106808](https://github.com/ClickHouse/ClickHouse/pull/106808) ([Azat Khuzhin](https://github.com/azat)).
* Лениво проверять право `CREATE TEMPORARY TABLE` в `InverseDictionaryLookupPass`. [#107098](https://github.com/ClickHouse/ClickHouse/pull/107098) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка `ILLEGAL_TYPE_OF_ARGUMENT` для distributed queries с `serialize_query_plan = 1`, содержащих лямбда-выражение с константным аргументом (например, `arrayMap(t -> t.2, ...)`). Константные столбцы узлов `INPUT` в `ActionsDAG` теперь сохраняются при сериализации плана запроса. [#107124](https://github.com/ClickHouse/ClickHouse/pull/107124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Десериализация состояний агрегатных функций `contingency`, `cramersV`, `cramersVBiasCorrected` и `theilsU` теперь проверяет, что сохранённые счётчики образуют корректную таблицу сопряжённости, и в противном случае выбрасывает Исключение `CORRUPTED_DATA`. Закрывает [#106899](https://github.com/ClickHouse/ClickHouse/issues/106899). [#107185](https://github.com/ClickHouse/ClickHouse/pull/107185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Сохраняются исходные коды ошибок для исключений, обёрнутых в `arrow::Status`. [#107267](https://github.com/ClickHouse/ClickHouse/pull/107267) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена поддержка `keyed_by_normalized_query_hash` для квот, определённых в статической конфигурации сервера (`users.xml`), в соответствии с существующим синтаксисом DDL `CREATE QUOTA ... KEYED BY normalized_query_hash`. [#107654](https://github.com/ClickHouse/ClickHouse/pull/107654) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Настройка compatibility больше не применяет устаревшие настройки, поэтому не помечает их как изменённые и не выдаёт предупреждения об устаревших настройках. [#107737](https://github.com/ClickHouse/ClickHouse/pull/107737) ([Maxim Orlovsky](https://github.com/UberDever)).
* Async inserts больше не записывают в лог полный список `query_id` на уровне `trace`/`debug`, что с версии 26.2 могло чрезмерно раздувать `text_log` в services с интенсивным трафиком async inserts. Подробные строки теперь выводятся на уровне `test`. [#107852](https://github.com/ClickHouse/ClickHouse/pull/107852) ([Sema Checherinda](https://github.com/CheSema)).
* Улучшение файлового кэша: невалидные записи приоритета больше не удерживают `KeyMetadata`. Продолжение [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387). [#107903](https://github.com/ClickHouse/ClickHouse/pull/107903) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Улучшение метрик `FileCache`. [#106116](https://github.com/ClickHouse/ClickHouse/pull/106116) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Не выводить преамбулу "Stack trace (when copying this message, always include the lines below):" в сообщениях об исключениях, если трассировка стека на самом деле пуста. [#106524](https://github.com/ClickHouse/ClickHouse/pull/106524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено потенциальное переполнение в `roundUpToMultiple` при вычислении выравнивания границы файлового кэша для очень больших смещений. [#92579](https://github.com/ClickHouse/ClickHouse/pull/92579) ([Bharat Nallan](https://github.com/bharatnc)).
* `EXPLAIN SYNTAX` теперь единообразно форматирует операторы как вызовы функций в выводе explain (например, `plus(1, 2)` вместо `1 + 2`). [#94681](https://github.com/ClickHouse/ClickHouse/pull/94681) ([Mohamed Abdelhalim ](https://github.com/1abdelhalim)).
* Улучшены подсказки имён таблиц в сообщениях об ошибках: больше не предлагается то же самое имя, а в подсказку теперь включается и имя базы данных (например, "Maybe you meant `other_db.my_table`?"). [#95116](https://github.com/ClickHouse/ClickHouse/pull/95116) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* Улучшено сообщение об ошибке для неразрешённых идентификаторов в запросах без предложения `FROM`: теперь оно предлагает добавить `FROM`. [#101769](https://github.com/ClickHouse/ClickHouse/pull/101769) ([Yash ](https://github.com/Onyx2406)).
* Добавлена опция `EXPLAIN PIPELINE` для компактного отображения повторяющихся цепочек процессоров. [#104662](https://github.com/ClickHouse/ClickHouse/pull/104662) ([Yue Ni](https://github.com/niyue)).
* Исправлено чтение за пределами буфера кучи при построении сообщения о синтаксической ошибке (`UTF8::computeWidthImpl` через `parseQuery.cpp`), возникавшее, когда парсер откатывался назад за первую точку с запятой / токен конца потока; в release-сборках в отображаемую ошибку могли попадать байты из соседней памяти кучи, а сборки с ASan аварийно завершались. [#105086](https://github.com/ClickHouse/ClickHouse/pull/105086) ([Groene AI](https://github.com/groeneai)).
* Hive-стратегия партиционирования теперь используется по умолчанию в настройке compatibility `file_like_engine_default_partition_strategy`. [#86746](https://github.com/ClickHouse/ClickHouse/pull/86746) ([Kseniia Sumarokova](https://github.com/kssenii)).
* На macOS теперь используется больший стек потока (8 MiB), чтобы соответствовать значению по умолчанию в Linux; это устраняет редкие сбои сервера из-за переполнения стека во время JIT-компиляции. [#107033](https://github.com/ClickHouse/ClickHouse/pull/107033) ([Raúl Marín](https://github.com/Algunenano)).
* Ограничение размера временного хранилища для `clickhouse-local` больше не жёстко задано на уровне 1 GiB. Значение по умолчанию увеличено до 1 TiB, и его можно настроить с помощью настройки сервера `max_temporary_data_on_disk_size`. [#106689](https://github.com/ClickHouse/ClickHouse/pull/106689) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В `clickhouse-disks` добавлена команда `read-checksums`. Она читает файл `checksums.txt` из `MergeTreeDataPart` и выводит его в виде удобочитаемой таблицы с полями, разделёнными табуляцией. [#106901](https://github.com/ClickHouse/ClickHouse/pull/106901) ([Asya Shneerson](https://github.com/asya-ch)).
* В `clickhouse-disks` добавлена команда `read-bitmap`. [#107834](https://github.com/ClickHouse/ClickHouse/pull/107834) ([murphy-4o](https://github.com/murphy-4o)).
* Chdig: включён TLS для защищённых соединений (раньше это приводило либо к "unknown setting `skip_verify`", либо к "connection reset by peer"). [#105864](https://github.com/ClickHouse/ClickHouse/pull/105864) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.5.1](https://github.com/azat/chdig/releases/tag/v26.5.1). [#105918](https://github.com/ClickHouse/ClickHouse/pull/105918) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.6.1](https://github.com/azat/chdig/releases/v26.6.1) — `{asynchronous_,}metric_log`, шаблоны запросов, тепловые карты, журналы/трассировки, сохраняемые на диске (ранее на 1 час трассировок могло уходить >40GiB). [#107678](https://github.com/ClickHouse/ClickHouse/pull/107678) ([Azat Khuzhin](https://github.com/azat)).
* Конфигурация сервера (`programs/server/config.xml`) теперь задает `keep_alive_timeout` равным 30 (ранее 10), что соответствует фактическому задокументированному и реализованному значению по умолчанию. [#107779](https://github.com/ClickHouse/ClickHouse/pull/107779) ([Dan Checkoway](https://github.com/dcheckoway)).
* Значение по умолчанию для настройки сервера `disk_connections_rcvbuf` изменено с `0` (автотюнинг TCP ядра) на `204800` (200 КБ), что ограничивает TCP-буфер приема на сокет для подключений дисков объектного хранилища (`S3`/`Azure`/`GCS`). [#107859](https://github.com/ClickHouse/ClickHouse/pull/107859) ([Sema Checherinda](https://github.com/CheSema)).
* Оптимизатор `PREWHERE` теперь перед оценкой селективности группирует конъюнкты, ссылающиеся на один и тот же набор столбцов, поэтому условия вида `a > 2500 AND a < 2502` оцениваются совместно как единый диапазон, а не как два независимых предиката, что дает более точную оценку селективности. [#106337](https://github.com/ClickHouse/ClickHouse/pull/106337) ([Han Fei](https://github.com/hanfei1991)).
* Добавлены защищенная и обычная реализации сокетов с поддержкой silk fiber. [#107680](https://github.com/ClickHouse/ClickHouse/pull/107680) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлены искаженное сообщение об ошибке (перепутанные аргументы) и опечатка в функции `nested`. [#108031](https://github.com/ClickHouse/ClickHouse/pull/108031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В `clickhouse-disks` добавлена команда `sed`, которая применяет sed-выражение к указанному пути с изменением файла на месте. [#107131](https://github.com/ClickHouse/ClickHouse/pull/107131) ([Asya Shneerson](https://github.com/asya-ch)).
* Для движка базы данных `MaterializedPostgreSQL` добавлена настройка `materialized_postgresql_use_extended_date_and_time_types`, задаваемая при создании. По умолчанию (если она включена) столбцы PostgreSQL `date`/`timestamp` определяются как `Date32`/`DateTime64`; если при `CREATE DATABASE` задать ей значение `0`, будут определяться более узкие типы `Date`/`DateTime`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* Добавлена возможность удалять отсоединённые части с суффиксом `tryN`. [#58957](https://github.com/ClickHouse/ClickHouse/pull/58957) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлено исключение `MULTIPLE_EXPRESSIONS_FOR_ALIAS` для запросов с повторяющимися псевдонимами проекций (например, `SELECT *, day + 365 AS day`) во вложенных подзапросах при выполнении с параллельными репликами. [#80310](https://github.com/ClickHouse/ClickHouse/pull/80310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой `splitMultipartQuery` выдавал ошибку "Empty query" для запросов, заканчивающихся комментарием после точки с запятой. [#85491](https://github.com/ClickHouse/ClickHouse/pull/85491) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено исключение в `ARRAY JOIN`: `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink`, возникавшее при использовании числовых типов `LowCardinality` (issue [#57243](https://github.com/ClickHouse/ClickHouse/issues/57243)). [#91784](https://github.com/ClickHouse/ClickHouse/pull/91784) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлено исключение `NOT_FOUND_COLUMN_IN_BLOCK` при использовании `LIMIT BY` с константными столбцами вместе с `DISTINCT` и `ORDER BY` в новом analyzer. [#93195](https://github.com/ClickHouse/ClickHouse/pull/93195) ([Ashrith Bandla](https://github.com/ashrithb)).
* Исправлена проблема, из-за которой столбцы `NOT NULL` незаметно создавались как `Nullable`, когда `data_type_default_nullable = 1`, а таблица создавалась в базе данных `Replicated` или через предложение `ON CLUSTER`. [#97572](https://github.com/ClickHouse/ClickHouse/pull/97572) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Повышена стабильность соединения с HiveCatalog за счёт добавления механизма автоматических повторных попыток и логики переподключения для обработки ошибок TTransportException при взаимодействии с Hive Metastore. [#98471](https://github.com/ClickHouse/ClickHouse/pull/98471) ([Dmitriy Borisenko](https://github.com/otselnik)).
* Исправлена работа функции `nested` (используемой внутри `ARRAY JOIN`), которая удаляла `LowCardinality` из типов столбцов, из-за чего `Array(LowCardinality(String))` в выводе превращался в `Array(String)`. Закрывает [#95582](https://github.com/ClickHouse/ClickHouse/issues/95582). [#98974](https://github.com/ClickHouse/ClickHouse/pull/98974) ([Yash ](https://github.com/Onyx2406)).
* Исправлено исключение "Distributed task iterator is not initialized" при использовании `url`, `s3` или подобных табличных функций в запросах с включённой параллельной репликой. [#100146](https://github.com/ClickHouse/ClickHouse/pull/100146) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение logical error при чтении таблиц Iceberg, версия формата которых была повышена внешним инструментом (например, Spark). [#100407](https://github.com/ClickHouse/ClickHouse/pull/100407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Функции `like`, `ilike`, `notLike`, `notILike` и `match` теперь поддерживают константный haystack с неконстантной needle (например, `'foo' LIKE pattern_column`), тогда как раньше это приводило к `ILLEGAL_COLUMN`. [#100479](https://github.com/ClickHouse/ClickHouse/pull/100479) ([Yash ](https://github.com/Onyx2406)).
* Исправлено неверное количество строк, возвращаемых запросом `MaterializedView` при `query_plan_enable_optimizations = 0`, когда представление сопоставляет целочисленный столбец со столбцом `Bool`. [#100692](https://github.com/ClickHouse/ClickHouse/pull/100692) ([Maksim Moisiuk](https://github.com/Maximus5)).
* Исправлено исключение (`LOGICAL_ERROR: 'PREWHERE passed to format that doesn't support it'`) при чтении таблиц Iceberg, содержащих файлы данных ORC, с включённой PREWHERE optimization. [#101206](https://github.com/ClickHouse/ClickHouse/pull/101206) ([Groene AI](https://github.com/groeneai)).
* Исправлено состояние гонки в RestCatalog. [#101216](https://github.com/ClickHouse/ClickHouse/pull/101216) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлена ошибка `NOT_FOUND_COLUMN_IN_BLOCK` при выполнении SELECT из VIEW поверх таблицы с обычной проекцией. [#101218](https://github.com/ClickHouse/ClickHouse/pull/101218) ([Amos Bird](https://github.com/amosbird)).
* Исправлены устаревшие метаданные в FileLog в случае, когда файл удаляется и создается заново. [#101408](https://github.com/ClickHouse/ClickHouse/pull/101408) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено переупорядочивание JOIN, которое без ошибок отбрасывало несовпавшие строки из `RIGHT`/`LEFT JOIN`, когда он соединялся через запятую (cross) с другой таблицей, например `t1 RIGHT JOIN t2 ON t1.c = t2.c, t3`. Ранее запрос возвращал результат inner join вместо outer join. [#101684](https://github.com/ClickHouse/ClickHouse/pull/101684) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором предложение `FORMAT` поглощалось `INSERT` вместо применения к выводу `EXPLAIN` в `EXPLAIN INSERT INTO ... SELECT ... FORMAT ...`. [#101772](https://github.com/ClickHouse/ClickHouse/pull/101772) ([Yash ](https://github.com/Onyx2406)).
* Исправлен некорректный выбор кодека сжатия для частей `MergeTree`, когда на уровне таблицы явно задавалась настройка `default_compression_codec`. Части, записанные при вставке, во время слияний и для проекций, использовали общесерверный кодек по умолчанию вместо настройки уровня таблицы (теперь это также охватывает пустую часть, создаваемую полностью удаляющей мутацией). [#101784](https://github.com/ClickHouse/ClickHouse/pull/101784) ([Yash ](https://github.com/Onyx2406)).
* Теперь отрицательные значения `Float64` (например, `-100.5`) в настройках рабочей нагрузки, таких как `max_bytes_per_second`, `max_cpus` и т. д., отклоняются. Ранее проверялись только отрицательные целые числа, из-за чего отрицательные числа с плавающей точкой могли незаметно создавать некорректные узлы scheduler. Закрывает [#101825](https://github.com/ClickHouse/ClickHouse/issues/101825). [#101842](https://github.com/ClickHouse/ClickHouse/pull/101842) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `LOGICAL_ERROR` ("Port is not connected", code 49), которая могла возникать при выполнении запросов с VIEW, содержащим aggregation внутри JOIN. [#102574](https://github.com/ClickHouse/ClickHouse/pull/102574) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлены несогласованные метаданные части после мутаций столбцов с нестандартными сериализациями. [#102817](https://github.com/ClickHouse/ClickHouse/pull/102817) ([Eduard Karacharov](https://github.com/korowa)).
* Исправлено обновление метаданных перед выполнением мутации, что устраняет [#96806](https://github.com/ClickHouse/ClickHouse/issues/96806). [#102882](https://github.com/ClickHouse/ClickHouse/pull/102882) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлено значительное замедление запросов SELECT при одновременном выполнении `INSERT`. Ранее конвейер `INSERT` резервировал слоты CPU вплоть до `max_threads` в начале запроса, даже если большинство слотов так и не использовалось, из-за чего параллельные SELECT оставались без ресурсов. Теперь выделение слотов CPU происходит по требованию: конвейер запрашивает слоты только по мере фактической передачи распараллеливаемой работы. Это применяется как к управлению параллелизмом, так и к вытесняющему планировщику CPU для рабочих нагрузок. Новая настройка сервера `concurrent_threads_lazy_allocation` (по умолчанию `true`) служит механизмом отката. [#102928](https://github.com/ClickHouse/ClickHouse/pull/102928) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлено распространение `NULL` при чтении подстолбцов, извлечённых из столбцов `Nullable(Tuple(...))`. Например, для `tup Nullable(Tuple(s Nullable(String)))` запрос `SELECT tup.s` теперь корректно возвращает `NULL` в строках, где внешний кортеж равен `NULL`, вместо мусорных значений. Это охватывает все типы элементов, которые могут представлять `NULL`: `Nullable`, `Dynamic`, `Variant` и `LowCardinality(Nullable(...))`. Закрывает [#105356](https://github.com/ClickHouse/ClickHouse/issues/105356). [#102942](https://github.com/ClickHouse/ClickHouse/pull/102942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Теперь выбрасывается `INCORRECT_DATA` вместо `LOGICAL_ERROR`, если данные, переданные клиентом в формате Native, обрезаны или имеют неверный формат. [#102975](https://github.com/ClickHouse/ClickHouse/pull/102975) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* В операцию чтения из ObjectStorage добавлена проверка отмены. Закрывает [#98165](https://github.com/ClickHouse/ClickHouse/issues/98165). [#103016](https://github.com/ClickHouse/ClickHouse/pull/103016) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Теперь при декодировании параметров aggregate function учитывается `input_format_binary_max_type_complexity`. Закрывает [#102903](https://github.com/ClickHouse/ClickHouse/issues/102903). [#103026](https://github.com/ClickHouse/ClickHouse/pull/103026) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен вывод nullable для geo-столбцов в ридере Parquet на базе Arrow. Закрывает [#101845](https://github.com/ClickHouse/ClickHouse/issues/101845). [#103032](https://github.com/ClickHouse/ClickHouse/pull/103032) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено, что `recursiveRemoveLowCardinality` стирал пользовательские имена geometry type (например, `LineString` вместо `Ring`, `MultiLineString` вместо `Polygon`), что приводило к неверной интерпретации geometry type. Закрывает [#103207](https://github.com/ClickHouse/ClickHouse/issues/103207). [#103041](https://github.com/ClickHouse/ClickHouse/pull/103041) ([Joanna Hulboj](https://github.com/jh0x)).
* Исправлено, что `input_format_max_block_size_bytes` молча игнорировался при разборе `INSERT`, когда `max_insert_block_size_bytes` равен `0` (значение по умолчанию). Теперь этот параметр корректно ограничивает размер блоков, формируемых построчными входными форматами. [#103068](https://github.com/ClickHouse/ClickHouse/pull/103068) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Исправлено, что ClickHouse иногда создавал недопустимые токены GSSAPI из-за некорректного удаления завершающих null-байтов. [#103114](https://github.com/ClickHouse/ClickHouse/pull/103114) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Исправлено вычисление констант на этапе analyzer для функций с short-circuit (`if`, `multiIf`, `and`, `or` и т. д.), чтобы статически недостижимые ветви больше не вызывали исключения на этапе анализа. Например, `WITH 0 AS n SELECT multiIf(n = 0, 0, intDiv(100, n))` теперь корректно возвращает `0` вместо ошибки деления на ноль. [#103157](https://github.com/ClickHouse/ClickHouse/pull/103157) ([Peng](https://github.com/fastio)).
* `EXPLAIN SYNTAX` раскрывает parameterized views. [#103263](https://github.com/ClickHouse/ClickHouse/pull/103263) ([Jordi Villar](https://github.com/jrdi)).
* Исправлено повреждение данных при записи в Parquet (и другие форматы с трейлером, такие как ORC и Arrow) в HDFS через `INSERT INTO FUNCTION hdfs(...)`. Начиная с версии 26.1, `WriteBufferFromHDFS` не сбрасывал свой рабочий buffer при `finalize()`, поэтому последние вплоть до `DBMS_DEFAULT_BUFFER_SIZE` байт каждого файла молча терялись, включая нижний колонтитул `PAR1` файла Parquet. При чтении таких файлов возвращалась ошибка `Not a Parquet file (wrong magic bytes at the end of file)`. [#103268](https://github.com/ClickHouse/ClickHouse/pull/103268) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты и возможная logical error для correlated subqueries, когда ограничение на размер JOIN (`max_rows_in_join` / `max_bytes_in_join`) задано вместе с `join_overflow_mode = 'break'`. JOIN, который внутренне создаётся для вычисления correlated subquery, теперь игнорирует эти пользовательские ограничения, поэтому больше не может преждевременно останавливаться и отбрасывать строки. [#103322](https://github.com/ClickHouse/ClickHouse/pull/103322) ([Groene AI](https://github.com/groeneai)).
* Исправлена bug, из-за которой `ALTER TABLE ... MODIFY SETTING` для таблицы `EmbeddedRocksDB` мог сохранять недопустимое значение настройки в metadata file таблицы, даже если server отклонял запрос. При следующем перезапуске server таблицу не удавалось подключить из-за `CANNOT_PARSE_BOOL` (или похожей ошибки разбора), а в databases, где ошибки загрузки считаются фатальными, server отказывался запускаться. Недопустимые значения настроек теперь отклоняются до записи каких-либо metadata. [#103417](https://github.com/ClickHouse/ClickHouse/pull/103417) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение server при создании таблицы с движком object storage (`AzureBlobStorage`, `DeltaLakeAzure`, `S3`, `HDFS`) с неподдерживаемым числом arguments. Теперь server возвращает корректную ошибку `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` вместо аварийного завершения в debug/sanitizer-сборках. [#103544](https://github.com/ClickHouse/ClickHouse/pull/103544) ([Groene AI](https://github.com/groeneai)).
* Исправлено падение server при parsing параметров data type `JSON` и `Dynamic`, когда abstract syntax tree (AST) был структурно некорректным (например, созданным AST-фаззером): у выражения параметра `equals(name, value)` могло оказаться меньше двух children, которые `DataTypeObject` и `DataTypeDynamic` затем разыменовывали без проверки границ. [#103545](https://github.com/ClickHouse/ClickHouse/pull/103545) ([Groene AI](https://github.com/groeneai)).
* Исправлены logical errors в analyzer при конфликте column names в lambda, используемой в prewhere. Закрывает [#103584](https://github.com/ClickHouse/ClickHouse/issues/103584). [#103627](https://github.com/ClickHouse/ClickHouse/pull/103627) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена спорадическая `Logical error: 'Database <name> not found'` из `DataLakeConfiguration::getCatalog`, когда таблица с движком `Iceberg` загружалась в обычной database во время асинхронной загрузки metadata. [#103775](https://github.com/ClickHouse/ClickHouse/pull/103775) ([Groene AI](https://github.com/groeneai)).
* Исправлены ошибки `MULTIPLE_EXPRESSIONS_FOR_ALIAS`, возникавшие на удалённых replicas при выполнении queries, которые ссылаются на псевдонимы projection внутри `PREWHERE` / `WHERE` / `HAVING` / `QUALIFY` (например, `SELECT x AS a, y AS b, (a AND b) AS c FROM t PREWHERE c`) или `SELECT *` для self-join с пересекающимися column names, с параллельными replicas и `parallel_replicas_local_plan = 0`. Закрывает [#74324](https://github.com/ClickHouse/ClickHouse/issues/74324). [#103806](https://github.com/ClickHouse/ClickHouse/pull/103806) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение server, когда запрос использует вложенные сравнения `coalesce`/`ifNull` (например, `WHERE coalesce(a, b, coalesce(c, d), e) = const`) в таблице `MergeTree` с несколькими `minmax` индексами пропуска данных и `use_skip_indexes_for_disjunctions = 1`. Перезапись индексом пропуска данных для `<op>(coalesce(...), const)` теперь рекурсивно применяется к внутренним аргументам coalesce, так что RPN для `KeyCondition` каждого индекса соответствует RPN шаблона, как уже предполагает код отслеживания дизъюнкций. [#103929](https://github.com/ClickHouse/ClickHouse/pull/103929) ([Groene AI](https://github.com/groeneai)).
* Исправлено: `max_rows_to_transfer` и `max_bytes_to_transfer` больше не игнорируются для запросов `GLOBAL IN` и `GLOBAL JOIN` в новом анализаторе. Теперь эти настройки вызывают `SET_SIZE_LIMIT_EXCEEDED` (или прерывают выполнение — в зависимости от `transfer_overflow_mode`), если материализованная external table превышает заданный лимит, как и в старом анализаторе. Закрывает [#103333](https://github.com/ClickHouse/ClickHouse/issues/103333). [#104119](https://github.com/ClickHouse/ClickHouse/pull/104119) ([Groene AI](https://github.com/groeneai)).
* Исправлены избыточные чтения метаданных каталога/S3, когда `INSERT` или DDL-оператор обращается к несуществующей таблице в database каталога DataLake при включенном `show_data_lake_catalogs_in_system_tables`. Ранее механизм подсказок при опечатках загружал полные метаданные Iceberg для каждой таблицы во всём каталоге, что на больших catalogs могло приводить к исчерпанию памяти. [#104124](https://github.com/ClickHouse/ClickHouse/pull/104124) ([DQ](https://github.com/il9ue)).
* Исправлены падение (`LOGICAL_ERROR` "Columns are assumed to be of identical types, but they are different in Nullable" в debug-сборках, SIGSEGV из-за нулевого указателя в `ColumnString::compareAt` в release-сборках) и неверные результаты, которые могли возникать в запросах с `direct` `join_algorithm` и правой таблицей `MergeTree`, если plan lookup-поиска переставлял столбцы во время optimization. Столбцы правой стороны могли попадать в слоты с неверными именами, из-за чего filter или сравнение по join key выполнялись по столбцу неправильного типа. Проблема обнаружена AST-фаззером как STID 2139-5111 и зарегистрирована в [#107272](https://github.com/ClickHouse/ClickHouse/issues/107272). [#104174](https://github.com/ClickHouse/ClickHouse/pull/104174) ([Groene AI](https://github.com/groeneai)).
* Теперь идентификатор партиции для `Date`, выходящий за допустимый диапазон, отклоняется вместо молчаливого overflow или `LOGICAL_ERROR` при `ALTER`. [#104250](https://github.com/ClickHouse/ClickHouse/pull/104250) ([Azat Khuzhin](https://github.com/azat)).
* Отключены `additional_table_filters` при использовании параллельных реплик и анализатора без serialization плана запроса. Ранее это могло приводить к некорректным результатам. [#104296](https://github.com/ClickHouse/ClickHouse/pull/104296) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено: `dictGetOrNull` больше не затирает другие столбцы в проекции `SELECT` значением `NULL`, если вызывается с ключевым столбцом `Nullable`, значения которого отсутствуют в словаре. Функция изменяла на месте null map, ссылающуюся на входные данные; теперь перед мутацией она делает глубокую копию результирующего столбца. Закрывает [#73633](https://github.com/ClickHouse/ClickHouse/issues/73633). [#104327](https://github.com/ClickHouse/ClickHouse/pull/104327) ([Groene AI](https://github.com/groeneai)).
* Исправлена повреждённая patch part после `ALTER TABLE ... DROP PARTITION ID 'patch-...'` с последующим `DETACH`/`ATTACH TABLE`. Ранее пустая покрывающая part записывалась без `partition.dat` и `source_parts.dat`, из-за чего после следующего attach или перезапуска сервера в `system.detached_parts` появлялась запись `broken-on-start_patch-...`. Закрывает [#93132](https://github.com/ClickHouse/ClickHouse/issues/93132). Закрывает [#102103](https://github.com/ClickHouse/ClickHouse/issues/102103). [#104353](https://github.com/ClickHouse/ClickHouse/pull/104353) ([Groene AI](https://github.com/groeneai)).
* Исправлена стриминговая `INSERT` с `input_format_max_block_wait_ms` для интерфейса `HTTP` и для `INSERT SELECT FROM input`: теперь частичные входные block сбрасываются на диск до завершения request. [#104534](https://github.com/ClickHouse/ClickHouse/pull/104534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой запросы, сочетающие `arrayJoin` с `ORDER BY ... LIMIT` после `JOIN`, могли без каких-либо сообщений возвращать ноль строк. Оптимизация плана запроса, поднимающая вычисление функции над `SortingStep`, больше не применяется, если поднимаемое выражение содержит `arrayJoin`, поскольку `arrayJoin` может изменять количество строк. Закрывает [#82279](https://github.com/ClickHouse/ClickHouse/issues/82279). [#104558](https://github.com/ClickHouse/ClickHouse/pull/104558) ([Groene AI](https://github.com/groeneai)).
* Исправлено редкое аварийное завершение сервера при удалении таблицы семейства `MergeTree`. Оно могло происходить, если `shutdown` выбрасывал исключение до полной остановки планировщика фоновых задач: фоновая задача, сработавшая в этот короткий промежуток, могла выполнить виртуальный вызов через частично разрушенный объект хранилища и попасть в `__cxa_pure_virtual`. [#104561](https://github.com/ClickHouse/ClickHouse/pull/104561) ([Groene AI](https://github.com/groeneai)).
* Исправлен некорректный результат в комбинированном подстолбце `JSON` с подсказкой типа, содержащей NULL-значение. [#104584](https://github.com/ClickHouse/ClickHouse/pull/104584) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены неверные результаты или пропуск projection, когда aggregate projection содержит несколько агрегатов `sumIf` с разными условиями `IN (...)`. [#104765](https://github.com/ClickHouse/ClickHouse/pull/104765) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлено неверное количество строк для `arrayJoin()`, используемого внутри `JOIN ON`: результат лишний раз умножался на длину массива. [#104785](https://github.com/ClickHouse/ClickHouse/pull/104785) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено, что `deltaSumTimestamp` возвращал неверные результаты для знаковых целочисленных типов при переходе через ноль. Решает [#104750](https://github.com/ClickHouse/ClickHouse/issues/104750). [#104830](https://github.com/ClickHouse/ClickHouse/pull/104830) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлено несоответствие структуры блока в UnionStep после проталкивания фильтра с константами NULL. Закрывает [#104821](https://github.com/ClickHouse/ClickHouse/issues/104821). [#104853](https://github.com/ClickHouse/ClickHouse/pull/104853) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка `Logical error: 'Metadata is not initialized'`, возникавшая при `DELETE FROM` для только что подключённой таблицы `Iceberg`, `DeltaLake` или `Hudi`, если её metadata file повреждён или не может быть загружен. Теперь вместо этого возвращается обычное пользовательское исключение, а сервер продолжает работать. Закрывает [#104891](https://github.com/ClickHouse/ClickHouse/issues/104891). [#104917](https://github.com/ClickHouse/ClickHouse/pull/104917) ([Groene AI](https://github.com/groeneai)).
* Исправлено, что `max_memory_usage_soft_limit` не обновлялся на лету при изменении config. Soft memory limit вычислялся один раз при запуске и кэшировался, поэтому последующие Reloads config не давали эффекта. После этого исправления лимит пересчитывается и применяется сразу при каждом Reloads config; перезапуск Keeper не требуется. [#104940](https://github.com/ClickHouse/ClickHouse/pull/104940) ([Kai Zhu](https://github.com/nauu)).
* Исправлено разрешение символов JIT на macOS, благодаря чему JIT-компиляция sort, expression и aggregate больше не завершается ошибкой `CANNOT_COMPILE_CODE: Could not find symbol _<name>`. [#104946](https://github.com/ClickHouse/ClickHouse/pull/104946) ([Alexei Fedotov](https://github.com/leshikus)).
* Исправлено исключение (`Received signal 6 (abort)` в vector hardening, наблюдаемое как `Tuple::back()` на пустом векторе) при выполнении запроса вида `SELECT ... FROM <Distributed table> WHERE/HAVING/GROUP BY ... (sharding_key_column IN tuple())` с включённым `optimize_skip_unused_shards_rewrite_in` в новом analyzer. [#104966](https://github.com/ClickHouse/ClickHouse/pull/104966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено аварийное завершение сервера `Logical error: 'Inconsistent AST formatting'` (STID 1941-1bfa) на запросах вида `CREATE TABLE t (c0 Int CODEC(not((not(materialize(1), materialize(2)))), ZSTD)) ENGINE = Memory` в debug-/sanitizer-сборках. Форматтер больше не добавляет лишние внешние скобки вокруг вызова функции `tuple(...)` с несколькими аргументами внутри списков аргументов `CODEC` / `STATISTICS` / `BACKUP_NAME` (где операторная форма `(a, b)` отключена), благодаря чему round-trip format-parse-format остаётся стабильным. [#104991](https://github.com/ClickHouse/ClickHouse/pull/104991) ([Groene AI](https://github.com/groeneai)).
* Исправлен `NOT_FOUND_COLUMN_IN_BLOCK`, возникавший в `ALTER TABLE ... MATERIALIZE INDEX` на частях, созданных в 25.8 и содержащих индекс пропуска данных по столбцу, добавленному отдельной командой `ALTER TABLE ... ADD COLUMN`. Теперь во время принудительного пересчёта мутация корректно читает все столбцы, необходимые для всех уже существующих индексов пропуска данных и проекций в части. Закрывает [#104872](https://github.com/ClickHouse/ClickHouse/issues/104872). [#105039](https://github.com/ClickHouse/ClickHouse/pull/105039) ([Groene AI](https://github.com/groeneai)).
* Исправлены два сценария `LOGICAL_ERROR: Reading from materialized CTE 'X' before it has been materialized`, возникавшие в запросах с `enable_materialized_cte`: (1) повторно используемый materialized CTE, отфильтрованный через `IN (subquery)` по другому materialized CTE, и (2) materialized CTE, на который есть ссылка и напрямую, и внутри фильтра `WHERE ... IN (...)`, попадающего в основной ключ MergeTree через вложенный IN-подзапрос. Те же запросы в `EXPLAIN` тоже были затронуты, поскольку ошибки проявлялись на этапе оптимизации плана. Закрывает [#101940](https://github.com/ClickHouse/ClickHouse/issues/101940), закрывает [#102320](https://github.com/ClickHouse/ClickHouse/issues/102320). [#105041](https://github.com/ClickHouse/ClickHouse/pull/105041) ([Dmitry Novik](https://github.com/novikd)).
* Исправлена оценка selectivity статистики `countmin` в `PREWHERE` для столбцов `Float32`. Из-за двух ошибок статистика `countmin` незаметно выдавала неверные оценки для столбцов `Float32`: `ConditionSelectivityEstimator` полностью пропускал статистику, когда тип столбца (`Float32`) был уже типа литерала (`Float64`), возвращаясь к selectivity по умолчанию и игнорируя sketch; а `StatisticsCountMinSketch::estimateEqual` хешировал первые N байт объекта `Field`, хотя `Field` хранит `Float32` как `Float64` (`NearestFieldType<Float32>` = `Float64`), поэтому байтовый шаблон, использовавшийся во время выполнения запроса, отличался от фактических байтов `Float32`, сохранённых при build. [#105047](https://github.com/ClickHouse/ClickHouse/pull/105047) ([Han Fei](https://github.com/hanfei1991)).
* Запросы `ATTACH TABLE name <clauses>;`, в которых указаны секции хранения (`ORDER BY`, `PARTITION BY`, `PRIMARY KEY`, `SAMPLE BY`, `TTL`, `UNIQUE KEY` или `SETTINGS` движка) без `ENGINE`, теперь выдают `BAD_ARGUMENTS` вместо того, чтобы молча повторно подключать таблицу с сохранённым определением и отбрасывать секции, указанные пользователем. Сессионные `SETTINGS` на уровне запроса (например, `log_comment`) по-прежнему применяются. Используйте `ATTACH TABLE t;`, чтобы повторно подключить таблицу с сохранёнными метаданными, или `ALTER TABLE t MODIFY SETTING ...` после `ATTACH`, чтобы изменить настройки. [#105068](https://github.com/ClickHouse/ClickHouse/pull/105068) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка use-after-free в `runningAccumulate`, когда он вызывался для столбца, чья aggregate function возвращает собственное состояние (например, `uniqStateOrDefaultState`, `sumStateOrDefaultState`, `uniqStateForEachState`). [#105085](https://github.com/ClickHouse/ClickHouse/pull/105085) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена ошибка в веб-интерфейсе (`play.html`): при выполнении запроса, когда курсор находился после единственного завершающего `;`, выводилось сообщение "empty query" вместо выполнения запроса. [#105107](https://github.com/ClickHouse/ClickHouse/pull/105107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR: 'No user in current context, it's a bug'`, возникавший, когда `CREATE TABLE ... AS SELECT` внутри базы данных `Replicated` читал данные из `system.current_roles` или `system.enabled_roles`. Теперь запрос успешно выполняется и в этом внутреннем контексте DDL worker возвращает пустой результирующий набор. [#105150](https://github.com/ClickHouse/ClickHouse/pull/105150) ([Groene AI](https://github.com/groeneai)).
* Исправлен `ILLEGAL_TYPE_OF_ARGUMENT` при слиянии состояний агрегатной функции `quantileExactWeightedInterpolated`, `quantileDD` или `quantilePrometheusHistogram` с соответствующими вариантами во множественном числе `quantilesXxxMerge` (и наоборот). Варианты в единственном и множественном числе у этих трёх семейств quantile используют одно и то же внутреннее состояние агрегатной функции, но не были указаны во внутренней таблице сопоставления имён, поэтому межфункциональное слияние состояний — а также оптимизация слияния функций для этих семейств — отклонялись. [#105189](https://github.com/ClickHouse/ClickHouse/pull/105189) ([Groene AI](https://github.com/groeneai)).
* Исправлены некорректные результаты `toStartOfWeek`, `toLastDayOfWeek`, `toMonday`, `toStartOfMonth`, `toLastDayOfMonth`, `toStartOfQuarter` и `toStartOfYear` для аргументов `Date32` и `DateTime64`, если результат выходит за пределы диапазона `Date`: вместо переполнения в произвольные даты результаты до `1970-01-01` теперь ограничиваются значением `1970-01-01`, а результаты после `2149-06-06` — значением `2149-06-06`. Это также исправляет неверные результаты запросов (некорректно отсечённые части и гранулы), когда такие функции использовались в `WHERE` по ключу `Date32` или `DateTime64`, содержащему значения вне диапазона. [#105244](https://github.com/ClickHouse/ClickHouse/pull/105244) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена logical error в `arrayRemove`, когда первый argument — массив `Variant`, все варианты которого несовместимы с типом второго argument, а `variant_throw_on_type_mismatch` отключён. Теперь функция трактует такое сравнение как "никогда не равны" и возвращает массив без изменений вместо server-side сбоя `assertTypeEquality`. [#105248](https://github.com/ClickHouse/ClickHouse/pull/105248) ([Groene AI](https://github.com/groeneai)).
* Запрос теперь может успешно выполняться, даже если `FileCache` не смог создать какой-либо каталог на диске для кэширования. [#105250](https://github.com/ClickHouse/ClickHouse/pull/105250) ([Den Kalantaevskii](https://github.com/Diskein)).
* Исправлено аварийное завершение server с `Assertion 'px != 0' failed` в `ExtremesTransform`, когда запрос с `extremes = 1` сталкивался с исключением (например, `MEMORY_LIMIT_EXCEEDED`) в момент, когда transform строил свои столбцы extremes из первого chunk. Теперь клиент получает исходное исключение вместо падения сервера. [#105264](https://github.com/ClickHouse/ClickHouse/pull/105264) ([Groene AI](https://github.com/groeneai)).
* `LEFT ANTI JOIN` теперь корректно возвращает столбец ключа JOIN с правой стороны со значениями по умолчанию для несовпавших строк, вместо того чтобы дублировать значение левого ключа. Ранее `SELECT a.x AS l, b.x AS r FROM a LEFT ANTI JOIN b ON a.x = b.x` мог возвращать `r = a.x` для несовпавших строк, хотя должен был возвращать значение по умолчанию (`0` для `Int32`, `''` для `String`, `NULL` для `Nullable`). Затронут был только столбец ключа JOIN; неключевые правые столбцы уже корректно заполнялись значениями по умолчанию. Та же ошибка возникала и в `RIGHT ANTI JOIN`, когда оптимизатор менял стороны местами. Закрывает [#99959](https://github.com/ClickHouse/ClickHouse/issues/99959). [#105278](https://github.com/ClickHouse/ClickHouse/pull/105278) ([Groene AI](https://github.com/groeneai)).
* Исправлена потеря данных в `clickhouse-local` при повторных запусках с `--default_database`, отличной от `default` (например, `clickhouse-local --path X -- --default_database=mydb`): поиск сохранённого UUID базы данных был жёстко привязан к `metadata/default`, поэтому при каждом перезапуске создавался новый UUID, а таблицы из предыдущего запуска становились невидимыми. Закрывает [#101831](https://github.com/ClickHouse/ClickHouse/issues/101831). [#105284](https://github.com/ClickHouse/ClickHouse/pull/105284) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `Mutation of `Memory` table produced incomplete output`, возникавшая при выполнении `ALTER TABLE <memory_table> APPLY PATCHES` или `ALTER TABLE <memory_table> APPLY DELETED MASK`. Таблицы `Memory` не имеют собственных патч-частей или масок удаления, поэтому теперь обе команды корректно обрабатываются как операции без эффекта. [#105286](https://github.com/ClickHouse/ClickHouse/pull/105286) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема с долго выполняющимися запросами при работе с Unity Catalog за счёт передачи параметра `table_id` в запросе. [#105303](https://github.com/ClickHouse/ClickHouse/pull/105303) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен `CANNOT_CONVERT_TYPE` для `Merge` поверх `Merge` поверх `Distributed` при `distributed_group_by_no_merge=1`. [#105330](https://github.com/ClickHouse/ClickHouse/pull/105330) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено, что `clickhouse local` и `clickhouse client` молча игнорировали `--query`/`-q`, если также был указан позиционный аргумент с файлом. Теперь в обоих случаях последовательно выдаётся `BAD_ARGUMENTS`. [#105334](https://github.com/ClickHouse/ClickHouse/pull/105334) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено, что `REPLACE TEMPORARY TABLE` молча создавал новую таблицу, если целевая таблица не существовала. Теперь выбрасывается `UNKNOWN_TABLE`, что соответствует семантике `REPLACE TABLE`. Используйте `CREATE OR REPLACE TEMPORARY TABLE`, чтобы сохранить поведение create-or-replace. [#105373](https://github.com/ClickHouse/ClickHouse/pull/105373) ([Groene AI](https://github.com/groeneai)).
* Исправлено падение долго выполняющихся чтений (например, `INSERT ... SELECT`) из базы данных `DataLakeCatalog` с `catalog_type = 'glue'` с ошибкой `ExpiredToken`, когда учётные данные сеанса STS, полученные при загрузке метаданных таблицы, успевали истечь. Теперь учётные данные AWS STS обновляются прямо во время выполнения запроса, поэтому такие чтения продолжаются и после истечения срока действия токена. [#105381](https://github.com/ClickHouse/ClickHouse/pull/105381) ([Pratima Patel](https://github.com/pratimapatel2008)).
* Исправлена logical error в некоторых случаях с отрицательным `LIMIT BY` при использовании `ARRAY JOIN`. [#105403](https://github.com/ClickHouse/ClickHouse/pull/105403) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено завышенное значение `read_bytes` (и производных байт/с, отображаемых в `system.query_log`, индикаторе прогресса и т. д.) при чтении файлов Parquet. В предыдущей реализации для каждого чанка сообщался общий compressed size всей группы строк, поэтому при чтении K из N столбцов происходил переучёт в `N / K`. Теперь значение суммируется только по выбранным столбцам. Также исправлено отслеживание прогресса на уровне файла для таблиц Iceberg: ранее размер файла данных вообще не учитывался. [#105413](https://github.com/ClickHouse/ClickHouse/pull/105413) ([Groene AI](https://github.com/groeneai)).
* Исправлен возможный segfault сервера в cluster table functions (`s3Cluster`, `urlCluster`, `fileCluster`, ...), когда планировщик формирует `SELECT` с установленным флагом `recursive_with`, но без выражения `WITH`. Закрывает [#105370](https://github.com/ClickHouse/ClickHouse/issues/105370). [#105433](https://github.com/ClickHouse/ClickHouse/pull/105433) ([Groene AI](https://github.com/groeneai)).
* Исправлен неверный результат `countDistinct` / `uniqExact` для столбцов `Nullable`, когда `count_distinct_optimization = 1` (группа NULL подсчитывалась неправильно). [#105439](https://github.com/ClickHouse/ClickHouse/pull/105439) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлены heap-buffer-overflow при чтении файлов Arrow или ArrowStream с поврежденными промежуточными offsets в бинарном или строковом столбце, а также разыменование нулевого указателя при чтении георазмеченных Arrow-столбцов. [#105449](https://github.com/ClickHouse/ClickHouse/pull/105449) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена проверка типов `Dynamic`/`Variant` в оконном `PARTITION BY`; ранее она не выполнялась, если `allow_suspicious_types_in_group_by` отключен. Закрывает [#105028](https://github.com/ClickHouse/ClickHouse/issues/105028). [#105450](https://github.com/ClickHouse/ClickHouse/pull/105450) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена работа настройки `input_format_json_empty_as_default` в форматах JSONStrings\*. Закрывает [#104913](https://github.com/ClickHouse/ClickHouse/issues/104913). [#105453](https://github.com/ClickHouse/ClickHouse/pull/105453) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена вставка `NULL` в столбец `Variant` через формат `VALUES` при разборе выражения. Закрывает [#104909](https://github.com/ClickHouse/ClickHouse/issues/104909). [#105455](https://github.com/ClickHouse/ClickHouse/pull/105455) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ситуация, при которой `dictGetOrDefault` генерировал `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`, если аргумент по умолчанию был выражением `Nullable`, а `short_circuit_function_evaluation` включен, при сочетании найденных и ненайденных ключей словаря. [#105461](https://github.com/ClickHouse/ClickHouse/pull/105461) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено незаметное усечение значений в столбцах `Dynamic`, когда текстовый reader `Quoted` (Values) переключался на `String` для неполных автоматически выведенных типов, таких как `Map(Array(Nothing), ...)`. Ранее при fallback сырое поле оборачивалось простой конкатенацией `'...'`, из-за чего внутренняя одинарная кавычка (в таких fallback-сценариях она присутствует всегда) преждевременно завершала строку в кавычках, и оставшаяся часть значения терялась. [#105463](https://github.com/ClickHouse/ClickHouse/pull/105463) ([Groene AI](https://github.com/groeneai)).
* Исправлен SIGSEGV при чтении подстолбцов `Dynamic` из сжатой таблицы `Memory` после `ALTER`. Закрывает [#104901](https://github.com/ClickHouse/ClickHouse/issues/104901). [#105464](https://github.com/ClickHouse/ClickHouse/pull/105464) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено поведение `toFloat64`/`toUInt32`/`toString`/etc. для `Dynamic`, при котором игнорировался `cast_keep_nullable`. Закрывает [#104789](https://github.com/ClickHouse/ClickHouse/issues/104789). [#105467](https://github.com/ClickHouse/ClickHouse/pull/105467) ([Pavel Kruglov](https://github.com/Avogar)).
* `skip_first_lines` теперь включен в ключ кэша схемы для форматов `WithNames`. Закрывает [#104527](https://github.com/ClickHouse/ClickHouse/issues/104527). [#105469](https://github.com/ClickHouse/ClickHouse/pull/105469) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен segfault сервера в `uniqStateOrNull` / `uniqStateOrDefault` / `uniqOrNullState` (и аналогичных chain-комбинаторах над `uniq`) при использовании с `GROUP BY ... WITH ROLLUP`, `WITH CUBE` или `WITH TOTALS` и аргументом `Nullable`. [#105470](https://github.com/ClickHouse/ClickHouse/pull/105470) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `NOT_FOUND_COLUMN_IN_BLOCK` при сочетании `ORDER BY ... WITH FILL INTERPOLATE` и `LIMIT N BY` с включенным analyzer. Закрывает [#103474](https://github.com/ClickHouse/ClickHouse/issues/103474). [#105481](https://github.com/ClickHouse/ClickHouse/pull/105481) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлены `toStartOfMillisecond` и `toStartOfMicrosecond`, которые для отрицательных значений `DateTime64` (до эпохи Unix) возвращали результат со сдвигом почти на секунду; также исправлено signed-integer-overflow, выявляемое `UndefinedBehaviorSanitizer`, в `toStartOfSecond`, `toStartOfMillisecond` и `toStartOfMicrosecond` для входных значений `DateTime64`, близких к `INT64_MIN`. [#105482](https://github.com/ClickHouse/ClickHouse/pull/105482) ([Groene AI](https://github.com/groeneai)).
* Добавлена новая compatibility setting `analyzer_compatibility_prefer_alias_over_subcolumn` (по умолчанию отключена). Когда она включена, новый analyzer для составных идентификаторов предпочитает интерпретацию с префиксом alias, а не совпадения с подстолбцами `Tuple` / столбцами с точечной нотацией, восстанавливая поведение предыдущего интерпретатора. Это позволяет избежать ошибок `AMBIGUOUS_IDENTIFIER` (и связанных с ними), когда запрос выполняет JOIN с таблицей, имя которой совпадает с внутренней таблицей CTE/подзапроса, использующего `SELECT *` поверх JOIN, и где переименованные через asterisk столбцы (например, `b.id`) иначе приводили бы к утечке идентификаторов внутренней таблицы во внешнюю область видимости. [#105491](https://github.com/ClickHouse/ClickHouse/pull/105491) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Запрос векторного поиска, выполняемый с оптимизацией *index only*, теперь возвращает корректное значение `L2Distance()`, если оно присутствует в списке `SELECT`. Ранее функция ошибочно возвращала значение расстояния *L2-squared*. Обратите внимание: сам запрос векторного поиска возвращал результаты с корректным ранжированием; квадрат расстояния могли увидеть только приложения, **явно получавшие и интерпретировавшие** значение `L2Distance()`. [#105495](https://github.com/ClickHouse/ClickHouse/pull/105495) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Исправлена редкая проблема в новом движке таблицы Kafka: во время переназначения партиций топика сообщения могли обрабатываться некорректно, что потенциально приводило к их пропуску после rollback смещения. [#105500](https://github.com/ClickHouse/ClickHouse/pull/105500) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлено Исключение (`Trying to execute PLACEHOLDER action` logical error), возникавшее, когда `MATERIALIZED` CTE, тело которого представляет собой коррелированный подзапрос, использовался в правой части `IN`. Теперь такой CTE отклоняется на этапе анализа, что соответствует тому, как тот же шаблон уже отклоняется, когда на CTE ссылаются напрямую в `FROM`. [#105518](https://github.com/ClickHouse/ClickHouse/pull/105518) ([Groene AI](https://github.com/groeneai)).
* Исправлено, что сжатие для stdout/stdin не применялось, если format был указан явно. Закрывает [#104441](https://github.com/ClickHouse/ClickHouse/issues/104441). [#105528](https://github.com/ClickHouse/ClickHouse/pull/105528) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен SEGFAULT при десериализации `singleValueOrNull` для типа `JSON`. Закрывает [#103630](https://github.com/ClickHouse/ClickHouse/issues/103630). [#105535](https://github.com/ClickHouse/ClickHouse/pull/105535) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено, что `clickhouse-format --backslash` молча отбрасывал данные `INSERT` `VALUES`. Закрывает [#103533](https://github.com/ClickHouse/ClickHouse/issues/103533). [#105536](https://github.com/ClickHouse/ClickHouse/pull/105536) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено, что `variant_throw_on_type_mismatch/dynamic_throw_on_type_mismatch=false` не перехватывал исключения во время выполнения функции. Закрывает [#103484](https://github.com/ClickHouse/ClickHouse/issues/103484). [#105543](https://github.com/ClickHouse/ClickHouse/pull/105543) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено игнорирование `input_format_try_infer_datetimes` при вставке в общие данные в `JSON`. Закрывает [#103221](https://github.com/ClickHouse/ClickHouse/issues/103221). [#105544](https://github.com/ClickHouse/ClickHouse/pull/105544) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка в `histogram`, из-за которой на небольших неотсортированных входных данных возвращались неверные результаты. Закрывает [#103109](https://github.com/ClickHouse/ClickHouse/issues/103109). [#105548](https://github.com/ClickHouse/ClickHouse/pull/105548) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено циклическое переполнение `DateTime` для значений вне допустимого диапазона в `JSONExtract` и при текстовой десериализации. Закрывает [#103094](https://github.com/ClickHouse/ClickHouse/issues/103094). [#105551](https://github.com/ClickHouse/ClickHouse/pull/105551) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено использование таблицы вставки в табличных функциях, когда включен `optimize_trivial_insert_select`. Закрывает [#103083](https://github.com/ClickHouse/ClickHouse/issues/103083). [#105555](https://github.com/ClickHouse/ClickHouse/pull/105555) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено поведение `CASE` expression, которое возвращало ветку `ELSE` вместо соответствующего `THEN`, когда и expression, и значение `WHEN` были `NULL`. [#105556](https://github.com/ClickHouse/ClickHouse/pull/105556) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено падение `replxx`, вызванное достижением ограничения `FD_SETSIZE` у `select` (теперь заменен на `poll`). Ранее при включенном SSH или веб-терминале это могло приводить к падению сервера. [#105559](https://github.com/ClickHouse/ClickHouse/pull/105559) ([Azat Khuzhin](https://github.com/azat)).
* Материализованы подстолбцы в `executePartitionByExpression` перед выполнением expression. Закрывает [#103057](https://github.com/ClickHouse/ClickHouse/issues/103057). [#105573](https://github.com/ClickHouse/ClickHouse/pull/105573) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено Исключение `NOT_FOUND_COLUMN_IN_BLOCK`, возникавшее, когда выражение `TTL` ссылалось на подстолбец. [#105578](https://github.com/ClickHouse/ClickHouse/pull/105578) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено падение сервера (SIGSEGV), которое мог вызвать любой пользователь с правами `CREATE TABLE`, отправив по HTTP или через собственный протокол запрос `CREATE TABLE ... TO INNER UUID '...'` без clause `ENGINE`. Та же ошибка также приводила к падению клиента. Теперь parser сообщает корректную ошибку `BAD_ARGUMENTS` вместо разыменования нулевого указателя. [#105579](https://github.com/ClickHouse/ClickHouse/pull/105579) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка, из-за которой window function `estimateCompressionRatio` теряла накопленные данные между строками. Закрывает [#101738](https://github.com/ClickHouse/ClickHouse/issues/101738). [#105581](https://github.com/ClickHouse/ClickHouse/pull/105581) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено падение при вставке Tuple разного размера в одной clause `VALUES` в столбец `String`. Закрывает [#101727](https://github.com/ClickHouse/ClickHouse/issues/101727). [#105582](https://github.com/ClickHouse/ClickHouse/pull/105582) ([Pavel Kruglov](https://github.com/Avogar)).
* Извлечение значений Hive partition теперь учитывает настройку `cast_string_to_date_time_mode` и по умолчанию принимает временные метки ISO 8601 с суффиксами часового пояса (например, `+0000`, `+00:00`, `Z`) в ключах партиционирования. [#105584](https://github.com/ClickHouse/ClickHouse/pull/105584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка `NOT_IMPLEMENTED` при вызове `toString` для `DateTime` с Timezone, содержащим значение `NULL`. Закрывает [#103712](https://github.com/ClickHouse/ClickHouse/issues/103712). [#105587](https://github.com/ClickHouse/ClickHouse/pull/105587) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено чтение за пределами буфера при `Native`-десериализации flattened столбца `Dynamic`. [#105666](https://github.com/ClickHouse/ClickHouse/pull/105666) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен `LOGICAL_ERROR` (`Unexpected return type from if`), возникавший при планировании запроса для выражений `if`, у которых тип результата — `Variant`, а вторая или третья ветка представляет собой `if` с константным условием над литералом `UInt64`, помещающимся в `Int64`. Закрывает [#105649](https://github.com/ClickHouse/ClickHouse/issues/105649). [#105680](https://github.com/ClickHouse/ClickHouse/pull/105680) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты при чтении Iceberg table с `iceberg_use_version_hint = 1`, если перед этим другой writer (например, table function `icebergLocal`/`icebergS3`) без этой настройки продвигал таблицу. Теперь `version-hint.text` синхронизируется каждым writer, как только файл появляется, поэтому последующие readers, использующие hint, видят актуальный снимок. [#105682](https://github.com/ClickHouse/ClickHouse/pull/105682) ([Groene AI](https://github.com/groeneai)).
* Исправлен незаметный недосчёт в запросах `SELECT`, когда `use_query_condition_cache = 1` (по умолчанию). Запрос вида `PREWHERE pk_prefix = X WHERE non_pk IN (...)` к столбцу с bloom-filter индексом пропуска данных отравлял `QueryConditionCache` для предиката `pk_prefix = X`, из-за чего последующий безобидный `SELECT count() ... WHERE pk_prefix = X` возвращал некорректный заниженный результат. Затронуты все релизы 26.x. [#104781](https://github.com/ClickHouse/ClickHouse/issues/104781). [#105686](https://github.com/ClickHouse/ClickHouse/pull/105686) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `singleValueOrNullMerge`, который возвращал конкретное значение вместо `NULL` при слиянии состояния, уже содержавшего несколько различных значений. [#105734](https://github.com/ClickHouse/ClickHouse/pull/105734) ([Minh Vu](https://github.com/fallintoplace)).
* Исправлено восстановление после ошибок во входном формате `Template` после некорректных строк. [#105735](https://github.com/ClickHouse/ClickHouse/pull/105735) ([Yue Ni](https://github.com/niyue)).
* Исправлен сбой в table function `mongodb`, хранилище MongoDB и источнике словаря MongoDB, возникавший, когда имя collection пустое или содержит байты NUL. [#105776](https://github.com/ClickHouse/ClickHouse/pull/105776) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена очистка снимков `Keeper` после неудачных writes, чтобы частичные снимки безопасно удалялись, а неудачные writes можно было повторить без продвижения `latest_snapshot_meta`. [#105779](https://github.com/ClickHouse/ClickHouse/pull/105779) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлено отклонение `ALTER TABLE ... CLEAR COLUMN` для явных столбцов `columns_to_sum` в `SummingMergeTree` и `CoalescingMergeTree`. [#105785](https://github.com/ClickHouse/ClickHouse/pull/105785) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен assertion в `DatabaseCatalog::tryGetDatabase` (и связанная с ним ошибка `UNKNOWN_DATABASE` в release-сборках) при создании parameterized view, у которого имя database передаётся через query parameter, например `CREATE VIEW {db:Identifier}.v AS SELECT {p:UInt64}`. Теперь параметры в DDL-частях оператора `CREATE` подставляются во время создания, а параметры в теле SELECT остаются доступными для подстановки во время вызова view. [#105799](https://github.com/ClickHouse/ClickHouse/pull/105799) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `Bad get: has Decimal32, requested Decimal128` в `sumMap` и `sumMapWithOverflow` для столбца `Nested(... Nullable(Decimal(P, S)))`, когда агрегатное состояние сериализуется (например, параллельные реплики, `sumMapState` через binary-state formatter, внешняя агрегация). [#105816](https://github.com/ClickHouse/ClickHouse/pull/105816) ([Groene AI](https://github.com/groeneai)).
* Исправлены ошибки `Expected ColumnLowCardinality, got String` / `Bad cast from type DB::ColumnString to DB::ColumnLowCardinality`, возникавшие при использовании `apply_mutations_on_fly = 1` на таблице, где в очереди уже были отложенные on-fly `UPDATE`/`DELETE` Мутации, добавленные до мутации `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#105847](https://github.com/ClickHouse/ClickHouse/pull/105847) ([Raúl Marín](https://github.com/Algunenano)).
* При записи в Iceberg теперь сохраняются значения NULL в столбцах партиции `Nullable(T)`. Ранее NULL, записанный ClickHouse, при чтении через Spark или другие reader Iceberg отображался как значение по умолчанию внутреннего типа (`0` для `int`). Закрывает [#105852](https://github.com/ClickHouse/ClickHouse/issues/105852). [#105862](https://github.com/ClickHouse/ClickHouse/pull/105862) ([Groene AI](https://github.com/groeneai)).
* Исправлен pushdown фильтров для `Parquet` и `ORC` для predicates `IN (subquery)`, благодаря чему pruning по row group/page/bloom filter теперь работает при чтении из `file`, `url`, `s3` и object storage. [#105863](https://github.com/ClickHouse/ClickHouse/pull/105863) ([Arsen Muk](https://github.com/arsenmuk)).
* Исправлено чтение в порядке для таблиц `Merge` (с новым analyzer). [#105867](https://github.com/ClickHouse/ClickHouse/pull/105867) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлена ошибка в Iceberg v2 merge-on-read position deletes, из-за которой возвращались неверные строки, если один delete-файл ссылался на несколько data files, а к одному и тому же data file применялось несколько таких delete-файлов. Стриминг reader (`use_roaring_bitmap_iceberg_positional_deletes = 0`) теперь фильтрует строки delete-файла по `file_path` в C++ вместо того, чтобы полагаться на pruning row group в Parquet, восстанавливая инвариант возрастания позиций. [#105888](https://github.com/ClickHouse/ClickHouse/pull/105888) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `Cannot find column` для distributed queries с фильтром `IN Array(...)` в новом analyzer. [#105894](https://github.com/ClickHouse/ClickHouse/pull/105894) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлен SIGSEGV в `ALTER TABLE ... MODIFY COLUMN ... Nullable(...)` на таблицах `MergeTree`, когда другой `ALTER` одновременно удалял столбец со `STATISTICS`. Закрывает [#105912](https://github.com/ClickHouse/ClickHouse/issues/105912). [#105917](https://github.com/ClickHouse/ClickHouse/pull/105917) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера, который мог возникать, когда запрос, читающий из PostgreSQL — через table function postgresql, движок таблицы PostgreSQL или словарь с источником PostgreSQL — отменялся (например, с помощью KILL QUERY), а отменить удалённый запрос PostgreSQL не удавалось. [#105949](https://github.com/ClickHouse/ClickHouse/pull/105949) ([Rory Shanks](https://github.com/rorylshanks)).
* Исправлено formatting `SYSTEM INSTRUMENT ADD`: теперь аргументы обработчика разделяются одним пробелом; кроме того, отклоняются некорректные списки argument для instrumentation `SLEEP` с более чем двумя значениями или диапазоном, где минимум больше максимума. [#105984](https://github.com/ClickHouse/ClickHouse/pull/105984) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлены потенциально неверные результаты для queries, которые сочетают OUTER JOIN с последующим INNER JOIN, ссылающимся на сторону outer join, поставляющую NULL. Переупорядочивание JOIN могло выбрать план, в котором условия inner join переносились в предложение ON outer join. [#105992](https://github.com/ClickHouse/ClickHouse/pull/105992) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлен возможный crash из-за слишком большого строкового литерала, переданного в запросе. [#105996](https://github.com/ClickHouse/ClickHouse/pull/105996) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлено исключение `INVALID_WITH_FILL_EXPRESSION` при использовании пустого `INTERPOLATE ()` с префиксом сортировки в `ORDER BY` и включенной настройкой `use_with_fill_by_sorting_prefix`. Столбцы префикса сортировки теперь корректно исключаются из неявного набора интерполяции, что соответствует поведению при явном указании `INTERPOLATE (col)`. [#106001](https://github.com/ClickHouse/ClickHouse/pull/106001) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлен случай, когда операции `ALTER TABLE` с партициями для ключей партиционирования `Bool` молча завершались ошибкой. Закрывает [#101722](https://github.com/ClickHouse/ClickHouse/issues/101722). [#106004](https://github.com/ClickHouse/ClickHouse/pull/106004) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены `JSONExtractRaw` и `JSONHas` для типизированных `JSON`-путей со значениями по умолчанию. Закрывает [#101721](https://github.com/ClickHouse/ClickHouse/issues/101721). [#106005](https://github.com/ClickHouse/ClickHouse/pull/106005) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено некорректное добавление префикса '/' для пустых базовых путей в конфигурациях озёр данных. Закрывает [#105989](https://github.com/ClickHouse/ClickHouse/issues/105989). [#106013](https://github.com/ClickHouse/ClickHouse/pull/106013) ([thewisenerd](https://github.com/thewisenerd)).
* Исправлен случай, когда движок таблицы `IcebergLocal` переходил в режим только для чтения после цикла `DETACH` + `ATTACH` или перезапуска сервера, из-за чего любой последующий `INSERT` завершался ошибкой `Local object storage Local is readonly. (READONLY)`. [#106016](https://github.com/ClickHouse/ClickHouse/pull/106016) ([Groene AI](https://github.com/groeneai)).
* Исправлены сбои `Keeper` во время дозагрузки follower, когда новая очередь ответов диспетчера запросов могла заполниться до запуска потока обработки ответов. [#106049](https://github.com/ClickHouse/ClickHouse/pull/106049) ([Antonio Andelic](https://github.com/antonio2368)).
* Улучшена совместимость со старым анализатором. Если у таблицы есть столбцы вида `x.a Array, x.b Array, x String`, для `ARRAY JOIN x` теперь предпочтение отдается массивам. [#106069](https://github.com/ClickHouse/ClickHouse/pull/106069) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлен случай, когда файловый кэш молча отключался для Azure Blob Storage (например, для таблиц Delta Lake в Azure), потому что метаданные объекта не содержали blob ETag. [#106091](https://github.com/ClickHouse/ClickHouse/pull/106091) ([thewisenerd](https://github.com/thewisenerd)).
* Исправлен случай, когда `system.dictionaries` возвращал 0 строк при частичном отзыве права `SHOW DICTIONARIES`. [#106105](https://github.com/ClickHouse/ClickHouse/pull/106105) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено падение сервера при выполнении запросов к таблицам DeltaLake с включенной настройкой `allow_experimental_delta_kernel_rs`, если учетные данные или параметр содержали недопустимые байты (паника Rust FFI происходила через границу `extern "C"`). [#106109](https://github.com/ClickHouse/ClickHouse/pull/106109) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлены некорректные результаты для запросов к таблицам, у которых `ORDER BY` содержит монотонно убывающую функцию, такую как `(c0 / -42)` или `intDiv(c0, -42)`. Предикаты по исходному столбцу (например, `c0 < 0`) могли ошибочно отсекать гранулы, содержащие подходящие строки, что приводило к отсутствию части результатов. Закрывает [#106084](https://github.com/ClickHouse/ClickHouse/issues/106084). Закрывает [#106124](https://github.com/ClickHouse/ClickHouse/issues/106124). Закрывает [#106080](https://github.com/ClickHouse/ClickHouse/issues/106080). [#106136](https://github.com/ClickHouse/ClickHouse/pull/106136) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена поддержка использования SQL UDF `WASM` в определениях `MATERIALIZED VIEW`. [#106161](https://github.com/ClickHouse/ClickHouse/pull/106161) ([Yue Ni](https://github.com/niyue)).
* Iceberg partition pruning теперь корректно обрабатывает фильтры `WHERE partition_col = (SELECT ... FROM ...)`, где analyzer оборачивает результат scalar subquery во внутренний `_CAST(Const, 'TargetType')` с совпадающими исходным и целевым типами. Ранее такие фильтры отключали отсечение партиций и приводили к полному сканированию таблицы. [#106204](https://github.com/ClickHouse/ClickHouse/pull/106204) ([Groene AI](https://github.com/groeneai)).
* Исправлен параметр `--query_id` в clickhouse local: теперь с его помощью можно задавать пользовательский Query id. [#106205](https://github.com/ClickHouse/ClickHouse/pull/106205) ([Yue Ni](https://github.com/niyue)).
* Исправлено игнорирование класса хранилища S3 (`s3_storage_class` / `s3_storage_class_name`) для объектов, записываемых через multipart-загрузку на диски `S3` и в объектное хранилище, из-за чего крупные объекты создавались с классом `STANDARD` по умолчанию. Имя опции теперь принимается как `s3_storage_class`, так и `s3_storage_class_name` для дисков, объектного хранилища и резервных копий. [#106214](https://github.com/ClickHouse/ClickHouse/pull/106214) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема, из-за которой Keeper иногда зависал при запуске, если настройка `nuraft_max_log_gap_in_stream` была установлена в значение, отличное от значения по умолчанию (по умолчанию это 0, то есть конвейеризация запросов `append_entries` отключена). [#106220](https://github.com/ClickHouse/ClickHouse/pull/106220) ([Michael Kolupaev](https://github.com/al13n321)).
* Добавлена проверка повреждённого состояния агрегатной функции `DDSketch` (ключей bin) при вставке вместо принятия некорректных данных. [#106236](https://github.com/ClickHouse/ClickHouse/pull/106236) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено несоответствие режима coordinator, возникавшее, когда subqueries переопределяли настройки упорядоченного выполнения. [#106243](https://github.com/ClickHouse/ClickHouse/pull/106243) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлена проблема, из-за которой `optimize_skip_unused_shards` не применялся (а `force_optimize_skip_unused_shards` ошибочно завершался с ошибкой), когда к таблице `Distributed` обращались через таблицу `Merge` или табличную функцию `merge`, а predicate применялся уровнем выше. [#106250](https://github.com/ClickHouse/ClickHouse/pull/106250) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлена ошибка, из-за которой `INTERPOLATE ()` выдавал `INVALID_WITH_FILL_EXPRESSION`, когда столбцам `ORDER BY` были назначены псевдонимы в списке `SELECT` при использовании старого analyzer. Закрывает [#106248](https://github.com/ClickHouse/ClickHouse/issues/106248). [#106252](https://github.com/ClickHouse/ClickHouse/pull/106252) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлено аварийное завершение при десериализации некорректного состояния `AggregateFunction(uniqTheta, ...)` из входных данных `RowBinary` или query parameter. Теперь некорректный ввод отклоняется с ошибкой `CORRUPTED_DATA` вместо того, чтобы выходить наружу как `std::exception` и аварийно завершать процесс через `abortOnFailedAssertion`. [#106260](https://github.com/ClickHouse/ClickHouse/pull/106260) ([Groene AI](https://github.com/groeneai)).
* Байты `IntervalKind`, выходящие за допустимый диапазон, теперь отклоняются при декодировании типов `RowBinaryWithNamesAndTypes` (`input_format_binary_decode_types_in_binary_format = 1`) с понятной ошибкой `INCORRECT_DATA` вместо создания `DataTypeInterval` с недопустимым kind, что впоследствии могло приводить к неопределённому поведению в путях хеширования. [#106261](https://github.com/ClickHouse/ClickHouse/pull/106261) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема с rollback при сбое понижения версии `SLRU` в `26.1+`. Исправлен приоритет разделения кэша `System`/`Data` для возможности `keep_free_space_ratio`. [#106286](https://github.com/ClickHouse/ClickHouse/pull/106286) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Подстолбец `null` в `Nullable(JSON)` теперь читается как путь `JSON`, а не как null-map. Закрывает [#106085](https://github.com/ClickHouse/ClickHouse/issues/106085). [#106295](https://github.com/ClickHouse/ClickHouse/pull/106295) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено поведение `RestCatalog::empty`, который возвращал неверный результат, если Iceberg REST-каталог содержал таблицы. [#106301](https://github.com/ClickHouse/ClickHouse/pull/106301) ([Lefteris](https://github.com/LefterisXefteris)).
* Исправлено исключение для запросов `INNER JOIN` с пустой левой таблицей `MergeTree`, когда включены `enable_parallel_replicas`, `query_plan_use_new_logical_join_step` и `query_plan_optimize_join_order_algorithm = 'greedy'`. [#106338](https://github.com/ClickHouse/ClickHouse/pull/106338) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлено некорректное преобразование субнормальных значений `Float16` в `Float32` (например, при чтении из файлов Numpy `.npy`), вызванное сдвигом мантиссы на один бит. [#106343](https://github.com/ClickHouse/ClickHouse/pull/106343) ([Joanna Hulboj](https://github.com/jh0x)).
* Исправлены сбой и возможная ошибка `NOT_FOUND_COLUMN_IN_BLOCK` при использовании оптимизации на основе ограничений (`optimize_using_constraints`) с correlated subqueries. [#106349](https://github.com/ClickHouse/ClickHouse/pull/106349) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено чтение за пределами допустимых границ в `sipHash64Keyed`, `sipHash128Keyed` и `sipHash128ReferenceKeyed` при хешировании столбца, у которого все массивы пусты, а ключ не является константой. [#106355](https://github.com/ClickHouse/ClickHouse/pull/106355) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено поведение `SYSTEM RELOAD CONFIG`, который отбрасывал настройки Azure Blob Storage для отдельных endpoint'ов (например, `use_native_copy`), из-за чего настроенные параметры диска игнорировались для `BACKUP`/`RESTORE` до перезапуска сервера. [#106357](https://github.com/ClickHouse/ClickHouse/pull/106357) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлено поведение `regexpExtract(haystack, pattern)`: теперь шаблоны регулярного выражения без capturing group возвращают всё совпадение вместо ошибки `INDEX_OF_POSITIONAL_ARGUMENT_IS_OUT_OF_RANGE`. [#106374](https://github.com/ClickHouse/ClickHouse/pull/106374) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `LOGICAL_ERROR` при predownload кэша, если удалённый объект S3 был перезаписан более коротким содержимым между получением списка и чтением. [#106375](https://github.com/ClickHouse/ClickHouse/pull/106375) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлен рост использования памяти в файловом кэше. [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлены множественные чтения за пределами heap в средстве чтения формата Arrow IPC (`ArrowColumnToCHColumn`). Некорректный файл Arrow мог объявлять больше строк, чем содержат его буферы, задавать длины дочерних элементов list/struct/map, не согласованные с родительским элементом, передавать немонотонные offsets list или обрезать дочерний битмап валидности, что приводило к чтению за пределами выделений в heap. Это затрагивает любого пользователя с привилегией `SELECT`, использующего `file()`, `format()`, табличные функции или входные данные ArrowFlight. Теперь все буферы data, offsets, view-struct и validity-bitmap проверяются перед любым доступом через raw pointer, а формы и offsets list/struct/map — на согласованность. [#106395](https://github.com/ClickHouse/ClickHouse/pull/106395) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена ошибка, из-за которой backups завершались с `FILE_DOESNT_EXIST`, когда цель REPLACE у refreshable materialized view собиралась в базе данных Replicated или Shared, а сама materialized view ещё не была создана на реплике, инициировавшей backup. [#106411](https://github.com/ClickHouse/ClickHouse/pull/106411) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлена logical error `Column identifier ... is already registered`, возникавшая, когда предикат мутации (`DELETE`/`UPDATE`) содержит подзапрос `IN`/`EXISTS`, читающий из выражения default table, вложенного в другой подзапрос. [#106414](https://github.com/ClickHouse/ClickHouse/pull/106414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена logical error (`Left and right columns have same names`) в join order optimizer, которая могла возникать для JOIN, выполняемых с параллельными репликами, когда два отношения в графе JOIN имеют одинаковые имена столбцов. [#106418](https://github.com/ClickHouse/ClickHouse/pull/106418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена logical error при построении polygon dictionary из исходных данных, содержащих координаты точек `NaN` или infinite. Такие координаты теперь отклоняются с понятной ошибкой. [#106423](https://github.com/ClickHouse/ClickHouse/pull/106423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой столбцы `used_privileges` и `missing_privileges` в `system.query_log` могли содержать строки привилегий, утекшие из не связанных с ними более ранних запросов другого пользователя, database или session. [#106425](https://github.com/ClickHouse/ClickHouse/pull/106425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Functions `base58Encode`, `base58Decode` и `tryBase58Decode` теперь учитывают `max_execution_time` и отмену запроса на больших входных данных, а также отклоняют входные данные размером более 10 КБ вместо того, чтобы выполняться очень долго. Ограничение настраивается через новую настройку `function_base58_max_input_size` (`0` отключает его). [#106428](https://github.com/ClickHouse/ClickHouse/pull/106428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены редкие некорректные результаты для запросов `ORDER BY ... DESC` при чтении частей Wide в обратном порядке с `read_in_order_use_virtual_row_per_block = 1` и небольшим `max_block_size`. [#106429](https://github.com/ClickHouse/ClickHouse/pull/106429) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено Исключение `NOT_FOUND_COLUMN_IN_BLOCK` при выполнении запроса к таблице Iceberg или S3 table с составным предложением `WHERE`, содержащим `IS NOT NULL` для столбца, которого нет в списке `SELECT`, при использовании Parquet V3 native reader. [#106443](https://github.com/ClickHouse/ClickHouse/pull/106443) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Пользователь теперь может задавать заголовки для `HTTPDictionary` с использованием named collections. [#106459](https://github.com/ClickHouse/ClickHouse/pull/106459) ([Jan Rada](https://github.com/ZelvaMan)).
* Исправлен случай, когда worker thread мог оставаться attached к устаревшей thread group после того, как `CurrentThread::attachToGroup` завершался сбоем на одном из этапов, из-за чего последующие задачи в этом же потоке завершались ошибкой `Thread is already attached to a group`. [#106462](https://github.com/ClickHouse/ClickHouse/pull/106462) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Исправлено Исключение, возникавшее, когда запрос векторного поиска использует vector index и другой индекс пропуска данных, например `minmax`, при `use_skip_indexes_on_data_read = 1`. [#106473](https://github.com/ClickHouse/ClickHouse/pull/106473) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Некорректно сформированные значения enum `Avro` теперь проверяются и отклоняются с ошибкой, вместо того чтобы вызывать чтение за пределами допустимого диапазона и аварийное завершение при десериализации поврежденных данных `Avro`. [#106476](https://github.com/ClickHouse/ClickHouse/pull/106476) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено завышенное отображение прогресса при чтении из таблиц Iceberg с фильтрами `_file` или `_path`. Ранее в показателе прогресса `total_bytes_to_read` учитывались все файлы из manifest независимо от фильтрации. [#106491](https://github.com/ClickHouse/ClickHouse/pull/106491) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлено исключение `Bad cast exception` для словарей Redis, использующих `STORAGE_TYPE 'simple'` со структурой `cache`/`direct` и единственным строковым (составным) ключом; теперь такие словари работают, а для составных ключей поверх хранилища `simple` выводится понятная ошибка. [#106501](https://github.com/ClickHouse/ClickHouse/pull/106501) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена ошибка, приводившая к неверным результатам: `WHERE c0 = const` не возвращал ни одной строки для таблиц с `ORDER BY f(c0)`, если `f(const)` вычислялось в NaN, например `ORDER BY sqrt(c0)` с отрицательной константой. Анализ первичного ключа ошибочно отсекал все гранулы и отравлял кэш условий запроса для последующих запросов. [#106507](https://github.com/ClickHouse/ClickHouse/pull/106507) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `LIMIT WITH TIES` и дробного `LIMIT WITH TIES`, которые не учитывали collation из `ORDER BY ... COLLATE` при определении совпадающих строк. Строки, равные согласно collation (например, `'1'` и `'01'` при числовой collation), сравнивались побайтно, из-за чего некоторые строки с совпадающими значениями ошибочно исключались из результата. [#106539](https://github.com/ClickHouse/ClickHouse/pull/106539) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлены оптимизации `DISTINCT` in order и `LIMIT BY` in order (включая отрицательный `LIMIT BY`), которые возвращали неверные результаты, когда входные данные были отсортированы с collation (`ORDER BY ... COLLATE`). Строки, равные согласно collation (например, `'a'` и `'A'` при регистронезависимой collation), упорядочиваются по ключу collation и поэтому не оказываются соседними по значению, так что оптимизация in order теперь пропускается при использовании collator. [#106564](https://github.com/ClickHouse/ClickHouse/pull/106564) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлены неверные результаты для `SELECT c, count() FROM t WHERE c GROUP BY c` в таблицах с неявной `_minmax_count_projection`, явной aggregate projection или обычной projection: раньше каждая группа схлопывалась в одну строку с константным ключом и общим числом строк. [#106590](https://github.com/ClickHouse/ClickHouse/pull/106590) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка, из-за которой нельзя было использовать scalar subqueries в первом аргументе `IN`, если второй аргумент — неконстантный кортеж. [#106610](https://github.com/ClickHouse/ClickHouse/pull/106610) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено исключение `Mutation of `Memory` table produced incomplete output`, возникавшее при выполнении команд `ALTER TABLE <memory_table>`, которые не влияют на данные отдельных строк в движке `Memory`, а именно `APPLY PATCHES`, `APPLY DELETED MASK`, `MATERIALIZE STATISTICS`, `MATERIALIZE INDEX`, `MATERIALIZE PROJECTION` и `REWRITE PARTS`. Таблицы `Memory` не содержат этих структур, поэтому такие команды теперь считаются no-op. [#106621](https://github.com/ClickHouse/ClickHouse/pull/106621) ([Groene AI](https://github.com/groeneai)).
* Исправлено игнорирование `session_timezone` при сериализации столбцов `LowCardinality(DateTime)` в текстовые форматы (CSV, TSV, JSONEachRow и т. д.). Ранее после первой записи столбца `LowCardinality(DateTime)` на сервере каждый последующий запрос, записывавший такой столбец, выводил строковое представление локального времени в том часовом поясе, который встретился первым, независимо от `session_timezone`. [#106634](https://github.com/ClickHouse/ClickHouse/pull/106634) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` "Trying to get name of not a column: `ExpressionList`", возникавший в запросах, где asterisk передавался внутри `multiIf` в аргумент табличной функции, например `numbers(multiIf(*, ...), 2)`. Теперь запрос отклоняет такой неразрешимый matcher с `UNSUPPORTED_METHOD`. [#106647](https://github.com/ClickHouse/ClickHouse/pull/106647) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка, из-за которой server не запускался с сообщением `Too many marks in file ...skp_idx_idx.cmrk4, marks expected 0 (bytes size 0)`, когда у таблицы `MergeTree` была часть skip-index с нулём гранул и непустым файлом marks на диске. [#106675](https://github.com/ClickHouse/ClickHouse/pull/106675) ([Groene AI](https://github.com/groeneai)).
* Отклоняются патологические glob patterns для `file`, которые могли приводить к неограниченной рекурсии при перечислении каталогов. Теперь максимальная глубина рекурсии ограничена 1000; запросы, превышающие этот предел, вызывают `TOO_DEEP_RECURSION` вместо падения server из-за переполнения стека. [#106676](https://github.com/ClickHouse/ClickHouse/pull/106676) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение server с ошибкой `Bad cast from type DB::ColumnNothing to DB::ColumnVector<char8_t>` в `FunctionIf::executeForConstAndNullableCondition`, когда условие `if`/`multiIf` сворачивается в константу `Const(Nullable(Nothing))` (например, при выходящем за границы индексе пустого массива, как в `arraySort(x -> x, [])[toNullable(1)]`). [#106678](https://github.com/ClickHouse/ClickHouse/pull/106678) ([Groene AI](https://github.com/groeneai)).
* Исправлено Исключение `'Trying to read from input() twice.'`, возникавшее, когда table function `input` обёрнута в нематериализованный CTE, на который ссылаются из нескольких мест запроса. Теперь такой запрос отклоняется с корректной ошибкой `INVALID_USAGE_OF_INPUT` на этапе планирования. `input` — это одноразовый поток client, и он может быть использован только одним источником в плане запроса. [#106682](https://github.com/ClickHouse/ClickHouse/pull/106682) ([Groene AI](https://github.com/groeneai)).
* Сделано так, чтобы `FORMAT` применялся и к выводу `EXPLAIN` в `EXPLAIN ... INSERT ... SELECT ... FORMAT ...`, в том числе когда `SETTINGS` предшествует `FORMAT` или output format — `Values`. Дополнение к [#101772](https://github.com/ClickHouse/ClickHouse/issues/101772). [#106686](https://github.com/ClickHouse/ClickHouse/pull/106686) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена редкая ложная ошибка `RESOURCE_ACCESS_DENIED` ("Scheduler queue with resource request is about to be destructed") для запроса, которому на самом деле был выдан доступ к ресурсу рабочей нагрузки; причиной было повторное использование thread-local объекта request, сохранявшего сбой предыдущего request. [#106690](https://github.com/ClickHouse/ClickHouse/pull/106690) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена гонка между уничтожением объектов `INATSConsumer` и вызовом для них `INATSConsumer::onMsg` через обратный вызов в библиотеке NATS. [#106692](https://github.com/ClickHouse/ClickHouse/pull/106692) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлена ошибка, из-за которой `match`, `extract`, `extractAll` и `countMatches` возвращали неверные результаты для регулярных выражений, содержащих шестнадцатеричные или восьмеричные escape-последовательности. [#106709](https://github.com/ClickHouse/ClickHouse/pull/106709) ([ofeliacode](https://github.com/ofeliacode)).
* Внутренний Raft TLS в Keeper теперь учитывает настройку `openSSL.client.verificationMode`. Ранее проверка сертификатов peer-узлов всегда была включена для меж-Keeper-коммуникации Raft независимо от этой настройки, поэтому `none` молча игнорировалось. Теперь `none` явно отключает проверку сертификатов peer-узлов Raft, а отсутствие настройки сохраняет прежнее безопасное по умолчанию поведение. Конфигурации, в которых явно задано `none`, после upgrade перестанут проверять сертификаты peer-узлов Raft, что соответствует заданной конфигурации. [#106726](https://github.com/ClickHouse/ClickHouse/pull/106726) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена logical error в startup scripts в `SYSTEM RELOAD CONFIG`. Кроме того, startup scripts теперь загружаются при `SYSTEM RELOAD CONFIG` (пока это functionality доступно только для private). [#106727](https://github.com/ClickHouse/ClickHouse/pull/106727) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Отменено изменение, из-за которого `sumMap` / комбинатор `-Map` отклонял пользовательские числовые типы значений с нестандартными именами (например, `SimpleAggregateFunction(sum, T)` и `Bool`) с ошибкой `ILLEGAL_TYPE_OF_ARGUMENT: Values for -Map cannot be summed`, из-за чего ломались ранее работавшие агрегации. [#106729](https://github.com/ClickHouse/ClickHouse/pull/106729) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлено несколько проблем с безопасностью памяти и исчерпанием ресурсов в ридерах форматов, доступных через недоверенный ввод: чтение за пределами кучи при обработке длины уровней definition/repetition в `DataPageV2` нативного ридера Parquet, переполнение стека на файлах Parquet с глубоко вложенными схемами, а также выделения памяти, игнорировавшие `max_memory_usage` при парсинге WKB/WKT-геометрии GeoParquet и строк/байтов Avro. [#106739](https://github.com/ClickHouse/ClickHouse/pull/106739) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено переполнение буфера кучи (сбой сервера) в `decodeHTMLComponent` при декодировании строк, содержащих расширяющиеся HTML-сущности `&nGt;` или `&nLt;`; проблема была достижима для любого пользователя с помощью одного `SELECT`. [#106741](https://github.com/ClickHouse/ClickHouse/pull/106741) ([Raúl Marín](https://github.com/Algunenano)).
* Теперь `CREATE TABLE`, `ALTER TABLE ADD INDEX` и `CREATE INDEX` со значением `GRANULARITY 0` для индексов пропуска данных отклоняются с понятной ошибкой `BAD_ARGUMENTS`. Ранее это приводило к исключению `Inconsistent AST formatting` в debug-сборках. [#106783](https://github.com/ClickHouse/ClickHouse/pull/106783) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором Azure BACKUP/RESTORE игнорировал настройки конечной точки для дисков `azure_blob_storage` старого формата. [#106784](https://github.com/ClickHouse/ClickHouse/pull/106784) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлено исключение `Bad cast` при отсечении частей по статистике `MinMax`, когда ключевой столбец имеет тип `LowCardinality`, а константа предиката — `LowCardinality(Nullable(...))`. [#106793](https://github.com/ClickHouse/ClickHouse/pull/106793) ([Groene AI](https://github.com/groeneai)).
* Исправлены несогласованные столбцы (которые позже приводят к `LOGICAL_ERROR`) при возникновении исключения (например, `MEMORY_LIMIT_EXCEEDED`) во время парсинга. [#106802](https://github.com/ClickHouse/ClickHouse/pull/106802) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено поведение, при котором после настройки `keeper_server.http_control.secure_port` сервер возвращал HTTP-ответ на запросы HTTPS-клиентов. [#106822](https://github.com/ClickHouse/ClickHouse/pull/106822) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* Исправлена logical error в `parseDateTime` при обработке не-ASCII байтов во входных данных. [#106856](https://github.com/ClickHouse/ClickHouse/pull/106856) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено поведение `SHOW CREATE ROW POLICY`, выводившей `restrictive`/`permissive` в нижнем регистре вместо верхнего, что расходилось с остальными ключевыми словами. [#106865](https://github.com/ClickHouse/ClickHouse/pull/106865) ([Valery Petrov](https://github.com/valerypetrov)).
* Исправлен случай, когда параллельная реплика не применялась для представления с `UNION` из-за пустой таблицы в `UNION`. [#106900](https://github.com/ClickHouse/ClickHouse/pull/106900) ([Igor Nikonov](https://github.com/devcrafter)).
* Исправлен сбой сервера (SIGSEGV) при чтении усечённых данных `Protobuf` с `input_format_allow_errors_num > 0`. [#106905](https://github.com/ClickHouse/ClickHouse/pull/106905) ([Andrey Tsarevskiy | Андрей Царевский ](https://github.com/atsarevskiy)).
* Исправлено исключение `THERE_IS_NO_COLUMN` для distributed queries с оптимизацией `optimize_rewrite_aggregate_function_with_if`, когда argument aggregate function требует приведения к типу `Nullable`. [#106908](https://github.com/ClickHouse/ClickHouse/pull/106908) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлено Исключение (`LOGICAL_ERROR`) в JOIN runtime filter, возникавшее, когда ключ JOIN содержит тип `Variant` или `Dynamic`, вложенный в `Tuple`, `Array` или `Map`, а в правой части JOIN имеется одно уникальное значение. [#106931](https://github.com/ClickHouse/ClickHouse/pull/106931) ([Groene AI](https://github.com/groeneai)).
* Исправлено переполнение знакового целого числа (неопределённое поведение) в `arrayLevenshteinDistanceWeighted` и `arraySimilarity`, когда массивы весов содержат большие целочисленные значения. Теперь для целочисленных весов взвешенное расстояние накапливается в широком целочисленном типе, поэтому большие целочисленные веса больше не приводят к переполнению и сохраняют точность. [#106934](https://github.com/ClickHouse/ClickHouse/pull/106934) ([Groene AI](https://github.com/groeneai)).
* Исправлено падение server (разыменование нулевого указателя) при выполнении `TRUNCATE` или `DROP` для таблицы `EmbeddedRocksDB`, у которой был освобождён дескриптор RocksDB, например для таблицы `read_only`, каталог данных которой был очищен предыдущим `TRUNCATE`. [#106940](https://github.com/ClickHouse/ClickHouse/pull/106940) ([Groene AI](https://github.com/groeneai)).
* Исправлено Исключение (`std::length_error`, сообщавшееся как `LOGICAL_ERROR`) при чтении из table function `*Cluster`, такой как `urlCluster`, при очень большом значении настройки `max_streams_for_files_processing_in_cluster_functions`. Теперь число streams ограничивается разумным значением. [#106946](https://github.com/ClickHouse/ClickHouse/pull/106946) ([Groene AI](https://github.com/groeneai)).
* Исправлено падение server (разыменование нулевого указателя `DB::IConnections`) в `RemoteQueryExecutor`, когда distributed query отменяется непосредственно перед отправкой на shard. [#106950](https://github.com/ClickHouse/ClickHouse/pull/106950) ([Groene AI](https://github.com/groeneai)).
* Исправлено, что `elapsed_us` всегда был равен нулю, а `read_rows`/`read_bytes` занижались в `system.processors_profile_log` и `system.query_log` для запросов flush асинхронной вставки (`AsyncInsertFlush`). [#106982](https://github.com/ClickHouse/ClickHouse/pull/106982) ([Christoph Wurm](https://github.com/cwurm)).
* Исправлено падение (`Source column is not Map` / `SIGSEGV`) при слиянии отсортированных blocks, содержащих столбец `Variant` с вариантом `Map`, у которого порядок в локальном хранилище отличается от глобального. [#107011](https://github.com/ClickHouse/ClickHouse/pull/107011) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `conflicted_part_name.has_value()`, возникавшая во время синхронной вставки в таблицу `ReplicatedMergeTree`, когда inserted block был полностью дедуплицирован, а узел дедупликации конфликтующей части уже был удалён (например, из-за конкурентной операции `DROP PARTITION`). [#107026](https://github.com/ClickHouse/ClickHouse/pull/107026) ([Groene AI](https://github.com/groeneai)).
* Исправлено Исключение (logical error `this->visited_views == right->visited_views`) при `INSERT`, когда два materialized view для одной и той же исходной таблицы записывают в одну и ту же целевую таблицу, а зависимое представление читает эту целевую таблицу, при включённой настройке `materialized_views_squash_parallel_inserts`. [#107027](https://github.com/ClickHouse/ClickHouse/pull/107027) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `Block structure mismatch in UnionStep stream` (аварийное завершение server в debug/sanitizer builds, `Code: 49` в release builds), возникавшая, когда одна ветка `UNION`/`INTERSECT`/`EXCEPT` читала столбец, сериализованный как `Sparse`, а соседняя ветка читала тот же столбец как обычный полный (например, при отправке в materialized view). [#107041](https://github.com/ClickHouse/ClickHouse/pull/107041) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `LOGICAL_ERROR` при вставке в таблицу DeltaLake со столбцами, не соответствующими её схеме записи (например, столбец `Nested`, разворачивающийся в подстолбцы, или table function с явным подмножеством столбцов). Теперь такие вставки завершаются пользовательской ошибкой `INCOMPATIBLE_COLUMNS`. Закрывает [#87402](https://github.com/ClickHouse/ClickHouse/issues/87402). [#107058](https://github.com/ClickHouse/ClickHouse/pull/107058) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `TYPE_MISMATCH` ("Cannot convert string ... to type ...") в запросах `ORDER BY <numeric column> ... LIMIT n`, когда lazy materialization помещала другой столбец перед столбцом сортировки. Теперь порог top-K считывается из правильного столбца сортировки. [#107060](https://github.com/ClickHouse/ClickHouse/pull/107060) ([Groene AI](https://github.com/groeneai)).
* Исправлена синтаксическая ошибка, возникавшая, когда предложение `FORMAT`, `SETTINGS` или `INTO OUTFILE` следует за `SHOW ROW POLICIES` или `SHOW MASKING POLICIES` (например, `SHOW ROW POLICIES FORMAT TabSeparated`). [#107061](https://github.com/ClickHouse/ClickHouse/pull/107061) ([Groene AI](https://github.com/groeneai)).
* Исправлен составной `ALTER TABLE ... RENAME COLUMN a TO b, RENAME COLUMN c TO a`, повторно использующий освобождённое имя столбца (то есть выполняющий "swap") между столбцами разных типов. Materialized part записывала неверный тип столбца, из-за чего последующий `SELECT` завершался ошибкой `Conversion between numeric types and IPv6 is not supported` (или прерывался при загрузке part в debug builds). [#107064](https://github.com/ClickHouse/ClickHouse/pull/107064) ([Groene AI](https://github.com/groeneai)).
* Исправлены недетерминированные результаты функции `roundDown`, когда массив границ содержит `NaN`. Одно и то же входное значение могло возвращать конечную границу или `NaN` в зависимости от соседних строк в пакете. Теперь границы `NaN` игнорируются, поэтому результат зависит только от конечных границ. [#107065](https://github.com/ClickHouse/ClickHouse/pull/107065) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором `quantileTDigest` и `quantileTDigestWeighted` генерировали `DECIMAL_OVERFLOW` для аргументов `Date` и `DateTime`, если интерполированная quantile была дробной, но оставалась в допустимом диапазоне (например, `quantileTDigestWeighted(date, weight)` на значениях, которые все помещаются в тип). Теперь дробный результат усекается до типа результата, как в `quantilesTDigestWeighted`; значения, действительно выходящие за диапазон, по-прежнему вызывают ошибку. Закрывает: [#106722](https://github.com/ClickHouse/ClickHouse/issues/106722). [#107066](https://github.com/ClickHouse/ClickHouse/pull/107066) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором `trimLeft`, `trimRight` и `trimBoth` (а также псевдонимы `ltrim`, `rtrim`, `trim`) генерировали `TOO_LARGE_STRING_SIZE`, когда пользовательский набор символов обрезки был длиннее 16 символов. Теперь наборы символов обрезки любой длины снова поддерживаются. [#107071](https://github.com/ClickHouse/ClickHouse/pull/107071) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлено тихое усечение выходящих за диапазон целочисленных значений в определениях типов `Enum8`/`Enum16`. Теперь `Enum8('a' = 200)` генерирует `ARGUMENT_OUT_OF_BOUND` вместо того, чтобы молча создавать `Enum8('a' = -56)`. [#107081](https://github.com/ClickHouse/ClickHouse/pull/107081) ([Groene AI](https://github.com/groeneai)).
* Исправлен неправильный порядок строк (и `LOGICAL_ERROR` "Rows are not sorted with permutation" в debug builds) для запросов `ORDER BY ... LIMIT` с несколькими столбцами сортировки по столбцам `Nullable`, когда несколько строк имеют одинаковые значения в ведущих столбцах. [#107094](https://github.com/ClickHouse/ClickHouse/pull/107094) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`Expected the argument N to have X rows, but it has Y`), возникавший при выполнении функции над столбцом `Dynamic`, полученным через JOIN по `Dynamic` (например, для неприсоединённых строк `RIGHT`/`FULL JOIN` или для коррелированного подзапроса `EXISTS`, преобразованного в JOIN). [#107095](https://github.com/ClickHouse/ClickHouse/pull/107095) ([Groene AI](https://github.com/groeneai)).
* Исправлено ложное пересоздание сессии ZooKeeper при перезагрузке конфигурации. [#107096](https://github.com/ClickHouse/ClickHouse/pull/107096) ([Azat Khuzhin](https://github.com/azat)).
* При обновлении access entities mutex больше не удерживается во время чтения из ZooKeeper. [#107097](https://github.com/ClickHouse/ClickHouse/pull/107097) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено исключение `Logical error: Too large size passed to allocator` при `INSERT` в таблицу `MergeTree`, когда `adaptive_write_buffer_initial_size` задан слишком большим значением. Начальный размер адаптивного буфера записи теперь ограничивается максимальным размером буфера. [#107104](https://github.com/ClickHouse/ClickHouse/pull/107104) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL ERROR` (`Bad cast from type DB::ColumnString to DB::ColumnLowCardinality`), возникавший, когда константа `Variant`, содержащая элемент `LowCardinality`, сравнивалась с ключевым столбцом, чьё ключевое выражение является немонотонной детерминированной функцией (например, индекс пропуска данных `minmax` по `sipHash64(col)`). [#107111](https://github.com/ClickHouse/ClickHouse/pull/107111) ([Groene AI](https://github.com/groeneai)).
* Исправлена логическая ошибка `Bad cast from type DB::IColumn const* to DB::ColumnNullable const*`, возникавшая, когда квалифицированная звёздочка (`t.*`) по ключу `JOIN ... USING` передавалась в агрегатную функцию, а на другой стороне внешнего JOIN был ключ `Nullable` (при `join_use_nulls = 0`). [#107129](https://github.com/ClickHouse/ClickHouse/pull/107129) ([Groene AI](https://github.com/groeneai)).
* Исправлены пакеты `ALTER TABLE ... ON CLUSTER`, в которых `MODIFY SETTING`/`RESET SETTING` смешивались с изменением комментария (например, `MODIFY COMMENT 'x', MODIFY SETTING old_parts_lifetime = 123`) и из-за этого применялись только на ведущей реплике, оставляя остальные реплики в рассинхронизированном состоянии. Также исправлена ситуация, когда позиционный или задаваемый для отдельного столбца вариант `MODIFY COLUMN ... COMMENT` с `SETTINGS` ошибочно классифицировался как локальное изменение metadata, затрагивающее только комментарий, из-за чего перестановка столбцов не попадала в реплицируемые metadata и могла вызывать `INCOMPATIBLE_COLUMNS` при перезапуске реплики. [#107142](https://github.com/ClickHouse/ClickHouse/pull/107142) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` ("Table expression ... data must be initialized"), возникавший, когда сопоставитель квалифицированной звёздочки (например, `x.*`) ссылался по имени на рекурсивное CTE внутри собственного рекурсивного члена. Теперь такие сопоставители раскрывают столбцы рекурсивной таблицы так же, как это уже происходит в этой позиции для квалифицированного столбца (`x.a`) или неквалифицированного сопоставителя (`*`). [#107144](https://github.com/ClickHouse/ClickHouse/pull/107144) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты запроса, вызванные кэшем условий запроса, когда on-fly мутации (`apply_mutations_on_fly`) или патч-части отфильтровывали строки до `PREWHERE`. Запрос, выполнявшийся с `apply_mutations_on_fly = 1`, мог «отравить» кэш так, что последующий запрос с `apply_mutations_on_fly = 0` и тем же предикатом пропускал метки, которые должен был прочитать, и возвращал слишком мало строк. Это же исправление также распространяется на политики безопасности на уровне строки, которые добавляются как фильтр перед `PREWHERE`: запрос, выполненный с ограничительной ROW POLICY, мог «отравить» кэш для последующего запроса, использующего тот же предикат, но без этой политики. [#107145](https://github.com/ClickHouse/ClickHouse/pull/107145) ([Groene AI](https://github.com/groeneai)).
* Исправлена работа `BACKUP` с `AzureBlobStorage`: при копировании файла данных внутри резервной копии объект назначения записывался вне каталога резервной копии. Проверки существования объектов резервной копии в пунктах назначения `S3` теперь используют точные запросы `HeadObject` вместо перечисления по префиксу, что предотвращает ложные совпадения для ключей с похожими префиксами. [#107153](https://github.com/ClickHouse/ClickHouse/pull/107153) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлено переполнение знакового целого числа в `quantileExactExclusive`, `quantilesExactExclusive`, `quantileExactInclusive` и `quantilesExactInclusive`, которое могло приводить к неверному результату для входных значений `Int64`, охватывающих большой диапазон. [#107154](https://github.com/ClickHouse/ClickHouse/pull/107154) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` ("Unexpected exception in refresh scheduling"), который мог приводить сервер к циклу падений при перезапуске, если у refreshable materialized view есть зависимость `REFRESH ... DEPENDS ON <name>`, чьё неквалифицированное имя совпадает с именем временной таблицы или CTE. [#107156](https://github.com/ClickHouse/ClickHouse/pull/107156) ([Groene AI](https://github.com/groeneai)).
* Убрали запуск стартовых скриптов при перезагрузке config, так как это семантически неверно, неожиданно для пользователей и, как показала практика, чревато ошибками. [#107187](https://github.com/ClickHouse/ClickHouse/pull/107187) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ограничено максимальное значение `queue_size` для pre-reserve. [#107205](https://github.com/ClickHouse/ClickHouse/pull/107205) ([Elian Gidoni](https://github.com/eliangidoni)).
* Исправлена ошибка `Argument ... of GROUPING function is not a part of GROUP BY clause` для запросов, использующих функцию `grouping` при включённой настройке `group_by_use_nulls`. [#107206](https://github.com/ClickHouse/ClickHouse/pull/107206) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлен неверный порядок результатов для `ORDER BY` над `UNION ALL` при включённом `optimize_read_in_order`, когда конвейер union сужался из-за настройки `max_streams_for_union_step`; теперь сужение пропускается, если план опирается на отсортированные выходные потоки UNION. Закрывает [#106880](https://github.com/ClickHouse/ClickHouse/issues/106880). [#107208](https://github.com/ClickHouse/ClickHouse/pull/107208) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено возможное разыменование нулевого указателя при разрешении конфигурации прокси на позднем этапе завершения работы сервера. [#107231](https://github.com/ClickHouse/ClickHouse/pull/107231) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлена работа запросов легковесного `UPDATE` при включённых устаревших параллельных репликах для нереплицируемых таблиц `MergeTree`. [#107246](https://github.com/ClickHouse/ClickHouse/pull/107246) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение сервера (`std::out_of_range` logical error) при вставке в таблицу `Iceberg`, у которой имена столбцов блока записи не совпадают с идентификаторами полей в последней версии схемы (например, если параллельный процесс записи переименовывает столбец в пределах окна `iceberg_metadata_staleness_ms`). Теперь вставка завершается корректной ошибкой запроса вместо падения сервера. [#107279](https://github.com/ClickHouse/ClickHouse/pull/107279) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка зависания при завершении работы в server и local из-за того, что статические пулы потоков бесконечно удерживали неактивные потоки, если `max_*_thread_pool_free_size > 0`. [#107291](https://github.com/ClickHouse/ClickHouse/pull/107291) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено молчаливое игнорирование табличной функцией `s3` строчного позиционного значения `partition_strategy` (например, `hive`). [#107297](https://github.com/ClickHouse/ClickHouse/pull/107297) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлена обработка `low_cardinality_allow_in_native_format=0` при маршалинге параллельных блоков. [#107319](https://github.com/ClickHouse/ClickHouse/pull/107319) ([Azat Khuzhin](https://github.com/azat)).
* Исправлены неверные (часто пустые) результаты для `ORDER BY <col> LIMIT n`, когда включена оптимизация `use_skip_indexes_for_top_k` и в части с индексом пропуска данных `minmax` по столбцу сортировки были удалены строки с помощью легковесного `DELETE`. Теперь оптимизация больше не ставит устаревший minmax для частей с легковесно удалёнными строками выше частей, содержащих актуальные верхние строки. [#107320](https://github.com/ClickHouse/ClickHouse/pull/107320) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка в ClickHouse Keeper, из-за которой метаданные снимка, сообщаемые через `last_snapshot` (и `zk_latest_snapshot_size` в `mntr`), могли откатываться назад после установки устаревшего или дублирующегося снимка. Это также могло приводить к тому, что локальный снимок с тем же индексом перезаписывал зарегистрированный файл снимка прямо на месте, пока тот ещё передавался другому узлу или загружался в S3. [#107321](https://github.com/ClickHouse/ClickHouse/pull/107321) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлено возможное переполнение стека сервера (crash) при чтении глубоко вложенной схемы или значения в форматах `MsgPack`, `BSON`, `ORC`, `Parquet`, `JSON`, `DeltaLake`, `Iceberg` и `Paimon`. Теперь такой глубоко вложенный вход отклоняется с исключением. [#107341](https://github.com/ClickHouse/ClickHouse/pull/107341) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена возможная logical error в `SYSTEM SYNC DATABASE REPLICA ... STRICT`, а также сделано так, чтобы модификатор `STRICT` действительно применялся к репликам базы данных. [#107344](https://github.com/ClickHouse/ClickHouse/pull/107344) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлено аварийное завершение сервера в debug/sanitizer-сборках при чтении таблицы `DeltaLake`, у которой в схеме ClickHouse указан столбец, отсутствующий в сопоставлении столбцов Delta, например после переименования или удаления столбца в журнале Delta. Теперь вместо этого запрос завершается перехватываемой ошибкой `INCORRECT_DATA`. [#107347](https://github.com/ClickHouse/ClickHouse/pull/107347) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда `ORDER BY ... WITH FILL` создавал лишние строки, если в столбце `ORDER BY`, расположенном перед столбцом заполнения, использовалась collation `COLLATE`. Теперь строки группируются по префиксу сортировки с использованием этой collation, в соответствии с порядком сортировки. [#107365](https://github.com/ClickHouse/ClickHouse/pull/107365) ([Groene AI](https://github.com/groeneai)).
* Исправлены crash (`LOGICAL_ERROR` в debug-сборках) и тихая ошибка, приводившая к неверным результатам (в release-сборках), при чтении таблицы Iceberg, чьи метаданные повторно привязывают существующий `schema-id` к другой схеме в разных версиях метаданных. Теперь такие метаданные отклоняются с ошибкой `ICEBERG_SPECIFICATION_VIOLATION`. [#107370](https://github.com/ClickHouse/ClickHouse/pull/107370) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` (`Variant N (T) has size X, but expected Y`), возникавший, когда функция вроде `toString` или `concat` применялась к столбцу `Variant` или `Dynamic`, содержащему один непустой вариант вместе с NULL, и при этом функция возвращала входной столбец без изменений. [#107374](https://github.com/ClickHouse/ClickHouse/pull/107374) ([Groene AI](https://github.com/groeneai)).
* Исправлен `Logical error: 'Duplicate announcement received for replica number N'`, который мог возникать при использовании параллельных реплик, когда скалярный подзапрос содержал вложенные подзапросы, читающие одну и ту же таблицу. [#107381](https://github.com/ClickHouse/ClickHouse/pull/107381) ([Groene AI](https://github.com/groeneai)).
* Исправлен `getServerSetting`, чтобы он возвращал текущее фактически действующее значение для настроек сервера, изменяемых во время выполнения (таких как `max_server_memory_usage`, `mark_cache_size`, `max_concurrent_queries`, размеры пула потоков и т. д.), в соответствии с тем, что показывает `system.server_settings`. [#107388](https://github.com/ClickHouse/ClickHouse/pull/107388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена работа `arrayResize` с аргументом размера типа `Decimal`: теперь размер интерпретируется по его фактическому значению (например, `arrayResize([1, 2, 3], 1.5::Decimal(2, 1))` возвращает один элемент), а не по необработанному немасштабированному представлению. [#107389](https://github.com/ClickHouse/ClickHouse/pull/107389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR` (`block.rows() == getRows()`), возникавший при асинхронной `INSERT` в таблицу `Alias`, когда был включен `use_strict_insert_block_limits`. [#107400](https://github.com/ClickHouse/ClickHouse/pull/107400) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error (`Unexpected return type from equals. Expected Nullable(UInt8). Got UInt8`), возникавшая, когда оптимизация проталкивания дизъюнкции (частичного предиката) проталкивала условие через ключ `USING`, тип которого расширяется в результате JOIN. Также исправлен сбой server (segmentation fault) в анализаторе при разрешении идентификаторов в запросах `JOIN ... USING`, содержащих сворачиваемые в константы ветви `if`/`multiIf`, ссылающиеся на неизвестные идентификаторы. [#107407](https://github.com/ClickHouse/ClickHouse/pull/107407) ([Groene AI](https://github.com/groeneai)).
* Исправлено переполнение буфера кучи (сбой server) в `windowFunnel` при финализации специально сформированного состояния агрегатной функции с типом события вне допустимого диапазона; проблема была достижима для любого пользователя с помощью одного `SELECT`. [#107412](https://github.com/ClickHouse/ClickHouse/pull/107412) ([uwezkhan](https://github.com/uwezkhan)).
* Исправлено неопределенное поведение, возникавшее, когда в качестве аргумента timestamp/duration табличных функций `prometheusQuery` / `prometheusQueryRange` передавалось неконечное значение с плавающей точкой (например, `nan` или `inf`). Теперь такой аргумент вызывает `BAD_ARGUMENTS` вместо формирования некорректной временной метки. [#107417](https://github.com/ClickHouse/ClickHouse/pull/107417) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда `MaterializedPostgreSQL` молча прекращал репликацию изменений, если имя базы данных или таблицы в PostgreSQL содержало прописные буквы (потребитель `pgoutput` запрашивал неэкранированное имя публикации в нижнем регистре, которое не совпадало с публикацией, сохраняющей регистр). [#107423](https://github.com/ClickHouse/ClickHouse/pull/107423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение (`Logical error: Not-ready Set is passed as the second argument for function 'in'`), возникавшее, когда ключевое выражение (`ORDER BY`, `PRIMARY KEY`, `PARTITION BY` или пропускающий `INDEX`) содержало оператор `IN` с таблицей в правой части, например `ORDER BY (x IN some_table)`. Теперь такие ключевые выражения отклоняются на этапе создания таблицы. [#107424](https://github.com/ClickHouse/ClickHouse/pull/107424) ([Groene AI](https://github.com/groeneai)).
* Исправлены некорректные результаты оптимизации `optimize_rewrite_aggregate_function_with_if` для агрегатных функций, сохраняющих значения полезной нагрузки `NULL` (семейство `*_respect_nulls`: `anyRespectNulls`, `first_value_respect_nulls`, `anyLast_respect_nulls`, `last_value_respect_nulls`). Эта оптимизация больше не переписывает `f(if(cond, x, NULL))` в форму `-If` для таких функций. [#107430](https://github.com/ClickHouse/ClickHouse/pull/107430) ([Groene AI](https://github.com/groeneai)).
* Исправлено ложное Исключение `filesystem error: in last_write_time: No such file or directory`, возникавшее при перечислении каталога Объектное хранилище на локальном диске (например, Iceberg table на диске `local`), пока файлы параллельно заменялись. Теперь параллельно удаленная запись просто пропускается в списке вместо прерывания операции. [#107432](https://github.com/ClickHouse/ClickHouse/pull/107432) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `THERE_IS_NO_COLUMN`, возникавшая при `optimize_if_transform_strings_to_enum = 1`, когда оптимизированное выражение `if`/`transform` над строковыми литералами является ключом `GROUP BY` или `ORDER BY` для distributed таблицы или параллельных реплик. [#107455](https://github.com/ClickHouse/ClickHouse/pull/107455) ([Groene AI](https://github.com/groeneai)).
* Исправлено редкое аварийное завершение сервера при обработке `DISTINCT`, которое могло происходить, если во время инициализации множества уникальных ключей не удавалось выделить память (например, при достижении лимита памяти). [#107467](https://github.com/ClickHouse/ClickHouse/pull/107467) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR: Unexpected return type from materialize` (и аналогичные ошибки несоответствия типов), возникавший при использовании `apply_mutations_on_fly = 1` на таблице с ожидающим on-fly `UPDATE`, у которого целевой столбец также считывается как входной аргумент функции более ранним on-fly `UPDATE`, перед мутацией `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#107475](https://github.com/ClickHouse/ClickHouse/pull/107475) ([Groene AI](https://github.com/groeneai)).
* Исправлено использование устаревших учетных данных AWS STS при чтении таблиц `DeltaLake` через `S3`: теперь движок при обновлении snapshot сохраняет `S3`-клиент со свежими учетными данными, поэтому длительные операции чтения больше не завершаются ошибкой после истечения TTL токена STS. Провайдер учетных данных STS assume-role теперь также корректно обновляет учетные данные для любого доступа к `S3` с использованием STS. [#107480](https://github.com/ClickHouse/ClickHouse/pull/107480) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Исправлена ситуация, при которой `SELECT ... FINAL` и `OPTIMIZE TABLE ... FINAL` возвращали дубликаты строк после того, как `CREATE TABLE ... CLONE AS`, `ATTACH PARTITION ... FROM` или `MOVE PARTITION ... TO TABLE` переносили части из обычного `MergeTree` в `ReplacingMergeTree`, `SummingMergeTree` или `AggregatingMergeTree`. У перенесенной части теперь уровень слияния сбрасывается в 0, если движки источника и пункта назначения различаются, поэтому в пункте назначения для нее будет выполнена дедупликация при следующем слиянии. [#107481](https://github.com/ClickHouse/ClickHouse/pull/107481) ([Groene AI](https://github.com/groeneai)).
* Исправлен выход за нижнюю границу диапазона целого числа в парсере PostgreSQL wire protocol: сообщение с полем длины меньше 4 вызывало переполнение в `size - 4` и слишком большой `resize`/`ignore`. [#107485](https://github.com/ClickHouse/ClickHouse/pull/107485) ([uwezkhan](https://github.com/uwezkhan)).
* Улучшено отслеживание отмены запроса во время ожидания quorum в ReplicatedMergeTree. [#107513](https://github.com/ClickHouse/ClickHouse/pull/107513) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлен `Not-ready Set is passed as the second argument for function 'in'` (`LOGICAL_ERROR`), возникавший при запросе к таблице с ключом `PARTITION BY` и подзапросом `IN`/`NOT IN`, обернутым в более крупное выражение, например `WHERE (c0 IN (SELECT ...)) != 0`. [#107515](https://github.com/ClickHouse/ClickHouse/pull/107515) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда `currentUser()`, `user()`, `SESSION_USER` и `authenticatedUser()` вычислялись в пустую строку на пути сброса asynchronous insert (при `async_insert = 1`). Это влияло на выражения столбцов `DEFAULT`/`MATERIALIZED` и materialized view, которые ссылаются на эти функции: они молча сохраняли пустую строку вместо пользователя, выполняющего вставку. [#107541](https://github.com/ClickHouse/ClickHouse/pull/107541) ([Groene AI](https://github.com/groeneai)).
* При `enable_analyzer = 1` (по умолчанию), если таблица существует только в другой базе данных, запрос к ней по одному имени теперь подсказывает нужную таблицу; например, `SELECT * FROM functions` выводит `Maybe you meant system.functions?`. Ранее новый анализатор выдавал ошибку `Unknown table expression identifier` без подсказки, тогда как старый анализатор уже предлагал полезный вариант. [#107550](https://github.com/ClickHouse/ClickHouse/pull/107550) ([Groene AI](https://github.com/groeneai)).
* Память, используемая библиотекой rapidjson (в `prettyPrintJSON`, `JSONMergePatch` и JSON-парсере rapidjson), теперь учитывается трекером памяти, поэтому патологические входные данные отклоняются с `MEMORY_LIMIT_EXCEEDED`, а не приводят к неограниченному выделению памяти. [#107555](https://github.com/ClickHouse/ClickHouse/pull/107555) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен `LOGICAL_ERROR` (`updateFormatPrewhereInfo called more than once`), возникавший при запросе к источнику `file()`, `url()` или объектному хранилищу с явно заданными `PREWHERE` и предложением `WHERE`, когда был включен `optimize_prewhere_after_pushdown`. [#107568](https://github.com/ClickHouse/ClickHouse/pull/107568) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой (разыменование нулевого указателя), который мог происходить, когда распределенный plan запроса выполнялся локально (`make_distributed_plan` + `distributed_plan_execute_locally`) при `log_formatted_queries = 1`. [#107570](https://github.com/ClickHouse/ClickHouse/pull/107570) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение сервера (`std::terminate`, сигнал 6) во время завершения распределенного запроса (`make_distributed_plan = 1`), когда проверка статуса worker не могла заново запланировать следующую проверку (например, `CANNOT_SCHEDULE_TASK` при остановке или `MEMORY_LIMIT_EXCEEDED`). Теперь запрос завершается корректно, а сервер продолжает работать. [#107575](https://github.com/ClickHouse/ClickHouse/pull/107575) ([Groene AI](https://github.com/groeneai)).
* Добавлены недостающие проверки границ при разборе ELF и DWARF. [#107579](https://github.com/ClickHouse/ClickHouse/pull/107579) ([Michael Kolupaev](https://github.com/al13n321)).
* Добавлены недостающие проверки границ в ORC reader. [#107580](https://github.com/ClickHouse/ClickHouse/pull/107580) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлено Исключение (`Digest does not match` logical error), которое могло возникать при `RENAME TABLE`, `RENAME DATABASE` или `CREATE OR REPLACE TABLE`, затрагивающих таблицу `TimeSeries` внутри базы данных `Replicated`. Переименование таблицы `TimeSeries` теперь поддерживается. [#107583](https://github.com/ClickHouse/ClickHouse/pull/107583) ([Groene AI](https://github.com/groeneai)).
* Исправлена возможность неаутентифицированного отказа в обслуживании из-за исчерпания памяти на порту протокола MySQL. [#107599](https://github.com/ClickHouse/ClickHouse/pull/107599) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен `DROP TABLE` для таблицы `TimeSeries` в базе данных `Replicated`, который ранее приводил к утечке внутренних таблиц и оставлял фоновую задачу удаления бесконечно повторяться (`DROP TABLE ... SYNC` зависал). [#107604](https://github.com/ClickHouse/ClickHouse/pull/107604) ([Groene AI](https://github.com/groeneai)).
* Исправлены две уязвимости обхода пути в протоколе получения реплицируемых part, которые позволяли вредоносной реплике записывать файлы вне каталога part. [#107606](https://github.com/ClickHouse/ClickHouse/pull/107606) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена ошибка 'Account must be specified error' при чтении таблицы Delta Lake через Azure. [#107620](https://github.com/ClickHouse/ClickHouse/pull/107620) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлено поведение `ALTER TABLE ... REPLACE PARTITION` для обычной таблицы `MergeTree`, при котором после перезапуска сервера восстановливались замененные part, из-за чего таблица возвращала и новые строки, и устаревшие замененные строки. [#107623](https://github.com/ClickHouse/ClickHouse/pull/107623) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера при чтении materialized view, целевой таблицей которой является `Distributed`, когда запрос выполняется с `enable_analyzer = 0`. [#107653](https://github.com/ClickHouse/ClickHouse/pull/107653) ([Groene AI](https://github.com/groeneai)).
* Если одному и тому же пользователю или роли назначено несколько quotas, теперь они применяются одновременно (запрос отклоняется, если превышена любая из них), вместо того чтобы применялась только одна quota, выбранная недетерминированно. `SHOW QUOTA` и `system.quota_usage` теперь показывают все quotas, применяемые к current user. [#107664](https://github.com/ClickHouse/ClickHouse/pull/107664) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение `s3` и других табличных функций объектного хранилища, которые выдавали `LOGICAL_ERROR` вместо `BAD_ARGUMENTS` при дублировании аргумента в формате ключ-значение, например `s3('http://...', format = 'CSV', format = 'TSV')`. [#107670](https://github.com/ClickHouse/ClickHouse/pull/107670) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема, из-за которой интерфейс MySQL не работал с `MySQL Connector/J` 8.2.0 и новее (включая 9.x). Поле `info` в пакете `OK` теперь кодируется с указанием длины, как на сервере MySQL, благодаря чему JDBC driver может подключаться. [#107693](https://github.com/ClickHouse/ClickHouse/pull/107693) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR` ("Input nodes size mismatch in dag"), возникавший, когда запрос с `make_distributed_plan = 1` выполнял JOIN по ключу, обёрнутому в функцию, а у обеих сторон не было общего типа (например, `ON intDiv(-1, t1.key) = t2.key` при правом ключе `UInt64`). [#107701](https://github.com/ClickHouse/ClickHouse/pull/107701) ([Groene AI](https://github.com/groeneai)).
* Чтение данных Arrow/ArrowStream с пустыми столбцами `String`/`Binary`, созданными Apache Arrow Java \< 19.0.0 (включая Apache Spark), больше не приводит к `INCORRECT_DATA`. [#107764](https://github.com/ClickHouse/ClickHouse/pull/107764) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено исключение `BAD_GET` ("Bad get: has String, requested UInt64") при оценке статистики столбцов `countmin`, возникавшее, когда запрос сравнивал столбец с литералом другого типа без предварительного приведения, например `numeric_col IN (SELECT '5')` или `string_col IN (SELECT 5)`. [#107793](https://github.com/ClickHouse/ClickHouse/pull/107793) ([Groene AI](https://github.com/groeneai)).
* Исправлено зависание табличных функций `odbc` и `jdbc` на несколько минут и игнорирование отмены запроса (`KILL QUERY`, `max_execution_time`), когда bridge переставал отвечать во время определения структуры удалённой таблицы. [#107809](https://github.com/ClickHouse/ClickHouse/pull/107809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение (`Logical error: 'index >= result.start'`) при форматировании некорректного запроса, в котором смешивались позиционная и именованная формы secret-аргумента в табличных функциях `s3`/`gcs`, например `s3('url', 'a', 'b', secret_access_key = 'c')`. [#107818](https://github.com/ClickHouse/ClickHouse/pull/107818) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение, при котором set-индекс пропуска данных не отбрасывал гранулы для столбцов `LowCardinality`. [#107868](https://github.com/ClickHouse/ClickHouse/pull/107868) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлено, что механизм дедупликации вставки вычислял неверные хэши для столбцов `String` и `Array` при настройке сервера `insert_deduplication_version = new_unified_hash`: идентичные вставки могли не дедуплицироваться, поскольку хэш дедупликации зависел от позиции строки во вставленном блоке. [#107915](https://github.com/ClickHouse/ClickHouse/pull/107915) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлены некорректные результаты `ORDER BY` по столбцам `Nullable` с несколькими ключами сортировки на macOS (Apple Silicon), вызванные отсутствующим знаковым расширением в JIT-компилированном компараторе сортировки. [#107973](https://github.com/ClickHouse/ClickHouse/pull/107973) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена регрессия производительности при чтении столбцов `Dynamic` в нескольких потоках. Вызвана [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730). Закрывает [#107942](https://github.com/ClickHouse/ClickHouse/issues/107942). [#107997](https://github.com/ClickHouse/ClickHouse/pull/107997) ([Pavel Kruglov](https://github.com/Avogar)).
* Устаревший параметр озера данных `storage_catalog_url` теперь корректно отклоняется защитным механизмом каталога (ранее проверялись только `storage_catalog_type` и `storage_aws_access_key_id`), а сообщение об ошибке перечисляет все устаревшие параметры. [#108040](https://github.com/ClickHouse/ClickHouse/pull/108040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка `Bad cast from type DB::ColumnSparse to DB::ColumnVector<char8_t>`, возникавшая, когда запрос `LIKE` читает из `text`-индекса через резервный путь direct-read fallback для столбца, хранящегося в разреженном виде. [#108068](https://github.com/ClickHouse/ClickHouse/pull/108068) ([Groene AI](https://github.com/groeneai)).
* Обработчики завершения батча в кэше доступа теперь запускаются всегда, даже для пустого батча. [#108124](https://github.com/ClickHouse/ClickHouse/pull/108124) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен `LOGICAL_ERROR` (`Column identifier is already registered`) для некоторых запросов с `UNION ALL`. [#100770](https://github.com/ClickHouse/ClickHouse/pull/100770) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена ошибка use-after-free мьютекса хранилища рабочей нагрузки во время остановки сервера. [#101447](https://github.com/ClickHouse/ClickHouse/pull/101447) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлена взаимная блокировка в `ALTER DATABASE MODIFY COMMENT` с каталогом `Shared`. [#103683](https://github.com/ClickHouse/ClickHouse/pull/103683) ([Nikolay Degterinsky](https://github.com/evillique)).
* Пустой идентификатор в Unicode-кавычках теперь вызывает `SYNTAX_ERROR` вместо `CANNOT_PARSE_QUOTED_STRING`. [#104173](https://github.com/ClickHouse/ClickHouse/pull/104173) ([leonard9893](https://github.com/leonard9893)).
* Сохраняются исходные типы параметров агрегатных функций `timeSeries*`, чтобы типы `AggregateFunction` корректно проходили round-trip при повторном ATTACH таблицы и с параллельными репликами. [#104812](https://github.com/ClickHouse/ClickHouse/pull/104812) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлен `LOGICAL_ERROR` для materialized CTE при `serialize_query_plan` с параллельными репликами. [#104896](https://github.com/ClickHouse/ClickHouse/pull/104896) ([Igor Nikonov](https://github.com/devcrafter)).
* Исправлено переполнение знакового целого в функциях `timeSeries*ToGrid`, когда параметр staleness (window) близок к `INT64_MAX`. [#105319](https://github.com/ClickHouse/ClickHouse/pull/105319) ([Groene AI](https://github.com/groeneai)).
* Значение настройки `compatibility` больше не сбрасывает `apply_row_policy_after_final` в `false`, поэтому политики строк всегда корректно применяются с `FINAL`. [#105637](https://github.com/ClickHouse/ClickHouse/pull/105637) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлен `clickhouse chdig client`: теперь в заглушке `posix_spawn` корректно учитываются `SETPGROUP`/`RESETIDS`/`SETSIGDEF`. [#105858](https://github.com/ClickHouse/ClickHouse/pull/105858) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено исключение во время проверок корректности MergeTree на проекциях, когда исполнитель merge/mutate не был инициализирован. [#105919](https://github.com/ClickHouse/ClickHouse/pull/105919) ([Mikhail Artemenko](https://github.com/Michicosun)).
* При анализе индексов на проекциях индекс `minmax` теперь загружается из самой проекции, а не из родительской части, что даёт корректные результаты. [#105940](https://github.com/ClickHouse/ClickHouse/pull/105940) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлено исключение в `addMonotonicChain` для `materialize(monotonic_chain(...))`. [#106050](https://github.com/ClickHouse/ClickHouse/pull/106050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлена ошибка, из-за которой `RESTORE` завершался сбоем на резервных копиях, содержащих зависимые объекты `MASKING POLICY`. [#106086](https://github.com/ClickHouse/ClickHouse/pull/106086) ([Julia Kartseva](https://github.com/jkartseva)).
* Исправлено возможное повреждение памяти при разворачивании SQL-пользовательских функций с включенной настройкой `prefer_column_name_to_alias`. [#106121](https://github.com/ClickHouse/ClickHouse/pull/106121) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Словарь, использующий bridge connection, теперь после перезапуска сервера перезагружается и заново устанавливает соединение. Закрывает [#106151](https://github.com/ClickHouse/ClickHouse/issues/106151). [#106152](https://github.com/ClickHouse/ClickHouse/pull/106152) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлен файловый кэш для `LocalObjectStorage`. [#106239](https://github.com/ClickHouse/ClickHouse/pull/106239) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлен ленивый удаленный source для table functions с `use_delayed_remote_source`. [#106470](https://github.com/ClickHouse/ClickHouse/pull/106470) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлен `timeSeriesLastToGrid` для временных меток до начала сетки и временных меток вне окна. [#106504](https://github.com/ClickHouse/ClickHouse/pull/106504) ([Vitaly Baranov](https://github.com/vitlibar)). [#106577](https://github.com/ClickHouse/ClickHouse/pull/106577) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлен `LOGICAL_ERROR` (`Inconsistent AST formatting`) для имени функции, содержащего параметры запроса. [#106635](https://github.com/ClickHouse/ClickHouse/pull/106635) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлена logical error, возникавшая, если таблица удалялась до десериализации задачи distributed plan. [#106944](https://github.com/ClickHouse/ClickHouse/pull/106944) ([Alexander Gololobov](https://github.com/davenger)).
* Для ключей `Nullable` `GROUP BY` теперь используется точное сравнение. [#107050](https://github.com/ClickHouse/ClickHouse/pull/107050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлен `LOGICAL_ERROR` (`Trying to get name of not a column`), возникавший, когда аргумент table function не был выражением столбца (например, неразрешенным сопоставителем `*` из `multiIf`/`CASE`). [#107411](https://github.com/ClickHouse/ClickHouse/pull/107411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен неограниченный рост кэша часовых поясов (`DateLUT`) при обработке большого количества различных некорректных имен часовых поясов. [#107464](https://github.com/ClickHouse/ClickHouse/pull/107464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запись в `part_log` теперь выполняется до того, как обычная мутация `MergeTree` помечается как завершенная. [#107741](https://github.com/ClickHouse/ClickHouse/pull/107741) ([Azat Khuzhin](https://github.com/azat)).
* `arrayFold` теперь проверяет корректность своего аргумента-массива на случай некорректного входа. [#107932](https://github.com/ClickHouse/ClickHouse/pull/107932) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлена редкая data race и возможное обращение к уже освобожденной памяти в кэшированном reader архива skip-index для части `MergeTree`; это могло происходить, когда запрос читал skip indices в момент перемещения или переименования части. [#107995](https://github.com/ClickHouse/ClickHouse/pull/107995) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена регрессия производительности для подстолбцов `Map` с `PREWHERE`. [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена `parseDateTimeBestEffort` с часовым поясом, выбрасывавшая `CANNOT_PARSE_DATETIME` на NULL-строках в `toString(Nullable(DateTime64))`. [#108310](https://github.com/ClickHouse/ClickHouse/pull/108310) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлены table function и движок `ArrowFlight`, которые отклоняли named collection без необязательного ключа `dataset` с ошибкой `No such key 'dataset'`. [#108041](https://github.com/ClickHouse/ClickHouse/pull/108041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена logical error `Inconsistent AST formatting` для window function без аргументов внутри объявления `CODEC` или движка (например, `CODEC(cume_dist() OVER (...))`); теперь такая функция сохраняет скобки, и запрос корректно проходит форматирование и повторный разбор. [#107806](https://github.com/ClickHouse/ClickHouse/pull/107806) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена `hasToken`, которая при needle, содержащем разделитель, молча возвращала результаты через text index вместо того, чтобы выдавать `BAD_ARGUMENTS`. [#108189](https://github.com/ClickHouse/ClickHouse/pull/108189) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Настройку `use_skip_indexes_on_data_read` теперь можно вернуть к значению по умолчанию, использовавшемуся до 26.1 (`false`), через настройку `compatibility`, что позволяет обойти регрессию производительности, при которой путь on-data-read мешает отсечению диапазонов меток skip-index `minmax`/`set`/`bloom_filter`. [#108330](https://github.com/ClickHouse/ClickHouse/pull/108330) ([egor romanov](https://github.com/egor-click)).
* Исправлен возможный crash (разыменование нулевого указателя), когда переопределение `database`/`db` в named collection, переданной в `remote`/`remoteSecure`, не является константным именем database, например `remote(nc, database = (SELECT 1))`. Теперь запрос завершается с понятной ошибкой вместо аварийного завершения. [#108271](https://github.com/ClickHouse/ClickHouse/pull/108271) ([Groene AI](https://github.com/groeneai)).
* Исправлено зависание refreshable materialized view, если connection к ZooKeeper теряется в неподходящий момент. [#108234](https://github.com/ClickHouse/ClickHouse/pull/108234) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлен `Bad cast from type DB::ColumnVector<...> to DB::ColumnTuple` при чтении столбца `Array(Tuple(...))`, значение которого заполнено значениями по умолчанию, например после `ALTER TABLE ... ADD COLUMN` или после незавершенной мутации `ALTER TABLE ... CLEAR COLUMN`, примененной на лету. [#107232](https://github.com/ClickHouse/ClickHouse/pull/107232) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `Bad cast from type DB::ColumnDynamic to DB::ColumnNullable`, возникавшая, когда явная ссылка на ключ `JOIN ... USING`, чей common supertype — `Dynamic`, передавалась в aggregate function, например `count(t.key) IGNORE NULLS`. [#107289](https://github.com/ClickHouse/ClickHouse/pull/107289) ([Groene AI](https://github.com/groeneai)).
* Исправлена незаметная потеря данных в обычном (non-replicated) `MergeTree`, когда `REPLACE PARTITION`, `MOVE PARTITION`, `DETACH PARTITION` или `DETACH PART` выполняются над партицией, для которой еще есть непримененные патчи легковесного `UPDATE`. Теперь эти операции отклоняют команду, как это уже делает `ReplicatedMergeTree`. [#107386](https://github.com/ClickHouse/ClickHouse/pull/107386) ([Groene AI](https://github.com/groeneai)).
* Исправлен crash (SIGSEGV в release builds, assertion о несоответствии типов в debug builds) в `has` для `Map` с ключом `Dynamic`, когда аргумент поиска имеет тип `LowCardinality`, например `has(map('a'::Dynamic, ...), toLowCardinality('b'))`. [#107956](https://github.com/ClickHouse/ClickHouse/pull/107956) ([Groene AI](https://github.com/groeneai)).
* Исправлен `LOGICAL_ERROR` ("Block structure mismatch ... between `ConvertingTransform` and `RemovingReplicatedColumnsTransform`") при вставке в materialized view, у которой в целевой таблице `TO` объявлен столбец с более широким `Enum`, чем выдаёт `SELECT` представления. Теперь допустимое расширение `Enum` применяется корректно. [#107648](https://github.com/ClickHouse/ClickHouse/pull/107648) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `NUMBER_OF_COLUMNS_DOESNT_MATCH` при запросе к таблице `Distributed` (или при использовании параллельных реплик), если в ней есть несколько столбцов `ALIAS`, раскрывающихся в одно и то же выражение, и к ним обращаются вместе с `ORDER BY`/`GROUP BY`/`HAVING`. [#107913](https://github.com/ClickHouse/ClickHouse/pull/107913) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлено неопределённое поведение (null pointer, переданный в `memcpy`) в функциях `detectCharset` и `detectLanguageUnknown`, когда входная строка больше 32768 байт и кодировку определить не удаётся. [#108250](https://github.com/ClickHouse/ClickHouse/pull/108250) ([Groene AI](https://github.com/groeneai)).
* Исправлено `signed integer overflow` (неопределённое поведение) в `dateDiff` с единицами `hour` и `minute` на экстремальных значениях `DateTime64`, близких к границам диапазона `Int64`. [#108229](https://github.com/ClickHouse/ClickHouse/pull/108229) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `Too many marks` для текстового индекса на пустой слитой части. [#106867](https://github.com/ClickHouse/ClickHouse/pull/106867) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен `LOGICAL_ERROR` ("Unexpected return type from if") при чтении столбца с `apply_mutations_on_fly = 1` после `ALTER UPDATE col = ... WHERE <cond>` с неконстантным или ложным условием, за которым следует `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение сервера (`Logical error` в `IColumn::insertFrom`) при приведении `Array(Dynamic)` или `Array(Variant)` к `QBit` с помощью `accurateCastOrNull`, например `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* Исправлена синтаксическая ошибка, возникавшая, когда за подзапросом в `DESCRIBE TABLE (...) AS ...` следует псевдоним. [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `getClientHTTPHeader` теперь корректно считается недетерминированной функцией, поэтому её результат больше не переиспользуется по ошибке в кэше результатов запросов. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* Собирайте `delta-kernel-rs` с возможностью `default-engine-native-tls`, чтобы его собственный HTTP client (`reqwest`) мог повторно использовать OpenSSL, с которым уже слинкован ClickHouse. Это лишь частичное включение `native-tls`: `object_store` по-прежнему принудительно использует `reqwest/rustls-tls-native-roots`, поэтому в итоге `reqwest` получает оба backend’а — `native-tls` и `rustls`. `delta-kernel-rs` пока остается отключенным под MSan, поскольку `ring` все еще компилируется через `object_store` (как транзитивно через `rustls`, так и напрямую для HMAC-подписи AWS-запросов), а его написанный вручную ассемблерный код не генерирует символы, необходимые MSan (отслеживается в upstream в [arrow-rs-object-store#585](https://github.com/apache/arrow-rs-object-store/pull/585)). [#96856](https://github.com/ClickHouse/ClickHouse/pull/96856) ([Austin Bonander](https://github.com/abonander)).
* Добавлена постлинковочная optimization с использованием PGO (Profile-Guided Optimization) и BOLT (Binary Optimization and Layout Tool) для бинарного файла `clickhouse`. Профили собираются на CI-нагрузках и применяются в релизных сборках в режиме best effort — обе стадии переключаются на неоптимизированный результат, если profile устарел или несовместим. На текущий момент PGO не дает выигрыша. [#100938](https://github.com/ClickHouse/ClickHouse/pull/100938) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен режим `--storage` в `clickhouse keeper-bench`, который запускает бенчмарк `KeeperStorage` in-process (без сети, без raft, без state machine), используя те же разделы config `setup`/`generator`, что и сетевой режим. [#103081](https://github.com/ClickHouse/ClickHouse/pull/103081) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлена сборка с `ENABLE_AWS_S3=OFF`. [#105390](https://github.com/ClickHouse/ClickHouse/pull/105390) ([Yue Ni](https://github.com/niyue)).
* Обновлен `mongo-cxx-driver` до r4.3.0. [#105522](https://github.com/ClickHouse/ClickHouse/pull/105522) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлена сборка с RapidJSON. [#105674](https://github.com/ClickHouse/ClickHouse/pull/105674) ([Ilya Golshtein](https://github.com/ilejn)).
* Сборка ускорена за счет удаления транзитивных include из широко используемых заголовков base/ и удаления неиспользуемого кода из вендорного `Poco/Logger.h`. [#105702](https://github.com/ClickHouse/ClickHouse/pull/105702) ([Raúl Marín](https://github.com/Algunenano)).
* Обновлен `libxml2` с 2.15.1 до 2.15.3. [#105985](https://github.com/ClickHouse/ClickHouse/pull/105985) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Внутри Poco используется `expat` 2.8.1. [#105988](https://github.com/ClickHouse/ClickHouse/pull/105988) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Обновлен `thrift` до `v0.23.0`. [#105993](https://github.com/ClickHouse/ClickHouse/pull/105993) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется тег `postgres` `REL_18_4`. [#105994](https://github.com/ClickHouse/ClickHouse/pull/105994) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `krb5` обновлен до 1.22.2. [#106076](https://github.com/ClickHouse/ClickHouse/pull/106076) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Обновлен bundled `curl` до 8.20.0. [#106077](https://github.com/ClickHouse/ClickHouse/pull/106077) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `mariadb-connector-c` обновлён до 3.1.29. Все относящиеся к ClickHouse патчи сохранены. [#106287](https://github.com/ClickHouse/ClickHouse/pull/106287) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Обновлены дайджесты distroless base image для исправления CVE в libssl3t64. [#106360](https://github.com/ClickHouse/ClickHouse/pull/106360) ([Rahul Nair](https://github.com/motsc)).
* Используется `wasmtime` v45.0.1. [#106836](https://github.com/ClickHouse/ClickHouse/pull/106836) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `openssl` обновлён до 3.5.7. [#106844](https://github.com/ClickHouse/ClickHouse/pull/106844) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Distroless Docker build теперь также обновляет плавающие теги `:X.Y-distroless` и `:X.Y.Z-distroless`, а не только тег полной версии. [#106932](https://github.com/ClickHouse/ClickHouse/pull/106932) ([Rahul Nair](https://github.com/motsc)).
* Отключены неиспользуемые возможности `curl`, такие как аутентификация NTLM, cookies, alt-svc, HSTS, DNS-over-HTTPS, netrc, MIME и AWS SigV4. [#107226](https://github.com/ClickHouse/ClickHouse/pull/107226) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `NuRaft` обновлён с исправлением livelock при установке снимка, возникавшего, когда snapshot IO выполнялся в фоновом потоке. Параметр Keeper `nuraft_use_bg_thread_for_snapshot_io` по-прежнему отключён по умолчанию; теперь CI рандомизирует его, чтобы охватить оба режима. [#107338](https://github.com/ClickHouse/ClickHouse/pull/107338) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена сборка `abseil`, если путь checkout ClickHouse содержит подстроку, совпадающую с расширением заголовка. [#107349](https://github.com/ClickHouse/ClickHouse/pull/107349) ([zhiqiang](https://github.com/zhiqiang-hhhh)).
* Размер L2 cache на x86\_64 теперь определяется через `CPUID`, а не через специфичный для glibc `sysconf(_SC_LEVEL2_CACHE_SIZE)`, который недоступен в musl libc. [#107469](https://github.com/ClickHouse/ClickHouse/pull/107469) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Размер stack для сборок с musl увеличен до 8 MiB для поддержки глубоко вложенных запросов. [#107470](https://github.com/ClickHouse/ClickHouse/pull/107470) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Набор символов C-библиотеки, локализуемых в статических библиотеках Rust, теперь определяется по фактическим библиотекам, на которые есть ссылки, а не по вручную поддерживаемому allowlist, благодаря чему охватываются все builtins из compiler-rt и платформенные функции libm. [#107571](https://github.com/ClickHouse/ClickHouse/pull/107571) ([Raúl Marín](https://github.com/Algunenano)).
* Distroless-образы server и Keeper переведены на `gcr.io/distroless/base-nossl-debian13`, чтобы они поставлялись только с теми библиотеками, с которыми ClickHouse действительно слинкован, и не подтягивали библиотеки, которые мы и так линкуем статически. [#107837](https://github.com/ClickHouse/ClickHouse/pull/107837) ([Rahul Nair](https://github.com/motsc)).
* На macOS (`arm_darwin`) повторно включены 50 тестов без сохранения состояния, которые ранее пропускались как устаревшие, а для синхронизации каталогов на macOS теперь используется `fsync` вместо `F_FULLFSYNC`. [#107887](https://github.com/ClickHouse/ClickHouse/pull/107887) ([Raúl Marín](https://github.com/Algunenano)).

<div id="265">
  ### Релиз ClickHouse 26.5, 2026-05-21. [Презентация](https://presentations.clickhouse.com/2026-release-26.5/), [Видео](https://www.youtube.com/watch?v=P1IDAvsi7p8)
</div>

<div id="265-backward-incompatible-change">
  #### Обратно несовместимое изменение
</div>

* Значения по умолчанию для `date_time_input_format` и `cast_string_to_date_time_mode` изменены с `basic` на `best_effort`. Запросы, в которых раньше не удавалось разобрать datetime-строки не в формате basic (например, `2024 April 4`, `Apr 15, 2020 10:30:00`), теперь по умолчанию могут выполняться успешно. Чтобы сохранить прежнее строгое поведение разбора, установите для этих настроек значение `basic` (или используйте `compatibility`). [#89334](https://github.com/ClickHouse/ClickHouse/pull/89334) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Имя элемента Tuple `null` теперь запрещено, поскольку оно конфликтует с именем подстолбца, используемым для null map типа Nullable, что приводит к неоднозначному разрешению подстолбцов. [#98377](https://github.com/ClickHouse/ClickHouse/pull/98377) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены настройки `dynamic_disk_allow_from_env`, `dynamic_disk_allow_from_zk`, `dynamic_disk_allow_include`, запрещающие использование `from_env`, `from_zk`, `include` в динамических дисках. Это обратно несовместимое изменение, поскольку теперь по умолчанию запрещено поведение, которое раньше по умолчанию было разрешено. [#99138](https://github.com/ClickHouse/ClickHouse/pull/99138) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Больше нельзя использовать устаревшие ридер и writer Parquet на основе Arrow. Вместо них будет использоваться native-реализация. [#100949](https://github.com/ClickHouse/ClickHouse/pull/100949) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SHOW CREATE TABLE t` теперь отдает предпочтение временной таблице, если одновременно существуют постоянная и временная таблицы с именем `t`, а database не указана, что соответствует текущему поведению `DESCRIBE TABLE`. Кроме того, теперь поддерживается синтаксис `DESCRIBE TEMPORARY TABLE`. [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Значение `http_max_fields` по умолчанию уменьшено с 1,000,000 до 1,000, а `http_max_field_name_size` — со 128 KB до 4 KB, чтобы ограничить использование памяти HTTP-соединениями до аутентификации. Добавлены настройки `http_max_request_header_size` и `http_headers_read_timeout`. Пользователи, которым нужны прежние более высокие лимиты, могут восстановить их через настройки. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).
* В `system.metric_log` добавлен вложенный столбец `histograms`, который сохраняет в каждой строке снимок каждой зарегистрированной метрики гистограммы, а новая настройка `system_metric_log_show_zero_values_in_histograms` управляет выводом нулевых значений. Таблица `system.histogram_metric_log` объявлена устаревшей. [#103770](https://github.com/ClickHouse/ClickHouse/pull/103770) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `CAST` в `DateTime` или `DateTime64` без явного часового пояса теперь сохраняет часовой пояс исходного аргумента (если источник — `DateTime`/`DateTime64` с явным часовым поясом), что соответствует поведению функций `toDateTime`/`toDateTime64`. Закрывает [#55072](https://github.com/ClickHouse/ClickHouse/issues/55072). [#104433](https://github.com/ClickHouse/ClickHouse/pull/104433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалена table function `kql`. Используйте `SET dialect = 'kusto'`, чтобы выполнять запросы в диалекте KQL. [#105101](https://github.com/ClickHouse/ClickHouse/pull/105101) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Window functions `RANK` и `DENSE_RANK` теперь отклоняют аргументы и генерируют `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` в соответствии со стандартом SQL. Ранее запросы вида `RANK(x) OVER (ORDER BY id)` молча принимались, а аргумент игнорировался. Чтобы восстановить прежнее менее строгое поведение, установите `allow_rank_dense_rank_arguments = 1`. Закрывает [#49526](https://github.com/ClickHouse/ClickHouse/issues/49526). [#104324](https://github.com/ClickHouse/ClickHouse/pull/104324) ([Groene AI](https://github.com/groeneai)).

<div id="267-new-feature">
  #### Новая возможность
</div>

* Добавлена новая настройка `max_bytes_ratio_before_external_join`, аналогичная `max_bytes_ratio_before_external_group_by` и `max_bytes_ratio_before_external_sort`. Она задает порог spill-to-disk для hash JOIN как долю доступной памяти; вместе с абсолютным значением `max_bytes_before_external_join` применяется меньший из двух порогов. [#103862](https://github.com/ClickHouse/ClickHouse/pull/103862) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Настройка `max_bytes_ratio_before_external_join` теперь включена по умолчанию со значением 0.5, аналогично `max_bytes_ratio_before_external_group_by` и `max_bytes_ratio_before_external_sort`. Hash JOIN автоматически переключаются на grace hash join со spill на диск, как только объем данных с правой стороны превышает половину доступной системной памяти (если настроены лимиты памяти). [#104285](https://github.com/ClickHouse/ClickHouse/pull/104285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена table function `filesystem`. Она позволяет представлять структуру каталога в виде таблицы, а также выполнять SQL-запросы к метаданным и содержимому файлов. Изначально [#42039](https://github.com/ClickHouse/ClickHouse/pull/42039) от @perst20. См. [#42039](https://github.com/ClickHouse/ClickHouse/issues/42039). См. [#50208](https://github.com/ClickHouse/ClickHouse/issues/50208). [#53610](https://github.com/ClickHouse/ClickHouse/pull/53610) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Разрешена передача имен функций без обертки в функции высшего порядка, такие как `arrayMap`, `arrayFilter` и т. д. Например, `arrayMap(negate, [1, 2, 3])` теперь эквивалентен `arrayMap(x -> negate(x), [1, 2, 3])`. [#101033](https://github.com/ClickHouse/ClickHouse/pull/101033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены настройка `send_table_structure_on_insert_with_inline_data` и опция клиента `--inline-insert-data`, чтобы server мог сам разбирать встроенные данные INSERT через собственный протокол, избегая дополнительного обмена данными для получения структуры таблицы и повышая производительность при множестве небольших вставок. [#101034](https://github.com/ClickHouse/ClickHouse/pull/101034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены функции `tokenizeQuery` и `highlightQuery` для токенизации SQL-запросов и подсветки синтаксиса. `tokenizeQuery` возвращает токены лексера со смещениями в байтах и типами токенов; `highlightQuery` возвращает диапазоны подсветки синтаксиса на основе parser с категориями подсветки (keyword, identifier, function, number, string и т. д.). [#101054](https://github.com/ClickHouse/ClickHouse/pull/101054) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена настройка `url_base` для разрешения относительных URL в table function `url` и движке таблицы `URL` в соответствии с семантикой RFC 3986. [#101113](https://github.com/ClickHouse/ClickHouse/pull/101113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка отрицательных значений в clause `LIMIT BY`, чтобы выбирать строки с *конца* каждой группы, а не с начала. Например, `LIMIT -2 BY id` возвращает последние две строки для каждого `id`. Также поддерживаются отрицательные смещения (`LIMIT -1 OFFSET -1 BY id`) и смешанные знаки (`LIMIT -2 OFFSET 1 BY id`). [#103222](https://github.com/ClickHouse/ClickHouse/pull/103222) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена поддержка функции `json_value` для вывода в `tuple` и `array`, что повышает производительность при выполнении нескольких JSON-запросов. [#78362](https://github.com/ClickHouse/ClickHouse/pull/78362) ([kevinyhzou](https://github.com/KevinyhZou)). Добавлена поддержка многопутевого аргумента JSONPath `Tuple`/`Array` в `JSON_VALUE`, `JSON_EXISTS` и `JSON_QUERY`, от @KevinyhZou. [#101102](https://github.com/ClickHouse/ClickHouse/pull/101102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Введён новый параметр `kafka_autodetect_client_rack`. Если он задан, зона доступности определяется средствами облачной платформы и передаётся в `librdkafka` как параметр `client.rack`, чтобы избежать межзонного обмена данными. [#81323](https://github.com/ClickHouse/ClickHouse/pull/81323) ([Ilya Golshtein](https://github.com/ilejn)).
* В `system.blob_storage_log` добавлен тип события `Read` для отслеживания операций чтения из Объектного хранилища; он управляется новой настройкой `enable_blob_storage_log_for_read_operations`. [#96867](https://github.com/ClickHouse/ClickHouse/pull/96867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь пользователи могут видеть наблюдения ZooKeeper, установленные `clickhouse-server`, с помощью новой таблицы `system.zookeeper_watches`. [#99277](https://github.com/ClickHouse/ClickHouse/pull/99277) ([Den Kalantaevskii](https://github.com/Diskein)).
* Добавлено профильное событие `Shards`, которое подсчитывает общее количество сегментов, участвующих в распределённых запросах, по всем таблицам. [#99470](https://github.com/ClickHouse/ClickHouse/pull/99470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `WASM` UDF теперь можно объявлять как `DETERMINISTIC`, и к ним будет применяться константная свёртка. [#100005](https://github.com/ClickHouse/ClickHouse/pull/100005) ([Vasily Chekalkin](https://github.com/bacek)).
* Добавлена настройка `parallel_replicas_prefer_local_replica`: когда она отключена, параллельные реплики выбираются исключительно алгоритмом балансировки нагрузки, что позволяет направлять даже запросы с `max_parallel_replicas = 1` на другой хост. [#100139](https://github.com/ClickHouse/ClickHouse/pull/100139) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены настройки сервера `{disk,storage,http}_connections_rcvbuf` и `{disk,storage,http}_connections_sndbuf` для управления размерами буферов TCP-сокетов в исходящих HTTP-соединениях, что позволяет операторам переопределять autotuning ядра и ограничивать использование памяти на одно соединение. [#100478](https://github.com/ClickHouse/ClickHouse/pull/100478) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлена поддержка `CREATE OR REPLACE MATERIALIZED VIEW` с той же семантикой атомарной подмены, что и у `CREATE OR REPLACE TABLE`. Работает с внутренними таблицами, таблицами `TO`, `POPULATE`, `REFRESH` и `ON CLUSTER`. [#100539](https://github.com/ClickHouse/ClickHouse/pull/100539) ([DQ](https://github.com/il9ue)).
* Добавлены метрика гистограммы `s3_read_request_duration_microseconds` и `s3_read_request_bytes` для наблюдения за временем жизни соединения и объёмом прочитанных данных у S3 GET-запросов; они доступны в `system.histogram_metrics` и на конечной точке Prometheus. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлены Движки таблиц `Paimon`, `PaimonS3`, `PaimonAzure`, `PaimonHDFS` и `PaimonLocal` с поддержкой инкрементального чтения на основе отслеживания прогресса снимков Keeper. Инкрементальный режим возвращает только новые строки с момента последнего зафиксированного снимка. Доступно целевое чтение дельты снимка через `paimon_target_snapshot_id`, а ограничение числа снимков на запрос — через `max_consume_snapshots`. Фоновое обновление метаданных настраивается параметром `paimon_metadata_refresh_interval_sec`. Возможность включается через `allow_experimental_paimon_storage_engine`. [#102343](https://github.com/ClickHouse/ClickHouse/pull/102343) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Добавлена новая настройка таблицы Kafka `kafka_map_virtual_columns_on_write`. Если она включена, столбцы `_key`, `_timestamp`, `_headers.name` и `_headers.value` из схемы таблицы Kafka при `INSERT` записываются как соответствующие ключ сообщения Kafka, временная метка и заголовки и исключаются из полезной нагрузки сообщения. [#103243](https://github.com/ClickHouse/ClickHouse/pull/103243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены запросы `SYSTEM PAUSE VIEW [db.]name` и `SYSTEM PAUSE VIEWS` для refreshable materialized views. В отличие от `SYSTEM STOP VIEW`, `SYSTEM PAUSE VIEW` не прерывает выполняющееся в данный момент обновление — текущему обновлению даётся завершиться, а предотвращаются только последующие обновления. Отменяется командами `SYSTEM START VIEW` или `SYSTEM START VIEWS`, которые теперь единообразно снимают как состояние остановки, так и состояние паузы. [#103252](https://github.com/ClickHouse/ClickHouse/pull/103252) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Добавлена функция `regexpPosition` (с совместимыми с PostgreSQL псевдонимами `regexpInstr` и `regexp_instr`), которая возвращает байтовую позицию N-го совпадения regex в строке. Поддерживаются начальное смещение, режим возврата позиции после совпадения, флаги regex и выбор группы захвата. [#104172](https://github.com/ClickHouse/ClickHouse/pull/104172) ([Abhinav Agarwal](https://github.com/aagarwal-gtr)).
* Добавлены новые функции `isPrime` и `isProbablePrime` для проверки чисел на простоту. `isPrime` возвращает точный результат для беззнаковых целых чисел вплоть до `UInt64`. `isProbablePrime` также поддерживает `UInt128` и `UInt256`; для этих более широких типов `0` означает точно составное число, а `1` — вероятно простое. Необязательный второй аргумент функции `isProbablePrime`, `rounds`, управляет степенью достоверности (с ограничением до `256`); значение по умолчанию — `25` раундов — ограничивает вероятность ложноположительного результата для случайного составного числа уровнем ниже `10^-15`, а `isProbablePrime` можно отменить. [#104234](https://github.com/ClickHouse/ClickHouse/pull/104234) ([Nihal Z. Miaji](https://github.com/nihalzp)). [#104639](https://github.com/ClickHouse/ClickHouse/pull/104639) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#104806](https://github.com/ClickHouse/ClickHouse/pull/104806) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `clear` и `/clear` теперь очищают терминал в инструментах командной строки clickhouse вместо того, чтобы ошибочно выполняться как запрос. [#104318](https://github.com/ClickHouse/ClickHouse/pull/104318) ([Tyler Hannan](https://github.com/tylerhannan)).
* Табличной функции `file` теперь разрешено принимать `Array(String)` путей в запросах `SELECT`. [#104442](https://github.com/ClickHouse/ClickHouse/pull/104442) ([Yue](https://github.com/niyue)).
* В таблицу `system.functions` добавлены столбцы `deterministic` и `higher_order`. [#104479](https://github.com/ClickHouse/ClickHouse/pull/104479) ([Pedro Ferreira](https://github.com/PedroTadim)).
* В `bech32Encode` добавлен необязательный параметр варианта кодирования (`bech32` / `bech32m`), а в `bech32Decode` — режим raw-декодирования для кодирования не-SegWit-адресов (например, Cosmos SDK, Injective, Osmosis). [#98986](https://github.com/ClickHouse/ClickHouse/pull/98986) ([Yash ](https://github.com/Onyx2406)).
* Теперь можно записывать данные в формат `AvroConfluent`, который ранее поддерживался только для ввода. Это позволяет создавать Avro-сообщения с обрамлением Confluent Schema Registry напрямую из ClickHouse, например при записи в Kafka. Схема автоматически регистрируется в registry. Используйте новую настройку `output_format_avro_confluent_subject`, чтобы указать имя subject. [#101935](https://github.com/ClickHouse/ClickHouse/pull/101935) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Добавлена функция `prettyPrintJSON` для форматирования строки JSON в удобочитаемый вид. Полезно для панелей мониторинга или отчётов, где для красивого форматирования раньше требовался дополнительный шаг на стороне клиента. Закрывает [#62523](https://github.com/ClickHouse/ClickHouse/issues/62523). [#102594](https://github.com/ClickHouse/ClickHouse/pull/102594) ([Dmitry Prokofyev](https://github.com/prokofyevDmitry)).
* Добавлен `STRING_AGG` как регистронезависимый алиас `groupConcat` для совместимости с PostgreSQL / стандартным SQL. [#105125](https://github.com/ClickHouse/ClickHouse/pull/105125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Результаты отдельных подзапросов теперь можно кэшировать независимо, используя `SETTINGS use_query_cache = true` для конкретных подзапросов, без кэширования всего внешнего запроса. Новая настройка `query_cache_for_subqueries = true` включает массовое применение `use_query_cache` ко всем подзапросам. Note: `use_query_cache` во внешнем запросе больше не распространяется на подзапросы автоматически. [#99804](https://github.com/ClickHouse/ClickHouse/pull/99804) ([Vincent Voyer](https://github.com/vvo)).
* В редактор запросов веб-интерфейса (`play.html`) добавлена подсветка синтаксиса на основе лексера, выполненная по образцу цветовой схемы `clickhouse-client`. [#105105](https://github.com/ClickHouse/ClickHouse/pull/105105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Добавлен экспериментальный интерфейс веб-терминала по адресу `/webterminal`, предоставляющий интерактивный сеанс `clickhouse-client` в браузере через WebSocket. По умолчанию отключён; включается с помощью настройки сервера `allow_experimental_webterminal`. Посмотреть можно [здесь](https://play.clickhouse.com/webterminal?user=play). [#100277](https://github.com/ClickHouse/ClickHouse/pull/100277) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105191](https://github.com/ClickHouse/ClickHouse/pull/105191) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105059](https://github.com/ClickHouse/ClickHouse/pull/105059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Движок `Kafka2` (экспериментальный, с хранением смещений на основе Keeper) теперь поддерживает прямые запросы `SELECT` и настройку `kafka_commit_on_select`. [#100276](https://github.com/ClickHouse/ClickHouse/pull/100276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `WASM` UDFs теперь могут приводить больше числовых типов: меньшие целочисленные типы к более широким (например, `Int8` к `UInt64`), а любые целые — к типам с плавающей точкой (например, `Int32` к `Float32`). [#100435](https://github.com/ClickHouse/ClickHouse/pull/100435) ([Vasily Chekalkin](https://github.com/bacek)).
* Добавлена поддержка функции `LIKE` в запросе `DELETE FROM system.webassembly_modules`. [#104397](https://github.com/ClickHouse/ClickHouse/pull/104397) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Добавлена поддержка гео-типов для `Iceberg`. [#103113](https://github.com/ClickHouse/ClickHouse/pull/103113) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлена поддержка подготовленных операторов на сервере ArrowFlight SQL. [#103047](https://github.com/ClickHouse/ClickHouse/pull/103047) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Повышена устойчивость парсера KQL (для поддержки языка Kusto): глубина парсера и счётчики возвратов теперь сохраняются между этапами парсинга KQL, благодаря чему ограничения парсера для сложных запросов KQL отслеживаются согласованно. [#103528](https://github.com/ClickHouse/ClickHouse/pull/103528) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* Повторно использовать кэш метаданных нижнего колонтитула Parquet при чтении локальных файлов Parquet через табличную функцию `file` или движок таблицы `File`. Ранее кэш использовался только для backend-соединений объектного хранилища. [#104260](https://github.com/ClickHouse/ClickHouse/pull/104260) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Проталкивать `ORDER BY ... LIMIT n` через `LEFT`/`RIGHT` JOIN, если ключ сортировки ссылается только на столбцы со стороны, сохраняемой JOIN, тем самым ограничивая число строк, которое входной поток с сохраняемой стороны должен сформировать до выполнения JOIN. Управляется новой настройкой `query_plan_top_k_through_join` (по умолчанию включена). [#104268](https://github.com/ClickHouse/ClickHouse/pull/104268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Включить настройки `use_top_k_dynamic_filtering` и `use_skip_indexes_for_top_k` по умолчанию, чтобы повысить производительность запросов `ORDER BY ... LIMIT N`. [#99537](https://github.com/ClickHouse/ClickHouse/pull/99537) ([Alexey Milovidov](https://github.com/alexey-milovidov)). По умолчанию ограничить `use_top_k_dynamic_filtering` столбцами сортировки фиксированной длины, чтобы избежать регрессий в запросах `ORDER BY <var-length-column> LIMIT N`, где затраты на сравнение порога для каждой строки превышают выигрыш по I/O. Предыдущее поведение доступно через новую настройку `use_top_k_dynamic_filtering_for_variable_length_types`. [#104216](https://github.com/ClickHouse/ClickHouse/pull/104216) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Использовать возможность oversize-arena в `jemalloc` для уменьшения числа page fault. [#103958](https://github.com/ClickHouse/ClickHouse/pull/103958) ([Nikita Taranov](https://github.com/nickitat)).
* Ограничить число одновременно активных streams в `UNION ALL`, чтобы снизить пиковое потребление памяти. [#100176](https://github.com/ClickHouse/ClickHouse/pull/100176) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Слегка оптимизировать кэш страниц в пространстве пользователя. [#100300](https://github.com/ClickHouse/ClickHouse/pull/100300) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Теперь кэш страниц в пространстве пользователя всегда лучше, чем кэш страниц ОС.
* Холодные чтения из объектного хранилища через кэш страниц в пространстве пользователя (`use_page_cache_for_object_storage = 1`) теперь выполняются значительно быстрее, поскольку последовательные промахи кэша объединяются в один HTTP request вместо одного запроса на каждый блок `page_cache_block_size`. [#104230](https://github.com/ClickHouse/ClickHouse/pull/104230) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ускорить анализ индексов, включающий приведение типов и применение функций. Закрывает [#55653](https://github.com/ClickHouse/ClickHouse/issues/55653). [#100366](https://github.com/ClickHouse/ClickHouse/pull/100366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ускорить выполнение больших запросов к таблицам `Merge` поверх очень большого числа базовых таблиц. Закрывает [#32465](https://github.com/ClickHouse/ClickHouse/issues/32465). [#100369](https://github.com/ClickHouse/ClickHouse/pull/100369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалить vtable из типов полей настроек, уменьшив размер копии `Settings` примерно в 28 раз и улучшив локальность кэша за счет структуры typed-array для всех типов настроек. [#102269](https://github.com/ClickHouse/ClickHouse/pull/102269) ([Raúl Marín](https://github.com/Algunenano)).
* Добавить настройки `max_threads_min_free_memory_per_thread` и `max_insert_threads_min_free_memory_per_thread`, чтобы автоматически снижать параллелизм запросов, когда на сервере мало свободной памяти. [#100383](https://github.com/ClickHouse/ClickHouse/pull/100383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Снизить использование памяти в системах с небольшим объемом памяти (\< 4 GiB). [#100389](https://github.com/ClickHouse/ClickHouse/pull/100389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен `OptimizeTrivialGroupByLimitPass`. Для простых запросов `SELECT ... FROM t GROUP BY k LIMIT n` (без `HAVING`, `ORDER BY` и оконных функций) analyzer теперь устанавливает `max_rows_to_group_by = n + offset` и `group_by_overflow_mode = 'any'`, поэтому aggregation останавливается, как только будет получено `n` различных ключей, вместо группировки всего входного набора данных. Управляется новой настройкой `optimize_trivial_group_by_limit_query` (включена по умолчанию). [#104473](https://github.com/ClickHouse/ClickHouse/pull/104473) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Неявный min-max индекс на уровне гранул для виртуальных столбцов `_part_offset` и `_block_number`, включая проекции. Обеспечивает быстрое pruning гранул на основе predicates виртуальных столбцов. [#103952](https://github.com/ClickHouse/ClickHouse/pull/103952) ([Mikhail Artemenko](https://github.com/Michicosun)). [#104746](https://github.com/ClickHouse/ClickHouse/pull/104746) ([Mikhail Artemenko](https://github.com/Michicosun)). [#105137](https://github.com/ClickHouse/ClickHouse/pull/105137) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Для семейства методов aggregation `prealloc_serialized` хеши для каждой строки теперь вычисляются заранее во время прохода батч-сериализации и затем используются, чтобы (a) избежать повторного хеширования в `emplaceKey`/`findKey` и (b) выполнять программную предварительную выборку бакета следующей строки. Это ускоряет aggregation по нескольким строковым/сериализованным ключам за счет скрытия latency промахов кэша hash table. [#104475](https://github.com/ClickHouse/ClickHouse/pull/104475) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Кэш условий запроса для таблиц `Iceberg`. [#102115](https://github.com/ClickHouse/ClickHouse/pull/102115) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Оптимизированы `cramersV`, `cramersVBiasCorrected`, `theilsU` и `contingency` при использовании с оконными функциями. Закрывает [#83521](https://github.com/ClickHouse/ClickHouse/issues/83521). [#93384](https://github.com/ClickHouse/ClickHouse/pull/93384) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена оптимизация запроса, которая переписывает `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), N)` в `dictGet('dict', 'a', key)`, чтобы избежать получения ненужных атрибутов словаря. Управляется настройкой `optimize_dictget_tuple_element` (включена по умолчанию). [#100186](https://github.com/ClickHouse/ClickHouse/pull/100186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Включена buffering для шагов сортировки на initiator в distributed queries с сортировкой. [#100661](https://github.com/ClickHouse/ClickHouse/pull/100661) ([Nikita Taranov](https://github.com/nickitat)).
* Повышение производительности для `partial_merge` JOIN. [#100945](https://github.com/ClickHouse/ClickHouse/pull/100945) ([Artem Zuikov](https://github.com/4ertus2)).
* Незначительно уменьшено избыточное выделение памяти в `partial_merge` JOIN. [#100963](https://github.com/ClickHouse/ClickHouse/pull/100963) ([Artem Zuikov](https://github.com/4ertus2)).
* Оптимизированы выделение и освобождение памяти за счет кэширования настроек сэмплирования вместо обхода всей иерархии трекера памяти. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* Снижены накладные расходы на выделение памяти во время S3 multipart-загрузок за счет предварительного выделения внутренних контейнеров отслеживания. [#101799](https://github.com/ClickHouse/ClickHouse/pull/101799) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Добавлена программная предварительная выборка на этапе probe hash join для снижения latency доступа к памяти при работе с большими hash table; управляется настройкой `enable_software_prefetch_in_join`. [#102444](https://github.com/ClickHouse/ClickHouse/pull/102444) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Оптимизирована структура `MemoryTracker`, что повышает его производительность примерно на 25%. [#103464](https://github.com/ClickHouse/ClickHouse/pull/103464) ([Azat Khuzhin](https://github.com/azat)).
* Выполняется Rewrite предикатов `coalesce(a, b, ...) <op> const` и `ifNull(a, b) <op> const` перед анализом индексов, чтобы первичный ключ по отдельным столбцам и индекс пропуска данных для каждого аргумента могли отсеивать гранулы. Управляется новой настройкой `allow_key_condition_coalesce_rewrite` (включена по умолчанию). [#103468](https://github.com/ClickHouse/ClickHouse/pull/103468) ([Manuel](https://github.com/raimannma)).
* Значительно улучшена производительность запросов при чтении каталогов Iceberg с большими JSON-файлами метаданных за счёт оптимизации обработки экранированных слешей. [#103998](https://github.com/ClickHouse/ClickHouse/pull/103998) ([Mohaidoss](https://github.com/mohaidoss)).
* Устранены накладные расходы кэша несжатых данных индекса, когда кэш отключён (настройка сервера `index_uncompressed_cache_size = 0`, это значение по умолчанию). [#104063](https://github.com/ClickHouse/ClickHouse/pull/104063) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлены запросы `ORDER BY ... LIMIT` с небольшим limit, которые в сочетании с неселективным фильтром `WHERE` считывали слишком много гранул. Раньше любой фильтр поверх упорядоченного чтения отключал разбиение задач по диапазонам меток, из-за чего конвейер не мог прерывать выполнение между гранулами и считывал всю part для каждого потока. [#104112](https://github.com/ClickHouse/ClickHouse/pull/104112) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено отсутствие повторного использования кэша размеров hash table после перестановки сторон JOIN. [#104131](https://github.com/ClickHouse/ClickHouse/pull/104131) ([Nikita Taranov](https://github.com/nickitat)).
* Когда `fsync_after_insert` включён, fsync файлов part теперь выполняется параллельно с использованием пула потоков IO, что ускоряет завершение вставки в wide tables. Полная загрузка ClickBench `hits` теперь выполняется примерно на 22% быстрее. [#104137](https://github.com/ClickHouse/ClickHouse/pull/104137) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Функции `find_first_symbols`, `find_first_not_symbols`, `find_last_symbols_or_null`, `find_last_not_symbols_or_null` и `splitInto` векторизованы на AArch64 с использованием NEON. Ранее эти helpers имели SIMD-путь только на x86 (SSE2 / SSE4.2), а на ARM переходили к скалярному циклу. Это ускоряет parsing TSV примерно в 2 раза, URL-функции и `splitByChar` — примерно в 1,3 раза на наборе данных ClickBench `hits`; parsing очень плотного JSON (поля короче 16 байт с высокой частотой) немного замедляется, что соответствует существующему компромиссу SSE2. [#104228](https://github.com/ClickHouse/ClickHouse/pull/104228) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Чтение данных через тривиальный столбец `ALIAS` (например, `some_alias['key']`, где `some_alias ALIAS m`) теперь использует тот же путь чтения по подстолбцам, что и при прямом обращении к исходному столбцу, вновь обеспечивая значительную экономию I/O для столбцов `Map`, `Array`, `Tuple` и `Nullable`, определённых через alias. [#104245](https://github.com/ClickHouse/ClickHouse/pull/104245) ([Raúl Marín](https://github.com/Algunenano)).
* Снижена конкуренция за блокировки на пути асинхронного чтения из удалённой FS за счёт перевода `AsyncReadCounters` в lock-free режим на уровне отдельного запроса. [#104374](https://github.com/ClickHouse/ClickHouse/pull/104374) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Немного улучшен план запроса для упорядоченного сканирования проекций. [#103723](https://github.com/ClickHouse/ClickHouse/pull/103723) ([Mikhail Artemenko](https://github.com/Michicosun)).
* `optimizeUseNormalProjections` расширен и теперь также обрабатывает частный случай, когда ничего не было отфильтровано, но ключ сортировки проекции позволяет убрать этап сортировки из плана запроса. [#104680](https://github.com/ClickHouse/ClickHouse/pull/104680) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Разрешена корректная работа синтаксического сахара `json.path[]` и явных подсказок типа для типизированных путей `JSON`. [#99179](https://github.com/ClickHouse/ClickHouse/pull/99179) ([Pavel Kruglov](https://github.com/Avogar)).
* Оптимизировано выражение `json.path[N].nested.path` (которое разворачивается в `tupleElement(tupleElement(json.path[N], 'nested'), 'path')`) в `json.path[].nested.path[N]`, что позволяет читать значительно меньше данных. [#99802](https://github.com/ClickHouse/ClickHouse/pull/99802) ([Pavel Kruglov](https://github.com/Avogar)).
* Оптимизированы проверки доступа для `SHOW TABLES` в `system.parts`: проверки grant на уровне database вынесены из цикла по отдельным table. [#100860](https://github.com/ClickHouse/ClickHouse/pull/100860) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Удалена избыточная проверка доступа `SHOW TABLES` для каждой table в быстром пути `SELECT name` / `SELECT database, name` для `system.tables`. [#100881](https://github.com/ClickHouse/ClickHouse/pull/100881) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Включена JIT-компиляция на macOS. [#100947](https://github.com/ClickHouse/ClickHouse/pull/100947) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Откладывание политики строк после `FINAL` теперь пропускается, если она зависит только от столбцов ключа сортировки и является детерминированной; также в этом случае пропускается связанное откладывание `PREWHERE`, которое ранее вызывала политика строк. [#102884](https://github.com/ClickHouse/ClickHouse/pull/102884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена поддержка `hasAny` и `hasAll` в качестве предикатов фильтра для текстовых индексов. [#103266](https://github.com/ClickHouse/ClickHouse/pull/103266) ([Anton Popov](https://github.com/CurtizJ)).
* Долгоживущее состояние кучи MergeTree (метаданные на уровне отдельных частей и таблиц) перенесено в выделенную arena jemalloc, доступную через асинхронные метрики `jemalloc.mergetree_arena.*`. Это уменьшает фрагментацию arena по умолчанию в установившемся режиме и не позволяет долгоживущим объектам отдельных частей удерживать страницы, которые иначе могли бы быть освобождены. [#104136](https://github.com/ClickHouse/ClickHouse/pull/104136) ([Raúl Marín](https://github.com/Algunenano)).
* Улучшена обработка тайм-аута клиента ZooKeeper под высокой нагрузкой, когда множество запросов передаются конвейером в одном сеансе. Теперь клиент ZooKeeper использует тайм-аут на основе прогресса: пока от server поступают какие-либо данные в пределах `session_timeout_ms`, ожидание продлевается. При этом жесткое ограничение в `3 * session_timeout_ms` на запрос по-прежнему ограничивает latency вызывающей стороны. Закрывает [#100466](https://github.com/ClickHouse/ClickHouse/issues/100466). [#104351](https://github.com/ClickHouse/ClickHouse/pull/104351) ([Antonio Andelic](https://github.com/antonio2368)).
* Флаги трассировки для отдельных событий перенесены в отдельный массив и теперь выделяются лениво, что снижает overhead трассировки `ProfileEvents`. [#105030](https://github.com/ClickHouse/ClickHouse/pull/105030) ([Azat Khuzhin](https://github.com/azat)).
* Добавлен `compareTrackAt` для `ColumnDecimal`, что повышает производительность сравнений для столбцов `Decimal`. [#105110](https://github.com/ClickHouse/ClickHouse/pull/105110) ([Artem Zuikov](https://github.com/4ertus2)).
* Добавлена SIMD-реализация `MD5` (`AVX2` / `AVX512`), которая хеширует несколько входных данных параллельно, повышая пропускную способность. [#105161](https://github.com/ClickHouse/ClickHouse/pull/105161) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="267-improvement">
  #### Улучшения
</div>

* Улучшен вывод справки во всех приложениях ClickHouse: `--help` теперь всегда возвращает код выхода `0`, пишет в `stdout`, а `clickhouse --help` верхнего уровня выводит список всех подкоманд. Также добавлены опция `--no-sudo` для `clickhouse start` / `restart` (полезно в Docker) и подкоманда `clickhouse help`. Продолжение [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) от @qoega. [#98148](https://github.com/ClickHouse/ClickHouse/pull/98148) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Значение `input_format_column_name_matching_mode` по умолчанию изменено с `match_case` на `auto`. Форматы ввода, сопоставляющие имена входных столбцов со схемой таблицы (`JSONEachRow`, `CSVWithNames`, `JSONColumns`, `BSONEachRow`, `RowBinaryWithNames` и т. д.), теперь сначала пытаются выполнить регистрозависимое сопоставление, а если совпадений нет — переходят к регистронезависимому. Прежнее строгое поведение сохраняется в режиме `compatibility`. [#104320](https://github.com/ClickHouse/ClickHouse/pull/104320) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен `STDDEV` как регистронезависимый псевдоним `stddevSamp` для совместимости с PostgreSQL/стандартом SQL. [#105120](https://github.com/ClickHouse/ClickHouse/pull/105120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен `array_to_string` как регистронезависимый псевдоним `arrayStringConcat` для совместимости с PostgreSQL. [#105121](https://github.com/ClickHouse/ClickHouse/pull/105121) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен `unnest` как регистронезависимый псевдоним `arrayJoin` для совместимости с PostgreSQL (в форме вызова функции). [#105124](https://github.com/ClickHouse/ClickHouse/pull/105124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Индикатор выполнения в `clickhouse-client` теперь рядом с оперативной памятью показывает объём временных данных на диске (например, при внешней сортировке, aggregation или JOIN), включая разбивку по хостам для распределённых запросов. [#105190](https://github.com/ClickHouse/ClickHouse/pull/105190) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен `system.predicate_statistics_log` — новый выборочный журнал селективности фильтров-предикатов и отсечения индексных гранул MergeTree для каждого запроса. По умолчанию отключён; включается через настройку сервера `predicate_statistics_sample_rate`. Нужен для автоматических рекомендаций по индексам и проекциям. [#98727](https://github.com/ClickHouse/ClickHouse/pull/98727) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Разрешено пропускать локальный сегмент с отсутствующей таблицей, если включён `skip_unavailable_shards`. [#100141](https://github.com/ClickHouse/ClickHouse/pull/100141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены предупреждения при запуске (видимые в `system.warnings`), если массив Linux mdraid повторно синхронизируется или находится в деградированном состоянии, поскольку в обоих случаях это может влиять на производительность дискового IO или указывать на сбои дисков. [#100941](https://github.com/ClickHouse/ClickHouse/pull/100941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* WASM UDF теперь отображаются в `system.functions` с корректно заполненными столбцами `origin` (`WasmUserDefined`), `syntax`, `arguments` и `returned_value` на основе метаданных типов ClickHouse. Ранее они либо отсутствовали, либо отображались как дубликаты с неверным значением `origin`. [#101053](https://github.com/ClickHouse/ClickHouse/pull/101053) ([Vasily Chekalkin](https://github.com/bacek)).
* Функция таблицы `generate_series` теперь поддерживает отрицательные значения шага для генерации убывающих последовательностей, например `SELECT * FROM generate_series(99, 0, -1)`. [#101056](https://github.com/ClickHouse/ClickHouse/pull/101056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены исключения `Context has expired`, возникавшие в некоторых функциях (`dotProduct`, `formatRow`, `structureToCapnProtoSchema`/`structureToProtobufSchema`, пользовательские функции) при использовании в отложенных путях выполнения, таких как выражения `DEFAULT`/`MATERIALIZED` и настройки движка таблицы: теперь эти функции там, где это необходимо, удерживают сильную ссылку на контекст. [#101109](https://github.com/ClickHouse/ClickHouse/pull/101109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены ложные логические ошибки `Cache limits violated` для приоритетов, созданных с нулевыми лимитами (например, для приоритета файлового кэша на уровне запроса, используемого при включённом `enable_filesystem_query_cache_limit`). [#101428](https://github.com/ClickHouse/ClickHouse/pull/101428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлено автоматическое определение региона для конечных точек `s3express`. [#101520](https://github.com/ClickHouse/ClickHouse/pull/101520) ([Pradeep Chhetri](https://github.com/chhetripradeep)).
* Добавлена поддержка идентификаторов полей для файлов данных при записи в `Iceberg`. Закрывает [#102322](https://github.com/ClickHouse/ClickHouse/issues/102322). [#102362](https://github.com/ClickHouse/ClickHouse/pull/102362) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Левая панель в веб-интерфейсе (`play.html`) теперь прокручивается независимо, остаётся видимой при прокрутке страницы, а при нажатии на таблицу страница прокручивается к области запроса. [#102498](https://github.com/ClickHouse/ClickHouse/pull/102498) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь интерфейс Play можно открыть в новой вкладке через Ctrl/Cmd/Shift+click или средний клик по логотипу ClickHouse на левой панели. [#102501](https://github.com/ClickHouse/ClickHouse/pull/102501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены новые метрики для отслеживания памяти, используемой первичными ключами проекций и гранулярностью индекса проекций во всех таблицах. [#102587](https://github.com/ClickHouse/ClickHouse/pull/102587) ([Narasimha Pakeer](https://github.com/npakeer)).
* `max_network_bandwidth_for_user` и `max_network_bandwidth_for_all_users` теперь применяются к операциям чтения/записи в удалённых файловых системах. [#103080](https://github.com/ClickHouse/ClickHouse/pull/103080) ([Azat Khuzhin](https://github.com/azat)).
* Повышена устойчивость резервных копий в случаях, когда Refreshable Materialized Views постоянно обновляются: решения теперь принимаются на основе состояния таблиц в снимке, а не глобального состояния. [#103384](https://github.com/ClickHouse/ClickHouse/pull/103384) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `SELECT * FROM system.databases` теперь всегда показывает базы данных каталога озера данных независимо от настройки `show_data_lake_catalogs_in_system_tables`. Раньше по умолчанию они были скрыты, что не соответствовало поведению `SHOW DATABASES`, которое всегда их показывало. [#103444](https://github.com/ClickHouse/ClickHouse/pull/103444) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Значение по умолчанию для настройки сервера `concurrent_threads_soft_limit_ratio_to_cores` в коде приведено в соответствие со значением из поставляемого `config.xml` (`2`), поэтому планировщик concurrent threads `max_min_fair`, используемый по умолчанию, ограничивает потоки обработки запросов уровнем 2x от числа ядер даже без использования поставляемого `config.xml`. [#103446](https://github.com/ClickHouse/ClickHouse/pull/103446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Повышена надёжность sanitizer в парсере и в пограничных случаях строковых функций: добавлена обработка пустого ввода в `getURLScheme`, предотвращена арифметика с нулевым указателем в проверках `max_query_size` в `Lexer::nextToken`, а также добавлено раннее завершение вычисления UTF-8-подпоследовательности для пустой входной строки до декодирования. [#103489](https://github.com/ClickHouse/ClickHouse/pull/103489) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Повышена корректность определения монотонности для `divide(0, x)` и `intDiv(0, x)`: ранее эти функции безусловно считались монотонными, но `0 / x` немонотонна на любом диапазоне, включающем 0, поскольку `0 / 0` не определено (`NaN`/`Inf` для `divide`, исключение деления на ноль для `intDiv`). Это ошибочное предположение приводило к тому, что `KeyCondition::applyMonotonicFunctionsChainToRange` формировал диапазоны с `left > right`, что вызывало `LOGICAL_ERROR` `Invalid binary search result in MergeTreeSetIndex` в отладочных сборках, если выражение `IN` / `NOT IN` по первичному ключу оборачивало ключ в `divide(0, key)` или `intDiv(0, key)`. Релизные сборки не затронуты — эта проверка ограничена `#ifndef NDEBUG`. [#103621](https://github.com/ClickHouse/ClickHouse/pull/103621) ([Groene AI](https://github.com/groeneai)).
* Асинхронные метрики `HTTPConnectionPool*TCP{Rcv,Snd}BufBytes_{p50,p75,p90,p95}` заменены на гистограмму на основе бакетов `http_pool_tcp_buf_bytes` (метки `group`, `direction`) в `system.histogram_metrics`. Суммарные асинхронные метрики по группам сохранены. [#103704](https://github.com/ClickHouse/ClickHouse/pull/103704) ([Sema Checherinda](https://github.com/CheSema)).
* Настройки сервера `{disk,storage,http}_connections_{rcvbuf,sndbuf}` теперь отображаются в `system.server_settings` как изменяемые без перезапуска. Их значения можно обновлять через `SYSTEM RELOAD CONFIG`; механизм применения во время выполнения уже был реализован в [#100478](https://github.com/ClickHouse/ClickHouse/issues/100478). [#103772](https://github.com/ClickHouse/ClickHouse/pull/103772) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлена поддержка разрешённых символов (`Array(String)`) в `flameGraph`. [#103816](https://github.com/ClickHouse/ClickHouse/pull/103816) ([Azat Khuzhin](https://github.com/azat)).
* CLI-клиент теперь может указывать `<rainbow_parentheses>false</rainbow_parentheses>` в своём конфиге в окружениях, где цвета терминала плохо сочетаются со скобками (аналогично, у `clickhouse format` теперь есть `--no_rainbow_parentheses`). [#103851](https://github.com/ClickHouse/ClickHouse/pull/103851) ([Larry Snizek](https://github.com/larry-cdn77)).
* Исправлен регистронезависимый UTF-8-поиск в `MultiVolnitsky`: при сбое частичные вставки `putNGram` теперь откатываются, а неудачные шаблоны поиска переключаются на fallback-поисковики, что позволяет избежать несогласованного состояния. [#103864](https://github.com/ClickHouse/ClickHouse/pull/103864) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Реализован `sched_getcpu` через `rseq` TLS в glibc-совместимом musl. [#104016](https://github.com/ClickHouse/ClickHouse/pull/104016) ([Azat Khuzhin](https://github.com/azat)).
* Replicated refreshable materialized view в режиме APPEND больше не будет обновляться дважды, если во время обновления соединение с ZooKeeper кратковременно прерывалось. [#104051](https://github.com/ClickHouse/ClickHouse/pull/104051) ([Michael Kolupaev](https://github.com/al13n321)).
* Для таблиц Distributed без явного списка столбцов теперь разрешена проверка ключей сегментирования по выведенной структуре удалённой таблицы. [#104111](https://github.com/ClickHouse/ClickHouse/pull/104111) ([Yue](https://github.com/niyue)).
* Исправлена работа REST-каталога с путём `Azure` `abfss`. [#104120](https://github.com/ClickHouse/ClickHouse/pull/104120) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Настройки аутентификации `role_arn` и `role_session_name` теперь учитываются в S3-клиенте снимков Keeper, что позволяет использовать при загрузке снимков аутентификацию на основе STS `AssumeRole`. [#104140](https://github.com/ClickHouse/ClickHouse/pull/104140) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена утечка памяти при выполнении запросов с `MATERIALIZED` CTE. [#104153](https://github.com/ClickHouse/ClickHouse/pull/104153) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `lowerUTF8` / `upperUTF8` при обработке больших наборов данных с не-ASCII-символами (например, при сборке текстовых индексов), когда накопленный выходной буфер мог превысить 2 GiB; чрезмерно длинные отдельные строки теперь отклоняются с понятной ошибкой. [#104229](https://github.com/ClickHouse/ClickHouse/pull/104229) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Повышена устойчивость загрузки статистики столбцов MergeTree к временным сбоям I/O, чтобы предотвратить постоянное отключение оптимизаций на основе статистики для затронутых частей. [#104372](https://github.com/ClickHouse/ClickHouse/pull/104372) ([zoomxi](https://github.com/zoomxi)).
* Для `INSERT INTO ... SELECT FROM input(...)` больше не требуется grant `CREATE TEMPORARY TABLE`. [#104470](https://github.com/ClickHouse/ClickHouse/pull/104470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая настройка MergeTree `concurrent_part_removal_threshold_for_remote_disk` (по умолчанию `16`), которая используется вместо `concurrent_part_removal_threshold`, когда хотя бы одна удаляемая часть хранится на удалённом диске. Прежнее пороговое значение `100` могло приводить к тому, что `DROP TABLE` и другие операции удаления частей в backend'ах Объектного хранилища зависали на десятки секунд, потому что удаления выполнялись последовательно, хотя каждое из них требует отдельного сетевого обмена. Новая настройка позволяет значительно раньше переходить к параллельному удалению на удалённом хранилище, не меняя поведение для локальных дисков. [#104676](https://github.com/ClickHouse/ClickHouse/pull/104676) ([Groene AI](https://github.com/groeneai)).
* Новая настройка `defer_partition_pruning_after_final` (по умолчанию `1`) делает введённое в 26.3 поведение, при котором при `FINAL` не выполняется отсечение партиций, отключаемым. Установите `0`, чтобы вернуть отсечение партиций, как до 26.3, — это существенно быстрее для рабочих нагрузок журналов событий, где строки с одинаковым PK не могут находиться в разных партициях. `compatibility = '26.2'` автоматически переключает её в `0`. [#104705](https://github.com/ClickHouse/ClickHouse/pull/104705) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлено `intExp2`, возвращавшее неверные результаты для входных значений вне допустимого диапазона (сдвиги `>= 64` при JIT и целые числа с модулем больше `INT_MAX` в обоих путях выполнения). [#105054](https://github.com/ClickHouse/ClickHouse/pull/105054) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлено заключение shell-аргументов, сформированных из CLI-опций и разобранного ввода, в кавычки в `clickhouse install` и `clickhouse git-import`, чтобы пути, имена пользователей и групп, а также хеши коммитов, содержащие пробелы или shell-метасимволы, обрабатывались корректно. [#105232](https://github.com/ClickHouse/ClickHouse/pull/105232) ([Raúl Marín](https://github.com/Algunenano)).
* Движок таблицы `Alias` больше не является экспериментальным и доступен без настройки `allow_experimental_alias_table_engine`. [#103488](https://github.com/ClickHouse/ClickHouse/pull/103488) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В `clickhouse-benchmark` добавлена опция `--queries-format`, позволяющая выбирать между используемым по умолчанию форматом ввода `tsv` с экранированием табуляций и одним запросом на строку и разбором стандартного ввода как скрипта из нескольких запросов, разделённых `;` (`script`). [#99972](https://github.com/ClickHouse/ClickHouse/pull/99972) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Поэлементные операторы Tuple `tuplePlus`, `tupleMinus`, `tupleMultiply`, `tupleDivide`, `tupleModulo`, `tupleIntDiv` и `tupleIntDivOrZero` теперь являются вариадическими и принимают две или более Tuple одинакового размера, применяя операции поэлементно как левую свёртку. Ранее они принимали только ровно два аргумента. [#104659](https://github.com/ClickHouse/ClickHouse/pull/104659) ([Aruj Bansal](https://github.com/arujbansal)).
* Добавлен новый встроенный web UI по адресу `/processors-profile`, который визуализирует конвейер любого ранее выполненного `SELECT`-запроса в виде heatmap на основе данных из `system.query_log` и `system.processors_profile_log`. Каждый processor окрашивается в соответствии со значением `elapsed_us`, а при наведении показывает статистику по processor'у (строки, байты, время ожидания). [#104614](https://github.com/ClickHouse/ClickHouse/pull/104614) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Настройка `query_plan_use_logical_join_step` (и её alias `query_plan_use_new_logical_join_step`) теперь Obsolete и не имеет эффекта; логический шаг JOIN теперь используется всегда. [#104017](https://github.com/ClickHouse/ClickHouse/pull/104017) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Поле ввода `user` в `play.html` и на других встроенных веб-страницах (`dashboard.html`, `jemalloc.html`, `merges.html`, `binary.html`, `webterminal.html`) больше не заполняется заранее буквальным текстом `default`. Теперь оно показывает placeholder `user` и по умолчанию остаётся пустым. Если оставить его пустым, страница не отправляет URL-параметр `user=` (а auth JSON в WebTerminal не содержит поля `user`), поэтому сервер использует обычный fallback к пользователю `default` — и HTTP credentials, переданные по другим каналам (`X-ClickHouse-User`, HTTP Basic, конфигурация `<handler><user>` для конкретного handler), больше не overridden. [#105254](https://github.com/ClickHouse/ClickHouse/pull/105254) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Reader `ORC`: чтение по смещению (`readBigAt`) отделено от `use_prefetch`, чтобы данные с EC-кодированием в `HDFS` можно было корректно читать даже при `use_prefetch = false` (например, в Gluten). [#103348](https://github.com/ClickHouse/ClickHouse/pull/103348) ([zhanglistar](https://github.com/zhanglistar)).
* Файлы, загружаемые из `play.html` в формате `CSVWithNames`, теперь используют расширение `.csv`. [#103737](https://github.com/ClickHouse/ClickHouse/pull/103737) ([JackFielding](https://github.com/JackFielding)).
* Улучшена валидация входных данных для каталога BigLake. [#105117](https://github.com/ClickHouse/ClickHouse/pull/105117) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* Исправлено непоследовательное форматирование: теперь система запоминает, было ли выражение заключено в скобки. [#92340](https://github.com/ClickHouse/ClickHouse/pull/92340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено корректное сравнение типов Decimal и Float. [#94293](https://github.com/ClickHouse/ClickHouse/pull/94293) ([zoomxi](https://github.com/zoomxi)).
* Разрешены позиционные аргументы в распределенных запросах. [#94359](https://github.com/ClickHouse/ClickHouse/pull/94359) ([simonmichal](https://github.com/simonmichal)).
* Исправлен сбой проверки в `DatabaseCatalog::updateDependencies`, возникавший при удалении и повторном создании materialized view с тем же именем; также исправлена проблема, из-за которой зависимости представлений могли незаметно теряться при `RENAME TABLE` или `EXCHANGE TABLES`, если ссылочные зависимости были пустыми. [#98779](https://github.com/ClickHouse/ClickHouse/pull/98779) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено аварийное завершение сервера (сбой проверки в `DatabaseCatalog::getTableImpl`), происходившее при создании таблицы через `ON CLUSTER` с UUID, совпадающим с UUID существующей базы данных. [#98861](https://github.com/ClickHouse/ClickHouse/pull/98861) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Исправлено использование индекса пропуска данных при чтении данных (при включенной настройке `use_skip_indexes_on_data_read`) и существующих патч-частей, созданных легковесными обновлениями. [#99543](https://github.com/ClickHouse/ClickHouse/pull/99543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Not-ready Set", возникавшее, когда оптимизатор запросов переносил фильтр с `IN (subquery)` в PREWHERE. [#100375](https://github.com/ClickHouse/ClickHouse/pull/100375) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка "Cannot find column" при использовании `ADD COLUMN` вместе с `RENAME COLUMN` в одном операторе `ALTER TABLE`. [#100387](https://github.com/ClickHouse/ClickHouse/pull/100387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены представления со смешанными операторами `UNION` и `INTERSECT`/`EXCEPT`, которые возвращали неверные результаты после `DETACH`/`ATTACH` или перезапуска сервера. [#100390](https://github.com/ClickHouse/ClickHouse/pull/100390) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Trying to execute PLACEHOLDER action", которое могло возникать при стресс-тестировании с AST-фаззером, когда в предложении IN появлялся коррелированный подзапрос. [#100398](https://github.com/ClickHouse/ClickHouse/pull/100398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение logical error при вставке в таблицу Iceberg со столбцом `Date`, разбитым на партиции с помощью преобразований `year`, `month` или `day`. [#100404](https://github.com/ClickHouse/ClickHouse/pull/100404) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено использование индекса пропуска данных с несовместимыми данными после изменения типа столбца через `ALTER TABLE MODIFY COLUMN`, что могло приводить к сбоям сервера в sanitizer-сборках или к неверным результатам запросов. [#100526](https://github.com/ClickHouse/ClickHouse/pull/100526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена утечка учетных данных в `query_log` для табличных функций `paimonCluster`, `paimonS3Cluster`, `paimonAzureCluster` и `deltaLakeS3`. [#100529](https://github.com/ClickHouse/ClickHouse/pull/100529) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Исправлена ситуация, при которой `DROP TABLE` для таблиц с Kafka engine мог зависать на неопределенное время из-за взаимной блокировки в `rd_kafka_consumer_close`. [#100604](https://github.com/ClickHouse/ClickHouse/pull/100604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Жестко заданный список `source_table_engines` заменен на поиск во время выполнения через `StorageFactory` и `DatabaseFactory`. В `DatabaseFactory::EngineFeatures` добавлен `source_access_type`, чтобы `CREATE DATABASE` с исходными движками (PostgreSQL, MySQL, S3 и т. д.) требовал тех же привилегий на source, что и `CREATE TABLE`. Исправлена ошибка, из-за которой `GRANT TABLE ENGINE ON *` завершался неудачей при `table_engines_require_grant=false`. Закрывает [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#100746](https://github.com/ClickHouse/ClickHouse/pull/100746) ([pufit](https://github.com/pufit)).
* Исправлен сбой сервера при чтении из таблицы, где столбец `ALIAS` содержал коррелированный подзапрос, вложенный в вызов функции (например, `ALIAS toString(intDivOrZero(x, (SELECT ...)))`). `CREATE TABLE` и `ALTER TABLE` теперь отклоняют любые подзапросы на любой глубине в выражениях столбцов `DEFAULT` / `ALIAS` / `MATERIALIZED` с ошибкой `THERE_IS_NO_DEFAULT_VALUE`. Ранее поверхностная проверка пропускала вложенные подзапросы, поэтому в коррелированном случае происходил сбой при чтении, а вложенный некоррелированный случай выглядел рабочим, но мог приводить к непредсказуемому поведению; теперь оба варианта отклоняются на этапе DDL. [#100753](https://github.com/ClickHouse/ClickHouse/pull/100753) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера (`Logical error: Bad cast from type DB::FunctionNode to DB::ColumnNode`), который мог возникать при использовании запросов с коррелированными подзапросами на таблицах с определениями `CONSTRAINT ... ASSUME`, если включены настройки `optimize_substitute_columns` и `convert_query_to_cnf`. [#100756](https://github.com/ClickHouse/ClickHouse/pull/100756) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение, которое могло возникать при вставке строки в JSON-столбец, если эта строка добавляла новое динамическое поле наряду с типизированным полем с несовместимым значением, а затем столбец использовался как ключ GROUP BY. [#100758](https://github.com/ClickHouse/ClickHouse/pull/100758) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлена ошибка, из-за которой планирование ввода-вывода для рабочей нагрузки незаметно обходилось при записи в S3/объектное хранилище через путь `DiskObjectStorageTransaction` (используется дисками `s3_with_keeper` и явно при `use_fake_transaction=false`). Ранее INSERT-записи в таблицы семейства MergeTree на таких дисках игнорировали throttling `CREATE RESOURCE` / `CREATE WORKLOAD`, потому что ссылка на ресурс никогда не добавлялась в `WriteSettings` для транзакционного пути записи. [#100777](https://github.com/ClickHouse/ClickHouse/pull/100777) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Исправлена коллизия общего кэша схем между `Protobuf` и `ProtobufList`: чтение сообщения сначала как `FORMAT Protobuf`, а затем как `FORMAT ProtobufList` могло завершаться ошибкой, потому что `ProtobufList` принудительно переводил кэшированную схему в формат оболочки. Теперь `ProtobufList` использует кэшированный тип сообщения, если схема оболочки недоступна. [#100849](https://github.com/ClickHouse/ClickHouse/pull/100849) ([Callum Cooper](https://github.com/callumc34)).
* Исправлено переполнение буфера кучи (heap-buffer-overflow) в мосте Rust CXX из-за несовпадения ABI `std::exception`. [#100931](https://github.com/ClickHouse/ClickHouse/pull/100931) ([Azat Khuzhin](https://github.com/azat)).
* `FunctionVariantAdaptor` теперь выбрасывает `ILLEGAL_TYPE_OF_ARGUMENT`, если все альтернативы `Variant` несовместимы с функцией, вместо того чтобы молча возвращать `Nullable(Nothing)`. Ранее предикат `WHERE function(variant_col)`, в котором ни один альтернативный тип не был совместим, возвращал 0 строк без ошибки, тогда как в эквивалентном контексте `SELECT` исключение уже выбрасывалось корректно. [#100939](https://github.com/ClickHouse/ClickHouse/pull/100939) ([Vasily Chekalkin](https://github.com/bacek)).
* `TRUNCATE ALL TABLES` больше не завершается ошибкой, если база данных содержит представления. [#100943](https://github.com/ClickHouse/ClickHouse/pull/100943) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена оптимизация `optimize_rewrite_array_exists_to_has`: теперь она корректно обрабатывает случаи с несовместимыми типами (например, Date и String) и снова включена по умолчанию. [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен приоритет настроек S3: теперь настройки диска в `storage_configuration` переопределяют глобальную секцию `<s3>`, а настройки на уровне пользователя/профиля/запроса переопределяют и те, и другие. [#100975](https://github.com/ClickHouse/ClickHouse/pull/100975) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена разреженная сериализация, из-за которой для столбцов BFloat16, Float32 и Float64 терялся знак отрицательного нуля (-0.0). [#100983](https://github.com/ClickHouse/ClickHouse/pull/100983) ([Takumi Hara](https://github.com/takumihara)).
* Исправлены две ошибки в парсере геометрии WKT, используемом при чтении WKT-кодированных файлов GeoParquet и Arrow: геометрии `MULTILINESTRING` ошибочно разбирались как `Polygon` (что вызывало исключение для типизированных столбцов и незаметное повреждение данных для смешанных столбцов `Geometry`), а некорректная строка WKT без ключевого слова типа приводила к неопределённому поведению вместо корректной ошибки. [#100997](https://github.com/ClickHouse/ClickHouse/pull/100997) ([Vasily Chekalkin](https://github.com/bacek)).
* Исправлены запросы `grouping`/`GROUPING SETS` к таблицам Distributed с одним сегментом, которые завершались ошибкой "Method executeImpl is not supported for 'grouping' function". [#101030](https://github.com/ClickHouse/ClickHouse/pull/101030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка `LOGICAL_ERROR` "Column identifier is already registered" в планировщике, которая могла возникать, когда одно и то же табличное выражение обрабатывалось несколько раз. [#101048](https://github.com/ClickHouse/ClickHouse/pull/101048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение LOGICAL\_ERROR "Column identifier is already registered" при использовании настройки `additional_result_filter` с запросами UNION или EXCEPT. [#101051](https://github.com/ClickHouse/ClickHouse/pull/101051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой сервера (Logical error: Bad cast from ColumnVector to ColumnNullable) при использовании `* APPLY` с агрегатными функциями и `group_by_use_nulls=1` вместе с GROUPING SETS, ROLLUP или CUBE. [#101062](https://github.com/ClickHouse/ClickHouse/pull/101062) ([Groene AI](https://github.com/groeneai)).
* Исправлен бесконечный цикл, возникавший, когда `input_format_csv_skip_first_lines` или `input_format_tsv_skip_first_lines` превышали количество строк в файле. [#101111](https://github.com/ClickHouse/ClickHouse/pull/101111) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен выход за границы в оптимизации lazy materialization, который мог вызывать исключение в debug-сборках. [#101144](https://github.com/ClickHouse/ClickHouse/pull/101144) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен вывод типов в рекурсивных CTE: теперь типы столбцов итеративно расширяются через `getLeastSupertype` между нерекурсивной и рекурсивной частями `UNION ALL` до сходимости, что предотвращает целочисленное переполнение в выражениях вида `x + 1`. [#101155](https://github.com/ClickHouse/ClickHouse/pull/101155) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Настройки размера блоков сжатия в MergeTree (max\_compress\_block\_size, min\_compress\_block\_size, marks\_compress\_block\_size, primary\_key\_compress\_block\_size) теперь ограничены значением 256 MiB, чтобы предотвратить сбой сервера при установке экстремальных значений через CREATE TABLE SETTINGS. [#101159](https://github.com/ClickHouse/ClickHouse/pull/101159) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение с LOGICAL\_ERROR в `QueryAnalyzer::resolve()`, когда ROW POLICY использует скалярный подзапрос в предложении `USING` (например, `USING (SELECT 1)`). Закрывает [#100695](https://github.com/ClickHouse/ClickHouse/issues/100695). [#101263](https://github.com/ClickHouse/ClickHouse/pull/101263) ([Groene AI](https://github.com/groeneai)).
* Исправлено неопределённое поведение в `MergeTreeDataPartWriterCompact::cancel`, если не удаётся выделить stream. [#101292](https://github.com/ClickHouse/ClickHouse/pull/101292) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен случай, когда часовой пояс не учитывался при присваивании в операторе ALTER. Закрывает [#101328](https://github.com/ClickHouse/ClickHouse/issues/101328). Связано с [https://github.com/ClickHouse/ClickHouse/pull/100647](https://github.com/ClickHouse/ClickHouse/pull/100647). [#101403](https://github.com/ClickHouse/ClickHouse/pull/101403) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено аварийное завершение сервера (LOGICAL\_ERROR) для запросов INSERT SELECT с ORDER BY ALL, когда конвейер SELECT создаёт несколько streams. [#101443](https://github.com/ClickHouse/ClickHouse/pull/101443) ([Groene AI](https://github.com/groeneai)).
* Исправлены некорректные результаты запроса, вызванные тем, что переупорядочивание JOIN проталкивало фильтр INNER JOIN (ссылающийся только на сохраняемую сторону OUTER JOIN) в предложение ON внешнего JOIN. [#101504](https://github.com/ClickHouse/ClickHouse/pull/101504) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Отключено применение lazy materialization для планов с arrayJoin, так как это могло приводить к несоблюдению LIMIT. Закрывает [#101608](https://github.com/ClickHouse/ClickHouse/issues/101608). [#101644](https://github.com/ClickHouse/ClickHouse/pull/101644) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлены некорректные результаты запросов JOIN, когда оптимизация `mergeFilterIntoJoinCondition` молча отбрасывала условие равенства из WHERE при несовпадении типов. [#101652](https://github.com/ClickHouse/ClickHouse/pull/101652) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Исправлено, что тестовая подсказка `error` не работала для ошибок синтаксиса/разбора — раньше `-- { error SYNTAX_ERROR }` на некорректном запросе завершалось с "Expected server error" вместо сопоставления с клиентской ошибкой разбора. [#101675](https://github.com/ClickHouse/ClickHouse/pull/101675) ([Groene AI](https://github.com/groeneai)).
* Исправлено, что `INTO OUTFILE ... TRUNCATE` фактически не использовал atomic rename: запись шла напрямую в исходный файл, а не во временный, поэтому при сбое запроса исходное содержимое уничтожалось. Теперь данные записываются во временный файл и переименовываются только при успешном завершении. [#101884](https://github.com/ClickHouse/ClickHouse/pull/101884) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлено исключение `Unsupported DeltaLake type: varchar(n)` при чтении таблиц Delta Lake, чья схема содержит типы столбцов varchar(n) или char(n). Эти типы теперь сопоставляются с String, что соответствует тому, что протокол Delta Lake хранит их в Parquet как обычные массивы байтов. [#101973](https://github.com/ClickHouse/ClickHouse/pull/101973) ([Flavio Malavazi](https://github.com/flaviomalavazi)).
* Исправлена незаметная потеря данных при чтении tar-архивов из S3 с `schema_inference_mode=union` и неоднородными схемами Parquet — parquet metadata cache ошибочно повторно использовал metadata первого файла для всех последующих файлов в архиве. [#101990](https://github.com/ClickHouse/ClickHouse/pull/101990) ([Ahaan Limaye](https://github.com/ahaanlimaye)).
* Исправлено аварийное завершение сервера (LOGICAL\_ERROR) при выполнении ALTER TABLE UPDATE/DELETE на таблицах Iceberg, если ранее в течение текущего времени работы сервера для этой таблицы не выполнялся ни SELECT, ни INSERT. [#102113](https://github.com/ClickHouse/ClickHouse/pull/102113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен возможный сбой при выполнении запроса ALTER на таблицах из in-memory database (например, temporary tables). [#102360](https://github.com/ClickHouse/ClickHouse/pull/102360) ([Den Kalantaevskii](https://github.com/Diskein)).
* Исправлено поведение `formatQuery`, из-за которого при форматировании обратно совместимых привилегий READ/WRITE для одного и того же source появлялись дублирующиеся grants вида `GRANT FILE ON *.*, FILE ON *.* TO x` вместо `GRANT FILE ON *.* TO x`. [#102411](https://github.com/ClickHouse/ClickHouse/pull/102411) ([Groene AI](https://github.com/groeneai)).
* Исправлена потеря parallelism для aggregation после запросов read-in-order, когда `max_streams_to_max_threads_ratio` больше 1. [#102467](https://github.com/ClickHouse/ClickHouse/pull/102467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой (`LOGICAL_ERROR: Unknown virtual column`) при выборке subcolumns (например, `.null` для Nullable, `.size0` для Array, элементов Tuple или ключей/значений Map) из таблицы с движком Buffer. [#102470](https://github.com/ClickHouse/ClickHouse/pull/102470) ([Groene AI](https://github.com/groeneai)).
* Исправлено Исключение "Cannot fold actions for projection" при оптимизации перестановки JOIN, когда LEFT/RIGHT JOIN с `join_use_nulls` комбинируется с другими joins с участием более двух таблиц. [#102516](https://github.com/ClickHouse/ClickHouse/pull/102516) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено тихое overflow в scalar покомпонентных операциях над numericIndexedVector (например, `numericIndexedVectorPointwiseAdd`), когда scalar выходит за допустимый диапазон. Теперь такие входные данные приводят к `INCORRECT_DATA` вместо возврата поврежденных значений. [#102546](https://github.com/ClickHouse/ClickHouse/pull/102546) ([FriendLey](https://github.com/FriendLey)).
* Исправлено неконсистентное форматирование AST для INSERT с SAMPLE и OFFSET на уровне запроса. Закрывает [#102523](https://github.com/ClickHouse/ClickHouse/issues/102523). [#102547](https://github.com/ClickHouse/ClickHouse/pull/102547) ([zoomxi](https://github.com/zoomxi)).
* Исправлено Исключение `LOGICAL_ERROR` в `groupConcat` при десериализации некорректного состояния aggregate function. [#102558](https://github.com/ClickHouse/ClickHouse/pull/102558) ([Christoph Wurm](https://github.com/cwurm)).
* Значения Time64 в CSV больше не принимают мусор в конце при `input_format_csv_use_default_on_bad_values=0`. Закрывает [#102490](https://github.com/ClickHouse/ClickHouse/issues/102490). [#102596](https://github.com/ClickHouse/ClickHouse/pull/102596) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено Исключение UNKNOWN\_ELEMENT\_OF\_ENUM при вставке default value в JSON-столбец с paths типа Enum. Закрывает [#102359](https://github.com/ClickHouse/ClickHouse/issues/102359). [#102687](https://github.com/ClickHouse/ClickHouse/pull/102687) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено повреждение columns\_substreams.txt в некоторых случаях при rename столбца. Закрывает [#102259](https://github.com/ClickHouse/ClickHouse/issues/102259). [#102689](https://github.com/ClickHouse/ClickHouse/pull/102689) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена вставка в тип данных Time при parsing JSON. Закрывает [#102016](https://github.com/ClickHouse/ClickHouse/issues/102016). [#102690](https://github.com/ClickHouse/ClickHouse/pull/102690) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено шестнадцатеричное кодирование content sample в именах файлов кэшированной схемы. Закрывает [#101904](https://github.com/ClickHouse/ClickHouse/issues/101904). [#102703](https://github.com/ClickHouse/ClickHouse/pull/102703) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено нарушение порядка сортировки (сбой в debug, тихая порча данных в релизной сборке) при merge в `SummingMergeTree`, когда ключ `ORDER BY` представляет собой hash-выражение по столбцу `Float32`, содержащему signaling NaN-значения. [#102791](https://github.com/ClickHouse/ClickHouse/pull/102791) ([Groene AI](https://github.com/groeneai)).
* Операции `DETACH DATABASE ... SYNC` и другие операции, вызывающие `waitDetachedTableNotInUse`, теперь можно отменить через `KILL QUERY`, и они корректно реагируют на остановку server, что предотвращает зависания на неопределённое время, когда параллельный запрос удерживает ссылку на table. [#102804](https://github.com/ClickHouse/ClickHouse/pull/102804) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен возможный некорректный результат `ANY RIGHT JOIN`. [#102893](https://github.com/ClickHouse/ClickHouse/pull/102893) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлена ошибка, из-за которой запросы к S3 завершались с `ios_base::clear: unspecified iostream_category error` вместо повторной попытки; причиной было то, что Poco `BufferedStreamBuf::flushBuffer` не обрабатывал короткие записи на уровне socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлена ошибка, из-за которой table function `input('auto')` завершалась сбоем через HTTP interface в запросах INSERT SELECT. [#102902](https://github.com/ClickHouse/ClickHouse/pull/102902) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Отключена тривиальная оптимизация LIMIT с row policies/additional\_table\_filters (чтобы разрешить параллельный index analysis). [#102921](https://github.com/ClickHouse/ClickHouse/pull/102921) ([Azat Khuzhin](https://github.com/azat)).
* Скрыт secret key в SQL-функции `HMAC`. Исправление [#102927](https://github.com/ClickHouse/ClickHouse/issues/102927). [#102997](https://github.com/ClickHouse/ClickHouse/pull/102997) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Исправлено исключение `MULTIPLE_EXPRESSIONS_FOR_ALIAS`, возникавшее в distributed queries, которые несколько раз ссылаются на один и тот же вызов `quantile` (например, в `SELECT`, `HAVING` и `ORDER BY`) при включённом `optimize_syntax_fuse_functions`. [#103014](https://github.com/ClickHouse/ClickHouse/pull/103014) ([tanner-bruce](https://github.com/tanner-bruce)).
* Исправлен случай, обнаруженный CI, когда передавался неготовый set, если filter зависел от столбца в левой части. Закрывает [#102966](https://github.com/ClickHouse/ClickHouse/issues/102966). [#103029](https://github.com/ClickHouse/ClickHouse/pull/103029) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена `castOrNull` для JSON в некоторых случаях. Закрывает [#101818](https://github.com/ClickHouse/ClickHouse/issues/101818). [#103036](https://github.com/ClickHouse/ClickHouse/pull/103036) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен случай, когда `SELECT DISTINCT` молча возвращал неполные результаты, если aggregate projection соответствовала запросу, но у некоторых частей table отсутствовали данные projection (например, projection была добавлена в table, которая уже содержала данные, и `MATERIALIZE PROJECTION` не был выполнен). Закрывает [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено исключение `TOO_FEW_ARGUMENTS_FOR_FUNCTION`, возникавшее, когда predicate в `WHERE`, такой как `AND(OR(A, A), A)`, сворачивался в единственный аргумент верхнего уровня при извлечении common expression в analyzer. [#103072](https://github.com/ClickHouse/ClickHouse/pull/103072) ([Peng](https://github.com/fastio)).
* Исправлена logical error `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink`, возникавшая при вычислении `if`/`ifNull` для кортежей, Map и массивов, содержащих элемент `QBit`. `ColumnQBit::structureEquals` некорректно сравнивал внутренний кортеж одного столбца `QBit` с внешней обёрткой другого, из-за чего структурно идентичные столбцы `QBit` считались разными. [#103084](https://github.com/ClickHouse/ClickHouse/pull/103084) ([Groene AI](https://github.com/groeneai)).
* Сделано так, чтобы `DETACH DATABASE` с `database_atomic_wait_for_drop_and_detach_synchronously` учитывал `KILL QUERY`, а не зависал на неопределённое время, когда удерживается ссылка на таблицу. [#103095](https://github.com/ClickHouse/ClickHouse/pull/103095) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен segfault при удалении модуля WASM с использованием предиката, не являющегося идентификатором (например, `WHERE 1=1`). [#103101](https://github.com/ClickHouse/ClickHouse/pull/103101) ([Joe Redfern](https://github.com/JosephRedfern)).
* Исправлено нарушение обратной совместимости, из-за которого старые клиенты завершались с `UNEXPECTED_PACKET_FROM_SERVER` при вставке данных в более новый сервер через `remote()` или distributed таблицы; причиной был безусловный вызов `sendProgress` в конце `processInsertQuery`. [#103148](https://github.com/ClickHouse/ClickHouse/pull/103148) ([Sema Checherinda](https://github.com/CheSema)).
* Для `IN` с неконстантным вторым аргументом-кортежем нельзя приводить элементы кортежа через `CAST` к типу левой части, так как это может вызвать overflow. Закрывает [#103055](https://github.com/ClickHouse/ClickHouse/issues/103055). [#103169](https://github.com/ClickHouse/ClickHouse/pull/103169) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено использование неинициализированного значения в функции протокола. [#103187](https://github.com/ClickHouse/ClickHouse/pull/103187) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен `LOGICAL_ERROR` (`Bad cast … to ColumnLowCardinality`) при анализе индекса MergeTree, когда предложение `WHERE` сравнивает ключевой столбец `LowCardinality` с константой, приведённой к типу, содержащему вложенный `LowCardinality` (например, `Variant(LowCardinality(Date), String)`). [#103211](https://github.com/ClickHouse/ClickHouse/pull/103211) ([Groene AI](https://github.com/groeneai)).
* Исправлена `Logical error: 'index < bucket_count'` в семействе aggregate function `timeSeries*ToGrid` (например, `timeSeriesResampleToGridWithStaleness`, `timeSeriesChangesToGrid`, `timeSeriesResetsToGrid`, `timeSeriesRateToGrid`) при вызове с экстремальными параметрами временных меток, которые приводили к overflow в знаковой 64-битной арифметике при вычислении числа бакетов. Кроме того, общее число бакетов сетки теперь ограничено 16 миллионами, чтобы предотвратить случайное выделение большого объёма памяти из-за вредоносных входных данных. [#103223](https://github.com/ClickHouse/ClickHouse/pull/103223) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `Logical error: 'Port is already connected'`, возникавшее при расширении конвейера в отложенном пути `FINAL` для `ReplacingMergeTree`. Ошибка затрагивала запросы с `query_plan_optimize_lazy_final = 1`, когда `ReadFromMergeTree::initializePipeline` вставлял внутренние преобразования (например, `Resize`), которые соединяли processors подконвейера между собой, из-за чего `LazyUnorderedReadFromMergeTreeSource::expandPipeline` пытался подключить выходные порты, уже подключённые ранее. [#103230](https://github.com/ClickHouse/ClickHouse/pull/103230) ([Groene AI](https://github.com/groeneai)).
* Исправлены неверные результаты `LIMIT BY` и `DISTINCT`, когда входные данные представляют собой `UNION ALL` отсортированных подзапросов. Оптимизатор плана запроса ошибочно считал такое объединение глобально отсортированным, из-за чего возвращались лишние строки. [#103231](https://github.com/ClickHouse/ClickHouse/pull/103231) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено возможное падение при вычислении статистики для типа Map с отложенной репликацией. Закрывает [#102390](https://github.com/ClickHouse/ClickHouse/issues/102390). [#103273](https://github.com/ClickHouse/ClickHouse/pull/103273) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена гонка данных для источников словарей ClickHouse, MySQL, PostgreSQL и XDBC, где `clone() const` читает, а `isModified() const` записывает в одну и ту же строку `invalidate_query_response`. [#103277](https://github.com/ClickHouse/ClickHouse/pull/103277) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено некорректное определение монотонности для `Date32`. Закрывает [#101265](https://github.com/ClickHouse/ClickHouse/issues/101265). [#103283](https://github.com/ClickHouse/ClickHouse/pull/103283) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Строки в предаутентификационном TCP-пакете Hello теперь ограничены 64 КБ; также добавлена настройка сервера `handshake_timeout_milliseconds`, ограничивающая общее время рукопожатия и не позволяющая неаутентифицированным клиентам потреблять слишком много памяти или удерживать потоки неограниченно долго. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлена ошибка в статистике Parquet ColumnIndex, при которой `min_value` > `max_value` для столбцов String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* Исправлена некорректная обработка строк с NULL для входных данных `Nullable(Tuple(...))` в `flattenTuple` и `tupleToNameValuePairs`. Теперь `flattenTuple` сохраняет внешнюю null-карту, поэтому строки с NULL остаются NULL. `tupleToNameValuePairs` теперь, когда это возможно, меняет тип значения результата на `Nullable(T)` для входных данных `Nullable(Tuple(...))`, поэтому строки с NULL дают `[('a', NULL), ('b', NULL)]` вместо `[('a', 0), ('b', 0)]`. Если тип элемента нельзя обернуть в `Nullable` (например, `Array`), вместо NULL используются значения по умолчанию. Закрывает [#103312](https://github.com/ClickHouse/ClickHouse/issues/103312). [#103383](https://github.com/ClickHouse/ClickHouse/pull/103383) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена проверка на некорректные уплощённые данные Dynamic в Native format. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен устаревший RPC, из-за которого репликация зависала после синхронизации снимка. [#103406](https://github.com/ClickHouse/ClickHouse/pull/103406) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлено аварийное завершение сервера из-за `LOGICAL_ERROR` "Cannot pop N rows from X" (в debug- и sanitizer-сборках) при чтении некорректного BSON-документа, содержащего значение, тип BSON которого несовместим с типом целевого столбца внутри столбца `Nullable(T)` или `Array(Nullable(T))`. Теперь некорректная строка, как и ожидалось, приводит к корректному исключению `ILLEGAL_COLUMN`. [#103418](https://github.com/ClickHouse/ClickHouse/pull/103418) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение сервера в `arrayFill` и `arrayReverseFill` при применении к столбцу `Array(String)`, у которого первая строка пуста, вместе с лямбда-функцией, всегда возвращающей false. В цикле aggregate / sub-array индекс `size_t` уходил в `SIZE_MAX` из-за выхода за нижнюю границу диапазона, что затем вызывало чтение за пределами границ в `ColumnString::doInsertManyFrom`. Это то же семейство ошибок, что и [#12263](https://github.com/ClickHouse/ClickHouse/issues/12263). [#103424](https://github.com/ClickHouse/ClickHouse/pull/103424) ([Groene AI](https://github.com/groeneai)).
* Исправлены ACCESS\_DENIED / UNKNOWN\_TABLE в нижестоящих APPEND RMV с SQL SECURITY DEFINER, когда EXCHANGE в вышестоящем REPLACE RMV переключает identity целевого хранилища в процессе разрешения. [#103427](https://github.com/ClickHouse/ClickHouse/pull/103427) ([Alexander Gololobov](https://github.com/davenger)).
* Столбец `_time` теперь заполняется из табличной функции `url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлено потенциальное чтение за пределами буфера в пути распаковки кодека `ALP` при обработке некорректного входного потока с недопустимой битовой шириной. [#103457](https://github.com/ClickHouse/ClickHouse/pull/103457) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлена ошибка, из-за которой `SYSTEM SYNC FILESYSTEM CACHE '<name>' ON CLUSTER ...` мог терять имя кэша при форматировании запроса, из-за чего удалённые узлы синхронизировали все файловые кэши, а не только запрошенный. [#103469](https://github.com/ClickHouse/ClickHouse/pull/103469) ([Asish Kumar](https://github.com/officialasishkumar)).
* Исправлена обработка URL-кодированного пути в `deltaLakeAzure`. Закрывает [#103509](https://github.com/ClickHouse/ClickHouse/issues/103509). [#103525](https://github.com/ClickHouse/ClickHouse/pull/103525) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлено обращение к уже освобождённой памяти в куче при умножении состояния `AggregateFunction` на целое число (например, `quantilesExactState(...) * N`). В цикле возведения в степень методом двоичного разложения состояние сливалось само с собой, что не определено, если `merge` агрегатной функции перераспределяет своё внутреннее хранилище. Закрывает STID 0988-40af. [#103536](https://github.com/ClickHouse/ClickHouse/pull/103536) ([Groene AI](https://github.com/groeneai)).
* Исправлена редкая ошибка `LOGICAL_ERROR` "Part X intersects previous part Y", возникавшая при запуске таблицы `ReplicatedMergeTree`, когда две пустые неожиданные части на диске имели пересекающиеся, но не вложенные друг в друга диапазоны блоков. Исключение прерывало поток attach таблицы и не давало таблице запуститься. [#103537](https://github.com/ClickHouse/ClickHouse/pull/103537) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `Logical error: Incorrect mark rows for part ...` (проверка только в отладочной сборке), которая срабатывала из-за мутаций в таблицах `MergeTree` с неадаптивной гранулярностью индекса (`index_granularity_bytes = 0`), у которых последняя метка данных была неполной (надёжнее всего воспроизводилось через `DETACH`/`ATTACH` с последующим легковесным `DELETE`). [#103538](https://github.com/ClickHouse/ClickHouse/pull/103538) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда `clickhouse-local` молча возвращал 0 строк при чтении из псевдофайлов `/proc` и `/sys` через табличную функцию `file()` (например, `SELECT * FROM file('/proc/cpuinfo', 'RawBLOB')`). [#103548](https://github.com/ClickHouse/ClickHouse/pull/103548) ([Ashrith Bandla](https://github.com/ashrithb)).
* Исправлена обработка аргумента `max_string_length` для движка таблицы `GenerateRandom`. [#103550](https://github.com/ClickHouse/ClickHouse/pull/103550) ([Alex Kuleshov](https://github.com/0xAX)).
* Исправлено маскирование вложенных учётных данных в журналах. [#103552](https://github.com/ClickHouse/ClickHouse/pull/103552) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлено определение SVE, использовавшее инструкции SVE, когда они недоступны. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен разбор аргументов хранилища `GenerateRandom`. [#103574](https://github.com/ClickHouse/ClickHouse/pull/103574) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлен бесконечный цикл в `WITH FILL` для данных, начинающихся с ±inf. [#103580](https://github.com/ClickHouse/ClickHouse/pull/103580) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлено молчаливое усечение дробных JSON-чисел при извлечении `JSONExtract` в тип `Variant`. Ранее `JSONExtract('{"x": 3.14}', 'x', 'Variant(Int64, Float64)')` возвращал `Int64=3`, а `JSONExtract('{"x": 3.14}', 'x', 'Variant(String, Int64)')` — `Int64=3`, отбрасывая дробную часть. Теперь дробное значение сохраняется без потерь: если присутствует член `Float64`/`Decimal`, значение попадает в него, в противном случае исходный JSON сохраняется в члене `String`. Типы `Variant`, содержащие только целочисленные члены (например, `Variant(Int64, Int32)`), а также прямое извлечение целых чисел (`JSONExtract(json, 'Int64')`, `JSONExtractInt` и т. д.) не изменились. [#103620](https://github.com/ClickHouse/ClickHouse/pull/103620) ([Groene AI](https://github.com/groeneai)).
* Исправлена ситуация, когда `SYSTEM INSTRUMENT REMOVE` без аргументов выдавал `std::bad_optional_access` (код ошибки 1001) вместо `SYNTAX_ERROR` (код ошибки 62). [#103622](https://github.com/ClickHouse/ClickHouse/pull/103622) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлены logical error и неопределенное поведение в `windowID` и оконном представлении `tumble` при вызове со строкой часового пояса в качестве 3-го аргумента. [#103641](https://github.com/ClickHouse/ClickHouse/pull/103641) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Логирование клиента S3 теперь рассматривает HTTP-ответы 400 с непустым заголовком `x-amz-bucket-region` (неверный Region для подписи SigV4) как информативный случай неверного региона, с более понятной строкой в логе вместо общего пути обработки в стиле ошибки. Провайдер учетных данных STS web identity теперь добавляется в цепочку учетных данных S3 только при настроенной web identity, что уменьшает количество ложных предупреждений в развертываниях, где она не используется. Закрывает [#99140](https://github.com/ClickHouse/ClickHouse/issues/99140). [#103673](https://github.com/ClickHouse/ClickHouse/pull/103673) ([MeltonSmith](https://github.com/MeltonSmith)).
* Исправлено поведение `SYSTEM SYNC REPLICA <db>.<tbl> IF EXISTS`: теперь команда молча завершается успешно, если база данных не существует, в соответствии с уже существующим поведением для отсутствующей таблицы и прецедентом, заданным `DROP TABLE IF EXISTS`. Ранее запрос выдавал `UNKNOWN_DATABASE`, несмотря на `IF EXISTS`. Закрывает [#103629](https://github.com/ClickHouse/ClickHouse/issues/103629). [#103689](https://github.com/ClickHouse/ClickHouse/pull/103689) ([Groene AI](https://github.com/groeneai)).
* Исправлена logical error `Arguments of 'plus' have incorrect data types`, которую выбрасывал `FunctionBinaryArithmetic::executeImpl2`, когда у таблицы `MergeTree` в ключе сортировки был `Array(LowCardinality(...))`, а в предложении `WHERE` использовались `plus` / `minus` между этим столбцом и константой `Array` с другим типом элементов. `KeyCondition::getMonotonicityForRange` теперь рекурсивно удаляет `LowCardinality` перед вызовом внутреннего числового dispatch. [#103701](https://github.com/ClickHouse/ClickHouse/pull/103701) ([Groene AI](https://github.com/groeneai)).
* Исправлена race condition при динамическом изменении размера cache в 26.1+. [#103702](https://github.com/ClickHouse/ClickHouse/pull/103702) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена проблема, из-за которой skip-индексы `text` и `bloom&#95;filter` на столбцах `ALIAS`, чье выражение содержало lambda с захваченными константами (например, `arrayMap((k, v) -> concat(k, '=', v), mapKeys(m), mapValues(m)))`, молча игнорировались. [#103708](https://github.com/ClickHouse/ClickHouse/pull/103708) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено зависание или segmentation fault в `position` и `positionCaseInsensitive` при `start_pos`, близком к `UINT64_MAX`, из-за переполнения арифметики указателей. [#103766](https://github.com/ClickHouse/ClickHouse/pull/103766) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено неопределенное поведение при разборе `dateTime` с двойной дробной частью. [#103773](https://github.com/ClickHouse/ClickHouse/pull/103773) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена регрессия корректности данных в 26.x: JIT-скомпилированные `if` и `multiIf` с типом результата `Decimal` и не-`Decimal`-литералом (целым числом или числом с плавающей точкой) в одной из ветвей могли молча возвращать значение в `10^scale` раз меньше правильного. Медленный путь (без JIT) затронут не был. Обходное решение для затронутых версий: `SET compile_expressions = 0`. [#103809](https://github.com/ClickHouse/ClickHouse/pull/103809) ([Groene AI](https://github.com/groeneai)).
* Исправлена передача токенизатора из text index в поддерживаемые функции. [#103826](https://github.com/ClickHouse/ClickHouse/pull/103826) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Исправлены неверные результаты из `numbers`, `generate_series` и аналогичных источников, учитывающих диапазон, когда в условии `WHERE` используется `IN` или `NOT IN` по кортежу, элементы которого дедуплицируются до одного ключевого столбца (например, `WHERE tuple(number, number) NOT IN (tuple(1, 2))`). Закрывает [#103660](https://github.com/ClickHouse/ClickHouse/issues/103660). [#103835](https://github.com/ClickHouse/ClickHouse/pull/103835) ([Groene AI](https://github.com/groeneai)).
* Реальный пик потребления памяти у hash join с автоматическим spilling теперь удерживается ниже `max_bytes_before_external_join`. Ранее предварительное выделение памяти на основе статистики, удвоение hash table на месте и неограниченные in-memory бакеты в `GraceHashJoin` по отдельности могли приводить к тому, что запрос превышал настроенный лимит и завершался с `MEMORY_LIMIT_EXCEEDED`. [#103838](https://github.com/ClickHouse/ClickHouse/pull/103838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено зависание при завершении работы `clickhouse-local`, если настроены системные журналы (например, `text_log` или `filesystem_cache_log`). `SystemLogs::flushImpl` вызывал `BaseDaemon::instance().flushTextLogs()`, который генерирует `std::bad_cast` вне `clickhouse-server`, из-за чего потоки сохранения продолжали работать, пока `pthread_cond_destroy` не блокировал уничтожение очередей системных журналов. [#103874](https://github.com/ClickHouse/ClickHouse/pull/103874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запросы `MATERIALIZED` CTE, у которых body в разных ссылках разрешается в разные выведенные типы столбцов, теперь отклоняются с понятной ошибкой `TYPE_MISMATCH` вместо аварийного завершения сервера с `Bad cast` `LOGICAL_ERROR`. Ранее это происходило, когда body CTE ссылался на идентификаторы из внешней области видимости (например, на alias из проекции вызывающего подзапроса), которые подставлялись как разные константы для каждой ссылки. [#103879](https://github.com/ClickHouse/ClickHouse/pull/103879) ([Groene AI](https://github.com/groeneai)).
* Исправлено использование неинициализированного значения в оптимизаторах плана запроса, преобразующих JOIN (`tryConvertAnyOuterJoinToInnerJoin`, `tryConvertAnyJoinToSemiOrAntiJoin`), когда filter над `ANY` `OUTER` `JOIN` содержит недетерминированную функцию, такую как `rand`, `now` или `rowNumberInAllBlocks`. Оптимизатор больше не пытается выполнять constant folding для таких filter и оставляет JOIN без изменений, что также предотвращает некорректные преобразования в `INNER`/`SEMI`/`ANTI JOIN`, которые могли незаметно отбрасывать строки. [#103880](https://github.com/ClickHouse/ClickHouse/pull/103880) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка use-after-free в `StorageKafka2`, которая могла приводить к сбою сервера, если сеанс Keeper заменялся, пока consumer удерживал эфемерные блокировки topic-partition. [#103890](https://github.com/ClickHouse/ClickHouse/pull/103890) ([Groene AI](https://github.com/groeneai)).
* Исправлена `LOGICAL_ERROR` "Primary key type mismatch", возникавшая при соединении таблицы `EmbeddedRocksDB` через `JOIN ... USING (key)` с подзапросом, у которого ключевой столбец имеет тип, отличный от primary key хранилища (например, `Nullable(UInt64)`, `Int64`, `Decimal`). Теперь planner отклоняет `DirectKeyValueJoin` при несовпадении типов и переключается на `HashJoin`, который выполняет преобразование типов. [#103928](https://github.com/ClickHouse/ClickHouse/pull/103928) ([Groene AI](https://github.com/groeneai)).
* `SET max_threads = DEFAULT` (и то же для `max_final_threads` и `max_parsing_threads`) больше не теряет состояние auto. Ранее после сброса одного из этих настроек `system.settings` показывал вычисленное число ядер (например, `32`) вместо `'auto(32)'`, и server вёл себя так, как будто значение было явно зафиксировано. [#103991](https://github.com/ClickHouse/ClickHouse/pull/103991) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `SIZES_OF_ARRAYS_DONT_MATCH` при чтении столбцов `AggregateFunction(topK(N), String)`, у которых сохранённый `alpha_size` был увеличен циклом deserialize+serialize в версии до 25.12. [#104002](https://github.com/ClickHouse/ClickHouse/pull/104002) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена уязвимость SQL injection в dictionary source PostgreSQL, Cassandra и XDBC: строковые ключи, содержащие одинарные кавычки, экранировались как `\'` (обратный слеш), который эти backend-соединения трактуют как буквальный обратный слеш, а не как escape-последовательность, что позволяло внедрять произвольный SQL в запросы lookup словарей. `ExternalQueryBuilder` теперь использует для этих backend-соединений стандартное для SQL экранирование `''`; dictionary source ClickHouse и MySQL по-прежнему используют экранирование обратным слешем. [#104009](https://github.com/ClickHouse/ClickHouse/pull/104009) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено возможное несоответствие типов при aggregation, когда тип столбца изменялся на LowCardinality или обратно, а min-max projection не была пересобрана. [#104013](https://github.com/ClickHouse/ClickHouse/pull/104013) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлен бесконечный цикл query optimization, вызванный тем, что при слиянии выражений не распространялся запрет на удаление неиспользуемых столбцов. [#104083](https://github.com/ClickHouse/ClickHouse/pull/104083) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена ошибка `LOGICAL_ERROR` в `StreamingStorageRegistry::renameTable` при пакетном переименовании стриминговых table (S3Queue, Kafka, RabbitMQ) за счёт использования отслеживания identity на основе UUID вместо отслеживания по именам. [#104101](https://github.com/ClickHouse/ClickHouse/pull/104101) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлены неверные результаты в случае, когда CTE, построенный с `UNION ALL`, содержал ветку `SELECT DISTINCT`, а внешний запрос проецировал только подмножество столбцов CTE. `RemoveUnusedProjectionColumnsPass` в новом analyzer некорректно удалял неиспользуемый столбец из внутренней projection `DISTINCT`, из-за чего строки, которые должны были оставаться различными (одно и то же значение в проецируемом столбце, но разное значение в удалённом столбце), схлопывались в одну. [#104114](https://github.com/ClickHouse/ClickHouse/pull/104114) ([Groene AI](https://github.com/groeneai)).
* Исправлено несколько проблем корректности в пограничных случаях для настройки `optimize_inverse_dictionary_lookup`, из-за которых оптимизация могла незаметно отбрасывать строки или подавлять исключения. Закрывает [#103270](https://github.com/ClickHouse/ClickHouse/issues/103270). Закрывает [#103085](https://github.com/ClickHouse/ClickHouse/issues/103085). [#104133](https://github.com/ClickHouse/ClickHouse/pull/104133) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена запись за пределы буфера при десериализации состояния `quantileTiming`. [#104141](https://github.com/ClickHouse/ClickHouse/pull/104141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено неопределённое поведение при преобразовании значения `Float64` вне допустимого диапазона в широкий целочисленный тип (`UInt64`, `Int64`, `Int128`, `UInt128`, `Int256`, `UInt256`). Ранее значения, равные `Float64(numeric_limits<T>::max())` (которые округлялись вверх до значения, превышающего фактический максимум), обходили проверку границ и приводили к UB при последующем CAST. Это затрагивало parsing параметров агрегатных функций (`topK`, `histogram`, `uniqUpTo`, `groupArrayInsertAt` и т. д.) и настройки целочисленного типа через `SET <setting> = <Float64>`. Закрывает [#103817](https://github.com/ClickHouse/ClickHouse/issues/103817). [#104154](https://github.com/ClickHouse/ClickHouse/pull/104154) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `LOGICAL_ERROR` "Unexpected return type from comparison. Expected `UInt8`. Got `Const(Nullable(UInt8))`" при сравнении вложенного `Tuple(Tuple(Nullable(...)))` (или с более глубокой вложенностью) со строковым литералом. Возвращаемый тип сравнения теперь корректно определяется как `Nullable(UInt8)`, что соответствует поведению во время выполнения. [#104171](https://github.com/ClickHouse/ClickHouse/pull/104171) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение server (`UndefinedBehaviorSanitizer: reference binding to null pointer`, segfault в release-сборках) на `SELECT ... FROM <ReplacingMergeTree(version, is_deleted)> FINAL PREWHERE is_deleted = <expr> AND <other column expr>` при `query_plan_optimize_lazy_final = 1`. На этапе lazy-FINAL-чтения без пересечений столбец `is_deleted` исчезал из выходного header, поскольку prewhere использовал его как входной и не добавлял обратно в выходные данные. В результате следующий этап `addIsDeletedFilter` разыменовывал нулевой указатель `ActionsDAG::Node`. [#104177](https://github.com/ClickHouse/ClickHouse/pull/104177) ([Groene AI](https://github.com/groeneai)).
* При обращении к таблице system.failpoints использовался failpoint, из-за чего он мог отключаться. [#104237](https://github.com/ClickHouse/ClickHouse/pull/104237) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Исправлено `MemorySanitizer: use-of-uninitialized-value` в функциях `detectLanguage*`, когда входные данные содержат символ UTF-8, заканчивающийся ровно на границе buffer. [#104257](https://github.com/ClickHouse/ClickHouse/pull/104257) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена logical error (`Bad cast from type DB::CachedObjectStorage to DB::S3ObjectStorage`), из-за которой прерывался разбор аргументов table function и движков для data lake (`icebergS3`, `deltaLakeS3` и т. д.) при вызове с `SETTINGS disk = '...'` для disk, чьё базовое Объектное хранилище обёрнуто декоратором, например файловым кэшем. Закрывает [#89300](https://github.com/ClickHouse/ClickHouse/issues/89300). [#104258](https://github.com/ClickHouse/ClickHouse/pull/104258) ([Groene AI](https://github.com/groeneai)).
* Исправлен разбор индексных выражений в скобках для столбцов с именем `values`, например `(values['a'])`, чтобы они больше не интерпретировались как табличные выражения SQL `VALUES`. [#104312](https://github.com/ClickHouse/ClickHouse/pull/104312) ([Desel72](https://github.com/Desel72)).
* Исправлено аварийное завершение server/`LOGICAL_ERROR` в фоновом потоке eviction файлового кэша (`SLRUFileCachePriority::collectEvictionInfo`), которое могло происходить, когда `keep_free_space_size_ratio` или `keep_free_space_elements_ratio` были достаточно высокими, чтобы запустить eviction, при том что все записи кэша уже были перемещены в защищённую очередь SLRU (а probationary была пуста). [#104313](https://github.com/ClickHouse/ClickHouse/pull/104313) ([Groene AI](https://github.com/groeneai)).
* Исправлены исключения (`NOT_FOUND_COLUMN_IN_BLOCK`, `LOGICAL_ERROR`, `AMBIGUOUS_COLUMN_NAME`) при использовании проекций с представлениями UNION ALL, window functions или конфликтами имён между alias и столбцами. Регрессия из [#88798](https://github.com/ClickHouse/ClickHouse/issues/88798). [#104317](https://github.com/ClickHouse/ClickHouse/pull/104317) ([Amos Bird](https://github.com/amosbird)).
* Исправлен возможный выход за нижнюю границу диапазона при разборе массивов Postgres. [#104322](https://github.com/ClickHouse/ClickHouse/pull/104322) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Функции, которые возвращают тип, отличный от `Nullable` (например, `Array`, `Tuple` или `Map`), теперь принимают аргументы типа `Nullable`. К затронутым функциям относятся `extractAll`, `extractAllGroups`, `extractAllGroupsHorizontal`, `extractAllGroupsVertical`, `extractGroups`, `splitByChar`, `splitByString`, `splitByRegexp`, `splitByWhitespace`, `splitByNonAlpha` и `alphaTokens`. Входные строки со значением `NULL` теперь дают значение по умолчанию для результирующего типа (например, пустой массив) вместо генерации ошибки "Nested type is not allowed inside Nullable type". [#104326](https://github.com/ClickHouse/ClickHouse/pull/104326) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена статистика Iceberg для партиционированной таблицы. Это закрывает [#104321](https://github.com/ClickHouse/ClickHouse/issues/104321). [#104329](https://github.com/ClickHouse/ClickHouse/pull/104329) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена фатальная logical error при запуске server на macOS (и в аналогичных build jemalloc), из-за которой `Jemalloc::verifySetup` ошибочно сообщал о несоответствии `jemalloc_enable_background_threads`, поскольку необязательные mallctl `background_thread` / `max_background_threads` отсутствуют; теперь проверка пропускается, если эти mallctl недоступны, а `getValue` больше не оставляет выходное значение неинициализированным при сбое. Закрывает [#102183](https://github.com/ClickHouse/ClickHouse/issues/102183). [#104330](https://github.com/ClickHouse/ClickHouse/pull/104330) ([SAYON DEEP](https://github.com/sayondeep)).
* Исправлена регрессия, из-за которой `SELECT` запросы с `max_rows_to_read_leaf` и `read_overflow_mode_leaf = 'throw'` могли ошибочно выдавать `TOO_MANY_ROWS`, даже если индекс пропуска данных уменьшал объём чтения ниже leaf-лимита. Симметричные настройки не на уровне leaf (`max_rows_to_read` / `read_overflow_mode`) уже обрабатывались корректно. [#104331](https://github.com/ClickHouse/ClickHouse/pull/104331) ([Groene AI](https://github.com/groeneai)).
* `toUUID`, `toUUIDOrNull`, `toUUIDOrZero`, `toUUIDOrDefault`, `CAST` к `UUID` и `Nullable(UUID)`, `accurateCastOrNull` к `UUID`, а также входные форматы, которые разбирают UUID из текста (`Avro`, `MsgPack`, `JSONExtract`, ...), теперь отклоняют строки правильной длины, но содержащие не шестнадцатеричные символы. Ранее такие входные данные молча превращались в поддельный UUID из-за выхода за пределы таблицы поиска шестнадцатеричных цифр; теперь `toUUID` генерирует `CANNOT_PARSE_UUID`, а варианты `Or*` возвращают `NULL` / нулевой UUID / переданное значение по умолчанию. [#104370](https://github.com/ClickHouse/ClickHouse/pull/104370) ([Groene AI](https://github.com/groeneai)).
* Исправлен `Bad cast` `LOGICAL_ERROR` в `caseWithExpression` (и SQL `CASE expr WHEN ... THEN ... ELSE ...`), когда супертип только для THEN и супертип для (THEN + ELSE) оказываются в разных хранилищах `ColumnDecimal` — например, при значениях THEN `(UInt16, Int8)` и ELSE `Decimal(9, 2)`. Закрывает [#104335](https://github.com/ClickHouse/ClickHouse/issues/104335). [#104378](https://github.com/ClickHouse/ClickHouse/pull/104378) ([Groene AI](https://github.com/groeneai)).
* Внутренние сбои, о которых сообщается через `logExceptionBeforeStart` (flushes асинхронных вставок, refreshes materialized-view, ошибки разбора, возникающие во внутренних запросах), теперь корректно увеличивают ProfileEvents `FailedInternalQuery`, `FailedInternalSelectQuery` и `FailedInternalInsertQuery` наряду с видимыми пользователю counters `FailedQuery`, `FailedSelectQuery` и `FailedInsertQuery`. Ранее эти внутренние counters оставались равными нулю для сбоев, происходивших до начала выполнения запроса, из-за чего занижался учёт важного класса внутренних сбоев. [#104399](https://github.com/ClickHouse/ClickHouse/pull/104399) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `Code: 36. BAD_ARGUMENTS Expected literal, got {name:Type}`, возникавшая при использовании параметра запроса в настройке `base_backup` оператора `BACKUP` или `RESTORE` (например, `BACKUP ... SETTINGS base_backup = S3({backup_name:String}, ...)`). Регрессия появилась в `26.1.5` из-за PR [#99205](https://github.com/ClickHouse/ClickHouse/issues/99205). Закрывает [#103324](https://github.com/ClickHouse/ClickHouse/issues/103324). [#104413](https://github.com/ClickHouse/ClickHouse/pull/104413) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение сервера при записи в `IcebergLocal`/`IcebergS3`, если после `ALTER TABLE ... DROP COLUMN` выполняется `INSERT` с `iceberg_metadata_staleness_ms` больше нуля. Теперь `ALTER` инвалидирует локальный кеш файлов метаданных Iceberg, поэтому последующие чтения и записи видят новую схему. [#104419](https://github.com/ClickHouse/ClickHouse/pull/104419) ([Groene AI](https://github.com/groeneai)).
* Исправлены `DROP ROLE`, `DROP USER`, `DROP SETTINGS PROFILE`, `DROP ROW POLICY`, `DROP QUOTA` и `DROP MASKING POLICY`: теперь они удаляют ссылки на удалённую сущность из любых других объектов управления доступом, которые на неё ссылались (например, из списка `DEFAULT ROLE` пользователя, списка `TO` профиля настроек или списка grantee у политики строк), и сохраняют очистку на диск. Ранее состояние в памяти выглядело корректным, поскольку `SHOW CREATE` отфильтровывает неизвестные UUID, но `.sql`-файлы на диске сохраняли висячие записи `ID('<dropped-uuid>')`, и ссылки восстанавливались при следующем перезапуске сервера, что приводило к ошибкам `ACCESS_ENTITY_NOT_FOUND` во время выполнения распределённого запроса. [#104427](https://github.com/ClickHouse/ClickHouse/pull/104427) ([Groene AI](https://github.com/groeneai)).
* Исправлено аварийное завершение сервера, вызванное `azureBlobStorage`, движком `AzureBlobStorage` и DeltaLake-on-Azure при использовании строки подключения, в которой URL `BlobEndpoint` содержит пустой, нечисловой или выходящий за допустимые пределы порт (например, `BlobEndpoint=http://host:abc/`). Теперь сервер возвращает корректную ошибку `BAD_ARGUMENTS` вместо аварийного завершения в debug/sanitizer-сборках. [#104460](https://github.com/ClickHouse/ClickHouse/pull/104460) ([Groene AI](https://github.com/groeneai)).
* Теперь в качестве имени пользователя в табличных функциях `remote` и `remoteSecure` можно использовать идентификатор без кавычек — так же, как для аргументов базы данных и таблицы. Ранее такой запрос завершался вводящей в заблуждение ошибкой authentication со ссылкой на пользователя `default`. [#104465](https://github.com/ClickHouse/ClickHouse/pull/104465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена `Logical error: Incorrect ASTSelectWithUnionQuery (modes: M, selects: N)`, возникавшая, когда тело SQL user-defined function содержит заключённый в скобки внутренний `UNION ALL` (например, `CREATE FUNCTION f AS x -> (SELECT 1 UNION ALL (SELECT 1 UNION ALL SELECT 1))`). [#104477](https://github.com/ClickHouse/ClickHouse/pull/104477) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `uniqThetaIntersect`, при котором функция возвращала мощность первого аргумента вместо `0`, когда второй аргумент представляет собой пустое состояние `uniqTheta` — например, результат `uniqThetaMergeStateIf(s, predicate)`, если предикат исключает все строки. [#104529](https://github.com/ClickHouse/ClickHouse/pull/104529) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `SHOW TABLES` и `system.tables`, которые молча обрезали список для баз данных `DataLakeCatalog`, использующих Iceberg REST-каталоги (`iceberg-rest`, `onelake`, `biglake`). Когда сервер каталога разбивал на страницы ответ `list-tables` или `list-namespaces` (например, в Microsoft Fabric / OneLake при более чем \~50 таблицах на пространство имен), таблицы на последующих страницах оставались незаметно невидимыми для `SHOW TABLES` и `system.tables`, хотя к ним можно было обращаться через прямой `SELECT`. `RestCatalog` теперь обрабатывает токен продолжения `next-page-token`, определённый спецификацией Iceberg REST OpenAPI, как это уже делают `PaimonRestCatalog` и `UnityCatalog`. [#104531](https://github.com/ClickHouse/ClickHouse/pull/104531) ([Groene AI](https://github.com/groeneai)).
* Табличная функция `input` теперь выводит свою структуру из окружающего предложения `FORMAT` запроса `INSERT`, когда этот формат имеет фиксированную схему (`LineAsString`, `RawBLOB`, `JSONAsString` и т. д.), поэтому пользователям больше не нужно повторно задавать структуру как `input('line String')` для этих форматов. [#104532](https://github.com/ClickHouse/ClickHouse/issues/104532). [#104533](https://github.com/ClickHouse/ClickHouse/pull/104533) ([Groene AI](https://github.com/groeneai)).
* Обновлён тип данных полей в истории Iceberg с `Int32` на `Int64`. Закрывает [#94176](https://github.com/ClickHouse/ClickHouse/issues/94176). [#104579](https://github.com/ClickHouse/ClickHouse/pull/104579) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлен `Inconsistent AST formatting` `LOGICAL_ERROR` при разборе вызова функции, где после запятой следует лямбда, например ``SELECT substring(x, `x` -> `x`)``. Ранее парсер молча объединял предыдущие аргументы с левой частью лямбды, из-за чего получался вызов с одним аргументом, который уже нельзя было повторно разобрать в то же AST. Теперь сохраняется исходная арность функции. [#104626](https://github.com/ClickHouse/ClickHouse/pull/104626) ([Groene AI](https://github.com/groeneai)).
* `CHECK TABLE t` теперь отдаёт предпочтение `TEMPORARY` таблице перед постоянной таблицей с тем же именем, если не указан квалификатор базы данных, что соответствует приоритету, уже используемому в `SHOW CREATE TABLE`, `DESCRIBE TABLE`, `OPTIMIZE TABLE` и `ALTER TABLE`. Ранее `CHECK TABLE t` полностью игнорировал временные таблицы, поэтому завершался с `UNKNOWN_TABLE` для временной таблицы `Log` или `File`, хотя эти движки поддерживают `CHECK`. Продолжение [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966). [#104637](https://github.com/ClickHouse/ClickHouse/pull/104637) ([Groene AI](https://github.com/groeneai)).
* Исправлены завершение работы Keeper и цикл перезапуска, возникавшие, когда `get /keeper/availability_zone` отправляется с `quorum_reads=true` в Keeper без настроенного `<placement>`. [#104663](https://github.com/ClickHouse/ClickHouse/pull/104663) ([myeongjun](https://github.com/myeongjjun)).
* Исправлена TOCTOU data race в `FutureSetFromTuple::buildOrderedSetInplace`, приводившая к logical error. [#104673](https://github.com/ClickHouse/ClickHouse/pull/104673) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено несколько функций, которые возвращали разные результаты для одного и того же входного значения в зависимости от того, передавались ли аргументы как столбцы или как константы: `bitRotateLeft` / `bitRotateRight` (граничные значения сдвига), `length(FixedString)` / `concatWithSeparator` с входами `LowCardinality(Nullable)`, `roundDown` для NaN и `rightUTF8` для некорректного UTF-8. [#104710](https://github.com/ClickHouse/ClickHouse/pull/104710) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено поведение `anyHeavy`, которая возвращала не-heavy значение, когда наиболее частым значением было значение столбца по умолчанию, а данные находились в нескольких частях `MergeTree` (путь чтения разреженных столбцов). [#104712](https://github.com/ClickHouse/ClickHouse/pull/104712) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено несколько дефектов в обработке ограничений настроек: ограничения `MergeTreeSettings`, объявленные для канонического имени настройки, можно было обойти, записав значение через псевдоним этой настройки; проверка ограничения `disallowed_values` выбрасывала исключение на путях clamp (вторичные запросы, воркеры предложения `ON CLUSTER`, представления `SQL SECURITY DEFINER`) вместо того, чтобы молча отбрасывать изменение. [#104737](https://github.com/ClickHouse/ClickHouse/pull/104737) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено исключение `LOGICAL_ERROR` (`Metadata is not initialized`), возникавшее при `OPTIMIZE TABLE`, `ALTER TABLE ... DELETE`, `ALTER TABLE ... ADD COLUMN` и других вариантах ALTER для лениво attached-таблиц `Iceberg` / `IcebergLocal` / `DeltaLake` / `Hudi`, чьи metadata еще не были загружены (обычно после перезапуска сервера или после предыдущей неудачной записи metadata, оставившей на диске поврежденный файл metadata). Теперь операция либо выполняется нормально, если metadata успешно загружаются, либо показывает исходную ошибку загрузки как обычное пользовательское исключение вместо аварийного завершения сервера в отладочных сборках или сборках с sanitizer. [#104738](https://github.com/ClickHouse/ClickHouse/pull/104738) ([Groene AI](https://github.com/groeneai)).
* Исправлен segfault из-за use-after-free в `AvroConfluentRowInputFormat`. [#104751](https://github.com/ClickHouse/ClickHouse/pull/104751) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Скалярные варианты `numericIndexedVectorPointwiseMultiply`, `numericIndexedVectorPointwiseDivide`, `numericIndexedVectorPointwiseEqual` и `numericIndexedVectorPointwiseNotEqual` теперь выдают `INCORRECT_DATA`, если вызываются со скаляром `UInt64`, превышающим `Int64::max`. [#104784](https://github.com/ClickHouse/ClickHouse/pull/104784) ([FriendLey](https://github.com/FriendLey)).
* Исправлена ошибка, из-за которой ручное переопределение настройки через имя её псевдонима (например, `SET enable_analyzer = 1` вместо `SET allow_experimental_analyzer = 1`) после применения настройки `compatibility` могло быть отменено последующим изменением настройки `compatibility`. [#104829](https://github.com/ClickHouse/ClickHouse/pull/104829) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена проблема, из-за которой AWS logger отключался после [https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d](https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d). [#104837](https://github.com/ClickHouse/ClickHouse/pull/104837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлены ещё три функции, возвращавшие разные результаты для одного и того же входного значения в зависимости от того, передавались ли argument как столбцы или как константы: `transform` (и `caseWithExpression` через неё) с константным значением по умолчанию `Date`/`Date32`/`Enum`/`FixedString`, операторы сравнения между `String` и константным `FixedString`, а также `if`/`ifNull`/`nullIf` с веткой `FixedString` при константном условии. [#104858](https://github.com/ClickHouse/ClickHouse/pull/104858) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено аварийное завершение сервера `Bad cast from type DB::ColumnConst to DB::ColumnNullable` во время partition pruning для таблиц `MergeTree`, когда выражение партиционирования содержит chain функций, сворачивающуюся в одно константное значение (например, `floor(NULL, toRelativeYearNum(...))`). [#104861](https://github.com/ClickHouse/ClickHouse/pull/104861) ([Groene AI](https://github.com/groeneai)).
* Исправлена data race, обнаруженная `ThreadSanitizer`, в конструкторе копирования `ContextData`: `table_function_results` копировался из исходного объекта без захвата `table_function_results_mutex`, поэтому конкурентная запись в `Context::executeTableFunction` могла пересечься с несинхронизированным чтением в конструкторе копирования. [#104879](https://github.com/ClickHouse/ClickHouse/pull/104879) ([Groene AI](https://github.com/groeneai)).
* Исправлены проверки согласованности data part для типов с динамической структурой и добавлено обнаружение повреждённых columns\_substreams.txt. Повторная отправка [https://github.com/ClickHouse/ClickHouse/pull/103858](https://github.com/ClickHouse/ClickHouse/pull/103858) с дополнительными изменениями. [#104888](https://github.com/ClickHouse/ClickHouse/pull/104888) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена гонка между DROP и UNDROP в DatabaseCatalog. [#104915](https://github.com/ClickHouse/ClickHouse/pull/104915) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено динамическое изменение размера файлового кэша при наличии частично загруженных сегментов, включая восстановление учёта после неудачного вытеснения. [#104921](https://github.com/ClickHouse/ClickHouse/pull/104921) ([Antonio Andelic](https://github.com/antonio2368)).
* `DETACH TABLE` для временной таблицы (без ключевого слова `TEMPORARY`) теперь корректно вызывает `SYNTAX_ERROR`, что соответствует поведению `DETACH TEMPORARY TABLE`. Ранее команда молча устанавливала внутренний флаг `is_detached` и завершалась без ошибки. Чтобы удалить временную таблицу, используйте `DROP TEMPORARY TABLE` или `DROP TABLE` (последняя команда разрешает временную таблицу через `Context::ResolveExternal`). Закрывает [#103475](https://github.com/ClickHouse/ClickHouse/issues/103475). [#104943](https://github.com/ClickHouse/ClickHouse/pull/104943) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение table function `filesystem`: теперь она учитывает `max_memory_usage` / `max_server_memory_usage` при загрузке содержимого файла. Ранее крупные или многочисленные параллельные чтения содержимого могли превышать лимит без `MEMORY_LIMIT_EXCEEDED` и в итоге завершаться из-за OOM. [#104956](https://github.com/ClickHouse/ClickHouse/pull/104956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR`, возникавший при фильтрации `system.detached_tables` по `uuid` (например, `SELECT count() FROM system.detached_tables WHERE uuid = '...'`). Теперь запрос возвращает ожидаемый результат вместо аварийного завершения сервера. [#104979](https://github.com/ClickHouse/ClickHouse/pull/104979) ([Groene AI](https://github.com/groeneai)).
* `flattenTuple` больше не вызывает `LOGICAL_ERROR`, если его применить к кортежу, чья вложенная структура содержит только пустые листья `Tuple()` (например, `Tuple(c0 Array(Tuple()))` или `Tuple(c0 Tuple())`). Теперь такие входные данные приводят к пользовательскому исключению `ILLEGAL_TYPE_OF_ARGUMENT`, поясняющему, что результат разворачивания был бы пустым кортежем. [#104989](https://github.com/ClickHouse/ClickHouse/pull/104989) ([Groene AI](https://github.com/groeneai)).
* Исправлены аварийное завершение сервера и ошибка, из-за которой запрос мог молча возвращать неверный результат, при выполнении `loop(remote(...))` (или любого `loop()`, оборачивающего хранилище, которое может откладывать aggregation) с `GROUP BY`. Ранее внешний planner добавлял `MergingAggregatedStep` на основе этапа processing, сообщаемого внутренним хранилищем, но `LoopSource` всегда materialize свой внутренний select с `QueryProcessingStage::Complete` и выдаёт обычные фрагменты столбцов, поэтому `MergingAggregatedTransform` приводил к `LOGICAL_ERROR` (`Chunk info was not set for chunk in MergingAggregatedTransform`) при `enable_parallel_replicas = 1`, а в остальных случаях молча отбрасывал внешнюю агрегацию. [#105001](https://github.com/ClickHouse/ClickHouse/pull/105001) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-benchmark --reconnect` (без значения) был непреднамеренно сломан в 25.4 изменением, которое превратило `--reconnect` в целочисленную опцию, требующую значения. Теперь форма без значения снова работает и эквивалентна `--reconnect=1` (переподключение для каждого запроса). [#105006](https://github.com/ClickHouse/ClickHouse/pull/105006) ([Groene AI](https://github.com/groeneai)).
* Исправлен некорректный JSON-вывод для имён столбцов, оканчивающихся неполными последовательностями UTF-8. [#105012](https://github.com/ClickHouse/ClickHouse/pull/105012) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлена незаметная потеря данных после `EXCHANGE TABLES` или `CREATE OR REPLACE TABLE` для исходной таблицы materialized view. Ребро зависимости между исходной таблицей и представлением для `MV` теперь сохраняется за исходным именем, поэтому оно продолжает срабатывать при вставках. Регрессия была внесена в [#98779](https://github.com/ClickHouse/ClickHouse/issues/98779); восстановлено поведение, существовавшее до неё. [#105029](https://github.com/ClickHouse/ClickHouse/pull/105029) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлена ошибка `CANNOT_COMPILE_CODE Could not find symbol __fixunsdfti` при JIT-компиляции выражений, преобразующих `Float` в `UInt128`, например `toUInt128(<Float64 expression>)`. В резолвере символов JIT отсутствовали builtin-функции compiler-rt для преобразования беззнаковых 128-битных чисел с плавающей точкой в целые. Закрывает [#105031](https://github.com/ClickHouse/ClickHouse/issues/105031). [#105048](https://github.com/ClickHouse/ClickHouse/pull/105048) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено поведение, при котором `clickhouse-local` не выводил сообщение лога из завершившегося ошибкой запроса, если задан `send_logs_level`. [#105067](https://github.com/ClickHouse/ClickHouse/pull/105067) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены некорректные результаты, когда один и тот же parameterized view использовался в одном запросе более одного раза с разными значениями аргументов. Ранее анализатор схлопывал такие вызовы в один, молча отбрасывая все фильтры, кроме первого. [#105170](https://github.com/ClickHouse/ClickHouse/pull/105170) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение, при котором строка `TOTALS` дважды отображалась внизу таблицы результатов в веб-интерфейсе `play.html`. [#103803](https://github.com/ClickHouse/ClickHouse/pull/103803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь при векторном поиске отклоняются неконечные векторы (`NaN`, `±Inf`) — как искомые, так и опорные; ранее они приводили к неопределённому поведению в `usearch`. [#104079](https://github.com/ClickHouse/ClickHouse/pull/104079) ([Groene AI](https://github.com/groeneai)).
* PromQL: исправлен оператор агрегации для пустых векторов. [#104425](https://github.com/ClickHouse/ClickHouse/pull/104425) ([Vitaly Baranov](https://github.com/vitlibar)).
* PromQL: исправлена обработка ошибок в API запросов Prometheus. [#104741](https://github.com/ClickHouse/ClickHouse/pull/104741) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлена race condition в `MergeTreeTransaction::afterCommit`: после потери соединения между записью `CSN` коммита в ZooKeeper и завершением транзакции ответ `COMMIT` мог дойти до клиента раньше, чем новые `creation_csn` / `removal_csn` становились видимыми в `system.parts`. [#104708](https://github.com/ClickHouse/ClickHouse/pull/104708) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлен экспоненциальный рост потребления оперативной памяти в парсере KQL при преобразовании вложенной индексации массивов (`arr[arr[arr[...]]]`). [#105142](https://github.com/ClickHouse/ClickHouse/pull/105142) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены некорректные результаты для `RIGHT ANY JOIN`, когда в правой таблице одному ключу соответствовало несколько строк, а выходной block разбивался из-за ограничений по размеру. Закрывает [#99431](https://github.com/ClickHouse/ClickHouse/issues/99431). [#102064](https://github.com/ClickHouse/ClickHouse/pull/102064) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Добавлена проверка на переполнение стека в `Avro` reader при десериализации вложенных типов. [#102417](https://github.com/ClickHouse/ClickHouse/pull/102417) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены дублирующиеся строки в `system.completions` для настроек `MergeTree`: каждое имя настройки появлялось дважды, потому что выгружались и `getMergeTreeSettings`, и `getReplicatedMergeTreeSettings`, хотя имена настроек у них совпадают. Закрывает [#102013](https://github.com/ClickHouse/ClickHouse/issues/102013). [#102015](https://github.com/ClickHouse/ClickHouse/pull/102015) ([Groene AI](https://github.com/groeneai)).
* Исправлено блокирование завершения работы `StorageObjectStorageQueue` (`S3Queue`, `AzureQueue`) до тех пор, пока частично обработанные файлы не будут полностью прочитаны из Объектного хранилища. Теперь источник немедленно прерывает чтение при завершении работы; дедупликация гарантирует, что строки, уже переданные в целевую таблицу до завершения, не будут дублироваться при повторной обработке файла при следующем запуске. [#103126](https://github.com/ClickHouse/ClickHouse/pull/103126) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлена вставка нескольких блоков в движок таблицы `Alias` с `insert_deduplication_token`, чтобы сохранялись все блоки. [#103246](https://github.com/ClickHouse/ClickHouse/pull/103246) ([Enric Calabuig](https://github.com/eclbg)).
* Исправлено поведение `JSONHas` и `JSONExtractBool` для нативных столбцов `JSON`, которые возвращали извлечённое значение (приведённое к `UInt8`) вместо `0`/`1`. [#103313](https://github.com/ClickHouse/ClickHouse/pull/103313) ([zxuhan7](https://github.com/zxuhan)).
* Входной формат `CustomSeparated` защищён от некорректных или злонамеренных данных, в которых отсутствует `format_custom_row_after_delimiter`. Обнаружение заголовка, вывод схемы и строки с переменным числом столбцов ранее без ограничений накапливали поля и могли выделить много гигабайт памяти до сбоя. Теперь чтение завершается с `INCORRECT_DATA`, если одна строка содержит более 1,000,000 полей. [#103404](https://github.com/ClickHouse/ClickHouse/pull/103404) ([Groene AI](https://github.com/groeneai)).
* Исправлен `RESTORE` реплицируемых таблиц `MergeTree`, чтобы при Attach восстановленных частей использовался `backup_restore_keeper_max_retries` вместо обычного бюджета повторных попыток Keeper для вставки. [#104610](https://github.com/ClickHouse/ClickHouse/pull/104610) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлены неверные результаты для `WHERE p AND <LowCardinality(Nullable(int)) constant>` в таблицах `MergeTree`. Ранее такие запросы возвращали ноль строк, потому что оптимизация part pruning выводила значение `NULL` по умолчанию из типа `LowCardinality(Nullable(...))` и синтезировала защитное условие `notEquals(x, NULL)`, отсекая каждую часть. [#104767](https://github.com/ClickHouse/ClickHouse/pull/104767) ([Groene AI](https://github.com/groeneai)).
* Исправлен некорректный результат агрегации при группировке по неинъективной функции столбца, который также является ключом партиционирования (например, `PARTITION BY a` с `GROUP BY intDiv(a, 2)` или `a % 2`). Значения из разных партиций, попадавшие в одну и ту же группу, не сливались, что приводило к дублирующимся строкам групп при `allow_aggregate_partitions_independently = 1`. [#104869](https://github.com/ClickHouse/ClickHouse/pull/104869) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена гонка при передаче снимка `Keeper`, из-за которой снимок мог быть удалён или перемещён в момент его отправки восстанавливающемуся follower. [#104941](https://github.com/ClickHouse/ClickHouse/pull/104941) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена скрытая ошибка с неверным результатом в `hilbertEncode` и `mortonEncode`, при которой неконстантный первый аргумент `Tuple` (маска диапазона) использовал значения из строки 0' для вычисления сдвига битов во всех строках. Теперь функции вычисляют значения маски для каждой строки, поэтому результат больше не зависит ни от того, является ли входное значение константным, ни от размера блока. [#104992](https://github.com/ClickHouse/ClickHouse/pull/104992) ([Groene AI](https://github.com/groeneai)).
* Исправлено, что `clickhouse-local` молча игнорировал пользовательскую конфигурацию (`profiles`, `users`, `quotas`, настройки управления доступом), когда конфигурационный файл автоматически обнаруживался по путям `./clickhouse-local.xml`, `~/.clickhouse-local/config.xml` или `/etc/clickhouse-local/config.xml`. Ранее эти настройки применялись только при передаче `--config-file` или если `./config.xml` существовал в текущем каталоге; теперь все пути обнаружения ведут себя согласованно. [#105008](https://github.com/ClickHouse/ClickHouse/pull/105008) ([Groene AI](https://github.com/groeneai)).
* Исправлена проблема, из-за которой столбцы `BFloat16` при сравнении со строковым литералом молча возвращали ноль совпадений (например, `WHERE bf16_col = '49.9'`). [#105042](https://github.com/ClickHouse/ClickHouse/pull/105042) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена обработка `CLEAR COLUMN` и TTL во время слияний в `SummingMergeTree`, `AggregatingMergeTree` и `CoalescingMergeTree`, когда столбцы, необходимые для слияния, отсутствуют или срок их TTL истёк. Закрывает [#101953](https://github.com/ClickHouse/ClickHouse/issues/101953). [#105203](https://github.com/ClickHouse/ClickHouse/pull/105203) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена гонка между `DNSCacheUpdater::run` и `Context::reloadClusterConfig`: перед разыменованием `shared->clusters_config` добавлена явная проверка на `null`. [#105220](https://github.com/ClickHouse/ClickHouse/pull/105220) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Исправлен `best_effort`-парсинг даты и времени для `toDateTime64` с точностью `ms` и `ns`. [#105233](https://github.com/ClickHouse/ClickHouse/pull/105233) ([Kaviraj Kanagaraj](https://github.com/kavirajk)).
* Исправлено поведение `OSIOWaitMicroseconds`, который сообщал о времени ожидания I/O за весь срок жизни потока, а не в рамках отдельного запроса. [#105246](https://github.com/ClickHouse/ClickHouse/pull/105246) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Движок таблицы `Hudi` теперь выдаёт `INCORRECT_DATA` (обычное исключение уровня запроса) вместо `LOGICAL_ERROR`, если файл Parquet в каталоге таблицы не соответствует соглашению об именовании Hudi `[FileId]_[FileWriteToken]_[Timestamp].[extension]`. Раньше такие имена файлов вызывали исключение в debug-сборках. [#105266](https://github.com/ClickHouse/ClickHouse/pull/105266) ([Groene AI](https://github.com/groeneai)).
* Исправлена взаимная блокировка в `ParallelFormattingOutputFormat` при сбое планирования: когда `scheduleFormatterThreadForUnitWithNumber` генерирует исключение (например, `CANNOT_SCHEDULE_TASK`), элемент оставался в состоянии `READY_TO_FORMAT` без потока-форматтера для его обработки, что приводило к зависанию. Теперь вызов планирования обёрнут в `try`/`catch`, а любой сбой передаётся через `onBackgroundException`, чтобы коллектор завершался корректно. [#105275](https://github.com/ClickHouse/ClickHouse/pull/105275) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена незаметная потеря данных в `Distributed` async inserts при восстановлении после аварийного завершения: если последний файл `.bin` в сохранённом батче был целым, а один из файлов в середине — повреждённым, `DistributedAsyncInsertBatch::recoverBatch` проверял только заголовок последнего файла, после чего `sendBatch` помечал весь батч — включая неповреждённые файлы — как повреждённый, из-за чего терялись их строки. Теперь заголовок каждого файла проверяется отдельно, поэтому в `broken/` перемещается только действительно повреждённый файл, а уцелевшие строки доходят до удалённого сегмента. [#105281](https://github.com/ClickHouse/ClickHouse/pull/105281) ([Groene AI](https://github.com/groeneai)).
* Исправлена регрессия в `clickhouse extract-from-config --try`: когда конфигурация использовала атрибуты `from_env` и не содержала элемента `include_from` (или содержала его, но он указывал на отсутствующий файл), все подстановки `from_env` молча отбрасывались и возвращались как пустые строки. Это ломало определение порта в Docker entrypoint в 26.2.5. Закрывает [#101704](https://github.com/ClickHouse/ClickHouse/issues/101704). [#105283](https://github.com/ClickHouse/ClickHouse/pull/105283) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `INSERT INTO` в таблицу `SQLite`, из-за которой при вставке значения типа `Enum`, `JSON` или `AggregateFunction`, чьё текстовое представление содержало одинарную кавычку, возникала синтаксическая ошибка SQLite. Настройка `output_format_values_escape_quote_with_quote` теперь учитывается соответствующими сериализациями (раньше это работало только для `String` и `FixedString`). [#105285](https://github.com/ClickHouse/ClickHouse/pull/105285) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка `Code: 44. ILLEGAL_COLUMN: Cannot add column ...: column with this name already exists`, возникавшая в распределённых запросах с `allow_push_predicate_ast_for_distributed_subqueries = 1` (по умолчанию), когда кортеж `GLOBAL IN` сопоставлялся с подзапросом, в проекции которого есть дублирующиеся имена столбцов, например `(x, y) GLOBAL IN (SELECT number, number FROM numbers(5))`. [#105290](https://github.com/ClickHouse/ClickHouse/pull/105290) ([Groene AI](https://github.com/groeneai)).
* Исправлено поведение `reinterpret` для `Array(LowCardinality(...))`: раньше во время выполнения возвращалась вводящая в заблуждение ошибка `NOT_IMPLEMENTED`, а теперь при проверке типов возвращается `ILLEGAL_TYPE_OF_ARGUMENT`. [#105301](https://github.com/ClickHouse/ClickHouse/pull/105301) ([Raúl Marín](https://github.com/Algunenano)).
* `minMap`/`maxMap` (форма с массивом) и `minMappedArrays`/`maxMappedArrays` теперь обрабатывают `NaN` согласованно с `ORDER BY`: `NaN` считается последним (возвращается только если все значения — `NaN`). Раньше результаты зависели от позиции `NaN` в данных из-за семантики неупорядоченного сравнения IEEE 754 и расходились с формой `Map`-аргумента у `minMap`/`maxMap`, которая была исправлена в [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448). [#105331](https://github.com/ClickHouse/ClickHouse/pull/105331) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена утечка памяти в кэше `ColumnsDescription` на уровне таблицы для таблиц семейства `MergeTree` со столбцами `Nested`. Записи никогда не вытеснялись при циклах `ALTER ADD COLUMN`/`DROP COLUMN`, когда `share_nested_offsets = 1` (по умолчанию). [#105376](https://github.com/ClickHouse/ClickHouse/pull/105376) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение `BAD_ARGUMENTS` "It's a bug! Only integer types are supported by `__bitWrapperFunc`", возникавшее, когда в `SELECT` с индексом пропуска данных `TYPE set(N)` атом в `WHERE` имел тип результата `Float`, `BFloat16` или любой другой нецелочисленный тип (например, `WHERE c0 + 0.1` или `WHERE log(c0)`). В этом случае индекс пропуска данных теперь переключается на обычный путь фильтрации. [#105384](https://github.com/ClickHouse/ClickHouse/pull/105384) ([Groene AI](https://github.com/groeneai)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* Прекращено использование системных библиотек и заголовочных файлов `compiler-rt`. Закрывает [#91475](https://github.com/ClickHouse/ClickHouse/issues/91475). [#102857](https://github.com/ClickHouse/ClickHouse/pull/102857) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Обновлён базовый distroless-образ Docker для устранения CVE OpenSSL в `libssl3t64`. [#103583](https://github.com/ClickHouse/ClickHouse/pull/103583) ([Rahul Nair](https://github.com/motsc)).
* Во время выпусков GPG-ключ теперь надёжно получается через цепочку из нескольких серверов ключей Ubuntu вместо ожидания тайм-аута на `keyserver.ubuntu.com`. [#103834](https://github.com/ClickHouse/ClickHouse/pull/103834) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Удалены и запрещены проверки `CMake` на этапе сборки (`check_*`, `try_compile`, `try_run`). Компилятор и набор инструментов фиксированы, поэтому определение возможностей на этапе конфигурации не требуется и теперь заблокировано на уровне всего проекта; любое поведение, зависящее от версии, должно явно ограничиваться через `CMAKE_CXX_COMPILER_VERSION`. [#103980](https://github.com/ClickHouse/ClickHouse/pull/103980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `libarchive` обновлён с 3.8.6 до 3.8.7. [#104047](https://github.com/ClickHouse/ClickHouse/pull/104047) ([Robert Schulze](https://github.com/rschu1ze)).
* `mongo-c-driver` обновлён до 2.3.0. [#104300](https://github.com/ClickHouse/ClickHouse/pull/104300) ([Raúl Marín](https://github.com/Algunenano)).
* Обновлены зависимости LLVM для 22.x. [#104381](https://github.com/ClickHouse/ClickHouse/pull/104381) ([Joshua Carp](https://github.com/jmcarp)).
* Обеспечена сборка классов embedded-client и дескриптора PTY на macOS и FreeBSD за счёт использования переносимых POSIX-функций `posix_openpt` / `grantpt` / `unlockpt` и удаления специфичных для Linux защитных конструкций `#if`. [#104436](https://github.com/ClickHouse/ClickHouse/pull/104436) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `librdkafka` обновлён до версии 2.14.1. [#105222](https://github.com/ClickHouse/ClickHouse/pull/105222) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).

<div id="264">
  ### Релиз ClickHouse 26.4, 2026-04-30. [Презентация](https://presentations.clickhouse.com/2026-release-26.4/), [Видео](https://www.youtube.com/watch?v=9lSVy7k2EoI)
</div>

<div id="265-backward-incompatible-change">
  #### Обратно несовместимое изменение
</div>

* Оператор `IN` теперь использует семантику точного соответствия значений для типа `Bool`: значениям `Bool` соответствуют только `0` и `1` в наборе. Ранее числовые значения больше `255` в наборе `IN` при сравнении с `Bool` ошибочно приводились к true, поэтому `SELECT CAST(1, 'Bool') IN (256)` возвращал 1. Теперь он корректно возвращает `0`. Закрывает [#92980](https://github.com/ClickHouse/ClickHouse/issues/92980). [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* Библиотека H3 обновлена до v4, что повышает точность вычисления длины, площади и других метрик. Это обратно несовместимое изменение, поскольку новые результаты отличаются от прежних. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь запрещено использовать `SELECT` как некавыченный идентификатор в элементе списка выражений `WITH`. [#101059](https://github.com/ClickHouse/ClickHouse/pull/101059) ([Aruj Bansal](https://github.com/arujbansal)).
* Этот патч меняет то, как таблица Merge обрабатывает виртуальные столбцы. Если базовая таблица содержит `_table` или `_database`, эти столбцы будут считываться из хранилища; в противном случае они будут заполняться после этапа чтения на шаге expression. [#101742](https://github.com/ClickHouse/ClickHouse/pull/101742) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Оператор `IN` теперь также отклоняет преобразования `Decimal` с потерей точности внутри составных типов (`Tuple`, `Array`, `Map`), что делает его поведение согласованным со скалярными сравнениями верхнего уровня. Ранее проверки точности применялись только к скалярным значениям верхнего уровня: например, `CAST('33.3', 'Decimal64(1)') IN (33.33)` корректно возвращал `0`, но `CAST(['33.3'], 'Array(Decimal64(1))') IN ([33.33])` ошибочно возвращал `1`, поскольку преобразование с потерей точности происходило внутри `Array`. Теперь в обоих случаях корректно возвращается `0`. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Значения по умолчанию для `http_max_fields` уменьшены с 1,000,000 до 1,000, а для `http_max_field_name_size` — со 128 KB до 4 KB, чтобы ограничить использование памяти HTTP-соединениями до аутентификации. Добавлены настройки `http_max_request_header_size` и `http_headers_read_timeout`. Пользователи, которым нужны прежние более высокие лимиты, могут восстановить их через настройки. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).

<div id="267-new-feature">
  #### Новая возможность
</div>

* Добавлен автоматический сброс на диск для `hash` JOIN и параллельного `hash` JOIN: при достижении лимита памяти они преобразуются в `grace hash` JOIN. Это поведение управляется параметром `max_bytes_before_external_join`. [#97813](https://github.com/ClickHouse/ClickHouse/pull/97813) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Добавлена поддержка Arrow Flight SQL. [#91170](https://github.com/ClickHouse/ClickHouse/pull/91170) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Добавлена поддержка инкрементального чтения для движков таблиц `Paimon` с отслеживанием прогресса снимков в Keeper, включая выборочное чтение дельты снимка через `paimon_target_snapshot_id`, а также расширено покрытие тестами для сопоставления типов, отсечения партиций и сценариев инкрементального чтения. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Функция `stem` теперь больше не экспериментальная (раньше нужно было включить настройку `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)). Теперь с помощью функции `stem` можно легко выполнять стемминг всех слов/токенов в столбцах типов `String`, `FixedString`, `Array([Fixed]String)`, `Nullable`, `LowCardinality` и `Const`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Реализовано новое поведение `max_insert_block_size_rows`, `max_insert_block_size_bytes`, `min_insert_block_size_rows`, `min_insert_block_size_bytes` в процессе squashing в рамках настройки совместимости `use_strict_insert_block_limits`. [#94207](https://github.com/ClickHouse/ClickHouse/pull/94207) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Добавлена функция `arrayAutocorrelation(arr [, max_lag])`, вычисляющая нормализованную автокорреляцию числового массива для каждого лага. Поддерживаются массивы целочисленных типов, типов с плавающей точкой и Decimal. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* SQL-функция `obfuscateQuery`. Закрывает [#98010](https://github.com/ClickHouse/ClickHouse/issues/98010). [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* Добавлена поддержка типов Map и JSON/Object в атрибутах словаря. Теперь словари могут хранить и возвращать сложные типы, включая Map(String, String), Map(String, Array(String)), JSON и Nullable(JSON), в структурах FLAT и HASHED. [#98627](https://github.com/ClickHouse/ClickHouse/pull/98627) ([yanglongwei](https://github.com/ylw510)).
* Добавлены две новые настройки MergeTree — `replicated_fetches_min_part_level` и `replicated_fetches_min_part_level_timeout_seconds`, которые позволяют репликам пропускать загрузку недавно вставленных (не слитых) частей с других реплик, снижая накладные расходы на репликацию при интенсивной ингестии. [#98625](https://github.com/ClickHouse/ClickHouse/pull/98625) ([tanner-bruce](https://github.com/tanner-bruce)).
* Добавлена поддержка индекса пропуска данных MergeTree для JSON-столбцов с использованием JSONAllPaths и типов индексов bloom\_filter, tokenbf\_v1, ngrambf\_v1 и text (inverted), что позволяет пропускать гранулы на основе набора JSON-путей, присутствующих в каждой грануле. [#98886](https://github.com/ClickHouse/ClickHouse/pull/98886) ([Pavel Kruglov](https://github.com/Avogar)).
* Функция `printf` теперь поддерживает неконстантные строки формата, что позволяет задавать разные шаблоны формата для каждой строки в зависимости от значений столбцов. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash ](https://github.com/Onyx2406)).
* Добавлен новый индекс-проекция `commit_order`, переупорядочивающий данные в порядке вставки. [#99004](https://github.com/ClickHouse/ClickHouse/pull/99004) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Добавлена функция `highlight`, которая оборачивает вхождения искомых терминов в текстовой строке в HTML-теги (по умолчанию `<em>`/`</em>`). Поддерживает ASCII-сопоставление без учёта регистра, автоматическое слияние перекрывающихся совпадений и пользовательские открывающие/закрывающие теги. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* Реализованы квоты по хешу нормализованного запроса для защиты публичных сервисов ClickHouse от злоупотреблений. 1. Добавлена поддержка `NORMALIZED_QUERY_HASH` в качестве типа ключа квоты — для каждого уникального нормализованного запроса создается отдельный бакет квоты, поэтому `CREATE QUOTA q KEYED BY normalized_query_hash` отслеживает каждый уникальный запрос независимо. 2. Добавлена поддержка `QUERIES_PER_NORMALIZED_HASH` в качестве типа ресурса квоты -- ограничивает максимальное число выполнений любого отдельного нормализованного запроса в пределах интервала, поэтому `MAX queries_per_normalized_hash = 100` не позволяет одному шаблону запроса выполняться более 100 раз. [#99586](https://github.com/ClickHouse/ClickHouse/pull/99586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь пользователи могут писать JOIN-запросы с использованием синтаксиса `NATURAL JOIN`, который автоматически выполняет сопоставление по всем столбцам с одинаковыми именами и устраняет дубликаты этих столбцов в результате. [#99840](https://github.com/ClickHouse/ClickHouse/pull/99840) ([Peter Nguyen](https://github.com/petern48)).
* Добавлена поддержка `SET TIME ZONE 'tz'` в качестве псевдонима для `SET session_timezone`. [#99883](https://github.com/ClickHouse/ClickHouse/pull/99883) ([phulv94](https://github.com/phulv94)).
* Добавлена поддержка параметризованных запросов в веб-интерфейсе (`play.html`): параметры запроса вида `{name:Type}` распознаются, и для ввода их значений отображаются соответствующие поля. [#100041](https://github.com/ClickHouse/ClickHouse/pull/100041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Поддержка стандартного предложения SQL `VALUES` как табличного выражения в `FROM`, например: `SELECT * FROM (VALUES (1, 'a'), (2, 'b')) AS t(id, val)`. [#100143](https://github.com/ClickHouse/ClickHouse/pull/100143) ([Desel72](https://github.com/Desel72)).
* В оператор `EXTRACT` добавлены единицы, совместимые с PostgreSQL: `EPOCH`, `DOW`, `DOY`, `ISODOW`, `ISOYEAR`, `WEEK`, `CENTURY`, `DECADE`, `MILLENNIUM`. Также исправлен `EXTRACT(WEEK FROM date)`, который ранее выдавал ошибку. [#100274](https://github.com/ClickHouse/ClickHouse/pull/100274) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка составных литералов Interval по стандарту SQL с квалификаторами диапазона `TO`, например `INTERVAL '1:30' HOUR TO MINUTE`. Внутри они раскладываются в суммы интервалов. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* Добавлены асинхронные метрики памяти в буферах приёма и передачи TCP ядра (`sk_rmem_alloc`, `sk_wmem_alloc`) для сокетов пула HTTP-соединений, представляемые в виде процентилей p50/p75/p90/p95 и суммарных значений по каждой группе соединений. [#100575](https://github.com/ClickHouse/ClickHouse/pull/100575) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлен веб-интерфейс jemalloc для просмотра данных профилирования ClickHouse Keeper, доступный по адресу `/jemalloc` на порту управления по HTTP. [#100606](https://github.com/ClickHouse/ClickHouse/pull/100606) ([murphy-4o](https://github.com/murphy-4o)).
* Добавлена команда `SYSTEM FLUSH OBJECT STORAGE QUEUE db.table PATH 'x'` для режимов `ordered` и `unordered`. [#100709](https://github.com/ClickHouse/ClickHouse/pull/100709) ([Bharat Nallan](https://github.com/bharatnc)).
* Добавлена функция `JSONAllValues`, которая возвращает все значения из столбца `JSON` как `Array(String)`; значения сериализуются в текстовое представление и упорядочиваются по именам путей. Добавлена поддержка текстового индекса для выражения `JSONAllValues` в столбцах `JSON`. Когда текстовый индекс создаётся для `JSONAllValues(json_column)`, он автоматически используется для фильтрации запросов по подстолбцам `JSON` (например, `json_column.key1 = 'value'`). [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730) ([Anton Popov](https://github.com/CurtizJ)).
* Добавляет новую настройку `input_format_column_name_matching_mode`, которая позволяет задавать разную чувствительность к регистру для форматов ввода. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* Добавлена команда `watch` в `clickhouse-keeper-client`, а в командах `get`, `exists` и `ls` — поддержка наблюдения. [#100834](https://github.com/ClickHouse/ClickHouse/pull/100834) ([Den Kalantaevskii](https://github.com/Diskein)).
* В ClickHouse Keeper добавлены запрос `getChildrenRecursive` (ListRecursive) и команда `lsr` в `clickhouse-keeper-client`. Это закрывает [#99916](https://github.com/ClickHouse/ClickHouse/issues/99916). [#100998](https://github.com/ClickHouse/ClickHouse/pull/100998) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлена новая функция `arrayTranspose`, которая принимает двумерный массив (матрицу) и транспонирует его: `SELECT arrayTranspose([[1, 2, 3], [4, 5, 6]])`. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* У настройки `auto_statistics_types mergetree` значение по умолчанию — `'minmax, uniq'` — статистики minmax и uniq теперь автоматически создаются для всех подходящих столбцов в новых таблицах - у `materialize_statistics_on_insert` значение по умолчанию — false — статистика теперь строится во время слияний, а не при вставке, что снижает накладные расходы на вставку. Используйте `SET materialize_statistics_on_insert = 1`, чтобы восстановить прежнее поведение. [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275) ([Han Fei](https://github.com/hanfei1991)).
* Добавлена настройка `prefer_dependency_replica` для обновления цепочек зависимостей materialized view, чтобы сократить потери данных из-за задержки репликации между репликами. [#101591](https://github.com/ClickHouse/ClickHouse/pull/101591) ([Seva Potapov](https://github.com/seva-potapov)).
* Добавлена функция `hasPhrase` (псевдоним `matchPhrase`) для поиска по фразам (непрерывным последовательностям токенов). Поиск выполняется методом полного перебора, то есть текстовый индекс его пока не поддерживает. [#101997](https://github.com/ClickHouse/ClickHouse/pull/101997) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Добавлены метрики-гистограммы `s3_read_request_duration_microseconds` и `s3_read_request_bytes`, чтобы отслеживать время жизни соединений для запросов S3 GET и объём потребляемых байтов; они доступны в `system.histogram_metrics` и в конечной точке Prometheus. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* Значения `Date` и `Date32` теперь можно складывать со значениями `Time` и `Time64` с помощью оператора `+`, получая результат типа `DateTime` или `DateTime64`. Например, `SELECT toDate('2024-01-15') + toTime('14:30:25')` возвращает `2024-01-15 14:30:25`. Результат вычисляется с учетом часового пояса сеанса, а результаты, выходящие за допустимый диапазон, обрабатываются в соответствии с настройкой `date_time_overflow_behavior`. Закрывает [#95914](https://github.com/ClickHouse/ClickHouse/issues/95914). [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Текстовый индекс теперь имеет статус GA и остается включенным независимо от настройки `compatibility`, что предотвращает его неожиданное отключение при восстановлении из резервных копий или работе в режиме совместимости. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Добавлена команда `ALTER TABLE ... EXECUTE remove_orphan_files` для таблиц Iceberg, позволяющая выявлять и удалять файлы без ссылок из Объектного хранилища. [#99127](https://github.com/ClickHouse/ClickHouse/pull/99127) ([murphy-4o](https://github.com/murphy-4o)).
* Добавлена настройка `query_plan_optimize_join_order_randomize`, которая случайным образом изменяет статистику, используемую для переупорядочивания JOIN, что полезно для тестирования. [#100643](https://github.com/ClickHouse/ClickHouse/pull/100643) ([Vladimir Cherkasov](https://github.com/vdimir)).
* В ClickHouse добавлена поддержка функции ИИ, позволяющая пользователям вызывать конечные точки OpenAI и Anthropic с помощью SQL. `aiGenerate` стала первой такой функцией. [#100831](https://github.com/ClickHouse/ClickHouse/pull/100831) ([George Larionov](https://github.com/george-larionov)).
* Добавлены функции ИИ: `aiClassify`, `aiExtract` и `aiTranslate` для использования API LLM в ClickHouse. [#100832](https://github.com/ClickHouse/ClickHouse/pull/100832) ([George Larionov](https://github.com/george-larionov)).
* Добавлена `system.histogram_metric_log` — новая системная таблица, которая периодически создает снимки всех гистограммных метрик (например, задержек S3/Azure и длительности этапов обработки запросов Keeper). Кроме того, столбец `value` таблицы `system.histogram_metrics` изменен на `Float64`, так как этот тип более гибок и лучше совместим с моделью данных Prometheus. [#103046](https://github.com/ClickHouse/ClickHouse/pull/103046) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). Структура таблицы, вероятно, изменится в будущих релизах.

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* ClickHouse теперь может исключать целые части данных в SELECT-запросах на основе статистики min/max. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* Снижена конкуренция за блокировки при операциях только для чтения в таблицах ReplicatedMergeTree с завершёнными мутациями. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* Параметр `optimize_read_in_order` теперь учитывается при чтении проекций. Закрывает [#89453](https://github.com/ClickHouse/ClickHouse/issues/89453). [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* Небольшие улучшения в Hash JOIN и параллельном хеш-соединении. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Оптимизировано преобразование `DISTINCT` за счёт отключения оптимизации для столбцов `LowCardinality`, если входные данные почти полностью состоят из уникальных значений. [#97113](https://github.com/ClickHouse/ClickHouse/pull/97113) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Оптимизация производительности запросов `LIKE` из [#97723](https://github.com/ClickHouse/ClickHouse/issues/97723). Теперь эти запросы могут использовать текстовые индексы. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Векторизованные математические функции (`exp`, `log`, `sigmoid`, `tanh`) теперь работают быстрее на AArch64 (с использованием NEON/SVE), а также на FreeBSD/Darwin, где раньше использовалась более медленная скалярная реализация. [#98230](https://github.com/ClickHouse/ClickHouse/pull/98230) ([Raúl Marín](https://github.com/Algunenano)).
* В запросах, фильтрующих по столбцам первичного ключа `MergeTree` с помощью regexp-альтернаций из строковых литералов, таких как `^(abc-1|abc-2)`, теперь можно использовать отсечение по первичному ключу, если альтернативы имеют общий префикс. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash ](https://github.com/Onyx2406)).
* Динамическая фильтрация top-k для `ORDER BY ... LIMIT` обобщена и теперь поддерживает типы `Nullable`, `String` и `COLLATE`. [#99033](https://github.com/ClickHouse/ClickHouse/pull/99033) ([murphy-4o](https://github.com/murphy-4o)).
* Ускорен hash JOIN по ключам `Int32` и `Int64` с небольшим диапазоном благодаря использованию хеш-таблицы с прямой индексацией. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).
* Более быстрые несмежные запросы к столбцам `LowCardinality` с одним словарём. [#99285](https://github.com/ClickHouse/ClickHouse/pull/99285) ([Ivan Babrou](https://github.com/bobrik)).
* Ускорены функции `var*Stable` и `stddev*Stable` для столбцов `Float64` благодаря девиртуализации внутреннего цикла. Примечание: это позволяет задействовать оптимизации компилятора (FMA/регистры), которые изменяют результаты вычислений с плавающей запятой на уровне ULP. [#99460](https://github.com/ClickHouse/ClickHouse/pull/99460) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Используется оптимизированное кодирование Firedancer base58 для входных данных размером 32/64 байта (автоматически для `base58Encode`). Также можно использовать оптимизированное декодирование base58, если результат декодирования имеет размер 32/64 байта (явно через `base58Decode('...', 32)` или аналогичным образом). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* Включены оптимизации на основе секций компоновщика (`-ffunction-sections`, `-fdata-sections`, `--icf=all`) для уменьшения размера бинарного файла и более эффективного использования кэша инструкций. [#99474](https://github.com/ClickHouse/ClickHouse/pull/99474) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено ухудшение масштабируемости для коротких запросов с агрегацией на машинах с большим числом ядер. Когда запрос читает мало marks, конвейер после агрегации больше не разрастается до `max_threads`, что позволяет избежать накладных расходов из-за почти пустых потоков. [#99493](https://github.com/ClickHouse/ClickHouse/pull/99493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Повышена производительность запросов с параллельными репликами за счёт правильного выбора размера задачи чтения. [#99801](https://github.com/ClickHouse/ClickHouse/pull/99801) ([Nikita Taranov](https://github.com/nickitat)).
* Разрешена предзагрузка при чтении удалённого файла через кэш страниц в пространстве пользователя. [#99919](https://github.com/ClickHouse/ClickHouse/pull/99919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Устранено лишнее вычисление подстолбца String `.size` при перечислении подстолбцов. [#99941](https://github.com/ClickHouse/ClickHouse/pull/99941) ([Pavel Kruglov](https://github.com/Avogar)).
* Сделали индикатор прогресса в clickhouse-client более плавным при работе из отеля с кластерами с очень большим количеством реплик. [#100145](https://github.com/ClickHouse/ClickHouse/pull/100145) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запускается `MemoryWorker` в `clickhouse-local`, когда включен кэш страниц, чтобы кэш страниц в пространстве пользователя действительно мог использоваться. [#100306](https://github.com/ClickHouse/ClickHouse/pull/100306) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Оптимизировано выполнение запросов за счёт переноса условия `LIMIT` внутрь `UNION ALL`. [#100364](https://github.com/ClickHouse/ClickHouse/pull/100364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка JIT-компиляции для сравнений столбцов `String` и `FixedString` в `ORDER BY`, что повышает производительность сортировки на фазе merge на 6–17% для ключей сортировки, в которых преобладают строковые столбцы. В соавторстве с @lgbo-ustc. [#100577](https://github.com/ClickHouse/ClickHouse/pull/100577) ([Raúl Marín](https://github.com/Algunenano)).
* Когда `read_in_order_use_virtual_row` включен вместе с новой настройкой `read_in_order_use_virtual_row_per_block`, информация о границах виртуальных строк теперь выдается после чтения каждого блока из `MergeTree`, что позволяет механизму слияния на лету перераспределять приоритеты источников для частей, данные которых полностью отфильтровываются условиями `WHERE`/`PREWHERE`/`JOIN`. Закрывает [#99945](https://github.com/ClickHouse/ClickHouse/issues/99945). [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Ускорено преобразование Float в String для больших целочисленных значений за счёт расширения быстрого пути `itoa` с помощью совместимого с dragonbox округления. [#100649](https://github.com/ClickHouse/ClickHouse/pull/100649) ([Raúl Marín](https://github.com/Algunenano)).
* Заменили `dragonbox` на `zmij`, что ускорило преобразование Float-to-String в 1,5–3 раза. [#100650](https://github.com/ClickHouse/ClickHouse/pull/100650) ([Raúl Marín](https://github.com/Algunenano)).
* Ускорено преобразование `Int128`/`UInt128` в строку за счёт замены программного деления на редукцию Барретта и разворачивания цикла преобразования. [#100671](https://github.com/ClickHouse/ClickHouse/pull/100671) ([Raúl Marín](https://github.com/Algunenano)).
* Предотвращено создание лишних потоков при параллельном `merge` в `uniqExact`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* Для `uniqExact` добавлено параллельное слияние батчей. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).
* Улучшена распараллелизация запросов с простыми представлениями на базе таблицы `MergeTree`, выполняемых в режиме параллельных реплик. [#100815](https://github.com/ClickHouse/ClickHouse/pull/100815) ([Igor Nikonov](https://github.com/devcrafter)).
* Добавлена поддержка параллельных реплик для простых представлений (включая подходящие представления `UNION ALL` над таблицами `MergeTree`) при `parallel_replicas_allow_view_over_mergetree=1`. Это позволяет распараллеливать внешний запрос представления вместо внутреннего, что повышает степень распараллеливания запросов между узлами. [#100958](https://github.com/ClickHouse/ClickHouse/pull/100958) ([Igor Nikonov](https://github.com/devcrafter)).
* Оптимизировано чтение в порядке первичного ключа для `full_sorting_merge` при наличии в плане запроса фильтров с `IN`. [#101261](https://github.com/ClickHouse/ClickHouse/pull/101261) ([Nikita Taranov](https://github.com/nickitat)).
* Оптимизация операций выделения/освобождения памяти за счёт кэширования настроек сэмплирования вместо обхода всей иерархии трекера памяти. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена значительная регрессия производительности INSERT при `deduplicate_insert = 'enable'` (по умолчанию с версии 26.2): вычисление хеша данных перенесено с этапа squashing в sink, а для хеширования столбцов батча используется `updateHashWithValueRange`, что сокращает накладные расходы примерно с 2,5 с до 0,5 с для 5 млн строк и 22 столбцов. [#101494](https://github.com/ClickHouse/ClickHouse/pull/101494) ([Sema Checherinda](https://github.com/CheSema)).
* Снизили накладные расходы на профилирование блокировок, используя `try_lock`, чтобы не замерять время захватов без конкуренции, и убрали измерение времени удержания. [#101502](https://github.com/ClickHouse/ClickHouse/pull/101502) ([Antonio Andelic](https://github.com/antonio2368)).
* Реализована замена написанных вручную AVX-512 intrinsic-функций в `arrayDotProduct` на платформонезависимые автоматически векторизуемые циклы, с добавлением поддержки AVX2 и ARM NEON. [#101571](https://github.com/ClickHouse/ClickHouse/pull/101571) ([Peng](https://github.com/fastio)).
* Повышена производительность `INSERT VALUES` для столбцов `Map`, `Array` и `Tuple`, когда значения передаются как экранированные строки (например, `'{\'key\':1}'`), что позволяет избежать ненужного переключения на парсер SQL-выражений. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).
* Исправлено чрезмерное использование CPU движком таблицы `RabbitMQ`. [#102711](https://github.com/ClickHouse/ClickHouse/pull/102711) ([Jaap Elst](https://github.com/jaapieaapie1)).
* Оптимизатор порядка JOIN теперь выводит транзитивные предикаты экви-соединения из существующих условий JOIN. Например, для `A.x = B.x AND B.x = C.x` распознаётся эквивалентность `A.x = C.x`, что позволяет оптимизатору рассматривать Direct JOIN между таблицами, связанными транзитивно. Это может улучшить качество плана выполнения для схем «звезда» и «снежинка», где таблицы измерений соединяются через общую таблицу фактов. Эта возможность управляется новой настройкой `enable_join_transitive_predicates` (по умолчанию отключена). [#98479](https://github.com/ClickHouse/ClickHouse/pull/98479) ([Alexander Gololobov](https://github.com/davenger)).
* Оптимизирован `TRUNCATE DATABASE TABLES LIKE` благодаря предварительной параллельной отмене слияний. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Добавлена поддержка монотонности для функции multiply, что позволяет выполнять отсечение данных по первичному ключу для выражений `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* Словари cache больше не используют эксклюзивную блокировку в `hasKeys`; это уменьшает конкуренцию за блокировки, так как для чтения из cache теперь используется разделяемая блокировка. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).
* Подзапрос VIEW встроен в дерево запроса, что позволяет применять к VIEW больше оптимизаций. [#100830](https://github.com/ClickHouse/ClickHouse/pull/100830) ([Dmitry Novik](https://github.com/novikd)).
* Ускорена загрузка кэша при запуске сервера. [#101500](https://github.com/ClickHouse/ClickHouse/pull/101500) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Реализована отложенная материализация столбцов для ReplacingMergeTree с FINAL при достаточно селективном предикате. [#101647](https://github.com/ClickHouse/ClickHouse/pull/101647) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Снова включена оптимизация `optimize_rewrite_array_exists_to_has` (по умолчанию отключена с версии 23.10). Она преобразует `arrayExists(x -> x = elem, arr)` в гораздо более быстрый `has(arr, elem)` и теперь корректно пропускает такое преобразование, если тип элемента массива и `elem` несовместимы для `has` (например, `Date` и `String`), поэтому запросы, которые раньше ломались, продолжают работать. Закрывает [#71431](https://github.com/ClickHouse/ClickHouse/issues/71431). [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-improvement">
  #### Улучшения
</div>

* Улучшен вывод EXPLAIN PLAN pretty=1: теперь выводятся выходные столбцы запроса верхнего уровня, показываются метки/обозначения отношений JOIN с оценкой числа результирующих строк и локальности, а также выходные столбцы для каждого шага JOIN/источника. Изменения охватывают часть Information Deficit из [#98117](https://github.com/ClickHouse/ClickHouse/issues/98117). [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Добавлена настройка таблицы семейства MergeTree `share_nested_offsets` (по умолчанию `true`). Если задать `false`, столбцы типа Array с именами через точку (например, `n.a`, `n.b`) будут рассматриваться как независимые столбцы, а не совместно использовать файлы смещений и проверять равенство размеров массивов в рамках устаревшей семантики `Nested`. [#98416](https://github.com/ClickHouse/ClickHouse/pull/98416) ([Amos Bird](https://github.com/amosbird)).
* Теперь в конфигурации users.xml/yaml можно указывать несколько методов аутентификации (в SQL это всегда было возможно). [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* Автоматическая перезагрузка межузловых соединений Raft, использующих TLS. [#93455](https://github.com/ClickHouse/ClickHouse/pull/93455) ([Evgeny](https://github.com/evkuzin)).
* Расширена поддержка `cast_keep_nullable` для типов Dynamic/JSON. Если параметр включён, приведение NULL из типов, которые могут быть Nullable, вернёт NULL; в противном случае будет сгенерирована ошибка `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* Снижен объем памяти, занимаемой внутренними структурами данных (объектами `ISerialization`), за счет введения пула объектов. [#96563](https://github.com/ClickHouse/ClickHouse/pull/96563) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Добавлена поддержка полей `password` и `identity` в XML-конфигурации клиента Keeper. [#96800](https://github.com/ClickHouse/ClickHouse/pull/96800) ([Grigorii Sokolik](https://github.com/GSokol)).
* Улучшена запись в `Iceberg` для Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлена настройка `finalize_projection_parts_synchronously`, которая позволяет синхронно финализировать части проекций при INSERT, снижая пиковое потребление памяти у таблиц с большим числом проекций и сохраняя при этом существующее асинхронное поведение по умолчанию. [#98228](https://github.com/ClickHouse/ClickHouse/pull/98228) ([Amos Bird](https://github.com/amosbird)).
* Добавлен столбец `projections_duration_ms` в `system.part_log`, который фиксирует длительность слияния/перестроения для каждой проекции в миллисекундах. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* Улучшена отмена запросов, использующих ExpressionTransform и NumbersRangedSource, с помощью KILL QUERY и отмены запроса (Ctrl+C) в clickhouse-client. [#98908](https://github.com/ClickHouse/ClickHouse/pull/98908) ([Roman Vasin](https://github.com/rvasin)).
* Жестко заданный список `source_table_engines` заменен на lookup во время выполнения через `StorageFactory::getAllStorages()`. Это добавляет проверки доступа для некоторых ранее отсутствовавших движков таблиц и закрывает [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#98984](https://github.com/ClickHouse/ClickHouse/pull/98984) ([pufit](https://github.com/pufit)).
* Добавлена настройка для управления поведением при несовпадении типов для Variant и Dynamic (`throw` или возврат NULL). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* Улучшена совместимость `Iceberg` и Spark: исправлена непоследовательная обработка путей, вызванная смешением путей хранилища и путей метаданных; обеспечено, чтобы таблицы `Iceberg` записывали расположение таблицы либо как URL, либо как абсолютный путь; добавлен резервный механизм для подсчета размеров файлов в `Azure`, поскольку некоторые средства чтения ClickHouse не поддерживают подсчет байтов после обхода; обработка `version-hint.txt` приведена в соответствие со Spark; введены абстракции на уровне типов, чтобы в будущем было сложнее перепутать типы путей; добавлены тесты для `Azure` и `Local`, проверяющие междвижковую совместимость без промежуточной выгрузки и загрузки; исправлено использование position deletes, которое ранее опиралось на эвристики определения путей там, где такой подход неприменим. [#99163](https://github.com/ClickHouse/ClickHouse/pull/99163) ([Daniil Ivanik](https://github.com/divanik)). [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлена возможная ситуация гонки в `IPartitionStrategy::cached_result`, появившаяся в [https://github.com/ClickHouse/ClickHouse/pull/92844](https://github.com/ClickHouse/ClickHouse/pull/92844). [#99400](https://github.com/ClickHouse/ClickHouse/pull/99400) ([Arthur Passos](https://github.com/arthurpassos)).
* Теперь типы данных ClickHouse Interval можно записывать в формате Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* Добавлена встроенная поддержка импорта и экспорта типов данных `UUID` в форматах `Arrow` и `Parquet`. Теперь пользователи могут напрямую выполнять запросы к UUID-данным и передавать их между ClickHouse и другими инструментами работы с данными без ручного преобразования в строки и других обходных решений. Автоматическое логическое определение для UUID верхнего уровня, а также поддержка явного указания схемы для вложенных UUID. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* Поддержка архивов `7z` в объектном хранилище. Закрывает [#70968](https://github.com/ClickHouse/ClickHouse/issues/70968). [#99600](https://github.com/ClickHouse/ClickHouse/pull/99600) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены события ProfileEvents `ObjectStorageListedObjects`, `ObjectStorageGlobFilteredObjects`, `ObjectStoragePredicateFilteredObjects` и `ObjectStorageReadObjects` для интроспекции конвейера перечисления и чтения файлов в объектном хранилище (`S3`, `Azure` и т. д.). [#99778](https://github.com/ClickHouse/ClickHouse/pull/99778) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлен сбой табличной функции `merge` с ошибкой `UNKNOWN_IDENTIFIER` при запросе столбцов, присутствующих не во всех базовых распределённых/удалённых таблицах. [#99833](https://github.com/ClickHouse/ClickHouse/pull/99833) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь время коммита включается в общую метрику времени выполнения мутации для ReplicatedMergeTree. Оно перестало учитываться после [#96376](https://github.com/ClickHouse/ClickHouse/issues/96376). [#99936](https://github.com/ClickHouse/ClickHouse/pull/99936) ([alesapin](https://github.com/alesapin)).
* Добавлен журнал предзаписи для blob-объектов, ожидающих удаления в `MetadataStorageFromDisk`, что повышает надёжность и согласованность метаданных с удалённым объектным хранилищем при удалении объектов. [#100019](https://github.com/ClickHouse/ClickHouse/pull/100019) ([Maksim Kita](https://github.com/kitaisreal)).
* Отключена функция генерации SQL с помощью ИИ (`??`) во встроенном клиенте (протоколы SSH и WebSocket), чтобы предотвратить доступ к переменным окружения сервера. [#100290](https://github.com/ClickHouse/ClickHouse/pull/100290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Изменён интерфейс вставки в Iceberg через каталог. Настройки `storage_catalog_type`, `storage_aws_access_key_id` и т. д. объявлены устаревшими. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* При вставке в `clickhouse-client` заменять табуляцию на 4 пробела. Закрывает [#100405](https://github.com/ClickHouse/ClickHouse/issues/100405). [#100416](https://github.com/ClickHouse/ClickHouse/pull/100416) ([Raúl Marín](https://github.com/Algunenano)).
* Сканирование всего удалённого каталога озера данных в поисках подсказок к таблицам «Возможно, вы имели в виду …» больше не выполняется, если `show_data_lake_catalogs_in_system_tables` отключён. [#100452](https://github.com/ClickHouse/ClickHouse/pull/100452) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Применение `distributed_index_analysis_min_indexes_bytes_to_activate` после отсечения партиций. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка assert при проталкивании bloom filter для Parquet при использовании пустых секций IN/NOT IN. [#100543](https://github.com/ClickHouse/ClickHouse/pull/100543) ([zoomxi](https://github.com/zoomxi)).
* Статистика MinMax для столбцов теперь хранит минимальные и максимальные значения как типизированные Field, а не как Float64. Сериализованный формат включает имя типа столбца наряду со значениями. Версия файла статистики повышена до V2; файлы, записанные старыми версиями, требуют повторной материализации (ALTER TABLE … MATERIALIZE STATISTICS ALL). исправлено [#53140](https://github.com/ClickHouse/clickhouse-private/issues/53140). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).
* Обновлён `cppkafka`: добавлено исправление взаимной блокировки при закрытии Consumer. [#100612](https://github.com/ClickHouse/ClickHouse/pull/100612) ([Azat Khuzhin](https://github.com/azat)).
* Информация об объекте, используемая для разбора data files в Iceberg, теперь включает количество строк в файле и размер файла в байтах, извлечённые из manifest file. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* Добавлен параметр конфигурации `use_separate_cache_arena`, позволяющий управлять использованием отдельной арены памяти для кэша. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).
* Добавлена нативная поддержка импорта типов данных Apache Arrow `StringView` и `BinaryView` в столбцы `String` в ClickHouse, что повышает совместимость при ингестии на базе Arrow. [#100762](https://github.com/ClickHouse/ClickHouse/pull/100762) ([Ivan](https://github.com/ivanmantova)).
* Некоторые настройки Keeper server теперь перезагружаются без перезапуска при изменении файла конфигурации во время выполнения: max\_requests\_batch\_size, max\_requests\_batch\_bytes\_size, max\_request\_size, quorum\_reads. [#100773](https://github.com/ClickHouse/ClickHouse/pull/100773) ([Michael Kolupaev](https://github.com/al13n321)).
* Увеличены счётчики profile events `MemoryAllocatedWithoutCheck/MemoryAllocatedWithoutCheckBytes` в релизной сборке. [#100899](https://github.com/ClickHouse/ClickHouse/pull/100899) ([Pavel Kruglov](https://github.com/Avogar)).
* Отслеживание памяти в Cgroupv2 теперь исключает `slab_reclaimable` из памяти ядра, обеспечивая более точную оценку использования памяти, не подлежащей освобождению. [#100901](https://github.com/ClickHouse/ClickHouse/pull/100901) ([Antonio Andelic](https://github.com/antonio2368)).
* `use_partition_pruning = 0` теперь также отключает отсечение по индексу `MinMax` и оптимизацию для `count` на столбцах ключа партиционирования, помимо отключения отсечения по ключам партиционирования. [#100904](https://github.com/ClickHouse/ClickHouse/pull/100904) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `pretty=1` в `EXPLAIN [PLAN]` теперь выводит выражения в человекочитаемом формате. [#100927](https://github.com/ClickHouse/ClickHouse/pull/100927) ([Kirill Kopnev](https://github.com/Fgrtue)).
* `accurateCastOrNull` и `accurateCastOrDefault` теперь поддерживают целевые типы `Tuple`, включая вложенные `Tuple` с элементами `Nullable`. Ранее эти функции не принимали `Tuple` в качестве целевого типа, поскольку `Tuple` не мог находиться внутри `Nullable`. Закрывает [#100820](https://github.com/ClickHouse/ClickHouse/issues/100820). [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено дублирование диаграмм в интерфейсе Play при переключении между светлой и тёмной темами. [#101058](https://github.com/ClickHouse/ClickHouse/pull/101058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Обновлён chdig до [v26.3.1](https://github.com/azat/chdig/releases/tag/v26.3.1) (интерфейс Perfetto, спарклайны в сводке по CPU/памяти/слияниям/запросам, system.warnings, поиск по регулярным выражениям в журналах). [#101092](https://github.com/ClickHouse/ClickHouse/pull/101092) ([Azat Khuzhin](https://github.com/azat)). Обновлён chdig до [v26.4.3](https://github.com/azat/chdig/releases/tag/v26.4.3) (улучшения в Perfetto, исправления, связанные с общим доступом через pastila.nl, сравнение флеймграфов, изменение настроек в реальном времени). [#103145](https://github.com/ClickHouse/ClickHouse/pull/103145) ([Azat Khuzhin](https://github.com/azat)).
* Теперь перед запросом `SELECT` в секции `WITH` допускается завершающая запятая. [#101093](https://github.com/ClickHouse/ClickHouse/pull/101093) ([Aruj Bansal](https://github.com/arujbansal)).
* Добавлена настройка MergeTree `compress_per_column_in_compact_parts`, управляющая тем, как сжатые блоки организованы внутри компактных частей. Когда `true` (по умолчанию, с сохранением текущего поведения), каждый столбец начинает новый сжатый блок, что позволяет выполнять выборочную распаковку. Когда `false`, все столбцы в пределах гранулы упаковываются в один сжатый блок, что улучшает коэффициент сжатия и производительность чтения для рабочих нагрузок, в которых всегда читаются все столбцы. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* Показывать всплывающую подсказку с информацией о таблице в интерфейсе Play только при наведении курсора на название таблицы, а не на всю строку. [#101118](https://github.com/ClickHouse/ClickHouse/pull/101118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены значки для конкретных движков и улучшено взаимодействие со списком таблиц на боковой панели интерфейса Play. [#101134](https://github.com/ClickHouse/ClickHouse/pull/101134) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка `Nullable(Tuple)` в форматах `Arrow`, `ArrowStream`, `ORC` и устаревшем формате `Parquet`. [#101272](https://github.com/ClickHouse/ClickHouse/pull/101272) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Строка TOTALS теперь отображается в нижнем колонтитуле таблицы в веб-интерфейсе (play.html). [#101286](https://github.com/ClickHouse/ClickHouse/pull/101286) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Поддержка режима работы с несколькими запросами в веб-интерфейсе (`play.html`): одновременный запуск нескольких запросов с параллельным выполнением запросов типа `SELECT` и отдельным отображением результатов для каждого запроса. [#101290](https://github.com/ClickHouse/ClickHouse/pull/101290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено изменение ширины столбца в веб-интерфейсе play.html после того, как таблицу результатов переработали в веб-компонент. [#101295](https://github.com/ClickHouse/ClickHouse/pull/101295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена возможность ограничивать количество сбросов профиля jemalloc при MEMORY\_LIMIT\_EXCEEDED в течение заданного интервала времени. [#101396](https://github.com/ClickHouse/ClickHouse/pull/101396) ([Azat Khuzhin](https://github.com/azat)).
* Добавлены настройки Keeper: `nuraft_streaming_mode` (по умолчанию `false`), `nuraft_max_log_gap_in_stream`, `nuraft_max_bytes_in_flight_in_stream`. Закрывает issue [#90743](https://github.com/ClickHouse/ClickHouse/issues/90743). [#101427](https://github.com/ClickHouse/ClickHouse/pull/101427) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлена асинхронная метрика `CGroupMemoryUsedWithoutPageCache`, которая показывает использование памяти cgroup без учёта как кэша страниц ОС в ядре, так и кэша страниц в пространстве пользователя ClickHouse, по аналогии с `MemoryResidentWithoutPageCache`. Также уточнено описание метрики `CGroupMemoryUsed`. [#101513](https://github.com/ClickHouse/ClickHouse/pull/101513) ([Francesco Ciocchetti](https://github.com/primeroz)).
* Добавлен синтаксический сахар на уровне parser для синтаксиса стандартной SQL-функции `OVERLAY`. Функция `overlay` уже существует; добавлена поддержка формы с ключевыми словами `PLACING`, `FROM` и `FOR` в качестве разделителей. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* В системную таблицу `information_schema.tables` добавлен псевдоним столбца `INDEX_LENGTH`, аналогичный существующим в этой таблице псевдонимам в верхнем регистре. [#101705](https://github.com/ClickHouse/ClickHouse/pull/101705) ([Robert Schulze](https://github.com/rschu1ze)).
* Системная таблица `information_schema.tables` теперь не учитывает неактивные части таблицы. Благодаря этому отображаемые значения размера таблиц стали более реалистичными. [#101706](https://github.com/ClickHouse/ClickHouse/pull/101706) ([Robert Schulze](https://github.com/rschu1ze)).
* Функция `ngrams` теперь отклоняет недопустимые значения длины n-грамм. Пример: `SELECT ngrams('abc', 0)` теперь возвращает ошибку. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* В продолжение [#91820](https://github.com/ClickHouse/ClickHouse/issues/91820) и [#90837](https://github.com/ClickHouse/ClickHouse/issues/90837): исключать неподдерживаемые алгоритмы из сообщений об ошибках; запускать тесты для FIPS в FIPS-сборках. [#102067](https://github.com/ClickHouse/ClickHouse/pull/102067) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Высота ячеек в веб-интерфейсе (`play.html`) ограничена тремя строками, с возможностью раскрытия по щелчку. [#102154](https://github.com/ClickHouse/ClickHouse/pull/102154) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая опция для принудительного использования стиля (virtual/path) для конечных точек S3. Решает [#82019](https://github.com/ClickHouse/ClickHouse/issues/82019); [#76007](https://github.com/ClickHouse/ClickHouse/issues/76007) Продолжение [https://github.com/ClickHouse/ClickHouse/pull/83168](https://github.com/ClickHouse/ClickHouse/pull/83168). [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Параметр `restore_replace_external_engines_to_null` теперь также не восстанавливает базы данных с внешними движками (например, `DataLakeCatalog`, `MySQL`, `PostgreSQL`, `S3`) вместо того, чтобы завершаться ошибкой или устанавливать внешние подключения. [#102400](https://github.com/ClickHouse/ClickHouse/pull/102400) ([Nikita Fomichev](https://github.com/fm4v)).
* Добавлена поддержка анализа текстового индекса для функции `hasPhrase` в режиме `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Считать STATISTICS доступными только для чтения в ColumnDependency, чтобы исправить LOGICAL\_ERROR при MATERIALIZE STATISTICS ALL. [#102627](https://github.com/ClickHouse/ClickHouse/pull/102627) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* В режиме keeper-as-server теперь создаётся и заполняется `system.asynchronous_metric_log`. [#102664](https://github.com/ClickHouse/ClickHouse/pull/102664) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена опция config `default_system_log_flush_policy.skip_alias_columns`, позволяющая исключать столбцы ALIAS из системных таблиц логов; это исправляет системные логи, использующие S3 в качестве хранилища и не принимающие столбцы ALIAS. [#102669](https://github.com/ClickHouse/ClickHouse/pull/102669) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Не включайте автоматическую статистику для системных таблиц. Она им редко нужна. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).
* Добавлена поддержка токенизатора `array` для оптимизации LIKE. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Отправлять MemoryAllocatedWithoutCheck даже в релизных сборках. [#103064](https://github.com/ClickHouse/ClickHouse/pull/103064) ([Azat Khuzhin](https://github.com/azat)).
* Появилась возможность просматривать untracked\_memory для каждого потока в system.stack\_trace. [#103065](https://github.com/ClickHouse/ClickHouse/pull/103065) ([Azat Khuzhin](https://github.com/azat)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* Исправлена ошибка `Block structure mismatch in stream`, вызванная возвратом лишних столбцов при отложенной материализации. Исправляет [#95191](https://github.com/ClickHouse/ClickHouse/issues/95191). [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлена логическая ошибка в запросе политики маскирования данных с `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
* Исправлена ошибка при использовании Unity Catalog с GCS. [#98456](https://github.com/ClickHouse/ClickHouse/pull/98456) ([Melvyn Peignon](https://github.com/melvynator)).
* `DataLakeCatalog` теперь учитывает настройку сервера `http_forbid_headers` при проверке параметра `auth_header`. [#98827](https://github.com/ClickHouse/ClickHouse/pull/98827) ([Michael Anastasakis](https://github.com/michael-anastasakis)).
* Исправлены вызовы `HeadObject` по схеме N+1 для S3 глоб-шаблонов с раскрытием фигурных скобок. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Проверка изменений настроек в запросах CREATE, если сам движок тоже поддерживает настройки. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена ошибка, из-за которой `ALTER TABLE UPDATE/DELETE` завершался с ошибкой `Missing columns`, когда в таблице есть материализованный столбец, выражение которого зависит от эфемерного столбца. [#99281](https://github.com/ClickHouse/ClickHouse/pull/99281) ([Yash ](https://github.com/Onyx2406)).
* Учетные данные в строках подключения JDBC, ODBC и NATS теперь маскируются в журнале запросов и выводе `SHOW CREATE`, что предотвращает случайное раскрытие конфиденциальной информации. В строках подключения в формате URI (например, `{scheme}://{user}:{password}@{host}`) маскируется только пароль, а остальная часть остается видимой для удобства отладки. Настройка `nats_token` теперь тоже маскируется. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена ошибка в `parseDateTimeBestEffort`: функция неверно разбирала слова, начинающиеся с префиксов месяцев, в формате DD-month-YYYY. Закрывает [#99345](https://github.com/ClickHouse/ClickHouse/issues/99345#event-23517658314). [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено игнорирование TABLE\_UUID\_MISMATCH в режиме без analyzer. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка, из-за которой явные настройки, переданные вместе с `compatibility` в одном запросе, могли незаметно игнорироваться, если их значение совпадало со значением сервера по умолчанию. [#99402](https://github.com/ClickHouse/ClickHouse/pull/99402) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлена проблема, из-за которой числа с ведущими нулями в пути партиционирования Hive вызывали ошибки. Исправление [#98801](https://github.com/ClickHouse/ClickHouse/issues/98801). [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена ошибка heap-use-after-free, возникавшая при одновременном удалении таблицы и выполнении запроса на чтение (19 случаев в CI за последние 90 дней). [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка в Keeper: запрос на чтение мог зависнуть (что приводило к тайм-ауту сеанса), если в тот же сервер в крайне неудачный момент закрывался другой, не связанный с ним сеанс. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
* Проверка структуры столбца перед применением патчей. [#99531](https://github.com/ClickHouse/ClickHouse/pull/99531) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлен сбой проверки `rows_sources` при вертикальном слиянии во время быстрого переключения `SYSTEM STOP/START MERGES` для таблицы со столбцами `Dynamic`. [#99532](https://github.com/ClickHouse/ClickHouse/pull/99532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено некорректное отсечение партиций для `toWeek()`, из-за которого запросы с `WHERE toWeek(date, mode) = N` возвращали пустой результат для недель 49–52 в таблицах, разбитых на партиции по `toYYYYMM(date)`. [#99542](https://github.com/ClickHouse/ClickHouse/pull/99542) ([Takumi Hara](https://github.com/takumihara)).
* Исправлено исключение в функциях, работающих с ColumnReplicated при наличии строк без ссылок, созданных JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
* Исправлена проблема, из-за которой `CLEAR COLUMN` не перестраивал проекции и не выполнял повторный расчёт материализованных столбцов, зависящих от очищаемого столбца, что могло приводить к исключениям или повреждению данных при последующих слияниях. [#99565](https://github.com/ClickHouse/ClickHouse/pull/99565) ([Desel72](https://github.com/Desel72)).
* Исправлено Исключение (`Bad get: has Tuple, actual type String`) в `ConditionSelectivityEstimator`, возникавшее, когда в запросе используется IN с одним скалярным параметром запроса (например, `WHERE col IN ({p:String})`) для таблицы, у которой есть статистика по столбцам и включен `use_statistics`. [#99614](https://github.com/ClickHouse/ClickHouse/pull/99614) ([Ilya Yatsishin](https://github.com/qoega)).
* Часть с неизвестными проекциями не должна считаться безвозвратно потерянной. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлено редкое исключение из-за логической ошибки при Вертикальном слиянии, когда `SYSTEM STOP MERGES` и `SYSTEM START MERGES` выполняются одновременно. [#99628](https://github.com/ClickHouse/ClickHouse/pull/99628) ([Desel72](https://github.com/Desel72)).
* Исправлена висячая ссылка в injectRequiredColumns, приводившая к сбою при слиянии. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлено неопределённое поведение в модуле чтения Avro format при чтении числовых значений, вызывающих переполнение целевого типа столбца. Теперь запросы завершаются ошибкой при переполнении вместо того, чтобы незаметно возвращать некорректные значения. [#99697](https://github.com/ClickHouse/ClickHouse/pull/99697) ([asyablue22](https://github.com/asyablue22)).
* Исправлен разбор кавычек в стиле shell в аргументах табличной функции `executable`. [#99794](https://github.com/ClickHouse/ClickHouse/pull/99794) ([Nikita Semenov](https://github.com/leftmain)).
* Исправлено ложное срабатывание аварийного завершения в `NativeReader` при десериализации потока в формате Native с несовпадением количества строк: код ошибки изменён с `LOGICAL_ERROR` на `INCORRECT_DATA`, чтобы ситуация обрабатывалась как ошибка данных, а не вызывала `abort()` в сборках sanitizer/debug. [#99822](https://github.com/ClickHouse/ClickHouse/pull/99822) ([Rahul Nair](https://github.com/motsc)).
* Исправлено аварийное завершение процесса при десериализации столбца `Tuple`, когда тип сериализации в бинарном потоке — `DETACHED`. [#99823](https://github.com/ClickHouse/ClickHouse/pull/99823) ([Rahul Nair](https://github.com/motsc)).
* Исправлено ложное исключение `LOGICAL_ERROR`, возникавшее при динамическом изменении размера файлового кэша из-за состояния гонки при повышении приоритета подочереди SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено некорректное отображение нулевых значений `written_rows`, `read_rows` и `result_rows` для запросов async insert в `query_log` и выводе клиента. [#99879](https://github.com/ClickHouse/ClickHouse/pull/99879) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлено исключение "Неверное приведение типа X к Y" в `KILL QUERY`, когда внутренний запрос к системным таблицам возвращает столбцы, обёрнутые в `ColumnConst`. [#99881](https://github.com/ClickHouse/ClickHouse/pull/99881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка, связанная с коррелированным подзапросом в аргументе untuple. [#99917](https://github.com/ClickHouse/ClickHouse/pull/99917) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено Исключение при вызове `right`, `rightUTF8` или других функций извлечения подстроки с длиной INT64\_MIN (-9223372036854775808), которое ранее приводило к неопределённому поведению из-за целочисленного переполнения. Теперь эти функции корректно возвращают ошибку ARGUMENT\_OUT\_OF\_BOUND. [#99934](https://github.com/ClickHouse/ClickHouse/pull/99934) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Теперь ClickHouse должен корректно обрабатывать таблицы в стиле Spark (где для каждого файла указан полный абсолютный путь или относительный путь к общему пути таблицы). Исправляет [#92348](https://github.com/ClickHouse/ClickHouse/issues/92348). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
* Исправлено Исключение "Inconsistent AST formatting" для `ALTER TABLE ... MODIFY QUERY` со вложенными подзапросами, содержащими `SETTINGS`, когда у самого `ALTER` тоже есть `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Отменён [#97114](https://github.com/ClickHouse/ClickHouse/issues/97114) "Перенести оценку числа строк на этапе JOIN перед проверкой на наличие 1 дочернего элемента" из-за подозрения на регрессию производительности. [#99957](https://github.com/ClickHouse/ClickHouse/pull/99957) ([Alexander Gololobov](https://github.com/davenger)).
* Исправлена ошибка, из-за которой ClickHouse мог пропускать файлы, если в ответе на HEAD-запрос к ним отсутствовал заголовок `Content-Length` (например, из-за декомпрессионного транскодирования в GCS). [#99971](https://github.com/ClickHouse/ClickHouse/pull/99971) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлен сбой assert (исключение в debug-сборках, некорректные результаты в release-сборках) при умножении состояний агрегатной функции `NumericIndexedVector` на чётную целочисленную константу, вызванный self-XOR для алиасов битмапов Roaring в `pointwiseAddInplace`. [#99976](https://github.com/ClickHouse/ClickHouse/pull/99976) ([Desel72](https://github.com/Desel72)).
* Предотвращено исключение `Unexpected return type` в устаревшем pushdown фильтров через цепочку `JOIN USING`, когда типы ключей меняются после преобразований JOIN. [#99999](https://github.com/ClickHouse/ClickHouse/pull/99999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `LOGICAL_ERROR` "Неожиданный тип узла для табличного выражения ... фактически IDENTIFIER", возникавшее при использовании скалярного подзапроса внутри неразрешённого аргумента табличной функции, например: `SELECT * FROM remote('localhost', view(SELECT 2 AS x), concat(x, (SELECT 1)))`. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой `INSERT` с `VALUES` завершался сбоем, если после данных на следующей строке шёл завершающий SQL-комментарий (`--` или `/* */`). Теперь комментарий пропускается, а не разбирается как ещё одна строка. [#100016](https://github.com/ClickHouse/ClickHouse/pull/100016) ([Pratima Patel](https://github.com/pratimapatel2008)).
* Исправлено исключение в `arrayRemove` при сравнении кортежей с компонентами, равными NULL. [#100017](https://github.com/ClickHouse/ClickHouse/pull/100017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена межпользовательская утечка данных в `system.asynchronous_inserts`: любой пользователь с `SELECT` к таблице мог видеть ожидающие записи асинхронной вставки, принадлежащие другим пользователям. Теперь записи фильтруются по текущему пользователю, если только у него нет привилегии `SHOW_USERS`. [#100024](https://github.com/ClickHouse/ClickHouse/pull/100024) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен случай, когда приведение Time64 к UInt64 могло обрезать значения до 24 часов. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлен сбой локального сервера, когда CREATE DICTIONARY содержит определение со списочным значением, содержащим несуществующую функцию. [#100036](https://github.com/ClickHouse/ClickHouse/pull/100036) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлена ошибка, из-за которой форматы `CSV` и `MsgPack` не могли корректно разбирать `Nullable(Tuple)`. Закрывает [#99753](https://github.com/ClickHouse/ClickHouse/issues/99753). [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка `UNKNOWN_IDENTIFIER`, из-за которой `CREATE VIEW` завершался сбоем при использовании в качестве правой части `IN` алиаса функционального выражения в `WITH` (например, `tuple(...)`). [#100042](https://github.com/ClickHouse/ClickHouse/pull/100042) ([Peng](https://github.com/fastio)).
* Исправлена ошибка, из-за которой агрегатные функции временных рядов (например, `timeSeriesResampleToGridWithStaleness`) завершались с `ILLEGAL_TYPE_OF_ARGUMENT` при использовании `initializeAggregation` или `AggregatingMergeTree` с параллельными репликами. [#100053](https://github.com/ClickHouse/ClickHouse/pull/100053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена обработка отрицательных значений в NumericIndexedVectorDataBSI. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлено: функции `accurateCastOrDefault` и `to*OrDefault` не сохраняли тип Const столбца для константных входных данных. [#100132](https://github.com/ClickHouse/ClickHouse/pull/100132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* У пропущенных параметров запроса с типом `LowCardinality(Nullable(T))` теперь значение по умолчанию корректно устанавливается в NULL, как и для `Nullable(T)`. [#100144](https://github.com/ClickHouse/ClickHouse/pull/100144) ([Denys Melnyk](https://github.com/germiBest)).
* Исправлена ошибка использования неинициализированного значения в StringSearcher.h. [#100225](https://github.com/ClickHouse/ClickHouse/pull/100225) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Добавлена возможность отменять скалярные подзапросы и другие конвейеры, запускаемые на этапе анализа, с помощью Ctrl+C. Ранее нажатие Ctrl+C во время выполнения длительного скалярного подзапроса не давало никакого эффекта, пока подзапрос не завершался. Также исправлены индикатор прогресса и статистика в JSON, чтобы они корректно сообщали о числе прочитанных строк во время выполнения скалярного подзапроса — как в `clickhouse-client`, так и в `clickhouse-local`. В соавторстве с @YjyJeff. [#100230](https://github.com/ClickHouse/ClickHouse/pull/100230) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено исключение `LOGICAL_ERROR` в запросах с `Dynamic`-столбцами, `CROSS JOIN` и runtime-фильтрами, вызванное тем, что `ColumnVariant::filter` использовал общие указатели на Variant-столбцы вместо их клонирования в ветке оптимизации `hasOnlyNulls`. Закрывает [https://github.com/ClickHouse/ClickHouse/pull/100147](https://github.com/ClickHouse/ClickHouse/pull/100147). [#100234](https://github.com/ClickHouse/ClickHouse/pull/100234) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка в массивах с `Variant`, из-за которой при вызове функций `arrayFirst`/`arrayLast` мог переинтерпретироваться тип данных. Например, ранее `Array(Variant(Date, Bool))` преобразовывался в `Bool`, хотя фактический тип варианта — `Date`. [#100255](https://github.com/ClickHouse/ClickHouse/pull/100255) ([timothygk](https://github.com/timothygk)).
* Несколько небольших изменений в функциях: функции `h3` теперь лучше проверяют границы; `readWKB` теперь проверяет ограничения на размер (новая настройка `max_wkb_geometry_elements`); функции генерации случайных чисел ограничивают максимальное число итераций при вычислениях. Дополнение к [#93543](https://github.com/ClickHouse/ClickHouse/issues/93543). [#100270](https://github.com/ClickHouse/ClickHouse/pull/100270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема, из-за которой cutURLParameter мог некорректно пропускать параметры, если они были подстроками других параметров. [#100280](https://github.com/ClickHouse/ClickHouse/pull/100280) ([Nikita Semenov](https://github.com/leftmain)).
* Исправлено исключение, возникавшее, если в настройке пути к файлу метаданных Iceberg присутствовал null-байт. [#100283](https://github.com/ClickHouse/ClickHouse/pull/100283) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема с квадратичным ростом числа выполняемых запросов при использовании `distributed_index_analysis` с предикатами, содержащими `IN`-подзапросы. [#100287](https://github.com/ClickHouse/ClickHouse/pull/100287) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено исключение "Несоответствие структуры блока" при использовании `GROUP BY ... WITH TOTALS HAVING` вместе с `UNION DISTINCT` и Nullable-выражениями. [#100293](https://github.com/ClickHouse/ClickHouse/pull/100293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение LOGICAL\_ERROR в `estimateCompressionRatio`, возникавшее, когда параметр `block_size_bytes` был чрезвычайно большим. [#100298](https://github.com/ClickHouse/ClickHouse/pull/100298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение "Несогласованное форматирование AST" в отладочных сборках при использовании `GROUP BY CUBE(...) WITH ROLLUP` и похожих комбинаций. [#100376](https://github.com/ClickHouse/ClickHouse/pull/100376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение при создании представления с псевдонимами столбцов и запросами `SELECT *` или `EXCEPT`/`INTERSECT`. [#100386](https://github.com/ClickHouse/ClickHouse/pull/100386) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено зависание `DROP TABLE` на неопределённое время для таблиц с движком Kafka, когда consumer'ы застревают в состоянии перебалансировки после ошибки heartbeat. [#100388](https://github.com/ClickHouse/ClickHouse/pull/100388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `ReadBuffer is canceled. Can't read from it.` при операциях резервного копирования и восстановления с использованием zip-архивов. [#100400](https://github.com/ClickHouse/ClickHouse/pull/100400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `TOO_MANY_ROWS` для запросов `SELECT count()` с `max_rows_to_read` / `force_primary_key`, когда данные распределены по нескольким частям с несовпадающими границами гранул. [#100408](https://github.com/ClickHouse/ClickHouse/pull/100408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `system.completions`: теперь он корректно фильтрует базы данных, таблицы и столбцы по правам доступа во всех сочетаниях grant — на уровне таблицы, базы данных и при отзыве прав на уровне столбца. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлен SEGFAULT в NuRaft, вызванный состоянием гонки. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
* `min`/`max`/`argMin`/`argMax` теперь обрабатывают NaN так же, как `ORDER BY`: NaN всегда пропускается (возвращается только если все значения — NaN). Ранее результаты зависели от положения NaN в данных из-за семантики неупорядоченного сравнения в IEEE 754. [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена ошибка, вызванная копированием и вставкой: если `delta_lake_snapshot_end_version` задавался без `delta_lake_snapshot_start_version`, он молча игнорировался вместо того, чтобы приводить к ошибке `BAD_ARGUMENTS`. [#100454](https://github.com/ClickHouse/ClickHouse/pull/100454) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* `StorageRabbitMQ::shutdown` не является идемпотентным (он безусловно обращается к слабым указателям, а затем уничтожает соответствующие указатели с общим владением), но теперь вызывается дважды: сначала в `StreamingStorageRegistry`, а затем в `DatabaseCatalog`. Это исправление делает метод идемпотентным и добавляет защитные проверки на `null`. [#100455](https://github.com/ClickHouse/ClickHouse/pull/100455) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено Исключение `LOGICAL_ERROR`, возникавшее при использовании `accurateCastOrNull` с целевым типом `QBit`. [#100470](https://github.com/ClickHouse/ClickHouse/pull/100470) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлено исключение LOGICAL\_ERROR "Stream ... not found", возникавшее при вставке в таблицу с вложенными столбцами `Array(JSON)` в частях типа Wide при `optimize_on_insert=0`. [#100475](https://github.com/ClickHouse/ClickHouse/pull/100475) ([Pavel Kruglov](https://github.com/Avogar)).
* Проверка путей записей файлов в метаданных резервной копии для отклонения обхода путей, абсолютных путей и пустых имён при `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлена ошибка, из-за которой не работал синтаксис `LIMIT m OFFSET n WITH TIES`. Этот синтаксис эквивалентен `LIMIT n, m WITH TIES`, который уже работал. [#100491](https://github.com/ClickHouse/ClickHouse/pull/100491) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено исключение "No set is registered for key" при использовании `IN` со столбцами `Nullable(Tuple)`, содержащими именованные поля и элементы `LowCardinality`. [#100523](https://github.com/ClickHouse/ClickHouse/pull/100523) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен heap-buffer-overflow в usearch `sorted_buffer_gt::insert()`, который мог вызывать сбой или незаметно повреждать память при поиске по векторному сходству. [#100537](https://github.com/ClickHouse/ClickHouse/pull/100537) ([Dustin Healy](https://github.com/dustinhealy)).
* Исправлена ошибка, из-за которой `EXECUTE AS` игнорировал секции `FORMAT` и `INTO OUTFILE`, указанные в запросе. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
* Исправлено неконсистентное форматирование AST для SAMPLE с OFFSET на уровне запроса. Закрывает [#100576](https://github.com/ClickHouse/ClickHouse/issues/100576). [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена работа Polaris catalog с Azure. Начиная с версии 25.12 этот каталог для Azure начал добавлять бакет в начало пути. Например, `abfss://polaris-polaris@<some_url>.windows.net/polaris-polaris/<other-path>` вместо `abfss://polaris-polaris@<some_url>.windows.net/<other-path>`. Этот PR убирает бакет из пути. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлено исключение из-за несоответствия типов в transform, когда столбец по умолчанию является const в некоторых блоках. Закрывает [#100574](https://github.com/ClickHouse/ClickHouse/issues/100574). [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправляет случаи NOT\_FOUND\_COLUMN\_IN\_BLOCK, когда в части SELECT проекции есть столбцы, которых нет в исходной части SELECT запроса. Закрывает [#100194](https://github.com/ClickHouse/ClickHouse/issues/100194). [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Проверка размерностей массива в формате Npy на соответствие размеру файла и ограничениям переполнения, чтобы предотвратить отказ в обслуживании из-за специально созданных файлов `.npy` с чрезмерно большими размерностями. Также отклоняются пустые формы массивов, а объём памяти на строку ограничивается 2 GiB. [#100625](https://github.com/ClickHouse/ClickHouse/pull/100625) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена ошибка, из-за которой `session_timezone` игнорировался при разборе значений `DateTime` во время асинхронных вставок (TCP) и всех вставок по HTTP. [#100647](https://github.com/ClickHouse/ClickHouse/pull/100647) ([Sema Checherinda](https://github.com/CheSema)).
* Разрешена передача ключа сегментирования в табличные функции `cluster()` и `clusterAllReplicas()`, когда в качестве источника используется табличная функция (например, `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
* Исправлен сбой сервера (срабатывание assert) при использовании параметрических агрегатных функций с комбинатором Array и аргументами NULL, таких как `quantileIfArrayArray(0.5)([[NULL]], [[1]])`. [#100679](https://github.com/ClickHouse/ClickHouse/pull/100679) ([nerve-bot](https://github.com/nerve-bot)).
* Исправлено исключение, возникавшее при вычислении общего супертипа для пустых и непустых кортежей при включенном `use_variant_as_common_type`. [#100699](https://github.com/ClickHouse/ClickHouse/pull/100699) ([Antonio Andelic](https://github.com/antonio2368)).
* Сервер больше не запускается с ошибкой, если настроен диск Azure Blob Storage, а конечная точка временно недоступна (например, из-за сбоя DNS). [#100701](https://github.com/ClickHouse/ClickHouse/pull/100701) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено неопределённое поведение в `positiveModulo`, когда беззнаковый делитель не помещается в знаковый тип результата. [#100705](https://github.com/ClickHouse/ClickHouse/pull/100705) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен сбой сервера (логическая ошибка "Неожиданный тип, возвращаемый \_\_topKFilter"), когда включен `use_top_k_dynamic_filtering`, а столбец в `ORDER BY` имеет тип `Dynamic` или `Variant`. [#100742](https://github.com/ClickHouse/ClickHouse/pull/100742) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера при использовании функции `has()` в PREWHERE/WHERE для ключа Tuple, содержащего элементы LowCardinality. [#100760](https://github.com/ClickHouse/ClickHouse/pull/100760) ([Groene AI](https://github.com/groeneai)).
* Исправлено срабатывание проверки `file_offset_of_buffer_end <= getFileSize()` (исключение в отладочных сборках) при чтении из таблиц `Log` или `StripeLog` в объектном хранилище S3 при одновременной записи. [#100763](https://github.com/ClickHouse/ClickHouse/pull/100763) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение в оценщике селективности статистики, возникавшее, когда предложение WHERE содержит функциональное выражение (например, toDecimal64(col, 3)) в таблице со включенной статистикой. Теперь оценщик пропускает такие предикаты вместо того, чтобы пытаться выполнить недопустимое приведение типов. [#100764](https://github.com/ClickHouse/ClickHouse/pull/100764) ([Han Fei](https://github.com/hanfei1991)).
* Исправлен редкий случай, когда JOIN с изменением порядка мог давать неверный результат. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлены некорректные типы аргументов `AggregateFunction` в оптимизированном тривиальном `count`, из-за которых при выполнении запросов с выражениями вроде `count(v0 + v1)` на distributed таблицах возникало Исключение `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`. [#100794](https://github.com/ClickHouse/ClickHouse/pull/100794) ([YjyJeff](https://github.com/YjyJeff)).
* Некоторые каталоги могли отображать секреты в разделе `SETTINGS` результата запроса `select * from system.databases`. Этот PR предотвращает такое поведение. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлено неопределённое поведение (переполнение знакового целого числа) в `toStartOfInterval` при использовании интервалов Week, Quarter или Year с аргументом origin и предельными значениями интервала. [#100817](https://github.com/ClickHouse/ClickHouse/pull/100817) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена невозможность чтения более старых сериализованных состояний после появления `Nullable(Tuple)` для комбинаторов агрегатных функций `If`, `Distinct`, `DistinctIf`, `IfState ` с возвращаемым типом `Tuple` и одним или несколькими аргументами `Nullable`. Закрывает [#98917](https://github.com/ClickHouse/ClickHouse/issues/98917). [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен segfault в s3Cluster и распределённых запросах, вызванный use-after-free при работе с пулом соединений. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлен segfault из-за разыменования нулевого указателя при загрузке словарей во время остановки сервера. `Context::getUserDefinedSQLObjectsStorage` (разыменовывает `user_defined_sql_objects_storage`) вызывается потоками словарей одновременно с вызовом `Context::shutdown` в основном потоке (он устанавливает `user_defined_sql_objects_storage` в null). Нужно убедиться, что до запуска `Context::shutdown` в загрузчике словарей отключены дальнейшие обновления, завершены выполняющиеся запросы к словарям и потоки загрузки словарей дожидаются завершения. Аналогично тому, как это делается для обычных запросов. [#100839](https://github.com/ClickHouse/ClickHouse/pull/100839) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено переполнение буфера в `ULIDStringToDateTime`, возникавшее, когда входные данные содержат не-ASCII-байты. [#100843](https://github.com/ClickHouse/ClickHouse/pull/100843) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлен сбой (`LOGICAL_ERROR`) при выполнении запроса к таблице `Merge` (или табличной функции `merge()`), объединяющей несколько таблиц, включая таблицу `Distributed`, при включенном `distributed_group_by_no_merge=1`. [#100859](https://github.com/ClickHouse/ClickHouse/pull/100859) ([Groene AI](https://github.com/groeneai)).
* При включенном Cast\_keep\_nullable при приведении dynamic null к variant исключение не будет генерироваться. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлено поведение команд `clickhouse-keeper-client` `get`, `exists` и `ls`: они выводили дублирующиеся сообщения об ошибке `watch_id` в stdout вместо stderr. [#100893](https://github.com/ClickHouse/ClickHouse/pull/100893) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Исправлено исключение в `intDiv`/`intDivOrZero` при работе с массивами Nullable-кортежей, например `SELECT intDiv([divide((1, 2), ... AND NULL)], 2)`. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
* Аргументы движка для `StorageAlias` теперь вычисляются перед сохранением определения, чтобы выражения вроде `currentDatabase()` преобразовывались в литералы до сохранения в базе данных. [#100902](https://github.com/ClickHouse/ClickHouse/pull/100902) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлена ошибка в `processAndOptimizeTextIndexFunctions` при `query_plan_merge_expressions = 0`, когда `ExpressionStep` расположен непосредственно над `ReadFromMergeTree`. Исправление [#100879](https://github.com/ClickHouse/ClickHouse/issues/100879). [#100909](https://github.com/ClickHouse/ClickHouse/pull/100909) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Обновлён replxx: добавлено исправление выхода за границы массива в do\_complete\_line. [#100925](https://github.com/ClickHouse/ClickHouse/pull/100925) ([Azat Khuzhin](https://github.com/azat)).
* Исправлены неверные результаты, когда JOIN с оптимизацией сегментирования по PK использует кэш условий запроса, а некоторые части отфильтровываются на основе кэшированных условий. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка, из-за которой `divide` и `intDiv` в некоторых случаях возвращали `ILLEGAL_DIVISION` при использовании в выражениях фильтра во время анализа индексов. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлены ошибки "Целевая таблица не существует" для materialized view с внутренними таблицами при асинхронном запуске, вызванные неверным порядком инициализации зависимостей. [#100946](https://github.com/ClickHouse/ClickHouse/pull/100946) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлено неопределённое поведение (переполнение знакового целого числа) в parseDateTimeBestEffort при разборе строк даты и времени, содержащих более 18 цифр в дробной части секунды. [#100948](https://github.com/ClickHouse/ClickHouse/pull/100948) ([Vasily Chekalkin](https://github.com/bacek)).
* Исправлен сбой при использовании индекса для текстового поиска с условием `IN`, содержащим кортежный подзапрос, например `WHERE (id, str) IN (SELECT (id, str) FROM ...)`, а также в случае, когда число столбцов в подзапросе не совпадает с кортежем в левой части `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлен сбой, возникавший при создании словаря Polygon из таблицы `MergeTree`, использующей сериализацию разреженных столбцов. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлена логическая ошибка "Invalid action query tree node" при использовании `INTERSECT ALL` / `UNION ALL` с выражениями, свёрнутыми в константы. [#100977](https://github.com/ClickHouse/ClickHouse/pull/100977) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена агрегатная функция `sumCountOrDefault`: при одном или нескольких аргументах типа `Nullable` она не могла читать ранее сериализованные состояния после введения `Nullable(Tuple)`. Закрывает [#100882](https://github.com/ClickHouse/ClickHouse/issues/100882). [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен сбой (`Logical error: isConst/isSparse/isReplicated assertTypeEquality`) в алгоритмах слияния, когда отложенная репликация столбцов (`enable_lazy_columns_replication`) создает столбцы `ColumnReplicated`, которые попадают в конвейеры merge-sort при позднем поступлении входных данных. [#101036](https://github.com/ClickHouse/ClickHouse/pull/101036) ([Groene AI](https://github.com/groeneai)).
* Исправлена некорректная ошибка `UNKNOWN_IDENTIFIER`, возникавшая, когда один и тот же псевдоним использовался для нескольких выражений в `SELECT`; теперь вместо неё корректно сообщается ошибка `MULTIPLE_EXPRESSIONS_FOR_ALIAS`. [#101040](https://github.com/ClickHouse/ClickHouse/pull/101040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема со столбцами ALIAS типов `DateTime`/`DateTime64`: преобразование часового пояса не применялось, если указанный часовой пояс отличался от часового пояса выражения. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема, из-за которой политики строкового доступа не записывались в `query_log` для представлений, подзапросов и `INSERT ... SELECT`. Хотя политики строкового доступа применялись при планировании запросов, они не передавались от вложенных планировщиков в родительский планировщик для записи в журнал. Теперь политики строкового доступа (только для журналирования) хранятся в `QueryAccessInfo`, чтобы их могли заполнять и планировщики, и вложенные планировщики. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).
* Исправлено Исключение в `DirectJoinMergeTreeEntity`, когда блоки конвейера содержат столбцы `ColumnConst`, которые объединяются с обычными столбцами. [#101046](https://github.com/ClickHouse/ClickHouse/pull/101046) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен лишний пробел в оформлении псевдонима столбца в CTE (`WITH t (a, b)` → `WITH t(a, b)`). [#101049](https://github.com/ClickHouse/ClickHouse/pull/101049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой табличные функции `remote`/`cluster` не работали с вложенными табличными функциями, такими как `merge`, при включенном анализаторе. [#101055](https://github.com/ClickHouse/ClickHouse/pull/101055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено двойное применение `OFFSET` в распределённых запросах при `prefer_localhost_replica=1`, из-за чего возвращалось меньше строк, чем ожидалось. [#101071](https://github.com/ClickHouse/ClickHouse/pull/101071) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен сбой, возникавший при использовании формата `Regexp` с некорректным регулярным выражением в настройке `format_regexp`. [#101074](https://github.com/ClickHouse/ClickHouse/pull/101074) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка "Недопустимый тип Decimal64 для параметра start" в агрегатных функциях временных рядов при использовании `serialize_query_plan=1` с параллельными репликами. [#101083](https://github.com/ClickHouse/ClickHouse/pull/101083) ([Groene AI](https://github.com/groeneai)).
* Исправлено исключение в `optimizeLazyMaterialization`, возникавшее при использовании проекции с PREWHERE вместе с `ORDER BY ... LIMIT`. [#101115](https://github.com/ClickHouse/ClickHouse/pull/101115) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлен сбой сервера (SIGABRT) при использовании агрегатных функций с внутренним комбинатором `Null` (например, `sumNull`, `avgNull`) и включенной настройкой `aggregate_functions_null_for_empty = 1`. [#101147](https://github.com/ClickHouse/ClickHouse/pull/101147) ([Groene AI](https://github.com/groeneai)).
* Исправлена ошибка use-after-free при записи в файловый кэш, которая могла приводить к чтению из уже освобождённой памяти при логировании завершённых сегментов файла (обнаружена с помощью MemorySanitizer в BuzzHouse). [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера с сообщением "Попытка подключить внешнюю таблицу к готовому Set без явных элементов", который возникал, когда распределённый анализ индексов сталкивался с предикатом GLOBAL IN, чей Set был построен без явных элементов. [#101178](https://github.com/ClickHouse/ClickHouse/pull/101178) ([Groene AI](https://github.com/groeneai)).
* Исправлены агрегатные функции `MAX`/`MIN` для столбцов `Decimal`, возвращавшие некорректные результаты при включенной JIT-компиляции (после достижения порога компиляции). [#101203](https://github.com/ClickHouse/ClickHouse/pull/101203) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена проблема, из-за которой оптимизации `minmax_count_projection` и тривиального `COUNT(*)` оставались навсегда отключёнными после легковесного удаления, даже когда все части с маской легковесного удаления уже были слиты. [#101212](https://github.com/ClickHouse/ClickHouse/pull/101212) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлен сценарий, который мог приводить к логической ошибке `Having zero bytes, ...` в кэше: удалённый объект мог быть перезаписан в промежутке между `list` и `read`, из-за чего ранее возникали устаревшие метаданные объекта. [#101219](https://github.com/ClickHouse/ClickHouse/pull/101219) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлен сбой сервера (LOGICAL\_ERROR: Bad cast from ColumnVector to ColumnLowCardinality) при запросе к таблице семейства MergeTree с `ORDER BY CAST(lc_column, 'Type')`, где `lc_column` имеет тип LowCardinality. [#101220](https://github.com/ClickHouse/ClickHouse/pull/101220) ([Groene AI](https://github.com/groeneai)).
* Исправлена очистка устаревших узлов обработки в `S3Queue`. [#101230](https://github.com/ClickHouse/ClickHouse/pull/101230) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлено UB в mergeTreeAnalyzeIndexes() при недопустимом значении аргумента optimizations. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено Исключение `Logical error: 'partitions_count > 0'`, возникавшее при последовательном выполнении `ALTER TABLE UPDATE` для секционированной таблицы Iceberg. [#101278](https://github.com/ClickHouse/ClickHouse/pull/101278) ([Desel72](https://github.com/Desel72)).
* Исправлены неверные результаты запроса, когда большая целочисленная константа (например, 256, 2147483648) используется как булевый предикат в предложении WHERE с оператором AND в таблицах семейства MergeTree. Например, `SELECT count() FROM t WHERE (2147483648 > b) AND 2147483648` ошибочно возвращал 0 вместо того, чтобы учитывать все строки. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
* Исправлен INSERT SELECT из кластера Delta Lake с ReplicatedMergeTree. [#101299](https://github.com/ClickHouse/ClickHouse/pull/101299) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен сбой с сообщением "Логическая ошибка: чтение из материализованного CTE до материализации", возникавший, когда скалярный подзапрос ссылался на цепочку зависимых материализованных CTE. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
* Исправлена гонка данных с `storage_id` в `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлены форматирование и клонирование AST для BACKUP FROM SNAPSHOT. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлен сбой LOGICAL\_ERROR "Текущий компонент пуст", возникавший при запросе к `system.part_moves_between_shards`, когда включен `enforce_keeper_component_tracking`. [#101462](https://github.com/ClickHouse/ClickHouse/pull/101462) ([Groene AI](https://github.com/groeneai)).
* Исправлено падение из-за segmentation fault в DataTypeDynamic::create(), когда фаззер генерирует некорректный AST типа Dynamic. [#101464](https://github.com/ClickHouse/ClickHouse/pull/101464) ([Groene AI](https://github.com/groeneai)).
* Выдавать ошибку, если настройки `delta_lake_snapshot_version` или версии CDF используются без включенного DeltaKernel, вместо того чтобы незаметно возвращать некорректные данные. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
* Исправлено Исключение `NOT_FOUND_COLUMN_IN_BLOCK`, возникавшее при использовании ARRAY JOIN с JOIN USING и включенной настройке `analyzer_compatibility_join_using_top_level_identifier`. Закрывает [#101240](https://github.com/ClickHouse/ClickHouse/issues/101240). [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена ошибка в цикле повторных попыток Iceberg INSERT, возникавшая, когда таблица была создана с `iceberg_metadata_file_path`, а целевая версия метаданных уже существовала. [#101548](https://github.com/ClickHouse/ClickHouse/pull/101548) ([Groene AI](https://github.com/groeneai)).
* Убрали Nullable из результирующего столбца в arrayIntersect и связанных функциях, чтобы избежать несоответствия при сериализации/десериализации. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
* Исправлен сбой сервера (LOGICAL\_ERROR) при выполнении SELECT-запроса к materialized view, использующему движок таблицы IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([Groene AI](https://github.com/groeneai)).
* Исправлено некорректное сообщение об ошибке при вызове `intExp10` с аргументом NaN — в нём было указано `intExp2` вместо `intExp10`. [#101582](https://github.com/ClickHouse/ClickHouse/pull/101582) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* Исправлено: `allow_statistics=0` не блокировал выполнение `ALTER TABLE ADD STATISTICS` и `ALTER TABLE DROP STATISTICS` после рефакторинга в [#100288](https://github.com/ClickHouse/ClickHouse/issues/100288). [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* Исправлена ошибка `KeeperMap` при выполнении `CREATE TABLE` с сообщением "Cannot create metadata for table", возникавшая, когда в оставшихся узлах ZooKeeper после неполного удаления в версиях до 25.1 отсутствовал узел `drop_lock_version`. [#101623](https://github.com/ClickHouse/ClickHouse/pull/101623) ([Antonio Andelic](https://github.com/antonio2368)).
* Устранена возможная логическая ошибка при чтении подстолбцов типа Map. Закрывает [#100769](https://github.com/ClickHouse/ClickHouse/issues/100769). Закрывает [#101336](https://github.com/ClickHouse/ClickHouse/issues/101336). [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен приоритет точного совпадения подстолбца над совпадением по префиксу в `getSubcolumnData`, чтобы избежать возможного падения. Закрывает [#101271](https://github.com/ClickHouse/ClickHouse/issues/101271). [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен сбой (LOGICAL\_ERROR: "ColumnUnique не может содержать значения NULL") при сравнении столбца `LowCardinality` с NULL-константой `Variant`, когда `use_variant_default_implementation_for_comparisons` отключён. [#101690](https://github.com/ClickHouse/ClickHouse/pull/101690) ([Groene AI](https://github.com/groeneai)).
* Что: В Bzip2ReadBuffer добавлена проверка на пустой поток, благодаря которой он возвращает EOF вместо UNEXPECTED\_END\_OF\_FILE, если внутренний поток пуст. [#101691](https://github.com/ClickHouse/ClickHouse/pull/101691) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Что: Исправлено перепутанное описание столбца `alterable` в `system.s3_queue_settings` и `system.azure_queue_settings` — значения `0` и `1` поменяны местами в соответствии с фактическим поведением кода. [#101703](https://github.com/ClickHouse/ClickHouse/pull/101703) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Исправлена ошибка, из-за которой для `positiveModulo(tuple, number)` ошибочно вызывалось деление вместо операции взятия по модулю. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Исправляет сбой, возникавший при настройке `thread_pool_size` на диске с кэшем. Ранее `FileCacheSettings::loadFromConfig()` отклонял `thread_pool_size` как неизвестную настройку, из-за чего сервер не мог запуститься. Эта настройка является допустимым параметром `IDisk`, который определяет количество потоков, используемых для операций копирования с диска на диск при фоновом перемещении частей. [#101712](https://github.com/ClickHouse/ClickHouse/pull/101712) ([Francisco](https://github.com/Milias)).
* Исправлено поведение, при котором при создании словаря `RANGE_HASHED` молча принимался несуществующий атрибут диапазона `MAX`, а также использовалась неверная конфигурация типов, если атрибуты минимального и максимального диапазона имели разные типы. Причиной ошибки была опечатка из-за копирования и вставки в `buildRangeConfiguration`: для максимального атрибута искался `min_attr_name` вместо `max_attr_name`. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлено аварийное завершение, вызванное use-after-free в планировщике аренды CPU, когда таймер ожидания живёт дольше, чем воркер-поток, на `ProfileEvents::Counters` которого он ссылается. [#101761](https://github.com/ClickHouse/ClickHouse/pull/101761) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена ошибка в функциях arrayLevenshteinDistanceWeighted и arraySimilarity. Закрывает [#101725](https://github.com/ClickHouse/ClickHouse/issues/101725). [#101767](https://github.com/ClickHouse/ClickHouse/pull/101767) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Исправлена ошибка, из-за которой Prometheus Query API игнорировал тела POST-форм. [#101794](https://github.com/ClickHouse/ClickHouse/pull/101794) ([James Cunningham](https://github.com/JTCunning)).
* Исправлен выход исключения из деструктора S3 `Client::~Client`, приводивший к аварийному завершению сервера. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Исправлена ошибка use-after-scope при параллельной десериализации динамических путей типа `Object`, которая могла приводить к сбоям при чтении таблиц с большим количеством таких путей. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен некорректный вывод в функции `formatDateTime` для форматтера `%W` при определённых (не используемых по умолчанию) настройках форматирования. [#101847](https://github.com/ClickHouse/ClickHouse/pull/101847) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлено ложное срабатывание `shouldPatchFunction` в `SYSTEM INSTRUMENT ADD`, когда искомая строка впервые встречается внутри аргумента Template в деманглированном имени символа. [#101885](https://github.com/ClickHouse/ClickHouse/pull/101885) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлена потеря реестра UDF при истечении сеанса ZooKeeper во время периодического обновления — все пользовательские функции могли становиться недоступными, пока не завершится успешное полное обновление. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлено описание `system.codecs` для `AES_256_GCM_SIV`: теперь указывается `AES-256`, а не `AES-128`. [#101917](https://github.com/ClickHouse/ClickHouse/pull/101917) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлено использование некорректных экстремумов в min-max индексе, созданном для JSON-столбца, что приводило к неверному результату запроса. Закрывает [#101700](https://github.com/ClickHouse/ClickHouse/issues/101700). [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
* Токенизатор `splitByString` теперь не принимает пустые строки в качестве разделителя. [#101928](https://github.com/ClickHouse/ClickHouse/pull/101928) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлено поведение, при котором `materialize_skip_indexes_on_merge=false` не подавлял текстовые (полнотекстовые) индексы при слиянии. Ранее подавлялись только нетекстовые индексы пропуска данных (minmax, set, bloom\_filter); текстовые индексы продолжали строиться, что приводило к напрасному расходу CPU и I/O. [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
* Токенизатор `sparseGrams` генерировал токены, длина которых превышала заданный максимум (это было связано с жёстко прописанным `+2` в реализации). [#101934](https://github.com/ClickHouse/ClickHouse/pull/101934) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Исправлен SIGSEGV в `MergeTreeDataPartWriterWide::cancel`, возникавший, когда конструктор потока выбрасывает исключение во время `addStreams`, из-за чего в `column_streams` оставался null-элемент. [#101936](https://github.com/ClickHouse/ClickHouse/pull/101936) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправляет исключение при запросе к таблицам Merge или Distributed с полнотекстовым индексом и комбинированными условиями фильтрации, в которых `has*Tokens` сочетается с LIKE, когда включен `query_plan_direct_read_from_text_index`. [#101939](https://github.com/ClickHouse/ClickHouse/pull/101939) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлено неопределённое поведение при разборе пакетов запроса собственного протокола с некорректными значениями `QueryProcessingStage`. [#101972](https://github.com/ClickHouse/ClickHouse/pull/101972) ([Raúl Marín](https://github.com/Algunenano)).
* Закрывать TCP-соединение при возникновении исключения на этапе начального разбора запроса, чтобы предотвратить чтение мусорных данных из рассинхронизированного потока. [#101989](https://github.com/ClickHouse/ClickHouse/pull/101989) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена ошибка гонки в SLRU в файловом кэше 26.1+, которая может приводить к логической ошибке при резервировании места. В отладочной сборке это также может приводить к срабатыванию assert: `'Previous state is Evicting, but expected state to be Active while setting Evicting flag for 2c1e3484ecdc6b78a8978fa5b17c5097:0:339 (state: Evicting)'.`. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлено исключение при приведении строки с лишними данными в конце к пустому типу `Tuple()`. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправляет неправильный порядок строк в запросах, использующих ORDER BY с алгоритмом JOIN grace\_hash. Затронутые запросы могли возвращать результаты в неверном порядке, что незаметно приводило к некорректному выводу. [#102036](https://github.com/ClickHouse/ClickHouse/pull/102036) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена ошибка LOGICAL ERROR (Unexpected size of index type), которая могла возникать в запросах RIGHT JOIN и FULL JOIN, когда был настроен параметр `max_bytes_in_join`. [#102042](https://github.com/ClickHouse/ClickHouse/pull/102042) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправляет случаи, когда `Time` с отрицательными значениями возвращал неверный результат при сравнении с типом DateTime. Закрывает [#101670](https://github.com/ClickHouse/ClickHouse/issues/101670). [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлен сбой при обновлении UDF, вызванный тем, что `ZooKeeperRetriesControl` выполнял повторную попытку с устаревшим (истекшим) сеансом ZooKeeper, не обновляя его. [#102059](https://github.com/ClickHouse/ClickHouse/pull/102059) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлено отсутствие пробелов при форматировании unlock snapshot. Закрывает [https://github.com/clickhouse/clickhouse/issues/101723](https://github.com/clickhouse/clickhouse/issues/101723). [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
* Исправлен crash (SIGSEGV) при выполнении запроса к представлению с предложением WHERE, когда внутренний запрос возвращает столбцы с типами, отличающимися от метаданных представления (например, Nullable из LEFT JOIN с `join_use_nulls`). [#102085](https://github.com/ClickHouse/ClickHouse/pull/102085) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлена ошибка, из-за которой записи в `VectorSimilarityIndexCache` не вытеснялись после удаления части из-за несоответствия ключей кэша. [#102152](https://github.com/ClickHouse/ClickHouse/pull/102152) ([Seva Potapov](https://github.com/seva-potapov)).
* При использовании хранилища RabbitMQ для повреждённых сообщений теперь отправляется NACK. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлена логическая ошибка при разборе некорректной строки с пустым кортежем. [#102289](https://github.com/ClickHouse/ClickHouse/pull/102289) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлены некорректные результаты агрегации (дублирующиеся строки) при использовании `optimize_aggregation_in_order=1`, если столбцы в GROUP BY упорядочены иначе, чем ключ сортировки таблицы. [#102299](https://github.com/ClickHouse/ClickHouse/pull/102299) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой в `IcebergLocal` при выполнении `ALTER TABLE ... UPDATE` с использованием формата Avro: типы-обёртки `LowCardinality`/`Nullable` не разворачивались перед сериализацией. [#102337](https://github.com/ClickHouse/ClickHouse/pull/102337) ([Desel72](https://github.com/Desel72)).
* Исправлена ошибка сегментации в мутациях для материализованных столбцов без выражения. Закрывает [#102185](https://github.com/ClickHouse/ClickHouse/issues/102185). [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
* Исправление в Coalescing merge tree для типа Array. Это закрывает [#89509](https://github.com/ClickHouse/ClickHouse/issues/89509). [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен segfault (или LOGICAL\_ERROR в отладочных сборках) при чтении файлов Parquet с включённым проталкиванием bloom filter и условиями равенства/неравенства в предложении WHERE. Сбой происходил из-за обращения к памяти за пределами допустимых границ при получении данных bloom filter в механизме предвыборки Parquet, а также мог приводить к непредсказуемо неверным результатам запроса. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
* Исправлено прерывание с `LOGICAL_ERROR` при динамическом изменении размера SLRU файлового кэша, вызванное общей статистикой вытеснения для подочередей и некорректным путём восстановления для кандидатов, завершившихся ошибкой. [#102396](https://github.com/ClickHouse/ClickHouse/pull/102396) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен сбой инициализации на новой реплике таблиц-алиасов без целевой таблицы в базе данных Replicated. Закрывает [#101320](https://github.com/ClickHouse/ClickHouse/issues/101320). [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлено чтение за пределами буфера в функциях поиска по строкам (`countSubstrings`, `position` и т. д.) при поиске подстроки, состоящей целиком из null-байтов. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
* Настройки полнотекстового индекса (`enable_full_text_index`, `allow_experimental_full_text_index`, `use_skip_indexes_on_data_read`) больше не отключаются, если настройка `compatibility` указывает на версию старее 26.1. Ранее из-за этого `SharedDatabaseCatalog` мог не создавать таблицы с текстовыми индексами. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлено чтение за пределами буфера в `printf` при завершающем `%`. [#102472](https://github.com/ClickHouse/ClickHouse/pull/102472) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено исключение chassert `ReadBuffer is canceled` в отладочных сборках AsynchronousMetrics, вызванное тем, что rewind не сбрасывал флаг отмены буфера. [#102524](https://github.com/ClickHouse/ClickHouse/pull/102524) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* Исправлены `hasToken` / `hasTokenOrNull` для искомых подстрок, состоящих только из разделителей (например, `'()'`, `'!!!'`), в столбцах с текстовым индексом: ранее индекс молча пропускал все гранулы вместо того, чтобы сгенерировать `BAD_ARGUMENTS` (для `hasToken`) или вернуть `NULL` (для `hasTokenOrNull`). [#102544](https://github.com/ClickHouse/ClickHouse/pull/102544) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлены OOM-ситуации на огромных `multi`-запросах в Keeper. Для трассировки OpenTelemetry мы безусловно выделяли >1 KiB для OpenTelemetry spans в объектах `ZooKeeperRequest` — то есть для действительно огромных `multi`-запросов пытались дополнительно выделить >10 GiB памяти. Чтобы это исправить, теперь мы храним общие данные в статической памяти и используем `std::unique_ptr` вместо `std::optional` в `ZooKeeperOpentelemetrySpans`. [#102586](https://github.com/ClickHouse/ClickHouse/pull/102586) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено завышение CurrentMetric для `NamedCollection` из-за `CREATE NAMED COLLECTION IF NOT EXISTS` на уже существующих коллекциях, а также отсутствие инициализации для коллекций, загружаемых из конфигурации или SQL-хранилища при запуске. Закрывает [#102507](https://github.com/ClickHouse/ClickHouse/issues/102507). [#102598](https://github.com/ClickHouse/ClickHouse/pull/102598) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлено Исключение в `getStructureOfRemoteTable`, когда локальный сегмент возвращает пустой список столбцов из-за параллельного DDL. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR`, возникавшее, когда несколько параллельных запросов `CREATE TABLE IF NOT EXISTS` были направлены к одной и той же таблице `S3Queue` в базе данных Shared. [#102610](https://github.com/ClickHouse/ClickHouse/pull/102610) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлен сбой LOGICAL\_ERROR "Неожиданное количество строк в подфрагменте столбца" в нативном считывателе Parquet V3 при чтении столбцов с типом Nullable с фильтром WHERE. [#102628](https://github.com/ClickHouse/ClickHouse/pull/102628) ([Groene AI](https://github.com/groeneai)).
* Исправлено описание события профиля `AzureWriteMicroseconds`: вместо "write" было указано "read". [#102639](https://github.com/ClickHouse/ClickHouse/pull/102639) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ошибка в политике строк, из-за которой в ряде особых случаев возникает исключение 'Not found column in block'. [#102648](https://github.com/ClickHouse/ClickHouse/pull/102648) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено серверное исключение в ClusterDiscovery, возникавшее, когда в статическом кластере (заданном в config) временно не оставалось доступных узлов. [#102661](https://github.com/ClickHouse/ClickHouse/pull/102661) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлен неверный вывод типа данных Date при переполнении после поправки на часовой пояс. Закрывает [#102601](https://github.com/ClickHouse/ClickHouse/issues/102601). [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено бесконечное зависание `SYSTEM WAIT VIEW`, если refreshable materialized view удаляется в процессе ожидания. [#102681](https://github.com/ClickHouse/ClickHouse/pull/102681) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлена ошибка в `CASE` с выражением Dynamic, из-за которой для всех строк возвращался `ELSE`. Закрывает [#102511](https://github.com/ClickHouse/ClickHouse/issues/102511). [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена сериализация уплощенного типа Dynamic для бинарно закодированных типов данных. Закрывает [#101911](https://github.com/ClickHouse/ClickHouse/issues/101911). [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена проблема, из-за которой format\_schema\_source='query' молча игнорировал результаты, содержащие несколько строк. Закрывает [#101905](https://github.com/ClickHouse/ClickHouse/issues/101905). [#102698](https://github.com/ClickHouse/ClickHouse/pull/102698) ([Pavel Kruglov](https://github.com/Avogar)).
* Передаётся фактический код выхода через SSH-клиент вместо того, чтобы сопоставлять все ошибки с `1`. Закрывает [#101741](https://github.com/ClickHouse/ClickHouse/issues/101741). [#102700](https://github.com/ClickHouse/ClickHouse/pull/102700) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлена потеря HTTP-заголовков в обработчиках динамических/предопределённых запросов. Закрывает [#101846](https://github.com/ClickHouse/ClickHouse/issues/101846). [#102706](https://github.com/ClickHouse/ClickHouse/pull/102706) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Добавлена поправка на пуассоновское сэмплирование для свёрнутых профилей кучи jemalloc, чтобы привести их в соответствие с выводом jeprof. Ранее свёрнутый формат занижал фактические объёмы выделения памяти, поскольку не учитывал вероятность сэмплирования. [#102759](https://github.com/ClickHouse/ClickHouse/pull/102759) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен сбой в функции `hasPhrase` при аргументе `NULL`. [#102802](https://github.com/ClickHouse/ClickHouse/pull/102802) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлен сбой сервера (SIGSEGV) при чтении файлов Avro с рекурсивными схемами, содержащими циклические символьные ссылки на типы. Теперь такие схемы выявляются и отклоняются с понятным сообщением об ошибке, а не приводят к аварийному завершению. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера (assertion `LOGICAL&#95;ERROR`), возникавший, когда функция, применяемая к столбцу `Variant`, достигала лимита памяти или вызывала другое исключение, не связанное с преобразованием типов, при приведении результата в `FunctionVariantAdaptor`. Теперь исключение корректно пробрасывается, а не ошибочно классифицируется как внутренняя ошибка. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
* Исправлен сбой сервера в отладочных сборках и сборках с sanitizer при возникновении `std::length_error` во время автоматического определения схемы (например, из-за экстремальных значений `input_format_msgpack_number_of_columns` или некорректных входных данных). [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
* Исправлено представление null при сериализации реплицируемых и разреженных столбцов: теперь оно учитывает настройки (например, format\_tsv\_null\_representation). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).
* Бэкпортировано в [#103499](https://github.com/ClickHouse/ClickHouse/issues/103499): исправлена проблема, из-за которой запросы к S3 завершались ошибкой `ios_base::clear: unspecified iostream_category error` вместо повторной попытки; причина была в том, что Poco `BufferedStreamBuf::flushBuffer` не обрабатывал короткие записи на уровне socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлена ошибка, из-за которой оптимизации `minmax_count_projection` и тривиального `COUNT(*)` навсегда отключались после легковесного удаления, даже если все части с маской легковесного удаления уже были слиты. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлены случайные падения jemalloc из-за LTO. [#102913](https://github.com/ClickHouse/ClickHouse/pull/102913) ([Azat Khuzhin](https://github.com/azat)).
* Оптимизировано преобразование OR-цепочек в IN в политиках доступа к строкам в новом анализаторе. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено повреждение метаданных jemalloc, вызванное освобождением кэша страниц с неправильным выравниванием, что могло приводить к аварийным завершениям. [#102918](https://github.com/ClickHouse/ClickHouse/pull/102918) ([Azat Khuzhin](https://github.com/azat)).
* Обычные INSERT без materialized view больше не запрашивают чрезмерное количество слотов ConcurrencyControl и потоков (`max_threads` вместо `max_insert_threads`), что предотвращает дефицит слотов CC и лавинообразный рост числа потоков в кластерах с высокой пропускной способностью INSERT. [#102961](https://github.com/ClickHouse/ClickHouse/pull/102961) ([Sema Checherinda](https://github.com/CheSema)).
* Повторно введён ArrowMemoryPool, чтобы можно было сгенерировать MEMORY\_LIMIT\_EXCEEDED и избежать OOM ядра. [#102999](https://github.com/ClickHouse/ClickHouse/pull/102999) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено игнорирование `cast_string_to_date_time_mode` при `CAST` в `Nullable(DateTime)`. Закрывает [#101840](https://github.com/ClickHouse/ClickHouse/issues/101840). [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлена поддержка столбцов `ALIAS` в оптимизации прямого чтения текстового индекса. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).
* Бэкпортировано в [#103454](https://github.com/ClickHouse/ClickHouse/issues/103454): исправлена ошибка, из-за которой `SELECT DISTINCT` незаметно возвращал неполные результаты, когда агрегатная проекция соответствовала запросу, а у некоторых частей таблицы отсутствовали данные проекции (например, если проекцию добавили в таблицу, в которой уже были данные, и `MATERIALIZE PROJECTION` не запускали). Закрывает [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлены неверные результаты, возвращаемые `WHERE x AND toNullable(N)` в таблицах `MergeTree`, когда `N` — целое число шире `UInt8` (например, `256`, `65535`, `2147483648` или любое отрицательное целое число). Фильтр ошибочно отбрасывал все строки, потому что `splitFilterNodeForAllowedInputs` использовал нулевой `NULL` при преобразовании `Nullable`-остатка сокращённого `AND` в булевый тип, из-за чего сравнение превращалось в `NULL` в рамках трёхзначной логики. [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).
* Исправлено некорректное указание типа аргумента в сообщениях об ошибках функций поиска в строках (например, `locate`, `position`), когда аргументы передаются в обратном порядке (`locate(needle, haystack)` при `function_locate_has_mysql_compatible_argument_order = 1`). [#103102](https://github.com/ClickHouse/ClickHouse/pull/103102) ([Alex Kuleshov](https://github.com/0xAX)).
* Исправлено зависание waitForPause на неопределённое время, когда disableFailPoint вызывается, а ни один поток не приостановлен в failpoint. [#103119](https://github.com/ClickHouse/ClickHouse/pull/103119) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Ограничен размер строк в TCP-пакете Hello до аутентификации до 64 КБ и добавлена настройка сервера `handshake_timeout_milliseconds`, чтобы ограничить общее время рукопожатия и не позволить неаутентифицированным клиентам потреблять чрезмерный объём памяти или удерживать потоки сколь угодно долго. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлена ошибка в статистике min\_value > max\_value в Parquet ColumnIndex для столбцов String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* Проверка некорректно сформированных уплощённых данных Dynamic в формате Native. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* Заполнение столбца `_time` данными из табличной функции `url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлено определение SVE: инструкции SVE больше не используются, если они недоступны. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* Зависимость Libstemmer (Snowball) теперь использует более новую версию — v3.0.1. [#99256](https://github.com/ClickHouse/ClickHouse/pull/99256) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Рандомизированы настройки в clickhouse-test: `use_skip_indexes_for_top_k`, `use_top_k_dynamic_filtering`, `query_plan_max_limit_for_top_k_optimization`. [#91782](https://github.com/ClickHouse/ClickHouse/pull/91782) ([Nikita Fomichev](https://github.com/fm4v)).
* Реализован стресс-тест для функций, проверяющий корректность различных свойств функций. [#93543](https://github.com/ClickHouse/ClickHouse/pull/93543) ([Michael Kolupaev](https://github.com/al13n321)).
* Добавлена собственная конфигурация CMake для `llvm-project` вместо импорта конфигурации из upstream. [#97453](https://github.com/ClickHouse/ClickHouse/pull/97453) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* В тестовой инфраструктуре сделали более случайными настройки `optimize_*`, чтобы улучшить покрытие этапов оптимизации запросов. [#97547](https://github.com/ClickHouse/ClickHouse/pull/97547) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Используйте тулчейн Rust nightly-2026-03-22. [#98602](https://github.com/ClickHouse/ClickHouse/pull/98602) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `wasmtime` v42.0.1. [#98603](https://github.com/ClickHouse/ClickHouse/pull/98603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Использование `llvm-project` 22.1.1. [#98882](https://github.com/ClickHouse/ClickHouse/pull/98882) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Заменили `SANITIZE_COVERAGE` (пользовательские обратные вызовы sanitizer, гранулярность на уровне символов) на покрытие на основе исходного кода LLVM (`WITH_COVERAGE`, `-fprofile-instr-generate -fcoverage-mapping`) для ночного конвейера покрытия по отдельным тестам. Теперь сервер при запуске считывает собственную карту покрытия из секций ELF и собирает кортежи `(file, line_start, line_end)` для каждого теста через новую команду `SYSTEM SET COVERAGE TEST 'name'`. Выбор тестов в таргетированных CI-проверках использует запросы по диапазонам строк к новой таблице CIDB `checks_coverage_lines` и ранжирует тесты-кандидаты по числу покрываемых ими изменённых строк в diff. [#99513](https://github.com/ClickHouse/ClickHouse/pull/99513) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлена ошибка линковки llvm-libc в сборке с -O0. [#100023](https://github.com/ClickHouse/ClickHouse/pull/100023) ([Zheguang Zhao](https://github.com/zheguang)).
* Исправлены два сообщения об ошибках при запуске контейнера, если в конфигурации отсутствовали параметры `logger.log` и `logger.errorlog` (например, когда все сообщения лога должны выводиться в STDOUT/STDERR). [#100239](https://github.com/ClickHouse/ClickHouse/pull/100239) ([Simon](https://github.com/simonhammes)).
* Предпочтительнее использовать `ld64.lld` вместо `ld` от Apple (cctools-port ld64) для сборок macOS. Это должно значительно сократить время компоновки на Darwin, поскольку `ld64` из cctools-port работает очень медленно с `-ffunction-sections` и `-dead_strip`. Если `ld64.lld` недоступен, используется `ld`. [#100275](https://github.com/ClickHouse/ClickHouse/pull/100275) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Тесты, гарантирующие, что в каталогах не обнаруживаются никакие секретные данные (REST + Glue). [#100307](https://github.com/ClickHouse/ClickHouse/pull/100307) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Повторное выполнение недавно изменённых тестов с разными случайными настройками. [#100385](https://github.com/ClickHouse/ClickHouse/pull/100385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Отслеживание зависимостей файлов `#embed` в CMake и включение режима depend в ccache для корректной пересборки. [#100411](https://github.com/ClickHouse/ClickHouse/pull/100411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлены тесты на корректность для запросов TPC-H. [#100580](https://github.com/ClickHouse/ClickHouse/pull/100580) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Используется `aws-sdk-cpp` 1.11.771. [#100582](https://github.com/ClickHouse/ClickHouse/pull/100582) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* XML-файлы тестов производительности теперь могут ссылаться на внешние файлы SQL-запросов и настройки через атрибут file. [#100747](https://github.com/ClickHouse/ClickHouse/pull/100747) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлена компиляция с `-march=x86-64-v4`: в `LowerUpperImpl.h` добавлен отсутствующий include `TargetSpecific.h`. [#100932](https://github.com/ClickHouse/ClickHouse/pull/100932) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена сборка на Gentoo за счёт добавления --no-default-config в cxxflags. [#100973](https://github.com/ClickHouse/ClickHouse/pull/100973) ([Isak Ellmer](https://github.com/spinojara)).
* Добавлен `utils/auto-bisect/` — shell-фреймворк для бисекции, который загружает готовые бинарные файлы CI и запускает пользовательский тестовый скрипт, чтобы найти первый коммит, в котором появилась регрессия, без необходимости локальной сборки. [#100989](https://github.com/ClickHouse/ClickHouse/pull/100989) ([Nikita Fomichev](https://github.com/fm4v)).
* ThinLTO в CMake теперь по умолчанию отключён, чтобы в локальных сборках разработчиков он больше не включался неявно. Это не влияет на релизные сборки CI, поскольку в них параметр `-DENABLE_THINLTO=1` передаётся явно. [#101041](https://github.com/ClickHouse/ClickHouse/pull/101041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В набор тестов производительности добавлен бенчмарк TPC-DS SF1. [#101209](https://github.com/ClickHouse/ClickHouse/pull/101209) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавлены тесты без сохранения состояния для легковесных удалений в MergeTree, охватывающие: жизненный цикл флага `has_lightweight_delete`, корректность `COUNT(*)` с `optimize_trivial_count_query`, целостность столбцов `MATERIALIZED`/`DEFAULT`, восстановление флага в `ReplicatedMergeTree`, `read_in_order` с удалёнными строками, несколько циклов удаления и слияния, скрытие столбца `_row_exists`, различные предикаты и применение RBAC к `ALTER DELETE`. [#101792](https://github.com/ClickHouse/ClickHouse/pull/101792) ([Nikita Fomichev](https://github.com/fm4v)).
* Теперь для тегированных релизов публикуются distroless Docker-образы в вариантах ubuntu и alpine. [#101941](https://github.com/ClickHouse/ClickHouse/pull/101941) ([Rahul Nair](https://github.com/motsc)).
* Трассировки стека теперь показывают чистые относительные пути (например, `src/Common/Exception.cpp`) вместо путей, засорённых каталогом сборки (например, `./ci/tmp/fast_build/./src/Common/Exception.cpp`). [#102000](https://github.com/ClickHouse/ClickHouse/pull/102000) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена проверка стиля CI, отклоняющая файлы размером более 5 МБ, закоммиченные в репозиторий, со списком разрешённых исключений для существующих корректных тестовых данных. Удалён неиспользуемый файл `zookeeper_log.parquet` размером 14 МБ. [#102080](https://github.com/ClickHouse/ClickHouse/pull/102080) ([Raúl Marín](https://github.com/Algunenano)).
* Удалено \~400 неиспользуемых директив `#include` из заголовочных файлов, что сокращает время компиляции. [#102585](https://github.com/ClickHouse/ClickHouse/pull/102585) ([Raúl Marín](https://github.com/Algunenano)).
* Используется `wasmtime` v43.0.1. [#102603](https://github.com/ClickHouse/ClickHouse/pull/102603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `openssl` 3.5.6. [#102606](https://github.com/ClickHouse/ClickHouse/pull/102606) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используйте `xz` 5.8.3. [#102607](https://github.com/ClickHouse/ClickHouse/pull/102607) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Базовый distroless Docker-образ обновлён с Debian 12 (glibc 2.36, OpenSSL 3.0) до Debian 13 (glibc 2.41, OpenSSL 3.5), что свело поверхность CVE к нулю достижимых уязвимостей. [#101678](https://github.com/ClickHouse/ClickHouse/pull/101678) ([Rahul Nair](https://github.com/motsc)).

<div id="263">
  ### Релиз ClickHouse 26.3 LTS, 2026-03-26. [Презентация](https://presentations.clickhouse.com/), [Видео](https://www.youtube.com/watch?v=_bY0ucNB1lQ)
</div>

<div id="267-backward-incompatible-change">
  #### обратно несовместимое изменение
</div>

* Понижение версии после обновления может привести к потере данных. Версии сериализации типов данных теперь распространяются на вложенные типы данных. Например, раньше версия сериализации String `with_size_stream` применялась только к столбцам String верхнего уровня и элементам Tuple. Теперь она применяется к любому типу String внутри любого вложенного типа, такого как `Array`/`Map`/`Variant`/`JSON`/и т. д. Это поведение управляется настройкой MergeTree `propagate_types_serialization_versions_to_nested_types`, которая теперь включена по умолчанию. После этого изменения вновь созданные части данных не могут читаться старыми версиями, но старые части без проблем читаются новой версией. **Обновление безопасно, а вот понижение версии — нет: если вам потребуется откатиться после обновления до 26.3, данные, записанные версией 26.3 в столбцы с вложенными типами, будут нечитаемы!** Подробности см. в [#101429](https://github.com/ClickHouse/ClickHouse/issues/101429). [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* Удалён тип индекса пропуска данных `hypothesis`. Это была малоизвестная экспериментальная возможность с ограниченной практической ценностью. При создании таблиц с `INDEX ... TYPE hypothesis` теперь будет возникать ошибка. [#96874](https://github.com/ClickHouse/ClickHouse/pull/96874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалена экспериментальная функция `detectProgrammingLanguage`. [#99567](https://github.com/ClickHouse/ClickHouse/pull/99567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен приоритет оператора `NOT` в соответствии со стандартом SQL: теперь `NOT` имеет более низкий приоритет, чем `IS NULL`, `BETWEEN`, `LIKE` и арифметические операторы. Например, `NOT (x) IS NULL` теперь разбирается как `NOT (x IS NULL)`, а не как `(NOT x) IS NULL`. Это может изменить результат запросов, которые зависели от прежнего (нестандартного) поведения. [#97680](https://github.com/ClickHouse/ClickHouse/pull/97680) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправляет метаданные обычных проекций, чтобы проекции с ключами сортировки по нескольким столбцам распознавались корректно. Основано на [#90429](https://github.com/ClickHouse/ClickHouse/issues/90429). [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* Исправлены файлы индекса пропуска данных, которые не учитывали настройку replace\_long\_file\_name\_to\_hash, из-за чего возникали ошибки "Имя файла слишком длинное" и нарушалось чтение индексов с длинными именами. Теперь имена файлов индекса пропуска данных хешируются, если они превышают max\_file\_name\_length, аналогично файлам столбцов. Изменение обратно совместимо (новые серверы читают старые части), но при откате версии (или если во время rolling-обновления используются старые серверы) индексы с длинными именами могут игнорироваться. [#97128](https://github.com/ClickHouse/ClickHouse/pull/97128) ([Raúl Marín](https://github.com/Algunenano)).
* async insert теперь включён по умолчанию. Теперь ClickHouse по умолчанию будет объединять все небольшие вставки в батчи. Этот параметр задаётся через compatibility. Если установить `compatibility=<version less than 26.2>`, то значением по умолчанию останется прежнее — `false`. Вы можете включать и отключать async inserts на нескольких уровнях: в конфигурации профилей пользователей, для сеанса, для запроса или для таблицы семейства MergeTree. [#97590](https://github.com/ClickHouse/ClickHouse/pull/97590) ([Sema Checherinda](https://github.com/CheSema)).
* Изменено значение `mysql_datatypes_support_level` по умолчанию: вместо пустого теперь используется `decimal,datetime64,date2Date32`, что по умолчанию обеспечивает корректное сопоставление MySQL `DATE` с `Date32`, `DECIMAL`/`NUMERIC` — с `Decimal`, а `DATETIME`/`TIMESTAMP` с точностью — с `DateTime64`. Ранее столбцы MySQL `DATE` сопоставлялись с `Date`, который не может представлять даты до 1970-01-01, что приводило к повреждению данных. [#97716](https://github.com/ClickHouse/ClickHouse/pull/97716) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Поддержка массива имён частей вместо regexp для `mergeTreeAnalyzeIndexes{,UUID}`, поскольку regexp работает медленно (*экспериментальная возможность*). [#98474](https://github.com/ClickHouse/ClickHouse/pull/98474) ([Azat Khuzhin](https://github.com/azat)).
* Изменено значение `stderr_reaction` по умолчанию с `throw` на `log_last` для исполняемых UDF. UDF, записывающие предупреждения в stderr, больше не завершаются с ошибкой, если код выхода равен 0. Исключения, связанные с кодом выхода, теперь включают содержимое stderr. [#99232](https://github.com/ClickHouse/ClickHouse/pull/99232) ([Xu Jia](https://github.com/XuJia0210)).

<div id="267-new-feature">
  #### Новая возможность
</div>

* Добавлена сериализация Map по бакетам для столбцов Map в MergeTree (`map_serialization_version = 'with_buckets'`). Ключи распределяются по бакетам на основе хеша, так что при чтении одного ключа (`m['key']`) считывается только один бакет, а не весь столбец, что дает ускорение в 2–49 раз для lookup по одному ключу в зависимости от размера Map. Количество бакетов и стратегию бакетирования можно настраивать с помощью новых настроек MergeTree: `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient` и `map_buckets_min_avg_size`. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлена поддержка материализованных CTE. Это позволяет вычислять CTE только один раз во время выполнения запроса и сохранять их результаты во временных таблицах. Закрывает [#53449](https://github.com/ClickHouse/ClickHouse/issues/53449). [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* Разрешена поддержка некоторых стандартных SQL-функций без скобок для совместимости, например `NOW`. Закрывает [#52102](https://github.com/ClickHouse/ClickHouse/issues/52102). [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* Теперь функцию natural sort key можно использовать как `naturalSortKey(s)`. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Теперь для функций JSONExtract можно использовать нативный ввод JSON/Object. Закрывает [#88370](https://github.com/ClickHouse/ClickHouse/issues/88370). [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Если параметр запроса имеет тип `Nullable` и не задан, мы будем считать, что его значение — `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* Добавлена поддержка дополнительного ZooKeeper для базы данных `Replicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Поддержка функции `has` для типа JSON, чтобы проверять существование пути, аналогично Map. [#96927](https://github.com/ClickHouse/ClickHouse/pull/96927) ([DQ](https://github.com/il9ue)).
* Добавлена табличная функция `mergeTreeTextIndex(database, table, index)`, которая позволяет читать данные напрямую из текстового индекса. Эту функцию можно использовать для интроспекции или выполнения агрегаций на основе данных текстового индекса. [#97003](https://github.com/ClickHouse/ClickHouse/pull/97003) ([Anton Popov](https://github.com/CurtizJ)).
* Добавлена настройка MergeTree `table_readonly`, позволяющая помечать таблицы как только для чтения, чтобы предотвратить вставку и другие изменения. [#97652](https://github.com/ClickHouse/ClickHouse/pull/97652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая настройка `use_partition_pruning` и алиас `use_partition_key`. Установите значение `false`, чтобы отключить отсечение партиций по ключу партиционирования. [#97888](https://github.com/ClickHouse/ClickHouse/pull/97888) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Реализована поддержка `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` для таблиц Iceberg. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)). [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130)
* Для каждой записи `type=http` в `<protocols>` теперь можно указать пользовательский ключ `<handlers>`, указывающий на отдельный раздел config `<http_handlers_*>`, что позволяет задавать разные правила HTTP-маршрутизации для разных портов. [#98414](https://github.com/ClickHouse/ClickHouse/pull/98414) ([Amos Bird](https://github.com/amosbird)).
* Добавлена опция `pretty=1` в `EXPLAIN` для вывода в виде дерева с отступами, а также `compact=1` для сворачивания шагов `Expression`, что делает планы запросов более читаемыми. [#98500](https://github.com/ClickHouse/ClickHouse/pull/98500) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Добавлена настройка сервера `restore_access_entities_with_current_grants`. Когда она включена, у пользователей/ролей, восстанавливаемых из резервных копий, привилегии ограничиваются тем, какие привилегии пользователь, выполняющий восстановление, имеет право выдавать (та же семантика, что и у `GRANT CURRENT GRANTS`), вместо завершения с ошибкой `ACCESS_DENIED`. [#98795](https://github.com/ClickHouse/ClickHouse/pull/98795) ([pufit](https://github.com/pufit)).
* Добавлены функции `caseFoldUTF8` и `removeDiacriticsUTF8` для свёртки регистра Unicode и удаления диакритических знаков. [#98973](https://github.com/ClickHouse/ClickHouse/pull/98973) ([George Larionov](https://github.com/george-larionov)).
* Добавлена строковая функция `normalizeUTF8NFKCCasefold` для Unicode-нормализации NFKC\_Casefold, которая сочетает нормализацию NFKC со свёрткой регистра. [#99276](https://github.com/ClickHouse/ClickHouse/pull/99276) ([George Larionov](https://github.com/george-larionov)).
* Добавлен токенизатор `unicode_word` для полнотекстовых индексов и функции `tokens`. Он разбивает текст по правилам границ слов Unicode: ASCII-слова могут включать символы-соединители (подчёркивание, двоеточие, точка, одинарная кавычка), а символы Unicode вне ASCII становятся односимвольными токенами. Примечание: в версии 26.3 этот токенизатор принимается только под именем `unicode_word`; в версии 26.4 он был переименован в `asciiCJK`. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* Добавлены настройки `max_skip_unavailable_shards_num` и `max_skip_unavailable_shards_ratio`, чтобы ограничить число сегментов, которые можно незаметно пропустить, когда включен `skip_unavailable_shards`. Если число или доля недоступных сегментов превышает заданный порог, генерируется исключение вместо молчаливого возврата неполных результатов. [#99369](https://github.com/ClickHouse/ClickHouse/pull/99369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь можно использовать ключевое слово `SOME` в выражениях с подзапросами. Оно работает так же, как `ANY`. [#99842](https://github.com/ClickHouse/ClickHouse/pull/99842) ([Artem Kytkin](https://github.com/Vinceent)).
* Добавлена настройка `output_format_trim_fixed_string`, которая удаляет завершающие null-байты из значений `FixedString` в текстовых форматах вывода. [#97558](https://github.com/ClickHouse/ClickHouse/pull/97558) ([NeedmeFordev](https://github.com/spider-yamet)).
* Добавлена поддержка заключённых в скобки выражений JOIN таблиц в предложении FROM, например `SELECT * FROM (t1 CROSS JOIN t2)`. [#97650](https://github.com/ClickHouse/ClickHouse/pull/97650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Реализована функция `toDaysInMonth`: она возвращает количество дней в месяце для указанной даты. [#99227](https://github.com/ClickHouse/ClickHouse/pull/99227) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Добавлена экспериментальная поддержка пользовательских функций (UDF) на базе WebAssembly, позволяющая реализовывать пользовательскую логику функций в WebAssembly и выполнять её внутри ClickHouse. Отдельная благодарность [Alexey Smirnov](https://github.com/lioshik) за вклад в поддержку бэкенда Wasmtime. [#88747](https://github.com/ClickHouse/ClickHouse/pull/88747) ([Vladimir Cherkasov](https://github.com/vdimir)). Инкрементальные улучшения поддержки WASM UDF. [#99373](https://github.com/ClickHouse/ClickHouse/pull/99373) ([Vasily Chekalkin](https://github.com/bacek)).
* Добавлена поддержка внешних SQL-диалектов с использованием библиотеки `polyglot`. [#99496](https://github.com/ClickHouse/ClickHouse/pull/99496) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен кодек сжатия чисел с плавающей точкой `ALP` (без fallback-механизма ALP\_rd для несжимаемых значений double). [#91362](https://github.com/ClickHouse/ClickHouse/pull/91362) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Добавлены экспериментальные ленивые подсказки типов для столбцов `JSON`. При включении через `allow_experimental_json_lazy_type_hints` команда `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)`, которая только добавляет или изменяет подсказки типов, выполняется мгновенно как операция, затрагивающая только метаданные, без перезаписи исторических данных. Подсказки типов применяются во время выполнения запроса для старых частей и материализуются во время INSERT и фоновых слияний. [#97412](https://github.com/ClickHouse/ClickHouse/pull/97412) ([tanner-bruce](https://github.com/tanner-bruce)).
* Включено параллельное чтение из движка таблицы YTsaurus. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* Повышена производительность озер данных. В предыдущих версиях при чтении из объектного хранилища конвейер не масштабировался по числу потоков обработки. Это дает прирост производительности на порядки (\~40x) на многоядерных машинах. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь связь между `enable_parallel_replicas` и `automatic_parallel_replicas_mode` такова. Запрос может использовать параллельные реплики, только если `enable_parallel_replicas > 0`. Кроме того, если `automatic_parallel_replicas_mode=1`, решение о том, использовать ли параллельные реплики, принимается на этапе планирования на основе ранее собранной статистики. Если `automatic_parallel_replicas_mode=0`, параллельные реплики будут использоваться для всех поддерживаемых запросов независимо от наличия статистики. Одно из заметных исключений — распределённый insert-select с параллельными репликами: в этом случае запросы всегда будут выполняться так, как если бы `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* Разрешено отсечение партиций, если предикат содержит любой оператор сравнения (`=`, `<`, `>`, `!=`), а ключ партиционирования обёрнут в детерминированную цепочку функций (например, при `PARTITION BY x` предикаты вида `cityHash64(x) % 5 > 2`, `toYYYYMM(x) < 2026`, `toYYYYMM(x) = 2026` или `toYYYYMM(x) != 2026` будут использовать ключ партиционирования для отсечения). Закрывает [#28800](https://github.com/ClickHouse/ClickHouse/issues/28800). [#98432](https://github.com/ClickHouse/ClickHouse/pull/98432) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Разрешена оптимизация чтения в порядке сортировки и отсечение по первичному ключу, если целевой тип `CAST` — `Nullable`, а преобразование монотонно; например, при `PRIMARY KEY x` ClickHouse может использовать оптимизацию чтения в порядке сортировки для `ORDER BY x::Nullable(UInt64)` и отсечение по первичному ключу для таких предикатов, как `WHERE x::Nullable(UInt64) > 500000`. [#98482](https://github.com/ClickHouse/ClickHouse/pull/98482) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Теперь поддерживаются отсечение по индексу и pushdown фильтров, когда целочисленный столбец сравнивается с литералом с плавающей запятой; например, предикаты вида `WHERE x < 10.5` теперь могут использовать первичный ключ для отсечения, а фильтры вроде `prime < 1e9` или `number < 1e5` теперь проталкиваются в табличные функции `primes()` и `numbers()` вместо того, чтобы приводить к неограниченному выполнению. Закрывает [#85167](https://github.com/ClickHouse/ClickHouse/issues/85167). [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлен новый SLRU-кэш для метаданных Parquet, который повышает производительность чтения, устраняя необходимость повторно загружать файлы только для чтения метаданных. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Добавлена возможность менять местами стороны ANTI-, SEMI- и FULL JOIN на основе статистики оптимизатора. [#97498](https://github.com/ClickHouse/ClickHouse/pull/97498) ([Hechem Selmi](https://github.com/m-selmi)).
* Оптимизирован пропуск гранул для `pointInPolygon` при работе с большими полигонами, а также исправлена ошибка, из-за которой анализ индекса `pointInPolygon` генерировал исключение при отсечении по первичному ключу. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Повышена производительность функции `levenshteinDistance`. [#94543](https://github.com/ClickHouse/ClickHouse/pull/94543) ([Joanna Hulboj](https://github.com/jh0x)).
* Оптимизировано преобразование батчей типа Decimal за счёт отказа от вызовов функций для каждого элемента. [#95923](https://github.com/ClickHouse/ClickHouse/pull/95923) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Таблицы Iceberg теперь поддерживают асинхронную предзагрузку metadata через настройку таблицы `iceberg_metadata_async_prefetch_period_ms`, которая периодически заранее заполняет кэш metadata. Кроме того, настройка запроса `iceberg_metadata_staleness_ms` позволяет запросам SELECT использовать кэшированные metadata, если они не старше указанного порога устаревания, что исключает обращения к каталогу Iceberg при обработке запроса. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* `S3Queue` в режиме ordered использует S3 ListObjectsV2 StartAfter, чтобы не выполнять повторный вывод всей истории префикса, уменьшая число вызовов ListObjects. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata  Vineel ](https://github.com/vyalamar)).
* Снижено использование памяти при дедупликации вставок. В общем случае для дедупликации нужен исходный блок, но для sync insert можно обойтись без него и тем самым заметно сократить расход памяти. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* Использовать зависящее от архитектуры значение размера строки кэша вместо жёстко заданного значения 64. [#97357](https://github.com/ClickHouse/ClickHouse/pull/97357) ([Nikita Taranov](https://github.com/nickitat)).
* Незначительно оптимизировано чтение из словаря текстового индекса, что повысило общую производительность анализа текстового индекса. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* Ускорена декомпрессия `LZ4` для 16-байтных блоков на ARM. [#97774](https://github.com/ClickHouse/ClickHouse/pull/97774) ([Raúl Marín](https://github.com/Algunenano)).
* Переработана токенизация: добавлен новый высокопроизводительный интерфейс, заменяющий старый API в стиле итератора, с поддержкой SIMD и токенизаторов с сохранением состояния. Часть [#90268](https://github.com/ClickHouse/ClickHouse/issues/90268). [#97871](https://github.com/ClickHouse/ClickHouse/pull/97871) ([Amos Bird](https://github.com/amosbird)).
* Повышена производительность анализа текстового индекса для запросов с составными условиями, включающими как индексированные, так и неиндексированные столбцы. Ранее в таких случаях оптимизация раннего выхода при анализе индекса была ошибочно отключена. [#98096](https://github.com/ClickHouse/ClickHouse/pull/98096) ([Anton Popov](https://github.com/CurtizJ)).
* Повышена производительность запросов с константными выражениями, генерирующими очень длинные массивы или значения типа Map. [#98287](https://github.com/ClickHouse/ClickHouse/pull/98287) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен анализ условий ключа для `DateTime64` в первичных ключах при сравнении с целочисленными константами, из-за чего ранее не выполнялось отсечение гранул. [#98410](https://github.com/ClickHouse/ClickHouse/pull/98410) ([Amos Bird](https://github.com/amosbird)).
* Параметр `optimize_syntax_fuse_functions` по умолчанию включён. [#98424](https://github.com/ClickHouse/ClickHouse/pull/98424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Оптимизирована агрегатная функция `avgWeighted`: использование локальных аккумуляторов вместо построчной передачи через агрегатное состояние повышает производительность до 27% для входных данных типа Nullable. [#98793](https://github.com/ClickHouse/ClickHouse/pull/98793) ([Antonio Andelic](https://github.com/antonio2368)).
* Повышает производительность и снижает использование памяти для параллельных оконных функций в некоторых сценариях, а также для рабочих нагрузок `arrayFold` с большими массивами. Это также может уменьшить давление page fault и повысить стабильность затронутых запросов при жёстких ограничениях по памяти. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).
* Повышена производительность слияний с сортировкой. [#99013](https://github.com/ClickHouse/ClickHouse/pull/99013) ([Artem Zuikov](https://github.com/4ertus2)).
* Оптимизация `INTERSECT ALL` и `EXCEPT ALL`. [#99097](https://github.com/ClickHouse/ClickHouse/pull/99097) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавлена поддержка оптимизации `read_in_order_use_virtual_row` для чтения в обратном порядке. [#99198](https://github.com/ClickHouse/ClickHouse/pull/99198) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Снижена конкуренция за кэш в `RIGHT` и `FULL` JOIN-ах за счёт проверки того, установлен ли JoinUsedFlags, перед записью. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* Оптимизирован `PrefetchingHelper::calcPrefetchLookAhead` за счёт замены вычислений с плавающей запятой на чисто целочисленную арифметику, что улучшает размещение в кэше инструкций и снижает накладные расходы в циклах агрегации. [#99327](https://github.com/ClickHouse/ClickHouse/pull/99327) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Снижено потребление памяти в Keeper за счёт замены `absl::flat_hash_set` на `CompactChildrenSet` для хранения дочерних узлов. Новый контейнер хранит 0–1 дочерний узел inline, без выделения памяти в куче, что характерно для большинства узлов Keeper. Это уменьшает размер `KeeperMemNode` со 144 до 128 байт. [#99860](https://github.com/ClickHouse/ClickHouse/pull/99860) ([Antonio Andelic](https://github.com/antonio2368)).
* Агрегатные проекции теперь корректно поддерживаются в представлениях. Исправлено [#32753](https://github.com/ClickHouse/ClickHouse/issues/32753). [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* Реализована оптимизация преобразования OUTER JOIN в INNER JOIN при использовании `join_use_nulls`. Закрывает [#90978](https://github.com/ClickHouse/ClickHouse/issues/90978). [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Улучшено чтение подстолбцов благодаря корректному вычислению размеров перед чтением. Это снижает использование памяти и ускоряет чтение подстолбцов. [#96251](https://github.com/ClickHouse/ClickHouse/pull/96251) ([Pavel Kruglov](https://github.com/Avogar)).
* Кэши меток, несжатых данных и страниц переведены на использование отдельной arena jemalloc, чтобы избежать фрагментации памяти, когда кратковременные выделения памяти, например для queries и HTTP-запросов, смешиваются с более долгоживущими выделениями для кэшей. [#96812](https://github.com/ClickHouse/ClickHouse/pull/96812) ([Seva Potapov](https://github.com/seva-potapov)). [#98812](https://github.com/ClickHouse/ClickHouse/pull/98812). [#99021](https://github.com/ClickHouse/ClickHouse/pull/99021)
* Таблицы с правилами `DELETE TTL` теперь могут использовать алгоритм Вертикального слияния. [#97332](https://github.com/ClickHouse/ClickHouse/pull/97332) ([murphy-4o](https://github.com/murphy-4o)).
* Индексы пропуска данных теперь применяются при распределённом анализе индексов. [#97767](https://github.com/ClickHouse/ClickHouse/pull/97767) ([Azat Khuzhin](https://github.com/azat)).
* Метки вторичных индексов теперь заранее прогреваются, если включена настройка `prewarm_mark_cache` (они загружаются в кэш меток индекса во время получения частей данных и при запуске таблицы). [#97772](https://github.com/ClickHouse/ClickHouse/pull/97772) ([Anton Popov](https://github.com/CurtizJ)).
* Снижено число блокировок при управлении доступом. [#97894](https://github.com/ClickHouse/ClickHouse/pull/97894) ([Nikita Taranov](https://github.com/nickitat)).
* Если включен apply\_row\_policy\_after\_final или apply\_prewhere\_after\_final, составные условия с AND в политиках строкового доступа и PREWHERE теперь раскладываются так, чтобы извлекать атомарные условия по ключу сортировки для анализа индекса первичного ключа. Ранее, если отложенный фильтр содержал смесь предикатов по ключу сортировки и не по ключу сортировки (например, x > 1 AND y != 'foo'), всё выражение исключалось из анализа индекса. Теперь атомарные условия по ключу сортировки (например, x > 1) извлекаются и используются для отсечения гранул, в том числе из вложенных выражений с AND. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Уменьшена конкуренция за блокировку в MergeTreeBackgroundExecutor за счёт освобождения ресурсов задачи без захвата блокировки. Закрывает [#93620](https://github.com/ClickHouse/ClickHouse/issues/93620). [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* Исправлено чрезмерное использование памяти (\~514 MiB) при автоопределении формата во время чтения данных не в формате Arrow (например, JSON из `url` или `file` без явно указанного формата), вызванное тем, что средство чтения ArrowStream ошибочно интерпретировало первые байты как чрезмерно большую длину metadata. [#98893](https://github.com/ClickHouse/ClickHouse/pull/98893) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="267-improvement">
  #### Улучшения
</div>

* Добавлена возможность разбирать файлы GeoParquet, содержащие разные типы Geo в одном и том же столбце. [#97851](https://github.com/ClickHouse/ClickHouse/pull/97851) ([Mark Needham](https://github.com/mneedham)).
* Добавлена SQL-функция `tokensForLikePattern`, которая разбивает шаблоны LIKE на токены с учетом семантики подстановочных символов: `%` и `_` трактуются как подстановочные символы, экранированные подстановочные символы (`\%`, `\_`) трактуются как литералы, а токены, примыкающие к неэкранированным подстановочным символам, отбрасываются. [#97872](https://github.com/ClickHouse/ClickHouse/pull/97872) ([Amos Bird](https://github.com/amosbird)).
* Добавлен заполнитель `{_schema_hash}` для движка таблицы S3, добавляющий в путь S3 хеш определений столбцов таблицы. [#98265](https://github.com/ClickHouse/ClickHouse/pull/98265) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `SymbolIndex`, `addressToSymbol`, `system.symbols` и `buildId` теперь работают в macOS благодаря разбору таблиц символов Mach-O. [#99014](https://github.com/ClickHouse/ClickHouse/pull/99014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Таблица `system.stack_trace` теперь работает в macOS, позволяя просматривать трассировки стека всех потоков сервера. [#98982](https://github.com/ClickHouse/ClickHouse/pull/98982) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена опция LDAP-конфигурации для каждого сервера `<follow_referrals>` (по умолчанию `false`), позволяющая управлять тем, переходит ли LDAP-клиент по рефералам. Отключение перехода по рефералам позволяет избежать тайм-аутов и зависаний при поиске от base DN корня домена Active Directory. Сообщения лога, связанные с рефералами, перенесены из `warn` в `trace`. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).
* Теперь в таблице query\_log в новом столбце `skip_indices` мы отслеживаем все индексы пропуска данных, которые использовались при выполнении запроса. Исправляет [#78676](https://github.com/ClickHouse/ClickHouse/issues/78676). Исходный автор — @pheepa. [#87862](https://github.com/ClickHouse/ClickHouse/pull/87862) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Подсказки ACCESS\_DENIED больше не раскрывают имена столбцов, если пользователь не может видеть все необходимые столбцы; имена базы данных/таблицы по-прежнему видны в подсказке. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* Добавлен отдельный поток очистки для MergeTree, чтобы избежать задержек очистки при высокой нагрузке на слияние. Это устраняет [#86181](https://github.com/ClickHouse/ClickHouse/issues/86181). [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* Перезагружать конфигурацию кластера, если изменились IP-адреса hostname локального сервера, а не какого-либо хоста. Исправляет [#81215](https://github.com/ClickHouse/ClickHouse/issues/81215), [#70156](https://github.com/ClickHouse/ClickHouse/issues/70156) и [#65268](https://github.com/ClickHouse/ClickHouse/issues/65268). [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* Обеспечена корректная оптимизация агрегатных функций в запросах GROUPING SETS с помощью optimize\_aggregators\_of\_group\_by\_keys. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Keeper-bench: отображать ошибки в метриках и генерировать JSON-файл с метриками для режима --input-request-log. [#95748](https://github.com/ClickHouse/ClickHouse/pull/95748) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* В CREATE USER добавлена новая клауза ROLE. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* Теперь можно задавать настройки internal\_replication для кластера, созданного с помощью базы данных Replicated. [#97228](https://github.com/ClickHouse/ClickHouse/pull/97228) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* новая настройка `allow_nullable_tuple_in_extracted_subcolumns` определяет, будут ли извлечённые подстолбцы `Tuple(...)` из `Tuple`, `Variant`, `Dynamic` и `JSON` возвращаться как `Nullable(Tuple(...))` (`NULL` для отсутствующих строк) или как `Tuple(...)` (значения кортежа по умолчанию для отсутствующих строк). По умолчанию эта настройка отключена; изменить её можно только перезапуском сервера. [#97299](https://github.com/ClickHouse/ClickHouse/pull/97299) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена информация об отложенных фильтрах в виде отдельного элемента в выводе запроса EXPLAIN (при использовании Row Policies/PREWHERE с FINAL). Связано: [#91065](https://github.com/ClickHouse/ClickHouse/pull/91065). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Параметр `type_json_allow_duplicated_key_with_literal_and_nested_object` теперь включён по умолчанию. Это позволяет избежать ошибок о дублирующихся ключах при разборе JSON, таких как `{"a" : 42, "a" : {"b" : 42}}`, которые ClickHouse может формировать из исходных JSON-данных `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* Улучшения Keeper: `find_super_nodes` — очень полезная команда для отладки неожиданного роста количества узлов в Keeper. К сожалению, если суперузлов несколько, найти больше одного почти невозможно, потому что команда навсегда зависает при обходе дочерних узлов первого найденного суперузла. Этот PR запрещает обход дочерних узлов суперузлов. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* Базовая поддержка автодополнения для `clickhouse-keeper-client`. [#97828](https://github.com/ClickHouse/ClickHouse/pull/97828) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Сбрасывать буферы асинхронного логирования при аварийном завершении. [#97836](https://github.com/ClickHouse/ClickHouse/pull/97836) ([Azat Khuzhin](https://github.com/azat)).
* Возможность impersonate теперь включена по умолчанию (см. [EXECUTE AS target\_user](https://clickhouse.com/docs/sql-reference/statements/execute_as)). [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* Улучшено прерывание запросов для движка таблицы SQLite с помощью KILL QUERY и отмены запроса (Ctrl+C) в clickhouse-client. [#97944](https://github.com/ClickHouse/ClickHouse/pull/97944) ([Roman Vasin](https://github.com/rvasin)).
* Добавлена настройка сервера `jemalloc_profiler_sampling_rate` для управления `lg_prof_sample` в jemalloc; она также доступна как асинхронная метрика `jemalloc.prof.lg_sample`. [#97945](https://github.com/ClickHouse/ClickHouse/pull/97945) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлена поддержка весов в реализации ограниченной очереди с конкурентным доступом. [#97962](https://github.com/ClickHouse/ClickHouse/pull/97962) ([Daniil Ivanik](https://github.com/divanik)).
* Добавлен `sslmode` в список допустимых ключей для источников словарей PostgreSQL. Ранее `sslmode` отсутствовал в списке допустимых значений `dictionary&#95;allowed&#95;keys` в `PostgreSQLDictionarySource.cpp`, из-за чего было невозможно настроить режим SSL для подключений словарей к PostgreSQL. В результате словари не могли подключаться к серверам PostgreSQL, где требуется SSL (например, к AWS RDS, где SSL обязателен по умолчанию), поскольку подключение не проходило согласование TLS, а сервер отклонял незашифрованный резервный вариант. [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* Показывать понятную ошибку "no such file" при передаче несуществующего пути к файлу в `clickhouse` или `clickhouse-local` вместо сбивающего с толку общего сообщения. [#98048](https://github.com/ClickHouse/ClickHouse/pull/98048) ([Raúl Marín](https://github.com/Algunenano)).
* Текстовые индексы теперь можно создавать для столбцов `Nullable([Fixed]String)` и `Array(Nullable([Fixed]String))`. [#98118](https://github.com/ClickHouse/ClickHouse/pull/98118) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Не удаляйте именованные коллекции, от которых зависят источники словарей. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* Включена поддержка алгоритма JOIN `grace_hash` для запросов с итогами. [#98144](https://github.com/ClickHouse/ClickHouse/pull/98144) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Раннее прекращение фоновых слияний при DROP DATABASE для обычного shared merge tree. [#98161](https://github.com/ClickHouse/ClickHouse/pull/98161) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Улучшена отмена запросов к MongoDB и MySQL с помощью KILL QUERY и сочетания Ctrl+C в clickhouse-client. [#98187](https://github.com/ClickHouse/ClickHouse/pull/98187) ([Roman Vasin](https://github.com/rvasin)).
* Удалён NetlinkMetricsProvider, и для сбора метрик taskstats по отдельным потокам теперь используется только procfs. Сбор через Netlink создаёт проблемы в контейнеризированных средах и сильнее ухудшает tail latency при конкуренции за ресурсы. [#98229](https://github.com/ClickHouse/ClickHouse/pull/98229) ([Amos Bird](https://github.com/amosbird)).
* Переработана обработка файлов манифеста в Iceberg, чтобы устранить проблемы с кэшированием файлов манифеста. [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* Теперь мы учитываем случаи, когда ключ сортировки таблицы может быть выражением вроде `toDate(time)`, и можем решать, не откладывать ли вычисление таких выражений, если они входят в фильтры. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена новая метрика `MaxAllocatedEphemeralLockSequentialNumber` — максимальный последовательный номер, выделенный для эфемерных lock znode в ZooKeeper. [#98243](https://github.com/ClickHouse/ClickHouse/pull/98243) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* ClickStack обновлён до версии 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* Добавлено новое событие профиля `KeeperRequestTotalWithSubrequests`, которое учитывает каждый подзапрос в составе мультизапроса отдельно, обеспечивая лучшую видимость фактической рабочей нагрузки Keeper. Существующее событие `KeeperRequestTotal` по-прежнему учитывает каждый мультизапрос как один запрос. [#98348](https://github.com/ClickHouse/ClickHouse/pull/98348) ([Antonio Andelic](https://github.com/antonio2368)).
* `SYSTEM RELOAD DICTIONARIES` теперь перезагружает словари в порядке топологической сортировки, поэтому словари, использующие другие словари в качестве источника, после перезагрузки получают актуальные данные. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Перезапускайте кеш статистики после изменения настройки MergeTree. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* Только "живые" реплики (доступные для подключения) участвуют в распределённом анализе индексов. [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена настройка `access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users` (по умолчанию отключена/разрешена), которая запрещает использовать профили настроек, заданные в конфигурации (кроме профиля `default`), для пользователей, определённых через SQL. [#98662](https://github.com/ClickHouse/ClickHouse/pull/98662) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Число узлов, используемых в автоматической эвристике параллельных реплик, теперь ограничивается фактическим числом узлов в кластере (а не только настройкой `max_parallel_replicas`). [#98668](https://github.com/ClickHouse/ClickHouse/pull/98668) ([Nikita Taranov](https://github.com/nickitat)).
* Реализованы хеджированные запросы и асинхронное чтение для распределённого анализа индексов. [#98724](https://github.com/ClickHouse/ClickHouse/pull/98724) ([Azat Khuzhin](https://github.com/azat)).
* Для десериализации бинарных состояний `AggregateFunction` теперь необходимо полностью прочитать входные данные. Если в конце присутствуют лишние байты, ClickHouse генерирует исключение вместо того, чтобы принимать некорректные данные состояния. [#98786](https://github.com/ClickHouse/ClickHouse/pull/98786) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Сделать так, чтобы TRUNCATE DATABASE поддерживал отмену запроса. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Улучшен `keeper-bench`: добавлены конвейерная обработка запросов, период прогрева, статистика по каждой операции, воспроизводимые seed и улучшенная обработка ошибок. [#98906](https://github.com/ClickHouse/ClickHouse/pull/98906) ([Antonio Andelic](https://github.com/antonio2368)).
* Поддержка предложения SAMPLE при распределённом анализе индексов. [#98931](https://github.com/ClickHouse/ClickHouse/pull/98931) ([Azat Khuzhin](https://github.com/azat)).
* Показывать заголовок диаграммы на панели мониторинга, даже если запрос возвращает пустой результат или завершается ошибкой. [#98975](https://github.com/ClickHouse/ClickHouse/pull/98975) ([Yash ](https://github.com/Onyx2406)).
* Сообщения об ошибках анализатора больше не перечисляют все столбцы таблицы (что могло приводить к исключениям размером более 150 КБ). Теперь списки столбцов ограничиваются 10 элементами. [#99002](https://github.com/ClickHouse/ClickHouse/pull/99002) ([Yash ](https://github.com/Onyx2406)).
* Корректно возвращается статистика столбцов из подзапросов с JOIN, чтобы родительский запрос мог использовать её для изменения порядка JOIN. [#99096](https://github.com/ClickHouse/ClickHouse/pull/99096) ([Alexander Gololobov](https://github.com/davenger)).
* Помечать сеанс ZooKeeper как истёкший сразу после начала финализации, а не ждать завершения потока отправки. Это позволяет другим потокам без задержки устанавливать новый сеанс. [#99102](https://github.com/ClickHouse/ClickHouse/pull/99102) ([Raúl Marín](https://github.com/Algunenano)).
* Теперь используется больше математических функций из LLVM-libc: `exp`, `exp2`, `expm1`, `fabs`, `fabsl`, `floor`, `fmodl`, `log`, `log2`, `logf`, `pow`, `scalbn`, `scalbnl`, `copysignl`, `nan`, `nanf`, `nanl` и общие константы `explogxf`. [#99118](https://github.com/ClickHouse/ClickHouse/pull/99118) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Снизили использование памяти и устранили возможное дублирование вывода в collapsed-формате `system.jemalloc_profile_text`. [#99121](https://github.com/ClickHouse/ClickHouse/pull/99121) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлен столбец `is_subrequest` в `system.aggregated_zookeeper_log`, чтобы отделить отдельные запросы от подзапросов внутри запросов Multi/MultiRead. Ранее подзапросы агрегировались в те же бакеты, что и отдельные запросы, и поскольку каждая подоперация записывалась с общей длительностью мультизапроса, средняя задержка получалась некорректной. Теперь у подзапросов нулевая задержка. [#99169](https://github.com/ClickHouse/ClickHouse/pull/99169) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Разрешена команда `ALTER TABLE MODIFY COLUMN x TTL ...` без указания типа столбца. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* Пропускаются устаревшие запросы Keeper для сеансов, которые уже отключились, что позволяет избежать лишних обменов с Raft. Число отслеживаемых завершённых сеансов ограничивается настройкой coordination `max_finished_sessions_cache_size`. [#99246](https://github.com/ClickHouse/ClickHouse/pull/99246) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлена поддержка текстового индекса, построенного на `mapValues(map)`, для оператора `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* Поддержка shell-подобного автодополнения в clickhouse keeper-client (автодополнение аргументов в кавычках, то есть `'foo ba'`, обработка экранированных аргументов, то есть `foo\ ba`, `ls` теперь выводит узлы в кавычках, если они содержат пробелы). [#99312](https://github.com/ClickHouse/ClickHouse/pull/99312) ([Azat Khuzhin](https://github.com/azat)).
* Предотвращено зависание команды Keeper `mntr` из-за конфликтов блокировок. [#99472](https://github.com/ClickHouse/ClickHouse/pull/99472) ([Antonio Andelic](https://github.com/antonio2368)).
* Снизить конкуренцию за блокировки в диспетчере Keeper, вызывая обратные вызовы и обрабатывая запросы на чтение вне области действия мьютекса, а также добавить профилированные lock guard'ы для обсервабилити. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).
* Допускается отсутствие заполнения в конце последнего блока файлов Parquet. [#99857](https://github.com/ClickHouse/ClickHouse/pull/99857) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* Исправлено сохранение целевого объекта таблицы Alias как зависимости DDL, если он указан не полностью: теперь используется база данных таблицы Alias, а не база данных сеанса. [#95175](https://github.com/ClickHouse/ClickHouse/pull/95175) ([Enric Calabuig](https://github.com/eclbg)).
* Исправлены неверный результат или исключение при чтении подстолбцов у столбцов ALIAS. [#95408](https://github.com/ClickHouse/ClickHouse/pull/95408) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено отсутствие столбца при использовании нестандартного алиаса идентификатора в JOIN со старым анализатором. Исправляет [#25594](https://github.com/ClickHouse/ClickHouse/issues/25594), [#47288](https://github.com/ClickHouse/ClickHouse/issues/47288) и [#53263](https://github.com/ClickHouse/ClickHouse/issues/53263). [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
* Исправлен сбой в функциях диалекта Kusto `bin()`, `bin_at()`, `extract()` и `indexof()`, возникавший при передаче пустых аргументов. [#95736](https://github.com/ClickHouse/ClickHouse/pull/95736) ([NeedmeFordev](https://github.com/spider-yamet)).
* Запрещает монтировать local\_object\_storage (которое используется для озёр данных поверх локальной файловой системы и, возможно, для LocalDisk) где-либо, кроме user\_files\_path, в clickhouse-client. [#96201](https://github.com/ClickHouse/ClickHouse/pull/96201) ([Daniil Ivanik](https://github.com/divanik)).
* В движке таблицы `DeltaLake` исправлена логическая гонка при смене версии снимка и устранены избыточные ресурсоёмкие перезагрузки снимка. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена логическая ошибка при присоединении части в MergeTree, если между её отсоединением и присоединением происходило несколько последовательных переименований. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой явные настройки, отправленные вместе с `compatibility` в том же запросе, могли незаметно игнорироваться, если их значение совпадало со значением по умолчанию на сервере. [#97078](https://github.com/ClickHouse/ClickHouse/pull/97078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлено поведение клиента: при столкновении `INSERT` с параллельным разбором с недопустимыми данными он сообщал об ошибке `NETWORK_ERROR` вместо фактической ошибки разбора (с правильным номером строки). [#97339](https://github.com/ClickHouse/ClickHouse/pull/97339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой агрегатная функция `sumCount` не могла читать сериализованные состояния старого формата после введения `Nullable(Tuple)`. Закрывает [#97370](https://github.com/ClickHouse/ClickHouse/issues/97370). [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено исключение при сравнении кортежей, содержащих элементы типа `Nothing` (например, при сравнении с элементами кортежа `NULL`), при использовании `GROUPING SETS` и `ORDER BY`. [#97509](https://github.com/ClickHouse/ClickHouse/pull/97509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено недетерминированное вычисление `uncompressed_hash` для частей Compact MergeTree при использовании нескольких кодеков сжатия, что могло приводить к некорректной дедупликации. [#97522](https://github.com/ClickHouse/ClickHouse/pull/97522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка, связанная с отсутствием stream при INSERT SELECT с JSON и бакетами в общих данных. Закрывает [#97331](https://github.com/ClickHouse/ClickHouse/issues/97331). [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены случаи, когда исключения `MEMORY_LIMIT_EXCEEDED` во время слияний SummingMergeTree и CoalescingMergeTree ошибочно регистрировались как `CORRUPTED_DATA`. [#97537](https://github.com/ClickHouse/ClickHouse/pull/97537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлено исключение "Context has expired" для коррелированных подзапросов, содержащих табличные функции, например `url()`. [#97544](https://github.com/ClickHouse/ClickHouse/pull/97544) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены исключения и некорректное поведение в `optimize_syntax_fuse_functions` при работе с агрегатными проекциями, типами Date и сохранением имён столбцов. [#97545](https://github.com/ClickHouse/ClickHouse/pull/97545) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Убрано некорректное переписывание запроса с `replaceRegexpOne` на `extract`, которое приводило к неверным результатам, если регулярное выражение не находило совпадений; также исправлено Исключение при использовании `replaceRegexpOne` с `GROUP BY ... WITH CUBE` и `group_by_use_nulls=1`. [#97546](https://github.com/ClickHouse/ClickHouse/pull/97546) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено бесконечное зависание `DROP DATABASE` при использовании `database_atomic_wait_for_drop_and_detach_synchronously`, если запрос был принудительно завершён. [#97586](https://github.com/ClickHouse/ClickHouse/pull/97586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено: `KILL QUERY` не мог завершать запросы, зависшие при генерации `WITH FILL`, загрузке словаря через `dictGet` или выполнении `ALTER DELETE` с `mutations_sync=1` на `ReplicatedMergeTree`. [#97589](https://github.com/ClickHouse/ClickHouse/pull/97589) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Табличная функция `loop` вызывала `inner_storage->read()` напрямую, в обход слоя интерпретатора, где применяются политики уровня строк, привилегии на уровне столбцов и другие проверки безопасности. Это позволяло пользователю, ограниченному политиками уровня строк, читать все строки через `loop(table)`, даже если прямой SELECT не возвращал ни одной строки. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
* Исправлено некорректное отсечение партиций при использовании DateTime64 со значениями до эпохи Unix в функции `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* После этого патча `hasPartitionId` будет возвращать false, если в наборе data part есть другая партиция с более высоким идентификатором партиции. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлены возможные сбои при чтении пустых гранул в расширенных общих данных в JSON. Закрывает [#97563](https://github.com/ClickHouse/ClickHouse/issues/97563). [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка `Cannot schedule a file` `LOGICAL_ERROR` при `INSERT` в `Distributed`, возникавшая из-за состояния гонки между `DROP` и `INSERT`. [#97822](https://github.com/ClickHouse/ClickHouse/pull/97822) ([Azat Khuzhin](https://github.com/azat)).
* Исправлены аварийное завершение работы сервера ClickHouse и срабатывание assert при вызове `mapContainsKey/mapContainsKeyLike` с индексом пропуска данных `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Исправлены исключения LOGICAL\_ERROR, возникавшие из-за `LowCardinality` внутри составных типов (`Variant`, `Dynamic`, `Tuple`) в `concatWithSeparator`, `format`, `IN`-подзапросах, `GLOBAL IN` и JOIN с runtime-фильтрами. [#97831](https://github.com/ClickHouse/ClickHouse/pull/97831) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено Исключение `LOGICAL_ERROR` `Chunk info was not set for chunk in MergingAggregatedTransform`, возникавшее при использовании `ARRAY JOIN` с table function `merge()` для нескольких distributed таблиц в сочетании с `GROUP BY`. [#97838](https://github.com/ClickHouse/ClickHouse/pull/97838) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен сбой сервера (`std::terminate`), вызванный неперехваченным исключением в деструкторе пула HTTP-соединений, когда при высоком параллелизме достигался жёсткий лимит группы соединений. Исключение `HTTP_CONNECTION_LIMIT_REACHED` могло пробрасываться из `~PooledConnection` при возврате соединения в пул, что приводило к `SIGABRT`. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен некорректный результат при использовании алгоритма `grace_hash` с неэквивалентными JOIN, когда левый блок не удаётся обработать полностью из-за ограничений на размер результата JOIN. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена проблема низкой производительности при сканировании metadata DeltaLake, возникшая после [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686). [#97880](https://github.com/ClickHouse/ClickHouse/pull/97880) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена гонка данных в клиенте ZooKeeper между `sendThread` и `receiveThread`. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлена ошибка, из-за которой было невозможно использовать CTE в распределённых INSERT SELECT. Продолжение [https://github.com/ClickHouse/ClickHouse/pull/87789](https://github.com/ClickHouse/ClickHouse/pull/87789). Закрывает [#95837](https://github.com/ClickHouse/ClickHouse/issues/95837). [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено исключение в `CachedOnDiskReadBufferFromFile::readBigAt`. Закрывает [#97325](https://github.com/ClickHouse/ClickHouse/issues/97325). [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлено исключение `LOGICAL_ERROR` в движке `Alias` при работе с материализованными столбцами, вызванное несоответствием столбцов. Закрывает [#97907](https://github.com/ClickHouse/ClickHouse/issues/97907). [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
* Исправлена потеря данных Keeper после перезапуска при использовании Azure Blob Storage с метаданными `s3_plain` в качестве хранилища журнала. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена ошибка JIT-компиляции функции `sign` для целочисленных типов с разрядностью выше, чем у `Int8` — для значений вне диапазона -128..127 знак мог определяться неверно. [#98012](https://github.com/ClickHouse/ClickHouse/pull/98012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены исключение `DUPLICATE_COLUMN` и неявное появление NULL при чтении таблиц Delta Lake, использующих режим сопоставления столбцов "name", с полями struct, имена которых содержат точки (например, ``STRUCT<`a.foo`: STRING, `b.foo`: STRING>``). [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
* Исправлена мутация после легковесного обновления и при использовании вторичных индексов. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен некорректный результат FINAL-запросов при сочетании индексов пропуска данных по первичному и не по первичному ключу. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
* Обеспечено выполнение проверок прав READ ON FILE для скалярной функции file() и DESCRIBE TABLE file(). [#98115](https://github.com/ClickHouse/ClickHouse/pull/98115) ([Nikolay Degterinsky](https://github.com/evillique)).
* Исправлен сбой, из-за которого запрос к файлам с glob-шаблоном (например, `file('dir/**', 'LineAsString')`) приводил к необрабатываемому исключению файловой системы (`STD_EXCEPTION`), если каталог содержал битую символическую ссылку. Теперь такие символические ссылки молча пропускаются, и запрос возвращает результаты по всем корректным файлам. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
* Исправлен сбой сегментации при оптимизации плана запроса во время преобразования OUTER JOIN в INNER JOIN с `arrayJoin` в выражении фильтра. [#98147](https://github.com/ClickHouse/ClickHouse/pull/98147) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой формат `ProtobufList` не работал с движком Kafka, поскольку состояние чтения не сбрасывалось между сообщениями. [#98151](https://github.com/ClickHouse/ClickHouse/pull/98151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка в analyzer\_compatibility\_join\_using\_top\_level\_identifier и ARRAY JOIN, закрыт [#98164](https://github.com/ClickHouse/ClickHouse/issues/98164). [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Для ответов наблюдения в `aggregated_zookeeper_log` теперь задаётся компонент `Watch` вместо пустого значения. [#98202](https://github.com/ClickHouse/ClickHouse/pull/98202) ([Antonio Andelic](https://github.com/antonio2368)).
* Если столбцы ключа партиционирования не входят в ключ сортировки, то отсечение партиций может ошибочно пропустить партиции, содержащие строки, которые должны были бы остаться после дедупликации FINAL. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена логическая ошибка "Bad cast from type DB::ColumnConst to DB::ColumnArray" в `kql_array_sort_asc`/`kql_array_sort_desc` при вызове с аргументами в виде константных массивов. [#98251](https://github.com/ClickHouse/ClickHouse/pull/98251) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен выход за границы при обращении к `ColumnConst::getExtremes`, который мог вызывать сбой при включенном `extremes = 1`. [#98263](https://github.com/ClickHouse/ClickHouse/pull/98263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена потенциальная взаимная блокировка, возникавшая, когда две параллельные операции `MOVE PARTITION` работают с одной и той же парой таблиц в противоположных направлениях. [#98264](https://github.com/ClickHouse/ClickHouse/pull/98264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* HTTP-сервер теперь возвращает сообщение об ошибке в теле ответа на запросы с ответом 400 Bad Request, вызванные некорректными заголовками, вместо пустого тела. [#98268](https://github.com/ClickHouse/ClickHouse/pull/98268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены ошибки, приводившие к некорректным результатам при использовании распределённого анализа индексов (экспериментальная возможность) и кэша условий запроса. [#98269](https://github.com/ClickHouse/ClickHouse/pull/98269) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено исключение LOGICAL\_ERROR "Недопустимый результат двоичного поиска в `MergeTreeSetIndex`", вызванное преобразованием `toDate` для столбцов ключа, когда данные переходили через границу 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR`, возникавшее, когда RIGHT JOIN, обёрнутый в CROSS JOIN, переставлялся оптимизацией `query_plan_join_swap_table` в устаревшем коде шага JOIN. [#98279](https://github.com/ClickHouse/ClickHouse/pull/98279) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена проверка повреждённых данных при десериализации `DDSketch`, чтобы предотвратить segfault'ы, исключения, бесконечные циклы и OOM при чтении повреждённых состояний агрегатной функции `quantilesDD`. [#98284](https://github.com/ClickHouse/ClickHouse/pull/98284) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен LOGICAL\_ERROR "Trying to execute PLACEHOLDER action", возникавший при обращении к коррелированным столбцам из внешних запросов внутри лямбда-функций, таких как `arrayMap`. [#98285](https://github.com/ClickHouse/ClickHouse/pull/98285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение «Logical error» в `caseWithExpression`, когда выражение `CASE` включает `materialize(NULL)` или другие аргументы `Nullable(Nothing)`. [#98290](https://github.com/ClickHouse/ClickHouse/pull/98290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено ошибочное исключение преобразования типов при фильтрации по виртуальному столбцу `_table` в табличной функции `merge`. [#98291](https://github.com/ClickHouse/ClickHouse/pull/98291) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен редкий сбой дедупликации, из-за которого повторные вставки ошибочно дедуплицировались из-за несогласованного порядка очистки каталогов ZooKeeper `blocks/` и `deduplication_hashes/`. [#98293](https://github.com/ClickHouse/ClickHouse/pull/98293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение, возникавшее при одновременном использовании `ORDER BY ... WITH FILL` и `LIMIT BY`. [#98361](https://github.com/ClickHouse/ClickHouse/pull/98361) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено скрытое повреждение данных при вставке столбца Parquet/Arrow `Date` в столбец `Enum` — теперь несовместимое преобразование типов корректно отклоняется, вместо того чтобы сохранять недопустимые значения enum. [#98364](https://github.com/ClickHouse/ClickHouse/pull/98364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение при чтении файла Arrow со столбцом `Array` в таблицу со столбцом `Nested`. [#98365](https://github.com/ClickHouse/ClickHouse/pull/98365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены мутации `MATERIALIZE INDEX` и `MATERIALIZE PROJECTION`, которые застревали, если индекс или проекция удалялись до завершения мутации. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение при чтении из `Nullable(Tuple(...))`, когда имя элемента Tuple совпадает с подстолбцом `null` у Nullable. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Столбец ...: у узла дерева запроса нет корректного узла-источника" при выполнении JOIN между таблицей `Merge` (оборачивающей таблицу `Distributed`) и другой таблицей. [#98376](https://github.com/ClickHouse/ClickHouse/pull/98376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено некорректное преобразование `Bool` из Parquet в `FixedString` в нативном ридере V3, из-за которого возвращались raw bytes вместо строкового представления. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено: `tryGetColumnDescription` теперь фильтрует подстолбцы по виду родительского столбца, аналогично другим методам поиска столбцов. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Принимать учетные данные Base64 без паддинга в HTTP Basic Auth. Некоторые HTTP-клиенты опускают завершающие символы паддинга `=` в заголовке `Authorization: Basic`, что ранее приводило к ошибкам аутентификации. [#98392](https://github.com/ClickHouse/ClickHouse/pull/98392) ([Amos Bird](https://github.com/amosbird)).
* Исправлены некорректные результаты отсечения партиций после слияния частей со столбцами ключа партиционирования типа `Nullable`, вызванные неверными границами индекса min-max. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
* Исправлено редкое Исключение в исполнителе конвейера, которое могло проявляться сообщением `Received signal 6` (только в отладочных сборках), когда расширение конвейера происходило одновременно с отменой запроса. [#98428](https://github.com/ClickHouse/ClickHouse/pull/98428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Column identifier is already registered" при использовании `count_distinct_optimization` с предложением `QUALIFY`. [#98433](https://github.com/ClickHouse/ClickHouse/pull/98433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "cannot be inside Nullable type", возникавшее при использовании `IN`/`NOT IN` с аргументами-столбцами типа `LowCardinality` (например, `a NOT IN (b)`, где `a` имеет тип `LowCardinality(String)`). [#98443](https://github.com/ClickHouse/ClickHouse/pull/98443) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Pipeline stuck" в JOIN-операциях `full_sorting_merge`, вызванное взаимной блокировкой в `PingPongProcessor`, возникавшей, когда оптимизация `FilterBySetOnTheFly` создавала циклическую зависимость с `MergeJoinTransform`. [#98454](https://github.com/ClickHouse/ClickHouse/pull/98454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` "Проекция не может увеличить количество строк в блоке", возникавшее при слиянии частей с TTL, удаляющим все строки, и агрегирующей проекцией с константным ключом `GROUP BY`. [#98458](https://github.com/ClickHouse/ClickHouse/pull/98458) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение с логической ошибкой при совместном использовании `CROSS JOIN` и `INNER JOIN USING`. [#98459](https://github.com/ClickHouse/ClickHouse/pull/98459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено обращение к нулевому указателю в `dictGetOrDefault`, когда аргумент ключа имеет тип `Nullable`. [#98460](https://github.com/ClickHouse/ClickHouse/pull/98460) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение в запросах `DISTINCT`, возникавшее при использовании агрегатных проекций, если `materialize` приводил к различиям в типах `LowCardinality` между запросом и проекцией. [#98462](https://github.com/ClickHouse/ClickHouse/pull/98462) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение LOGICAL\_ERROR, возникавшее при использовании `arrayJoin` в выражении фильтра с OUTER JOIN и включенном `join_use_nulls`. [#98464](https://github.com/ClickHouse/ClickHouse/pull/98464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение из-за логической ошибки "Реплика решила читать в режиме WithOrder, а не в ReverseOrder" при использовании параллельных реплик с `optimize_aggregation_in_order`. [#98467](https://github.com/ClickHouse/ClickHouse/pull/98467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено отключение Java-клиентов ZooKeeper от ClickHouse Keeper после запроса `addWatch`. Java-клиент ожидает 4-байтовое тело `ErrorResponse` в ответе на `addWatch`, но Keeper отправлял пустое тело, из-за чего возникало `EOFException` и разрывался сеанс. Из-за этого переставали работать `CuratorCache` в Apache Curator и любые Java-приложения, использующие постоянные наблюдения. Исправляет [#98079](https://github.com/ClickHouse/ClickHouse/issues/98079). [#98499](https://github.com/ClickHouse/ClickHouse/pull/98499) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлено поведение, при котором метрики Keeper `zk_followers` и `zk_synced_followers` не уменьшались при отказе follower. В четырёхбуквенную команду `mntr` добавлены новые метрики `zk_learners` и `zk_synced_non_voting_followers`. Исправляет [#54173](https://github.com/ClickHouse/ClickHouse/issues/54173). [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлено исключение `LOGICAL_ERROR` в `renameAndCommitEmptyParts`, которое могло возникнуть при одновременном выполнении `TRUNCATE TABLE` и `OPTIMIZE TABLE` с использованием транзакций MergeTree. [#98508](https://github.com/ClickHouse/ClickHouse/pull/98508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение, при котором защищённый raft-порт Keeper игнорировал параметры `cipherList` и `dhParamsFile` из конфигурации `openSSL` и всегда использовал значения по умолчанию вместо заданных пользователем. Закрывает [#51188](https://github.com/ClickHouse/ClickHouse/issues/51188). [#98509](https://github.com/ClickHouse/ClickHouse/pull/98509) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлены вводящие в заблуждение сообщения лога Keeper, такие как "Receiving request for session X took 9963 ms", где указанное время на самом деле уходило на ожидание в состоянии бездействия в `poll()` между heartbeat-сообщениями, а не на выполнение самой операции. Исправление [#79026](https://github.com/ClickHouse/ClickHouse/issues/79026). [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлен неожиданный результат при использовании read\_in\_order\_use\_virtual\_row и монотонных функций; закрыт [#97837](https://github.com/ClickHouse/ClickHouse/issues/97837). [#98514](https://github.com/ClickHouse/ClickHouse/pull/98514) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена ошибка `LOGICAL_ERROR: Not-ready Set is passed as the second argument for function 'in'` при использовании `PREWHERE` с подзапросом в `IN` в таблицах семейства MergeTree. [#98522](https://github.com/ClickHouse/ClickHouse/pull/98522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены TCP-соединения Keeper, из-за которых сервер не мог корректно завершить работу, поскольку они не реагировали на сигнал завершения. [#98525](https://github.com/ClickHouse/ClickHouse/pull/98525) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Столбец сортировки не найден среди выходов ActionsDAG" при включенном `query_plan_convert_join_to_in` и `query_plan_merge_expressions = 0`. [#98526](https://github.com/ClickHouse/ClickHouse/pull/98526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема, из-за которой источник словаря MongoDB не работал с именованными коллекциями. Закрывает [#97840](https://github.com/ClickHouse/ClickHouse/issues/97840). [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлен LOGICAL\_ERROR, возникавший, если после подстановки параметров Identifier оказывался пустым. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* Исправлена взаимная блокировка конвейера при одновременном использовании `sort_overflow_mode = 'break'` и оконных функций. [#98543](https://github.com/ClickHouse/ClickHouse/pull/98543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен откат столбца в движке Buffer при обработке исключения, возникающего при добавлении нового блока. Прежняя логика могла приводить к повреждению состояния столбцов в памяти. [#98551](https://github.com/ClickHouse/ClickHouse/pull/98551) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено исключение `Bad cast from type ColumnConst to ColumnDynamic` при null-safe сравнении (`<=>` / `IS NOT DISTINCT FROM`) с константными столбцами `Dynamic` или `Variant` и `NULL`. Также исправлена ошибка, из-за которой `IS DISTINCT FROM` для `Dynamic`/`Variant` при сравнении с `NULL` всегда ошибочно возвращал 0. [#98553](https://github.com/ClickHouse/ClickHouse/pull/98553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено использование текстового индекса вместе с другими индексами пропуска данных. Ранее при одновременном использовании фильтром запроса текстового индекса и других обычных индексов пропуска данных могли возникать логические ошибки, такие как "Trying to get non-existing mark". [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлена логическая ошибка "TABLE\_FUNCTION is not allowed in expression context", которая возникала, когда табличная функция с псевдонимом использовалась несколько раз в пределах одной и той же области видимости запроса (например, в секциях `PREWHERE` и `QUALIFY`). [#98557](https://github.com/ClickHouse/ClickHouse/pull/98557) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен распределённый анализ индексов для выражений (а не только для столбцов) в PK (из-за ошибки на удалённых репликах не отфильтровывались избыточные гранулы). [#98561](https://github.com/ClickHouse/ClickHouse/pull/98561) ([Azat Khuzhin](https://github.com/azat)).
* Запретить удаление столбца, если его подстолбцы используются в выражениях default/alias других столбцов, и использовать анализатор для выражений default при выполнении alter drop column. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Исправлены некорректные повторные попытки выполнения запросов S3 при ошибках, не допускающих повторной попытки (включая `HTTP_CONNECTION_LIMIT_REACHED`), в HTTP-клиенте. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлено переполнение Decimal при отсечении партиций с DateTime64. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлены две ошибки в JIT-компиляции выражений: ошибка copy-paste в проверке типов `nativeCast`, из-за которой ветви приведения integer-to-integer и float-to-float были недостижимы, а также передача некорректного `nullptr` для TargetMachine в LLVM `PassBuilder`, из-за чего не регистрировались специфичные для целевой платформы этапы оптимизации. [#98660](https://github.com/ClickHouse/ClickHouse/pull/98660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен обход RBAC, который позволял пользователям выполнять DESCRIBE для любой таблицы через `remote()`, `remoteSecure()`, `cluster()` или `clusterAllReplicas()`, указывая на localhost, без привилегии `SHOW_COLUMNS`. [#98669](https://github.com/ClickHouse/ClickHouse/pull/98669) ([pufit](https://github.com/pufit)).
* Исправлено исключение `BAD_GET` и некорректные результаты запроса, возникавшие, когда небулево выражение (например, `sin(col)`) использовалось одновременно в WHERE и SELECT с JOIN из-за того, что оптимизация проталкивания фильтра повреждала общие узлы DAG. [#98681](https://github.com/ClickHouse/ClickHouse/pull/98681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен LOGICAL\_ERROR "Реплика решила читать в режиме Default, а не WithOrder" при использовании `read_in_order_through_join` с параллельными репликами. [#98685](https://github.com/ClickHouse/ClickHouse/pull/98685) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение "Неверное приведение типа `DB::TableFunctionNode` к `DB::QueryNode`" при использовании табличной функции `input` в качестве аргумента функции `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено повторное появление устаревших частей данных, вызванное некорректной очисткой пустых перекрывающих частей. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлено исключение в `LogicalExpressionOptimizerPass`, возникавшее, если булева функция в сравнении `equals` возвращала тип `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен некорректный разбор функцией `parseDateTimeBestEffort` слов, начинающихся с префиксов названий месяцев/дней недели. Закрывает [#97965](https://github.com/ClickHouse/ClickHouse/issues/97965). [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено исключение `UNKNOWN_IDENTIFIER`, возникавшее при выполнении запросов к табличной функции `merge()` или движку `Merge` для таблиц с JSON-столбцами с разными параметрами (например, разными полями `SKIP`) и столбцами `ALIAS`, ссылающимися на подпути JSON, при включенном новом анализаторе. Закрывает [#97812](https://github.com/ClickHouse/ClickHouse/issues/97812). [#98753](https://github.com/ClickHouse/ClickHouse/pull/98753) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена работа оптимизации `optimize_skip_unused_shards` с анализатором при использовании хранилища `Distributed` в `View`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлен доступ по имени к подстолбцам кортежа (например, `SELECT x.a` для `Tuple(a UUID, b Int32)`) во внешних таблицах, передаваемых через `--external` в `clickhouse-client`. Закрывает [#96925](https://github.com/ClickHouse/ClickHouse/issues/96925). [#98755](https://github.com/ClickHouse/ClickHouse/pull/98755) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено Исключение `reverseUTF8` при некорректном (усечённом) вводе UTF-8. [#98770](https://github.com/ClickHouse/ClickHouse/pull/98770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено определение применимости индекса пропуска данных типа set для предиката с OR и false (то есть `or(x, 0)`). [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено исключение `LOGICAL_ERROR` (несоответствие структуры блока в `removeUnusedColumns`), которое могло возникать при `FINAL` + `PREWHERE` + константном выражении `WHERE` + не зависящих от столбцов агрегатах, таких как `count()`. [#98778](https://github.com/ClickHouse/ClickHouse/pull/98778) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Записи `system.trace_log` для автоперезагрузки словарей ClickHouse теперь имеют непустые идентификаторы запросов. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлен crash, при котором мог происходить доступ по нулевому указателю в system tables, созданных в промежутке между созданием снимка таблиц при вызове `IDatabaseTablesIterator::table()` и изменением таблиц в другом потоке во время последующей итерации. [#98792](https://github.com/ClickHouse/ClickHouse/pull/98792) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Исправлена ошибка, из-за которой `SYSTEM START REPLICATED VIEW` не активировала задачу обновления. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлено исключение "Inconsistent table names" при использовании табличной функции `view()`, содержащей JOIN-операции внутри другого JOIN (только со старым анализатором). [#98809](https://github.com/ClickHouse/ClickHouse/pull/98809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена корректировка RLIMIT\_SIGPENDING (через pending\_signals). [#98829](https://github.com/ClickHouse/ClickHouse/pull/98829) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено исключение при комбинировании `loop` с табличными функциями кластера. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* LEFT ANTI JOIN по нескольким столбцам ключа JOIN возвращал некорректные результаты, когда `enable_join_runtime_filters=1` (значение по умолчанию). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
* Исправлено поведение, из-за которого `WITH FILL STALENESS` создавал лишние заполненные строки при чтении данных несколькими фрагментами (например, при небольшом `index_granularity`). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка LOGICAL\_ERROR «RPNBuilderFunctionTreeNode has A arguments, attempted to get argument at index B». [#98900](https://github.com/ClickHouse/ClickHouse/pull/98900) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена рассинхронизация учёта памяти, вызванная тем, что при неудачных выделениях памяти не выполнялся откат, неопределённым поведением `nallocx(0)` и ошибкой на единицу при отслеживании глобального пика. Отслеживание расширено и теперь охватывает кольцевые буферы `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
* Запретить выполнение Attach для таблиц локального озера данных вне пользовательских путей, а не только их создание. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлено состояние гонки, которое могло вызывать исключение "ReadBuffer is canceled" в запросах, использующих `urlCluster` или аналогичные кластерные табличные функции. [#98955](https://github.com/ClickHouse/ClickHouse/pull/98955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` в финансовых функциях (`financialNetPresentValue`, `financialInternalRateOfReturn` и т. д.), возникавшее при передаче аргументов типа `BFloat16`. [#98958](https://github.com/ClickHouse/ClickHouse/pull/98958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой индексы пропуска данных (и условия по первичному ключу) не применялись к столбцам ALIAS, когда слияние выражений в плане запроса отключено (query\_plan\_merge\_expressions = 0 или query\_plan\_enable\_optimizations = 0). [#98960](https://github.com/ClickHouse/ClickHouse/pull/98960) ([Peng](https://github.com/fastio)).
* Для асинхронных вставок теперь увеличивается ProfileEvent `InsertQuery`. Закрывает [#98626](https://github.com/ClickHouse/ClickHouse/issues/98626). [#98962](https://github.com/ClickHouse/ClickHouse/pull/98962) ([Narasimha Pakeer](https://github.com/npakeer)).
* Исправлено исключение "Inconsistent KeyCondition behavior" в отладочных сборках, когда первичный ключ содержит значения NaN с плавающей запятой: `accurateLess` и `accurateEquals` теперь обрабатывают NaN согласованно с порядком сортировки ClickHouse. Закрывает [#98075](https://github.com/ClickHouse/ClickHouse/issues/98075). [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* SummingMergeTree больше не суммирует столбцы типа Bool (и других доменных типов). Значения Bool теперь сохраняются как есть, а не суммируются арифметически. [#98976](https://github.com/ClickHouse/ClickHouse/pull/98976) ([Yash ](https://github.com/Onyx2406)).
* Исправлено исключение Scalar doesn't exist, возникавшее при выполнении запроса к удалённому сегменту с включённым `optimize_const_name_size` и `enable_scalar_subquery_optimization` = 0. Крупные константы, заменённые в удалённом запросе ссылками `__getScalar`, не отправлялись в сегмент, из-за чего запрос завершался ошибкой. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
* Исправлено `NOT_FOUND_COLUMN_IN_BLOCK` для некоторых запросов с `GROUP BY` и выражениями, включающими обратный поиск в словаре, сравнения при преобразовании `Date/DateTime` и сравнения кортежей. Закрывает [#98888](https://github.com/ClickHouse/ClickHouse/issues/98888). [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено неопределённое поведение (разыменование нулевого указателя) при изменении столбца version/sign/is\_deleted в `EPHEMERAL` или `ALIAS` в движках MergeTree. Такие изменения теперь корректно отклоняются. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена проблема, из-за которой в `system.grants` отсутствовали параметры регулярного выражения для привилегий `URL` и `S3` в столбце `access_object`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
* Исправлено чтение из Iceberg BigLake: учетные данные ADC теперь передаются S3-клиенту GCS (что устраняет ошибки 403), учетные данные OAuth2 перед отправкой теперь URL-кодируются (что устраняет сбои аутентификации для токенов со специальными символами), а обход пространства имен больше не прерывается при получении от BigLake ответов HTTP 400. [#98998](https://github.com/ClickHouse/ClickHouse/pull/98998) ([Nikita Fomichev](https://github.com/fm4v)).
* Исправлена ошибка, из-за которой `clickhouse-client` не переключал часовой пояс, если переменная окружения `TZ` задавалась в виде пути к файлу POSIX (например, `TZ=:/etc/localtime`). [#99000](https://github.com/ClickHouse/ClickHouse/pull/99000) ([Yash ](https://github.com/Onyx2406)).
* Исправлено некорректное или недостаточное отсечение, когда `startsWith`, `LIKE`, `NOT LIKE` используются со столбцом `FixedString`. Кроме того, функция приведения `FixedString` к `String` теперь может отсекать гранулы, если применяется к ключевому столбцу. Закрывает [#98940](https://github.com/ClickHouse/ClickHouse/issues/98940). [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка, из-за которой `windowFunnel` с `strict_deduplication` возвращал неверный уровень при обнаружении дубликата события. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash ](https://github.com/Onyx2406)).
* Исправлена ошибка, из-за которой EXISTS игнорировал секции LIMIT и OFFSET в подзапросах, что приводило к некорректным результатам, если подзапрос не возвращал ни одной строки из-за OFFSET или LIMIT со значением 0. Закрывает [#88722](https://github.com/ClickHouse/ClickHouse/issues/88722). [#99005](https://github.com/ClickHouse/ClickHouse/pull/99005) ([andriibeee](https://github.com/andriibeee)).
* Исправлено исключение "Block structure mismatch", возникавшее, когда при оптимизации проталкивания фильтра выражение AND сводилось к константе из-за короткого замыкания при использовании `GROUPING SETS`. [#99010](https://github.com/ClickHouse/ClickHouse/pull/99010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение при чтении патч-частей (легковесные обновления), если в плане запроса отсутствует столбец `_part_offset`. [#99023](https://github.com/ClickHouse/ClickHouse/pull/99023) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Запрос вида `SELECT * FROM table WHERE pk_id = ''`, где `pk_id` — первичный ключ типа `String`, теперь будет корректно использовать индекс первичного ключа для фильтрации гранул. [#99027](https://github.com/ClickHouse/ClickHouse/pull/99027) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Исправлено исключение `DEPENDENCIES_NOT_FOUND` в движке Kafka, возникавшее, когда materialized view было отсоединено, пока фоновый поток передавал данные. [#99028](https://github.com/ClickHouse/ClickHouse/pull/99028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение при создании таблицы со столбцом `EPHEMERAL`, у которого то же имя, что и у виртуального столбца (например, `_part_offset`). [#99031](https://github.com/ClickHouse/ClickHouse/pull/99031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено вводящее в заблуждение сообщение "inflate failed: buffer error" при чтении несуществующих сжатых файлов через табличную функцию `url()` с глоб-шаблонами. Теперь при включенном `http_skip_not_found_url_for_globs`, как и ожидается, возвращается пустой результат. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой сервера (std::terminate) при выполнении `ALTER TABLE ... DROP PART` для patch part после изменения схемы (например, ADD COLUMN). Сбой был вызван отсутствием системных столбцов (`_part`) в метаданных пустой coverage part, что приводило к неперехваченному исключению внутри NOEXCEPT\_SCOPE. [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
* Процесс сервера ClickHouse мог аварийно завершиться, если во время *чтения с кэш-диска* возникало исключение о превышении лимита памяти. Теперь это исправлено. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Исправлен `LOGICAL_ERROR` при запросе к таблице, в которой есть и ROW POLICY, и столбец ALIAS, с использованием `dictGet`. Проблема была вызвана преждевременным обращением к табличному выражению при разрешении столбца ALIAS в новом анализаторе. [#99065](https://github.com/ClickHouse/ClickHouse/pull/99065) ([Peng](https://github.com/fastio)).
* Исправлена ошибка выхода за границы, возникавшая, когда пользователь пытался выполнить запрос только к виртуальным столбцам таблицы Iceberg с форматом данных Avro. Это крайне редкий сценарий, поэтому он не помечен как критический. Закрывает [#88238](https://github.com/ClickHouse/ClickHouse/issues/88238). [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
* Исправлен segfault в рекурсивном CTE с `remote()` + `view()`. [#99081](https://github.com/ClickHouse/ClickHouse/pull/99081) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Пропускается лишний анализ индексов, если применяется оптимизация чтения в порядке сортировки. [#99084](https://github.com/ClickHouse/ClickHouse/pull/99084) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлен сбой, вызванный исключением по ограничению памяти при применении patch part. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено срабатывание отладочного assert в `DDLWorker`, вызванное неактуальным `first_failed_task_name` после удаления записи ZooKeeper в ходе восстановления после повторной инициализации. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена проблема с перестроением текстовых индексов при слияниях с TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлен сбой при выполнении запроса `ALTER TABLE ... REMOVE SETTINGS` для движка таблицы Iceberg. Исправляет [#86330](https://github.com/ClickHouse/ClickHouse/issues/86330). [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
* Исправлена ошибка в оптимизации `query_plan_convert_any_join_to_semi_or_anti_join`, из-за которой для строк без совпадений возвращался некорректный результат. Связано: [https://github.com/ClickHouse/ClickHouse/pull/95995](https://github.com/ClickHouse/ClickHouse/pull/95995). [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено Исключение LOGICAL\_ERROR в `ASTColumnsExceptTransformer::transform`. [#99119](https://github.com/ClickHouse/ClickHouse/pull/99119) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлен обход RBAC, который позволял пользователям получать структуру таблицы через `DESCRIBE TABLE` или `CREATE TABLE AS` для табличных функций (`mysql()`, `postgresql()`, `sqlite()`, `arrowFlight()`, `jdbc()`, `odbc()` и т. д.) без необходимых привилегий доступа к источнику. Для функций, которые автоматически определяют схему по удалённым серверам, это также позволяло без авторизации инициировать исходящие соединения (SSRF). [#99122](https://github.com/ClickHouse/ClickHouse/pull/99122) ([pufit](https://github.com/pufit)).
* Исправлен сбой Keeper (segfault в NuRaft) во время динамической реконфигурации и передачи лидерства. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Исправлен сбой при использовании таблицы Buffer с SAMPLE, если пункт назначения его не поддерживает. [#99141](https://github.com/ClickHouse/ClickHouse/pull/99141) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена ошибка LOGICAL\_ERROR, вызванная несоответствием порядка столбцов в патч-частях. [#99164](https://github.com/ClickHouse/ClickHouse/pull/99164) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлено очень редкое аварийное завершение, возникавшее, когда таблица Iceberg содержит файлы смешанных форматов (ORC и Parquet). Исправление [#88126](https://github.com/ClickHouse/ClickHouse/issues/88126). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
* Исправлено неприменение max\_execution\_time при резервном копировании и восстановлении. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена проблема, из-за которой `insert_deduplication_token` молча игнорировался в запросах `INSERT SELECT` без `ORDER BY ALL`. Ранее для несортированных `INSERT SELECT` дедупликация была полностью отключена, даже если был явно указан пользовательский токен. Теперь для включения дедупликации достаточно указать `insert_deduplication_token` независимо от `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
* Исправлены избыточные проверки доступа при оптимизации `InverseDictionaryLookupPass`: теперь grant `CREATE_TEMPORARY_TABLE` проверяется один раз перед проходом, а не для каждого посещаемого узла. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлена проблема, из-за которой `clickhouse format --obfuscate` выдавал некорректный SQL при обфускации типов индекса пропуска данных, имён кодеков сжатия, имён движков баз данных и определений структуры/источника словаря. [#99260](https://github.com/ClickHouse/ClickHouse/pull/99260) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена ошибка, из-за которой в некоторых случаях сравнение типов Time\[64] и DateTime\[64] могло вызывать путаницу; теперь в таких случаях значения Time\[64] приводятся к DateTime\[64] с добавлением `1970-01-01` в качестве даты. [#99267](https://github.com/ClickHouse/ClickHouse/pull/99267) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ограничение значений настроек допустимыми пределами в DDL-воркере для распределённых DDL-запросов. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлены незначительные проблемы с аутентификацией TOTP: обработка пустого пароля в опции CLI `--one-time-password`, проверка значений конфигурации `<digits>` и `<period>`. [#99322](https://github.com/ClickHouse/ClickHouse/pull/99322) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена логическая ошибка `unordered_map::at: key not found` в формате вывода Avro при сериализации столбцов `Enum8`/`Enum16` со значениями, отсутствующими в определении enum. [#99332](https://github.com/ClickHouse/ClickHouse/pull/99332) ([Desel72](https://github.com/Desel72)).
* Исправлен `CHECK TABLE` для разреженной сериализации в Tuple с Dynamic. Закрывает [#96588](https://github.com/ClickHouse/ClickHouse/issues/96588). [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена излишне строгая проверка предобработчика текстового индекса. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлена проблема совместимости при обновлении реплицированных таблиц с неявными индексами minmax с версии 25.10 на более новые версии. [#99392](https://github.com/ClickHouse/ClickHouse/pull/99392) ([Raúl Marín](https://github.com/Algunenano)).
* Удалена поддержка функций с отрицанием (`notEquals`, `notLike`, `notIn`) при анализе текстового индекса. Эти функции никогда не позволяли пропускать ни одной гранулы, поэтому их анализ в индексе лишь создавал дополнительную нагрузку, не принося никакой пользы. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлена работа `optimize_skip_unused_shards` в новом анализаторе в случае, когда таблица `Distributed` использовалась внутри подзапроса с IN. [#99436](https://github.com/ClickHouse/ClickHouse/pull/99436) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлена ошибка heap-use-after-free в `INTERSECT`/`EXCEPT`, когда запрос возвращает повторяющиеся имена столбцов. [#99471](https://github.com/ClickHouse/ClickHouse/pull/99471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка в `ALTER TABLE ... DROP PART`, когда в качестве имени части используется типизированный параметр запроса. [#99489](https://github.com/ClickHouse/ClickHouse/pull/99489) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `NOT_FOUND_COLUMN_IN_BLOCK`, возникавшее, когда предикат текстового индекса (например, `hasAllTokens`) использовался в секциях `SELECT` и `WHERE` через псевдоним. [#99504](https://github.com/ClickHouse/ClickHouse/pull/99504) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлены некорректные результаты при использовании `hasAllTokens` с оператором OR между столбцами, для которых созданы отдельные текстовые индексы. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
* В `clickhouse-local` инициализирован кэш страниц, чтобы начала действовать настройка `page_cache_max_size`. [#99510](https://github.com/ClickHouse/ClickHouse/pull/99510) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена редкая ошибка, из-за которой часть данных некорректно помечалась как повреждённая и отсоединялась после запроса `DETACH/ATTACH TABLE`. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено исключение `std::length_error`, возникавшее при запросе пустых системных таблиц в формате Pretty через HTTP-интерфейс. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен `LOGICAL_ERROR` при использовании `ALTER TABLE ADD COLUMN` для создания `EPHEMERAL`-столбца с тем же именем, что у виртуального столбца (например, `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой записи `VectorSimilarityIndexCache` никогда не вытеснялись после удаления части данных из-за несовпадения ключей кэша. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
* Запретить чтение учетных данных Google из локального файла. Эта настройка небезопасна, поскольку позволяет читать и другие учетные данные, если известен путь к файлу. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Устранена деградация производительности в анализаторе. Из ARRAY JOIN исключены неиспользуемые столбцы. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
* Исправлено чтение текстового индекса в таблице при наличии легковесных удалений и политик доступа на уровне строк. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено разыменование nullptr в ридере Parquet, когда в ветке filter-in-decoder встречаются отфильтрованные страницы. Закрывает [#99676](https://github.com/ClickHouse/ClickHouse/issues/99676). [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен некорректный переход seek в AsynchronousReadBufferFromFileDescriptor с O\_DIRECT. Закрывает [#99358](https://github.com/ClickHouse/ClickHouse/issues/99358). [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены переполнение буфера в куче в `CompressionCodecT64` и аварийное завершение процесса в `CompressionCodecMultiple` при распаковке повреждённых сжатых данных. Обе проблемы были обнаружены новыми таргетами libFuzzer. Теперь кодеки генерируют исключение вместо сбоя. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul](https://github.com/motsc)).
* Откладывать обработку, пока сервер не завершит загрузку всех таблиц. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлен обход `RemoteHostFilter` источником словаря MySQL при использовании встроенных параметров DDL. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена логическая ошибка при обходе таблиц озёр данных в `system.tables`. [#99739](https://github.com/ClickHouse/ClickHouse/pull/99739) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен анализ предикатов с функцией `IN` для текстового индекса с предобработчиком. Исправлена коллизия искомых токенов в текстовом индексе, которая могла приводить к некорректным результатам. [#99755](https://github.com/ClickHouse/ClickHouse/pull/99755) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлен бесконечный цикл при чтении файлов формата `Npy` с отрицательными значениями размерностей в shape. [#99812](https://github.com/ClickHouse/ClickHouse/pull/99812) ([Desel72](https://github.com/Desel72)).
* Исправлен global-buffer-overflow в функции `CRC32` на аргументах `FixedString`, возникавший при вычислении с нулевым числом строк во время расчёта заголовка плана запроса. [#99835](https://github.com/ClickHouse/ClickHouse/pull/99835) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой (обращение по нулевому указателю) при выполнении `ALTER TABLE ... MODIFY COLUMN ... COMMENT` для таблиц Iceberg. [#99838](https://github.com/ClickHouse/ClickHouse/pull/99838) ([Desel72](https://github.com/Desel72)).
* Исправлена настройка `aggregate_functions_null_for_empty`: теперь она работает с агрегатными функциями, возвращающими типы, отличные от `Nullable`, такие как `Array` или `Map` (например, `groupArray`, `sumMap`). [#99839](https://github.com/ClickHouse/ClickHouse/pull/99839) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение LOGICAL\_ERROR в функции `midpoint`, которое возникало при вызове со смешанными знаковыми и беззнаковыми целочисленными типами. [#99867](https://github.com/ClickHouse/ClickHouse/pull/99867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение "Block structure mismatch" в запросах с предложением HAVING, где выражение фильтра содержит и агрегатную функцию, обёрнутую в функцию, возвращающую NULL, и `materialize(0)`. [#99915](https://github.com/ClickHouse/ClickHouse/pull/99915) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка assertion failure в `sipHash128Keyed` (и аналогичных хеш-функциях с ключом), когда аргумент data имеет тип Map с ключами-массивами или другими вложенными типами массивов. [#99921](https://github.com/ClickHouse/ClickHouse/pull/99921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` "Not-ready Set" в функции `IN` при оптимизации плана выполнения запроса с `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* Сокращено время компиляции за счёт удаления тяжёлых включений заголовочных файлов и переноса затратных инстанцирований шаблонов из заголовков. [#97893](https://github.com/ClickHouse/ClickHouse/pull/97893) ([Raúl Marín](https://github.com/Algunenano)).
* Сокращено время компиляции арифметических функций и связанных с ними заголовочных файлов за счёт уменьшения матриц диспетчеризации шаблонов и удаления тяжёлых включений. [#98204](https://github.com/ClickHouse/ClickHouse/pull/98204) ([Raúl Marín](https://github.com/Algunenano)).
* Используется `mongo-c-driver` 2.2.2. [#98304](https://github.com/ClickHouse/ClickHouse/pull/98304) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `postgres` REL\_18\_3. [#98306](https://github.com/ClickHouse/ClickHouse/pull/98306) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Для сборок UBSan включён jemalloc allocator, чтобы избежать накопления RSS из-за неэффективного возврата памяти в glibc malloc. [#98444](https://github.com/ClickHouse/ClickHouse/pull/98444) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Используется манглинг символов Rust v0, а из библиотеки PRQL удалены внутренние символы, чтобы сократить разрастание имён символов из библиотек combinator для parser. [#98446](https://github.com/ClickHouse/ClickHouse/pull/98446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В `tests/benchmarks` добавлены набор бенчмарков TPC-H и README для TPC-DS. [#98495](https://github.com/ClickHouse/ClickHouse/pull/98495) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавлены тесты корректности для всех 99 запросов TPC-DS. [#99204](https://github.com/ClickHouse/ClickHouse/pull/99204) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавлен интеграционный тест, воспроизводящий баг с DDL CREATE TABLE + ALTER при офлайн-реплике ([#44070](https://github.com/ClickHouse/ClickHouse/issues/44070)); он помечен как ожидаемо завершающийся с ошибкой. [#99259](https://github.com/ClickHouse/ClickHouse/pull/99259) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Интегрирован jemalloc с префиксом `je_`, удалено использование `--wrap` компоновщика. [#99342](https://github.com/ClickHouse/ClickHouse/pull/99342) ([Azat Khuzhin](https://github.com/azat)).

<div id="262">
  ### Релиз ClickHouse 26.2, 2026-02-26. [Презентация](https://presentations.clickhouse.com/2026-release-26.2/), [Видео](https://www.youtube.com/watch?v=7qHba08vNfo)
</div>

<div id="267-backward-incompatible-change">
  #### обратно несовместимое изменение
</div>

* Дедупликация по умолчанию включена для всех вставок. Раньше она была отключена для асинхронных вставок и MV, но включена для синхронных вставок. Цель — сделать одинаковые значения по умолчанию для обоих способов вставки. Если в вашем кластере дедупликация явно отключена, чтобы сохранить прежнее поведение, нужно явно установить `deduplicate_insert='backward_compatible_choice'`. То же самое касается `deduplicate_blocks_in_dependent_materialized_views`. [#95970](https://github.com/ClickHouse/ClickHouse/pull/95970) ([Sema Checherinda](https://github.com/CheSema)).
* Улучшен формат хранения статистики: теперь вся статистика хранится в одном файле. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)). Если вы не включали статистику таблиц явно, этот пункт можно проигнорировать.
* Ограничен объём метаданных S3(Azure)Queue, хранимых в памяти. Системные таблицы переименованы: `azure_queue` в `azure_queue_metadata_cache`, а `system.s3queue` — в `s3queue_metadata_cache`. [#95809](https://github.com/ClickHouse/ClickHouse/pull/95809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ранее при применении функции к столбцу `Variant` при несовместимости подтипа variant с функцией молча возвращались значения NULL; теперь генерируется исключение, что может нарушить работу запросов, которые опирались на такое поведение с молчаливым возвратом NULL. [#95811](https://github.com/ClickHouse/ClickHouse/pull/95811) ([Bharat Nallan](https://github.com/bharatnc)).
* Столбцы `DATE` из PostgreSQL теперь в ClickHouse автоматически определяются как `Date32` (в предыдущих версиях они определялись как `Date`, что приводило к переполнению значений за пределами узкого диапазона). Разрешена вставка значений `Date32` обратно в PostgreSQL. Закрывает [#73084](https://github.com/ClickHouse/ClickHouse/issues/73084). [#95999](https://github.com/ClickHouse/ClickHouse/pull/95999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Семантика настройки `do_not_merge_across_partitions_select_final` стала понятнее. Ранее эта возможность могла включаться автоматически, даже если настройка не была явно задана в конфигурации. Это неоднократно вызывало путаницу и, к сожалению, приводило к проблемам в продакшне. Теперь правила проще: `do_not_merge_across_partitions_select_final=1` безусловно включает эту возможность. Если `do_not_merge_across_partitions_select_final=0`, автоматический режим используется только при `enable_automatic_decision_for_merging_across_partitions_for_final=1`, а в противном случае не используется. Чтобы максимально сохранить прежнее поведение, значения по умолчанию были установлены следующими: `do_not_merge_across_partitions_select_final=0` и `enable_automatic_decision_for_merging_across_partitions_for_final=1`. [#96110](https://github.com/ClickHouse/ClickHouse/pull/96110) ([Nikita Taranov](https://github.com/nickitat)).
* При создании таблицы S3 с явно указанными столбцами ClickHouse теперь проверяет, что эти имена столбцов действительно присутствуют в схеме удалённого файла. Запросы, которые раньше работали при несовпадении имён столбцов, теперь будут завершаться ошибкой уже на этапе создания таблицы. Это закрывает [#96089](https://github.com/ClickHouse/ClickHouse/issues/96089). [#96194](https://github.com/ClickHouse/ClickHouse/pull/96194) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Запрещено использование подзапросов в ORDER BY и других ключевых выражениях таблицы. [#96847](https://github.com/ClickHouse/ClickHouse/pull/96847) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* По умолчанию включить `apply_row_policy_after_final`. Изначально, когда `optimize_move_to_prewhere_if_final=0`, и ROW POLICY, и PREWHERE учитывали FINAL и применялись после FINAL. Это поведение было нарушено в [#87303](https://github.com/ClickHouse/ClickHouse/issues/87303), где для фильтра ROW POLICY игнорировался параметр `optimize_move_to_prewhere_if_final`. Чтобы это исправить, в данном PR включается настройка `apply_row_policy_after_final`, добавленная в [#91065](https://github.com/ClickHouse/ClickHouse/issues/91065). При включенном `apply_row_policy_after_final` ROW POLICY, как и раньше, по умолчанию продолжает учитывать FINAL. Этот PR вносит несовместимое изменение, поскольку меняет поведение для `optimize_move_to_prewhere_if_final=1`. Теперь, чтобы ROW POLICY применялся до FINAL, следует использовать `apply_row_policy_after_final`, а не `optimize_move_to_prewhere_if_final`. [#97279](https://github.com/ClickHouse/ClickHouse/pull/97279) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Тип `Date` теперь сериализуется как встроенный тип Arrow `date32` в форматах Arrow/ArrowStream вместо `uint16`. Инструменты вроде PyArrow теперь будут корректно распознавать столбец как тип даты. Прежнее поведение можно восстановить с помощью настройки `output_format_arrow_date_as_uint16`. Чтение старых файлов Arrow, в которых для столбцов `Date` использовался `uint16`, по-прежнему поддерживается. [#96860](https://github.com/ClickHouse/ClickHouse/pull/96860) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-new-feature">
  #### Новая возможность
</div>

* Теперь пользователи могут напрямую использовать ClickStack (интерфейс обсервабилити) из ClickHouse, что удобно для отладки и локальной разработки. [#96597](https://github.com/ClickHouse/ClickHouse/pull/96597) ([Aaron Knudtson](https://github.com/knudtty)).
* Добавлена поддержка одноразовых паролей на основе времени (TOTP) в качестве метода аутентификации. [#71273](https://github.com/ClickHouse/ClickHouse/pull/71273) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Добавлена настройка базы данных `lazy_load_tables`. Когда она включена, таблицы не загружаются при запуске базы данных — вместо них создается легковесный `StorageTableProxy`, а настоящий движок таблицы материализуется при первом обращении. [#96283](https://github.com/ClickHouse/ClickHouse/pull/96283) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Добавлена настройка `input_format_max_block_wait_ms`, позволяющая выдавать блоки данных по тайм-ауту, а также разрешена обработка оставшихся данных при неожиданном закрытии HTTP-соединения. [#94509](https://github.com/ClickHouse/ClickHouse/pull/94509) ([Mostafa Mohamed Salah](https://github.com/Sasao4o)).
* Интеграция с каталогом Google BigLake. Закрывает [#95339](https://github.com/ClickHouse/ClickHouse/issues/95339). [#97104](https://github.com/ClickHouse/ClickHouse/pull/97104) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлена системная таблица `system.tokenizers`, содержащая список всех доступных токенизаторов. [#96753](https://github.com/ClickHouse/ClickHouse/pull/96753) ([Robert Schulze](https://github.com/rschu1ze)).
* Добавлена новая системная таблица `system.user_defined_functions` для мониторинга статуса загрузки UDF и настроек. [#90340](https://github.com/ClickHouse/ClickHouse/pull/90340) ([Xu Jia](https://github.com/XuJia0210)).
* Добавлена таблица `system.jemalloc_stats`, показывающая статистику аллокатора памяти jemalloc (через `malloc_stats_print`) для диагностики использования памяти на серверах, собранных с jemalloc. Также в HTTP-интерфейс ClickHouse добавлена HTTP-конечная точка `/jemalloc.html` для интерактивной визуализации этой статистики. [#97077](https://github.com/ClickHouse/ClickHouse/pull/97077) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлена таблица `system.jemalloc_profile_text` для чтения и анализа профилей кучи jemalloc. Формат вывода задается настройкой `jemalloc_profile_text_output_format` (raw, symbolized или collapsed; по умолчанию — collapsed). Разрешение inline-фреймов задается `jemalloc_profile_text_symbolize_with_inline` (если параметр включен, inline-фреймы включаются ценой более медленной символизации; если отключен, они пропускаются для более быстрого вывода). Для формата collapsed параметр `jemalloc_profile_text_collapsed_use_count` определяет, взвешиваются ли стеки по числу активных аллокаций (true) или по объему активных байт (false, по умолчанию). Это упрощает профилирование памяти и визуализацию флеймграфов для профилей кучи jemalloc. Исправляет [#93248](https://github.com/ClickHouse/ClickHouse/issues/93248). [#97218](https://github.com/ClickHouse/ClickHouse/pull/97218) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлена настройка `default_dictionary_database`, которая позволяет ClickHouse искать внешние словари, указанные без имени базы данных, в заданной базе данных по умолчанию. Это упрощает миграцию с глобальных словарей, определённых в XML, на словари отдельных баз данных, определённые в SQL, позволяя существующим запросам к словарям (например, dictGet('name', …)) продолжать работать без изменений. [#91412](https://github.com/ClickHouse/ClickHouse/pull/91412) ([Dmitrii Plotnikov](https://github.com/dimbo4ka)).
* Добавлена поддержка дополнительного ZooKeeper для `DatabaseReplicated`. [#91683](https://github.com/ClickHouse/ClickHouse/pull/91683) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Добавлены новая табличная функция `primes` и новая системная таблица `system.primes`, содержащая простые числа в порядке возрастания. Закрывает [#90839](https://github.com/ClickHouse/ClickHouse/issues/90839). [#92776](https://github.com/ClickHouse/ClickHouse/pull/92776) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Асинхронные вставки поддерживают параллельный кворум. Вставленные данные реплицируются до достижения кворума. Если обнаруживаются дубликаты, запрос ожидает, пока ранее вставленные данные тоже не будут реплицированы. [#93356](https://github.com/ClickHouse/ClickHouse/pull/93356) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлены функции `colorOKLABToSRGB` и `colorSRGBToOKLAB` для преобразования значений из sRGB в OKLAB и обратно. [#93361](https://github.com/ClickHouse/ClickHouse/pull/93361) ([Pranav Tiwari](https://github.com/pranavt84)).
* Новая настройка `deduplicate_insert`, переопределяющая `insert_deduplicate` и `async_insert_deduplicate`. [#94413](https://github.com/ClickHouse/ClickHouse/pull/94413) ([Sema Checherinda](https://github.com/CheSema)).
* Настройка сервера `insert_deduplication_version` позволяет выполнять переход на единый хеш дедупликации. [#95409](https://github.com/ClickHouse/ClickHouse/pull/95409) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлена функция хеширования `xxh3_128`. [#96055](https://github.com/ClickHouse/ClickHouse/pull/96055) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлен запрос `OPTIMIZE <table> DRY RUN PARTS <part names>` для имитации слияний без коммита результирующей части. Это может быть полезно при тестировании: для проверки корректности слияний в новой версии, детерминированного воспроизведения ошибок, связанных со слияниями, и надёжного бенчмаркинга производительности слияний. [#96122](https://github.com/ClickHouse/ClickHouse/pull/96122) ([Anton Popov](https://github.com/CurtizJ)).
* Добавлена новая проверка, по умолчанию включенная настройкой `check_named_collection_dependencies`, чтобы предотвратить удаление именованных коллекций, используемых таблицами. [#96181](https://github.com/ClickHouse/ClickHouse/pull/96181) ([Pablo Marcos](https://github.com/pamarcos)).
* Добавлен `system.fail_points` для просмотра существующих failpoint’ов в сервере и проверки, включены они или нет. Это поможет автоматизировать тестирование. [#96762](https://github.com/ClickHouse/ClickHouse/pull/96762) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Добавлена поддержка ролевого доступа к каталогу Glue. Используйте настройки `aws_role_arn` и, при необходимости, `aws_role_session_name`. [#90825](https://github.com/ClickHouse/ClickHouse/pull/90825) ([Antonio Andelic](https://github.com/antonio2368)).
* Добавлен параметр `add_minmax_index_for_temporal_columns`, который при включении автоматически создает индексы MinMax для всех столбцов `Date`, `Date32`, `Time`, `Time64`, `DateTime` и `DateTime64`. [#93355](https://github.com/ClickHouse/ClickHouse/pull/93355) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Поддержка расширенных псевдонимов таблиц в JOIN (запросы вида `SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b`). Закрывает [#95131](https://github.com/ClickHouse/ClickHouse/issues/95131). [#95331](https://github.com/ClickHouse/ClickHouse/pull/95331) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена поддержка `ALTER TABLE RENAME COLUMN` для таблиц Iceberg. Ранее поддерживались только `ADD COLUMN`, `DROP COLUMN` и `MODIFY COLUMN`. [#97455](https://github.com/ClickHouse/ClickHouse/pull/97455) ([murphy-4o](https://github.com/murphy-4o)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Текстовый индекс теперь доступен в статусе GA. [#96794](https://github.com/ClickHouse/ClickHouse/pull/96794) ([Robert Schulze](https://github.com/rschu1ze)).
* Тип данных `QBit` для хранения векторов в квантованном битово-упакованном формате (используется для приближенного поиска ближайших соседей) теперь общедоступен и больше не требует включения экспериментальной настройки. [#95358](https://github.com/ClickHouse/ClickHouse/pull/95358) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Векторный поиск в ClickHouse теперь может использовать реплики в кластере, чтобы *распределять* нагрузку и поиск по частям векторного индекса. Это позволяет ClickHouse поддерживать крупные векторные индексы, которые превышают объем памяти одной VM. [#95876](https://github.com/ClickHouse/ClickHouse/pull/95876) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Добавлен AST-фаззер на стороне сервера, управляемый настройками `ast_fuzzer_runs` и `ast_fuzzer_any_query`. Когда он включен, сервер после обычного выполнения каждого запроса запускает его случайные мутации, отбрасывая результаты. [#97568](https://github.com/ClickHouse/ClickHouse/pull/97568) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В экспериментальный диалект KQL добавлена функция `iif`. [#94790](https://github.com/ClickHouse/ClickHouse/pull/94790) ([happyso](https://github.com/sunyeongchoi)).
* Автоматическое определение схемы теперь учитывает `allow_experimental_nullable_tuple_type`. Когда эта возможность включена, выведенные типы кортежей могут быть `Nullable(Tuple(...))`, поэтому отсутствующие вложенные объекты могут становиться `NULL` вместо кортежа из элементов `NULL`. [#95525](https://github.com/ClickHouse/ClickHouse/pull/95525) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Настройка `use_statistics_cache` теперь включена по умолчанию, поэтому статистика столбцов кэшируется в памяти для ускорения оптимизации запросов без необходимости заново загружать ее из каждой части. [#95950](https://github.com/ClickHouse/ClickHouse/pull/95950) ([Han Fei](https://github.com/hanfei1991)).

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* Теперь для пропуска данных можно использовать любое детерминированное выражение в первичном ключе (например, `ORDER BY cityHash64(user_id)`/ `ORDER BY length(user_id)`). Для детерминированных выражений ClickHouse может применить выражение к константам запроса и использовать результат в индексе первичного ключа для предикатов `=`, `IN` и `has`. Если выражение также инъективно (например, `ORDER BY hex(p)` или `ORDER BY reverse(tuple(reverse(p), hex(p)))`), индекс можно эффективно использовать и для отрицательных форм: `!=`, `NOT IN` и `NOT has`. Закрывает [#10685](https://github.com/ClickHouse/ClickHouse/issues/10685). Закрывает [#82161](https://github.com/ClickHouse/ClickHouse/issues/82161). [#92952](https://github.com/ClickHouse/ClickHouse/pull/92952) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Улучшен формат хранения статистики. Теперь вся статистика сохраняется в одном файле. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)).
* Разрешено параллельное чтение для удалённых движков таблиц/функций в файловом кэше. [#71781](https://github.com/ClickHouse/ClickHouse/pull/71781) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлена возможность использовать кэш страниц в пространстве пользователя с локальными файлами и табличными функциями объектного хранилища. [#77874](https://github.com/ClickHouse/ClickHouse/pull/77874) ([Michael Kolupaev](https://github.com/al13n321)).
* Исключены ненужные `memcpy` в кэше страниц в пространстве пользователя. [#77884](https://github.com/ClickHouse/ClickHouse/pull/77884) ([Michael Kolupaev](https://github.com/al13n321)).
* Теперь для `concurrent_threads_scheduler` по умолчанию используется `max_min_fair` вместо `fair_round_robin`. Это повышает справедливость при высокой нагрузке, отдавая приоритет запросам, которым выделено меньше слотов, поэтому короткие запросы не страдают из-за длинных. [#95300](https://github.com/ClickHouse/ClickHouse/pull/95300) ([Sergei Trifonov](https://github.com/serxa)).
* Если запрос `FINAL` использовал для фильтрации условие по первичному ключу, а затем индекс пропуска данных для других условий, то шаг обработки `PrimaryKeyExpand` теперь будет проверять на пересечение только изначально отобранные диапазоны первичного ключа. [#94903](https://github.com/ClickHouse/ClickHouse/pull/94903) ([Shankar Iyer](https://github.com/shankar-iyer)).
* При использовании параллельных реплик с табличными функциями, такими как `s3(...)`, запросы, в которых табличная функция обёрнута в один подзапрос, теперь автоматически распараллеливаются по репликам, тогда как раньше распараллеливались только прямые обращения к табличным функциям. Закрывает [#92264](https://github.com/ClickHouse/ClickHouse/issues/92264). [#96332](https://github.com/ClickHouse/ClickHouse/pull/96332) ([phulv94](https://github.com/phulv94)).
* Добавлена возможность разделять данные и системные файлы в кэше на отдельные сегменты. [#87834](https://github.com/ClickHouse/ClickHouse/pull/87834) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Некоторые операции hash join ускорены за счёт реализации динамической диспетчеризации для `ColumnVector::replicate`. [#79573](https://github.com/ClickHouse/ClickHouse/pull/79573) ([Raúl Marín](https://github.com/Algunenano)).
* Повышение производительности параллельного hash JOIN в случаях со сложными предикатами. Ранее строки, не вошедшие в JOIN, обрабатывались в одном потоке, что неоптимально; суть этой оптимизации — распараллелить обработку таких строк между несколькими потоками. Можно включать и отключать с помощью настройки `parallel_non_joined_rows_processing`. Включено по умолчанию. [#92068](https://github.com/ClickHouse/ClickHouse/pull/92068) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Немного оптимизирован парсинг типа JSON. [#93614](https://github.com/ClickHouse/ClickHouse/pull/93614) ([Pavel Kruglov](https://github.com/Avogar)).
* Уменьшено потребление памяти AST. Оптимизация оправдана, поскольку поля не используются, если не используется подсветка и не выполняется парсинг VALUES. [#93974](https://github.com/ClickHouse/ClickHouse/pull/93974) ([Ilya Yatsishin](https://github.com/qoega)).
* Оптимизировано потребление памяти объектами AST для именованных Tuple. Имена столбцов теперь хранятся в объекте Tuple как строки, а не в универсальных узлах литералов AST. [#94704](https://github.com/ClickHouse/ClickHouse/pull/94704) ([Ilya Yatsishin](https://github.com/qoega)).
* Девиртуализация улучшена за счёт дополнительных параметров компоновщика. [#94737](https://github.com/ClickHouse/ClickHouse/pull/94737) ([Nikita Taranov](https://github.com/nickitat)).
* Повышена производительность клонирования реплики в таблицах ReplicatedMergeTree с большим числом частей благодаря пакетированию запросов ZooKeeper. [#94847](https://github.com/ClickHouse/ClickHouse/pull/94847) ([c-end](https://github.com/c-end)).
* Когда на шаге чтения уже были фильтры PREWHERE, добавить новый фильтр было невозможно. Это изменение откладывает оптимизацию PREWHERE до оптимизации runtime filter для JOIN, чтобы runtime filters тоже можно было перенести в PREWHERE. [#95838](https://github.com/ClickHouse/ClickHouse/pull/95838) ([Alexander Gololobov](https://github.com/davenger)).
* Ускорено сжатие кодеком `T64` благодаря использованию динамической диспетчеризации на x86. [#95881](https://github.com/ClickHouse/ClickHouse/pull/95881) ([Raúl Marín](https://github.com/Algunenano)).
* Ускорен `uniq` для числовых типов за счёт батчинга вставок, когда это возможно (без NULL, без `-If`, без `GROUP BY`, без IPv6 и String). [#95904](https://github.com/ClickHouse/ClickHouse/pull/95904) ([Raúl Marín](https://github.com/Algunenano)).
* Низкоуровневые оптимизации для Keeper: было выявлено, что `ZooKeeper::observeOperations` потребляет >20% CPU потока приёма ZooKeeper. Это изменение решает проблему следующим образом: 1. Для `AggregatedZooKeeperLog::stats` используется `CityHash64` вместо `SipHash`, что более чем в 10 раз быстрее. 2. Для `Coordination::ErrorCounter` используется `std::array<std::atomic<UInt32>, N>` вместо `std::unordered_map` и `std::mutex`. [#95962](https://github.com/ClickHouse/ClickHouse/pull/95962) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Убрано 64-байтовое выравнивание для ProfileEvents::Counter, чтобы сэкономить память. [#96097](https://github.com/ClickHouse/ClickHouse/pull/96097) ([Azat Khuzhin](https://github.com/azat)).
* Оптимизация памяти: размер структуры `CachedOnDiskReadBufferFromFile` сокращён в 50 раз. [#96098](https://github.com/ClickHouse/ClickHouse/pull/96098) ([Azat Khuzhin](https://github.com/azat)).
* Не копировать старые данные при изменении размера пустой хеш-таблицы. [#96180](https://github.com/ClickHouse/ClickHouse/pull/96180) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена поддержка JOIN Runtime Filters для `RIGHT OUTER` JOIN. [#96183](https://github.com/ClickHouse/ClickHouse/pull/96183) ([Hechem Selmi](https://github.com/m-selmi)).
* Оптимизация `enable_join_runtime_filters` теперь включена по умолчанию. [#89314](https://github.com/ClickHouse/ClickHouse/pull/89314) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ранее оптимизация прямого чтения для текстового индекса применялась только в том случае, если во всех частях был материализованный текстовый индекс. В этом PR добавлена частичная поддержка: если материализованный текстовый индекс есть только в некоторых частях, он будет использоваться для них, а для частей без материализованного текстового индекса будет выполняться исходное выражение фильтра. [#96411](https://github.com/ClickHouse/ClickHouse/pull/96411) ([Anton Popov](https://github.com/CurtizJ)).
* Добавлены вторичные индексы `minmax` для временных столбцов и индексы `bloom_filter` для столбцов `query_id`/`initial_query_id` в системных таблицах логов, чтобы ускорить фильтрацию. [#96712](https://github.com/ClickHouse/ClickHouse/pull/96712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Оптимизация отложенной материализации теперь применяется ко всем ветвям запроса `UNION ALL`, а не только к первой. Запросы, которые объединяют несколько отсортированных и ограниченных чтений из разных таблиц `MergeTree` через `UNION ALL`, теперь будут использовать отложенное чтение столбцов в каждой ветви, снижая I/O. [#96832](https://github.com/ClickHouse/ClickHouse/pull/96832) ([Federico Ginosa](https://github.com/menxit)).
* Оптимизировано вычисление индекса пропуска данных minmax при INSERT: устранено лишнее копирование данных и добавлен векторизованный расчёт min/max для числовых столбцов. [#97392](https://github.com/ClickHouse/ClickHouse/pull/97392) ([Raúl Marín](https://github.com/Algunenano)).
* Движок `DeltaLake` теперь берет результат `count()` из метаданных delta lake и показывает корректную статистику таблицы в system.tables (общее число байт/строк). [#96190](https://github.com/ClickHouse/ClickHouse/pull/96190) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Неиспользуемые столбцы также исключаются из этапа чтения при чтении из MergeTree. Это особенно полезно, когда фильтр переносится в `PREWHERE`. [#89982](https://github.com/ClickHouse/ClickHouse/pull/89982) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Улучшена обработка запроса `SHOW TABLES`: теперь извлекаются только имена таблиц; также улучшен getLightweightTablesIterator, чтобы он возвращал структуру, содержащую только имена таблиц. Исправляет [#93835](https://github.com/ClickHouse/ClickHouse/issues/93835). [#94467](https://github.com/ClickHouse/ClickHouse/pull/94467) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Улучшены `assumeNotNull`, `coalesce` и `ifNull`, чтобы задействовать отсечение по первичному ключу и индексу пропуска данных для диапазонных предикатов, когда столбцы ключа обёрнуты в эти функции. Закрывает [#94689](https://github.com/ClickHouse/ClickHouse/issues/94689). [#94754](https://github.com/ClickHouse/ClickHouse/pull/94754) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* В запрос Keeper getChildren добавлены расширения with\_data и with\_stat. Это позволяет за одну операцию получать не только список дочерних узлов, но и их `stat` и/или `data`. [#94826](https://github.com/ClickHouse/ClickHouse/pull/94826) ([Nikolay Degterinsky](https://github.com/evillique)).
* Анализ индексов выполняется только один раз (в большинстве случаев), независимо от того, будет ли в итоге выполняться локальный план или план с параллельными репликами. [#94854](https://github.com/ClickHouse/ClickHouse/pull/94854) ([Nikita Taranov](https://github.com/nickitat)).
* Добавлена возможность включать распределённый анализ индексов в зависимости от количества частей (`distributed_index_analysis_min_parts_to_activate`) и размера индексов (`distributed_index_analysis_min_indexes_size_to_activate`). [#95216](https://github.com/ClickHouse/ClickHouse/pull/95216) ([Azat Khuzhin](https://github.com/azat)).
* Включена PREWHERE optimization для таблиц Iceberg. [#95476](https://github.com/ClickHouse/ClickHouse/pull/95476) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Уменьшено потребление памяти у некоторых классов AST. [#95514](https://github.com/ClickHouse/ClickHouse/pull/95514) ([Raúl Marín](https://github.com/Algunenano)).
* Ограничено число потоков конвейера, создаваемых при включенной настройке `split_intersecting_parts_ranges_into_layers`. Это помогает избежать чрезмерного потребления памяти. [#96478](https://github.com/ClickHouse/ClickHouse/pull/96478) ([Nikita Taranov](https://github.com/nickitat)).
* Реализована оптимизация эквивалентных наборов для нескольких JOIN. Запросы с несколькими последовательными операциями `INNER JOIN` теперь выигрывают от улучшенной оптимизации pushdown фильтров. Когда таблицы объединяются по эквивалентным столбцам (например, `t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10`), фильтры, применённые к любой таблице в цепочке, автоматически проталкиваются для всех таблиц. Закрывает [#96550](https://github.com/ClickHouse/ClickHouse/issues/96550). [#96596](https://github.com/ClickHouse/ClickHouse/pull/96596) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Оптимизировано сканирование метаданных Delta Lake. Использованы изменения из PR delta-kernel [https://github.com/delta-io/delta-kernel-rs/pull/1827](https://github.com/delta-io/delta-kernel-rs/pull/1827). [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686) ([Kseniia Sumarokova](https://github.com/kssenii)).
* В базе данных Replicated больше не обновляется кэш кластера для каждого фиктивного запроса. [#96897](https://github.com/ClickHouse/ClickHouse/pull/96897) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Используйте индекс первичного ключа при использовании фильтра `startsWithUTF8`, если префикс содержит только символы ASCII. [#97055](https://github.com/ClickHouse/ClickHouse/pull/97055) ([vkcku](https://github.com/vkcku)).

<div id="267-improvement">
  #### Улучшения
</div>

* Добавлена трассировка OpenTelemetry для запросов Keeper. [#91332](https://github.com/ClickHouse/ClickHouse/pull/91332) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Новые параметры конфигурации: `logger.startup_console_level` и `logger.shutdown_console_level`, позволяющие переопределить уровень логирования в консоль во время запуска и завершения работы ClickHouse соответственно. [#95919](https://github.com/ClickHouse/ClickHouse/pull/95919) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* Учитывать переопределения из командной строки при перезагрузке конфигурации. Закрывает [#80294](https://github.com/ClickHouse/ClickHouse/issues/80294). [#80295](https://github.com/ClickHouse/ClickHouse/pull/80295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Разрешены переопределения параметров именованной коллекции в формате ключ-значение в табличной функции `mongodb`. [#89616](https://github.com/ClickHouse/ClickHouse/pull/89616) ([vanchaklar](https://github.com/vanchaklar)).
* Оптимизация чтения в порядке сортировки для таблиц Iceberg теперь работает со сложными функциями сортировки, такими как `icebergBucket` и `icebergTruncate`, а не только с простыми ссылками на столбцы. [#90256](https://github.com/ClickHouse/ClickHouse/pull/90256) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлен новый столбец parts\_postpone\_reasons в system.mutations для улучшения диагностики; в нем отображаются причины отложенной обработки частей. [#92206](https://github.com/ClickHouse/ClickHouse/pull/92206) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Отслеживание изменений числа строк для чтения (из-за вставок/удалений или использования кэша условий запроса) в `DataflowStatisticsCache`. [#93636](https://github.com/ClickHouse/ClickHouse/pull/93636) ([Nikita Taranov](https://github.com/nickitat)).
* Добавлена поддержка запроса SYSTEM RESET DDL WORKER \[ON CLUSTER]. Он сбрасывает состояние DDLWorker в основном потоке. Это полезно для обновления активной реплики при изменении идентификаторов хостов. [#93780](https://github.com/ClickHouse/ClickHouse/pull/93780) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Добавлена поддержка `mutation_ids` в `system.part_log` для типов событий `MUTATE_PART` и `MUTATE_PART_START`. [#93811](https://github.com/ClickHouse/ClickHouse/pull/93811) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Фоновые операции (Mutate, Merge) теперь можно настраивать независимо через профиль 'background'. Ранее для таких операций использовались те же настройки, что и для обычных запросов, через профиль 'default'. [#93905](https://github.com/ClickHouse/ClickHouse/pull/93905) ([Arsen Muk](https://github.com/arsenmuk)).
* В `system.crash_log` добавлено больше информации. [#94112](https://github.com/ClickHouse/ClickHouse/pull/94112) [#95857](https://github.com/ClickHouse/ClickHouse/pull/95857) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена новая метрика `QueryNonInternal` для отслеживания количества выполняющихся не внутренних запросов. Эта метрика публикуется как `ClickHouseMetrics_QueryNonInternal` и помогает операторам контролировать параллелизм запросов относительно ограничения `max_concurrent_queries`, которое применяется только к не внутренним запросам. [#94284](https://github.com/ClickHouse/ClickHouse/pull/94284) ([Ashwath Singh](https://github.com/ashwath)).
* Добавлена поддержка сбора статистики входных байтов для столбцов из компактных частей в `RuntimeDataflowStatisticsCacheUpdater`. [#94626](https://github.com/ClickHouse/ClickHouse/pull/94626) ([Nikita Taranov](https://github.com/nickitat)).
* Добавлена проверка на некорректную конфигурацию Keeper, приводящую к сбоям при формировании кластера. Закрывает [#60932](https://github.com/ClickHouse/ClickHouse/issues/60932). [#94682](https://github.com/ClickHouse/ClickHouse/pull/94682) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Улучшена десериализация JSON-префиксов при загрузке части. [#94848](https://github.com/ClickHouse/ClickHouse/pull/94848) ([Pavel Kruglov](https://github.com/Avogar)).
* Переработана операция записи с использованием полного конвейера INSERT, который запускает materialized views для целевой таблицы. [#94890](https://github.com/ClickHouse/ClickHouse/pull/94890) ([Kai Zhu](https://github.com/nauu)).
* Используйте оптимизации плана поиска по векторному сходству только при наличии индекса для столбца поиска. [#94998](https://github.com/ClickHouse/ClickHouse/pull/94998) ([Eduard Karacharov](https://github.com/korowa)).
* Проверять общий лимит памяти перед аутентификацией пользователя и выдавать `(total) memory limit exceeded`, если общий лимит превышает допустимое значение. [#95003](https://github.com/ClickHouse/ClickHouse/pull/95003) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Добавлен параметр конфигурации `throw_on_unmatched_row_policies`, который во включенном состоянии генерирует исключение, если пользователь выполняет запрос к таблице, для которой заданы политики строк, но ни одна из них к нему не применяется, — это предотвращает неоднозначное поведение, при котором из-за неправильной настройки управления доступом возвращаются все строки. [#95014](https://github.com/ClickHouse/ClickHouse/pull/95014) ([Vitaly Baranov](https://github.com/vitlibar)).
* Динамическое обновление токенов доступа S3 в длительных запросах при использовании Unity Catalog. Это закрывает [#93981](https://github.com/ClickHouse/ClickHouse/issues/93981). [#95069](https://github.com/ClickHouse/ClickHouse/pull/95069) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Отключается механизм decay для dirty page в jemalloc, если ClickHouse испытывает длительное давление по памяти в течение `memory_worker_decay_adjustment_period_ms` миллисекунд. Механизм decay для dirty page в jemalloc снова включается, если ClickHouse работает в нормальных условиях в течение того же промежутка времени. [#95145](https://github.com/ClickHouse/ClickHouse/pull/95145) ([Antonio Andelic](https://github.com/antonio2368)).
* Поддержка дополнительного Zookeeper в S3Queue при использовании настройки `keeper_path` из s3Queue. [#95203](https://github.com/ClickHouse/ClickHouse/pull/95203) ([Diego Nieto](https://github.com/lesandie)).
* Учитывается `max_parts_to_merge_at_once` при TTL-слияниях частей с `drop`. [#95315](https://github.com/ClickHouse/ClickHouse/pull/95315) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлены `connection_address` и `connection_port` в query\_log для отображения физического соединения (`address` и `port` подменяются при подключении через прокси и auth\_use\_forwarded\_address=1). [#95471](https://github.com/ClickHouse/ClickHouse/pull/95471) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлен некорректный учёт памяти для кэша условий запроса. Основная проблема заключалась в том, что не учитывался ключ кэша, состоящий из нескольких строк (например, part\_name, идентификатора таблицы и всего SQL-условия). [#95478](https://github.com/ClickHouse/ClickHouse/pull/95478) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Сервер, запущенный со встроенной конфигурацией, позволит управлять пользователями и привилегиями и сохранять их в каталоге `access`, как и при обычной конфигурации. Это упрощает тестирование. Также во встроенной конфигурации и в clickhouse-local были включены все улучшения access\_control. [#95481](https://github.com/ClickHouse/ClickHouse/pull/95481) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшены сообщения об ошибках аутентификации S3: теперь при отказе в доступе они содержат подсказку проверить учетные данные. [#95648](https://github.com/ClickHouse/ClickHouse/pull/95648) ([Gerald Latkovic](https://github.com/batkovic75)).
* Включён кэш статистики, а период его обновления установлен на 300 с. [#95841](https://github.com/ClickHouse/ClickHouse/pull/95841) ([Han Fei](https://github.com/hanfei1991)).
* В `system.aggregated_zookeeper_log` добавлено имя компонента. [#95882](https://github.com/ClickHouse/ClickHouse/pull/95882) ([Antonio Andelic](https://github.com/antonio2368)).
* Не выполнять чтение из объектного хранилища при запросах к таблицам `DeltaLake` через `system.tables`. [#95899](https://github.com/ClickHouse/ClickHouse/pull/95899) ([Antonio Andelic](https://github.com/antonio2368)).
* `enable_max_bytes_limit_for_min_age_to_force_merge` теперь включён по умолчанию, если значение настройки `compatibility` — `26.2` или выше. [#95917](https://github.com/ClickHouse/ClickHouse/pull/95917) ([Christoph Wurm](https://github.com/cwurm)).
* Delta Lake теперь доступен на macOS. Закрывает #95979. [#95985](https://github.com/ClickHouse/ClickHouse/pull/95985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В предыдущих версиях при объединении конфликтующих выражений ALTER с UPDATE и RENAME COLUMN вместо корректного исключения возникала логическая ошибка. Закрывает [#70678](https://github.com/ClickHouse/ClickHouse/issues/70678). [#96022](https://github.com/ClickHouse/ClickHouse/pull/96022) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшен вывод справки для всех приложений ClickHouse, добавлена опция --no-sudo и внесено несколько исправлений. Это продолжение [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) от [Ilya Yatsishin](https://github.com/qoega). [#96025](https://github.com/ClickHouse/ClickHouse/pull/96025) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен алиас `distanceCosine` для `cosineDistance`, так как у всех остальных функций расстояния уже есть алиасы в таком формате. [#96065](https://github.com/ClickHouse/ClickHouse/pull/96065) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавлена поддержка расширения Keeper `with_data` для улучшения получения таблиц в Database Replicated. [#96090](https://github.com/ClickHouse/ClickHouse/pull/96090) ([Nikolay Degterinsky](https://github.com/evillique)).
* chdig обновлён до [v26.2.1](https://github.com/azat/chdig/releases/tag/v26.2.1) (новые возможности и поддержка macOS). [#96113](https://github.com/ClickHouse/ClickHouse/pull/96113) ([Azat Khuzhin](https://github.com/azat)).
* Улучшен pushdown фильтра для `numbers` и `primes`. Теперь ClickHouse может определять консервативные границы значений по условиям `WHERE`, когда точные границы определить невозможно, и соответственно ограничивать генерацию последовательности (например, для `WHERE number % 5 < 2 AND number > 100 AND number < 300` ClickHouse будет генерировать только числа от 100 до 300, а затем применять предикат), избегая сканирования без ограничений. Закрывает [#84853](https://github.com/ClickHouse/ClickHouse/issues/84853). Закрывает [#93913](https://github.com/ClickHouse/ClickHouse/issues/93913). [#96115](https://github.com/ClickHouse/ClickHouse/pull/96115) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ранее форматтер заключал SELECT в круглые скобки при наличии секции `COMMENT`, чтобы избежать неоднозначности при разборе. Вместо этого `COMMENT` теперь выводится перед `AS SELECT`, что устраняет неоднозначность без круглых скобок. [#96293](https://github.com/ClickHouse/ClickHouse/pull/96293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Параметр конфигурации `allow_impersonate_user` теперь находится в разделе `access_control_improvements`, а не задается как отдельная настройка сервера. [#96451](https://github.com/ClickHouse/ClickHouse/pull/96451) ([Vitaly Baranov](https://github.com/vitlibar)).
* Параметр конфигурации `core_dump.size_limit` теперь поддерживает горячую перезагрузку, поэтому для применения изменений конфигурации больше не требуется перезапускать серверы. [#96524](https://github.com/ClickHouse/ClickHouse/pull/96524) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Улучшена совместимость профилировщиков CPU и реального времени с тайм-аутами сокетов. [#96601](https://github.com/ClickHouse/ClickHouse/pull/96601) ([Sergei Trifonov](https://github.com/serxa)).
* Предотвращено повторное появление удалённых данных, если ADD COLUMN выполняется вскоре после мутации DROP COLUMN. [#96713](https://github.com/ClickHouse/ClickHouse/pull/96713) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Изменён тип `function_id` в `system.instrumentation` с LowCardinality(Int32) на Int32. [#96726](https://github.com/ClickHouse/ClickHouse/pull/96726) (Copilot).
* При синхронном ожидании мутаций теперь учитываются отмена запроса и ограничения по времени. [#96756](https://github.com/ClickHouse/ClickHouse/pull/96756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена системная команда `SYSTEM RELOAD DELTA KERNEL TRACING <level>` для изменения логирования delta-kernel, что может быть полезно при отладке. [#96763](https://github.com/ClickHouse/ClickHouse/pull/96763) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Фильтрация по семейству IP-адресов, то есть настройки `dns_allow_resolve_names_to_ipv4/ipv6`, применяется даже при отключённом DNS-кэше. [#96810](https://github.com/ClickHouse/ClickHouse/pull/96810) ([c-end](https://github.com/c-end)).
* Улучшена диагностика jemalloc. [#96840](https://github.com/ClickHouse/ClickHouse/pull/96840) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка `QUERY_CACHE_USED_WITH_SYSTEM_TABLE` в веб-интерфейсе `/play` при выполнении запросов к системным таблицам. [#96869](https://github.com/ClickHouse/ClickHouse/pull/96869) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Улучшен веб-интерфейс: favicon теперь меняется, показывая, что запрос выполняется; ошибки вспомогательных запросов (при загрузке баз данных и таблиц) теперь отображаются, а не молча игнорируются. Закрывает [#85055](https://github.com/ClickHouse/ClickHouse/issues/85055). [#96883](https://github.com/ClickHouse/ClickHouse/pull/96883) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Левую панель в интерфейсе `/play` сделали кликабельной, чтобы показывать и скрывать список баз данных. [#96884](https://github.com/ClickHouse/ClickHouse/pull/96884) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `DROP DATABASE` теперь удаляет таблицы в порядке, обратном зависимостям, что повышает устойчивость к сбоям, если в базе данных есть таблицы с зависимостями при загрузке (например, таблицы `Distributed`, использующие `joinGet`). [#97057](https://github.com/ClickHouse/ClickHouse/pull/97057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Обновлён yaml-cpp, чтобы исключить пропуск некорректного YAML. [#97333](https://github.com/ClickHouse/ClickHouse/pull/97333) ([Azat Khuzhin](https://github.com/azat)).
* Показывать индикатор загрузки на боковой панели `play.html`, пока таблицы подгружаются. [#97531](https://github.com/ClickHouse/ClickHouse/pull/97531) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена кнопка копирования в буфер обмена для неформатированных результатов запроса во встроенном веб-интерфейсе (play.html). [#97532](https://github.com/ClickHouse/ClickHouse/pull/97532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен обфускатор запросов (`clickhouse-format --obfuscate`), чтобы он в большем числе случаев генерировал SQL, который можно разобрать. [#97584](https://github.com/ClickHouse/ClickHouse/pull/97584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* После `ALTER`, изменяющих только метаданные, например при расширении списка значений Enum, оптимизация агрегации с проекцией может завершиться исключением. [#84143](https://github.com/ClickHouse/ClickHouse/pull/84143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Materialized views теперь используют базу данных, в которой они были созданы, в качестве контекста выполнения, то есть: - можно не указывать базу данных явно в именах, используемых в `select`-запросе представления - если база данных явно не указана, подразумевается та же база данных, в которой было создано materialized view. [#88193](https://github.com/ClickHouse/ClickHouse/pull/88193) ([Dmitry Kovalev](https://github.com/dk-github)).
* Исправлена подстановка параметров запроса в методах аутентификации CREATE USER при использовании предложения ON CLUSTER. Параметры запроса в методах аутентификации (например, password) не подставлялись, что приводило к ошибкам UNKNOWN\_QUERY\_PARAMETER на удалённых узлах. [#92777](https://github.com/ClickHouse/ClickHouse/pull/92777) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Исправлены несоответствия при анализе текстового индекса для функций `has`, `mapContainsKey` и `mapContainsValue`. Ранее запросы с этими функциями могли возвращать разные результаты в зависимости от того, вычислялось ли выражение с использованием текстового индекса или без него. [#93578](https://github.com/ClickHouse/ClickHouse/pull/93578) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлен сбой при подключении таблицы к базе данных `MaterializedPostgreSQL`, если `dropReplicationSlot` генерирует исключение при раскрутке стека. [#96871](https://github.com/ClickHouse/ClickHouse/pull/96871) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Сервер мог аварийно завершаться, если одновременно запускалось много резервных копий, конфликтующих из-за одних и тех же файлов. [#93659](https://github.com/ClickHouse/ClickHouse/pull/93659) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена работа запросов с параллельными репликами и JOIN с таблицей non-MT. Закрывает [#92056](https://github.com/ClickHouse/ClickHouse/issues/92056). [#93902](https://github.com/ClickHouse/ClickHouse/pull/93902) ([Igor Nikonov](https://github.com/devcrafter)).
* Исправлена проблема, из-за которой столбцы Iceberg с точками в именах возвращали NULL в качестве значений. [#94335](https://github.com/ClickHouse/ClickHouse/pull/94335) ([Mikhail Koviazin](https://github.com/mkmkme)).
* Исправлена обработка строк в кодировке UTF8 в `stringJaccardIndexUTF8` и повышена производительность. [#94613](https://github.com/ClickHouse/ClickHouse/pull/94613) ([Joanna Hulboj](https://github.com/jh0x)).
* Исправлены возможные переполнения в `WITH FILL STALENESS` (они приводили к UB и/или бесконечным циклам). Исправлен возможный бесконечный цикл из-за больших скачков. Добавлена поддержка старого анализатора (в основном для стресс-тестов). [#94663](https://github.com/ClickHouse/ClickHouse/pull/94663) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено возможное зависание распределённых запросов, когда имена хостов разрешаются в несколько адресов, а удалённая реплика перестаёт отвечать. [#94726](https://github.com/ClickHouse/ClickHouse/pull/94726) ([c-end](https://github.com/c-end)).
* Исправлен некорректный результат при выполнении JOIN нескольких табличных выражений, когда самое левое табличное выражение представляет собой табличную функцию `-Cluster`. Устраняет проблему [#89996](https://github.com/ClickHouse/ClickHouse/issues/89996). [#94748](https://github.com/ClickHouse/ClickHouse/pull/94748) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Исправлено некорректное отсечение по первичному ключу и индексу пропуска данных для предикатов, включающих `toWeek`, `toYearWeek`, `toStartOfWeek`, `toLastDayOfWeek` и `toDayOfWeek`, а также устранены исключения в некоторых из этих функций для корректных запросов с `LowCardinality(String)`. [#94816](https://github.com/ClickHouse/ClickHouse/pull/94816) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Удалена ненужная возможность пропуска проверки разрешений в запросах `ATTACH` для представления с безопасностью SQL. Это предотвращает потенциальное повышение привилегий, когда пользователь подключает представление с `definer` без проверки необходимого доступа. [#94865](https://github.com/ClickHouse/ClickHouse/pull/94865) ([pufit](https://github.com/pufit)).
* Исправлен сбой при запуске `ReplicatedMergeTree`, вызванный одновременным удалением каталогов `delete_tmp_*`. [#94892](https://github.com/ClickHouse/ClickHouse/pull/94892) ([myeongjun](https://github.com/myeongjjun)).
* Исправлена проблема с `INSERT` в таблицы Iceberg с materialized views, из-за которой терялась информация о дедупликации и возникало исключение. [#94938](https://github.com/ClickHouse/ClickHouse/pull/94938) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлена ошибка, из-за которой `SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME>` удалял весь кэш во всём кластере. [#94978](https://github.com/ClickHouse/ClickHouse/pull/94978) ([Rory Crispin](https://github.com/RoryCrispin)).
* Сохраняется постоянная гранулярность индекса (use\_const\_adaptive\_granularity) после вертикальных слияний (v2 с исправлением для Nested и в целом). [#95013](https://github.com/ClickHouse/ClickHouse/pull/95013) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена состояние гонки в файловом кэше в версии 26.1 после \[ClickHouse/ClickHouse[#82764](https://github.com/ClickHouse/ClickHouse/issues/82764)]\([https://github.com/ClickHouse/ClickHouse/pull/82764](https://github.com/ClickHouse/ClickHouse/pull/82764)). [#95042](https://github.com/ClickHouse/ClickHouse/pull/95042) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена отмена выполнения табличной функции postgresql() с помощью KILL QUERY и отмены запроса (Ctrl+C) в clickhouse-client. [#95136](https://github.com/ClickHouse/ClickHouse/pull/95136) ([Roman Vasin](https://github.com/rvasin)).
* Исправлен вывод типов для квалифицированных столбцов исходных таблиц при использовании нескольких JOIN с предложением `USING`. Ранее последующие JOIN некорректно обновляли типы исходных столбцов до общего супертипа, даже если столбец не участвовал в этом JOIN (например, в `SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a)` столбец `t2.a` используется только в первом JOIN, поэтому его тип должен быть супертипом `t1.a` и `t2.a`, без учёта `t3.a`). Это могло приводить к логическим ошибкам или сбоям, когда функции ожидали одни типы столбцов, а в плане выполнения фактически оказывались другие. [#95157](https://github.com/ClickHouse/ClickHouse/pull/95157) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Преобразование столбца теперь выполняется только один раз при получении содержимого списка manifest .avro и файлов. [#95164](https://github.com/ClickHouse/ClickHouse/pull/95164) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлен некорректный расчёт размеров JSON-столбцов, который мог приводить к избыточному использованию памяти или некорректной статистике столбцов. [#95207](https://github.com/ClickHouse/ClickHouse/pull/95207) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен неточный учёт памяти при применении крупных патч-частей после легковесных обновлений. Ранее применение крупных патчей могло приводить к чрезмерному использованию памяти, из-за чего процесс сервера мог быть принудительно завершён OOM killer’ом. [#95231](https://github.com/ClickHouse/ClickHouse/pull/95231) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено неопределённое поведение, которое могло приводить к некорректным результатам или к исключению, если распределённый запрос с `max_parallel_replicas` во время анализа индексов переключался на локальную реплику. [#95263](https://github.com/ClickHouse/ClickHouse/pull/95263) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена агрегация разреженных столбцов для `sum` и временных рядов при `group_by_overflow_mode = any`. [#95301](https://github.com/ClickHouse/ClickHouse/pull/95301) ([Mikhail Koviazin](https://github.com/mkmkme)).
* Исправлена проблема с надёжностью в политике диска `plain_rewritable`: сетевая ошибка в середине удаления файла метаданных могла привести к тому, что хранилище оставалось в несогласованном состоянии. [#95302](https://github.com/ClickHouse/ClickHouse/pull/95302) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Заменён Date на Date32 для Iceberg. [#95322](https://github.com/ClickHouse/ClickHouse/pull/95322) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Значение аргумента password табличной функции `redis` теперь будет маскироваться в журнале и системных таблицах (например, в `query_log`). [#95325](https://github.com/ClickHouse/ClickHouse/pull/95325) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена ошибка, из-за которой таблицы можно было удалить или изменить, пока по ним ещё выполнялся распределённый запрос, что могло приводить к исключениям или некорректным результатам. [#95356](https://github.com/ClickHouse/ClickHouse/pull/95356) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена логическая ошибка, возникавшая в некоторых случаях при использовании отрицательного `LIMIT/OFFSET` в распределённых запросах. [#95357](https://github.com/ClickHouse/ClickHouse/pull/95357) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка, из-за которой clickhouse-client при подключении по SSH дважды запрашивал пароль. [#95372](https://github.com/ClickHouse/ClickHouse/pull/95372) ([Isak Ellmer](https://github.com/spinojara)).
* Устранена гонка данных в S3(Azure)Queue. [#95385](https://github.com/ClickHouse/ClickHouse/pull/95385) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена ошибка в фильтре prewhere, вызванная лямбда-выражениями в prewhere. [#95395](https://github.com/ClickHouse/ClickHouse/pull/95395) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Исправлено `optimize_syntax_fuse_functions`: `sum/count/avg` больше не переписываются в `sumCount()`, если аргумент агрегатной функции имеет тип `Nullable`. Закрывает [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#95441](https://github.com/ClickHouse/ClickHouse/pull/95441) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Предотвращено возможное аварийное завершение при отмене распределённых запросов. [#95466](https://github.com/ClickHouse/ClickHouse/pull/95466) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Исправлена дедупликация при стриминге из движка S3(Azure)Queue. [#95467](https://github.com/ClickHouse/ClickHouse/pull/95467) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлено обновление политик строкового доступа, назначенных исходному пользователю, при распределённых запросах. [#95469](https://github.com/ClickHouse/ClickHouse/pull/95469) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлена проверка зашифрованных дисков поверх plain\_rewritable (устраняет возможную ошибку `It is not possible to register multiple plain-rewritable disks with the same object storage prefix`). [#95470](https://github.com/ClickHouse/ClickHouse/pull/95470) ([Azat Khuzhin](https://github.com/azat)).
* У табличной функции `mergeTreeProjection` отсутствовала проверка прав доступа, из-за чего пользователи без разрешения SELECT для таблицы (но с правами на табличные функции) могли читать данные из её проекций. В этом исправлении добавлена та же проверка прав доступа, которая уже есть у `mergeTreeIndex` и `mergeTreeAnalyzeIndexes`. [#95480](https://github.com/ClickHouse/ClickHouse/pull/95480) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена возможная логическая ошибка при чтении подстолбца size из динамических подстолбцов типов Dynamic/JSON. [#95573](https://github.com/ClickHouse/ClickHouse/pull/95573) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена регрессия в (экспериментальной) zero‑copy-репликации, появившаяся после [#94262](https://github.com/ClickHouse/ClickHouse/issues/94262), из‑за которой разделяемые части могли быть удалены до того, как другие реплики завершали их получение. [#95597](https://github.com/ClickHouse/ClickHouse/pull/95597) ([filimonov](https://github.com/filimonov)).
* Исправлен сбой при применении `tupleElement` к массивам JSON. Закрывает [#95581](https://github.com/ClickHouse/ClickHouse/issues/95581). [#95647](https://github.com/ClickHouse/ClickHouse/pull/95647) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено исключение logical error, возникавшее при использовании сопоставителя (`*`) внутри лямбда-функции в предложении VALUES в JOIN с USING. Закрывает [#93675](https://github.com/ClickHouse/ClickHouse/issues/93675). [#95661](https://github.com/ClickHouse/ClickHouse/pull/95661) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена логическая ошибка `There was an error: Cannot obtain error message`, возникавшая при ожидании распределённой DDL-операции и одновременном удалении базы данных Replicated. Исправление [#95539](https://github.com/ClickHouse/ClickHouse/issues/95539). [#95664](https://github.com/ClickHouse/ClickHouse/pull/95664) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Исправлена ошибка, из-за которой функция `IN` возвращала некорректные результаты со значениями `NULL` при включенном `transform_null_in`. Закрывает [#65776](https://github.com/ClickHouse/ClickHouse/issues/65776). [#95674](https://github.com/ClickHouse/ClickHouse/pull/95674) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Корректно обрабатываются типы LowCardinality Nullable в `CAST` при включенной настройке `cast_keep_nullable`. Закрывает [#95670](https://github.com/ClickHouse/ClickHouse/issues/95670). [#95747](https://github.com/ClickHouse/ClickHouse/pull/95747) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено укрупнение партиционированных данных Delta Lake. [#95773](https://github.com/ClickHouse/ClickHouse/pull/95773) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлено состояние гонки для JOIN-столбца типа Nullable в runtime-фильтрах. [#95775](https://github.com/ClickHouse/ClickHouse/pull/95775) ([Hechem Selmi](https://github.com/m-selmi)).
* Исправлена возможная логическая ошибка в запросе с matcher (`*`, `table.*`) и `analyzer_compatibility_join_using_top_level_identifier`, когда столбец `USING` имеет разные типы в таблицах и в списке SELECT. Закрывает [#90477](https://github.com/ClickHouse/ClickHouse/issues/90477). [#95808](https://github.com/ClickHouse/ClickHouse/pull/95808) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлены ошибки, связанные с безопасностью памяти, в операциях, выполняемых в параллельном пуле потоков (резервное копирование, агрегация, распределённые запросы), которые могли приводить к исключениям при возникновении ошибки во время планирования задач. [#95818](https://github.com/ClickHouse/ClickHouse/pull/95818) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен сбой при выполнении DROP WORKLOAD одновременно с выполнением запросов, использующих удаляемую рабочую нагрузку. [#95856](https://github.com/ClickHouse/ClickHouse/pull/95856) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена медленная работа при выполнении запросов к системным таблицам от имени пользователя с ограниченными привилегиями во множестве баз данных. Закрывает [#89371](https://github.com/ClickHouse/ClickHouse/issues/89371). [#95874](https://github.com/ClickHouse/ClickHouse/pull/95874) ([pufit](https://github.com/pufit)).
* Исправлено выполнение функции tupleElement для JSON с вложенными путями: ранее это могло приводить к неверному результату запроса. [#95907](https://github.com/ClickHouse/ClickHouse/pull/95907) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка `NOT_SUPPORTED`, которая могла возникнуть при использовании алгоритма JOIN `direct` с пустой таблицей семейства MergeTree. [#95935](https://github.com/ClickHouse/ClickHouse/pull/95935) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено: клиент не предлагал и не автодополнял имена алиасов для настроек, закрывает [#92190](https://github.com/ClickHouse/ClickHouse/issues/92190). [#95945](https://github.com/ClickHouse/ClickHouse/pull/95945) ([phulv94](https://github.com/phulv94)).
* Исправлено поле event\_date в system.asynchronous\_metric\_log. [#95947](https://github.com/ClickHouse/ClickHouse/pull/95947) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена обработка skipping paths в типе данных JSON. Ранее при `JSON(SKIP path)` пропускались все ключи JSON с префиксом `path`, включая ключи вроде `"pathpath"`, что могло приводить к потере данных при вставке. Теперь это исправлено: пропускается только ключ `"path"`. [#95948](https://github.com/ClickHouse/ClickHouse/pull/95948) ([Pavel Kruglov](https://github.com/Avogar)).
* Часть с неизвестными проекциями не должна считаться безвозвратно утерянной. [#95952](https://github.com/ClickHouse/ClickHouse/pull/95952) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Исправлена ошибка, из-за которой пустая строка превращалась в `NULL` в таблице `Join` с ключом `Nullable(String)`. Закрывает [#71414](https://github.com/ClickHouse/ClickHouse/issues/71414). [#96002](https://github.com/ClickHouse/ClickHouse/pull/96002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь движок PostgreSQL может корректно читать `BOOLEAN[]`. Закрывает проблему [#72754](https://github.com/ClickHouse/ClickHouse/issues/72754). [#96006](https://github.com/ClickHouse/ClickHouse/pull/96006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен формат `ProtobufList` для чтения из пустого файла. Закрывает [#70059](https://github.com/ClickHouse/ClickHouse/issues/70059). [#96007](https://github.com/ClickHouse/ClickHouse/pull/96007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка в формате `ProtobufList`, из-за которой для пустых таблиц создавалась фантомная запись. Закрывает [#72596](https://github.com/ClickHouse/ClickHouse/issues/72596). [#96010](https://github.com/ClickHouse/ClickHouse/pull/96010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено несоответствие типов `UInt64` и `Int32` в функции `if` в редком случае распределённых запросов и PREWHERE при выводе типов. Закрывает [#70017](https://github.com/ClickHouse/ClickHouse/issues/70017). [#96012](https://github.com/ClickHouse/ClickHouse/pull/96012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены `JIT`-скомпилированные запросы, использующие тип `Bool`. [#96013](https://github.com/ClickHouse/ClickHouse/pull/96013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена логическая ошибка при чтении столбца UUID из текстового столбца SQLite TEXT. Закрывает [#71263](https://github.com/ClickHouse/ClickHouse/issues/71263). [#96016](https://github.com/ClickHouse/ClickHouse/pull/96016) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено преобразование типов в движке SQLite для `DateTime`, `Date`, `UUID` и других типов. Закрывает [#73481](https://github.com/ClickHouse/ClickHouse/issues/73481). [#96017](https://github.com/ClickHouse/ClickHouse/pull/96017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Значения `FixedString` некорректно экранировались в запросах к внешним базам данных SQLite и PostgreSQL. Закрывает [#73519](https://github.com/ClickHouse/ClickHouse/issues/73519). В соавторстве с @jh0x. [#96019](https://github.com/ClickHouse/ClickHouse/pull/96019) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой из-за ошибки assert в WindowTransform при большом смещении PRECEDING. Закрывает [#75852](https://github.com/ClickHouse/ClickHouse/issues/75852). [#96026](https://github.com/ClickHouse/ClickHouse/pull/96026) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой могло происходить повреждение данных, когда параллельные асинхронные вставки используют одинаковые имена параметров, но содержат разные значения. [#96035](https://github.com/ClickHouse/ClickHouse/pull/96035) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлен период для глобальных профилировщиков (задаётся параметрами `global_profiler_real_time_period_ns` и `global_profiler_cpu_time_period_ns`). Вместо заданного значения использовалось усечённое, из-за чего профилировщик срабатывал чаще, чем предполагалось. [#96048](https://github.com/ClickHouse/ClickHouse/pull/96048) ([Antonio Andelic](https://github.com/antonio2368)).
* Ранее, если в записи файла манифеста Iceberg для position delete присутствовала ссылка на файл данных, но имела значение NULL, мы не получали корректные границы для соответствующих файлов данных. Этот PR исправляет эту ошибку. [#96061](https://github.com/ClickHouse/ClickHouse/pull/96061) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлена проблема с отзывом ролей по умолчанию. [#96103](https://github.com/ClickHouse/ClickHouse/pull/96103) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлена ошибка use-after-free при анализе индекса в редком случае, когда `use_primary_key` отключен и имеется очень большое количество дизъюнкций условий, использующих индекс. [#96112](https://github.com/ClickHouse/ClickHouse/pull/96112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена регрессия в кодеке `Gorilla`, возникавшая, когда явно указанный размер не соответствовал размеру типа данных, а размер буфера был слишком мал. В предыдущих версиях это приводило к исключению при декомпрессии. Закрывает [#78253](https://github.com/ClickHouse/ClickHouse/issues/78253). [#96118](https://github.com/ClickHouse/ClickHouse/pull/96118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Предотвращена взаимная блокировка при загрузке словарей, когда один словарь ссылается на таблицу Merge, которая рекурсивно ссылается на него. Закрывает [#78360](https://github.com/ClickHouse/ClickHouse/issues/78360). [#96120](https://github.com/ClickHouse/ClickHouse/pull/96120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено использование неинициализированного значения в `formatDateTime` при использовании форматтеров переменной ширины, таких как в стиле MySQL и JODA. [#96133](https://github.com/ClickHouse/ClickHouse/pull/96133) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Сочетание настроек `use_const_adaptive_granularity` и `index_granularity_bytes` (что означает "неадаптивную гранулярность") приводило к неверному вычислению количества строк для чтения и возникновению исключения. [#96143](https://github.com/ClickHouse/ClickHouse/pull/96143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Выполнение некорректной мутации ALTER UPDATE на файлоподобных таблицах в объектном хранилище, таких как S3 и Azure, могло приводить к разыменованию nullptr. Закрывает [#92994](https://github.com/ClickHouse/ClickHouse/issues/92994). [#96162](https://github.com/ClickHouse/ClickHouse/pull/96162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено некорректное поведение `AccessRights::contains`, из-за которого при частичном отзыве привилегий возвращались неверные результаты. [#96170](https://github.com/ClickHouse/ClickHouse/pull/96170) ([pufit](https://github.com/pufit)).
* Исправлена коллизия хэша в кэше условий запроса для свернутых констант CTE, которая могла приводить к ошибочному результату запроса. Закрывает [#96060](https://github.com/ClickHouse/ClickHouse/issues/96060). [#96172](https://github.com/ClickHouse/ClickHouse/pull/96172) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена возможная взаимная блокировка в ProcessList. Она может возникнуть из-за инверсии блокировок, если трекер оверкоммита памяти срабатывает в момент добавления задачи в механизм проверки отмены. [#96182](https://github.com/ClickHouse/ClickHouse/pull/96182) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена ошибка, из-за которой запросы с OUTER JOIN (LEFT, RIGHT или FULL) в сочетании с несколькими INNER JOIN могли возвращать некорректные результаты из-за недопустимого изменения порядка JOIN. Если условие ON в OUTER JOIN ссылалось на столбцы из нескольких ранее присоединённых таблиц, оптимизатор не учитывал все зависимости между таблицами и мог неправильно изменить порядок JOIN, из-за чего часть строк терялась. Закрывает [#95972](https://github.com/ClickHouse/ClickHouse/issues/95972). [#96193](https://github.com/ClickHouse/ClickHouse/pull/96193) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Если для таблицы не определена статистика, ClickHouse не должен пытаться её загружать. Это позволяет избежать дополнительных накладных расходов (100+ мс) на проверку наличия файлов статистики. (тикет [#96068](https://github.com/ClickHouse/ClickHouse/issues/96068)). [#96233](https://github.com/ClickHouse/ClickHouse/pull/96233) ([Han Fei](https://github.com/hanfei1991)).
* Исправлено `optimize_syntax_fuse_functions`: теперь `sum/count/avg` не переписываются в `sumCount()`, если аргумент агрегатной функции имеет тип `LowCardinality(Nullable)`. Закрывает [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#96239](https://github.com/ClickHouse/ClickHouse/pull/96239) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено некорректное отсечение партиций для `not IN` и функции `not has` в некоторых случаях. [#96241](https://github.com/ClickHouse/ClickHouse/pull/96241) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка `stack-use-after-scope` в индексе векторного сходства. [#96259](https://github.com/ClickHouse/ClickHouse/pull/96259) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено: средство запуска тестов не распознавало комментарии с подсказкой об ошибке, если запросу предшествовал SQL-комментарий. [#96336](https://github.com/ClickHouse/ClickHouse/pull/96336) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Исправлена логическая ошибка в KeyCondition, возникавшая, когда у таблицы primary key имеет тип Nullable, а в запросе используется функция `coalesce`, у которой первый аргумент — константа. [#96340](https://github.com/ClickHouse/ClickHouse/pull/96340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Взаимодействие `GROUPING SETS`, `group_by_use_nulls` и типа данных `Tuple` с `LowCardinality` внутри него могло приводить к неожиданной структуре блока в конвейере выполнения запроса, что вызывало логическую ошибку. Это стало проявляться после добавления `Nullable` `Tuple`-ов. [#96358](https://github.com/ClickHouse/ClickHouse/pull/96358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Можно было создать таблицу, использовав пустое выражение `()` в качестве индекса, что приводило к некорректному обращению к памяти. [#96363](https://github.com/ClickHouse/ClickHouse/pull/96363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой в старом анализаторе при JOIN и повторяющихся псевдонимах. [#96405](https://github.com/ClickHouse/ClickHouse/pull/96405) ([Ilya Golshtein](https://github.com/ilejn)).
* Исправлена ошибка `Nested columns sizes are inconsistent with local_discriminators`, вызванная некорректной оптимизацией фильтрации на месте для столбцов Variant. [#96410](https://github.com/ClickHouse/ClickHouse/pull/96410) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой `CREATE TABLE ... CLONE AS ...` игнорировал полный квалификатор исходной таблицы. [#96415](https://github.com/ClickHouse/ClickHouse/pull/96415) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* Исправлена отмена выполнения табличной функции `mysql` с помощью KILL QUERY и отмены запроса (Ctrl+C) в clickhouse-client. [#96437](https://github.com/ClickHouse/ClickHouse/pull/96437) ([Roman Vasin](https://github.com/rvasin)).
* Исправлено состояние livelock в потоке проверки отмены для запросов с высокими значениями `max_execution_time`. [#96450](https://github.com/ClickHouse/ClickHouse/pull/96450) ([Sergei Trifonov](https://github.com/serxa)).
* Исправлена логическая ошибка, которая в некоторых случаях возникала при использовании дробного `LIMIT/OFFSET` в распределённых запросах. [#96475](https://github.com/ClickHouse/ClickHouse/pull/96475) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка разыменования нулевого указателя в некоторых выражениях с лямбда-функциями. [#96479](https://github.com/ClickHouse/ClickHouse/pull/96479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены некорректные результаты при преобразовании столбцов `LowCardinality` в `Nullable`. [#96483](https://github.com/ClickHouse/ClickHouse/pull/96483) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен сбой при создании таблицы Iceberg с секцией `ORDER BY`, ссылающейся на несуществующий столбец или использующей позиционный аргумент. Закрывает [#93280](https://github.com/ClickHouse/ClickHouse/issues/93280). [#96484](https://github.com/ClickHouse/ClickHouse/pull/96484) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлено исключение runtime filter для столбцов Tuple с Nullable-подполями. [#96509](https://github.com/ClickHouse/ClickHouse/pull/96509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `LOGICAL_ERROR` во встроенном считывателе Parquet V3, когда столбец фильтра `PREWHERE` содержит небулевы значения UInt8. [#96594](https://github.com/ClickHouse/ClickHouse/pull/96594) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена неявная перестройка индекса в реплицируемых таблицах при изменении метаданных. [#96600](https://github.com/ClickHouse/ClickHouse/pull/96600) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена гонка данных при DROP WORKLOAD. [#96614](https://github.com/ClickHouse/ClickHouse/pull/96614) ([Sergei Trifonov](https://github.com/serxa)).
* Исправлена ошибка при записи в таблицы Iceberg, из-за которой при вставке в партиционированные таблицы данные могли некорректно распределяться по файлам партиций. [#96620](https://github.com/ClickHouse/ClickHouse/pull/96620) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена ошибка `heap-use-after-free` в `CREATE TABLE` с ограничениями constraints. [#96669](https://github.com/ClickHouse/ClickHouse/pull/96669) ([Nikita Taranov](https://github.com/nickitat)).
* Проверка witness version в bech32 во избежание переполнения буфера. [#96671](https://github.com/ClickHouse/ClickHouse/pull/96671) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена проблема, из-за которой `system.tables` возвращала ошибки, если REST-каталог озера данных создавался с недопустимым параметром `auth_header`. [#96680](https://github.com/ClickHouse/ClickHouse/pull/96680) ([Han Fei](https://github.com/hanfei1991)).
* Исправлено поведение, при котором `min(timestamp)` возвращал значение эпохи (`1970-01-01`) в `_minmax_count_projection` после TTL-слияния, если все строки в блоке были отфильтрованы. [#96703](https://github.com/ClickHouse/ClickHouse/pull/96703) ([Raquel Barbadillo](https://github.com/rbarbadillo)).
* Улучшена проверка параметра `iceberg_metadata_file_path`, чтобы предотвратить обход каталогов и убедиться, что указанный файл метаданных находится в каталоге таблицы. [#96754](https://github.com/ClickHouse/ClickHouse/pull/96754) ([Daniil Ivanik](https://github.com/divanik)).
* Исправлен сбой в `ifNull` при использовании аргумента `Variant` в `GROUP BY`. [#96790](https://github.com/ClickHouse/ClickHouse/pull/96790) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены коллизии ключей кэша между таблицами при настройке `table_disk=1`. [#96818](https://github.com/ClickHouse/ClickHouse/pull/96818) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлено зависание потока очистки MemoryWorker, вызванное состоянием гонки. [#96819](https://github.com/ClickHouse/ClickHouse/pull/96819) ([Antonio Andelic](https://github.com/antonio2368)).
* Не записывать в журнал данные с учетными данными из каталогов Iceberg. [#96831](https://github.com/ClickHouse/ClickHouse/pull/96831) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен код возврата `clickhouse-client` после ошибки сервера. [#96841](https://github.com/ClickHouse/ClickHouse/pull/96841) ([Vitaly Baranov](https://github.com/vitlibar)).
* Запросы с CROSS JOIN и включенными параллельными репликами могли возвращать неверный результат. Исправлено в [#74337](https://github.com/ClickHouse/ClickHouse/issues/74337). [#96848](https://github.com/ClickHouse/ClickHouse/pull/96848) ([Igor Nikonov](https://github.com/devcrafter)).
* Исправлена ошибка, из-за которой запросы `ALTER TABLE DROP COLUMN` завершались сбоем, если ранее для того же столбца уже выполнялось легковесное обновление. [#96861](https://github.com/ClickHouse/ClickHouse/pull/96861) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено переполнение стека (аварийное завершение) при создании резервных копий в архивном формате (`.zip`, `.tzst`) на диске объектного хранилища `plain_rewritable`. [#96872](https://github.com/ClickHouse/ClickHouse/pull/96872) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено аварийное завершение сервера, возникавшее, когда резервное копирование завершалось с ошибкой из-за нехватки места на диске или других ошибок ввода-вывода в файловой системе пункта назначения. [#96873](https://github.com/ClickHouse/ClickHouse/pull/96873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены `EXCEPT ALL` и `INTERSECT ALL`, которые игнорировали кратность строк и работали как их варианты `DISTINCT`. [#96876](https://github.com/ClickHouse/ClickHouse/pull/96876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `std::terminate` в `indexOfAssumeSorted`, возникавшее при вызове с несовместимыми типами (например, для массива `IPv4` и целочисленного искомого значения). [#96877](https://github.com/ClickHouse/ClickHouse/pull/96877) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `Bad cast from type DB::ColumnNullable to DB::ColumnString`, возникавшее при использовании оконных функций с `group_by_use_nulls = 1` и CUBE/ROLLUP/GROUPING SETS. [#96878](https://github.com/ClickHouse/ClickHouse/pull/96878) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены некорректные результаты, возникавшие при преобразовании JIT-скомпилированными выражениями `DateTime` в `DateTime64` (например, в `CASE`/`if`/`multiIf` со смешанными типами DateTime). Значение переинтерпретировалось вместо корректного масштабирования, из-за чего после включения компиляции выражений получались неверные временные метки. [#96879](https://github.com/ClickHouse/ClickHouse/pull/96879) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение из-за логической ошибки в `CoalescingMergeTree`, возникавшее, когда выражение индекса пропуска данных создаёт константный столбец (например, `bloom_filter` для `ifNotFinite(1, c0)` в случае целочисленного столбца). [#96880](https://github.com/ClickHouse/ClickHouse/pull/96880) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен неверный номер порта в сообщении об ошибке при ошибочном подключении по HTTP к порту собственного протокола с включенным TLS. [#96881](https://github.com/ClickHouse/ClickHouse/pull/96881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено, что `SETTINGS`, заданные для отдельных подзапросов, не применялись к табличным функциям, таким как `file`, в CTE и подзапросах. [#96882](https://github.com/ClickHouse/ClickHouse/pull/96882) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена утечка памяти в объектах BIO при чтении сертификатов X509. [#96885](https://github.com/ClickHouse/ClickHouse/pull/96885) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` в анализаторе запросов, возникавшее, если лямбда-выражение передавалось там, где ожидалось конкретное значение (например, в качестве аргумента аккумулятора для `arrayFold`). [#96892](https://github.com/ClickHouse/ClickHouse/pull/96892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `ColumnNullable is not compatible with original` при приведении сложных вложенных типов (Array, состоящего из Nullable Tuple, содержащего Map со значениями типа Nullable Enum). [#96924](https://github.com/ClickHouse/ClickHouse/pull/96924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Устранено состояние гонки при параллельной загрузке сегментированного словаря `HASHED`, которое иногда приводило к тому, что некоторые строки не загружались. [#96953](https://github.com/ClickHouse/ClickHouse/pull/96953) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено состояние гонки между `REPLACE PARTITION` и фоновыми мутациями, из-за которого после замены могли быть одновременно видны старые и новые данные. [#96955](https://github.com/ClickHouse/ClickHouse/pull/96955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка в функции `arrayJoin`, из-за которой при использовании с INNER JOIN и предложением WHERE возникали дублирующиеся строки; причиной была оптимизация частичного проталкивания предикатов, которая ошибочно проталкивала фильтры с `arrayJoin` ниже JOIN. [#96989](https://github.com/ClickHouse/ClickHouse/pull/96989) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен сбой (SEGFAULT) в `clearCaches`, вызванный тем, что `BlockIO::operator=` не перемещал `query_metadata_cache`, что приводило к преждевременному уничтожению кэшированных снимков хранилища и обращению к хранилищу `MergeTreeData` после освобождения памяти. [#96995](https://github.com/ClickHouse/ClickHouse/pull/96995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка assertion в `IfTransformStringsToEnumPass`, когда функция `if` или `transform` возвращает `Nullable(String)` (например, при `GROUP BY ... WITH CUBE` и `group_by_use_nulls = true`). [#97002](https://github.com/ClickHouse/ClickHouse/pull/97002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, из-за которой при `INSERT ... SELECT` с `UNION ALL` и `JOIN` в константные строковые столбцы после укрупнения блоков могли записываться неверные значения. [#97019](https://github.com/ClickHouse/ClickHouse/pull/97019) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* Исправлено исключение `assert_cast` (или скрытое повреждение данных в релизных сборках) при построении статистики столбцов после изменения типа столбца командой `ALTER TABLE MODIFY COLUMN`. [#97027](https://github.com/ClickHouse/ClickHouse/pull/97027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено чтение из неинициализированной памяти в Azure Blob Storage, протоколе SSH и интерфейсах Arrow Flight. [#97053](https://github.com/ClickHouse/ClickHouse/pull/97053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены случаи, когда индексы влияли на результат запросов с ROW POLICY/PREWHERE и FINAL. [#97076](https://github.com/ClickHouse/ClickHouse/pull/97076) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлено оставшееся условие гонки между `REPLACE PARTITION` и фоновыми мутациями в таблицах `MergeTree`, из-за которого старые данные могли снова появляться. [#97105](https://github.com/ClickHouse/ClickHouse/pull/97105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена работа неявных индексов со столбцами-псевдонимами; теперь перед их созданием выполняется полная проверка. [#97115](https://github.com/ClickHouse/ClickHouse/pull/97115) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена логическая ошибка в `FunctionVariantAdaptor` для функций, которым требуются константные аргументы, таких как `arrayROCAUC`. [#97116](https://github.com/ClickHouse/ClickHouse/pull/97116) ([Bharat Nallan](https://github.com/bharatnc)).
* Исправлены зависшие мутации в случае, когда `PartCheckThread` повторно ставит в очередь `GET_PART` для части, уже обработанной мутацией, оставляя фантомные записи в `parts_to_do`. [#97162](https://github.com/ClickHouse/ClickHouse/pull/97162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена оценка числа строк в плане запроса для подзапросов с `ORDER BY ... LIMIT`, из-за которой оптимизатор мог выбирать неоптимальный порядок JOIN. [#97193](https://github.com/ClickHouse/ClickHouse/pull/97193) ([Alexander Gololobov](https://github.com/davenger)).
* Исправлено исключение `LOGICAL_ERROR` в `FunctionVariantAdaptor`, возникавшее, когда функция, работающая со столбцами Variant, возвращает тип `Nothing`, что может происходить с пустыми массивами в запросах `UNION ALL`. [#97213](https://github.com/ClickHouse/ClickHouse/pull/97213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено состояние гонки при операциях многокомпонентного копирования в S3 (например, при `BACKUP`/`RESTORE` в S3), которое могло вызывать исключения при одновременном доступе. [#97227](https://github.com/ClickHouse/ClickHouse/pull/97227) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено исключение `LOGICAL_ERROR`, возникавшее, когда `arrayJoin` в секции `WHERE` ссылался на столбцы с обеих сторон `JOIN`. [#97239](https://github.com/ClickHouse/ClickHouse/pull/97239) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение `LOGICAL_ERROR` при чтении подстолбца `.size` у разреженного `Nullable(String)` в `Tuple` с PREWHERE. [#97264](https://github.com/ClickHouse/ClickHouse/pull/97264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение "Количество строк в отложенном фрагменте не совпадает с количеством смещений" в `LazyMaterializingTransform` при чтении из таблиц с неадаптивной гранулярностью индекса (`index_granularity_bytes = 0`) с использованием `ORDER BY ... LIMIT`. [#97270](https://github.com/ClickHouse/ClickHouse/pull/97270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена потеря таблицы из базы данных при `SYSTEM RESTART REPLICA`, если повторное создание таблицы завершается исключением, не связанным с ZooKeeper (например, из-за лимита памяти), что приводило к несовпадению дайджестов metadata в `DatabaseReplicated`. [#97276](https://github.com/ClickHouse/ClickHouse/pull/97276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Поле `readonly` в `system.merge_tree_settings` теперь корректно отражает, что некоторые настройки MergeTree (например, `index_granularity`) всегда доступны только для чтения. [#97277](https://github.com/ClickHouse/ClickHouse/pull/97277) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлен сбой при оптимизации `count()` для таблиц `MergeTree`, когда снимок хранилища создавался без данных. [#97281](https://github.com/ClickHouse/ClickHouse/pull/97281) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлено возможное аварийное завершение при определении имён функций по отладочной информации для трассировок стека. [#97294](https://github.com/ClickHouse/ClickHouse/pull/97294) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена логическая ошибка, связанная с analyzer\_compatibility\_join\_using\_top\_level\_identifier и столбцами ALIAS. Закрывает [#96228](https://github.com/ClickHouse/ClickHouse/issues/96228). [#97297](https://github.com/ClickHouse/ClickHouse/pull/97297) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено исключение `LOGICAL_ERROR` в `applyOrder` при использовании столбцов с текстовым индексом в предложении `QUALIFY`. [#97313](https://github.com/ClickHouse/ClickHouse/pull/97313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Системная таблица `system.functions` теперь для внутренних функций отображает `categories = 'Internal'` вместо `categories = ''`. [#97315](https://github.com/ClickHouse/ClickHouse/pull/97315) ([Robert Schulze](https://github.com/rschu1ze)).
* Запрос с цепочкой RIGHT JOIN и включенными параллельными репликами может давать некорректный результат. Исправлено в [#74341](https://github.com/ClickHouse/ClickHouse/issues/74341). [#97316](https://github.com/ClickHouse/ClickHouse/pull/97316) ([Igor Nikonov](https://github.com/devcrafter)).
* Исправлены ложные ошибки `TABLE_UUID_MISMATCH`, которые могли возникать в refreshable materialized view и других сценариях при переименовании таблиц. [#97323](https://github.com/ClickHouse/ClickHouse/pull/97323) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен segfault при резервном копировании `StorageKeeperMap`, вызванный use-after-free висячего указателя на хранилище в отложенном батче резервного копирования. [#97336](https://github.com/ClickHouse/ClickHouse/pull/97336) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена функция `exists` со скалярным подзапросом внутри `ALTER UPDATE/DELETE`, когда включен параметр `mutations_execute_subqueries_on_initiator`. Скалярный подзапрос вычислялся некорректно, что могло привести к ошибке или к повреждённой команде мутации, из-за которой таблица не загружалась при следующем перезапуске сервера. [#97347](https://github.com/ClickHouse/ClickHouse/pull/97347) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Исправлено логическое исключение `Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8)))`, возникавшее при сравнении NULL со столбцом Variant, содержащим типы LowCardinality. [#97379](https://github.com/ClickHouse/ClickHouse/pull/97379) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена возможная гонка при выполнении `EXCHANGE TABLES` параллельно с включенным сегментированным кэшем запросов. [#97411](https://github.com/ClickHouse/ClickHouse/pull/97411) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлено исключение `LOGICAL_ERROR` при преобразовании из Array в `QBit`, когда `nullable_source` из внешней обёртки `Tuple` заменяет преобразуемый столбец типа Array на столбец несовместимого типа. Закрывает [#97389](https://github.com/ClickHouse/ClickHouse/issues/97389). [#97413](https://github.com/ClickHouse/ClickHouse/pull/97413) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена неконсистентность при повторном форматировании AST для литералов кортежей с алиасом в скобках: например, `(('a', 'b') AS x)` ошибочно переформатировалось в `tuple(('a', 'b') AS x)`. [#97418](https://github.com/ClickHouse/ClickHouse/pull/97418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение при асинхронных вставках с дедупликацией, возникавшее, когда ошибка парсинга приводила к созданию пустого блока без строк. [#97460](https://github.com/ClickHouse/ClickHouse/pull/97460) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлено исключение "Количество строк в отложенном фрагменте не соответствует количеству смещений" в `LazyMaterializingTransform` при чтении из таблиц с неадаптивной гранулярностью индекса (`index_granularity_bytes = 0`) при использовании `ORDER BY ... LIMIT`. [#97482](https://github.com/ClickHouse/ClickHouse/pull/97482) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены настройки вставки в Iceberg. Добавлен алиас для настройки `allow_experimental_insert_into_iceberg`. [#97483](https://github.com/ClickHouse/ClickHouse/pull/97483) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена ошибка `ACCESS_DENIED` для пользователей без разрешения `CREATE TEMPORARY TABLE`, когда оптимизация `optimize_inverse_dictionary_lookup` преобразует предикаты `dictGet(...)`. Теперь ClickHouse пропускает это преобразование и выполняет исходное выражение. Закрывает [#97269](https://github.com/ClickHouse/ClickHouse/issues/97269). [#97484](https://github.com/ClickHouse/ClickHouse/pull/97484) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлен сбой assert (исключение в отладочных сборках и сборках с санитайзерами) в `Set` и `MergeTreeIndexSet` при обработке столбцов с внутренними разреженными подстолбцами (например, столбцов `Tuple` из частей MergeTree с разными профилями разреженной сериализации). [#97493](https://github.com/ClickHouse/ClickHouse/pull/97493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено возможное обращение к памяти после её освобождения в StorageKafka2. [#97520](https://github.com/ClickHouse/ClickHouse/pull/97520) ([Bharat Nallan](https://github.com/bharatnc)).
* Исправлена работа `INTO OUTFILE` с `TRUNCATE` и настройкой `into_outfile_create_parent_directories`, когда путь вывода содержит каталоги. [#97549](https://github.com/ClickHouse/ClickHouse/pull/97549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка `BAD_ARGUMENTS` при запросах к таблицам с лямбда-выражениями в столбцах ALIAS через табличную функцию `merge()` при включенном анализаторе. [#97551](https://github.com/ClickHouse/ClickHouse/pull/97551) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `system.zookeeper_info`, если zxid в Keeper равен 0. [#97553](https://github.com/ClickHouse/ClickHouse/pull/97553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена возможная логическая ошибка в словаре `ip_trie`, если тип ключа отличается от String. [#97555](https://github.com/ClickHouse/ClickHouse/pull/97555) ([Bharat Nallan](https://github.com/bharatnc)).
* Исправлена ошибка, из-за которой OAuth-аутентификация REST-каталога не работала для базового `RestCatalog` (она работала только для производных каталогов, таких как `OneLakeCatalog`). Из-за этого REST-каталог по умолчанию перестал работать после добавления каталога BigLake. [#97561](https://github.com/ClickHouse/ClickHouse/pull/97561) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Функции Geometry (`perimeterSpherical`, `areaSpherical` и т. д.) теперь принимают отдельные подтипы геометрии (`Polygon`, `Ring`, `Point` и т. д.) помимо вариативного типа `Geometry`. [#97571](https://github.com/ClickHouse/ClickHouse/pull/97571) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `LOGICAL_ERROR` при использовании `isNull`/`isNotNull` для подстолбцов типов `Nullable(Tuple(... Nullable(T) ...))`. Закрывает [#97224](https://github.com/ClickHouse/ClickHouse/issues/97224). [#97582](https://github.com/ClickHouse/ClickHouse/pull/97582) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено разыменование нулевого указателя при применении патч-частей в ходе легковесных обновлений. [#97583](https://github.com/ClickHouse/ClickHouse/pull/97583) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `BaseSettings::readBinary` передаёт индекс из `accessor.find` в `field_infos[]` без проверки на специальное значение «не найдено» (то есть `-1`), что может привести к выходу за границы `std::vector`. Проблему удалось выявить благодаря механизмам защиты libcxx. Вероятно, это происходило при десериализации плана запроса, когда более новый сервер отправляет настройку, неизвестную более старому серверу. Метод чтения на основе строк уже обрабатывает этот случай корректно; в `readBinary` такой же проверки не было. [#97585](https://github.com/ClickHouse/ClickHouse/pull/97585) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлены некорректные результаты запросов `UNION ALL`, в которых одна ветвь содержала предикат, всегда равный false: такая ветвь ошибочно читала данные вместо того, чтобы ничего не возвращать. [#97620](https://github.com/ClickHouse/ClickHouse/pull/97620) ([Bharat Nallan](https://github.com/bharatnc)).
* Исправлена ошибка `UNSUPPORTED_METHOD`, возникавшая при `IN (col)` с единственной ссылкой на столбец. [#97646](https://github.com/ClickHouse/ClickHouse/pull/97646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено Исключение логической ошибки при `GROUP BY ... WITH ROLLUP/CUBE`, когда ключи содержат `LowCardinality(Nullable(...))` внутри `Nullable(Tuple(...))`. [#97647](https://github.com/ClickHouse/ClickHouse/pull/97647) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена несогласованность в форматировании AST для `NOT (1, 1, 1)`, которая могла приводить к `LOGICAL_ERROR` в отладочных сборках. [#97653](https://github.com/ClickHouse/ClickHouse/pull/97653) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение `keeper-converter` при обработке пустых файлов журнала транзакций ZooKeeper. [#97673](https://github.com/ClickHouse/ClickHouse/pull/97673) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* ClickHouse теперь можно собирать с помощью clang-23 (master). [#95578](https://github.com/ClickHouse/ClickHouse/pull/95578) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено принудительное выставление `is_local` в false при настроенном `bind_host`; вместо этого добавлен интеграционный тест. Дополнение к [#74741](https://github.com/ClickHouse/ClickHouse/pull/74741). [#93109](https://github.com/ClickHouse/ClickHouse/pull/93109) [#96018](https://github.com/ClickHouse/ClickHouse/pull/96018) ([Zhigao Hong](https://github.com/zghong)).
* Стресс-тесты: исправлены стресс-тесты и тесты обновления в CI. теги `no-{build}` теперь игнорируются. добавлена рандомизация совместимости. [#94693](https://github.com/ClickHouse/ClickHouse/pull/94693) ([Nikita Fomichev](https://github.com/fm4v)).
* Опубликован бинарный файл parser\_memory\_profiler из сборки. Инструмент можно использовать для анализа потребления памяти деревом AST. [#95826](https://github.com/ClickHouse/ClickHouse/pull/95826) ([Ilya Yatsishin](https://github.com/qoega)).
* Добавлен флаг `--symbolize` для инструмента `parser_memory_profiler`, который создаёт файлы `.heap.sym` с разрешёнными именами символов в результатах. [#96477](https://github.com/ClickHouse/ClickHouse/pull/96477) ([Ilya Yatsishin](https://github.com/qoega)).
* Зафиксированы версии сторонних Docker-образов в интеграционных тестах. [#96500](https://github.com/ClickHouse/ClickHouse/pull/96500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Восстановлена возможность динамической линковки `OpenSSL`. Это не рекомендуется и не используется ни в каких продакшн-сборках, но такая возможность всё ещё остаётся для энтузиастов из интернета. [#96506](https://github.com/ClickHouse/ClickHouse/pull/96506) ([Govind R Nair](https://github.com/Revertionist)).
* Диапазон `magic_enum` уменьшен с \[-100, 1000] до значения по умолчанию \[-128, 127] с использованием специализации `Coordination::OpNum` для конкретного типа, что сокращает время сборки. [#96632](https://github.com/ClickHouse/ClickHouse/pull/96632) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалены лишние шаблоны C++ из классов Function, чтобы сократить время сборки. [#96646](https://github.com/ClickHouse/ClickHouse/pull/96646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Перенесли генерацию `StorageSystemLicenses` на этап конфигурации, чтобы повысить параллелизм сборки. [#96697](https://github.com/ClickHouse/ClickHouse/pull/96697) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Распараллелено сканирование лицензий. [#96727](https://github.com/ClickHouse/ClickHouse/pull/96727) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлен функциональный тест без сохранения состояния для поддержки протокола SSH. [#96996](https://github.com/ClickHouse/ClickHouse/pull/96996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Kafka 3.9.0 добавлена в инфраструктуру функциональных тестов без сохранения состояния, что позволяет напрямую тестировать движки таблиц Kafka и Kafka2, где ClickHouse Keeper используется вместо ZooKeeper. Шесть новых тестов без сохранения состояния охватывают базовые сценарии записи и чтения, виртуальные столбцы, INSERT, несколько форматов, обработку повреждённых сообщений и хранение смещений через Keeper. [#96997](https://github.com/ClickHouse/ClickHouse/pull/96997) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлен CI-процесс для сборки оптимизированного тулчейна clang с PGO+BOLT. [#96991](https://github.com/ClickHouse/ClickHouse/pull/96991) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В CI используется оптимизированная с помощью PGO сборка LLVM/Clang, что должно ускорить сборку на 20..30%. [#97031](https://github.com/ClickHouse/ClickHouse/pull/97031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Заменены математические функции glibc на реализации из llvm-libc. [#90151](https://github.com/ClickHouse/ClickHouse/pull/90151) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Boost обновлён с 1.83 до 1.90, что исправляет сбой из-за срабатывания assert в `devector` в отладочных сборках. [#97037](https://github.com/ClickHouse/ClickHouse/pull/97037) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Обновлён `postgres` до версии REL\_18\_1. [#95189](https://github.com/ClickHouse/ClickHouse/pull/95189) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `libexpat` 2.7.3. [#95218](https://github.com/ClickHouse/ClickHouse/pull/95218) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `OpenSSL` 3.5.5. [#95345](https://github.com/ClickHouse/ClickHouse/pull/95345) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `simdjson` v4.2.4. [#97129](https://github.com/ClickHouse/ClickHouse/pull/97129) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `libarchive` 3.8.5. [#97131](https://github.com/ClickHouse/ClickHouse/pull/97131) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Используется `fast_float` версии 8.2.3. [#97133](https://github.com/ClickHouse/ClickHouse/pull/97133) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Использовать `abseil-cpp` 20260107.1, `s2geometry` v0.13.1. [#97134](https://github.com/ClickHouse/ClickHouse/pull/97134) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Обновили `libxml2` до версии 2.15.1. [#95574](https://github.com/ClickHouse/ClickHouse/pull/95574) ([Robert Schulze](https://github.com/rschu1ze)).
* Обновлены 7 Docker-образов для интеграционных тестов уровня 3: устаревшие (EOL) или удалённые базовые образы заменены на актуальные поддерживаемые версии. [#97314](https://github.com/ClickHouse/ClickHouse/pull/97314) ([Rahul](https://github.com/motsc)).
* Добавлены запросы из бенчмарка TPC-DS. [#97349](https://github.com/ClickHouse/ClickHouse/pull/97349) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Отдельные cmake-опции для наборов инструкций x86 (`ENABLE_SSSE3`, `ENABLE_AVX2`, `NO_SSE3_OR_HIGHER`, `ARCH_NATIVE` и т. д.) заменены одной числовой опцией `X86_ARCH_LEVEL` (`1`/`2`/`3`/`4`), соответствующей стандартным уровням микроархитектуры x86-64, которые уже используются системой диспетчеризации во время выполнения. [#97354](https://github.com/ClickHouse/ClickHouse/pull/97354) ([Raúl Marín](https://github.com/Algunenano)).
* Устранено инстанцирование вариантов шаблона `division_by_nullable=true` для операций, не связанных с делением, в `FunctionBinaryArithmetic`, что сокращает время компиляции и размер бинарного файла. [#97496](https://github.com/ClickHouse/ClickHouse/pull/97496) ([Raúl Marín](https://github.com/Algunenano)).
* Уменьшена зависимость от `Exception.h`: этот файл убран из часто используемых заголовков, таких как `typeid_cast.h`, `assert_cast.h`, `Context_fwd.h`, `IDataType.h` и различных заголовочных файлов Column. [#97497](https://github.com/ClickHouse/ClickHouse/pull/97497) ([Raúl Marín](https://github.com/Algunenano)).
* Всегда используйте заголовочные файлы из комплекта `compiler-rt` (интерфейсы sanitizer и XRay) вместо заголовков системного компилятора и по умолчанию собирайте библиотеки `compiler-rt` из исходников. [#97499](https://github.com/ClickHouse/ClickHouse/pull/97499) ([Raúl Marín](https://github.com/Algunenano)).
* Исключено включение заголовков boost/multiprecision в `wide_integer_impl.h` на платформах с достаточно точным `long double`, что ускоряет сборку. [#96633](https://github.com/ClickHouse/ClickHouse/pull/96633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Реализован джоб LLVM Code Coverage; на первом этапе он включён для ветки master. [#90952](https://github.com/ClickHouse/ClickHouse/pull/90952) ([Alexey Bakharew](https://github.com/alexbakharew)).
* В релизных сборках включён быстрый режим защиты libcxx. В основном это нужно для проверок выхода за границы. Судя по результатам тестов производительности, заметного влияния на производительность не ожидается. [#94757](https://github.com/ClickHouse/ClickHouse/pull/94757) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

<div id="261">
  ### Релиз ClickHouse 26.1, 2026-01-29. [Презентация](https://presentations.clickhouse.com/2026-release-26.1/), [Видео](https://www.youtube.com/watch?v=fWuYt4M0xE4)
</div>

<div id="267-backward-incompatible-change">
  #### обратно несовместимое изменение
</div>

* Исправлено несогласованное форматирование, вызванное некорректной подстановкой псевдонимов в форматтере. Это закрывает [#82833](https://github.com/ClickHouse/ClickHouse/issues/82833). Это закрывает [#82832](https://github.com/ClickHouse/ClickHouse/issues/82832). Это закрывает [#68296](https://github.com/ClickHouse/ClickHouse/issues/68296). Это изменение потенциально нарушает обратную совместимость: когда анализатор отключен, некоторые запросы CREATE VIEW с IN, ссылающимся на псевдоним, не могут быть обработаны. Чтобы избежать этой несовместимости, включите анализатор (по умолчанию он включен начиная с версии 24.3). [#82838](https://github.com/ClickHouse/ClickHouse/pull/82838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Кодеки `DEFLATE_QPL` и `ZSTD_QAT` были удалены. Пользователям рекомендуется до обновления перекодировать существующие данные, сжатые с помощью `DEFLATE_QPL` или `ZSTD_QAT`, в другой кодек. Обратите внимание: для использования этих кодеков должны были быть включены настройки `enable_deflate_qpl_codec` и `enable_zstd_qat_codec`. [#92150](https://github.com/ClickHouse/ClickHouse/pull/92150) ([Robert Schulze](https://github.com/rschu1ze)).
* Улучшена отладка UDF: включён захват stderr в `system.query_log.exception`. Ранее stderr из UDF записывался только в файлы и не отображался в журнале запросов, из-за чего отладка была невозможна. Теперь stderr по умолчанию вызывает исключения и полностью накапливается (до 1 МБ) перед тем, как сгенерировать исключение, поэтому полные трассировки Python и сообщения об ошибках появляются в `system.query_log.exception`, что упрощает диагностику. [#92209](https://github.com/ClickHouse/ClickHouse/pull/92209) ([Xu Jia](https://github.com/XuJia0210)).
* Пустой список столбцов в условии `JOIN USING ()` теперь считается синтаксической ошибкой. Ранее предполагалось, что во время выполнения запроса это будет `INVALID_JOIN_ON_EXPRESSION`. В некоторых случаях, например при JOIN с хранилищем `Join`, это приводило к `LOGICAL_ERROR`; исправление закрывает [#82502](https://github.com/ClickHouse/ClickHouse/issues/82502). [#92371](https://github.com/ClickHouse/ClickHouse/pull/92371) ([Vladimir Cherkasov](https://github.com/vdimir)).
* По умолчанию для SKIP REGEXP в типе JSON используется частичное совпадение. Закрывает [#79250](https://github.com/ClickHouse/ClickHouse/issues/79250). [#92847](https://github.com/ClickHouse/ClickHouse/pull/92847) ([Pavel Kruglov](https://github.com/Avogar)).
* Отменено изменение "Allow INSERT into simple ALIAS columns" (отменяет ClickHouse/ClickHouse[#84154](https://github.com/ClickHouse/ClickHouse/issues/84154)). Оно не работает с пользовательскими форматами, и для него нет отдельной настройки. [#92849](https://github.com/ClickHouse/ClickHouse/pull/92849) ([Azat Khuzhin](https://github.com/azat)).
* Настройка, вызывающая ошибку, если каталог озера данных не имеет доступа к объектному хранилищу. [#93606](https://github.com/ClickHouse/ClickHouse/pull/93606) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Движок базы данных `Lazy` удалён и больше не доступен. Закрывает [#91231](https://github.com/ClickHouse/ClickHouse/issues/91231). [#93627](https://github.com/ClickHouse/ClickHouse/pull/93627) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалён режим `transposed_with_wide_view` для `metric_log` — из-за ошибки он неработоспособен. Задать `system.metric_log` в этом режиме больше нельзя. Это частично отменяет [#78412](https://github.com/ClickHouse/ClickHouse/issues/78412). [#93867](https://github.com/ClickHouse/ClickHouse/pull/93867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь для рабочих нагрузок по умолчанию используется вытесняющее планирование CPU. См. настройку сервера `cpu_slot_preemption`. [#94060](https://github.com/ClickHouse/ClickHouse/pull/94060) ([Sergei Trifonov](https://github.com/serxa)).
* Экранировать имена файлов индексов, чтобы избежать повреждения частей. После этого изменения ClickHouse не сможет загружать индексы с не-ASCII-символами в имени, созданные в предыдущих версиях. Для этого можно использовать настройку MergeTree `escape_index_filenames`. [#94079](https://github.com/ClickHouse/ClickHouse/pull/94079) ([Raúl Marín](https://github.com/Algunenano)).
* Настройки формата `exact_rows_before_limit`, `rows_before_aggregation`, `cross_to_inner_join_rewrite`, `regexp_dict_allow_hyperscan`, `regexp_dict_flag_case_insensitive`, `regexp_dict_flag_dotall` и `dictionary_use_async_executor` теперь переведены в разряд обычных настроек (не настроек формата). Это исключительно внутреннее изменение и не имеет заметных для пользователя побочных эффектов, кроме (маловероятного) случая, когда вы указали какие-либо из этих настроек в определениях движков таблиц Iceberg, DeltaLake, Kafka, S3, S3Queue, Azure, Hive, RabbitMQ, Set, FileLog или NATS. В таких случаях эти настройки раньше игнорировались, а теперь при таких определениях генерируется ошибка. [#94106](https://github.com/ClickHouse/ClickHouse/pull/94106) ([Robert Schulze](https://github.com/rschu1ze)).
* Функции `joinGet/joinGetOrNull` теперь требуют наличия привилегии `SELECT` для базовой таблицы Join. После этого изменения для выполнения `joinGet('db.table', 'column', key)` требуется, чтобы у пользователя была привилегия `SELECT` как для столбцов ключа, определённых в таблице Join, так и для извлекаемого столбца-атрибута. Запросы без этих привилегий будут завершаться ошибкой `ACCESS_DENIED`. Для перехода предоставьте необходимые разрешения с помощью `GRANT SELECT ON db.join_table TO user` для полного доступа к таблице или `GRANT SELECT(key_col, attr_col) ON db.join_table TO user` для доступа на уровне столбцов. Это изменение затрагивает всех пользователей и приложения, использующие `joinGet`/`joinGetOrNull`, если явные привилегии `SELECT` ранее не были настроены. [#94307](https://github.com/ClickHouse/ClickHouse/pull/94307) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Для запросов `CREATE TABLE ... AS ...` теперь проверяется `SHOW COLUMNS`. Ранее проверялся `SHOW TABLES`, но для такой проверки разрешений это некорректный grant. [#94556](https://github.com/ClickHouse/ClickHouse/pull/94556) ([pufit](https://github.com/pufit)).
* Формат вывода `Hash` теперь не зависит от размеров блоков. [#94503](https://github.com/ClickHouse/ClickHouse/pull/94503) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Обратите внимание, что из-за этого хеш-значения в выводе будут отличаться от предыдущих версий.

<div id="267-new-feature">
  #### Новая возможность
</div>

* HTTP API и встроенный веб-интерфейс для ClickHouse Keeper. [#78181](https://github.com/ClickHouse/ClickHouse/pull/78181) ([pufit](https://github.com/pufit) и [speeedmaster](https://github.com/speeedmaster)).
* Дедупликация async insert теперь работает с зависимыми materialized views. При коллизии по block\_id исходный блок фильтруется: из него удаляются строки, связанные с block\_id, а оставшиеся строки преобразуются всеми соответствующими SELECT-запросами materialized views; в результате исходный блок пересобирается без конфликтующих строк. [#89140](https://github.com/ClickHouse/ClickHouse/pull/89140) ([Sema Checherinda](https://github.com/CheSema)). Теперь можно использовать дедупликацию с async inserts, когда задействованы materialized views. [#93957](https://github.com/ClickHouse/ClickHouse/pull/93957) ([Sema Checherinda](https://github.com/CheSema)).
* Добавлены новый синтаксис и новый механизм, упрощающие и расширяющие функциональность индексов-проекций. Это продолжение работы из [https://github.com/ClickHouse/ClickHouse/pull/81021](https://github.com/ClickHouse/ClickHouse/pull/81021). [#91844](https://github.com/ClickHouse/ClickHouse/pull/91844) ([Amos Bird](https://github.com/amosbird)).
* Добавлена поддержка текстовых индексов для столбцов `Array`. [#89895](https://github.com/ClickHouse/ClickHouse/pull/89895) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Параметр `use_variant_as_common_type` теперь включён по умолчанию, что позволяет использовать несовместимые типы внутри `Array`, в запросах `UNION` и в ветвях `if`/`multiIf`/`case`. [#90677](https://github.com/ClickHouse/ClickHouse/pull/90677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена новая системная таблица `zookeeper_info`. Реализовано в [#88014](https://github.com/ClickHouse/ClickHouse/issues/88014). [#90809](https://github.com/ClickHouse/ClickHouse/pull/90809) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Добавлена поддержка типа `Variant` во всех функциях. [#90900](https://github.com/ClickHouse/ClickHouse/pull/90900) ([Bharat Nallan](https://github.com/bharatnc)).
* Добавляет метрику `ClickHouse_Info` в конечную точку Prometheus `/metrics`, содержащую в основном информацию о версии, что позволяет строить графики и отслеживать подробные сведения о версии с течением времени. [#91125](https://github.com/ClickHouse/ClickHouse/pull/91125) ([Christoph Wurm](https://github.com/cwurm)).
* Добавлена новая четырёхбуквенная команда `rcfg` для Keeper, позволяющая изменять конфигурацию кластера. Эта команда предоставляет более широкие возможности изменения конфигурации, чем стандартный запрос `reconfigure`. В качестве аргумента команда принимает строку `json`. Полный набор байтов, отправляемых в TCP-интерфейс, должен выглядеть так: `rcfg{json_string_length_big_endian}{json_string}`. Вот как могут выглядеть некоторые примеры команды: `{"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}`. [#91354](https://github.com/ClickHouse/ClickHouse/pull/91354) ([alesapin](https://github.com/alesapin)).
* Добавлена функция `reverseBySeparator`, которая меняет порядок подстрок в строке, разделённой указанным разделителем, на обратный. Закрывает [#91463](https://github.com/ClickHouse/ClickHouse/issues/91463). [#91780](https://github.com/ClickHouse/ClickHouse/pull/91780) ([Xuewei Wang](https://github.com/Sallery-X)).
* Добавляет новую настройку `max_insert_block_size_bytes`, которая позволяет точнее управлять формированием вставляемых блоков. [#92833](https://github.com/ClickHouse/ClickHouse/pull/92833) ([Kirill Kopnev](https://github.com/Fgrtue)).
* DDL-запросы с предложением `ON CLUSTER` можно выполнять для базы данных Replicated, если включена настройка `ignore_on_cluster_for_replicated_database`. В этом случае имя кластера будет проигнорировано. [#92872](https://github.com/ClickHouse/ClickHouse/pull/92872) ([Kirill](https://github.com/kirillgarbar)).
* Добавлена функция `mergeTreeAnalyzeIndexes`. [#92954](https://github.com/ClickHouse/ClickHouse/pull/92954) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена новая настройка `use_primary_key`. Установите её в `false`, чтобы отключить отсечение гранул по первичному ключу. [#93319](https://github.com/ClickHouse/ClickHouse/pull/93319) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавлена табличная функция `icebergLocalCluster`. [#93323](https://github.com/ClickHouse/ClickHouse/pull/93323) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Добавлена функция `cosineDistanceTransposed`, которая приблизительно вычисляет [косинусное расстояние](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) между двумя точками. [#93621](https://github.com/ClickHouse/ClickHouse/pull/93621) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавлен столбец `files` в таблицу system.parts, показывающий количество файлов в каждой части данных. [#94337](https://github.com/ClickHouse/ClickHouse/pull/94337) ([Match](https://github.com/gayanMatch)).
* Добавлен max-min-справедливый планировщик для управления параллелизмом. Обеспечивает более справедливое распределение ресурсов при высокой переподписке, когда множество запросов конкурируют за ограниченные слоты CPU. Короткие запросы не страдают из-за длительных запросов, которые со временем накопили больше слотов. Включается значением `max_min_fair` настройки сервера `concurrent_threads_scheduler`. [#94732](https://github.com/ClickHouse/ClickHouse/pull/94732) ([Sergei Trifonov](https://github.com/serxa)).
* В клиенте ClickHouse появилась возможность переопределять TLS SNI при подключении к серверу. [#89761](https://github.com/ClickHouse/ClickHouse/pull/89761) ([Matt Klein](https://github.com/mattklein123)).
* Добавлена поддержка временных таблиц в вызовах функции `joinGet`. [#92973](https://github.com/ClickHouse/ClickHouse/pull/92973) ([Eduard Karacharov](https://github.com/korowa)).
* Поддержка векторов удаления в движке таблицы `DeltaLake`. [#93852](https://github.com/ClickHouse/ClickHouse/pull/93852) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлена поддержка deletion vectors в `deltaLakeCluster`. [#94365](https://github.com/ClickHouse/ClickHouse/pull/94365) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Поддержка Google Cloud Storage для озер данных. [#93866](https://github.com/ClickHouse/ClickHouse/pull/93866) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="267-experimental-feature">
  #### Экспериментальные возможности
</div>

* Перевести `QBit` из экспериментальных возможностей в бета-статус. [#93816](https://github.com/ClickHouse/ClickHouse/pull/93816) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Добавить поддержку `Nullable(Tuple)`. Чтобы включить её, установите `allow_experimental_nullable_tuple_type = 1`. [#89643](https://github.com/ClickHouse/ClickHouse/pull/89643) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Добавить поддержку Paimon REST-каталога в продолжение [https://github.com/ClickHouse/ClickHouse/pull/84423](https://github.com/ClickHouse/ClickHouse/pull/84423). [#92011](https://github.com/ClickHouse/ClickHouse/pull/92011) ([JIaQi Tang](https://github.com/JiaQiTang98)).

<div id="267-performance-improvement">
  #### Повышение производительности
</div>

* Параметр `use_skip_indexes_on_data_read` теперь включен по умолчанию. Этот параметр позволяет выполнять фильтрацию в потоковом режиме одновременно с чтением, что улучшает производительность запросов и сокращает время запуска. [#93407](https://github.com/ClickHouse/ClickHouse/pull/93407) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Повышена производительность `DISTINCT` для столбцов `LowCardinality`. Закрывает [#5917](https://github.com/ClickHouse/ClickHouse/issues/5917). [#91639](https://github.com/ClickHouse/ClickHouse/pull/91639) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Оптимизирована агрегатная функция `distinctJSONPaths`: теперь она читает только JSON-пути из частей данных, а не весь JSON-столбец. [#92196](https://github.com/ClickHouse/ClickHouse/pull/92196) ([Pavel Kruglov](https://github.com/Avogar)).
* В JOIN теперь проталкивается больше фильтров. [#85556](https://github.com/ClickHouse/ClickHouse/pull/85556) ([Nikita Taranov](https://github.com/nickitat)).
* Поддержано больше случаев проталкивания из условия ON в JOIN, когда фильтр использует входные данные только с одной стороны. Поддерживаются JOIN `ANY`, `SEMI`, `ANTI`. [#92584](https://github.com/ClickHouse/ClickHouse/pull/92584) ([Dmitry Novik](https://github.com/novikd)).
* Разрешено использовать эквивалентные множества для проталкивания фильтров при `SEMI JOIN`. Закрывает [#85239](https://github.com/ClickHouse/ClickHouse/issues/85239). [#92837](https://github.com/ClickHouse/ClickHouse/pull/92837) ([Dmitry Novik](https://github.com/novikd)).
* Пропускаем чтение левой стороны hash JOIN, если правая сторона пуста. Раньше левая сторона читалась до первого непустого блока, что могло приводить к большому объёму лишней работы при интенсивной фильтрации или агрегации. [#94062](https://github.com/ClickHouse/ClickHouse/pull/94062) ([Alexander Gololobov](https://github.com/davenger)).
* Использование метода "fastrange" (Daniel Lemire) для партиционирования данных внутри конвейера выполнения запроса. Это может улучшить параллельную сортировку и JOIN-операции. [#93080](https://github.com/ClickHouse/ClickHouse/pull/93080) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Повышена производительность оконных функций, когда PARTITION BY совпадает с ключом сортировки или является его префиксом. [#87299](https://github.com/ClickHouse/ClickHouse/pull/87299) ([Nikita Taranov](https://github.com/nickitat)).
* Внешний фильтр теперь проталкивается в представления, что позволяет применять PREWHERE на локальных и удалённых узлах. Устранена проблема [#88189](https://github.com/ClickHouse/ClickHouse/issues/88189). [#88316](https://github.com/ClickHouse/ClickHouse/pull/88316) ([Igor Nikonov](https://github.com/devcrafter)).
* Реализована JIT-компиляция для ещё большего числа функций. Закрывает [#73509](https://github.com/ClickHouse/ClickHouse/issues/73509). [#88770](https://github.com/ClickHouse/ClickHouse/pull/88770) ([Alexey Milovidov](https://github.com/alexey-milovidov) совместно с [Taiyang Li](https://github.com/taiyang-li)).
* Если индекс пропуска данных, используемый в запросе `FINAL`, построен по столбцу, входящему в первичный ключ, дополнительный этап проверки пересечения по первичному ключу с другими частями не требуется и больше не выполняется. Устраняет [#85897](https://github.com/ClickHouse/ClickHouse/issues/85897). [#93899](https://github.com/ClickHouse/ClickHouse/pull/93899) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Улучшены производительность и использование памяти при дробных `LIMIT` и `OFFSET`. [#91167](https://github.com/ClickHouse/ClickHouse/pull/91167) ([Ahmed Gouda](https://github.com/0xgouda)).
* Исправлено использование более быстрой логики произвольного чтения в префетчере ридера Parquet V3. Закрывает [#90890](https://github.com/ClickHouse/ClickHouse/issues/90890). [#91435](https://github.com/ClickHouse/ClickHouse/pull/91435) ([Arsen Muk](https://github.com/arsenmuk)).
* Повышена производительность `icebergCluster`. Закрывает [#91462](https://github.com/ClickHouse/ClickHouse/issues/91462). [#91537](https://github.com/ClickHouse/ClickHouse/pull/91537) ([Yang Jiang](https://github.com/Ted-Jiang)).
* Не выполнять фильтрацию по виртуальным столбцам для константных фильтров. [#91588](https://github.com/ClickHouse/ClickHouse/pull/91588) ([c-end](https://github.com/c-end)).
* Снижено использование памяти при INSERT и слияниях с частями Wide в очень широких таблицах за счёт включения адаптивных буферов записи. Добавлена поддержка адаптивных буферов записи для зашифрованных дисков. [#92250](https://github.com/ClickHouse/ClickHouse/pull/92250) ([Azat Khuzhin](https://github.com/azat)).
* Повышена производительность полнотекстового поиска с текстовым индексом и токенизатором `sparseGrams` за счёт сокращения числа токенов, по которым выполняется поиск в индексе. [#93078](https://github.com/ClickHouse/ClickHouse/pull/93078) ([Anton Popov](https://github.com/CurtizJ)).
* Функция `isValidASCII` была оптимизирована для случаев с положительным результатом, то есть для входных значений, полностью состоящих из ASCII. [#93347](https://github.com/ClickHouse/ClickHouse/pull/93347) ([Robert Schulze](https://github.com/rschu1ze)).
* Оптимизация read-in-order теперь распознаёт случаи, когда столбцы ORDER BY являются константами из-за условий WHERE, что позволяет эффективно читать данные в обратном порядке. Это полезно для многотенантных запросов, таких как `WHERE tenant='42' ORDER BY tenant, event_time DESC`, которые теперь могут использовать InReverseOrder без необходимости полной сортировки.". [#94103](https://github.com/ClickHouse/ClickHouse/pull/94103) ([matanper](https://github.com/matanper)).
* Добавлен специализированный класс AST для Enum, который хранит значения параметров в виде пар (string, integer) вместо дочерних элементов ASTLiteral для оптимизации потребления памяти. [#94178](https://github.com/ClickHouse/ClickHouse/pull/94178) ([Ilya Yatsishin](https://github.com/qoega)).
* Распределённый анализ индексов на нескольких репликах. Полезно при использовании совместно используемого хранилища и очень больших объёмов данных в кластере. Это применимо к SharedMergeTree (ClickHouse Cloud) и может быть применимо к другим типам таблиц MergeTree с совместно используемым хранилищем. [#86786](https://github.com/ClickHouse/ClickHouse/pull/86786) ([Azat Khuzhin](https://github.com/azat)).
* Снижены накладные расходы на JOIN Runtime Filters за счет их отключения в следующих случаях: - в фильтре Блума установлено слишком много битов - на этапе выполнения отфильтровывается слишком мало строк. [#91578](https://github.com/ClickHouse/ClickHouse/pull/91578) ([Alexander Gololobov](https://github.com/davenger)).
* Используйте буфер в памяти для входных данных коррелированных подзапросов, чтобы не вычислять их многократно. Часть [#79890](https://github.com/ClickHouse/ClickHouse/issues/79890). [#91205](https://github.com/ClickHouse/ClickHouse/pull/91205) ([Dmitry Novik](https://github.com/novikd)).
* Разрешить всем репликам при чтении с использованием параллельных реплик параллельно перехватывать осиротевшие диапазоны. Это улучшает балансировку нагрузки и снижает задержки на длинном хвосте. [#91374](https://github.com/ClickHouse/ClickHouse/pull/91374) ([zoomxi](https://github.com/zoomxi)).
* Внешняя агрегация/сортировка/JOIN теперь учитывают настройку запроса `temporary_files_codec` во всех контекстах. Исправлена проблема с отсутствующими profile events для grace hash join. [#92388](https://github.com/ClickHouse/ClickHouse/pull/92388) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Сделали более надёжным определение использования памяти запросом при сбросе на диск во время агрегации/сортировки. [#92500](https://github.com/ClickHouse/ClickHouse/pull/92500) ([Azat Khuzhin](https://github.com/azat)).
* Оценка общего числа строк и статистики NDV (числа различных значений) для столбцов ключа агрегации. [#92812](https://github.com/ClickHouse/ClickHouse/pull/92812) ([Alexander Gololobov](https://github.com/davenger)).
* Оптимизировано сжатие списка postings с помощью simdcomp. [#92871](https://github.com/ClickHouse/ClickHouse/pull/92871) ([Peng Jian](https://github.com/fastio)).
* Переработана обработка режима Ordered в S3Queue с использованием бакетов. Это также должно повысить производительность за счёт сокращения числа запросов к Keeper. [#92889](https://github.com/ClickHouse/ClickHouse/pull/92889) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Функции `mapContainsKeyLike` и `mapContainsValueLike` теперь могут использовать текстовый индекс для `mapKeys()` и `mapValues()` соответственно. [#93049](https://github.com/ClickHouse/ClickHouse/pull/93049) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Снижено использование памяти в не-Linux-системах (включена немедленная очистка «грязных» страниц jemalloc). [#93360](https://github.com/ClickHouse/ClickHouse/pull/93360) ([Eduard Karacharov](https://github.com/korowa)).
* Реализована принудительная очистка арен jemalloc, если отношение объёма грязных страниц к `max_server_memory_usage` превышает `memory_worker_purge_dirty_pages_threshold_ratio`. [#93500](https://github.com/ClickHouse/ClickHouse/pull/93500) ([Eduard Karacharov](https://github.com/korowa)).
* Снижено использование памяти для AST. [#93601](https://github.com/ClickHouse/ClickHouse/pull/93601) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* В некоторых случаях мы замечали, что ClickHouse не соблюдает лимит памяти при чтении из таблицы. Это исправлено. [#93715](https://github.com/ClickHouse/ClickHouse/pull/93715) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Расширения Keeper `CHECK_STAT` и `TRY_REMOVE` теперь включены по умолчанию. [#93886](https://github.com/ClickHouse/ClickHouse/pull/93886) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Разбор нижних и верхних границ имён файлов для позиционных удалений из записей manifest file в Iceberg для более точного выбора соответствующих файлов данных. [#93980](https://github.com/ClickHouse/ClickHouse/pull/93980) ([Daniil Ivanik](https://github.com/divanik)).
* Добавлены ещё две настройки для управления максимальным количеством динамических подстолбцов в JSON-столбце. Первая — настройка MergeTree `merge_max_dynamic_subcolumns_in_compact_part` (аналогично уже добавленной `merge_max_dynamic_subcolumns_in_wide_part`), которая ограничивает количество динамических подстолбцов, создаваемых при слиянии в Compact part. Вторая — настройка уровня запроса `max_dynamic_subcolumns_in_json_type_parsing`, которая ограничивает количество динамических подстолбцов, создаваемых при разборе JSON-данных; она позволяет задавать этот лимит при вставке. [#94184](https://github.com/ClickHouse/ClickHouse/pull/94184) ([Pavel Kruglov](https://github.com/Avogar)).
* В некоторых случаях немного оптимизировано укрупнение блоков для JSON-столбцов. [#94247](https://github.com/ClickHouse/ClickHouse/pull/94247) ([Pavel Kruglov](https://github.com/Avogar)).
* Уменьшен размер очередей пула потоков с учетом опыта эксплуатации в продакшне. Добавлена явная проверка потребления памяти перед чтением каких-либо данных из MergeTree. [#94692](https://github.com/ClickHouse/ClickHouse/pull/94692) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Сделано так, чтобы при нехватке CPU планировщик отдавал предпочтение потоку MemoryWorker, поскольку это защищает процесс ClickHouse от критической угрозы. [#94864](https://github.com/ClickHouse/ClickHouse/pull/94864) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Очистка грязных страниц jemalloc теперь выполняется в отдельном потоке, а не в основном потоке MemoryWorker. Если очистка выполняется медленно, это может задерживать обновление использования RSS, что может приводить к аварийному завершению процесса из-за нехватки памяти. Добавлен новый параметр конфигурации `memory_worker_purge_total_memory_threshold_ratio`, чтобы запускать очистку грязных страниц в зависимости от доли общего использования памяти. [#94902](https://github.com/ClickHouse/ClickHouse/pull/94902) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="267-improvement">
  #### Улучшения
</div>

* `system.blob_storage_log` теперь поддерживается для Azure Blob Storage. [#93105](https://github.com/ClickHouse/ClickHouse/pull/93105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Реализован `blob_storage_log` для Local и HDFS. Исправлена ошибка, из-за которой `S3Queue` использовал для записи в `blob_storage_log` не имя диска. В `blob_storage_log` добавлен столбец `error_code`. Тестовый файл конфигурации разделён, чтобы упростить локальное тестирование. [#93106](https://github.com/ClickHouse/ClickHouse/pull/93106) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` и `clickhouse-local` будут подсвечивать группы цифр (тысячи, миллионы и т. д.) внутри числовых литералов во время ввода. Это закрывает [#93100](https://github.com/ClickHouse/ClickHouse/issues/93100). [#93108](https://github.com/ClickHouse/ClickHouse/pull/93108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В `clickhouse-client` добавлена поддержка аргументов командной строки с пробелами вокруг знака равенства. Закрывает [#93077](https://github.com/ClickHouse/ClickHouse/issues/93077). [#93174](https://github.com/ClickHouse/ClickHouse/pull/93174) ([Cole Smith](https://github.com/colesmith54)).
* С `<interactive_history_legacy_keymap>true</interactive_history_legacy_keymap>` CLI-клиент теперь может, как и раньше, использовать Ctrl-R для обычного поиска, а Ctrl-T — для нечёткого поиска. [#87785](https://github.com/ClickHouse/ClickHouse/pull/87785) ([Larry Snizek](https://github.com/larry-cdn77)).
* Оператор очистки кэша `SYSTEM DROP [...] CACHE` создавал ложное впечатление, что этот оператор отключает кэш. ClickHouse теперь поддерживает оператор `SYSTEM CLEAR [...] CACHE`, который звучит понятнее. Старый синтаксис по-прежнему доступен. [#93727](https://github.com/ClickHouse/ClickHouse/pull/93727) ([Pranav Tiwari](https://github.com/pranavt84)).
* Поддержка составного первичного ключа в `EmbeddedRocksDB`. Закрывает [#32819](https://github.com/ClickHouse/ClickHouse/issues/32819). [#33917](https://github.com/ClickHouse/ClickHouse/pull/33917) ([usurai](https://github.com/usurai)).
* Теперь можно использовать неконстантный IN со скалярами (запросы вида `val1 NOT IN if(cond, val2, val3)`). [#93495](https://github.com/ClickHouse/ClickHouse/pull/93495) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Предотвращена передача заголовков `x-amz-server-side-encryption` в S3-запросах `HeadObject`, `UploadPart` и `CompleteMultipartUpload`, поскольку они не поддерживаются. [#64577](https://github.com/ClickHouse/ClickHouse/pull/64577) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* Отслеживание hive-партиционирования в режиме ordered в S3Queue. Закрывает [#71161](https://github.com/ClickHouse/ClickHouse/issues/71161). [#81040](https://github.com/ClickHouse/ClickHouse/pull/81040) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Оптимизировано резервирование места в файловом кэше. `FileCache::collectCandidatesForEviction` теперь будет выполняться без уникальной блокировки. [#82764](https://github.com/ClickHouse/ClickHouse/pull/82764) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлена поддержка составной стратегии ротации (размер + время) для журнала сервера. [#87620](https://github.com/ClickHouse/ClickHouse/pull/87620) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* CLI-клиент теперь может использовать `<warnings>false</warnings>` вместо параметра командной строки `--no-warnings`. [#87783](https://github.com/ClickHouse/ClickHouse/pull/87783) ([Larry Snizek](https://github.com/larry-cdn77)).
* Добавлена поддержка агрегатной функции `avg`, принимающей в качестве аргументов значения типов Date, DateTime и Time. Закрывает [#82267](https://github.com/ClickHouse/ClickHouse/issues/82267). [#87845](https://github.com/ClickHouse/ClickHouse/pull/87845) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Оптимизация `use_join_disjunctions_push_down` по умолчанию включена. [#89313](https://github.com/ClickHouse/ClickHouse/pull/89313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка большего числа движков таблиц и типов источников данных в коррелированных подзапросах. Закрывает [#80775](https://github.com/ClickHouse/ClickHouse/issues/80775). [#90175](https://github.com/ClickHouse/ClickHouse/pull/90175) ([Dmitry Novik](https://github.com/novikd)).
* Если схема параметризованного представления явно задана, она отображается. Закрывает [#88875](https://github.com/ClickHouse/ClickHouse/issues/88875), [#81385](https://github.com/ClickHouse/ClickHouse/issues/81385). [#90220](https://github.com/ClickHouse/ClickHouse/pull/90220) ([Grigorii Sokolik](https://github.com/GSokol)).
* Корректная обработка пропуска в записях журнала Keeper, если они находятся до последнего зафиксированного индекса. [#90403](https://github.com/ClickHouse/ClickHouse/pull/90403) ([Antonio Andelic](https://github.com/antonio2368)).
* Улучшена работа настройки `min_free_disk_bytes_to_perform_insert` с томами JBOD. [#90878](https://github.com/ClickHouse/ClickHouse/pull/90878) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Добавлена возможность указывать настройку `storage_class_name` в именованных коллекциях для движка таблицы `S3` и табличной функции `s3`. [#91926](https://github.com/ClickHouse/ClickHouse/pull/91926) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Добавлена поддержка вставки в auxiliary ZooKeeper через `system.zookeeper`. [#92092](https://github.com/ClickHouse/ClickHouse/pull/92092) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Добавлены новые метрики для Keeper: события профиля `KeeperChangelogWrittenBytes`, `KeeperChangelogFileSyncMicroseconds`, `KeeperSnapshotWrittenBytes` и `KeeperSnapshotFileSyncMicroseconds`, а также гистограммные метрики `KeeperBatchSizeElements` и `KeeperBatchSizeBytes`. [#92149](https://github.com/ClickHouse/ClickHouse/pull/92149) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена новая настройка `trace_profile_events_list`, которая ограничивает трассировку с помощью `trace_profile_event` указанным списком имён событий. Это позволяет точнее собирать данные при высоких рабочих нагрузках. [#92298](https://github.com/ClickHouse/ClickHouse/pull/92298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка SYSTEM NOTIFY FAILPOINT для приостанавливаемых failpoint. — Добавлена поддержка SYSTEM WAIT FAILPOINT fp PAUSE/RESUME. [#92368](https://github.com/ClickHouse/ClickHouse/pull/92368) ([Shaohua Wang](https://github.com/tiandiwonder)).
* В `system.data_skipping_indices` добавлен столбец `creation` (неявный/явный). [#92378](https://github.com/ClickHouse/ClickHouse/pull/92378) ([Raúl Marín](https://github.com/Algunenano)).
* Разрешена передача описания столбцов dyn-таблиц YTsaurus в источник словаря. [#92391](https://github.com/ClickHouse/ClickHouse/pull/92391) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* В [#63985](https://github.com/ClickHouse/ClickHouse/pull/63985) мы добавили возможность указывать все параметры, необходимые для настройки TLS, отдельно для каждого порта (см. [composable protocols](https://clickhouse.com/docs/operations/settings/composable-protocols)), так что теперь не нужно полагаться на глобальную конфигурацию TLS. Однако реализация по-прежнему неявно требует наличия глобального раздела конфигурации `openSSL.server`, что конфликтует со сценариями, где для разных портов нужны разные настройки TLS. Например, в развертываниях keeper-in-server нам нужны отдельные конфигурации TLS для взаимодействия между узлами Keeper и для подключений клиента ClickHouse. [#92457](https://github.com/ClickHouse/ClickHouse/pull/92457) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена новая настройка `input_format_binary_max_type_complexity`, которая ограничивает общее число узлов типов, декодируемых в бинарном формате, чтобы предотвратить передачу вредоносных полезных нагрузок. [#92519](https://github.com/ClickHouse/ClickHouse/pull/92519) ([Raufs Dunamalijevs](https://github.com/rienath)).
* В `system.background_schedule_pool{,_log}` теперь отражаются выполняющиеся задачи. Добавлена документация. [#92587](https://github.com/ClickHouse/ClickHouse/pull/92587) ([Azat Khuzhin](https://github.com/azat)).
* Выполнять текущий запрос при поиске по Ctrl+R в клиенте, если в истории не найдено совпадений. [#92749](https://github.com/ClickHouse/ClickHouse/pull/92749) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена поддержка `EXPLAIN indices = 1` в качестве алиаса для `EXPLAIN indexes = 1`. Закрывает [#92483](https://github.com/ClickHouse/ClickHouse/issues/92483). [#92774](https://github.com/ClickHouse/ClickHouse/pull/92774) ([Pranav Tiwari](https://github.com/pranavt84)).
* Ридер Parquet теперь позволяет читать столбцы Tuple или Map в формате JSON: `select x from file(f.parquet, auto, 'x JSON')` работает, даже если тип столбца `x` в `f.parquet` — Tuple или Map. [#92864](https://github.com/ClickHouse/ClickHouse/pull/92864) ([Michael Kolupaev](https://github.com/al13n321)).
* Поддержка пустых Tuple в ридере Parquet. [#92868](https://github.com/ClickHouse/ClickHouse/pull/92868) ([Michael Kolupaev](https://github.com/al13n321)).
* Переход к копированию с возможностью чтения и записи для Azure Blob Storage, если нативное копирование завершается ошибкой BadRequest (например, из-за недопустимого списка блоков). Ранее это выполнялось только для ошибки Unauthorized, которая наблюдалась при копировании blob между разными аккаунтами хранилища. Однако иногда также возникает ошибка "The specified block list is invalid". Поэтому теперь условие обновлено так, чтобы переходить к чтению & записи при любых сбоях нативного копирования. [#92888](https://github.com/ClickHouse/ClickHouse/pull/92888) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Исправлено ограничение частоты запросов к конечной точке метаданных EC2 при выполнении большого числа параллельных S3-запросов с учетными данными профиля экземпляра EC2. Ранее каждый запрос создавал собственный `AWSInstanceProfileCredentialsProvider`, из-за чего к сервису метаданных EC2 отправлялись параллельные запросы, что могло приводить к тайм-аутам и ошибкам `HTTP response code: 403`. Теперь поставщик учетных данных кэшируется и используется всеми запросами совместно. [#92891](https://github.com/ClickHouse/ClickHouse/pull/92891) ([Sav](https://github.com/sberss)).
* Переработана настройка `insert_select_deduplicate`, чтобы сохранить обратную совместимость. [#92951](https://github.com/ClickHouse/ClickHouse/pull/92951) ([Sema Checherinda](https://github.com/CheSema)).
* Логировать фоновые задачи, которые выполняются медленнее среднего (`background_schedule_pool_log.duration_threshold_milliseconds=30`), чтобы избежать избыточного логирования задач. [#92965](https://github.com/ClickHouse/ClickHouse/pull/92965) ([Azat Khuzhin](https://github.com/azat)).
* В предыдущих версиях некоторые имена функций C++ в `system.trace_log` и `system.symbols` отображались некорректно («искажёнными»), а функция `demangle` плохо с ними справлялась. Закрывает [#93074](https://github.com/ClickHouse/ClickHouse/issues/93074). [#93075](https://github.com/ClickHouse/ClickHouse/pull/93075) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена настройка резервного копирования `backup_data_from_refreshable_materialized_view_targets`, позволяющая не включать в резервную копию refreshable materialized view. RMV со стратегией обновления APPEND всегда резервируются. [#93076](https://github.com/ClickHouse/ClickHouse/pull/93076) ([Julia Kartseva](https://github.com/jkartseva)). [#93658](https://github.com/ClickHouse/ClickHouse/pull/93658) ([Julia Kartseva](https://github.com/jkartseva))
* Использовать минимальную отладочную информацию вместо её полного отсутствия для тяжёлых единиц трансляции, таких как функции. [#93079](https://github.com/ClickHouse/ClickHouse/pull/93079) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка совместимости MinIO в AWS S3 C++ SDK благодаря реализации сопоставления кодов ошибок для специфических ошибок MinIO. Это изменение позволяет ClickHouse корректно обрабатывать ошибки сервера MinIO и выполнять повторные попытки при использовании развертываний MinIO вместо AWS S3, повышая надежность для пользователей, использующих Объектное хранилище в самоуправляемых кластерах MinIO. [#93082](https://github.com/ClickHouse/ClickHouse/pull/93082) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Запись символизированных профилей jemalloc (без необходимости использовать бинарный файл при создании профиля кучи). [#93099](https://github.com/ClickHouse/ClickHouse/pull/93099) ([Azat Khuzhin](https://github.com/azat)).
* Восстановлена работа инструмента `clickhouse git-import` — ранее он не работал с большими и некорректными коммитами. См. [https://presentations.clickhouse.com/2020-matemarketing/](https://presentations.clickhouse.com/2020-matemarketing/). [#93202](https://github.com/ClickHouse/ClickHouse/pull/93202) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Не показывать пароли из URL-хранилища в журнале запросов. [#93245](https://github.com/ClickHouse/ClickHouse/pull/93245) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Добавлена поддержка типа `Geometry` для `flipCoordinates`. [#93303](https://github.com/ClickHouse/ClickHouse/pull/93303) ([Bharat Nallan](https://github.com/bharatnc)).
* Улучшен UX команды SYSTEM INSTRUMENT ADD/REMOVE: для имён функций теперь используются строковые литералы String, исправлены все соответствующие функции, а также разрешено использовать function\_name в `REMOVE`. [#93345](https://github.com/ClickHouse/ClickHouse/pull/93345) ([Pablo Marcos](https://github.com/pamarcos)).
* Добавлена новая настройка `materialize_statistics_on_merge`, которая включает или отключает материализацию статистики при слиянии. Значение по умолчанию — `1`. [#93379](https://github.com/ClickHouse/ClickHouse/pull/93379) ([Han Fei](https://github.com/hanfei1991)).
* ClickHouse теперь может разбирать `SELECT` в запросах `DESCRIBE SELECT` без круглых скобок. Закрывает [#58382](https://github.com/ClickHouse/ClickHouse/issues/58382). [#93429](https://github.com/ClickHouse/ClickHouse/pull/93429) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена рандомизация проверок корректности кэша с заданной вероятностью. [#93439](https://github.com/ClickHouse/ClickHouse/pull/93439) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлена настройка `type_json_allow_duplicated_key_with_literal_and_nested_object`, позволяющая использовать дублирующиеся пути в JSON, где один является литералом, а другой — вложенным объектом, например `{"a" : 42, "a" : {"b" : 42}}`. Некоторые данные могли быть созданы до добавления этого ограничения на дублирующиеся пути в [https://github.com/ClickHouse/ClickHouse/pull/79317](https://github.com/ClickHouse/ClickHouse/pull/79317), и дальнейшие манипуляции с такими данными теперь могут приводить к ошибкам. С этой настройкой такие старые данные по-прежнему можно использовать без ошибок. [#93604](https://github.com/ClickHouse/ClickHouse/pull/93604) ([Pavel Kruglov](https://github.com/Avogar)).
* Не выводить значения простых типов в Pretty JSON на отдельных строках. [#93836](https://github.com/ClickHouse/ClickHouse/pull/93836) ([Pavel Kruglov](https://github.com/Avogar)).
* При большом количестве операторов `alter table ... modify setting ...` может не удаваться получить блокировку за 5 секунд. Лучше возвращать `timeout`, а не `logical error`. [#93856](https://github.com/ClickHouse/ClickHouse/pull/93856) ([Han Fei](https://github.com/hanfei1991)).
* Предотвращён избыточный вывод при синтаксической ошибке. До этого изменения выводился весь SQL-скрипт, который мог содержать множество запросов. [#93876](https://github.com/ClickHouse/ClickHouse/pull/93876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Реализован корректный расчёт размера в байтах для запроса `check` со статистикой в Keeper. [#93907](https://github.com/ClickHouse/ClickHouse/pull/93907) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Добавлен параметр `use_hash_table_stats_for_join_reordering`, который определяет, использовать ли статистику размера хеш-таблицы во время выполнения для изменения порядка JOIN. Этот параметр по умолчанию включен, что сохраняет существующее поведение `collect_hash_table_stats_during_joins`. [#93912](https://github.com/ClickHouse/ClickHouse/pull/93912) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Теперь пользователи могут частично просматривать вложенные глобальные настройки сервера в таблице `system.server_settings` (например, `logger.level`). Это применимо только к настройкам с фиксированной структурой (без списков, перечислений, повторяющихся элементов и т. д.). [#94001](https://github.com/ClickHouse/ClickHouse/pull/94001) ([Hechem Selmi](https://github.com/m-selmi)).
* `QBit` теперь можно проверять на равенство. [#94078](https://github.com/ClickHouse/ClickHouse/pull/94078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Когда Keeper обнаруживает поврежденный снимок или несогласованные журналы изменений, он генерирует исключение вместо того, чтобы требовать ручного прерывания или автоматически очищать файлы. Это должно сделать поведение Keeper более безопасным, поскольку оно теперь опирается на ручное вмешательство. [#94168](https://github.com/ClickHouse/ClickHouse/pull/94168) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлена ситуация, когда при сбое `CREATE TABLE` могли оставаться артефакты. [#94174](https://github.com/ClickHouse/ClickHouse/pull/94174) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка доступа к неинициализированной памяти (ошибка в OpenSSL) при использовании защищённого паролем TLS-ключа. [#94182](https://github.com/ClickHouse/ClickHouse/pull/94182) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Обновлён chdig до [v26.1.1](https://github.com/azat/chdig/releases/tag/v26.1.1). [#94290](https://github.com/ClickHouse/ClickHouse/pull/94290) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена поддержка более общего партиционирования для режима ordered в S3Queue. [#94321](https://github.com/ClickHouse/ClickHouse/pull/94321) ([Bharat Nallan](https://github.com/bharatnc)).
* Добавлен алиас `use_statistics` для настройки `allow_statistics_optimize`. Это лучше соответствует существующим настройкам `use_primary_key` и `use_skip_indexes`. [#94366](https://github.com/ClickHouse/ClickHouse/pull/94366) ([Robert Schulze](https://github.com/rschu1ze)).
* Включена настройка `input_format_numbers_enum_on_conversion_error` для проверки существования элемента при преобразовании чисел в Enum. [#94384](https://github.com/ClickHouse/ClickHouse/pull/94384) ([Elmi Ahmadov](https://github.com/ahmadov)).
* В режиме `ordered` для S3(Azure)Queue очистка сбойных узлов теперь выполняется с учётом лимитов отслеживания (раньше это делалось только в режиме `unordered` — и для сбойных, и для обработанных узлов; теперь это будет выполняться и для `ordered`, но только для сбойных узлов). [#94412](https://github.com/ClickHouse/ClickHouse/pull/94412) ([Kseniia Sumarokova](https://github.com/kssenii)).
* В `clickhouse-local` для пользователя `default` включено управление доступом. У пользователя `default` в `clickhouse-local` отсутствовала привилегия access\_management, из-за чего операции вроде `DROP ROW POLICY IF EXISTS` завершались ошибкой `ACCESS_DENIED`, хотя у этого пользователя не должно быть ограничений. [#94501](https://github.com/ClickHouse/ClickHouse/pull/94501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка named collection для словарей и таблиц YTsaurus. [#94582](https://github.com/ClickHouse/ClickHouse/pull/94582) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Добавлена поддержка именованных коллекций, определяемых в SQL, в BACKUP/RESTORE для S3 и Azure Blob Storage. Закрывает [#94604](https://github.com/ClickHouse/ClickHouse/issues/94604). [#94605](https://github.com/ClickHouse/ClickHouse/pull/94605) ([Pablo Marcos](https://github.com/pamarcos)).
* Добавлена поддержка бакетизации на основе ключа партиционирования для S3Queue в режиме ordered. [#94698](https://github.com/ClickHouse/ClickHouse/pull/94698) ([Bharat Nallan](https://github.com/bharatnc)).
* Добавлена асинхронная метрика, показывающая время выполнения самого долгого слияния. [#94825](https://github.com/ClickHouse/ClickHouse/pull/94825) ([Raúl Marín](https://github.com/Algunenano)).
* Добавлена проверка принадлежности файла перед применением позиционного удаления с использованием IcebergBitmapPositionDeleteTransform. [#94897](https://github.com/ClickHouse/ClickHouse/pull/94897) ([Yang Jiang](https://github.com/Ted-Jiang)).
* Теперь `view_duration_ms` показывает время, в течение которого группа была активна, а не суммарную длительность потоков в ней. [#94966](https://github.com/ClickHouse/ClickHouse/pull/94966) ([Sema Checherinda](https://github.com/CheSema)).
* Снято ограничение на максимальное количество поисковых токенов в функциях `hasAnyTokens` и `hasAllTokens`, которое ранее составляло 64. Пример: `SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]);` Этот запрос приводил бы к ошибке `BAD_ARGUMENTS`, поскольку содержит 65 поисковых токенов. В этом PR ограничение полностью снято, и тот же запрос будет выполняться без ошибки. [#95152](https://github.com/ClickHouse/ClickHouse/pull/95152) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Добавлена настройка `input_format_numbers_enum_on_conversion_error` для преобразования чисел в Enum с проверкой наличия элемента. Закрывает: [#56144](https://github.com/ClickHouse/ClickHouse/issues/56144). [#56240](https://github.com/ClickHouse/ClickHouse/pull/56240) ([Nikolay Degterinsky](https://github.com/evillique)).
* Ресурсы парсера формата теперь совместно используются при чтении data file и position delete file в таблицах Iceberg, что позволяет сократить число выделений памяти. [#94701](https://github.com/ClickHouse/ClickHouse/pull/94701) ([Yang Jiang](https://github.com/Ted-Jiang)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
</div>

* Исправлена ошибка, из-за которой в обработчиках предопределённых запросов пробельные символы в конце интерпретировались как данные при вставке. [#83604](https://github.com/ClickHouse/ClickHouse/pull/83604) ([Fabian Ponce](https://github.com/FabianPonce)).
* Исправлена ошибка INCOMPATIBLE\_TYPE\_OF\_JOIN в хранилище Join при применении оптимизации преобразования outer join в inner join. Исправляет [#80794](https://github.com/ClickHouse/ClickHouse/issues/80794). [#84292](https://github.com/ClickHouse/ClickHouse/pull/84292) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено исключение "Invalid number of rows in Chunk" при использовании hash JOIN с включенным `allow_experimental_join_right_table_sorting`. [#86440](https://github.com/ClickHouse/ClickHouse/pull/86440) ([yanglongwei](https://github.com/ylw510)).
* Теперь в MergeTree имена файлов всегда заменяются хешами, если файловая система нечувствительна к регистру. Ранее в системах с нечувствительной к регистру файловой системой (например, macOS) это могло приводить к повреждению данных, если несколько имён столбцов/подстолбцов различались только регистром. [#86559](https://github.com/ClickHouse/ClickHouse/pull/86559) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлена полная проверка разрешений на этапе создания для запроса, лежащего в основе materialized view. [#89180](https://github.com/ClickHouse/ClickHouse/pull/89180) ([pufit](https://github.com/pufit)).
* Исправлен сбой в функции `icebergHash` при константном аргументе. [#90335](https://github.com/ClickHouse/ClickHouse/pull/90335) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлена логическая ошибка, из-за которой мутация вне транзакции изменяла части в активной транзакции, которая в итоге откатывалась. [#90469](https://github.com/ClickHouse/ClickHouse/pull/90469) ([Shaohua Wang](https://github.com/tiandiwonder)).
* `system.warnings` теперь корректно обновляется после преобразования обычной базы данных в базу данных atomic. [#90473](https://github.com/ClickHouse/ClickHouse/pull/90473) ([sdk2](https://github.com/sdk2)).
* Исправлено срабатывание assertion при чтении из файла Parquet, если часть выражения **prewhere** используется в другой части запроса. [#90635](https://github.com/ClickHouse/ClickHouse/pull/90635) ([Max Kainov](https://github.com/maxknv)).
* Исправлен сбой в одноузловом кластере при чтении из Iceberg в режиме split-by-buckets. Закрывает [#90913](https://github.com/ClickHouse/ClickHouse/issues/90913#issue-3668583963). [#91553](https://github.com/ClickHouse/ClickHouse/pull/91553) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена возможная логическая ошибка в движке Log при чтении подстолбцов. Закрывает [#91710](https://github.com/ClickHouse/ClickHouse/issues/91710). [#91711](https://github.com/ClickHouse/ClickHouse/pull/91711) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена логическая ошибка: 'Хранилище не поддерживает транзакции' при ATTACH AS REPLICATED. [#91772](https://github.com/ClickHouse/ClickHouse/pull/91772) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Исправлена некорректная работа runtime-фильтров, когда у LEFT ANTI JOIN есть дополнительное постусловие. [#91824](https://github.com/ClickHouse/ClickHouse/pull/91824) ([Alexander Gololobov](https://github.com/davenger)).
* Исправляет ошибку в null-safe сравнении с типом Nothing. Закрывает [#91834](https://github.com/ClickHouse/ClickHouse/issues/91834). Закрывает [#84870](https://github.com/ClickHouse/ClickHouse/issues/84870). Закрывает [#91821](https://github.com/ClickHouse/ClickHouse/issues/91821). [#91884](https://github.com/ClickHouse/ClickHouse/pull/91884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлены ошибки декодирования DELTA\_BYTE\_ARRAY в нативном ридере Parquet, которые затрагивали строковые данные с высокой степенью повторяемости. [#91929](https://github.com/ClickHouse/ClickHouse/pull/91929) ([Daniel Muino](https://github.com/dmuino)).
* Кэшировать схему в глоб-шаблонах только для того файла, по которому она была определена, а не для всех файлов при определении схемы. Закрывает [#91745](https://github.com/ClickHouse/ClickHouse/issues/91745). [#92006](https://github.com/ClickHouse/ClickHouse/pull/92006) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка `Couldn't pack tar archive: Failed to write all bytes`, вызванная некорректным заголовком с размером записи в архиве. Исправляет [#89075](https://github.com/ClickHouse/ClickHouse/issues/89075). [#92122](https://github.com/ClickHouse/ClickHouse/pull/92122) ([Julia Kartseva](https://github.com/jkartseva)).
* Поток запроса в insert select теперь освобождается, чтобы предотвратить закрытие HTTP-соединения. [#92175](https://github.com/ClickHouse/ClickHouse/pull/92175) ([Sema Checherinda](https://github.com/CheSema)).
* Исправлена логическая ошибка в запросах с несколькими JOIN, использующих предложение `USING` и `join_use_nulls`. [#92251](https://github.com/ClickHouse/ClickHouse/pull/92251) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена логическая ошибка при изменении порядка JOIN с join\_use\_nulls, закрыт [https://github.com/clickhouse/clickhouse/issues/90795](https://github.com/clickhouse/clickhouse/issues/90795). [#92289](https://github.com/ClickHouse/ClickHouse/pull/92289) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено неконсистентное форматирование AST для arrayElement с отрицательным литералом. Закрывает [#92288](https://github.com/ClickHouse/ClickHouse/issues/92288) Закрывает [#92212](https://github.com/ClickHouse/ClickHouse/issues/92212) Закрывает [#91832](https://github.com/ClickHouse/ClickHouse/issues/91832) Закрывает [#91789](https://github.com/ClickHouse/ClickHouse/issues/91789) Закрывает [#91735](https://github.com/ClickHouse/ClickHouse/issues/91735) Закрывает [#88495](https://github.com/ClickHouse/ClickHouse/issues/88495) Закрывает [#92386](https://github.com/ClickHouse/ClickHouse/issues/92386). [#92293](https://github.com/ClickHouse/ClickHouse/pull/92293) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен возможный сбой при использовании настройки `join_on_disk_max_files_to_merge`. [#92335](https://github.com/ClickHouse/ClickHouse/pull/92335) ([Bharat Nallan](https://github.com/bharatnc)).
* Связанный issue #[https://github.com/ClickHouse/support-escalation/issues/6365](https://github.com/ClickHouse/support-escalation/issues/6365). [#92339](https://github.com/ClickHouse/ClickHouse/pull/92339) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлено отсутствие проверки прав доступа в `SYSTEM SYNC FILE CACHE`. Закрывает [#92101](https://github.com/ClickHouse/ClickHouse/issues/92101). [#92372](https://github.com/ClickHouse/ClickHouse/pull/92372) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлен проход `count_distinct_optimization` для оконных функций и нескольких аргументов. [#92376](https://github.com/ClickHouse/ClickHouse/pull/92376) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлена ошибка "Невозможно записать в финализированный буфер", возникавшая при использовании некоторых агрегатных функций с оконными функциями. Закрывает [#91415](https://github.com/ClickHouse/ClickHouse/issues/91415). [#92395](https://github.com/ClickHouse/ClickHouse/pull/92395) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Исправлена логическая ошибка в `CREATE TABLE ... AS urlCluster()` и движке базы данных `Replicated`. Исправление закрывает [#92216](https://github.com/ClickHouse/ClickHouse/issues/92216). [#92418](https://github.com/ClickHouse/ClickHouse/pull/92418) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Наследовать настройки информации о сериализации исходной части во время мутации в MergeTree. Это исправляет возможный некорректный результат запроса к мутированной части после изменений в сериализации типов данных. [#92419](https://github.com/ClickHouse/ClickHouse/pull/92419) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен возможный конфликт между столбцом и подстолбцом с одинаковым именем, приводивший к использованию некорректной сериализации и ошибкам запросов. Закрывает [#90219](https://github.com/ClickHouse/ClickHouse/issues/90219). Закрывает [#85161](https://github.com/ClickHouse/ClickHouse/issues/85161). [#92453](https://github.com/ClickHouse/ClickHouse/pull/92453) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены `LOGICAL_ERROR`, вызванные нежелательным изменением плана запроса при преобразовании OUTER JOIN в INNER JOIN. Также ослаблены требования к оптимизации, чтобы её можно было применять в случаях, когда к ключам агрегации в JOIN применяются инъективные функции. [#92503](https://github.com/ClickHouse/ClickHouse/pull/92503) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена возможная ошибка `SIZES_OF_COLUMNS_DOESNT_MATCH` при сортировке пустого столбца типа tuple. Закрывает [#92422](https://github.com/ClickHouse/ClickHouse/issues/92422). [#92520](https://github.com/ClickHouse/ClickHouse/pull/92520) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлена проверка несовместимых типизированных путей в типе JSON. Закрывает [#91577](https://github.com/ClickHouse/ClickHouse/issues/91577). [#92539](https://github.com/ClickHouse/ClickHouse/pull/92539) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена взаимная блокировка в `SHOW CREATE DATABASE` для базы данных Backup. [#92541](https://github.com/ClickHouse/ClickHouse/pull/92541) ([Azat Khuzhin](https://github.com/azat)).
* Использовать корректный код ошибки при проверке индекса hypothesis. [#92559](https://github.com/ClickHouse/ClickHouse/pull/92559) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено разрешение подстолбцов типа Dynamic в псевдонимах столбцов в анализаторе. Ранее подстолбец типа Dynamic в псевдониме столбца оборачивался в `getSubcolumn` и в некоторых случаях вообще не разрешался. Закрывает [#91434](https://github.com/ClickHouse/ClickHouse/issues/91434). [#92583](https://github.com/ClickHouse/ClickHouse/pull/92583) ([Pavel Kruglov](https://github.com/Avogar)).
* Предотвращён сбой в `tokens()` при `NULL` во втором аргументе. [#92586](https://github.com/ClickHouse/ClickHouse/pull/92586) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено потенциальное падение, вызванное изменением на месте базовых константных столбцов PREWHERE. Это могло произойти при уменьшении размера столбца (`IColumn::shrinkToFit`) или фильтрации (`IColumn::filter`), которые могли параллельно выполняться в нескольких потоках. [#92588](https://github.com/ClickHouse/ClickHouse/pull/92588) ([Arsen Muk](https://github.com/arsenmuk)).
* Создание и материализация текстовых индексов для таблиц, содержащих крупные части (более 4 294 967 295 строк), временно отключены. Это ограничение предотвращает некорректные результаты запросов, поскольку текущая реализация индексов пока не поддерживает части такого размера. [#92644](https://github.com/ClickHouse/ClickHouse/pull/92644) ([Anton Popov](https://github.com/CurtizJ)).
* Исправляет логическую ошибку `Too large size (A) passed to allocator` при выполнении операций JOIN. Закрывает [#92043](https://github.com/ClickHouse/ClickHouse/issues/92043). [#92667](https://github.com/ClickHouse/ClickHouse/pull/92667) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена ошибка, из-за которой индексы `ngrambf_v1` с длиной n-граммы (1-й параметр) > 8 приводили к исключению. [#92672](https://github.com/ClickHouse/ClickHouse/pull/92672) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлено неперехваченное исключение при фоновой перезагрузке named collections при использовании хранилища ZooKeeper. Закрывает [https://github.com/ClickHouse/clickhouse-private/issues/44180](https://github.com/ClickHouse/clickhouse-private/issues/44180). [#92717](https://github.com/ClickHouse/ClickHouse/pull/92717) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправляет некорректную логику проверки grant с подстановочными символами. Предыдущая попытка [https://github.com/ClickHouse/ClickHouse/pull/90928](https://github.com/ClickHouse/ClickHouse/pull/90928) устраняла критическую уязвимость, но в итоге оказалась слишком строгой, из-за чего некоторые операторы `GRANT` с подстановочными символами завершались ошибкой из-за несвязанных отзывов привилегий. [#92725](https://github.com/ClickHouse/ClickHouse/pull/92725) ([pufit](https://github.com/pufit)).
* Исправлена ошибка в логике пропуска данных: при использовании `not match(...)` в `WHERE` возвращались некорректные результаты. Закрывает [#92492](https://github.com/ClickHouse/ClickHouse/issues/92492). [#92726](https://github.com/ClickHouse/ClickHouse/pull/92726) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Не пытайтесь удалять временные каталоги при запуске, если таблица семейства MergeTree создана на диске в режиме только для чтения. [#92748](https://github.com/ClickHouse/ClickHouse/pull/92748) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка "Невозможно добавить действие в пустую ExpressionActionsChain" для ALTER TABLE REWRITE PARTS (v2). [#92754](https://github.com/ClickHouse/ClickHouse/pull/92754) ([Azat Khuzhin](https://github.com/azat)).
* Предотвращён сбой при чтении из разорванного `Connection`. [#92807](https://github.com/ClickHouse/ClickHouse/pull/92807) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлена логическая ошибка ` Failed to set file processing within 100 retries` в хранилище `S3Queue` в режиме `Ordered`. Теперь вместо неё выводится предупреждение. Эта ошибка могла возникать в версиях до 25.10, если истекал сеанс Keeper, однако в версиях 25.10+ она по-прежнему будет возникать лишь как предупреждение, поскольку теоретически её всё ещё можно получить при высоком параллелизме обработки в режиме `Ordered`. [#92814](https://github.com/ClickHouse/ClickHouse/pull/92814) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ранее некоторые запросы, использовавшие сегментирование по PK при ложном условии, завершались с ошибкой. Теперь это исправлено. Необходимо для [https://github.com/ClickHouse/ClickHouse/pull/89313](https://github.com/ClickHouse/ClickHouse/pull/89313). [#92815](https://github.com/ClickHouse/ClickHouse/pull/92815) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлен расчёт несжатых размеров текстовых индексов в таблице `system.parts`. [#92832](https://github.com/ClickHouse/ClickHouse/pull/92832) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено использование первичного индекса в легковесных обновлениях с оператором `IN`, содержащим подзапросы в предикате `WHERE`. [#92838](https://github.com/ClickHouse/ClickHouse/pull/92838) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено создание подсказки типа для path 'skip' в JSON. Исправление закрывает [#92731](https://github.com/ClickHouse/ClickHouse/issues/92731). [#92842](https://github.com/ClickHouse/ClickHouse/pull/92842) ([Pavel Kruglov](https://github.com/Avogar)).
* В движке таблицы S3 не следует кэшировать ключ партиционирования, если используются недетерминированные функции. [#92844](https://github.com/ClickHouse/ClickHouse/pull/92844) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлена возможная ошибка `FILE_DOESNT_EXIST` после выполнения мутации разреженного столбца с `ratio_of_defaults_for_sparse_serialization=0.0`. Закрыт [#92633](https://github.com/ClickHouse/ClickHouse/issues/92633). [#92860](https://github.com/ClickHouse/ClickHouse/pull/92860) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено определение схемы Parquet в старом ридере Parquet (по умолчанию не используется), когда JSON-столбец идет после столбца Tuple. Исправлена ошибка в старом ридере Parquet (по умолчанию не используется), из-за которой он завершался с ошибкой на пустых Tuple. [#92867](https://github.com/ClickHouse/ClickHouse/pull/92867) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлена логическая ошибка при использовании нескольких JOIN с постоянным условием и `join_use_nulls`, закрыт [#92640](https://github.com/ClickHouse/ClickHouse/issues/92640). [#92892](https://github.com/ClickHouse/ClickHouse/pull/92892) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлена возможная ошибка `NOT_FOUND_COLUMN_IN_BLOCK` при вставке в таблицу с подстолбцом в выражении партиционирования. Закрывает [#93210](https://github.com/ClickHouse/ClickHouse/issues/93210). Закрывает [#83406](https://github.com/ClickHouse/ClickHouse/issues/83406). [#92905](https://github.com/ClickHouse/ClickHouse/pull/92905) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка `NO_SUCH_COLUMN_IN_TABLE` в движке Merge при работе с таблицами, использующими псевдонимы. Закрывает [#88665](https://github.com/ClickHouse/ClickHouse/issues/88665). [#92910](https://github.com/ClickHouse/ClickHouse/pull/92910) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен случай, когда NULL != NULL, для full\_sorting\_join на столбце LowCardinality(Nullable(T)). [#92924](https://github.com/ClickHouse/ClickHouse/pull/92924) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлено несколько сбоев, возникавших при слиянии текстовых индексов в таблицах `MergeTree`. [#92925](https://github.com/ClickHouse/ClickHouse/pull/92925) ([Anton Popov](https://github.com/CurtizJ)).
* При необходимости во время TTL-агрегации восстанавливаются обертки LowCardinality для результатов выражений SET, чтобы избежать исключений при оптимизации таблицы. [#92971](https://github.com/ClickHouse/ClickHouse/pull/92971) ([Seva Potapov](https://github.com/seva-potapov)).
* Исправлена логическая ошибка при анализе индекса, возникавшая при использовании пустого массива в функции `has`. Закрывает [#92906](https://github.com/ClickHouse/ClickHouse/issues/92906). [#92995](https://github.com/ClickHouse/ClickHouse/pull/92995) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено возможное зависание при завершении работы фонового пула планировщика (может приводить к зависанию сервера при остановке). [#93008](https://github.com/ClickHouse/ClickHouse/pull/93008) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена возможная ошибка FILE\_DOESNT\_EXIST после мутации разреженного столбца при изменении значения `ratio_of_defaults_for_sparse_serialization` на `1.0` с помощью ALTER. [#93016](https://github.com/ClickHouse/ClickHouse/pull/93016) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка в логике пропуска данных, из-за которой использование `not materialize(...)` или `not CAST(...)` в WHERE приводило к некорректным результатам. Закрывает [#88536](https://github.com/ClickHouse/ClickHouse/issues/88536). [#93017](https://github.com/ClickHouse/ClickHouse/pull/93017) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено возможное использование устаревших частей из-за TOCTOU-гонки для общих частей. [#93022](https://github.com/ClickHouse/ClickHouse/pull/93022) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен crash при десериализации некорректного aggregate state `groupConcat` со смещениями, выходящими за допустимые границы. [#93028](https://github.com/ClickHouse/ClickHouse/pull/93028) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлено состояние, при котором после предварительной отмены распределённых запросов соединение оставалось в неисправном состоянии. [#93029](https://github.com/ClickHouse/ClickHouse/pull/93029) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен результат JOIN, когда ключ JOIN с правой стороны — разреженный столбец. Это закрывает [#92920](https://github.com/ClickHouse/ClickHouse/issues/92920). Мне удалось воспроизвести ошибку только с `set compatibility='23.3'`. Не уверен, нужно ли делать бэкпорт. [#93038](https://github.com/ClickHouse/ClickHouse/pull/93038) ([Amos Bird](https://github.com/amosbird)).
* Устранена возможная ошибка `Cannot finalize buffer after cancellation` в `estimateCompressionRatio()`. Исправлено: [#87380](https://github.com/ClickHouse/ClickHouse/issues/87380). [#93068](https://github.com/ClickHouse/ClickHouse/pull/93068) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено слияние текстовых индексов, построенных на основе сложных выражений (таких как `concat(col1, col2)`). [#93073](https://github.com/ClickHouse/ClickHouse/pull/93073) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлено применение проекции, если фильтр содержит подстолбцы. Закрывает [#92882](https://github.com/ClickHouse/ClickHouse/issues/92882). [#93141](https://github.com/ClickHouse/ClickHouse/pull/93141) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена логическая ошибка, которая в некоторых случаях возникала при добавлении JOIN runtime-фильтров в план запроса. Причиной было некорректное возвращение дублированных константных столбцов с одной из сторон JOIN. [#93144](https://github.com/ClickHouse/ClickHouse/pull/93144) ([Alexander Gololobov](https://github.com/davenger)).
* Специальная функция `__applyFilter`, используемая JOIN Runtime Filters, в некоторых допустимых случаях возвращала ILLEGAL\_TYPE\_OF\_ARGUMENT. [#93187](https://github.com/ClickHouse/ClickHouse/pull/93187) ([Alexander Gololobov](https://github.com/davenger)).
* Предотвращено схлопывание разных интерполированных столбцов в один и тот же столбец блока, когда такие столбцы фактически являются псевдонимами одного и того же столбца. [#93197](https://github.com/ClickHouse/ClickHouse/pull/93197) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Не добавлять runtime filter при выполнении JOIN с уже заполненной правой таблицей. [#93211](https://github.com/ClickHouse/ClickHouse/pull/93211) ([Alexander Gololobov](https://github.com/davenger)).
* Исправлена очистка постоянных наблюдений в Keeper после завершения неактивного сеанса. Закрывает [#92480](https://github.com/ClickHouse/ClickHouse/issues/92480). [#93213](https://github.com/ClickHouse/ClickHouse/pull/93213) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен ORDER BY для кортежа в Iceberg. Закрывает [#92977](https://github.com/ClickHouse/ClickHouse/issues/92977). [#93225](https://github.com/ClickHouse/ClickHouse/pull/93225) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена ошибка, связанная с настройкой S3Queue `s3queue_migrate_old_metadata_to_buckets`. Закрывает [#93392](https://github.com/ClickHouse/ClickHouse/issues/93392), [#93196](https://github.com/ClickHouse/ClickHouse/issues/93196), [#81739](https://github.com/ClickHouse/ClickHouse/issues/81739). [#93232](https://github.com/ClickHouse/ClickHouse/pull/93232) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Удаляются неиспользуемые столбцы при перестроении проекции во время слияния. Это снижает использование памяти и уменьшает число временных частей. [#93233](https://github.com/ClickHouse/ClickHouse/pull/93233) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлено удаление неиспользуемых столбцов из подзапросов при наличии скалярного коррелированного подзапроса. До этого исправления столбец мог быть удалён, если использовался только в коррелированном подзапросе, из-за чего запрос завершался ошибкой `NOT_FOUND_COLUMN_IN_BLOCK`. [#93273](https://github.com/ClickHouse/ClickHouse/pull/93273) ([Dmitry Novik](https://github.com/novikd)).
* Исправлено возможное отсутствие подстолбца в MV при изменении исходной таблицы. Закрывает [#93231](https://github.com/ClickHouse/ClickHouse/issues/93231). [#93276](https://github.com/ClickHouse/ClickHouse/pull/93276) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлено планирование запросов для движка таблицы `Merge` при использовании анализатора, из-за которого при слиянии локальных и удалённых/Distributed таблиц для `hostName()` могла возникать ошибка ILLEGAL\_COLUMN. Закрывает [#92059](https://github.com/ClickHouse/ClickHouse/issues/92059). [#93286](https://github.com/ClickHouse/ClickHouse/pull/93286) ([Jinlin](https://github.com/withlin)).
* Исправлен случай, при котором `NOT IN` с неконстантными аргументами в виде массивов возвращал неверное значение + добавлена поддержка неконстантных функций Array. Закрывает [#14980](https://github.com/ClickHouse/ClickHouse/issues/14980). [#93314](https://github.com/ClickHouse/ClickHouse/pull/93314) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Исправлена ошибка `Not found column` в оптимизации `use_top_k_dynamic_filtering`. Исправление [#93186](https://github.com/ClickHouse/ClickHouse/issues/93186). [#93316](https://github.com/ClickHouse/ClickHouse/pull/93316) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Исправлена проблема с пересборкой текстовых индексов, созданных поверх подстолбцов. [#93326](https://github.com/ClickHouse/ClickHouse/pull/93326) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлена обработка пустого массива при передаче его вторым аргументом в функциях `hasAllTokens` и `hasAnyTokens`. [#93328](https://github.com/ClickHouse/ClickHouse/pull/93328) ([Anton Popov](https://github.com/CurtizJ)).
* Исправлена логическая ошибка при использовании runtime filters в запросе с totals для таблицы в правой части. [#93330](https://github.com/ClickHouse/ClickHouse/pull/93330) ([Alexander Gololobov](https://github.com/davenger)).
* Сервер больше не падает, если функция `tokens` вызывается с неконстантными параметрами токенизатора (2-м, 3-м и 4-м параметрами), например, `SELECT tokens(NULL, 1, materialize(1))`. [#93383](https://github.com/ClickHouse/ClickHouse/pull/93383) ([Robert Schulze](https://github.com/rschu1ze)).
* Исправлена уязвимость, связанная с переполнением целого числа при десериализации состояния `groupConcat`, которая могла приводить к нарушениям безопасности памяти при использовании специально сформированных состояний агрегатной функции. [#93426](https://github.com/ClickHouse/ClickHouse/pull/93426) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Исправлен анализ текстового индекса для столбцов типа Array в случаях, когда индекс не содержит токенов (все массивы пусты или все токены пропускаются токенизатором). [#93457](https://github.com/ClickHouse/ClickHouse/pull/93457) ([Anton Popov](https://github.com/CurtizJ)).
* Позволяет избежать oauth-входа в клиенте ClickHouse, если имя пользователя и пароль указаны в строке подключения. [#93459](https://github.com/ClickHouse/ClickHouse/pull/93459) ([Krishna Mannem](https://github.com/kcmannem)).
* Исправлена поддержка предоставляемых учетных данных Azure ADLS Gen2 в DataLakeCatalog: разбор ключей `adls.sas-token.*` из REST-каталогов Iceberg и исправлен разбор URL ABFSS. [#93477](https://github.com/ClickHouse/ClickHouse/pull/93477) ([Karun Anantharaman](https://github.com/karunmotorq)).
* Исправлена поддержка GLOBAL IN в анализаторе (ранее множество заново создавалось на удалённом узле). [#93507](https://github.com/ClickHouse/ClickHouse/pull/93507) ([Azat Khuzhin](https://github.com/azat)).
* Исправлено извлечение подстолбца при десериализации непосредственно в разреженные столбцы. [#93512](https://github.com/ClickHouse/ClickHouse/pull/93512) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлена ошибка прямого чтения из текстового индекса при дублирующихся поисковых запросах. [#93516](https://github.com/ClickHouse/ClickHouse/pull/93516) ([Anton Popov](https://github.com/CurtizJ)).
* Исправление ошибки NOT\_FOUND\_COLUMN\_IN\_BLOCK при включенном runtime filter, если в таблицах, участвующих в JOIN, один и тот же столбец возвращается несколько раз (например, SELECT a, a, a FROM t). [#93526](https://github.com/ClickHouse/ClickHouse/pull/93526) ([Alexander Gololobov](https://github.com/davenger)).
* Исправлена ошибка, из-за которой clickhouse-client при подключении по ssh дважды запрашивал пароль. [#93547](https://github.com/ClickHouse/ClickHouse/pull/93547) ([Isak Ellmer](https://github.com/spinojara)).
* Убедитесь, что ZooKeeper корректно завершается при остановке (исправлено возможное зависание при остановке в крайне редких случаях). [#93602](https://github.com/ClickHouse/ClickHouse/pull/93602) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена LOGICAL\_ERROR при восстановлении ReplicatedMergeTree из-за состояния гонки при дедупликации. [#93612](https://github.com/ClickHouse/ClickHouse/pull/93612) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлена работа с разреженным столбцом при обновлении TTL во время прямой десериализации в разреженные столбцы в некоторых входных форматах. Это устраняет возможную логическую ошибку `Unexpected type of result TTL column`. [#93619](https://github.com/ClickHouse/ClickHouse/pull/93619) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлены функции работы с индексом H3, которые иногда аварийно завершались или зависали при вызове с недопустимыми входными данными. [#93657](https://github.com/ClickHouse/ClickHouse/pull/93657) ([Michael Kolupaev](https://github.com/al13n321)).
* Использование индекса `ngram_bf` для данных в кодировке не UTF-8 приводило к чтению неинициализированной памяти, значения из которой могли попасть в результирующую структуру индекса. Закрывает [#92576](https://github.com/ClickHouse/ClickHouse/issues/92576). [#93663](https://github.com/ClickHouse/ClickHouse/pull/93663) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Проверка соответствия размера распакованного буфера ожидаемому значению. [#93690](https://github.com/ClickHouse/ClickHouse/pull/93690) ([Raúl Marín](https://github.com/Algunenano)).
* Предотвращена возможность получать список столбцов таблицы через движок таблицы `merge` без проверки разрешения `SHOW COLUMNS`. [#93695](https://github.com/ClickHouse/ClickHouse/pull/93695) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Исправлена материализация индексов пропуска данных, созданных на основе подстолбцов. [#93708](https://github.com/ClickHouse/ClickHouse/pull/93708) ([Anton Popov](https://github.com/CurtizJ)).
* Мы сохраняем shared pointers на хранилища в `QueryPipeline::resources::storage_holders`, чтобы объекты `IStorage` не уничтожались, пока существует `PipelineExecutor`. [#93746](https://github.com/ClickHouse/ClickHouse/pull/93746) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено подключение существующих БД Replicated, если межсерверный хост менялся после перезапуска. [#93779](https://github.com/ClickHouse/ClickHouse/pull/93779) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлен assert `!read_until_position` в `ReadBufferFromS3`, возникавший при включенном кэше. [#93809](https://github.com/ClickHouse/ClickHouse/pull/93809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлена логическая ошибка в редком случае, когда пустой кортеж используется со столбцом типа `Map`. Закрывает [#93784](https://github.com/ClickHouse/ClickHouse/issues/93784). [#93814](https://github.com/ClickHouse/ClickHouse/pull/93814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено повреждение `_part_offset`, возникавшее при перестроении проекций во время слияний, а также оптимизирована обработка проекций за счёт устранения лишнего чтения столбца `_part_offset` и пропуска ненужных столбцов при вычислении проекций. Это продолжает оптимизации, начатые в [#93233](https://github.com/ClickHouse/ClickHouse/issues/93233). [#93827](https://github.com/ClickHouse/ClickHouse/pull/93827) ([Amos Bird](https://github.com/amosbird)).
* Убрана обработка 'Bad version'. [#93843](https://github.com/ClickHouse/ClickHouse/pull/93843) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Исправлена проблема, из-за которой `optimize_inverse_dictionary_lookup` не работал с распределённым запросом, когда ключ имеет знаковый целочисленный тип. Закрывает [#93259](https://github.com/ClickHouse/ClickHouse/issues/93259). [#93848](https://github.com/ClickHouse/ClickHouse/pull/93848) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена проблема, из-за которой `lag`/`lead` не работали с распределённым запросом `remote()`. Закрывает [#90014](https://github.com/ClickHouse/ClickHouse/issues/90014). [#93858](https://github.com/ClickHouse/ClickHouse/pull/93858) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлена ошибка диспетчеризации системного инструмента. [#93937](https://github.com/ClickHouse/ClickHouse/pull/93937) ([Pablo Marcos](https://github.com/pamarcos)).
* В [https://github.com/ClickHouse/ClickHouse/pull/89173](https://github.com/ClickHouse/ClickHouse/pull/89173) мы добавили дополнительное поле в структуру, которую `TraceSender` отправляет через внутренний канал. Однако размер буфера не был обновлён ([здесь](https://github.com/ClickHouse/ClickHouse/pull/89173/changes#diff-36ecfac5cde34c92c031652d8a77f0d12782cd5d43e68d6ef159e6d46a54224fL44)), поэтому в буфер записывается больше данных, чем допускает `buffer_size`, что приводит к нескольким сбросам. А поскольку `TraceSender::send` вызывается из разных потоков, сбросы из разных потоков могут чередоваться, нарушая инвариант, на который полагается принимающая сторона (`TraceCollector`). [#93966](https://github.com/ClickHouse/ClickHouse/pull/93966) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено приведение типов к супертипу при выполнении операции JOIN для хранилища `Join` с предложением `USING`. Исправляет [#91672](https://github.com/ClickHouse/ClickHouse/issues/91672). Исправляет [#78572](https://github.com/ClickHouse/ClickHouse/issues/78572). [#94000](https://github.com/ClickHouse/ClickHouse/pull/94000) ([Dmitry Novik](https://github.com/novikd)).
* Исправлена ошибка, из-за которой FilterStep добавлялся некорректно при применении runtime filter для JOIN к таблице Merge. [#94021](https://github.com/ClickHouse/ClickHouse/pull/94021) ([Alexander Gololobov](https://github.com/davenger)).
* Запрос `SELECT`, содержащий предикат по нескольким столбцам с индексами пропуска данных bloom filter, при наличии условий `OR` и `NOT` мог возвращать некорректные результаты. Теперь это исправлено. [#94026](https://github.com/ClickHouse/ClickHouse/pull/94026) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Исправлена операция CLEAR для столбца с зависимыми индексами. [#94057](https://github.com/ClickHouse/ClickHouse/pull/94057) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено использование неинициализированного значения в `ReadWriteBufferFromHTTP`. [#94058](https://github.com/ClickHouse/ClickHouse/pull/94058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена некорректная проверка типизированных путей в JSON. Эта проверка была добавлена в [https://github.com/ClickHouse/ClickHouse/pull/92842](https://github.com/ClickHouse/ClickHouse/pull/92842) и может вызывать ошибку при запуске существующих таблиц. [#94070](https://github.com/ClickHouse/ClickHouse/pull/94070) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен crash при анализе filter в присутствии OUTER JOIN. Исправляет [#90979](https://github.com/ClickHouse/ClickHouse/issues/90979). [#94080](https://github.com/ClickHouse/ClickHouse/pull/94080) ([Dmitry Novik](https://github.com/novikd)).
* Исправлена точность `uniqTheta` при параллельном использовании ключей агрегации UInt8 (`max_threads` > 1 — по умолчанию). [#94095](https://github.com/ClickHouse/ClickHouse/pull/94095) ([Azat Khuzhin](https://github.com/azat)).
* Исправлен сбой, вызванный исключением, возникшим при вызове `socket.setBlocking(true)` внутри `SCOPE_EXIT`. [#94100](https://github.com/ClickHouse/ClickHouse/pull/94100) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Устранена потеря данных, возникавшая, когда `DROP PARTITION` удалял части, созданные более поздними записями журнала в ReplicatedMergeTree. [#94123](https://github.com/ClickHouse/ClickHouse/pull/94123) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Исправлена ошибка в ридере Parquet v3 при обработке массивов, пересекающих границы страниц. Это происходит, например, с файлами, записанными Arrow без включённой статистики страниц или индекса страниц. Затрагивает только столбцы типа Array. Вероятный симптом — примерно один массив на каждый \~1 МБ данных оказывается усечённым. До этого исправления в качестве обходного решения используйте следующую настройку: `input_format_parquet_use_native_reader_v3 = 0`. [#94125](https://github.com/ClickHouse/ClickHouse/pull/94125) ([Michael Kolupaev](https://github.com/al13n321)).
* Исправлено избыточное количество наблюдений в ReplicatedMergeTree при ожидании записи в журнале. [#94133](https://github.com/ClickHouse/ClickHouse/pull/94133) ([Azat Khuzhin](https://github.com/azat)).
* Функции `arrayShuffle`, `arrayPartialShuffle` и `arrayRandomSample` теперь материализуют константные столбцы, чтобы разные строки получали разные результаты. [#94134](https://github.com/ClickHouse/ClickHouse/pull/94134) ([Joanna Hulboj](https://github.com/jh0x)).
* Исправлена гонка данных при вычислении табличных функций в materialized views. [#94171](https://github.com/ClickHouse/ClickHouse/pull/94171) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено разыменование nullptr в движках баз данных `PostgreSQL` (при некорректном запросе). Закрывает [#92887](https://github.com/ClickHouse/ClickHouse/issues/92887). [#94180](https://github.com/ClickHouse/ClickHouse/pull/94180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена утечка памяти в refreshable materialized view при использовании запросов `SELECT` с несколькими подзапросами. [#94200](https://github.com/ClickHouse/ClickHouse/pull/94200) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлено состояние гонки данных между `DataPartStorageOnDiskBase::remove` и `system.parts`. Закрывает [#49076](https://github.com/ClickHouse/ClickHouse/issues/49076). [#94262](https://github.com/ClickHouse/ClickHouse/pull/94262) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Удалён неверный спецификатор `noexcept` у оператора присваивания копированием HashTable, который мог приводить к аварийному завершению (`std::terminate`) при исключениях из-за нехватки памяти. [#94275](https://github.com/ClickHouse/ClickHouse/pull/94275) ([Nikita Taranov](https://github.com/nickitat)).
* Ранее при создании проекции с дублирующимися столбцами в GROUP BY (например, `GROUP BY c0, c0`) и вставке данных возникала ошибка `std::length_error`, если включен `optimize_row_order`. Закрывает [#94065](https://github.com/ClickHouse/ClickHouse/issues/94065). [#94277](https://github.com/ClickHouse/ClickHouse/pull/94277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена трудноуловимая ошибка в клиенте ZooKeeper при подключении, которая приводила к зависаниям и аварийным завершениям. [#94320](https://github.com/ClickHouse/ClickHouse/pull/94320) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка, из-за которой оптимизация преобразования функций в подстолбцы не применялась к подстолбцам. [#94323](https://github.com/ClickHouse/ClickHouse/pull/94323) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен потенциально некорректный результат во вложенных RIGHT JOIN при включённом `enable_lazy_columns_replication`. Из-за ошибки все строки в реплицируемых столбцах некорректно возвращали одно и то же значение вместо своих собственных значений. Закрыто [#93891](https://github.com/ClickHouse/ClickHouse/issues/93891). [#94339](https://github.com/ClickHouse/ClickHouse/pull/94339) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Исправлен pushdown фильтра для SEMI JOIN с использованием множеств эквивалентности. Pushdown фильтра не выполняется, если типы аргументов изменились. Исправляет [#93264](https://github.com/ClickHouse/ClickHouse/issues/93264). [#94340](https://github.com/ClickHouse/ClickHouse/pull/94340) ([Dmitry Novik](https://github.com/novikd)).
* Исправлено использование DeltaLake CDF с движком базы данных DataLake (интеграция каталогов Delta Lake). Закрывает [#94122](https://github.com/ClickHouse/ClickHouse/issues/94122). [#94342](https://github.com/ClickHouse/ClickHouse/pull/94342) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Исправлено некорректное значение метрики `FilesystemCacheSizeLimit` при использовании политики кэша `SLRU`. [#94363](https://github.com/ClickHouse/ClickHouse/pull/94363) ([Kseniia Sumarokova](https://github.com/kssenii)).
* При создании движка базы данных Backup с менее чем двумя аргументами теперь возвращается более понятное сообщение об ошибке (`Wrong number of arguments` вместо `std::out_of_range: InlinedVector::at(size_type) const failed bounds check.`). [#94374](https://github.com/ClickHouse/ClickHouse/pull/94374) ([Robert Schulze](https://github.com/rschu1ze)).
* Игнорирует невозможный отзыв глобальных привилегий на уровне базы данных для привилегий с grant option. [#94386](https://github.com/ClickHouse/ClickHouse/pull/94386) ([pufit](https://github.com/pufit)).
* Исправлено чтение разреженных смещений в компактных частях. Закрывает [#94385](https://github.com/ClickHouse/ClickHouse/issues/94385). [#94399](https://github.com/ClickHouse/ClickHouse/pull/94399) ([Pavel Kruglov](https://github.com/Avogar)).
* Не запрещать ALTER столбцов с неявными индексами, даже если используется режим `throw` параметра `alter_column_secondary_index_mode`. [#94425](https://github.com/ClickHouse/ClickHouse/pull/94425) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлен сбой в `TCPHandler` при чтении `Protocol::Client::IgnoredPartUUIDs` несколькими вызовами `receivePacketsExpectQuery`. [#94434](https://github.com/ClickHouse/ClickHouse/pull/94434) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлено маскирование чувствительных данных в `system.functions`. [#94436](https://github.com/ClickHouse/ClickHouse/pull/94436) ([Vitaly Baranov](https://github.com/vitlibar)).
* Исправлено разыменование nullptr при отключённой опции `send_profile_events`. Эта возможность была недавно добавлена в Python-драйвер ClickHouse. Закрывает [#92488](https://github.com/ClickHouse/ClickHouse/issues/92488). [#94466](https://github.com/ClickHouse/ClickHouse/pull/94466) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена несовместимость файлов .mrk текстового индекса при слиянии. [#94494](https://github.com/ClickHouse/ClickHouse/pull/94494) ([Peng Jian](https://github.com/fastio)).
* Когда `read_in_order_use_virtual_row` включён, код обращался к столбцам индекса, исходя из полного размера первичного ключа, не проверяя, был ли индекс усечён, что приводило к использованию освобождённой / неинициализированной памяти. Закрывает [#85596](https://github.com/ClickHouse/ClickHouse/issues/85596). [#94500](https://github.com/ClickHouse/ClickHouse/pull/94500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена ошибка, возникавшая из-за несоответствия типов при отправке внешних таблиц в подзапросах с GLOBAL IN, если используются типы Nullable. Закрывает [#94097](https://github.com/ClickHouse/ClickHouse/issues/94097). [#94511](https://github.com/ClickHouse/ClickHouse/pull/94511) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* В предыдущих версиях запросы с несколькими условиями индекса для одного и того же выражения могли ошибочно генерировать исключение `Not found column`. Закрывает [#60660](https://github.com/ClickHouse/ClickHouse/issues/60660). [#94515](https://github.com/ClickHouse/ClickHouse/pull/94515) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена некорректная обработка столбца JOIN типа Nullable в runtime-фильтрах. [#94555](https://github.com/ClickHouse/ClickHouse/pull/94555) ([Alexander Gololobov](https://github.com/davenger)).
* Создание рабочей нагрузки внутри другой рабочей нагрузки, которая в данный момент используется, больше не приводит к сбою. [#94599](https://github.com/ClickHouse/ClickHouse/pull/94599) ([Sergei Trifonov](https://github.com/serxa)).
* Исправлен сбой при оптимизации ANY LEFT JOIN, когда `isNotNull` вычисляется для отсутствующего столбца. [#94600](https://github.com/ClickHouse/ClickHouse/pull/94600) ([Molly](https://github.com/ggmolly)).
* Исправлено вычисление выражения по умолчанию при обращении к другим столбцам с вычисляемыми значениями по умолчанию. [#94615](https://github.com/ClickHouse/ClickHouse/pull/94615) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлены проблемы с разрешениями при операциях BACKUP/RESTORE. [#94617](https://github.com/ClickHouse/ClickHouse/pull/94617) ([Pablo Marcos](https://github.com/pamarcos)).
* Исправлен сбой из-за некорректного приведения типов, когда тип данных — `Nullable(DateTime64)`. [#94627](https://github.com/ClickHouse/ClickHouse/pull/94627) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Исправлена ошибка, из-за которой некоторые распределённые запросы с `ORDER BY` могли возвращать столбцы `ALIAS` с переставленными значениями (то есть столбец `a` показывал данные столбца `b`, и наоборот). [#94644](https://github.com/ClickHouse/ClickHouse/pull/94644) ([filimonov](https://github.com/filimonov)).
* Исправлена запись результатов keeper-bench в файл. [#94654](https://github.com/ClickHouse/ClickHouse/pull/94654) ([Antonio Andelic](https://github.com/antonio2368)).
* Исправлены некорректные оценки в статистике типа MinMax, когда столбец содержит отрицательные числа с плавающей точкой. [#94665](https://github.com/ClickHouse/ClickHouse/pull/94665) ([zoomxi](https://github.com/zoomxi)).
* Исправлено чтение файлов Parquet, когда ключом в map является struct. [#94670](https://github.com/ClickHouse/ClickHouse/pull/94670) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлен потенциально некорректный результат RIGHT JOIN при использовании сложных условий ON. Закрыт [#92913](https://github.com/ClickHouse/ClickHouse/issues/92913). [#94680](https://github.com/ClickHouse/ClickHouse/pull/94680) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Сохранение постоянной гранулярности индекса (`use&#95;const&#95;adaptive&#95;granularity`) после вертикальных слияний. [#94725](https://github.com/ClickHouse/ClickHouse/pull/94725) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена ошибка мутаций со скалярными подзапросами и зависимостями таблицы. Если у таблицы были зависимости (индекс или проекции), связанные со столбцом, скалярные подзапросы могли вычисляться и кэшироваться без данных, что приводило к некорректным изменениям. [#94731](https://github.com/ClickHouse/ClickHouse/pull/94731) ([Raúl Marín](https://github.com/Algunenano)).
* Исправлено переключение AsynchronousMetrics cpu\_pressure на резервный вариант при возникновении ошибки. [#94827](https://github.com/ClickHouse/ClickHouse/pull/94827) ([Raúl Marín](https://github.com/Algunenano)).
* В функции `getURLHostRFC` отсутствовали проверки выхода за границы перед разыменованием указателей. При передаче пустой строки в `domainRFC` происходило чтение неинициализированной памяти, что приводило к ошибкам MSan. [#94851](https://github.com/ClickHouse/ClickHouse/pull/94851) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлен режим «только для чтения» у зашифрованных дисков. [#94852](https://github.com/ClickHouse/ClickHouse/pull/94852) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена логическая ошибка при дробных `LIMIT/OFFSET` при использовании старого анализатора с distributed таблицами. Закрывает [#94712](https://github.com/ClickHouse/ClickHouse/issues/94712). [#94999](https://github.com/ClickHouse/ClickHouse/pull/94999) ([Ahmed Gouda](https://github.com/0xgouda)).
* Исправлено падение в некоторых случаях, когда JOIN Runtime Filters включены по умолчанию. [#95000](https://github.com/ClickHouse/ClickHouse/pull/95000) ([Alexander Gololobov](https://github.com/davenger)).
* Улучшено маскирование паролей в URL-адресе, используемом в движке таблицы `URL()` и табличной функции `url()`. [#95006](https://github.com/ClickHouse/ClickHouse/pull/95006) ([Vitaly Baranov](https://github.com/vitlibar)).
* Функция `toStartOfInterval` теперь работает так же, как `toStartOfX`, где `X` — это `Day, Week, Month, Quarter, Year`, если включён `enable_extended_results_for_datetime_functions`. [#95011](https://github.com/ClickHouse/ClickHouse/pull/95011) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Исправлены сравнения с константными строками, которые не учитывали настройки `cast_string_to_date_time_mode`, `bool_true_representation`, `bool_false_representation` и `input_format_null_as_default`. Закрывает [#91681](https://github.com/ClickHouse/ClickHouse/issues/91681). [#95040](https://github.com/ClickHouse/ClickHouse/pull/95040) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Исправлено состояние гонки в файловом кэше. [#95064](https://github.com/ClickHouse/ClickHouse/pull/95064) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено редкое проявление состояния гонки в ридере Parquet. [#95068](https://github.com/ClickHouse/ClickHouse/pull/95068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлено падение в оптимизации top K, когда `LIMIT` равен нулю. Закрывает [#93893](https://github.com/ClickHouse/ClickHouse/issues/93893). [#95072](https://github.com/ClickHouse/ClickHouse/pull/95072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* При преобразовании из DateTime/целых чисел в Time64 с помощью `toTime` извлекается компонент времени суток, но эта функция не является монотонной. Шаблон `ToDateTimeMonotonicity` ошибочно утверждал, что это преобразование монотонно, из-за чего в отладочных сборках возникало Исключение "Invalid binary search result in MergeTreeSetIndex". [#95125](https://github.com/ClickHouse/ClickHouse/pull/95125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Список записей в файле манифеста пересоздавался только при необходимости (раньше это происходило на каждой итерации). [#95162](https://github.com/ClickHouse/ClickHouse/pull/95162) ([Daniil Ivanik](https://github.com/divanik)).

<div id="267-build-testing-packaging-improvement">
  #### Улучшения сборки/тестирования/упаковки
</div>

* Добавлен набор инструментов для профилирования выделений памяти в парсере ClickHouse SQL с использованием возможностей jemalloc по профилированию кучи. [#94072](https://github.com/ClickHouse/ClickHouse/pull/94072) ([Ilya Yatsishin](https://github.com/qoega)).
* Добавлен инструмент, упрощающий отладку выделений памяти в парсере. Он использует метрику jemalloc `stats.allocated` до и после разбора запроса в AST-представление, чтобы показать, какая память была выделена. Также поддерживается режим профилирования памяти, который выгружает профиль до и после, чтобы строить отчёты о местах, где происходили выделения. [#93523](https://github.com/ClickHouse/ClickHouse/pull/93523) ([Ilya Yatsishin](https://github.com/qoega)).
* Удалены транзитивные включения libc++. [#92523](https://github.com/ClickHouse/ClickHouse/pull/92523) ([Raúl Marín](https://github.com/Algunenano)).
* Некоторые последовательные тесты переведены в параллельный режим: [https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df](https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df). [#93030](https://github.com/ClickHouse/ClickHouse/pull/93030) ([Nikita Fomichev](https://github.com/fm4v)).
* Приведены в порядок некоторые флаги сборки. [#93679](https://github.com/ClickHouse/ClickHouse/pull/93679) ([Raúl Marín](https://github.com/Algunenano)).
* c-ares обновлён с v1.34.5 до v1.34.6. Это исправляет `CVE-2025-62408` в c-ares, которая не затрагивает ClickHouse. [#94129](https://github.com/ClickHouse/ClickHouse/pull/94129) ([Govind R Nair](https://github.com/Revertionist)).
* Используется `curl` 8.18.0. [#94742](https://github.com/ClickHouse/ClickHouse/pull/94742) ([Konstantin Bogdanov](https://github.com/thevar1able)).
