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

v24.2 Changelog

ClickHouse release tag: 24.2.2.15987

Backward Incompatible Change

  • Проверка подозрительных/экспериментальных типов в вложенных типах. Ранее мы не проверяли такие типы (кроме JSON) во вложенных типах, таких как Array/Tuple/Map. #59385 (Kruglov Pavel).
  • Условия сортировки ORDER BY ALL (введенные в v23.12) заменены на ORDER BY *. Предыдущий синтаксис был слишком подвержен ошибкам для таблиц с колонкой all. #59450 (Robert Schulze).
  • Добавлена проверка на количество потоков и размеры блоков. #60138 (Raúl Marín).
  • Отклонять входящие запросы INSERT в случае, если настройки уровня запроса async_insert и deduplicate_blocks_in_dependent_materialized_views одновременно включены. Это поведение контролируется настройкой throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert и включено по умолчанию. Это продолжение #59699, необходимо для разблокировки #59915. #60888 (Nikita Mikhaylov).
  • Утилита clickhouse-copier перемещена в отдельный репозиторий на GitHub: https://github.com/ClickHouse/copier. Она больше не включена в пакет, но все еще доступна как отдельная загрузка. Это закрывает: #60734 Это закрывает: #60540 Это закрывает: #60250 Это закрывает: #52917 Это закрывает: #51140 Это закрывает: #47517 Это закрывает: #47189 Это закрывает: #46598 Это закрывает: #40257 Это закрывает: #36504 Это закрывает: #35485 Это закрывает: #33702 Это закрывает: #26702 ### Запись документации для изменений, касающихся пользователей. #61058 (Nikita Mikhaylov).
  • Чтобы повысить совместимость с MySQL, функция locate теперь принимает аргументы (needle, haystack[, start_pos]) по умолчанию. Предыдущее поведение (haystack, needle, [, start_pos]) можно восстановить, установив function_locate_has_mysql_compatible_argument_order = 0. #61092 (Robert Schulze).
  • Устаревшие части данных в оперативной памяти были объявлены устаревшими с версии 23.5 и не поддерживались с версии 23.10. Теперь оставшийся код удален. Это продолжение #55186 и #45409. Вероятно, вы не использовали части данных в оперативной памяти, так как они были доступны только до версии 23.5 и только при ручном включении соответствующих НАСТРОЕК для таблицы MergeTree. Чтобы проверить, есть ли у вас части данных в оперативной памяти, выполните следующий запрос: SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type. Чтобы отключить использование частей данных в оперативной памяти, выполните ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT. Перед обновлением с более ранних релизов ClickHouse сначала убедитесь, что у вас нет частей данных в оперативной памяти. Если они есть, сначала отключите их, затем дождитесь, пока не останется частей данных в оперативной памяти, и продолжите обновление. #61127 (Alexey Milovidov).
  • Запретить SimpleAggregateFunction в ORDER BY таблиц MergeTree (так же, как AggregateFunction запрещен, но они запрещены, потому что их нельзя сравнить) по умолчанию (используйте allow_suspicious_primary_key, чтобы разрешить их). #61399 (Azat Khuzhin).
  • ClickHouse разрешает произвольные бинарные данные в типе данных String, который обычно является UTF-8. Parquet/ORC/Arrow Strings поддерживают только UTF-8. Поэтому вы можете выбрать, какой тип данных Arrow использовать для типа данных ClickHouse String - String или Binary. Это контролируется настройками output_format_parquet_string_as_string, output_format_orc_string_as_string, output_format_arrow_string_as_string. Хотя Binary был бы более корректным и совместимым, использование String по умолчанию будет соответствовать ожиданиям пользователей в большинстве случаев. Parquet/ORC/Arrow поддерживают множество методов сжатия, включая lz4 и zstd. ClickHouse поддерживает все методы сжатия. Некоторые устаревшие инструменты не поддерживают более быстрый метод сжатия lz4, поэтому мы устанавливаем по умолчанию zstd. Это контролируется настройками output_format_parquet_compression_method, output_format_orc_compression_method и output_format_arrow_compression_method. Мы изменили значение по умолчанию на zstd для Parquet и ORC, но не для Arrow (это подчеркивается для низкоуровневого использования). #61817 (Alexey Milovidov).
  • Исправление проблемы безопасности представления, которое позволяло пользователю вставлять данные в таблицу без необходимых прав на это. Исправление проверяет, есть ли у пользователя разрешение на вставку не только в материализованное представление, но также и во все сопутствующие таблицы. Это означает, что некоторые запросы, которые ранее работали, теперь могут завершиться с ошибкой "Недостаточно прав". Для решения этой проблемы в релизе вводится новая функция SQL-безопасности для представлений https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)

