Формат вывода Parquet преобразует столбцы типов Date и DateTime во встроенные типы даты и времени, поддерживаемые Parquet, вместо записи их в виде «сырых» чисел. DateTime преобразуется в DateTime64(3) (ранее: UInt32); установка output_format_parquet_datetime_as_uint32 возвращает прежнее поведение. Date преобразуется в Date32 (ранее: UInt16). #70950 (Michael Kolupaev).
По умолчанию не разрешать использование сравнимых типов (таких, как JSON/Object/AggregateFunction) в ORDER BY и функциях сравнения less/greater/equal/etc. #73276 (Pavel Kruglov).
JSONEachRowWithProgress будет записывать прогресс каждый раз при его обновлении. В предыдущих версиях прогресс отображался только после каждого блока результата, что делало его бесполезным. Изменён способ отображения прогресса: нулевые значения показываться не будут. Имейте в виду, что прогресс отправляется даже при частых обновлениях. Это может генерировать существенный объём трафика. Имейте в виду, что прогресс не сбрасывается на вывод, когда вывод сжат. Это закрывает #70800. #73834 (Alexey Milovidov).
Источник словаря mysql больше не выполняет запрос SHOW TABLE STATUS, поскольку он не даёт полезной информации для таблиц InnoDB, как и для каких-либо современных версий MySQL. Это закрывает #72636. Это изменение обратно совместимо, но отнесено к этой категории, чтобы у вас была возможность его заметить. #73914 (Alexey Milovidov).
Таблицы Merge будут унифицировать структуру базовых таблиц, используя объединение их столбцов и выводя общие типы данных. Это закрывает #64864. Это закрывает #35307. В некоторых случаях это изменение может быть несовместимо с предыдущими версиями. Один из примеров — когда между таблицами нет общего типа, но преобразование к типу первой таблицы всё ещё возможно, как в случае с UInt64 и Int64 или любым числовым типом и String. Если вы хотите вернуться к старому поведению, установите значение merge_table_max_tables_to_look_for_schema_inference равным 1 или установите compatibility в 24.12 или более раннее значение. #73956 (Alexey Milovidov).
Запросы CHECK TABLE теперь требуют отдельной привилегии CHECK. В предыдущих версиях было достаточно привилегии SHOW TABLES, чтобы выполнять эти запросы. Однако запрос CHECK TABLE может быть ресурсоёмким, и обычные ограничения на сложность запросов для SELECT к нему не применяются. Это создавало потенциальную уязвимость для атаки типа отказ в обслуживании (DoS). #74471 (Alexey Milovidov).
Убедитесь, что все столбцы в материализованном представлении соответствуют целевой таблице, если для allow_materialized_view_with_bad_select установлено значение false. #74481 (Christoph Wurm).
Функция h3ToGeo() теперь возвращает результат в порядке (lat, lon) (стандартный порядок для геометрических функций). Пользователи, которые хотят сохранить прежний порядок (lon, lat), могут установить настройку h3togeo_lon_lat_result_order = true. #74719 (Manish Gill).
Добавлены форматы JSONCompactEachRowWithProgress и JSONCompactStringsEachRowWithProgress. Продолжение #69989. Форматы JSONCompactWithNames и JSONCompactWithNamesAndTypes больше не выводят «totals» — судя по всему, это была ошибка в реализации. #75037 (Alexey Milovidov).
Измените значение настройки по умолчанию format_alter_operations_with_parentheses на true, чтобы сделать список операций ALTER однозначным (см. https://github.com/ClickHouse/ClickHouse/pull/59532). Это нарушает репликацию с кластерами версий ниже 24.3. Если вы обновляете кластер с более старых релизов, отключите эту настройку в конфигурации сервера или сначала обновитесь до 24.3. #75302 (Raúl Marín).
Запрещено выполнение команды TRUNCATE DATABASE для реплицированных баз данных. #76651 (Bharat Nallan).
Отключать параллельные реплики по умолчанию, когда analyzer отключён, независимо от настройки compatibility. По‑прежнему можно изменить это поведение, явно установив parallel_replicas_only_with_analyzer в false. #77115 (Igor Nikonov).
Больше нельзя использовать NaN или inf в качестве значений типа float в настройках. #77546 (Yarik Briukhovetskyi).
Исправлены случаи использования dateTrunc с отрицательными аргументами типов Date/DateTime. #77622 (Yarik Briukhovetskyi).
Устаревшая интеграция с MongoDB была удалена. Настройка сервера use_legacy_mongodb_integration стала неактуальной и теперь ни на что не влияет. #77895 (Robert Schulze).
Улучшена проверка SummingMergeTree: теперь агрегация пропускается для столбцов, используемых в ключах партиционирования или сортировки. #78022 (Pervakov Grigorii).
Добавлен кэш в оперативной памяти для десериализованных гранул пропускающих индексов. Это должно ускорить повторяющиеся запросы, использующие пропускающие индексы. Размер нового кэша управляется настройками сервера skipping_index_cache_size и skipping_index_cache_max_entries. Изначальным мотивом для добавления кэша были индексы векторного сходства, которые теперь работают значительно быстрее. #70102 (Robert Schulze).
Новая реализация кэша страниц в пользовательском пространстве (Userspace Page Cache), которая позволяет кэшировать данные в памяти процесса вместо использования кэша страниц ОС. Это полезно, когда данные хранятся на удалённой виртуальной файловой системе, не поддерживаемой локальным файловым кэшем. #70509 (Michael Kolupaev).
Добавлена настройка для выполнения запросов к таблицам Iceberg по состоянию на указанный момент времени. #71072 (Brett Hoerner).
Реализовано отсечение партиций таблиц Iceberg для операций партиционирования с временными преобразованиями в Iceberg. #72044 (Daniil Ivanik).
Добавлена возможность по умолчанию создавать minmax (пропускающие) индексы для столбцов в таблицах MergeTree с помощью настроек enable_minmax_index_for_all_numeric_columns (для числовых столбцов) и enable_minmax_index_for_all_string_columns (для строковых столбцов). Пока обе настройки отключены, поэтому поведение не изменилось. #72090 (Smita Kulkarni).
Добавлена агрегатная функция sequenceMatchEvents, которая возвращает временные метки совпавших событий для самой длинной последовательности событий, соответствующей шаблону. #72349 (UnamedRus).
Операторы SELECT и VIEW теперь поддерживают псевдонимы, например: SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);. Это позволяет выполнять 15‑й запрос TPC-H без изменений. #72480 (Yarik Briukhovetskyi).
Добавлена новая настройка enable_adaptive_memory_spill_scheduler, которая позволяет нескольким операциям grace JOIN в одном запросе отслеживать их совокупный объем потребляемой памяти и адаптивно выполнять выгрузку данных во внешнее хранилище, чтобы предотвратить MEMORY_LIMIT_EXCEEDED. #72728 (lgbo).
Добавлена функция arrayNormalizedGini. #72823 (flynn).
Добавлена поддержка десятичных типов данных с низкой кардинальностью, исправлена проблема #72256. #72833 (zhanglistar).
Когда включены одновременно min_age_to_force_merge_seconds и min_age_to_force_merge_on_partition_only, слияние частей будет игнорировать лимит максимального размера в байтах. #73656 (Kai Zhu).
Добавлена поддержка чтения значений HALF_FLOAT из Apache Arrow/Parquet/ORC (они считываются как Float32). Это закрывает #72960. Имейте в виду, что формат числа с плавающей запятой половинной точности IEEE-754 — это не то же самое, что BFloat16. Это закрывает #73835. #73836 (Alexey Milovidov).
Таблица system.trace_log содержит два новых столбца — symbols и lines, в которых хранится символизированный стек вызовов. Это позволяет легко собирать и экспортировать профильную информацию. Это поведение управляется параметром конфигурации сервера symbolize в trace_log и по умолчанию включено. #73896 (Alexey Milovidov).
Добавлена новая функция generateSerialID, которую можно использовать для генерации автоинкрементных чисел в таблицах. Продолжение #64310 от kazalika. Закрывает #62485. #73950 (Alexey Milovidov).
Добавлен синтаксис вида query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN. Это означает, что подзапросы {query1, query2, ... queryN} могут (и предпочтительно) выполняться параллельно друг с другом. #73983 (Vitaly Baranov).
Теперь в Play UI есть индикатор прогресса во время выполнения запроса. Он позволяет отменять запросы. Он отображает общее количество записей и расширенную информацию о скорости. Таблица может отображаться постепенно, по мере поступления данных. Добавлена поддержка HTTP-сжатия. Отрисовка таблицы стала быстрее. Заголовок таблицы стал закреплённым. Появилась возможность выделять ячейки и перемещаться по ним с помощью клавиш со стрелками. Исправлена проблема, когда рамка выделенной ячейки делала её меньше. Ячейки больше не расширяются при наведении курсора, а только при выборе. Момент прекращения отрисовки входящих данных теперь определяется на стороне клиента, а не сервера. Добавлена подсветка разрядов в числах. Общий дизайн обновлён и стал более выразительным. Выполняется проверка доступности сервера и корректности учётных данных, а также отображается версия сервера и время его работы. Значок облака корректно отображается во всех шрифтах, в том числе в Safari. Большие целые числа во вложенных типах данных будут отображаться лучше. Значения inf/nan будут отображаться корректно. При наведении курсора на заголовок столбца будут отображаться типы данных. #74204 (Alexey Milovidov).
Добавлена возможность по умолчанию создавать min-max (пропускающие) индексы для столбцов, управляемых MergeTree, с помощью настроек add_minmax_index_for_numeric_columns (для числовых столбцов) и add_minmax_index_for_string_columns (для строковых столбцов). Пока обе настройки отключены, поэтому поведение пока не изменилось. #74266 (Smita Kulkarni).
Добавлены поля script_query_number и script_line_number в system.query_log, в ClientInfo нативного протокола и в серверные логи. Это закрывает #67542. Благодарность пользователю pinsvin00 за инициирование этой функциональности ранее в #68133. #74477 (Alexey Milovidov).
Добавлена поддержка оператора минус для DateTime64, что позволяет выполнять вычитание между значениями DateTime64, а также DateTime. #74482 (Li Yin).
Добавлена поддержка табличного движка DeltaLake для AzureBlobStorage. Исправляет #68043. #74541 (Smita Kulkarni).
Добавлена возможность применять незавершённые (не материализованные фоновым процессом) мутации при выполнении запросов SELECT сразу после отправки запроса. Её можно включить, установив apply_mutations_on_fly. #74877 (Anton Popov).
Исправлено ранее неожиданное поведение функции toStartOfInterval при отрицательных аргументах типа datetime. Для этого реализована новая функция toStartOfIntervalAllowNegative, которая делает практически то же самое, но возвращает только Date32/DateTime64. #74933 (Yarik Briukhovetskyi).
Добавлена новая функция initialQueryStartTime. Она возвращает время начала текущего запроса. Значение одинаково на всех шардах при выполнении распределённого запроса. #75087 (Roman Lomonosov).
Разрешено изменять комментарий базы данных. Исправляет #73351 ### Запись в документации об изменениях, видимых пользователям. #75622 (NamNguyenHoai).
Добавлена возможность выполнять ATTACH таблиц без уровня базы данных (избавляет от необходимости использовать хак с UUID). #75788 (Azat Khuzhin).
Добавлена настройка сервера concurrent_threads_scheduler, которая определяет, как распределяются CPU-слоты между одновременными запросами. Может принимать значения round_robin (предыдущее поведение) или fair_round_robin для устранения проблемы несправедливого распределения ресурсов CPU между запросами INSERT и SELECT. #75949 (Sergei Trifonov).
Восстановлен кодек QPL, который был удалён в v24.10 из-за лицензионных проблем. #76021 (Konstantин Bogданов).
Добавлена функция arraySymmetricDifference. Она возвращает все элементы из нескольких массивов-аргументов, которые не присутствуют во всех аргументах. Пример: SELECT arraySymmetricDifference([1, 2], [2, 3]) возвращает [1, 3]. (issue #61673). #76231 (Filipp Abapolov).
События профилирования FilterTransformPassedRows и FilterTransformPassedBytes показывают число строк и число байт, отфильтрованных во время выполнения запроса. #76662 (Onkar Deshpande).
Добавлена хэш-функция keccak256, широко используемая в реализациях блокчейна, особенно в системах на базе EVM. #76669 (Arnaud Briche).
SCRAM-SHA-256 и обновление аутентификации в протоколе PostgreSQL. #76839 (scanhex12).
Добавлена возможность задать список заголовков, которые передаются из заголовков клиентского запроса во внешний HTTP-аутентификатор. #77054 (inv2004).
Поддержка IcebergMetadataFilesCache, который хранит файлы и списки манифестов, а также metadata.json в одном кэше. #77156 (Han Fei).
Добавлены функции arrayLevenshteinDistance, arrayLevenshteinDistanceWeighted и arraySimilarity. #77187 (Mikhail f. Shiryaev).
Функция hasAll() теперь может использовать полнотекстовые индексы пропуска tokenbf_v1 и ngrambf_v1. #77662 (UnamedRus).
Тип данных JSON готов к промышленной эксплуатации. См. https://jsonbench.com/. Типы данных Dynamic и Variant также готовы к промышленной эксплуатации. #77785 (Alexey Milovidov).
Добавлен кэш в оперативной памяти для десериализованных индексов поиска по векторному сходству. Это должно ускорить повторные запросы на поиск приблизительных ближайших соседей (ANN). Размер нового кэша управляется серверными настройками vector_similarity_index_cache_size и vector_similarity_index_cache_max_entries. Эта возможность заменяет механизм кэширования индексов пропуска из более ранних версий. #77905 (Shankar Iyer).
Добавлены функции sparseGrams и sparseGramsHashes, а также их варианты с поддержкой UTF8. Автор: scanhex12. #78176 (Pervakov Grigorii).
Добавлена функция toInterval. Эта функция принимает два аргумента (значение и единицу измерения) и преобразует значение в соответствующий тип Interval. #78723 (Andrew Davis).
Добавлена возможность автоматического слияния‑очистки целых партиций после настраиваемого таймаута с помощью нового параметра enable_replacing_merge_with_cleanup_for_min_age_to_force_merge. #76440 (Christoph Wurm).
Добавлена поддержка Unity Catalog для таблиц Delta Lake поверх AWS S3 и локальной файловой системы. #76988 (alesapin).
Представлена экспериментальная интеграция с каталогом данных сервиса AWS Glue для таблиц Iceberg. #77257 (alesapin).
Ускорена десериализация строк за счёт ряда низкоуровневых оптимизаций. #65948 (Nikita Taranov).
В нескольких местах кода применён атрибут preserve_most. #67778 (Nikita Taranov).
Реализован кэш условий запросов для улучшения производительности при повторяющихся условиях. Диапазон данных, не удовлетворяющих условию, запоминается как временный индекс в памяти. Последующие запросы используют этот индекс. close #67768 ### Запись в документации об изменениях, видимых пользователям. #69236 (zhongyuankai).
Реализован асинхронный prefetch операций ввода-вывода для NativeORCBlockInputFormat, что улучшает общую производительность за счёт скрытия задержок удалённого ввода-вывода. В моём тестовом случае ускорение составило до 1,47x. #70534 (李扬).
Улучшена производительность соединения Grace Hash за счёт переразбиения правой таблицы соединения по ключам. #72237 (kevinyhzou).
Снова учитывается настройка ttl_only_drop_parts в materialize ttl; теперь считываются только необходимые столбцы для перерасчёта TTL, а части удаляются заменой их на пустую. #72751 (Andrey Zvonov).
Добавлена возможность arrayROCAUC и arrayAUCPR вычислять часть площади под кривой, чтобы их расчёт можно было распараллелить на очень больших наборах данных. #72904 (Emmanuel).
Избегайте создания слишком большого количества простаивающих потоков. #72920 (Guo Wangyang).
Разбиение блоков левой таблицы по хэшу удалено из probe-фазы алгоритма JOIN parallel_hash. #73089 (Nikita Taranov).
Не перечисляем ключи в blob-хранилище, если в табличной функции используется только раскрытие фигурных скобок. Исправляет #73333. #73518 (Konstantin Bogdanov).
Заменить Int256 и UInt256 на встроенный тип i256 компилятора Clang в арифметических вычислениях в соответствии с тестами из #70502. #73658 (李扬).
Не применять maskedExecute к столбцам, не являющимся функциями, повысить производительность укороченного вычисления. #73965 (lgbo).
Отключите детектирование заголовков для Kafka/NATS/RabbitMQ/FileLog, чтобы повысить производительность. #74006 (Azat Khuzhin).
Используйте обёртки для логов по значению и не размещайте их в куче. #74034 (Mikhail Artemenko).
Выполнять конвейер с большей степенью параллелизма после агрегации с оператором GROUPING SETS. #74082 (Nikita Taranov).
Сократить критическую секцию в MergeTreeReadPool. #74202 (Guo Wangyang).
Оптимизирована функция indexHint. Теперь столбцы, которые используются только в качестве аргументов функции indexHint, не читаются из таблицы. #74314 (Anton Popov).
Повышена производительность параллельных реплик. Десериализация пакетов на инициаторе запроса для пакетов, не относящихся к протоколу параллельных реплик, теперь всегда выполняется в потоке конвейера. Ранее она могла выполняться в потоке, ответственном за планирование конвейера, что могло снижать отзывчивость инициатора и задерживать выполнение конвейера. #74398 (Igor Nikonov).
Исправлен расчет размера в памяти для столбцов LowCardinality. #74688 (Nikita Taranov).
Повышена производительность чтения целого JSON-столбца в частях формата Wide из S3. Это достигнуто за счёт добавления предвыборки для десериализации префиксов подстолбцов, кэша десериализованных префиксов и параллельной десериализации префиксов подстолбцов. Это делает чтение JSON-столбца из S3 в 4 раза быстрее для запросов вида SELECT data FROM table и примерно в 10 раз быстрее для запросов вида SELECT data FROM table LIMIT 10. #74827 (Pavel Kruglov).
Предварительно выделять память, используемую асинхронными вставками, для повышения производительности. #74945 (Ilya Golshtein).
Исправлено двойное предварительное выделение памяти в ConcurrentHashJoin в случае, когда стороны соединения меняются местами оптимизатором. #75149 (Nikita Taranov).
Устранено избыточное соперничество потоков за ресурсы в parallel_hash при max_rows_in_join = max_bytes_in_join = 0. #75155 (Nikita Taranov).
Незначительное улучшение в некоторых сценариях JOIN: предварительно вычисляется количество выходных строк и резервируется память под них. #75376 (Alexander Gololobov).
Файлы метаданных plain_rewritable небольшие и не нуждаются в большом буфере по умолчанию. Используйте буфер записи соответствующего размера, достаточного для хранения указанного пути, что улучшает использование памяти при большом количестве активных частей. ### Запись в документации об изменениях, видимых пользователю. #75758 (Julia Kartseva).
В некоторых случаях (например, при пустом столбце-массиве) части данных могут содержать пустые файлы. В таких случаях можно не записывать пустые blob-объекты в ObjectStorage и хранить только метаданные для этих файлов, если таблица размещена на диске с раздельными хранилищами метаданных и объектов. #75860 (Alexander Gololobov).
Было обнаружено, что контроль параллельного выполнения может приводить к несправедливому распределению CPU между запросами INSERT и SELECT. Это происходило, когда все слоты CPU безусловно (без конкуренции) выделялись запросам INSERT с max_threads = 1, в то время как запросы SELECT с высокими значениями max_threads страдали от низкой производительности из-за использования только одного потока. #75941 (Sergei Trifonov).
Тривиальная оптимизация в wrapInNullable, чтобы избежать ненужного выделения null map. #76489 (李扬).
Улучшена производительность функций min/max для Decimal32/Decimal64/DateTime64. #76570 (李扬).
Активно удалять данные из кэша при удалении частей данных. Не позволять кэшу расти до максимального размера, если объём данных меньше. #76641 (Alexey Milovidov).
Компиляция запросов (настройка compile_expressions) теперь учитывает тип машины. Это значительно ускоряет такие запросы. #76753 (Robert Schulze).
Ускорено построение результата JOIN за счёт девиртуализации вызовов col->insertFrom(). #77350 (Alexander Gololobov).
Объединять метки одной и той же части и единоразово записывать их в кэш условий запроса, чтобы уменьшить количество блокировок. #77377 (zhongyuankai).
Оптимизирован ORDER BY для одиночных столбцов типа Nullable или LowCardinality. #77789 (李扬).
Отключите filesystem_cache_prefer_bigger_buffer_size, когда кэш используется пассивно, например при слияниях. #77898 (Kseniia Sumarokova).
Реализована простая оптимизация подсчёта для Iceberg. Теперь запросы с count() и без фильтров должны выполняться быстрее. Закрывает #77639. #78090 (alesapin).
Добавлена поддержка отсечения данных Iceberg на основе значений lower_bound и uppert_bound для столбцов. Исправляет #77638. #78242 (alesapin).
Оптимизировано потребление памяти в NativeReader. #78442 (Azat Khuzhin).
Тривиальная оптимизация: не переписывать count(if()) на countIf, если требуется CAST. Закрыть #78564. #78565 (李扬).
Снизить количество запросов к Keeper за счет замены одиночных запросов get на multiRead там, где он доступен, так как при увеличении числа реплик одиночные запросы могли вызывать значительную нагрузку на Keeper. #56862 (Nikolay Degterinsky).
Добавлена поддержка SSL-аутентификации с именованными коллекциями для MySQL. Закрывает #59111. #59452 (Nikolay Degterinsky).
Улучшена производительность новой инфраструктуры анализатора за счёт хранения ColumnPtr вместо Field в ConstantNode. Связано с #62245. #63198 (Dmitry Novik).
Отклонять запросы, когда сервер перегружен. Решение принимается на основе отношения времени ожидания (OSCPUWaitMicroseconds) к времени занятости (OSCPUVirtualTimeMicroseconds). Запрос с некоторой вероятностью отбрасывается, когда это отношение находится между min_os_cpu_wait_time_ratio_to_throw и max_os_cpu_wait_time_ratio_to_throw (это настройки на уровне запроса). #63206 (Alexey Katsman).
Освобождайте блоки как можно раньше, чтобы снизить потребление памяти. #65647 (lgbo).
Таблица processors_profile_log теперь по умолчанию настроена с TTL 30 дней. #66139 (Ilya Yatsishin).
Разрешено создавать индекс bloom_filter на столбцах с типом данных DateTime64. #66416 (Yutong Xiao).
Ввести бакеты задержек и использовать их для отслеживания времени до первого чтения/записи байта и времени установления соединения для запросов к S3. Это позволит в дальнейшем использовать собранные данные для приблизительного расчёта перцентилей и адаптации таймаутов. #69783 (Alexey Katsman).
Запросы, передаваемые в движок таблиц Executable, больше не ограничены однопоточным выполнением. #70084 (yawnt).
В таблицу логов спанов OpenTelemetry добавлены HTTP-заголовки для улучшения трассировки. #70516 (jonymohajanGmail).
Добавлена поддержка записи файлов ORC с использованием произвольного часового пояса, а не только часового пояса GMT. #70615 (kevinyhzou).
Замените табличные функции их вариантами с суффиксом -Cluster, если включены параллельные реплики. Исправление для #65024. #70659 (Konstantin Bogdanov).
При записи резервных копий в разные облака учитывать настройки планирования ввода-вывода. #71093 (János Benjamin Antal).
Восстанавливать подключение к репликам словарей MySQL и Postgres в фоновом режиме, чтобы не задерживать выполнение запросов к соответствующим словарям. #71101 (Yakov Olkhovskiy).
Добавлено имя псевдонима метрики в system.asynchronous_metrics. #71164 (megao).
Обновления для обновляемых материализованных представлений теперь отображаются в system.query_log. #71333 (Michael Kolupaev).
Оценивать Bloom-фильтры Parquet и min/max-индексы совместно. Необходимо для корректной поддержки выражений вида x = 3 or x > 5 при data = [1, 2, 4, 5]. #71383 (Arthur Passos).
Улучшения интерактивных метрик. Исправлена проблема, из-за которой метрики от параллельных реплик отображались не полностью. Метрики отображаются сначала в порядке последнего обновления, затем в лексикографическом порядке по имени. Устаревшие метрики не отображаются. #71631 (Julia Kartseva).
Исторически так сложилось, что запрос ALTER TABLE MOVE PARTITION TO TABLE проверял права SELECT и ALTER DELETE вместо отдельного ALTER_MOVE_PARTITION. Этот PR начинает использовать именно этот тип доступа. Для совместимости это разрешение также будет неявно предоставляться, если уже выданы SELECT и ALTER DELETE, но это поведение будет удалено в будущих релизах. Закрывает #16403. #71632 (pufit).
Выбрасывать исключение при попытке материализовать столбец, входящий в ключ сортировки, вместо того чтобы позволять ему нарушать порядок сортировки. Однако это не решает #71777. #71891 (Peter Nguyen).
Разрешено использование более общего алгоритма планирования соединений при включённом алгоритме хеш-соединения. #71926 (János Benjamin Antal).
Добавлена возможность использования настраиваемого диска для хранения файлов метаданных баз данных и таблиц. Имя диска можно задать через конфигурационный параметр database_disk.disk. #72027 (Tuan Pham Anh).
Добавлена поддержка логических целочисленных типов Parquet в нативном ридере. #72105 (Arthur Passos).
Формат вывода JSON теперь по умолчанию оформляется в удобочитаемом виде. Добавлена новая настройка output_format_json_pretty_print для управления этим поведением, она включена по умолчанию. #72148 (Pavel Kruglov).
Теперь учетные данные интерактивно запрашиваются в браузере, если для пользователя по умолчанию требуется пароль. В предыдущих версиях сервер возвращал HTTP 403; теперь он возвращает HTTP 401. #72198 (Alexey Milovidov).
Этот PR переводит типы доступа CREATE_USER, ALTER_USER, DROP_USER, CREATE_ROLE, ALTER_ROLE, DROP_ROLE из глобальных в параметризованные. Это означает, что пользователи теперь могут более точно выдавать права управления доступом: #72246 (pufit).
Добавлена поддержка операций CAST и ALTER между типами JSON с разными параметрами. #72303 (Pavel Kruglov).
Добавлен столбец latest_fail_error_code_name в system.mutations. Этот столбец необходим для введения новой метрики по «зависшим» мутациям и использования её для построения графиков по ошибкам, возникающим в облаке, а также, при необходимости, для добавления нового, менее шумного оповещения. #72398 (Miсhael Stetsyuk).
Теперь лимит max_bytes_before_external_sort зависит от общего потребления памяти запросом (ранее он соответствовал количеству байт в сортировочном блоке для одного потока сортировки, теперь он имеет то же значение, что и max_bytes_before_external_group_by — это общий лимит памяти запроса для всех потоков). Также добавлена ещё одна настройка для управления размером блока на диске — min_external_sort_block_bytes. #72598 (Azat Khuzhin).
Игнорировать ограничения по памяти, задаваемые сборщиком трассировок. #72606 (Azat Khuzhin).
Реализована поддержка подстолбцов в ключе сортировки MergeTree и пропускающих индексах. #72644 (Pavel Kruglov).
Добавлены настройки сервера dictionaries_lazy_load и wait_dictionaries_load_at_startup в system.server_settings. #72664 (Christoph Wurm).
Добавлена настройка max_backup_bandwidth в список настроек, которые можно задавать в запросах BACKUP/RESTORE. #72665 (Christoph Wurm).
Параллельные реплики использовали исторические данные о доступности реплик для улучшения выбора реплики, но не обновляли счетчик ошибок реплики, если соединение было недоступно. В этом PR счетчик ошибок реплики обновляется при её недоступности. #72666 (zoomxi).
Снижен уровень логирования для сообщений о появлении реплицированных частей в движке ReplicatedMergeTree, чтобы сократить объём логов, генерируемых в реплицированном кластере. #72876 (mor-akamai).
Многие новые возможности потребуют лучшей инкапсуляции кода (в части, касающейся метаданных Iceberg) и более продуманных абстракций. #72941 (Daniil Ivanik).
Добавлена поддержка сравнения на равенство для значений в столбце JSON. #72991 (Pavel Kruglov).
Улучшено форматирование идентификаторов с JSON-подстолбцами, чтобы избежать ненужных обратных кавычек. #73085 (Pavel Kruglov).
Добавлена поддержка SETTINGS с неявно заданным ENGINE и совместным использованием настроек движка и запроса. #73120 (Raúl Marín).
Записывать парты уровня 1, если включен optimize_on_insert. Это позволяет применять несколько оптимизаций запросов с FINAL к только что записанным партам. #73132 (Anton Popov).
Для запроса вида WHERE a<b AND b<c AND c<5 могут автоматически генерироваться дополнительные условия сравнения (a<5 AND b<5), чтобы улучшить эффективность фильтрации. #73164 (Shichao Jin).
Улучшено выделение общих выражений в дизъюнкциях. Добавлена возможность упрощать итоговое фильтрующее выражение даже при отсутствии общего подвыражения для всех дизъюнктов. Продолжение #71537. #73271 (Dmitry Novik).
В хранилище S3(Azure)Queue теперь можно задать настройки для таблиц, которые были созданы без них. #73283 (Kseniia Sumarokova).
Clickhouse-client теперь поддерживает завершение запроса с помощью Ctrl+D. Теперь можно использовать Ctrl+D вместо ввода точки с запятой и нажатия Enter. Дополнительно Ctrl+D работает как Enter в однострочном режиме. #73293 (Xiaozhe Yu).
Добавлена настройка least_greatest_legacy_null_behavior (по умолчанию: false), которая определяет, обрабатывают ли функции least и greatest аргументы NULL, безусловно возвращая NULL (если true), или игнорируют их (если false). #73344 (Robert Schulze).
Использованы мультизапросы Keeper в потоке очистки ObjectStorageQueueMetadata. #73357 (Antonio Andelic).
Новый драйвер MongoDB теперь используется по умолчанию. Пользователи, которые хотят продолжать использовать устаревший драйвер, могут установить серверный параметр use_legacy_mongodb_integration в true. #73359 (Robert Schulze).
Когда ClickHouse работает в cgroup, мы по‑прежнему будем собирать асинхронные метрики на уровне всей системы, связанные с нагрузкой на систему, планированием процессов, памятью и т. д. Они могут дать полезные сигналы, когда ClickHouse — единственный процесс на хосте с высоким потреблением ресурсов. #73369 (Nikita Taranov).
В хранилище S3Queue появилась возможность переносить старые упорядоченные таблицы, созданные до версии 24.6, в новую структуру с бакетами. #73467 (Kseniia Sumarokova).
Исправлена регрессия, при которой использование локалей сортировки с модификаторами вызывало ошибку. Например, теперь корректно выполняется запрос SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shifted. #73544 (Robert Schulze).
Функция parseDateTime64 (и её варианты) теперь возвращает корректные результаты для входных значений дат до 1970 года и после 2106 года. Пример: SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS'). #73594 (zhanglistar).
Устраняет некоторые проблемы удобства использования clickhouse-disks, о которых сообщали пользователи. Закрывает #67136. #73616 (Daniil Ivanik).
Добавлена возможность изменять настройки коммитов в хранилище S3(Azure)Queue (настройки коммита: max_processed_files_before_commit, max_processed_rows_before_commit, max_processed_bytes_before_commit, max_processing_time_sec_before_commit). #73635 (Kseniia Sumarokova).
В хранилище S3(Azure)Queue теперь агрегируется прогресс между источниками для сопоставления с параметрами лимита commit. #73641 (Kseniia Sumarokova).
Добавлена поддержка основных настроек в запросах BACKUP/RESTORE. #73650 (Vitaly Baranov).
Считывать output_format_compression_level при выводе в Parquet. #73651 (Arthur Passos).
Добавлено чтение типа Arrow fixed_size_list как Array вместо обработки его как неподдерживаемого типа. #73654 (Julian Meyers).
Этот PR добавляет два движка резервного копирования: Memory (хранит резервные копии в текущей пользовательской сессии) и Null (вообще не сохраняет резервные копии). #73690 (Vitaly Baranov).
concurrent_threads_soft_limit_num и concurrent_threads_soft_limit_num_ratio_to_cores можно изменять без перезапуска сервера. #73713 (Sergei Trifonov).
Добавлена поддержка расширенных числовых типов (Decimal, большие целые числа) в функциях formatReadable. #73765 (Raúl Marín).
Улучшено сообщение об ошибке для таблицы File, которая не поддерживает дописывание данных в файл. #73832 (Alexey Milovidov).
Запрашивать подтверждение, если пользователь по ошибке выбирает вывод двоичного формата (такого как Native, Parquet, Avro) в терминал. Это закрывает #59524. #73833 (Alexey Milovidov).
Подсвечивать пробелы в конце строк в форматах Pretty и Vertical в терминале для лучшей наглядности. Этим управляет настройка output_format_pretty_highlight_trailing_spaces. Изначальную реализацию выполнил Braden Burns в #72996. Закрывает #71590. #73847 (Alexey Milovidov).
clickhouse-client и clickhouse-local теперь автоматически определяют сжатие stdin, когда он перенаправлен из файла. Это закрывает #70865. #73848 (Alexey Milovidov).
По умолчанию слишком длинные имена столбцов в форматах pretty усекаются. Это поведение управляется настройками output_format_pretty_max_column_name_width_cut_to и output_format_pretty_max_column_name_width_min_chars_to_cut. Это продолжение работы tanmaydatta в задаче #66502. Этим закрывается задача #65968. #73851 (Alexey Milovidov).
Сделали форматы Pretty более наглядными: блоки объединяются, если с момента вывода предыдущего блока прошло немного времени. Это настраивается с помощью новых параметров output_format_pretty_squash_consecutive_ms (по умолчанию 50 мс) и output_format_pretty_squash_max_wait_ms (по умолчанию 1000 мс). Продолжение #49537. Закрывает #49153. #73852 (Alexey Milovidov).
Исправлено сопоставление типов для SQLite (целочисленные типы в int64, типы с плавающей точкой в float64). #73853 (Joanna Hulboj).
Добавлена метрика количества исходных частей, которые в данный момент сливаются. Это закрывает #70809. #73868 (Alexey Milovidov).
Выделять цветом столбцы в формате Vertical при выводе в терминал. Это можно отключить с помощью настройки output_format_pretty_color. #73898 (Alexey Milovidov).
Улучшена совместимость с MySQL до такой степени, что mysqlsh (функциональный CLI-клиент MySQL от Oracle) теперь может подключаться к ClickHouse. Это необходимо для упрощения тестирования. #73912 (Alexey Milovidov).
Если количество выходных строк превышает N = output_format_pretty_max_rows, вместо отображения только первых N строк мы усечём выходную таблицу посередине, показывая первые N/2 строк и последние N/2 строк. Продолжение #64200. Таким образом закрывается #59502. #73929 (Alexey Milovidov).
Функция isIPv4String возвращала true, если за корректным IPv4-адресом следовал нулевой байт, тогда как в этом случае она должна возвращать false. Продолжение #65387. #73946 (Alexey Milovidov).
Добавлена настройка validate_enum_literals_in_opearators, которая проверяет литералы перечисления в операторах IN и NOT IN на соответствие типу перечисления и выбрасывает исключение, если литерал не является допустимым значением перечисления. #73985 (Vladimir Cherkasov).
В хранилище S3(Azure)Queue все файлы (в одном пакете, определяемом настройками коммита) фиксируются в рамках одной транзакции Keeper. #73991 (Kseniia Sumarokova).
Отключено определение заголовка для исполняемых UDF и словарей (так как это могло приводить к сообщению «Function 'X': wrong result, expected Y row(s), actual Y-1»). #73992 (Azat Khuzhin).
В EXPLAIN PLAN добавлена опция distributed. Теперь EXPLAIN distributed=1 ... добавляет к шагам ReadFromParallelRemote* удалённый план выполнения. #73994 (Nikolai Kochetov).
Используется корректный тип возвращаемого значения для not/xor с аргументами типа Dynamic. #74013 (Pavel Kruglov).
Добавлена возможность изменять add_implicit_sign_column_constraint_for_collapsing_engine после создания таблицы. #74014 (Christoph Wurm).
Добавлена поддержка подколонок в запросе SELECT для материализованного представления. #74030 (Pavel Kruglov).
Форматы семейства Pretty могут отображать многострочные поля внутри ячейки таблицы, что улучшает читаемость. Эта возможность включена по умолчанию и может управляться с помощью настройки output_format_pretty_multiline_fields. Продолжение работы Volodyachan в #64094. Закрывает #56912. #74032 (Alexey Milovidov).
Добавлена поддержка оптимизации predicate-push-down на уровне плана запроса для шага MergingAggregated. Она улучшает производительность некоторых запросов с новым анализатором. #74073 (Nikolai Kochetov).
Теперь есть три простых способа задать пользовательскую строку приглашения (prompt) в clickhouse-client: 1) через параметр командной строки --prompt, 2) в конфигурационном файле с помощью настройки <prompt>[...]</prompt>, и 3) также в конфигурационном файле — через настройки для отдельных подключений <connections_credentials><prompt>[...]</prompt></connections_credentials>. #74168 (Christoph Wurm).
Изменён код статуса успешного ответа Prometheus remote write с 200 OK на 204 No Content. #74170 (Michael Dempsey).
Теперь HTTP-заголовки X-ClickHouse доступны в JavaScript в браузере. Это делает разработку приложений более удобной. #74180 (Alexey Milovidov).
Формат JSONEachRowWithProgress включает события с метаданными, а также totals и extremes. Он также включает rows_before_limit_at_least и rows_before_aggregation. Формат корректно выводит исключение, если оно возникает после частичных результатов. Теперь прогресс включает прошедшее время в наносекундах. В конце генерируется одно финальное событие прогресса. Прогресс во время выполнения запроса будет выводиться не чаще, чем задано значением настройки interactive_delay. #74181 (Alexey Milovidov).
Иконка песочных часов будет плавно вращаться в интерфейсе Play UI. #74182 (Alexey Milovidov).
Даже если HTTP-ответ сжат, отправляйте пакеты по мере их поступления. Это позволяет браузеру получать пакеты прогресса и сжатые данные. #74201 (Alexey Milovidov).
Добавлена возможность перезагружать max_remote_read_network_bandwidth_for_serve и max_remote_write_network_bandwidth_for_server на лету, без перезапуска сервера. #74206 (Kai Zhu).
Автоматическое определение защищённого соединения при подключении к порту 9440 в ClickHouse Client. #74212 (Christoph Wurm).
Разрешить аутентификацию пользователей только по имени пользователя в http_handlers (ранее также требовалось указывать пароль). #74221 (Azat Khuzhin).
Поддержка альтернативных языков запросов PRQL и KQL была помечена как экспериментальная. Чтобы использовать их, установите параметры allow_experimental_prql_dialect = 1 и allow_experimental_kusto_dialect = 1. #74224 (Robert Schulze).
Добавлена поддержка возврата по умолчанию типа Enum в большем количестве агрегатных функций. #74272 (Raúl Marín).
В OPTIMIZE TABLE теперь можно указывать ключевое слово FORCE в качестве альтернативы существующему ключевому слову FINAL. #74342 (Robert Schulze).
Добавлена настройка MergeTree materialize_skip_indexes_on_merge, которая отключает создание пропускающих индексов во время слияния. Это позволяет пользователям явно управлять тем, когда создаются пропускающие индексы (через ALTER TABLE [..] MATERIALIZE INDEX [...]). Это может быть полезно, если построение пропускающих индексов затратно (например, индексов векторного сходства). #74401 (Robert Schulze).
Добавлена поддержка подстолбцов в выражениях по умолчанию и материализованных выражениях. #74403 (Pavel Kruglov).
Добавлена метрика IsServerShuttingDown, необходимая для срабатывания оповещения, если завершение работы сервера занимает слишком много времени. #74429 (Miсhael Stetsyuk).
Показывать подробные сообщения об ошибках в system.errors. #74574 (Vitaly Baranov).
Включён механизм экспоненциального backoff для всех типов реплицируемых задач. Это позволит снизить потребление CPU и памяти, а также уменьшить размер файлов журналов. Добавлены новые настройки max_postpone_time_for_failed_replicated_fetches_ms, max_postpone_time_for_failed_replicated_merges_ms и max_postpone_time_for_failed_replicated_tasks_ms, аналогичные max_postpone_time_for_failed_mutations_ms. #74576 (MikhailBurdukov).
Более точный учет параметра max_joined_block_size_rows в алгоритме соединения parallel_hash. Это помогает избежать повышенного потребления памяти по сравнению с алгоритмом hash. #74630 (Nikita Taranov).
Добавлена поддержка опции конфигурации libhdfs3 dfs.client.use.datanode.hostname. #74635 (Mikhail Tiukavkin).
Исправлена ошибка «Invalid: Codec 'snappy' не поддерживает установку уровня сжатия». #74659 (Arthur Passos).
Добавлена возможность использования пароля для клиентского взаимодействия с clickhouse-keeper. Эта функция не очень полезна, если вы настроите корректную конфигурацию SSL для сервера и клиента, но всё же может быть полезна в некоторых случаях. Пароль не может быть длиннее 16 символов. Это не связано с моделью аутентификации Keeper. #74673 (alesapin).
Добавлена возможность использовать пути BLOB-объектов для вычисления контрольных сумм при создании резервной копии. #74729 (Vitaly Baranov).
Используйте динамический шардинг для JOIN, если ключ JOIN является префиксом PK для обеих таблиц. Эта оптимизация включается настройкой query_plan_join_shard_by_pk_ranges (по умолчанию отключена). #74733 (Nikolai Kochetov).
Добавлена поддержка IPv6-адресов в табличных функциях и движках таблиц MySQL и PostgreSQL. #74796 (Mikhail Koviazin).
Параметры кодека Gorilla теперь всегда сохраняются в метаданных таблицы в .sql-файле. Исправляет: #70072. #74814 (Nikita Mikhaylov).
Реализована оптимизация с коротким замыканием для функции divideDecimal. Исправлена проблема #74280. #74843 (Kevin Mingtarja).
Улучшена производительность больших multi-запросов в Keeper. #74849 (Antonio Andelic).
Теперь пользователей можно указывать в стартовых скриптах. #74894 (pufit).
Извлечение частей в ALTER TABLE FETCH PARTITION выполняется параллельно (размер пула потоков управляется параметром max_fetch_partition_thread_pool_size). #74978 (Azat Khuzhin).
Добавлен столбец с идентификатором запроса в system.query_cache (issue #68205). #74982 (NamNguyenHoai).
Повторно включён протокол SSH. Исправлены некоторые критические уязвимости, из‑за чего больше невозможно использовать пользовательский pager или задавать server-logs-file. По умолчанию отключена возможность передавать опции клиента через переменные окружения (это по‑прежнему возможно через ssh-server.enable_client_options_passing в config.xml). Добавлена поддержка таблицы прогресса, отмены запросов, автодополнения, прогресса событий профилирования, stdin и опции send_logs_level. Это закрывает #74340. #74989 (Nikita Mikhaylov).
Исправлено форматирование исключений: при их возникновении во время интерпретации запроса теперь используется настраиваемый формат. В предыдущих версиях исключения форматировались с использованием формата по умолчанию, а не формата, указанного в запросе. Это исправляет #55422. #74994 (Alexey Milovidov).
Реализованы улучшения разбора (разбор идентификаторов последовательностей: добавлена поддержка разбора идентификаторов последовательностей в manifest-файлах, и разбор метаданных Avro: переработан парсер метаданных Avro, чтобы его было проще расширять для будущих улучшений). #75010 (Daniil Ivanik).
Теперь можно отменять запросы ALTER TABLE ... FREEZE ... с помощью KILL QUERY и тайм‑аута по max_execution_time. #75016 (Kirill).
Добавлена поддержка groupUniqArrayArrayMap в качестве SimpleAggregateFunction. #75034 (Miel Donkers).
Реализована поддержка подготовленных запросов в протоколе wire PostgreSQL. #75035 (scanhex12).
В BuzzHouse добавлено несколько ранее отсутствовавших возможностей: операторы ILIKE и REGEXP, <=> и IS NOT DISTINCT FROM. #75168 (Pedro Ferreira).
Настройка min_chunk_bytes_for_parallel_parsing теперь не может быть равна нулю. Это исправляет проблему: #71110. #75239 (Nikita Mikhaylov).
intExp2 / intExp10: Определено поведение для ранее неопределённых случаев: возвращать 0 для слишком малого аргумента, 18446744073709551615 для слишком большого аргумента, выбрасывать исключение при значении NaN. #75312 (Vitaly Baranov).
Добавлена нативная поддержка параметра s3.endpoint из конфигурации каталога в DatabaseIceberg. Закрывает #74558. #75375 (Kseniia Sumarokova).
Не завершать операцию без сообщения об ошибке, если у пользователя, выполняющего SYSTEM DROP REPLICA, недостаточно прав. #75377 (Bharat Nallan).
Добавлен ProfileEvent, фиксирующий число неудачных попыток сброса любого из системных логов. #75466 (Alexey Milovidov).
Добавлены проверка и логирование операций расшифровки и распаковки. #75471 (Vitaly Baranov).
Добавлена поддержка символа микро (micro sign, U+00B5) в функции parseTimeDelta. Теперь и символ микро (U+00B5), и греческая буква мю (U+03BC) распознаются как допустимые обозначения микросекунд, что приводит поведение ClickHouse в соответствие с реализацией Go (см. time.go и time/format.go). #75472 (Vitaly Orlov).
Серверная настройка (send_settings_to_client) заменена на клиентскую (apply_settings_from_server), которая определяет, должен ли клиентский код (например, парсинг данных INSERT и форматирование вывода запроса) использовать настройки из users.xml сервера и пользовательского профиля. В противном случае используются только настройки, заданные в командной строке клиента, в сессии и в самом запросе. Обратите внимание, что это относится только к нативному клиенту (а не, например, к HTTP) и не применяется к большей части обработки запроса (которая выполняется на сервере). #75478 (Michael Kolupaev).
Улучшение Keeper: отключено вычисление дайджеста при коммите в хранилище в памяти для повышения производительности. Его можно включить с помощью настройки keeper_server.digest_enabled_on_commit. Дайджест по-прежнему вычисляется при предварительной обработке запросов. #75490 (Antonio Andelic).
По возможности проталкивать фильтрующее выражение из условия ON оператора JOIN. #75536 (Vladimir Cherkasov).
Улучшены сообщения об ошибках при синтаксическом разборе. Ранее, если запрос был слишком большим, а токен, длина которого выходила за пределы лимита, представлял собой очень длинный строковый литерал, сообщение о причине ошибки терялось посередине между двумя примерами этого очень длинного токена. Исправлена проблема, при которой запрос с UTF-8 некорректно обрезался в сообщении об ошибке. Исправлено избыточное экранирование фрагментов запроса. Закрывает #75473. #75561 (Alexey Milovidov).
Отключите отправку настроек с сервера на клиент (send_settings_to_client=false) для лучшей совместимости (эта возможность позднее будет реализована заново как клиентская настройка для повышения удобства использования). #75648 (Michael Kolupaev).
Добавлен параметр конфигурации memory_worker_correct_memory_tracker, включающий исправление внутреннего трекера памяти на основе информации из другого источника, периодически считываемой в фоновом потоке. #75714 (Antonio Andelic).
В PrometheusRemoteReadProtocol стал использоваться Analyzer. #75729 (Dmitry Novik).
У нас есть поддержка метрик типов gauge и counter. Однако этого недостаточно для некоторых метрик (например, времени отклика запросов к Keeper), поэтому необходима поддержка метрик типа histogram. Интерфейс во многом повторяет клиент Prometheus: вы просто вызываете observe(value), чтобы увеличить счётчик в бакете, соответствующем этому значению. Метрики типа histogram доступны через system.histogram_metrics. #75736 (Michael Stetsyuk).
Добавлен столбец normalized_query_hash в system.processes. Примечание: хотя его можно легко вычислить «на лету» с помощью функции normalizedQueryHash, это необходимо для подготовки к последующим изменениям. #75756 (Alexey Milovidov).
Запрос к system.tables не приведёт к исключению, даже если существует таблица Merge, созданная поверх базы данных, которая уже не существует. Из таблиц Hive удалён метод getTotalRows, поскольку мы не допускаем, чтобы он выполнял сложные операции. #75772 (Alexey Milovidov).
В веб-интерфейсе появилась интерактивная навигация по базам данных. #75777 (Alexey Milovidov).
Позволяет комбинировать диски только для чтения и для чтения-записи в политике хранения (как в виде нескольких томов, так и нескольких дисков). Это позволяет читать данные из всего тома, при этом операции вставки будут преимущественно направляться на диск с возможностью записи (то есть использовать политику хранения Copy-on-Write). #75862 (Azat Khuzhin).
Удалён trace_id из ORDER BY по умолчанию для system.opentelemetry_span_log. #75907 (Azat Khuzhin).
Шифрование (XML-атрибут encrypted_by) теперь может применяться к любому конфигурационному файлу: config.xml, users.xml, а также вложенным конфигурационным файлам. Ранее шифрование поддерживалось только для файла верхнего уровня config.xml. #75911 (Mikhail Gorshkov).
Сохранять значения start_time/end_time для резервных копий с точностью до микросекунд. #75929 (Aleksandr Musorin).
Добавлена метрика MemoryTrackingUncorrected, отображающая значение внутреннего глобального трекера памяти, не скорректированное по RSS. #75935 (Antonio Andelic).
Вычислять размеры столбцов и индексов в MergeTree лениво. #75938 (Pavel Kruglov).
Преобразовывать JOIN в подзапрос с IN, если выходной столбец связан с левой таблицей; для этого сначала требуется шаг устранения дубликатов, поэтому по умолчанию оптимизация отключена, пока этот шаг не будет добавлен. #75942 (Shichao Jin).
Добавлена настройка сервера throw_on_unknown_workload, которая позволяет выбрать поведение при выполнении запроса с настройкой workload, у которой установлено неизвестное значение: либо разрешить неограниченный доступ (по умолчанию), либо сгенерировать ошибку RESOURCE_ACCESS_DENIED. Это полезно для принудительного использования планировщика рабочих нагрузок всеми запросами. #75999 (Sergei Trifonov).
Сделать так, чтобы новый экспериментальный движок таблиц Kafka полностью учитывал флаги функциональности Keeper. #76004 (János Benjamin Antal).
Не переписывайте подстолбцы в вызов getSubcolumn в ARRAY JOIN без необходимости. #76018 (Pavel Kruglov).
Улучшена таблица system.warnings и добавлены динамические предупреждения, которые можно добавлять, обновлять или удалять. #76029 (Bharat Nallan).
Добавлена поддержка сброса отдельных журналов в SYSTEM FLUSH LOGS. #76132 (Raúl Marín).
Улучшена страница сервера /binary. Вместо кривой Мортон используется кривая Гильберта. В квадрате отображаются 512 МБ адресного пространства, что заполняет квадрат лучше (в предыдущих версиях адреса заполняли только половину квадрата). Цвет адресов определяется ближе к имени библиотеки, чем к имени функции. Добавлена возможность немного прокручивать за пределы области. #76192 (Alexey Milovidov).
Этот PR запрещает выполнение запроса ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES, потому что все операции DROP должны стоять первыми в порядке выполнения. #76242 (pufit).
Различные улучшения для SYNC REPLICA (более информативные сообщения об ошибках, улучшенные тесты, дополнительные проверки корректности). #76307 (Azat Khuzhin).
Повторять выполнение запросов ON CLUSTER при ошибке TOO_MANY_SIMULTANEOUS_QUERIES. #76352 (Patrick Galbraith).
Значение по умолчанию для output_format_pretty_max_rows изменено с 10000 на 1000. Я считаю, что так удобнее в использовании. #76407 (Alexey Milovidov).
Поддержка операции refresh в таблицах MergeTree, доступных только для чтения. #76467 (Alexey Milovidov).
Используется корректный резервный механизм при сбое многочастного копирования в S3 во время бэкапа из‑за ошибки Access Denied. Многочастное копирование может приводить к ошибке Access Denied, когда бэкап выполняется между бакетами с разными учетными данными. #76515 (Antonio Andelic).
Более быстрое завершение работы серверов ClickHouse (устранена задержка 2,5 секунды). #76550 (Azat Khuzhin).
Библиотека librdkafka обновлена до версии 2.8.0, улучшен процесс завершения работы таблиц Kafka, что сократило задержки при удалении таблиц и перезапусках сервера. Движок engine=Kafka больше не покидает явно группу потребителей при удалении таблицы. Вместо этого потребитель остается в группе до тех пор, пока он не будет автоматически удален после периода бездействия, заданного параметром session_timeout_ms (по умолчанию — 45 секунд). #76621 (filimonov).
Исключено избыточное выделение памяти в readbufferfroms3 и других буферах удалённого чтения, их потребление памяти уменьшено вдвое. #76692 (Sema Checherinda).
Добавлена поддержка типа JSON и чтения подстолбцов из представления. #76903 (Pavel Kruglov).
Добавлена поддержка преобразования UInt128 в IPv6. Это позволяет выполнять операцию bitAnd и другую арифметику над IPv6 и преобразовывать значения обратно в IPv6. Закрывает #76752. Также позволяет результат операции bitAnd над IPv6 преобразовывать обратно в IPv6. См.: https://github.com/ClickHouse/ClickHouse/pull/57707. #76928 (Muzammil Abdul Rehman).
Системные таблицы, такие как server_settings или settings, имеют столбец default со значением по умолчанию, что удобно. Только в merge_tree_settings и replicated_merge_tree_settings этот столбец не включён. #76942 (Diego Nieto).
По умолчанию специальные значения Bool в текстовых форматах внутри типа Variant не разбираются. Это поведение можно включить с помощью настройки allow_special_bool_values_inside_variant. #76974 (Pavel Kruglov).
Добавлена поддержка настройки времени ожидания для отдельных задач низкоприоритетных запросов на уровне сессии и сервера. #77013 (VicoWu).
Добавлен ProfileEvents::QueryPreempted с той же логикой, что и у CurrentMetrics::QueryPreempted. #77015 (VicoWu).
Ранее database replicated мог записывать в лог учетные данные, указанные в запросе. Это поведение исправлено. Исправление закрывает: #77123. #77133 (Nikita Mikhaylov).
Разрешено выполнять ALTER TABLE DROP PARTITION для диска типа plain_rewritable. #77138 (Julia Kartseva).
Добавлена возможность перед выполнением слияний/мутаций в случае репликации с нулевым копированием вводить случайную задержку до 500 мс, независимую от размеров партиций. #77165 (Alexey Katsman).
Добавлена поддержка атомарного переименования при использовании TRUNCATE с INTO OUTFILE. Решена проблема #70323. #77181 (Onkar Deshpande).
Использовать тип FixedString для типов данных PostgreSQL CHARACTER, CHAR и BPCHAR. #77304 (Pablo Marcos).
Добавлена возможность явно указывать файл метаданных для чтения в Iceberg с помощью настройки iceberg_metadata_file_path у хранилища/табличной функции. Исправляет #47412. #77318 (alesapin).
Добавлена поддержка использования удалённого диска баз данных для хранения файлов метаданных. #77365 (Tuan Pham Anh).
Реализовано сравнение значений типа данных JSON. Теперь объекты JSON можно сравнивать так же, как и объекты типа Map. #77397 (Pavel Kruglov).
Настройка резервного копирования/восстановления allow_s3_native_copy теперь поддерживает три возможных значения: - False — S3 native copy не будет использоваться; - True (старое значение по умолчанию) — ClickHouse сначала попытается использовать S3 native copy, а в случае неудачи перейдёт к подходу чтение+запись; - 'auto' (новое значение по умолчанию) — ClickHouse сначала сравнит учётные данные источника и получателя. Если они совпадают, ClickHouse попробует S3 native copy и затем при необходимости может перейти к подходу чтение+запись. Если они различаются, ClickHouse сразу перейдёт к подходу чтение+запись. #77401 (Vitaly Baranov).
Добавлена поддержка ALTER TABLE ... ATTACH|DETACH|MOVE|REPLACE PARTITION для диска plain_rewritable. #77406 (Julia Kartseva).
Снижено потребление памяти при предварительной выборке JSON-столбца в частях формата Wide. #77640 (Pavel Kruglov).
Реализована поддержка использования токена сеанса AWS и учетных данных из переменных окружения в ядре Delta для движка таблиц Delta Lake. #77661 (Kseniia Sumarokova).
Поддержка параметров запроса в настройке additional_table_filters. После этого изменения следующий запрос будет успешно выполняться. #77680 (wxybear).
Теперь пользовательские функции (UDF) можно помечать как детерминированные с помощью нового тега в их XML-определении. Кроме того, кэш запросов теперь проверяет, являются ли UDF, вызываемые в запросе, детерминированными. В этом случае он кэширует результат запроса. (Issue #59988). #77769 (Jimmy Aguilar Mena).
Добавлен параметр конфигурации enable_hdfs_pread для включения или отключения hdfs pread. #77885 (kevinyhzou).
Добавлены события профиля для количества запросов чтения и записи ZooKeeper «multi». #77888 (JackyWoo).
Разрешено создавать и вставлять данные во временную таблицу при включённом параметре disable_insertion_and_mutation. #77901 (Xu Jia).
Уменьшено значение max_insert_delayed_streams_for_parallel_write до 100. #77919 (Azat Khuzhin).
Добавлена возможность настраивать количество столбцов, которые операции слияния могут сбрасывать параллельно, с помощью max_merge_delayed_streams_for_parallel_write (это должно примерно в 25 раз снизить потребление памяти при вертикальных слияниях в S3). #77922 (Azat Khuzhin).
Исправлен разбор года в синтаксисе Joda вида 'yyy'. #77973 (李扬).
Присоединение частей таблиц MergeTree будет выполняться в порядке следования их блоков, что важно для специальных алгоритмов слияния, таких как ReplacingMergeTree. Это закрывает #71009. #77976 (Alexey Milovidov).
Правила маскировки запросов теперь могут генерировать LOGICAL_ERROR в случае совпадения. Это поможет проверить, не утечёт ли предопределённый пароль в каких-либо логах. #78094 (Nikita Mikhaylov).
Добавлен столбец index_length_column в information_schema.tables для улучшения совместимости с MySQL. #78119 (Paweł Zakrzewski).
Добавлены две новые метрики: TotalMergeFailures и NonAbortedMergeFailures. Эти метрики необходимы для обнаружения случаев, когда за короткий период происходит слишком много неудачных слияний. #78150 (Miсhael Stetsyuk).
Исправлен некорректный парсинг URI S3, когда ключ не указан при использовании адреса в формате path-style. #78185 (Arthur Passos).
Исправлены некорректные значения асинхронных метрик BlockActiveTime, BlockDiscardTime, BlockWriteTime, BlockQueueTime и BlockReadTime (до изменения 1 секунда ошибочно сообщалась как 0.001). #78211 (filimonov).
Теперь соблюдается лимит loading_retries для ошибок при загрузке в материализованное представление для StorageS3(Azure)Queue. Ранее такие ошибки перезапускались бесконечно. #78313 (Kseniia Sumarokova).
В StorageDeltaLake с реализацией delta-kernel-rs улучшены производительность и индикатор прогресса. #78368 (Kseniia Sumarokova).
Индекс векторного сходства мог выделять до двух раз больше оперативной памяти, чем необходимо. Это исправление пересматривает стратегию распределения памяти, снижая ее потребление и повышая эффективность кэша индекса векторного сходства. (issue #78056). #78394 (Shankar Iyer).
Введена настройка schema_type для таблицы system.metric_log, определяющая тип схемы. Допустимы три варианта схемы: wide — текущая схема, каждая метрика/событие в отдельном столбце (наиболее эффективно при чтении отдельных столбцов), transposed — аналогично system.asynchronous_metric_log, метрики/события хранятся в строках, и наиболее интересная transposed_with_wide_view — создаётся базовая таблица со схемой transposed, но также добавляется представление со схемой wide, которое транслирует запросы к базовой таблице. В transposed_with_wide_view субсекундное разрешение для представления не поддерживается, event_time_microseconds — это псевдоним, сохранённый для обратной совместимости. #78412 (alesapin).
Добавлено несколько удобных способов определения корневого файла metadata.json в табличной функции и движке Iceberg. Закрывает #78455. #78475 (Daniil Ivanik).
Добавлена поддержка отсечения партиций (partition pruning) в Delta Lake. #78486 (Kseniia Sumarokova).
Реализована поддержка аутентификации по паролю в протоколе SSH для ClickHouse. #78586 (Nikita Mikhaylov).
Добавлено динамическое предупреждение в таблицу system.warnings для длительно выполняющихся мутаций. #78658 (Bharat Nallan).
При сильной перегрузке CPU соединения могут быть разорваны. Решение принимается на основе соотношения времени ожидания (OSCPUWaitMicroseconds) и времени работы (OSCPUVirtualTimeMicroseconds). Запрос с некоторой вероятностью отбрасывается, когда это соотношение находится в диапазоне от min_os_cpu_wait_time_ratio_to_drop_connection до max_os_cpu_wait_time_ratio_to_drop_connection. #78778 (Alexey Katsman).
Разрешено использование пустых значений при секционировании Hive. #78816 (Arthur Passos).
Исправлено приведение типов в операторе IN для BFloat16 (то есть теперь SELECT toBFloat16(1) IN [1, 2, 3]; возвращает 1). Закрывает #78754. #78839 (Raufs Dunamalijevs).
Не проверять части на других дисках для MergeTree, если указан disk=. #78855 (Azat Khuzhin).
Типы данных в used_data_type_families в system.query_log приведены к каноническому виду. #78972 (Kseniia Sumarokova).
Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
Исправлена проблема, из-за которой нельзя было создать узел SEQUENTIAL с помощью keeper-client. #64177 (Duc Canh Le).
Исправлено разрешение идентификаторов из родительских областей видимости. Разрешено использовать псевдонимы выражений в предложении WITH. Исправляет #58994. Исправляет #62946. Исправляет #63239. Исправляет #65233. Исправляет #71659. Исправляет #71828. Исправляет #68749. #66143 (Dmitry Novik).
Исправлен некорректный подсчёт количества символов в PositionImpl::vectorVector. #71003 (思维).
Исправлено нарушение монотонности функции negate. В предыдущих версиях запрос select * from a where -x = -42;, где x является первичным ключом, мог возвращать некорректный результат. #71440 (Michael Kolupaev).
Операциям RESTORE для сущностей доступа требовалось больше прав, чем нужно, из‑за необработанных частичных отзывов прав. Этот PR исправляет проблему. Закрывает #71853. #71958 (pufit).
Устранена пауза после ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE. Используются корректные параметры планирования фоновых задач. #72024 (Aleksei Filatov).
Исправлена обработка пустого кортежа в arrayIntersect. Это исправляет #72578. #72581 (Amos Bird).
Исправлена обработка пустых кортежей в некоторых форматах ввода и вывода (например, Parquet, Arrow). #72616 (Michael Kolupaev).
Операторы GRANT SELECT/INSERT на уровне столбцов для баз данных и таблиц с подстановочными символами теперь приводят к ошибке. #72646 (Johann Gan).
Исправлена проблема, при которой пользователь не мог выполнить REVOKE ALL ON *.* из-за неявных прав в целевой сущности доступа. #72872 (pufit).
Устранено зависание при обработке отложенного пакета для асинхронного распределённого INSERT (например, из‑за ошибки No such file or directory). #72939 (Azat Khuzhin).
Исправлено форматирование положительных часовых поясов в скалярной функции formatDateTime. #73091 (ollidraese).
Исправлено отображение исходного порта при установке соединения через PROXYv1 при включённом auth_use_forwarded_address: ранее использовался порт прокси. Добавлена функция currentQueryID(). #73095 (Yakov Olkhovskiy).
Передавать настройки формата в NativeWriter из TCPHandler, чтобы такие параметры, как output_format_native_write_json_as_string, корректно применялись. #73179 (Pavel Kruglov).
Исправлен редкий сбой в обновляемом материализованном представлении во время завершения работы сервера. #73323 (Michael Kolupaev).
Спецификатор %f функции formatDateTime теперь всегда генерирует шесть знаков для долей секунды. Это делает поведение совместимым с функцией MySQL DATE_FORMAT. Предыдущее поведение можно восстановить с помощью настройки formatdatetime_f_prints_scale_number_of_digits = 1. #73324 (ollidraese).
Улучшено преобразование значений datetime во время анализа индексов за счёт применения поведения с насыщением для неявных преобразований Date в DateTime. Это устраняет возможные неточности анализа индексов, вызванные ограничениями диапазона datetime. Исправлена проблема #73307. Также исправлено явное преобразование toDateTime, когда date_time_overflow_behavior = 'ignore', что является значением по умолчанию. #73326 (Amos Bird).
Исправлена фильтрация по столбцу _etag при чтении из хранилища и табличной функции s3. #73353 (Anton Popov).
Исправлена ошибка Not-ready Set is passed as the second argument for function 'in', возникающая при использовании IN (subquery) в выражении JOIN ON со старым анализатором. #73382 (Nikolai Kochetov).
Исправлена подготовка к схлопыванию для столбцов Dynamic и JSON. Ранее в некоторых случаях новые типы могли быть вставлены в shared variant/shared data, даже если лимит по количеству типов/путей ещё не был достигнут. #73388 (Pavel Kruglov).
Проверять некорректные значения размеров при двоичном декодировании типов, чтобы избежать слишком больших выделений памяти. #73390 (Pavel Kruglov).
Исправлена логическая ошибка при чтении из кластера с единственной репликой при включённом режиме параллельных реплик. #73403 (Michael Kolupaev).
Исправлена работа ObjectStorageQueue с ZooKeeper и старым ClickHouse Keeper. #73420 (Antonio Andelic).
Реализовано исправление, необходимое для включения разбиения Hive по умолчанию. #73479 (Yarik Briukhovetskyi).
Исправлена гонка данных при создании индекса векторного сходства. #73517 (Antonio Andelic).
Исправлена ошибка сегментации (segfault), возникавшая, когда источник словаря содержал функцию с некорректными данными. #73535 (Yarik Briukhovetskyi).
Исправлена логика повторных попыток при неудачной вставке в хранилище S3(Azure)Queue. Закрывает #70951. #73546 (Kseniia Sumarokova).
Исправлена ошибка в функции tupleElement, которая могла возникать в некоторых случаях для кортежей с элементами типа LowCardinality при включённой настройке optimize_functions_to_subcolumns. #73548 (Anton Popov).
Исправлена ошибка, из-за которой parallel_replicas_for_non_replicated_merge_tree игнорировался в подзапросах для нереплицируемых таблиц. #73584 (Igor Nikonov).
Исправление исключения std::logical_error, выбрасываемого, когда задачу не удаётся запланировать. Обнаружено в стресс‑тестах. Пример трассировки стека: 2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:.#73629 (Alexander Gololobov).
Не интерпретировать запросы в EXPLAIN SYNTAX во избежание логических ошибок из‑за некорректного этапа обработки распределённых запросов. Исправляет #65205. #73634 (Dmitry Novik).
Исправлена потенциальная несогласованность данных в динамическом столбце. Исправлена потенциальная логическая ошибка Nested columns sizes are inconsistent with local_discriminators column size. #73644 (Pavel Kruglov).
Исправлена ошибка NOT_FOUND_COLUMN_IN_BLOCK в запросах с FINAL и SAMPLE. Исправлен некорректный результат в запросах SELECT с FINAL из CollapsingMergeTree и включены оптимизации FINAL. #73682 (Anton Popov).
Исправлен крах при использовании LIMIT BY COLUMNS. #73686 (Raúl Marín).
Исправлена ошибка, из‑за которой при принудительном использовании обычной проекции и запросе, полностью совпадающем с определением этой проекции, она не выбиралась, что приводило к ошибке. #73700 (Shichao Jin).
Исправлена ошибка десериализации структуры Dynamic/Object. Она могла приводить к исключениям CANNOT_READ_ALL_DATA. #73767 (Pavel Kruglov).
Пропуск файла metadata_version.txt при восстановлении частей из резервной копии. #73768 (Vitaly Baranov).
Исправлена редкая ошибка при сравнении типов map(), возникавшая из-за возможности создать Map без явных имён ('keys','values') для вложенного кортежа. #73878 (Yakov Olkhovskiy).
Игнорировать оконные функции при обработке предложения GROUP BY ALL. Исправляет #73501. #73916 (Dmitry Novik).
Обеспечена корректная передача настроек формата Native при клиент-серверном взаимодействии. #73924 (Pavel Kruglov).
Исправлены неявные привилегии (ранее работали как шаблон с подстановочными символами). #73932 (Azat Khuzhin).
Исправлено повышенное потребление памяти при создании вложенных Map. #73982 (Pavel Kruglov).
Исправление: устранена ошибка, из-за которой псевдоним мог не добавляться в проекцию, если на него ссылается другой псевдоним и он выбирается в обратном порядке. #74033 (Yakov Olkhovskiy).
Диск, использующий метаданные plain_rewritable, может быть общим для нескольких экземпляров сервера. Предполагается, что один экземпляр будет читать объект метаданных, пока другой его изменяет. Ошибки «объект не найден» игнорируются во время инициализации plain_rewritable с хранилищем Azure, аналогично поведению, реализованному для S3. #74059 (Julia Kartseva).
Исправлено поведение any и anyLast при работе с типами Enum и пустой таблицей. #74061 (Joanna Hulboj).
Исправлена проблема, возникающая, когда пользователь указывает именованные аргументы в движке таблицы Kafka. #74064 (Yarik Briukhovetskyi).
Исправлена проблема при изменении настроек хранилища S3Queue с префиксом "s3queue_" на вариант без него и обратно. #74075 (Kseniia Sumarokova).
Добавлена настройка allow_push_predicate_ast_for_distributed_subqueries. Она добавляет AST-основанный push-down предикатов для распределённых запросов с анализатором. Это временное решение, которое будет использоваться до тех пор, пока не будет добавлена поддержка распределённых запросов с сериализацией плана запроса. Закрывает #66878#69472#65638#68030#73718. #74085 (Nikolai Kochetov).
Исправлена проблема, когда после #73095 порт может присутствовать в поле forwarded_for, что приводит к невозможности разрешить имя хоста, включающее порт. #74116 (Yakov Olkhovskiy).
Исправлено некорректное форматирование конструкции ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...). #74126 (Han Fei).
Больше нельзя использовать движок таблицы Loop в CREATE TABLE. Ранее эта комбинация приводила к ошибкам сегментации (segfault). #74137 (Yarik Briukhovetskyi).
Исправлена уязвимость, предотвращающая SQL-инъекции в табличных функциях PostgreSQL и SQLite. #74144 (Pablo Marcos).
Исправлено падение при чтении подстолбца из сжатой таблицы движка Memory. Исправляет #74009. #74161 (Nikita Taranov).
Исправлен бесконечный цикл, возникавший при запросах к таблице system.detached_tables. #74190 (Konstantin Morozov).
Исправлена логическая ошибка в s3queue при пометке файла как ошибочного. #74216 (Kseniia Sumarokova).
Проверка на неподдерживаемые типы для некоторых хранилищ. #74218 (Pavel Kruglov).
Исправлено аварийное завершение при выполнении запроса INSERT INTO SELECT через интерфейс PostgreSQL на macOS (issue #72938). #74231 (Artem Yurov).
Исправлены настройки нативного копирования (allow_s3_native_copy/allow_azure_native_copy) при выполнении RESTORE из базовой резервной копии. #74286 (Azat Khuzhin).
Исправлена проблема, возникавшая, когда количество отсоединённых таблиц в базе данных было кратно значению max_block_size. #74289 (Konstantin Morozov).
Исправлено копирование через ObjectStorage (например, S3), когда учетные данные источника и приемника различаются. #74331 (Azat Khuzhin).
Исправлена проблема с неинициализированной переменной max_log_ptr в реплицируемой базе данных. #74336 (Konstantин Morозов).
Исправлено определение настройки "use the Rewrite method in the JSON API" для нативного копирования в GCS. #74338 (Azat Khuzhin).
Исправлен некорректный анализ проекций, когда в агрегатных проекциях используется count(nullable). Это исправляет #74495. Этот PR также добавляет дополнительное логирование, связанное с анализом проекций, чтобы прояснить, почему проекция используется или не используется. #74498 (Amos Bird).
Исправлен некорректный расчёт BackgroundMergesAndMutationsPoolSize (его значение было завышено в 2 раза). #74509 (alesapin).
Исправлено форматирование константных JSON‑литералов. Ранее это могло приводить к синтаксическим ошибкам при отправке запроса на другой сервер. #74533 (Pavel Kruglov).
Исправлена конкурентная очистка KeeperMap при создании таблицы. #74568 (Antonio Andelic).
Не удалять неиспользуемые столбцы проекции в подзапросах при наличии EXCEPT или INTERSECT для сохранения корректного результата запроса. Исправляет #73930. Исправляет #66465. #74577 (Dmitry Novik).
Исправлен некорректный запрос CREATE при использовании константных выражений разбиения с включёнными неявными проекциями. Это исправляет #74596. #74634 (Amos Bird).
Исправлены запросы INSERT SELECT между таблицами с колонками типа Tuple при включённой разрежённой сериализации. #74698 (Anton Popov).
Функция right работала некорректно при константном отрицательном смещении. #74701 (Daniil Ivanik).
Исправлена проблема, из-за которой вставка gzip-сжатых данных иногда завершалась неудачно из-за некорректной декомпрессии на стороне клиента. #74707 (siyuan).
Не оставлять соединение в некорректном состоянии после завершения INSERT с ошибкой. #74740 (Azat Khuzhin).
Избегайте повторного использования соединений, оставленных в промежуточном состоянии. #74749 (Azat Khuzhin).
Частичный отзыв прав при использовании шаблонных назначений (wildcard grants) мог привести к удалению большего количества привилегий, чем ожидалось. Закрывает #74263. #74751 (pufit).
Исправлено падение при разборе объявления типа JSON, когда имя типа указано не в верхнем регистре. #74784 (Pavel Kruglov).
Исправление в Keeper: устранена ошибка чтения записей журнала с диска. #74785 (Antonio Andelic).
Исправлена проверка прав для SYSTEM REFRESH/START/STOP VIEW: теперь не требуется иметь эти права на *.* для выполнения запроса к конкретному представлению, достаточно прав только на это представление. #74789 (Alexander Tokmakov).
Функция hasColumnInTable не учитывала столбцы-алиасы. Исправлена, чтобы корректно работать и со столбцами-алиасами. #74841 (Bharat Nallan).
Keeper: исправлена ошибка logical_error, возникавшая, когда соединение разрывалось до его установления. #74844 (Michael Kolupaev).
Исправлено поведение, из-за которого сервер не мог запуститься при наличии таблицы с использованием AzureBlobStorage. Таблицы загружаются без каких‑либо запросов к Azure. #74880 (Alexey Katsman).
Исправлены отсутствовавшие поля used_privileges и missing_privileges в query_log для операций BACKUP и RESTORE. #74887 (Alexey Katsman).
Исправлена ошибка FILE_DOESNT_EXIST, возникавшая при слиянии частей данных для таблицы с пустым столбцом в Azure Blob Storage. #74892 (Julia Kartseva).
Исправлено имя столбца проекции при объединении с временными таблицами, что закрывает #68872. #74897 (Vladimir Cherkasov).
Обновление krb‑тикета для HDFS при ошибке SASL во время запроса HDFS SELECT. #74930 (inv2004).
Исправлены запросы к базе данных Replicated в startup_scripts. #74942 (Azat Khuzhin).
Исправлена проблема с выражениями с псевдонимами типов в условии JOIN ON при использовании null-safe сравнения. #74970 (Vladimir Cherkasov).
Возвращает состояние части с «удаляется» обратно на «устаревшее», если операция удаления завершилась неудачно. #74985 (Sema Checherinda).
В предыдущих версиях при наличии скалярного подзапроса мы начинали записывать прогресс (накопленный при обработке подзапроса) во время инициализации формата данных, то есть до отправки HTTP-заголовков. Это приводило к потере HTTP-заголовков, таких как X-ClickHouse-QueryId и X-ClickHouse-Format, а также Content-Type. #74991 (Alexey Milovidov).
Исправлены запросы вида CREATE TABLE AS... для database_replicated_allow_replicated_engine_arguments=0. #75000 (Bharat Nallan).
Исправлена проблема, при которой после исключений во время INSERT соединение на стороне клиента оставалось в некорректном состоянии. #75030 (Azat Khuzhin).
Исправлено падение из-за необработанного исключения при репликации PSQL. #75062 (Azat Khuzhin).
SASL может завершить с ошибкой любой вызов RPC; исправление позволяет повторить вызов, если срок действия ticket krb5 истёк. #75063 (inv2004).
Исправлено использование индексов (первичных и вторичных) для столбцов Array, Map и Nullable(..) при включённой настройке optimize_function_to_subcolumns. Ранее индексы для этих столбцов могли быть проигнорированы. #75081 (Anton Popov).
Отключите flatten_nested при создании материализованных представлений с внутренними таблицами, поскольку такие развёрнутые столбцы будет невозможно использовать. #75085 (Christoph Wurm).
Исправлена некорректная интерпретация некоторых IPv6-адресов (например, ::ffff:1.1.1.1) в поле forwarded_for, что приводило к разрыву соединения с клиентом и возникновению исключения. #75133 (Yakov Olkhovskiy).
Исправлена обработка NULL-безопасного JOIN для типа данных LowCardinality, допускающего значения NULL. Ранее JOIN ON с NULL-безопасным сравнением, таким как IS NOT DISTINCT FROM, <=>, a IS NULL AND b IS NULL OR a == b, работал некорректно с колонками LowCardinality. #75143 (Vladimir Cherkasov).
Исправлена проблема с запросами, содержащими неиспользуемую интерполяцию, с помощью нового анализатора. #75173 (János Benjamin Antal).
Исправлена ошибка, приводившая к сбою CTE с INSERT. #75188 (Shichao Jin).
Исправление в Keeper: предотвращена запись в повреждённые журналы изменений во время отката логов. #75197 (Antonio Andelic).
Используйте BFloat16 в качестве супертипа там, где это уместно. Это закрывает: #74404. #75236 (Nikita Mikhaylov).
Исправлены неожиданные значения по умолчанию в результате объединения с any_join_distinct_right_table_keys и оператором OR в условии JOIN ON. #75262 (Vladimir Cherkasov).
Скрывать учетные данные движка таблиц azureblobstorage. #75319 (Garrett Thomas).
Исправлено поведение, при котором ClickHouse мог ошибочно выполнять проталкивание условия фильтрации (filter pushdown) во внешние базы данных, такие как PostgreSQL, MySQL или SQLite. Закрывает: #71423. #75320 (Nikita Mikhaylov).
Исправлено падение в кэше схем Protobuf, которое могло происходить при выводе данных в формате Protobuf и параллельном выполнении запроса SYSTEM DROP FORMAT SCHEMA CACHE. #75357 (Pavel Kruglov).
Исправлена возможная логическая ошибка или проблема с неинициализированной памятью при проталкивании фильтра из HAVING на нижний уровень при работе с параллельными репликами. #75363 (Vladimir Cherkasov).
Скрыта конфиденциальная информация в табличных функциях и движках таблиц icebergS3 и icebergAzure. #75378 (Kseniia Sumarokova).
Функция TRIM с вычисляемыми пустыми символами обрезки теперь обрабатывается корректно. Пример: SELECT TRIM(LEADING concat('') FROM 'foo') (issue #69922). #75399 (Manish Gill).
Исправлена возможная ошибка Elements ... and ... of Nested data structure ... (Array columns) have different array sizes при использовании JSON-подстолбцов типа Array в JOIN над распределёнными таблицами. #75512 (Pavel Kruglov).
Исправлено взаимодействие между allow_feature_tier и параметром совместимости MergeTree. #75635 (Raúl Marín).
Исправлено некорректное значение processed_rows в system.s3queue_log при повторной обработке файла. #75666 (Kseniia Sumarokova).
Учитывать параметр materialized_views_ignore_errors, когда материализованное представление записывает в движок URL и возникает проблема с подключением. #75679 (Christoph Wurm).
Исправлены редкие падения при чтении из таблицы MergeTree после нескольких асинхронных запросов RENAME (с alter_sync = 0) между столбцами с разными типами. #75693 (Anton Popov).
Исправлена ошибка Block structure mismatch in QueryPipeline stream, возникавшая в некоторых запросах с UNION ALL. #75715 (Nikolai Kochetov).
Перестраивает проекцию при ALTER MODIFY столбца её первичного ключа. Ранее это могло приводить к ошибкам CANNOT_READ_ALL_DATA при выполнении SELECT-запросов после ALTER MODIFY столбца, входящего в первичный ключ проекции. #75720 (Pavel Kruglov).
Исправлен некорректный результат ARRAY JOIN для скалярных подзапросов (с анализатором). #75732 (Nikolai Kochetov).
Исправлена ошибка разыменования нулевого указателя в DistinctSortedStreamTransform. #75734 (Nikita Taranov).
Исправлено поведение настройки allow_suspicious_ttl_expressions. #75771 (Aleksei Filatov).
Исправлено чтение из неинициализированной памяти в функции translate. Это закрывает #75592. #75794 (Alexey Milovidov).
Распространять настройки формата на JSON в виде строкового форматирования в формате Native. #75832 (Pavel Kruglov).
В истории изменений настроек зафиксировано включение по умолчанию алгоритма соединения на основе параллельного хеша в версии v24.12. Это означает, что ClickHouse продолжит выполнять соединения, используя непараллельный хеш, если настроен уровень совместимости ниже v24.12. #75870 (Robert Schulze).
Исправлена ошибка, из-за которой таблицы с неявно добавленными индексами min-max невозможно было скопировать в новую таблицу (issue #75677). #75877 (Smita Kulkarni).
clickhouse-library-bridge позволяет открывать произвольные библиотеки из файловой системы, что делает его безопасным для запуска лишь в изолированной среде. Чтобы предотвратить уязвимость при запуске вместе с clickhouse-server, мы ограничим пути к библиотекам расположением, указанным в конфигурации. Эта уязвимость была обнаружена в рамках ClickHouse Bug Bounty ProgramАрсением Дугиным. #75954 (Alexey Milovidov).
Мы использовали JSON-сериализацию для некоторых метаданных, что оказалось ошибкой, поскольку JSON не поддерживает бинарные данные внутри строковых литералов, включая нулевые байты. SQL-запросы могут содержать бинарные данные и недопустимый UTF-8, поэтому нам необходимо поддерживать это и в наших файлах метаданных. В то же время форматы ClickHouse JSONEachRow и подобные обходят это ограничение, отклоняясь от стандарта JSON в пользу идеального round-trip-преобразования для бинарных данных. Обоснование см. здесь: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. Решение состоит в том, чтобы привести библиотеку Poco::JSON в соответствие с реализацией сериализации формата JSON в ClickHouse. Это закрывает #73668. #75963 (Alexey Milovidov).
Исправлена ошибка Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED), возникавшая при выполнении DETACH PART. #76039 (Aleksei Filatov).
Исправлено присоединение таблиц MergeTree с автоматически создаваемыми индексами (add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns). #76139 (Azat Khuzhin).
Исправлена проблема, из-за которой трассировки стека из родительских потоков задания (настройка enable_job_stack_trace) не выводились. Также исправлена проблема, при которой настройка enable_job_stack_trace некорректно передавалась в потоки, из‑за чего содержимое трассировки стека не всегда соответствовало этой настройке. #76191 (Yakov Olkhovskiy).
Исправлена работа функции reinterpretAs с типом FixedString на архитектурах с порядком байт big-endian. #76253 (Azat Khuzhin).
Исправлены различные ошибки из-за гонок между UUID и именами таблиц (в том числе устранена гонка между RENAME и RESTART REPLICA: в случае одновременного выполнения RENAME с SYSTEM RESTART REPLICA вы можете в итоге перезапустить не ту реплику и/или оставить одну из таблиц в состоянии Table X is being restarted). #76308 (Azat Khuzhin).
Добавлены тесты производительности для обработки null с коротким замыканием и исправлены ошибки. #76708 (李扬).
Сбрасывать выходные буферы записи перед их завершением. Исправлена ошибка LOGICAL_ERROR, возникавшая при завершении некоторых форматов вывода, например JSONEachRowWithProgressRowOutputFormat. #76726 (Antonio Andelic).
Добавлена поддержка бинарного UUID MongoDB (#74452) - Исправлено проталкивание условия WHERE в MongoDB при использовании табличной функции (#72210) - Изменено сопоставление типов MongoDB - ClickHouse таким образом, что бинарный UUID MongoDB теперь может интерпретироваться только как UUID ClickHouse. Это должно избежать неоднозначностей и неожиданных эффектов в будущем. - Исправлено сопоставление OID с сохранением обратной совместимости. #76762 (Kirill Nikiforov).
Исправлено возможное аварийное завершение из-за некорректного отката JSON-столбца при ошибке во время асинхронных вставок. #76908 (Pavel Kruglov).
Ранее multi_if мог возвращать столбцы разных типов на этапе планирования и при основном выполнении. Это с точки зрения C++ приводило к неопределённому поведению кода. #76914 (Nikita Taranov).
Исправлена некорректная сериализация константных nullable-ключей в MergeTree. Это устраняет проблему #76939. #76985 (Amos Bird).
Исправлена ошибка, связанная с JSON с вариантным подстолбцом, путем добавления проверки для пропуска эфемерных подстолбцов при проверке согласованности части. #72187. #77034 (Smita Kulkarni).
Исправлено аварийное завершение при разборе шаблона формата Values при несовпадении типов. #77071 (Pavel Kruglov).
Запрещено создавать таблицу EmbeddedRocksDB с подколонкой в первичном ключе. Ранее такую таблицу можно было создать, но запросы SELECT завершались с ошибкой. #77074 (Pavel Kruglov).
Исправлено некорректное сравнение в распределённых запросах, поскольку проталкивание предикатов на удалённые узлы не учитывает типы литералов. #77093 (Duc Canh Le).
Исправлен сбой при создании таблицы Kafka при возникновении исключения. #77121 (Pavel Kruglov).
Добавлена поддержка нового формата JSON и подколонок в движках Kafka и RabbitMQ. #77122 (Pavel Kruglov).
Исправлено чтение подстолбца 'null' в функции getSubcolumn. #77163 (Pavel Kruglov).
Исправлена некорректная работа пропускающих индексов при использовании выражений с литералами в анализаторе, а также удалены тривиальные приведения типов во время анализа индексов. #77229 (Pavel Kruglov).
Исправлена работа индекса блум‑фильтра с Array и неподдерживаемыми функциями. #77271 (Pavel Kruglov).
Ограничение на количество таблиц следует проверять только при выполнении исходного запроса CREATE. #77274 (Nikolay Degterinsky).
SELECT toBFloat16(-0.0) == toBFloat16(0.0) теперь корректно возвращает значение true (вместо false). Это делает поведение единообразным с Float32 и Float64. #77290 (Shankar Iyer).
Исправлено возможное некорректное обращение к неинициализированной переменной key_index, которое может приводить к сбою в отладочных сборках (это обращение не приводит к проблемам в релизных сборках, так как последующий код, скорее всего, выбросит ошибку). ### Запись в документации об изменениях, видимых пользователю. #77305 (wxybear).
Исправлено сравнение между кортежами с элементами типа Nullable и строками. Например, до этого изменения сравнение между Tuple (1, null) и String '(1,null)' приводило к ошибке. Другой пример — сравнение между Tuple (1, a), где a — столбец типа Nullable, и String '(1, 2)'. Это изменение устраняет эти проблемы. #77323 (Alexey Katsman).
Исправлена ошибка, из-за которой параметр запроса close_session не действовал, и именованные сессии закрывались только по истечении session_timeout. #77336 (Alexey Katsman).
Исправление: WITH FILL может завершаться с ошибкой NOT_FOUND_COLUMN_IN_BLOCK, когда планировщик удаляет столбец сортировки. Похожая проблема была связана с несогласованным DAG, вычисляемым для выражения INTERPOLATE. #77343 (Yakov Olkhovskiy).
Исправлено получение сообщений от сервера NATS без привязанного MV. #77392 (Dmitry Novikov).
Исправлена логическая ошибка при чтении из пустого FileLog с помощью табличной функции merge, закрыт #75575. #77441 (Vladimir Cherkasov).
Исправлены несколько ошибок LOGICAL_ERROR, возникавших при установке псевдонимов для недопустимых узлов AST. #77445 (Raúl Marín).
В реализации кеша файловой системы исправлена обработка ошибок, возникающих при записи сегмента файла. #77471 (Kseniia Sumarokova).
DatabaseIceberg теперь использует корректный файл метаданных, предоставляемый каталогом. Закрывает #75187. #77486 (Kseniia Sumarokova).
При динамической сериализации из shared variant использовать параметры формата по умолчанию. #77572 (Pavel Kruglov).
Откат изменения 'Avoid toAST() in execution of scalar subqueries'. #77584 (Raúl Marín).
Исправлена проверка существования пути к данным таблицы на локальном диске. #77608 (Tuan Pham Anh).
Кэш запросов теперь считает все UDF недетерминированными. Соответственно, результаты запросов с UDF больше не кэшируются. Ранее пользователи могли определять недетерминированные UDF, результаты которых ошибочно кэшировались (проблема #77553). #77633 (Jimmy Aguilar Mena).
Исправлена отправка константных значений на удалённый сервер для некоторых типов. #77634 (Pavel Kruglov).
Исправлена работа system.filesystem_cache_log, который работал только при включённой настройке enable_filesystem_cache_log. #77650 (Kseniia Sumarokova).
Исправлена логическая ошибка при вызове функции defaultRoles() внутри проекции. Продолжение #76627. #77667 (pufit).
Исправлена ошибка, приводившая к падению из-за истёкшего контекста в StorageS3(Azure)Queue. #77720 (Kseniia Sumarokova).
Использование второго аргумента типа Nullable в функции arrayResize теперь запрещено. Ранее при использовании Nullable в качестве второго аргумента это могло приводить как к ошибкам, так и к неверным результатам. (issue #48398). #77724 (Manish Gill).
Скрыты учетные данные в движках таблиц RabbitMQ, Nats, Redis и AzureQueue. #77755 (Kseniia Sumarokova).
Исправлено неопределённое поведение при сравнении NaN в ArgMin/ArgMax. #77756 (Raúl Marín).
Регулярно проверяйте, были ли слияния и мутации отменены, даже если операция не создает блоков для записи. #77766 (János Benjamin Antal).
Исправлено возможное аварийное завершение работы при возникновении ошибки NOT_FOUND_COLUMN_IN_BLOCK. #77854 (Vladimir Cherkasov).
Исправлена ошибка, приводившая к аварийному завершению работы StorageSystemObjectStorageQueueSettings при заполнении данных. #77878 (Bharat Nallan).
Отключён нечёткий поиск по истории в SSH-сервере (так как для этого требуется skim). #78002 (Azat Khuzhin).
Исправлена ошибка, из-за которой запрос векторного поиска по столбцу без индекса возвращал некорректные результаты, если в таблице имелся другой векторный столбец с заданным индексом векторного сходства. (Issue #77978). #78069 (Shankar Iyer).
Исправлено приглашение The requested output format {} is binary... Do you want to output it anyway? [y/N]. #78095 (Azat Khuzhin).
Исправлена ошибка при использовании функции toStartOfInterval с нулевым аргументом origin. #78096 (Yarik Briukhovetskyi).
Запрещено указывать в HTTP-интерфейсе параметр запроса session_id с пустым значением. #78098 (Alexey Katsman).
Исправлено переопределение метаданных в базе данных Replicated, которое могло произойти, если запрос RENAME выполнялся сразу после запроса ALTER. #78107 (Nikolay Degterinsky).
Во встроенном SSH‑клиенте не пытайтесь создавать history_file. #78112 (Azat Khuzhin).
Исправлена проблема, из-за которой в system.detached_tables отображалась некорректная информация после выполнения запросов RENAME DATABASE или DROP TABLE. #78126 (Nikolay Degterinsky).
Исправлена проверка на избыточное количество таблиц для DatabaseReplicated после https://github.com/ClickHouse/ClickHouse/pull/77274. Также теперь проверка выполняется до создания хранилища, чтобы избежать появления неучтённых узлов в ZooKeeper при использовании RMT или KeeperMap. #78127 (Nikolay Degterinsky).
Исправлено возможное аварийное завершение работы из-за одновременной инициализации метаданных S3Queue. #78131 (Azat Khuzhin).
Функции groupArray* теперь выдают ошибку BAD_ARGUMENTS для значения аргумента max_size, равного 0 и имеющего тип Int (как это уже делается для значения типа UInt), вместо попытки выполнить операцию с ним. #78140 (Eduard Karacharov).
Исправлен сбой в recoverLostReplica, возникавший, если локальная таблица удалялась до её отсоединения. #78173 (Raúl Marín).
Исправлен столбец "alterable" в system.s3_queue_settings, который всегда возвращал false. #78187 (Kseniia Sumarokova).
Подпись доступа Azure теперь маскируется, чтобы она не была видна пользователю или в логах. #78189 (Kseniia Sumarokova).
Исправлена предварительная выборка подпотоков с префиксами в Wide-частях. #78205 (Pavel Kruglov).
Исправлены падения и некорректный результат функции mapFromArrays в случае массива ключей типа LowCardinality(Nullable). #78240 (Eduard Karacharov).
Не планировать задачу RefreshMV, если у реплики параметр disable_insertion_and_mutation имеет значение true. Задача представляет собой операцию вставки, которая завершится ошибкой, если disable_insertion_and_mutation равно true. #78277 (Xu Jia).
Модификатор FINAL мог пропадать для таблицы с движком Distributed. #78428 (Yakov Olkhovskiy).
Bitmapmin возвращает uint32_max, когда bitmap пуст (empty, uint64_max при типе входных данных >= 8 бит), что соответствует поведению пустого roaring_bitmap при вызове minimum(). #78444 (wxybear).
Отменено изменение "Apply preserve_most attribute at some places in code", поскольку оно может приводить к сбоям. #78449 (Azat Khuzhin).
Используйте столбцы вставки данных для автоматического определения схемы INFILE. #78490 (Pervakov Grigorii).
Отключена параллелизация обработки запроса непосредственно после чтения секции FROM, если включён distributed_aggregation_memory_efficient, так как это может приводить к логической ошибке. Закрывает #76934. #78500 (flynn).
Теперь гарантируется как минимум один поток для чтения на случай, если после применения настройки max_streams_to_max_threads_ratio планируемое количество потоков оказывается равным нулю. #78505 (Eduard Karacharov).
Исправлена логическая ошибка в хранилище S3Queue: «Cannot unregister: table uuid is not registered». Закрывает #78285. #78541 (Kseniia Sumarokova).
ClickHouse теперь может определять свой cgroup v2 в системах с одновременным использованием cgroup v1 и v2. #78566 (Grigory Korolev).
Функции таблиц кластера ObjectStorage выдавали ошибку при использовании совместно с настройками уровня таблицы. #78587 (Daniil Ivanik).
Более строгие проверки транзакций не поддерживаются в ReplicatedMergeTree при операциях INSERT. #78633 (Azat Khuzhin).
Применять настройки запроса при операции ATTACH. #78637 (Raúl Marín).
Исправлена ошибка, приводившая к сбою при указании недопустимого пути в iceberg_metadata_file_path. #78688 (alesapin).
В движке таблиц DeltaLake с реализацией на основе delta-kernel исправлен случай, когда схема чтения отличается от схемы таблицы и одновременно используются столбцы партиционирования, что приводило к ошибке «column not found». #78690 (Kseniia Sumarokova).
Это обновление исправляет ошибку, из-за которой новый именованный сеанс по ошибке завершался в назначенное время завершения предыдущего сеанса, если оба сеанса имели одинаковое имя, а новый был создан до истечения тайм-аута старого. #78698 (Alexey Katsman).
Не блокировать остановку таблицы во время выполнения CHECK TABLE. #78782 (Raúl Marín).
Исправление Keeper: исправлен подсчёт количества эфемерных узлов во всех случаях. #78799 (Antonio Andelic).
Исправлено некорректное приведение типов в StorageDistributed при использовании любых табличных функций, кроме view(). Закрывает #78464. #78828 (Konstantin Bogdanov).
Словари типа ssd_cache теперь отклоняют нулевые или отрицательные значения параметров block_size и write_buffer_size (задача #78314). #78854 (Elmi Ahmadov).
Исправлено падение REFRESHABLE MV при выполнении ALTER после некорректного завершения работы. #78858 (Azat Khuzhin).
Восстановлены удалённые интеграционные тесты для nats и исправлены ошибки. - Исправлены некоторые условия гонки в nats engine - Устранена потеря данных при потоковой передаче в nats в случае потери соединения - Устранено зависание при получении последнего блока данных после завершения потоковой передачи из nats - Параметр nats_max_reconnect объявлен устаревшим и больше не оказывает эффекта, повторные подключения теперь выполняются постоянно с тайм-аутом ожидания nats_reconnect_wait. #69772 (Dmitry Novikov).
Исправлена проблема, из-за которой не удавалось сгенерировать asm-файлы OpenSSL из contrib. #72622 (RinChanNOW).
Потенциально несовместимое изменение: улучшение, задающее ещё более строгие значения по умолчанию. Текущие значения по умолчанию уже безопасны. Пользователь должен явно указать опцию, чтобы опубликовать порты. Но когда у пользователя default не установлен пароль через переменную окружения CLICKHOUSE_PASSWORD и/или имя пользователя не изменено переменной окружения CLICKHOUSE_USER, доступ к нему должен быть возможен только с локальной системы как дополнительный уровень защиты. #75259 (Mikhail f. Shiryaev).
Интеграционные тесты имеют таймаут в 1 час для одного пакета параллельно выполняемых тестов. При достижении этого таймаута pytest принудительно завершается, и часть логов теряется. Внутренний таймаут pytest установлен на 55 минут, чтобы успеть вывести результаты сессии и не вызвать внешний таймаут. Закрывает #75532. #75533 (Ilya Yatsishin).
Все действия, связанные с clickhouse-server, вынесены в функцию и выполняются только при запуске стандартного бинарника в entrypoint.sh. Давно назревшее улучшение было предложено в #50724. В clickhouse-extract-from-config добавлен флаг --users для получения значений из users.xml. #75643 (Mikhail f. Shiryaev).
Для стресс‑тестов, если сервер не завершил работу, пока мы собирали дампы стека через gdb, добавлено дополнительное время ожидания, чтобы сделать обнаружение Possible deadlock on shutdown (see gdb.log) менее шумным. Задержка будет добавляться только в случаях, когда тест завершился неуспешно. #75668 (Ilya Yatsishin).
Восстановлены удалённые интеграционные тесты nats и исправлены ошибки. - исправлены некоторые условия гонки в движке nats - устранена потеря данных при потоковой передаче в nats в случае потери соединения - устранено зависание при получении последнего фрагмента данных при завершении потоковой передачи из nats - nats_max_reconnect объявлен устаревшим и больше не влияет на поведение, переподключение выполняется непрерывно с таймаутом nats_reconnect_wait. #75850 (Dmitry Novikov).
Включены ICU и gRPC при кросс-компиляции под Darwin. #75922 (Raúl Marín).
Исправлено разделение вывода теста из‑за sleep во время завершения группы процессов. #76090 (Mikhail f. Shiryaev).
Не собирайте логи docker-compose по завершении выполнения, так как скрипт часто принудительно прерывается. Вместо этого собирайте их в фоновом режиме. #76140 (Mikhail f. Shiryaev).