Перейти к основному содержанию

Изменения, нарушающие обратную совместимость

Изменения форматов данных и схем

  • Изменено значение по умолчанию настройки schema_inference_make_columns_nullable: теперь она учитывает информацию о Nullable столбцов из метаданных Parquet/ORC/Arrow вместо того, чтобы делать все столбцы Nullable. Для текстовых форматов изменений нет. #71499 (Michael Kolupaev).

Изменения в запросах и функциях

  • Кэш результатов запросов теперь игнорирует настройку log_comment, поэтому изменение только log_comment в запросе больше не приводит к промаху кэша. Есть небольшая вероятность, что пользователи намеренно сегментировали кэш, изменяя log_comment. Это изменение меняет такое поведение и поэтому нарушает обратную совместимость. Для этой цели используйте настройку query_cache_tag. #79878 (filimonov).
  • В предыдущих версиях запросы с табличными функциями, названными так же, как функции-реализации операторов, форматировались непоследовательно. Закрывает #81601. Закрывает #81977. Закрывает #82834. Закрывает #82835. Запросы EXPLAIN SYNTAX не будут форматировать операторы — новое поведение лучше отражает цель объяснения синтаксиса. clickhouse-format, formatQuery и подобные инструменты не будут форматировать функции как операторы, если в запросе они использовались в функциональной форме. #82825 (Alexey Milovidov).
  • Отключены бессмысленные бинарные операции с IPv4/IPv6: сложение/вычитание IPv4/IPv6 с нецелочисленным типом теперь запрещено. Ранее это позволяло выполнять операции с типами с плавающей точкой и приводило к логическим ошибкам с некоторыми другими типами (например, DateTime). #86336 (Raúl Marín).
  • Функции searchAny и searchAll переименованы в hasAnyTokens и hasAllTokens для большей согласованности с существующей функцией hasToken. #88109 (Robert Schulze).

Изменения типов данных

  • Запрещено использовать тип Dynamic в ключах JOIN. Это может приводить к неожиданным результатам при сравнении типа Dynamic с типом, отличным от Dynamic. Лучше привести столбец типа Dynamic к нужному типу. #86358 (Pavel Kruglov).

Изменения в хранилище и индексах

  • Настройка allow_dynamic_metadata_for_data_lakes объявлена устаревшей. Теперь все таблицы Iceberg перед выполнением каждого запроса пытаются получить из хранилища актуальную схему таблицы. #86366 (Daniil Ivanik).
  • Инвертированный текстовый индекс был полностью переработан для масштабируемой работы с наборами данных, не помещающимися в оперативную память. #86485 (Anton Popov).
  • Настройка сервера storage_metadata_write_full_object_key теперь включена по умолчанию, и отключить ее больше нельзя. #87335 (Sema Checherinda).
  • cache_hits_threshold удален из файлового кэша. cache_hits_threshold был добавлен до появления политики кэша SLRU, и поддерживать оба варианта больше не требуется. #88344 (Kseniia Sumarokova).

Изменения настроек и конфигурации

  • Значение replicated_deduplication_window_seconds уменьшено с 1 недели до одного часа, чтобы хранить меньше znode в ZooKeeper при низкой скорости вставки. #87414 (Sema Checherinda).
  • Настройка query_plan_use_new_logical_join_step переименована в query_plan_use_logical_join_step. #87679 (Vladimir Cherkasov).
  • Новый синтаксис позволяет сделать параметр токенизатора более гибким. #87997 (Elmi Ahmadov).
  • Два небольших изменения в работе настроек min_free_disk_ratio_to_perform_insert и min_free_disk_bytes_to_perform_insert: для определения того, следует ли отклонить вставку, теперь используются незарезервированные, а не доступные байты. Вероятно, это не слишком важно, если резервы для фоновых слияний и мутаций малы по сравнению с настроенными порогами, но так корректнее. - Не применять эти настройки к системным таблицам. Причина в том, что мы по-прежнему хотим, чтобы таблицы вроде query_log обновлялись. Это очень помогает при отладке. Данные, записываемые в системные таблицы, обычно невелики по сравнению с основными данными, поэтому они смогут продолжать работу значительно дольше при разумном пороге min_free_disk_ratio_to_perform_insert. #88468 (c-end).

Изменения в Keeper

  • Для внутренней репликации Keeper включён асинхронный режим. Keeper сохранит прежнее поведение с возможным повышением производительности. Если вы обновляетесь с версии младше 23.9, вам нужно либо сначала обновиться до 23.9+, а затем до 25.10+. Вы также можете установить keeper_server.coordination_settings.async_replication в 0 перед обновлением и включить его после завершения обновления. #88515 (Antonio Andelic).

Новые возможности

Функции

  • Добавлена функция naiveBayesClassifier для классификации текста с помощью Naive Bayes на основе n-грамм. #78700 (Nihal Z. Miaji).
  • Добавлена функция arrayExcept, которая вычитает один массив из другого, рассматривая их как множества. #82368 (Joanna Hulboj).
  • Добавлена новая функция conv для преобразования чисел между системами счисления; в настоящее время поддерживаются основания от 2 до 36. #83058 (hp).
  • Добавлена агрегатная функция studentTTestOneSample. #85436 (Dylan).
  • Добавлена функция isValidASCII для проверки того, содержит ли строка только ASCII-символы. Закрывает #85377. #85786 (rajat mohan).
  • Добавлены агрегатные функции timeSeriesChangesToGrid и timeSeriesResetsToGrid. Они ведут себя аналогично timeSeriesRateToGrid: принимают параметры начальной временной метки, конечной временной метки, шага и окна ретроспективного просмотра, а также два аргумента для временных меток и значений, но требуют как минимум 1 значение в окне вместо 2. Вычисляют PromQL changes/resets, подсчитывая, сколько раз значение меняется или уменьшается в указанном окне для каждой временной метки во временной сетке, заданной параметрами. Возвращаемый тип — Array(Nullable(Float64)). #86010 (Stephen Chi).
  • Добавлена агрегатная функция quantilePrometheusHistogram, которая принимает в качестве аргументов верхние границы и накопленные значения бакетов гистограммы и выполняет линейную интерполяцию между верхней и нижней границами бакета, в котором находится позиция квантиля. Ведет себя аналогично функции PromQL histogram_quantile() для классических гистограмм. #86294 (Stephen Chi).
  • Добавлены оптимизированные регистронезависимые варианты функций startsWith и endsWith: startsWithCaseInsensitive, endsWithCaseInsensitive, startsWithCaseInsensitiveUTF8 и endsWithCaseInsensitiveUTF8. #87374 (Guang Zhao).

Системные таблицы

  • Добавлена новая системная таблица database_replicas с информацией о репликах базы данных. #83408 (Konstantin Morozov).
  • Добавлена новая таблица system.aggregated_zookeeper_log. Таблица содержит статистику (например, количество операций, среднюю задержку, ошибки) по операциям ZooKeeper, сгруппированную по идентификатору сеанса, родительскому пути и типу операции, и периодически сбрасывается на диск. #85102 (Miсhael Stetsyuk).
  • Добавлена системная таблица iceberg_metadata_log для получения файлов метаданных Iceberg при выполнении операторов SELECT. #86152 (scanhex12).
  • В таблицу system.warnings добавлены предупреждения о CPU и памяти. #86838 (Bharat Nallan).
  • Добавлена системная таблица для файлов метаданных Delta Lake. #87263 (scanhex12).

Движки таблиц и хранилище

  • Поддержка движка таблицы Alias. #76569 (RinChanNOW).
  • Теперь для чтения сообщений можно использовать NATS JetStream, указав новые настройки nats_stream и nats_consumer для движка NATS. #84799 (Dmitry Novikov).
  • Таблицы Iceberg и delta lake с настройкой диска. Это позволяет задавать пользовательские таблицы на существующем диске. Добавлена настройка allowed_disks_for_table_engines, которая позволяет указать, какие диски можно использовать для Iceberg. Пример: CREATE TABLE test ENGINE = Iceberg('path/inside/disk') SETTING datalake_disk_name = '<some_user_disk>'; ### Запись в документации об изменениях, видимых пользователю. #86778 (scanhex12).
  • Добавлена новая настройка таблицы min_level_for_wide_part, которая позволяет указать минимальный уровень part, начиная с которого она будет создаваться как wide part. #88179 (Christoph Wurm).

Iceberg и озера данных

  • Добавлена поддержка выполнения запросов к Apache Paimon в ClickHouse. Эта интеграция позволит пользователям ClickHouse напрямую работать с хранилищем озера данных Paimon. #84423 (JIaQi).
  • ALTER UPDATE для движка таблицы Iceberg. #86059 (scanhex12).

Индексы и статистика

  • Новый разреженный индекс bloom filter sparse_gram, полезный для поиска длинных подстрок. #79985 (scanhex12).
  • Добавлена возможность автоматически создавать статистику для всех подходящих столбцов в таблицах MergeTree. Добавлена табличная настройка auto_statistics_types, в которой хранятся разделённые запятыми типы создаваемой статистики (например, auto_statistics_types = 'minmax, uniq, countmin'). #87241 (Anton Popov).

