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.
Рисунок 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
с кодом HTTPGATEWAY_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).
Исправление ошибок (неправильное поведение на стороне пользователя в официальном стабильном релизе)
- Исправлена ошибка с
intDiv
для десятичных аргументов #59243 (Ярик Брюховецкий). - Исправление_kql_вопроса_найденного_by_wingfuzz #59626 (Йонг Ванг).
- Исправлена ошибка "Чтение за пределами последнего смещения" для AsynchronousBoundedReadBuffer #59630 (Виталий Баранов).
- rabbitmq: исправлено отсутствие подтвержденных и неподтвержденных сообщений #59775 (Ксения Сумарокова).
- Исправлена функция выполнения для const и LowCardinality с GROUP BY const для анализатора #59986 (Азат Хузин).
- Исправлено преобразование масштаба для DateTime64 #60004 (Ярик Брюховецкий).
- Исправлено INSERT в SQLite с одинарной кавычкой (с экранированием одинарных кавычек с помощью кавычки вместо обратной косой) #60015 (Азат Хузин).
- Исправлено оптимизация_уникальных_значений_в_количество, удаляющая псевдоним столбца #60026 (Рауль Марин).
- Исправлено finished_mutations_to_keep=0 для MergeTree (как указано в документации, 0 — это сохранить всё) #60031 (Азат Хузин).
- Исправлена возможная ошибка при использовании таблицы s3queue при удалении #60036 (Ксения Сумарокова).
- PartsSplitter недопустимые диапазоны для одной и той же части #60041 (Максим Кита).
- Использовать max_query_size из контекста в DDLLogEntry вместо жестко закодированного 4096 #60083 (Круглов Павел).
- Исправлено несоответствующее форматирование запросов #60095 (Алексей Милоидов).
- Исправлено несоответствующее форматирование explain в подзапросах #60102 (Алексей Милоидов).
- Исправлен крах cosineDistance с Nullable #60150 (Рауль Марин).
- Разрешить преобразование логических значений в строковом представлении в истинные логические значения #60160 (Роберт Шульце).
- Исправлен system.s3queue_log #60166 (Ксения Сумарокова).
- Исправлено arrayReduce с именем агрегатной функции, допускающей null #60188 (Рауль Марин).
- Исправлены действия выполнения во время предварительной фильтрации (PK, питание партиций) #60196 (Азат Хузин).
- Скрыть конфиденциальную информацию для s3queue #60233 (Ксения Сумарокова).
- Отменить "Заменить
ORDER BY ALL
наORDER BY *
" #60248 (Роберт Шульце). - Azure Blob Storage : Исправить проблемы с конечной точкой и префиксом #60251 (SmitaRKulkarni).
- Исправлены коды исключений http. #60252 (Остин Котиг).
- Исправить ошибку кэша LRUResource (кэш Hive) #60262 (shanfengp).
- s3queue: исправлена ошибка (также исправляет ненадежный тест_storage_s3_queue/test.py::test_shards_distributed) #60282 (Ксения Сумарокова).
- Исправлено использование неинициализированного значения и неверный результат в хеширующих функциях с IPv6 #60359 (Круглов Павел).
- Принудительный повторный анализ, если изменились параллельные реплики #60362 (Рауль Марин).
- Исправлено использование примитивного типа метаданных с новой опцией конфигурации дисков #60396 (Ксения Сумарокова).
- Не разрешать устанавливать max_parallel_replicas в 0, так как это не имеет смысла #60430 (Круглов Павел).
- Попытка исправить логическую ошибку 'Невозможно захватить столбец, потому что он имеет несовместимый тип' в mapContainsKeyLike #60451 (Круглов Павел).
- Исправлено OptimizeDateOrDateTimeConverterWithPreimageVisitor с null аргументами #60453 (Рауль Марин).
- Попытка избежать вычисления скалярных подзапросов для CREATE TABLE. #60464 (Николай Кочетов).
- Слияние #59674. #60470 (Алексей Милоидов).
- Корректно проверять ключи в s3Cluster #60477 (Антонио Анделич).
- Исправить взаимную блокировку в параллельном парсинге, когда много строк пропускаются из-за ошибок #60516 (Круглов Павел).
- Исправить_max_query_size_for_kql_compound_operator: #60534 (Йонг Ванг).
- Исправление Keeper: добавить тайм-ауты при ожидании журналов подтверждения #60544 (Антонио Анделич).
- Уменьшить количество читаемых строк из
system.numbers
#60546 (Джэки Ву). - Не выводить советы по числам для типов даты #60577 (Рауль Марин).
- Исправлено чтение из MergeTree с недетерминированными функциями в фильтре #60586 (Круглов Павел).
- Исправлена логическая ошибка при неверном значении типа настройки совместимости #60596 (Круглов Павел).
- Исправлено несоответствующее состояние агрегатной функции в смешанных кластерах x86-64 / ARM #60610 (Гарри Ли).
- fix(prql): Надежный обработчик паники #60615 (Максимилиан Роос).
- Исправлено
intDiv
для десятичных и датных аргументов #60672 (Ярик Брюховецкий). - Исправлено: развернуть CTE в запросе alter modify #60682 (Яков Ольховский).
- Исправлен system.parts для движка базы данных, не использующего Atomic/Ordinary (т.е. Memory) #60689 (Азат Хузин).
- Исправлено "Недопустимое определение хранилища в файле метаданных" для параметризованных представлений #60708 (Азат Хузин).
- Исправлен переполнение буфера в CompressionCodecMultiple #60731 (Алексей Милоидов).
- Удалено бессмысленное из SQL/JSON #60738 (Алексей Милоидов).
- Удалено неправильная проверка очистки в агрегатной функции quantileGK #60740 (李扬).
- Исправлен bug insert-select + insert_deduplication_token, установив потоки в 1 #60745 (Хорди Вильяр).
- Предотвратить установку пользовательских заголовков метаданных при неподдерживаемых операциях многокомпонентной загрузки #60748 (Франсиско Юрадо Морон).
- Исправлено toStartOfInterval #60763 (Андрей Звонов).
- Исправлен крах в arrayEnumerateRanked #60764 (Рауль Марин).
- Исправлен крах при использовании input() в INSERT SELECT JOIN #60765 (Круглов Павел).
- Исправлен крах с различным значением allow_experimental_analyzer в подзапросах #60770 (Дмитрий Новик).
- Удалена рекурсия при чтении из S3 #60849 (Антонио Анделич).
- Исправлена возможная зависание при ошибке в HashedDictionaryParallelLoader #60926 (vdimir).
- Исправлен асинхронный RESTORE с Replicated базой данных #60934 (Антонио Анделич).
- Исправлена взаимная блокировка при асинхронных вставках в таблицы
Log
через нативный протокол #61055 (Антон Попов). - Исправлено ленивое выполнение аргумента по умолчанию в dictGetOrDefault для RangeHashedDictionary #61196 (Круглов Павел).
- Исправлено несколько ошибок в groupArraySorted #61203 (Рауль Марин).
- Исправлено reconfig Keeper для автономного бинарного файла #61233 (Антонио Анделич).
- Исправлено использование session_token в движке S3 #61234 (Круглов Павел).
- Исправлен возможный неправильный результат агрегатной функции
uniqExact
#61257 (Антон Попов). - Исправлены ошибки в show database #61269 (Рауль Марин).
- Исправлена логическая ошибка в RabbitMQ хранилище с MATERIАLIZED колонками #61320 (vdimir).
- Исправлено CREATE OR REPLACE DICTIONARY #61356 (Виталий Баранов).
- Исправлен ATTACH запрос с внешним ON CLUSTER #61365 (Николай Дегтяринский).
- Исправлена проблема разделения действий DAG #61458 (Рауль Марин).
- Исправлено завершение неудачного RESTORE #61466 (Виталий Баранов).
- Исправлено отключение async_insert_use_adaptive_busy_timeout правильно с настройками совместимости #61468 (Рауль Марин).
- Разрешить очередь в пуле восстановления #61475 (Никита Таранов).
- Исправлена ошибка при чтении system.parts с использованием UUID (вопрос 61220). #61479 (Дан У).
- Исправлен крах в оконном представлении #61526 (Алексей Милоидов).
- Исправлено
repeat
с ненативными целыми числами #61527 (Антонио Анделич). - Исправлен клиент
-s
аргумент #61530 (Михаил ф. Ширяев). - Исправлен крах в arrayPartialReverseSort #61539 (Рауль Марин).
- Исправлено строковое поиск с постоянной позицией #61547 (Антонио Анделич).
- Исправлено addDays, вызывающее ошибку при использовании datetime64 #61561 (Шуи Ли).
- Исправлен
system.part_log
для асинхронной вставки с дедупликацией #61620 (Антонио Анделич). - Исправлен Ненастроенный набор для system.parts. #61666 (Николай Кочетов).