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

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