Дедупликация по умолчанию включена для всех вставок. Ранее она была отключена для асинхронных вставок и MV, но включена для синхронных. Цель — сделать значения по умолчанию одинаковыми для обоих способов вставки. Если на вашем кластере дедупликация явно отключена, чтобы сохранить прежнее поведение, нужно явно задать deduplicate_insert='backward_compatible_choice'. То же касается deduplicate_blocks_in_dependent_materialized_views. #95970 (Sema Checherinda).
Улучшен формат хранения статистики. Теперь вся статистика хранится в одном файле. #93414 (Anton Popov). Если вы не включали статистику таблиц явно, этот пункт можно проигнорировать.
Ограничен объём метаданных S3(Azure)Queue, хранящихся в памяти. Системные таблицы переименованы с azure_queue в azure_queue_metadata_cache и с system.s3queue в s3queue_metadata_cache. #95809 (Kseniia Sumarokova).
Ранее при применении функции к столбцу Variant в случае несовместимости подтипа варианта с функцией без каких-либо сообщений возвращался NULL; теперь генерируется исключение, из-за чего могут перестать работать запросы, которые полагались на такое «тихое» поведение с возвратом NULL. #95811 (Bharat Nallan).
Столбцы DATE из PostgreSQL теперь определяются в ClickHouse как Date32 (в предыдущих версиях они определялись как Date, что приводило к переполнению значений за пределами узкого диапазона). Теперь значения Date32 можно вставлять обратно в PostgreSQL. Закрывает #73084. #95999 (Alexey Milovidov).
Семантика настройки do_not_merge_across_partitions_select_final стала более понятной. Ранее эта возможность могла автоматически включаться, даже если настройка не была явно задана в конфигурации. Это неоднократно вызывало путаницу и, к сожалению, приводило к проблемам в промышленной эксплуатации. Теперь правила стали проще: do_not_merge_across_partitions_select_final=1 безусловно включает эту функциональность. Если do_not_merge_across_partitions_select_final=0, то автоматический режим используется только при enable_automatic_decision_for_merging_across_partitions_for_final=1, а в противном случае не используется. Чтобы максимально сохранить прежнее поведение, значения по умолчанию установили как do_not_merge_across_partitions_select_final=0 и enable_automatic_decision_for_merging_across_partitions_for_final=1. #96110 (Nikita Taranov).
При создании таблицы S3 с явно указанными столбцами ClickHouse теперь проверяет, что эти имена столбцов действительно существуют в схеме удалённого файла. Запросы, которые раньше работали при несовпадении имён столбцов, теперь будут завершаться ошибкой уже на этапе создания таблицы. Это закрывает #96089. #96194 (Konstantin Vedernikov).
Запрещено использовать подзапросы в ORDER BY и других выражениях ключа таблицы. #96847 (Alexey Milovidov).
Настройка apply_row_policy_after_final теперь включена по умолчанию. Изначально, когда optimize_move_to_prewhere_if_final=0, и ROW POLICY, и PREWHERE учитывали FINAL и применялись после FINAL. Это поведение было нарушено в #87303: для фильтра ROW POLICY параметр optimize_move_to_prewhere_if_final игнорировался. Чтобы это исправить, в данном PR включена настройка apply_row_policy_after_final, представленная в #91065. При включённой apply_row_policy_after_final ROW POLICY, как и раньше, по умолчанию продолжает учитывать FINAL. Этот PR вносит несовместимое изменение, поскольку меняет поведение для optimize_move_to_prewhere_if_final=1. Теперь, чтобы ROW POLICY применялась до FINAL, следует использовать apply_row_policy_after_final вместо optimize_move_to_prewhere_if_final. #97279 (Nikolai Kochetov).
Тип Date теперь сериализуется как встроенный тип Arrow date32 в форматах Arrow/ArrowStream вместо uint16. Инструменты, такие как PyArrow, теперь будут корректно распознавать столбец как тип даты. Прежнее поведение можно восстановить с помощью настройки output_format_arrow_date_as_uint16. Чтение старых файлов Arrow, в которых для столбцов Date использовался uint16, по-прежнему поддерживается. #96860 (Alexey Milovidov).
Теперь пользователи могут использовать ClickStack (интерфейс обсервабилити) прямо из ClickHouse, что удобно для отладки и локальной разработки. #96597 (Aaron Knudtson).
Добавлена поддержка одноразового пароля на основе времени (TOTP) в качестве метода аутентификации. #71273 (Vladimir Cherkasov).
Добавлена настройка базы данных lazy_load_tables. Если параметр включён, таблицы не загружаются при запуске базы данных — вместо этого создаётся облегчённый StorageTableProxy, а реальный табличный движок инициализируется при первом обращении. #96283 (xiaohuanlin).
Добавлена настройка input_format_max_block_wait_ms для вывода блоков данных по таймауту, а также разрешена обработка оставшихся данных при неожиданном закрытии HTTP-соединения. #94509 (Mostafa Mohamed Salah).
Добавлена системная таблица system.tokenizers, в которой перечислены все доступные токенизаторы. #96753 (Robert Schulze).
Добавлена новая системная таблица system.user_defined_functions для мониторинга статуса загрузки и конфигурации UDF. #90340 (Xu Jia).
Добавлена таблица system.jemalloc_stats, предоставляющая статистику аллокатора памяти jemalloc (через malloc_stats_print) для диагностики использования памяти на серверах, собранных с jemalloc. Также в HTTP-интерфейс ClickHouse добавлена конечная точка /jemalloc.html для интерактивной визуализации этой статистики. #97077 (Antonio Andelic).
Добавлена таблица system.jemalloc_profile_text для чтения и анализа профилей кучи jemalloc. Формат вывода задаётся настройкой jemalloc_profile_text_output_format (raw, symbolized или collapsed; по умолчанию — collapsed). Разрешение встроенных фреймов управляется параметром jemalloc_profile_text_symbolize_with_inline (если параметр включён, встроенные фреймы включаются ценой более медленной символизации; если отключён, они пропускаются для ускорения вывода). Для формата collapsed параметр jemalloc_profile_text_collapsed_use_count определяет, взвешиваются ли стеки по количеству активных выделений памяти (true) или по объёму активных байтов (false, по умолчанию). Это упрощает профилирование памяти и визуализацию flame graph для профилей кучи jemalloc. Исправляет #93248. #97218 (Antonio Andelic).
Добавлена настройка default_dictionary_database, которая позволяет ClickHouse разрешать внешние словари, на которые ссылаются без указания базы данных, в указанной базе данных по умолчанию. Это упрощает миграцию от глобальных словарей, определённых в XML, к словарям уровня отдельных баз данных, определённым в SQL, — благодаря этому существующие запросы к словарям (например, dictGet('name', …)) продолжают работать без изменений. #91412 (Dmitrii Plotnikov).
Добавлена поддержка вспомогательного ZooKeeper для DatabaseReplicated. #91683 (RinChanNOW).
Добавлены новая табличная функция primes и новая системная таблица system.primes, содержащая простые числа в возрастающем порядке. Закрывает #90839. #92776 (Nihal Z. Miaji).
Асинхронные вставки поддерживают параллельный кворум. Вставленные данные реплицируются до кворума. Если обнаруживаются дубликаты, запрос ожидает, пока ранее вставленные данные также не будут реплицированы. #93356 (Sema Checherinda).
Добавлены functions colorOKLABToSRGB, colorSRGBToOKLAB для преобразования значений из sRGB в OKLAB и обратно. #93361 (Pranav Tiwari).
Новая настройка deduplicate_insert, которая имеет приоритет над insert_deduplicate и async_insert_deduplicate. #94413 (Sema Checherinda).
Серверная настройка insert_deduplication_version позволяет перейти на единый хеш дедупликации. #95409 (Sema Checherinda).
Добавлен запрос OPTIMIZE <table> DRY RUN PARTS <part names> для имитации слияний без фиксации результирующей части. Это может быть полезно для тестирования: проверки корректности слияний в новой версии, детерминированного воспроизведения ошибок, связанных со слияниями, и надёжного бенчмаркинга производительности слияний. #96122 (Anton Popov).
Добавлена новая проверка, по умолчанию включаемая настройкой check_named_collection_dependencies, чтобы предотвратить удаление именованных коллекций, используемых таблицами. #96181 (Pablo Marcos).
Добавлена system.fail_points для просмотра существующих failpoint'ов на сервере и проверки, включены они или нет. Это поможет автоматизировать тестирование. #96762 (Pedro Ferreira).
Добавлена поддержка ролевого доступа к каталогу Glue. Используйте настройки aws_role_arn и, при необходимости, aws_role_session_name. #90825 (Antonio Andelic).
Добавлен параметр add_minmax_index_for_temporal_columns, который при включении автоматически создаёт minmax-индексы для всех столбцов Date, Date32, Time, Time64, DateTime и DateTime64. #93355 (Michael Jarrett).
Поддержка расширенных алиасов таблиц в JOIN (запросы вида SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b). Закрывает #95131. #95331 (Yarik Briukhovetskyi).
Добавлена поддержка ALTER TABLE RENAME COLUMN для таблиц Iceberg. Ранее поддерживались только ADD COLUMN, DROP COLUMN и MODIFY COLUMN. #97455 (murphy-4o).
Тип данных QBit для хранения квантованных векторов в bit-packed формате (используется для приближённого поиска ближайших соседей) теперь общедоступен и больше не требует включения экспериментального параметра. #95358 (Raufs Dunamalijevs).
Векторный поиск в ClickHouse теперь может использовать реплики в кластере, чтобы распределять нагрузку и поиск по частям векторного индекса. Это позволяет ClickHouse поддерживать большие векторные индексы, которые превышают объём памяти одной виртуальной машины. #95876 (Shankar Iyer).
Добавлен серверный AST fuzzer, управляемый параметрами ast_fuzzer_runs и ast_fuzzer_any_query. Если параметр включён, сервер после обычного выполнения каждого запроса запускает его случайные мутации, отбрасывая результаты. #97568 (Alexey Milovidov).
В экспериментальный диалект KQL добавлена функция iif. #94790 (happyso).
Определение схемы теперь учитывает allow_experimental_nullable_tuple_type. Если параметр включён, выведенные типы кортежей могут быть Nullable(Tuple(...)), поэтому отсутствующие вложенные объекты могут иметь значение NULL вместо кортежа из элементов NULL. #95525 (Nihal Z. Miaji).
Параметр use_statistics_cache теперь включён по умолчанию, поэтому статистика столбцов кэшируется в памяти для ускорения оптимизации запросов без повторной загрузки из каждой части. #95950 (Han Fei).
Разрешено использовать любое детерминированное выражение в первичном ключе для пропуска данных (например, ORDER BY cityHash64(user_id)/ ORDER BY length(user_id)). Для детерминированных выражений ClickHouse может применить выражение к константам запроса и использовать результат в индексе первичного ключа для предикатов, таких как =, IN и has. Если выражение также является инъективным (например, ORDER BY hex(p) или ORDER BY reverse(tuple(reverse(p), hex(p)))), индекс можно эффективно использовать и для отрицательных форм: !=, NOT IN и NOT has. Закрывает #10685. Закрывает #82161. #92952 (Nihal Z. Miaji).
Улучшен формат хранения статистики. Теперь вся статистика хранится в одном файле. #93414 (Anton Popov).
Разрешено параллельное чтение для удалённых табличных движков/функций при использовании файлового кэша. #71781 (Kseniia Sumarokova).
Разрешено использовать кэш страниц в пространстве пользователя с локальными файлами и табличными функциями объектного хранилища. #77874 (Michael Kolupaev).
Устранено лишнее memcpy в кэше страниц в пространстве пользователя. #77884 (Michael Kolupaev).
Значение по умолчанию для concurrent_threads_scheduler теперь — max_min_fair вместо fair_round_robin. Это повышает справедливость при высокой нагрузке, отдавая приоритет запросам с меньшим числом выделенных слотов, чтобы короткие запросы не страдали из-за длительных. #95300 (Sergei Trifonov).
Если в запросе FINAL для фильтрации использовалось условие по первичному ключу, а затем skip-индексы для остальных условий, то на этапе обработки PrimaryKeyExpand пересечение теперь будет проверяться только для исходно отобранных диапазонов первичного ключа. #94903 (Shankar Iyer).
При использовании параллельных реплик с табличными функциями, такими как s3(...), запросы с одним подзапросом, в который обёрнута табличная функция, теперь автоматически распараллеливаются по репликам, тогда как раньше распараллеливались только прямые обращения к табличным функциям. Закрывает #92264. #96332 (phulv94).
Добавлено разбиение файлов данных и системных файлов в кэше на отдельные сегменты. #87834 (MikhailBurdukov).
Ускорены некоторые операции хеш-соединения за счёт реализации динамической диспетчеризации для ColumnVector::replicate. #79573 (Raúl Marín).
Улучшена производительность параллельного hash join в случаях со сложными предикатами. Ранее строки без соединения обрабатывались в одном потоке, что неоптимально; суть этой оптимизации — распараллелить обработку таких строк между несколькими потоками. Поведение можно переключать с помощью настройки parallel_non_joined_rows_processing. Включено по умолчанию. #92068 (Yarik Briukhovetskyi).
Уменьшено потребление памяти AST. Оптимизация оправданна, поскольку эти поля не используются, если подсветка отключена и разбор VALUES не выполняется. #93974 (Ilya Yatsishin).
Оптимизировано потребление памяти именованными объектами Tuple в AST. Имена столбцов теперь хранятся как строки в объекте tuple, а не в универсальных узлах литералов AST. #94704 (Ilya Yatsishin).
Девиртуализация улучшена благодаря дополнительным опциям компоновщика. #94737 (Nikita Taranov).
Улучшена производительность клонирования реплики для таблиц ReplicatedMergeTree с большим количеством частей за счёт пакетирования запросов ZooKeeper. #94847 (c-end).
Если на этапе чтения уже применялись фильтры PREWHERE, добавить новый фильтр было нельзя. Это изменение откладывает оптимизацию PREWHERE до завершения оптимизации JOIN runtime filter, чтобы runtime filters также можно было протолкнуть в PREWHERE. #95838 (Alexander Gololobov).
Ускорено сжатие кодеком T64 за счёт использования динамической диспетчеризации на x86. #95881 (Raúl Marín).
Ускорена работа uniq на числовых типах за счёт пакетирования вставок, где это возможно (not null, not -If, без GROUP BY, без IPv6 и String). #95904 (Raúl Marín).
Низкоуровневые оптимизации для Keeper: было установлено, что на ZooKeeper::observeOperations приходится >20% потребления CPU потоком приёма ZooKeeper. Это изменение решает проблему следующим образом: 1. Для AggregatedZooKeeperLog::stats используется CityHash64 вместо SipHash, что более чем в 10 раз быстрее. 2. Для Coordination::ErrorCounter используется std::array<std::atomic<UInt32>, N> вместо std::unordered_map и std::mutex. #95962 (Miсhael Stetsyuk).
Убрано 64-байтовое выравнивание у ProfileEvents::Counter для экономии памяти. #96097 (Azat Khuzhin).
Оптимизация памяти: размер структуры CachedOnDiskReadBufferFromFile сокращён в 50 раз. #96098 (Azat Khuzhin).
Не копировать старые данные при изменении размера пустой хеш-таблицы. #96180 (Raúl Marín).
Добавлена поддержка JOIN Runtime Filters для RIGHT OUTER JOIN. #96183 (Hechem Selmi).
Оптимизация enable_join_runtime_filters теперь включена по умолчанию. #89314 (Alexey Milovidov).
Ранее оптимизация прямого чтения для текстового индекса применялась только в том случае, если все части имели материализованный текстовый индекс. Этот PR добавляет частичную поддержку: если некоторые части имеют материализованный текстовый индекс, для них будет использоваться он, а для частей без материализованного текстового индекса будет выполняться исходное выражение фильтра. #96411 (Anton Popov).
Добавлены вторичные индексы minmax для временных столбцов и индексы bloom_filter для столбцов query_id/initial_query_id в системных таблицах журналов для ускорения фильтрации. #96712 (Alexey Milovidov).
Оптимизация lazy materialization теперь применяется ко всем ветвям запроса UNION ALL, а не только к первой. Запросы, объединяющие несколько отсортированных чтений с лимитом из разных таблиц MergeTree через UNION ALL, теперь получают преимущество от отложенного чтения столбцов в каждой ветви, что снижает объём I/O. #96832 (Federico Ginosa).
Оптимизировано вычисление minmax-индекса пропуска при INSERT: устранено ненужное копирование данных и включено векторизованное вычисление min/max для числовых столбцов. #97392 (Raúl Marín).
Хранилище DeltaLake теперь использует результат count() из метаданных Delta Lake и корректно отображает статистику таблицы в system.tables (общее количество байтов/строк). #96190 (Kseniia Sumarokova).
Неиспользуемые столбцы также исключаются из этапа чтения при чтении из MergeTree. Это особенно полезно, когда фильтр проталкивается в PREWHERE. #89982 (János Benjamin Antal).
Улучшена обработка запроса SHOW TABLES за счёт получения только имён таблиц, а также улучшен getLightweightTablesIterator, чтобы он возвращал структуру, содержащую только имена таблиц. Устраняет #93835. #94467 (Smita Kulkarni).
Улучшены assumeNotNull, coalesce, ifNull, чтобы задействовать отсечение по первичному ключу и skip-индексам для диапазонных предикатов, когда столбцы ключа обёрнуты в эти функции. Закрывает #94689. #94754 (Nihal Z. Miaji).
В запрос Keeper getChildren добавлено расширение with_data & with_stat. Это позволяет получать не только список дочерних узлов, но и их stat и/или data в рамках одной операции. #94826 (Nikolay Degterinsky).
Анализ индекса выполняется только один раз (в большинстве случаев) независимо от того, будет ли в итоге выполняться локальный план или план с параллельными репликами. #94854 (Nikita Taranov).
Добавлена возможность включать распределённый анализ индексов на основе количества частей (distributed_index_analysis_min_parts_to_activate) и размера индексов (distributed_index_analysis_min_indexes_size_to_activate). #95216 (Azat Khuzhin).
Уменьшено потребление памяти некоторыми классами AST. #95514 (Raúl Marín).
Ограничено количество потоков pipeline, создаваемых при включенном split_intersecting_parts_ranges_into_layers. Это помогает избежать чрезмерного потребления памяти. #96478 (Nikita Taranov).
Реализована оптимизация эквивалентных множеств для нескольких JOIN. Запросы с несколькими последовательными операциями INNER JOIN теперь выигрывают от улучшенной оптимизации проталкивания фильтров. Когда таблицы соединяются по эквивалентным столбцам (например, t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10), фильтры, применённые к любой таблице в цепочке, автоматически проталкиваются во все таблицы. Закрывает #96550. #96596 (Vladimir Cherkasov).
Новые параметры конфигурации: logger.startup_console_level и logger.shutdown_console_level, позволяющие переопределять уровень логирования в консоль при запуске и завершении работы ClickHouse соответственно. #95919 (Garrett Thomas).
Учитывать переопределения из командной строки при перезагрузке конфигурации. Закрывает #80294. #80295 (Alexey Milovidov).
Разрешены переопределения в формате ключ-значение для параметров именованной коллекции в табличной функции mongodb. #89616 (vanchaklar).
Оптимизация чтения по порядку для таблиц Iceberg теперь работает со сложными функциями сортировки, такими как icebergBucket и icebergTruncate, а не только с простыми ссылками на столбцы. #90256 (Konstantin Vedernikov).
Добавлен новый столбец parts_postpone_reasons в system.mutations для улучшения диагностики; в нём отображаются причины откладывания частей. #92206 (Shaohua Wang).
Отслеживание изменений в количестве строк, подлежащих чтению (из-за вставок/удалений или использования кэша условий запроса), в DataflowStatisticsCache. #93636 (Nikita Taranov).
Добавлена поддержка запроса SYSTEM RESET DDL WORKER [ON CLUSTER]. Он предназначен для сброса состояния DDLWorker в его основном потоке. Это полезно для обновления статуса активной реплики при изменении идентификаторов хостов. #93780 (Tuan Pham Anh).
Добавлена поддержка mutation_ids в system.part_log для событий типа MUTATE_PART и MUTATE_PART_START. #93811 (Shaohua Wang).
Фоновые операции (Mutate, Merge) теперь можно настраивать независимо с помощью профиля 'background'. Ранее такие операции использовали те же настройки, что и обычные запросы, через профиль 'default'. #93905 (Arsen Muk).
Добавлена новая метрика QueryNonInternal для отслеживания количества одновременно выполняемых невнутренних запросов. Эта метрика экспортируется как ClickHouseMetrics_QueryNonInternal и помогает операторам мониторить число одновременно выполняемых запросов с учётом лимита max_concurrent_queries, который применяется только к невнутренним запросам. #94284 (Ashwath Singh).
Добавлена поддержка сбора статистики по входным байтам для столбцов из компактных частей в RuntimeDataflowStatisticsCacheUpdater. #94626 (Nikita Taranov).
Добавлена проверка некорректной конфигурации Keeper, приводящей к ошибкам при сборке кластера. Закрывает #60932. #94682 (Konstantin Bogdanov).
Улучшена десериализация префиксов JSON при загрузке частей. #94848 (Pavel Kruglov).
Рефакторинг записи через полный конвейер INSERT, который запускает materialized views для целевой таблицы. #94890 (Kai Zhu).
Используйте оптимизации плана поиска по векторному сходству только при наличии индекса для столбца поиска. #94998 (Eduard Karacharov).
Проверять общий лимит памяти перед аутентификацией пользователя и выдавать ошибку (total) memory limit exceeded, если общий лимит превышает допустимое значение. #95003 (Nikolai Kochetov).
Добавлена опция конфигурации throw_on_unmatched_row_policies, которая, если параметр включён, генерирует исключение, если пользователь выполняет запрос к таблице, для которой заданы политики строк, но ни одна из них не применяется к этому пользователю, — это предотвращает неоднозначное поведение, при котором из-за неверной настройки управления доступом возвращаются все строки. #95014 (Vitaly Baranov).
Динамическое обновление токенов доступа S3 в длительных запросах с Unity Catalog. Это закрывает #93981. #95069 (Konstantin Vedernikov).
Отключать dirty page decay в jemalloc, если ClickHouse испытывает длительное давление по памяти в течение memory_worker_decay_adjustment_period_ms миллисекунд. Включать dirty page decay в jemalloc обратно, если ClickHouse работает в штатных условиях в течение того же времени. #95145 (Antonio Andelic).
Поддержка вспомогательного ZooKeeper для S3Queue с использованием настройки keeper_path из s3Queue. #95203 (Diego Nieto).
Параметр max_parts_to_merge_at_once теперь учитывается при слиянии частей с удалением по TTL. #95315 (Kseniia Sumarokova).
Добавлены connection_address и connection_port в query_log для отражения фактического подключения (address и port заменяются при подключении через прокси и auth_use_forwarded_address=1). #95471 (Yakov Olkhovskiy).
Исправлен некорректный учёт памяти для кэша условий запроса. Основная проблема заключалась в том, что не учитывался ключ кэша, состоящий из нескольких строк (например, part_name, идентификатора таблицы и всего SQL-условия). #95478 (Nikita Mikhaylov).
Сервер, запущенный со встроенной конфигурацией, позволит управлять пользователями и правами доступа, сохраняя их в каталог access, как и при обычной конфигурации. Это упрощает тестирование. Также во встроенной конфигурации и в clickhouse-local включены все access_control_improvements. #95481 (Alexey Milovidov).
Улучшены сообщения об ошибках аутентификации S3: теперь при отказе в доступе они содержат подсказку проверить учетные данные. #95648 (Gerald Latkovic).
Включен кэш статистики, а период его обновления установлен равным 300 с. #95841 (Han Fei).
В system.aggregated_zookeeper_log добавлено имя компонента. #95882 (Antonio Andelic).
Пропуск чтения из объектного хранилища при выполнении запросов к таблицам DeltaLake из system.tables. #95899 (Antonio Andelic).
Параметр enable_max_bytes_limit_for_min_age_to_force_merge теперь включён по умолчанию, если значение настройки compatibility — 26.2 или выше. #95917 (Christoph Wurm).
В предыдущих версиях при сочетании конфликтующих выражений ALTER с UPDATE и RENAME COLUMN вместо корректного исключения возникала логическая ошибка. Исправляет #70678. #96022 (Alexey Milovidov).
Улучшен вывод справки для всех приложений ClickHouse, добавлена опция --no-sudo и внесено ещё несколько исправлений. Это продолжение #58244 от Ilya Yatsishin. #96025 (Alexey Milovidov).
Добавлен алиас distanceCosine для cosineDistance, поскольку у всех остальных функций расстояния уже есть алиасы такого вида. #96065 (Raufs Dunamalijevs).
Добавлена поддержка расширения Keeper with_data для улучшения загрузки таблиц в Database Replicated. #96090 (Nikolay Degterinsky).
Улучшено проталкивание фильтров для numbers и primes. ClickHouse теперь может определять консервативные границы значений по условиям WHERE, когда точные границы определить невозможно, и соответствующим образом ограничивать генерацию последовательности (например, для WHERE number % 5 < 2 AND number > 100 AND number < 300 ClickHouse будет генерировать только числа от 100 до 300, а затем применять предикат), что позволяет избежать сканирований без ограничений. Закрывает #84853. Закрывает #93913. #96115 (Nihal Z. Miaji).
Ранее спецификатор формата заключал SELECT в круглые скобки при наличии предложения COMMENT, чтобы избежать неоднозначности при разборе. Теперь вместо этого COMMENT выводится перед AS SELECT, что устраняет неоднозначность без круглых скобок. #96293 (Alexey Milovidov).
Параметр конфигурации allow_impersonate_user теперь находится в разделе access_control_improvements, а не является отдельной серверной настройкой. #96451 (Vitaly Baranov).
Сделали настройку конфигурации core_dump.size_limit поддерживающей горячую перезагрузку, чтобы не приходилось перезапускать серверы для применения изменений конфигурации. #96524 (Miсhael Stetsyuk).
Улучшена совместимость CPU- и real-time-профилировщиков при использовании таймаутов сокета. #96601 (Sergei Trifonov).
Предотвращено повторное появление удалённых данных, если ADD COLUMN выполняется сразу после мутации DROP COLUMN. #96713 (Alexey Milovidov).
Изменён тип function_id в system.instrumentation с LowCardinality(Int32) на Int32. #96726 (Copilot).
Синхронное ожидание мутаций будет учитывать отмену запроса и временные лимиты. #96756 (Alexey Milovidov).
Добавлена системная команда SYSTEM RELOAD DELTA KERNEL TRACING <level>, позволяющая изменять уровень логирования delta-kernel, что может быть полезно при отладке. #96763 (Kseniia Sumarokova).
Фильтрация по семейству IP-адресов, то есть настройки dns_allow_resolve_names_to_ipv4/ipv6, применяется даже при отключенном DNS-кэше. #96810 (c-end).
Исправлена ошибка QUERY_CACHE_USED_WITH_SYSTEM_TABLE в веб-интерфейсе /play, возникавшая при выполнении запросов к системным таблицам. #96869 (Alexey Milovidov).
Улучшен веб-интерфейс: favicon теперь указывает на выполнение запроса; ошибки вспомогательных запросов (при загрузке баз данных и таблиц) теперь отображаются вместо того, чтобы молча игнорироваться. Закрывает #85055. #96883 (Alexey Milovidov).
Левая панель в интерфейсе /play сделана кликабельной для переключения списка баз данных. #96884 (Alexey Milovidov).
DROP DATABASE теперь удаляет таблицы в обратном порядке зависимостей, что повышает устойчивость к сбоям, если база данных содержит таблицы с зависимостями при загрузке (например, таблицы Distributed, использующие joinGet). #97057 (Alexey Milovidov).
Обновили yaml-cpp, чтобы исключить пропуск некорректного YAML. #97333 (Azat Khuzhin).
Показывать индикатор загрузки на боковой панели play.html, пока загружаются таблицы. #97531 (Alexey Milovidov).
Добавлена кнопка «Копировать в буфер обмена» для сырых результатов запроса во встроенном веб-интерфейсе (play.html). #97532 (Alexey Milovidov).
Исправлен обфускатор запросов (clickhouse-format --obfuscate): теперь он в большем числе случаев генерирует корректно разбираемый SQL. #97584 (Alexey Milovidov).
Исправление ошибки (некорректное поведение, видимое пользователю, в официальном стабильном релизе)
После ALTER, изменяющих только метаданные, например при расширении элементов Enum, оптимизация агрегации с проекцией могла приводить к исключению. #84143 (Alexey Milovidov).
materialized views теперь используют в качестве контекста выполнения базу данных, в которой они были созданы, что означает следующее: - можно опустить явное указание базы данных в именах, используемых в SELECT-запросе представления - если явное указание базы данных отсутствует, предполагается та же база данных, в которой было создано materialized view. #88193 (Dmitry Kovalev).
Исправлена подстановка параметров запроса в методах аутентификации CREATE USER при использовании ON CLUSTER. Параметры запроса в методах аутентификации (например, пароль) не подставлялись, что вызывало ошибки UNKNOWN_QUERY_PARAMETER на удалённых узлах. #92777 (xiaohuanlin).
Исправлены несоответствия при анализе текстового индекса для функций has, mapContainsKey и mapContainsValue. Ранее запросы с этими функциями могли возвращать разные результаты в зависимости от того, вычислялось ли выражение с использованием текстового индекса или без него. #93578 (Anton Popov).
Исправлено падение при прикреплении таблицы к базе данных MaterializedPostgreSQL, если dropReplicationSlot выбрасывает исключение во время раскрутки стека. #96871 (Alexey Milovidov).
Резервное копирование могло привести к сбою сервера, если одновременно выполнялось много резервных копий, конфликтующих из-за одних и тех же файлов. #93659 (Alexey Milovidov).
Исправляет запросы с parallel replicas и JOIN с таблицей не-MT. Закрывает #92056. #93902 (Igor Nikonov).
Исправлена проблема, из-за которой столбцы Iceberg с точками в именах возвращали значения NULL. #94335 (Mikhail Koviazin).
Исправлена обработка строк UTF-8 в stringJaccardIndexUTF8 и улучшена производительность. #94613 (Joanna Hulboj).
Исправлены возможные переполнения в WITH FILL STALENESS (которые приводят к неопределённому поведению (UB) и/или бесконечным циклам). Исправлен возможный бесконечный цикл из-за больших скачков. Добавлена поддержка старого анализатора (в основном для стресс-тестов). #94663 (Azat Khuzhin).
Исправлено возможное зависание распределённых запросов, когда имена хостов разрешаются в несколько IP-адресов и удалённая реплика перестаёт отвечать. #94726 (c-end).
Исправлен некорректный результат при соединении нескольких табличных выражений, когда крайним левым табличным выражением является табличная функция -Cluster. Устраняет проблему #89996. #94748 (Konstantin Bogdanov).
Исправлены некорректное отсечение по первичному ключу и skip-индексу для предикатов с использованием toWeek, toYearWeek, toStartOfWeek, toLastDayOfWeek и toDayOfWeek, а также исключения в некоторых из этих функций для корректных запросов с LowCardinality(String). #94816 (Nihal Z. Miaji).
Убрана ненужная возможность пропускать проверку прав доступа в запросах ATTACH для представления с SQL Security. Это предотвращает потенциальное повышение привилегий, когда пользователь выполняет ATTACH представления с definer без проверки необходимых прав доступа. #94865 (pufit).
Исправлен INSERT в таблицы Iceberg с materialized views, при котором терялась информация о дедупликации, из-за чего возникало исключение. #94938 (Daniil Ivanik).
Исправлена ошибка, из-за которой SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME> удаляла весь кэш запросов в кластере. #94978 (Rory Crispin).
Постоянная гранулярность индекса (use_const_adaptive_granularity) теперь сохраняется после Вертикальных слияний (v2 с исправлением для Nested и в целом). #95013 (Azat Khuzhin).
Исправлена отмена выполнения табличной функции postgresql() с помощью KILL QUERY и прерывания запроса (Ctrl+C) в clickhouse-client. #95136 (Roman Vasin).
Исправлен вывод типов для квалифицированных столбцов из таблиц-источников при использовании нескольких соединений с предложением USING. Ранее последующие соединения некорректно приводили типы исходных столбцов к общему супертипу, даже если столбец не участвовал в данном соединении (например, в SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a) столбец t2.a используется только в первом соединении, поэтому его тип должен быть супертипом t1.a и t2.a, без учета t3.a). Это могло приводить к логическим ошибкам или сбоям, когда функции ожидали одни типы столбцов, а в плане выполнения фактически оказывались другие. #95157 (Vladimir Cherkasov).
Выполнять преобразование столбца только один раз при получении содержимого списка манифеста .avro и файлов. #95164 (Daniil Ivanik).
Исправлен некорректный расчёт размеров столбцов JSON, который мог приводить к чрезмерному использованию памяти или неверной статистике столбцов. #95207 (Azat Khuzhin).
Исправлен неточный учёт памяти при применении крупных патч-частей после легковесных обновлений. Ранее применение крупных патч-частей могло приводить к чрезмерному потреблению памяти, из-за чего серверный процесс мог быть завершён OOM killer. #95231 (Anton Popov).
Исправлено неопределённое поведение, которое могло приводить к некорректным результатам или возникновению исключения, когда распределённый запрос с max_parallel_replicas переходил на локальную реплику во время анализа индекса. #95263 (Azat Khuzhin).
Исправлено агрегирование разреженных столбцов для sum и временных рядов, когда group_by_overflow_mode установлен в any. #95301 (Mikhail Koviazin).
Исправлена проблема с надежностью в политике диска plain_rewritable: ошибка сети в процессе удаления файла метаданных могла оставить хранилище в несогласованном состоянии. #95302 (Mikhail Artemenko).
Аргумент password табличной функции redis теперь маскируется в логах и системных таблицах (например, в query_log). #95325 (János Benjamin Antal).
Исправлена ошибка, из-за которой таблицы можно было удалить или изменить, пока над ними ещё выполнялся распределённый запрос, что могло приводить к исключениям или некорректным результатам. #95356 (Azat Khuzhin).
Исправлена логическая ошибка, возникавшая в некоторых случаях при использовании отрицательного LIMIT/OFFSET в распределённых запросах. #95357 (Nihal Z. Miaji).
Исправлена ошибка, из-за которой clickhouse-client при подключении по SSH дважды запрашивал пароль. #95372 (Isak Ellmer).
Исправлена ошибка фильтра prewhere, вызванная использованием лямбда-выражений в prewhere. #95395 (Xiaozhe Yu).
Исправлено optimize_syntax_fuse_functions: sum/count/avg больше не переписываются в sumCount(), когда аргумент агрегатной функции имеет тип Nullable. Закрывает #95390. #95441 (Nihal Z. Miaji).
Исправлена дедупликация при потоковом чтении из движка S3(Azure)Queue. #95467 (Kseniia Sumarokova).
Исправлено обновление политик строк, назначенных исходному пользователю, при выполнении распределённых запросов. #95469 (Vitaly Baranov).
Исправлена проверка для зашифрованных дисков поверх plain_rewritable (устранена возможная ошибка It is not possible to register multiple plain-rewritable disks with the same object storage prefix). #95470 (Azat Khuzhin).
У табличной функции mergeTreeProjection отсутствовала проверка прав доступа, из-за чего пользователи без права SELECT на таблицу (но с правами на табличные функции) могли читать данные из её проекций. Это исправление добавляет ту же проверку прав доступа, которая уже есть в mergeTreeIndex и mergeTreeAnalyzeIndexes. #95480 (Alexey Milovidov).
Исправлена возможная логическая ошибка при чтении подстолбца «размер» из динамических подстолбцов типов Dynamic/JSON. #95573 (Pavel Kruglov).
Исправлена регрессия в (экспериментальной) репликации с нулевым копированием, появившаяся после #94262: совместно используемые части могли удаляться до того, как другие реплики завершали их получение. #95597 (filimonov).
Исправлен сбой при применении tupleElement к массивам JSON. Закрывает #95581. #95647 (Pavel Kruglov).
Исправлено исключение logical error, возникавшее при использовании сопоставителя (*) внутри лямбда-функции в предложении VALUES в JOIN с USING. Закрывает #93675. #95661 (Vladimir Cherkasov).
Исправлена логическая ошибка There was an error: Cannot obtain error message, возникавшая при одновременном ожидании distributed DDL и удалении базы данных Replicated. Исправляет #95539. #95664 (Alexander Tokmakov).
Исправлена ошибка, из-за которой функция IN возвращала некорректные результаты при значениях NULL, когда включён transform_null_in. Закрывает #65776. #95674 (Nihal Z. Miaji).
Корректно обрабатываются типы LowCardinality Nullable в CAST при включённой настройке cast_keep_nullable. Закрывает #95670. #95747 (Alexey Milovidov).
Исправлено состояние гонки для столбца join с типом Nullable в runtime filters. #95775 (Hechem Selmi).
Исправлена возможная логическая ошибка в запросе с сопоставителем (*, table.*) и analyzer_compatibility_join_using_top_level_identifier, когда столбец USING имеет разные типы в таблицах и в списке SELECT. Закрывает #90477. #95808 (Vladimir Cherkasov).
Исправлены ошибки безопасности памяти в операциях параллельного пула потоков (резервное копирование, агрегация, распределённые запросы), которые могли приводить к исключениям при возникновении ошибки во время планирования задач. #95818 (Raúl Marín).
Исправлен сбой при выполнении DROP WORKLOAD одновременно с запросами, использующими удаляемый объект WORKLOAD. #95856 (Alexey Milovidov).
Ускорено выполнение запросов к системным таблицам при использовании пользователя с ограниченными правами доступа во многих базах данных. Закрывает #89371. #95874 (pufit).
Исправлено выполнение tupleElement для JSON со вложенными путями; ранее это могло приводить к неверному результату запроса. #95907 (Pavel Kruglov).
Исправлена ошибка NOT_SUPPORTED, которая могла возникнуть при использовании алгоритма join direct с пустой таблицей MergeTree. #95935 (Vladimir Cherkasov).
Исправлено поведение, из-за которого клиент не предлагал и не автодополнял имена алиасов для настроек; закрывает #92190. #95945 (phulv94).
Исправлено поле event_date в system.asynchronous_metric_log. #95947 (Raúl Marín).
Исправлена обработка пропуска путей в типе данных JSON. Ранее при использовании JSON(SKIP path) пропускались все ключи JSON с префиксом path, даже такие, как "pathpath", что могло приводить к потере данных для этих путей при insert. Теперь это исправлено: пропускается только ключ "path". #95948 (Pavel Kruglov).
Часть с неизвестными проекциями не должна считаться безвозвратно утерянной. #95952 (Mikhail Artemenko).
Исправлено преобразование пустой строки в NULL в таблице Join с ключом типа Nullable(String). Закрывает #71414. #96002 (Alexey Milovidov).
Исправлен формат ProtobufList, который создавал фантомную запись в пустых таблицах. Закрывает #72596. #96010 (Alexey Milovidov).
Исправлено несоответствие типов в функции if между UInt64 и Int32 в редком случае распределённых запросов и PREWHERE при выводе типов. Закрывает #70017. #96012 (Alexey Milovidov).
Исправлены проблемы с JIT-компиляцией запросов, использующих типы Bool. #96013 (Alexey Milovidov).
Исправлена логическая ошибка при чтении столбца UUID из столбца SQLite с типом TEXT. Закрывает #71263. #96016 (Alexey Milovidov).
Исправлено преобразование типов в движке SQLite для DateTime, Date, UUID и других типов. Закрывает #73481. #96017 (Alexey Milovidov).
Значения FixedString экранировались некорректно в запросах к внешним базам данных SQLite и PostgreSQL. Закрывает #73519. Совместно с @jh0x. #96019 (Alexey Milovidov).
Исправлена ошибка assertion в WindowTransform при большом смещении PRECEDING. Закрывает #75852. #96026 (Alexey Milovidov).
Исправлена ошибка, из-за которой было возможно повреждение данных, когда конкурентные асинхронные вставки используют одинаковые имена параметров, но содержат разные значения. #96035 (Seva Potapov).
Исправлен период работы глобальных профилировщиков (задаётся параметрами global_profiler_real_time_period_ns и global_profiler_cpu_time_period_ns). Вместо заданного значения использовалось усечённое, из-за чего профилировщик просыпался чаще, чем предполагалось. #96048 (Antonio Andelic).
Ранее, если reference data file в файле манифеста Iceberg для position delete присутствовал в entry, но имел значение null, мы не получали корректные границы для соответствующих файлов данных. Этот PR исправляет эту ошибку. #96061 (Daniil Ivanik).
Исправлена ошибка use-after-free при анализе индекса при редком сочетании отключённого use_primary_key и очень большого числа дизъюнкций условий, использующих индекс. #96112 (Alexey Milovidov).
Исправлена регрессия в кодеке Gorilla, возникавшая, когда явно заданный размер не соответствовал размеру типа данных, а размер буфера был слишком мал. В предыдущих версиях это приводило к исключению при распаковке. Закрывает #78253. #96118 (Alexey Milovidov).
Предотвращена взаимная блокировка при загрузке словарей, когда один словарь ссылается на таблицу Merge, которая рекурсивно ссылается на него. Закрывает #78360. #96120 (Alexey Milovidov).
Исправлено использование неинициализированного значения в formatDateTime при использовании спецификаторов формата переменной ширины, таких как в стилях MySQL и JODA. #96133 (Alexey Milovidov).
Комбинация настроек use_const_adaptive_granularity и index_granularity_bytes (что означает "неадаптивную гранулярность") приводила к неверному вычислению количества строк для чтения и к исключению. #96143 (Alexey Milovidov).
Выполнение некорректной мутации ALTER UPDATE в файловоподобных таблицах объектного хранилища, таких как S3 и Azure, могло приводить к разыменованию nullptr. Закрывает #92994. #96162 (Alexey Milovidov).
Исправлено AccessRights::contains, возвращавшее некорректные результаты при частичном отзыве прав доступа. #96170 (pufit).
Исправлена коллизия хеша кэша условий запроса для констант, свёрнутых в CTE, которая могла привести к неправильному результату запроса. Закрывает #96060. #96172 (Alexey Milovidov).
Исправлена возможная взаимная блокировка в ProcessList. Это может произойти из-за возможной инверсии блокировок, если трекер оверкоммита памяти срабатывает в момент добавления задачи в механизм проверки отмены. #96182 (Antonio Andelic).
Исправлена ошибка, из-за которой запросы с внешними JOIN (LEFT, RIGHT или FULL) в сочетании с несколькими INNER JOIN могли возвращать некорректные результаты из-за недопустимого изменения порядка JOIN. Когда условие ON внешнего JOIN ссылалось на столбцы из нескольких ранее присоединённых таблиц, оптимизатор не учитывал все зависимости между таблицами и мог неправильно изменить порядок JOIN, что приводило к пропуску строк. Закрывает #95972. #96193 (Vladimir Cherkasov).
Если для таблицы не определена статистика, ClickHouse не следует пытаться её загружать. Это позволяет избежать лишних накладных расходов (100+ мс) на проверку наличия файлов статистики. (issue #96068). #96233 (Han Fei).
Исправлен optimize_syntax_fuse_functions: он больше не переписывает sum/count/avg в sumCount(), когда аргумент агрегатной функции имеет тип LowCardinality(Nullable). Закрывает #95390. #96239 (Nihal Z. Miaji).
Исправлено некорректное отсечение партиций для функций not IN и not has в некоторых случаях. #96241 (Nihal Z. Miaji).
Исправлен stack-use-after-scope в индексе векторного сходства. #96259 (Alexey Milovidov).
Исправлено: тестовый раннер не распознавал комментарии-подсказки об ошибках, когда запросу предшествовал SQL-комментарий. #96336 (Yakov Olkhovskiy).
Исправлена логическая ошибка в KeyCondition, когда у таблицы первичный ключ допускает NULL, а запрос использует функцию coalesce, у которой первый аргумент является константой. #96340 (Alexey Milovidov).
Взаимодействие GROUPING SETS, group_by_use_nulls и типа данных Tuple, содержащего LowCardinality, могло приводить к неожиданной структуре block в pipeline запроса, что вызывало логическую ошибку. Это проявилось после введения NullableTuple. #96358 (Alexey Milovidov).
Можно было создать таблицу с пустым выражением () в качестве индекса, что приводило к некорректному доступу к памяти. #96363 (Alexey Milovidov).
Исправлен сбой в старом анализаторе при использовании JOIN и дублирующихся алиасов. #96405 (Ilya Golshtein).
Исправлена ошибка Nested columns sizes are inconsistent with local_discriminators, вызванная некорректной оптимизацией фильтрации in-place для столбцов Variant. #96410 (Alexey Milovidov).
Исправлена ошибка, из-за которой в CREATE TABLE ... CLONE AS ... игнорировался полный квалификатор исходной таблицы. #96415 (Hasyimi Bahrudin).
Исправлена отмена table function mysql с помощью KILL QUERY и прерывания запроса (Ctrl+C) в clickhouse-client. #96437 (Roman Vasin).
Устраняет livelock в потоке проверки отмены для запросов с высокими значениями max_execution_time. #96450 (Sergei Trifonov).
Исправлена логическая ошибка в некоторых случаях при использовании дробного LIMIT/OFFSET в распределённых запросах. #96475 (Nihal Z. Miaji).
Исправлена ошибка разыменования нулевого указателя в некоторых выражениях с лямбда-функциями. #96479 (Alexey Milovidov).
Исправлены некорректные результаты при преобразовании столбцов LowCardinality в Nullable. #96483 (Nihal Z. Miaji).
Исправлен сбой при создании таблицы Iceberg с предложением ORDER BY, которое ссылается на несуществующий столбец или использует позиционный аргумент. Закрывает #93280. #96484 (Konstantin Vedernikov).
Исправлено исключение runtime filter для столбцов Tuple с вложенными полями Nullable. #96509 (Alexey Milovidov).
Исправлено исключение LOGICAL_ERROR в нативном модуле чтения Parquet V3, если столбец фильтра PREWHERE содержит небулевы значения UInt8. #96594 (Alexey Milovidov).
Исправлена неявная регенерация индекса в реплицируемых таблицах при изменении метаданных. #96600 (Raúl Marín).
Исправлена ошибка при записи в таблицы Iceberg, из-за которой вставки в партиционированные таблицы могли приводить к некорректному распределению данных по файлам партиций. #96620 (Konstantin Vedernikov).
Исправлена ошибка heap-use-after-free в команде CREATE TABLE с ограничениями. #96669 (Nikita Taranov).
Проверка версии witness в bech32 во избежание переполнения буфера. #96671 (Raúl Marín).
Исправлена ошибка, из-за которой system.tables возвращала ошибки, когда REST-каталог озера данных создавался с недопустимой настройкой auth_header. #96680 (Han Fei).
Исправлено поведение, при котором min(timestamp) возвращал значение эпохи (1970-01-01) через _minmax_count_projection после TTL-слияния, когда все строки в блоке были отфильтрованы. #96703 (Raquel Barbadillo).
Улучшена проверка настройки iceberg_metadata_file_path, чтобы предотвратить обход каталогов и гарантировать, что указанный файл метаданных находится в каталоге таблицы. #96754 (Daniil Ivanik).
Исправлен сбой в ifNull при использовании аргумента Variant в GROUP BY. #96790 (Alexey Milovidov).
Исправлены коллизии ключей кэша у таблиц с настройкой table_disk=1. #96818 (Raufs Dunamalijevs).
Исправлен код выхода clickhouse-client после ошибки сервера. #96841 (Vitaly Baranov).
Запросы с CROSS JOIN при включённых параллельных репликах могли возвращать некорректный результат. Исправляет #74337. #96848 (Igor Nikonov).
Исправлена ошибка, из-за которой запросы ALTER TABLE DROP COLUMN завершались с ошибкой после того, как на том же столбце ранее было выполнено легковесное обновление. #96861 (Anton Popov).
Исправлено переполнение стека (аварийное завершение) при создании архивных резервных копий (.zip, .tzst) на диске plain_rewritable Объектного хранилища. #96872 (Alexey Milovidov).
Исправлен сбой сервера при ошибке резервного копирования из-за переполнения диска или других ошибок ввода-вывода в целевой файловой системе. #96873 (Alexey Milovidov).
Исправлено поведение EXCEPT ALL и INTERSECT ALL: они игнорировали кратность строк и работали как варианты DISTINCT. #96876 (Alexey Milovidov).
Исправлено исключение std::terminate в indexOfAssumeSorted, возникавшее при вызове с несовместимыми типами (например, массив IPv4 и целочисленное значение для поиска). #96877 (Alexey Milovidov).
Исправлено исключение Bad cast from type DB::ColumnNullable to DB::ColumnString при использовании оконных функций с group_by_use_nulls = 1 и CUBE/ROLLUP/GROUPING SETS. #96878 (Alexey Milovidov).
Исправлены некорректные результаты при преобразовании JIT-компилируемыми выражениями DateTime в DateTime64 (например, в CASE/if/multiIf со смешанными типами DateTime). Значение переинтерпретировалось вместо корректного масштабирования, из-за чего после включения компиляции выражений получались неверные временные метки. #96879 (Alexey Milovidov).
Исправлено исключение logical error в CoalescingMergeTree, возникавшее, когда выражение skip-индекса возвращало константный столбец (например, bloom_filter для ifNotFinite(1, c0) в случае целочисленного столбца). #96880 (Alexey Milovidov).
Исправлен неверный номер порта в сообщении об ошибке при ошибочном подключении по HTTP к порту нативного протокола с включённым TLS. #96881 (Alexey Milovidov).
Исправлено, что SETTINGS, заданные на уровне отдельных подзапросов, не применялись к табличным функциям, таким как file, в CTE и подзапросах. #96882 (Alexey Milovidov).
Устранена утечка памяти в объектах BIO при чтении сертификатов X509. #96885 (Alexey Milovidov).
Исправлено исключение LOGICAL_ERROR в анализаторе запросов, которое возникало, когда вместо конкретного значения передавалось лямбда-выражение (например, в качестве аргумента аккумулятора для arrayFold). #96892 (Alexey Milovidov).
Исправлено исключение ColumnNullable is not compatible with original при приведении сложных вложенных типов (Array из Nullable Tuple, содержащего Map со значениями типа Nullable Enum). #96924 (Alexey Milovidov).
Устранено состояние гонки при параллельной загрузке сегментированного словаря HASHED, из-за которого иногда могли не загружаться некоторые строки. #96953 (Alexey Milovidov).
Исправлено состояние гонки между REPLACE PARTITION и фоновыми мутациями, из-за которого после замены могли одновременно отображаться старые и новые данные. #96955 (Alexey Milovidov).
Исправлена ошибка, из-за которой функция arrayJoin создавала дублирующиеся строки при использовании с INNER JOIN и предложением WHERE: оптимизация частичного проталкивания предикатов некорректно проталкивала фильтры, содержащие arrayJoin, ниже JOIN. #96989 (Alexey Milovidov).
Исправлен сбой (SEGFAULT) в clearCaches, вызванный тем, что BlockIO::operator= не перемещал query_metadata_cache, из-за чего происходило преждевременное уничтожение кэшированных снимков хранилища и обращение к уже освобождённому хранилищу MergeTreeData. #96995 (Alexey Milovidov).
Исправлено аварийное завершение из-за ошибки проверки утверждения в IfTransformStringsToEnumPass, когда функция if или transform возвращает Nullable(String) (например, с GROUP BY ... WITH CUBE и group_by_use_nulls = true). #97002 (Alexey Milovidov).
Исправлена проблема, из-за которой при INSERT ... SELECT с UNION ALL и JOIN в столбцы с константными строковыми значениями могли записываться неверные данные после слияния блоков. #97019 (Hasyimi Bahrudin).
Исправлено исключение assert_cast (или тихое повреждение данных в релизных сборках) при построении статистики столбцов после изменения типа столбца командой ALTER TABLE MODIFY COLUMN. #97027 (Alexey Milovidov).
Исправлено чтение неинициализированной памяти в интерфейсах Azure Blob Storage, SSH и Arrow Flight. #97053 (Alexey Milovidov).
Исправлены случаи, когда индексы влияли на результат выполнения запросов с ROW POLICY/PREWHERE и FINAL. #97076 (Yarik Briukhovetskyi).
Исправлено оставшееся условие гонки между REPLACE PARTITION и фоновыми мутациями в таблицах MergeTree, из-за которого старые данные могли снова появляться. #97105 (Alexey Milovidov).
Исправлены неявные индексы для столбцов-псевдонимов; перед их созданием теперь выполняется полная проверка. #97115 (Raúl Marín).
Исправлена логическая ошибка в FunctionVariantAdaptor для функций, требующих константных аргументов, таких как arrayROCAUC. #97116 (Bharat Nallan).
Исправлены зависшие мутации, возникавшие, когда PartCheckThread повторно ставит в очередь GET_PART для части, уже обработанной мутацией, оставляя фантомные записи в parts_to_do. #97162 (Alexey Milovidov).
Исправлена оценка количества строк в плане запроса для подзапросов с ORDER BY ... LIMIT, из-за чего оптимизатор мог выбирать неоптимальный порядок JOIN. #97193 (Alexander Gololobov).
Исправлено исключение LOGICAL_ERROR в FunctionVariantAdaptor, когда функция, работающая со столбцами Variant, возвращает тип Nothing, что может происходить с пустыми массивами в запросах UNION ALL. #97213 (Alexey Milovidov).
Исправлено состояние гонки при операциях multipart-копирования в S3 (например, при BACKUP/RESTORE в S3), которое могло вызывать исключения при одновременном доступе. #97227 (Azat Khuzhin).
Исправлено исключение LOGICAL_ERROR, возникавшее, когда arrayJoin в предложении WHERE ссылался на столбцы с обеих сторон JOIN. #97239 (Alexey Milovidov).
Исправлено исключение LOGICAL_ERROR при чтении подстолбца .size у разреженного Nullable(String) в Tuple при использовании PREWHERE. #97264 (Alexey Milovidov).
Исправлено исключение "Количество строк в ленивом фрагменте не совпадает с количеством смещений" в LazyMaterializingTransform при чтении из таблиц с неадаптивной гранулярностью индекса (index_granularity_bytes = 0) в запросах с ORDER BY ... LIMIT. #97270 (Alexey Milovidov).
Исправлена ошибка, из-за которой при SYSTEM RESTART REPLICA таблица пропадала из базы данных, если повторное создание таблицы завершалось исключением, не связанным с ZooKeeper (например, из-за лимита памяти), что приводило к несовпадению дайджеста метаданных в DatabaseReplicated. #97276 (Alexey Milovidov).
Поле readonly в system.merge_tree_settings теперь корректно отражает, что некоторые настройки MergeTree (например, index_granularity) безусловно являются доступными только для чтения. #97277 (Robert Schulze).
Исправлен сбой при оптимизации count() для таблиц MergeTree, если снимок хранилища был создан без данных. #97281 (Pablo Marcos).
Исправлено возможное падение при определении имён функций по отладочной информации в стек-трейсах. #97294 (Azat Khuzhin).
Исправлена логическая ошибка в analyzer_compatibility_join_using_top_level_identifier и столбцах ALIAS. Закрывает #96228. #97297 (Vladimir Cherkasov).
Исправлено исключение LOGICAL_ERROR в applyOrder при использовании столбцов с текстовым индексом в предложении QUALIFY. #97313 (Alexey Milovidov).
В системной таблице system.functions для внутренних функций теперь отображается categories = 'Internal' вместо categories = ''. #97315 (Robert Schulze).
Запрос с цепочкой RIGHT JOIN при включенных параллельных репликах может приводить к некорректному результату. Исправляет #74341. #97316 (Igor Nikonov).
Исправлены ложные ошибки TABLE_UUID_MISMATCH, которые могли возникать при использовании refreshable materialized view и в других сценариях, когда таблицы переименовываются. #97323 (Azat Khuzhin).
Исправлен segfault при резервном копировании StorageKeeperMap, вызванный use-after-free висячего указателя на хранилище в ленивом batch резервного копирования. #97336 (Alexey Milovidov).
Исправлена работа функции exists со скалярным подзапросом внутри ALTER UPDATE/DELETE, когда включён mutations_execute_subqueries_on_initiator. Скалярный подзапрос вычислялся некорректно, что могло привести к ошибке или к повреждению команды мутации, из-за чего таблица не загружалась при следующем перезапуске сервера. #97347 (Kirill Kopnev).
Исправлено логическое исключение Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8))), возникавшее при сравнении NULL со столбцом Variant, содержащим типы LowCardinality. #97379 (Alexey Milovidov).
Устранено возможное состояние гонки, когда EXCHANGE TABLES выполняется параллельно при включённом сегментированном кэше запросов. #97411 (Konstantin Vedernikov).
Исправлено исключение LOGICAL_ERROR при преобразовании Array в QBit, когда nullable_source из внешней обёртки Tuple подменяет преобразованный столбец массива столбцом несовместимого типа. Закрывает #97389. #97413 (Alexey Milovidov).
Исправлена неконсистентность форматирования AST при обратимом преобразовании литералов кортежей с псевдонимами внутри круглых скобок; например, (('a', 'b') AS x) ошибочно переформатировалось в tuple(('a', 'b') AS x). #97418 (Alexey Milovidov).
Исправлено исключение при асинхронных вставках с дедупликацией, когда ошибка разбора приводила к созданию пустого блока с нулём строк. #97460 (Sema Checherinda).
Исправлено исключение "Количество строк в ленивом фрагменте не совпадает с количеством смещений" в LazyMaterializingTransform при чтении из таблиц с неадаптивной гранулярностью индекса (index_granularity_bytes = 0) с использованием ORDER BY ... LIMIT. #97482 (Alexey Milovidov).
Исправлены настройки вставки в Iceberg. Добавлен псевдоним для настройки allow_experimental_insert_into_iceberg. #97483 (Konstantin Vedernikov).
Исправлен ACCESS_DENIED для пользователей без разрешения CREATE TEMPORARY TABLE, когда оптимизация optimize_inverse_dictionary_lookup переписывает условия с dictGet(...). Теперь ClickHouse пропускает такое переписывание и выполняет исходное выражение. Закрывает #97269. #97484 (Nihal Z. Miaji).
Исправлен assertion failure (исключение в debug/sanitizer-сборках) в Set и MergeTreeIndexSet при обработке столбцов с вложенными разреженными подстолбцами (например, столбцов Tuple из частей MergeTree с разными профилями разреженной сериализации). #97493 (Alexey Milovidov).
Исправлена возможная ошибка use-after-free в StorageKafka2. #97520 (Bharat Nallan).
Исправлена работа INTO OUTFILE с TRUNCATE и настройкой into_outfile_create_parent_directories, если путь вывода содержит каталоги. #97549 (Alexey Milovidov).
Исправлена ошибка BAD_ARGUMENTS при запросе таблиц с лямбда-выражениями внутри ALIAS-столбцов через табличную функцию merge() с включённым анализатором. #97551 (Alexey Milovidov).
Исправлено исключение в system.zookeeper_info, когда zxid в Keeper равен 0. #97553 (Alexey Milovidov).
Исправлена возможная логическая ошибка в словаре ip_trie, если тип ключа не String. #97555 (Bharat Nallan).
Исправлена ошибка, из-за которой OAuth-аутентификация REST catalog не работала для базового RestCatalog (она работала только для производных каталогов, таких как OneLakeCatalog). Из-за этого после появления BigLake catalog перестал работать REST catalog по умолчанию. #97561 (Konstantin Vedernikov).
Функции геометрии (perimeterSpherical, areaSpherical и т. д.) теперь принимают отдельные подтипы геометрии (Polygon, Ring, Point и т. д.) в дополнение к вариантному типу Geometry. #97571 (Alexey Milovidov).
Исправлено исключение LOGICAL_ERROR при использовании isNull/isNotNull на подстолбцах типов Nullable(Tuple(... Nullable(T) ...)). Закрывает #97224. #97582 (Alexey Milovidov).
Исправлено разыменование нулевого указателя при применении патч-частей в ходе легковесных обновлений. #97583 (Alexey Milovidov).
BaseSettings::readBinary передаёт индекс из accessor.find в field_infos[] без проверки специального значения «не найдено» (то есть -1), что может привести к выходу за границы std::vector. Проблему удалось обнаружить благодаря усиленной защите libcxx. Вероятно, это происходило при десериализации плана запроса, когда более новый сервер отправляет настройку, неизвестную более старому серверу. Метод чтения на основе строк уже обрабатывает этот случай корректно; в readBinary просто отсутствовала такая же проверка. #97585 (Miсhael Stetsyuk).
Исправлены некорректные результаты в запросах UNION ALL, где одна из ветвей содержала предикат с константным значением false — такая ветвь ошибочно читала данные вместо того, чтобы возвращать пустой результат. #97620 (Bharat Nallan).
Исправлена ошибка, из-за которой IN (col) с единственной ссылкой на столбец завершался ошибкой UNSUPPORTED_METHOD. #97646 (Alexey Milovidov).
Устранено исключение logical error, возникавшее во время GROUP BY ... WITH ROLLUP/CUBE, когда ключи включают LowCardinality(Nullable(...)) внутри Nullable(Tuple(...)). #97647 (Alexey Milovidov).
Исправлена неконсистентность форматирования AST для NOT (1, 1, 1), которая могла приводить к LOGICAL_ERROR в debug-сборках. #97653 (Alexey Milovidov).
Исправлено исключение в keeper-converter при обработке пустых файлов журнала сделок ZooKeeper. #97673 (Alexey Milovidov).
Исправлена принудительная установка is_local в false при настроенном bind_host; вместо этого добавлен интеграционный тест. Дополнение к #74741. #93109#96018 (Zhigao Hong).
Стресс-тесты: исправлены стресс-тесты и тесты обновления в CI. Игнорируются теги no-{build}. Добавлена рандомизация совместимости. #94693 (Nikita Fomichev).
Опубликован бинарный файл parser_memory_profiler в составе сборки. Инструмент можно использовать для анализа потребления памяти AST. #95826 (Ilya Yatsishin).
Добавлен флаг --symbolize для инструмента parser_memory_profiler, который создаёт файлы .heap.sym с разрешёнными именами символов в результатах. #96477 (Ilya Yatsishin).
Зафиксированы версии сторонних Docker-образов в интеграционных тестах. #96500 (Alexey Milovidov).
Восстановлена возможность динамической линковки OpenSSL. Это не рекомендуется и не используется ни в каких сборках для промышленной эксплуатации, но эта возможность по-прежнему остаётся для энтузиастов из интернета. #96506 (Govind R Nair).
Диапазон magic_enum уменьшен с [-100, 1000] до диапазона по умолчанию [-128, 127] за счёт использования специализации для Coordination::OpNum на уровне типа, что сокращает время сборки. #96632 (Alexey Milovidov).
Удалены лишние шаблоны C++ в классах Function, чтобы сократить время сборки. #96646 (Alexey Milovidov).
Перенести генерацию StorageSystemLicenses на этап конфигурации, чтобы улучшить параллелизм сборки. #96697 (Alexey Milovidov).
Добавлен stateless-функциональный тест для поддержки протокола SSH. #96996 (Alexey Milovidov).
В инфраструктуру stateless-функциональных тестов добавлен Kafka 3.9.0, что позволяет напрямую тестировать табличные движки Kafka и Kafka2, используя ClickHouse Keeper в качестве ZooKeeper. Шесть новых stateless-тестов охватывают базовые сценарии produce/consume, виртуальные столбцы, INSERT, несколько форматов, обработку повреждённых сообщений и хранение смещений в Keeper. #96997 (Alexey Milovidov).
Добавлен CI-процесс для сборки тулчейна clang, оптимизированного с помощью PGO+BOLT. #96991 (Alexey Milovidov).
Используйте в CI сборку LLVM/Clang, оптимизированную с помощью PGO, что должно ускорить сборку на 20..30%. #97031 (Alexey Milovidov).
Отдельные cmake-опции для наборов инструкций x86 (ENABLE_SSSE3, ENABLE_AVX2, NO_SSE3_OR_HIGHER, ARCH_NATIVE и т. д.) заменены единой числовой опцией X86_ARCH_LEVEL (1/2/3/4), соответствующей стандартным уровням микроархитектуры x86-64, уже используемым системой диспетчеризации во время выполнения. #97354 (Raúl Marín).
Исключено инстанцирование вариантов шаблона division_by_nullable=true для операций, не связанных с делением, в FunctionBinaryArithmetic, что сокращает время компиляции и размер бинарного файла. #97496 (Raúl Marín).
Сокращён объём включений Exception.h за счёт его удаления из широко используемых заголовочных файлов, таких как typeid_cast.h, assert_cast.h, Context_fwd.h, IDataType.h, а также из различных заголовочных файлов Column. #97497 (Raúl Marín).
Всегда используйте входящие в комплект заголовочные файлы compiler-rt (интерфейсы sanitizer и XRay) вместо заголовочных файлов компилятора хоста, а библиотеки compiler-rt по умолчанию собирайте из исходного кода. #97499 (Raúl Marín).
Исключено включение заголовков boost/multiprecision в wide_integer_impl.h на платформах с достаточной поддержкой long double, что сокращает время сборки. #96633 (Alexey Milovidov).
Реализован job LLVM Code Coverage, который изначально включён для ветки master. #90952 (Alexey Bakharew).
Включено быстрое усиление защиты libcxx для релизных сборок. В основном это требуется для проверок выхода за пределы границ. По результатам тестов производительности заметного влияния на производительность не ожидается. #94757 (Miсhael Stetsyuk).
Исправлено непоследовательное форматирование, вызванное некорректной подстановкой алиасов в форматтере. Это закрывает #82833. Это закрывает #82832. Это закрывает #68296. Это изменение потенциально несовместимо с предыдущими версиями: когда анализатор отключен, некоторые запросы CREATE VIEW с оператором IN, ссылающимся на алиас, не могут быть обработаны. Чтобы избежать несовместимости, включите анализатор (по умолчанию он включен, начиная с 24.3). #82838 (Alexey Milovidov).
Кодеки DEFLATE_QPL и ZSTD_QAT были удалены. Пользователям рекомендуется преобразовать существующие данные, сжатые с помощью DEFLATE_QPL или ZSTD_QAT, в другой кодек перед обновлением. Обратите внимание, что для использования этих кодеков необходимо было включить настройки enable_deflate_qpl_codec и enable_zstd_qat_codec. #92150 (Robert Schulze).
Улучшена отладка UDF за счёт включения перехвата stderr в system.query_log.exception. Ранее stderr UDF записывался только в файлы и не был доступен в журналах запросов, что делало отладку невозможной. Теперь stderr по умолчанию вызывает исключения и полностью накапливается (до 1 МБ) перед их выбрасыванием, поэтому полные трассировки стека Python и сообщения об ошибках отображаются в system.query_log.exception для эффективного устранения неполадок. #92209 (Xu Jia).
Пустой список столбцов в предложении JOIN USING () теперь считается синтаксической ошибкой. Ранее предполагалось, что это приведёт к INVALID_JOIN_ON_EXPRESSION во время выполнения запроса. В некоторых случаях, например при соединении с хранилищем Join, это приводило к LOGICAL_ERROR, закрыта задача #82502. #92371 (Vladimir Cherkasov).
По умолчанию использовать частичное совпадение для оператора SKIP REGEXP в типе JSON. Закрывает #79250. #92847 (Pavel Kruglov).
Откатить изменение "Allow INSERT into simple ALIAS columns" (откат ClickHouse/ClickHouse#84154). Оно не работает с пользовательскими форматами и не управляется настройкой. #92849 (Azat Khuzhin).
Настройка, при которой выбрасывается ошибка, если у каталога озера данных нет доступа к объектному хранилищу. #93606 (Konstantin Vedernikov).
Удалён режим transposed_with_wide_view для metric_log — он неработоспособен из‑за ошибки. Теперь невозможно определять system.metric_log с этим режимом. Это частично отменяет #78412. #93867 (Alexey Milovidov).
Планирование CPU для рабочих нагрузок теперь по умолчанию является вытесняющим. См. серверную настройку cpu_slot_preemption. #94060 (Sergei Trifonov).
Экранируйте имена файлов индексов, чтобы предотвратить повреждение частей. После этого изменения ClickHouse не сможет загрузить индексы с не-ASCII-символами в их именах, созданные предыдущими версиями. Для обработки таких случаев вы можете использовать настройку MergeTree escape_index_filenames. #94079 (Raúl Marín).
Настройки формата exact_rows_before_limit, rows_before_aggregation, cross_to_inner_join_rewrite, regexp_dict_allow_hyperscan, regexp_dict_flag_case_insensitive, regexp_dict_flag_dotall и dictionary_use_async_executor теперь стали обычными (не форматными) настройками. Это сугубо внутреннее изменение без видимых для пользователя побочных эффектов, за исключением (маловероятного) случая, когда вы указывали любую из этих настроек в определениях таблиц с движками Iceberg, DeltaLake, Kafka, S3, S3Queue, Azure, Hive, RabbitMQ, Set, FileLog или NATS. В таких случаях ранее эти настройки игнорировались, теперь такие определения приводят к ошибке. #94106 (Robert Schulze).
Функции joinGet/joinGetOrNull теперь проверяют привилегии SELECT для исходной таблицы Join. После этого изменения вызов joinGet('db.table', 'column', key) требует, чтобы у пользователя была привилегия SELECT как на столбцы ключа, определённые в таблице Join, так и на столбец атрибута, который извлекается. Запросы без этих привилегий будут завершаться ошибкой ACCESS_DENIED. Для миграции выдайте необходимые разрешения с помощью GRANT SELECT ON db.join_table TO user для доступа ко всей таблице или GRANT SELECT(key_col, attr_col) ON db.join_table TO user для доступа на уровне столбцов. Это изменение затрагивает всех пользователей и приложения, использующие joinGet/joinGetOrNull, для которых ранее не были явно настроены привилегии SELECT. #94307 (Vladimir Cherkasov).
Теперь для запросов CREATE TABLE ... AS ... используется проверка SHOW COLUMNS. Ранее использовалась проверка SHOW TABLES, что требовало некорректной привилегии для такого типа проверки прав. #94556 (pufit).
Формат вывода Hash сделан независимым от размеров блоков. #94503 (Alexey Milovidov). Обратите внимание, что это изменит значения выходных хэшей по сравнению с предыдущими версиями.
Дедупликация асинхронных вставок теперь работает с зависимыми materialized view. Когда происходит коллизия по block_id, исходный блок фильтруется для удаления строк, связанных с этим block_id, а оставшиеся строки преобразуются всеми соответствующими запросами SELECT из materialized view, в результате исходный блок перестраивается без конфликтующих строк. #89140 (Sema Checherinda). Теперь допускается использовать дедупликацию с асинхронными вставками, когда задействованы materialized view. #93957 (Sema Checherinda).
По умолчанию включена use_variant_as_common_type, что позволяет использовать несовместимые типы внутри Array, в запросах UNION, а также в ветвях if/multiIf/case. #90677 (Alexey Milovidov).
Добавляет метрику ClickHouse_Info в эндпоинт Prometheus /metrics, содержащую в основном информацию о версии, что позволяет строить графики, отслеживающие подробную информацию об изменении версии во времени. #91125 (Christoph Wurm).
Введена новая четырехсимвольная команда rcfg для keeper, которая позволяет изменять конфигурацию кластера. Эта команда предоставляет более широкие возможности для изменения конфигурации, чем стандартный запрос reconfigure. Команда принимает JSON-строку в качестве аргумента. Весь набор байт, отправляемый в TCP-интерфейс, должен выглядеть так: rcfg{json_string_length_big_endian}{json_string}. Некоторые примеры использования команды могут выглядеть следующим образом: {"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}. #91354 (alesapin).
Добавлена функция reverseBySeparator, которая обращает порядок подстрок в строке, разделённых указанным разделителем. Закрывает #91463. #91780 (Xuewei Wang).
Добавляет новую настройку max_insert_block_size_bytes, которая позволяет более детально управлять формированием вставляемых блоков. #92833 (Kirill Kopnev).
Можно выполнять DDL‑запросы с указанием ON CLUSTER для реплицируемой базы данных, если включена настройка ignore_on_cluster_for_replicated_database. В этом случае имя кластера будет игнорироваться. #92872 (Kirill).
Добавлен столбец files в таблицу system.parts, показывающий количество файлов в каждой части данных. #94337 (Match).
Добавляет планировщик max-min fair для управления параллелизмом. Обеспечивает более высокую справедливость при сильной переподписке (oversubscription), когда множество запросов конкурируют за ограниченное число CPU-слотов. Кратковременные запросы не страдают из‑за долгих запросов, которые со временем накопили больше слотов. Включается с помощью серверной настройки concurrent_threads_scheduler со значением max_min_fair. #94732 (Sergei Trifonov).
Добавлена возможность клиенту ClickHouse переопределять TLS SNI при подключении к серверу. #89761 (Matt Klein).
Параметр use_skip_indexes_on_data_read теперь по умолчанию включён. Эта настройка позволяет выполнять фильтрацию в потоковом режиме одновременно с чтением данных, улучшая производительность запросов и время их запуска. #93407 (Shankar Iyer).
Повышена производительность DISTINCT на столбцах с типом LowCardinality. Закрывает #5917. #91639 (Nihal Z. Miaji).
Оптимизирована агрегатная функция distinctJSONPaths так, чтобы она читала только пути JSON из частей данных, а не весь JSON-столбец. #92196 (Pavel Kruglov).
Проталкивание большего числа фильтров через операторы JOIN. #85556 (Nikita Taranov).
Расширена поддержка проталкивания фильтров из условия ON оператора JOIN, когда фильтр использует данные только с одной стороны. Добавлена поддержка соединений типов ANY, SEMI, ANTI. #92584 (Dmitry Novik).
Разрешить использование эквивалентных множеств для проталкивания фильтров в SEMI JOIN. Закрывает #85239. #92837 (Dmitry Novik).
Пропускаем чтение левой стороны хэш-соединения, когда правая сторона пуста. Ранее левая сторона читалась до первого непустого блока, что могло приводить к значительным затратам при сильной фильтрации или агрегации. #94062 (Alexander Gololobov).
Использование метода «fastrange» (Daniel Lemire) для партиционирования данных внутри конвейера запроса. Это может улучшить параллельную сортировку и операции JOIN. #93080 (Alexey Milovidov).
Улучшена производительность оконных функций, когда PARTITION BY совпадает с ключом сортировки или является его префиксом. #87299 (Nikita Taranov).
Внешний фильтр проталкивается в представления, что позволяет применять PREWHERE на локальных и удалённых узлах. Resolves #88189. #88316 (Igor Nikonov).
Если пропускающий индекс, используемый в запросе с FINAL, построен по столбцу, который является частью первичного ключа, дополнительный шаг проверки пересечения по первичному ключу в других частях избыточен и теперь не выполняется. Resolves #85897. #93899 (Shankar Iyer).
Оптимизирована производительность и использование памяти для дробных значений LIMIT и OFFSET. #91167 (Ahmed Gouda).
Исправлено использование более быстрой логики произвольного чтения для префетчера Parquet Reader V3. Closes #90890. #91435 (Arsen Muk).
Don't filter by virtual columns on constant filters. #91588 (c-end).
Снизить потребление памяти при операциях INSERT и слияниях широких частей для очень широких таблиц за счёт включения адаптивных буферов записи. Добавить поддержку адаптивных буферов записи для зашифрованных дисков. #92250 (Azat Khuzhin).
Повышена производительность полнотекстового поиска с текстовым индексом и токенизатором sparseGrams за счёт уменьшения числа токенов, просматриваемых в индексе. #93078 (Anton Popov).
Функция isValidASCII была оптимизирована под положительный сценарий, то есть для входных значений, полностью состоящих из символов ASCII. #93347 (Robert Schulze).
Оптимизация чтения в порядке сортировки теперь распознаёт случаи, когда столбцы в ORDER BY являются константами вследствие условий WHERE, что позволяет эффективно выполнять чтение в обратном порядке. Это полезно для мультиарендных запросов вроде WHERE tenant='42' ORDER BY tenant, event_time DESC, которые теперь могут использовать InReverseOrder вместо полной сортировки.". #94103 (matanper).
Добавлен специализированный класс AST для Enum для хранения значений в виде пар (строка, целое число) вместо дочерних ASTLiteral, что оптимизирует потребление памяти. #94178 (Ilya Yatsishin).
Distributed index analysis on multiple replicas. Beneficial for shared storage and huge amount of data in cluster. This is applicable for SharedMergeTree (ClickHouse Cloud) and could be applicable for other types of MergeTree tables on a shared storage. #86786 (Azat Khuzhin).
Reduce overhead of join runtime filters by disabling them in the following cases: - too many bits are set in the bloom filter - too few rows are filtered out at runtime. #91578 (Alexander Gololobov).
Используйте буфер в памяти для входных данных коррелированных подзапросов, чтобы избежать их повторного вычисления. Часть #79890. #91205 (Dmitry Novik).
Разрешить всем репликам забирать «осиротевшие» диапазоны при параллельном чтении реплик. Это улучшает балансировку нагрузки и снижает задержки «длинного хвоста». #91374 (zoomxi).
Внешние агрегация/сортировка/JOIN теперь во всех случаях учитывают настройку запроса temporary_files_codec. Исправлено отсутствие событий профилирования для grace hash join. #92388 (Vladimir Cherkasov).
Make query memory usage detection for spilling to disk during aggregation/sorting more robust. #92500 (Azat Khuzhin).
Estimate total rows count and NDV (number of distinct values) statistics of aggregation key columns. #92812 (Alexander Gololobov).
Оптимизировано сжатие списков постингов с помощью simdcomp. #92871 (Peng Jian).
Рефакторинг обработки режима Ordered в S3Queue с использованием бакетов. Это также должно повысить производительность, сократив количество запросов к Keeper. #92889 (Kseniia Sumarokova).
Functions mapContainsKeyLike and mapContainsValueLike can now leverage a text index on mapKeys() or mapValues(), respectively. #93049 (Michael Jarrett).
Reduce memory usage on non-Linux systems (enable immediate purging of jemalloc dirty pages). #93360 (Eduard Karacharov).
Принудительно очищать арены jemalloc, если отношение размера «грязных» страниц к max_server_memory_usage превышает memory_worker_purge_dirty_pages_threshold_ratio. #93500 (Eduard Karacharov).
В некоторых случаях мы наблюдали, что ClickHouse не соблюдает ограничение по памяти при чтении из таблицы. Это поведение исправлено. #93715 (Nikita Mikhaylov).
По умолчанию включены расширения Keeper CHECK_STAT и TRY_REMOVE. #93886 (Mikhail Artemenko).
Разбирать нижнюю и верхнюю границы имён файлов, соответствующих position deletes, из записей манифеста Iceberg для более точного выбора соответствующих файлов данных. #93980 (Daniil Ivanik).
Добавлены ещё две настройки для управления максимальным количеством динамических подстолбцов в столбце JSON. Первая — настройка MergeTree merge_max_dynamic_subcolumns_in_compact_part (аналогично уже добавленной merge_max_dynamic_subcolumns_in_wide_part), которая ограничивает количество динамических подстолбцов, создаваемых при слиянии в компактную часть. Вторая — настройка на уровне запроса max_dynamic_subcolumns_in_json_type_parsing, которая ограничивает количество динамических подстолбцов, создаваемых при разборе данных JSON; она позволяет задать этот лимит при вставке. #94184 (Pavel Kruglov).
Незначительно оптимизировано уплотнение JSON-столбцов для отдельных случаев. #94247 (Pavel Kruglov).
Уменьшите размер очередей пула потоков на основе опыта эксплуатации. Добавьте явную проверку потребления памяти перед чтением любых данных из MergeTree. #94692 (Nikita Mikhaylov).
Make sure the scheduler would prefer MemoryWorker thread under the CPU starvation, because it protects ClickHouse process from an existential threat. #94864 (Nikita Mikhaylov).
Выполнять очистку «грязных» страниц jemalloc в отдельном потоке, отличном от основного потока MemoryWorker. Если очистка выполняется медленно, это может задерживать обновление показателя использования RSS, что способно привести к завершению процесса из‑за превышения лимита памяти. Добавлена новая настройка memory_worker_purge_total_memory_threshold_ratio, которая запускает очистку «грязных» страниц на основе доли общего потребления памяти. #94902 (Antonio Andelic).
Таблица system.blob_storage_log теперь доступна для Azure Blob Storage. #93105 (Alexey Milovidov).
Реализован blob_storage_log для Local и HDFS. Исправлена ошибка, из‑за которой S3Queue при логировании в blob_storage_log использовал не имя диска. Добавлен столбец error_code в blob_storage_log. Тестовый конфигурационный файл разделён для упрощения локального тестирования. #93106 (Alexey Milovidov).
clickhouse-client и clickhouse-local будут подсвечивать группы разрядов (тысячи, миллионы и т. д.) внутри числовых литералов при вводе. Это закрывает #93100. #93108 (Alexey Milovidov).
В clickhouse-client добавлена поддержка аргументов командной строки с пробелами вокруг знака равенства. Закрывает #93077. #93174 (Cole Smith).
С параметром <interactive_history_legacy_keymap>true</interactive_history_legacy_keymap> CLI-клиент теперь снова использует Ctrl-R для обычного поиска, как и раньше, а Ctrl-T выполняет нечёткий поиск. #87785 (Larry Snizek).
Оператор очистки кэшей SYSTEM DROP [...] CACHE создавал ложное впечатление, что он отключает кэш. В ClickHouse теперь поддерживается оператор SYSTEM CLEAR [...] CACHE, назначение которого более очевидно. Старый синтаксис по-прежнему доступен. #93727 (Pranav Tiwari).
Добавлена поддержка использования нескольких столбцов в качестве первичного ключа в EmbeddedRocksDB. Закрывает #32819. #33917 (usurai).
Теперь можно использовать неконстантное выражение IN для скалярных значений (запросы вида val1 NOT IN if(cond, val2, val3)). #93495 (Yarik Briukhovetskyi).
Не передавать заголовки x-amz-server-side-encryption в S3‑запросы HeadObject, UploadPart и CompleteMultipartUpload, поскольку они в этих запросах не поддерживаются. #64577 (Francisco J. Jurado Moreno).
Отслеживание разбиения Hive на партиции для упорядоченного режима в S3Queue. Устраняет #71161. #81040 (Anton Ivashkin).
Оптимизировано резервирование пространства в файловом кэше. FileCache::collectCandidatesForEviction будет выполняться без исключительной блокировки. #82764 (Kseniia Sumarokova).
Добавлена поддержка составной стратегии ротации (по размеру и времени) для серверного журнала. #87620 (Jianmei Zhang).
CLI-клиент теперь может задавать <warnings>false</warnings> вместо параметра командной строки --no-warnings. #87783 (Larry Snizek).
Добавлена поддержка агрегатной функции avg для аргументов типов Date, DateTime и Time. Закрывает #82267. #87845 (Yarik Briukhovetskyi).
Оптимизация use_join_disjunctions_push_down включена по умолчанию. #89313 (Alexey Milovidov).
Добавлена поддержка большего числа табличных движков и типов источников данных в коррелированных подзапросах. Закрывает #80775. #90175 (Dmitry Novik).
Корректно обрабатывать разрыв в записях журнала Keeper, если эти записи предшествуют последнему зафиксированному индексу. #90403 (Antonio Andelic).
Улучшена настройка min_free_disk_bytes_to_perform_insert для корректной работы с JBOD-томами. #90878 (Aleksandr Musorin).
Реализована возможность указывать настройку storage_class_name в именованных коллекциях для движка таблицы S3 и табличной функции s3. #91926 (János Benjamin Antal).
Добавлена поддержка добавления вспомогательного zookeeper через system.zookeeper. #92092 (RinChanNOW).
Добавлены новые метрики для Keeper: профильные события KeeperChangelogWrittenBytes, KeeperChangelogFileSyncMicroseconds, KeeperSnapshotWrittenBytes и KeeperSnapshotFileSyncMicroseconds, а также метрики-гистограммы KeeperBatchSizeElements и KeeperBatchSizeBytes. #92149 (Miсhael Stetsyuk).
Добавлена новая настройка trace_profile_events_list, которая ограничивает трассировку trace_profile_event указанным списком имён событий. Это позволяет более точно собирать данные при больших нагрузках. #92298 (Alexey Milovidov).
Добавлена поддержка SYSTEM NOTIFY FAILPOINT для failpoint-ов с возможностью паузы. Добавлена поддержка SYSTEM WAIT FAILPOINT fp PAUSE/RESUME. #92368 (Shaohua Wang).
Добавить столбец creation (неявный/явный) в system.data_skipping_indices. #92378 (Raúl Marín).
Добавлена возможность передавать описание столбцов для динамических таблиц YTsaurus в источник словаря. #92391 (MikhailBurdukov).
В #63985 мы добавили возможность задавать все параметры, необходимые для конфигурации TLS, отдельно для каждого порта (см. composable protocols), так что больше не нужно полагаться на глобальную конфигурацию TLS. Однако реализация по-прежнему неявно требует наличия глобального конфигурационного раздела openSSL.server, что конфликтует со сценариями, где для разных портов нужны разные настройки TLS. Например, в развертываниях keeper-in-server нам требуются отдельные конфигурации TLS для взаимодействия между экземплярами Keeper и подключений клиентов ClickHouse. #92457 (Miсhael Stetsyuk).
Добавлена новая настройка input_format_binary_max_type_complexity, которая ограничивает общее количество узлов типов данных, декодируемых в бинарном формате, для защиты от вредоносных нагрузок. #92519 (Raufs Dunamalijevs).
Отображать выполняющиеся задачи в system.background_schedule_pool{,_log}. Добавлена документация. #92587 (Azat Khuzhin).
Выполнять текущий запрос при поиске через Ctrl+R в клиенте, если в истории не найдено совпадений. #92749 (Azat Khuzhin).
Добавлена поддержка EXPLAIN indices = 1 в качестве псевдонима для EXPLAIN indexes = 1. Закрывает #92483. #92774 (Pranav Tiwari).
Чтение файлов Parquet теперь позволяет интерпретировать столбцы типов Tuple или Map как JSON: select x from file(f.parquet, auto, 'x JSON') работает, даже если столбец x в f.parquet имеет тип Tuple или Map. #92864 (Michael Kolupaev).
Переход на копирование в режиме чтения и записи для Azure Blob Storage при сбое встроенного копирования с ошибкой BadRequest (например, из‑за недопустимого списка блоков). Ранее это выполнялось только при ошибке Unauthorized, которая наблюдалась при копировании BLOB-объекта в другие учетные записи хранения. Однако иногда также возникает ошибка "The specified block list is invalid". Поэтому условие было обновлено, и теперь переход на чтение & запись выполняется при любых сбоях встроенного копирования. #92888 (Smita Kulkarni).
Исправлено ограничение частоты обращений (throttling) к конечной точке метаданных EC2 при выполнении большого количества параллельных запросов к S3 с использованием учетных данных профильной роли экземпляра EC2. Ранее каждый запрос создавал собственный AWSInstanceProfileCredentialsProvider, что приводило к одновременным запросам к службе метаданных EC2, которые могли вызывать тайм-ауты и ошибки HTTP response code: 403. Теперь провайдер учетных данных кэшируется и используется совместно всеми запросами. #92891 (Sav).
Переработана настройка insert_select_deduplicate, чтобы можно было сохранять обратную совместимость. #92951 (Sema Checherinda).
Логировать фоновые задачи, выполняющиеся медленнее среднего (background_schedule_pool_log.duration_threshold_milliseconds=30), чтобы избежать избыточного логирования. #92965 (Azat Khuzhin).
В предыдущих версиях некоторые имена функций C++ отображались некорректно ("искажёнными") в system.trace_log и system.symbols, а функция demangle обрабатывала их некорректно. Закрывает #93074. #93075 (Alexey Milovidov).
Добавлен параметр резервного копирования backup_data_from_refreshable_materialized_view_targets, позволяющий пропускать резервное копирование refreshable materialized view. RMV со стратегией обновления APPEND всегда включаются в резервную копию. #93076 (Julia Kartseva). #93658 (Julia Kartseva)
Используйте минимальную отладочную информацию вместо полного её отсутствия для тяжёлых единиц трансляции, например функций. #93079 (Alexey Milovidov).
Добавлена поддержка совместимости с MinIO в AWS S3 C++ SDK за счет сопоставления кодов ошибок, специфичных для MinIO. Это изменение позволяет ClickHouse корректно обрабатывать и повторно выполнять запросы при ошибках сервера MinIO при использовании развертываний MinIO вместо AWS S3, повышая надежность для пользователей, которые запускают объектное хранилище на самостоятельно развернутых кластерах MinIO. #93082 (XiaoBinMu).
Записывать профили jemalloc с уже разрешёнными символами, что устраняет необходимость в бинарнике при генерации профилей кучи. #93099 (Azat Khuzhin).
Добавлена поддержка типа данных Geometry для flipCoordinates. #93303 (Bharat Nallan).
Улучшен UX SYSTEM INSTRUMENT ADD/REMOVE: используются строковые литералы для имён функций, изменены все подходящие функции и теперь можно использовать function_name в REMOVE. #93345 (Pablo Marcos).
Добавлена новая настройка materialize_statistics_on_merge, которая включает или отключает материализацию статистики при слиянии. Значение по умолчанию — 1. #93379 (Han Fei).
ClickHouse теперь может парсить SELECT без круглых скобок вокруг запросов вида DESCRIBE SELECT. Закрывает #58382. #93429 (Yarik Briukhovetskyi).
Проверки корректности кэша теперь выполняются случайным образом с заданной вероятностью. #93439 (Kseniia Sumarokova).
Добавлена настройка type_json_allow_duplicated_key_with_literal_and_nested_object, разрешающая дублирующиеся пути в JSON, когда один из них является литералом, а другой — вложенным объектом, например {"a" : 42, "a" : {"b" : 42}}. Некоторые данные могли быть созданы до введения этого ограничения на дублирующиеся пути в https://github.com/ClickHouse/ClickHouse/pull/79317, и дальнейшие операции с такими данными теперь могут приводить к ошибкам. С этой настройкой такие старые данные по-прежнему можно использовать без ошибок. #93604 (Pavel Kruglov).
Не выводить значения простых типов на отдельных строках в формате Pretty JSON. #93836 (Pavel Kruglov).
Если выполняется множество команд alter table ... modify setting ..., возможно, что блокировку не удастся получить в течение 5 секунд. Лучше вернуть timeout, чем logical error. #93856 (Han Fei).
Исключён избыточный вывод при синтаксической ошибке. До этого изменения выводился весь SQL‑скрипт, который мог содержать множество запросов. #93876 (Alexey Milovidov).
Корректно вычислять размер в байтах запроса check со статистикой в Keeper. #93907 (Mikhail Artemenko).
Добавлена настройка use_hash_table_stats_for_join_reordering для управления тем, используется ли статистика размера хеш-таблицы во время выполнения запроса при переупорядочивании соединений. Эта настройка включена по умолчанию, при этом сохраняется существующее поведение collect_hash_table_stats_during_joins. #93912 (Vladimir Cherkasov).
Пользователи теперь могут частично просматривать вложенные глобальные настройки сервера в таблице system.server_settings (например, logger.level). Это распространяется только на настройки с фиксированной структурой (без списков, перечислений, повторений и т. п.). #94001 (Hechem Selmi).
Когда Keeper обнаруживает повреждённый snapshot или несогласованные журналы изменений, выбрасывать исключение вместо ручного прерывания или автоматической очистки файлов. Это должно обеспечить более безопасное поведение Keeper, предполагающее ручное вмешательство. #94168 (Antonio Andelic).
Исправлена проблема, из‑за которой после ошибки CREATE TABLE могли оставаться лишние объекты. #94174 (Azat Khuzhin).
Исправлен доступ к неинициализированной памяти (ошибка в OpenSSL), возникавший при использовании TLS-ключа, защищённого паролем. #94182 (Konстантин Bogdanov).
Добавлена поддержка более общего разбиения на партиции для упорядоченного режима S3Queue. #94321 (Bharat Nallan).
Добавлен псевдоним use_statistics для настройки allow_statistics_optimize. Это делает её более согласованной с существующими настройками use_primary_key и use_skip_indexes. #94366 (Robert Schulze).
Включена настройка input_format_numbers_enum_on_conversion_error при преобразовании из Numbers в Enums, чтобы проверять, существует ли элемент. #94384 (Elmi Ahmadov).
В упорядоченном режиме S3(Azure)Queue добавлена очистка неуспешных узлов по лимитам отслеживания (ранее это выполнялось только в неупорядоченном режиме как для неуспешных, так и для обработанных узлов; теперь это также будет выполняться в упорядоченном режиме, но только для неуспешных узлов). #94412 (Kseniia Sumarokova).
Включено управление доступом для пользователя default в clickhouse-local. У пользователя по умолчанию в clickhouse-local отсутствовала привилегия access_management, из-за чего операции, такие как DROP ROW POLICY IF EXISTS, завершались ошибкой ACCESS_DENIED, хотя пользователь должен был иметь неограниченные права. #94501 (Alexey Milovidov).
Добавлена поддержка именованных коллекций для словарей и таблиц YTsaurus. #94582 (MikhailBurdukov).
Добавлена поддержка именованных коллекций, определённых в SQL, в BACKUP/RESTORE для S3 и Azure Blob Storage. Закрывает #94604. #94605 (Pablo Marcos).
Добавлена поддержка разбиения на бакеты по ключу партиции для S3Queue в упорядоченном режиме. #94698 (Bharat Nallan).
Добавлена асинхронная метрика времени выполнения самого долгого слияния. #94825 (Raúl Marín).
Добавлена проверка принадлежности файла перед применением позиционного удаления с использованием IcebergBitmapPositionDeleteTransform. #94897 (Yang Jiang).
Теперь view_duration_ms показывает время, когда группа была активна, а не сумму длительностей потоков в ней. #94966 (Sema Checherinda).
Убран лимит на максимальное количество поисковых токенов в функциях hasAnyTokens и hasAllTokens, который ранее был ограничен значением 64. Пример: SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]); Запрос приводил бы к ошибке BAD_ARGUMENTS, потому что указано 65 поисковых токенов. В этом PR лимит полностью удалён, и тот же запрос выполняется без ошибки. #95152 (Elmi Ahmadov).
Добавлена настройка input_format_numbers_enum_on_conversion_error для преобразования из Numbers в Enums с проверкой того, существует ли элемент. Закрывает: #56144. #56240 (Nikolay Degтерinsky).
Разделять ресурсы парсера формата при чтении файлов данных и файлов позиционного удаления в таблицах Iceberg, чтобы сократить количество выделений памяти. #94701 (Yang Jiang).
Исправление ошибки (некорректное поведение, видимое пользователю, в официальном стабильном релизе)
Исправляет ошибку, из-за которой предопределённые обработчики запросов интерпретировали концевые пробелы как данные при выполнении вставок. #83604 (Fabian Ponce).
Исправлена ошибка INCOMPATIBLE_TYPE_OF_JOIN для хранилища Join при применении оптимизации замены внешнего соединения на внутреннее. Исправляет #80794. #84292 (Vladimir Cherkasov).
Исправлено исключение «Invalid number of rows in Chunk», возникавшее при использовании hash join с включённым параметром allow_experimental_join_right_table_sorting. #86440 (yanglongwei).
Всегда заменяйте имена файлов на хеш в MergeTree, если файловая система не различает регистр. Ранее на системах с такой файловой системой (например, macOS) это могло приводить к повреждению данных, когда несколько имён столбцов/подстолбцов отличались только регистром. #86559 (Pavel Kruglov).
Добавлена полная проверка прав на этапе создания materialized view для базового запроса, лежащего в её основе. #89180 (pufit).
Исправлено падение функции icebergHash при константном аргументе. #90335 (Michael Kolupaev).
Исправлена логическая ошибка, когда мутация без транзакции изменяет части, принадлежащие активной транзакции, которая в итоге откатывается. #90469 (Shaohua Wang).
Корректно обновлять system.warnings после преобразования обычной базы данных в атомарную базу. #90473 (sdk2).
Исправлено срабатывание assert-проверки при чтении из файла Parquet, когда часть выражения prewhere используется в другом месте запроса. #90635 (Max Kainov).
Исправлено падение в одноузловом кластере при чтении из Iceberg в режиме split-by-buckets. Это закрывает #90913. #91553 (Konstantin Vedernikov).
Исправлена возможная логическая ошибка в движке Log при чтении подстолбцов. Закрывает #91710. #91711 (Pavel Kruglov).
Исправлена логическая ошибка: 'Storage does not support transaction' при выполнении ATTACH AS REPLICATED. #91772 (Shaohua Wang).
Исправлена некорректная работа рантайм-фильтров при наличии дополнительного последующего условия в LEFT ANTI JOIN. #91824 (Alexander Gololobov).
Исправляет ошибку, из-за которой применялось null-безопасное сравнение с участием типа Nothing. Закрывает #91834. Закрывает #84870. Закрывает #91821. #91884 (Yarik Briukhovetskyi).
Исправлены ошибки декодирования DELTA_BYTE_ARRAY в нативном Parquet-ридере, затрагивающие строковые данные с высокой степенью повторяемости. #91929 (Daniel Muino).
Кэшировать схему только для того файла, по которому она была выведена, при обработке globs, вместо всех файлов во время вывода схемы. Закрывает #91745. #92006 (Pavel Kruglov).
Исправлена ошибка Couldn't pack tar archive: Failed to write all bytes, вызванная некорректным заголовком размера записи архива. Исправляет #89075. #92122 (Julia Kartseva).
Освобождён поток запросов в INSERT SELECT, чтобы предотвратить закрытие HTTP‑соединения. #92175 (Sema Checherinda).
Исправлена логическая ошибка в запросах с несколькими операторами JOIN с предложением USING и join_use_nulls. #92251 (Vladimir Cherkasov).
Исправлен проход оптимизации count_distinct_optimization для оконных функций и при нескольких аргументах. #92376 (Raúl Marín).
Исправлена ошибка "Cannot write to finalized buffer" при использовании некоторых агрегатных функций с оконными функциями. Закрывает #91415. #92395 (Jimmy Aguilar Mena).
Исправлена логическая ошибка при использовании CREATE TABLE ... AS urlCluster() и табличного движка Replicated. Закрывает #92216. #92418 (Kseniia Sumarokova).
Наследовать настройки сериализации исходной части при мутации в MergeTree. Это исправляет потенциально некорректный результат запроса к мутировавшей части после изменений в сериализации типов данных. #92419 (Pavel Kruglov).
Исправлен потенциальный конфликт между столбцом и подстолбцом с одинаковым именем, что приводило к использованию некорректной сериализации и ошибкам выполнения запросов. Закрывает #90219. Закрывает #85161. #92453 (Pavel Kruglov).
Исправлена ошибка LOGICAL_ERROR, вызванная нежелательной модификацией плана запроса при преобразовании внешнего соединения во внутреннее. Также ослаблены требования к оптимизации, чтобы можно было применять её в случаях, когда инъективные функции применяются к ключам агрегации в операциях JOIN. #92503 (János Benjamin Antal).
Проверка наличия несовместимых типизированных путей в типе JSON. Закрывает #91577. #92539 (Pavel Kruglov).
Исправлена взаимная блокировка в SHOW CREATE DATABASE для базы данных Backup. #92541 (Azat Khuzhin).
Использовать правильный код ошибки при проверке индекса гипотезы. #92559 (Raúl Marín).
Исправлено разрешение динамических подстолбцов в псевдонимах столбцов в анализаторе. Ранее динамический подстолбец в псевдониме столбца оборачивался в вызов getSubcolumn и в некоторых случаях мог вовсе не разрешаться. Закрывает #91434. #92583 (Pavel Kruglov).
Предотвращён сбой функции tokens() при втором аргументе, равном NULL. #92586 (Raúl Marín).
Исправлено потенциальное аварийное завершение работы, вызванное изменением на месте базовых константных столбцов PREWHERE. Это могло произойти при «усадке» столбца (IColumn::shrinkToFit) или фильтрации (IColumn::filter), которые могли выполняться параллельно из нескольких потоков. #92588 (Arsen Muk).
Создание и материализация текстовых индексов в таблицах, содержащих очень большие части (более 4 294 967 295 строк), временно отключены. Это ограничение предотвращает некорректные результаты запросов, поскольку текущая реализация индекса пока не поддерживает настолько большие части. #92644 (Anton Popov).
Исправляет логическую ошибку Too large size (A) passed to allocator при выполнении операций JOIN. Закрывает #92043. #92667 (Yarik Briukhovetskyi).
Исправляет ошибку, из-за которой индексы ngrambf_v1 с длиной ngram (1‑й параметр) > 8 вызывали исключение. #92672 (Robert Schulze).
Исправляет некорректную логику проверки прав доступа для подстановочных привилегий (wildcard grants). Предыдущая попытка https://github.com/ClickHouse/ClickHouse/pull/90928 устраняла критическую уязвимость, но оказалась слишком строгой, в результате чего некоторые команды GRANT с подстановками завершались ошибкой из‑за несвязанных с ними отзывов прав. #92725 (pufit).
Исправлена ошибка в логике пропуска данных при использовании not match(...) в WHERE, приводившая к некорректным результатам. Закрывает #92492. #92726 (Nihal Z. Miaji).
Не пытайтесь удалять временные каталоги при запуске, если таблица MergeTree создана на диске только для чтения. #92748 (Alexey Milovidov).
Исправлена ошибка "Cannot add action to empty ExpressionActionsChain" для ALTER TABLE REWRITE PARTS (v2). #92754 (Azat Khuzhin).
Исправлена логическая ошибка Failed to set file processing within 100 retries в хранилище S3Queue в режиме Ordered. Теперь она приводит только к предупреждению. Эта ошибка могла возникать до версии 25.10, если истекала сессия Keeper, однако в версиях 25.10+ она также будет только предупреждением, так как теоретически все еще возможно получить эту ошибку в случае высокой степени параллелизма обработки в режиме Ordered. #92814 (Kseniia Sumarokova).
Исправлен расчёт несжатых размеров текстовых индексов в таблице system.parts. #92832 (Anton Popov).
Исправлено использование первичного индекса в легковесных обновлениях, которые содержат оператор IN с подзапросами в предикате условия WHERE. #92838 (Anton Popov).
Исправлено формирование подсказки типа для пути 'skip' в JSON. Закрывает #92731. #92842 (Pavel Kruglov).
В табличном движке S3 следует избегать кеширования ключа партиции, если используются недетерминированные функции. #92844 (Miсhael Stetsyuk).
Исправлена потенциальная ошибка FILE_DOESNT_EXIST после мутации разреженного столбца с параметром ratio_of_defaults_for_sparse_serialization=0.0. Закрывает #92633. #92860 (Pavel Kruglov).
Исправлен вывод схемы Parquet в старом Parquet-ридере (по умолчанию не используется), когда столбец JSON следует за столбцом Tuple. Исправлена ошибка старого Parquet-ридера (по умолчанию не используется), приводившая к сбою при обработке пустых кортежей. #92867 (Michael Kolupaev).
Исправлена логическая ошибка при использовании нескольких JOIN по константному условию и включённым join_use_nulls, закрыт #92640. #92892 (Vladimir Cherkasov).
Исправлена возможная ошибка NOT_FOUND_COLUMN_IN_BLOCK при вставке в таблицу, использующую подстолбец в выражении партиции. Закрывает #93210. Закрывает #83406. #92905 (Pavel Kruglov).
Исправлена ошибка NO_SUCH_COLUMN_IN_TABLE в движке Merge для таблиц с псевдонимами. Закрывает #88665. #92910 (Pavel Kruglov).
Исправлен случай сравнения NULL != NULL для операции full_sorting_join по столбцу типа LowCardinality(Nullable(T)). #92924 (Vladimir Cherkasov).
Исправлено несколько сбоев при слиянии текстовых индексов в таблицах MergeTree. #92925 (Anton Popov).
Восстанавливать при необходимости обёртки LowCardinality вокруг результатов выражений Set во время агрегации TTL, чтобы предотвратить исключения при оптимизации таблицы. #92971 (Seva Potapov).
Исправлена логическая ошибка при анализе индекса, когда в функции has используется пустой массив. Закрывает #92906. #92995 (Nihал Z. Miaji).
Исправлено возможное зависание при завершении пула фоновых задач по расписанию (могло приводить к зависаниям сервера при его остановке). #93008 (Azat Khuzhin).
Исправлена возможная ошибка FILE_DOESNT_EXIST после мутации разреженного столбца, если настройка ratio_of_defaults_for_sparse_serialization была изменена на 1.0 через ALTER. #93016 (Pavel Kruglov).
Исправлена ошибка в логике пропуска данных, когда в WHERE используется not materialize(...) или not CAST(...), что приводило к некорректным результатам. Закрывает #88536. #93017 (Nihал Z. Miaji).
Исправлено возможное использование устаревших частей из-за гонки типа TOCTOU при работе с общими частями. #93022 (Azat Khuzhin).
Исправлен сбой при десериализации повреждённого агрегатного состояния groupConcat с смещениями, выходящими за допустимые границы. #93028 (Raufs Dunamalijevs).
Исправлена ошибка, из-за которой соединение оставалось в некорректном состоянии после предварительной отмены распределённых запросов. #93029 (Azat Khuzhin).
Исправлены результаты JOIN при разрежённом столбце в качестве правого ключа соединения. Это закрывает #92920. Мне удалось воспроизвести ошибку только при set compatibility='23.3'. Не уверен, стоит ли делать бэкпорт. #93038 (Amos Bird).
Исправлена возможная ошибка Cannot finalize buffer after cancellation в estimateCompressionRatio(). Исправления: #87380. #93068 (Azat Khuzhin).
Исправлены слияния текстовых индексов, построенных на основе сложных выражений (таких, как concat(col1, col2)). #93073 (Anton Popov).
Исправлено применение PROJECTION, когда фильтр содержит подстолбцы. Закрывает #92882. #93141 (Pavel Kruglov).
Исправлена логическая ошибка, которая в некоторых случаях возникала при добавлении runtime-фильтров JOIN в план запроса. Она была вызвана некорректным возвратом дублированных константных столбцов с одной из сторон JOIN. #93144 (Alexander Gololobov).
Специальная функция __applyFilter, используемая в runtime-фильтрах join, в некоторых допустимых случаях возвращала ошибку ILLEGAL_TYPE_OF_ARGUMENT. #93187 (Alexander Gololobov).
Предотвращено схлопывание разных интерполированных столбцов в один столбец в блоке, когда интерполированные столбцы фактически являются псевдонимами одного и того же столбца. #93197 (Yakov Olkhovskiy).
Не добавляйте runtime-фильтр при выполнении JOIN с уже заполненной правой таблицей. #93211 (Alexander Gololobov).
Удаляет неиспользуемые столбцы при перестроении проекций во время слияния. Это снижает использование памяти и уменьшает количество временных частей. #93233 (Nikolai Kochetov).
Исправлена ошибка удаления неиспользуемых столбцов из подзапросов при наличии скалярного коррелированного подзапроса. До исправления столбец мог быть удалён, если он использовался только в коррелированном подзапросе, из-за чего запрос завершался с ошибкой NOT_FOUND_COLUMN_IN_BLOCK. #93273 (Dmitry Novik).
Исправлена возможная проблема отсутствующего подстолбца в материализованном представлении при выполнении ALTER исходной таблицы. Закрывает #93231. #93276 (Pavel Kruglov).
Исправлено планирование запросов анализатором для табличного движка Merge, из‑за которого могла возникать ошибка ILLEGAL_COLUMN для hostName() при слиянии локальных и удалённых/Distributed таблиц. Закрывает #92059. #93286 (Jinlin).
Исправлена ситуация, когда NOT IN с неконстантными аргументами-массивами возвращал неверное значение, и добавлена поддержка неконстантных функций с типом Array. Закрывает #14980. #93314 (Yarik Briukhovetskyi).
Исправлена ошибка Not found column при использовании оптимизации use_top_k_dynamic_filtering. Исправляет #93186. #93316 (Nikolai Kochetov).
Исправлено перестроение текстовых индексов, созданных на основе подстолбцов. #93326 (Anton Popov).
Исправлена обработка пустого массива при передаче его вторым аргументом в функции hasAllTokens и hasAnyTokens. #93328 (Anton Popov).
Исправлена логическая ошибка при использовании runtime-фильтров в запросе с итогами по правой таблице. #93330 (Alexander Gololobov).
Сервер больше не падает, если функция tokens вызывается с неконстантными параметрами токенизатора (со 2-м, 3-м и 4-м параметрами), например, SELECT tokens(NULL, 1, materialize(1)). #93383 (Robert Schulze).
Исправлена уязвимость целочисленного переполнения в десериализации состояния groupConcat, которая могла приводить к проблемам с безопасностью памяти при обработке специально сконструированных агрегатных состояний. #93426 (Raufs Dunamalijevs).
Исправлен анализ текстового индекса для столбцов массивов, когда в индексе нет токенов (все массивы пусты или все токены пропускаются токенизатором). #93457 (Anton Popov).
Исключает использование аутентификации через OAuth в ClickHouse Client, если имя пользователя и пароль заданы в строке подключения. #93459 (Krishna Mannem).
Исправлена поддержка предоставляемых учетных данных Azure ADLS Gen2 в DataLakeCatalog — разбираются ключи adls.sas-token.* из REST-каталогов Iceberg и исправлен разбор URL-адресов ABFSS. #93477 (Karun Anantharaman).
Исправлена поддержка GLOBAL IN с анализатором (ранее Set повторно создавался на удалённом узле). #93507 (Azat Khuzhin).
Исправлена ошибка извлечения подстолбца при десериализации непосредственно в разреженные столбцы. #93512 (Pavel Kruglov).
Исправлено прямое чтение из текстового индекса при дублирующихся поисковых запросах. #93516 (Anton Popov).
Исправление ошибки NOT_FOUND_COLUMN_IN_BLOCK, возникающей при включённом runtime filter, если в объединённых таблицах один и тот же столбец возвращается несколько раз (например, SELECT a, a, a FROM t). #93526 (Alexander Gololobov).
Исправлена ошибка, из-за которой clickhouse-client запрашивал пароль дважды при подключении по SSH. #93547 (Isak Ellmer).
Обеспечено корректное завершение ZooKeeper при остановке (исправлено потенциальное зависание при остановке в крайне редких случаях). #93602 (Azat Khuzhin).
Исправлен LOGICAL_ERROR при восстановлении ReplicatedMergeTree при гонке дедупликации. #93612 (Pablo Marcos).
Исправлено использование разреженного столбца для обновления TTL при прямой десериализации в разреженные столбцы в некоторых входных форматах. Это исправляет возможную логическую ошибку Unexpected type of result TTL column. #93619 (Pavel Kruglov).
Исправлены случаи, когда функции индекса h3 иногда приводили к сбоям или зависанию при вызове с некорректными входными данными. #93657 (Michael Kolupaev).
Использование индекса ngram_bf для данных не в кодировке UTF-8 приводило к чтению неинициализированной памяти, значения из которой могли попадать в результирующую структуру индекса. Закрывает #92576. #93663 (Alexey Milovidov).
Проверьте, что размер распакованного буфера соответствует ожидаемому. #93690 (Raúl Marín).
Предотвращена возможность получения пользователями списка столбцов таблицы без проверки наличия разрешения SHOW COLUMNS при использовании движка таблиц merge. #93695 (János Benjamin Antal).
Исправлена материализация пропускающих индексов, созданных на основе подстолбцов. #93708 (Anton Popov).
Мы храним умные указатели shared_ptr на хранилища в QueryPipeline::resources::storage_holders, чтобы гарантировать, что объекты IStorage не будут уничтожены, пока существует PipelineExecutor. #93746 (Miсhael Stetsyuk).
Исправлена проблема с присоединением реплицируемых БД, когда межсерверный хост изменился после перезапуска. #93779 (Tuan Pham Anh).
Исправлено срабатывание assert !read_until_position в ReadBufferFromS3, возникавшее при включённом кэше. #93809 (Kseniia Sumarokova).
Исправлена логическая ошибка в редком случае использования пустого кортежа со столбцом Map. Закрывает #93784. #93814 (Nihal Z. Miaji).
Исправлено повреждение _part_offset при перестроении проекций во время слияний и оптимизирована обработка проекций за счёт исключения ненужных чтений столбца _part_offset и пропуска лишних столбцов при вычислениях проекций. Это продолжение оптимизаций, представленных в #93233. #93827 (Amos Bird).
Исправлена некорректная работа optimize_inverse_dictionary_lookup с распределённым запросом, когда ключ имеет знаковый целочисленный тип. Закрывает #93259. #93848 (Nihal Z. Miaji).
Исправлена проблема, из-за которой lag/lead не работали с распределённым запросом remote(). Закрывает #90014. #93858 (Nihal Z. Miaji).
В https://github.com/ClickHouse/ClickHouse/pull/89173 мы добавили дополнительное поле в структуру, которую TraceSender отправляет через внутренний канал. Однако размер буфера не был обновлён (здесь), поэтому мы записываем в буфер больше данных, чем buffer_size, что приводит к многократным сбросам. И поскольку TraceSender::send вызывается из разных потоков, сбросы буфера из разных потоков могут чередоваться, что нарушает инвариант, на который опирается принимающая сторона (TraceCollector). #93966 (Miсhael Stetsyuk).
Исправлено приведение типов к супертипу при операции JOIN в хранилище Join с предложением USING. Исправляет #91672. Исправляет #78572. #94000 (Dmitry Novik).
Исправлена ошибка, из-за которой FilterStep некорректно добавлялся при применении runtime-фильтра JOIN поверх таблицы Merge. #94021 (Alexander Gololobov).
Запрос SELECT, содержащий предикат по нескольким столбцам с пропускающими индексами bloom filter и одновременно использующий условия OR и NOT, мог возвращать несогласованные результаты. Теперь это исправлено. #94026 (Shankar Iyer).
Исправлена операция CLEAR COLUMN для столбца с зависимыми индексами. #94057 (Raúl Marín).
Исправлено использование неинициализированного значения в ReadWriteBufferFromHTTP. #94058 (Alexey Milovidov).
Исправлено падение во время анализа фильтра при наличии OUTER JOIN. Устранена проблема #90979. #94080 (Dmitry Novik).
Исправлена точность вычислений uniqTheta при использовании агрегатных ключей типа UInt8 при параллельной агрегации (max_threads > 1, значение по умолчанию). #94095 (Azat Khuzhin).
Исправлено падение, вызванное исключением при вызове socket.setBlocking(true) внутри SCOPE_EXIT. #94100 (Miсhael Stetsyuk).
Исправлена потеря данных, происходившая, когда DROP PARTITION удалял части, созданные более поздними записями журнала в ReplicatedMergeTree. #94123 (Tuan Pham Anh).
Исправлен Parquet-ридер v3, некорректно обрабатывавший массивы, пересекающие границы страниц. Это происходит, например, для файлов, записанных с помощью Arrow без включения статистики страниц (page statistics) или индекса страниц (page index). Затрагивает только столбцы типа данных Array. Вероятный симптом — усечение примерно одного массива на каждые ~1 МБ данных. До этого исправления используйте следующий SETTING как обходной путь: input_format_parquet_use_native_reader_v3 = 0. #94125 (Michael Kolupaev).
Исправлена проблема с чрезмерным числом watches в ReplicatedMergeTree при ожидании записи в журнал. #94133 (Azat Khuzhin).
Функции arrayShuffle, arrayPartialShuffle и arrayRandomSample материализуют константные столбцы, чтобы разные строки получали разные результаты. #94134 (Joanna Hulboj).
Устранена гонка данных при вычислении табличных функций в materialized views. #94171 (Alexey Milovidov).
Исправлено разыменование nullptr в движках баз данных PostgreSQL (при некорректном запросе). Закрывает #92887. #94180 (Alexey Milovidov).
Исправлена утечка памяти в refreshable materialized views при выполнении запросов SELECT с несколькими подзапросами. #94200 (Antonio Andelic).
Устранена гонка данных между DataPartStorageOnDiskBase::remove и system.parts. Закрывает #49076. #94262 (Alexey Milovidov).
Удалён некорректный спецификатор noexcept у оператора копирующего присваивания HashTable, который мог приводить к аварийному завершению (std::terminate) при исключениях, связанных с памятью. #94275 (Nikita Taranov).
Ранее создание PROJECTION с дублирующимися столбцами в GROUP BY (например, GROUP BY c0, c0) и последующая вставка данных приводили к исключению std::length_error при включённой настройке optimize_row_order. Закрывает #94065. #94277 (Alexey Milovidov).
Исправлена неочевидная ошибка в клиенте ZooKeeper при подключении, приводившая к зависаниям и сбоям. #94320 (Azat Khuzhin).
Исправлена ошибка, из-за которой оптимизация функций для подстолбцов не применялась к подстолбцам. #94323 (Pavel Kruglov).
Исправлен возможный некорректный результат во вложенных операциях RIGHT JOIN при включённом enable_lazy_columns_replication. Ошибка приводила к тому, что все строки в реплицируемых столбцах некорректно возвращали одно и то же значение вместо своих собственных значений. Закрыт #93891. #94339 (Vladimir Cherkasov).
Исправлено проталкивание фильтра для SEMI JOIN с использованием наборов эквивалентности. Фильтр не проталкивается, если типы аргументов изменились. Исправляет #93264. #94340 (Dmitry Novik).
Исправлено использование DeltaLake CDF с движком базы данных DataLake (интеграция с каталогами Delta Lake). Закрывает #94122. #94342 (Kseniia Sumarokova).
Исправлено некорректное значение текущей метрики FilesystemCacheSizeLimit в случае использования политики кэширования SLRU. #94363 (Kseniia Sumarokova).
Создание движка базы данных Backup с количеством аргументов меньше двух теперь возвращает более информативное сообщение об ошибке (Wrong number of arguments вместо std::out_of_range: InlinedVector::at(size_type) const failed bounds check.). #94374 (Robert Schulze).
Игнорируются невозможные попытки отзыва глобальных привилегий на уровне базы данных для привилегий с правом дальнейшей передачи (grant option). #94386 (pufit).
Не блокировать выполнение ALTER для столбцов, использующих неявные индексы, даже если используется режим throw у alter_column_secondary_index_mode. #94425 (Raúl Marín).
Исправлено падение в TCPHandler, когда несколько вызовов receivePacketsExpectQuery читают Protocol::Client::IgnoredPartUUIDs. #94434 (Miсhael Stetsyuk).
Исправлена маскировка конфиденциальных данных в system.functions. #94436 (Vitaly Baranov).
Исправлено разыменование nullptr при отключённом send_profile_events. Эта возможность была недавно добавлена для Python-драйвера ClickHouse. Закрывает #92488. #94466 (Alexey Milovidov).
Когда read_in_order_use_virtual_row включён, код обращался к индексным столбцам, исходя из полного размера первичного ключа, не проверяя, был ли индекс усечён, что приводило к обращению к уже освобождённой / неинициализированной памяти. Закрывает #85596. #94500 (Alexey Milovidov).
Исправлена ошибка из-за несоответствия типов при передаче внешних таблиц в подзапросы с GLOBAL IN, если их типы — Nullable. Закрывает #94097. #94511 (Alexey Milovidov).
В предыдущих версиях запросы с несколькими индексными условиями по одному и тому же выражению могли ошибочно приводить к исключению Not found column. Закрывает #60660. #94515 (Alexey Milovidov).
Исправлена некорректная обработка столбца ключа соединения типа Nullable в runtime-фильтрах. #94555 (Alexander Gololobov).
Создание рабочей нагрузки внутри другой, уже используемой, больше не приводит к аварийному завершению работы. #94599 (Sergei Trifonov).
Исправлена ошибка, приводившая к сбою при оптимизации ANY LEFT JOIN, когда isNotNull вычисляется для отсутствующего столбца. #94600 (Molly).
Исправлена оценка выражений для значений по умолчанию при ссылках на другие столбцы с вычисляемыми значениями по умолчанию. #94615 (Alexey Milovidov).
Исправлены проблемы с проверкой прав доступа при операциях BACKUP/RESTORE. #94617 (Pablo Marcos).
Исправлена ошибка, приводившая к сбою из-за некорректного приведения типа при типе данных Nullable(DateTime64). #94627 (Miсhael Stetsyuk).
Исправляет ошибку, из-за которой некоторые распределённые запросы с ORDER BY могли возвращать столбцы ALIAS с перепутанными значениями (т.е. столбец a содержал данные столбца b и наоборот). #94644 (filimonov).
Исправлены некорректные оценки, вычисляемые с использованием статистики типа MinMax, при наличии в столбце отрицательных значений с плавающей запятой. #94665 (zoomxi).
Исправлена ошибка в мутациях со скалярными подзапросами и зависимостями таблицы. Если у таблицы были зависимости (индекс или PROJECTION) по столбцу, скалярные подзапросы могли вычисляться и кэшироваться без данных, что приводило к некорректным изменениям. #94731 (Raúl Marín).
Исправлен резервный механизм AsynchronousMetrics cpu_pressure при возникновении ошибки. #94827 (Raúl Marín).
Функция getURLHostRFC не выполняла проверок границ перед разыменованием указателей. При передаче пустой строки в domainRFC происходило чтение неинициализированной памяти, что вызывало ошибки MSan. #94851 (Alexey Milovidov).
Исправлена работа режима только чтения для зашифрованных дисков. #94852 (Azat Khuzhin).
Исправлена логическая ошибка в дробном LIMIT/OFFSET при использовании старого анализатора с distributed таблицами. Закрывает #94712. #94999 (Ahmed Gouda).
Исправлено падение в некоторых случаях при включённых по умолчанию runtime-фильтрах JOIN. #95000 (Alexander Gololobov).
Улучшено маскирование паролей в URL-адресах, используемых в движке таблиц URL() и табличной функции url(). #95006 (Vitaly Baranov).
Функция toStartOfInterval теперь работает так же, как toStartOfX, где X — Day, Week, Month, Quarter, Year, при включённой настройке enable_extended_results_for_datetime_functions. #95011 (Kirill Kopnev).
Исправлено некорректное сравнение константных строк, не учитывавшее настройки cast_string_to_date_time_mode, bool_true_representation, bool_false_representation и input_format_null_as_default. Закрывает #91681. #95040 (Nihal Z. Miaji).
Преобразование из DateTime/целых чисел в Time64 извлекает компонент времени суток с помощью toTime, который не является монотонным. Шаблон ToDateTimeMonotonicity ошибочно указывал, что это преобразование монотонно, что приводило к исключению "Invalid binary search result in MergeTreeSetIndex" в debug-сборках. #95125 (Alexey Milovidov).
Список записей файла манифеста теперь пересоздаётся только при необходимости (ранее он пересоздавался на каждой итерации). #95162 (Daniil Ivanik).
Добавлен набор инструментов для профилирования выделений памяти в SQL-парсере ClickHouse с использованием возможностей профилирования кучи jemalloc. #94072 (Ilya Yatsishin).
Добавлен инструмент, упрощающий отладку выделений памяти в парсере. Он использует метрику jemalloc stats.allocated до и после разбора запроса в представление AST, чтобы показать, какие объекты были выделены. Также он поддерживает режим профилирования памяти, который сохраняет дамп профиля до и после разбора для построения отчетов о том, где происходили выделения. #93523 (Ilya Yatsishin).
Обновление c-ares с v1.34.5 до v1.34.6. Это исправляет уязвимость CVE-2025-62408 в c-ares, которая не имеет отношения к ClickHouse. #94129 (Govind R Nair).