New Feature

  • Режим поддержки Topk/topkweighed, который возвращает количество значений и его ошибку. #54508 (UnamedRus).
  • Добавлен новый синтаксис, который позволяет указать пользователя-определителя в View/Materialized View. Это позволяет выполнять выборки/вставки из представлений без явного разрешения на сопутствующие таблицы. #54901 (pufit).
  • Реализована автоматическая конверсия таблиц merge tree различных видов в реплицированный движок. Создайте пустой файл convert_to_replicated в каталоге данных таблицы (/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/), и эта таблица будет автоматически конвертирована при следующем запуске сервера. #57798 (Kirill).
  • Добавлена табличная функция mergeTreeIndex. Она представляет собой содержимое индекса и файлов меток таблиц MergeTree. Она может использоваться для интроспекции. Синтаксис: mergeTreeIndex(database, table, [with_marks = true]), где database.table - это существующая таблица с движком MergeTree. #58140 (Anton Popov).
  • Попробуйте автоматически определить формат файла во время вывода схемы, если он неизвестен в движках file/s3/hdfs/url/azureBlobStorage. Закрывает #50576. #59092 (Kruglov Pavel).
  • Добавьте функцию generate_series как табличную функцию. Эта функция генерирует таблицу с арифметической прогрессией с натуральными числами. #59390 (divanik).
  • Добавлен запрос ALTER TABLE table FORGET PARTITION partition, который удаляет узлы ZooKeeper, связанные с пустым разделом. #59507 (Sergei Trifonov).
  • Поддержка чтения и записи резервных копий в виде архивов tar. #59535 (josh-hildred).
  • Предоставляет новую агрегатную функцию ‘groupArrayIntersect’. Продолжение: #49862. #59598 (Yarik Briukhovetskyi).
  • Реализована таблица system.dns_cache, которая может быть полезна для отладки проблем с DNS. #59856 (Kirill Nikiforov).
  • Реализована поддержка бакетов S3Express. #59965 (Nikita Taranov).
  • Кодек LZ4HC получит новый уровень 2, который быстрее, чем предыдущий минимальный уровень 3, за счет меньшего сжатия. В предыдущих версиях LZ4HC(2) и ниже были такими же, как LZ4HC(3). Автор: Cyan4973. #60090 (Alexey Milovidov).
  • Реализована таблица system.dns_cache, которая может быть полезна для отладки проблем с DNS. Новая серверная настройка dns_cache_max_size. #60257 (Kirill Nikiforov).
  • Добавлена функция toMillisecond, которая возвращает компонент миллисекунд для значений типаDateTime или DateTime64. #60281 (Shaun Struwig).
  • Поддержка однозначного аргумента для табличной функции merge, как merge(['db_name', ] 'tables_regexp'). #60372 (豪肥肥).
  • Сделать все имена форматов нечувствительными к регистру, такими как Tsv, или TSV, или tsv, или даже rowbinary. #60420 (豪肥肥).
  • Добавлен новый синтаксис, который позволяет указать пользователя-определителя в View/Materialized View. Это позволяет выполнять выборки/вставки из представлений без явного разрешения на сопутствующие таблицы. #60439 (pufit).
  • Добавьте четыре свойства к StorageMemory (память-движок) min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep и max_rows_to_keep - Добавьте тесты, чтобы отразить новые изменения - Обновите документацию memory.md - Добавьте свойство context таблицы к MemorySink, чтобы обеспечить доступ к пределам параметров таблицы. #60612 (Jake Bamrah).
  • Добавлена функция toMillisecond, которая возвращает компонент миллисекунд для значений типаDateTime или DateTime64. #60649 (Robert Schulze).
  • Отдельные лимиты на количество ожидающих и выполняемых запросов. Добавлена новая серверная настройка max_waiting_queries, которая ограничивает количество запросов, ожидающих из-за async_load_databases. Существующие лимиты на количество выполняемых запросов больше не учитывают ожидающие запросы. #61053 (Sergei Trifonov).
  • Добавить поддержку ATTACH PARTITION ALL. #61107 (Kirill Nikiforov).

