Обратно несовместимое изменение
- Функция
geoToH3()теперь принимает входные данные в порядке (lat, lon,res), что является стандартным порядком для геометрических функций. Пользователи, которые хотят сохранить прежний порядок результатов (lon, lat,res), могут установить настройкуgeotoh3_lon_lat_input_order = true. #78852 (Pratima Patel). - Индексы типа
full_textбыли переименованы вgin. Это соответствует более привычной терминологии PostgreSQL и других баз данных. Существующие индексы типаfull_textпо-прежнему можно загрузить, но при попытке использовать их в поиске они сгенерируют исключение с рекомендацией использовать индексыgin. #79024 (Robert Schulze). - Добавлена настройка файлового кэша
allow_dynamic_cache_resizeсо значениемfalseпо умолчанию, которая позволяет динамически изменять размер файлового кэша. Причина: в некоторых средах (ClickHouse Cloud) все события масштабирования происходят через перезапуск процесса, и нам важно, чтобы эта возможность была явно отключена для лучшего контроля над поведением и в качестве меры предосторожности. Этот PR помечен как обратно несовместимый, поскольку в старых версиях динамическое изменение размера кэша по умолчанию работало без специальной настройки. #79148 (Kseniia Sumarokova). - Удалена поддержка устаревших типов индексов
annoyиusearch. Оба уже давно были заглушками, то есть любая попытка использовать эти устаревшие индексы всё равно приводила к ошибке. Если у вас всё ещё есть индексыannoyиusearch, удалите их. #79802 (Robert Schulze). #* Удалена настройка сервераformat_alter_commands_with_parentheses. Эта настройка была добавлена и по умолчанию отключена в 24.2. По умолчанию она была включена в 25.2. Поскольку больше нет LTS-версий, не поддерживающих новый формат, эту настройку можно удалить. #79970 (János Benjamin Antal). #* Незначительное изменение: настройки сервера backup_threads и restore_threads теперь принудительно должны быть ненулевыми. #80224 (Raúl Marín). - Исправлен
bitNot()для String: теперь он возвращает строку с завершающим нулём. #80791 (Azat Khuzhin).
Новая возможность
- В MergeTree
SETTINGSдобавлена новая опция, которая задает кодек сжатия по умолчанию, если в запросеCREATEон явно не определен для указанных столбцов. Это закрывает #42005. #66394 (gvoelfin). - Продолжение работы по https://github.com/ClickHouse/ClickHouse/pull/71943. В этом PR реализованы типы данных
Time/Time64. Добавлены новые типы данных: Time (HHH:MM:SS) и Time64 (HHH:MM:SS.<fractional>), а также некоторые базовые функции приведения типов и функции для работы с другими типами данных. Кроме того, имя существующей функцииtoTimeбыло изменено наtoTimeWithFixedDate, поскольку функцияtoTimeтребуется для функции приведения типов. #75735 (Yarik Briukhovetskyi). - Добавлена поддержка коррелированных подзапросов в качестве аргумента выражения
EXISTSв условииWHERE. Закрывает #72459. #76078 (Dmitry Novik). - Добавлена возможность записи в движки таблиц Merge. #77484 (Anton Ivashkin).
- Распределённый
INSERT SELECTдля реплицируемых таблиц MergeTree теперь эффективно использует параллельные реплики, распараллеливаяINSERT: на разных узлах выбираются разные данные и независимо выполняется их вставка. #78041 (Igor Nikonov). - Добавлены функции
mapContainsValuesLike/mapContainsValues/mapExtractValuesLikeдля фильтрации по значениям Map, а также их поддержка в индексах на основе bloomfilter. #78171 (UnamedRus). - Добавлена таблица
system.iceberg_history. #78244 (Smita Kulkarni). - Добавлено планирование слотов запросов для рабочих нагрузок; подробности см. на странице https://clickhouse.com/docs/operations/workload-scheduling#query_scheduling. #78415 (Sergei Trifonov).
- Добавлены функции
getServerSettingиgetMergeTreeSetting. Закрывает https://github.com/clickhouse/clickhouse/issues/78318. #78439 (NamNguyenHoai). - Добавлена поддержка запрещённых значений в ограничениях для настроек. #78499 (Bharat Nallan).
- Добавлена новая настройка
iceberg_enable_version_hintдля использования файлаversion-hint.text. #78594 (Arnaud Briche). - Позволяет выполнять TRUNCATE для определенных таблиц в базе данных, отфильтрованных с помощью ключевого слова
LIKE. #78597 (Yarik Briukhovetskyi). clickhouse-local(и его сокращенный алиасch) теперь использует неявныйFROM tableпри наличии входных данных для обработки. Это закрывает #65023. Также вclickhouse-localтеперь автоматически определяется формат, если--input-formatне указан и обрабатывается обычный файл. #79085 (Alexey Milovidov).- Добавлены функции
icebergHashиicebergBucketTransform. Добавлена поддержка отсечения файлов данных в таблицахIceberg, партиционированных с помощьюбакет-преобразования. #79262 (Daniil Ivanik). - Добавлена поддержка Coalescing Merge Tree. Исправление закрывает #78869. #79344 (Konstantin Vedernikov).
- Добавлены функции
stringBytesUniqиstringBytesEntropyдля поиска потенциально случайных или зашифрованных данных. #79350 (Sachin Kumar Singh). - Добавлена поддержка виртуального столбца
_part_starting_offsetв таблицах семейства MergeTree. Этот столбец отражает накопительное количество строк во всех предшествующих частях и вычисляется во время выполнения запроса на основе текущего списка частей. Накопительные значения сохраняются на протяжении всего выполнения запроса и остаются актуальными даже после отсечения частей. Связанная внутренняя логика была переработана для поддержки такого поведения. #79417 (Amos Bird). - Добавлена настройка
enable_shared_storage_snapshot_in_query, которая позволяет использовать один и тот же снимок хранилища во всех подзапросах одного запроса. Это обеспечивает согласованное чтение из одной и той же таблицы, даже если она используется в запросе несколько раз. #79471 (Amos Bird). - Поддерживается запись JSON-столбцов CH в Parquet и чтение JSON-столбцов Parquet напрямую в качестве JSON-столбцов CH. #79649 (Nihal Z. Miaji).
- В состав ClickHouse входит
chdig— TUI-интерфейс для ClickHouse (в стиле top). #79666 (Azat Khuzhin). - Добавлена поддержка
MultiPolygonвpointInPolygon. #79773 (Nihal Z. Miaji). - Добавлена поддержка GeoParquet. Это закрывает #75317. #79777 (Konstantin Vedernikov).
- Добавлена поддержка запросов к таблицам Delta, смонтированным в локальной файловой системе, через табличную функцию
deltaLakeLocal. #79781 (roykim98). - Добавлена поддержка кодирования и декодирования base32. #79809 (Joanna Hulboj).
- В ClickHouse векторный поиск теперь поддерживает как префильтрацию, так и постфильтрацию, а также предоставляет соответствующие настройки для более тонкой настройки. (issue #78161). #79854 (Shankar Iyer).
- Добавлена поддержка функций чтения формата WKB. Это частично закрывает #43941. #80139 (Konstantin Vedernikov).
- Добавлена новая настройка
cast_string_to_date_time_mode, позволяющая выбирать режим парсинга DateTime при приведении из String. #80210 (Pavel Kruglov). - Добавлены функции кодирования и декодирования для
Bech32иBech32m(задача #40381). #80239 (George Larionov). - Добавлена поддержка настройки
diskдля движков БД Atomic и Ordinary, позволяющей указать диск для хранения файлов метаданных таблиц. #80546 (Tuan Pham Anh). - Добавлены функции для распаковки и сравнения частей MergeTree. #80573 (Mikhail Artemenko).
- Вспомогательные функции
timeSeries*для ускорения некоторых сценариев при работе с временными рядами: - ресемплирование данных по временной сетке с указанными начальной и конечной временными метками и шагом - вычисление PromQL-подобныхdelta,rate,ideltaиirate. #80590 (Alexander Gololobov). - Разрешена фильтрация частей, выбранных для запроса, по диску, на котором они расположены. #80650 (tanner-bruce).
- Добавлена стартовая страница со списком встроенных веб-инструментов. Она будет открываться по запросу от User-Agent, похожего на браузер. #81129 (Alexey Milovidov).
- Добавлена возможность фильтрации значений
NULLвarrayFirst,arrayFirstIndex,arrayLastиarrayLastIndex. Исправлено #81113. #81197 (Lennard Eijsackers).
Экспериментальные возможности
- Каталог Hive metastore для озера данных Iceberg. #77677 (Konstantin Vedernikov).
- Явные параметры можно задавать через пары ключ-значение. В настоящее время поддерживаются обязательный
tokenizerи два необязательных параметра:max_rows_per_postings_listиngram_size. #80262 (Elmi Ahmadov). - Экспериментальные индексы типа
ginбыли переименованы вtext. Существующие индексы типаginпо-прежнему можно загружать, но при попытке использовать их в поиске будет сгенерировано исключение (с предложением использовать индексыtext). #80855 (Robert Schulze).
Повышение производительности
- Ускорено вычисление вторичных индексов за счёт вычисления их выражений сразу на нескольких гранулах. #64109 (Alexey Milovidov).
- Добавлен порог (задаётся настройкой
parallel_hash_join_threshold) для возврата к алгоритмуhash, если размер правой таблицы ниже этого порога. #76185 (Nikita Taranov). - Существующая реализация
Pipe::resizeсоздает один узелResizeилиStrictResize, вставляя его в топологию конвейера, после чего этот узел выступает центральным хабом, соединяющим все входные потоки (вышестоящие узлы) с единым набором выходных потоков (нижестоящие узлы). Такая архитектура приводит к конкуренции заExecutingGraph::Node::status_mutexво время выполнения графа конвейера, особенно в средах с большим количеством ядер. Когда конвейеры масштабируются до десятков или сотен потоков, эта конкуренция приводит к:. #77562 (Zhiguo Zhou). - Повышена производительность
S3Queue/AzureQueueза счет возможности выполнятьINSERTпараллельно для данных (это можно включить настройкой очередиparallel_inserts=true). РанееS3Queue/AzureQueueмогли параллельно выполнять только первую часть конвейера (загрузку, разбор), аINSERTбыл однопоточным. При этомINSERTпочти всегда является узким местом. Теперь производительность будет масштабироваться почти линейно сprocessing_threads_num. #77671 (Azat Khuzhin). - Изменён формат компактных частей, чтобы сохранять метки для каждого подпотока и обеспечить возможность чтения отдельных подстолбцов. Старый компактный формат по-прежнему поддерживается для чтения и может быть включён для записи с помощью настройки MergeTree
write_marks_for_substreams_in_compact_parts. По умолчанию он отключён для более безопасного обновления, так как изменяет формат хранения компактных частей. В одном из следующих релизов он будет включён по умолчанию. #77940 (Pavel Kruglov). - Введена новая настройка
use_skip_indexes_in_final_exact_mode. Если запрос к таблицеReplacingMergeTreeсодержит модификаторFINAL, чтение только диапазонов таблицы, выбранных по индексу пропуска данных, может приводить к некорректному результату. Эта настройка позволяет гарантировать корректность результата за счёт сканирования более новых частей, которые пересекаются с диапазонами первичного ключа, возвращёнными индексом пропуска данных. Установите 0, чтобы отключить, 1 — чтобы включить. #78350 (Shankar Iyer). - Теперь для определения размера задачи чтения при включенных параллельных репликах мы используем количество реплик. Это обеспечивает более равномерное распределение нагрузки между репликами, когда объем данных для чтения не очень велик. #78695 (Nikita Taranov).
- Добавлена возможность параллельного слияния состояний
uniqExactна заключительном этапе распределённой агрегации. #78703 (Nikita Taranov). - Устранена возможная просадка производительности при параллельном слиянии состояний
uniqExactдля агрегации по ключу. #78724 (Nikita Taranov). #* ЗапросыDELETE FROM ... WHERE 1заменены наTRUNCATE. (Отменено). #78739 (Konstantin Vedernikov). - Уменьшено количество обращений к API List Blobs в хранилище Azure. #78860 (Julia Kartseva).
- Условия равенства из шага filter плана запроса объединяются с условием
JOIN, если это возможно, чтобы их можно было использовать в качестве ключей хеш-таблицы. #78877 (Dmitry Novik). - Повышена производительность парсинга путей Hive за счёт использования
extractKeyValuePairsвместо регулярных выражений. #79067 (Arthur Passos). - Повышена производительность распределённого
INSERT SELECTс параллельными репликами. #79441 (Azat Khuzhin). - Разрешён перенос условий с подстолбцами в
PREWHERE. #79489 (Pavel Kruglov). - Улучшена производительность всех типов блум-фильтров. #79800 (Delyan Kratunov).
- Предотвращена очистка
LogSeriesLimiterпри каждом создании, что позволяет избежать конфликтов блокировок и снижения производительности в сценариях с высоким параллелизмом. #79864 (filimonov). - По умолчанию включён параметр
compile_expressions(JIT-компилятор для фрагментов обычных выражений). Это закрывает #51264, #56386 и #66486. #79907 (Alexey Milovidov). - Ускорено выполнение запросов благодаря тривиальной оптимизации count. #79945 (Raúl Marín).
- Добавлен быстрый путь в
UniqExactSet::merge, когда одно из множеств пусто. Также теперь, если множество LHS двухуровневое, а RHS — одноуровневое, мы не выполняем преобразование RHS в двухуровневое. #79971 (Nikita Taranov). - Добавлен
__attribute__((always_inline))дляconvertDecimalsImpl. #79999 (Konstantin Bogdanov). - По умолчанию для
input_format_parquet_bloom_filter_push_downустановлено значение true. Также исправлена ошибка в истории изменений настроек. #80058 (Alexey Milovidov). #* По умолчанию журналирование теперь выполняется асинхронно. Это можно отключить, установив<async>false</async>в разделе<logger>. #80125 (Raúl Marín). - Повысить эффективность повторного использования памяти и сократить число страничных отказов при использовании двухуровневых хеш-таблиц. #80245 (Jiebin Sun).
- Устранены лишние обновления и снижена конкуренция за блокировки в QueryConditionCache. #80247 (Jiebin Sun).
- Небольшая оптимизация
concatenateBlocks, которая может быть полезна для параллельного hash JOIN. #80328 (李扬). - При выборе диапазонов меток по диапазону первичного ключа двоичный поиск нельзя использовать, если первичный ключ обёрнут функциями. Этот PR снимает это ограничение: двоичный поиск по-прежнему можно применять, когда первичный ключ обёрнут в цепочку всегда монотонных функций или когда RPN содержит элемент, который всегда равен true. Этот PR закрывает #45536. #80597 (zoomxi).
- Ускорено завершение работы движка Kafka (убрана лишняя 3-секундная задержка при наличии нескольких таблиц Kafka). #80796 (Azat Khuzhin).
- Снижено использование памяти при async inserts и повышена производительность запросов на вставку. #80972 (Raúl Marín).
- Не включайте профилирование процессоров, если таблица Log отключена. #81256 (Raúl Marín).
- Ускорена работа
toFixedString, если исходное значение в точности соответствует требуемому. #81257 (Raúl Marín). - Не обрабатывать значения квот, если для пользователя не заданы ограничения. #81549 (Raúl Marín).
- ProcfsMetricsProvider переведён в режим thread_local, чтобы файлы оставались открытыми между задачами. #81576 (Raúl Marín).
- Исправлена проблема с падением производительности при отслеживании памяти. #81694 (Michael Kolupaev).
Улучшения
clickhouse-local будет сохранять базы данных после перезапуска, если указать аргумент командной строки --path. Закрывает #50647. Закрывает #49947. #71722 (Alexey Milovidov).
EXPLAIN SYNTAXтеперь использует новый анализатор. Он возвращает абстрактное синтаксическое дерево (AST), построенное на основе дерева запроса. Добавлена опцияquery_tree_passesдля управления количеством проходов, выполняемых перед преобразованием дерева запроса в AST. #74536 (Vladimir Cherkasov). #* По умолчанию в файловом кэше используется политика SLRU. #75072 (Kseniia Sumarokova).- Переработана логика записи в представления. #77309 (Sema Checherinda).
- Кластерные табличные функции объектного хранилища (например,
s3Cluster) теперь будут назначать файлы репликам для чтения на основе консистентного хеширования, чтобы улучшить локальность кэша. #77326 (Andrej Hoos). - Обновлять учетные данные S3 после ошибки
AuthenticationRequired. #77353 (Vitaly Baranov). - Конфигурация proxy встроена в некоторые HTTP-буферы с помощью билдеров. #77693 (Arthur Passos).
- В
system.asynchronous_metricsдобавлены метрики словарей:DictionaryMaxUpdateDelay— максимальная задержка обновления словаря (в секундах);DictionaryTotalFailedUpdates— количество ошибок с момента последней успешной загрузки во всех словарях. #78175 (Vlad). - Добавлены функции
divideOrNull,moduloOrNull,intDivOrNull,positiveModuloOrNull, возвращающие NULL, если правый аргумент равен нулю. #78276 (kevinyhzou). - Функция
isIPAddressInRangeтеперь поддерживает типы данных String, IPv4, IPv6, Nullable(String), Nullable(IPv4) и Nullable(IPv6). #78364 (YjyJeff). - Динамическое изменение настроек пулера соединений для движка PostgreSQL. #78414 (Samay Sharma).
- Разрешено указывать
_part_offsetв обычной проекции. Это первый шаг к созданию индекса проекции. Эту возможность можно использовать вместе с #58224, и она также может помочь в улучшении https://github.com/ClickHouse/ClickHouse/pull/63207. #78429 (Amos Bird). - Улучшена оптимизация ключа сегментирования для распределённых запросов. #78452 (fhw12345).
- Добавлены новые столбцы (
create_queryиsource) вsystem.named_collections. Закрывает #78179. #78582 (MikhailBurdukov). - В системную таблицу
system.query_condition_cacheдобавлено полеcondition. В нём хранится условие в открытом виде, хеш которого используется как ключ в кэше условий запроса. #78671 (Robert Schulze). - Реализована логика, аналогичная перебалансировке Kafka, для StorageKafka2 с использованием ClickHouse Keeper. Для каждой реплики поддерживаются два типа блокировок партиций: постоянные и временные. Реплика старается удерживать постоянные блокировки как можно дольше; при этом в любой момент времени на реплике может быть не более
all_topic_partitions / active_replicas_countпостоянных блокировок (здесьall_topic_partitions— общее количество партиций,active_replicas_count— количество активных реплик). Если их больше, реплика освобождает часть партиций. Часть партиций реплика удерживает временно. Максимальное количество временных блокировок на реплике динамически меняется, чтобы дать другим репликам возможность закрепить часть партиций постоянными блокировками. При обновлении временных блокировок реплика освобождает их все и затем снова пытается захватить некоторые из них. #78726 (Daria Fomina). - В движок таблицы
Kafkaдобавлены настройки таблицы для конфигурации SASL и учетных данных. Это позволяет настраивать аутентификацию на основе SASL для Kafka и совместимых с Kafka систем напрямую в оператореCREATE TABLE, не используя конфигурационные файлы или именованные коллекции. #78810 (Christoph Wurm). - Добавлено предупреждение о базах данных, которые могли быть созданы для сохранения повреждённых таблиц. #78841 (János Benjamin Antal).
- Теперь индексы векторного сходства можно создавать для столбцов типа
BFloat16. #78850 (Robert Schulze). - Добавлена поддержка Unix-временных меток с дробной частью при best-effort-парсинге DateTime64. #78908 (Pavel Kruglov).
- В реализации delta-kernel для хранилища DeltaLake исправлена поддержка
columnMappingMode.name, добавлены тесты для эволюции схемы. #78921 (Kseniia Sumarokova). - Улучшена вставка в столбец Variant в формате Values благодаря более точному преобразованию значений. #78923 (Pavel Kruglov).
- В движок
S3Queueдобавлен виртуальный столбец_time. #78926 (Anton Ivashkin). - Функция
tokensбыла расширена: теперь она принимает дополнительный аргумент “tokenizer”, а также другие аргументы, специфичные для токенизатора. #79001 (Elmi Ahmadov). - Оператор
SHOW CLUSTERтеперь разворачивает макросы (если они есть) в аргументе. #79006 (arf42). - Хеш-функции теперь поддерживают
NULLв массивах, кортежах и картах. (задачи #48365 и #48623). #79008 (Michael Kolupaev). - Поддержка обновления в таблицах MergeTree в режиме только для чтения. #79033 (Alexey Milovidov). #* cctz обновлён до версии 2025a. #79043 (Raúl Marín).
- Настройки, управляющие разрывом соединения при перегрузке CPU, теперь можно менять без перезапуска. #79052 (Alexey Katsman).
- Так удобнее в использовании. #79066 (Alexey Milovidov).
- Кэш условий запроса включён по умолчанию. #79080 (Alexey Milovidov). #* Добавлена возможность отмены действий с вкладками в веб-интерфейсе. Это закрывает #71284. #79084 (Alexey Milovidov).
- Удалены настройки при
recoverLostReplica, как это было сделано в https://github.com/ClickHouse/ClickHouse/pull/78637. #79113 (Nikita Mikhaylov). - Добавлены события ProfileEvents ParquetReadRowGroups и ParquetPrunedRowGroups для профилирования отсечения по индексу Parquet. #79180 (flynn).
- К путям данных, отображаемым в system.tables для обычных дисков в Azure Blob Storage, добавлен префикс контейнера, что делает их отображение единообразным с S3 и GCP. #79241 (Julia Kartseva).
- Добавлена поддержка изменения базы данных на кластере. #79242 (Tuan Pham Anh).
- Явно пропускать пропущенные запуски сбора статистики для QueryMetricLog, иначе журнал будет слишком долго догонять текущее время. #79257 (Mikhail Artemenko).
- Добавлена возможность выполнять легковесные удаления на лету (с настройками
lightweight_deletes_sync = 0,apply_mutations_on_fly = 1. #79281 (Anton Popov). - Оптимизированы мутации
ALTER ... DELETEдля частей, из которых нужно удалить все строки. Теперь в таких случаях вместо исходной части создаётся пустая, без выполнения мутации. #79307 (Anton Popov). - Небольшие оптимизации в
CHColumnToArrowColumn. #79308 (Bharat Nallan). - Параметр
allow_archive_path_syntaxбыл по ошибке помечен как экспериментальный. Добавлен тест, чтобы экспериментальные параметры не включались по умолчанию. #79320 (Alexey Milovidov). - Настройки page cache теперь можно задавать на уровне отдельных запросов. Это нужно для более быстрых экспериментов и для возможности тонкой настройки запросов, где важны высокая пропускная способность и низкая задержка. #79337 (Alexey Milovidov).
- Не выводить подсказки для чисел в форматах Pretty для чисел, похожих на большинство 64-битных хешей. Это закрывает #79334. #79338 (Alexey Milovidov).
- Если данные в формате Pretty выводятся в терминале и следующий блок имеет ту же ширину столбцов, он может быть продолжен от предыдущего: для этого он «приклеивается» к нему за счёт перемещения курсора вверх. Это закрывает #79333. Эта возможность управляется новой настройкой
output_format_pretty_glue_chunks. #79339 (Alexey Milovidov). - Цвета графиков на расширенных панелях мониторинга будут вычисляться на основе хеша соответствующего запроса. Это упрощает запоминание и поиск графика при прокрутке панели мониторинга. #79341 (Alexey Milovidov).
- Добавлена асинхронная метрика
FilesystemCacheCapacity— общая ёмкость виртуальной файловой системыcache. Это полезно для глобального мониторинга инфраструктуры. #79348 (Alexey Milovidov). - Оптимизирован доступ к system.parts (размер столбцов/индексов считывается только по запросу). #79352 (Azat Khuzhin).
- Выбирать только важные поля для запроса
'SHOW CLUSTER <name>'вместо всех полей. #79368 (Tuan Pham Anh). - Добавлена возможность указывать настройки хранилища для
DatabaseCatalog. #79407 (Kseniia Sumarokova). - Добавлена поддержка локального хранилища в delta kernel. #79416 (Kseniia Sumarokova).
- Добавлена настройка уровня запроса для включения delta-kernel-rs:
allow_experimental_delta_kernel_rs. #79418 (Kseniia Sumarokova). - Исправлен возможный бесконечный цикл при перечислении объектов из blob-хранилищ Azure/S3. #79425 (Alexander Gololobov).
- Теперь ClickHouse принимает параметры запроса не только в виде
param_<name>(подчёркивание), но и в видеparam-<name>(дефис). Это исправляет #63093. #79429 (Engel Danila). #* Добавлена настройка файлового кэшаmax_size_ratio_to_total_space. #79460 (Kseniia Sumarokova). - Подробное предупреждение о снижении пропускной способности при копировании данных из локального хранилища в удалённое S3 с включённой проверкой контрольной суммы. #79464 (VicoWu).
- Для
clickhouse-benchmarkопцияreconnectбыла перенастроена так, чтобы принимать значения 0, 1 или N в зависимости от нужного режима переподключения. #79465 (Sachin Kumar Singh). - Добавлена настройка
input_format_max_block_size_bytes, чтобы ограничить размер блоков, создаваемых во входных форматах, в байтах. Это помогает избежать чрезмерного использования памяти при импорте данных, когда строки содержат большие значения. #79495 (Pavel Kruglov). - Улучшены скорость работы sparseGrams и использование памяти. #79517 (Konstantin Vedernikov).
- По возможности избегайте лишнего копирования блока при вставке в Compact part. #79536 (Pavel Kruglov).
- По умолчанию включена реализация delta-kernel для хранилища
DeltaLake. #79541 (Kseniia Sumarokova). - Если при чтении из URL происходит несколько перенаправлений, настройка
enable_url_encodingкорректно применяется ко всем перенаправлениям в этой цепочке. #79563 (Shankar Iyer). - Разрешена команда
ALTER TABLE ... MOVE|REPLACE PARTITIONдля таблиц, расположенных на разных дисках plain_rewritable. #79566 (Julia Kartseva). - Добавлена поддержка скалярных коррелированных подзапросов в секции
WHERE. Закрывает #6697. #79600 (Dmitry Novik). - Ранее при
input_format_parquet_max_block_size = 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). - Уровень логирования для выбранных для слияния частей был неверным (Information). Закрывает #80061. #80062 (Alexey Milovidov).
- Функция reverse теперь поддерживает тип данных Tuple. Закрывает #80053. #80083 (flynn).
- Значение параметра
enble_url_encodingпо умолчанию теперь —False. #80088 (Shankar Iyer). - Этот небольшой патч исправляет #75817: позволяет получать данные
auxiliary_zookeepersиз таблицыsystem.zookeeper. #80146 (Nikolay Govorov). - Векторный поиск с использованием индекса векторного сходства теперь имеет статус бета (ранее — экспериментальный). #80164 (Robert Schulze).
- Добавлены асинхронные метрики для TCP-сокетов сервера. Это улучшает обсервабилити. Закрывает #80187. #80188 (Alexey Milovidov).
- Функция
tokensтеперь поддерживает токенизаторstring. #80195 (Robert Schulze). - Параллельные реплики: избегать ожидания медленных неиспользуемых реплик, если все задачи чтения уже распределены между другими репликами. #80199 (Igor Nikonov).
- Добавлена поддержка
anylast_respect_nullsиany_respect_nullsвsimpleAggregateFunction. #80219 (Diskein). - Удалён лишний вызов
adjustCreateQueryForBackup()для баз данных Replicated. #80282 (Vitaly Baranov). #* Вclickhouse-localразрешены дополнительные опции (идущие после--, например-- --config.value='abc') без знака равенства. Закрывает #80292. #80293 (Alexey Milovidov). - Подсветка метасимволов в запросах
SHOW ... LIKE. Это закрывает #80275. #80297 (Alexey Milovidov). #* SQL UDF вclickhouse-localтеперь сохраняются постоянно. Ранее созданная функция будет загружаться при запуске. Это закрывает #80085. #80300 (Alexey Milovidov). - Добавлена поддержка сравнения между
Time/Time64. #80327 (Yarik Briukhovetskyi). - Исправлено описание в плане
EXPLAINдля предварительного шагаDISTINCT. #80330 (UnamedRus). - Разрешено использовать именованные коллекции в ODBC/JDBC. #80334 (Andrey Zvonov).
- Добавлена поддержка фильтрации по нескольким проекциям, позволяющая использовать более одной проекции для фильтрации на уровне частей. Это устраняет проблему #55525. Это второй шаг в реализации индекса проекций после #78429. #80343 (Amos Bird).
- Метрики количества дисков в режиме только для чтения и неисправных дисков. Индикатор пишет в журнал при запуске DiskLocalCheckThread. #80391 (VicoWu).
- Добавлена поддержка хранилища
s3_plain_rewritableс проекциями. В предыдущих версиях объекты метаданных в S3, ссылающиеся на проекции, не обновлялись при перемещении. Закрывает #70258. #80393 (Sav). - Для параллельных реплик используется отдельный тайм-аут подключения, см. настройку
parallel_replicas_connect_timeout_ms. Ранее в качестве значений тайм-аута подключения для запросов с параллельными репликами использовались настройкиconnect_timeout_with_failover_ms/connect_timeout_with_failover_secure_ms(по умолчанию 1 секунда). #80421 (Igor Nikonov). - Команда
SYSTEM UNFREEZEне будет пытаться искать части на дисках только для чтения и дисках с однократной записью. Этим закрывается #80430. #80432 (Alexey Milovidov). - Изменён уровень логирования для сообщения о слитых частях: с INFO на TRACE. #80476 (Hans Krutzer).
- Реализована плоская сериализация для Dynamic и JSON в формате Native, которая позволяет сериализовать и десериализовать данные Dynamic и JSON без специальных структур, таких как shared variant для Dynamic и общие данные для JSON. Эту сериализацию можно включить, задав
output_format_native_use_flattened_dynamic_and_json_serialization. Ее можно использовать для упрощения поддержки Dynamic и JSON в TCP-протоколе в клиентах на разных языках. #80499 (Pavel Kruglov). - Изменено поведение отсечения партиций по умолчанию для таблиц Iceberg. #80583 (Melvyn Peignon).
- Добавлены два новых ProfileEvents для обсервабилити алгоритмов поиска по индексу:
IndexBinarySearchAlgorithmиIndexGenericExclusionSearchAlgorithm. #80679 (Pablo Marcos). - Не писать в журналы сообщения о неподдерживаемом
MADV_POPULATE_WRITEв старых ядрах (чтобы не засорять журналы). #80704 (Robert Schulze). - Добавлена поддержка Date32 и DateTime64 в TTL. #80710 (Andrey Zvonov).
- Скорректированы значения совместимости для
max_merge_delayed_streams_for_parallel_write. #80760 (Azat Khuzhin). - Исправлен сбой: если в деструкторе при попытке удалить временный файл (такие файлы используются для выгрузки временных данных на диск) генерируется исключение, программа может завершиться. #80776 (Alexey Milovidov).
- Добавлен модификатор
IF EXISTSдляSYSTEM SYNC REPLICA. #80810 (Raúl Marín). - Расширено сообщение об исключении для “Having zero bytes, but read range is not finished…”, в system.filesystem_cache’ добавлен столбец finished_download_time. #80849 (Kseniia Sumarokova).
- Ранее для полнотекстового индекса не поддерживалось
packed-хранилище, поскольку идентификатор сегмента обновлялся на лету через чтение и запись файла (.gin_sid) на диске. В случае сpacked-хранилищем чтение значения из незафиксированного файла не поддерживается, что и приводило к проблеме. #80852 (Elmi Ahmadov). - В вывод
EXPLAINдобавлен раздел с алгоритмом поиска при использованииindexes = 1. В нём отображается либо “двоичный поиск”, либо “универсальный алгоритм поиска с исключением”. #80881 (Pablo Marcos). - В начале 2024 года для обработчика MySQL значение
prefer_column_name_to_aliasбыло принудительно установлено в True, поскольку новый анализатор по умолчанию не был включен. Теперь эта жесткая привязка убрана. #80916 (Yarik Briukhovetskyi). - Теперь
system.iceberg_historyпоказывает историю для баз данных из каталогов, таких как glue или iceberg rest. Также для единообразия вsystem.iceberg_historyстолбцыtable_nameиdatabase_nameбыли переименованы вtableиdatabase. #80975 (alesapin). - Для табличной функции
mergeразрешён режим только для чтения, поэтому для её использования больше не требуется grantCREATE TEMPORARY TABLE. #80981 (Miсhael Stetsyuk). - Улучшена диагностика кэшей в памяти (информация о кэшах теперь доступна в
system.metrics, а не в неполныхsystem.asynchronouse_metrics). Вdashboard.htmlдобавлен размер кэшей в памяти (в байтах).VectorSimilarityIndexCacheSize/IcebergMetadataFilesCacheSizeпереименованы вVectorSimilarityIndexCacheBytes/IcebergMetadataFilesCacheBytes. #81023 (Azat Khuzhin). - Игнорировать базы данных с движками, которые не поддерживают таблицы RocksDB, при чтении из system.rocksdb. #81083 (Pervakov Grigorii).
- В файле конфигурации
clickhouse-localразрешеныfilesystem_cachesиnamed_collections. #81105 (Alexey Milovidov). - Исправлена подсветка
PARTITION BYв запросахINSERT. В предыдущих версияхPARTITION BYне подсвечивался как ключевое слово. #81106 (Alexey Milovidov). #* Два небольших улучшения в веб-интерфейсе: теперь корректно обрабатываются запросы без вывода, такие какCREATEиINSERT(до недавнего времени такие запросы приводили к бесконечному отображению индикатора загрузки); - при двойном щелчке по таблице выполняется прокрутка к началу. #81131 (Alexey Milovidov). #* Обновлёнc-aresдоv1.34.5. #81159 (Konstantin Bogdanov). #* curl обновлён до 8.14 для устранения CVE-2025-5025 и CVE-2025-4947. #81171 (larryluogit). #* libarchive обновлён до 3.7.9 для устранения следующих уязвимостей: CVE-2024-20696 CVE-2025-25724 CVE-2024-48958 CVE-2024-57970 CVE-2025-1632 CVE-2024-48957 CVE-2024-48615. #81174 (larryluogit). #* libxml2 обновлён до 2.14.3. #81187 (larryluogit). MemoryResidentWithoutPageCacheпоказывает объём физической памяти в байтах, используемой серверным процессом, за вычетом кэша страниц в пространстве пользователя. Это даёт более точное представление о фактическом использовании памяти, когда задействован кэш страниц в пространстве пользователя. Когда кэш страниц в пространстве пользователя отключён, это значение равно MemoryResident. #81233 (Jayme Bird).- Исключения, вручную записываемые в client, local server, keeper client и disks app, помечаются как уже записанные, чтобы не записывать их дважды. #81271 (Miсhael Stetsyuk).
- Параметры
use_skip_indexes_if_finalиuse_skip_indexes_if_final_exact_modeтеперь по умолчанию имеют значениеTrue. Запросы с предложениемFINALтеперь будут использовать индексы пропуска данных (если применимо) для предварительного отбора гранул, а также считывать дополнительные гранулы, соответствующие диапазонам первичного ключа с совпадениями. Пользователи, которым требуется прежнее поведение с приблизительными/неточными результатами, могут после тщательной оценки установитьuse_skip_indexes_if_final_exact_modeв FALSE. #81331 (Shankar Iyer). #* Если в веб-интерфейсе у вас несколько запросов, будет выполняться тот, над которым находится курсор. Продолжение #80977. #81354 (Alexey Milovidov). - Этот PR исправляет проблемы в реализации
is_strictпри проверках монотонности для функций преобразования. Сейчас некоторые функции преобразования, такие как toFloat64(UInt32) и toDate(UInt8), ошибочно возвращают для is_strict значение false, хотя должны возвращать true. #81359 (zoomxi). #* В журналируемой файловой системеmkdirзаписывается в журнал файловой системы, который затем сохраняется на диск. В случае медленного диска это может занять много времени. Эту операцию определённо имеет смысл вынести за пределы области действия блокировки reserve. #81371 (Kseniia Sumarokova). - При проверке того, соответствует ли
KeyConditionнепрерывному диапазону, если ключ обёрнут в цепочку нестрогих функций, может потребоваться преобразоватьConstraint::POINTвConstraint::RANGE. Например,toDate(event_time) = '2025-06-03'подразумевает диапазон дляevent_time: [‘2025-06-03 00:00:00’, ‘2025-06-04 00:00:00’). Этот PR исправляет такое поведение. #81400 (zoomxi). #* Обновлён доpostgres16.9. #81437 (Konstantin Bogdanov). #* Обновлён доopenssl3.2.4. #81438 (Konstantin 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).
- Чтение manifest-файлов 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).
- materialized view может запускаться слишком поздно, например позже таблицы Kafka, которая передаёт в него данные. #72123 (Ilya Golshtein).
- Исправлена логическая ошибка, возникавшая при конфликтах имен столбцов, когда включен analyzer_compatibility_join_using_top_level_identifier. #75676 (Vladimir Cherkasov).
- Исправлены редкие сбои при чтении из таблицы
MergeTreeпосле нескольких асинхронных (сalter_sync = 0) запросовRENAME COLUMNиADD COLUMN. #76346 (Anton Popov). - Исправлено переписывание запроса
SELECTпри созданииVIEWпри включенном анализаторе. Закрывает #75956. #76356 (Dmitry Novik). - Исправлено использование CTE в предикатах, проталкиваемых вниз, когда
allow_push_predicate_ast_for_distributed_subqueriesвключен. Исправлено #75647. Исправлено #79672. #77316 (Dmitry Novik). - Исправлено применение
async_insertс сервера (черезapply_settings_from_server) (ранее это приводило к ошибкамUnknown packet 11 from serverна стороне клиента). #77578 (Azat Khuzhin). - Исправлена проблема, из-за которой refreshable materialized view в базах данных Replicated не работали на вновь добавленных репликах. #77774 (Michael Kolupaev).
- Исправлена ошибка, из-за которой refreshable materialized views ломали резервные копии. #77893 (Michael Kolupaev).
- Исправлена давняя логическая ошибка в срабатывании
transform. #78247 (Yarik Briukhovetskyi). - Исправлена проблема, из-за которой
SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo'сообщала об успешном выполнении даже в случае, если указанная реплика не существовала. Теперь команда корректно проверяет наличие реплики в Keeper перед попыткой синхронизации. #78405 (Jayme Bird). - Исправлены некоторые случаи, когда вторичный индекс не применялся при использовании анализатора. Исправлены #65607, #69373. #78485 (Nikolai Kochetov).
- Исправлен вывод событий профиля (
NetworkSendElapsedMicroseconds/NetworkSendBytes) для HTTP-протокола при включенном сжатии (погрешность не должна превышать размер буфера, обычно около 1MiB). #78516 (Azat Khuzhin). #* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad). - Исправлена ошибка анализатора: при
JOIN ... USINGсо столбцомALIASвозникалLOGICAL_ERROR, хотя должна выдаваться соответствующая ошибка. #78618 (Yakov Olkhovskiy). - Исправлен анализатор: запрос
CREATE VIEW ... ON CLUSTERзавершается ошибкой, если SELECT содержит позиционные аргументы. #78663 (Yakov Olkhovskiy). - Исправлена ошибка
Block structure mismatchв случаеINSERT SELECTв табличную функцию с автоматическим определением схемы, еслиSELECTсодержит скалярные подзапросы. #78677 (Pervakov Grigorii). - Исправлен analyzer: при
prefer_global_in_and_join=1для distributed таблицы в запросе SELECT функцияinдолжна заменяться наglobalIn. #78749 (Yakov Olkhovskiy). - Исправлено несколько типов запросов
SELECT, читающих данные из таблиц с движкомMongoDBили табличной функциейmongodb: запросы с неявным преобразованием константного значения в условииWHERE(например,WHERE datetime = '2025-03-10 00:00:00'); запросы сLIMITиGROUP BY. Ранее они могли возвращать неверный результат. #78777 (Anton Popov). - Исправлено преобразование между различными типами JSON. Теперь оно выполняется простым приведением типов путём преобразования в/из String. Это менее эффективно, но на 100 % корректно. #78807 (Pavel Kruglov).
- Исправлена логическая ошибка при преобразовании типа Dynamic в Interval. #78813 (Pavel Kruglov).
- Исправлен откат столбца при ошибке разбора JSON. #78836 (Pavel Kruglov).
- Исправлена ошибка ‘bad cast’ при использовании в JOIN константного столбца-псевдонима. #78848 (Vladimir Cherkasov).
- Запрещено использовать
PREWHEREв materialized view для столбцов с разными типами в представлении и целевой таблице. #78889 (Pavel Kruglov). - Исправлена логическая ошибка при разборе некорректных бинарных данных в столбце типа Variant. #78982 (Pavel Kruglov).
- Теперь генерируется исключение, если размер батча Parquet установлен в 0. Ранее при
output_format_parquet_batch_size = 0ClickHouse зависал. Теперь это исправлено. #78991 (daryawessely). - Исправлена десериализация дискриминаторов Variant в формате basic в компактных частях. Ошибка появилась в https://github.com/ClickHouse/ClickHouse/pull/55518. #79000 (Pavel Kruglov).
- Словари типа
complex_key_ssd_cacheтеперь не принимают параметрыblock_sizeиwrite_buffer_sizeсо значением 0 или меньше (issue #78314). #79028 (Elmi Ahmadov). - Избегайте использования Field для неагрегированных столбцов в SummingMergeTree. Это может привести к неожиданным ошибкам при использовании типов Dynamic/Variant в SummingMergeTree. #79051 (Pavel Kruglov).
- Исправлено чтение из materialized view с распределённой целевой таблицей и отличающимся заголовком в анализаторе. #79059 (Pavel Kruglov).
- Исправлен сбой в весьма специфической ситуации, когда функция
currentDatabaseиспользовалась в секцияхCONSTRAINTв запросахON CLUSTERЗакрывает #78100. #79070 (pufit). - Исправлена ошибка, из-за которой
arrayUnion()возвращала лишние (некорректные) значения в таблицах с батч-вставками. Исправление #75057. #79079 (Peter Nguyen). #* Исправлен segfault вOpenSSLInitializer. Закрывает #79092. #79097 (Konstantin Bogdanov). - Исправлена передача внешних ролей в межсерверных запросах. #79099 (Andrey Zvonov).
- Всегда указывайте префикс для S3 ListObject. #79114 (Azat Khuzhin).
- Исправляет ошибку, из-за которой
arrayUnion()возвращала лишние (некорректные) значения в таблицах с батч-вставками. Исправление #79157. #79158 (Peter Nguyen). - Исправлена логическая ошибка после pushdown-оптимизации фильтра. #79164 (Pervakov Grigorii).
- Попробуйте использовать IColumn вместо Field в SingleValueDataGeneric. Это исправляет некорректные возвращаемые значения для некоторых агрегатных функций, например
argMax, с типамиDynamic/Variant/JSON. #79166 (Pavel Kruglov). - Исправлен движок таблицы DeltaLake для реализации delta-kernel при использовании конечных точек на базе HTTP; также исправлен NOSIGN. Закрывает #78124. #79203 (Kseniia Sumarokova).
- Исправление в Keeper: предотвращено срабатывание наблюдений при неуспешных multi-запросах. #79247 (Antonio Andelic).
- Запрещено использовать типы Dynamic и JSON в
IN. При текущей реализацииINэто может приводить к некорректным результатам. Полноценная поддержка этих типов вINсложна и может быть реализована в будущем. #79282 (Pavel Kruglov). - Исправлена проверка на дублирующиеся пути при разборе типа JSON. #79317 (Pavel Kruglov).
- Устранены проблемы с соединением SecureStreamSocket. #79383 (Konstantin Bogdanov).
- Исправлена загрузка дисков plain_rewritable с данными. #79439 (Julia Kartseva).
- Исправлен сбой при динамическом обнаружении подстолбцов в частях типа Wide в MergeTree. #79466 (Pavel Kruglov).
- Проверяйте длину имени таблицы только для первоначальных запросов CREATE. Не выполняйте эту проверку для вторичных CREATE, чтобы избежать проблем с обратной совместимостью. #79488 (Miсhael Stetsyuk).
- Исправлена ошибка
Block structure mismatch, возникавшая в нескольких случаях для таблиц с разреженными столбцами. #79491 (Anton Popov). - Исправлены два случая возникновения
Logical Error: Can't set alias of * of Asterisk on alias. #79505 (Raúl Marín). - Исправлено применение настроек use_native_copy и allow_azure_native_copy для Azure Blob Storage; также обновлена логика использования нативного копирования: теперь оно используется только при совпадении учетных данных, что устраняет проблему #78964. #79561 (Smita Kulkarni).
- Исправлено использование неверных путей при переименовании базы данных Atomic. #79569 (Tuan Pham Anh).
- Исправлена работа ORDER BY с JSON-столбцом и другими столбцами. #79591 (Pavel Kruglov).
- Исправлено дублирование результатов при чтении с удалённого сервера, когда и
use_hedged_requests, иallow_experimental_parallel_reading_from_replicasотключены. #79599 (Eduard Karacharov). - Исправлен сбой в реализации delta-kernel при работе с Unity Catalog. #79677 (Kseniia Sumarokova).
- Исправлено разрешение макросов для кластеров с автообнаружением. #79696 (Anton Ivashkin).
- Исправлены логические ошибки, связанные с неизвестной областью происхождения столбца, возникавшие при проверке, коррелирован ли этот столбец. Исправляет #78183. Исправляет #79451. #79727 (Dmitry Novik).
- Исправлены неверные результаты при использовании grouping sets с ColumnConst и анализатором. #79743 (Andrey Zvonov).
- Исправлено дублирование результатов локального сегмента при чтении из distributed таблицы, когда локальная реплика устарела. #79761 (Eduard Karacharov).
- Корректно обрабатывать некорректно настроенные
page_cache_limits. #79805 (Bharat Nallan). - Исправлен результат работы SQL-функции
formatDateTime, если за форматтером переменной длины (например,%W, то есть днём неделиMonday,Tuesdayи т. д.) следует составной форматтер (форматтер, который выводит сразу несколько компонентов, например%D, то есть американскую дату05/04/25). #79835 (Robert Schulze). - IcebergS3 поддерживает оптимизацию count, а IcebergS3Cluster — нет. В результате в режиме cluster возвращаемое значение count() может быть кратно числу реплик. #79844 (wxybear).
- Исправлен порядок сортировки значений NaN с отрицательным знаком бита. #79847 (Pervakov Grigorii).
- Теперь
GROUP BY ALLне учитывает выражениеGROUPING. #79915 (Yarik Briukhovetskyi). - Исправлена ошибка
AMBIGUOUS_COLUMN_NAME, связанная с ленивой материализацией, когда до проекции при выполнении запроса не используется ни один столбец. Например, SELECT * FROM t ORDER BY rand() LIMIT 5. #79926 (Igor Nikonov). - Исправлено некорректное слияние состояний для функций
TopK/TopKWeighted, из-за которого значения ошибок становились чрезмерными даже при неисчерпанной ёмкости. #79939 (Joel Höner). - Скрыт пароль в запросе
CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\'). #79941 (Han Fei). - Разрешено указывать псевдоним в
JOIN USING. Указывайте его, если столбец был переименован (например, из-за `ARRAY JOIN). Исправление #73707. #79942 (Nikolai Kochetov). - Теперь в объектном хранилище
azure_blob_storageучитывается настройкаreadonly. #79954 (Julia Kartseva). - Исправлены некорректные результаты запроса и сбои из-за нехватки памяти при использовании
match(column, '^…')с символами, экранированными обратной косой чертой. #79969 (filimonov). - Отключение hive-партиционирования для озёр данных частично решает проблему https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. #80005 (Daniil Ivanik).
- Индекс пропуска данных с лямбда-выражениями не применялся. Исправлен случай, когда высокоуровневые функции в определении индекса в точности совпадали с функцией в запросе. #80025 (Nikolai Kochetov).
- Исправлена работа materialized views с UNION на новых репликах. #80037 (Samay Sharma).
- Исправлена версия метаданных при подключении части на реплике, выполняющей команду ATTACH_PART из журнала репликации. #80038 (Aleksei Filatov).
- Спецификатор формата
%eв SQL-функцииparseDateTimeтеперь распознаёт дни, записанные одной цифрой (например,3), тогда как раньше требовал дополнения пробелом (например,3). Это приводит его поведение в соответствие с MySQL. Чтобы сохранить прежнее поведение, установите настройкуparsedatetime_e_requires_space_padding = 1. (issue #78243). #80057 (Robert Schulze). - Имена исполняемых пользовательских функций (eUDF), в отличие от других функций, не добавляются в столбец
used_functionsтаблицыsystem.query_log. В этом PR реализовано добавление имени eUDF, если она использовалась в запросе. #80073 (Kyamran). #* Исправлены предупрежденияCannot find 'kernel' in '[...]/memory.stat'в логе ClickHouse (issue #77410). #80129 (Robert Schulze). - Исправлена логическая ошибка в формате Arrow при использовании LowCardinality(FixedString). #80156 (Pavel Kruglov).
- Исправлено чтение подстолбцов в движке Merge. #80158 (Pavel Kruglov).
- Исправлена ошибка при сравнении числовых типов в
KeyCondition. #80207 (Yarik Briukhovetskyi). - Исправлена ошибка AMBIGUOUS_COLUMN_NAME при использовании ленивой материализации для таблицы с проекциями. #80251 (Igor Nikonov).
- Исправлена некорректная оптимизация count для строковых префиксных фильтров, таких как LIKE ‘ab_c%’, при использовании неявных проекций. Это исправление устраняет проблему #80250. #80261 (Amos Bird).
- Исправлена некорректная сериализация вложенных числовых полей в документах MongoDB как строк. Снято ограничение на максимальную глубину документов из MongoDB. #80289 (Kirill Nikiforov).
- В базе данных Replicated выполняются менее строгие проверки метаданных для RMT. Закрывает #80296. #80298 (Nikolay Degterinsky).
- Исправлено текстовое представление DateTime и DateTime64 в хранилище PostgreSQL. #80301 (Yakov Olkhovskiy).
- Добавлена поддержка
DateTimeс часовым поясом в таблицахStripeLog. Это закрывает #44120. #80304 (Alexey Milovidov). - Отключено проталкивание предиката с недетерминированной функцией вниз, если шаг плана запроса изменяет количество строк. Исправляет #40273. #80329 (Nikolai Kochetov).
- Исправлены возможные логические ошибки и сбои в работе проекций с подстолбцами. #80333 (Pavel Kruglov).
- Исправлена ошибка
NOT_FOUND_COLUMN_IN_BLOCK, вызванная оптимизацией проталкивания фильтра в логическом JOIN sep в случае, если выражениеONне является тривиальным равенством. Исправляет #79647 Исправляет #77848. #80360 (Nikolai Kochetov). - Исправлены некорректные результаты при чтении ключей в обратном порядке в партиционированных таблицах. Это исправление для #79987. #80448 (Amos Bird).
- Исправлена некорректная сортировка в таблицах с ключом Nullable и включенной optimize_read_in_order. #80515 (Pervakov Grigorii).
- Исправлено зависание операции DROP для refreshable materialized view, если представление было приостановлено командой SYSTEM STOP REPLICATED VIEW. #80543 (Michael Kolupaev).
- Исправлена ошибка ‘Cannot find column’ при использовании константного кортежа в распределённом запросе. #80596 (Yakov Olkhovskiy).
- Исправлена функция
shardNumдля таблиц Distributed при использованииjoin_use_nulls. #80612 (János Benjamin Antal). - Исправлены некорректные результаты при чтении столбца, который существует только в части таблиц в движке Merge. #80643 (Pavel Kruglov).
- Теперь временная метка в таблице iceberg_history должна быть корректной. #80711 (Melvyn Peignon).
- Исправлена обработка enum-глоб-шаблонов, состоящих из одного элемента, в табличных функциях Объектного хранилища. #80716 (Konstantin Bogdanov).
- Исправлены некорректные типы результатов функций сравнения для Tuple(Dynamic) и String, приводившие к логической ошибке. #80728 (Pavel Kruglov).
- Добавлена недостающая поддержка типа данных
timestamp_ntzдля Unity Catalog. Исправляет #79535, исправляет #79875. #80740 (alesapin). - Исправлена ошибка
THERE_IS_NO_COLUMNв распределённых запросах сIN cte. Исправление #75032. #80757 (Nikolai Kochetov). - Исправлено избыточное количество файлов (что приводит к чрезмерному использованию памяти) при внешнем
ORDER BY. #80777 (Azat Khuzhin). #* Этот PR может закрыть #80742. #80783 (zoomxi). #* Исправлен сбой в Kafka из-за того, что get_member_id() создавал std::string из NULL (вероятно, проблема возникала только при сбое connection к broker). #80793 (Azat Khuzhin). - Корректное ожидание завершения консьюмеров перед остановкой движка Kafka (активные консьюмеры после остановки могут вызывать различные отладочные assert-проверки, а также продолжать в фоне читать данные с брокеров после удаления/отсоединения таблицы). #80795 (Azat Khuzhin).
- Исправлена ошибка
NOT_FOUND_COLUMN_IN_BLOCK, вызванная оптимизациейpredicate-push-down. Исправлена ошибка #80443. #80834 (Nikolai Kochetov). - Исправлена логическая ошибка при обработке сопоставителя звёздочки (*) в табличной функции в
JOINсUSING. #80894 (Vladimir Cherkasov). - Исправлен учёт памяти в кэше файлов метаданных Iceberg. #80904 (Azat Khuzhin).
- Исправлено некорректное партиционирование с ключом партиционирования типа Nullable. #80913 (Pervakov Grigorii).
- Исправлена ошибка
Table does not existдля распределённых запросов с предикатом, протолкнутым на нижний уровень (allow_push_predicate_ast_for_distributed_subqueries=1), когда исходная таблица отсутствует на инициаторе. Исправляет #77281. #80915 (Nikolai Kochetov). - Исправлена логическая ошибка во вложенных функциях с именованными окнами. #80926 (Pervakov Grigorii).
- Исправлено вычисление экстумов для Nullable и столбцов с плавающей точкой. #80970 (Pervakov Grigorii).
- Исправлен возможный сбой при выполнении запроса к system.tables (вероятно, при нехватке памяти). #80976 (Azat Khuzhin).
- Исправлено атомарное переименование с TRUNCATE для файлов, у которых сжатие определяется по расширению файла. #80979 (Pablo Marcos). #* Исправлено ErrorCodes::getName. #81032 (RinChanNOW).
- Исправлена ошибка, из-за которой пользователь без разрешений на все таблицы не мог получить их список в Unity Catalog. Теперь все таблицы отображаются корректно, а при попытке чтения из таблицы с ограниченным доступом будет сгенерировано исключение. #81044 (alesapin).
- Теперь ClickHouse будет игнорировать ошибки и неожиданные ответы от каталогов озер данных в запросе
SHOW TABLES. Исправляет #79725. #81046 (alesapin). - Исправлен разбор
DateTime64из целых чисел вJSONExtractи при разборе типаJSON. #81050 (Pavel Kruglov). - В кэше определения схемы теперь учитывается настройка
date_time_input_format. #81052 (Pavel Kruglov). - Исправлено аварийное завершение при
INSERT, если таблица была удалена через DROP после начала выполнения запроса, но до передачи столбцов. #81053 (Azat Khuzhin). - Исправлено использование неинициализированного значения в функции quantileDeterministic. #81062 (Azat Khuzhin).
- Исправлено управление числом жёстких ссылок в транзакциях диска metadatastoragefromdisk. Добавлены тесты. #81066 (Sema Checherinda).
- Имена пользовательских функций (UDF) не добавляются в таблицу
system.query_log, в отличие от имён других функций. В этом PR реализовано добавление имени UDF в один из двух столбцов —used_executable_user_defined_functionsилиused_sql_user_defined_functions, если UDF использовалась в запросе. #81101 (Kyamran). - Исправлены ошибки
Too large size ... passed to allocatorи возможные сбои при вставках по HTTP-протоколу с текстовыми форматами (JSON,Values, …) и пропущенными полямиEnum. #81145 (Anton Popov). - Исправлен LOGICAL_ERROR, возникавший в случае разреженного столбца в блоке INSERT, передаваемом в non-MT MV. #81161 (Azat Khuzhin).
- Исправлена ошибка
Unknown table expression identifierдляdistributed_product_mode_local=localпри перекрёстной репликации. #81162 (Nikolai Kochetov). - Исправлено некорректное кэширование количества строк в файлах Parquet после фильтрации. #81184 (Michael Kolupaev).
- Исправлена настройка
max_size_to_total_spaceдля fs cache при использовании относительного пути кэша. #81237 (Kseniia Sumarokova). - Исправлен сбой
clickhouse-localпри выводе константных значений типов Tuple или Map в формате Parquet. #81249 (Michael Kolupaev). - Проверка смещений массивов, полученных по сети. #81269 (Azat Khuzhin).
- Исправлен редкий случай в запросе, который выполняет JOIN пустых таблиц и использует оконные функции. Ошибка приводила к взрывному росту числа параллельных потоков, что вызывало OOM-ошибки. #81299 (Alexander Gololobov).
- Исправления для функций Cluster для озер данных (
deltaLakeCluster,icebergClusterи т. д.): (1) исправлен потенциальный segfault вDataLakeConfigurationпри использовании функцииClusterсо старым анализатором; (2) устранено дублирование обновлений метаданных озера данных (лишние запросы к объектному хранилищу); (3) исправлено избыточное перечисление объектов в объектном хранилище, когда формат явно не указан (это уже было сделано для некластерных движков озера данных). #81300 (Kseniia Sumarokova). - Флаг
force_restore_dataтеперь восстанавливает потерянные метаданные Keeper. #81324 (Raúl Marín). - Исправлена ошибка с region в delta-kernel. Исправляет #79914. #81353 (Kseniia Sumarokova).
- Отключён некорректный JIT для divideOrNull. #81370 (Raúl Marín).
- Исправлена ошибка вставки, возникавшая, если у таблицы MergeTree было длинное имя столбца партиционирования. #81390 (hy123q).
- Больше не хранить содержимое нескольких файлов манифеста в памяти. #81470 (Daniil Ivanik).
- Исправлен возможный сбой при завершении работы фоновых пулов (
background_.*pool_size). #81473 (Azat Khuzhin). - Исправлено чтение за пределами буфера в формате
Npy, возникавшее при записи в таблицу с движкомURL. Это закрывает #81356. #81502 (Alexey Milovidov). - В Web UI может отображаться
NaN%(типичная проблема JavaScript). #81507 (Alexey Milovidov). - Исправлена ошибка в
DatabaseReplicatedприdatabase_replicated_enforce_synchronous_settings=1. #81564 (Azat Khuzhin). - Исправлен порядок сортировки для типа LowCardinality(Nullable(…)). #81583 (Pervakov Grigorii).
- Сервер не должен поддерживать HTTP-соединение, если запрос не был полностью считан из сокета. #81595 (Sema Checherinda).
- Скалярные коррелированные подзапросы теперь возвращают допускающий NULL результат выражения проекции. Исправлен случай, когда коррелированный подзапрос формирует пустой результирующий набор. #81632 (Dmitry Novik).
- Исправлена ошибка
Unexpected relative path for a deduplicated partпри выполненииATTACHдляReplicatedMergeTree. #81647 (Azat Khuzhin). - Настройка запроса
use_iceberg_partition_pruningне будет применяться для хранилища Iceberg, поскольку используется глобальный контекст, а не контекст запроса. Это не критично, так как значение по умолчанию — true. Этот PR исправляет это. #81673 (Han Fei). - Добавлена проверка настройки MergeTree
merge_max_block_size, чтобы гарантировать, что она не равна нулю. #81693 (Bharat Nallan). - Исправлены проблемы с
clickhouse-local, связанные с зависающими запросамиDROP VIEW. #81705 (Bharat Nallan). - Исправлена работа JOIN для StorageRedis в некоторых случаях. #81736 (Pervakov Grigorii).
- Исправлен сбой в
ConcurrentHashJoinпри пустомUSING ()и включенном старом анализаторе. #81754 (Nikita Taranov). - Исправление в Keeper: блокируется фиксация новых записей журнала, если в журнале есть некорректная запись. Ранее, если лидер некорректно применял некоторые записи журнала, он продолжал фиксировать новые записи, хотя follower обнаруживал несовпадение дайджестов и прерывал работу. #81780 (Antonio Andelic).