> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Журнал изменений v26.4 для Cloud

> Журнал изменений для v26.4

<div id="backward-incompatible-changes">
  ## Изменения, нарушающие обратную совместимость
</div>

<div id="query-and-syntax-changes">
  ### Изменения в запросах и синтаксисе
</div>

* Оператор `IN` теперь использует семантику точного совпадения значений для типа `Bool`: значениям `Bool` соответствуют только `0` и `1` в наборе. Ранее числовые значения больше `255` в наборе `IN` ошибочно приводились к true, поэтому `SELECT CAST(1, 'Bool') IN (256)` возвращал `1`. Теперь он корректно возвращает `0`. [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* Исправлен приоритет оператора `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)).
* `SELECT` больше нельзя использовать как неэкранированный идентификатор в элементе списка выражений `WITH`. [#101059](https://github.com/ClickHouse/ClickHouse/pull/101059) ([Aruj Bansal](https://github.com/arujbansal)).
* Оператор `IN` теперь отклоняет преобразования `Decimal` с потерей точности внутри составных типов (`Tuple`, `Array`, `Map`), что делает его поведение согласованным со сравнениями скалярных значений верхнего уровня. Ранее проверки точности применялись только к скалярным значениям верхнего уровня: например, `CAST('33.3', 'Decimal64(1)') IN (33.33)` корректно возвращал `0`, а `CAST(['33.3'], 'Array(Decimal64(1))') IN ([33.33])` ошибочно возвращал `1`. Теперь оба случая корректно возвращают `0`. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="data-type-changes">
  ### Изменения типов данных
</div>

* Версии сериализации типов данных теперь распространяются и на вложенные типы данных. Например, версия сериализации String `with_size_stream` раньше применялась только к столбцам String верхнего уровня и элементам Tuple; теперь она применяется к любому типу String внутри любого вложенного типа, такого как Array, Map, Variant или JSON. Это поведение управляется настройкой MergeTree `propagate_types_serialization_versions_to_nested_types`, которая теперь включена по умолчанию. После этого изменения вновь созданные части данных не смогут читаться старыми версиями, но старые части можно читать в новой версии. Обновления безопасны, а откат на более старую версию — нет. [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* Исправлен порядок байтов в бинарной сериализации `QBit`: теперь используется формат little-endian. [#101378](https://github.com/ClickHouse/ClickHouse/pull/101378) ([Raufs Dunamalijevs](https://github.com/rienath)).

<div id="storage-and-index-changes">
  ### Изменения хранилища и индексов
</div>

* Исправлены метаданные обычных проекций, чтобы проекции с ключами сортировки из нескольких столбцов корректно распознавались. [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* Исправлена проблема с файлами индекса пропуска данных: они не учитывали настройку `replace_long_file_name_to_hash`, из-за чего возникали ошибки "File name too long" и нарушалось чтение индексов с длинными именами. Теперь имена файлов индекса пропуска данных хешируются, если превышают `max_file_name_length`, аналогично файлам столбцов. Это обратно совместимо (новые серверы читают старые части), но при откате на более раннюю версию (или при использовании старых серверов во время поэтапного обновления) индексы с длинными именами могут игнорироваться. [#97128](https://github.com/ClickHouse/ClickHouse/pull/97128) ([Raúl Marín](https://github.com/Algunenano)).

<div id="removed-features">
  ### Удалённые возможности
</div>

* Удалён тип индекса пропуска данных `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)).

<div id="settings-and-configuration-changes">
  ### Изменения настроек и конфигурации
</div>

