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

Журнал изменений v25.6 для Cloud

Обратные несовместимые изменения

  • Функция geoToH3() теперь принимает аргументы в порядке (lat, lon, res) (что является стандартным порядком для геометрических функций). Пользователи, которые хотят сохранить старый порядок (lon, lat, res), могут установить настройку geotoh3_lon_lat_input_order = true. #78852 (Pratima Patel).
  • Индексы типа full_text были переименованы в gin. Это соответствует более привычной терминологии PostgreSQL и других баз данных. Существующие индексы типа full_text по‑прежнему можно загрузить, но при попытке использовать их в поиске они будут выбрасывать исключение (предлагая вместо этого индексы gin). #79024 (Robert Schulze).
  • Добавлена настройка кэша файловой системы allow_dynamic_cache_resize (по умолчанию false), которая позволяет динамически изменять размер кэша файловой системы. Причина: в некоторых средах (ClickHouse Cloud) все события масштабирования происходят через перезапуск процесса, и важно, чтобы эта функция была явно отключена, чтобы иметь больший контроль над поведением, а также в качестве меры безопасности. Этот PR помечен как обратно несовместимый, потому что в старых версиях динамическое изменение размера кэша работало по умолчанию без специальной настройки. #79148 (Kseniia Sumarokova).
  • Удалена поддержка устаревших типов индексов annoy и usearch. Оба уже долгое время являлись заглушками, то есть любая попытка использовать эти устаревшие индексы всё равно приводила к ошибке. Если у вас всё ещё есть индексы annoy и usearch, пожалуйста, удалите их. #79802 (Robert Schulze). #* Удалена серверная настройка format_alter_commands_with_parentheses. Эта настройка была добавлена и по умолчанию отключена в версии 24.2. В версии 25.2 она была включена по умолчанию. Поскольку не существует LTS‑версий, которые не поддерживают новый формат, мы можем удалить эту настройку. #79970 (János Benjamin Antal). #* Незначительное изменение: принудительно сделать серверные настройки backup_threads и restore_threads отличными от нуля. #80224 (Raúl Marín).
  • Исправлена работа bitNot() для String, чтобы возвращать строку, завершающуюся нулевым байтом. #80791 (Azat Khuzhin).

