Обратно несовместимые изменения
- Функции
greatestиleastтеперь игнорируют входные значения NULL, тогда как раньше возвращали NULL, если один из аргументов был NULL. Например,SELECT greatest(1, 2, NULL)теперь возвращает 2. Это делает их поведение совместимым с PostgreSQL. #65519 (kevinyhzou). - По умолчанию типы Variant/Dynamic больше не разрешены в ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY, поскольку это может приводить к неожиданным результатам. #69731 (Pavel Kruglov).
- Удалены системные таблицы
generate_seriesиgenerateSeries. Они были добавлены по ошибке здесь: #59390. #71091 (Alexey Milovidov). - Удалён
StorageExternalDistributed. Закрывает #70600. #71176 (flynn). - Настройки из конфигурации сервера (users.xml) теперь применяются и на клиенте. Это полезно для настроек формата, например
date_time_output_format. #71178 (Michael Kolupaev). - Исправлена возможная ошибка
No such file or directory, возникающая из-за неэкранированных специальных символов в файлах для подстолбцов JSON. #71182 (Pavel Kruglov). - У движков таблиц Kafka, NATS и RabbitMQ теперь есть собственные привилегии в иерархии
SOURCES. Добавьте эти привилегии всем пользователям базы данных, кроме используемых по умолчанию, которые создают таблицы с такими типами движков. #71250 (Christoph Wurm). - Перед выполнением теперь проверяется весь запрос мутации (включая подзапросы). Это предотвращает случайный запуск некорректного запроса и накопление нерабочих мутаций, которые блокируют корректные мутации. #71300 (Christoph Wurm).
- Настройка файлового кэша
skip_download_if_exceeds_query_cacheпереименована вfilesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit. #71578 (Kseniia Sumarokova). - Типы Dynamic/Variant запрещены в функциях min/max во избежание путаницы. #71761 (Pavel Kruglov).
- Удалена поддержка
Enum, а также аргументовUInt128иUInt256вdeltaSumTimestamp. Также удалена поддержкаInt8,UInt8,Int16иUInt16для второго аргумента (“timestamp”) функцииdeltaSumTimestamp. #71790 (Alexey Milovidov). - Добавлена проверка исходного запроса, когда ClickHouse используется как источник для словаря. #72548 (Alexey Katsman).
Новые возможности
- Реализована команда SYSTEM LOAD PRIMARY KEY для загрузки индексов первичного ключа для всех частей указанной таблицы или для всех таблиц, если таблица не указана. Это будет полезно для бенчмарков и поможет избежать дополнительной задержки при выполнении запроса. #66252 (ZAWA_ll).
- Добавлен оператор
SYSTEM LOAD PRIMARY KEYдля загрузки индексов первичного ключа всех частей в указанной таблице или всех таблиц, если таблица не указана. Это может быть полезно для бенчмаркинга и позволяет избежать лишней задержки при выполнении запросов. #67733 (ZAWA_ll). - Добавлен запрос
CHECK GRANT, позволяющий проверить, выдана ли текущему пользователю/роли указанная привилегия и существуют ли в памяти соответствующие таблица/столбец. #68885 (Unalian). - Добавлен SQL-синтаксис для описания управления рабочими нагрузками и ресурсами. См. документацию. #69187 (Sergei Trifonov).
- Формат хранения данных Iceberg предоставляет пользователю широкие возможности для изменения схемы таблицы. В этом pull request реализовано чтение таблиц в формате Iceberg, где изменены порядок столбцов, имена столбцов и простые расширения типов. #69445 (Daniil Ivanik).
- У каждого метода аутентификации теперь может быть собственная дата истечения срока действия; этот параметр удалён из сущности пользователя. #70090 (Arthur Passos).
- Передавайте внешние роли пользователей от инициатора запроса на другие узлы кластера. Полезно, когда только инициатор имеет доступ к внешнему аутентификатору (например, LDAP). #70332 (Andrey Zvonov).
- Добавлена поддержка ALTER из String в JSON. Этот PR также переводит сериализацию JSON и типа Dynamic на новую версию V2. Старую версию V1 по-прежнему можно использовать, включив настройку
merge_tree_use_v1_object_and_dynamic_serialization(это может пригодиться во время обновления, чтобы при необходимости без проблем откатить версию). #70442 (Pavel Kruglov). - Добавлена функция
toUnixTimestamp64Second, которая преобразуетDateTime64в значениеInt64с фиксированной точностью до секунд, что позволяет возвращать отрицательное значение, если дата предшествует 00:00:00 UTC четверга, 1 января 1970 года. #70597 (zhanglistar). - Добавлена новая настройка
enforce_index_structure_match_on_partition_manipulation, позволяющая выполнять attach, если проекции и вторичные индексы исходной таблицы являются подмножеством проекций и вторичных индексов целевой таблицы. Закрывает #70602. #70603 (zwy991114). - Результат работы функции
castотличается от Apache Spark, что приводит к расхождениям в проекте gluten, см. https://github.com/apache/incubator-gluten/issues/7602 В этот PR добавлена возможность поддержки текстового формата вывода Spark; по умолчанию она отключена. #70957 (zhanglistar). - Добавлен новый тип заголовка для конечных точек S3 для аутентификации пользователей (
access_header). Это позволяет задать заголовок доступа с наименьшим приоритетом, который будет переопределён значениемaccess_key_idиз любого другого источника (например, из схемы таблицы или именованной коллекции). #71011 (MikhailBurdukov). - Первоначальная реализация уровней настроек. #71145 (Raúl Marín).
- Добавлена поддержка параметра staleness в предложении ORDER BY … WITH FILL. #71151 (Mikhail Artemenko).
- Реализована простая операция CAST из Map/Tuple/Object в новый JSON через сериализацию/десериализацию из строки JSON. #71320 (Pavel Kruglov).
- Добавлены псевдонимы
anyRespectNulls,firstValueRespectNullsиanyValueRespectNullsдля агрегатной функцииany. Также добавлены псевдонимыanyLastRespectNullsиlastValueRespectNullsдля агрегатной функцииanyLast. Это позволяет использовать более естественный синтаксис только с camelCase вместо смешанного синтаксиса camelCase/underscore, например:SELECT anyLastRespectNullsStateIfвместоanyLast_respect_nullsStateIf. #71403 (Peter Nguyen). - Добавлен параметр конфигурации
date_time_utc, который позволяет форматировать JSON-логи с датой и временем UTC в формате RFC 3339/ISO8601. #71560 (Ali). - Добавлена возможность выбрать сторону JOIN, которая будет использоваться как внутренняя (build) таблица в плане запроса. Это задаётся параметром
query_plan_join_swap_table, которому можно присвоить значениеauto. В этом режиме ClickHouse попытается выбрать таблицу с наименьшим количеством строк. #71577 (Vladimir Cherkasov). - Оптимизировано использование памяти для значений гранулярности индекса, если для части используется постоянная гранулярность. Добавлена возможность всегда выбирать для части постоянную гранулярность (настройка
use_const_adaptive_granularity), что позволяет гарантировать постоянную оптимизацию по памяти. Это помогает при больших рабочих нагрузках (триллионы строк в общем хранилище) избежать непрерывного роста использования памяти метаданными (значениями гранулярности индекса) частей данных. #71786 (Anton Popov). - Добавлен
allowed_feature_tier— глобальный переключатель для отключения всех экспериментальных / бета-функций. #71841 (Raúl Marín). - Добавлены табличные функции
iceberg[S3;HDFS;Azure]Cluster,deltaLakeClusterиhudiCluster. #72045 (Mikhail Artemenko). - Добавлен синтаксис
ALTER USER {ADD|MODIFY|DROP SETTING}иALTER USER {ADD|DROP PROFILE}; то же самое дляALTER ROLEиALTER PROFILE. #72050 (pufit). - Добавлена функция
arrayPrAUC, которая вычисляет AUC (площадь под кривой) для кривой precision-recall. #72073 (Emmanuel). - Добавлен кэш для первичного индекса таблиц
MergeTree(его можно включить настройкой таблицыuse_primary_key_cache). Если для первичного индекса включены ленивая загрузка и кэширование, он будет загружаться в кэш по мере необходимости (аналогично mark cache), а не постоянно оставаться в памяти. Добавлен предварительный прогрев первичного индекса при вставках/слияниях/загрузках частей данных и при перезапуске таблицы (может быть включен настройкойprewarm_primary_key_cache). #72102 (Anton Popov). - Добавлена функция indexOfAssumeSorted для типа Array. Оптимизирует поиск в случае массива, отсортированного по неубыванию. #72517 (Eric Kurbanov).
- Позволяет использовать разделитель как необязательный второй аргумент агрегатной функции
groupConcat. #72540 (Yarik Briukhovetskyi). - Новая настройка
http_response_headers, которая позволяет настраивать HTTP-заголовки ответа. Например, с её помощью можно указать браузеру отобразить изображение, хранящееся в базе данных. Это закрывает #59620. #72656 (Alexey Milovidov). - Добавлена функция
fromUnixTimestamp64Second, которая преобразует значение Unix-временной метки типа Int64 в DateTime64. #73146 (Robert Schulze).
Повышение производительности
- Добавлены 2 новые настройки
short_circuit_function_evaluation_for_nullsиshort_circuit_function_evaluation_for_nulls_threshold, которые позволяют выполнять функции над столбцамиNullableв режиме короткого замыкания, если доля значений NULL в блоке данных превышает указанный порог. Это означает, что функция будет выполняться только для строк с ненулевыми значениями. Это применимо только к функциям, которые возвращают NULL для строк, где хотя бы один аргумент имеет значение NULL. #60129 (李扬). - Снижено использование памяти команды
clickhouse disks remove --recursiveдля дисков объектного хранилища. #67323 (Kirill). - Теперь при
join_algorithm='parallel_hash'мы не будем копировать столбцы входных блоков при их распределении между потоками для параллельной обработки. #67782 (Nikita Taranov). - Включена JIT-компиляция для большего числа выражений:
abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*, функций сравнения (=,<,>,>=,<=) и логических функций (and,or). #70598 (李扬). - Теперь, когда для настройки
join_algorithmустановлено значениеdefault, будет использоваться алгоритмparallel_hash(если это применимо). Еслиparallel_hashиспользовать нельзя, по-прежнему будут рассматриваться два предыдущих варианта (directиhash). #70788 (Nikita Taranov). - Оптимизирован алгоритм слияния
Replacingдля непересекающихся частей. #70977 (Anton Popov). - Не отображать отсоединённые части с дисков только для чтения и дисков с однократной записью в метриках и system.detached_parts. #71086 (Alexey Milovidov).
- По умолчанию не вычислять ресурсоёмкие асинхронные метрики. Эта возможность была добавлена в #40332, но не стоит держать ресурсоёмкую фоновую задачу, которая нужна только одному клиенту. #71087 (Alexey Milovidov).
- Улучшены производительность и точность интервала сбора system.query_metric_log за счёт сокращения критической секции. #71473 (Pablo Marcos).
- Добавлена возможность извлекать общие подвыражения из выражений
WHEREиON, чтобы сократить количество хеш-таблиц, используемых при выполнении JOIN. Её можно включить с помощьюoptimize_extract_common_expressions = 1. #71537 (János Benjamin Antal). - Позволяет использовать индексы в запросах
SELECTсLowCardinality(String). #71598 (Yarik Briukhovetskyi). - Во время выполнения запроса с параллельными репликами и включенным локальным планом выполнения анализ индекса пропуска данных на воркерах не выполняется. Координатор будет выбирать диапазоны для чтения воркерами на основе анализа индекса на своей стороне (на инициаторе запроса). #72109 (Igor Nikonov).
- Вернули оптимизацию чтения подстолбцов одного столбца в компактных частях из https://github.com/ClickHouse/ClickHouse/pull/57631. Она была случайно удалена. #72285 (Pavel Kruglov).
- Ускорена сортировка столбцов
LowCardinality(String)благодаря девиртуализации вызовов в компараторе. #72337 (Alexander Gololobov). - Оптимизирована функция argMin/Max для некоторых простых типов данных. #72350 (alesapin).
- Оптимизирован механизм блокировок в трекере памяти за счёт использования разделяемых блокировок, что снижает конкуренцию за блокировки. #72375 (Jiebin Sun).
- Добавлена новая настройка
use_async_executor_for_materialized_views. Обеспечивает асинхронное и потенциально многопоточное выполнение запроса materialized view, что может ускорить обработку представлений во время INSERT, но также может увеличить потребление памяти. #72497 (alesapin). - Значения по умолчанию для настроек
max_size_to_preallocate_for_aggregation,max_size_to_preallocate_for_joinsбыли дополнительно увеличены до10^12, поэтому эта оптимизация будет применяться в большем числе случаев. #72555 (Nikita Taranov). - Улучшена производительность десериализации состояний агрегатных функций (в типе данных
AggregateFunctionи в распределённых запросах). Немного улучшена производительность парсинга форматаRowBinary. #72818 (Anton Popov).
Улучшения
- Функции высшего порядка с константными массивами и константными захваченными аргументами теперь возвращают константы. #58400 (Alexey Milovidov).
- Оптимизация чтения в порядке сортировки за счёт генерации виртуальных строк, благодаря чему при сортировке слиянием считывается меньше данных; особенно полезно, когда существует несколько частей. #62125 (Shichao Jin).
- Имена шагов плана запроса (
EXPLAIN PLAN json=1) и процессоров конвейера (EXPLAIN PIPELINE compact=0,graph=1) теперь имеют уникальный идентификатор в качестве суффикса. Это позволяет сопоставлять вывод профилировщика процессоров и трассы OpenTelemetry с результатомEXPLAIN. #63518 (qhsong). - Добавлена возможность проверять наличие объекта после записи в Azure Blob Storage; она управляется настройкой
check_objects_after_upload. #64847 (Smita Kulkarni). - Исправлена логика use-after-dtor в методе destroyElements класса HashTable. #65279 (cangyin).
- По умолчанию использовать базу данных
Atomicвclickhouse-local. Решает проблемы из пунктов 1 и 5 в #50647. Закрывает #44817. #68024 (Alexey Milovidov). - Буфер записи должен быть явно отменен или завершен. Исключения прерывают HTTP-протокол, чтобы сообщить клиенту об ошибке. #68800 (Sema Checherinda).
- Добавлена отчётность о работающих хостах DDLWorker: создаётся replica_dir, а реплики помечаются как активные в DDLWorker. #69658 (Tuan Pham Anh).
-
- Рефакторинг
DDLQueryStatusSource: - ПереименоватьDDLQueryStatusSourceвDistributedQueryStatusSourceи сделать его базовым классом - Создать два подкласса —DDLOnClusterQueryStatusSourceиReplicatedDatabaseQueryStatusSource, производных отDDLQueryStatusSource, для запроса статуса DDL-задач изDDL On Clusterи Replicated databases соответственно. 2. Добавлена возможность прекращать ожидание недоступных хостов в `DDLOnClusterQueryStatusSource`. #69660 (Tuan Pham Anh).
- Рефакторинг
- Добавлена новая логика отмены:
CancellationCheckerпроверяет тайм-ауты для каждого запущенного запроса и останавливает их, как только тайм-аут истекает. #69880 (Yarik Briukhovetskyi). - Удалена настройка
allow_experimental_join_condition, поэтому неэквивалентные условия теперь разрешены по умолчанию. #69910 (Vladimir Cherkasov). - Параметр
parallel_replicas_local_planтеперь включён по умолчанию. Построение полноценного локального плана на инициаторе запроса повышает производительность параллельных реплик при меньшем потреблении ресурсов и открывает дополнительные возможности для оптимизации запроса. #70171 (Igor Nikonov). - Добавлена возможность задавать имя пользователя и пароль в http_handlers (для
dynamic_query_handler/predefined_query_handler). #70725 (Azat Khuzhin). - Добавлена поддержка
ALTER TABLE ... MODIFY/RESET SETTING ...для некоторых настроек в хранилище S3Queue. #70811 (Kseniia Sumarokova). - Не обращайтесь к API объектного хранилища при перечислении каталогов, так как это может быть экономически невыгодно. Вместо этого храните список имен файлов в памяти. Компромисс заключается в увеличении времени начальной загрузки и объема памяти, необходимого для хранения имен файлов. #70823 (Julia Kartseva).
- В
clickhouse-compressorдобавлен параметр--threads, позволяющий сжимать данные параллельно. #70860 (Alexey Milovidov). - Добавлена возможность настраивать размер истории клиента Replxx. #71014 (Jiří Kozlovský).
- Добавлена настройка
prewarm_mark_cache, которая включает предварительную загрузку меток в кэш меток при вставках, слияниях, загрузке частей и запуске таблицы. #71053 (Anton Popov). - Поддержка булевого типа в нативном считывателе Parquet. #71055 (Arthur Passos).
- Повторные попытки теперь выполняются при большем числе ошибок при взаимодействии с S3, таких как “Malformed message”. #71088 (Alexey Milovidov).
- Снижен уровень логирования некоторых сообщений о S3. #71090 (Alexey Milovidov).
- Добавлена поддержка записи файлов HDFS с пробелами в именах. #71105 (exmy).
system.session_logвполне подходит. Это закрывает #51760. #71150 (Alexey Milovidov).- Исправлена работа JOIN RIGHT / FULL в запросах с параллельными репликами. Теперь JOIN RIGHT можно выполнять с параллельными репликами (чтение правой таблицы распределяется). JOIN FULL нельзя распараллелить между узлами — он выполняется локально. #71162 (Igor Nikonov).
- Добавлены настройки для ограничения количества реплицируемых таблиц, словарей и представлений. #71179 (Kirill).
- Исправление #71227. #71286 (Arthur Passos).
- Автоматический сброс
GROUP BY/ORDER BYна диск в зависимости от использования памяти сервера/пользователя. Управляется настройками запросаmax_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sort. #71406 (Azat Khuzhin). - В расширенную панель мониторинга добавлены панели
Overview (host)иCloud overview (host)для каждого хоста. #71422 (alesapin). - Функция
translateтеперь поддерживает удаление символов, если аргументfromсодержит больше символов, чем аргументto. Пример:SELECT translate('clickhouse', 'clickhouse', 'CLICK')теперь возвращаетCLICK. #71441 (shuai.xu). - Добавлены новые функции
parseDateTime64,parseDateTime64OrNullиparseDateTime64OrZero. В отличие от существующей функцииparseDateTime(и её вариантов), они возвращают значение типаDateTime64, а неDateTime. #71581 (kevinyhzou). - Уменьшен размер массива index_granularity в памяти для снижения потребления памяти у семейства движков таблиц MergeTree. #71595 (alesapin).
- Приложения командной строки будут подсвечивать синтаксис даже для последовательностей из нескольких операторов. #71622 (Alexey Milovidov).
- Приложения командной строки будут возвращать при ошибках коды завершения, отличные от нуля. В предыдущих версиях приложение
disksвозвращало 0 при ошибках, а другие приложения — 0 для ошибок 256 (PARTITION_ALREADY_EXISTS) и 512 (SET_NON_GRANTED_ROLE). #71623 (Alexey Milovidov). - Формат
Vertical(который также активируется, если завершить запрос на\G) получил возможности форматов Pretty, такие как: - выделение групп разрядов в числах; - вывод удобочитаемой подсказки к числу. #71630 (Alexey Milovidov). - Появилась возможность отключить увеличение буфера памяти для файлового кэша с помощью настройки
filesystem_cache_prefer_bigger_buffer_size. #71640 (Kseniia Sumarokova). - Добавлен отдельный параметр
background_download_max_file_segment_size, задающий максимальный размер сегмента файла для фоновой загрузки в файловом кэше. #71648 (Kseniia Sumarokova). - Меняет значение по умолчанию
enable_http_compressionс 0 на 1. Закрывает #71591. #71774 (Peter Nguyen). - Добавлена поддержка ALTER из Object в JSON. #71784 (Pavel Kruglov).
- Немного улучшен разбор типа JSON: если текущий блок для JSON-пути содержит значения нескольких типов, система пытается выбрать наиболее подходящий тип, перебирая типы в специальном best-effort-порядке. #71785 (Pavel Kruglov).
- Ранее при чтении из
system.asynchronous_metricsприходилось ждать завершения параллельного обновления. Это может занимать много времени, если система находится под высокой нагрузкой. Благодаря этому изменению ранее собранные значения теперь можно читать всегда. #71798 (Alexander Gololobov). - Установите для
polling_max_timeout_msзначение 10 минут, а дляpolling_backoff_ms— 30 секунд. #71817 (Kseniia Sumarokova). - Запросы вида ‘SELECT - FROM t LIMIT 1’ раньше загружали индексы частей данных, хотя те не использовались. #71866 (Alexander Gololobov).
- Allow_reorder_prewhere_conditions включён по умолчанию при использовании старых настроек совместимости. #71867 (Raúl Marín).
- Не увеличивать счетчик
ILLEGAL_TYPE_OF_ARGUMENTв таблицеsystem.errors, если используется функцияbitmapTransformи типы аргументов корректны. #71971 (Dmitry Novik). - При получении данных напрямую из словаря с использованием движка Dictionary, табличной функции dictionary или прямого
SELECTиз самого словаря теперь достаточно иметь разрешениеSELECTилиdictGetдля словаря. Это соответствует предыдущим попыткам предотвратить обход ACL: https://github.com/ClickHouse/ClickHouse/pull/57362 и https://github.com/ClickHouse/ClickHouse/pull/65359. Это также делает последнее из этих изменений обратно совместимым. #72051 (Nikita Mikhaylov). - На HTML-страницу расширенной панели мониторинга добавлен выпадающий список выбора панели мониторинга из таблицы
system.dashboards. #72081 (Sergei Trifonov). - Учитывать
prefer_locahost_replicaпри построении плана выполнения для распределённогоINSERT ... SELECT. #72190 (filimonov). - Проблема описана здесь. Azure Iceberg Writer создаёт файлы метаданных Iceberg (а также файлы манифеста), которые не соответствуют спецификации. В этом PR я добавил попытку читать метаданные формата Iceberg v1 с помощью ридера v2 (поскольку они записывают их именно так), а также добавил сообщение об ошибке на случай, если они не создали соответствующие поля в файле манифеста. #72277 (Daniil Ivanik).
- Перенос типов JSON/Dynamic/Variant из экспериментальных возможностей в статус бета. #72294 (Pavel Kruglov).
- Теперь разрешено использовать
CREATE MATERIALIZED VIEWсUNION [ALL]в запросе. Поведение такое же, как у materialized view сJOIN: *только первая таблица в выраженииSELECTбудет служить триггером для вставки- , все остальные таблицы будут игнорироваться. #72347 (alesapin). - Ускорена вставка в MergeTree, если вставляемый батч содержит только одно значение ключа партиционирования. #72348 (alesapin).
- Добавлена новая метрика MergeTreeIndexGranularityInternalArraysTotalSize в system.metrics. Эта метрика нужна, чтобы находить экземпляры с очень большими наборами данных, подверженные проблеме высокого потребления памяти. #72490 (Miсhael Stetsyuk).
- Теперь распознаются все варианты написания слова
Null, когда в запросе используетсяFormat Null. Ранее другие формы (например,NULL) не приводили к возникновению исключений, хотя в таких случаях форматNullфактически не использовался. #72658 (Nikita Taranov). - Разрешены неизвестные значения в set, отсутствующие в Enum. Исправлено #72662. #72686 (zhanglistar).
- Добавлено
total_bytes_with_inactiveвsystem.tables, чтобы учитывать общий объём байтов неактивных частей. #72690 (Kai Zhu). - В system.settings_changes добавлен MergeTreeSettings. #72694 (Raúl Marín).
- Добавлена поддержка строковых операторов поиска (например,
like) для типа данных Enum, исправлена проблема #72661. #72732 (zhanglistar). - Добавлена поддержка типа JSON в функции notEmpty. #72741 (Pavel Kruglov).
- Добавлена поддержка разбора ошибки
AuthenticationRequiredв GCS S3. #72753 (Vitaly Baranov). - В функциях ifNull и coalesce добавлена поддержка типа Dynamic. #72772 (Pavel Kruglov).
- Добавлены события профиля
JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount. #72842 (Vladimir Cherkasov). - Добавлена поддержка Dynamic в функциях toFloat64/touInt32/etc. #72989 (Pavel Kruglov).
Исправление ошибки (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
- Части, для которых была выполнена дедупликация во время запроса
ATTACH PART, больше не остаются с префиксомattaching_. #65636 (Kirill). - Исправлена ошибка, из-за которой dateTime64 терял точность в функции
IN. #67230 (Yarik Briukhovetskyi). - Исправлена возможная логическая ошибка при использовании функций с
IGNORE/RESPECT NULLSвORDER BY ... WITH FILL; закрыт #57609. #68234 (Vladimir Cherkasov). - Исправлены редкие логические ошибки в асинхронных вставках при использовании формата
Nativeи достижении лимита памяти. #68965 (Anton Popov). - Исправлен COMMENT в CREATE TABLE для столбца EPHEMERAL. #70458 (Yakov Olkhovskiy).
- Исправлена логическая ошибка в JSONExtract при использовании LowCardinality(Nullable). #70549 (Pavel Kruglov).
- Исправлено поведение в случае, если имя таблицы слишком длинное. #70810 (Yarik Briukhovetskyi).
- Добавлена возможность переопределять Content-Type с помощью пользовательских заголовков в движке URL. #70859 (Artem Iurin).
- Исправлена логическая ошибка в
StorageS3Queue: “Невозможно создать постоянный узел в /processed, поскольку он уже существует”. #70984 (Kseniia Sumarokova). - Исправлена ошибка, из-за которой в опции rebuild для легковесного удаления в проекциях не учитывался столбец _row_exists. #71089 (Shichao Jin).
- Исправлено некорректное значение в system.query_metric_log из-за непредвиденного состояния гонки. #71124 (Pablo Marcos).
- Исправлено несовпадение имени агрегатной функции
quantileExactWeightedInterpolated. Ошибка появилась в https://github.com/ClickHouse/ClickHouse/pull/69619. cc @Algunenano. #71168 (李扬). - Исправлено исключение bad_weak_ptr при сравнении функций с Dynamic. #71183 (Pavel Kruglov).
- Не удаляйте blob-объект, если его используют узлы в ReplicatedMergeTree с репликацией с нулевым копированием. #71186 (Antonio Andelic).
- Исправлено игнорирование настроек формата для Native format при работе через HTTP и Async Inserts. #71193 (Pavel Kruglov).
- SELECT-запросы, выполняемые с настройкой
use_query_cache = 1, больше не отклоняются, если имя системной таблицы используется как строковый литерал; например, теперь работаетSELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true;. #71254 (Robert Schulze). - Исправлена ошибка, из-за которой увеличивалось использование памяти, если enable_filesystem_cache=1, но для диска в конфигурации хранилища не была задана конфигурация кэша. #71261 (Kseniia Sumarokova).
- Исправлена возможная ошибка “Cannot read all data” при десериализации словаря LowCardinality из столбца типа Dynamic. #71299 (Pavel Kruglov).
- Исправлена неполная очистка при параллельном формате вывода в клиенте. #71304 (Raúl Marín).
- Добавлено недостающее снятие экранирования в именованных коллекциях. Без этого исправления clickhouse-server не может запуститься. #71308 (MikhailBurdukov).
- Исправлена работа async inserts с пустыми блоками через собственный протокол. #71312 (Anton Popov).
- Исправлено непоследовательное форматирование AST при выдаче некорректных привилегий с подстановочными символами #71309. #71332 (pufit).
- Проверка подозрительных и экспериментальных типов в подсказках типа JSON. #71369 (Pavel Kruglov).
- Исправлена ошибка «Invalid number of rows in Chunk with Variant column». #71388 (Pavel Kruglov).
- Исправлен сбой табличной функции
mongodbпри передаче некорректных аргументов (например,NULL). #71426 (Vladimir Cherkasov). - Исправлен сбой при использовании optimize_rewrite_array_exists_to_has. #71432 (Raúl Marín).
- Исправлена ошибка NoSuchKey при откате транзакции, возникавшая, когда не удавалось создать каталог на диске palin_rewritable. #71439 (Julia Kartseva).
- Исправлено использование настройки
max_insert_delayed_streams_for_parallel_writeпри вставке. Ранее она работала некорректно, что могло приводить к повышенному использованию памяти при вставке данных в несколько партиций. #71474 (Anton Popov). - Исправлена возможная ошибка
Argument for function must be constant(старый анализатор) в случае, когдаarrayJoin, как оказалось, может появляться в условииWHERE. Регрессия после https://github.com/ClickHouse/ClickHouse/pull/65414. #71476 (Nikolai Kochetov). - Предотвращён сбой в SortCursor при 0 столбцах (старый анализатор). #71494 (Raúl Marín).
- Исправлен выход
date32за пределы диапазона из-за неинициализированных данных orc. Подробнее см. https://github.com/apache/incubator-gluten/issues/7823. #71500 (李扬). - Исправлен подсчёт размера столбца в широкой части для типов Dynamic и JSON. #71526 (Pavel Kruglov).
- Исправлена ошибка analyzer при использовании IN с CTE в запросе внутри materialized view. Закрывает #65598. #71538 (Maksim Kita).
- В функциях bitShift при выходе за допустимые границы теперь возвращается 0 или символ по умолчанию вместо ошибки. #71580 (Pablo Marcos).
- Исправлены сбои сервера при использовании materialized view с некоторыми движками. #71593 (Pervakov Grigorii).
- ARRAY JOIN со вложенной структурой данных, содержащей алиас константного массива, приводил к разыменованию нулевого указателя. Это исправление закрывает #71677. #71678 (Alexey Milovidov).
- Исправлена ошибка LOGICAL_ERROR при выполнении ALTER с пустым кортежем. Исправление для #71647. #71679 (Amos Bird).
- Не преобразовывать константное множество в предикатах для столбцов партиции при использовании оператора NOT IN. #71695 (Eduard Karacharov).
- Исправлен CAST из LowCardinality(Nullable) в Dynamic. Ранее это могло приводить к ошибке
Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable. #71742 (Pavel Kruglov). - Исправлено исключение в toDayOfWeek при использовании условия WHERE с первичным ключом типа DateTime64. #71849 (Yakov Olkhovskiy).
- Исправлено заполнение значениями по умолчанию после разбора данных в разреженные столбцы. #71854 (Anton Popov).
- Исправлена ошибка функции GROUPING, когда входным значением был ALIAS в distributed таблице, закрыт #68602. #71855 (Vladimir Cherkasov).
- Исправлены операторы SELECT с предложением
WITH TIES, которые могли возвращать недостаточное количество строк. #71886 (wxybear). - Исправлено Исключение TOO_LARGE_ARRAY_SIZE, которое возникало, когда столбец при вычислении arrayWithConstant ошибочно считался превысившим ограничение на размер массива. #71894 (Udi).
clickhouse-benchmarkвыдавал неверные метрики для запросов, выполнявшихся дольше одной секунды. #71898 (Alexey Milovidov).- Исправлено состояние гонки между индикатором выполнения и таблицей прогресса в clickhouse-client. Эта проблема проявляется при использовании FROM INFILE. Добавлен перехват нажатий клавиш во время запросов INSERT для переключения отображения таблицы прогресса. #71901 (Julia Kartseva).
- Исправлена сериализация значений типа Dynamic в JSON-форматах Pretty. #71923 (Pavel Kruglov).
- Исправлен столбец rows_processed в system.s3/azure_queue_log, сломанный в версии 24.6. Закрывает #69975. #71946 (Kseniia Sumarokova).
- Исправлен случай, когда функции
s3/s3Clusterмогли возвращать неполный результат или генерировать исключение. Это происходило при использовании glob-паттерна в URI S3 (например,pattern/*), если при этом существовал пустой object с ключомpattern/(такие object автоматически создаются в консоли S3). Также значение по умолчанию для настройкиs3_skip_empty_filesбыло изменено сfalseнаtrue. #71947 (Nikita Taranov). - Исправлен сбой подсветки синтаксиса в clickhouse-client. Закрывает #71864. #71949 (Nikolay Degterinsky).
- Исправлена ошибка
Illegal typeдля таблицMergeTreeс бинарной монотонной функцией вORDER BY, если первый аргумент — константа. Исправлено в #71941. #71966 (Nikolai Kochetov). - Разрешите использовать в EXPLAIN AST внутри подзапроса только запросы SELECT. Другие типы запросов приводят к логической ошибке: ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ или
Inconsistent AST formatting. #71982 (Pavel Kruglov). - При вставке записи с помощью
clickhouse-clientклиент считывает описания столбцов с сервера. Однако была ошибка: мы записывали описания в неправильном порядке, хотя правильно — [statistics, ttl, settings]. #71991 (Han Fei). - Исправлено форматирование команд ALTER
MOVE PARTITION ... TO TABLE ..., когда включен параметрformat_alter_commands_with_parentheses. #72080 (János Benjamin Antal). - Добавлено автоматически определяемое имя формата в запрос CREATE для движков File/S3/URL/HDFS/Azure. Ранее имя формата определялось заново при каждом перезапуске сервера, и если указанные файлы данных были удалены, это приводило к ошибкам при запуске сервера. #72108 (Pavel Kruglov).
- Исправлена ошибка, из-за которой
min_age_to_force_merge_on_partition_onlyзацикливался, снова и снова пытаясь слить одну и ту же партицию, уже объединённую в одну часть, и при этом не выполнял слияние партиций, состоящих из нескольких частей. #72209 (Christoph Wurm). - Устранён сбой в
SimpleSquashingChunksTransform, который в редких случаях возникал при обработке разреженных столбцов. #72226 (Vladimir Cherkasov). - Исправлена гонка данных в
GraceHashJoin, из-за которой в результатах JOIN могли отсутствовать некоторые строки. #72233 (Nikita Taranov). - Исправлена работа запросов
ALTER DELETEс материализованным столбцом_block_number(если включена настройкаenable_block_number_column). #72261 (Anton Popov). - Исправлена гонка данных при одновременном вызове
ColumnDynamic::dumpStructure(), например в конструктореConcurrentHashJoin. #72278 (Nikita Taranov). - Исправлена возможная
LOGICAL_ERROR, возникающая из-за дублирующихся столбцов вORDER BY ... WITH FILL. #72387 (Vladimir Cherkasov). - Исправлены случаи несоответствия типов после применения
optimize_functions_to_subcolumns. #72394 (Anton Popov). - Исправлен сбой при синтаксическом разборе запросов
BACKUP DATABASE db EXCEPT TABLES db.table. #72429 (Konstantin Bogdanov). - Запретить создание пустого Variant. #72454 (Pavel Kruglov).
- Исправлено некорректное форматирование
result_part_pathвsystem.merges. #72567 (Konstantin Bogdanov). - Исправлен парсинг glob-шаблона, состоящего из одного элемента. #72572 (Konstantin Bogdanov).
- Исправлена генерация запроса для сервера follower в случае распределённого запроса с ARRAY JOIN. Исправление #69276. #72608 (Dmitry Novik).
- Исправлена ошибка, из-за которой при использовании DateTime64 в DateTime64 ничего не возвращалось. #72640 (Yarik Briukhovetskyi).
- Исправлена ошибка “No such key” в неупорядоченном режиме S3Queue, возникавшая, когда значение настройки
tracked_files_limitбыло меньше скорости появления файлов в S3. #72738 (Kseniia Sumarokova). - Сброс кэша mark может занять заметное время, если он большой. Если удерживать мьютекс контекста во время этой операции, это блокирует многие другие действия, и даже новое клиентское соединение не может быть установлено, пока мьютекс не будет освобожден. При этом для синхронизации удерживать этот мьютекс на самом деле не требуется: достаточно иметь локальную ссылку на кэш через shared_ptr. #72749 (Alexander Gololobov).
- Кэш PK сильно занижал свой размер на одном из тестовых инстансов. В частности, в столбцах LowCardinality не учитывался размер словаря. Исправление состоит в использовании
column->allocatedBytes()и дополнительных оценок накладных расходов для размера записи кэша. #72750 (Alexander Gololobov). - Исправлено Исключение, возникающее в RemoteQueryExecutor, если пользователь отсутствует локально. #72759 (Andrey Zvonov).
- Исправлена работа мутаций с материализованным столбцом
_block_number(если включена настройкаenable_block_number_column). #72854 (Anton Popov). - Исправлена работа резервного копирования/восстановления с обычным перезаписываемым диском в случае наличия пустых файлов в резервной копии. #72858 (Kseniia Sumarokova).
- Корректно отменяются вставки в DistributedAsyncInsertDirectoryQueue. #72885 (Antonio Andelic).
- Исправлен сбой при разборе некорректных данных при записи в разреженные столбцы (может происходить при включенной настройке
enable_parsing_to_custom_serialization). #72891 (Anton Popov). - Исправлен возможный сбой при восстановлении из резервной копии. #72947 (Kseniia Sumarokova).
- Исправлена ошибка в методе JOIN
parallel_hash, которая могла возникать, если запрос содержал сложное условие в выраженииONс фильтрами по неравенству. #72993 (Nikita Taranov). - При разборе JSON теперь используются настройки формата по умолчанию, чтобы избежать ошибок десериализации. #73043 (Pavel Kruglov).
- Устранён сбой в транзакциях с неподдерживаемым хранилищем. #73045 (Raúl Marín).
- Добавлена проверка дублирующихся ключей JSON при парсинге Tuple. Ранее это могло приводить к логической ошибке
Invalid number of rows in Chunkво время парсинга. #73082 (Pavel Kruglov).