Перейти к основному содержанию
Изменения, относящиеся к сервисам ClickHouse Cloud, в релизе v24.12.

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

  • Функции greatest и least теперь игнорируют входные значения NULL, тогда как раньше возвращали NULL, если один из аргументов был NULL. Например, SELECT greatest(1, 2, NULL) теперь возвращает 2. Это делает их поведение совместимым с PostgreSQL. #65519 (kevinyhzou).
  • По умолчанию типы Variant/Dynamic больше не разрешены в ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY, поскольку это может приводить к неожиданным результатам. #69731 (Pavel Kruglov).
  • Удалены системные таблицы generate_series и generateSeries. Они были добавлены по ошибке здесь: #59390. #71091 (Alexey Milovidov).
  • Удалён StorageExternalDistributed. Закрывает #70600. #71176 (flynn).
  • Настройки из конфигурации сервера (users.xml) теперь применяются и на клиенте. Это полезно для настроек формата, например date_time_output_format. #71178 (Michael Kolupaev).
  • Исправлена возможная ошибка No such file or directory, возникающая из-за неэкранированных специальных символов в файлах для подстолбцов JSON. #71182 (Pavel Kruglov).
  • У движков таблиц Kafka, NATS и RabbitMQ теперь есть собственные привилегии в иерархии SOURCES. Добавьте эти привилегии всем пользователям базы данных, кроме используемых по умолчанию, которые создают таблицы с такими типами движков. #71250 (Christoph Wurm).
  • Перед выполнением теперь проверяется весь запрос мутации (включая подзапросы). Это предотвращает случайный запуск некорректного запроса и накопление нерабочих мутаций, которые блокируют корректные мутации. #71300 (Christoph Wurm).
  • Настройка файлового кэша skip_download_if_exceeds_query_cache переименована в filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit. #71578 (Kseniia Sumarokova).
  • Типы Dynamic/Variant запрещены в функциях min/max во избежание путаницы. #71761 (Pavel Kruglov).
  • Удалена поддержка Enum, а также аргументов UInt128 и UInt256 в deltaSumTimestamp. Также удалена поддержка Int8, UInt8, Int16 и UInt16 для второго аргумента (“timestamp”) функции deltaSumTimestamp. #71790 (Alexey Milovidov).
  • Добавлена проверка исходного запроса, когда ClickHouse используется как источник для словаря. #72548 (Alexey Katsman).

