Журнал изменений v24.2
Тег релиза ClickHouse: 24.2.2.15987
Обратная несовместимая правка
- Проверка подозрительных/экспериментальных типов во вложенных типах. Ранее такие типы (кроме JSON) во вложенных типах, таких как Array/Tuple/Map, не проверялись. #59385 (Круглов Павел).
- Условие сортировки
ORDER BY ALL
(введенное с v23.12) заменено наORDER BY *
. Предыдущий синтаксис слишком часто привел к ошибкам для таблиц с колонкойall
. #59450 (Роберт Шульце). - Добавлена проверка корректности для числа потоков и размеров блоков. #60138 (Рауль Марин).
- Отклонять входящие запросы INSERT в случае, если настройки уровня запроса
async_insert
иdeduplicate_blocks_in_dependent_materialized_views
включены одновременно. Это поведение контролируется настройкойthrow_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert
и включено по умолчанию. Это продолжение #59699, необходимое для разблокировки #59915. #60888 (Никита Михайлов). - Утилита
clickhouse-copier
перенесена в отдельный репозиторий на GitHub: https://github.com/ClickHouse/copier. Она больше не включена в пакет, но по-прежнему доступна для загрузки отдельно. Это закрывает: #60734 Это закрывает: #60540 Это закрывает: #60250 Это закрывает: #52917 Это закрывает: #51140 Это закрывает: #47517 Это закрывает: #47189 Это закрывает: #46598 Это закрывает: #40257 Это закрывает: #36504 Это закрывает: #35485 Это закрывает: #33702 Это закрывает: #26702 ### Запись документации для изменений, касающихся пользователей. #61058 (Никита Михайлов). - Для повышения совместимости с MySQL, функция
locate
теперь принимает аргументы(needle, haystack[, start_pos])
по умолчанию. Предыдущее поведение(haystack, needle[, start_pos])
можно восстановить, установивfunction_locate_has_mysql_compatible_argument_order = 0
. #61092 (Роберт Шульце). - Устаревшие части данных в памяти были объявлены устаревшими с версии 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 (Алексей Миловидов). - Запретить
SimpleAggregateFunction
вORDER BY
таблицMergeTree
(так же, какAggregateFunction
запрещен, но они запрещены, потому что они не сопоставимы) по умолчанию (используйтеallow_suspicious_primary_key
, чтобы разрешить их). #61399 (Азат Хузин). - 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 (Алексей Миловидов). - Исправление проблемы безопасности с материализованным представлением, которое позволяло пользователю вставлять в таблицу без необходимых прав на это. Исправление проверяет, что у пользователя есть разрешение на вставку не только в материализованное представление, но и во все подлежащие таблицы. Это означает, что некоторые запросы, которые работали ранее, теперь могут завершаться с ошибкой "Недостаточно привилегий". Чтобы решить эту проблему, релиз вводит новую функцию 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 (Кирилл). - Добавлена табличная функция
mergeTreeIndex
. Она представляет собой содержимое файлов индекса и меток таблицMergeTree
. Может использоваться для интроспекции. Синтаксис:mergeTreeIndex(database, table, [with_marks = true])
, гдеdatabase.table
— существующая таблица с движкомMergeTree
. #58140 (Антон Попов). - Попытка автоматически определить формат файла во время вывода схемы, если он неизвестен в движках
file/s3/hdfs/url/azureBlobStorage
. Закрывает #50576. #59092 (Круглов Павел). - Добавлен generate_series как табличная функция. Эта функция генерирует таблицу с арифметической прогрессией натуральных чисел. #59390 (divanik).
- Добавлен запрос
ALTER TABLE table FORGET PARTITION partition
, который удаляет узлы ZooKeeper, связанные с пустой партицией. #59507 (Сергей Трифонов). - Поддержка чтения и записи резервных копий в виде архивов tar. #59535 (josh-hildred).
- Предоставляет новую агрегатную функцию ‘groupArrayIntersect’. Продолжение: #49862. #59598 (Ярик Брюковецкий).
- Реализована таблица system.dns_cache, которая может быть полезна для отладки проблем с DNS. #59856 (Кирилл Никифоров).
- Реализована поддержка корзин S3Express. #59965 (Никита Таранов).
- Кодек
LZ4HC
примет новый уровень 2, который быстрее предыдущего минимального уровня 3 за счет меньшего сжатия. В предыдущих версияхLZ4HC(2)
и менее были теми же, что иLZ4HC(3)
. Автор: Cyan4973. #60090 (Алексей Миловидов). - Реализована таблица system.dns_cache, которая может быть полезна для отладки проблем с DNS. Новая серверная настройка dns_cache_max_size. #60257 (Кирилл Никифоров).
- Добавлена функция
toMillisecond
, которая возвращает компонент миллисекунд для значений типаDateTime
илиDateTime64
. #60281 (Шон Струвиг). - Поддержка однопараметрической версии для табличной функции объединения, как
merge(['db_name', ] 'tables_regexp')
. #60372 (豪肥肥). - Сделайте все названия форматов нечувствительными к регистру, такими как Tsv, или TSV, или tsv, или даже rowbinary. #60420 (豪肥肥).
- Добавлен новый синтаксис, который позволяет указывать пользователя-дизайнера в представлении/материализованном представлении. Это позволяет выполнять выборки/вставки из представлений без явных прав на подлежащие таблицы. #60439 (pufit).
- Добавьте четыре свойства к
StorageMemory
(движок памяти)min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep
иmax_rows_to_keep
- Добавьте тесты, чтобы отразить новые изменения - Обновите документациюmemory.md
- Добавьте свойство таблицыcontext
кMemorySink
, чтобы обеспечить доступ к границам параметров таблицы. #60612 (Джейк Бамра). - Добавлена функция
toMillisecond
, которая возвращает компонент миллисекунд для значений типаDateTime
илиDateTime64
. #60649 (Роберт Шульце). - Разделены лимиты на число ожидающих и выполняющих запросов. Добавлена новая серверная настройка
max_waiting_queries
, которая ограничивает количество запросов, находящихся в ожидании из-заasync_load_databases
. Существующие лимиты на количество выполняемых запросов больше не учитывают ожидающие запросы. #61053 (Сергей Трифонов). - Добавлена поддержка
ATTACH PARTITION ALL
. #61107 (Кирилл Никифоров).
Улучшение производительности
- Устранены агрегаторы 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 (Рауль Марин). - Оптимизирована производительность sum/avg условно для типов bigint и big decimal за счет уменьшения пропусков ветвления. #59504 (李扬).
- Улучшена производительность SELECT-запросов с активными мутациями. #59531 (Азат Хузин).
- Тривиальная оптимизация на фильтре колонок. Избегайте тех фильтров колонок, основной тип данных которых не является числом, фильтруемым с
result_size_hint = -1
. Пиковая память может быть уменьшена до 44% от исходной в некоторых случаях. #59698 (李扬). - Первичный ключ будет использовать меньше памяти. #60049 (Алексей Миловидов).
- Оптимизировано использование памяти для первичного ключа и некоторых других операций. #60050 (Алексей Миловидов).
- Первичные ключи таблиц будут загружаться в память лениво при первом доступе. Это контролировалось новой настройкой MergeTree
primary_key_lazy_load
, которая включена по умолчанию. Это предоставляет несколько преимуществ: - он не будет загружен для неиспользуемых таблиц; - если памяти недостаточно, исключение будет выброшено при первом использовании вместо старта сервера. Это предоставляет несколько недостатков: - задержка загрузки первичного ключа будет оплачена за первый запрос, а не перед принятием соединений; это теоретически может вызвать проблему громкого роя. Это закрывает #11188. #60093 (Алексей Миловидов). - Векторизованная функция
dotProduct
, которая полезна для векторного поиска. #60202 (Роберт Шульце). - Если первичный ключ таблицы содержит в основном бесполезные колонки, не храните их в памяти. Это контролируется новой настройкой
primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns
со значением по умолчанию0.9
, что означает: для составного первичного ключа, если колонка меняет свое значение как минимум в 0.9 случаев, следующие колонки после нее не будут загружены. #60255 (Алексей Миловидов). - Выполните функцию multiIf по колонкам, когда основной тип результата является числом. #60384 (李扬).
- Как показано на рисунке 1, замена "&&" на "&" может сгенерировать SIMD код.
Рисунок 1. Код, скомпилированный из '&&' (слева) и '&' (справа). #60498 (Чжигуо Чжоу).
- Более быстрые (почти 2x) мьютексы (были медленнее из-за ThreadFuzzer). #60823 (Азат Хузин).
- Переместить дренаж соединения с подготовки на рабочий процесс и дренаж нескольких соединений параллельно. #60845 (lizhuoyu5).
- Оптимизировано insertManyFrom для nullable number или nullable string. #60846 (李扬).
- Оптимизирована функция
dotProduct
, чтобы исключить ненужные и дорогостоящие копии памяти. #60928 (Роберт Шульце). - Операции с файловым кэшем будут меньше подвержены конфликтам блокировок. #61066 (Алексей Миловидов).
- Оптимизация ColumnString::replicate и предотвращение sql данный запрос был исключен из потока, поскольку он не выполняется . Закрыть #61074. ColumnString::replicate ускоряется в 2,46 раз на x86-64. #61075 (李扬).
- Печать 256-битных целых чисел в 30 раз быстрее. #61100 (Рауль Марин).
- Если запрос с синтаксической ошибкой содержал соответствие COLUMNS с регулярным выражением, регулярное выражение компилировалось каждый раз во время отката парсера, вместо того чтобы компилироваться один раз. Это была фундаментальная ошибка. Скомпилированное регулярное выражение помещалось в AST. Но буква A в AST означает "абстрактный", что означает, что он не должен содержать тяжелые объекты. Части AST могут быть созданы и удалены во время разбора, включая большое количество откатов. Это приводит к замедлению на стороне разбора и, следовательно, позволяет DoS пользователю только для чтения. Но главная проблема в том, что это препятствует прогрессу в фуззерах. #61543 (Алексей Миловидов).
Улучшения
- При выполнении запроса 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). - Позволяет оборачивать операции изменения в скобки. Вывод скобок может быть управляемым с помощью конфигурации
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). - Унификация поведения коллекций с именами, созданных в xml и sql, в хранилище kafka. #59710 (Pervakov Grigorii).
- Позволить uuid в replica_path, если CREATE TABLE явно имеет его. #59908 (Azat Khuzhin).
- Добавлен столбец
metadata_version
таблицы ReplicatedMergeTree в системной таблицеsystem.tables
. #59942 (Maksim Kita). - Улучшение Keeper: добавление повторных попыток при сбоях для операций, связанных с диском. #59980 (Antonio Andelic).
- Добавлена новая настройка конфигурации
backups.remove_backup_files_after_failure
:<clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>
. #60002 (Vitaly Baranov). - Используйте несколько потоков при чтении метаданных таблиц из резервной копии во время выполнения команды RESTORE. #60040 (Vitaly Baranov).
- Теперь, если
StorageBuffer
имеет более 1 шард (num_layers
> 1), фоновая очистка будет происходить одновременно для всех шард в нескольких потоках. #60111 (alesapin). - Поддержка указания пользователей для конкретных настроек S3 в конфигурации с использованием ключа
user
. #60144 (Antonio Andelic). - Копирование файла S3 GCP с аварийной записью в буфер, если GCP возвращает
Internal Error
с кодом HTTP ошибкиGATEWAY_TIMEOUT
. #60164 (Maksim Kita). - Позвольте "local" в качестве типа объектного хранилища вместо "local_blob_storage". #60165 (Kseniia Sumarokova).
- Реализуйте оператор сравнения для значений Variant и корректную вставку Field в колонку Variant. Не позволяйте по умолчанию создавать тип
Variant
с похожими вариантными типами (разрешить под настройкойallow_suspicious_variant_types
), Закрывает #59996. Закрывает #59850. #60198 (Kruglov Pavel). - Улучшена общая удобство использования виртуальных колонок. Теперь разрешено использовать виртуальные колонки в
PREWHERE
(это имеет смысл для нестатичных виртуальных колонок, таких как_part_offset
). Теперь встроенная документация доступна для виртуальных колонок в качестве комментария к колонке в запросеDESCRIBE
с включенной настройкойdescribe_include_virtual_columns
. #60205 (Anton Popov). - Исполнение короткого замыкания для
ULIDStringToDateTime
. #60211 (Juan Madurga). - Добавлен столбец
query_id
для таблицsystem.backups
иsystem.backup_log
. Добавлен стек ошибок в столбецerror
. #60220 (Maksim Kita). - Параллельная очистка ожидающих блоков INSERT движка Distributed на
DETACH
/выключении сервера иSYSTEM FLUSH DISTRIBUTED
(параллелизм будет работать только в том случае, если у вас есть политика мульти-диска для таблицы (как и у всего в движке Distributed прямо сейчас)). #60225 (Azat Khuzhin). - Настройка фильтра некорректна в
joinRightColumnsSwitchNullability
, разрешите #59625. #60259 (lgbo). - Добавьте настройку, чтобы принудительно использовать кэш для чтения при объединениях. #60308 (Kseniia Sumarokova).
- Проблема #57598 упоминает вариант поведения, касающийся обработки транзакций. Выполненная команда COMMIT/ROLLBACK, когда никакая транзакция не активна, рассматривается как ошибка в отличие от поведения MySQL. #60338 (PapaToemmsn).
- Добавлен режим
none_only_active
для настройкиdistributed_ddl_output_mode
. #60340 (Alexander Tokmakov). - Подключения через порт MySQL теперь автоматически выполняются с настройкой
prefer_column_name_to_alias = 1
, чтобы поддерживать QuickSight "из коробки". Также настройкиmysql_map_string_to_text_in_show_columns
иmysql_map_fixed_string_to_text_in_show_columns
теперь включены по умолчанию, что также затрагивает только подключения MySQL. Это повышает совместимость с большим количеством BI инструментов. #60365 (Robert Schulze). - Когда формат вывода - Pretty, и блок состоит из одного числового значения, превышающего миллион, читаемое число будет напечатано справа от таблицы. Например:
┌──────count()─┐ │ 233765663884 │ -- 233.77 миллиарда └──────────────┘
. #60379 (rogeryk). - Позволяет настраивать обработчики HTTP перенаправлений для clickhouse-server. Например, вы можете сделать так, чтобы
/
перенаправлял на Play UI. #60390 (Alexey Milovidov). - Расширенная панель управления теперь имеет немного лучшие цвета для многопоточных графиков. #60391 (Alexey Milovidov).
- Исправлена гонка в коде JavaScript, приводящая к дублированию графиков друг на друге. #60392 (Alexey Milovidov).
- Проверьте на переполнение стека в парсерах, даже если пользователь неправильно сконфигурировал настройку
max_parser_depth
на очень высокое значение. Это закрывает #59622. #60434 (Alexey Milovidov). - Функция
substring
теперь имеет новое имя-псевдонимbyteSlice
. #60494 (Robert Schulze). - Переименована настройка сервера
dns_cache_max_size
вdns_cache_max_entries
, чтобы избежать неопределенности. #60500 (Kirill Nikiforov). SHOW INDEX | INDEXES | INDICES | KEYS
больше не сортирует по столбцам первичного ключа (что было неинтуитивно). #60514 (Robert Schulze).- Улучшение Keeper: аварийная остановка во время старта, если обнаружена недействительная точка снимка, чтобы избежать потери данных. #60537 (Antonio Andelic).
- Добавлено разделение диапазонов чтения MergeTree на пересекающиеся и непересекающиеся с использованием настройки
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability
. #60548 (Maksim Kita). - Расширенная панель управления теперь всегда имеет элементы управления, видимые при прокрутке. Это позволяет вам добавить новый график, не прокручивая вверх. #60692 (Alexey Milovidov).
- Строковые типы и Enums могут использоваться в одном контексте, например: массивы, запросы UNION, условные выражения. Это закрывает #60726. #60727 (Alexey Milovidov).
- Обновление tzdata до 2024a. #60768 (Raúl Marín).
- Поддержка файлов без расширения формата в базе данных Файловой системы. #60795 (Kruglov Pavel).
- Улучшение Keeper: поддержка
leadership_expiry_ms
в настройках Keeper. #60806 (Brokenice0415). - Всегда выводить экспоненциальные числа в форматах JSON независимо от настройки
input_format_try_infer_exponent_floats
. Добавьте настройкуinput_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects
, которая позволяет использовать строковый тип для неоднозначных путей вместо исключения при выводе именованных кортежей из JSON объектов. #60808 (Kruglov Pavel). - Добавьте флаг для SMJ, чтобы считать null как наибольшее/наименьшее. Таким образом, поведение может быть совместимо с другими SQL системами, такими как Apache Spark. #60896 (loudongfeng).
- Версия ClickHouse была добавлена в метаданные Docker. Закрывает #54224. #60949 (Nikolay Monkov).
- Добавлена настройка
parallel_replicas_allow_in_with_subquery = 1
, которая позволяет подзапросы для IN работать с параллельными репликами. #60950 (Nikolai Kochetov). - DNSResolver перемешивает набор разрешенных IP. #60965 (Sema Checherinda).
- Поддержка обнаружения формата вывода по расширению файла в
clickhouse-client
иclickhouse-local
. #61036 (豪肥肥). - Проверка обновления лимита памяти периодически. #61049 (Han Fei).
- Включено профилирование процессоров (время, затраченное на входные и выходные байты для сортировки, агрегации и т.д.) по умолчанию. #61096 (Azat Khuzhin).
- Добавлена функция
toUInt128OrZero
, которая была пропущена по ошибке (ошибка связана с https://github.com/ClickHouse/ClickHouse/pull/945). Совместимые псевдонимыFROM_UNIXTIME
иDATE_FORMAT
(они не являются нативными для ClickHouse и существуют только для совместимости с MySQL) были сделаны нечувствительными к регистру, как и ожидалось для SQL-совместимых псевдонимов. #61114 (Alexey Milovidov). - Улучшения для проверок доступа, позволяющие отзывать неполномочные права в случае, если у целевого пользователя нет прав на отзыв. Пример:
sql GRANT SELECT ON *.* TO user1; REVOKE SELECT ON system.* FROM user1;
. #61115 (pufit). - Исправлена ошибка в предыдущем оптимизаторе: https://github.com/ClickHouse/ClickHouse/pull/59698: удалите 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
во всех местах, где мы создаем временные данные, например, при внешней сортировке памяти и внешнем GROUP BY. Ранее она работала только в алгоритме соединения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). - Используйте управляемую идентичность для 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 (Yarik Briukhovetskyi). - Исправлена проблема kql, выявленная wingfuzz #59626 (Yong Wang).
- Исправлена ошибка "Чтение за последним смещением" для AsynchronousBoundedReadBuffer #59630 (Vitaly Baranov).
- rabbitmq: исправлена проблема, когда не было ни подтвержденных, ни неподтвержденных сообщений #59775 (Kseniia Sumarokova).
- Исправлено выполнение функций над const и LowCardinality с GROUP BY const для анализатора #59986 (Azat Khuzhin).
- Исправлено преобразование масштаба для DateTime64 #60004 (Yarik Briukhovetskyi).
- Исправлено 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).
- Исправлено неконсистентное форматирование запросов #60095 (Alexey Milovidov).
- Исправлено неконсистентное форматирование explain в подзапросах #60102 (Alexey Milovidov).
- Исправлен сбой cosineDistance с Nullable #60150 (Raúl Marín).
- Разрешить приведение логических значений в строковом представлении к истинным логическим значениям #60160 (Robert Schulze).
- Исправлено system.s3queue_log #60166 (Kseniia Sumarokova).
- Исправлено arrayReduce с наименованием агрегатной функции nullable #60188 (Raúl Marín).
- Исправлено выполнение действий во время предварительной фильтрации (PK, обрезка партиций) #60196 (Azat Khuzhin).
- Скрыта конфиденциальная информация для s3queue #60233 (Kseniia Sumarokova).
- Откат "Заменить
ORDER BY ALL
наORDER BY *
" #60248 (Robert Schulze). - Azure Blob Storage: исправлены проблемы с конечной точкой и префиксом #60251 (SmitaRKulkarni).
- Исправлены коды исключений http. #60252 (Austin Kothig).
- Исправлена ошибка кэша LRUResource (кэш Hive) #60262 (shanfengp).
- s3queue: исправлена ошибка (также исправляет нестабильный тест_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).
- Попытка исправить логическую ошибку 'Невозможно захватить колонку, так как она имеет несовместимый тип' в mapContainsKeyLike #60451 (Kruglov Pavel).
- Исправлен OptimizeDateOrDateTimeConverterWithPreimageVisitor с null-аргументами #60453 (Raúl Marín).
- Попытка избежать вычисления скалярных подзапросов для CREATE TABLE. #60464 (Nikolai Kochetov).
- Слияние #59674. #60470 (Alexey Milovidov).
- Корректная проверка ключей в s3Cluster #60477 (Antonio Andelic).
- Исправление взаимной блокировки в параллельном парсинге, когда много строк пропускается из-за ошибок #60516 (Kruglov Pavel).
- Исправление_max_query_size_for_kql_compound_operator: #60534 (Yong Wang).
- Исправление Keeper: добавьте тайм-ауты при ожидании журналов подтверждений #60544 (Antonio Andelic).
- Уменьшите количество читаемых строк из
system.numbers
#60546 (JackyWoo). - Не выводить советы по числам для типов даты #60577 (Raúl Marín).
- Исправлено чтение из MergeTree с недетерминированными функциями в фильтре #60586 (Kruglov Pavel).
- Исправлена логическая ошибка по неверному значению типа настройки совместимости #60596 (Kruglov Pavel).
- Исправлено неконсистентное состояние агрегатной функции в смешанных кластерах x86-64 / ARM #60610 (Harry Lee).
- исправление(prql): надёжный обработчик паники #60615 (Maximilian Roos).
- Исправлено
intDiv
для десятичных и дата-аргументов #60672 (Yarik Briukhovetskyi). - Исправлено: развернуть CTE в alter modify query #60682 (Yakov Olkhovskiy).
- Исправлено system.parts для неатомарного/обычного движка базы данных (т.е. Memory) #60689 (Azat Khuzhin).
- Исправлена "Неверное определение хранилища в файле метаданных" для параметризованных представлений #60708 (Azat Khuzhin).
- Исправлен переполнение буфера в CompressionCodecMultiple #60731 (Alexey Milovidov).
- Удалить бессмыслицу из SQL/JSON #60738 (Alexey Milovidov).
- Удалить неправильную проверку санитации в агрегатной функции quantileGK #60740 (李扬).
- Исправлен insert-select + insert_deduplication_token баг, установив потоки в 1 #60745 (Jordi Villar).
- Запретить установку пользовательских заголовков метаданных для неподдерживаемых операций многокомпонентной загрузки #60748 (Francisco J. Jurado Moreno).
- Исправлено toStartOfInterval #60763 (Andrey Zvonov).
- Исправлен сбой в arrayEnumerateRanked #60764 (Raúl Marín).
- Исправлен сбой при использовании input() в INSERT SELECT JOIN #60765 (Kruglov Pavel).
- Исправлен сбой с разными значениями allow_experimental_analyzer в подзапросах #60770 (Dmitry Novik).
- Удалить рекурсию при чтении из S3 #60849 (Antonio Andelic).
- Исправить возможную зависание при ошибке в HashedDictionaryParallelLoader #60926 (vdimir).
- Исправлено асинхронное ВОССТАНОВЛЕНИЕ с Реплицированной базой данных #60934 (Antonio Andelic).
- Исправлена взаимная блокировка при асинхронных вставках в
Log
таблицы через нативный протокол #61055 (Anton Popov). - Исправлено ленивое выполнение аргумента по умолчанию в dictGetOrDefault для RangeHashedDictionary #61196 (Kruglov Pavel).
- Исправлено несколько ошибок в groupArraySorted #61203 (Raúl Marín).
- Исправлен reconfig Keeper для автономной бинарной версии #61233 (Antonio Andelic).
- Исправлено использование session_token в S3 движке #61234 (Kruglov Pavel).
- Исправлен возможный неверный результат агрегатной функции
uniqExact
#61257 (Anton Popov). - Исправлены ошибки в show database #61269 (Raúl Marín).
- Исправлена логическая ошибка в RabbitMQ storage с MATERIALIZED колонками #61320 (vdimir).
- Исправлено CREATE OR REPLACE DICTIONARY #61356 (Vitaly Baranov).
- Исправлен ATTACH запрос с внешним ON CLUSTER #61365 (Nikolay Degterinsky).
- Исправлена проблема с разделением DAG действий #61458 (Raúl Marín).
- Исправлено завершение неудачного ВОССТАНОВЛЕНИЯ #61466 (Vitaly Baranov).
- Правильное отключение async_insert_use_adaptive_busy_timeout с настройками совместимости #61468 (Raúl Marín).
- Разрешить постановку в очередь в.restore pool #61475 (Nikita Taranov).
- Исправлена ошибка при чтении system.parts с использованием UUID (проблема 61220). #61479 (Dan Wu).
- Исправлен сбой в оконном представлении #61526 (Alexey Milovidov).
- Исправлен
repeat
с не оригинальными целыми числами #61527 (Antonio Andelic). - Исправлен аргумент клиента
-s
#61530 (Mikhail f. Shiryaev). - Исправлен сбой в arrayPartialReverseSort #61539 (Raúl Marín).
- Исправлен поиск строки с фиксированной позицией #61547 (Antonio Andelic).
- Исправлено addDays, вызывающее ошибку при использовании datetime64 #61561 (Shuai li).
- Исправлен
system.part_log
для асинхронной вставки с дедупликацией #61620 (Antonio Andelic). - Исправлено состояние Non-ready для system.parts. #61666 (Nikolai Kochetov).