Performance Improvement

  • Устранение агрегаторов min/max/any/anyLast для ключей GROUP BY в разделе SELECT. #52230 (JackyWoo).
  • Улучшение производительности сериализованного метода агрегации при задействовании нескольких [nullable] колонок. Это общая версия #51399, которая не ущербна с точки зрения абстрактной целостности. #55809 (Amos Bird).
  • Ленивая сборка выходных данных соединения для повышения производительности ALL join. #58278 (LiuNeng).
  • Улучшения агрегатных функций ArgMin / ArgMax / any / anyLast / anyHeavy, а также запросов ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1. #58640 (Raúl Marín).
  • Оптимизация производительности sum/avg условно для типов bigint и big decimal путем уменьшения пропуска веток. #59504 (李扬).
  • Улучшение производительности SELECT с активными мутациями. #59531 (Azat Khuzhin).
  • Тривиальная оптимизация по фильтру колонок. Избегайте тех фильтров колонок, у которых основной тип данных не число, отфильтровываемого с result_size_hint = -1. Пиковая память может быть уменьшена до 44% изначальной в некоторых случаях. #59698 (李扬).
  • Первичный ключ будет использовать меньше объема памяти. #60049 (Alexey Milovidov).
  • Улучшение использования памяти для первичного ключа и некоторых других операций. #60050 (Alexey Milovidov).
  • Первичные ключи таблиц будут загружаться в память лениво при первом доступе. Это контролируется новой настройкой MergeTree primary_key_lazy_load, которая включена по умолчанию. Это дает несколько преимуществ: - она не будет загружена для таблиц, которые не используются; - если недостаточно памяти, исключение будет выброшено при первом использовании вместо на старте сервера. Это дает несколько недостатков: - задержка загрузки первичного ключа будет оплачена при первом запросе, а не до принятия соединений; это теоретически может вызвать проблему "громового стада". Это закрывает #11188. #60093 (Alexey Milovidov).
  • Векторизованная функция dotProduct, которая полезна для векторного поиска. #60202 (Robert Schulze).
  • Если первичный ключ таблицы содержит в основном бесполезные колонки, не сохраняйте их в памяти. Это контролируется новой настройкой primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns со значением 0.9 по умолчанию, что означает: для составного первичного ключа, если колонка изменяет свое значение как минимум в 0.9 всех случаев, следующие колонки после нее не будут загружены. #60255 (Alexey Milovidov).
  • Выполните функцию multiIf колоннами, когда тип результата - число. #60384 (李扬).
  • Как показано на рисунке 1, замена "&&" на "&" может сгенерировать код SIMD. image Рисунок 1. Код, скомпилированный из '&&' (слева) и '&' (справа). #60498 (Zhiguo Zhou).
  • Ускорены (почти в 2 раза) мьютексы (были медленнее из-за ThreadFuzzer). #60823 (Azat Khuzhin).
  • Переместить слив соединений из подготовки в работу и дренировать несколько соединений параллельно. #60845 (lizhuoyu5).
  • Оптимизировать insertManyFrom для nullable number или nullable string. #60846 (李扬).
  • Оптимизирована функция dotProduct, чтобы избежать ненужных и дорогостоящих копий памяти. #60928 (Robert Schulze).
  • Операции с файловым кэшем будут меньше страдать от конфликтов блокировок. #61066 (Alexey Milovidov).
  • Оптимизируйте ColumnString::replicate и предотвратите оптимизацию memcpySmallAllowReadWriteOverflow15Impl до встроенной memcpy. Закрыть #61074. ColumnString::replicate ускорена в 2.46 раз на x86-64. #61075 (李扬).
  • 30x быстрее вывод для 256-битных целых чисел. #61100 (Raúl Marín).
  • Если запрос с синтаксической ошибкой содержал сопоставитель COLUMNS с регулярным выражением, регулярное выражение компилировалось каждый раз во время обратного отслеживания парсера, а не компилировалось один раз. Это была основная ошибка. Скомпилированный regexp помещался в AST. Но буква A в AST означает "абстрактный", что означает, что он не должен содержать громоздких объектов. Части AST могут создаваться и уничтожаться во время парсинга, включая большое количество обратных отслеживаний. Это приводит к медлительности на стороне парсинга и, следовательно, позволяет провести DoS пользователем только для чтения. Но главная проблема заключается в том, что это препятствует прогрессу в фуззерах. #61543 (Alexey Milovidov).

