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

Changelog v24.2

Тег выпуска ClickHouse: 24.2.2.15987

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

  • Проверять подозрительные/экспериментальные типы в вложенных типах. Ранее такие типы (кроме 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 и только при их ручном включении, задав соответствующие SETTINGS для таблицы 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. Мы изменили значение по умолчанию для Parquet и ORC на zstd, но не для Arrow (это подчеркивается как для низкоуровневого использования). #61817 (Alexey Milovidov).
  • Исправление проблемы безопасности с материализованными представлениями, которое позволяло пользователю вставлять в таблицу без необходимых прав. Исправление проверяет, есть ли у пользователя разрешение на вставку не только в материализованное представление, но и во все подлежащие таблицы. Это означает, что некоторые запросы, которые раньше работали, теперь могут завершиться ошибкой из-за недостатка привилегий. Чтобы решить эту проблему, релиз вводит новую функцию SQL-безопасности для представлений https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)

Новая функция

  • Режим поддержки Topk/topkweighed, который возвращает количество значений и его ошибку. #54508 (UnamedRus).
  • Добавлен новый синтаксис, позволяющий указать пользователя-определителя в представлении/материализованном представлении. Это позволяет выполнять выборки/вставки из представлений без явных разрешений для подлежащих таблиц. #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 (豪肥肥).
  • Добавлен новый синтаксис, позволяющий указать пользователя-определителя в представлении/материализованном представлении. Это позволяет выполнять выборки/вставки из представлений без явных разрешений для подлежащих таблиц. #60439 (pufit).
  • Добавить четыре свойства к StorageMemory (memory-engine) 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).

Улучшение производительности

  • Устранение аггрегаторов min/max/any/anyLast ключей GROUP BY в разделе SELECT. #52230 (JackyWoo).
  • Улучшение производительности сериализованного метода агрегации при вовлечении нескольких [nullable] колонок. Это общая версия #51399, которая не идет на компромисс с целостностью абстракции. #55809 (Amos Bird).
  • Ленивая сборка выходных данных соединения, чтобы улучшить производительность ALL-соединения. #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 (李扬).
  • 30 раз быстрее печать для 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).
  • Включена логика обратного отката (например, экспоненциальная). Это обеспечит возможность уменьшения использования процессора, памяти и размеров журналов. #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).
  • Разрешите операции изменения окружить скобками. Эмиссия скобок может контролироваться конфигурацией format_alter_operations_with_parentheses. По умолчанию в отформатированных запросах скобки эмитируются, поскольку мы храним отформатированные операции изменения в некоторых местах как метаданные (например: мутации). Новый синтаксис уточняет некоторые запросы, где операции изменения заканчиваются в списке. Например: 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).
  • Упрощено поведение создания именованных коллекций в хранилище Kafka для xml и sql. #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 распределенного движка при DETACH/выключении сервера и SYSTEM FLUSH 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. #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: убраны break, чтобы убедиться, что первая отфильтрованная колонка имеет минимальный размер 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 во всех местах, где мы создаем временные данные, например, внешней сортировке в памяти и внешней группировке в памяти. Ранее это работало только в алгоритме JOIN partial_merge. #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).
  • Используйте управляемую идентификацию для ввода-вывода резервных копий при использовании 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).
  • Если стандартный вывод — это терминал, и формат вывода не задан, clickhouse-client и аналогичные инструменты будут использовать PrettyCompact по умолчанию, аналогично интерактивному режиму. clickhouse-client и clickhouse-local будут обрабатывать аргументы командной строки для входных и выходных форматов в едином формате. Это закрывает #61272. #61800 (Alexey Milovidov).
  • Группы цифр с подчеркиванием в форматах Pretty для лучшей читаемости. Это контролируется новой настройкой output_format_pretty_highlight_digit_groups. #61802 (Alexey Milovidov).