Возможности SQL и запросов

  • Добавлена поддержка синтаксиса LIMIT BY ALL. Подобно GROUP BY ALL и ORDER BY ALL, LIMIT BY ALL автоматически раскрывается во все неагрегатные выражения из предложения SELECT и использует их как ключи LIMIT BY. Например, SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALL эквивалентно SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, name. Эта возможность упрощает запросы, когда нужно ограничить результат по всем выбранным неагрегатным столбцам без их явного перечисления. Закрывает #59152. #84079 (Surya Kant Ranjan).
  • Одиночное имя настройки в SETTINGS запроса теперь трактуется как значение 1 (например, SELECT ... SETTINGS use_query_cache эквивалентно use_query_cache = 1). #85800 (thraeka).
  • Пользователи теперь могут создавать временные представления с тем же синтаксисом, что и временные таблицы. #86432 (Aly Kafoury).
  • Добавлена поддержка отрицательных LIMIT и OFFSET. Закрывает #28913. #88411 (Nihal Z. Miaji).

Возможности клиента и CLI

  • Доступ к экземплярам ClickHouse Cloud с использованием учетных данных Cloud через --login. #82753 (Krishna Mannem).
  • Добавлена опция --semicolons_inline для форматирования запросов, при котором точки с запятой размещаются в последней строке, а не на новой. #88018 (Jan Rada).

Конфигурация сервера и управление рабочими нагрузками

  • Новые параметры конфигурации: logger.startupLevel и logger.shutdownLevel позволяют соответственно переопределять уровень журналирования при запуске и остановке ClickHouse. #85967 (Lennard Eijsackers).
  • Добавлена возможность задавать определения WORKLOAD и RESOURCE в SQL с помощью раздела конфигурации сервера “resources_and_workloads”. #87430 (Sergei Trifonov).

Системные команды

  • Добавлена команда SYSTEM RECONNECT ZOOKEEPER для принудительного отключения от ZooKeeper и повторного подключения (https://github.com/ClickHouse/ClickHouse/issues/87317). #87318 (Pradeep Chhetri).
  • Ограничено число именованных коллекций с помощью настроек max_named_collection_num_to_warn и max_named_collection_num_to_throw. Добавлены новая метрика NamedCollection и ошибка TOO_MANY_NAMED_COLLECTIONS. #87343 (Pablo Marcos).

Keeper

  • В клиент Keeper добавлены рекурсивные варианты команд cp-cpr и mv-mvr. #88570 (Mikhail Artemenko).

Экспериментальные возможности

  • Функции searchAll и searchAny теперь работают и со столбцами без текстовых данных. В таких случаях они используют токенизатор по умолчанию. #87722 (Jimmy Aguilar Mena).
  • Реализованы тип данных QBit, который хранит векторы в формате bit-sliced, и функция L2DistanceTransposed, которая позволяет выполнять приближённый векторный поиск, где компромисс между точностью и скоростью задаётся параметром. #87922 (Raufs Dunamalijevs).

Повышение производительности

Выполнение запросов и оптимизация

  • Повышена производительность запросов за счёт переработки порядка работы и интеграции кэша условий запроса (QCC) с анализом индексов. Теперь фильтрация в QCC применяется до анализа первичного ключа и индекса пропуска данных, что сокращает объём лишних вычислений индексов. Анализ индексов был расширен для поддержки нескольких фильтров диапазона, а результаты фильтрации теперь сохраняются обратно в QCC. Это значительно ускоряет запросы, в которых анализ индексов занимает основную часть времени выполнения, особенно если они опираются на индексы пропуска данных (например, векторные или инвертированные индексы). #82380 (Amos Bird).
  • Ряд микрооптимизаций для ускорения небольших запросов. #83096 (Raúl Marín).
  • Добавлено сжатие журналов и profile events в собственном протоколе. В кластерах со 100+ репликами profile events в несжатом виде занимают 1..10 МБ/с, а индикатор прогресса медленно обновляется при медленном интернет-соединении. Это закрывает #82533. #83586 (Alexey Milovidov).
  • Улучшена оптимизация PREWHERE для условий вида func(primary_column) = 'xx' и column in (xxx). #85529 (李扬).
  • Исключено полное сканирование для system.tables при фильтрации по uuid (это может быть полезно, если у вас есть только UUID из журналов или путь в ZooKeeper). #88379 (Azat Khuzhin).

Оптимизации JOIN

  • Реализована логика проталкивания вниз дизъюнктивных предикатов JOIN. Пример: в TPC-H Q7 для условия по двум таблицам n1 и n2 вида (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE') мы выделяем отдельные частичные фильтры для каждой таблицы: n1.n_name = 'FRANCE' OR n1.n_name = 'GERMANY' для n1 и n2.n_name = 'GERMANY' OR n2.n_name = 'FRANCE' для n2. #84735 (Yarik Briukhovetskyi).
  • Реализовано переписывание JOIN: 1. Преобразование LEFT ANY JOIN и RIGHT ANY JOIN в SEMI/ANTI JOIN, если условие фильтра всегда ложно для совпавших или несовпавших строк. Эта оптимизация управляется новой настройкой query_plan_convert_any_join_to_semi_or_anti_join. 2. Преобразование FULL ALL JOIN в LEFT ALL или RIGHT ALL JOIN, если условие фильтра всегда ложно для несовпавших строк с одной из сторон. #86028 (Dmitry Novik).
  • Производительность HashJoin немного улучшена в случае LEFT/RIGHT JOIN с большим количеством несовпавших строк. #86312 (Nikita Taranov).
  • Переупорядочивание JOIN теперь использует статистику. Эту возможность можно включить, установив allow_statistics_optimize = 1 и query_plan_optimize_join_order_limit = 10. #86822 (Han Fei).
  • Во время оптимизации JOIN теперь пропускается повторный расчёт статистики hash table во время выполнения. Добавлены новые profile events JoinOptimizeMicroseconds и QueryPlanOptimizeMicroseconds. #87683 (Vladimir Cherkasov).
  • В некоторых случаях AddedColumns::appendFromBlock встраивается, что немного повышает производительность JOIN. #88455 (Nikita Taranov).

Оптимизации String и функций

  • Повышена производительность поиска по строкам с учетом регистра (например, при фильтрации WHERE URL LIKE '%google%') за счет использования библиотеки StringZilla, которая задействует SIMD-инструкции CPU, когда они доступны. #84161 (Raúl Marín).
  • Повышена производительность LIKE с prefix или suffix благодаря новой настройке по умолчанию optimize_rewrite_like_perfect_affix. #85920 (Guang Zhao).
  • Повышена производительность функций tokens, hasAllTokens, hasAnyTokens. #88416 (Anton Popov).

Оптимизации MergeTree и хранилища

  • Добавлена необязательная сериализация подстолбца .size для строковых столбцов верхнего уровня в таблицах MergeTree, чтобы улучшить сжатие и обеспечить эффективный доступ к подстолбцам. Также введены новые настройки MergeTree для управления версией сериализации и оптимизации выражений для пустых строк. #82850 (Amos Bird).
  • Снижены затраты на выделение и копирование памяти при выполнении SELECT из таблицы AggregatingMergeTree с FINAL, если таблица содержит столбцы типа SimpleAggregateFunction(anyLast). #84428 (Duc Canh Le).
  • Улучшена производительность Вертикального слияния после выполнения легковесного удаления. #86169 (Anton Popov).
  • Повышена производительность быстрых запросов с большим количеством частей в таблице (за счёт оптимизации MarkRanges: используется devector вместо deque). #86933 (Azat Khuzhin).
  • Улучшена производительность применения патч-частей в режиме JOIN. #87094 (Anton Popov).
  • Включено сохранение marks в cache, а для чтения MergeTreeLazy исключён прямой IO. #87989 (Nikita Taranov).
  • SELECT-запрос с условием FINAL для таблицы ReplacingMergeTree со столбцом is_deleted теперь выполняется быстрее благодаря улучшенной распараллелизации двух существующих оптимизаций: 1) оптимизации do_not_merge_across_partitions_select_final для партиций таблицы, содержащих только одну part; 2) разбиению остальных выбранных диапазонов таблицы на intersecting / non-intersecting, при котором через преобразование слияния FINAL должны проходить только пересекающиеся диапазоны. #88090 (Shankar Iyer).

Оптимизации агрегации и GROUP BY

Оптимизации индексов и текстового поиска

  • Повышена производительность построения текстового индекса для документов, содержащих в основном редкие токены. #87546 (Anton Popov).

Оптимизации для озер данных

  • Поддержка чтения по порядку для Iceberg. #88454 (scanhex12).

Внутренние оптимизации

  • Улучшения DB::SharedMutex. #87491 (Raúl Marín).
  • Ускорен наиболее частый случай вызова деструктора Field. #87631 (Raúl Marín).
  • Снижено влияние отсутствия fail points. #88196 (Raúl Marín).

Улучшения