Новые возможности

  • Реализована команда SYSTEM LOAD PRIMARY KEY для загрузки индексов первичного ключа для всех частей указанной таблицы или для всех таблиц, если таблица не указана. Это будет полезно для бенчмарков и поможет избежать дополнительной задержки при выполнении запроса. #66252 (ZAWA_ll).
  • Добавлен оператор SYSTEM LOAD PRIMARY KEY для загрузки индексов первичного ключа всех частей в указанной таблице или всех таблиц, если таблица не указана. Это может быть полезно для бенчмаркинга и позволяет избежать лишней задержки при выполнении запросов. #67733 (ZAWA_ll).
  • Добавлен запрос CHECK GRANT, позволяющий проверить, выдана ли текущему пользователю/роли указанная привилегия и существуют ли в памяти соответствующие таблица/столбец. #68885 (Unalian).
  • Добавлен SQL-синтаксис для описания управления рабочими нагрузками и ресурсами. См. документацию. #69187 (Sergei Trifonov).
  • Формат хранения данных Iceberg предоставляет пользователю широкие возможности для изменения схемы таблицы. В этом pull request реализовано чтение таблиц в формате Iceberg, где изменены порядок столбцов, имена столбцов и простые расширения типов. #69445 (Daniil Ivanik).
  • У каждого метода аутентификации теперь может быть собственная дата истечения срока действия; этот параметр удалён из сущности пользователя. #70090 (Arthur Passos).
  • Передавайте внешние роли пользователей от инициатора запроса на другие узлы кластера. Полезно, когда только инициатор имеет доступ к внешнему аутентификатору (например, LDAP). #70332 (Andrey Zvonov).
  • Добавлена поддержка ALTER из String в JSON. Этот PR также переводит сериализацию JSON и типа Dynamic на новую версию V2. Старую версию V1 по-прежнему можно использовать, включив настройку merge_tree_use_v1_object_and_dynamic_serialization (это может пригодиться во время обновления, чтобы при необходимости без проблем откатить версию). #70442 (Pavel Kruglov).
  • Добавлена функция toUnixTimestamp64Second, которая преобразует DateTime64 в значение Int64 с фиксированной точностью до секунд, что позволяет возвращать отрицательное значение, если дата предшествует 00:00:00 UTC четверга, 1 января 1970 года. #70597 (zhanglistar).
  • Добавлена новая настройка enforce_index_structure_match_on_partition_manipulation, позволяющая выполнять attach, если проекции и вторичные индексы исходной таблицы являются подмножеством проекций и вторичных индексов целевой таблицы. Закрывает #70602. #70603 (zwy991114).
  • Результат работы функции cast отличается от Apache Spark, что приводит к расхождениям в проекте gluten, см. https://github.com/apache/incubator-gluten/issues/7602 В этот PR добавлена возможность поддержки текстового формата вывода Spark; по умолчанию она отключена. #70957 (zhanglistar).
  • Добавлен новый тип заголовка для конечных точек S3 для аутентификации пользователей (access_header). Это позволяет задать заголовок доступа с наименьшим приоритетом, который будет переопределён значением access_key_id из любого другого источника (например, из схемы таблицы или именованной коллекции). #71011 (MikhailBurdukov).
  • Первоначальная реализация уровней настроек. #71145 (Raúl Marín).
  • Добавлена поддержка параметра staleness в предложении ORDER BY … WITH FILL. #71151 (Mikhail Artemenko).
  • Реализована простая операция CAST из Map/Tuple/Object в новый JSON через сериализацию/десериализацию из строки JSON. #71320 (Pavel Kruglov).
  • Добавлены псевдонимы anyRespectNulls, firstValueRespectNulls и anyValueRespectNulls для агрегатной функции any. Также добавлены псевдонимы anyLastRespectNulls и lastValueRespectNulls для агрегатной функции anyLast. Это позволяет использовать более естественный синтаксис только с camelCase вместо смешанного синтаксиса camelCase/underscore, например: SELECT anyLastRespectNullsStateIf вместо anyLast_respect_nullsStateIf. #71403 (Peter Nguyen).
  • Добавлен параметр конфигурации date_time_utc, который позволяет форматировать JSON-логи с датой и временем UTC в формате RFC 3339/ISO8601. #71560 (Ali).
  • Добавлена возможность выбрать сторону JOIN, которая будет использоваться как внутренняя (build) таблица в плане запроса. Это задаётся параметром query_plan_join_swap_table, которому можно присвоить значение auto. В этом режиме ClickHouse попытается выбрать таблицу с наименьшим количеством строк. #71577 (Vladimir Cherkasov).
  • Оптимизировано использование памяти для значений гранулярности индекса, если для части используется постоянная гранулярность. Добавлена возможность всегда выбирать для части постоянную гранулярность (настройка use_const_adaptive_granularity), что позволяет гарантировать постоянную оптимизацию по памяти. Это помогает при больших рабочих нагрузках (триллионы строк в общем хранилище) избежать непрерывного роста использования памяти метаданными (значениями гранулярности индекса) частей данных. #71786 (Anton Popov).
  • Добавлен allowed_feature_tier — глобальный переключатель для отключения всех экспериментальных / бета-функций. #71841 (Raúl Marín).
  • Добавлены табличные функции iceberg[S3;HDFS;Azure]Cluster, deltaLakeCluster и hudiCluster. #72045 (Mikhail Artemenko).
  • Добавлен синтаксис ALTER USER {ADD|MODIFY|DROP SETTING} и ALTER USER {ADD|DROP PROFILE}; то же самое для ALTER ROLE и ALTER PROFILE. #72050 (pufit).
  • Добавлена функция arrayPrAUC, которая вычисляет AUC (площадь под кривой) для кривой precision-recall. #72073 (Emmanuel).
  • Добавлен кэш для первичного индекса таблиц MergeTree (его можно включить настройкой таблицы use_primary_key_cache). Если для первичного индекса включены ленивая загрузка и кэширование, он будет загружаться в кэш по мере необходимости (аналогично mark cache), а не постоянно оставаться в памяти. Добавлен предварительный прогрев первичного индекса при вставках/слияниях/загрузках частей данных и при перезапуске таблицы (может быть включен настройкой prewarm_primary_key_cache). #72102 (Anton Popov).
  • Добавлена функция indexOfAssumeSorted для типа Array. Оптимизирует поиск в случае массива, отсортированного по неубыванию. #72517 (Eric Kurbanov).
  • Позволяет использовать разделитель как необязательный второй аргумент агрегатной функции groupConcat. #72540 (Yarik Briukhovetskyi).
  • Новая настройка http_response_headers, которая позволяет настраивать HTTP-заголовки ответа. Например, с её помощью можно указать браузеру отобразить изображение, хранящееся в базе данных. Это закрывает #59620. #72656 (Alexey Milovidov).
  • Добавлена функция fromUnixTimestamp64Second, которая преобразует значение Unix-временной метки типа Int64 в DateTime64. #73146 (Robert Schulze).

