Формат вывода 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).
Добавлена возможность автоматического выполнения merge-операций очистки целых партиций по истечении настраиваемого таймаута с помощью новой настройки 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 - устранена потеря данных при потоковой передаче в nats в случае потери соединения - исправлено зависание при получении последнего фрагмента данных при завершении потоковой передачи из nats - параметр nats_max_reconnect устарел и больше ни на что не влияет, переподключение теперь выполняется постоянно с таймаутом nats_reconnect_wait. #69772 (Dmitry Novikov).
Исправлена проблема, из-за которой не удавалось сгенерировать asm-файлы contrib OpenSSL. #72622 (RinChanNOW).
Потенциально несовместимое изменение: улучшение, задающее ещё более строгие значения по умолчанию. Текущие значения по умолчанию уже безопасны. Пользователь должен явно указать опцию публикации портов. Но когда пользователю default не задан пароль через CLICKHOUSE_PASSWORD и/или имя пользователя не изменено с помощью переменной окружения CLICKHOUSE_USER, этот пользователь должен быть доступен только с локальной системы как дополнительный уровень защиты. #75259 (Mikhail f. Shiryaev).
Интеграционные тесты имеют таймаут в 1 час для одного пакета параллельно выполняющихся тестов. При достижении этого таймаута pytest принудительно завершается без части логов. Внутренний таймаут pytest установлен на 55 минут, чтобы успеть вывести результаты сессии и не спровоцировать внешний сигнал таймаута. Закрывает #75532. #75533 (Ilya Yatsishin).
Все действия, связанные с clickhouse-server, вынесены в функцию и выполняются только при запуске стандартного бинарного файла в entrypoint.sh. Давно назревшее улучшение было предложено в #50724. Добавлен флаг --users к clickhouse-extract-from-config для получения значений из users.xml. #75643 (Mikhail f. Shiryaev).
Для стресс-тестов, если сервер не завершился к моменту завершения сбора stack trace'ов через 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).