Новая возможность

  • Добавлена новая опция в SETTINGS движка MergeTree, которая задаёт кодек сжатия по умолчанию на случай, если в запросе CREATE для соответствующих столбцов он явно не задан. Это закрывает #42005. #66394 (gvoelfin).
  • Продолжение к https://github.com/ClickHouse/ClickHouse/pull/71943. Этот PR реализует типы данных Time/Time64. Реализованы новые типы данных: Time (HHH:MM:SS) и Time64 (HHH:MM:SS.<fractional>), некоторые базовые функции приведения типов и функции для взаимодействия с другими типами данных. Также было изменено имя существующей функции toTime на toTimeWithFixedDate, поскольку функция toTime требуется для реализации операций приведения типов. #75735 (Yarik Briukhovetskyi).
  • Добавлена поддержка коррелированных подзапросов в качестве аргумента выражения EXISTS в предложении WHERE. Закрывает #72459. #76078 (Dmitry Novik).
  • Разрешена запись в таблицы с движком Merge. #77484 (Anton Ivashkin).
  • Распределённый INSERT SELECT для реплицируемых таблиц MergeTree теперь эффективно использует параллельные реплики, выполняя операции INSERT параллельно: на разных узлах выбираются разные данные и вставляются независимо. #78041 (Igor Nikonov).
  • Добавлены функции mapContainsValuesLike/mapContainsValues/mapExtractValuesLike для фильтрации по значениям типа Map и их поддержка в индексах на основе Bloom Filter. #78171 (UnamedRus).
  • Добавлена таблица system.iceberg_history. #78244 (Smita Kulkarni).
  • Добавлено планирование слотов запросов для рабочих нагрузок; подробнее см. по адресу https://clickhouse.com/docs/operations/workload-scheduling#query_scheduling. #78415 (Sergei Trifonov).
  • Добавлены функции getServerSetting и getMergeTreeSetting. Закрывает https://github.com/clickhouse/clickhouse/issues/78318. #78439 (NamNguyenHoai).
  • Поддержка запрещённых значений в ограничениях настроек. #78499 (Bharat Nallan).
  • Добавлена новая настройка iceberg_enable_version_hint для использования файла version-hint.text. #78594 (Arnaud Briche).
  • Добавляет возможность очищать отдельные таблицы в базе данных, отфильтрованные с помощью ключевого слова LIKE. #78597 (Yarik Briukhovetskyi).
  • clickhouse-local (и его короткий псевдоним ch) теперь неявно используют FROM table, если на вход подаются данные для обработки. Это закрывает #65023. Также в clickhouse-local включено автоматическое определение формата, если --input-format не указан и обрабатывается обычный файл. #79085 (Alexey Milovidov).
  • Добавлены функции icebergHash и icebergBucketTransform. Реализована поддержка отсечения файлов данных в таблицах Iceberg, секционированных с помощью преобразования bucket transfom. #79262 (Daniil Ivanik).
  • Добавлена поддержка таблиц CoalescingMergeTree. Это закрывает #78869. #79344 (Konstantin Vedernikov).
  • Добавлены функции stringBytesUniq и stringBytesEntropy для поиска потенциально случайных или зашифрованных данных. #79350 (Sachin Kumar Singh).
  • Добавлена поддержка виртуального столбца _part_starting_offset в таблицах семейства MergeTree. Этот столбец представляет собой накопительное количество строк во всех предшествующих частях, вычисляемое во время выполнения запроса на основе текущего списка частей. Накопительные значения сохраняются на протяжении всего выполнения запроса и продолжают действовать даже после отсечения частей. Соответствующая внутренняя логика была переработана для поддержки этого поведения. #79417 (Amos Bird).
  • Добавлена настройка enable_shared_storage_snapshot_in_query для включения совместного использования одного снимка хранилища во всех подзапросах одного запроса. Это обеспечивает согласованное чтение из одной и той же таблицы, даже если таблица упоминается в одном запросе несколько раз. #79471 (Amos Bird).
  • Поддержана запись столбцов CH JSON в Parquet и чтение столбцов Parquet JSON напрямую как столбцов CH JSON. #79649 (Nihal Z. Miaji).
  • В состав ClickHouse добавлен пакет chdig — TUI‑интерфейс для ClickHouse, аналог top. #79666 (Azat Khuzhin).
  • Добавлена поддержка типа MultiPolygon для pointInPolygon. #79773 (Nihal Z. Miaji).
  • Добавлена поддержка GeoParquet. Это закрывает #75317. #79777 (Konstantin Vedernikov).
  • Добавлена поддержка выполнения запросов к delta-таблицам, расположенным в локальной файловой системе, с помощью табличной функции deltaLakeLocal. #79781 (roykim98).
  • Добавлена поддержка кодирования и декодирования в base32. #79809 (Joanna Hulboj).
  • Векторный поиск в ClickHouse теперь поддерживает как предварительную, так и последующую фильтрацию и предоставляет соответствующие настройки для более точного управления (issue #78161). #79854 (Shankar Iyer).
  • Добавлена поддержка функций чтения формата WKB. Это частично закрывает #43941. #80139 (Konstantin Vedernikov).
  • Добавлена новая настройка cast_string_to_date_time_mode, которая позволяет выбрать режим разбора DateTime при приведении из типа String. #80210 (Pavel Kruglov).
  • Добавлены функции кодирования и декодирования в форматах Bech32 и Bech32m (задача #40381). #80239 (George Larionov).
  • Добавлена поддержка параметра disk для движков БД Atomic и Ordinary, позволяющего задавать диск для хранения файлов метаданных таблиц. #80546 (Tuan Pham Anh).
  • Вспомогательные функции для распаковки и сравнения частей MergeTree. #80573 (Mikhail Artemenko).
  • Вспомогательные функции timeSeries* для ускорения некоторых сценариев при работе с временными рядами: - ресемплирование данных к временной сетке с указанными начальной и конечной метками времени и шагом - вычисление PromQL-подобных delta, rate, idelta и irate. #80590 (Alexander Gololobov).
  • Добавлена возможность фильтрации частей, выбранных для запроса, по диску, на котором они размещены. #80650 (tanner-bruce).
  • Добавлена начальная страница со списком встроенных веб-инструментов. Она будет открываться при обращении пользовательского агента, похожего на браузер. #81129 (Alexey Milovidov).
  • Добавлена возможность фильтровать значения NULL в arrayFirst, arrayFirstIndex, arrayLast и arrayLastIndex. Исправляет #81113. #81197 (Lennard Eijsackers).

Экспериментальная функциональность

  • Каталог Hive metastore для озера данных на базе Iceberg. #77677 (Konstantin Vedernikov).
  • Явные параметры задаются в виде пар ключ–значение. В настоящее время поддерживаются обязательный параметр tokenizer и два необязательных параметра max_rows_per_postings_list и ngram_size. #80262 (Elmi Ahmadov).
  • Экспериментальные индексы типа gin были переименованы в text. Существующие индексы типа gin по-прежнему могут быть загружены, но при попытке использовать их в поиске будет выброшено исключение (с рекомендацией использовать индексы типа text). #80855 (Robert Schulze).

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

  • Ускорена обработка вторичных индексов за счёт вычисления их выражений сразу на нескольких гранулах. #64109 (Alexey Milovidov).
  • Добавлен порог (управляется настройкой parallel_hash_join_threshold), ниже которого при размере правой таблицы используется алгоритм hash. #76185 (Nikita Taranov).
  • Существующая реализация Pipe::resize создаёт одиночный узел Resize или StrictResize, вставляя его в топологию конвейера, который затем выступает в роли центрального узла, соединяющего все входные потоки (вышестоящие узлы) с единым набором выходных потоков (нижестоящие узлы). Такой дизайн приводит к конкуренции за ExecutingGraph::Node::status_mutex во время выполнения графа конвейера, особенно в средах с большим количеством ядер. Когда конвейеры масштабируются до десятков или сотен потоков, эта конкуренция приводит к следующему: #77562 (Zhiguo Zhou).
  • Улучшена производительность S3Queue/AzureQueue за счет возможности параллельной вставки данных с помощью INSERT (можно включить с помощью настройки очереди parallel_inserts=true). Ранее S3Queue/AzureQueue могли выполнять параллельно только первую часть конвейера (загрузка, парсинг), а INSERT выполнялись в одном потоке. При этом именно INSERT почти всегда являются узким местом. Теперь производительность будет почти линейно масштабироваться с ростом processing_threads_num. #77671 (Azat Khuzhin).
  • Изменён формат компактных частей, чтобы сохранять метки для каждого подпотока и иметь возможность читать отдельные подколонки. Старый компактный формат по‑прежнему поддерживается для чтения и может быть включён для записи с помощью настройки MergeTree write_marks_for_substreams_in_compact_parts. По умолчанию он отключён для более безопасного обновления, так как изменяет хранение компактных частей. В одном из следующих релизов он будет включён по умолчанию. #77940 (Pavel Kruglov).
  • Добавлена новая настройка use_skip_indexes_in_final_exact_mode. Если запрос к таблице ReplacingMergeTree содержит оператор FINAL, чтение только диапазонов таблицы на основе пропускающих индексов может привести к некорректному результату. Эта настройка позволяет гарантировать корректные результаты за счёт сканирования более новых частей, которые пересекаются с диапазонами первичного ключа, возвращёнными пропускающим индексом. Установите 0, чтобы отключить, 1, чтобы включить. #78350 (Shankar Iyer).
  • Теперь для определения размера задачи чтения при включённых параллельных репликах мы используем количество реплик. Это обеспечивает более равномерное распределение работы между репликами, когда объём данных для чтения не слишком велик. #78695 (Nikita Taranov).
  • Разрешить параллельное слияние состояний uniqExact на завершающем этапе распределённой агрегации. #78703 (Nikita Taranov).
  • Исправлена возможная деградация производительности при параллельном слиянии состояний uniqExact для агрегации по ключу. #78724 (Nikita Taranov). #* Заменены запросы DELETE FROM ... WHERE 1 на TRUNCATE. (Отменено). #78739 (Konstantin Vedernikov).
  • Уменьшено количество вызовов API List Blobs в хранилище Azure. #78860 (Julia Kartseva).
  • Условия равенства из шага плана запроса filter объединяются в условие JOIN там, где это возможно, чтобы их можно было использовать в качестве ключей хеш-таблицы. #78877 (Dmitry Novik).
  • Улучшена производительность разбора путей Hive за счёт использования extractKeyValuePairs вместо регулярных выражений. #79067 (Arthur Passos).
  • Исправлены проблемы с производительностью распределённого INSERT SELECT с параллельными репликами. #79441 (Azat Khuzhin).
  • Разрешено перемещать условия с подстолбцами в PREWHERE. #79489 (Pavel Kruglov).
  • Повышена производительность всех типов bloom-фильтров. #79800 (Delyan Kratunov).
  • Запретить LogSeriesLimiter выполнять очистку при каждом создании экземпляра, чтобы избежать конкуренции за блокировки и регрессий производительности в высококонкурентных сценариях. #79864 (filimonov).
  • Включён compile_expressions (JIT-компилятор для фрагментов обычных выражений) по умолчанию. Тем самым закрыты #51264, #56386 и #66486. #79907 (Alexey Milovidov).
  • Ускорены запросы за счёт оптимизации тривиального COUNT. #79945 (Raúl Marín).
  • Добавлен оптимизированный путь в UniqExactSet::merge, когда одно из множеств пустое. Кроме того, теперь если множество LHS является двухуровневым, а RHS — одноуровневым, мы не будем выполнять преобразование RHS в двухуровневое множество. #79971 (Nikita Taranov).
  • Добавить атрибут __attribute__((always_inline)) к convertDecimalsImpl. #79999 (Konstantin Bogdanov).
  • По умолчанию параметр input_format_parquet_bloom_filter_push_down теперь имеет значение true. Также исправлена ошибка в истории изменений настроек. #80058 (Alexey Milovidov). #* Логирование по умолчанию сделано асинхронным. Это можно отключить, задав <async>false</async> в секции <logger>. #80125 (Raúl Marín).
  • Повышена эффективность повторного использования памяти и снижено число страничных ошибок (page faults) при использовании двухуровневых хэш-таблиц. #80245 (Jiebin Sun).
  • Избегать ненужных обновлений и снижать конкуренцию за блокировки в QueryConditionCache. #80247 (Jiebin Sun).
  • Небольшая оптимизация функции concatenateBlocks, которая может быть полезна для параллельного хеш-соединения. #80328 (李扬).
  • При выборе диапазонов меток из диапазона первичного ключа бинарный поиск не может быть использован, если первичный ключ обёрнут функциями. Этот PR смягчает это ограничение: бинарный поиск по‑прежнему может применяться, когда первичный ключ обёрнут цепочкой всегда монотонных функций или когда RPN содержит всегда истинный элемент. Этот PR закрывает #45536. #80597 (zoomxi).
  • Ускорено завершение работы движка Kafka (убрана дополнительная задержка в 3 секунды при наличии нескольких таблиц Kafka). #80796 (Azat Khuzhin).
  • Снижено потребление памяти при асинхронных вставках и повышена производительность запросов INSERT. #80972 (Raúl Marín).
  • Не выполнять профилирование процессоров, если таблица логов отключена. #81256 (Raúl Marín).
  • Ускорена работа toFixedString, когда исходное значение уже полностью соответствует запрошенному. #81257 (Raúl Marín).
  • Не обрабатывать значения квоты, если для пользователя не заданы ограничения. #81549 (Raúl Marín).
  • Сделан ProcfsMetricsProvider thread_local, чтобы оставлять файлы открытыми между задачами. #81576 (Raúl Marín).
  • Исправлена регрессия производительности в механизме отслеживания использования памяти. #81694 (Michael Kolupaev).

Улучшение

#* clickhouse-local будет сохранять базы данных после перезапуска, если указать аргумент командной строки --path. Это закрывает задачи #50647 и #49947. #71722 (Alexey Milovidov).

  • EXPLAIN SYNTAX теперь использует новый анализатор. Он возвращает абстрактное синтаксическое дерево (AST), построенное из дерева запроса. Добавлен параметр query_tree_passes для управления количеством проходов, выполняемых перед преобразованием дерева запроса в AST. #74536 (Vladimir Cherkasov). #* По умолчанию используется политика кэширования SLRU в файловом кэше. #75072 (Kseniia Sumarokova).
  • Переработана логика отправки данных в представления. #77309 (Sema Checherinda).
  • Функции таблиц объектного хранилища (например, s3Cluster) теперь распределяют файлы по репликам для чтения на основе согласованного хэша, что улучшает локальность кэша. #77326 (Andrej Hoos).
  • Обновлять учетные данные S3 после ошибки AuthenticationRequired. #77353 (Vitaly Baranov).
  • Встроена конфигурация прокси в некоторые HTTP-буферы с помощью билдеров. #77693 (Arthur Passos).
  • Добавлены метрики словарей в system.asynchronous_metrics - DictionaryMaxUpdateDelay — максимальная задержка обновления словаря (в секундах). - DictionaryTotalFailedUpdates — количество ошибок со времени последней успешной загрузки во всех словарях. #78175 (Vlad).
  • Добавлены функции divideOrNull, moduloOrNull, intDivOrNull, positiveModuloOrNull, которые возвращают NULL, если правый аргумент равен нулю. #78276 (kevinyhzou).
  • Расширена поддержка функции isIPAddressInRange для типов данных String, IPv4, IPv6, Nullable(String), Nullable(IPv4) и Nullable(IPv6). #78364 (YjyJeff).
  • Динамическое изменение настроек пулера подключений движка PostgreSQL. #78414 (Samay Sharma).
  • Позволяет указывать _part_offset в обычной проекции. Это первый шаг к построению индекса проекции. Может использоваться вместе с #58224 и помочь улучшить https://github.com/ClickHouse/ClickHouse/pull/63207. #78429 (Amos Bird).
  • Улучшена оптимизация ключа сегментирования для распределённых запросов. #78452 (fhw12345).
  • Добавлены новые столбцы (create_query и source) в таблицу system.named_collections. Закрывает #78179. #78582 (MikhailBurdukov).
  • Добавлено поле condition в системную таблицу system.query_condition_cache. Оно хранит исходный текст условия, хеш которого используется как ключ в кэше условий запроса. #78671 (Robert Schulze).
  • Реализована логика перераспределения, аналогичная Kafka re-balance, для StorageKafka2 с использованием ClickHouse Keeper. Для каждой реплики поддерживаются два типа блокировок партиций: постоянные и временные. Реплика пытается удерживать постоянные блокировки как можно дольше; в любой момент времени на реплике не более чем all_topic_partitions / active_replicas_count (где all_topic_partitions — количество всех партиций, а active_replicas_count — количество активных реплик) постоянных блокировок. Если их становится больше, реплика освобождает часть партиций. Некоторые партиции временно удерживаются репликой. Максимальное количество временных блокировок на реплике динамически изменяется, чтобы дать другим репликам возможность перевести часть партиций в постоянные блокировки. При обновлении временных блокировок реплика освобождает их все и затем пытается захватить некоторые другие. #78726 (Daria Fomina).
  • Добавлены параметры таблицы для настройки SASL и учетных данных в движке таблицы Kafka. Это позволяет настраивать аутентификацию с использованием SASL для Kafka и систем, совместимых с Kafka, непосредственно в операторе CREATE TABLE, вместо использования файлов конфигурации или именованных коллекций. #78810 (Christoph Wurm).
  • Добавлено предупреждение о базах данных, которые, возможно, были созданы для сохранения повреждённых таблиц. #78841 (János Benjamin Antal).
  • Индексы сходства векторов теперь можно создавать по столбцам типа BFloat16. #78850 (Robert Schulze).
  • Добавлена поддержка Unix-меток времени с дробной частью при разборе DateTime64 в режиме best-effort. #78908 (Pavel Kruglov).
  • В хранилище DeltaLake в реализации delta-kernel исправлена поддержка columnMappingMode.name, добавлены тесты для эволюции схемы. #78921 (Kseniia Sumarokova).
  • Улучшена вставка в столбец Variant в формате Values за счёт более качественного преобразования значений. #78923 (Pavel Kruglov).
  • Добавлен виртуальный столбец _time в движок S3Queue. #78926 (Anton Ivashkin).
  • Функция tokens была расширена и теперь принимает дополнительный аргумент «tokenizer», а также другие аргументы, специфичные для токенизатора. #79001 (Elmi Ahmadov).
  • Оператор SHOW CLUSTER теперь раскрывает макросы (если они есть) в своём аргументе. #79006 (arf42).
  • Функции хеширования теперь поддерживают значения NULL внутри массивов, кортежей и ассоциативных массивов (maps). (issues #48365 и #48623). #79008 (Michael Kolupaev).
  • Поддержка обновления в таблицах MergeTree в режиме только для чтения. #79033 (Alexey Milovidov). #* Обновление cctz до версии 2025a. #79043 (Raúl Marín).
  • Добавлена поддержка горячей перезагрузки для настроек, управляющих разрывом соединения при перегрузке CPU. #79052 (Alexey Katsman).
  • Так удобнее для пользователя. #79066 (Alexey Milovidov).
  • Включить кэш условий запроса по умолчанию. #79080 (Alexey Milovidov). #* Сделать действия с вкладками в Web UI отменяемыми. Это закрывает #71284. #79084 (Alexey Milovidov).
  • Удалять настройки во время recoverLostReplica аналогично тому, как это сделано в https://github.com/ClickHouse/ClickHouse/pull/78637. #79113 (Nikita Mikhaylov).
  • Добавлены события профилирования ProfileEvents ParquetReadRowGroups и ParquetPrunedRowGroups для профилирования отсечения индекса Parquet. #79180 (flynn).
  • Добавлен префикс контейнера к путям данных, отображаемым в system.tables для простых дисков в Azure Blob Storage, что делает представление данных единообразным с S3 и GCP. #79241 (Julia Kartseva).
  • Добавлена поддержка изменения базы данных в кластере. #79242 (Tuan Pham Anh).
  • Следует явно пропускать пропущенные запуски сбора статистики для QueryMetricLog, иначе журналу потребуется много времени, чтобы синхронизироваться с текущим временем. #79257 (Mikhail Artemenko).
  • Добавлена возможность применять операции легковесного удаления «на лету» (с настройками lightweight_deletes_sync = 0, apply_mutations_on_fly = 1). #79281 (Anton Popov).
  • Оптимизированы мутации ALTER ... DELETE для частей, в которых все строки подлежат удалению. Теперь в таких случаях вместо исходной части создаётся пустая часть без выполнения самой мутации. #79307 (Anton Popov).
  • Небольшие оптимизации в CHColumnToArrowColumn. #79308 (Bharat Nallan).
  • Настройка allow_archive_path_syntax была помечена как экспериментальная по ошибке. Добавлен тест, предотвращающий включение экспериментальных настроек по умолчанию. #79320 (Alexey Milovidov).
  • Настройки кэша страниц теперь можно задавать на уровне отдельного запроса. Это необходимо для более быстрого экспериментирования и возможности тонкой настройки для запросов с высокой пропускной способностью и низкой задержкой. #79337 (Alexey Milovidov).
  • Не выводить подсказки для чисел в форматах Pretty для значений, которые выглядят как типичные 64-битные хэши. Это закрывает #79334. #79338 (Alexey Milovidov).
  • Если данные в формате Pretty выводятся в терминал и следующий блок имеет те же ширины столбцов, что и предыдущий, он может выводиться как продолжение предыдущего блока, «склеивая» его с предыдущим путём перемещения курсора вверх. Это закрывает #79333. Эта возможность управляется новой настройкой output_format_pretty_glue_chunks. #79339 (Alexey Milovidov).
  • Цвета графиков на расширенных дашбордах будут вычисляться на основе хеша соответствующего запроса. Это упростит запоминание и поиск нужного графика при прокрутке дашборда. #79341 (Alexey Milovidov).
  • Добавлена асинхронная метрика FilesystemCacheCapacity — общая ёмкость виртуальной файловой системы cache. Она полезна для глобального мониторинга инфраструктуры. #79348 (Alexey Milovidov).
  • Оптимизирован доступ к system.parts (размер столбцов/индексов читается только по запросу). #79352 (Azat Khuzhin).
  • Теперь для запроса 'SHOW CLUSTER <name>' выбираются только важные поля вместо всех полей. #79368 (Tuan Pham Anh).
  • Добавлена возможность указывать настройки хранилища для DatabaseCatalog. #79407 (Kseniia Sumarokova).
  • Добавлена поддержка локального хранилища в ядре Delta. #79416 (Kseniia Sumarokova).
  • Добавлена настройка на уровне запроса для включения delta-kernel-rs: allow_experimental_delta_kernel_rs. #79418 (Kseniia Sumarokova).
  • Исправлен возможный бесконечный цикл при перечислении blob-объектов в хранилищах Azure/S3. #79425 (Alexander Gololobov).
  • Теперь ClickHouse также принимает параметры запроса в виде param-<name> (через дефис) наряду с param_<name> (через подчёркивание). Тем самым закрывается задача #63093. #79429 (Engel Danila). #* Добавлена настройка кэша файловой системы max_size_ratio_to_total_space. #79460 (Kseniia Sumarokova).
  • Подробное предупреждающее сообщение о скидке на трафик при копировании данных с локального хранилища в удалённый S3 с включённой проверкой контрольной суммы. #79464 (VicoWu).
  • Для clickhouse-benchmark параметр reconnect перенастроен так, чтобы он принимал значения 0, 1 или N для соответствующего количества попыток переподключения. #79465 (Sachin Kumar Singh).
  • Добавлена настройка input_format_max_block_size_bytes для ограничения в байтах размера блоков, создаваемых во входных форматах. Это может помочь избежать высокого потребления памяти при импорте данных, когда строки содержат очень большие значения. #79495 (Pavel Kruglov).
  • Повышена скорость работы и снижено потребление памяти sparseGrams. #79517 (Konstantin Vedernikov).
  • По возможности избегать лишнего копирования блока при вставке в Compact-часть. #79536 (Pavel Kruglov).
  • Включить реализацию delta-kernel для хранилища DeltaLake по умолчанию. #79541 (Kseniia Sumarokova).
  • Если чтение с URL-адреса включает несколько перенаправлений, параметр enable_url_encoding корректно применяется на всех перенаправлениях в цепочке. #79563 (Shankar Iyer).
  • Разрешить ALTER TABLE ... MOVE|REPLACE PARTITION для таблиц на разных дисках plain_rewritable. #79566 (Julia Kartseva).
  • Поддержаны скалярные коррелированные подзапросы в предложении WHERE. Закрывает #6697. #79600 (Dmitry Novik).
  • Ранее при input_format_parquet_max_block_size = 0 ClickHouse зависал. Теперь это поведение исправлено. Это закрывает #79394. #79601 (abashkeev).
  • Добавлена настройка throw_on_error для startup_scripts: если throw_on_error установлена в true, сервер не запустится, пока все запросы не завершатся успешно. По умолчанию throw_on_error равна false, что сохраняет прежнее поведение. #79732 (Aleksandr Musorin).
  • Индекс сходства векторов теперь также используется, если опорный вектор имеет тип Array(BFloat16). #79745 (Shankar Iyer).
  • Добавить last_error_message, last_error_trace и query_id в таблицу system.error_log. Связанный тикет #75816. #79836 (Andrei Tinikov). #* Включить отправку отчётов о сбоях по умолчанию. Это можно отключить в конфигурационном файле сервера. #79838 (Alexey Milovidov).
  • Системная таблица system.functions теперь показывает, в какой версии ClickHouse функции впервые появились. #79839 (Robert Schulze).
  • Добавлена настройка access_control_improvements.enable_user_name_access_type. Эта настройка позволяет включать или отключать точные гранты для пользователей и ролей, введённые в https://github.com/ClickHouse/ClickHouse/pull/72246. Имеет смысл отключить эту настройку, если в кластере есть реплики версии ниже 25.1. #79842 (pufit).
  • Теперь корректная реализация метода ASTSelectWithUnionQuery::clone() учитывает и поле is_normalized. Это может помочь с #77569. #79909 (Nikita Mikhaylov).
  • Добавлена поддержка коррелированных подзапросов в списке проекций для простых случаев. #79925 (Dmitry Novik).
  • Исправлено непоследовательное форматирование некоторых запросов с оператором EXCEPT. Если левая часть оператора EXCEPT заканчивается на *, отформатированный запрос теряет круглые скобки и затем разбирается как * с модификатором EXCEPT. Такие запросы обнаруживаются фаззером и в реальных сценариях маловероятны. Закрывает #79950. #79952 (Alexey Milovidov).
  • Добавлена возможность добавлять http_response_headers в http_handlers любого типа. #79975 (Andrey Zvonov).
  • Незначительное улучшение разбора типа JSON за счет кэширования порядка десериализации вариантов. #79984 (Pavel Kruglov).
  • Разрешён перенос предиката GLOBAL [NOT] IN в секцию PREWHERE, если применимо. #79996 (Eduard Karacharov).
  • Добавлена настройка s3_slow_all_threads_after_network_error. #80035 (Vitaly Baranov).
  • Уровень логирования сообщений о выбранных для слияния частях был неверным (Information). Закрывает #80061. #80062 (Alexey Milovidov).
  • Функция reverse теперь поддерживает тип данных Tuple. Закрывает #80053. #80083 (flynn).
  • Параметр enble_url_encoding теперь по умолчанию имеет значение False. #80088 (Shankar Iyer).
  • Этот небольшой патч решает проблему #75817: позволяет получать данные о auxiliary_zookeepers из таблицы system.zookeeper. #80146 (Nikolay Govorov).
  • Векторный поиск с использованием индекса векторного сходства теперь имеет статус beta (ранее был experimental). #80164 (Robert Schulze).
  • Добавлены асинхронные метрики для TCP-сокетов сервера. Это улучшает обсервабилити. Закрывает #80187. #80188 (Alexey Milovidov).
  • Функция tokens теперь поддерживает string в качестве токенизатора. #80195 (Robert Schulze).
  • Параллельные реплики: избегайте ожидания медленных, неиспользуемых реплик, если все задачи чтения были назначены другим репликам. #80199 (Igor Nikonov).
  • Добавлена поддержка anylast_respect_nulls и any_respect_nulls в simpleAggregateFunction. #80219 (Diskein).
  • Убрать лишний вызов adjustCreateQueryForBackup() для реплицируемых баз данных. #80282 (Vitaly Baranov). #* Разрешить использование дополнительных параметров (которые идут после --, например -- --config.value='abc') в clickhouse-local без знака равенства. Закрывает #80292. #80293 (Alexey Milovidov).
  • Подсвечивать метасимволы в запросах SHOW ... LIKE. Это закрывает #80275. #80297 (Alexey Milovidov). #* Сделать SQL UDF персистентной в clickhouse-local. Ранее созданная функция будет загружаться при запуске. Это закрывает #80085. #80300 (Alexey Milovidov).
  • Реализована поддержка сравнения между Time/Time64. #80327 (Yarik Briukhovetskyi).
  • Исправлено описание в плане выполнения запроса для предварительного шага DISTINCT. #80330 (UnamedRus).
  • Разрешено использование именованных коллекций в ODBC и JDBC. #80334 (Andrey Zvonov).
  • Включена поддержка фильтрации с использованием нескольких проекций, что позволяет использовать более одной проекции для фильтрации на уровне частей. Это исправляет #55525. Это второй шаг на пути к реализации projection index, после #78429. #80343 (Amos Bird).
  • Метрики числа дисков только для чтения и повреждённых дисков. Индикатор пишет в журнал при запуске DiskLocalCheckThread. #80391 (VicoWu).
  • Добавлена поддержка хранилища s3_plain_rewritable с проекциями. В предыдущих версиях метаданные объектов в S3, ссылающихся на проекции, не обновлялись при их перемещении. Закрывает #70258. #80393 (Sav).
  • Для parallel replicas теперь используется отдельный таймаут подключения, см. настройку parallel_replicas_connect_timeout_ms. Ранее для запросов с parallel replicas в качестве таймаута подключения использовались настройки connect_timeout_with_failover_ms/connect_timeout_with_failover_secure_ms (по умолчанию 1 секунда). #80421 (Igor Nikonov).
  • Команда SYSTEM UNFREEZE больше не пытается искать части на дисках в режиме «только чтение» и с однократной записью. Это закрывает #80430. #80432 (Alexey Milovidov).
  • Изменён уровень логирования сообщения о слиянии частей с INFO на TRACE. #80476 (Hans Krutzer).
  • Реализована «плоская» сериализация для Dynamic и JSON в формате Native, которая позволяет сериализовать и десериализовать данные Dynamic и JSON без специальных структур, таких как shared variant для Dynamic и shared data для JSON. Эту сериализацию можно включить настройкой output_format_native_use_flattened_dynamic_and_json_serialization. Её можно использовать для упрощения поддержки Dynamic и JSON в протоколе TCP в клиентах на разных языках. #80499 (Pavel Kruglov).
  • Изменяет поведение по умолчанию механизма отсечения партиций для таблицы Iceberg. #80583 (Melvyn Peignon).
  • Добавлены два новых события ProfileEvents для обсервабилити алгоритмов поиска по индексу: IndexBinarySearchAlgorithm и IndexGenericExclusionSearchAlgorithm. #80679 (Pablo Marcos).
  • Не выводить в логах сообщения о неподдерживаемом MADV_POPULATE_WRITE в старых ядрах (чтобы не засорять логи). #80704 (Robert Schulze).
  • Добавлена поддержка типов Date32 и DateTime64 в TTL. #80710 (Andrey Zvonov).
  • Скорректированы значения совместимости для max_merge_delayed_streams_for_parallel_write. #80760 (Azat Khuzhin).
  • Исправлен сбой: если в деструкторе при попытке удалить временный файл (они используются для выгрузки временных данных на диск) выбрасывается исключение, программа может аварийно завершиться. #80776 (Alexey Milovidov).
  • Добавлен модификатор IF EXISTS для команды SYSTEM SYNC REPLICA. #80810 (Raúl Marín).
  • Расширено сообщение об исключении «Having zero bytes, but read range is not finished...», добавлен столбец finished_download_time в system.filesystem_cache'. #80849 (Kseniia Sumarokova).
  • Ранее использование формата хранения packed для полнотекстового индекса не поддерживалось, поскольку идентификатор сегмента обновлялся «на лету» путём чтения и записи файла .gin_sid на диск. При использовании packed-хранилища чтение значения из незафиксированного файла не поддерживается, что и вызывало проблему. #80852 (Elmi Ahmadov).
  • Добавлен раздел алгоритма поиска в вывод EXPLAIN при использовании с indexes = 1. В нём отображается либо «binary search», либо «generic exclusion search». #80881 (Pablo Marcos).
  • В начале 2024 года prefer_column_name_to_alias был жёстко задан в значение True для обработчика MySQL, потому что новый анализатор не был включён по умолчанию. Теперь параметр больше не задаётся жёстко. #80916 (Yarik Briukhovetskyi).
  • Теперь system.iceberg_history показывает историю для каталогов баз данных, таких как Glue или REST-каталог Iceberg. Также переименованы столбцы table_name и database_name в table и database в system.iceberg_history для единообразия. #80975 (alesapin).
  • Добавлен режим только для чтения для табличной функции merge, так что для её использования больше не требуется привилегия CREATE TEMPORARY TABLE. #80981 (Miсhael Stetsyuk).
  • Улучшена диагностика кэшей в памяти (информация о кэшах теперь доступна в system.metrics в дополнение к неполной system.asynchronouse_metrics). В dashboard.html добавлен размер кэшей в памяти (в байтах). VectorSimilarityIndexCacheSize/IcebergMetadataFilesCacheSize были переименованы в VectorSimilarityIndexCacheBytes/IcebergMetadataFilesCacheBytes. #81023 (Azat Khuzhin).
  • Игнорировать базы данных с движками, не поддерживающими таблицы RocksDB, при чтении из system.rocksdb. #81083 (Pervakov Grigorii).
  • Разрешить использование filesystem_caches и named_collections в конфигурационном файле clickhouse-local. #81105 (Alexey Milovidov).
  • Исправлена подсветка PARTITION BY в запросах INSERT. В предыдущих версиях PARTITION BY не подсвечивалось как ключевое слово. #81106 (Alexey Milovidov). #* Два небольших улучшения в Web UI: теперь корректно обрабатываются запросы без вывода, такие как CREATE, INSERT (до недавнего времени эти запросы приводили к бесконечному индикатору загрузки), и при двойном щелчке по таблице выполняется прокрутка к началу. #81131 (Alexey Milovidov). #* Обновлён c-ares до v1.34.5. #81159 (Konstantin Bogdanov). #* Обновлён curl до версии 8.14 для устранения CVE-2025-5025 и CVE-2025-4947. #81171 (larryluogit). #* Обновлён libarchive до версии 3.7.9 для устранения уязвимостей: CVE-2024-20696, CVE-2025-25724, CVE-2024-48958, CVE-2024-57970, CVE-2025-1632, CVE-2024-48957, CVE-2024-48615. #81174 (larryluogit). #* Обновлён libxml2 до версии 2.14.3. #81187 (larryluogit).
  • MemoryResidentWithoutPageCache представляет собой объем физической памяти, используемой серверным процессом, за вычетом userspace page cache, в байтах. Это дает более точное представление о фактическом использовании памяти при задействованном userspace page cache. Когда userspace page cache отключен, это значение равно MemoryResident. #81233 (Jayme Bird).
  • Пометить вручную записанные в лог исключения на клиенте, локальном сервере, клиенте keeper и в приложении дисков как уже записанные, чтобы они не попадали в лог дважды. #81271 (Miсhael Stetsyuk).
  • Настройки use_skip_indexes_if_final и use_skip_indexes_if_final_exact_mode теперь по умолчанию имеют значение True. Запросы с оператором FINAL теперь будут использовать пропускающие индексы (если применимо) для предварительного отбора гранул, а также читать любые дополнительные гранулы, соответствующие совпадающим диапазонам первичных ключей. Пользователи, которым требуется прежнее поведение с приблизительными/неточными результатами, могут установить use_skip_indexes_if_final_exact_mode в FALSE после тщательной оценки. #81331 (Shankar Iyer). #* Когда в веб-интерфейсе открыто несколько запросов, выполняется тот, который находится под курсором. Продолжение #80977. #81354 (Alexey Milovidov).
  • Этот PR устраняет проблемы с реализацией is_strict в проверках монотонности для функций преобразования. В настоящее время некоторые функции преобразования, такие как toFloat64(UInt32) и toDate(UInt8), некорректно возвращают is_strict со значением false, хотя должны возвращать true. #81359 (zoomxi). #* В файловой системе с журналированием mkdir записывается в журнал файловой системы, который затем сбрасывается на диск. В случае медленного диска это может занимать много времени. Определённо имеет смысл вынести это за пределы критической секции блокировки резерва. #81371 (Kseniia Sumarokova).
  • При проверке, соответствует ли KeyCondition непрерывному диапазону, если к ключу применяется цепочка нестрогих функций, может потребоваться преобразовать Constraint::POINT в Constraint::RANGE. Например: toDate(event_time) = '2025-06-03' подразумевает диапазон для event_time: ['2025-06-03 00:00:00', '2025-06-04 00:00:00'). Этот PR исправляет это поведение. #81400 (zoomxi). #* Теперь используется postgres 16.9. #81437 (Konstantin Bogdanov). #* Теперь используется openssl 3.2.4. #81438 (Konstantин Bogdanov). #* Теперь используется abseil-cpp 2025-01-27. #81440 (Konstantin Bogdanov). #* Теперь используется mongo-c-driver 1.30.4. #81449 (Konstantin Bogdanov). #* Теперь используется krb5 1.21.3-final. #81453 (Konstantin Bogdanov). #* Теперь используется orc 2.1.2. #81455 (Konstantin Bogdanov). #* Добавлена поддержка аргумента --database в clickhouse-local. Теперь можно переключаться на ранее созданную базу данных. Это закрывает #44115. #81465 (Alexey Milovidov). #* Псевдонимы clickhouse/ch теперь вызывают clickhouse-client вместо clickhouse-local, если указаны --host или --port. Продолжение #79422. Закрывает #65252. #81509 (Alexey Milovidov).
  • Теперь, когда у нас есть данные о распределении времени отклика Keeper, мы можем настроить бакеты гистограммы. #81516 (Miсhael Stetsyuk).
  • Отложить чтение файлов манифестов Iceberg до первого выполнения запроса. #81619 (Daniil Ivanik). #* Использовать grpc 1.73.0. #81629 (Konstantin Bogdanov). #* Использовать delta-kernel-rs v0.12.1. #81707 (Konstantin Bogdanov).
  • Добавлено событие профиля PageCacheReadBytes. #81742 (Kseniia Sumarokova).

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

  • Исправлена работа параметризованного представления с запросом SELECT EXCEPT. Закрывает #49447. #57380 (Nikolay Degterinsky).
  • Analyzer: исправлено имя проекции столбца после повышения его типа в JOIN. Закрывает #63345. #63519 (Dmitry Novik).
  • Материализованное представление может запускаться слишком поздно, например после таблицы Kafka, которая передаёт в него данные. #72123 (Ilya Golshtein).
  • Исправлена логическая ошибка при конфликте имён столбцов при включённой настройке analyzer_compatibility_join_using_top_level_identifier. #75676 (Vladimir Cherkasov).
  • Исправлены редкие аварийные завершения при чтении из таблицы MergeTree после нескольких асинхронных (с alter_sync = 0) запросов RENAME COLUMN и ADD COLUMN. #76346 (Anton Popov).
  • Исправлено переписывание запроса SELECT при создании VIEW с включённым анализатором. Закрывает #75956. #76356 (Dmitry Novik).
  • Исправлено использование CTE в проталкиваемых предикатах при включённом параметре allow_push_predicate_ast_for_distributed_subqueries. Устранены #75647 и #79672. #77316 (Dmitry Novik).
  • Исправлено применение настройки async_insert, поступающей с сервера (через apply_settings_from_server), которое ранее приводило к ошибкам Unknown packet 11 from server на стороне клиента. #77578 (Azat Khuzhin).
  • Исправлена проблема, из-за которой обновляемое материализованное представление в реплицируемых базах данных не работало на вновь добавленных репликах. #77774 (Michael Kolupaev).
  • Исправлена проблема, из-за которой обновляемые материализованные представления нарушали создание резервных копий. #77893 (Michael Kolupaev).
  • Исправлена старая логическая ошибка срабатывания в transform. #78247 (Yarik Briukhovetskyi).
  • Исправляет проблему, из-за которой SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo' сообщала об успешном выполнении, даже если указанная реплика не существовала. Теперь команда корректно проверяет, что реплика существует в Keeper, перед попыткой синхронизации. #78405 (Jayme Bird).
  • Исправлены некоторые случаи, когда вторичный индекс не применялся при использовании анализатора. Исправляет #65607, исправляет #69373. #78485 (Nikolai Kochetov).
  • Исправлена выгрузка профилировочных событий (NetworkSendElapsedMicroseconds/NetworkSendBytes) для протокола HTTP с включённым сжатием (погрешность не должна превышать размер буфера, обычно около 1MiB). #78516 (Azat Khuzhin). #* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad).
  • Исправлен анализатор, выдававший LOGICAL_ERROR, когда в JOIN ... USING использовался столбец ALIAS — теперь в таких случаях возвращается корректная ошибка. #78618 (Yakov Olkhovskiy).
  • Исправлен анализатор: CREATE VIEW ... ON CLUSTER завершался с ошибкой, если в SELECT использовались позиционные аргументы. #78663 (Yakov Olkhovskiy).
  • Исправлена ошибка Block structure mismatch при выполнении INSERT SELECT в табличную функцию с автоматическим определением схемы, если в SELECT используются скалярные подзапросы. #78677 (Pervakov Grigorii).
  • Исправлен анализатор: при prefer_global_in_and_join=1 для таблицы типа Distributed в запросе SELECT функцию in следует заменять на globalIn. #78749 (Yakov Olkhovskiy).
  • Исправлено несколько типов запросов SELECT, которые читают данные из таблиц с движком MongoDB или с использованием табличной функции mongodb: запросы с неявным приведением константного значения в условии WHERE (например, WHERE datetime = '2025-03-10 00:00:00'); запросы с LIMIT и GROUP BY. Ранее они могли возвращать некорректный результат. #78777 (Anton Popov).
  • Исправлено преобразование между разными типами JSON. Теперь оно выполняется простым приведением через преобразование в String и обратно. Это менее эффективно, но полностью корректно. #78807 (Pavel Kruglov).
  • Исправлена логическая ошибка при преобразовании типа Dynamic в Interval. #78813 (Pavel Kruglov).
  • Исправлен откат столбца при ошибке парсинга JSON. #78836 (Pavel Kruglov).
  • Исправлена ошибка 'bad cast', возникающая при выполнении JOIN с использованием константного псевдонима столбца. #78848 (Vladimir Cherkasov).
  • Запретить использование PREWHERE в материализованных представлениях для столбцов, типы которых различаются в представлении и целевой таблице. #78889 (Pavel Kruglov).
  • Исправлена логическая ошибка при разборе некорректных бинарных данных столбца Variant. #78982 (Pavel Kruglov).
  • Выбрасывать исключение, если размер пачки Parquet установлен в 0. Ранее при output_format_parquet_batch_size = 0 ClickHouse зависал. Теперь это поведение исправлено. #78991 (daryawessely).
  • Исправлена десериализация дискриминаторов variant с basic-форматом в compact-частях. Она была внесена в https://github.com/ClickHouse/ClickHouse/pull/55518. #79000 (Pavel Kruglov).
  • Словари типа complex_key_ssd_cache теперь отклоняют нулевые или отрицательные значения параметров block_size и write_buffer_size (issue #78314). #79028 (Elmi Ahmadov).
  • Избегайте использования Field для неагрегированных столбцов в SummingMergeTree. Это может привести к неожиданным ошибкам с типами Dynamic/Variant, используемыми в SummingMergeTree. #79051 (Pavel Kruglov).
  • Исправлено чтение из материализованного представления с распределённой целевой таблицей и отличающимся заголовком в анализаторе. #79059 (Pavel Kruglov).
  • Исправлен сбой в крайне специфической ситуации, когда функция currentDatabase использовалась в разделах CONSTRAINT для запросов ON CLUSTER. Закрывает #78100. #79070 (pufit).
  • Исправлена ошибка, при которой arrayUnion() возвращал дополнительные (некорректные) значения в таблицах с пакетными вставками. Исправляет #75057. #79079 (Peter Nguyen). #* Исправлен segfault (ошибка сегментации) в OpenSSLInitializer. Закрывает #79092. #79097 (Konstantin Bogdanov).
  • Исправлена передача внешних ролей в межсерверных запросах. #79099 (Andrey Zvonov).
  • Всегда задаётся префикс для S3 ListObject. #79114 (Azat Khuzhin).
  • Исправлена ошибка, из-за которой arrayUnion() возвращал лишние (некорректные) значения при пакетных вставках в таблицы. Исправляет #79157. #79158 (Peter Nguyen).
  • Исправлена логическая ошибка после применения filter pushdown. #79164 (Pervakov Grigorii).
  • Рекомендуется использовать IColumn вместо Field в SingleValueDataGeneric. Это исправляет некорректные возвращаемые значения для некоторых агрегатных функций, например argMax для типов Dynamic/Variant/JSON. #79166 (Pavel Kruglov).
  • Исправлен движок таблиц DeltaLake с реализацией delta-kernel при использовании с HTTP-эндпоинтами, а также исправлен NOSIGN. Закрывает #78124. #79203 (Kseniia Sumarokova).
  • Исправление в Keeper: предотвращено срабатывание наблюдателей (watches) при неудачных multi-запросах. #79247 (Antonio Andelic).
  • Запретить типы Dynamic и JSON в операторе IN. При текущей реализации IN это может приводить к некорректным результатам. Корректная поддержка этих типов в IN сложна и может быть реализована в будущем. #79282 (Pavel Kruglov).
  • Исправлена проверка на дублирование путей при разборе типа JSON. #79317 (Pavel Kruglov).
  • Исправлены проблемы с подключением SecureStreamSocket. #79383 (Konstantin Bogdanov).
  • Исправлена загрузка дисков plain_rewritable с данными. #79439 (Julia Kartseva).
  • Исправлено аварийное завершение при динамическом обнаружении подстолбцов в Wide-частях MergeTree. #79466 (Pavel Kruglov).
  • Проверяйте длину имени таблицы только для первичных запросов CREATE. Не выполняйте эту проверку для последующих операций CREATE, чтобы избежать проблем с обратной совместимостью. #79488 (Miсhael Stetsyuk).
  • Исправлена ошибка Block structure mismatch в ряде случаев при работе с таблицами с разрежёнными столбцами. #79491 (Anton Popov).
  • Исправлены два случая ошибки Logical Error: Can't set alias of * of Asterisk on alias. #79505 (Raúl Marín).
  • Исправлено применение параметров use_native_copy и allow_azure_native_copy для хранилища Azure Blob и обновлено поведение так, чтобы native copy использовалась только при совпадении учетных данных, что устраняет #78964. #79561 (Smita Kulkarni).
  • Исправлено использование некорректных путей при переименовании базы данных с движком Atomic. #79569 (Tuan Pham Anh).
  • Исправлена работа ORDER BY при использовании JSON-столбца совместно с другими столбцами. #79591 (Pavel Kruglov).
  • Исправлено дублирование результатов при чтении с удалённого сервера при отключённых use_hedged_requests и allow_experimental_parallel_reading_from_replicas. #79599 (Eduard Karacharov).
  • Исправлено аварийное завершение работы реализации delta-kernel при использовании Unity Catalog. #79677 (Kseniia Sumarokova).
  • Обрабатывать макросы в кластерах автообнаружения. #79696 (Anton Ivashkin).
  • Исправлены логические ошибки, связанные с неизвестной областью происхождения столбца, возникающие при проверке, коррелирован ли этот столбец. Исправляет #78183. Исправляет #79451. #79727 (Dmitry Novik).
  • Исправлены некорректные результаты для GROUPING SETS с ColumnConst и Analyzer. #79743 (Andrey Zvonov).
  • Исправлено дублирование результатов локального шарда при чтении из распределённой таблицы, когда локальная реплика устарела. #79761 (Eduard Karacharov).
  • Добавлена корректная обработка неправильно настроенных page_cache_limits. #79805 (Bharat Nallan).
  • Исправляет результат SQL-функции formatDateTime, если спецификатор формата переменной длины (например, %W, то есть название дня недели Monday Tuesday и т. д.) следует за составным спецификатором формата (спецификатором, который выводит несколько компонентов одновременно, например, %D, то есть американская дата 05/04/25). #79835 (Robert Schulze).
  • IcebergS3 поддерживает оптимизацию count(), но IcebergS3Cluster — нет. В результате в кластерном режиме возвращаемый результат count() может быть кратен количеству реплик. #79844 (wxybear).
  • Исправлен порядок сортировки значений NaN с отрицательным битом знака. #79847 (Pervakov Grigorii).
  • Теперь GROUP BY ALL не учитывает секцию GROUPING. #79915 (Yarik Briukhovetskyi).
  • Исправляет ошибку AMBIGUOUS_COLUMN_NAME при ленивой материализации, когда никакие столбцы не используются для выполнения запроса до применения проекции. Например, SELECT * FROM t ORDER BY rand() LIMIT 5. #79926 (Igor Nikonov).
  • Исправлено некорректное слияние состояний для функций TopK / TopKWeighted, которое приводило к чрезмерным значениям ошибки даже когда емкость ещё не была исчерпана. #79939 (Joel Höner).
  • Пароль в запросе CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\') скрывается. #79941 (Han Fei).
  • Добавлена возможность указывать псевдоним в JOIN USING. Укажите этот псевдоним в случае, если столбец был переименован (например, из‑за ARRAY JOIN). Исправлено #73707. #79942 (Nikolai Kochetov).
  • Учитывать параметр readonly в объектном хранилище azure_blob_storage. #79954 (Julia Kartseva).
  • Исправлены некорректные результаты запросов и сбои из-за нехватки памяти при использовании match(column, '^…') с символами, экранированными обратной косой чертой. #79969 (filimonov).
  • Отключение hive-разбиения для дата-лейков. Частично решает https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. #80005 (Daniil Ivanik).
  • Пропускающие индексы с лямбда-выражениями не могли быть применены. Исправлена ситуация, когда высокоуровневые функции в определении индекса в точности совпадали с функцией в запросе. #80025 (Nikolai Kochetov).
  • Обеспечена корректная работа материализованных представлений с UNION на новых репликах. #80037 (Samay Sharma).
  • Исправлена версия метаданных при присоединении части на реплике, которая выполняет команду ATTACH_PART из журнала репликации. #80038 (Aleksei Filatov).
  • Спецификатор формата %e в SQL-функции parseDateTime теперь распознает однозначные номера дней (например, 3), тогда как ранее требовалось дополнение пробелом (например, 3). Это делает его поведение совместимым с MySQL. Для сохранения прежнего поведения установите настройку parsedatetime_e_requires_space_padding = 1. (issue #78243). #80057 (Robert Schulze).
  • Имена исполняемых пользовательских функций (eUDF) не добавляются в столбец used_functions таблицы system.query_log в отличие от остальных функций. Этот PR добавляет имя eUDF, если эта функция была использована в запросе. #80073 (Kyamran). #* Исправлены предупреждения Cannot find 'kernel' in '[...]/memory.stat' в журнале ClickHouse (issue #77410). #80129 (Robert Schulze).
  • Исправлена логическая ошибка в формате Arrow для типа LowCardinality(FixedString). #80156 (Pavel Kruglov).
  • Исправлено чтение подстолбцов из движка Merge. #80158 (Pavel Kruglov).
  • Исправлена ошибка при сравнении числовых типов в KeyCondition. #80207 (Yarik Briukhovetskyi).
  • Исправлена ошибка AMBIGUOUS_COLUMN_NAME при использовании ленивой материализации для таблицы с проекциями. #80251 (Igor Nikonov).
  • Исправлена некорректная оптимизация подсчёта для строковых фильтров по префиксу вида LIKE 'ab_c%' при использовании неявных проекций. Это исправляет #80250. #80261 (Amos Bird).
  • Исправлена некорректная сериализация вложенных числовых полей как строк в документах MongoDB. Убрано ограничение на максимальную глубину для документов MongoDB. #80289 (Kirill Nikiforov).
  • В реплицируемой базе данных для RMT выполняются менее строгие проверки метаданных. Закрывает #80296. #80298 (Nikolay Degterinsky).
  • Исправлено текстовое представление типов DateTime и DateTime64 для хранилища PostgreSQL. #80301 (Yakov Olkhovskiy).
  • Разрешено использование DateTime с часовым поясом в таблицах StripeLog. Это закрывает #44120. #80304 (Alexey Milovidov).
  • Отключено проталкивание фильтра (filter-push-down) для предиката с недетерминированной функцией, если шаг плана запроса изменяет количество строк. Исправляет #40273. #80329 (Nikolai Kochetov).
  • Исправлены возможные логические ошибки и аварийные завершения работы в проекциях с подколонками. #80333 (Pavel Kruglov).
  • Исправлена ошибка NOT_FOUND_COLUMN_IN_BLOCK, возникавшая из-за оптимизации filter-push-down шага логического JOIN в случае, когда выражение ON не является простым равенством. Исправляет #79647 и #77848. #80360 (Nikolai Kochetov).
  • Исправлена ошибка, приводившая к некорректным результатам при чтении ключей в обратном порядке в партиционированных таблицах. Это исправляет #79987. #80448 (Amos Bird).
  • Исправлена некорректная сортировка в таблицах с nullable-ключом при включённом параметре optimize_read_in_order. #80515 (Pervakov Grigorii).
  • Исправлена проблема, из-за которой операция DROP для обновляемого материализованного представления зависала, если представление было приостановлено с помощью SYSTEM STOP REPLICATED VIEW. #80543 (Michael Kolupaev).
  • Исправлено возникновение ошибки 'Cannot find column' при использовании константного кортежа в распределённом запросе. #80596 (Yakov Olkhovskiy).
  • Исправлена функция shardNum в таблицах Distributed с join_use_nulls. #80612 (János Benjamin Antal).
  • Исправлены некорректные результаты при чтении столбца, который существует только в части таблиц в движке Merge. #80643 (Pavel Kruglov).
  • Метка времени в таблице iceberg_history теперь должна быть корректной. #80711 (Melvyn Peignon).
  • Исправлена обработка glob-шаблонов enum с одним элементом в табличных функциях объектного хранилища. #80716 (Konstantин Bogdanov).
  • Исправлены неверные типы возвращаемых значений функций сравнения с Tuple(Dynamic) и String, что приводило к логической ошибке. #80728 (Pavel Kruglov).
  • Добавлена отсутствовавшая поддержка типа данных timestamp_ntz для Unity Catalog. Устранены проблемы #79535 и #79875. #80740 (alesapin).
  • Исправлена ошибка THERE_IS_NO_COLUMN при выполнении распределённых запросов с IN cte. Исправление для #75032. #80757 (Nikolai Kochetov).
  • Исправлено слишком большое число файлов (приводило к избыточному расходу памяти) для внешнего ORDER BY. #80777 (Azat Khuzhin). #* Этот PR может закрыть #80742. #80783 (zoomxi). #* Исправлено падение в Kafka из‑за того, что get_member_id() создавал std::string из значения NULL (вероятно, это происходило только в случае, когда подключение к брокеру завершалось неудачей). #80793 (Azat Khuzhin).
  • Корректно дожидаться завершения всех потребителей перед остановкой движка Kafka (активные потребители после остановки могут вызывать различные отладочные assert'ы, а также продолжать читать данные от брокеров в фоновом режиме после удаления/отсоединения таблицы). #80795 (Azat Khuzhin).
  • Исправлена ошибка NOT_FOUND_COLUMN_IN_BLOCK, возникавшая из-за оптимизации predicate-push-down. Исправляет #80443. #80834 (Nikolai Kochetov).
  • Исправлена логическая ошибка при обработке шаблона звёздочки (*) в табличной функции в JOIN с USING. #80894 (Vladimir Cherkasov).
  • Исправлен учет памяти для кэша файлов метаданных Iceberg. #80904 (Azat Khuzhin).
  • Исправлено некорректное партиционирование при использовании ключа партиционирования, допускающего значения NULL. #80913 (Pervakov Grigorii).
  • Исправлена ошибка Table does not exist в распределённых запросах с проталкиванием предиката (allow_push_predicate_ast_for_distributed_subqueries=1), когда таблица-источник отсутствует на инициаторе запроса. Исправляет #77281. #80915 (Nikolai Kochetov).
  • Исправлена логическая ошибка во вложенных функциях с именованными окнами. #80926 (Pervakov Grigorii).
  • Исправлена обработка экстремальных значений для nullable- и вещественных столбцов. #80970 (Pervakov Grigorii).
  • Исправлен возможный сбой при выполнении запроса к system.tables, вероятно возникавший при нехватке памяти. #80976 (Azat Khuzhin).
  • Исправлено атомарное переименование с усечением для файлов, тип сжатия которых определяется по их расширению. #80979 (Pablo Marcos). #* Исправлен ErrorCodes::getName. #81032 (RinChanNOW).
  • Исправлена ошибка, из-за которой пользователь не мог просмотреть список таблиц в Unity Catalog без прав на все из них. Теперь все таблицы корректно отображаются, а попытка чтения из таблицы, к которой нет доступа, приведёт к генерации исключения. #81044 (alesapin).
  • Теперь ClickHouse игнорирует ошибки и неожиданные ответы от каталогов озера данных в запросе SHOW TABLES. Это исправляет #79725. #81046 (alesapin).
  • Исправлен разбор значений DateTime64 из целых чисел в JSONExtract и при разборе типа JSON. #81050 (Pavel Kruglov).
  • Настройка date_time_input_format теперь учитывается в кэше выведения схемы. #81052 (Pavel Kruglov).
  • Исправлен сбой при выполнении INSERT, если таблица была удалена (DROP) после начала запроса, но до отправки столбцов. #81053 (Azat Khuzhin).
  • Исправлено использование неинициализированного значения в quantileDeterministic. #81062 (Azat Khuzhin).
  • Исправлено управление счётчиком жёстких ссылок для транзакций диска metadatastoragefromdisk. Добавлены тесты. #81066 (Sema Checherinda).
  • Имена пользовательских функций (UDF) не добавляются в таблицу system.query_log в отличие от других функций. Этот pull request добавляет имя UDF в один из двух столбцов — used_executable_user_defined_functions или used_sql_user_defined_functions, если UDF была использована в запросе. #81101 (Kyamran).
  • Исправлены ошибки Too large size ... passed to allocator и возможные сбои при вставках по протоколу HTTP с текстовыми форматами (JSON, Values, ...) и пропущенными полями типа Enum. #81145 (Anton Popov).
  • Исправлена ошибка LOGICAL_ERROR для разреженного столбца (Sparse column) в блоке INSERT, отправляемом в не-MT материализованное представление (MV). #81161 (Azat Khuzhin).
  • Исправлена ошибка Unknown table expression identifier при использовании distributed_product_mode_local=local в режиме кросс-репликации. #81162 (Nikolai Kochetov).
  • Исправлено некорректное кэширование количества строк в файлах Parquet после фильтрации. #81184 (Michael Kolupaev).
  • Исправлена настройка кэша файловой системы max_size_to_total_space при использовании относительного пути к кэшу. #81237 (Kseniia Sumarokova).
  • Исправлена ошибка, из-за которой clickhouse-local аварийно завершался при выводе константных кортежей или map-ов в формате Parquet. #81249 (Michael Kolupaev).
  • Проверять смещения массивов, полученные по сети. #81269 (Azat Khuzhin).
  • Исправлен частный случай в запросе, который выполняет JOIN пустых таблиц и использует оконные функции. Ошибка приводила к взрывному росту числа параллельных потоков, что вызывало OOM. #81299 (Alexander Gololobov).
  • Исправления для кластерных функций Data Lake (deltaLakeCluster, icebergCluster и др.): (1) исправлена потенциальная ошибка сегментации (segfault) в DataLakeConfiguration при использовании функции Cluster со старым анализатором; (2) удалено дублирующее обновление метаданных Data Lake (лишние запросы к объектному хранилищу); (3) исправлено избыточное перечисление в объектном хранилище, когда формат явно не указан (что уже было сделано для некластерных движков Data Lake). #81300 (Kseniia Sumarokova).
  • Обеспечить, чтобы флаг force_restore_data восстанавливал потерянные метаданные Keeper. #81324 (Raúl Marín).
  • Исправлена ошибка региона в delta-kernel. Исправляет проблему #79914. #81353 (Kseniia Sumarokova).
  • Отключена некорректная JIT-компиляция для divideOrNull. #81370 (Raúl Marín).
  • Исправлена ошибка вставки в таблицу MergeTree, возникавшая при длинном имени столбца раздела (partition). #81390 (hy123q).
  • Не хранить в памяти содержимое нескольких файлов манифестов. #81470 (Daniil Ivanik).
  • Исправлено возможное падение при остановке фоновых пулов (background_.*pool_size). #81473 (Azat Khuzhin).
  • Исправлено чтение за пределами допустимого диапазона в формате Npy, происходившее при записи в таблицу с движком URL. Это исправление закрывает #81356. #81502 (Alexey Milovidov).
  • Веб-интерфейс может отображать NaN% (типичная проблема JavaScript). #81507 (Alexey Milovidov).
  • Исправлена работа DatabaseReplicated при database_replicated_enforce_synchronous_settings=1. #81564 (Azat Khuzhin).
  • Исправлен порядок сортировки для типов LowCardinality(Nullable(...)). #81583 (Pervakov Grigorii).
  • Сервер не должен удерживать открытым HTTP‑соединение, если запрос не был полностью прочитан из сокета. #81595 (Sema Checherinda).
  • Скалярные коррелированные подзапросы теперь возвращают результат выражения проекции с возможным значением NULL. Исправлен случай, когда коррелированный подзапрос возвращает пустой набор результатов. #81632 (Dmitry Novik).
  • Исправлена ошибка Unexpected relative path for a deduplicated part при выполнении ATTACH к ReplicatedMergeTree. #81647 (Azat Khuzhin).
  • Настройка запроса use_iceberg_partition_pruning не будет применяться для хранилища Iceberg, потому что она использует глобальный контекст, а не контекст запроса. Это не критично, так как её значение по умолчанию — true. Этот PR исправляет проблему. #81673 (Han Fei).
  • Добавлена проверка настройки движка MergeTree merge_max_block_size, чтобы гарантировать, что она не равна нулю. #81693 (Bharat Nallan).
  • Исправлены проблемы с clickhouse-local, из-за которых запросы DROP VIEW могли зависать. #81705 (Bharat Nallan).
  • Исправлен JOIN в StorageRedis в некоторых случаях. #81736 (Pervakov Grigorii).
  • Исправлен сбой в ConcurrentHashJoin при использовании пустого USING () и включенном старом анализаторе. #81754 (Nikita Taranov).
  • Исправление в Keeper: блокировать подтверждение новых логов, если в логах есть некорректная запись. Ранее, если лидер некорректно применял часть логов, он продолжал подтверждать новые логи, даже несмотря на то, что фолловер обнаруживал несовпадение дайджеста и прерывал выполнение. #81780 (Antonio Andelic).