Оптимизация и выполнение запросов

  • mannWhitneyUTest больше не генерирует исключение, когда обе выборки содержат только одинаковые значения. Теперь функция возвращает корректный результат, согласующийся с SciPy. Закрывает: #79814. #80009 (DeanNeaht).
  • Добавлена экспериментальная оптимизация порядка JOIN, которая может автоматически переупорядочивать JOIN для повышения производительности (управляется настройкой query_plan_optimize_join_order_limit). Обратите внимание, что оптимизация порядка JOIN в настоящее время имеет ограниченную поддержку статистики и в основном опирается на оценки числа строк от движков хранения — более продвинутый сбор статистики и оценка мощности будут добавлены в будущих релизах. Если после обновления у вас возникли проблемы с запросами JOIN, вы можете временно отключить новую реализацию, установив SET query_plan_use_new_logical_join_step = 0, и сообщить о проблеме для дальнейшего расследования. Примечание о разрешении идентификаторов из клаузы USING: Изменено разрешение коалесцированного столбца из клаузы OUTER JOIN ... USING, чтобы сделать его более согласованным: ранее при выборе и столбца USING, и квалифицированных столбцов (a, t1.a, t2.a) в OUTER JOIN столбец USING ошибочно разрешался как t1.a, показывая 0/NULL для строк из правой таблицы без соответствия в левой. Теперь идентификаторы из клаузы USING всегда разрешаются в коалесцированный столбец, тогда как квалифицированные идентификаторы разрешаются в некоалесцированные столбцы независимо от того, какие ещё идентификаторы присутствуют в запросе. Например: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) — До: a=0, t1.a=0, t2.a=2 (некорректно — ‘a’ разрешался как t1.a) — После: a=2, t1.a=0, t2.a=2 (корректно — ‘a’ коалесцируется). #80848 (Vladimir Cherkasov).
  • Добавлена поддержка фильтрации частей данных с помощью индексов пропуска данных при чтении, чтобы сократить количество ненужных обращений к индексам. Это поведение управляется новой настройкой use_skip_indexes_on_data_read (по умолчанию отключена). Это устраняет проблему #75774. Сюда также входит часть общей подготовительной работы для #81021. #81526 (Amos Bird).
  • Транзакция перезаписи в Объектном хранилище диска удаляет предыдущие удалённые блобы, если транзакция метаданных зафиксирована. #81787 (Sema Checherinda).
  • Стратегия повторных попыток для S3 стала настраиваемой, а настройки S3-диска теперь можно применять без перезапуска при изменении XML-файла config. #82642 (RinChanNOW).
  • Исправлен проход оптимизации для избыточного сравнения на равенство, когда LowCardinality результирующего типа различается до и после оптимизации. #82651 (Yakov Olkhovskiy).
  • Специальный столбец можно использовать для указания наличия части oneof. #82885 (Ilya Golshtein).
  • Теперь при указании некорректных настроек для нового движка таблицы Kafka пользователи получают более понятные инструкции. #83701 (János Benjamin Antal).
  • Когда HTTP-клиенты задают заголовок X-ClickHouse-100-Continue: defer в дополнение к Expect: 100-continue, ClickHouse не отправляет клиенту ответ 100 Continue до тех пор, пока не будет пройдена проверка квоты. Это позволяет избежать лишнего расхода пропускной способности сети на передачу тел запросов, которые всё равно будут отброшены. Это актуально для запросов INSERT, в которых сам запрос может передаваться в строке запроса URL, а данные — в теле запроса. Прерывание запроса без отправки полного тела не позволяет повторно использовать connection в HTTP/1.1, однако дополнительная latency из-за открытия новых connections обычно незначительна по сравнению с общей длительностью INSERT при больших объёмах данных. #84304 (c-end).
  • Больше нельзя задавать часовые пояса для типа Time. #84689 (Yarik Briukhovetskyi).
  • Автодополнение на стороне клиента теперь работает быстрее и стабильнее благодаря использованию system.completions вместо выполнения нескольких запросов к системным таблицам. #84694 (|2ustam).
  • Упростили логику, связанную с разбором Time[64] в формате best_effort, и устранили некоторые ошибки. #84730 (Yarik Briukhovetskyi).
  • Ускорено выполнение некоторых запросов с JOIN за счёт построения bloom filter по правому поддереву во время выполнения и передачи этого фильтра в сканирование левого поддерева. Это может быть полезно для таких запросов, как SELECT avg(o_totalprice) FROM orders, customer, nation WHERE c_custkey = o_custkey AND c_nationkey=n_nationkey AND n_name = 'FRANCE'. #84772 (Alexander Gololobov).
  • После TO при создании materialized view можно использовать параметры запроса, например: CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table. #84899 (Diskein).
  • Скрытие учетных данных S3 в журналах при использовании DATABASE ENGINE = Backup с хранилищем S3. #85336 (Kenny Sun).
  • Обновлён jemalloc до более новой версии. Улучшено профилирование выделений памяти на основе внутренних инструментов jemalloc. Глобальное профилирование jemalloc теперь можно включить с помощью конфигурационного параметра jemalloc_enable_global_profiler. Образцы глобальных выделений и освобождений памяти теперь можно сохранять в system.trace_log с типом JemallocSample, включив конфигурационный параметр jemalloc_collect_global_profile_samples_in_trace_log. Профилирование jemalloc теперь можно включать независимо для каждого запроса с помощью настройки jemalloc_enable_profiler. Сохранение образцов в system.trace_log можно настраивать отдельно для каждого запроса с помощью настройки jemalloc_collect_profile_samples_in_trace_log. #85438 (Antonio Andelic).
  • Добавлены функция deltaLakeAzureCluster (аналог deltaLakeAzure для cluster) и функция deltaLakeS3Cluster (alias для deltaLakeCluster). Решает проблему #85358. #85547 (Smita Kulkarni).
  • Переименовать InterpreterSystemQuery::dropReplicaImpl в InterpreterSystemQuery::dropStorageReplica - В InterpreterSystemQuery::dropDatabaseReplica: - При удалении с database или при удалении реплики целиком также удаляется реплика для каждой таблицы базы данных - Если указан ‘WITH TABLES’, удаляется реплика для каждого хранилища - В противном случае логика не меняется: для баз данных только вызывается DatabaseReplicated::dropReplica - При удалении реплики базы данных с path в Keeper: - Если указан ‘WITH TABLES’: - Восстановить базу данных как Atomic - Восстановить таблицы RMT из оператора в Keeper - Удалить базу данных (восстановленные таблицы также удаляются) - В противном случае только вызывается DatabaseReplicated::dropReplica для указанного path в Keeper. #85637 (Tuan Pham Anh).
  • Устранена несогласованность в форматировании TTL, содержащего функцию materialize. Закрывает #82828. #85749 (Alexey Milovidov).
  • Настройка azure_max_single_part_copy_size теперь применяется к обычным операциям копирования так же, как и к резервному копированию. #85767 (Ilya Golshtein).
  • Замедляет потоки клиента S3 при ошибках с возможностью повторной попытки в объектном хранилище S3. Это расширяет действие предыдущей настройки backup_slow_all_threads_after_retryable_s3_error на S3-диски и переименовывает её в более общую s3_slow_all_threads_after_retryable_error. #85918 (Julia Kartseva).
  • Настройки allow_experimental_variant/dynamic/json и enable_variant/dynamic/json помечены как устаревшие. Теперь все три типа включены безусловно. #85934 (Pavel Kruglov).
  • Улучшен движок таблицы S3(Azure)Queue: теперь он может переживать потерю соединения с ZooKeeper без риска появления дубликатов. Требуется включить параметр S3Queue use_persistent_processing_nodes (его можно изменить с помощью ALTER TABLE MODIFY SETTING). #85995 (Kseniia Sumarokova).
  • Состояние таблицы Iceberg больше не хранится в объекте хранилища. Это должно обеспечить возможность использования Iceberg в ClickHouse с параллельными запросами. #86062 (Daniil Ivanik).
  • Добавлена настройка query_condition_cache_selectivity_threshold (значение по умолчанию: 1.0), которая исключает результаты сканирования предикатов с низкой селективностью из добавления в кэш условий запроса. Это позволяет снизить потребление памяти кэша условий запроса ценой уменьшения частоты попаданий в кэш. #86076 (zhongyuankai).
  • Добавлена поддержка фильтрации по полной строке URL (директива full_url) в http_handlers (включая схему и host:port). #86155 (Azat Khuzhin).
  • Добавлена экспериментальная настройка allow_experimental_delta_lake_writes для возможности записи в delta lake; по умолчанию она отключена. #86180 (Kseniia Sumarokova).
  • Исправлено обнаружение systemd в скрипте init.d (исправлена проверка “Install packages”). #86187 (Azat Khuzhin).
  • Добавлена новая размерная метрика startup_scripts_failure_reason. Эта метрика нужна, чтобы различать типы ошибок, из-за которых завершается сбоем выполнение скриптов запуска. В частности, для алертинга нужно различать временные (например, MEMORY_LIMIT_EXCEEDED или KEEPER_EXCEPTION) и постоянные ошибки. #86202 (Miсhael Stetsyuk).
  • Несколько файлов данных при записи в Iceberg. #86275 (scanhex12).
  • Больше типов партиций при записи в Iceberg. Это закрывает #86206. #86298 (scanhex12).
  • Разрешено не указывать функцию identity() для партиции в таблице Iceberg. #86314 (scanhex12).
  • Добавлена возможность включать JSON-логирование только для одного из каналов; для этого установите logger.formatting.channel в одно из значений: syslog/console/errorlog/log. #86331 (Azat Khuzhin).
  • Добавлено ограничение на число строк/байтов в data files при вставке в delta lake. Управляется настройками delta_lake_insert_max_rows_in_data_file и delta_lake_insert_max_bytes_in_data_file. #86357 (Kseniia Sumarokova).
  • Разрешено использовать native-числа в WHERE. Они уже могут выступать аргументами логических функций. Это упрощает оптимизации filter-push-down и move-to-prewhere. #86390 (Nikolai Kochetov).
  • Исправлена ошибка при выполнении SYSTEM DROP REPLICA над каталогом с повреждёнными метаданными. #86391 (Nikita Mikhaylov).
  • В Azure добавлены дополнительные попытки проверки доступа к диску (skip_access_check=0), поскольку предоставление доступа может занимать довольно много времени. #86419 (Alexander Tokmakov).
  • Параметр evaluation_time переименован в promql_evaluation_time. #86459 (Vitaly Baranov).
  • Параметр для удаления файлов при drop Iceberg. Это закрывает #86211. #86501 (scanhex12).
  • Сокращено использование памяти при записи в Iceberg. #86544 (scanhex12).
  • Сделать функцию today() регистронезависимой для единообразия с другими функциями, связанными с датой и временем, такими как NOW(). #86561 (Kaviraj Kanagaraj).
  • Окно допустимой давности в функциях timeSeries*() сделано открытым слева и закрытым справа. #86588 (Vitaly Baranov).
  • Добавлены события профиля FailedInternal*Query. #86627 (Shane Andrade).
  • Сделать блокировку бакета в упорядоченном режиме S3Queue постоянной, аналогично узлам processing при use_persistent_processing_nodes = 1. Добавить в тесты инъекцию сбоев Keeper. #86628 (Kseniia Sumarokova).
  • Исправлена обработка пользователей, в имени которых есть точка, при добавлении через файл конфигурации. #86633 (Mikhail Koviazin).
  • Добавлена асинхронная метрика использования памяти запросами (QueriesMemoryUsage и QueriesPeakMemoryUsage). #86669 (Azat Khuzhin).
  • Вы можете использовать флаг clickhouse-benchmark --precise для более точного отображения QPS и других метрик в каждом интервале. Это помогает получать стабильный QPS в случаях, когда длительность запросов сопоставима с интервалом отчётности --delay D. #86684 (Sergei Trifonov).
  • Значения nice для потоков Linux сделаны настраиваемыми, чтобы можно было назначать некоторым потокам (merge/mutate, запрос, materialized view, клиент ZooKeeper) более высокий или более низкий приоритет. #86703 (Miсhael Stetsyuk).
  • Исправлена вводящая в заблуждение ошибка «указанная загрузка не существует», возникающая, когда при multipart-загрузке из-за состояния гонки теряется исходное исключение. #86725 (Julia Kartseva).
  • Ограничено описание плана запроса в запросе EXPLAIN. Описание больше не вычисляется для запросов, отличных от EXPLAIN. Добавлена настройка query_plan_max_step_description_length. #86741 (Nikolai Kochetov).
  • Добавлена возможность настраивать количество ожидающих сигналов в попытке избежать CANNOT&#95;CREATE&#95;TIMER (для профилировщиков запросов: query_profiler_real_time_period_ns/query_profiler_cpu_time_period_ns). Также для интроспекции теперь собирается SigQ из /proc/self/status (если ProcessSignalQueueSize близок к ProcessSignalQueueLimit, то, скорее всего, будут возникать ошибки CANNOT_CREATE_TIMER). #86760 (Azat Khuzhin).
  • Распределённые операции вставки/select для озёр данных. #86783 (scanhex12).
  • Повышена производительность запроса RemoveRecursive в Keeper. #86789 (Antonio Andelic).
  • Удалены лишние пробелы в PrettyJSONEachRow при выводе данных типа JSON. #86819 (Pavel Kruglov).
  • Увеличено окно дедупликации в реплицируемых таблицах до 10000. #86820 (Sema Checherinda).
  • Теперь при удалении каталога на обычном перезаписываемом диске мы записываем размеры blob-объектов для prefix.path. #86908 (alesapin).
  • Функция yesterday() сделана регистронезависимой и приведена в соответствие с функцией today(). #86914 (Kaviraj Kanagaraj).
  • Добавлена поддержка тестирования производительности .xml на удалённых инстансах ClickHouse, включая ClickHouse Cloud. Пример использования: tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure. #86995 (Raufs Dunamalijevs).
  • Соблюдаются ограничения памяти в некоторых местах, где, как известно, выделяется значительный объём памяти (>16MiB) (сортировка, async inserts, file log). #87035 (Azat Khuzhin).
  • Исправлена проблема, из-за которой небулевы настройки не устанавливали значения в запросах. Улучшение #85800. #87084 (thraeka).
  • Добавлена поддержка подсказок для имён форматов. Закрывает #86761. #87092 (flynn).
  • На удалённых репликах анализ индексов пропускается при отсутствии проекций. #87096 (zoomxi).
  • Генерировать исключение, если значение настройки network_compression_method не является поддерживаемым универсальным кодеком. #87097 (Robert Schulze).
  • Системная таблица system.query_cache теперь возвращает все записи кэша результатов запросов, тогда как раньше она возвращала только разделяемые записи или неразделяемые записи того же пользователя и роли. Это допустимо, поскольку неразделяемые записи не должны раскрывать результаты запросов, тогда как system.query_cache возвращает строки запросов. Это делает поведение системной таблицы более похожим на system.query_log. #87104 (Robert Schulze).
  • Добавлена поддержка аутентификации и SSL в табличной функции arrowFlight(). #87120 (Vitaly Baranov).
  • Добавлен новый параметр storage_class_name для движка таблицы S3 и табличной функции s3, который позволяет указать поддерживаемый AWS класс интеллектуального многоуровневого хранения. Поддерживается как в формате ключ-значение, так и в позиционном (устаревшем) формате. #87122 (alesapin).
  • Добавлена возможность отключать кодировку UTF8 для таблицы YTsaurus. #87150 (MikhailBurdukov).
  • Добавлена поддержка Azure для дисков озер данных. #87173 (scanhex12).
  • Добавлен новый параметр текстового индекса dictionary_block_frontcoding_compression для управления сжатием словаря. По умолчанию он включен, и используется сжатие front-coding. #87175 (Elmi Ahmadov).
  • Для функции parseDateTime включено сокращённое вычисление. #87184 (Pavel Kruglov).
  • Добавлена поддержка alter table ... materialize statistics all, которая материализует всю статистику таблицы. #87197 (Han Fei).
  • Параметр s3_slow_all_threads_after_retryable_error теперь отключён по умолчанию. #87198 (Nikita Mikhaylov).
  • Добавлена новая таблица system.aggregated_zookeeper_log. Таблица содержит статистику по операциям ZooKeeper (например, количество операций, среднюю задержку и ошибки), сгруппированную по идентификатору сеанса, родительскому пути и типу операции и периодически сбрасываемую на диск. #87208 (Miсhael Stetsyuk).
  • Переименована table function arrowflight в arrowFlight. #87249 (Vitaly Baranov).
  • clickhouse-benchmark обновлён: теперь в его флагах CLI вместо _ можно использовать -. #87251 (Ahmed Gouda).
  • Добавлена сеансовая настройка для исключения списка индексов пропуска данных из материализации при вставках (exclude_materialize_skip_indexes_on_insert). Добавлена настройка таблицы MergeTree для исключения списка индексов пропуска данных из материализации во время слияния (exclude_materialize_skip_indexes_on_merge). #87252 (George Larionov).
  • Сделан синхронный сброс в system.crash_log при обработке сигналов. #87253 (Miсhael Stetsyuk).
  • Добавлен новый столбец statistics в system.parts&#95;columns. #87259 (Han Fei).
  • Добавлена настройка inject_random_order_for_select_without_order_by, которая добавляет ORDER BY rand() в SELECT-запросы верхнего уровня без предложения ORDER BY. #87261 (Rui Zhang).
  • Поддержка других форматов (ORC, Avro) при записи данных в Iceberg. Это закрывает #86179. #87277 (scanhex12).
  • Улучшено сообщение об ошибке joinGet, чтобы в нём корректно указывалось, что число join_keys не равно числу right_table_keys. #87279 (Isak Ellmer).
  • Объединение данных из всех потоков перед вставкой в materialized views в соответствии с настройками min_insert_block_size_rows_for_materialized_views и min_insert_block_size_bytes_for_materialized_views. Ранее, если parallel_view_processing был включен, каждый поток, выполнявший вставку в конкретный materialized view, объединял данные независимо, что могло приводить к созданию большего числа частей. #87280 (Antonio Andelic).
  • Этот патч добавляет возможность проверять stat произвольного узла Keeper во время записи tx. Это может помочь выявлять проблему ABA. #87282 (Mikhail Artemenko).
  • Тяжёлые запросы к YTsaurus теперь перенаправляются на тяжёлые прокси. #87342 (MikhailBurdukov).
  • Этот патч исправляет откаты операций unlink/rename/removeRecursive/removeDirectory/etc, а также счётчики жёстких ссылок во всех возможных рабочих нагрузках для метаданных из дисковых транзакций, и упрощает интерфейсы, делая их более универсальными, чтобы их можно было повторно использовать в других метахранилищах. #87358 (Mikhail Artemenko).
  • Добавлен параметр конфигурации keeper_server.tcp_nodelay, который позволяет отключить TCP_NODELAY для Keeper. #87363 (Copilot).
  • Добавлена поддержка --connection в clickhouse-benchmarks. Этот параметр поддерживается так же, как в clickhouse-client: вы можете указать предопределённые подключения в клиентском config.xml/config.yaml по пути connections_credentials, чтобы не передавать имя пользователя и пароль явно через аргументы командной строки. В clickhouse-benchmark также добавлена поддержка --accept-invalid-certificate. #87370 (Azat Khuzhin).
  • Теперь настройка max_insert_threads будет действовать и для таблиц Iceberg. #87407 (alesapin).
  • В PrometheusMetricsWriter добавлены гистограммы и размерные метрики. Благодаря этому обработчик PrometheusRequestHandler будет иметь все необходимые метрики и сможет использоваться для надежного сбора метрик в облаке с низкими накладными расходами. #87521 (Miсhael Stetsyuk).
  • Функция hasToken теперь возвращает 0 совпадений для пустого токена (тогда как раньше это вызывало исключение). #87564 (Jimmy Aguilar Mena).
  • Добавлена поддержка текстовых индексов для значений Array и Map (mapKeys и mapValues). Поддерживаются функции mapContainsKey и has. #87602 (Elmi Ahmadov).
  • Добавлена новая метрика ZooKeeperSessionExpired, которая указывает на количество истёкших глобальных сеансов ZooKeeper. #87613 (Miсhael Stetsyuk).
  • Используйте клиент хранилища S3 со специальными настройками для резервного копирования (например, backup_slow_all_threads_after_retryable_s3_error) для серверного (native) копирования в пункт назначения резервной копии. Пометьте s3_slow_all_threads_after_retryable_error как устаревшую. #87660 (Julia Kartseva).
  • Исправлена некорректная обработка настроек max_joined_block_size_rows и max_joined_block_size_bytes при сериализации плана выполнения запроса с экспериментальным make_distributed_plan. #87675 (Vladimir Cherkasov).
  • Параметр enable_http_compression теперь включен по умолчанию. Это означает, что если клиент принимает HTTP-сжатие, сервер будет его использовать. Однако у этого изменения есть и определенные недостатки. Клиент может запросить ресурсоемкий метод сжатия, например bzip2, что не имеет особого смысла и увеличит потребление ресурсов сервера (но это будет заметно только при передаче больших результатов). Клиент также может запросить gzip, что не так уж плохо, но все же менее оптимально, чем zstd. Закрывает #71591. #87703 (Alexey Milovidov).
  • Добавлена новая настройка keeper_hosts, которая предоставляет список хостов [Zoo]Keeper, к которым может подключаться ClickHouse. #87718 (Nikita Mikhaylov).
  • Добавлена команда ALTER TABLE REWRITE PARTS — полностью переписывает части таблицы с нуля с использованием всех новых настроек (поскольку некоторые из них, например use_const_adaptive_granularity, применяются только к новым частям). #87774 (Azat Khuzhin).
  • Добавлены значения from и to в системные панели мониторинга для упрощения ретроспективного анализа. #87823 (Mikhail f. Shiryaev).
  • Добавлена дополнительная информация для отслеживания производительности в Iceberg SELECT-запросах. #87903 (Daniil Ivanik).
  • Добавлена новая настройка joined_block_split_single_row, снижающая использование памяти в hash JOIN при большом числе совпадений на один ключ. Она позволяет разбивать результаты hash JOIN на фрагменты даже для совпадений, относящихся к одной строке левой таблицы, что особенно полезно, когда одной строке левой таблицы соответствуют тысячи или миллионы строк правой таблицы. Ранее все совпадения приходилось материализовать в памяти сразу. Это снижает пиковое потребление памяти, но может увеличить нагрузку на CPU. #87913 (Vladimir Cherkasov).
  • Улучшение файлового кэша: повторное использование итератора приоритета кэша в потоках, которые одновременно резервируют место в кэше. #87914 (Kseniia Sumarokova).
  • Добавлена возможность ограничивать размер запросов для Keeper (настройка max_request_size, аналогичная jute.maxbuffer для ZooKeeper; по умолчанию OFF для обратной совместимости, будет включена в следующих релизах). #87952 (Azat Khuzhin).
  • Исправлено: clickhouse-benchmark больше не включает трассировки стека в сообщения об ошибках по умолчанию. #87954 (Ahmed Gouda).
  • Избегайте использования асинхронной загрузки меток в пуле потоков (load_marks_asynchronously=1), когда метки находятся в кеше (поскольку пул может быть перегружен, и запросы будут нести из-за этого дополнительные издержки, даже если метки уже находятся в кеше). #87967 (Azat Khuzhin).
  • Ytsaurus: теперь можно создавать таблицы/табличные функции/словари с подмножеством столбцов. #87982 (MikhailBurdukov).
  • Теперь system.zookeeper_connection_log включен по умолчанию и может использоваться для получения информации о сеансах Keeper. #88011 (János Benjamin Antal).
  • Поведение TCP и HTTP при передаче дублирующихся внешних таблиц сделано согласованным. HTTP позволяет передавать временную таблицу несколько раз. #88032 (Sema Checherinda).
  • Удалены пользовательские MemoryPools для чтения Arrow/ORC/Parquet. Этот компонент, по-видимому, больше не нужен после https://github.com/ClickHouse/ClickHouse/pull/84082, поскольку теперь мы и так отслеживаем все выделения. #88035 (Nikita Mikhaylov).
  • Теперь можно создавать базу данных Replicated без аргументов. #88044 (Pervakov Grigorii).
  • Добавлена поддержка подключения к TLS-порту clickhouse-keeper, имена флагов сохранены такими же, как в clickhouse-client. #88065 (Pradeep Chhetri).
  • Добавлено новое событие профиля для отслеживания числа случаев, когда фоновое слияние было отклонено из-за превышения лимита памяти. #88084 (Grant Holly).
  • В функцию generateSerialID добавлен необязательный параметр start_value, позволяющий задавать пользовательские начальные значения для новых серий. #88085 (Manuel).
  • Включает анализатор для проверки выражений значений по умолчанию столбцов в CREATE/ALTER TABLE. #88087 (Max Justus Spransy).
  • Улучшено внутреннее планирование запросов: для CROSS JOIN теперь используется JoinStepLogical. #88151 (Vladimir Cherkasov).
  • Полностью поддерживается оператор IS NOT DISTINCT FROM (<=>). #88155 (simonmichal).
  • По умолчанию включён глобальный профилировщик сэмплирования: трассировки стека всех потоков собираются каждые 10 секунд процессорного и реального времени. #88209 (Alexander Tokmakov).
  • Исправлена поддержка операций EXCHANGE TABLES для таблиц с движком Alias. Теперь движок хранит целевую таблицу в виде имён базы данных и таблицы, а не постоянного идентификатора хранилища, что позволяет корректно находить её после обмена таблицами. #88233 (Kai Zhu).
  • Добавлена настройка temporary_files_buffer_size для управления размером буфера при записи во временные файлы. * Оптимизировано потребление памяти операцией scatter (используемой, например, в grace hash join) для столбцов LowCardinality. #88237 (Vladimir Cherkasov).
  • Добавлена поддержка прямого чтения из текстовых индексов при использовании параллельных реплик. Повышена производительность чтения текстовых индексов из объектного хранилища. #88262 (Anton Popov).
  • Теперь функция generateSerialID поддерживает неконстантный аргумент, задающий имя серии. Закрывает #83750. #88270 (Alexey Milovidov).
  • База данных каталогов Datalakes для задач распределённой обработки. #88273 (scanhex12).
  • Обновлён Azure SDK: добавлено исправление для ‘Content-Length’, связанной с функциями копирования и создания контейнера. #88278 (Smita Kulkarni).
  • Имя функции lag теперь регистронезависимо для совместимости с MySQL. #88322 (Lonny Kapelushnik).
  • Добавлен параметр config keeper_server.coordination_settings.check_node_acl_on_remove. Если он включен, перед каждым удалением узла будут проверяться ACL как самого узла, так и родительского. В противном случае будет проверяться только ACL родительского узла. #88513 (Antonio Andelic).
  • JSON-столбцы теперь выводятся в удобочитаемом виде при использовании формата Vertical. Закрывает #81794. #88524 (Frank Rosner).
  • Файлы clickhouse-client (например, историю запросов) теперь хранятся в местах, описанных в спецификации XDG Base Directories, а не в корне домашнего каталога. ~/.clickhouse-client-history по-прежнему будет использоваться, если он уже существует. #88538 (Konstantin Bogdanov).
  • Исправлена утечка памяти, вызванная GLOBAL IN (https://github.com/ClickHouse/ClickHouse/issues/88615). #88617 (pranav mehta).
  • Добавлена перегрузка для hasAny/hasAllTokens с поддержкой строкового ввода. #88679 (George Larionov).
  • После этого исправления эвристика to_remove_small_parts_at_right будет выполняться до вычисления оценки диапазона слияния. До этого selector merge выбирал wide-слияние, а затем отфильтровывал его суффикс. Исправление: #85374. #88736 (Mikhail Artemenko).
  • В скрипт postinstall для clickhouse-keeper добавлен шаг, который включает запуск при загрузке системы. #88746 (YenchangChan).
  • Проверка учетных данных в веб-интерфейсе теперь выполняется только при вставке, а не при каждом нажатии клавиши. Это позволяет избежать проблемы с неправильно настроенными LDAP-серверами. Исправляет #85777. #88769 (Alexey Milovidov).
  • Ограничена длина сообщения об Исключении при нарушении ограничения. В предыдущих версиях при вставке очень длинной строки можно было получить очень длинное сообщение об Исключении, которое в итоге записывалось в query_log. Закрывает #87032. #88801 (Alexey Milovidov).

Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)

  • Результаты alter-запросов теперь проверяются только на узле-инициаторе для баз данных Replicated и внутренне реплицируемых таблиц. Это устраняет ситуации, когда уже зафиксированный alter-запрос мог зависнуть на других узлах. #83849 (János Benjamin Antal).
  • Ограничено число задач каждого типа в BackgroundSchedulePool. Это позволяет избежать ситуаций, когда все слоты заняты задачами одного типа, а остальные задачи простаивают без ресурсов. Также это помогает избежать взаимных блокировок, когда задачи ждут друг друга. Это регулируется настройкой сервера background_schedule_pool_max_parallel_tasks_per_type_ratio. #84008 (Alexander Tokmakov).
  • Исправлен GeoParquet, из-за которого возникали ошибки клиентского протокола. #84020 (Michael Kolupaev).
  • Исправлено разрешение функций, зависящих от хоста, таких как shardNum(), в подзапросах на узле-инициаторе. #84409 (Eduard Karacharov).
  • Корректно завершайте работу таблиц при восстановлении реплики базы данных. Некорректное завершение работы могло приводить к LOGICAL_ERROR для некоторых движков таблиц во время восстановления реплики базы данных. #84744 (Antonio Andelic).
  • Проверка прав доступа при генерации подсказок по исправлению опечаток в имени базы данных. #85371 (Dmitry Novik).
  • Исправлена некорректная обработка дат до epoch с дробными секундами в различных функциях, связанных с дата-время, таких как parseDateTime64BestEffort, change{Year,Month,Day} и makeDateTime64. Ранее дробная часть секунды вычиталась из секунд вместо того, чтобы прибавляться. Например, parseDateTime64BestEffort('1969-01-01 00:00:00.468') возвращала 1968-12-31 23:59:59.532 вместо 1969-01-01 00:00:00.468. #85396 (xiaohuanlin).
    1. LowCardinality для столбцов hive 2. Заполнять столбцы hive до виртуальных столбцов (требуется для https://github.com/ClickHouse/ClickHouse/pull/81040) 3. LOGICAL_ERROR при пустом формате для hive #85528 4. Исправлена проверка случая, когда столбцы партиции hive являются единственными столбцами 5. Проверять, что в схеме указаны все столбцы hive 6. Частичное исправление для parallel_replicas_cluster с hive 7. Использовать упорядоченный контейнер в extractkeyValuePairs для утилит hive (требуется для https://github.com/ClickHouse/ClickHouse/pull/81040). #85538 (Arthur Passos).
  • Предотвращена ненужная оптимизация первого аргумента функций IN, которая в некоторых случаях приводила к ошибке при использовании маппинга массива. #85546 (Yakov Olkhovskiy).
  • Соответствие между идентификаторами источников Iceberg и именами в Parquet не приводилось в соответствие со схемой при записи файла Parquet. В этом PR обрабатывается схема, относящаяся к каждому файлу данных Iceberg, а не текущая схема. #85829 (Daniil Ivanik).
  • Исправлено чтение размера файла отдельно от его открытия. Связано с https://github.com/ClickHouse/ClickHouse/pull/33372, который был внесён в ответ на ошибку в ядрах Linux версий до 5.10. #85837 (Konstantin Bogdanov).
  • ClickHouse Keeper больше не не запускается в системах, где IPv6 отключён на уровне ядра (например, в RHEL с ipv6.disable=1). Теперь он пытается переключиться на прослушивание по IPv4, если первоначальная попытка прослушивания по IPv6 завершается неудачей. #85901 (jskong1124).
  • Этот PR закрывает #77990. Добавлена поддержка параллельных реплик в globalJoin для TableFunctionRemote. #85929 (zoomxi).
  • Исправлено обращение к нулевому указателю в OrcSchemaReader::initializeIfNeeded(). Этот PR устраняет следующую проблему: #85292. #85951 (yanglongwei).
  • Добавлена проверка, которая разрешает коррелированные подзапросы в секции FROM только в том случае, если они используют столбцы внешнего запроса. Исправляет #85469. Исправляет #85402. #85966 (Dmitry Novik).
  • Исправлена работа ALTER UPDATE при обновлении столбца, подстолбец которого используется в материализованном выражении другого столбца. Ранее материализованный столбец, в выражении которого использовался подстолбец, обновлялся некорректно. #85985 (Pavel Kruglov).
  • Запретить изменение столбцов, чьи подстолбцы используются в PK или в выражении партиционирования. #86005 (Pavel Kruglov).
  • Исправлена ошибка, из-за которой команды ALTER COLUMN IF EXISTS завершались с ошибкой, если состояние столбца изменялось в рамках того же оператора ALTER. Команды DROP COLUMN IF EXISTS, MODIFY COLUMN IF EXISTS, COMMENT COLUMN IF EXISTS и RENAME COLUMN IF EXISTS теперь корректно обрабатывают случаи, когда столбец удалён предыдущей командой в том же операторе. #86046 (xiaohuanlin).
  • Исправлено чтение подстолбцов при нестандартном режиме сопоставления столбцов в хранилище DeltaLake. #86064 (Kseniia Sumarokova).
  • Исправлено применение неверных значений по умолчанию для пути с подсказкой Enum внутри JSON. #86065 (Pavel Kruglov).
  • Разбор URL каталога Hive в DataLake с санитизацией входных данных. Закрывает #86018. #86092 (rajat mohan).
  • Исправлена логическая ошибка при динамическом изменении размера файлового кэша. Исправление закрывает #86122. Исправление закрывает https://github.com/ClickHouse/clickhouse-core-incidents/issues/473. #86130 (Kseniia Sumarokova).
  • Используйте NonZeroUInt64 в качестве значения для logs_to_keep в DatabaseReplicatedSettings. #86142 (Tuan Pham Anh).
  • При выполнении запроса FINAL с индексом пропуска данных возникало исключение, если таблица (например, ReplacingMergeTree) была создана с настройкой index_granularity_bytes = 0. Теперь это исправлено. #86147 (Shankar Iyer).
  • Устраняет UB и исправляет ошибки при разборе выражения партиционирования Iceberg. #86166 (Daniil Ivanik).
  • Исправлено определение типов Date/DateTime/DateTime64 для дат, выходящих за пределы поддерживаемого диапазона. #86184 (Pavel Kruglov).
  • Исправлен сбой при наличии константных и неконстантных блоков в одной операции INSERT. #86230 (Azat Khuzhin).
  • При создании дисков из SQL теперь по умолчанию обрабатываются директивы include из /etc/metrika.xml. #86232 (alekar).
  • Исправлено преобразование accurateCastOrNull/accurateCastOrDefault из String в JSON. #86240 (Pavel Kruglov).
  • Добавлена поддержка каталогов без ’/’ в движке Iceberg. #86249 (scanhex12).
  • Исправлен сбой при использовании replaceRegex с haystack типа FixedString и пустым needle. #86270 (Raúl Marín).
  • Исправлен сбой при ALTER UPDATE Nullable(JSON). #86281 (Pavel Kruglov).
  • Исправлено отсутствие столбца definer в system.tables. #86295 (Raúl Marín).
  • Исправлено приведение из LowCardinality(Nullable(T)) в Dynamic. #86365 (Pavel Kruglov).
  • Исправлена логическая ошибка при записи в DeltaLake. Закрыт #86175. #86367 (Kseniia Sumarokova).
  • Исправлена ошибка 416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resource при чтении пустых blob-объектов из Azure Blob Storage на диске plain&#95;rewritable. #86400 (Julia Kartseva).
  • Исправлена работа GROUP BY Nullable(JSON). #86410 (Pavel Kruglov).
  • Исправлена ошибка в materialized views: MV мог не работать, если его создавали, удаляли, а затем снова создавали с тем же именем. #86413 (Alexander Tokmakov).
  • Возвращать ошибку, если при чтении из функций *cluster недоступны все реплики. #86414 (Julian Maicher).
  • Устранена утечка MergesMutationsMemoryTracking, вызванная таблицами Buffer, а также исправлен query_views_log при стриминге из Kafka (и других источников). #86422 (Azat Khuzhin).
  • Исправлена работа SHOW TABLES после удаления ссылочной таблицы alias-хранилища. #86433 (RinChanNOW).
  • Исправлена проблема с отсутствующим заголовком фрагмента, когда включен send_chunk_header и UDF вызывается через HTTP-протокол. #86469 (Vladimir Cherkasov).
  • Исправлена возможная взаимная блокировка при включенных операциях сброса профиля jemalloc. #86473 (Azat Khuzhin).
  • Исправлено чтение подстолбцов в таблицах с движком DeltaLake. Закрывает #86204. #86477 (Kseniia Sumarokova).
  • Правильная обработка ID loopback-хоста во избежание коллизий при обработке DDL-задач:. #86479 (Tuan Pham Anh).
  • Исправлена работа операций detach/attach для таблиц движка базы данных PostgreSQL со столбцами типов numeric/decimal. #86480 (Julian Maicher).
  • Исправлено использование неинициализированной памяти в getSubcolumnType. #86498 (Raúl Marín).
  • Функции searchAny и searchAll при вызове с пустыми подстроками теперь возвращают true (то есть “совпадает со всем”). Ранее они возвращали false. (issue #86300). #86500 (Elmi Ahmadov).
  • Исправлена работа функции timeSeriesResampleToGridWithStaleness(), если в первом бакете нет значения. #86507 (Vitaly Baranov).
  • Исправлен сбой, возникавший при установке merge_tree_min_read_task_size в 0. #86527 (yanglongwei).
  • При чтении формат каждого файла данных теперь берётся из метаданных Iceberg (ранее он брался из аргументов таблицы). #86529 (Daniil Ivanik).
  • Исправлено аварийное завершение работы, из-за которого некоторые корректные данные, отправленные пользователем в столбец AggregateFunction(quantileDD), могли приводить к бесконечной рекурсии операций слияния. #86560 (Raphaël Thériault).
  • Исправлено исключение в движке БД Backup, возникавшее при запросе с файлами part нулевого размера. #86563 (Max Justus Spransy).
  • Исправлено отсутствие заголовка фрагмента при включенном send_chunk_header и вызове UDF через HTTP-протокол. #86606 (Vladimir Cherkasov).
  • Исправлена логическая ошибка S3Queue “Expected current processor to be equal to ”, возникавшая из-за истечения срока действия сеанса Keeper. #86615 (Kseniia Sumarokova).
  • Ошибки, связанные с Nullable, при вставке и pruning. Это закрывает #86407. #86630 (scanhex12).
  • Не отключайте кэш файловой системы, если отключён кэш метаданных Iceberg. #86635 (Daniil Ivanik).
  • Исправлена ошибка ‘Deadlock in Parquet::ReadManager (single-threaded)’ в ридере Parquet v3. #86644 (Michael Kolupaev).
  • Исправлена работа IPv6 в listen_host для ArrowFlight. #86664 (Vitaly Baranov).
  • Исправлено завершение работы обработчика ArrowFlight. Этот PR исправляет #86596. #86665 (Vitaly Baranov).
  • Исправлена работа распределённых запросов при describe_compact_output=1. #86676 (Azat Khuzhin).
  • Исправлены ошибки в разборе определения окна и применении параметров запроса. #86720 (Azat Khuzhin).
  • Исправлено исключение Partition strategy wildcard can not be used without a '_partition_id' wildcard. при создании таблицы с PARTITION BY, но без подстановочного знака партиции, что ранее работало в версиях до 25.8. Закрывает https://github.com/ClickHouse/clickhouse-private/issues/37567. #86748 (Kseniia Sumarokova).
  • Исправлен LogicalError, возникавший при попытке параллельных запросов захватить одну блокировку. #86751 (Pervakov Grigorii).
  • Исправлена запись значения NULL в общие данные JSON во входном формате RowBinary, а также добавлены дополнительные проверки в ColumnObject. #86812 (Pavel Kruglov).
  • Добавлена поддержка типов JSON/Dynamic в таблице, созданной с помощью табличной функции cluster. #86821 (Pavel Kruglov).
  • Исправлена перестановка для пустого Tuple с limit. #86828 (Pavel Kruglov).
  • Не используйте отдельный узел Keeper для узлов постоянной обработки. Исправление для https://github.com/ClickHouse/ClickHouse/pull/85995. Закрывает #86406. #86841 (Kseniia Sumarokova).
  • Исправлена ошибка, из-за которой таблица с движком TimeSeries препятствовала созданию новой реплики в базе данных Replicated. #86845 (Nikolay Degterinsky).
  • Исправлены запросы к system.distributed_ddl_queue в случаях, когда у задач отсутствуют некоторые узлы Keeper. #86848 (Antonio Andelic).
  • Исправлено смещение указателя чтения в конце распакованного блока. #86906 (Pavel Kruglov).
  • Обработка исключения, возникающего во время асинхронного выполнения Iceberg Iterator. #86932 (Daniil Ivanik).
  • Исправлено сохранение крупных предварительно обработанных XML-конфигураций. #86934 (c-end).
  • Исправлено заполнение поля date в таблице system.iceberg_metadata_log. #86961 (Daniil Ivanik).
  • Исправлен бесконечный пересчёт TTL при использовании WHERE. #86965 (Anton Popov).
  • Исправлена недетерминированность результата функции, вычисляемой в CTE, в запросе. #86967 (Yakov Olkhovskiy).
  • Исправлен LOGICAL_ERROR в EXPLAIN при использовании pointInPolygon для столбцов первичного ключа. #86971 (Michael Kolupaev).
  • Исправлена возможная ошибка в результате функции uniqExact с модификаторами ROLLUP и CUBE. #87014 (Nikita Taranov).
  • Исправлена работа с таблицами озера данных, в имени которых есть percent-encoded последовательность. Закрывает #86626. #87020 (Anton Ivashkin).
  • Исправлена ошибка разрешения схемы таблицы в табличной функции url(), когда значение параметра parallel_replicas_for_cluster_functions равно 1. #87029 (Konstantin Bogdanov).
  • Корректное приведение типов результата PREWHERE после его разбиения на несколько шагов. #87040 (Antonio Andelic).
  • Исправлена работа легковесных обновлений с предложением ON CLUSTER. #87043 (Anton Popov).
  • Исправлена совместимость состояний некоторых агрегатных функций с аргументом типа String. #87049 (Pavel Kruglov).
  • Исправлено некорректное поведение IS NULL для столбцов с типом Nullable в OUTER JOIN при использовании optimize_functions_to_subcolumns, закрыт #78625. #87058 (Vladimir Cherkasov).
  • Исправлена проблема, из-за которой не передавалось имя модели из OpenAI. #87100 (Kaushik Iska).
  • EmbeddedRocksDB: путь должен находиться в каталоге user_files. #87109 (Raúl Marín).
  • Исправлена ошибка в таблицах KeeperMap, созданных до версии 25.1: после запроса DROP в ZooKeeper оставались данные. #87112 (Nikolay Degterinsky).
  • Исправлено чтение идентификаторов полей в типах Map и Array из Parquet. #87136 (scanhex12).
  • Исправлено чтение массива с подстолбцом размеров массива при ленивой материализации. #87139 (Pavel Kruglov).
  • Исправлен некорректный учет освобождения временных данных при отслеживании ограничения max_temporary_data_on_disk_size, закрывает #87118. #87140 (JIaQi).
  • Функция checkHeaders теперь корректно проверяет указанные заголовки и отклоняет запрещённые. Автор оригинала: Michael Anastasakis (@michael-anastasakis). #87172 (Raúl Marín).
  • Унифицирует поведение toDate и toDate32 для всех числовых типов. Исправляет проверку выхода за нижнюю границу диапазона у Date32 при приведении из int16. #87176 (Pervakov Grigorii).
  • Исправлена функция CASE при использовании аргументов Dynamic. #87177 (Pavel Kruglov).
  • Исправлена логическая ошибка, связанная с параллельными репликами в запросах с несколькими JOIN, в частности в запросах с RIGHT JOIN после LEFT/INNER JOIN. #87178 (Igor Nikonov).
  • В кэше определения схемы теперь учитывается настройка input_format_try_infer_variants. #87180 (Pavel Kruglov).
  • Теперь pathStartsWith сопоставляет только пути, находящиеся под prefix. #87181 (Raúl Marín).
  • Исправлено чтение пустого массива из пустой строки в CSV. #87182 (Pavel Kruglov).
  • Исправлен возможный неверный результат для некоррелированного EXISTS. Проблема возникала из-за execute_exists_as_scalar_subquery=1, добавленного в https://github.com/ClickHouse/ClickHouse/pull/85481 и затрагивающего 25.8. Исправляет #86415. #87207 (Nikolai Kochetov).
  • Исправлены логические ошибки в виртуальном столбце _row_number и позиционных удалениях в Iceberg. #87220 (Michael Kolupaev).
  • Исправлен LOGICAL_ERROR “Too large size passed to allocator” в JOIN, возникавший из-за сочетания константных и неконстантных блоков. #87231 (Azat Khuzhin).
  • Выдаёт ошибку, если iceberg_metadata_log не настроен, а пользователь пытается получить отладочную информацию о метаданных Iceberg. Исправляет обращение к nullptr. #87250 (Daniil Ivanik).
  • Исправлена работа легковесных обновлений с подзапросами, читающими из других таблиц MergeTree. #87285 (Anton Popov).
  • Исправлена оптимизация move-to-prewhere, которая не работала при наличии политики доступа на уровне строк. Продолжение #85118. Закрывает #69777. Закрывает #83748. #87303 (Nikolai Kochetov).
  • Исправлено применение патчей к столбцам с выражением по умолчанию, если эти столбцы отсутствуют в частях данных. #87347 (Anton Popov).
  • Исправлена проблема при обновлении EmbeddedRocksDB. #87392 (Raúl Marín).
  • Исправлена работа прямого чтения из текстового индекса в объектном хранилище. #87399 (Anton Popov).
  • Предотвращена возможность создания привилегии с несуществующим движком. #87419 (Jitendra).
  • Игнорировать только ошибки not found для s3_plain_rewritable (что может привести ко всевозможным проблемам). #87426 (Azat Khuzhin).
  • Исправлены словари с источником YTSaurus и со структурами *range_hashed. #87490 (MikhailBurdukov).
  • Исправлено создание массива пустых Tuple. #87520 (Pavel Kruglov).
  • Добавлена проверка недопустимых столбцов при создании временной таблицы. #87524 (Pavel Kruglov).
  • Никогда не добавляйте столбцы партиций Hive в заголовок формата. Исправлено #87515. #87528 (Arthur Passos).
  • Исправлена подготовка к чтению из формата в DeltaLake при использовании текстового формата. #87529 (Pavel Kruglov).
  • Исправлена проверка прав доступа при select и вставке в таблицы Buffer. #87545 (pufit).
  • Запрещено создавать индекс пропуска данных для таблицы S3. #87554 (Bharat Nallan).
  • Предотвращена утечка учитываемой памяти при асинхронном логировании (может приводить к значительному расхождению, за 10 часов — около 100 GiB) и в text_log (возможна почти такая же величина расхождения). #87584 (Azat Khuzhin).
  • Исправлена ошибка, которая могла приводить к переопределению глобальных настроек сервера настройками SELECT из View или Materialized View, если такое представление удалялось асинхронно, а сервер перезапускался до завершения фоновой очистки. #87603 (Alexander Tokmakov).
  • При расчете предупреждения о перегрузке памяти теперь исключаются байты кэша страниц в пространстве пользователя (если это возможно). #87610 (Bharat Nallan).
  • Исправлена ошибка, из-за которой неправильный порядок типов при десериализации CSV приводил к LOGICAL_ERROR. #87622 (Yarik Briukhovetskyi).
  • Исправлена некорректная обработка command_read_timeout для словарей executable. #87627 (Azat Khuzhin).
  • Исправлено некорректное поведение SELECT * REPLACE в предложении WHERE при использовании нового анализатора и фильтрации по заменённым столбцам. #87630 (xiaohuanlin).
  • Исправлена работа двухуровневой агрегации при использовании Merge поверх Distributed. #87687 (c-end).
  • Исправлено формирование выходного блока в алгоритме HashJoin, когда список строк правой таблицы не используется. Исправляет #87401. #87699 (Dmitry Novik).
  • Режим чтения с параллельными репликами мог выбираться некорректно, если после анализа индексов не оставалось данных для чтения. Закрывает #87653. #87700 (zoomxi).
  • Исправлена обработка столбцов timestamp / timestamptz в Glue. #87733 (Andrey Zvonov).
  • Исправляет #86587. #87761 (scanhex12).
  • Исправлена запись логических значений в интерфейсе PostgreSQL. #87762 (Artem Yurov).
  • Исправлена ошибка «неизвестная таблица» в запросе INSERT SELECT с CTE, #85368. #87789 (Guang Zhao).
  • Исправлено чтение null-подстолбца Map из Variant, который не может находиться внутри Nullable. #87798 (Pavel Kruglov).
  • Исправлена обработка ошибки при сбое полного удаления базы данных в кластере на вторичном узле. #87802 (Tuan Pham Anh).
  • Исправлено несколько ошибок в skip-индексах. #87817 (Raúl Marín).
  • В AzureBlobStorage обновили логику: теперь сначала выполняется попытка native copy, а при ошибке ‘Unauthroized’ происходит переход к read & write (в AzureBlobStorage, если для source и пункта назначения используются разные storage account, возникает ошибка ‘Unauthorized’). Также исправили применение “use_native_copy”, когда в configuration определена конечная точка. #87826 (Smita Kulkarni).
  • ClickHouse аварийно завершается, если файл ArrowStream содержит неуникальный словарь. #87863 (Ilya Golshtein).
  • Исправлено слияние с проекциями, когда последний блок оказывается пустым. #87928 (Raúl Marín).
  • Не удаляйте инъективные функции из GROUP BY, если типы аргументов не поддерживаются в GROUP BY. #87958 (Pavel Kruglov).
  • Исправлено некорректное исключение гранул/партиций для ключей на основе DateTime при использовании настройки session_timezone в запросах. #87987 (Eduard Karacharov).
  • Возвращает количество затронутых строк после выполнения запроса в интерфейсе PostgreSQL. #87990 (Artem Yurov).
  • Ограничено применение pushdown фильтра для PASTE JOIN, так как это может приводить к некорректным результатам. #88078 (Yarik Briukhovetskyi).
  • Применяет нормализацию URI перед выполнением проверки привилегий, добавленной в https://github.com/ClickHouse/ClickHouse/pull/84503. #88089 (pufit).
  • Исправлена логическая ошибка, возникавшая, когда ARRAY JOIN COLUMNS() не находил ни одного столбца в новом анализаторе. #88091 (xiaohuanlin).
  • Исправлено предупреждение “Высокое использование памяти ClickHouse” (без учёта page cache). #88092 (Azat Khuzhin).
  • Исправлена возможная порча данных в таблицах MergeTree с настроенным TTL для столбца. #88095 (Anton Popov).
  • Исправлено падение в функциях mortonEncode и hilbertEncode при вызове с пустым кортежем в качестве аргумента. #88110 (xiaohuanlin).
  • Теперь запросы ON CLUSTER будут выполняться быстрее, если в кластере есть неактивные реплики. #88153 (alesapin).
  • Теперь DDL-воркер очищает набор реплик от устаревших хостов. Это позволит сократить объём метаданных, хранимых в ZooKeeper. #88154 (alesapin).
  • В случае ошибки корректно выполнять откат операции перемещения каталога. Нужно перезаписать все объекты prefix.path, изменённые в ходе выполнения, а не только корневой. #88198 (Mikhail Artemenko).
  • Исправлена передача флага is_shared в ColumnLowCardinality. Это могло приводить к неверному результату group-by, если после предварительного вычисления и кэширования хеш-значений в ReverseIndex в столбец вставлялось новое значение. #88213 (Nikita Taranov).
  • Исправлена настройка рабочей нагрузки max_cpu_share. Теперь её можно использовать, даже если не задана настройка рабочей нагрузки max_cpus. #88217 (Neerav).
  • Исправлена ошибка, из-за которой особо тяжёлые мутации с подзапросами могли зависать на этапе подготовки. Теперь такие мутации можно останавливать с помощью SYSTEM STOP MERGES. #88241 (alesapin).
  • Теперь коррелированные подзапросы будут работать и с объектными хранилищами. #88290 (alesapin).
  • Избегайте инициализации баз данных DataLake при обращении к system.projections и system.data_skipping_indices. #88330 (Azat Khuzhin).
  • Теперь каталоги озёр данных будут отображаться в системных таблицах интроспекции только если show_data_lake_catalogs_in_system_tables явно включён. #88341 (alesapin).
  • Исправлено: DatabaseReplicated теперь учитывает настройку interserver_http_host. #88378 (xiaohuanlin).
  • Позиционные аргументы теперь явно отключены при определении проекций, поскольку на этом внутреннем этапе запроса они не имеют смысла. Это исправляет #48604. #88380 (Amos Bird).
  • Устранена квадратичная сложность в функции countMatches. Закрывает #88400. #88401 (Alexey Milovidov).
  • Сделать команды ALTER COLUMN ... COMMENT для таблиц KeeperMap реплицируемыми, чтобы они записывались в метаданные базы данных Replicated и распространялись на все реплики. Закрывает #88077. #88408 (Eduard Karacharov).
  • Исправлен случай ложной циклической зависимости с materialized view в базе данных Replicated, из-за которой нельзя было добавлять в базу данных новые реплики. #88423 (Nikolay Degterinsky).
  • Исправлена агрегация разреженных столбцов, если group_by_overflow_mode установлен в any. #88440 (Eduard Karacharov).
  • Исправлена ошибка “столбец не найден” при использовании query_plan_use_logical_join_step=0 в нескольких секциях FULL JOIN USING. Закрывает #88103. #88473 (Vladimir Cherkasov).
  • В больших кластерах с числом узлов > 10 восстановление с высокой вероятностью завершается ошибкой [941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 <Trace>: RestoreCoordinationOnCluster The version of node /clickhouse/backups/restore-7c551a77-bd76-404c-bad0-3213618ac58e/stage/num_hosts changed (attempt #9), will try again. Узел num_hosts одновременно перезаписывается множеством хостов. Это исправление делает параметр, управляющий числом попыток, динамическим. Закрывает #87721. #88484 (Mikhail f. Shiryaev).
  • Этот PR нужен только для обеспечения совместимости с 23.8 и более ранними версиями. Проблема совместимости была внесена этим PR: https://github.com/ClickHouse/ClickHouse/pull/54240 Этот SQL будет завершаться ошибкой при enable_analyzer=0 (до 23.8 всё работало корректно): select * from t1 s final join ( select * from t2 final ) r final on s.key = r.key join ( select * from t3 final ) c final on s.key = c.key Потому что JoinToSubqueryTransformVisitor перепишет этот SQL в SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c FINAL ) AS `--.t` ON `_--s.key` = `_--c.key` Мы хотим переписать этот SQL так (нужно лишь переместить последний FINAL): SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c ) AS `--.t` FINAL ON `_--s.key` = `_--c.key`. #88491 (JIaQi).
  • Исправлено переполнение целочисленного типа, обнаруженное UBSAN, в сообщении об ошибке accurateCast при преобразовании больших значений в DateTime. #88520 (xiaohuanlin).
  • Исправлена работа coalescing merge tree для типов Tuple. Это закрывает #88469. #88526 (scanhex12).
  • Запретили удаления для iceberg_format_version=1. Это закрывает #88444. #88532 (scanhex12).
  • Этот патч исправляет операцию перемещения на дисках plain-rewritable для каталогов произвольной глубины. #88586 (Mikhail Artemenko).
  • Исправлено поведение SQL SECURITY DEFINER для функций *cluster. #88588 (Julian Maicher).
  • Исправлено возможное аварийное завершение, вызванное параллельной мутацией базовых const-столбцов PREWHERE. #88605 (Azat Khuzhin).
  • Исправлено чтение из текстового индекса и включён кэш условий запроса (если включены настройки use_skip_indexes_on_data_read и use_query_condition_cache). #88660 (Anton Popov).
  • Исключение Poco::TimeoutException, сгенерированное в Poco::Net::HTTPChunkedStreamBuf::readFromDevice, приводит к аварийному завершению процесса с сигналом SIGABRT. #88668 (Miсhael Stetsyuk).
  • Исправлено добавление записей в system.zookeeper_connection_log в случае, если ClickHouse впервые подключается после перезагрузки конфигурации. #88728 (Antonio Andelic).
  • Исправлена ошибка, из-за которой преобразование DateTime64 в Date при date_time_overflow_behavior = 'saturate' могло приводить к неверным результатам для значений вне допустимого диапазона при работе с часовыми поясами. #88737 (Manuel).
  • N-я попытка исправить ошибку “having zero bytes error” в движке таблицы S3 при включенном кэше. #88740 (Kseniia Sumarokova).
  • Исправлена проверка прав доступа при выполнении SELECT для табличной функции loop. #88802 (pufit).
  • Перехватывать исключения в случае сбоя асинхронного логирования, чтобы предотвратить аварийное завершение программы. #88814 (Raúl Marín).
Последнее изменение 10 июня 2026 г.