Теперь выполняется проверка подозрительных/экспериментальных типов во вложенных типах. Ранее такие типы (кроме JSON) не проверялись во вложенных типах, таких как Array/Tuple/Map. #59385 (Kruglov Pavel).
Условие сортировки ORDER BY ALL (введённое в версии 23.12) заменено на ORDER BY *. Предыдущий синтаксис слишком часто приводил к ошибкам в таблицах со столбцом all. #59450 (Robert Schulze).
Добавлена дополнительная проверка числа потоков и размеров блоков. #60138 (Raúl Marín).
Для повышения совместимости с MySQL функция locate теперь по умолчанию принимает аргументы в порядке (needle, haystack[, start_pos]). Предыдущий порядок аргументов (haystack, needle[, start_pos]) можно восстановить, установив function_locate_has_mysql_compatible_argument_order = 0. #61092 (Robert Schulze).
Устаревшие части данных в памяти были помечены как deprecated начиная с версии 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 поддерживают только 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).
Исправление уязвимости в безопасности материализованного представления, из-за которой пользователь мог выполнять вставку в таблицу без необходимых грантов. Исправление проверяет, что у пользователя есть права на вставку не только в материализованное представление, но и во все базовые таблицы. Это означает, что некоторые запросы, которые раньше работали, теперь могут завершаться с ошибкой «Not enough privileges». Чтобы решить эту проблему, в релизе представлена новая функция SQL security для представлений https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)
Режим работы topK/topKWeighted, возвращающий количество значений и оценку погрешности. #54508 (UnamedRus).
Добавлен новый синтаксис, позволяющий указать пользователя-определителя в представлении/материализованном представлении. Это позволяет выполнять SELECT/INSERT из представлений без явной выдачи прав на базовые таблицы. #54901 (pufit).
Добавлено автоматическое преобразование таблиц семейства MergeTree различных типов в реплицированный движок. Создайте пустой файл 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).
Кодек 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(['db_name', ] 'tables_regexp'). #60372 (豪肥肥).
Все названия форматов сделаны нечувствительными к регистру, например Tsv, TSV, tsv или даже rowbinary. #60420 (豪肥肥).
Добавлен новый синтаксис, позволяющий указать пользователя-определителя (definer) в представлении/материализованном представлении. Это позволяет выполнять операторы SELECT/INSERT из представлений без явной выдачи прав на базовые таблицы. #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).
Удаляет агрегаторы min/max/any/anyLast по ключам GROUP BY в списке SELECT. #52230 (JackyWoo).
Улучшена производительность метода сериализованной агрегации при работе с несколькими столбцами [nullable]. Это обобщённая версия #51399, не нарушающая целостность абстракции. #55809 (Amos Bird).
Отложенное формирование результата JOIN для повышения производительности JOIN типа 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 (李扬).
Оптимизировано использование памяти для первичного ключа и некоторых других операций. #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 по умолчанию, что означает: для составного первичного ключа, если значение столбца меняется как минимум в 90 % строк, последующие за ним столбцы не будут загружаться в память. #60255 (Alexey Milovidov).
Выполнять функцию multiIf постолбцово, если базовый тип result_type — числовой. #60384 (李扬).
Как показано на рис. 1, замена "&&" на "&" позволяет сгенерировать SIMD-код. Рис. 1. Код, полученный при компиляции '&&' (слева) и '&' (справа). #60498 (Zhiguo Zhou).
Мьютексы работают почти в 2 раза быстрее (ранее они были медленнее из‑за ThreadFuzzer). #60823 (Azat Khuzhin).
Перенесён процесс дренирования соединений из этапа подготовки в этап работы и реализовано параллельное дренирование нескольких соединений. #60845 (lizhuoyu5).
Оптимизирован метод insertManyFrom для Nullable-чисел и Nullable-строк. #60846 (李扬).
Оптимизирована функция dotProduct, чтобы избежать ненужных дорогостоящих операций копирования памяти. #60928 (Robert Schulze).
Операции с файловым кэшем будут меньше страдать из-за конкуренции за блокировки. #61066 (Alexey Milovidov).
Выполнена оптимизация ColumnString::replicate и предотвращено сведение memcpySmallAllowReadWriteOverflow15Impl к встроенному memcpy. Закрыт #61074. ColumnString::replicate ускорен в 2,46 раза на x86-64. #61075 (李扬).
Вывод 256-битных целых чисел ускорен в 30 раз. #61100 (Raúl Marín).
Если запрос с синтаксической ошибкой содержал COLUMNS matcher с регулярным выражением, это регулярное выражение компилировалось каждый раз во время бэктрекинга парсера вместо однократной компиляции. Это была фундаментальная ошибка. Скомпилированное регулярное выражение помещалось в AST. Но буква A в AST означает «abstract», что означает, что он не должен содержать тяжеловесных объектов. Части AST могут создаваться и отбрасываться в процессе парсинга, включая большое количество шагов бэктрекинга. Это приводит к замедлению на стороне парсинга и, как следствие, позволяет пользователю с доступом только на чтение выполнить DoS-атаку. Но основная проблема в том, что это мешает прогрессу фаззеров. #61543 (Alexey Milovidov).
При выполнении запроса MODIFY COLUMN для материализованных представлений проверьте структуру внутренней таблицы, чтобы убедиться, что все столбцы присутствуют. #47427 (sunny).
Добавлена таблица system.keywords, которая содержит все ключевые слова из парсера. Она предназначена главным образом для улучшения фаззинга и подсветки синтаксиса. #51808 (Nikita Mikhaylov).
Добавлена поддержка параметризованных представлений в анализаторе, чтобы не анализировать оператор CREATE PARAMETERIZED VIEW. Переработана существующая логика параметризованных представлений, чтобы не анализировать оператор CREATE PARAMETERIZED VIEW. #54211 (SmitaRKulkarni).
Движок базы данных Ordinary объявлен устаревшим. Вы получите предупреждение в clickhouse-client, если ваш сервер его использует. Это закрывает #52229. #56942 (shabroo).
Все блокировки zero-copy, связанные с таблицей, должны быть сняты при удалении таблицы. Каталог, содержащий эти блокировки, также должен быть удалён. #57575 (Sema Checherinda).
Добавлена поддержка укороченного вычисления для функции dictGetOrDefault. Закрывает #52098. #57767 (jsc0218).
Добавлена возможность объявлять enum в структуре внешней таблицы. #57857 (Duc Canh Le).
Выполнение ALTER COLUMN MATERIALIZE для столбца с выражением DEFAULT или MATERIALIZED теперь записывает корректные значения: значение по умолчанию для уже существующих частей, в которых используется значение по умолчанию, или значение, отличное от значения по умолчанию, для уже существующих частей с собственным значением. Ранее значение по умолчанию записывалось для всех существующих частей. #58023 (Duc Canh Le).
Включён механизм backoff (например, экспоненциального). Это позволит снизить загрузку 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).
Теперь можно использовать виртуальные столбцы в PREWHERE. Это особенно полезно для неконстантных виртуальных столбцов, таких как _part_offset. #59033 (Amos Bird).
Настройки для движка таблицы Distributed теперь могут быть указаны в файле конфигурации сервера (аналогично настройкам 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, и в этом случае переключаться на программный кодек. #59551 (jasperzhu).
Добавлена поддержка позиционного чтения pread в 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 в системную таблицу system.tables для таблиц ReplicatedMergeTree. #59942 (Maksim Kita).
Улучшение Keeper: добавлены повторные попытки при ошибках для операций с Disk. #59980 (Antonio Andelic).
Используйте несколько потоков при чтении метаданных таблиц из резервной копии в ходе выполнения команды RESTORE. #60040 (Vitaly Baranov).
Теперь, если у StorageBuffer больше одного шарда (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).
Issue #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).
Переименована серверная настройка 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).
Панель Advanced теперь всегда отображает элементы управления при прокрутке. Это позволяет добавлять новый график, не прокручивая страницу вверх. #60692 (Alexey Milovidov).
Строковые типы и типы Enum могут использоваться в одних и тех же контекстах, например в массивах, запросах UNION и условных выражениях. Это закрывает #60726. #60727 (Alexey Milovidov).
Поддержка файлов без расширения в базе данных Filesystem. #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, которая позволяет использовать тип String для неоднозначных путей вместо генерации исключения при выводе типов именованных кортежей из JSON-объектов. #60808 (Kruglov Pavel).
Добавлен флаг для SMJ, чтобы рассматривать null как наибольшее/наименьшее значение. Это позволяет сделать поведение совместимым с другими системами SQL, такими как Apache Spark. #60896 (loudongfeng).
Добавлена настройка parallel_replicas_allow_in_with_subquery = 1, позволяющая использовать подзапросы в IN с параллельными репликами. #60950 (Nikolai Kochetov).
Добавлена поддержка автоматического определения формата вывода по расширению файла в 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).
Улучшены проверки доступа, позволяющие отзывать права, которыми вы не обладаете, в случае, если у целевого пользователя также нет соответствующих прав GRANT. Пример: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit).
Теперь можно указывать атрибут merge="true" в подстановках конфигурации для поддеревьев <include from_zk="/path" merge="true">. Если этот атрибут указан, ClickHouse будет объединять поддерево с существующей конфигурацией, в противном случае по умолчанию новое содержимое просто добавляется к конфигурации. #61299 (alesapin).
Добавлены асинхронные метрики для отображений виртуальной памяти: VMMaxMapCount и VMNumMaps. Закрыта задача #60662. #61354 (Tuan Pham Anh).
Используйте настройку temporary_files_codec во всех местах, где создаются временные данные, например при сортировке с использованием внешней памяти и GROUP BY с использованием внешней памяти. Ранее она работала только в алгоритме JOIN partial_merge. #61456 (Maksim Kita).
Используйте управляемое удостоверение (managed identity) для операций ввода-вывода (I/O) при работе с резервными копиями в 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).
Исправление ошибки (некорректное поведение, проявляющееся для пользователя, в официальном стабильном релизе)
Исправлена операция INSERT в SQLite для значений с одинарной кавычкой (теперь одинарные кавычки экранируются самой кавычкой вместо обратной косой черты) #60015 (Azat Khuzhin).
Исправлена ошибка в оптимизации optimize_uniq_to_count, приводившая к удалению псевдонима столбца #60026 (Raúl Marín).
Исправлено finished_mutations_to_keep=0 для MergeTree (как указано в документации, 0 означает сохранять всё) #60031 (Azat Khuzhin).
Исправлена ошибка в кэше LRUResource (кэш Hive) #60262 (shanfengp).
s3queue: исправлена ошибка (также исправлен нестабильный тест test_storage_s3_queue/test.py::test_shards_distributed) #60282 (Kseniia Sumarokova).
Исправлено использование неинициализированного значения и получение некорректного результата в хеширующих функциях при обработке IPv6 #60359 (Kruglov Pavel).
Принудительный повторный анализ при изменении параллельных реплик #60362 (Raúl Marín).
Исправлено использование простого типа метаданных с новым параметром конфигурации дисков #60396 (Kseniia Sumarokova).
Запретить установку max_parallel_replicas в значение 0, так как это не имеет смысла #60430 (Kruglov Pavel).
Попытка исправить логическую ошибку «Cannot capture column because it has incompatible type» в функции mapContainsKeyLike #60451 (Kruglov Pavel).
Исправлена работа OptimizeDateOrDateTimeConverterWithPreimageVisitor с null-аргументами #60453 (Raúl Marín).
Удалена некорректная проверка sanitize в агрегатной функции quantileGK #60740 (李扬).
Исправлена ошибка insert-select + insert_deduplication_token за счёт установки streams в 1 #60745 (Jordi Villar).
Предотвращена возможность установки пользовательских заголовков метаданных для неподдерживаемых операций многокомпонентной загрузки #60748 (Francisco J. Jurado Moreno).