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

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

  • Функция 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).

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

  • В MergeTree SETTINGS добавлена новая опция, которая задает кодек сжатия по умолчанию, если в запросе 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, а также их поддержка в индексах на основе bloomfilter. #78171 (UnamedRus).
  • Добавлена таблица system.iceberg_history. #78244 (Smita Kulkarni).
  • Добавлено планирование слотов запросов для рабочих нагрузок; подробности см. на странице https://clickhouse.com/docs/operations/workload-scheduling#query&#95;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).
  • Позволяет выполнять TRUNCATE для определенных таблиц в базе данных, отфильтрованных с помощью ключевого слова LIKE. #78597 (Yarik Briukhovetskyi).
  • clickhouse-local (и его сокращенный алиас ch) теперь использует неявный FROM table при наличии входных данных для обработки. Это закрывает #65023. Также в clickhouse-local теперь автоматически определяется формат, если --input-format не указан и обрабатывается обычный файл. #79085 (Alexey Milovidov).
  • Добавлены функции icebergHash и icebergBucketTransform. Добавлена поддержка отсечения файлов данных в таблицах Iceberg, партиционированных с помощью бакет-преобразования. #79262 (Daniil Ivanik).
  • Добавлена поддержка Coalescing Merge Tree. Исправление закрывает #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).
  • Поддерживается запись JSON-столбцов CH в Parquet и чтение JSON-столбцов Parquet напрямую в качестве JSON-столбцов CH. #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).
  • Добавлена стартовая страница со списком встроенных веб-инструментов. Она будет открываться по запросу от User-Agent, похожего на браузер. #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).
  • Улучшена производительность всех типов блум-фильтров. #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).
  • Повысить эффективность повторного использования памяти и сократить число страничных отказов при использовании двухуровневых хеш-таблиц. #80245 (Jiebin Sun).
  • Устранены лишние обновления и снижена конкуренция за блокировки в QueryConditionCache. #80247 (Jiebin Sun).
  • Небольшая оптимизация concatenateBlocks, которая может быть полезна для параллельного hash JOIN. #80328 (李扬).
  • При выборе диапазонов меток по диапазону первичного ключа двоичный поиск нельзя использовать, если первичный ключ обёрнут функциями. Этот PR снимает это ограничение: двоичный поиск по-прежнему можно применять, когда первичный ключ обёрнут в цепочку всегда монотонных функций или когда RPN содержит элемент, который всегда равен true. Этот PR закрывает #45536. #80597 (zoomxi).
  • Ускорено завершение работы движка Kafka (убрана лишняя 3-секундная задержка при наличии нескольких таблиц Kafka). #80796 (Azat Khuzhin).
  • Снижено использование памяти при async inserts и повышена производительность запросов на вставку. #80972 (Raúl Marín).
  • Не включайте профилирование процессоров, если таблица Log отключена. #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).
  • Конфигурация proxy встроена в некоторые 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).
  • В системную таблицу system.query_condition_cache добавлено поле condition. В нём хранится условие в открытом виде, хеш которого используется как ключ в кэше условий запроса. #78671 (Robert Schulze).
  • Реализована логика, аналогичная перебалансировке Kafka, для StorageKafka2 с использованием ClickHouse Keeper. Для каждой реплики поддерживаются два типа блокировок партиций: постоянные и временные. Реплика старается удерживать постоянные блокировки как можно дольше; при этом в любой момент времени на реплике может быть не более all_topic_partitions / active_replicas_count постоянных блокировок (здесь all_topic_partitions — общее количество партиций, active_replicas_count — количество активных реплик). Если их больше, реплика освобождает часть партиций. Часть партиций реплика удерживает временно. Максимальное количество временных блокировок на реплике динамически меняется, чтобы дать другим репликам возможность закрепить часть партиций постоянными блокировками. При обновлении временных блокировок реплика освобождает их все и затем снова пытается захватить некоторые из них. #78726 (Daria Fomina).
  • В движок таблицы Kafka добавлены настройки таблицы для конфигурации SASL и учетных данных. Это позволяет настраивать аутентификацию на основе SASL для Kafka и совместимых с Kafka систем напрямую в операторе CREATE TABLE, не используя конфигурационные файлы или именованные коллекции. #78810 (Christoph Wurm).
  • Добавлено предупреждение о базах данных, которые могли быть созданы для сохранения повреждённых таблиц. #78841 (János Benjamin Antal).
  • Теперь индексы векторного сходства можно создавать для столбцов типа BFloat16. #78850 (Robert Schulze).
  • Добавлена поддержка Unix-временных меток с дробной частью при best-effort-парсинге DateTime64. #78908 (Pavel Kruglov).
  • В реализации delta-kernel для хранилища DeltaLake исправлена поддержка columnMappingMode.name, добавлены тесты для эволюции схемы. #78921 (Kseniia Sumarokova).
  • Улучшена вставка в столбец Variant в формате Values благодаря более точному преобразованию значений. #78923 (Pavel Kruglov).
  • В движок S3Queue добавлен виртуальный столбец _time. #78926 (Anton Ivashkin).
  • Функция tokens была расширена: теперь она принимает дополнительный аргумент “tokenizer”, а также другие аргументы, специфичные для токенизатора. #79001 (Elmi Ahmadov).
  • Оператор SHOW CLUSTER теперь разворачивает макросы (если они есть) в аргументе. #79006 (arf42).
  • Хеш-функции теперь поддерживают NULL в массивах, кортежах и картах. (задачи #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). #* Добавлена возможность отмены действий с вкладками в веб-интерфейсе. Это закрывает #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).
  • Настройки page cache теперь можно задавать на уровне отдельных запросов. Это нужно для более быстрых экспериментов и для возможности тонкой настройки запросов, где важны высокая пропускная способность и низкая задержка. #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 kernel. #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 part. #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).
  • В таблицу system.error_log добавлены last_error_message, last_error_trace и query_id. Связанный тикет: #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).
  • Векторный поиск с использованием индекса векторного сходства теперь имеет статус бета (ранее — экспериментальный). #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() для баз данных Replicated. #80282 (Vitaly Baranov). #* В clickhouse-local разрешены дополнительные опции (идущие после --, например -- --config.value='abc') без знака равенства. Закрывает #80292. #80293 (Alexey Milovidov).
  • Подсветка метасимволов в запросах SHOW ... LIKE. Это закрывает #80275. #80297 (Alexey Milovidov). #* SQL UDF в clickhouse-local теперь сохраняются постоянно. Ранее созданная функция будет загружаться при запуске. Это закрывает #80085. #80300 (Alexey Milovidov).
  • Добавлена поддержка сравнения между Time/Time64. #80327 (Yarik Briukhovetskyi).
  • Исправлено описание в плане EXPLAIN для предварительного шага DISTINCT. #80330 (UnamedRus).
  • Разрешено использовать именованные коллекции в ODBC/JDBC. #80334 (Andrey Zvonov).
  • Добавлена поддержка фильтрации по нескольким проекциям, позволяющая использовать более одной проекции для фильтрации на уровне частей. Это устраняет проблему #55525. Это второй шаг в реализации индекса проекций после #78429. #80343 (Amos Bird).
  • Метрики количества дисков в режиме только для чтения и неисправных дисков. Индикатор пишет в журнал при запуске DiskLocalCheckThread. #80391 (VicoWu).
  • Добавлена поддержка хранилища s3_plain_rewritable с проекциями. В предыдущих версиях объекты метаданных в S3, ссылающиеся на проекции, не обновлялись при перемещении. Закрывает #70258. #80393 (Sav).
  • Для параллельных реплик используется отдельный тайм-аут подключения, см. настройку parallel_replicas_connect_timeout_ms. Ранее в качестве значений тайм-аута подключения для запросов с параллельными репликами использовались настройки 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 и общие данные для 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…”, в system.filesystem_cache’ добавлен столбец finished_download_time. #80849 (Kseniia Sumarokova).
  • Ранее для полнотекстового индекса не поддерживалось packed-хранилище, поскольку идентификатор сегмента обновлялся на лету через чтение и запись файла (.gin_sid) на диске. В случае с packed-хранилищем чтение значения из незафиксированного файла не поддерживается, что и приводило к проблеме. #80852 (Elmi Ahmadov).
  • В вывод EXPLAIN добавлен раздел с алгоритмом поиска при использовании indexes = 1. В нём отображается либо “двоичный поиск”, либо “универсальный алгоритм поиска с исключением”. #80881 (Pablo Marcos).
  • В начале 2024 года для обработчика MySQL значение prefer_column_name_to_alias было принудительно установлено в True, поскольку новый анализатор по умолчанию не был включен. Теперь эта жесткая привязка убрана. #80916 (Yarik Briukhovetskyi).
  • Теперь system.iceberg_history показывает историю для баз данных из каталогов, таких как glue или iceberg rest. Также для единообразия в system.iceberg_history столбцы table_name и database_name были переименованы в table и database. #80975 (alesapin).
  • Для табличной функции merge разрешён режим только для чтения, поэтому для её использования больше не требуется grant 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).
  • В файле конфигурации clickhouse-local разрешены filesystem_caches и named_collections. #81105 (Alexey Milovidov).
  • Исправлена подсветка PARTITION BY в запросах INSERT. В предыдущих версиях PARTITION BY не подсвечивался как ключевое слово. #81106 (Alexey Milovidov). #* Два небольших улучшения в веб-интерфейсе: теперь корректно обрабатываются запросы без вывода, такие как 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 показывает объём физической памяти в байтах, используемой серверным процессом, за вычетом кэша страниц в пространстве пользователя. Это даёт более точное представление о фактическом использовании памяти, когда задействован кэш страниц в пространстве пользователя. Когда кэш страниц в пространстве пользователя отключён, это значение равно MemoryResident. #81233 (Jayme Bird).
  • Исключения, вручную записываемые в client, local server, keeper client и disks app, помечаются как уже записанные, чтобы не записывать их дважды. #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 записывается в журнал файловой системы, который затем сохраняется на диск. В случае медленного диска это может занять много времени. Эту операцию определённо имеет смысл вынести за пределы области действия блокировки reserve. #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 (Konstantin 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).
  • Чтение manifest-файлов 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).
  • materialized view может запускаться слишком поздно, например позже таблицы 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).
  • Исправлена проблема, из-за которой refreshable materialized view в базах данных Replicated не работали на вновь добавленных репликах. #77774 (Michael Kolupaev).
  • Исправлена ошибка, из-за которой refreshable materialized views ломали резервные копии. #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).
  • Исправлена ошибка анализатора: при JOIN ... USING со столбцом ALIAS возникал LOGICAL_ERROR, хотя должна выдаваться соответствующая ошибка. #78618 (Yakov Olkhovskiy).
  • Исправлен анализатор: запрос CREATE VIEW ... ON CLUSTER завершается ошибкой, если SELECT содержит позиционные аргументы. #78663 (Yakov Olkhovskiy).
  • Исправлена ошибка Block structure mismatch в случае INSERT SELECT в табличную функцию с автоматическим определением схемы, если SELECT содержит скалярные подзапросы. #78677 (Pervakov Grigorii).
  • Исправлен analyzer: при 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. Это менее эффективно, но на 100 % корректно. #78807 (Pavel Kruglov).
  • Исправлена логическая ошибка при преобразовании типа Dynamic в Interval. #78813 (Pavel Kruglov).
  • Исправлен откат столбца при ошибке разбора JSON. #78836 (Pavel Kruglov).
  • Исправлена ошибка ‘bad cast’ при использовании в JOIN константного столбца-псевдонима. #78848 (Vladimir Cherkasov).
  • Запрещено использовать PREWHERE в materialized view для столбцов с разными типами в представлении и целевой таблице. #78889 (Pavel Kruglov).
  • Исправлена логическая ошибка при разборе некорректных бинарных данных в столбце типа Variant. #78982 (Pavel Kruglov).
  • Теперь генерируется исключение, если размер батча Parquet установлен в 0. Ранее при output_format_parquet_batch_size = 0 ClickHouse зависал. Теперь это исправлено. #78991 (daryawessely).
  • Исправлена десериализация дискриминаторов Variant в формате basic в компактных частях. Ошибка появилась в https://github.com/ClickHouse/ClickHouse/pull/55518. #79000 (Pavel Kruglov).
  • Словари типа complex_key_ssd_cache теперь не принимают параметры block_size и write_buffer_size со значением 0 или меньше (issue #78314). #79028 (Elmi Ahmadov).
  • Избегайте использования Field для неагрегированных столбцов в SummingMergeTree. Это может привести к неожиданным ошибкам при использовании типов Dynamic/Variant в SummingMergeTree. #79051 (Pavel Kruglov).
  • Исправлено чтение из materialized view с распределённой целевой таблицей и отличающимся заголовком в анализаторе. #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).
  • Исправлена логическая ошибка после pushdown-оптимизации фильтра. #79164 (Pervakov Grigorii).
  • Попробуйте использовать IColumn вместо Field в SingleValueDataGeneric. Это исправляет некорректные возвращаемые значения для некоторых агрегатных функций, например argMax, с типами Dynamic/Variant/JSON. #79166 (Pavel Kruglov).
  • Исправлен движок таблицы DeltaLake для реализации delta-kernel при использовании конечных точек на базе HTTP; также исправлен NOSIGN. Закрывает #78124. #79203 (Kseniia Sumarokova).
  • Исправление в Keeper: предотвращено срабатывание наблюдений при неуспешных 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 Storage; также обновлена логика использования нативного копирования: теперь оно используется только при совпадении учетных данных, что устраняет проблему #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 и анализатором. #79743 (Andrey Zvonov).
  • Исправлено дублирование результатов локального сегмента при чтении из distributed таблицы, когда локальная реплика устарела. #79761 (Eduard Karacharov).
  • Корректно обрабатывать некорректно настроенные page_cache_limits. #79805 (Bharat Nallan).
  • Исправлен результат работы SQL-функции formatDateTime, если за форматтером переменной длины (например, %W, то есть днём недели Monday, Tuesday и т. д.) следует составной форматтер (форматтер, который выводит сразу несколько компонентов, например %D, то есть американскую дату 05/04/25). #79835 (Robert Schulze).
  • IcebergS3 поддерживает оптимизацию count, а IcebergS3Cluster — нет. В результате в режиме cluster возвращаемое значение 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).
  • Теперь в объектном хранилище azure_blob_storage учитывается настройка readonly. #79954 (Julia Kartseva).
  • Исправлены некорректные результаты запроса и сбои из-за нехватки памяти при использовании match(column, '^…') с символами, экранированными обратной косой чертой. #79969 (filimonov).
  • Отключение hive-партиционирования для озёр данных частично решает проблему https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. #80005 (Daniil Ivanik).
  • Индекс пропуска данных с лямбда-выражениями не применялся. Исправлен случай, когда высокоуровневые функции в определении индекса в точности совпадали с функцией в запросе. #80025 (Nikolai Kochetov).
  • Исправлена работа materialized views с 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).
  • Исправлена некорректная оптимизация count для строковых префиксных фильтров, таких как LIKE ‘ab_c%’, при использовании неявных проекций. Это исправление устраняет проблему #80250. #80261 (Amos Bird).
  • Исправлена некорректная сериализация вложенных числовых полей в документах MongoDB как строк. Снято ограничение на максимальную глубину документов из MongoDB. #80289 (Kirill Nikiforov).
  • В базе данных Replicated выполняются менее строгие проверки метаданных для RMT. Закрывает #80296. #80298 (Nikolay Degterinsky).
  • Исправлено текстовое представление DateTime и DateTime64 в хранилище PostgreSQL. #80301 (Yakov Olkhovskiy).
  • Добавлена поддержка DateTime с часовым поясом в таблицах StripeLog. Это закрывает #44120. #80304 (Alexey Milovidov).
  • Отключено проталкивание предиката с недетерминированной функцией вниз, если шаг плана запроса изменяет количество строк. Исправляет #40273. #80329 (Nikolai Kochetov).
  • Исправлены возможные логические ошибки и сбои в работе проекций с подстолбцами. #80333 (Pavel Kruglov).
  • Исправлена ошибка NOT_FOUND_COLUMN_IN_BLOCK, вызванная оптимизацией проталкивания фильтра в логическом JOIN sep в случае, если выражение ON не является тривиальным равенством. Исправляет #79647 Исправляет #77848. #80360 (Nikolai Kochetov).
  • Исправлены некорректные результаты при чтении ключей в обратном порядке в партиционированных таблицах. Это исправление для #79987. #80448 (Amos Bird).
  • Исправлена некорректная сортировка в таблицах с ключом Nullable и включенной optimize_read_in_order. #80515 (Pervakov Grigorii).
  • Исправлено зависание операции DROP для refreshable materialized view, если представление было приостановлено командой 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).
  • Исправлена обработка enum-глоб-шаблонов, состоящих из одного элемента, в табличных функциях Объектного хранилища. #80716 (Konstantin 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 (вероятно, проблема возникала только при сбое connection к broker). #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).
  • Исправлено некорректное партиционирование с ключом партиционирования типа Nullable. #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).
  • Исправлено атомарное переименование с TRUNCATE для файлов, у которых сжатие определяется по расширению файла. #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, в отличие от имён других функций. В этом PR реализовано добавление имени 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, возникавший в случае разреженного столбца в блоке INSERT, передаваемом в non-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 для fs cache при использовании относительного пути кэша. #81237 (Kseniia Sumarokova).
  • Исправлен сбой clickhouse-local при выводе константных значений типов Tuple или Map в формате Parquet. #81249 (Michael Kolupaev).
  • Проверка смещений массивов, полученных по сети. #81269 (Azat Khuzhin).
  • Исправлен редкий случай в запросе, который выполняет JOIN пустых таблиц и использует оконные функции. Ошибка приводила к взрывному росту числа параллельных потоков, что вызывало OOM-ошибки. #81299 (Alexander Gololobov).
  • Исправления для функций Cluster для озер данных (deltaLakeCluster, icebergCluster и т. д.): (1) исправлен потенциальный segfault в DataLakeConfiguration при использовании функции Cluster со старым анализатором; (2) устранено дублирование обновлений метаданных озера данных (лишние запросы к объектному хранилищу); (3) исправлено избыточное перечисление объектов в объектном хранилище, когда формат явно не указан (это уже было сделано для некластерных движков озера данных). #81300 (Kseniia Sumarokova).
  • Флаг force_restore_data теперь восстанавливает потерянные метаданные Keeper. #81324 (Raúl Marín).
  • Исправлена ошибка с region в delta-kernel. Исправляет #79914. #81353 (Kseniia Sumarokova).
  • Отключён некорректный JIT для divideOrNull. #81370 (Raúl Marín).
  • Исправлена ошибка вставки, возникавшая, если у таблицы MergeTree было длинное имя столбца партиционирования. #81390 (hy123q).
  • Больше не хранить содержимое нескольких файлов манифеста в памяти. #81470 (Daniil Ivanik).
  • Исправлен возможный сбой при завершении работы фоновых пулов (background_.*pool_size). #81473 (Azat Khuzhin).
  • Исправлено чтение за пределами буфера в формате Npy, возникавшее при записи в таблицу с движком URL. Это закрывает #81356. #81502 (Alexey Milovidov).
  • В Web UI может отображаться 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: блокируется фиксация новых записей журнала, если в журнале есть некорректная запись. Ранее, если лидер некорректно применял некоторые записи журнала, он продолжал фиксировать новые записи, хотя follower обнаруживал несовпадение дайджестов и прерывал работу. #81780 (Antonio Andelic).
Последнее изменение 10 июня 2026 г.