Повышение производительности

  • Добавлены 2 новые настройки short_circuit_function_evaluation_for_nulls и short_circuit_function_evaluation_for_nulls_threshold, которые позволяют выполнять функции над столбцами Nullable в режиме короткого замыкания, если доля значений NULL в блоке данных превышает указанный порог. Это означает, что функция будет выполняться только для строк с ненулевыми значениями. Это применимо только к функциям, которые возвращают NULL для строк, где хотя бы один аргумент имеет значение NULL. #60129 (李扬).
  • Снижено использование памяти команды clickhouse disks remove --recursive для дисков объектного хранилища. #67323 (Kirill).
  • Теперь при join_algorithm='parallel_hash' мы не будем копировать столбцы входных блоков при их распределении между потоками для параллельной обработки. #67782 (Nikita Taranov).
  • Включена JIT-компиляция для большего числа выражений: abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*, функций сравнения (=, <, >, >=, <=) и логических функций (and, or). #70598 (李扬).
  • Теперь, когда для настройки join_algorithm установлено значение default, будет использоваться алгоритм parallel_hash (если это применимо). Если parallel_hash использовать нельзя, по-прежнему будут рассматриваться два предыдущих варианта (direct и hash). #70788 (Nikita Taranov).
  • Оптимизирован алгоритм слияния Replacing для непересекающихся частей. #70977 (Anton Popov).
  • Не отображать отсоединённые части с дисков только для чтения и дисков с однократной записью в метриках и system.detached_parts. #71086 (Alexey Milovidov).
  • По умолчанию не вычислять ресурсоёмкие асинхронные метрики. Эта возможность была добавлена в #40332, но не стоит держать ресурсоёмкую фоновую задачу, которая нужна только одному клиенту. #71087 (Alexey Milovidov).
  • Улучшены производительность и точность интервала сбора system.query_metric_log за счёт сокращения критической секции. #71473 (Pablo Marcos).
  • Добавлена возможность извлекать общие подвыражения из выражений WHERE и ON, чтобы сократить количество хеш-таблиц, используемых при выполнении JOIN. Её можно включить с помощью optimize_extract_common_expressions = 1. #71537 (János Benjamin Antal).
  • Позволяет использовать индексы в запросах SELECT с LowCardinality(String). #71598 (Yarik Briukhovetskyi).
  • Во время выполнения запроса с параллельными репликами и включенным локальным планом выполнения анализ индекса пропуска данных на воркерах не выполняется. Координатор будет выбирать диапазоны для чтения воркерами на основе анализа индекса на своей стороне (на инициаторе запроса). #72109 (Igor Nikonov).
  • Вернули оптимизацию чтения подстолбцов одного столбца в компактных частях из https://github.com/ClickHouse/ClickHouse/pull/57631. Она была случайно удалена. #72285 (Pavel Kruglov).
  • Ускорена сортировка столбцов LowCardinality(String) благодаря девиртуализации вызовов в компараторе. #72337 (Alexander Gololobov).
  • Оптимизирована функция argMin/Max для некоторых простых типов данных. #72350 (alesapin).
  • Оптимизирован механизм блокировок в трекере памяти за счёт использования разделяемых блокировок, что снижает конкуренцию за блокировки. #72375 (Jiebin Sun).
  • Добавлена новая настройка use_async_executor_for_materialized_views. Обеспечивает асинхронное и потенциально многопоточное выполнение запроса materialized view, что может ускорить обработку представлений во время INSERT, но также может увеличить потребление памяти. #72497 (alesapin).
  • Значения по умолчанию для настроек max_size_to_preallocate_for_aggregation, max_size_to_preallocate_for_joins были дополнительно увеличены до 10^12, поэтому эта оптимизация будет применяться в большем числе случаев. #72555 (Nikita Taranov).
  • Улучшена производительность десериализации состояний агрегатных функций (в типе данных AggregateFunction и в распределённых запросах). Немного улучшена производительность парсинга формата RowBinary. #72818 (Anton Popov).

