Теперь выполняется проверка подозрительных/экспериментальных типов во вложенных типах. Ранее такие типы (кроме JSON) не проверялись во вложенных типах, таких как Array/Tuple/Map. #59385 (Kruglov Pavel).
Оператор сортировки ORDER BY ALL (введённый в v23.12) заменён на ORDER BY *. Предыдущий синтаксис слишком часто приводил к ошибкам в таблицах со столбцом all. #59450 (Robert Schulze).
Добавлена проверка корректности числа потоков и размеров блоков. #60138 (Raúl Marín).
Утилита 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 поддерживают только 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).
Исправление уязвимости в materialized view, которая позволяла пользователю вставлять данные в таблицу без необходимых на это грантов. Теперь дополнительно проверяется, что у пользователя есть права на вставку не только в materialized view, но и во все лежащие в её основе таблицы. Это означает, что некоторые запросы, которые работали ранее, теперь могут завершаться ошибкой «Not enough privileges». Для решения этой проблемы в этом релизе представлен новый механизм SQL security для представлений https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)
Режим topk/topkweighed, возвращающий количество значений и оценку ошибки. #54508 (UnamedRus).
Добавлен новый синтаксис, который позволяет указать пользователя-определителя (definer) в view/materialized view. Это позволяет выполнять операции 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: merge(['db_name', ] 'tables_regexp'). #60372 (豪肥肥).
Все имена форматов теперь нечувствительны к регистру, например Tsv, TSV, tsv или даже rowbinary. #60420 (豪肥肥).
Добавлен новый синтаксис, который позволяет указать пользователя-определителя (definer user) для view/materialized view. Это позволяет выполнять операции SELECT и INSERT из представлений без явной выдачи прав на базовые таблицы. #60439 (pufit).
Добавлены четыре свойства к StorageMemory (движок памяти): min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep и max_rows_to_keep — добавлены тесты, отражающие изменения — обновлена документация memory.md — в MemorySink добавлено свойство таблицы context, чтобы обеспечить доступ к границам параметров таблицы. #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 для повышения производительности соединений типа 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 по умолчанию, что означает: для составного первичного ключа, если столбец меняет своё значение как минимум в 0.9 доли всех случаев, следующие за ним столбцы не будут загружаться в память. #60255 (Alexey Milovidov).
Выполнять функцию multiIf в столбцовом режиме, если базовый тип result_type — числовой. #60384 (李扬).
Как показано на рис. 1, замена "&&" на "&" позволяет сгенерировать SIMD-код. Рис. 1. Код, скомпилированный из '&&' (слева) и '&' (справа). #60498 (Zhiguo Zhou).
Мьютексы стали работать почти в 2 раза быстрее (ранее они были медленнее из-за ThreadFuzzer). #60823 (Azat Khuzhin).
Перенести операцию освобождения соединений с этапа prepare на этап work и выполнять освобождение нескольких соединений параллельно. #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).
Если запрос с синтаксической ошибкой содержал matcher COLUMNS с регулярным выражением, то регулярное выражение компилировалось заново при каждом откате парсера (backtracking), вместо однократной компиляции. Это была фундаментальная ошибка. Скомпилированный regexp помещался в AST. Но буква A в AST означает «abstract», то есть он не должен содержать тяжеловесных объектов. Части AST могут создаваться и уничтожаться в процессе парсинга, включая большое количество откатов. Это приводит к замедлению на стороне парсинга и, как следствие, позволяет осуществлять DoS от пользователя только с правами на чтение. Но основная проблема в том, что это мешает прогрессу фаззеров. #61543 (Alexey Milovidov).
При выполнении запроса MODIFY COLUMN для materialized views проверяйте структуру внутренней таблицы, чтобы убедиться, что все столбцы присутствуют. #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).
Включён механизм бэкоффа (например, экспоненциального), что позволит снизить загрузку 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).
По умолчанию не определять тип Float для чисел в экспоненциальной нотации. Добавлена настройка 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).
Добавлена поддержка позиционного чтения (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 для таблиц ReplicatedMergeTree в системную таблицу system.tables. #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).
Добавлена настройка, принудительно включающая read-through-кэш при слияниях. #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 billion └──────────────┘. #60379 (rogeryk).
Добавлена возможность настраивать обработчики перенаправлений HTTP для clickhouse-server. Например, можно сделать так, чтобы / перенаправлял на Play UI. #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 на пересекающиеся и непересекающиеся для инъекции сбоев (fault injection) с использованием настройки merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability. #60548 (Maksim Kita).
В расширенном дашборде элементы управления теперь всегда остаются видимыми при прокрутке. Это позволяет добавлять новый график, не прокручивая страницу вверх. #60692 (Alexey Milovidov).
Типы String и 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 для неоднозначных путей вместо генерации исключения при выводе типов именованных Tuples из объектов 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).
Улучшены проверки доступа, позволяющие отзывать права, которыми владелец операции не обладает, в случае, если у целевого пользователя также отсутствуют права на их отзыв. Пример: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit).
Теперь в подстановках конфигурации для поддеревьев вида <include from_zk="/path" merge="true"> можно указывать атрибут merge="true". Если этот атрибут указан, ClickHouse будет объединять поддерево с существующей конфигурацией, в противном случае используется поведение по умолчанию: новое содержимое просто добавляется к конфигурации. #61299 (alesapin).
Добавлены асинхронные метрики для отображений виртуальной памяти: VMMaxMapCount и VMNumMaps. Закрывает #60662. #61354 (Tuan Pham Anh).
Настройка temporary_files_codec теперь используется во всех местах, где создаются временные данные, например при сортировке с использованием внешней памяти и внешнем GROUP BY. Ранее она работала только в алгоритме JOIN partial_merge. #61456 (Maksim Kita).
Используйте управляемое удостоверение для операций ввода-вывода резервных копий при работе с 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).
Исправлено возможное возникновение исключения в таблице s3queue при её удалении #60036 (Kseniia Sumarokova).
PartsSplitter: некорректные диапазоны для одной и той же части #60041 (Maksim Kita).
Использовать max_query_size из контекста в DDLLogEntry вместо жёстко закодированного значения 4096 #60083 (Kruglov Pavel).
Удалена некорректная проверка sanitize в агрегатной функции quantileGK #60740 (李扬).
Исправлена ошибка insert-select + insert_deduplication_token путём установки параметра streams в 1 #60745 (Jordi Villar).
Предотвращена возможность установки пользовательских заголовков метаданных для неподдерживаемых операций многокомпонентной (multipart) загрузки #60748 (Francisco J. Jurado Moreno).