Журнал изменений 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 = 0ClickHouse зависал. Теперь это поведение исправлено. Это закрывает #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). #* Теперь используетсяpostgres16.9. #81437 (Konstantin Bogdanov). #* Теперь используетсяopenssl3.2.4. #81438 (Konstantин Bogdanov). #* Теперь используетсяabseil-cpp2025-01-27. #81440 (Konstantin Bogdanov). #* Теперь используетсяmongo-c-driver1.30.4. #81449 (Konstantin Bogdanov). #* Теперь используетсяkrb51.21.3-final. #81453 (Konstantin Bogdanov). #* Теперь используетсяorc2.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).
#* Использовать
grpc1.73.0. #81629 (Konstantin Bogdanov). #* Использоватьdelta-kernel-rsv0.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 = 0ClickHouse зависал. Теперь это поведение исправлено. #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, то есть название дня неделиMondayTuesdayи т. д.) следует за составным спецификатором формата (спецификатором, который выводит несколько компонентов одновременно, например,%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).