Журнал изменений Cloud v25.6
Обратные несовместимые изменения
- Функция
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).
- В
system.named_collectionsдобавлены новые столбцы (create_queryиsource). Закрывает #78179. #78582 (MikhailBurdukov). - В системную таблицу
system.query_condition_cacheдобавлено полеcondition. Оно хранит условие в исходном текстовом виде, хеш которого используется как ключ в кэше условий запросов. #78671 (Robert Schulze). - Реализована логика перераспределения (rebalance) Kafka для 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внутри массивов, кортежей и отображений (map). (issues #48365 и #48623). #79008 (Michael Kolupaev). - Поддержка операции REFRESH в таблицах 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).
- Не выводить числовые подсказки в красивых форматах для чисел, которые выглядят как большинство 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). - В таблицу
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). - Уровень логирования для выбранных частей, подлежащих слиянию, был неверным (Информация). Закрывает #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()для реплицируемых баз данных. #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. Это второй шаг на пути к реализации индекса проекций, после #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больше не будет пытаться искать части на дискахreadonlyиwrite-once. Тем самым закрывается задача #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..."; в system.filesystem_cache добавлен столбец finished_download_time. #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 или Iceberg REST). Также для единообразия вsystem.iceberg_historyстолбцыtable_nameиdatabase_nameпереименованы вtableиdatabase. #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). #* Два небольших улучшения в веб-интерфейсе: корректная обработка запросов без вывода, таких как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 как уже записанные в журнал, чтобы они не регистрировались повторно. #81271 (Miсhael Stetsyuk).
- Настройки
use_skip_indexes_if_finalиuse_skip_indexes_if_final_exact_modeтеперь по умолчанию имеют значениеTrue. Запросы с модификаторомFINALтеперь будут использовать skip-индексы (если применимо) для предварительного отбора гранул, а также читать любые дополнительные гранулы, соответствующие подходящим диапазонам первичного ключа. Пользователи, которым требуется прежнее поведение с приблизительными/неточными результатами, могут установитьuse_skip_indexes_if_final_exact_modeв значениеFalseпосле тщательной оценки. #81331 (Shankar Iyer). #* Если в веб-интерфейсе открыто несколько запросов, будет выполнен тот, на котором находится курсор. Продолжение #80977. #81354 (Alexey Milovidov). - Этот PR исправляет проблемы с реализацией
is_strictв проверках монотонности для функций преобразования. В настоящий момент некоторые функции преобразования, такие как toFloat64(UInt32) и toDate(UInt8), ошибочно возвращают is_strict как false, когда должны возвращать true. #81359 (zoomxi). #* В файловой системе с журналированиемmkdirзаписывается в журнал файловой системы, который затем сбрасывается на диск. В случае медленного диска это может занимать много времени. Определённо имеет смысл вынести это за пределы области действия блокировки резервирования. #81371 (Kseniia Sumarokova). - При проверке, соответствует ли
KeyConditionнепрерывному диапазону, если ключ обёрнут в цепочку нестрогих функций,Constraint::POINTпри необходимости должен быть преобразован вConstraint::RANGE. Например:toDate(event_time) = '2025-06-03'задаёт диапазон дляevent_time: ['2025-06-03 00:00:00', '2025-06-04 00:00:00'). Этот PR исправляет данное поведение. #81400 (zoomxi). #* Обновитьpostgresдо версии 16.9. #81437 (Konstantin Bogdanov). #* Обновитьopensslдо версии 3.2.4. #81438 (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).
- Отложить чтение файлов манифестов Iceberg до первого выполнения запроса. #81619 (Daniil Ivanik).
#* Использовать
grpcверсии 1.73.0. #81629 (Konstantin Bogdanov). #* Использоватьdelta-kernel-rsверсии v0.12.1. #81707 (Konstantin Bogdanov). - Добавлено событие профилирования
PageCacheReadBytes. #81742 (Kseniia Sumarokova).
Исправление ошибки (ошибка, проявляющаяся для пользователя как некорректное поведение в официальном стабильном релизе)
- Исправлена работа параметризованного представления с запросом
SELECT EXCEPT. Закрывает #49447. #57380 (Nikolay Degterinsky). - Analyzer: исправлено имя проекции столбца после повышения его типа в JOIN. Закрывает #63345. #63519 (Dmitry Novik).
- Материализованное представление может запускаться слишком поздно, например после таблицы Kafka, которая передаёт в него данные. #72123 (Ilya Golshtein).
- Исправлена логическая ошибка при конфликте имён столбцов при включённой настройке
analyzer_compatibility_join_using_top_level_identifier. #75676 (Vladimir Cherkasov). - Исправлены редкие аварийные завершения при чтении из таблицы
MergeTreeпосле нескольких асинхронных (сalter_sync = 0) запросовRENAME COLUMNиADD COLUMN. #76346 (Anton Popov). - Исправлено переписывание запроса
SELECTпри созданииVIEWс включённым анализатором. Закрывает #75956. #76356 (Dmitry Novik). - Исправлено использование CTE в проталкиваемых предикатах при включённом параметре
allow_push_predicate_ast_for_distributed_subqueries. Устранены #75647 и #79672. #77316 (Dmitry Novik). - Исправлено применение настройки
async_insert, поступающей с сервера (черезapply_settings_from_server), которое ранее приводило к ошибкамUnknown packet 11 from serverна стороне клиента. #77578 (Azat Khuzhin). - Исправлена проблема, из-за которой обновляемое материализованное представление в реплицируемых базах данных не работало на вновь добавленных репликах. #77774 (Michael Kolupaev).
- Исправлена проблема, из-за которой обновляемые материализованные представления нарушали создание резервных копий. #77893 (Michael Kolupaev).
- Исправлена старая логическая ошибка срабатывания в
transform. #78247 (Yarik Briukhovetskyi). - Исправляет проблему, из-за которой
SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo'сообщала об успешном выполнении, даже если указанная реплика не существовала. Теперь команда корректно проверяет, что реплика существует в Keeper, перед попыткой синхронизации. #78405 (Jayme Bird). - Исправлены некоторые случаи, когда вторичный индекс не применялся при использовании анализатора. Исправляет #65607, исправляет #69373. #78485 (Nikolai Kochetov).
- Исправлена выгрузка профилировочных событий (
NetworkSendElapsedMicroseconds/NetworkSendBytes) для протокола HTTP с включённым сжатием (погрешность не должна превышать размер буфера, обычно около 1MiB). #78516 (Azat Khuzhin). #* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad). - Исправлен анализатор, выдававший
LOGICAL_ERROR, когда вJOIN ... USINGиспользовался столбецALIAS— теперь в таких случаях возвращается корректная ошибка. #78618 (Yakov Olkhovskiy). - Исправлен анализатор:
CREATE VIEW ... ON CLUSTERзавершался с ошибкой, если в SELECT использовались позиционные аргументы. #78663 (Yakov Olkhovskiy). - Исправлена ошибка
Block structure mismatchпри выполненииINSERT SELECTв табличную функцию с автоматическим определением схемы, если вSELECTиспользуются скалярные подзапросы. #78677 (Pervakov Grigorii). - Исправлен анализатор: при
prefer_global_in_and_join=1для таблицы типа Distributed в запросе SELECT функциюinследует заменять наglobalIn. #78749 (Yakov Olkhovskiy). - Исправлено несколько типов запросов
SELECT, которые читают данные из таблиц с движкомMongoDBили с использованием табличной функцииmongodb: запросы с неявным приведением константного значения в условииWHERE(например,WHERE datetime = '2025-03-10 00:00:00'); запросы сLIMITиGROUP BY. Ранее они могли возвращать некорректный результат. #78777 (Anton Popov). - Исправлено преобразование между разными типами JSON. Теперь оно выполняется простым приведением через преобразование в String и обратно. Это менее эффективно, но полностью корректно. #78807 (Pavel Kruglov).
- Исправлена логическая ошибка при преобразовании типа Dynamic в Interval. #78813 (Pavel Kruglov).
- Исправлен откат столбца при ошибке парсинга JSON. #78836 (Pavel Kruglov).
- Исправлена ошибка 'bad cast', возникающая при выполнении JOIN с использованием константного псевдонима столбца. #78848 (Vladimir Cherkasov).
- Запретить использование
PREWHEREв материализованных представлениях для столбцов, типы которых различаются в представлении и целевой таблице. #78889 (Pavel Kruglov). - Исправлена логическая ошибка при разборе некорректных бинарных данных столбца Variant. #78982 (Pavel Kruglov).
- Выбрасывать исключение, если размер пачки Parquet установлен в 0. Ранее при
output_format_parquet_batch_size = 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).