Changelog v24.2
Тег выпуска ClickHouse: 24.2.2.15987
Несовместимое изменение
- Проверять подозрительные/экспериментальные типы в вложенных типах. Ранее такие типы (кроме JSON) в вложенных типах, таких как Array/Tuple/Map, не проверялись. #59385 (Kruglov Pavel).
- Клаузула сортировки
ORDER BY ALL
(введенная в v23.12) заменена наORDER BY *
. Предыдущий синтаксис был слишком подвержен ошибкам для таблиц с колонкойall
. #59450 (Robert Schulze). - Добавлена проверка на количество потоков и размеры блоков. #60138 (Raúl Marín).
- Отклонять входящие запросы INSERT в случае, если настройки уровня запроса
async_insert
иdeduplicate_blocks_in_dependent_materialized_views
включены одновременно. Это поведение контролируется настройкойthrow_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert
и включено по умолчанию. Это продолжение #59699, необходимого для разблокировки #59915. #60888 (Nikita Mikhaylov). - Утилита
clickhouse-copier
перемещена в отдельный репозиторий на GitHub: https://github.com/ClickHouse/copier. Она больше не включена в пакет, но по-прежнему доступна для загрузки отдельно. Это закрывает: #60734 Это закрывает: #60540 Это закрывает: #60250 Это закрывает: #52917 Это закрывает: #51140 Это закрывает: #47517 Это закрывает: #47189 Это закрывает: #46598 Это закрывает: #40257 Это закрывает: #36504 Это закрывает: #35485 Это закрывает: #33702 Это закрывает: #26702 ### Запись документации для изменений, касающихся пользователей. #61058 (Nikita Mikhaylov). - Для повышения совместимости с MySQL функция
locate
теперь принимает аргументы(needle, haystack[, start_pos])
по умолчанию. Предыдущее поведение(haystack, needle, [, start_pos])
можно восстановить, установивfunction_locate_has_mysql_compatible_argument_order = 0
. #61092 (Robert Schulze). - Устаревшие данные в памяти были объявлены устаревшими с версии 23.5 и не поддерживались с версии 23.10. Теперь оставшийся код удалён. Продолжение #55186 и #45409. Скорее всего, вы не использовали данные в памяти, поскольку они были доступны только до версии 23.5 и только при их ручном включении, задав соответствующие SETTINGS для таблицы MergeTree. Чтобы проверить, есть ли у вас данные в памяти, выполните следующий запрос:
SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type
. Чтобы отключить использование данных в памяти, выполнитеALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT
. Перед обновлением со старых релизов ClickHouse сначала проверьте, чтобы у вас не было данных в памяти. Если есть данные в памяти, сначала отключите их, затем подождите, пока не останется данных в памяти, и продолжите обновление. #61127 (Alexey Milovidov). - Запретить
SimpleAggregateFunction
вORDER BY
таблицMergeTree
(так же как иAggregateFunction
, но они запрещены, потому что их нельзя сравнивать) по умолчанию (используйтеallow_suspicious_primary_key
, чтобы разрешить их). #61399 (Azat Khuzhin). - ClickHouse позволяет произвольные двоичные данные в типе данных String, который обычно является UTF-8. Parquet/ORC/Arrow Strings поддерживают только UTF-8. Поэтому вы можете выбрать, какой тип данных Arrow использовать для типа данных ClickHouse String - String или Binary. Это контролируется настройками
output_format_parquet_string_as_string
,output_format_orc_string_as_string
,output_format_arrow_string_as_string
. Хотя Binary было бы более корректным и совместимым, использование String по умолчанию будет соответствовать ожиданиям пользователей в большинстве случаев. Parquet/ORC/Arrow поддерживают множество методов сжатия, включая lz4 и zstd. ClickHouse поддерживает все методы сжатия. Некоторые менее продвинутые инструменты не поддерживают более быстрый метод сжатияlz4
, поэтому мы устанавливаемzstd
по умолчанию. Это контролируется настройкамиoutput_format_parquet_compression_method
,output_format_orc_compression_method
иoutput_format_arrow_compression_method
. Мы изменили значение по умолчанию для Parquet и ORC наzstd
, но не для Arrow (это подчеркивается как для низкоуровневого использования). #61817 (Alexey Milovidov). - Исправление проблемы безопасности с материализованными представлениями, которое позволяло пользователю вставлять в таблицу без необходимых прав. Исправление проверяет, есть ли у пользователя разрешение на вставку не только в материализованное представление, но и во все подлежащие таблицы. Это означает, что некоторые запросы, которые раньше работали, теперь могут завершиться ошибкой из-за недостатка привилегий. Чтобы решить эту проблему, релиз вводит новую функцию SQL-безопасности для представлений https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)
Новая функция
- Режим поддержки Topk/topkweighed, который возвращает количество значений и его ошибку. #54508 (UnamedRus).
- Добавлен новый синтаксис, позволяющий указать пользователя-определителя в представлении/материализованном представлении. Это позволяет выполнять выборки/вставки из представлений без явных разрешений для подлежащих таблиц. #54901 (pufit).
- Реализована автоматическая конверсия таблиц Merge Tree различных типов в реплицированный движок. Создайте пустой файл
convert_to_replicated
в директории данных таблицы (/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
), и эта таблица будет автоматически конвертирована при следующем запуске сервера. #57798 (Kirill). - Добавлена функция таблицы
mergeTreeIndex
. Она представляет содержимое индекса и файлов меток таблицMergeTree
. Она может использоваться для интроспекции. Синтаксис:mergeTreeIndex(database, table, [with_marks = true])
, гдеdatabase.table
- это существующая таблица с движкомMergeTree
. #58140 (Anton Popov). - Попробуйте автоматически определить формат файла во время вывода схемы, если он неизвестен в движках
file/s3/hdfs/url/azureBlobStorage
. Закрывает #50576. #59092 (Kruglov Pavel). - Добавлена функция generate_series как таблица. Эта функция генерирует таблицу с арифметической прогрессией с натуральными числами. #59390 (divanik).
- Добавлен запрос
ALTER TABLE table FORGET PARTITION partition
, который удаляет узлы ZooKeeper, относящиеся к пустой партиции. #59507 (Sergei Trifonov). - Поддержка чтения и записи резервных копий как tar-архивов. #59535 (josh-hildred).
- Предоставляет новую агрегирующую функцию ‘groupArrayIntersect’. Продолжение: #49862. #59598 (Yarik Briukhovetskyi).
- Реализована таблица system.dns_cache, которая может быть полезна для отладки проблем с DNS. #59856 (Kirill Nikiforov).
- Реализована поддержка ведер S3Express. #59965 (Nikita Taranov).
- Кодек
LZ4HC
примет новый уровень 2, который быстрее, чем предыдущий минимальный уровень 3, за счет меньшего сжатия. В предыдущих версияхLZ4HC(2)
и менее было то же самое, что иLZ4HC(3)
. Автор: Cyan4973. #60090 (Alexey Milovidov). - Реализована таблица system.dns_cache, которая может быть полезна для отладки проблем с DNS. Новая серверная настройка dns_cache_max_size. #60257 (Kirill Nikiforov).
- Добавлена функция
toMillisecond
, которая возвращает миллисекундную компоненту для значений типовDateTime
илиDateTime64
. #60281 (Shaun Struwig). - Поддержка однопараметрической версии для функции таблицы merge, как
merge(['db_name', ] 'tables_regexp')
. #60372 (豪肥肥). - Сделать все названия форматов нечувствительными к регистру, такие как Tsv, или TSV, или tsv, или даже rowbinary. #60420 (豪肥肥).
- Добавлен новый синтаксис, позволяющий указать пользователя-определителя в представлении/материализованном представлении. Это позволяет выполнять выборки/вставки из представлений без явных разрешений для подлежащих таблиц. #60439 (pufit).
- Добавить четыре свойства к
StorageMemory
(memory-engine)min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep
иmax_rows_to_keep
- Добавить тесты для отражения новых изменений - Обновить документациюmemory.md
- Добавить свойство таблицыcontext
кMemorySink
, чтобы обеспечить доступ к пределам параметров таблицы. #60612 (Jake Bamrah). - Добавлена функция
toMillisecond
, которая возвращает миллисекундную компоненту для значений типовDateTime
илиDateTime64
. #60649 (Robert Schulze). - Отдельные лимиты на количество ожидающих и выполняющихся запросов. Добавлена новая серверная настройка
max_waiting_queries
, которая ограничивает количество запросов, ожидающих из-заasync_load_databases
. Существующие лимиты на количество выполняющихся запросов больше не учитывают ожидающие запросы. #61053 (Sergei Trifonov). - Добавить поддержку
ATTACH PARTITION ALL
. #61107 (Kirill Nikiforov).
Улучшение производительности
- Устранение аггрегаторов min/max/any/anyLast ключей GROUP BY в разделе SELECT. #52230 (JackyWoo).
- Улучшение производительности сериализованного метода агрегации при вовлечении нескольких [nullable] колонок. Это общая версия #51399, которая не идет на компромисс с целостностью абстракции. #55809 (Amos Bird).
- Ленивая сборка выходных данных соединения, чтобы улучшить производительность ALL-соединения. #58278 (LiuNeng).
- Улучшения агрегационных функций ArgMin / ArgMax / any / anyLast / anyHeavy, а также запросов
ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1
. #58640 (Raúl Marín). - Оптимизация производительности sum/avg в зависимости от типа bigint и big decimal, сокращая ветвления. #59504 (李扬).
- Улучшение производительности SELECT-ов с активными мутациями. #59531 (Azat Khuzhin).
- Тривиальная оптимизация фильтра по колонкам. Избежать фильтрованных колонок, чей базовый тип данных не является числом, отфильтрованным с
result_size_hint = -1
. Пиковая память может быть уменьшена до 44% от первоначального в некоторых случаях. #59698 (李扬). - Первичный ключ будет использовать меньшее количество памяти. #60049 (Alexey Milovidov).
- Улучшение использования памяти для первичного ключа и некоторых других операций. #60050 (Alexey Milovidov).
- Первичные ключи таблиц будут загружаться в память лениво при первом доступе. Это контролируется новой настройкой MergeTree
primary_key_lazy_load
, которая включена по умолчанию. Это дает несколько преимуществ: - он не будет загружен для неиспользуемых таблиц; - если памяти недостаточно, исключение будет выброшено при первом использовании вместо запуска сервера. Это имеет несколько недостатков: - задержка загрузки первичного ключа будет оплачена при первом запросе, а не до приема подключений; это теоретически может привести к проблеме громкого стада. Это закрывает #11188. #60093 (Alexey Milovidov). - Векторизованная функция
dotProduct
, которая полезна для векторного поиска. #60202 (Robert Schulze). - Если первичный ключ таблицы состоит в основном из бесполезных колонок, не храните их в памяти. Это контролируется новой настройкой
primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns
со значением0.9
по умолчанию, что означает: для составного первичного ключа, если колонка изменяет свое значение как минимум в 0.9 из всех случаев, последующие колонки после нее не будут загружены. #60255 (Alexey Milovidov). - Выполняйте функцию multiIf по колонкам, когда базовый тип результата - число. #60384 (李扬).
- Как показано на рисунке 1, замена "&&" на "&" может сгенерировать SIMD код.
Рисунок 1. Код, скомпилированный из '&&' (слева) и '&' (справа). #60498 (Zhiguo Zhou).
- Более быстрые (почти в 2 раза) мьютексы (были медленнее из-за ThreadFuzzer). #60823 (Azat Khuzhin).
- Переместите очистку соединений из подготовки в работу и очищайте несколько соединений параллельно. #60845 (lizhuoyu5).
- Оптимизация insertManyFrom для nullable number или nullable string. #60846 (李扬).
- Оптимизирована функция
dotProduct
, чтобы избежать ненужных и затратных копий памяти. #60928 (Robert Schulze). - Операции с кэшем файловой системы будут меньше страдать от соревнования за блокировки. #61066 (Alexey Milovidov).
- Оптимизация ColumnString::replicate и предотвращение оптимизации memcpySmallAllowReadWriteOverflow15Impl в встроенный memcpy. Закрыть #61074. ColumnString::replicate ускоряется в 2.46 раз на x86-64. #61075 (李扬).
- 30 раз быстрее печать для 256-битных целых чисел. #61100 (Raúl Marín).
- Если запрос с синтаксической ошибкой содержал сопоставитель COLUMNS с регулярным выражением, регулярное выражение компилировалось каждый раз во время обратной проверки парсера, вместо того чтобы компилироваться один раз. Это была фундаментальная ошибка. Скомпилированное regexp было помещено в AST. Но буква A в AST означает "абстрактный", что означает, что он не должен содержать тяжелых объектов. Части AST могут быть созданы и отброшены во время парсинга, включая большое количество обратных проверок. Это приводит к медлительности на стороне парсинга и, следовательно, позволяет DoS пользователю с правами только на чтение. Но основная проблема заключается в том, что это мешает прогрессу в фуззерах. #61543 (Alexey Milovidov).
Improvement
- При выполнении запроса
MODIFY COLUMN
для материализованных представлений проверьте структуру внутренней таблицы, чтобы убедиться, что каждая колонка существует. #47427 (sunny). - Добавлена таблица
system.keywords
, которая содержит все ключевые слова парсера. В основном это необходимо и будет использоваться для более качественной проверки и подсветки синтаксиса. #51808 (Nikita Mikhaylov). - Добавлена поддержка параметризованного представления с анализатором, чтобы не анализировать создание параметризованного представления. Рефакторинг существующей логики параметризованного представления для того, чтобы не анализировать создание параметризованного представления. #54211 (SmitaRKulkarni).
- Обычный движок базы данных устарел. Вы получите предупреждение в
clickhouse-client
, если ваш сервер его использует. Это закрывает #52229. #56942 (shabroo). - Все блокировки с нулевой копией, связанные с таблицей, должны быть удалены при ее удалении. Директория, содержащая эти блокировки, также должна быть удалена. #57575 (Sema Checherinda).
- Добавлена возможность короткого замыкания для функции
dictGetOrDefault
. Закрывает #52098. #57767 (jsc0218). - Разрешено объявление enum в структуре внешней таблицы. #57857 (Duc Canh Le).
- Теперь запуск
ALTER COLUMN MATERIALIZE
на колонке с выражениемDEFAULT
илиMATERIALIZED
записывает правильные значения: значение по умолчанию для существующих частей с значением по умолчанию или не-значение по умолчанию для существующих частей с не-значением по умолчанию. Ранее значение по умолчанию записывалось для всех существующих частей. #58023 (Duc Canh Le). - Включена логика обратного отката (например, экспоненциальная). Это обеспечит возможность уменьшения использования процессора, памяти и размеров журналов. #58036 (MikhailBurdukov).
- Учитывайте легковесные удаленные строки при выборе частей для слияния. #58223 (Zhuo Qiu).
- Разрешите определять
volume_priority
вstorage_configuration
. #58533 (Andrey Zvonov). - Добавлена поддержка типа Date32 в кодеке T64. #58738 (Hongbin Ma).
- Этот PR делает http/https соединения повторно используемыми для всех случаев использования. Даже когда ответ 3xx или 4xx. #58845 (Sema Checherinda).
- Добавлены комментарии для колонок в нескольких системных таблицах. Продолжение https://github.com/ClickHouse/ClickHouse/pull/58356. #59016 (Nikita Mikhaylov).
- Теперь мы можем использовать виртуальные колонки в
PREWHERE
. Это полезно для не-константных виртуальных колонок, таких как_part_offset
. #59033 (Amos Bird). - Настройки для распределенного движка таблицы теперь могут быть указаны в конфигурационном файле сервера (аналогично настройкам MergeTree), например:
<distributed> <flush_on_detach>false</flush_on_detach> </distributed>
. #59291 (Azat Khuzhin). - Улучшение Keeper: кэшировать только определенное количество журналов в памяти, контролируемое
latest_logs_cache_size_threshold
иcommit_logs_cache_size_threshold
. #59460 (Antonio Andelic). - Вместо использования постоянного ключа теперь объектное хранилище генерирует ключ для определения возможности удаления объектов. #59495 (Sema Checherinda).
- Не интерпретируйте числа с плавающей запятой в экспоненциальной нотации по умолчанию. Добавьте настройку
input_format_try_infer_exponent_floats
, которая восстановит предыдущее поведение (отключено по умолчанию). Закрывает #59476. #59500 (Kruglov Pavel). - Разрешите операции изменения окружить скобками. Эмиссия скобок может контролироваться конфигурацией
format_alter_operations_with_parentheses
. По умолчанию в отформатированных запросах скобки эмитируются, поскольку мы храним отформатированные операции изменения в некоторых местах как метаданные (например: мутации). Новый синтаксис уточняет некоторые запросы, где операции изменения заканчиваются в списке. Например:ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c
не может быть правильно разобран с помощью старого синтаксиса. В новом синтаксисе запросALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c)
очевиден. Более старые версии не могут читать новый синтаксис, поэтому использование нового синтаксиса может вызвать проблемы, если новые и старые версии ClickHouse использованы в одном кластере. #59532 (János Benjamin Antal). - Увеличена версия Intel QPL (используется кодеком
DEFLATE_QPL
) с v1.3.1 до v1.4.0. Также исправлена ошибка в механизме таймаута опроса, так как мы заметили, что в некоторых случаях таймаут не будет работать должным образом. Если таймаут происходит, IAA и CPU могут обрабатывать буфер одновременно. До настоящего времени нам стоит убедиться, что статус кодека IAA не QPL_STS_BEING_PROCESSED, затем откатиться на SW кодек. #59551 (jasperzhu). - Добавьте позиционное чтение в libhdfs3. Если вы хотите вызвать позиционное чтение в libhdfs3, используйте функцию
hdfsPread
в hdfs.h следующим образом:tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);
. #59624 (M1eyu). - Проверьте на переполнение стека в парсерах, даже если пользователь неправильно настроил настройку
max_parser_depth
на очень высокое значение. Это закрывает #59622. #59697 (Alexey Milovidov). - Упрощено поведение создания именованных коллекций в хранилище Kafka для xml и sql. #59710 (Pervakov Grigorii).
- Разрешите uuid в
replica_path
, еслиCREATE TABLE
явно его имеет. #59908 (Azat Khuzhin). - Добавьте колонку
metadata_version
таблицыReplicatedMergeTree
в системной таблицеsystem.tables
. #59942 (Maksim Kita). - Улучшение Keeper: добавьте попытки при сбоях для операций, связанных с диском. #59980 (Antonio Andelic).
- Добавлен новый параметр конфигурации
backups.remove_backup_files_after_failure
:<clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>
. #60002 (Vitaly Baranov). - Используйте несколько потоков при чтении метаданных таблиц из резервной копии во время выполнения команды RESTORE. #60040 (Vitaly Baranov).
- Теперь, если
StorageBuffer
имеет более 1 шард (num_layers
> 1), фоновая выгрузка будет происходить одновременно для всех шардов в нескольких потоках. #60111 (alesapin). - Поддержка указания пользователей для конкретных настроек S3 в конфигурации с использованием ключа
user
. #60144 (Antonio Andelic). - Копирование файла S3 в GCP с запасным решением на случай, если GCP вернул
Internal Error
с кодом HTTP ошибкиGATEWAY_TIMEOUT
. #60164 (Maksim Kita). - Разрешите "local" в качестве типа объектного хранения вместо "local_blob_storage". #60165 (Kseniia Sumarokova).
- Реализовано оператор сравнения для значений Variant и правильное вставка Field в колонку Variant. Не позволяйте создавать тип
Variant
с похожими типами варианта по умолчанию (разрешено под настройкойallow_suspicious_variant_types
). Закрывает #59996. Закрывает #59850. #60198 (Kruglov Pavel). - Улучшена общая удобство использования виртуальных колонок. Теперь разрешено использовать виртуальные колонки в
PREWHERE
(это полезно для не-константных виртуальных колонок, таких как_part_offset
). Теперь встроенная документация доступна для виртуальных колонок в виде комментариев к колонке в запросеDESCRIBE
с включенной настройкойdescribe_include_virtual_columns
. #60205 (Anton Popov). - Краткое замыкание выполнения для
ULIDStringToDateTime
. #60211 (Juan Madurga). - Добавлена колонка
query_id
для таблицsystem.backups
иsystem.backup_log
. Добавлен стек вызовов ошибки в колонкуerror
. #60220 (Maksim Kita). - Параллельная выгрузка ожидающих блоков INSERT распределенного движка при
DETACH
/выключении сервера иSYSTEM FLUSH DISTRIBUTED
(Параллелизм будет работать только если у вас есть много-дисковая политика для таблицы (как и все в распределенном движке сейчас)). #60225 (Azat Khuzhin). - Настройка фильтра некорректна в
joinRightColumnsSwitchNullability
, разрешите #59625. #60259 (lgbo). - Добавьте настройку для принудительного чтения через кэш для слияний. #60308 (Kseniia Sumarokova).
- Проблема #57598 упоминает о варианте поведения в отношении обработки транзакций. Выполненный
COMMIT/ROLLBACK
, когда транзакция неактивна, сообщается как ошибка, в отличие от поведения MySQL. #60338 (PapaToemmsn). - Добавлен режим
none_only_active
для настройкиdistributed_ddl_output_mode
. #60340 (Alexander Tokmakov). - Соединения через порт MySQL теперь автоматически запускаются с настройкой
prefer_column_name_to_alias = 1
, чтобы поддерживать QuickSight "из коробки". Также настройкиmysql_map_string_to_text_in_show_columns
иmysql_map_fixed_string_to_text_in_show_columns
теперь включены по умолчанию, также влияя только на соединения MySQL. Это повышает совместимость с большим количеством BI инструментов. #60365 (Robert Schulze). - Когда формат вывода является форматом Pretty и блок состоит из единственного числового значения, превышающего один миллион, читаемое число будет распечатано справа от таблицы. например:
┌──────count()─┐ │ 233765663884 │ -- 233.77 миллиарда └──────────────┘
. #60379 (rogeryk). - Разрешите настраивать обработчики HTTP перенаправления для
clickhouse-server
. Например, вы можете сделать так, чтобы/
перенаправляло на интерфейс Play. #60390 (Alexey Milovidov). - Расширенная панель управления имеет немного лучшие цвета для многослойных графиков. #60391 (Alexey Milovidov).
- Исправлена гонка в коде JavaScript, ведущая к дублированию графиков один над другим. #60392 (Alexey Milovidov).
- Проверьте на переполнение стека в парсерах, даже если пользователь неправильно настроил настройку
max_parser_depth
на очень высокое значение. Это закрывает #59622. #60434 (Alexey Milovidov). - Функция
substring
теперь имеет новый псевдонимbyteSlice
. #60494 (Robert Schulze). - Переименована настройка сервера
dns_cache_max_size
вdns_cache_max_entries
для уменьшения неоднозначности. #60500 (Kirill Nikiforov). SHOW INDEX | INDEXES | INDICES | KEYS
больше не сортирует по колонкам первичного ключа (что было неинтуитивно). #60514 (Robert Schulze).- Улучшение Keeper: прерывание во время запуска, если обнаружен неверный снимок, чтобы избежать потери данных. #60537 (Antonio Andelic).
- Добавлено чтение разбиения MergeTree на пересекающиеся и не пересекающиеся инъекции сбоев с помощью настройки
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability
. #60548 (Maksim Kita). - Расширенная панель управления теперь имеет элементы управления, всегда видимые при прокрутке. Это позволяет добавлять новый график, не прокручивая вверх. #60692 (Alexey Milovidov).
- Типы строк и Enums могут использоваться в одном контексте, например: массивы, запросы UNION, условные выражения. Это закрывает #60726. #60727 (Alexey Milovidov).
- Обновлена tzdata до 2024a. #60768 (Raúl Marín).
- Поддержка файлов без расширения формата в файловой базе данных. #60795 (Kruglov Pavel).
- Улучшение Keeper: поддержка
leadership_expiry_ms
в настройках Keeper. #60806 (Brokenice0415). - Всегда интерпретируйте экспоненциальные числа в форматах JSON независимо от настройки
input_format_try_infer_exponent_floats
. Добавьте настройкуinput_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects
, которая позволяет использовать строковый тип для неоднозначных путей вместо исключения во время вывода кортежей из JSON объектов. #60808 (Kruglov Pavel). - Добавьте флаг для SMJ, чтобы считать null самым большим/маленьким. Таким образом, поведение может быть совместимо с другими SQL системами, как Apache Spark. #60896 (loudongfeng).
- Версия Clickhouse была добавлена в метаданные docker. Закрывает #54224. #60949 (Nikolay Monkov).
- Добавлена настройка
parallel_replicas_allow_in_with_subquery = 1
, которая разрешает подзапросы для IN работать с параллельными репликами. #60950 (Nikolai Kochetov). - DNSResolver перемешивает набор разрешенных IP-адресов. #60965 (Sema Checherinda).
- Поддержка определения формата вывода по расширению файла в
clickhouse-client
иclickhouse-local
. #61036 (豪肥肥). - Периодически проверяйте обновление лимита памяти. #61049 (Han Fei).
- Включить профилирование процессоров (время, затраченное на общие и выходные байты для сортировки, агрегации и т.д.) по умолчанию. #61096 (Azat Khuzhin).
- Добавьте функцию
toUInt128OrZero
, которая была пропущена по ошибке (ошибка связана с https://github.com/ClickHouse/ClickHouse/pull/945). Совместимые псевдонимыFROM_UNIXTIME
иDATE_FORMAT
(они не являются родными для ClickHouse и существуют только для совместимости с MySQL) были сделаны нечувствительными к регистру, как и ожидается для псевдонимов SQL. #61114 (Alexey Milovidov). - Улучшения проверок доступа, позволяющие аннулировать неполученные права, если целевой пользователь также не имеет аннулирующих прав. Пример: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit).
- Исправлена ошибка в предыдущей оптимизации: https://github.com/ClickHouse/ClickHouse/pull/59698: убраны break, чтобы убедиться, что первая отфильтрованная колонка имеет минимальный размер cc @jsc0218. #61145 (李扬).
- Исправлена функция
has()
с колонкойNullable
(исправляет #60214). #61249 (Mikhail Koviazin). - Теперь можно указать атрибут
merge="true"
в замещениях конфигурации для поддеревьев<include from_zk="/path" merge="true">
. Если этот атрибут указан, ClickHouse объединит поддерево с существующей конфигурацией, в противном случае поведение по умолчанию — добавление нового содержимого к конфигурации. #61299 (alesapin). - Добавьте асинхронные метрики для отображения виртуальной памяти: VMMaxMapCount и VMNumMaps. Закрывает #60662. #61354 (Tuan Pham Anh).
- Используйте настройку
temporary_files_codec
во всех местах, где мы создаем временные данные, например, внешней сортировке в памяти и внешней группировке в памяти. Ранее это работало только в алгоритме JOINpartial_merge
. #61456 (Maksim Kita). - Удалите дублирующую проверку
containing_part.empty()
, она уже проверяется здесь: https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141. #61467 (William Schoeffel). - Добавьте новую настройку
max_parser_backtracks
, которая позволяет ограничить сложность парсинга запросов. #61502 (Alexey Milovidov). - Меньше конфликтов во время динамического изменения размера кэша файловой системы. #61524 (Kseniia Sumarokova).
- Запрещен шардированный режим очереди StorageS3, так как он будет переписан. #61537 (Kseniia Sumarokova).
- Исправлена ошибка: с
use_leagcy_max_level
наuse_legacy_max_level
. #61545 (William Schoeffel). - Удалены некоторые дублирующие записи в
blob_storage_log
. #61622 (YenchangChan). - Добавлена функция
current_user
как псевдоним совместимости для MySQL. #61770 (Yarik Briukhovetskyi). - Используйте управляемую идентификацию для ввода-вывода резервных копий при использовании Azure Blob Storage. Добавьте настройку, чтобы предотвратить ClickHouse от попытки создать несуществующий контейнер, для чего требуются права на уровне учетной записи хранения. #61785 (Daniel Pozo Escalona).
- В предыдущей версии некоторые числа в форматов Pretty не были достаточно красивыми. #61794 (Alexey Milovidov).
- Долгое значение в форматах Pretty не будет обрезано, если оно является единственным значением в результирующем наборе, например, в результате запроса
SHOW CREATE TABLE
. #61795 (Alexey Milovidov). - Аналогично
clickhouse-local
,clickhouse-client
примет опцию--output-format
как синоним к опции--format
. Это закрывает #59848. #61797 (Alexey Milovidov). - Если стандартный вывод — это терминал, и формат вывода не задан,
clickhouse-client
и аналогичные инструменты будут использоватьPrettyCompact
по умолчанию, аналогично интерактивному режиму.clickhouse-client
иclickhouse-local
будут обрабатывать аргументы командной строки для входных и выходных форматов в едином формате. Это закрывает #61272. #61800 (Alexey Milovidov). - Группы цифр с подчеркиванием в форматах Pretty для лучшей читаемости. Это контролируется новой настройкой
output_format_pretty_highlight_digit_groups
. #61802 (Alexey Milovidov).