Улучшения

  • Функции высшего порядка с константными массивами и константными захваченными аргументами теперь возвращают константы. #58400 (Alexey Milovidov).
  • Оптимизация чтения в порядке сортировки за счёт генерации виртуальных строк, благодаря чему при сортировке слиянием считывается меньше данных; особенно полезно, когда существует несколько частей. #62125 (Shichao Jin).
  • Имена шагов плана запроса (EXPLAIN PLAN json=1) и процессоров конвейера (EXPLAIN PIPELINE compact=0,graph=1) теперь имеют уникальный идентификатор в качестве суффикса. Это позволяет сопоставлять вывод профилировщика процессоров и трассы OpenTelemetry с результатом EXPLAIN. #63518 (qhsong).
  • Добавлена возможность проверять наличие объекта после записи в Azure Blob Storage; она управляется настройкой check_objects_after_upload. #64847 (Smita Kulkarni).
  • Исправлена логика use-after-dtor в методе destroyElements класса HashTable. #65279 (cangyin).
  • По умолчанию использовать базу данных Atomic в clickhouse-local. Решает проблемы из пунктов 1 и 5 в #50647. Закрывает #44817. #68024 (Alexey Milovidov).
  • Буфер записи должен быть явно отменен или завершен. Исключения прерывают HTTP-протокол, чтобы сообщить клиенту об ошибке. #68800 (Sema Checherinda).
  • Добавлена отчётность о работающих хостах DDLWorker: создаётся replica_dir, а реплики помечаются как активные в DDLWorker. #69658 (Tuan Pham Anh).
    1. Рефакторинг DDLQueryStatusSource: - Переименовать DDLQueryStatusSource в DistributedQueryStatusSource и сделать его базовым классом - Создать два подкласса — DDLOnClusterQueryStatusSource и ReplicatedDatabaseQueryStatusSource, производных от DDLQueryStatusSource, для запроса статуса DDL-задач из DDL On Cluster и Replicated databases соответственно. 2. Добавлена возможность прекращать ожидание недоступных хостов в `DDLOnClusterQueryStatusSource`. #69660 (Tuan Pham Anh).
  • Добавлена новая логика отмены: CancellationChecker проверяет тайм-ауты для каждого запущенного запроса и останавливает их, как только тайм-аут истекает. #69880 (Yarik Briukhovetskyi).
  • Удалена настройка allow_experimental_join_condition, поэтому неэквивалентные условия теперь разрешены по умолчанию. #69910 (Vladimir Cherkasov).
  • Параметр parallel_replicas_local_plan теперь включён по умолчанию. Построение полноценного локального плана на инициаторе запроса повышает производительность параллельных реплик при меньшем потреблении ресурсов и открывает дополнительные возможности для оптимизации запроса. #70171 (Igor Nikonov).
  • Добавлена возможность задавать имя пользователя и пароль в http_handlers (для dynamic_query_handler/predefined_query_handler). #70725 (Azat Khuzhin).
  • Добавлена поддержка ALTER TABLE ... MODIFY/RESET SETTING ... для некоторых настроек в хранилище S3Queue. #70811 (Kseniia Sumarokova).
  • Не обращайтесь к API объектного хранилища при перечислении каталогов, так как это может быть экономически невыгодно. Вместо этого храните список имен файлов в памяти. Компромисс заключается в увеличении времени начальной загрузки и объема памяти, необходимого для хранения имен файлов. #70823 (Julia Kartseva).
  • В clickhouse-compressor добавлен параметр --threads, позволяющий сжимать данные параллельно. #70860 (Alexey Milovidov).
  • Добавлена возможность настраивать размер истории клиента Replxx. #71014 (Jiří Kozlovský).
  • Добавлена настройка prewarm_mark_cache, которая включает предварительную загрузку меток в кэш меток при вставках, слияниях, загрузке частей и запуске таблицы. #71053 (Anton Popov).
  • Поддержка булевого типа в нативном считывателе Parquet. #71055 (Arthur Passos).
  • Повторные попытки теперь выполняются при большем числе ошибок при взаимодействии с S3, таких как “Malformed message”. #71088 (Alexey Milovidov).
  • Снижен уровень логирования некоторых сообщений о S3. #71090 (Alexey Milovidov).
  • Добавлена поддержка записи файлов HDFS с пробелами в именах. #71105 (exmy).
  • system.session_log вполне подходит. Это закрывает #51760. #71150 (Alexey Milovidov).
  • Исправлена работа JOIN RIGHT / FULL в запросах с параллельными репликами. Теперь JOIN RIGHT можно выполнять с параллельными репликами (чтение правой таблицы распределяется). JOIN FULL нельзя распараллелить между узлами — он выполняется локально. #71162 (Igor Nikonov).
  • Добавлены настройки для ограничения количества реплицируемых таблиц, словарей и представлений. #71179 (Kirill).
  • Исправление #71227. #71286 (Arthur Passos).
  • Автоматический сброс GROUP BY/ORDER BY на диск в зависимости от использования памяти сервера/пользователя. Управляется настройками запроса max_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sort. #71406 (Azat Khuzhin).
  • В расширенную панель мониторинга добавлены панели Overview (host) и Cloud overview (host) для каждого хоста. #71422 (alesapin).
  • Функция translate теперь поддерживает удаление символов, если аргумент from содержит больше символов, чем аргумент to. Пример: SELECT translate('clickhouse', 'clickhouse', 'CLICK') теперь возвращает CLICK. #71441 (shuai.xu).
  • Добавлены новые функции parseDateTime64, parseDateTime64OrNull и parseDateTime64OrZero. В отличие от существующей функции parseDateTime (и её вариантов), они возвращают значение типа DateTime64, а не DateTime. #71581 (kevinyhzou).
  • Уменьшен размер массива index_granularity в памяти для снижения потребления памяти у семейства движков таблиц MergeTree. #71595 (alesapin).
  • Приложения командной строки будут подсвечивать синтаксис даже для последовательностей из нескольких операторов. #71622 (Alexey Milovidov).
  • Приложения командной строки будут возвращать при ошибках коды завершения, отличные от нуля. В предыдущих версиях приложение disks возвращало 0 при ошибках, а другие приложения — 0 для ошибок 256 (PARTITION_ALREADY_EXISTS) и 512 (SET_NON_GRANTED_ROLE). #71623 (Alexey Milovidov).
  • Формат Vertical (который также активируется, если завершить запрос на \G) получил возможности форматов Pretty, такие как: - выделение групп разрядов в числах; - вывод удобочитаемой подсказки к числу. #71630 (Alexey Milovidov).
  • Появилась возможность отключить увеличение буфера памяти для файлового кэша с помощью настройки filesystem_cache_prefer_bigger_buffer_size. #71640 (Kseniia Sumarokova).
  • Добавлен отдельный параметр background_download_max_file_segment_size, задающий максимальный размер сегмента файла для фоновой загрузки в файловом кэше. #71648 (Kseniia Sumarokova).
  • Меняет значение по умолчанию enable_http_compression с 0 на 1. Закрывает #71591. #71774 (Peter Nguyen).
  • Добавлена поддержка ALTER из Object в JSON. #71784 (Pavel Kruglov).
  • Немного улучшен разбор типа JSON: если текущий блок для JSON-пути содержит значения нескольких типов, система пытается выбрать наиболее подходящий тип, перебирая типы в специальном best-effort-порядке. #71785 (Pavel Kruglov).
  • Ранее при чтении из system.asynchronous_metrics приходилось ждать завершения параллельного обновления. Это может занимать много времени, если система находится под высокой нагрузкой. Благодаря этому изменению ранее собранные значения теперь можно читать всегда. #71798 (Alexander Gololobov).
  • Установите для polling_max_timeout_ms значение 10 минут, а для polling_backoff_ms — 30 секунд. #71817 (Kseniia Sumarokova).
  • Запросы вида ‘SELECT - FROM t LIMIT 1’ раньше загружали индексы частей данных, хотя те не использовались. #71866 (Alexander Gololobov).
  • Allow_reorder_prewhere_conditions включён по умолчанию при использовании старых настроек совместимости. #71867 (Raúl Marín).
  • Не увеличивать счетчик ILLEGAL_TYPE_OF_ARGUMENT в таблице system.errors, если используется функция bitmapTransform и типы аргументов корректны. #71971 (Dmitry Novik).
  • При получении данных напрямую из словаря с использованием движка Dictionary, табличной функции dictionary или прямого SELECT из самого словаря теперь достаточно иметь разрешение SELECT или dictGet для словаря. Это соответствует предыдущим попыткам предотвратить обход ACL: https://github.com/ClickHouse/ClickHouse/pull/57362 и https://github.com/ClickHouse/ClickHouse/pull/65359. Это также делает последнее из этих изменений обратно совместимым. #72051 (Nikita Mikhaylov).
  • На HTML-страницу расширенной панели мониторинга добавлен выпадающий список выбора панели мониторинга из таблицы system.dashboards. #72081 (Sergei Trifonov).
  • Учитывать prefer_locahost_replica при построении плана выполнения для распределённого INSERT ... SELECT. #72190 (filimonov).
  • Проблема описана здесь. Azure Iceberg Writer создаёт файлы метаданных Iceberg (а также файлы манифеста), которые не соответствуют спецификации. В этом PR я добавил попытку читать метаданные формата Iceberg v1 с помощью ридера v2 (поскольку они записывают их именно так), а также добавил сообщение об ошибке на случай, если они не создали соответствующие поля в файле манифеста. #72277 (Daniil Ivanik).
  • Перенос типов JSON/Dynamic/Variant из экспериментальных возможностей в статус бета. #72294 (Pavel Kruglov).
  • Теперь разрешено использовать CREATE MATERIALIZED VIEW с UNION [ALL] в запросе. Поведение такое же, как у materialized view с JOIN: *только первая таблица в выражении SELECT будет служить триггером для вставки- , все остальные таблицы будут игнорироваться. #72347 (alesapin).
  • Ускорена вставка в MergeTree, если вставляемый батч содержит только одно значение ключа партиционирования. #72348 (alesapin).
  • Добавлена новая метрика MergeTreeIndexGranularityInternalArraysTotalSize в system.metrics. Эта метрика нужна, чтобы находить экземпляры с очень большими наборами данных, подверженные проблеме высокого потребления памяти. #72490 (Miсhael Stetsyuk).
  • Теперь распознаются все варианты написания слова Null, когда в запросе используется Format Null. Ранее другие формы (например, NULL) не приводили к возникновению исключений, хотя в таких случаях формат Null фактически не использовался. #72658 (Nikita Taranov).
  • Разрешены неизвестные значения в set, отсутствующие в Enum. Исправлено #72662. #72686 (zhanglistar).
  • Добавлено total&#95;bytes&#95;with&#95;inactive в system.tables, чтобы учитывать общий объём байтов неактивных частей. #72690 (Kai Zhu).
  • В system.settings_changes добавлен MergeTreeSettings. #72694 (Raúl Marín).
  • Добавлена поддержка строковых операторов поиска (например, like) для типа данных Enum, исправлена проблема #72661. #72732 (zhanglistar).
  • Добавлена поддержка типа JSON в функции notEmpty. #72741 (Pavel Kruglov).
  • Добавлена поддержка разбора ошибки AuthenticationRequired в GCS S3. #72753 (Vitaly Baranov).
  • В функциях ifNull и coalesce добавлена поддержка типа Dynamic. #72772 (Pavel Kruglov).
  • Добавлены события профиля JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount. #72842 (Vladimir Cherkasov).
  • Добавлена поддержка Dynamic в функциях toFloat64/touInt32/etc. #72989 (Pavel Kruglov).

Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)

  • Части, для которых была выполнена дедупликация во время запроса ATTACH PART, больше не остаются с префиксом attaching_. #65636 (Kirill).
  • Исправлена ошибка, из-за которой dateTime64 терял точность в функции IN. #67230 (Yarik Briukhovetskyi).
  • Исправлена возможная логическая ошибка при использовании функций с IGNORE/RESPECT NULLS в ORDER BY ... WITH FILL; закрыт #57609. #68234 (Vladimir Cherkasov).
  • Исправлены редкие логические ошибки в асинхронных вставках при использовании формата Native и достижении лимита памяти. #68965 (Anton Popov).
  • Исправлен COMMENT в CREATE TABLE для столбца EPHEMERAL. #70458 (Yakov Olkhovskiy).
  • Исправлена логическая ошибка в JSONExtract при использовании LowCardinality(Nullable). #70549 (Pavel Kruglov).
  • Исправлено поведение в случае, если имя таблицы слишком длинное. #70810 (Yarik Briukhovetskyi).
  • Добавлена возможность переопределять Content-Type с помощью пользовательских заголовков в движке URL. #70859 (Artem Iurin).
  • Исправлена логическая ошибка в StorageS3Queue: “Невозможно создать постоянный узел в /processed, поскольку он уже существует”. #70984 (Kseniia Sumarokova).
  • Исправлена ошибка, из-за которой в опции rebuild для легковесного удаления в проекциях не учитывался столбец _row_exists. #71089 (Shichao Jin).
  • Исправлено некорректное значение в system.query_metric_log из-за непредвиденного состояния гонки. #71124 (Pablo Marcos).
  • Исправлено несовпадение имени агрегатной функции quantileExactWeightedInterpolated. Ошибка появилась в https://github.com/ClickHouse/ClickHouse/pull/69619. cc @Algunenano. #71168 (李扬).
  • Исправлено исключение bad_weak_ptr при сравнении функций с Dynamic. #71183 (Pavel Kruglov).
  • Не удаляйте blob-объект, если его используют узлы в ReplicatedMergeTree с репликацией с нулевым копированием. #71186 (Antonio Andelic).
  • Исправлено игнорирование настроек формата для Native format при работе через HTTP и Async Inserts. #71193 (Pavel Kruglov).
  • SELECT-запросы, выполняемые с настройкой use_query_cache = 1, больше не отклоняются, если имя системной таблицы используется как строковый литерал; например, теперь работает SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true;. #71254 (Robert Schulze).
  • Исправлена ошибка, из-за которой увеличивалось использование памяти, если enable_filesystem_cache=1, но для диска в конфигурации хранилища не была задана конфигурация кэша. #71261 (Kseniia Sumarokova).
  • Исправлена возможная ошибка “Cannot read all data” при десериализации словаря LowCardinality из столбца типа Dynamic. #71299 (Pavel Kruglov).
  • Исправлена неполная очистка при параллельном формате вывода в клиенте. #71304 (Raúl Marín).
  • Добавлено недостающее снятие экранирования в именованных коллекциях. Без этого исправления clickhouse-server не может запуститься. #71308 (MikhailBurdukov).
  • Исправлена работа async inserts с пустыми блоками через собственный протокол. #71312 (Anton Popov).
  • Исправлено непоследовательное форматирование AST при выдаче некорректных привилегий с подстановочными символами #71309. #71332 (pufit).
  • Проверка подозрительных и экспериментальных типов в подсказках типа JSON. #71369 (Pavel Kruglov).
  • Исправлена ошибка «Invalid number of rows in Chunk with Variant column». #71388 (Pavel Kruglov).
  • Исправлен сбой табличной функции mongodb при передаче некорректных аргументов (например, NULL). #71426 (Vladimir Cherkasov).
  • Исправлен сбой при использовании optimize_rewrite_array_exists_to_has. #71432 (Raúl Marín).
  • Исправлена ошибка NoSuchKey при откате транзакции, возникавшая, когда не удавалось создать каталог на диске palin_rewritable. #71439 (Julia Kartseva).
  • Исправлено использование настройки max_insert_delayed_streams_for_parallel_write при вставке. Ранее она работала некорректно, что могло приводить к повышенному использованию памяти при вставке данных в несколько партиций. #71474 (Anton Popov).
  • Исправлена возможная ошибка Argument for function must be constant (старый анализатор) в случае, когда arrayJoin, как оказалось, может появляться в условии WHERE. Регрессия после https://github.com/ClickHouse/ClickHouse/pull/65414. #71476 (Nikolai Kochetov).
  • Предотвращён сбой в SortCursor при 0 столбцах (старый анализатор). #71494 (Raúl Marín).
  • Исправлен выход date32 за пределы диапазона из-за неинициализированных данных orc. Подробнее см. https://github.com/apache/incubator-gluten/issues/7823. #71500 (李扬).
  • Исправлен подсчёт размера столбца в широкой части для типов Dynamic и JSON. #71526 (Pavel Kruglov).
  • Исправлена ошибка analyzer при использовании IN с CTE в запросе внутри materialized view. Закрывает #65598. #71538 (Maksim Kita).
  • В функциях bitShift при выходе за допустимые границы теперь возвращается 0 или символ по умолчанию вместо ошибки. #71580 (Pablo Marcos).
  • Исправлены сбои сервера при использовании materialized view с некоторыми движками. #71593 (Pervakov Grigorii).
  • ARRAY JOIN со вложенной структурой данных, содержащей алиас константного массива, приводил к разыменованию нулевого указателя. Это исправление закрывает #71677. #71678 (Alexey Milovidov).
  • Исправлена ошибка LOGICAL_ERROR при выполнении ALTER с пустым кортежем. Исправление для #71647. #71679 (Amos Bird).
  • Не преобразовывать константное множество в предикатах для столбцов партиции при использовании оператора NOT IN. #71695 (Eduard Karacharov).
  • Исправлен CAST из LowCardinality(Nullable) в Dynamic. Ранее это могло приводить к ошибке Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable. #71742 (Pavel Kruglov).
  • Исправлено исключение в toDayOfWeek при использовании условия WHERE с первичным ключом типа DateTime64. #71849 (Yakov Olkhovskiy).
  • Исправлено заполнение значениями по умолчанию после разбора данных в разреженные столбцы. #71854 (Anton Popov).
  • Исправлена ошибка функции GROUPING, когда входным значением был ALIAS в distributed таблице, закрыт #68602. #71855 (Vladimir Cherkasov).
  • Исправлены операторы SELECT с предложением WITH TIES, которые могли возвращать недостаточное количество строк. #71886 (wxybear).
  • Исправлено Исключение TOO_LARGE_ARRAY_SIZE, которое возникало, когда столбец при вычислении arrayWithConstant ошибочно считался превысившим ограничение на размер массива. #71894 (Udi).
  • clickhouse-benchmark выдавал неверные метрики для запросов, выполнявшихся дольше одной секунды. #71898 (Alexey Milovidov).
  • Исправлено состояние гонки между индикатором выполнения и таблицей прогресса в clickhouse-client. Эта проблема проявляется при использовании FROM INFILE. Добавлен перехват нажатий клавиш во время запросов INSERT для переключения отображения таблицы прогресса. #71901 (Julia Kartseva).
  • Исправлена сериализация значений типа Dynamic в JSON-форматах Pretty. #71923 (Pavel Kruglov).
  • Исправлен столбец rows_processed в system.s3/azure_queue_log, сломанный в версии 24.6. Закрывает #69975. #71946 (Kseniia Sumarokova).
  • Исправлен случай, когда функции s3/s3Cluster могли возвращать неполный результат или генерировать исключение. Это происходило при использовании glob-паттерна в URI S3 (например, pattern/*), если при этом существовал пустой object с ключом pattern/ (такие object автоматически создаются в консоли S3). Также значение по умолчанию для настройки s3_skip_empty_files было изменено с false на true. #71947 (Nikita Taranov).
  • Исправлен сбой подсветки синтаксиса в clickhouse-client. Закрывает #71864. #71949 (Nikolay Degterinsky).
  • Исправлена ошибка Illegal type для таблиц MergeTree с бинарной монотонной функцией в ORDER BY, если первый аргумент — константа. Исправлено в #71941. #71966 (Nikolai Kochetov).
  • Разрешите использовать в EXPLAIN AST внутри подзапроса только запросы SELECT. Другие типы запросов приводят к логической ошибке: ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ или Inconsistent AST formatting. #71982 (Pavel Kruglov).
  • При вставке записи с помощью clickhouse-client клиент считывает описания столбцов с сервера. Однако была ошибка: мы записывали описания в неправильном порядке, хотя правильно — [statistics, ttl, settings]. #71991 (Han Fei).
  • Исправлено форматирование команд ALTER MOVE PARTITION ... TO TABLE ..., когда включен параметр format_alter_commands_with_parentheses. #72080 (János Benjamin Antal).
  • Добавлено автоматически определяемое имя формата в запрос CREATE для движков File/S3/URL/HDFS/Azure. Ранее имя формата определялось заново при каждом перезапуске сервера, и если указанные файлы данных были удалены, это приводило к ошибкам при запуске сервера. #72108 (Pavel Kruglov).
  • Исправлена ошибка, из-за которой min_age_to_force_merge_on_partition_only зацикливался, снова и снова пытаясь слить одну и ту же партицию, уже объединённую в одну часть, и при этом не выполнял слияние партиций, состоящих из нескольких частей. #72209 (Christoph Wurm).
  • Устранён сбой в SimpleSquashingChunksTransform, который в редких случаях возникал при обработке разреженных столбцов. #72226 (Vladimir Cherkasov).
  • Исправлена гонка данных в GraceHashJoin, из-за которой в результатах JOIN могли отсутствовать некоторые строки. #72233 (Nikita Taranov).
  • Исправлена работа запросов ALTER DELETE с материализованным столбцом _block_number (если включена настройка enable_block_number_column). #72261 (Anton Popov).
  • Исправлена гонка данных при одновременном вызове ColumnDynamic::dumpStructure(), например в конструкторе ConcurrentHashJoin. #72278 (Nikita Taranov).
  • Исправлена возможная LOGICAL_ERROR, возникающая из-за дублирующихся столбцов в ORDER BY ... WITH FILL. #72387 (Vladimir Cherkasov).
  • Исправлены случаи несоответствия типов после применения optimize_functions_to_subcolumns. #72394 (Anton Popov).
  • Исправлен сбой при синтаксическом разборе запросов BACKUP DATABASE db EXCEPT TABLES db.table. #72429 (Konstantin Bogdanov).
  • Запретить создание пустого Variant. #72454 (Pavel Kruglov).
  • Исправлено некорректное форматирование result_part_path в system.merges. #72567 (Konstantin Bogdanov).
  • Исправлен парсинг glob-шаблона, состоящего из одного элемента. #72572 (Konstantin Bogdanov).
  • Исправлена генерация запроса для сервера follower в случае распределённого запроса с ARRAY JOIN. Исправление #69276. #72608 (Dmitry Novik).
  • Исправлена ошибка, из-за которой при использовании DateTime64 в DateTime64 ничего не возвращалось. #72640 (Yarik Briukhovetskyi).
  • Исправлена ошибка “No such key” в неупорядоченном режиме S3Queue, возникавшая, когда значение настройки tracked_files_limit было меньше скорости появления файлов в S3. #72738 (Kseniia Sumarokova).
  • Сброс кэша mark может занять заметное время, если он большой. Если удерживать мьютекс контекста во время этой операции, это блокирует многие другие действия, и даже новое клиентское соединение не может быть установлено, пока мьютекс не будет освобожден. При этом для синхронизации удерживать этот мьютекс на самом деле не требуется: достаточно иметь локальную ссылку на кэш через shared_ptr. #72749 (Alexander Gololobov).
  • Кэш PK сильно занижал свой размер на одном из тестовых инстансов. В частности, в столбцах LowCardinality не учитывался размер словаря. Исправление состоит в использовании column-&gt;allocatedBytes() и дополнительных оценок накладных расходов для размера записи кэша. #72750 (Alexander Gololobov).
  • Исправлено Исключение, возникающее в RemoteQueryExecutor, если пользователь отсутствует локально. #72759 (Andrey Zvonov).
  • Исправлена работа мутаций с материализованным столбцом _block_number (если включена настройка enable_block_number_column). #72854 (Anton Popov).
  • Исправлена работа резервного копирования/восстановления с обычным перезаписываемым диском в случае наличия пустых файлов в резервной копии. #72858 (Kseniia Sumarokova).
  • Корректно отменяются вставки в DistributedAsyncInsertDirectoryQueue. #72885 (Antonio Andelic).
  • Исправлен сбой при разборе некорректных данных при записи в разреженные столбцы (может происходить при включенной настройке enable_parsing_to_custom_serialization). #72891 (Anton Popov).
  • Исправлен возможный сбой при восстановлении из резервной копии. #72947 (Kseniia Sumarokova).
  • Исправлена ошибка в методе JOIN parallel_hash, которая могла возникать, если запрос содержал сложное условие в выражении ON с фильтрами по неравенству. #72993 (Nikita Taranov).
  • При разборе JSON теперь используются настройки формата по умолчанию, чтобы избежать ошибок десериализации. #73043 (Pavel Kruglov).
  • Устранён сбой в транзакциях с неподдерживаемым хранилищем. #73045 (Raúl Marín).
  • Добавлена проверка дублирующихся ключей JSON при парсинге Tuple. Ранее это могло приводить к логической ошибке Invalid number of rows in Chunk во время парсинга. #73082 (Pavel Kruglov).
Последнее изменение 10 июня 2026 г.