Improvement

  • При выполнении запроса MODIFY COLUMN для материализованных представлений проверьте структуру внутренней таблицы, чтобы убедиться, что каждый столбец существует. #47427 (sunny).
  • Добавлена таблица system.keywords, которая содержит все ключевые слова из парсера. В основном нужна и будет использована для улучшения фуззинга и подсветки синтаксиса. #51808 (Nikita Mikhaylov).
  • Добавлена поддержка параметризованного представления с анализатором, чтобы не анализировать создание параметризованного представления. Реорганизована существующая логика параметризованного представления, чтобы не анализировать создание параметризованного представления. #54211 (SmitaRKulkarni).
  • Обычный движок базы данных считается устаревшим. Вы получите предупреждение в clickhouse-client, если ваш сервер его использует. Это закрывает #52229. #56942 (shabroo).
  • Все блокировки нулевой копии, связанные с таблицей, должны быть удалены, когда таблица удаляется. Директория, содержащая эти блокировки, также должна быть удалена. #57575 (Sema Checherinda).
  • Добавлена возможность короткого замыкания для функции dictGetOrDefault. Закрывает #52098. #57767 (jsc0218).
  • Разрешено объявление enum в структуре внешней таблицы. #57857 (Duc Canh Le).
  • Запуск ALTER COLUMN MATERIALIZE на столбце с выражением DEFAULT или MATERIALIZED теперь записывает правильные значения: значение по умолчанию для существующих частей с значением по умолчанию или незначение по умолчанию для существующих частей с незначением по умолчанию. Ранее значение по умолчанию записывалось для всех существующих частей. #58023 (Duc Canh Le).
  • Включена логика задержки (например, экспоненциальная). Это обеспечит возможность снижения использования CPU, использования памяти и размеров файлов журнала. #58036 (MikhailBurdukov).
  • Учитывайте легковесные удаленные строки при выборе частей для слияния. #58223 (Zhuo Qiu).
  • Разрешить определить volume_priority в storage_configuration. #58533 (Andrey Zvonov).
  • Добавлена поддержка типа Date32 в кодеке T64. #58738 (Hongbin Ma).
  • Этот PR делает http/https соединения повторно используемыми для всех случаев использования. Даже когда ответ 3xx или 4xx. #58845 (Sema Checherinda).
  • Добавлены комментарии к столбцам для большего количества системных таблиц. Продолжение https://github.com/ClickHouse/ClickHouse/pull/58356. #59016 (Nikita Mikhaylov).
  • Теперь мы можем использовать виртуальные столбцы в PREWHERE. Это полезно для неконстантных виртуальных столбцов, таких как _part_offset. #59033 (Amos Bird).
  • Настройки для движка распределенной таблицы теперь можно указать в файле конфигурации сервера (аналогично настройкам MergeTree), например, <distributed> <flush_on_detach>false</flush_on_detach> </distributed>. #59291 (Azat Khuzhin).
  • Улучшение в Keeper: кэшировать только определенное количество журналов в памяти, контролируемое latest_logs_cache_size_threshold и commit_logs_cache_size_threshold. #59460 (Antonio Andelic).
  • Вместо использования постоянного ключа теперь объектное хранилище генерирует ключ для определения возможности удаления объектов. #59495 (Sema Checherinda).
  • Не выводить числа с плавающей запятой в экспоненциальной записи по умолчанию. Добавьте настройку input_format_try_infer_exponent_floats, которая восстановит предыдущее поведение (отключена по умолчанию). Закрывает #59476. #59500 (Kruglov Pavel).
  • Разрешить операции ALTER окружать скобками. Эмиссию скобок можно контролировать с помощью конфигурации format_alter_operations_with_parentheses. По умолчанию в отформатированных запросах скобки эмитируются, поскольку мы храним отформатированные операции ALTER в некоторых местах как метаданные (например, мутации). Новый синтаксис разъясняет некоторые из запросов, где операции ALTER заканчиваются в списке. Например, ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c не может быть правильно проанализирован с помощью старого синтаксиса. В новом синтаксисе запрос ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c) очевиден. Более старые версии не могут обработать новый синтаксис, поэтому использование нового синтаксиса может привести к проблемам, если новые и старые версии ClickHouse смешаны в одном кластере. #59532 (János Benjamin Antal).
  • Обновлен Intel QPL (используется кодеком DEFLATE_QPL) с v1.3.1 до v1.4.0. Также исправлен сбой механизма тайм-аута опроса, как мы наблюдали в тех же случаях тайм-аут может не сработать правильно, если произойдет тайм-аут, IAA и CPU могут одновременно обрабатывать буфер. На данный момент, лучше всего убедиться, что статус кодека IAA не QPL_STS_BEING_PROCESSED, затем вернуться к SW кодеку. #59551 (jasperzhu).
  • Добавить позиционное чтение в libhdfs3. Если вы хотите вызвать позиционное чтение в libhdfs3, используйте функцию hdfsPread в hdfs.h следующим образом. tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);. #59624 (M1eyu).
  • Проверьте переполнение стека в парсерах даже если пользователь неправильно настроил настройку max_parser_depth на слишком высокое значение. Это закрывает #59622. #59697 (Alexey Milovidov).
  • Упорядочите поведение именованных коллекций, созданных xml и sql в хранилище kafka. #59710 (Pervakov Grigorii).
  • Позвольте uuid в replica_path, если CREATE TABLE явно его указал. #59908 (Azat Khuzhin).
  • Добавлен столбец metadata_version таблицы ReplicatedMergeTree в системной таблице system.tables. #59942 (Maksim Kita).
  • Улучшение в Keeper: добавление повторов при сбоях для операций, связанных с диском. #59980 (Antonio Andelic).
  • Добавлен новый параметр конфигурации backups.remove_backup_files_after_failure: <clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>. #60002 (Vitaly Baranov).
  • Используйте несколько потоков при чтении метаданных таблиц из резервной копии при выполнении команды RESTORE. #60040 (Vitaly Baranov).
  • Теперь, если StorageBuffer имеет более 1 шардов (num_layers > 1), фоновое сбрасываение будет происходить одновременно для всех шардов в нескольких потоках. #60111 (alesapin).
  • Поддержка указания пользователей для конкретных настроек S3 в конфигурации с помощью ключа user. #60144 (Antonio Andelic).
  • Копия файла S3 GCP резервируется для буферной копии в случае, если GCP вернул Internal Error с кодом HTTP GATEWAY_TIMEOUT. #60164 (Maksim Kita).
  • Разрешите "local" как тип объектного хранилища вместо "local_blob_storage". #60165 (Kseniia Sumarokova).
  • Реализуйте оператор сравнения для значений Variant и правильное вставление Field в столбец Variant. Не разрешайте создавать тип Variant с похожими типами вариантов по умолчанию (разрешить под настройкой allow_suspicious_variant_types) Закрывает #59996. Закрывает #59850. #60198 (Kruglov Pavel).
  • Улучшена общая удобство использования виртуальных столбцов. Теперь разрешено использовать виртуальные столбцы в PREWHERE (это полезно для не-константных виртуальных столбцов, таких как _part_offset). Теперь доступна встроенная документация для виртуальных столбцов в виде комментария к столбцу в запросе DESCRIBE с включенной настройкой describe_include_virtual_columns. #60205 (Anton Popov).
  • Короткая замыкание выполнения для ULIDStringToDateTime. #60211 (Juan Madurga).
  • Добавлен столбец query_id для таблиц system.backups и system.backup_log. Добавлен стек ошибок в столбце error. #60220 (Maksim Kita).
  • Параллельное сбрасывание ожидающих блоков INSERT движка Distributed на DETACH/выключение сервера и SYSTEM FLUSH DISTRIBUTED (параллелизм будет работать только если у вас есть политика многодискового хранения для таблицы (как все в движке Distributed в настоящее время)). #60225 (Azat Khuzhin).
  • Настройка фильтра некорректна в joinRightColumnsSwitchNullability, разрешить #59625. #60259 (lgbo).
  • Добавьте настройку для принудительного чтения через кеш для слияний. #60308 (Kseniia Sumarokova).
  • Проблема #57598 упоминает вариативное поведение в отношении обработки транзакций. Выпущенный COMMIT/ROLLBACK, когда никакая транзакция не активна, регистрируется как ошибка, в отличие от поведения MySQL. #60338 (PapaToemmsn).
  • Добавлен режим none_only_active для настройки distributed_ddl_output_mode. #60340 (Alexander Tokmakov).
  • Соединения через MySQL порт теперь автоматически выполняются с настройкой prefer_column_name_to_alias = 1, чтобы поддерживать QuickSight из коробки. Также настройки mysql_map_string_to_text_in_show_columns и mysql_map_fixed_string_to_text_in_show_columns теперь включены по умолчанию, что также влияет только на соединения MySQL. Это увеличивает совместимость с большим количеством BI инструментов. #60365 (Robert Schulze).
  • Когда формат вывода является форматом Pretty, а блок состоит из единственного числового значения, которое превышает один миллион, читаемое число будет отображаться справа от таблицы. например ┌──────count()─┐ │ 233765663884 │ -- 233.77 миллиардов └──────────────┘. #60379 (rogeryk).
  • Разрешите настраивать обработчики HTTP переадресации для clickhouse-server. Например, вы можете сделать так, чтобы / перенаправляло на Play UI. #60390 (Alexey Milovidov).
  • У продвинутой панели управления теперь немного лучше цвета для многократных графиков. #60391 (Alexey Milovidov).
  • Исправлена ошибка гонки в коде JavaScript, что приводило к дублированию графиков друг на друге. #60392 (Alexey Milovidov).
  • Проверьте переполнение стека в парсерах, даже если пользователь неправильно настроил настройку max_parser_depth на слишком высокое значение. Это закрывает #59622. #60434 (Alexey Milovidov).
  • Функция substring теперь имеет новый псевдоним byteSlice. #60494 (Robert Schulze).
  • Параметр сервера dns_cache_max_size переименован в dns_cache_max_entries, чтобы уменьшить неоднозначность. #60500 (Kirill Nikiforov).
  • SHOW INDEX | INDEXES | INDICES | KEYS больше не сортирует по первичным ключевым столбцам (что было неинтуитивно). #60514 (Robert Schulze).
  • Улучшение в Keeper: прерывать во время старта, если обнаружен недопустимый снимок, чтобы избежать потери данных. #60537 (Antonio Andelic).
  • Добавлены диапазоны чтения MergeTree в пересекающиеся и непересекающиеся сбои с использованием параметра merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability. #60548 (Maksim Kita).
  • У продвинутой панели управления теперь элементы управления всегда видны при прокрутке. Это позволяет добавить новый график без прокрутки вверх. #60692 (Alexey Milovidov).
  • Строковые типы и Enums могут использоваться в одном и том же контексте, такие как: массивы, запросы UNION, условные выражения. Это закрывает #60726. #60727 (Alexey Milovidov).
  • Обновите tzdata до 2024a. #60768 (Raúl Marín).
  • Поддержка файлов без расширения формата в файловой системе базы данных. #60795 (Kruglov Pavel).
  • Улучшение в Keeper: поддержка leadership_expiry_ms в настройках Keeper. #60806 (Brokenice0415).
  • Всегда задавайте экспоненциальные числа в форматах JSON независимо от настройки input_format_try_infer_exponent_floats. Добавьте параметр input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects, который разрешает использовать строковый тип для неоднозначных путей, а не исключение во время анализа именованных кортежей из JSON-объектов. #60808 (Kruglov Pavel).
  • Добавьте флаг для SMJ, чтобы рассматривать null как наибольшее/наименьшее. Таким образом, поведение может быть совместимо с другими SQL системами, как Apache Spark. #60896 (loudongfeng).
  • Версия Clickhouse была добавлена в метаданные docker. Закрывает #54224. #60949 (Nikolay Monkov).
  • Добавлен параметр parallel_replicas_allow_in_with_subquery = 1, который позволяет подзапросам для IN работать с параллельными репликами. #60950 (Nikolai Kochetov).
  • DNSResolver перемешивает набор разрешенных IP-адресов. #60965 (Sema Checherinda).
  • Поддержка определения формата вывода по расширению файла в clickhouse-client и clickhouse-local. #61036 (豪肥肥).
  • Проверьте периодическое обновление ограничения памяти. #61049 (Han Fei).
  • Включите профилирование процессов (время затрачиваемое на входные и выходные байты для сортировки, агрегации и т. д.) по умолчанию. #61096 (Azat Khuzhin).
  • Добавить функцию toUInt128OrZero, которая была пропущена по ошибке (ошибка связана с https://github.com/ClickHouse/ClickHouse/pull/945). Совместимые алиасы FROM_UNIXTIME и DATE_FORMAT (они не являются родными для ClickHouse и существуют только для совместимости с MySQL) были сделаны нечувствительными к регистру, как ожидается для SQL-совместимых алиасов. #61114 (Alexey Milovidov).
  • Улучшения для проверок доступа, позволяющие аннулировать непринадлежащие права в случае, если целевой пользователь не имеет прав на аннулирование. Пример: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit).
  • Исправление ошибки в предыдущем опте: https://github.com/ClickHouse/ClickHouse/pull/59698: удалите разрыв, чтобы убедиться, что первый отфильтрованный столбец имеет минимальный размер cc @jsc0218. #61145 (李扬).
  • Исправлена проблема с функцией has() с Nullable столбцом (исправляет #60214). #61249 (Mikhail Koviazin).
  • Теперь можно указать атрибут merge="true" в конфигурационных подстановках для поддеревьев <include from_zk="/path" merge="true">. В случае, если этот атрибут указан, ClickHouse объединит поддерево с существующей конфигурацией, в противном случае поведение по умолчанию — добавить новый контент к конфигурации. #61299 (alesapin).
  • Добавить асинхронные метрики для виртуальных отображений памяти: VMMaxMapCount и VMNumMaps. Закрывает #60662. #61354 (Tuan Pham Anh).
  • Используйте настройку temporary_files_codec во всех местах, где мы создаем временные данные, например, для внешней сортировки в памяти и внешней GROUP BY. Ранее это работало только в алгоритме JOIN с частичным слиянием. #61456 (Maksim Kita).
  • Удалите дубликаты проверки containing_part.empty(), она уже проверяется здесь: https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141. #61467 (William Schoeffel).
  • Добавлена новая настройка max_parser_backtracks, которая позволяет ограничить сложность разбора запросов. #61502 (Alexey Milovidov).
  • Меньше конфликтов во время динамического изменения размера кэша файловой системы. #61524 (Kseniia Sumarokova).
  • Запретить шардированный режим очереди StorageS3, так как он будет переписан. #61537 (Kseniia Sumarokova).
  • Исправлена опечатка: с use_leagcy_max_level на use_legacy_max_level. #61545 (William Schoeffel).
  • Удалить некоторые дублирующиеся записи в blob_storage_log. #61622 (YenchangChan).
  • Добавлена функция current_user как совместимый псевдоним для MySQL. #61770 (Yarik Briukhovetskyi).
  • Используйте управляемую идентичность для IO резервного копирования при использовании Azure Blob Storage. Добавьте параметр, чтобы предотвратить попытки ClickHouse создать несуществующий контейнер, который требует разрешений на уровне учетной записи хранилища. #61785 (Daniel Pozo Escalona).
  • В предыдущей версии некоторые числа в формате Pretty не были достаточно аккуратными. #61794 (Alexey Milovidov).
  • Долгое значение в форматах Pretty не будет обрезано, если оно является единственным значением в наборе результата, например, в результате запроса SHOW CREATE TABLE. #61795 (Alexey Milovidov).
  • Аналогично clickhouse-local, clickhouse-client будет принимать параметр --output-format как синоним параметра --format. Это закрывает #59848. #61797 (Alexey Milovidov).
  • Если stdout является терминалом, и формат вывода не указан, clickhouse-client и аналогичные инструменты будут использовать PrettyCompact по умолчанию, аналогично интерактивному режиму. clickhouse-client и clickhouse-local будут обрабатывать аргументы командной строки для входных и выходных форматов единообразно. Это закрывает #61272. #61800 (Alexey Milovidov).
  • Группы цифр с подчеркиванием в форматах Pretty для лучшей читаемости. Это контролируется новой настройкой output_format_pretty_highlight_digit_groups. #61802 (Alexey Milovidov).

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