* Значение `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)).

<div id="insert-and-deduplication-changes">
  ### Изменения во вставке и дедупликации
</div>

* Async insert теперь включен по умолчанию — ClickHouse по умолчанию объединяет все небольшие вставки в батчи. Это поведение регулируется настройкой `compatibility`: если установить `compatibility` на версию ниже 26.2, будет восстановлено прежнее значение по умолчанию — `false`. Async inserts можно включать и отключать на нескольких уровнях: в профилях пользователей в config, для сеанса, для запроса или для таблицы семейства MergeTree. [#97590](https://github.com/ClickHouse/ClickHouse/pull/97590) ([Sema Checherinda](https://github.com/CheSema)).

<div id="system-table-changes">
  ### Изменения в системных таблицах
</div>

* В `system.query_log` возвращён столбец `skip_indexes`. [#101018](https://github.com/ClickHouse/ClickHouse/pull/101018) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="other-breaking-changes">
  ### Другие изменения, нарушающие обратную совместимость
</div>

* `mergeTreeAnalyzeIndexes{,UUID}` теперь принимает массив имён частей вместо regexp, поскольку регулярные выражения работают медленно (экспериментальная возможность). [#98474](https://github.com/ClickHouse/ClickHouse/pull/98474) ([Azat Khuzhin](https://github.com/azat)).
* Библиотека H3 была обновлена до v4, что повышает точность вычисления длины, площади и других метрик. Это изменение нарушает обратную совместимость, поскольку новые результаты отличаются от прежних. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Изменён способ обработки виртуальных столбцов таблицей `Merge`. Если базовая таблица содержит `_table` или `_database`, эти столбцы читаются из хранилища; в противном случае они заполняются после этапа чтения на шаге expression. [#101742](https://github.com/ClickHouse/ClickHouse/pull/101742) ([Mikhail Artemenko](https://github.com/Michicosun)).

<div id="new-features">
  ## Новые возможности
</div>

<div id="functions">
  ### Функции
</div>

* Добавлена функция `naturalSortKey(s)` для ключей естественной сортировки. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Добавлена функция `arrayAutocorrelation(arr [, max_lag])`, которая вычисляет нормализованную автокорреляцию числового массива для каждого лага. Поддерживаются массивы целых чисел, чисел с плавающей запятой и Decimal. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* Для JSON type теперь поддерживается функция `has()` для проверки существования path, аналогично `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)).
* Добавлена SQL-функция `obfuscateQuery`. [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* Добавлены функции `caseFoldUTF8` и `removeDiacriticsUTF8` для преобразования Unicode к единому регистру и удаления диакритических знаков. [#98973](https://github.com/ClickHouse/ClickHouse/pull/98973) ([George Larionov](https://github.com/george-larionov)).
* Функция `printf` теперь поддерживает неконстантные строки формата, что позволяет задавать разный шаблон форматирования для каждой строки на основе значений столбцов. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash](https://github.com/Onyx2406)).
* Добавлена функция `highlight()`, которая оборачивает вхождения поисковых терминов в текстовой строке HTML-тегами (по умолчанию `<em>`/`</em>`). Поддерживаются ASCII-регистронезависимое сопоставление, автоматическое слияние перекрывающихся совпадений и пользовательские открывающие/закрывающие теги. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* Добавлена строковая функция `normalizeUTF8NFKCCasefold` для Unicode-нормализации NFKC\_Casefold, которая объединяет нормализацию NFKC с приведением к единому регистру. [#99276](https://github.com/ClickHouse/ClickHouse/pull/99276) ([George Larionov](https://github.com/george-larionov)).
* Для полнотекстовых индексов и функции `tokens` добавлен токенизатор `unicode_word`. Он разбивает текст по правилам границ слов Unicode: ASCII-слова формируются с использованием символов-соединителей (подчёркивание, двоеточие, точка, одиночная кавычка), а не-ASCII-символы Unicode становятся односимвольными токенами. Настраиваемые стоп-слова по умолчанию соответствуют распространённым знакам пунктуации CJK. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* Добавлена функция `arrayTranspose`, которая принимает двумерный массив (матрицу) и транспонирует его. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* Добавлена функция `hasPhrase` (псевдоним `matchPhrase`) для поиска по фразам (непрерывным последовательностям токенов). Поиск выполняется методом полного перебора и пока не поддерживается текстовым индексом. [#101997](https://github.com/ClickHouse/ClickHouse/pull/101997) ([Elmi Ahmadov](https://github.com/ahmadov)).
* `dotProduct` добавлена как поддерживаемая функция расстояния для индексов векторного сходства. Направление сортировки теперь проверяется для всех функций расстояния, чтобы предотвратить незаметное появление некорректных результатов. [#102254](https://github.com/ClickHouse/ClickHouse/pull/102254) ([Renzo](https://github.com/RenzoMXD)).
* Функция `stem` теперь может выполнять стемминг всех слов/токенов в столбцах `String`, `FixedString`, `Array([Fixed]String)`, `Nullable`, `LowCardinality` и `Const`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Функция `stem` больше не является экспериментальной (раньше для этого нужно было включить `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Добавлена функция `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)).
* В оператор `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)).
* Добавлена поддержка функции `toDaysInMonth()` через синтаксический сахар парсера для стандартного SQL-синтаксиса функции `OVERLAY`. Функция `overlay` уже существует; это добавляет поддержку формы с ключевыми словами `PLACING`, `FROM` и `FOR` в качестве разделителей. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* Значения `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`. [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="sql-and-query-features">
  ### SQL и возможности запросов
</div>

* Если параметр имеет тип `Nullable` и не указан, теперь считается, что его значение равно `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* ClickHouse теперь может отсекать целые части данных в запросах `SELECT` на основе статистики min/max. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* Добавлена поддержка Materialized CTEs, которые вычисляются только один раз во время выполнения запроса, а их результаты сохраняются во временных таблицах. [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* Некоторые функции теперь можно использовать в SQL без скобок. [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* Для типа `JSON` добавлен комбинированный синтаксис подстолбцов `json.@path`. Он возвращает скалярное значение как `Dynamic`, если по пути находится скаляр, вложенный объект как `Dynamic`, если по пути находится вложенный объект, или `NULL`, если путь отсутствует. [#98788](https://github.com/ClickHouse/ClickHouse/pull/98788) ([Pavel Kruglov](https://github.com/Avogar)).
* Для выражений с подзапросами добавлено ключевое слово `SOME`. Оно работает так же, как `ANY`. [#99842](https://github.com/ClickHouse/ClickHouse/pull/99842) ([Artem Kytkin](https://github.com/Vinceent)).
* Добавлена поддержка `SET TIME ZONE 'tz'` как псевдонима для `SET session_timezone`. [#99883](https://github.com/ClickHouse/ClickHouse/pull/99883) ([phulv94](https://github.com/phulv94)).
* Добавлена поддержка стандартной для 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)).
* Добавлена поддержка составных литералов interval по стандарту SQL с квалификаторами диапазона `TO`, например `INTERVAL '1:30' HOUR TO MINUTE`; внутри они раскладываются в суммы интервалов. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* Добавлена команда `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)).

<div id="table-engines-and-storage">
  ### Движки таблиц и хранилище
</div>

* Добавлена поддержка инкрементального чтения для движка таблицы `Paimon` с отслеживанием прогресса снимков через Keeper, включая целевое чтение дельт снимков с помощью `paimon_target_snapshot_id`. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Добавлена поддержка дополнительного ZooKeeper в `DatabaseReplicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Добавлена поддержка чтения типов временных меток Iceberg v3 с наносекундной точностью (`timestamp_ns` и `timestamptz_ns`), сопоставляемых с `DateTime64(9)` и `DateTime64(9, 'UTC')`. Это позволяет ClickHouse читать данные Iceberg с такими типами в схеме; однако это не означает полной поддержки Iceberg v3 и не включает запись в Iceberg v3 с этими типами. [#97132](https://github.com/ClickHouse/ClickHouse/pull/97132) ([Dmitry Kovalev](https://github.com/dk-github)).
* Добавлен `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` для таблиц Iceberg. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)).
* Добавлен новый SLRU-кэш для метаданных Parquet, чтобы повысить производительность чтения и убрать необходимость повторно загружать файлы только ради чтения метаданных. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Добавлена поддержка индекса пропуска данных MergeTree для JSON-столбцов с использованием `JSONAllPaths` и типов индексов `bloom_filter`, `tokenbf_v1`, `ngrambf_v1` и `text` (инвертированный), что позволяет пропускать гранулы на основе набора JSON-путей, присутствующих в каждой грануле. [#98886](https://github.com/ClickHouse/ClickHouse/pull/98886) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлен индекс проекции `commit_order`, который переупорядочивает данные в порядке вставки. [#99004](https://github.com/ClickHouse/ClickHouse/pull/99004) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Добавлена сериализация Map по бакетам для столбцов `Map` в MergeTree (`map_serialization_version = 'with_buckets'`). Ключи разбиваются на бакеты на основе хеша, так что при чтении одного ключа (`m['key']`) считывается только один бакет, а не весь столбец, что даёт ускорение в 2–49 раз для выборки по одному ключу в зависимости от размера map. Количеством бакетов и стратегией бакетизации можно управлять с помощью новых настроек MergeTree `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient` и `map_buckets_min_avg_size`. Настройка `map_serialization_version_for_zero_level_parts` сохраняет базовую сериализацию для вставок, чтобы избежать дополнительных накладных расходов при записи, тогда как для слитых частей используются бакеты. Индексы пропуска данных для `mapKeys`/`mapValues` поддерживаются при сериализации Map по бакетам, а `optimize_functions_to_subcolumns` переписывает `m['key']` в чтение подстолбца для конкретного ключа, когда бакеты доступны. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).

<div id="insert-and-deduplication">
  ### Вставка и дедупликация
</div>

* Реализовано новое поведение `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)).

<div id="settings-and-configuration">
  ### Настройки и конфигурация
</div>

* Добавлена настройка 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)).
* Теперь каждая запись `type=http` в `<protocols>` может указывать пользовательский ключ `<handlers>`, ссылающийся на отдельный раздел конфигурации `<http_handlers_*>`, что позволяет задавать разные правила маршрутизации HTTP для разных портов. [#98414](https://github.com/ClickHouse/ClickHouse/pull/98414) ([Amos Bird](https://github.com/amosbird)).
* Добавлены две настройки 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)).
* Добавлена настройка сервера `restore_access_entities_with_current_grants`. Когда она включена, восстановленные пользователи и роли получают только те привилегии, которые пользователь, выполняющий восстановление, имеет право выдавать (та же семантика, что и у `GRANT CURRENT GRANTS`), вместо ошибки `ACCESS_DENIED`. [#98795](https://github.com/ClickHouse/ClickHouse/pull/98795) ([pufit](https://github.com/pufit)).
* Добавлены настройки `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)).
* Реализованы квоты по хешу нормализованного запроса для защиты публичных сервисов ClickHouse от злоупотреблений. `NORMALIZED_QUERY_HASH` поддерживается как тип quota key — для каждого уникального нормализованного запроса создаётся отдельный бакет квоты, поэтому `CREATE QUOTA q KEYED BY normalized_query_hash` отслеживает каждый такой запрос отдельно. `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)).
* Для настройки MergeTree `auto_statistics_types` значением по умолчанию теперь является `minmax, uniq`, поэтому статистика minmax и uniq автоматически создаётся для всех подходящих столбцов в новых таблицах. Для `materialize_statistics_on_insert` значением по умолчанию теперь является `false`, поэтому статистика строится во время слияний, а не в момент вставки, что снижает накладные расходы на вставку. Установите `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)).

<div id="authentication">
  ### Аутентификация
</div>

* Добавлена опция конфигурации LDAP `<follow_referrals>` для каждого сервера (по умолчанию `false`), позволяющая управлять тем, следует ли LDAP-клиент перенаправлениям. Отключение следования перенаправлениям позволяет избежать тайм-аутов и зависаний при поиске с base DN на уровне корня домена Active Directory, а также уменьшает шум в логах. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).

<div id="system-tables">
  ### Системные таблицы
</div>

* Добавлена `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="experimental-features">
  ## Экспериментальные возможности
</div>

* Добавлен кодек сжатия 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)).
* Добавлена поддержка внешних SQL-диалектов с использованием библиотеки `polyglot`. [#99496](https://github.com/ClickHouse/ClickHouse/pull/99496) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена настройка `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)).
* Добавлена поддержка озер данных в Azure на базе Delta Kernel. [#102202](https://github.com/ClickHouse/ClickHouse/pull/102202) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).

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

<div id="join-performance">
  ### Производительность JOIN
</div>

* Небольшие улучшения в `HashJoin` и `ConcurrentHashJoin`. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена поддержка перестановки сторон `ANTI`, `SEMI` и `FULL` JOIN на основе статистики оптимизатора. [#97498](https://github.com/ClickHouse/ClickHouse/pull/97498) ([Hechem Selmi](https://github.com/m-selmi)).
* Снижены конфликты доступа к кэшу в `RIGHT` и `FULL` JOIN за счёт проверки, установлен ли `JoinUsedFlags`, перед записью. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* Ускорены hash JOIN для ключей `Int32` и `Int64` из небольшого диапазона за счёт использования хеш-таблицы с прямой индексацией. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).

<div id="query-optimization">
  ### Оптимизация запросов
</div>

* Оптимизировано skipping гранул для `pointInPolygon` для больших полигонов, а также исправлено исключение, возникавшее во время анализа индекса `pointInPolygon` при отсечении по первичному ключу. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `optimize_read_in_order` теперь учитывается при чтении проекций. [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* Слегка оптимизировано чтение из словаря текстового индекса, что улучшило общую производительность анализа текстового индекса. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* Улучшена производительность анализа текстового индекса для запросов с составными условиями, затрагивающими как индексированные, так и неиндексированные столбцы. Ранее в таких случаях оптимизация раннего выхода при анализе индекса была ошибочно отключена. [#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)).
* Отсечение партиций теперь допускается, если предикат содержит любой оператор сравнения (`=`, `<`, `>`, `!=`), а ключ партиционирования обёрнут в цепочку детерминированных функций (например, при `PARTITION BY x` предикаты вроде `cityHash64(x) % 5 > 2`, `toYYYYMM(x) < 2026`, `toYYYYMM(x) = 2026` или `toYYYYMM(x) != 2026` будут использовать ключ партиционирования для отсечения). [#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` теперь передаются через pushdown для табличных функций `primes()` и `numbers()` вместо того, чтобы приводить к неограниченному выполнению. [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Запросы с фильтрацией по столбцам первичного ключа MergeTree и regex-альтернациями над строковыми литералами, например `^(abc-1|abc-2)`, теперь могут использовать отсечение по первичному ключу, если альтернативы имеют общий префикс. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash](https://github.com/Onyx2406)).
* Оптимизированы `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)).
* Ускорены прерывистые запросы для столбцов `LowCardinality` с одним словарём. [#99285](https://github.com/ClickHouse/ClickHouse/pull/99285) ([Ivan Babrou](https://github.com/bobrik)).
* Исправлено ухудшение масштабируемости коротких запросов с агрегацией на машинах с большим числом ядер. Когда запрос читает мало marks, конвейер после агрегации больше не расширяется до `max_threads`, что позволяет избежать накладных расходов из-за в основном пустых streams. [#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)).
* Удалены избыточные конечные элементы `ORDER BY`, если все ключи `GROUP BY` уже покрыты префиксом `ORDER BY`. [#100157](https://github.com/ClickHouse/ClickHouse/pull/100157) ([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`, что повышает производительность сортировки на этапе слияния на 6–17% для ключей сортировки с большим количеством строковых значений. [#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`, информация о границах виртуальных строк теперь выдаётся после чтения каждого block из MergeTree, что позволяет слиянию перераспределять приоритет источников по ходу потока для частей, чьи данные полностью отфильтровываются условиями `WHERE`/`PREWHERE`/`JOIN`. [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Улучшена распараллеливаемость запросов с простыми представлениями (поверх базовой таблицы семейства 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)).
* Повышена производительность `INSERT VALUES` для столбцов `Map`, `Array` и `Tuple`, когда значения передаются как экранированные строки (например, `'{\'key\':1}'`), что позволяет избежать ненужного перехода к парсеру SQL-выражений. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="function-and-aggregation-performance">
  ### Производительность функций и агрегации
</div>

* Улучшена производительность функции `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)).
* Улучшена производительность запросов `LIKE`. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Оптимизирована агрегатная функция `avgWeighted`: вместо пересылки данных для каждой строки через aggregate state теперь используются локальные аккумуляторы, что повышает производительность до 27% для входных данных `Nullable`. [#98793](https://github.com/ClickHouse/ClickHouse/pull/98793) ([Antonio Andelic](https://github.com/antonio2368)).
* Ускорены функции `var*Stable` и `stddev*Stable` для столбцов `Float64` за счёт девиртуализации внутреннего цикла. Это позволяет компилятору применять оптимизации (FMA/регистры), которые изменяют результаты вычислений с плавающей точкой на уровне ULP. [#99460](https://github.com/ClickHouse/ClickHouse/pull/99460) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Для входных данных размером 32/64 байта используется оптимизированное кодирование base58 из Firedancer (автоматически для `base58Encode`), а также разрешено использовать оптимизированное декодирование base58, если декодированный результат имеет размер 32/64 байта (явно через `base58Decode('...', 32)`). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* Оптимизирована функция `cutURLParameter` за счёт устранения лишних сдвигов в памяти. [#100218](https://github.com/ClickHouse/ClickHouse/pull/100218) ([Nikita Semenov](https://github.com/leftmain)).
* Ускорено преобразование float в строку для больших целочисленных значений за счёт расширения быстрого пути `itoa` с округлением, совместимым с dragonbox. [#100649](https://github.com/ClickHouse/ClickHouse/pull/100649) ([Raúl Marín](https://github.com/Algunenano)).
* Dragonbox заменён на zmij, что ускорило преобразование float в строку в 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)).
* Исключено создание лишних потоков при параллельном слиянии в `UniqExactSet`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* Добавлено батчевое параллельное слияние для `UniqExactSet`. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).

<div id="storage-and-io-performance">
  ### Производительность хранилища и ввода-вывода
</div>

* Снижена конкуренция за блокировки при операциях только для чтения в таблицах ReplicatedMergeTree с завершёнными мутациями. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* Iceberg теперь может асинхронно заранее заполнять кэш метаданными; это включается настройкой `iceberg_metadata_async_prefetch_period_ms` при создании таблицы. Запросы `SELECT` к таблицам Iceberg теперь могут задавать параметр `iceberg_metadata_staleness_ms`, который позволяет ClickHouse использовать кэшированную версию метаданных, если она свежее указанного порога устаревания; в противном случае для получения последних метаданных выполняется запрос к удалённому каталогу Iceberg. Это позволяет исключить обращения к каталогу Iceberg во время обработки запросов, что даёт заметный прирост производительности. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* Упорядоченный режим S3Queue теперь использует S3 `ListObjectsV2` `StartAfter`, чтобы избежать повторного перечисления всей истории по префиксу и сократить число вызовов `ListObjects`. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata Vineel](https://github.com/vyalamar)).
* Включено параллельное чтение из движка таблицы YTsaurus. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Улучшена производительность озер данных. В предыдущих версиях чтение из Объектного хранилища не подстраивало размер конвейера под число потоков обработки. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Разрешена предвыборка при чтении удалённого файла через кэш страниц в пространстве пользователя. [#99919](https://github.com/ClickHouse/ClickHouse/pull/99919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Исправлена существенная регрессия производительности INSERT при `deduplicate_insert=enable` (по умолчанию с 26.2): вычисление хеша данных перенесено с этапа squashing в sink, а также использовано батч-хеширование столбцов через `updateHashWithValueRange`, что снизило накладные расходы примерно с \~2.5s до \~0.5s для 5M строк и 22 столбцов. [#101494](https://github.com/ClickHouse/ClickHouse/pull/101494) ([Sema Checherinda](https://github.com/CheSema)).

<div id="memory-optimization">
  ### Оптимизация памяти
</div>

* Для синхронных вставок исходный блок (необходимый для дедупликации) теперь можно не хранить, чтобы экономить память. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* В некоторых сценариях улучшены производительность и использование памяти для параллельных оконных функций, а также для рабочих нагрузок с `arrayFold` и большими массивами. Это также может снизить нагрузку, связанную со страничными ошибками, и повысить стабильность затронутых запросов при жёстких ограничениях по памяти. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).

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

<div id="query-and-sql-improvements">
  ### Запросы и SQL
</div>

* Агрегатные проекции теперь корректно поддерживаются в представлениях. [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* `optimize_aggregators_of_group_by_keys` теперь корректно оптимизирует агрегатные функции в запросах `GROUPING SETS`. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Добавлена поддержка оптимизации JOIN с преобразованием `OUTER` в `INNER` при использовании `join_use_nulls`. [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* `cast_keep_nullable` расширен для работы с типами `Dynamic`/`JSON`. Если параметр включен, приведение `NULL` из типов, которые могут быть `Nullable`, возвращает `NULL`; в противном случае `NULL` вызывает ошибку `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* В `CREATE USER` добавлено предложение `ROLE`. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* В вывод запроса `EXPLAIN` добавлена информация об отложенных фильтрах в виде отдельного пункта (при использовании политик строк/PREWHERE с FINAL). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена поддержка заключенных в скобки выражений JOIN таблиц в предложении `FROM`, например `SELECT * FROM (t1 CROSS JOIN t2)`. [#97650](https://github.com/ClickHouse/ClickHouse/pull/97650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Теперь при распределенном анализе индексов применяются индексы пропуска данных. [#97767](https://github.com/ClickHouse/ClickHouse/pull/97767) ([Azat Khuzhin](https://github.com/azat)).
* Ключ сортировки таблицы теперь может быть выражением вида `toDate(time)`, а решение о том, откладывать ли такие выражения, теперь принимается, когда они входят в состав фильтров. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Оптимизатор порядка JOIN теперь выводит транзитивные предикаты эквисоединения из существующих условий JOIN. Например, если заданы `A.x = B.x AND B.x = C.x`, распознается эквивалентность `A.x = C.x`, что позволяет оптимизатору рассматривать прямые JOIN между транзитивно связанными таблицами. Это может повысить качество плана для схем типа star и snowflake. Эта возможность управляется новой настройкой `enable_join_transitive_predicates` (по умолчанию выключена). [#98479](https://github.com/ClickHouse/ClickHouse/pull/98479) ([Alexander Gololobov](https://github.com/davenger)).
* Когда включены `apply_row_policy_after_final` или `apply_prewhere_after_final`, составные условия `AND` в политиках строк и `PREWHERE` теперь разлагаются, чтобы извлекать атомы ключа сортировки для анализа индекса первичного ключа. Ранее, если отложенный фильтр содержал смесь предикатов по ключу сортировки и не по ключу сортировки (например, `x > 1 AND y != 'foo'`), всё выражение исключалось из анализа индексов. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Теперь в распределенном анализе индексов участвуют только "живые" (доступные для подключения) реплики. [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* Количество узлов, используемых автоматической эвристикой параллельных реплик, теперь ограничено фактическим количеством узлов в кластере (а не только значением настройки `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)).
* Добавлена поддержка клаузы `SAMPLE` в распределённом анализе индексов. [#98931](https://github.com/ClickHouse/ClickHouse/pull/98931) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена поддержка монотонности для `multiply`, что позволяет выполнять pruning по первичному ключу для выражений вида `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* Сообщения об ошибках анализатора больше не выводят дамп всех столбцов таблицы (что могло приводить к исключениям размером более 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)).
* `ALTER TABLE MODIFY COLUMN x TTL ...` теперь можно использовать без указания типа столбца. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* Улучшен вывод `EXPLAIN PLAN pretty=1`: теперь отображаются выходные столбцы запроса верхнего уровня, метки/символы отношений JOIN с оценкой числа строк результата и локальности, а также выходные столбцы для каждого шага JOIN/source. [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Исправлена ошибка в табличной функции `merge()`, из-за которой возникала ошибка `UNKNOWN_IDENTIFIER` при запросе столбцов, присутствующих не во всех базовых распределённых/удалённых таблицах. [#99833](https://github.com/ClickHouse/ClickHouse/pull/99833) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `ConditionSelectivityEstimator` больше не используется в оптимизаторе, если условие не находится в CNF (например, `where a = 0` — это одиночное условие, для которого статистика не помогает). [#100110](https://github.com/ClickHouse/ClickHouse/pull/100110) ([Han Fei](https://github.com/hanfei1991)).
* `distributed_index_analysis_min_indexes_bytes_to_activate` теперь применяется после отсечения партиций. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* `EXPLAIN PIPELINE` теперь поддерживает настройку `distributed=1`, чтобы включать удалённые фрагменты конвейера. [#100513](https://github.com/ClickHouse/ClickHouse/pull/100513) ([Nikita Taranov](https://github.com/nickitat)).
* `use_partition_pruning = 0` теперь также отключает pruning индекса `MinMax` и оптимизацию `count` для столбцов ключа партиционирования, помимо отключения pruning на основе ключей партиционирования. [#100904](https://github.com/ClickHouse/ClickHouse/pull/100904) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `EXPLAIN [PLAN] pretty=1` теперь выводит выражения в удобочитаемом формате. [#100927](https://github.com/ClickHouse/ClickHouse/pull/100927) ([Kirill Kopnev](https://github.com/Fgrtue)).
* `accurateCastOrNull` и `accurateCastOrDefault` теперь поддерживают целевые типы `Tuple`, включая вложенные `Tuple` с элементами `Nullable`. Ранее эти функции отклоняли `Tuple` в качестве целевого типа, поскольку `Tuple` не мог находиться внутри `Nullable`. [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Теперь в клаузе `WITH` можно использовать завершающую запятую перед запросом `SELECT`. [#101093](https://github.com/ClickHouse/ClickHouse/pull/101093) ([Aruj Bansal](https://github.com/arujbansal)).
* Реализована отложенная материализация столбцов для ReplacingMergeTree с FINAL, когда predicate достаточно селективен. [#101647](https://github.com/ClickHouse/ClickHouse/pull/101647) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Улучшены оценки селективности по умолчанию для условий без статистики в соответствии с общепринятыми отраслевыми эвристиками: 0,1 для селективности условия `LIKE` и 0,33 для селективности неизвестного условия. [#101653](https://github.com/ClickHouse/ClickHouse/pull/101653) ([Alexander Gololobov](https://github.com/davenger)).
* Подзапрос VIEW теперь встраивается в дерево запроса, что позволяет применять к VIEW больше оптимизаций. [#100830](https://github.com/ClickHouse/ClickHouse/pull/100830) ([Dmitry Novik](https://github.com/novikd)).

<div id="functions">
  ### Функции
</div>

* Теперь функции `JSONExtract` поддерживают нативный ввод JSON/Object. [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Добавлена SQL-функция `tokensForLikePattern`, которая токенизирует шаблоны `LIKE` с учетом семантики подстановочных символов: `%` и `_` рассматриваются как подстановочные символы, экранированные подстановочные символы (`\%`, `\_`) — как литералы, а токены рядом с неэкранированными подстановочными символами отбрасываются. [#97872](https://github.com/ClickHouse/ClickHouse/pull/97872) ([Amos Bird](https://github.com/amosbird)).
* Реализована функция `toDaysInMonth()`, которая возвращает количество дней в месяце для указанной даты. [#99227](https://github.com/ClickHouse/ClickHouse/pull/99227) ([Vitaly Baranov](https://github.com/vitlibar)).
* Токенизатор `unicodeWord` переименован в `asciiCJK`. [#100956](https://github.com/ClickHouse/ClickHouse/pull/100956) ([George Larionov](https://github.com/george-larionov)).
* Добавлен синтаксический сахар на уровне парсера для синтаксиса стандартной SQL-функции `OVERLAY`. Функция `overlay` уже существует; это добавляет поддержку формы на основе ключевых слов с использованием `PLACING`, `FROM` и `FOR` в качестве разделителей. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* Функция `ngrams` теперь отклоняет некорректные длины n-грамм. Например, `SELECT ngrams('abc', 0)` теперь возвращает ошибку. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* Добавлена поддержка токенизатора `array` для оптимизации `LIKE`. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).

<div id="table-engines-and-storage">
  ### Движки таблиц и хранилище
</div>

* Для MergeTree добавлен выделенный поток очистки, чтобы предотвратить задержки очистки при высокой нагрузке из-за слияний. [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* Таблицы с правилами `DELETE TTL` теперь могут использовать алгоритм вертикального слияния. [#97332](https://github.com/ClickHouse/ClickHouse/pull/97332) ([murphy-4o](https://github.com/murphy-4o)).
* Метки вторичных индексов теперь предварительно загружаются, когда включена настройка `prewarm_mark_cache` (они загружаются в кэш меток индекса во время загрузки частей данных и при запуске таблицы). [#97772](https://github.com/ClickHouse/ClickHouse/pull/97772) ([Anton Popov](https://github.com/CurtizJ)).
* Текстовые индексы теперь можно строить по столбцам `Nullable([Fixed]String)` и `Array(Nullable([Fixed]String))`. [#98118](https://github.com/ClickHouse/ClickHouse/pull/98118) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Фоновые слияния в `DROP DATABASE` для ordinary shared merge tree теперь отменяются заранее. [#98161](https://github.com/ClickHouse/ClickHouse/pull/98161) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Добавлена настройка `finalize_projection_parts_synchronously`, позволяющая синхронно финализировать части проекций во время INSERT, уменьшая пиковое потребление памяти для таблиц с большим количеством проекций при сохранении существующего асинхронного поведения по умолчанию. [#98228](https://github.com/ClickHouse/ClickHouse/pull/98228) ([Amos Bird](https://github.com/amosbird)).
* Добавлена настройка 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)).
* `TRUNCATE DATABASE TABLES LIKE` оптимизирован за счет предварительной параллельной отмены слияний. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Снижена конкуренция за блокировки в `MergeTreeBackgroundExecutor` за счет освобождения ресурсов задач без захвата блокировки. [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* `TRUNCATE DATABASE` теперь реагирует на отмену запроса. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* После изменения настройки MergeTree теперь перезапускается кэш статистики. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* Добавлена настройка MergeTree `compress_per_column_in_compact_parts` для управления тем, как организуются сжатые блоки в компактных частях. Когда `true` (по умолчанию, с сохранением текущего поведения), каждый столбец начинает новый сжатый блок, что позволяет выполнять выборочную распаковку. Когда `false`, все столбцы внутри гранулы упаковываются в один и тот же сжатый блок, что улучшает коэффициент сжатия и производительность чтения для рабочих нагрузок, которые всегда читают все столбцы. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* Текстовый индекс теперь имеет статус GA и остается включенным независимо от настройки `compatibility`, что предотвращает его неожиданное отключение при восстановлении из резервной копии или работе в режиме совместимости. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).
* Добавлена поддержка текстового индекса, построенного на `mapValues(map)`, для оператора `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* Улучшен анализ нескольких текстовых индексов, одновременно используемых в одном запросе. Настройка `use_skip_indexes_on_data_read` больше не требуется для оптимизации прямого чтения текстовых индексов. [#102255](https://github.com/ClickHouse/ClickHouse/pull/102255) ([Anton Popov](https://github.com/CurtizJ)).
* Добавлена поддержка анализа текстового индекса для функции `hasPhrase` в режиме `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Статистика MinMax для столбцов теперь хранит минимальные и максимальные значения как `Field` (с типом), а не как `Float64`. Сериализованный формат включает имя типа столбца вместе со значениями. Версия файла статистики повышена до V2; файлы, записанные более старыми версиями, требуют повторной материализации (`ALTER TABLE ... MATERIALIZE STATISTICS ALL`). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).

<div id="data-lakes-improvements">
  ### Озера данных
</div>

* Добавлен новый запрос для проверки состояния `DataLakeCatalog`. [#94690](https://github.com/ClickHouse/ClickHouse/pull/94690) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Улучшены операции записи в Iceberg для Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Переработаны сущности в `IcebergManifestFile`, чтобы снизить вероятность ошибок при сопровождении кода (это также устраняет некоторые проблемы с кэшированием файлов манифеста). [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* Расширена поддержка аргументов в Iceberg `ALTER TABLE ... EXECUTE expire_snapshots(...)`. [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130) ([murphy-4o](https://github.com/murphy-4o)).
* Изменён интерфейс для вставки в Iceberg через каталог. Параметры `storage_catalog_type`, `storage_aws_access_key_id` и аналогичные объявлены устаревшими. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Исправлена непоследовательная обработка путей в Iceberg, вызванная смешанным использованием путей хранилища и путей метаданных; теперь таблицы Iceberg записывают расположение таблицы либо как URL, либо как абсолютный путь; добавлен резервный механизм для подсчёта размеров файлов в Azure; обработка `version-hint.txt` приведена в соответствие со Spark; введены абстракции на уровне типов, чтобы пути разных типов было сложнее перепутать; также исправлено использование position deletes. [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* Исключено сканирование всего удалённого каталога озера данных для подсказок таблиц вида "Maybe you meant ...", когда `show_data_lake_catalogs_in_system_tables` отключён. [#100452](https://github.com/ClickHouse/ClickHouse/pull/100452) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Информация об объектах, используемая для разбора файлов данных Iceberg, теперь содержит число строк в файле и размер файла в байтах, полученные при разборе файла манифеста. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* Добавлен pruner для Delta Lake с виртуальными столбцами. [#101634](https://github.com/ClickHouse/ClickHouse/pull/101634) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="s3-and-object-storage-improvements">
  ### S3 и объектное хранилище
</div>

* Добавлен плейсхолдер `{_schema_hash}` для движка таблицы S3, который добавляет хеш определений столбцов таблицы в путь S3. [#98265](https://github.com/ClickHouse/ClickHouse/pull/98265) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Добавлена новая опция для принудительного использования стиля virtual/path для конечных точек S3. [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="settings-and-configuration">
  ### Настройки и конфигурация
</div>

* Теперь пользователи могут указывать несколько методов аутентификации в конфигурации `users_xml`. [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* Теперь можно задавать настройки `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)).
* `type_json_allow_duplicated_key_with_literal_and_nested_object` теперь включена по умолчанию, что позволяет избежать ошибок о дублирующихся ключах при разборе JSON вида `{"a" : 42, "a" : {"b" : 42}}`, который ClickHouse может формировать из исходных данных `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* Статистика по столбцам теперь имеет статус GA. Настройка `allow_experimental_statistics` (по умолчанию `false`) объявлена устаревшей в пользу `allow_statistics` (по умолчанию `true`); `allow_statistics_optimize` переведена из бета-статуса в GA; ClickHouse создает статистики `minmax` и `uniq` для новых столбцов (настройка MergeTree `auto_statistics_types`); а чтобы избежать замедления INSERT, `materialize_statistics_on_insert` теперь отключена по умолчанию. [#97487](https://github.com/ClickHouse/ClickHouse/pull/97487) ([Han Fei](https://github.com/hanfei1991)).
* Уточнена взаимосвязь между `enable_parallel_replicas` и `automatic_parallel_replicas_mode`: запрос может использовать параллельные реплики, только если `enable_parallel_replicas > 0`. При `automatic_parallel_replicas_mode=1` решение принимается на этапе планирования на основе собранной статистики; при `automatic_parallel_replicas_mode=0` параллельные реплики используются для всех поддерживаемых запросов независимо от статистики. Distributed insert-select с параллельными репликами всегда работает так, как если бы `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* Возможность impersonate ([EXECUTE AS target\_user](/ru/reference/statements/execute_as)) теперь включена по умолчанию. [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* Добавлена настройка `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)).
* Добавлена настройка для управления поведением при несовпадении типов для `Variant` и `Dynamic` (`throw` или возврат `NULL`). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* Значение `stderr_reaction` по умолчанию для пользовательских функций (UDF), реализованных как исполняемые программы, изменено с `throw` на `log_last`. UDF, которые записывают предупреждения в stderr, больше не завершаются ошибкой при коде выхода 0, а исключения при ненулевом коде выхода теперь включают содержимое stderr. [#99232](https://github.com/ClickHouse/ClickHouse/pull/99232) ([Xu Jia](https://github.com/XuJia0210)).
* Добавлена настройка `input_format_column_name_matching_mode`, которая позволяет задавать разную чувствительность к регистру для входных форматов. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* Автоматическая статистика больше не включается для системных таблиц, так как они редко получают от нее пользу. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).

<div id="system-tables-and-monitoring-improvements">
  ### Системные таблицы и мониторинг
</div>

* Теперь в `system.query_log` в новом столбце `skip_indices` фиксируются индексы пропуска данных, используемые при выполнении запросов. [#99793](https://github.com/ClickHouse/ClickHouse/pull/99793) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* В `system.part_log` добавлен столбец `projections_duration_ms`, в котором записывается длительность слияния/перестроения для каждой проекции в миллисекундах. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* В `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)).

<div id="clickhouse-keeper-improvements">
  ### ClickHouse Keeper
</div>

* `find_super_nodes` больше не застревает при обходе дочерних узлов первого super node, благодаря чему теперь можно находить несколько таких узлов. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* Сеанс ZooKeeper теперь помечается как истёкший сразу при начале финализации, не дожидаясь завершения потока отправки. Это позволяет другим потокам без задержки установить новый сеанс. [#99102](https://github.com/ClickHouse/ClickHouse/pull/99102) ([Raúl Marín](https://github.com/Algunenano)).
* Устаревшие запросы Keeper для уже отключившихся сеансов теперь пропускаются, что позволяет избежать лишних обменов с Raft. Количество отслеживаемых завершённых сеансов ограничено настройкой coordination `max_finished_sessions_cache_size`. [#99246](https://github.com/ClickHouse/ClickHouse/pull/99246) ([Antonio Andelic](https://github.com/antonio2368)).
* Предотвращено зависание команды Keeper `mntr` из-за конкуренции за блокировки. [#99472](https://github.com/ClickHouse/ClickHouse/pull/99472) ([Antonio Andelic](https://github.com/antonio2368)).
* Снижена конкуренция за блокировки в dispatcher Keeper: обратные вызовы и read request теперь обрабатываются вне области действия mutex; также для обсервабилити добавлены профилируемые lock guard. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="memory-management-improvements">
  ### Управление памятью
</div>

* Добавлен параметр конфигурации `use_separate_cache_arena` для настройки разделения арены кэша. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="data-formats-improvements">
  ### Форматы данных
</div>

* Добавлена настройка `output_format_trim_fixed_string` для удаления завершающих null-байтов из значений `FixedString` в текстовых выходных форматах. [#97558](https://github.com/ClickHouse/ClickHouse/pull/97558) ([NeedmeFordev](https://github.com/spider-yamet)).
* Стало возможно разбирать файлы GeoParquet, содержащие разные гео-типы в одном столбце. [#97851](https://github.com/ClickHouse/ClickHouse/pull/97851) ([Mark Needham](https://github.com/mneedham)).
* Десериализация бинарных состояний `AggregateFunction` теперь требует чтения всего входа целиком. Если присутствуют лишние завершающие байты, ClickHouse генерирует исключение вместо того, чтобы принимать некорректные данные состояния. [#98786](https://github.com/ClickHouse/ClickHouse/pull/98786) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Теперь пользователи могут записывать интервальные типы данных ClickHouse в формат Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* Добавлена встроенная поддержка импорта и экспорта типов данных UUID в форматах Arrow и Parquet с автоматическим логическим определением для UUID верхнего уровня и поддержкой явных указаний схемы для вложенных UUID. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* Теперь допускается отсутствие заполнения в конце последнего блока файла Parquet. [#99857](https://github.com/ClickHouse/ClickHouse/pull/99857) ([Seva Potapov](https://github.com/seva-potapov)).
* При экспорте UUID в Parquet через кодировщик Arrow теперь добавляется корректная аннотация типа UUID, что устраняет необходимость вручную приводить данные `FixedString(16)` при обратном чтении файлов. [#100150](https://github.com/ClickHouse/ClickHouse/pull/100150) ([Ivan](https://github.com/ivanmantova)).
* Добавлена встроенная поддержка импорта типов данных Apache Arrow `StringView` и `BinaryView` в столбцы ClickHouse `String`, что улучшает совместимость для ингестии на основе Arrow. [#100762](https://github.com/ClickHouse/ClickHouse/pull/100762) ([Ivan](https://github.com/ivanmantova)).
* Добавлена поддержка `Nullable(Tuple)` в форматах `Arrow`, `ArrowStream`, `ORC` и устаревшем `Parquet`. [#101272](https://github.com/ClickHouse/ClickHouse/pull/101272) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="named-collections-and-dictionaries">
  ### Именованные коллекции и словари
</div>

* В список допустимых ключей для источников словарей PostgreSQL добавлен `sslmode`, что позволяет настраивать режим SSL для подключений словарей PostgreSQL (например, для AWS RDS, где SSL по умолчанию обязателен). [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* Предотвращено удаление именованных коллекций, от которых зависят источники словарей. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* Добавлена поддержка типов `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)).
* `SYSTEM RELOAD DICTIONARIES` теперь перезагружает словари в топологическом порядке, поэтому словари, использующие другие словари в качестве источника, после перезагрузки получают актуальные данные. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Словари типа cache больше не используют exclusive-блокировку в `hasKeys`, что снижает конкуренцию за блокировки за счёт использования разделяемой блокировки при чтении из кэша. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).

<div id="other-improvements">
  ### Другие улучшения
</div>

* Подсказки `ACCESS_DENIED` больше не раскрывают имена столбцов, если пользователь не может видеть все необходимые столбцы; имена базы данных/таблицы по-прежнему видны в подсказке. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* Конфигурация cluster теперь перезагружается при изменении IP-адресов hostname локального сервера, а не IP-адресов любого хоста. [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* Добавлен flush буферов асинхронного logging в случае сбоя. [#97836](https://github.com/ClickHouse/ClickHouse/pull/97836) ([Azat Khuzhin](https://github.com/azat)).
* Уменьшено число блокировок при управлении доступом. [#97894](https://github.com/ClickHouse/ClickHouse/pull/97894) ([Nikita Taranov](https://github.com/nickitat)).
* ClickStack обновлён до версии 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* Генерация SQL с помощью ИИ (команда `??`) отключена во встроенном client (протоколы SSH и WebSocket), чтобы предотвратить доступ к переменным окружения сервера. [#100290](https://github.com/ClickHouse/ClickHouse/pull/100290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* При использовании хранилища RabbitMQ для повреждённых сообщений теперь отправляется NACK. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="bug-fixes">
  ## Исправления ошибок
</div>

<Accordion title="Все исправления ошибок (нажмите, чтобы развернуть)">
  ### Исправления JOIN

  * Исправлена ошибка, из-за которой отсутствовал столбец, если в JOIN со старым анализатором использовался псевдоним идентификатора нестандартного вида. [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
  * Исправлен некорректный результат, когда алгоритм `grace_hash` использовался с неэквивалентными JOIN, а левый блок не мог быть обработан полностью из-за ограничений на размер результата JOIN. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Исправлена логическая ошибка при использовании `analyzer_compatibility_join_using_top_level_identifier` и `ARRAY JOIN`. [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Исправлено исключение `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)).
  * Исправлено исключение "Pipeline stuck" в JOIN `full_sorting_merge`, вызванное взаимной блокировкой в `PingPongProcessor`, когда оптимизация `FilterBySetOnTheFly` создавала циклическую зависимость с `MergeJoinTransform`. [#98454](https://github.com/ClickHouse/ClickHouse/pull/98454) ([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)).
  * Исправлено исключение `LOGICAL_ERROR`, когда `arrayJoin` использовался в выражении фильтра с `OUTER JOIN` и включённым `join_use_nulls`. [#98464](https://github.com/ClickHouse/ClickHouse/pull/98464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлены исключение `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` "Replica decided to read in Default mode, not in WithOrder" при использовании `read_in_order_through_join` с параллельными репликами. [#98685](https://github.com/ClickHouse/ClickHouse/pull/98685) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * `LEFT ANTI JOIN` с несколькими столбцами ключа JOIN возвращал неверные результаты при `enable_join_runtime_filters=1` (по умолчанию). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
  * Исправлена ошибка в оптимизации `query_plan_convert_any_join_to_semi_or_anti_join`, которая возвращала некорректный результат для несовпавших строк. [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлено исключение в функциях, работающих с `ColumnReplicated`, при необрабатываемых строках, созданных JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
  * Исправлен редкий случай, когда JOIN с переупорядочиванием мог давать неверный результат. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлены неверные результаты, когда JOIN с оптимизацией shard-by-PK использовал кэш условий запроса, и некоторые части отфильтровывались кэшированными условиями. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
  * Исправлено исключение `NOT_FOUND_COLUMN_IN_BLOCK` при использовании `ARRAY JOIN` с `JOIN USING` и включенной настройкой `analyzer_compatibility_join_using_top_level_identifier`. [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Исправлен некорректный порядок строк в запросах, использующих `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)).

  ### Исправления запросов и анализатора

  * Исправлено сохранение целевой Alias table как DDL-зависимости, если она указана не полностью: теперь она сохраняется с базой данных Alias table, а не с базой данных сеанса. [#95175](https://github.com/ClickHouse/ClickHouse/pull/95175) ([Enric Calabuig](https://github.com/eclbg)).
  * Исправлена ошибка `Block structure mismatch in stream`, вызванная лишними столбцами, возвращаемыми при отложенной материализации. [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Исправлено исключение при сравнении кортежей с элементами типа `Nothing` (например, при сравнении с элементами кортежа `NULL`) при использовании `GROUPING SETS` и `ORDER BY`. [#97509](https://github.com/ClickHouse/ClickHouse/pull/97509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение "Context has expired" для коррелированных подзапросов, содержащих table functions, такие как `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)).
  * Удалено некорректное query rewrite из `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)).
  * Исправлены исключения `LOGICAL_ERROR` и некорректное поведение, вызванные `LowCardinality` внутри составных типов (`Variant`, `Dynamic`, `Tuple`), в `concatWithSeparator`, `format`, подзапросах `IN`, `GLOBAL IN` и JOIN с runtime filters. [#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 tables в сочетании с `GROUP BY`. [#97838](https://github.com/ClickHouse/ClickHouse/pull/97838) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлена ошибка, из-за которой невозможно было использовать CTE с распределенными insert-select-запросами. [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлено несоответствие столбцов. [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
  * Исправлен segfault при оптимизации query plan во время преобразования outer join в inner join с `arrayJoin` в filter expression. [#98147](https://github.com/ClickHouse/ClickHouse/pull/98147) ([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` в table function `merge`. [#98291](https://github.com/ClickHouse/ClickHouse/pull/98291) ([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)).
  * Исправлено исключение "Column ... query tree node does not have valid source node", возникавшее при JOIN таблицы `Merge` (оборачивающей таблицу `Distributed`) с другой таблицей. [#98376](https://github.com/ClickHouse/ClickHouse/pull/98376) ([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)).
  * Исправлено исключение `LOGICAL_ERROR` "Projection cannot increase the number of rows in a block", возникавшее при слиянии частей с TTL, удаляющим все строки, и агрегатной проекцией с постоянным ключом `GROUP BY`. [#98458](https://github.com/ClickHouse/ClickHouse/pull/98458) ([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 "Replica decided to read in WithOrder mode, not in ReverseOrder", возникавшее при использовании параллельных реплик с `optimize_aggregation_in_order`. [#98467](https://github.com/ClickHouse/ClickHouse/pull/98467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен неожиданный результат при использовании `read_in_order_use_virtual_row` и монотонных функций. [#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)).
  * Исправлено исключение "Sorting column wasn't found in the ActionsDAG's outputs", возникавшее, когда `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)).
  * Исправлено `LOGICAL_ERROR`, возникавшее, когда `Identifier` оказывался пустым после подстановки параметров. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
  * Исправлен distributed index analysis для выражений (а не только столбцов) в primary key, из-за которого на удаленных репликах не выполнялась фильтрация лишних гранул. [#98561](https://github.com/ClickHouse/ClickHouse/pull/98561) ([Azat Khuzhin](https://github.com/azat)).
  * Исправлена logical error "TABLE\_FUNCTION is not allowed in expression context", возникавшая, когда table function с псевдонимом появлялась несколько раз в одной области видимости запроса (например, и в секции `PREWHERE`, и в секции `QUALIFY`). [#98557](https://github.com/ClickHouse/ClickHouse/pull/98557) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение "Bad cast from type `DB::TableFunctionNode` to `DB::QueryNode`" при использовании табличной функции `input` в качестве аргумента для `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение в `LogicalExpressionOptimizerPass`, возникавшее, когда булева функция в сравнении `equals` возвращала тип `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение `UNKNOWN_IDENTIFIER` при выполнении запроса к табличной функции `merge()` или движку `Merge` по таблицам с JSON-столбцами, имеющими разные параметры, и ALIAS-столбцами, ссылающимися на подпути JSON, при включенном новом анализаторе. [#98753](https://github.com/ClickHouse/ClickHouse/pull/98753) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена оптимизация `optimize_skip_unused_shards` в анализаторе, когда в `View` использовался движок `Distributed`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Исправлено исключение `LOGICAL_ERROR` (несоответствие структуры блока в `removeUnusedColumns`), которое могло возникать при использовании `FINAL` + `PREWHERE` + константного выражения `WHERE` + агрегатных функций, не зависящих от столбцов, таких как `count()`. [#98778](https://github.com/ClickHouse/ClickHouse/pull/98778) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение "Inconsistent table names" при использовании табличной функции `view()`, содержащей JOIN внутри другого JOIN (только со старым анализатором). [#98809](https://github.com/ClickHouse/ClickHouse/pull/98809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение при комбинировании `loop` с кластерными табличными функциями. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Исправлен `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)).
  * Исправлено исключение "Scalar doesn't exist" при выполнении запроса к удаленному сегменту с установленным `optimize_const_name_size` и `enable_scalar_subquery_optimization = 0`. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
  * Исправлен `NOT_FOUND_COLUMN_IN_BLOCK` для некоторых запросов с `GROUP BY` и выражениями, включающими обратный поиск в словаре, сравнения преобразований `Date`/`DateTime` и сравнения кортежей. [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Исправлена ошибка, из-за которой `EXISTS` игнорировал секции `LIMIT` и `OFFSET` в подзапросах, что приводило к некорректным результатам, когда подзапрос не возвращал строк из-за смещения или нулевого лимита. [#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)).
  * Исправлен `LOGICAL_ERROR` при выполнении запроса к таблице, у которой есть и ROW POLICY, и ALIAS-столбец, использующий `dictGet`; проблема была вызвана преждевременным доступом к табличному выражению во время разрешения ALIAS-столбца в новом анализаторе. [#99065](https://github.com/ClickHouse/ClickHouse/pull/99065) ([Peng](https://github.com/fastio)).
  * Исправлен segfault в рекурсивном CTE с `remote()` + `view()`. [#99081](https://github.com/ClickHouse/ClickHouse/pull/99081) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Убран лишний анализ индекса при применении оптимизации read-in-order. [#99084](https://github.com/ClickHouse/ClickHouse/pull/99084) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Исправлены проверки доступа в `InverseDictionaryLookupPass`: теперь доступ проверяется только один раз перед запуском прохода оптимизации. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
  * Исправлена работа `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)).
  * Исправлено исключение `std::length_error` при запросе к пустым системным таблицам в формате Pretty через HTTP-интерфейс. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена деградация производительности в анализаторе за счет отсечения неиспользуемых столбцов из `ARRAY JOIN`. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
  * Исправлено исключение (`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)).
  * Исправлено исключение "Block structure mismatch" в запросах с условием `HAVING`, где выражение фильтра содержало и агрегатную функцию, обернутую в функцию, возвращающую NULL, и `materialize(0)`. [#99915](https://github.com/ClickHouse/ClickHouse/pull/99915) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена логическая ошибка с коррелированным подзапросом внутри аргумента `untuple`. [#99917](https://github.com/ClickHouse/ClickHouse/pull/99917) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Исправлено исключение "Inconsistent AST formatting" для `ALTER TABLE ... MODIFY QUERY` с вложенными подзапросами, содержащими `SETTINGS`, когда сам `ALTER` тоже содержал `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
  * Исправлено исключение `LOGICAL_ERROR` "Not-ready Set" в функции `IN` во время оптимизации плана запроса с `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение `LOGICAL_ERROR` "Unexpected node type for table expression ... Actual IDENTIFIER", возникавшее, когда скалярный подзапрос использовался внутри аргумента неразрешенной табличной функции. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([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)).
  * Исправлено исключение "Block structure mismatch" при использовании `GROUP BY ... WITH TOTALS HAVING` в сочетании с `UNION DISTINCT` и выражениями с Nullable. [#100293](https://github.com/ClickHouse/ClickHouse/pull/100293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение "Inconsistent AST formatting" в отладочных сборках при использовании `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)).
  * Исправлено исключение `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)).
  * Исправлены случаи `NOT_FOUND_COLUMN_IN_BLOCK`, когда проекция `SELECT` содержала столбцы, отсутствовавшие в исходной части `SELECT` запроса. [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Добавлена возможность передавать ключ сегментирования в табличные функции `cluster()` и `clusterAllReplicas()`, если в качестве источника используется табличная функция (например, `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
  * Исправлены некорректные типы аргументов `AggregateFunction` в оптимизированном тривиальном count, из-за которых возникало исключение `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` при запросах выражений вроде `count(v0 + v1)` на распределённых таблицах. [#100794](https://github.com/ClickHouse/ClickHouse/pull/100794) ([YjyJeff](https://github.com/YjyJeff)).
  * Исправлена logical error "Invalid action query tree node" при использовании `INTERSECT ALL` / `UNION ALL` с выражениями, свёрнутыми в константы. [#100977](https://github.com/ClickHouse/ClickHouse/pull/100977) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена некорректная ошибка `UNKNOWN_IDENTIFIER`, возникавшая, когда один и тот же псевдоним использовался для нескольких выражений в `SELECT`; теперь вместо неё корректно возвращается ошибка `MULTIPLE_EXPRESSIONS_FOR_ALIAS`. [#101040](https://github.com/ClickHouse/ClickHouse/pull/101040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение в `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)).
  * Исправлена ошибка "Illegal type Decimal64 of start parameter" в агрегатных функциях временных рядов при использовании `serialize_query_plan=1` с параллельными репликами. [#101083](https://github.com/ClickHouse/ClickHouse/pull/101083) ([Groene AI](https://github.com/groeneai)).
  * Исправлены неверные результаты запроса, когда большая целочисленная константа (например, 256 или 2147483648) использовалась как булев предикат в условии `WHERE` с `AND` в таблицах семейства MergeTree. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой с ошибкой "Logical error: Reading from materialized CTE before materialization", возникавший, когда скалярный подзапрос ссылался на цепочку зависимых materialized CTE. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
  * Исправлено исключение при приведении строки с лишними данными в конце к пустому типу `Tuple()`. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена логическая ошибка при разборе некорректной строки, представляющей пустой кортеж. [#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)).
  * Исправлено исключение в `getStructureOfRemoteTable`, когда локальный сегмент возвращал пустые столбцы из-за одновременного DDL. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Цепочки OR в политиках доступа на уровне строк оптимизированы в `IN` в новом анализаторе. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
  * Исправлены неверные результаты, возвращаемые `WHERE x AND toNullable(N)` в таблицах `MergeTree`, когда `N` — целое число шире `UInt8` (например, `256`, `65535`, `2147483648` или любое отрицательное целое число). [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).

  ### Исправления MergeTree и хранилища

  * Исправлена логическая ошибка при присоединении части в MergeTree, если между отсоединением и присоединением происходило несколько последовательных переименований. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([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)).
  * Исправлено некорректное срабатывание исключений `MEMORY_LIMIT_EXCEEDED` как `CORRUPTED_DATA` во время слияния SummingMergeTree и CoalescingMergeTree. [#97537](https://github.com/ClickHouse/ClickHouse/pull/97537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * `hasPartitionId` теперь возвращает false, если в наборе частей данных существует другая партиция с более высоким идентификатором партиции. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
  * Исправлена мутация после легковесного обновления со secondary indices. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлены некорректные результаты FINAL-запросов при смешанном использовании primary key и не-primary-key индексов пропуска данных. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
  * Если столбцы ключа партиционирования не входят в ключ сортировки, partition pruning мог некорректно пропускать партиции, содержащие строки, которые должны были "побеждать" при FINAL-дедупликации. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлена потенциальная взаимная блокировка, когда две параллельные операции `MOVE PARTITION` работают с одной и той же парой таблиц в противоположных направлениях. [#98264](https://github.com/ClickHouse/ClickHouse/pull/98264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено исключение `LOGICAL_ERROR` "Invalid binary search result in `MergeTreeSetIndex`", возникавшее при преобразовании `toDate` для столбцов ключа с данными, пересекающими границу 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([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)).
  * Исправлено зависание мутаций `MATERIALIZE INDEX` и `MATERIALIZE PROJECTION`, если индекс или проекция удалялись до завершения мутации. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлены некорректные результаты partition pruning после слияния частей со столбцами ключа партиционирования `Nullable`, вызванные неверными границами min-max index. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
  * Исправлено исключение `LOGICAL_ERROR` в `renameAndCommitEmptyParts`, которое могло возникать, когда `TRUNCATE TABLE` выполнялся одновременно с `OPTIMIZE TABLE` с использованием транзакций MergeTree. [#98508](https://github.com/ClickHouse/ClickHouse/pull/98508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено десятичное переполнение при partition pruning с `DateTime64`. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлено восстановление устаревших частей данных, вызванное некорректной очисткой пустых покрывающих частей. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Исправлено определение полезности индекса пропуска данных типа set для предиката `OR` со значением false (то есть `or(x, 0)`). [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
  * Исправлена проблема, из-за которой индексы пропуска данных (и условия первичного ключа) не применялись к столбцам ALIAS, когда слияние выражений в плане запроса отключено (`query_plan_merge_expressions = 0` или `query_plan_enable_optimizations = 0`). [#98960](https://github.com/ClickHouse/ClickHouse/pull/98960) ([Peng](https://github.com/fastio)).
  * Исправлено некорректное или недостаточное отсечение данных, когда `startsWith`, `LIKE` или `NOT LIKE` использовались со столбцом `FixedString`. Кроме того, функция приведения `FixedString` к `String` теперь может отфильтровывать гранулы, когда применяется к ключевому столбцу. [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Исправлено исключение при чтении патч-частей (легковесные обновления) без столбца `_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)).
  * Исправлено исключение при создании таблицы со столбцом `EPHEMERAL`, имеющим то же имя, что и виртуальный столбец (например, `_part_offset`). [#99031](https://github.com/ClickHouse/ClickHouse/pull/99031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен `LOGICAL_ERROR`, вызванный несоответствием порядка столбцов в патч-частях. [#99164](https://github.com/ClickHouse/ClickHouse/pull/99164) ([Pablo Marcos](https://github.com/pamarcos)).
  * Исправлена ошибка, из-за которой `ALTER TABLE UPDATE`/`DELETE` завершался ошибкой `Missing columns`, когда в таблице есть столбец MATERIALIZED, выражение которого зависит от столбца `EPHEMERAL`. [#99281](https://github.com/ClickHouse/ClickHouse/pull/99281) ([Yash](https://github.com/Onyx2406)).
  * Исправлена совместимость при обновлении реплицируемых таблиц с неявными индексами minmax с версии 25.10 до более новых версий. [#99392](https://github.com/ClickHouse/ClickHouse/pull/99392) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлена редкая ошибка, при которой часть данных некорректно помечалась как повреждённая и отсоединялась после запроса `DETACH`/`ATTACH TABLE`. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлен сбой проверки `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)).
  * Исправлен `LOGICAL_ERROR` при использовании `ALTER TABLE ADD COLUMN` для создания столбца `EPHEMERAL` с тем же именем, что и виртуальный столбец (например, `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена проблема, из-за которой `CLEAR COLUMN` не пересобирал проекции и не пересчитывал материализованные столбцы, зависящие от очищаемого столбца, что могло приводить к исключениям или повреждению данных при последующих слияниях. [#99565](https://github.com/ClickHouse/ClickHouse/pull/99565) ([Desel72](https://github.com/Desel72)).
  * Часть с неизвестными проекциями больше не помечается как безвозвратно потерянная. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
  * Исправлена висячая ссылка в `injectRequiredColumns`, приводившая к сбою во время слияния. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
  * Исправлена логическая ошибка при слиянии частей проекций после `CLEAR COLUMN` в таблице с проекциями и компактными частями. [#100068](https://github.com/ClickHouse/ClickHouse/pull/100068) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена ошибка `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)).
  * Аргументы движка для `StorageAlias` теперь вычисляются перед сохранением определения, чтобы выражения вроде `currentDatabase()` преобразовывались в литералы до сохранения в базу данных. [#100902](https://github.com/ClickHouse/ClickHouse/pull/100902) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Исправлено поведение `divide` и `intDiv`, которые в некоторых случаях возвращали `ILLEGAL_DIVISION` при использовании в выражениях фильтра во время анализа индекса. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Исправлена ситуация, при которой оптимизация `minmax_count_projection` и тривиальная `COUNT(*)` оставались навсегда отключёнными после легковесного удаления, даже когда все части с маской легковесного удаления уже были слиты. [#101212](https://github.com/ClickHouse/ClickHouse/pull/101212) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлено состояние гонки для `storage_id` в `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Исправлено поведение `materialize_skip_indexes_on_merge=false`: текстовые (полнотекстовые) индексы не подавлялись во время слияния. Ранее подавлялись только нетекстовые индексы пропуска данных (minmax, set, bloom\_filter). [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
  * Записи кэша индекса векторного сходства теперь удаляются после удаления части (например, во время слияния), что устраняет проблему, из-за которой записи никогда не вытеснялись из-за несовпадения ключей кэша. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
  * Исправлено ложное исключение `LOGICAL_ERROR` во время динамического изменения размера файлового кэша, вызванное состоянием гонки при повышении приоритета в подочереди SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена возможная логическая ошибка при чтении подстолбцов Map. [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлен приоритет точного совпадения подстолбца над совпадением по префиксу в `getSubcolumnData`, чтобы избежать возможного сбоя. [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлено использование неверных экстремальных значений в индексе min-max, созданном для JSON-столбца, что приводило к неверным результатам запроса. [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена ошибка состояния гонки в SLRU в файловом кэше (26.1+), которая могла приводить к логической ошибке при резервировании места. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлена логическая ошибка `Having zero bytes` в кэше, возникавшая из-за перезаписи удалённого объекта между `list` и `read`, что ранее приводило к устареванию метаданных объекта. [#101219](https://github.com/ClickHouse/ClickHouse/pull/101219) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлен сбой проверки `file_offset_of_buffer_end <= getFileSize()` при чтении из таблиц `Log` или `StripeLog` в объектном хранилище S3 при одновременной записи. [#100763](https://github.com/ClickHouse/ClickHouse/pull/100763) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено ограничение размера кэша при перезагрузке конфигурации. [#100659](https://github.com/ClickHouse/ClickHouse/pull/100659) ([Aleksei Filatov](https://github.com/aalexfvk)).
  * Исправлено аварийное завершение с `LOGICAL_ERROR` при динамическом изменении размера файлового кэша SLRU, вызванное общей статистикой вытеснения между подочередями и некорректным сценарием восстановления для кандидатов, завершившихся с ошибкой. [#102396](https://github.com/ClickHouse/ClickHouse/pull/102396) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлена проблема, из-за которой оптимизация `minmax_count_projection` и тривиальная `COUNT(*)` навсегда отключались после легковесного удаления. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).

  ### Исправления типов данных и сериализации

  * Исправлены неверный результат или исключение при чтении подстолбцов столбцов ALIAS. [#95408](https://github.com/ClickHouse/ClickHouse/pull/95408) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена проблема, из-за которой агрегатная функция `sumCount` не могла читать старые сериализованные состояния после появления `Nullable(Tuple)`. [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Исправлена логическая ошибка из-за отсутствующего потока во время `INSERT SELECT` с JSON и бакетами в общих данных. [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлены возможные сбои при чтении пустых гранул в расширенных общих данных JSON. [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена неверная JIT-компиляция функции `sign` для целочисленных типов шире `Int8` — значения вне диапазона -128..127 могли давать неверный знак. [#98012](https://github.com/ClickHouse/ClickHouse/pull/98012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено, что формат `ProtobufList` не работал с Kafka engine, потому что состояние чтения не сбрасывалось между сообщениями. [#98151](https://github.com/ClickHouse/ClickHouse/pull/98151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено скрытое повреждение данных при вставке столбца `Date` из Parquet/Arrow в столбец `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)).
  * Исправлено исключение при чтении из `Nullable(Tuple(...))`, когда имя элемента Tuple конфликтует с подстолбцом `null` у Nullable. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено некорректное преобразование Parquet `Bool` в `FixedString` в native reader V3, из-за которого возвращались raw bytes вместо строкового представления. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено: `tryGetColumnDescription` теперь фильтрует подстолбцы по Kind родительского столбца, как и другие методы поиска столбцов. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([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)).
  * Исправлено, что `parseDateTimeBestEffort` неправильно разбирал слова, начинающиеся с префиксов месяцев или дней недели. [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлено исключение в `reverseUTF8` при некорректном (усечённом) вводе UTF-8. [#98770](https://github.com/ClickHouse/ClickHouse/pull/98770) ([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)).
  * SummingMergeTree больше не суммирует столбцы `Bool` (и другие столбцы доменных типов); значения `Bool` теперь сохраняются как есть, а не суммируются арифметически. [#98976](https://github.com/ClickHouse/ClickHouse/pull/98976) ([Yash](https://github.com/Onyx2406)).
  * Исправлено неопределённое поведение (разыменование нулевого указателя) при изменении столбца version/sign/is\_deleted на `EPHEMERAL` или `ALIAS` в движках MergeTree. Такие изменения теперь корректно отклоняются. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена ошибка в `parseDateTimeBestEffort`, из-за которой функция некорректно разбирала слова, начинающиеся с префиксов месяцев, в формате DD-month-YYYY. [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена работа `CHECK TABLE` с разреженной сериализацией внутри `Tuple` с `Dynamic`. [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена логическая ошибка `unordered_map::at: key not found` в выходном формате Avro при сериализации столбцов `Enum8`/`Enum16` со значениями, отсутствующими в определении enum. [#99332](https://github.com/ClickHouse/ClickHouse/pull/99332) ([Desel72](https://github.com/Desel72)).
  * Исправлена ошибка, из-за которой сравнение типов `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)).
  * Исправлена десериализация `\N` (NULL) для типа `Variant` в текстовых форматах Escaped/Raw. [#99648](https://github.com/ClickHouse/ClickHouse/pull/99648) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлено неопределённое поведение в средстве чтения формата Avro при чтении числовых значений, выходящих за пределы целевого типа столбца. Теперь запросы завершаются ошибкой при переполнении вместо того, чтобы молча возвращать некорректные значения. [#99697](https://github.com/ClickHouse/ClickHouse/pull/99697) ([asyablue22](https://github.com/asyablue22)).
  * Исправлено ложноположительное аварийное завершение в `NativeReader` при десериализации потока в Native format с несоответствием количества строк: ошибка изменена с `LOGICAL_ERROR` на `INCORRECT_DATA`. [#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)).
  * Исправлена настройка `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)).
  * Исправлено исключение `LOGICAL_ERROR` в запросах со столбцами `Dynamic`, включающими CROSS JOIN и Runtime Filters; причиной было то, что `ColumnVariant::filter` использовал общие указатели на variant-столбцы вместо их клонирования на пути оптимизации `hasOnlyNulls`. [#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)).
  * Исправлена ошибка, из-за которой форматы `CSV` и `MsgPack` не могли корректно разбирать `Nullable(Tuple)`. [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Исправлена ошибка, из-за которой функции `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)).
  * Исправлено переполнение знакового целого числа (неопределённое поведение) в `toStartOfInterval` при вызове с очень большими значениями интервала в миллисекундах/микросекундах для высокоточного `DateTime64`. [#100156](https://github.com/ClickHouse/ClickHouse/pull/100156) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлены Runtime Filters для JOIN поверх типа данных `Variant`. [#100182](https://github.com/ClickHouse/ClickHouse/pull/100182) ([Dmitry Novik](https://github.com/novikd)).
  * Исправлено приведение `Time64` к `UInt64`, из-за которого значения могли ограничиваться 24 часами. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлено исключение при вычислении общего супертипа для пустых и непустых кортежей при включённом `use_variant_as_common_type`. [#100699](https://github.com/ClickHouse/ClickHouse/pull/100699) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлено неопределённое поведение в `positiveModulo`, когда беззнаковый делитель не помещается в знаковый тип результата. [#100705](https://github.com/ClickHouse/ClickHouse/pull/100705) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлено неопределённое поведение (переполнение знакового целого числа) в `toStartOfInterval` при использовании интервалов Week, Quarter или Year с аргументом origin и экстремальными значениями интервала. [#100817](https://github.com/ClickHouse/ClickHouse/pull/100817) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлена ошибка, из-за которой комбинаторы агрегатных функций `If`, `Distinct`, `DistinctIf` и `IfState` с возвращаемым типом `Tuple` и одним или несколькими аргументами `Nullable` не могли читать старые сериализованные состояния после появления `Nullable(Tuple)`. [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * При включённом `cast_keep_nullable` больше не генерируется исключение при приведении `Dynamic` null к `Variant`. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
  * Исправлено исключение в `intDiv`/`intDivOrZero` для массивов nullable-кортежей. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлено неопределённое поведение (переполнение знакового целого числа) в `parseDateTimeBestEffort` при разборе строк datetime с более чем 18 цифрами в дробной части секунды. [#100948](https://github.com/ClickHouse/ClickHouse/pull/100948) ([Vasily Chekalkin](https://github.com/bacek)).
  * Исправлена ошибка, из-за которой агрегатная функция `sumCountOrDefault` с одним или несколькими аргументами `Nullable` не могла читать старые сериализованные состояния после появления `Nullable(Tuple)`. [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Исправлены столбцы ALIAS с типами `DateTime`/`DateTime64`, для которых не выполнялось преобразование часового пояса, если объявленный часовой пояс отличался от часового пояса выражения. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Из результирующего столбца в `arrayIntersect` и связанных функциях убран `Nullable`, чтобы избежать несоответствия между сериализацией и десериализацией. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
  * Исправлена ошибка, из-за которой `positiveModulo(tuple, number)` ошибочно направлялся на деление вместо взятия по модулю. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
  * Исправлен некорректный вывод в `formatDateTime` с форматтером `%W` при некоторых нестандартных настройках форматирования. [#101847](https://github.com/ClickHouse/ClickHouse/pull/101847) ([Robert Schulze](https://github.com/rschu1ze)).
  * Исправлено исключение из-за несоответствия типов в `transform`, когда столбец по умолчанию является константным в некоторых блоках. [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
  * Разрешены пустые группы строк в Parquet. [#100653](https://github.com/ClickHouse/ClickHouse/pull/100653) ([Vitaly Baranov](https://github.com/vitlibar)).
  * `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)).
  * Исправлен неверный вывод типа даты в случае переполнения после корректировки часового пояса. [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлен `CASE` с выражением `Dynamic`, который возвращал `ELSE` для всех строк. [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена сериализация уплощённого типа `Dynamic` с типами данных, закодированными в бинарном виде. [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена ошибка, из-за которой `cast_string_to_date_time_mode` игнорировался при `CAST` в `Nullable(DateTime)`. [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
  * Представление null при сериализации реплицируемых и разреженных столбцов теперь учитывает настройки (например, `format_tsv_null_representation`). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).

  ### Исправления text index и индекса пропуска данных

  * Исправлено использование текстового индекса вместе с другими индексами пропуска данных. Ранее, когда фильтр запроса одновременно использовал текстовый индекс и другие обычные индексы пропуска данных, могли возникать логические ошибки, такие как "Trying to get non-existing mark". [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлена пересборка текстовых индексов при слияниях с TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлена слишком строгая валидация препроцессора текстового индекса. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
  * Удалена поддержка функций с отрицанием (`notEquals`, `notLike`, `notIn`) в анализе текстового индекса. Эти функции в любом случае не позволяли пропускать гранулы, поэтому их анализ только создавал лишние накладные расходы. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлено исключение `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)).
  * Исправлено чтение текстового индекса в таблице с существующими легковесными удалениями и политиками доступа к строкам. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлен анализ предикатов с функцией `IN` текстовым индексом с препроцессором, а также исправлена коллизия искомых токенов, которая могла приводить к некорректным результатам. [#99755](https://github.com/ClickHouse/ClickHouse/pull/99755) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлено некорректное использование текстового индекса с функциями `startsWith` и `endsWith` для токенизаторов, не поддерживающих сопоставление подстрок (`array`, `splitByString`). Ранее такие токенизаторы могли незаметно выдавать неверные результаты. [#100151](https://github.com/ClickHouse/ClickHouse/pull/100151) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлен редкий сбой, возникавший, когда при построении текстового индекса выбрасывалось исключение "Memory Limit". [#100213](https://github.com/ClickHouse/ClickHouse/pull/100213) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлены ошибки "Not-ready Set is passed as the second argument", возникавшие при анализе текстового индекса, построенного поверх `mapValues`, для предикатов, содержащих выражение `IN`. [#100224](https://github.com/ClickHouse/ClickHouse/pull/100224) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлен сбой при использовании текстового поискового индекса с выражением `IN`, содержащим кортежный подзапрос, например `WHERE (id, str) IN (SELECT (id, str) FROM ...)`, а также в случаях, когда число столбцов в подзапросе не совпадало с кортежем в левой части `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
  * Токенизатор `splitByString` теперь отклоняет пустые строки-разделители. [#101928](https://github.com/ClickHouse/ClickHouse/pull/101928) ([Robert Schulze](https://github.com/rschu1ze)).
  * Исправлено: токенизатор `sparseGrams` генерировал токены длиннее заданной максимальной длины (из-за жёстко заданного `+2` в реализации). [#101934](https://github.com/ClickHouse/ClickHouse/pull/101934) ([Elmi Ahmadov](https://github.com/ahmadov)).
  * Исправлено исключение при выполнении запросов к таблицам `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)).
  * Исправлено поведение `hasToken`/`hasTokenOrNull` со строками поиска, состоящими только из разделителей (например, `'()'`, `'!!!'`), в столбцах с текстовым индексом: ранее индекс молча пропускал все гранулы вместо того, чтобы генерировать `BAD_ARGUMENTS` (для `hasToken`) или возвращать `NULL` (для `hasTokenOrNull`). [#102544](https://github.com/ClickHouse/ClickHouse/pull/102544) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
  * Настройки полнотекстового индекса (`enable_full_text_index`, `allow_experimental_full_text_index`, `use_skip_indexes_on_data_read`) больше не отключаются, когда настройка `compatibility` указывает на версию старее 26.1. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
  * Добавлена поддержка столбцов `ALIAS` в оптимизации прямого чтения из текстового индекса. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).

  ### Исправления для озера данных

  * Исправлена логическая гонка при смене версии снимка в движке таблицы `DeltaLake`, а также убраны избыточные ресурсоемкие перезагрузки снимков. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлены исключение `DUPLICATE_COLUMN` и незаметное появление NULL при чтении таблиц Delta Lake, использующих режим сопоставления столбцов "name" со struct-полями, имена которых содержат точки. [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
  * Исправлена ошибка при использовании 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)).
  * Создание, Attach и обновление локальных таблиц озера данных вне пользовательских путей теперь запрещены; это проверяется при создании и обновлении `IDataLakeMetadata`. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
  * Исправлено чтение Iceberg BigLake: учетные данные ADC теперь передаются в GCS S3 client (что устраняет ошибки 403), учетные данные OAuth2 перед отправкой URL-кодируются, а обход пространства имен больше не прерывается на HTTP 400 от BigLake. [#98998](https://github.com/ClickHouse/ClickHouse/pull/98998) ([Nikita Fomichev](https://github.com/fm4v)).
  * Исправлена ошибка выхода за границы при выполнении запроса только к виртуальным столбцам из таблицы Iceberg с данными Avro. [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
  * Исправлен сбой в `ALTER TABLE ... REMOVE SETTINGS` для движка таблицы Iceberg. [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
  * Исправлен очень редкий сбой, возникавший, когда таблица Iceberg содержит файлы смешанных форматов (ORC и Parquet). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
  * Исправлен сбой (разыменование нулевого указателя) при выполнении `ALTER TABLE ... MODIFY COLUMN ... COMMENT` для таблиц Iceberg. [#99838](https://github.com/ClickHouse/ClickHouse/pull/99838) ([Desel72](https://github.com/Desel72)).
  * ClickHouse теперь корректно обрабатывает таблицы в стиле Spark (с полным абсолютным путем для каждого файла или относительным путем к общему пути таблицы). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
  * Исправлено исключение, возникавшее, когда настройка пути к файлу метаданных Iceberg содержала null-байт. [#100283](https://github.com/ClickHouse/ClickHouse/pull/100283) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена ошибка copy-paste, из-за которой `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)).
  * Исправлена logical error в отсортированных таблицах Iceberg во время мутаций. [#100499](https://github.com/ClickHouse/ClickHouse/pull/100499) ([alesapin](https://github.com/alesapin)).
  * Исправлена работа Polaris catalog с Azure: начиная с 25.12 каталог добавлял бакет в начало пути. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Исправлено исключение `Logical error: 'partitions_count > 0'`, возникавшее при последовательном выполнении `ALTER TABLE UPDATE` для партиционированной таблицы Iceberg. [#101278](https://github.com/ClickHouse/ClickHouse/pull/101278) ([Desel72](https://github.com/Desel72)).
  * Исправлена операция `insert-select` из кластера Delta Lake с ReplicatedMergeTree. [#101299](https://github.com/ClickHouse/ClickHouse/pull/101299) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Теперь генерируется ошибка, если настройки `delta_lake_snapshot_version` или версии CDF используются без включенного DeltaKernel, вместо того чтобы молча возвращать неверные данные. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
  * Исправлена ошибка, из-за которой цикл повторных попыток Iceberg `INSERT` завершался сбоем, когда таблица была создана с `iceberg_metadata_file_path`, а целевая версия metadata уже существовала. [#101548](https://github.com/ClickHouse/ClickHouse/pull/101548) ([Groene AI](https://github.com/groeneai)).
  * Исправлено падение сервера (`LOGICAL_ERROR`) при выборке из materialized view на основе движка таблицы IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([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)).
  * В `system.delta_lake_metadata_log` и `system.iceberg_metadata_log` добавлен отсутствующий столбец `hostname`. [#102162](https://github.com/ClickHouse/ClickHouse/pull/102162) ([Michael Russell](https://github.com/Crazybus)).
  * Исправление в CoalescingMergeTree для типа Array. [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).

  ### Исправления S3/Azure/объектного хранилища

  * Исправлено исключение в `CachedOnDiskReadBufferFromFile::readBigAt`. [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлен сбой, из-за которого при запросе файлов по glob-шаблону (например, `file('dir/**', 'LineAsString')`) возникало необрабатываемое исключение файловой системы, если каталог содержал висячую символическую ссылку. Теперь такие ссылки молча пропускаются. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
  * Исправлено чрезмерное использование памяти (\~514 MiB) при автоопределении формата во время чтения данных не в формате Arrow (например, JSON из `url()` или `file()` без явно указанного формата), вызванное тем, что считыватель ArrowStream ошибочно интерпретировал первые байты как огромную длину metadata. [#98893](https://github.com/ClickHouse/ClickHouse/pull/98893) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Исправлено состояние гонки, которое могло вызывать исключение "ReadBuffer is canceled" в запросах, использующих `urlCluster` или аналогичные cluster table functions. [#98955](https://github.com/ClickHouse/ClickHouse/pull/98955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено вводящее в заблуждение сообщение "inflate failed: buffer error" при чтении несуществующих сжатых файлов через table function `url()` с glob-шаблонами. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлены N+1 вызовов `HeadObject` для S3 glob-шаблонов с раскрытием фигурных скобок. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Исправлены случаи, когда числа с ведущими нулями в пути hive partitioning вызывали ошибки. [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлено некорректное seek в `AsynchronousReadBufferFromFileDescriptor` с `O_DIRECT`. [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлена ошибка, из-за которой ClickHouse мог пропускать файлы, если в ответе на HEAD-запрос отсутствовал header `Content-Length` (например, из-за декомпрессионного транскодирования в GCS). [#99971](https://github.com/ClickHouse/ClickHouse/pull/99971) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Сервер больше не завершает запуск с ошибкой, если настроен диск Azure Blob Storage, но конечная точка временно недоступна (например, из-за сбоя DNS). [#100701](https://github.com/ClickHouse/ClickHouse/pull/100701) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлен segfault в `s3Cluster` и distributed queries из-за use-after-free в пуле соединений. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Исправлено исключение, выходившее из деструктора S3 `Client::~Client` и приводившее к завершению сервера. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
  * Исправлено некорректное логирование хоста и порта при повторном подключении. [#102280](https://github.com/ClickHouse/ClickHouse/pull/102280) ([Grant Holly](https://github.com/grantholly-clickhouse)).
  * Исправлено исключение сервера в ClusterDiscovery, когда статический кластер (определённый в config) временно не имел активных узлов. [#102661](https://github.com/ClickHouse/ClickHouse/pull/102661) ([Kseniia Sumarokova](https://github.com/kssenii)).

  ### Исправления S3Queue

  * S3Queue: исправлено срабатывание assert после потери соединения с ZooKeeper при успешном коммите. [#100210](https://github.com/ClickHouse/ClickHouse/pull/100210) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлен перепутанный текст описания для столбца `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)).

  ### Исправления в области безопасности и управления доступом

  * Табличная функция `loop` напрямую вызывала `inner_storage->read()`, обходя слой интерпретатора, где применяются политики на уровне строк, привилегии на уровне столбцов и другие проверки безопасности. Это позволяло пользователю, ограниченному политиками на уровне строк, читать все строки через `loop(table)`. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
  * Добавлены проверки `READ ON FILE` для скалярной `file()` и `DESCRIBE TABLE file()`. [#98115](https://github.com/ClickHouse/ClickHouse/pull/98115) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Добавлена поддержка учётных данных в base64 без padding в HTTP Basic Auth. Некоторые HTTP-клиенты опускают завершающие символы заполнения `=` в заголовке `Authorization: Basic`, что ранее приводило к сбоям аутентификации. [#98392](https://github.com/ClickHouse/ClickHouse/pull/98392) ([Amos Bird](https://github.com/amosbird)).
  * Исправлен обход RBAC, позволявший пользователям выполнять `DESCRIBE` для любой таблицы через `remote()`, `remoteSecure()`, `cluster()` или `clusterAllReplicas()`, указывающие на localhost, без привилегии `SHOW_COLUMNS`. [#98669](https://github.com/ClickHouse/ClickHouse/pull/98669) ([pufit](https://github.com/pufit)).
  * Исправлена проблема, из-за которой в `system.grants` отсутствовали параметры регулярных выражений для grant `URL` и `S3` в столбце `access_object`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
  * Исправлен обход 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)).
  * Ограничения настроек теперь принудительно применяются в 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)).
  * Учётные данные в строках подключения JDBC, ODBC и NATS теперь маскируются в журнале запросов и выводе `SHOW CREATE`. Для строк подключения в формате URI маскируется только часть с паролем. Настройка `nats_token` теперь тоже маскируется. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Запрещено читать учётные данные Google из локального файла, поскольку это небезопасно: зная путь к файлу, можно было прочитать и другие учётные данные. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Исправлено поведение источника словаря MySQL, который обходил `RemoteHostFilter` для встроенных DDL-параметров. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Исправлен `system.completions`: теперь базы данных, таблицы и столбцы корректно фильтруются по правам доступа во всех комбинациях grant: на уровне таблицы, базы данных и с `revoke` на уровне столбца. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * `query_id` в HTTP-обработчике теперь очищается, чтобы предотвратить CRLF-инъекцию в заголовки ответа через заголовок `X-ClickHouse-Query-Id`. [#100500](https://github.com/ClickHouse/ClickHouse/pull/100500) ([Pablo Marcos](https://github.com/pamarcos)).
  * Некоторые каталоги могли показывать секретные данные в разделе `SETTINGS` вывода `SELECT * FROM system.databases`. Теперь это исключено. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Политики на уровне строк не передавались от дочерних планировщиков родительскому планировщику для журналирования, поэтому отсутствовали в `query_log` для представлений, подзапросов и операций `INSERT SELECT`. Теперь для журналирования они сохраняются в `QueryAccessInfo`. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).

  ### Исправления резервного копирования и восстановления

  * Исправлено: `max_execution_time` не применялся при резервном копировании/восстановлении. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлено Исключение `ReadBuffer is canceled. Can't read from it.` при операциях резервного копирования/восстановления с использованием zip-архивов. [#100400](https://github.com/ClickHouse/ClickHouse/pull/100400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Добавлена проверка путей записей файлов в метаданных резервной копии, чтобы отклонять обход путей, абсолютные пути и пустые имена во время `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
  * Исправлены форматирование и клонирование AST для `BACKUP FROM SNAPSHOT`. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).

  ### Исправления ClickHouse Keeper

  * Исправлена гонка данных в клиенте ZooKeeper между потоком отправки и потоком получения. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
  * Исправлена потеря данных в Keeper после перезапуска при использовании Azure Blob Storage с метаданными `s3_plain` для хранения логов. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
  * Для ответов с наблюдением в `aggregated_zookeeper_log` теперь задаётся компонент `Watch` вместо того, чтобы оставаться пустым. [#98202](https://github.com/ClickHouse/ClickHouse/pull/98202) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлена проблема, из-за которой ClickHouse Keeper отключал Java-клиенты ZooKeeper после запроса `addWatch`. Java-клиент ожидает 4-байтное тело `ErrorResponse`, но Keeper отправлял пустое тело, что вызывало `EOFException` и разрыв сеанса. [#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`. [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлена проблема, из-за которой защищённый Raft-порт Keeper игнорировал `cipherList` и `dhParamsFile` из конфигурации `openSSL`. [#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-сообщениями. [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлена проблема, из-за которой TCP-соединения Keeper мешали корректному завершению работы сервера, не реагируя на сигнал остановки. [#98525](https://github.com/ClickHouse/ClickHouse/pull/98525) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен отладочный assert в `DDLWorker`, вызванный устаревшим `first_failed_task_name` после удаления записи ZooKeeper во время восстановления при повторной инициализации. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлен один из сценариев сбоя Keeper. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
  * Исправлена ошибка в Keeper, из-за которой запрос на чтение мог зависнуть (что приводило к тайм-ауту сеанса), если в тот же сервер в крайне неудачный момент закрывался другой, не связанный с ним сеанс. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
  * Исправлен segfault в NuRaft из-за состояния гонки. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
  * Исправлена ошибка, из-за которой `CREATE TABLE` для `KeeperMap` завершался с ошибкой "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)).
  * Исправлена потеря реестра UDF, если сеанс ZooKeeper истекал во время периодического обновления — все пользовательские функции могли становиться недоступными, пока не завершится успешное полное обновление. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
  * Исправлен сбой при обновлении UDF, вызванный тем, что `ZooKeeperRetriesControl` выполнял повторные попытки с устаревшим (истёкшим) сеансом ZooKeeper без его продления. [#102059](https://github.com/ClickHouse/ClickHouse/pull/102059) ([Nikita Fomichev](https://github.com/fm4v)).

  ### Исправления сбоев и улучшения стабильности

  * Исправлен сбой в функциях диалекта Kusto `bin()`, `bin_at()`, `extract()` и `indexof()`, возникавший при передаче пустых аргументов. [#95736](https://github.com/ClickHouse/ClickHouse/pull/95736) ([NeedmeFordev](https://github.com/spider-yamet)).
  * Исправлен сбой сервера/assert в `mapContainsKey`/`mapContainsKeyLike` с индексом пропуска данных `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
  * Исправлен сбой сервера (`std::terminate`), вызванный неперехваченным исключением в деструкторе пула HTTP-соединений, когда при высоком параллелизме достигался жёсткий лимит группы соединений. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлен выход за границы в `ColumnConst::getExtremes`, который мог приводить к сбою при включённом `extremes = 1`. [#98263](https://github.com/ClickHouse/ClickHouse/pull/98263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Добавлена проверка повреждённых данных при десериализации `DDSketch`, чтобы предотвратить сегфолты, исключения, бесконечные циклы и OOM при чтении повреждённых состояний агрегатной функции `quantilesDD`. [#98284](https://github.com/ClickHouse/ClickHouse/pull/98284) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено редкое исключение в исполнителе конвейера, которое могло проявляться как `Received signal 6` (в отладочных сборках), когда разворачивание конвейера происходило одновременно с отменой запроса. [#98428](https://github.com/ClickHouse/ClickHouse/pull/98428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено разыменование нулевого указателя в `dictGetOrDefault`, когда аргумент ключа имел тип `Nullable`. [#98460](https://github.com/ClickHouse/ClickHouse/pull/98460) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена взаимная блокировка конвейера при использовании `sort_overflow_mode = 'break'` вместе с оконными функциями. [#98543](https://github.com/ClickHouse/ClickHouse/pull/98543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен сбой из-за разыменования нулевого указателя при работе с системными таблицами, созданными после создания снимка таблиц в `IDatabaseTablesIterator::table()`, если затем во время последующей итерации таблицы изменялись в другом потоке. [#98792](https://github.com/ClickHouse/ClickHouse/pull/98792) ([Grant Holly](https://github.com/grantholly-clickhouse)).
  * Исправлен дрейф учёта памяти, вызванный тем, что неудачные выделения памяти не откатывались, неопределённым поведением `nallocx(0)` и ошибкой на единицу при отслеживании глобального пика. Учёт также расширен на ring-буферы `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлен сбой сервера (`std::terminate`) при выполнении `ALTER TABLE ... DROP PART` для patch part после изменения схемы (например, ADD COLUMN). [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
  * Исправлен сбой сервера, который мог возникать, если во время чтения с кэшированного диска генерировалось исключение о превышении лимита памяти. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
  * Исправлен сбой, возникавший из-за исключения о превышении лимита памяти во время применения patch part. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлен сбой при использовании таблицы Buffer с `SAMPLE`, если целевая таблица это не поддерживает. [#99141](https://github.com/ClickHouse/ClickHouse/pull/99141) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Исправлена ошибка heap-use-after-free, возникавшая, когда таблица удалялась параллельно с выполняющимся запросом на чтение. [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлены heap-buffer-overflow в `CompressionCodecT64` и аварийное завершение процесса в `CompressionCodecMultiple` при распаковке некорректных сжатых данных. Теперь кодеки генерируют исключение вместо аварийного завершения. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul Nair](https://github.com/motsc)).
  * Исправлен бесконечный цикл при чтении файлов формата `Npy` с отрицательными dimensions shape. [#99812](https://github.com/ClickHouse/ClickHouse/pull/99812) ([Desel72](https://github.com/Desel72)).
  * Исправлен global-buffer-overflow в функции `CRC32` на аргументах `FixedString` при вычислении на нуле строк во время вычисления header плана запроса. [#99835](https://github.com/ClickHouse/ClickHouse/pull/99835) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен сбой из-за проверки assert в `sipHash128Keyed` (и аналогичных keyed hash functions), когда аргумент данных представляет собой Map с ключами-массивами или другими вложенными типами массивов. [#99921](https://github.com/ClickHouse/ClickHouse/pull/99921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен сбой проверки assert при умножении `NumericIndexedVector` состояний агрегатной функции на чётную целочисленную константу, вызванный self-XOR в aliased Roaring bitmap в `pointwiseAddInplace`. [#99976](https://github.com/ClickHouse/ClickHouse/pull/99976) ([Desel72](https://github.com/Desel72)).
  * Исправлено разыменование nullptr в ридере Parquet, когда путь filter-in-decoder встречает отфильтрованные страницы. [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен локальный сбой сервера, когда `CREATE DICTIONARY` содержит определение со значением-списком, включающим несуществующую функцию. [#100036](https://github.com/ClickHouse/ClickHouse/pull/100036) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
  * Исправлен SIGSEGV при чтении патч-частей после `ALTER MODIFY COLUMN`. [#100107](https://github.com/ClickHouse/ClickHouse/pull/100107) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Исправлено использование неинициализированного значения в `StringSearcher.h`. [#100225](https://github.com/ClickHouse/ClickHouse/pull/100225) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Исправлен сбой сервера (ошибка assert) при использовании параметрических агрегатных функций с комбинатором Array и аргументами NULL, например `quantileIfArrayArray(0.5)([[NULL]], [[1]])`. [#100679](https://github.com/ClickHouse/ClickHouse/pull/100679) ([nerve-bot](https://github.com/nerve-bot)).
  * Исправлен heap-buffer-overflow в usearch `sorted_buffer_gt::insert()`, который мог привести к сбою или незаметному повреждению памяти во время vector similarity search. [#100537](https://github.com/ClickHouse/ClickHouse/pull/100537) ([Dustin Healy](https://github.com/dustinhealy)).
  * Исправлен сбой сервера (logical error "Unexpected return type from \_\_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)).
  * Исправлен segfault из-за разыменования нулевого указателя при загрузке словарей во время остановки сервера. [#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)).
  * Исправлен сбой при построении словаря Polygon из таблицы семейства `MergeTree`, использующей сериализацию разреженных столбцов. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлен сбой (`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)).
  * Исправлен сбой сервера (`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 в пути записи файлового кэша, которая могла приводить к чтению из уже освобожденной памяти при логировании завершенных сегментов файла. [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой сервера с сообщением "Trying to attach external table to a ready set without explicit elements", возникавший, когда распределенный анализ индексов сталкивался с предикатом `GLOBAL IN`, набор для которого был построен без явных элементов. [#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)).
  * Исправлен сбой сервера (`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)).
  * Исправлено UB в `mergeTreeAnalyzeIndexes()` в случае недопустимого аргумента `optimizations`. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
  * Исправлен сбой сервера (Logical error: "Variant ... is empty") при одновременном чтении запросом столбца Tuple, содержащего тип Dynamic Map, и его подстолбца. [#101448](https://github.com/ClickHouse/ClickHouse/pull/101448) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой `LOGICAL_ERROR` с сообщением "Current component is empty" при запросе к `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()`, когда fuzzer генерирует некорректный AST типа Dynamic. [#101464](https://github.com/ClickHouse/ClickHouse/pull/101464) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой (`LOGICAL_ERROR`: "ColumnUnique can't contain null values") при сравнении столбца `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)).
  * Исправлен сбой use-after-free в планировщике аренды CPU, когда таймер ожидания живет дольше, чем воркер, на `ProfileEvents::Counters` которого он ссылается. [#101761](https://github.com/ClickHouse/ClickHouse/pull/101761) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлена ошибка use-after-scope при параллельной десериализации динамических paths типа `Object`, которая могла вызывать сбои при чтении таблиц с большим количеством таких paths. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлен SIGSEGV в `MergeTreeDataPartWriterWide::cancel`, когда конструктор stream генерирует исключение во время `addStreams`, оставляя null-элемент в `column_streams`. [#101936](https://github.com/ClickHouse/ClickHouse/pull/101936) ([Antonio Andelic](https://github.com/antonio2368)).
  * Исправлена segmentation fault в мутациях на материализованных столбцах без expression. [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
  * Исправлен segfault (или `LOGICAL_ERROR` в debug-сборках) при чтении файлов Parquet с включенным push-down для bloom filter и условиями равенства/неравенства в `WHERE`, вызванный выходом за границы памяти в Parquet prefetcher. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
  * Исправлено чтение за пределами границ в string search functions (`countSubstrings`, `position` и т. д.) при поиске needle, состоящей только из null-байтов. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлено чтение за пределами границ в `printf` с завершающим `%`. [#102472](https://github.com/ClickHouse/ClickHouse/pull/102472) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлен сбой `LOGICAL_ERROR` "Unexpected number of rows in column subchunk" в native Parquet V3 reader при чтении столбцов с типом Nullable с фильтром `WHERE`. [#102628](https://github.com/ClickHouse/ClickHouse/pull/102628) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой сервера (SIGSEGV) при чтении файлов Avro с рекурсивными схемами, содержащими циклические символьные ссылки на типы. Такие схемы теперь обнаруживаются и отклоняются с понятным сообщением об ошибке. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой сервера (assertion `LOGICAL_ERROR`), когда функция для столбца `Variant` достигает memory limit или сталкивается с другим исключением, не связанным с преобразованием типов, во время приведения результата в `FunctionVariantAdaptor`. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой сервера в debug/sanitizer-сборках, когда `std::length_error` генерируется во время schema inference. [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
  * Исправлен сбой при использовании представления с `WHERE`, где внутренний запрос возвращает столбцы с типами, отличающимися от metadata представления (например, `Nullable` из `LEFT JOIN` с `join_use_nulls`). [#102085](https://github.com/ClickHouse/ClickHouse/pull/102085) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

  ### Другие исправления ошибок

  * Исправлена ошибка, из-за которой явные настройки, отправленные вместе с `compatibility` в одном запросе, могли незаметно игнорироваться, если их значение совпадало со значением по умолчанию на сервере. [#97078](https://github.com/ClickHouse/ClickHouse/pull/97078) ([Raufs Dunamalijevs](https://github.com/rienath)).
  * Исправлена ошибка, из-за которой клиент сообщал о `NETWORK_ERROR` вместо фактической ошибки разбора (с правильным номером строки), когда `INSERT` с параллельным разбором сталкивался с некорректными данными. [#97339](https://github.com/ClickHouse/ClickHouse/pull/97339) ([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)).
  * Исправлена logical error в запросе политики маскирования данных с `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
  * Исправлено некорректное отсечение партиций при использовании доэпохального `DateTime64` с функцией `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлена ошибка `Cannot schedule a file` `LOGICAL_ERROR` при `INSERT` в `Distributed`, вызванная состоянием гонки между `DROP` и `INSERT`. [#97822](https://github.com/ClickHouse/ClickHouse/pull/97822) ([Azat Khuzhin](https://github.com/azat)).
  * Исправлена logical error "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)).
  * 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)).
  * Исправлена ошибка, из-за которой источник словаря `MongoDB` не работал с named collections. [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
  * Запрещено удалять столбец, если его подстолбцы используются в выражениях default/alias других столбцов; кроме того, для выражений default в `ALTER DROP COLUMN` теперь используется analyzer. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
  * Все `DB::Exception` из `PocoHTTPClient::makeRequestInternalImpl` теперь считаются неповторяемыми, включая `HTTP_CONNECTION_LIMIT_REACHED`. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
  * Исправлены две ошибки в JIT-компиляции выражений: ошибка копирования-вставки в проверке типов `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)).
  * Исправлено Исключение "Inconsistent KeyCondition behavior" в отладочных сборках, возникавшее, когда первичный ключ содержал значения NaN типа Float: `accurateLess` и `accurateEquals` теперь обрабатывают NaN в соответствии с порядком сортировки ClickHouse. [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлен `windowFunnel` с `strict_deduplication`, который возвращал некорректный уровень при обнаружении дублирующегося события. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash](https://github.com/Onyx2406)).
  * Сделано так, чтобы записи `system.trace_log` для автоматической перезагрузки словарей ClickHouse имели непустой Query id. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Исправлено поведение, при котором `SYSTEM START REPLICATED VIEW` не пробуждал задачу обновления. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
  * Исправлено поведение `WITH FILL STALENESS`, из-за которого создавались лишние заполненные строки при чтении данных в несколько фрагментов (например, при небольшом `index_granularity`). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено падение при обфускации запросов для идентификаторов, начинающихся с заглавной буквы, например `Ab`. [#101450](https://github.com/ClickHouse/ClickHouse/pull/101450) ([Xuewei Wang](https://github.com/Sallery-X)).
  * Исправлено игнорирование `TABLE_UUID_MISMATCH` в пути кода без analyzer. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
  * Исправлено поведение `clickhouse format --obfuscate`, из-за которого создавался некорректный SQL при обфускации типов индекса пропуска данных, имён кодеков сжатия, имён движков баз данных и определений структуры/источника словаря. [#99260](https://github.com/ClickHouse/ClickHouse/pull/99260) ([Raúl Marín](https://github.com/Algunenano)).
  * Проверка изменений настроек добавлена в CREATE-запросы, когда сам движок тоже поддерживает настройки. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Исправлено поведение, при котором `insert_deduplication_token` молча игнорировался для запросов `INSERT SELECT` без `ORDER BY ALL`. Теперь для включения дедупликации достаточно указать `insert_deduplication_token` независимо от `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
  * Обработка откладывается до завершения загрузки всех таблиц на сервере. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
  * Исправлен разбор shell-подобных кавычек в аргументах табличной функции `executable`. [#99794](https://github.com/ClickHouse/ClickHouse/pull/99794) ([Nikita Semenov](https://github.com/leftmain)).
  * Исправлено поведение, при котором запросы async insert сообщали нулевые значения `written_rows`, `read_rows` и `result_rows` в `query_log` и выводе клиента. [#99879](https://github.com/ClickHouse/ClickHouse/pull/99879) ([Sema Checherinda](https://github.com/CheSema)).
  * Исправлено падение `INSERT` с `VALUES`, если после данных на следующей строке следовал завершающий SQL-комментарий (`--` или `/* */`). Теперь комментарий пропускается, а не разбирается как ещё одна строка. [#100016](https://github.com/ClickHouse/ClickHouse/pull/100016) ([Pratima Patel](https://github.com/pratimapatel2008)).
  * Исправлено Исключение в `arrayRemove` при сравнении Tuple с NULL-компонентами. [#100017](https://github.com/ClickHouse/ClickHouse/pull/100017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлена обработка отрицательных значений внутри `NumericIndexedVectorDataBSI`. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
  * Исправлена работа табличной функции `primes`: в некоторых случаях она некорректно учитывала `max_rows_to_read`, особенно при наличии offset и step. [#100199](https://github.com/ClickHouse/ClickHouse/pull/100199) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Пользователи больше не видят `NATURAL CROSS JOIN` при запросе AST для запроса с natural join, который переписывается в `CROSS JOIN`. [#100223](https://github.com/ClickHouse/ClickHouse/pull/100223) ([Peter Nguyen](https://github.com/petern48)).
  * Несколько небольших изменений в функциях: функции h3 теперь лучше проверяют границы; `readWKB` проверяет ограничения размера (новая настройка — `max_wkb_geometry_elements`); функции генерации случайных чисел ограничивают максимальное число итераций. [#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)).
  * Исправлено Исключение `LOGICAL_ERROR` в `estimateCompressionRatio`, возникавшее, когда параметр `block_size_bytes` был чрезвычайно большим. [#100298](https://github.com/ClickHouse/ClickHouse/pull/100298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Исправлено бесконечное зависание `DROP TABLE` для таблиц на Kafka engine, когда consumers застревали в состоянии перебалансировки после ошибки heartbeat. [#100388](https://github.com/ClickHouse/ClickHouse/pull/100388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Добавлена проверка размерностей shape формата Npy на соответствие размеру файла и ограничениям overflow, чтобы предотвратить отказ в обслуживании из-за специально созданных файлов `.npy`. Также теперь отклоняются пустые shape, а объём памяти на строку ограничен 2 GiB. [#100625](https://github.com/ClickHouse/ClickHouse/pull/100625) ([Raúl Marín](https://github.com/Algunenano)).
  * Исправлена ситуация, при которой `session_timezone` игнорировался при разборе значений `DateTime` во время async inserts (TCP) и всех вставок через HTTP. [#100647](https://github.com/ClickHouse/ClickHouse/pull/100647) ([Sema Checherinda](https://github.com/CheSema)).
  * `StorageRabbitMQ::shutdown` сделан идемпотентным, а также добавлены защитные проверки на null, так как теперь он вызывается дважды (в `StreamingStorageRegistry` и `DatabaseCatalog`). [#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)).
  * Исправлен неработавший синтаксис `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)).
  * Исправлен segfault, при котором `SerializationInfoTuple::add` выполнял `assert_cast` для обычной ссылки `SerializationInfo` во время слияния частей после того, как `ALTER MODIFY COLUMN` изменял столбец с типа, отличного от Tuple, на Tuple. [#100509](https://github.com/ClickHouse/ClickHouse/pull/100509) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Исправлено Исключение "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)).
  * Исправлено: `EXECUTE AS` игнорировал секции `FORMAT` и `INTO OUTFILE`, указанные в запросе. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
  * Исправлено несогласованное форматирование AST для `SAMPLE` с `OFFSET` на уровне запроса. [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
  * Исправлены ошибки "Целевая таблица не существует" для materialized view с внутренними таблицами при асинхронном запуске, вызванные неправильным порядком инициализации зависимостей. [#100946](https://github.com/ClickHouse/ClickHouse/pull/100946) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Исправлено исключение в `optimizeLazyMaterialization`, возникавшее при использовании проекции с PREWHERE вместе с `ORDER BY ... LIMIT`. [#101115](https://github.com/ClickHouse/ClickHouse/pull/101115) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлено некорректное сообщение об ошибке при вызове `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`. [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
  * Исправлено поведение, при котором `CREATE TABLE ... AS merge()` игнорировал явный список столбцов и вместо этого автоматически определял столбцы по исходным таблицам, что приводило к ошибкам `NOT_FOUND_COLUMN_IN_BLOCK`, когда `merge_table_max_tables_to_look_for_schema_inference` был достаточно мал, а схемы исходных таблиц различались. [#101663](https://github.com/ClickHouse/ClickHouse/pull/101663) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Исправлено создание словаря `RANGE_HASHED`, которое молча принимало несуществующий атрибут диапазона `MAX` и использовало неверную конфигурацию типов, когда атрибуты минимального и максимального диапазона имели разные типы. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
  * Исправлены ошибки в функциях `arrayLevenshteinDistanceWeighted` и `arraySimilarity`. [#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)).
  * Исправлено ложноотрицательное срабатывание `shouldPatchFunction` в `SYSTEM INSTRUMENT ADD`, когда строка поиска впервые появлялась внутри аргумента шаблона в demangled-имени символа. [#101885](https://github.com/ClickHouse/ClickHouse/pull/101885) ([Pablo Marcos](https://github.com/pamarcos)).
  * Исправлено описание `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)).
  * Исправлено неопределённое поведение при разборе пакетов запроса собственного протокола с недопустимыми значениями `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)).
  * Исправлены случаи, когда `Time` с отрицательными значениями возвращал неверный результат при сравнении с `DateTime`. [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Исправлено отсутствие пробелов при форматировании команды unlock snapshot. [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
  * Исправлен сбой инициализации alias-таблиц без целевой таблицы на новой реплике в Database Replicated. [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Обычные `INSERT`-операции без materialized views больше не запрашивают чрезмерное количество слотов и потоков `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)).
  * Исправлен некорректный тип аргумента, указывавшийся в сообщениях об ошибках функций поиска в строках (например, `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)).
</Accordion>
