Добавлена поддержка записей с секционированием в стиле Hive и переработана реализация чтения (столбцы секций Hive больше не являются виртуальными). #76802 (Arthur Passos).
Настройка MergeTree write_marks_for_substreams_in_compact_parts теперь по умолчанию включена. Это значительно улучшает производительность чтения подстолбцов из вновь создаваемых Compact‑частей. Серверы с версией ниже 25.5 не смогут читать новые Compact‑части. #84171 (Pavel Kruglov).
Запрещены операции RENAME COLUMN или DROP COLUMN, которые затрагивают явно указанные столбцы для суммирования в SummingMergeTree. Закрывает #81836. #82821 (Alexey Milovidov).
В функцию extractKeyValuePairs добавлен новый аргумент unexpected_quoting_character_strategy, который определяет, что происходит, когда символ quoting_character неожиданно встречается. Подробности см. в документации по extractKeyValuePairs. #80657 (Arthur Passos).
Ранее функция countMatches прекращала подсчёт при первом пустом совпадении, даже если шаблон его допускает. Чтобы устранить эту проблему, countMatches теперь продолжает выполнение, продвигаясь на один символ при возникновении пустого совпадения. Пользователи, которые хотят сохранить старое поведение, могут включить настройку count_matches_stop_at_empty_match. #81676 (Elmi Ahmadov).
Ранее запросы BACKUP, слияния и мутации не использовали серверные ограничители пропускной способности для локального (max_local_read_bandwidth_for_server и max_local_write_bandwidth_for_server) и удалённого (max_remote_read_network_bandwidth_for_server и max_remote_write_network_bandwidth_for_server) трафика и ограничивались только специализированными настройками сервера (max_backup_bandwidth_for_server, max_mutations_bandwidth_for_server и max_merges_bandwidth_for_server). Теперь они одновременно используют оба типа ограничителей. #81753 (Sergei Trifonov).
Добавлена новая настройка cluster_function_process_archive_on_multiple_nodes, которая повышает производительность обработки архивов в кластерных функциях при значении true (значение по умолчанию). Для совместимости и во избежание ошибок при обновлении до версии 25.7+ настройку следует установить в false, если используются кластерные функции с архивами в более ранних версиях. #82355 (Kseniia Sumarokova).
Предыдущее значение по умолчанию для concurrent_threads_scheduler было round_robin, что оказалось несправедливым при большом числе однопоточных запросов (например, INSERT). В результате в качестве значения по умолчанию используется более безопасный планировщик fair_round_robin. #84747 (Sergei Trifonov).
Ленивая материализация включена только при использовании анализатора запросов, чтобы избежать поддержки этого режима без анализатора, при котором возможны некоторые проблемы (например, при использовании indexHint() в условиях). #83791 (Igor Nikonov).
Запрещено создавать таблицу без столбцов, в которые можно вставлять данные. #81835 (Pervakov Grigorii).
Требуется использовать обратные кавычки вокруг идентификаторов с точками в выражениях по умолчанию, чтобы они не разбирались как составные идентификаторы. #83162 (Pervakov Grigorii).
Добавлена поддержка heredoc-синтаксиса в стиле PostgreSQL: $tag$ string contents... $tag$, также известного как строковые литералы с разделителями — символом доллара (dollar-quoted). В предыдущих версиях ограничения на теги были менее строгими: они могли содержать произвольные символы, включая знаки пунктуации и пробелы. Это приводило к неоднозначности при разборе с идентификаторами, которые также могут начинаться с символа доллара. При этом PostgreSQL разрешает использовать в тегах только символы слова (word characters). Для решения проблемы мы теперь ограничиваем теги heredoc так, чтобы они содержали только символы слова. Закрывает #84731. #84846 (Alexey Milovidov).
SYSTEM RESTART REPLICAS теперь перезапускает реплики только в тех базах данных, где у вас есть право на выполнение SHOW TABLES. Ранее этот запрос приводил к пробуждению таблиц в базе данных Lazy даже без доступа к этой базе, в то время как эти таблицы одновременно удалялись. #83321 (Alexey Milovidov).
Функции azureBlobStorage, deltaLakeAzure и icebergAzure были обновлены для корректной проверки прав AZURE. Все кластерные варианты функций (функции -Cluster) теперь проверяют права по аналогии с соответствующими некластерными вариантами. Чтобы избежать ошибок прав доступа, убедитесь, что у пользователей, вызывающих функции -Cluster, есть соответствующие привилегии (например, GRANT S3 ON *.* TO user). Кроме того, функции icebergLocal и deltaLakeLocal теперь выполняют проверки прав FILE. #84938 ([Nikita Mikhaylov](https://github.com/nikitamikhaylov
Добавлены новые типы данных: Time([H]HH:MM:SS) и Time64([H]HH:MM:SS[.fractional]), а также несколько базовых функций приведения типов и взаимодействия с другими типами данных. Добавлены настройки для совместимости с устаревшей функцией ToTime. #81217 (Yarik Briukhovetskyi).
Добавлена функция dateTimeToUUIDv7 для преобразования значения типа DateTime в UUIDv7. Пример использования: SELECT dateTimeToUUIDv7(toDateTime('2025-08-15 18:57:56')) возвращает 0198af18-8320-7a7d-abd3-358db23b9d5c. #84319 (samradovich).
Добавлены агрегатные функции timeSeriesDerivToGrid и timeSeriesPredictLinearToGrid для ресемплинга данных на временную сетку, задаваемую указанными начальной и конечной метками времени и шагом; соответственно вычисляют PromQL-подобные deriv и predict_linear. #84328 (Stephen Chi).
Поддержка записи для каталогов Iceberg REST. #84684 (scanhex12).
Объединение всех файлов позиционных удалений Iceberg в файлы данных. Это уменьшит количество и размер файлов Parquet в хранилище Iceberg. Синтаксис: OPTIMIZE TABLE table_name. #85250 (scanhex12).
Поддержка DROP TABLE для Iceberg (удаление из REST/Glue каталогов и удаление метаданных о таблице). #85395 (scanhex12).
Поддержка мутаций ALTER DELETE для Iceberg в формате merge-on-read. #85549 (scanhex12).
Запись дополнительной статистики Iceberg (размеры столбцов, нижние и верхние границы) в метаданные (записях манифеста) для min-max-фильтрации. #85746 (scanhex12).
Поддержка добавления, удаления и изменения столбцов в Iceberg для простых типов. #85769 (scanhex12).
Все таблицы теперь поддерживают виртуальный столбец _table, а не только таблицы типа Merge. #63665 (Xiaozhe Yu).
Добавлен SZ3 как кодек сжатия с потерями, но с ограничённой погрешностью, для столбцов типов Float32 и Float64. #67161 (scanhex12).
Добавлена поддержка облегчённых обновлений для таблиц семейства MergeTree. Облегчённые обновления могут использоваться с новым синтаксисом: UPDATE <table> SET col1 = val1, col2 = val2, ... WHERE <condition>. Добавлена реализация облегчённых удалений через облегчённые обновления, которую можно включить, установив lightweight_delete_mode = 'lightweight_update'. #82004 (Anton Popov).
Добавлена поддержка виртуального столбца _part_granule_offset в таблицах семейства MergeTree. Этот столбец указывает индекс (с нуля) гранулы/метки, к которой принадлежит каждая строка в пределах своей части данных. Это устраняет проблему #79572. #82341 (Amos Bird).
Реализовано чтение из проекций для параллельных реплик. Добавлена новая настройка parallel_replicas_support_projection для управления тем, включена ли поддержка проекций. Для упрощения реализации поддержка проекций включена только тогда, когда активен parallel_replicas_local_plan. #82807 (zoomxi).
Добавлен новый формат вывода Hash. Он вычисляет одно хеш-значение для всех столбцов и строк результата. Это полезно для вычисления «отпечатка» результата, например, в сценариях, когда узким местом является передача данных. Пример: SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hash возвращает e5f9e676db098fdb9530d2059d8c23ef. #84607 (Robert Schulze).
Настройка сервера cpu_slot_preemption включает вытесняющее планирование CPU для рабочих нагрузок и обеспечивает max-min-справедливое распределение процессорного времени между ними. Добавлены новые настройки нагрузки для ограничения использования CPU: max_cpus, max_cpu_share и max_burst_cpu_seconds. #80879 (Sergei Trifonov).
Теперь поддерживается настройка нагрузки max_waiting_queries. Её можно использовать для ограничения размера очереди запросов. При достижении лимита все последующие запросы будут завершаться с ошибкой SERVER_OVERLOADED. #81250 (Oleg Doronin).
Разрыв TCP-соединения после заданного количества запросов или по достижении заданного порога времени. Решает проблему #68000. #81472 (Kenny Sun).
Добавлены функции searchAny и searchAll, которые являются универсальными инструментами для поиска по текстовым индексам. #80641 (Elmi Ahmadov).
Текстовый индекс теперь поддерживает токенизатор string. #81752 (Elmi Ahmadov).
Значение параметра гранулярности индекса по умолчанию для индексов text изменено на 64. Это улучшает ожидаемую производительность среднего тестового запроса во внутренних бенчмарках. #82162 (Jimmy Aguilar Mena).
256-битный bitmap хранит исходящие метки состояния в упорядоченном виде, но исходящие состояния записываются на диск в том порядке, в котором они появляются в хеш-таблице. Поэтому при чтении с диска метка может указывать на неверное следующее состояние. #82783 (Elmi Ahmadov).
В настоящее время дерево FST сохраняется на диск несжатым. Это может приводить к снижению производительности или повышенному потреблению пропускной способности ввода-вывода как при записи, так и при чтении с диска. #83093 (Elmi Ahmadov).
Тривиальная оптимизация для комбинатора агрегатной функции -If. #78454 (李扬).
Добавлена новая логика (управляется настройкой enable_producing_buckets_out_of_order_in_aggregation, по умолчанию включена), которая позволяет отправлять некоторые бакеты в неупорядоченном виде при агрегации с экономным использованием памяти. Когда слияние некоторых бакетов агрегации занимает значительно больше времени, чем других, это повышает производительность, позволяя инициирующему узлу параллельно сливать бакеты с более высокими идентификаторами. Обратная сторона — потенциально большее использование памяти (не должно быть значительным). #80179 (Nikita Taranov).
Конвейер после шага TOTALS сделан многопоточным. #80331 (UnamedRus).
Когда запрос агрегации содержит только единственную функцию COUNT() по столбцу NOT NULL, логика агрегации полностью встраивается во время поиска в хеш-таблице. Это позволяет избежать выделения и ведения какого-либо состояния агрегации, что значительно снижает потребление памяти и накладные расходы по CPU. Частично решает #81982. #82104 (Amos Bird).
Сериализованный ключ вычисляется поколоночно при группировке по нескольким строковым или числовым столбцам. #83884 (李扬).
Реализован addManyDefaults для комбинаторов -If. #83870 (Raúl Marín).
Добавлена новая настройка min_joined_block_size_rows (аналогична min_joined_block_size_bytes; по умолчанию 65409) для управления минимальным размером блока (в строках) для входных и выходных блоков JOIN (если алгоритм JOIN это поддерживает). Мелкие блоки будут объединяться. #81886 (Nikita Taranov).
Производительность HashJoin оптимизирована за счёт удаления дополнительного цикла по хэш-таблицам в типичном случае одного столбца ключа, а также исключены проверки null_map и join_mask, когда они всегда true/false. #82308 (Nikita Taranov).
Оптимизации для null_map и JoinMask из #82308 были применены к случаю JOIN с несколькими дизъюнктами в условии. Также была оптимизирована структура данных KnownRowsHolder. #83041 (Nikita Taranov).
Для флагов JOIN используется обычный std::vector<std::atomic_bool>, чтобы избежать вычисления хэша при каждом доступе к флагам. #83043 (Nikita Taranov).
Обработка max_joined_block_rows вынесена за основной цикл хэш-JOIN. Незначительно улучшена производительность для ALL JOIN. #83216 (Nikolai Kochetov).
Предварительное выделение памяти для результирующих столбцов больше не выполняется заранее, когда HashJoin использует режим lazy для вывода. Это неоптимально, особенно когда число совпадений невелико. Кроме того, после выполнения JOIN мы знаем точное количество совпадений и можем выполнить предварительное выделение более точно. #83304 (Nikita Taranov).
Все операции LEFT/INNER JOIN будут автоматически преобразованы в RightAny, если правая сторона функционально определяется столбцами ключа JOIN (все строки имеют уникальные значения ключа JOIN). #84010 (Nikita Taranov).
Улучшена производительность применения patch parts в режиме Join. #85040 (Anton Popov).
Добавлен параметр, позволяющий вынести обработку (де)компрессии и (де)сериализации блоков в потоки конвейера вместо одного потока, связанного с сетевым соединением. Управляется настройкой enable_parallel_blocks_marshalling. Это должно ускорить распределённые запросы, которые передают значительные объёмы данных между инициатором и удалёнными узлами. #78694 (Nikita Taranov).
Параллельный распределённый INSERT SELECT по умолчанию включён в режиме, когда INSERT SELECT выполняется на каждом шарде независимо, см. настройку parallel_distributed_insert_select. #80425 (Igor Nikonov).
Включено сжатие логов и профилирующих событий в нативном протоколе. В кластерах со 100+ репликами несжатые профилирующие события занимают 1–10 МБ/с, а индикатор прогресса медленно обновляется при медленных интернет-соединениях. Это закрывает #82533. #82535 (Alexey Milovidov).
Параллельный распределённый INSERT SELECT по умолчанию включён в режиме, когда INSERT SELECT выполняется на каждом шарде независимо, см. настройку parallel_distributed_insert_select. #83040 (Igor Nikonov).
Исправлен расчёт минимального размера задачи для параллельных реплик. #84752 (Nikita Taranov).
Запросы векторного поиска с использованием индекса векторного сходства теперь выполняются с меньшей задержкой за счет сокращения количества обращений к хранилищу и снижения загрузки CPU. #79103 (Shankar Iyer).
Параметр merge_tree_min_{rows,bytes}_for_seek теперь учитывается в filterPartsByQueryConditionCache, чтобы привести его поведение в соответствие с другими методами фильтрации по индексам. #80312 (李扬).
Сначала обрабатываются minmax-индексы с более высокой гранулярностью. Закрывает #75381. #83798 (Maruth Goyal).
Индекс bloom-фильтра теперь используется для условий вида has([c1, c2, ...], column), где column не имеет тип данных Array. Это повышает производительность таких запросов, делая их столь же эффективными, как оператор IN. #83945 (Doron David).
Индексы обрабатываются в порядке возрастания размера файла. Итоговый порядок индексов отдает приоритет minmax- и векторным индексам (из-за простоты и селективности соответственно), а затем — небольшим индексам. Среди minmax- и векторных индексов также отдается предпочтение более компактным индексам. #84094 (Maruth Goyal).
Ранее данные текстового индекса разделялись на несколько сегментов (по умолчанию размер каждого сегмента составлял 256 MiB). Это могло снизить потребление памяти при построении текстового индекса, но при этом увеличивало занимаемое на диске пространство и время ответа на запрос. #84590 (Elmi Ahmadov).
Оптимизирован сгенерированный план для коррелированных подзапросов за счёт удаления избыточных операций JOIN с использованием классов эквивалентности. Если существуют эквивалентные выражения для всех коррелированных столбцов, CROSS JOIN не создаётся, когда включена настройка query_plan_correlated_subqueries_use_substitution. #82435 (Dmitry Novik).
В коррелированном подзапросе читаются только необходимые столбцы, когда он используется в качестве аргумента функции EXISTS. #82443 (Dmitry Novik).
Движок таблиц azureBlobStorage теперь кэширует и повторно использует токены аутентификации управляемого удостоверения, когда это возможно, чтобы избежать ограничения по частоте запросов. #79860 (Nick Blakely).
Заменён HTTP‑клиент curl на HTTP‑клиент poco для Azure Blob Storage. Добавлено несколько настроек для этих клиентов, которые повторяют настройки из S3. Введены агрессивные тайм-ауты установления соединения как для Azure, так и для S3. Улучшены возможности анализа событий и метрик профиля Azure. Новый клиент включён по умолчанию и обеспечивает значительно меньшие задержки для «холодных» запросов при работе с Azure Blob Storage. Старый клиент Curl можно вернуть, установив azure_sdk_use_native_client=false. #83294 (alesapin).
Исключено удержание блокировки во время создания данных снимка хранилища, чтобы уменьшить конкуренцию за блокировки при высокой параллельной нагрузке. #83510 (Duc Canh Le).
Удаление временных частей может занимать продолжительное время (особенно с S3), и сейчас это делается при удержании глобальной блокировки в MergeTreeBackgroundExecutor. Когда требуется перезапустить все таблицы из‑за потери соединения и мы ждём завершения фоновых задач, таблицы могут застрять в режиме read-only на час. Но, по-видимому, эта блокировка не нужна для вызова cancel. #84311 (Alexander Tokmakov).
Новая реализация ридера формата Parquet. В целом работает быстрее и поддерживает фильтрацию на уровне страниц (page-level filter pushdown) и PREWHERE. Пока экспериментальная. Используйте настройку input_format_parquet_use_native_reader_v3 для включения. #82789 (Michael Kolupaev).
Повышена производительность входного формата ProtobufSingle за счет повторного использования сериализатора при отсутствии ошибок разбора. #83613 (Eduard Karacharov).
Существенно повышена производительность чтения подстолбцов JSON из общих данных в MergeTree за счёт реализации новых форматов сериализации для общих данных JSON в MergeTree. #83777 (Pavel Kruglov).
Оптимизирована функция largestTriangleThreeBuckets путем удаления временных данных. #84479 (Alexey Milovidov).
Оптимизирована и упрощена реализация многих функций обработки строк. Исправлена некорректная документация для нескольких функций. Примечание: вывод функции byteSize для столбцов типа String и составных типов, содержащих столбцы типа String, изменился с 9 байт на пустую строку до 8 байт на пустую строку, что является ожидаемым поведением. #85063 (Alexey Milovidov).
Добавлены два новых типа доступа: READ и WRITE для источников, при этом все предыдущие типы доступа, связанные с источниками, помечены как устаревшие. Ранее: GRANT S3 ON *.* TO user, теперь: GRANT READ, WRITE ON S3 TO user. Это также позволяет разделять права READ и WRITE для источников, например: GRANT READ ON * TO user, GRANT WRITE ON S3 TO user. Функциональность управляется настройкой access_control_improvements.enable_read_write_grants и по умолчанию отключена. #73659 (pufit).
Разрешено использовать параметры в запросах CREATE USER для имён пользователей. #81387 (Diskein).
Конфиденциальные данные исключены из дампов ядра. Добавлены два аллокатора: совместимый с библиотекой AWS AwsNodumpMemoryManager и совместимый со STL JemallocNodumpSTLAllocator. Оба являются обёртками над аллокатором Jemalloc. Они используют хуки extent и madvise Jemalloc, чтобы пометить страницы памяти как "don't dump". Используются для учётных данных S3, учётных данных пользователей и некоторых данных запросов. #82441 (Miсhael Stetsyuk).
Представления, созданные эфемерными пользователями, теперь будут сохранять копию реального пользователя и больше не будут становиться недействительными после удаления эфемерного пользователя. #84763 (pufit).
Сопоставление forward_headers для внешней аутентификации теперь выполняется без учёта регистра. #84737 (ingodwerust).
Добавлен столбец parameter в system.grants для определения типа источника для GRANT READ/WRITE и движка таблицы для GRANT TABLE ENGINE. #85643 (MikhailBurdukov).
Разрешено выполнять резервное копирование баз данных PostgreSQL, MySQL и DataLake. При создании резервной копии такой базы данных сохраняется только её схема (определение), но не содержащиеся в ней данные. #79982 (Nikolay Degterinsky).
Установлен уровень TRACE для всех сообщений журнала при записи файлов резервных копий. #82907 (Hans Krutzer).
Добавлена новая настройка backup_slow_all_threads_after_retryable_s3_error для снижения нагрузки на S3 во время «штормов» повторных попыток, вызванных ошибками, такими как SlowDown, за счёт замедления работы всех потоков после обнаружения одной ошибки, допускающей повторную попытку. #84854 (Julia Kartseva).
Проверять, что у парта есть корректный файл checksum.txt непосредственно перед его коммитом. #76625 (Sema Checherinda).
Запретить запуск мутации RENAME COLUMN, если она переименовывает столбец, который в данный момент затронут незавершённой мутацией данных. #81823 (Mikhail Artemenko).
Теперь снимок мутаций будет строиться из снимка видимых партов. Счётчики мутаций, используемые в снимке, также будут пересчитываться на основе включённых мутаций. #82945 (Mikhail Artemenko).
Добавлена возможность разбирать префикс и суффикс парта, а также проверять покрытие для неконстантных столбцов. #83377 (Mikhail Artemenko).
Оптимизировано использование памяти для файлов позиционных удалений (positional delete) в Iceberg. Вместо загрузки всех данных delete-файла в память в RAM удерживается только текущая группа строк (row group) из Parquet delete-файлов. Это значительно снижает потребление памяти при работе с крупными файлами позиционных удалений. #85329 (scanhex12).
Добавлена поддержка асинхронной итерации по объектам из таблицы Iceberg без явного хранения объектов для каждого файла данных. #85369 (Daniil Ivanik).
Поддержка удалений по равенству значений (equality deletes) в Iceberg. #85843 (Han Fei).
Улучшен движок таблиц DeltaLake: в delta-kernel-rs есть API ExpressionVisitor, который реализован в этом PR и применяется к преобразованию выражений по колонкам партиционирования (он заменит старый устаревший механизм в delta-kernel-rs, который ранее использовался в нашем коде). В будущем этот ExpressionVisitor также позволит реализовать отсечение на основе статистики и некоторые проприетарные возможности Delta Lake. Дополнительно цель этого изменения — поддержать отсечение партиций в движке таблиц DeltaLakeCluster (результат разобранного выражения — ActionsDAG — будет сериализован и отправлен инициатором вместе с путём к данным, поскольку такого рода информация, необходимая для отсечения, доступна только как метаинформация при листинге файлов данных, который выполняется только инициатором, но при этом должна применяться к данным на каждом сервере-чтеце). #81136 (Kseniia Sumarokova).
Исправлено чтение партиционированных данных в табличной функции DeltaLakeCluster. В этом PR увеличена версия протокола кластерных функций, что позволяет отправлять дополнительную информацию от инициатора на реплики. Эта дополнительная информация содержит выражение преобразования delta-kernel, которое необходимо для разбора колонок партиционирования (и для другого функционала в будущем, например, сгенерированных колонок и т. д.). #82132 (Kseniia Sumarokova).
Теперь база данных Datalake выбрасывает более понятное исключение. Исправляет #81211. #82304 (alesapin).
Реализована внутренняя фильтрация delta-kernel-rs (по статистике и с отсечением партиций) в хранилище DeltaLake. #84006 (Kseniia Sumarokova).
Ускорено перечисление таблиц в каталогах за счёт асинхронных запросов. #81084 (alesapin).
Добавлена поддержка TimestampTZ в каталоге Glue. Закрывает #81654. #83132 (scanhex12).
Разделён FormatParserGroup на две независимые структуры: первая отвечает за общие вычислительные и I/O‑ресурсы, вторая — за общие ресурсы фильтра (filter ActionDag, KeyCondition). Это сделано для более гибкого совместного использования этих структур разными потоками. #83997 (Daniil Ivanik).
Добавлен отсутствующий параметр partition_columns_in_data_file в конфигурацию Azure. #85373 (Arthur Passos).
Добавлен флаг show_data_lake_catalogs_in_system_tables для управления добавлением таблиц data lake в system.tables, что решает проблему #85384. #85411 (Smita Kulkarni).
Реализованы методы moveFile и replaceFile в s3_plain_rewritable, чтобы использовать его в качестве диска базы данных. #79424 (Tuan Pham Anh).
Запросы чтения и записи в S3 теперь ограничиваются по скорости на уровне HTTP-сокета (вместо целых запросов к S3), чтобы избежать проблем с ограничением max_remote_read_network_bandwidth_for_server и max_remote_write_network_bandwidth_for_server. #81837 (Sergei Trifonov).
Этот PR добавляет джиттер к механизму повторных попыток для S3 при включённой конфигурации s3_slow_all_threads_after_network_error. #81849 (zoomxi).
Реализована аутентификация AWS S3 с явно указанной ролью IAM. Реализован OAuth для GCS. Ранее эти возможности были доступны только в ClickHouse Cloud, а теперь открыты с открытым исходным кодом. Синхронизированы некоторые интерфейсы, такие как сериализация параметров подключения для объектных хранилищ. #84011 (Alexey Milovidov).
Разрешено использовать любую политику хранения (то есть объектное хранилище, такое как S3) для внешней агрегации и сортировки. #84734 (Azat Khuzhin).
Все удалённые объекты собираются вместе, чтобы выполнить одну операцию удаления в объектном хранилище. #85316 (Mikhail Artemenko).
Макросы вроде {uuid} теперь можно использовать в настройке keeper_path для движка таблиц S3Queue. #82463 (Nikolay Degterinsky).
Добавлена новая серверная настройка s3queue_disable_streaming, которая отключает стриминг в таблицах с движком S3Queue. Эту настройку можно изменять без перезапуска сервера. #82515 (Kseniia Sumarokova).
При завершении работы сервера стриминг S3(Azure/etc)Queue теперь останавливается до остановки любых таблиц. #83530 (Kseniia Sumarokova).
Поддерживается изменение настроек вставки для материализованных представлений на уровне таблицы S3Queue. Добавлены новые настройки уровня S3Queue: min_insert_block_size_rows_for_materialized_views и min_insert_block_size_bytes_for_materialized_views. По умолчанию используются настройки уровня профиля, а настройки уровня S3Queue их переопределяют. #83971 (Kseniia Sumarokova).
Исправлен упорядоченный режим S3Queue: выполнение завершается раньше, если была инициирована остановка. #84463 (Kseniia Sumarokova).
Подсчитывайте потреблённые сообщения вручную, чтобы не зависеть от ранее зафиксированного смещения (offset) в StorageKafka2. #81662 (János Benjamin Antal).
Улучшение Keeper: перенос файлов журнала изменений (changelog) между дисками в фоновом потоке. Ранее перенос журнала изменений на другой диск глобально блокировал Keeper до завершения операции. Это приводило к деградации производительности, если перенос занимал много времени (например, на диск S3). #82485 (Antonio Andelic).
Улучшение Keeper: добавлен новый параметр конфигурации keeper_server.cleanup_old_and_ignore_new_acl. Если он включён, все узлы будут очищены от своих ACL, а ACL для новых запросов будет игнорироваться. Если цель — полностью удалить ACL с узлов, важно оставить этот параметр включённым до тех пор, пока не будет создан новый snapshot. #82496 (Antonio Andelic).
Улучшение Keeper: поддержка отдельных прав доступа для ACL world:anyone. #82755 (Antonio Andelic).
Добавлена поддержка указания дополнительных ACL Keeper для путей в конфигурации. Если нужно добавить дополнительный ACL для конкретного пути, его можно определить в конфигурации в zookeeper.path_acls. #82898 (Antonio Andelic).
Добавлен ProfileEvent, когда Keeper отклоняет запись из-за мягкого лимита памяти (soft memory limit). #82963 (Xander Garbett).
В Keeper по умолчанию включены функциональные флаги create_if_not_exists, check_not_exists, remove_recursive, которые открывают доступ к новым типам запросов. #83488 (Antonio Andelic).
Добавлена поддержка применения дополнительных ACL к отдельным узлам Keeper с использованием параметра конфигурации apply_to_children. #84137 (Antonio Andelic).
В Keeper добавлена 4LW-команда lgrq для переключения логирования полученных запросов. #84719 (Antonio Andelic).
Уменьшено соревнование потоков за блокировку хранилища в Keeper. #84732 (Antonio Andelic).
Инструмент encrypt_decrypt теперь поддерживает зашифрованные подключения к ZooKeeper. #84764 (Roman Vasin).
Ограничен размер кэша записей журнала Keeper по количеству записей с помощью настроек keeper_server.coordination_settings.latest_logs_cache_entry_count_threshold и keeper_server.coordination_settings.commit_logs_cache_entry_count_threshold. #84877 (Antonio Andelic).
Добавлен файл columns_substreams.txt в Wide-часть для отслеживания всех подпотоков, хранящихся в части. Это помогает отслеживать динамические потоки в типах JSON и Dynamic и тем самым избежать необходимости чтения выборки этих столбцов для получения списка динамических потоков (например, для вычисления размеров столбцов). Также теперь все динамические потоки отображаются в system.parts_columns. #81091 (Pavel Kruglov).
Разрешён ALTER UPDATE в столбцах типов JSON и Dynamic. #82419 (Pavel Kruglov).
Пользователи теперь могут использовать типы Time и Time64 внутри типа JSON. #83784 (Yarik Briukhovetskyi).
Добавлена настройка json_type_escape_dots_in_keys для экранирования точек в ключах JSON при разборе JSON-типа. По умолчанию настройка отключена. #84207 (Pavel Kruglov).
Добавлены настройки для задания размера блока сжатия в ORC и обновлено его значение по умолчанию с 64KB до 256KB для соответствия настройкам Spark и Hive. #80602 (李扬).
Добавлена поддержка записи типов enum в формате Parquet в виде массива байт, как того требует спецификация. Дополнительная информация будет добавлена позже. #81090 (Arthur Passos).
Добавлена поддержка записи GeoParquet в качестве формата вывода. #81784 (scanhex12).
Добавлена новая настройка enable_add_distinct_to_in_subqueries. При её включении ClickHouse будет автоматически добавлять DISTINCT к подзапросам в операторах IN для распределённых запросов. Это может значительно уменьшить размер временных таблиц, передаваемых между шардами, и повысить эффективность использования сети. Примечание: это компромисс — хотя объём передаваемых данных по сети сокращается, на каждом узле требуется дополнительная работа по слиянию (удалению дубликатов). Включайте эту настройку, когда узким местом является сеть и стоимость слияния приемлема. #81908 (fhw12345).
Добавлена поддержка табличных функций remote-() с параллельными репликами, если кластер передан в аргументе address_expression. Также исправлена проблема #73295. #82904 (Igor Nikonov).
Соединения с параллельными репликами теперь используют логический шаг JOIN. В случае любых проблем с JOIN-запросами, использующими параллельные реплики, попробуйте выполнить SET query_plan_use_new_logical_join_step=0 и сообщите о проблеме. #83801 (Vladimir Cherkasov).
Настройка allow_experimental_join_condition помечена как устаревшая. #80566 (Vladimir Cherkasov).
Общие и пользовательские ограничители сетевой пропускной способности больше не сбрасываются, что гарантирует, что лимиты max_network_bandwidth_for_all_users и max_network_bandwidth_for_all_users никогда не превышаются. #81729 (Sergei Trifonov).
Добавлена настройка optimize_rewrite_regexp_functions (включена по умолчанию), которая позволяет оптимизатору переписывать некоторые вызовы replaceRegexpAll, replaceRegexpOne и extract в более простые и эффективные формы при обнаружении определённых шаблонов регулярных выражений (issue #81981). #81992 (Amos Bird).
Очередь TCP‑серверов (64 по умолчанию) настроена в зависимости от параметра listen_backlog (4096 по умолчанию). #82045 (Azat Khuzhin).
Добавлена возможность перезагружать max_local_read_bandwidth_for_server и max_local_write_bandwidth_for_server «на лету» без перезапуска сервера. #82083 (Kai Zhu).
Добавлена настройка enable_vector_similarity_index, которую необходимо включить для использования индекса векторного сходства. Существующая настройка allow_experimental_vector_similarity_index теперь устарела. Она по‑прежнему поддерживается на случай, если кому‑то она нужна. #83459 (Robert Schulze).
Исправлена совместимость для cluster_function_process_archive_on_multiple_nodes. #83968 (Kseniia Sumarokova).
Поддержка коррелированных подзапросов включена по умолчанию. #85107 (Dmitry Novik).
Добавлены настройки database_replicated, задающие значения по умолчанию для DatabaseReplicatedSettings. Если соответствующая настройка отсутствует в запросе создания реплицируемой базы данных, используется значение из этой группы настроек. #85127 (Tuan Pham Anh).
Разрешены аргументы вида «ключ–значение» в движке/функции таблицы s3 или s3Cluster, например: s3('url', CSV, structure = 'a Int32', compression_method = 'gzip'). #85134 (Kseniia Sumarokova).
Некоррелированные EXISTS выполняются как скалярный подзапрос. Это позволяет использовать кэш скалярного подзапроса и выполнять константное свёртывание результата, что полезно для индексов. Для совместимости добавлена новая настройка execute_exists_as_scalar_subquery=1. #85481 (Nikolai Kochetov).
Добавлена поддержка большего числа случаев разрешения составных идентификаторов. В частности, это улучшает совместимость ARRAY JOIN со старым анализатором. Добавлена новая настройка analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested для сохранения старого поведения. #85492 (Nikolai Kochetov).
Добавлены метрики нагрузки в асинхронные метрики ClickHouse. #80779 (Xander Garbett).
Добавлены метрики MarkCacheEvictedBytes, MarkCacheEvictedMarks, MarkCacheEvictedFiles для отслеживания вытеснений из кэша меток (issue #60989). #80799 (Shivji Kumar Jha).
Таблица system.formats теперь содержит расширенную информацию о форматах, такую как тип содержимого HTTP, возможности автоматического вывода схемы и т. д. #81505 (Alexey Milovidov).
Добавлена поддержка очистки всех предупреждений из таблицы system.warnings с помощью TRUNCATE TABLE system.warnings. #82087 (Vladimir Cherkasov).
Добавлен список лицензий crate'ов на Rust в system.licenses. #82440 (Raúl Marín).
Добавлена оценка сложных выражений в CNF/DNF, например (a < 1 and a > 0) or b = 3, по статистике. #82663 (Han Fei).
В некоторых случаях нам нужны многомерные метрики. Например, подсчёт неудачных merge-операций или мутаций по кодам ошибок вместо одного счётчика. #83030 (Miсhael Stetsyuk).
Добавлены метрики использования ресурсов процесса (такие как UserTimeMicroseconds, SystemTimeMicroseconds, RealTimeMicroseconds) в события профилирования part_log для записей MergeParts. #83460 (Vladimir Cherkasov).
Метрики на уровне cgroup и системные метрики теперь передаются вместе. Метрики на уровне cgroup имеют имена вида CGroup<Metric>, а метрики уровня ОС (собираемые из procfs) имеют имена вида OS<Metric>. #84317 (Nikita Taranov).
Добавлены многомерные метрики для мониторинга размера конкурентных очередей с ограниченной ёмкостью, помеченных типом очереди и ID экземпляра для лучшей наблюдаемости. #84675 (Miсhael Stetsyuk).
В system.errors добавлен столбец с форматной строкой. Этот столбец нужен для группировки по одному и тому же типу ошибки в правилах оповещений. #84776 (Miсhael Stetsyuk).
Сделаны настраиваемыми лимиты для Async Log и добавлены средства интроспекции. #85105 (Raúl Marín).
Теперь UNKNOWN_DATABASE игнорируется при получении размеров столбцов таблиц для system.columns. #85632 (Azat Khuzhin).
Исправлено присоединение баз данных на удалённых дисках только для чтения путём ручного добавления UUID таблиц в DatabaseCatalog. #82670 (Tuan Pham Anh).
Улучшена обработка DDL‑заданий при distributed_ddl_output_mode='*_only_active' за счёт отказа от ожидания новых или восстановленных реплик, у которых отставание репликации превышает max_replication_lag_to_enqueue. Это помогает избежать ошибок DDL task is not finished on some hosts, когда новая реплика становится активной после инициализации или восстановления, но успевает накопить большой журнал репликации. Также реализован запрос SYSTEM SYNC DATABASE REPLICA STRICT, который ожидает, пока журнал репликации не станет меньше max_replication_lag_to_enqueue. #83302 (Alexander Tokmakov).
Изменён порядок завершения работы SystemLogs так, чтобы она выполнялась после обычных таблиц (и перед системными таблицами, вместо выполнения до обычных таблиц). #83134 (Kseniia Sumarokova).
Добавлен серверный параметр logs_to_keep для настроек реплицируемых баз данных, позволяющий задавать значение по умолчанию параметра logs_to_keep для реплицируемых баз. Меньшие значения уменьшают количество узлов ZooKeeper (особенно полезно, когда много баз данных), а большие значения позволяют отсутствующим репликам догонять после более продолжительных простоев. #84183 (Alexey Khatskevich).
Значение по умолчанию настройки реплицируемых баз данных max_retries_before_automatic_recovery изменено на 10, что ускоряет восстановление в некоторых случаях. #84369 (Alexander Tokmakov).
Оптимизированы не‑append DDL‑операции обновляемых материализованных представлений (Refreshable Materialized View) в реплицируемых базах данных за счёт пропуска создания и переименования старых временных таблиц. #84858 (Tuan Pham Anh).
Улучшена команда SYSTEM RESTART REPLICA: добавлены повторные попытки создания таблицы при проблемах с подключением к ZooKeeper, что позволяет избежать потери таблиц. #82616 (Nikolay Degterinsky).
Добавлена проверка UUID в ReplicatedMergeTree::executeMetadataAlter, чтобы предотвратить некорректные определения таблиц, если таблицы были заменены между получением StorageID и вызовом IDatabase::alterTable. #82666 (Nikolay Degterinsky).
Удалена экспериментальная логика send_metadata, связанная с экспериментальной репликацией без копирования данных (zero-copy). Этот код никогда не использовался, не поддерживался и, вероятно, был неисправен; при этом не было тестов, подтверждающих его работоспособность. #82508 (alesapin).
Добавлена поддержка макроподстановки в remote_fs_zero_copy_zookeeper_path. #85437 (Mikhail Koviazin).
Функция addressToSymbol и таблица system.symbols будут использовать смещения в файле вместо адресов в виртуальной памяти. #81896 (Alexey Milovidov).
Старайтесь сохранять имена элементов при выведении супертипов для именованных кортежей. #81345 (lgbo).
Разрешено смешивать разные правила сравнения строк (collations) для одного и того же столбца в разных окнах. #82877 (Yakov Olkhovskiy).
Добавлена функция для записи типов в формат WKB. #82935 (scanhex12).
Добавлена возможность интерпретировать Time и Time64 в форматах MM:SS, M:SS, SS или S. #83299 (Yarik Briukhovetskyi).
Функция reinterpret() теперь поддерживает преобразование в Array(T), где T — тип данных фиксированного размера (задача #82621). #83399 (Shankar Iyer).
Исправлены функции structureToProtobufSchema и structureToCapnProtoSchema, чтобы корректно добавлять нулевой байт-терминатор вместо символа новой строки, что предотвращает пропуск переводов строки в выводе и потенциальные переполнения буфера в функциях, которые зависят от нулевого байта (таких как logTrace, demangle, extractURLParameter, toStringCutToZero и encrypt/decrypt). Закрывает #85062. #85063 (Alexey Milovidov).
Исправлена структура словаря regexp_tree для поддержки обработки строк, содержащих нулевые байты. #85063 (Alexey Milovidov).
Исправлена функция formatRowNoNewline, которая неправильно обрезала последний символ вывода при использовании формата Values или любого формата без символа новой строки в конце строк. #85063 (Alexey Milovidov).
Исправлена ошибка в exception safety функции stem, которая в редких случаях могла приводить к утечкам памяти. #85063 (Alexey Milovidov).
Исправлена функция initcap для аргументов типа FixedString, чтобы корректно распознавать начало слов в начале строк, если предыдущая строка в блоке заканчивалась буквенно-цифровым символом. #85063 (Alexey Milovidov).
Исправлена уязвимость безопасности в формате Apache ORC, которая могла приводить к раскрытию неинициализированной памяти. #85063 (Alexey Milovidov).
Изменено поведение replaceRegexpAll и его алиаса REGEXP_REPLACE, чтобы разрешить пустые совпадения в конце строк, даже если предыдущее совпадение охватывало всю строку целиком (например, ^a*|a*$ или ^|.*), что согласуется с семантикой JavaScript, Perl, Python, PHP и Ruby, но отличается от PostgreSQL. #85063 (Alexey Milovidov).
Оптимизирована и упрощена реализация целого ряда функций обработки строк. Исправлена неверная документация для нескольких функций. Примечание: результат byteSize для столбцов типа String и сложных типов, содержащих столбцы типа String, изменился с 9 байт за пустую строку на 8 байт за пустую строку, что и является ожидаемым поведением. #85063 (Alexey Milovidov).
Более точечное отключение пропускающих индексов, которые зависят от столбцов, обновляемых «на лету» или с помощью patch-частей. Теперь пропускающие индексы не используются только в тех частях, которые затронуты мутациями «on-the-fly» или patch-частями; ранее эти индексы отключались для всех частей. #84241 (Anton Popov).
Добавлена настройка MergeTree search_orphaned_parts_drives для ограничения области поиска частей, например, по дискам с локальными метаданными. #84710 (Ilya Golshtein).
Добавлена недостающая поддержка read_in_order_use_virtual_row для WHERE. Это позволяет пропускать чтение большего числа частей для запросов с фильтрами, которые не были полностью перенесены в PREWHERE. #84835 (Nikolai Kochetov).
Исправлено использование сериализации дискриминаторов Variant в формате «compact» в MergeTree. Ранее она не применялась в некоторых случаях, когда могла бы быть использована. #84141 (Pavel Kruglov).
Добавлено ограничение (настройка таблицы max_uncompressed_bytes_in_patches) на суммарное количество несжатых байт в patch-частях. Это предотвращает значительные замедления SELECT‑запросов после легковесных обновлений и предотвращает возможное некорректное использование легковесных обновлений. #85641 (Anton Popov).
Исправлена логическая ошибка в файловом кэше: «Having zero bytes but range is not finished». #81868 (Kseniia Sumarokova).
Добавлено хеширование rendezvous для улучшения локальности кэша. #82511 (Anton Ivashkin).
Рефакторинг механизма динамического изменения размера файлового кэша. Добавлено больше записей в журнал для анализа. #82556 (Kseniia Sumarokova).
Снижены накладные расходы на отслеживание потребления памяти запросами для исполняемых пользовательских функций. #83929 (Eduard Karacharov).
Все выделения памяти, выполняемые внешними библиотеками, теперь видны трекеру памяти ClickHouse и корректно учитываются. Это может привести к «увеличенному» отображаемому объему используемой памяти для некоторых запросов или к ошибкам MEMORY_LIMIT_EXCEEDED. #84082 (Nikita Mikhaylov).
Выделяется минимальный объем памяти, необходимый для encrypted_buffer для зашифрованных именованных коллекций. #84432 (Pablo Marcos).
Предотвращено использование пользователями значений nan и inf с NumericIndexedVector. Исправляет проблему #82239 и ещё несколько связанных моментов. #82681 (Raufs Dunamalijevs).
Индекс сходства векторов теперь поддерживает бинарную квантизацию. Бинарная квантизация существенно снижает потребление памяти и ускоряет построение векторного индекса (за счёт более быстрого вычисления расстояний). Также существующая настройка vector_search_postfilter_multiplier была признана устаревшей и заменена более общей настройкой: vector_search_index_fetch_multiplier. #85024 (Shankar Iyer).
Приближённый поиск по векторам с использованием индексов сходства векторов теперь имеет статус GA. #85888 (Robert Schulze).
Заголовок Connection отправляется в конце заголовков, когда уже известно, должно ли поддерживаться соединение. #81951 (Sema Checherinda).
В предыдущих версиях умножение состояния агрегатной функции на IPv4 вызывало логическую ошибку вместо корректного кода ошибки. Закрывает #82817. #82818 (Alexey Milovidov).
Улучшена обработка ошибок в AsynchronousMetrics. Если каталог /sys/block существует, но недоступен, сервер запустится без мониторинга блочных устройств. Закрывает #79229. #83115 (Alexey Milovidov).
Была некорректная проверка зависимостей для INSERT с материализованными представлениями с некорректными запросами SELECT, из-за чего пользователь мог получать малопонятное исключение std::exception вместо информативной ошибки с понятным пояснением. Теперь это исправлено. Исправляет: #82889. #83190 (Nikita Mikhaylov).
Не выводить очень длинные описания действий выражений в сообщениях об исключениях. Закрывает #83164. #83350 (Alexey Milovidov).
При остановке хранилища getStatus теперь генерирует исключение ErrorCodes::ABORTED. Ранее это приводило к ошибке выполнения запроса SELECT. Теперь мы перехватываем исключения ErrorCodes::ABORTED и намеренно их игнорируем. #83435 (Miсhael Stetsyuk).
Сообщения об исключениях при загрузке и добавлении проекций в некоторых ситуациях стали более читаемыми. #83728 (Robert Schulze).
Проверять, отменено ли соединение, до проверки EOF, чтобы предотвратить чтение из закрытого соединения. Исправляет #83893. #84227 (Raufs Dunamalijevs).
Улучшена обработка остановки сервера для клиентских подключений за счёт упрощения внутренних проверок. #84312 (Raufs Dunamalijevs).
Низкоуровневые ошибки во время выполнения UDF теперь приводят к сбою с кодом ошибки UDF_EXECUTION_FAILED, тогда как раньше могли возвращаться разные коды ошибок. #84547 (Xu Jia).
Исправлено несогласованное форматирование TTL, когда он содержит функцию materialize. Закрывает #82828. #82831 (Alexey Milovidov).
Исправлено несогласованное форматирование EXPLAIN AST во вложенном запросе, когда он содержит опции вывода, такие как INTO OUTFILE. Закрывает #82826. #82840 (Alexey Milovidov).
Исправлено несогласованное форматирование выражений в скобках с псевдонимами в контексте, где псевдонимы не разрешены. Закрывает #82836. Закрывает #82837. #82867 (Alexey Milovidov).
Исправлено форматирование CREATE USER с параметрами запроса (то есть CREATE USER {username:Identifier} IDENTIFIED WITH no_password). #84376 (Azat Khuzhin).
Исправлен разбор завершающей запятой в списке столбцов запроса CREATE DICTIONARY после столбца с параметрами, например, Decimal(8). Закрывает #85586. #85653 (Nikolay Degterinsky).
Унифицированы имена параметров в ODBC и JDBC при использовании именованных коллекций. #83410 (Andrey Zvonov).
MongoDB: неявное преобразование строк в числовые типы. Ранее, если строковое значение приходило из источника MongoDB для числового столбца в таблице ClickHouse, выбрасывалось исключение. Теперь движок пытается автоматически распарсить числовое значение из строки. Закрывает #81167. #84069 (Kirill Nikiforov).
Разрешено использование simdjson на неподдерживаемых архитектурах (ранее это приводило к ошибкам CANNOT_ALLOCATE_MEMORY). #84966 (Azat Khuzhin).
Асинхронные логи: ограничено максимальное число записей, удерживаемых в очереди. #83214 (Raúl Marín).
Включена поддержка Date/Date32 как целых чисел во входных форматах JSON. #83597 (MikhailBurdukov).
Улучшена поддержка индексов блум‑фильтра (обычных, ngram и token) для использования в случаях, когда первым аргументом является константный массив (множество), а вторым — индексируемый столбец (подмножество), что обеспечивает более эффективное выполнение запросов. #84700 (Doron David).
Разрешено приведение типов значений множеств при проталкивании фильтров IN / GLOBAL IN по первичным ключам хранилища KeyValue (например, EmbeddedRocksDB, KeeperMap). #84515 (Eduard Karacharov).
Исключены полные сканирования в случаях, когда анализ индекса приводит к пустым диапазонам при чтении параллельными репликами. #84971 (Eduard Karacharov).
Исправлен ряд проблем, которые могли возникать при попытке запустить интеграционные тесты на локальной машине. #82135 (Oleg Doronin).
По умолчанию включена опция trace_log.symbolize для старых развертываний. #85456 (Azat Khuzhin).
Исправления ошибок (некорректное поведение, заметное пользователю, в официальном стабильном релизе)
Исправлена деградация производительности при включённом analyzer, когда вторичные запросы всегда читают все столбцы из представлений (VIEW). Исправляет #81718. #83036 (Dmitry Novik).
Не выполнять проверку на циклические зависимости при создании таблицы без зависимостей. Это исправляет деградацию производительности сценариев с созданием тысяч таблиц, которая появилась в результате изменений из https://github.com/ClickHouse/ClickHouse/pull/65405. #83077 (Pavel Kruglov).
Обеспечить выполнение оконных агрегатных функций DISTINCT за линейное время и исправить ошибку в sumDistinct. Закрывает #79792. Закрывает #52253. #79859 (Nihal Z. Miaji).
Для запросов с комбинацией ORDER BY ... LIMIT BY ... LIMIT N, когда ORDER BY выполняется в режиме PartialSorting, счетчик rows_before_limit_at_least теперь отражает количество строк, обработанных оператором LIMIT, вместо количества строк, обработанных этапом сортировки. #78999 (Eduard Karacharov).
Исправлена логическая ошибка при использовании оператора <=> с хранилищем Join, теперь запрос возвращает корректный код ошибки. #80165 (Vladimir Cherkasov).
Исправлен сбой в функции loop при использовании с семейством функций remote. Обеспечено соблюдение оператора LIMIT в loop(remote(...)). #80299 (Julia Kartseva).
Исправлено некорректное поведение функций to_utc_timestamp и from_utc_timestamp при обработке дат до эпохи Unix (1970-01-01) и после максимальной даты (2106-02-07 06:28:15). Теперь эти функции корректно ограничивают значения началом эпохи и максимальной датой соответственно. #80498 (Surya Kant Ranjan).
Исправлено выполнение IN при transform_null_in=1 с NULL в левом аргументе и результатом подзапроса, не допускающим NULL. #81584 (Pavel Kruglov).
Исправлена проблема, при которой требуемые столбцы не считывались при обработке скалярных коррелированных подзапросов. Исправляет #81716. #81805 (Dmitry Novik).
Исправлен анализ фильтра для запроса, в котором используется только столбец с константным псевдонимом. Исправляет #79448. #82037 (Dmitry Novik).
Исправлена ошибка Not found column для запросов с arrayJoin в условии WHERE в сочетании с IndexSet. #82113 (Nikolai Kochetov).
Исправлена ошибка, приводившая к возникновению исключения TOO_DEEP_SUBQUERIES, когда определение CTE ссылается на другое табличное выражение с тем же именем. #83413 (Dmitry Novik).
Исправлен некорректный результат выполнения запросов с предложением WHERE ... IN (<subquery>) при включённом кэше условий запроса (настройка use_query_condition_cache). #83445 (LB7666).
INSERT SELECT с UNION ALL могло приводить к разыменованию нулевого указателя в пограничном случае. Это исправляет #83618. #83643 (Alexey Milovidov).
Исправлена ошибка LOGICAL_ERROR, возникавшая при анализе выражения политики строк для коррелированных столбцов. #82618 (Dmitry Novik).
Исправлены ошибочные результаты при использовании кэша условий запроса совместно с рекурсивными CTE (issue #81506). #84026 (zhongyuankai).
Отключена обрезка файлов, основанная на границах, для элементов массивов iceberg и значений карт iceberg, включая все их вложенные подполя. #83520 (Daniil Ivanik).
Исправлена запись в iceberg для сложных типов. #85330 (scanhex12).
Запись нижних и верхних границ не поддерживается для сложных типов. #85332 (scanhex12).
Исправлена null‑допустимость полей в iceberg. #85977 (scanhex12).
Больше не создаётся пустой файл удаления iceberg. #86061 (scanhex12).
Обновляется метка времени метаданных при записях в iceberg. #85711 (scanhex12).
Spark не может читать файлы позиционного удаления (position delete). #85762 (scanhex12).
Схема больше не берётся из manifest‑файлов, вместо этого соответствующие схемы для каждого snapshot хранятся независимо. Актуальная схема для каждого файла данных теперь выводится из соответствующего snapshot. Предыдущее поведение нарушало спецификацию Iceberg для записей manifest‑файлов с существующим статусом. #84588 (Daniil Ivanik).
Теперь Iceberg не пытается кэшировать актуальную версию snapshot между запросами SELECT и каждый раз заново определяет соответствующий snapshot. Предыдущая попытка кэшировать snapshot iceberg приводила к проблемам при использовании таблицы Iceberg с функциональностью time travel. #85038 (Daniil Ivanik).
Исправлено определение метаданных при выполнении запросов к таблицам iceberg через REST‑каталог. ... #85531 (Saurabh Kumar Ojha).
Исправлено маскирование секретов в табличных функциях icebergS3Cluster и icebergAzureCluster. #85658 (MikhailBurdukov).
Пересчитывать min-max-индекс при уменьшении числа строк по TTL, чтобы обеспечить корректность алгоритмов, использующих его, например minmax_count_projection. Это исправляет #77091. #77166 (Amos Bird).
Исправить некорректный пересчёт TTL в TTL GROUP BY при обновлении TTL. #81222 (Evgeniy Ulasik).
Исправить ошибку «Context has expired» во время слияний, когда словарь используется в TTL-выражении. #81690 (Azat Khuzhin).
Исправить LOGICAL_ERROR и последующее падение при использовании одного и того же столбца в TTL для GROUP BY и SET. #82054 (Pablo Marcos).
MergeTree теперь не выполняет никаких действий, связанных с TTL, если все TTL удалены из таблицы. #84441 (alesapin).
Исправить проблему, при которой ALTER MODIFY ORDER BY не проверял TTL-столбцы в ключах сортировки. TTL-столбцы теперь корректно отклоняются при использовании в выражениях ORDER BY во время операций ALTER, что предотвращает возможное повреждение таблиц. #84536 (xiaohuanlin).
Исправлена логическая ошибка при материализации проекции, когда тип столбца был изменён на Nullable. #80741 (Pavel Kruglov).
Исправлено некорректное использование метаданных родителя в табличной функции mergeTreeProjection, когда enable_shared_storage_snapshot_in_query = 1. Связано с #82634. #82638 (Amos Bird).
Исправлен редкий сбой ClickHouse, когда у таблицы есть проекция, lightweight_mutation_projection_mode = 'rebuild', и пользователь выполняет lightweight delete, который удаляет ВСЕ строки из любого блока таблицы. #84158 (alesapin).
Исправлено резервное копирование частей с повреждёнными проекциями. #85362 (Antonio Andelic).
Запрещено использование столбца _part_offset в проекциях в релизах до его стабилизации. #85372 (Sema Checherinda).
Для некоторых запросов, выполняемых с параллельными репликами, оптимизация чтения по порядку (reading in order) могла применяться на инициаторе, но не на удалённых узлах. Это приводило к использованию различных режимов чтения координатором параллельных реплик (на инициаторе) и на удалённых узлах, что является логической ошибкой. #80652 (Igor Nikonov).
Отключать параллельные реплики, если подзапрос содержит FINAL#81401. #83455 (zoomxi).
Исправить LOGICAL_ERROR для запросов с параллельными репликами и несколькими соединениями INNER, после которых следует соединение RIGHT. Не использовать параллельные реплики для таких запросов. #84299 (Vladimir Cherkasov).
Запросы с параллельными репликами, которые используют оптимизацию чтения в обратном порядке (reading reverse in order), могут приводить к некорректным результатам. #85406 (Igor Nikonov).
Исправлена проблема с сокрытием значений именованных коллекций в logs/query_log. Закрывает #82405. #82510 (Kseniia Sumarokova).
Установлена соль для данных аутентификации при разборе AST для типа SCRAM_SHA256_PASSWORD. #82888 (Tuan Pham Anh).
Маскирование данных аутентификации для Avro schema registry, чтобы они не были видны пользователю или в логах. #83713 (János Benjamin Antal).
Исправлено некорректное поведение, когда выполнение REVOKE S3 ON system.* отзывает права S3 для *.*. Исправляет #83417. #83420 (pufit).
Исправлен сбой сервера, когда пользователь, созданный с no_password, пытается войти после того, как настройка сервера allow_no_password была изменена на 0. #84426 (Shankar Iyer).
Улучшено сообщение об ошибке при попытке создать пользователя, идентифицируемого по JWT. #85072 (Konstantin Bogdanov).
Замаскированы учетные данные для deltaLakeAzure, deltaLakeCluster, icebergS3Cluster и icebergAzureCluster. #85889 (Julian Maicher).
Исправлена ошибка, допущенная в #79963. При вставке в материализованное представление с definer проверка прав должна использовать привилегии пользователя-определителя (definer). Исправляет #79951. #83502 (pufit).
Исправления резервного копирования и восстановления
Исправлено создание резервной копии пустой таблицы Memory, из-за которого восстановление резервной копии завершалось с ошибкой BACKUP_ENTRY_NOT_FOUND. #82791 (Julia Kartseva).
Исправлено вводящее в заблуждение сообщение об ошибке при восстановлении резервной копии на диск только для чтения. #83051 (Julia Kartseva).
Исправлен запуск лишних внутренних операций резервного копирования после возникновения проблем с подключением. #84755 (Vitaly Baranov).
Исправлен возможный сбой в Aggregator в случае исключения во время слияния. #81450 (Nikita Taranov).
Исправлен возможный сбой в Aggregator в случае исключения во время слияния. #82022 (Nikita Taranov).
Исправлена ошибка копирования и вставки в arraySimilarity, которая запрещала использование весов типов UInt32 и Int32. Обновлены тесты и документация. #82103 (Mikhail F. Shiryaev).
Исправлено переполнение в функциях numericIndexedVectorPointwiseAdd, numericIndexedVectorPointwiseSubtract, numericIndexedVectorPointwiseMultiply, numericIndexedVectorPointwiseDivide, которое происходило при их применении к большим числам. #82165 (Raufs Dunamalijevs).
Исправлено некорректное применение bloom-фильтра Parquet для условия вида WHERE function(key) IN (...) так, как будто это WHERE key IN (...). #81255 (Michael Kolupaev).
Исправлена некорректная запись статистики (min/max) для типов Decimal в writer'е Parquet. #83754 (Michael Kolupaev).
Исправлена десериализация groupArraySample/groupArrayLast в случае пустых элементов (десериализация могла пропустить часть бинарных данных, если входные данные были пустыми, что могло привести к повреждению данных при чтении и ошибке UNKNOWN_PACKET_FROM_SERVER в протоколе TCP). Это не затрагивает числовые типы и типы даты и времени. #82763 (Pedro Ferreira).
Исправлена запись JSON-путей со значениями NULL в формате RowBinary. #83923 (Pavel Kruglov).
Исправлена модификация фильтра для запросов с выражением JOIN с таблицей с движком Merge. Исправляет #82092. #82950 (Dmitry Novik).
Исправлен сбой при JOIN с key-value-хранилищем, если ключ приведён к другому типу. #82497 (Pervakov Grigorii).
Исправлена логическая ошибка при разрешении matcher в запросе с несколькими JOIN, закрывает #81969. #82421 (Vladimir Cherkasov).
Исправлено встраивание фильтра в условие JOIN в случаях, когда операнды равенства имеют разные типы или ссылаются на константы. Исправляет #83432. #84145 (Dmitry Novik).
Исправлена логическая ошибка Expected single dictionary argument for function при выполнении JOIN по условию неравенства, когда один из столбцов имеет тип LowCardinality, а другой является константой. Закрывает #81779. #84019 (Alexey Milovidov).
Исправлен markReplicasActive в DDLWorker и DatabaseReplicatedDDLWorker. #81395 (Tuan Pham Anh).
Исправлен DatabaseReplicated::getClusterImpl. Если первый элемент (или элементы) hosts имеет id == DROPPED_MARK и нет других элементов для того же шарда, первый элемент shards будет пустым вектором, что приводит к std::out_of_range. #82093 (Miсhael Stetsyuk).
Реализован учет количества задач по асинхронной загрузке таблиц. Если есть выполняющиеся задачи, tail_ptr в TransactionLog::removeOldEntries не обновляется. #82824 (Tuan Pham Anh).
Исправлена проблема, при которой, если таблица MergeTree создается с add_minmax_index_for_numeric_columns=1 или add_minmax_index_for_string_columns=1, индекс позднее материализуется во время операции ALTER и препятствует корректной инициализации реплицируемой базы данных на новой реплике. #83751 (Nikolay Degterinsky).
Исправлено создание RMV на новой реплике реплицируемой базы данных, если DEFINER был удален. #85327 (Nikolay Degterinsky).
Исправлено восстановление реплицируемых баз данных в случае, когда перемещение файла метаданных занимает много времени. #85177 (Tuan Pham Anh).
Реализовано принудительное восстановление базы данных Replicated после восстановления метаданных базы данных в Keeper. #85960 (Tuan Pham Anh).
Исправлена ошибка при восстановлении базы данных Replicated: если имя таблицы содержит символ %, во время восстановления таблица могла быть пересоздана с другим именем. #85987 (Alexander Tokmakov).
Теперь DDL worker очищает набор реплик от устаревших хостов. Это уменьшит объем хранимых метаданных в ZooKeeper. #88154 (alesapin).
Исправлены легковесные обновления для таблиц с движками ReplacingMergeTree и CollapsingMergeTree. #84851 (Anton Popov).
Исправлена логическая ошибка в легковесных обновлениях, которые изменяют все столбцы в таблице. #84380 (Anton Popov).
Исправлены легковесные обновления для таблиц с движком ReplicatedMergeTree, созданных на серверах с версией ниже 25.7. #84933 (Anton Popov).
Исправлены легковесные обновления для таблиц с нереплицированным движком MergeTree после выполнения запроса ALTER TABLE ... REPLACE PARTITION. #84941 (Anton Popov).
Исправлена очистка патч-частей в ReplicatedMergeTree. Ранее результат легковесного обновления мог временно не отображаться на реплике до тех пор, пока объединённая или модифицированная часть, материализующая патч-части, не была загружена с другой реплики. #85121 (Anton Popov).
Исправлен no_sign_request для клиента S3. Его можно использовать для явного отключения подписи запросов к S3. Он также может быть задан для отдельных endpoint'ов с помощью настроек по endpoint'ам. #83379 (Antonio Andelic).
Теперь недоступные узлы пропускаются при выполнении INSERT SELECT из s3Cluster() в реплицируемый MergeTree. #83676 (Igor Nikonov).
Исправлено условие раннего выхода для замедления частоты запросов к S3: теперь для включения замедления, когда все потоки приостановлены из-за повторяемой ошибки, достаточно, чтобы было истинно либо s3_slow_all_threads_after_network_error, либо backup_slow_all_threads_after_retryable_s3_error, вместо требования истинности обоих. #85505 (Julia Kartseva).
Исправлена логическая ошибка при чтении из функций объектного хранилища через Distributed-таблицу или удалённую табличную функцию. Исправляет: #84658, исправляет #85173, исправляет #52022. #85359 (alesapin).
Исправлено влияние больших значений настроек, которые приводили к некорректной работе таблиц S3Queue и сбоям при перезапуске реплики. #86074 (Nikolay Degterinsky).
Исправлен откат столбца типа Dynamic при ошибке разбора. #82169 (Pavel Kruglov).
Исправлено возможное аварийное завершение при использовании типа Variant в UNION. #83295 (Pavel Kruglov).
Исправлено чтение столбца типа Variant с ленивой материализацией. #84400 (Pavel Kruglov).
Отключена проверка экспериментальных/подозрительных типов при выполнении выражений DEFAULT/MATERIALIZE при чтении из существующей таблицы. #81618 (Pavel Kruglov).
Исправление в Keeper: корректно обновляется общее количество наблюдений (watch count) при удалении эфемерных узлов при закрытии сессии. #83583 (Antonio Andelic).
Исправлена запись в журнал изменений Keeper (changelog) в неверном порядке. Ранее могли существовать незавершённые записи в changelog, но откат (rollback) мог вызывать конкурентное изменение целевого файла. Это приводило к неконсистентным логам и возможной потере данных. #84434 (Antonio Andelic).
Исправлены утечки ресурсов для Keeper с хранилищем на RocksDB (итераторы не уничтожались). #84523 (Azat Khuzhin).
Исправлена проблема, при которой настройка Keeper rotate_log_storage_interval = 0 могла приводить к сбою ClickHouse. (issue #83975). #84637 (George Larionov).
Исправлен общий счётчик наблюдений (watches), возвращаемый Keeper. #84890 (Antonio Andelic).
Теперь mutex блокируется при получении zookeeper из view в RefreshTask. #84699 (Tuan Pham Anh).
Исправлено избыточное пропускание гранул при фильтрации по token/ngram-индексам с регулярным выражением, которое содержит альтернативы и нелитеральную первую альтернативу. #79373 (Eduard Karacharov).
Реализация настройки use_skip_indexes_if_final_exact_mode (введённой в 25.6) могла не выбрать релевантный диапазон-кандидат в зависимости от настроек движка MergeTree и распределения данных. Это было исправлено. #82667 (Shankar Iyer).
Оптимизация настройки use_skip_indexes_if_final_exact_mode (введённой в 25.6) могла не выбрать релевантный диапазон-кандидат в зависимости от настроек движка MergeTree и распределения данных. Это было исправлено. #82879 (Shankar Iyer).
Ранее индексы set не учитывали колонки Nullable при проверке, прошли ли гранулы фильтр (проблема #75485). #84305 (Elmi Ahmadov).
Сравнение со значением NaN использовало некорректные диапазоны во время оценки индекса MinMax. #84386 (Elmi Ahmadov).
Токенизаторы ngram и no_op больше не приводят к аварийному завершению работы (экспериментального) текстового индекса при пустых входных токенах. #84849 (Robert Schulze).
В AzureBlobStorage для нативного копирования мы сравниваем методы аутентификации, и если при этом возникает исключение, мы обновили код так, чтобы выполнять откат к чтению и копированию (т.е. к ненативному копированию). #82693 (Smita Kulkarni).
Исправлено двойное освобождение памяти в AzureIteratorAsync. #85064 (Nikita Taranov).
Исправлен возможный сбой при логировании во время завершения сессии, когда user_id может быть пустым. #82513 (Bharat Nallan).
Исправлен сбой в клиенте из‑за соединения, оставленного в состоянии disconnected после некорректного INSERT. #83253 (Azat Khuzhin).
Исправлен сбой при вычислении размера блока с пустыми столбцами. #83271 (Raúl Marín).
Исправлен сбой, который мог возникать для запроса с настройкой max_threads=1 при выполнении под нагрузкой с включённым планировщиком CPU. #83387 (Fan Ziqi).
Исправлено возможное аварийное завершение (из‑за присоединения потоков из задачи) и, надеемся, зависания (в модульных тестах) во время завершения работы BackgroundSchedulePool. #83769 (Azat Khuzhin).
Исправлена взаимная блокировка при завершении работы из‑за рекурсивной блокировки контекста во время очистки библиотечного моста. #83824 (Azat Khuzhin).
Исправлен сбой в клиенте из‑за соединения, оставленного в состоянии disconnected после некорректного INSERT. #83842 (Azat Khuzhin).
Исправлено возможное неопределённое поведение (вплоть до сбоев) в случае MEMORY_LIMIT_EXCEEDED при десериализации String. #85440 (Azat Khuzhin).
Исправлен редкий сбой в асинхронных вставках, которые изменяют настройки log_comment или insert_deduplication_token. #85540 (Anton Popov).
Исправлена ошибка в интеграции с Glue Catalog. Теперь ClickHouse может читать таблицы с вложенными типами данных, где некоторые из подколонок содержат значения типа Decimal, например: map<string, decimal(9, 2)>. Исправляет #81301. #82114 (alesapin).
ClickHouse теперь читает таблицы из Glue Catalog, где тип таблицы указан в нижнем регистре. #84316 (alesapin).
Unity Catalog теперь игнорирует схемы с некорректными типами данных для таблиц, не являющихся Delta. Исправляет #85699. #85950 (alesapin).
Функции trim{Left,Right,Both} теперь поддерживают входные строки типа FixedString(N). Например, теперь работает запрос SELECT trimBoth(toFixedString('abc', 3), 'ac'). #82691 (Robert Schulze).
Если функция trim вызывается со всеми константными аргументами, она теперь возвращает константную выходную строку. (Ошибка #78796). #82900 (Robert Schulze).
Исправлен некорректный результат функции formatDateTime, когда спецификатор %f используется совместно со спецификаторами переменной длины (например, %M). #83020 (Robert Schulze).
Функция lowCardinalityKeys больше не использует несвязанные части общего словаря. #83118 (Alexey Milovidov).
Исправлены функции colorSRGBToOKLCH/colorOKLCHToSRGB для сочетания константных и неконстантных аргументов. #83906 (Azat Khuzhin).
Исправлено некорректное построение пустых кортежей в функции array(). Это исправляет проблему #84202. #84297 (Amos Bird).
Исправлена ошибка, приводившая к некорректному кодированию и декодированию Bech32. Ошибка изначально не была выявлена, поскольку онлайн-реализация алгоритма, использованная для тестирования, содержала ту же проблему. #84257 (George Larionov).
Параллельный распределённый INSERT SELECT с LIMIT был разрешён, что было некорректно и приводило к дублированию данных в целевой таблице. #84477 (Igor Nikonov).
Не подставлять табличные функции их кластерными альтернативами при наличии оператора JOIN или подзапроса. #84335 (Konstantin Bogdanov).
Добавлена проверка использования коррелированного подзапроса в распределённом контексте, чтобы избежать сбоя. Исправляет #82205. #85030 (Dmitry Novik).
Использование distributed_depth как индикатора функции *Cluster было некорректным и могло приводить к дублированию данных; вместо этого используется client_info.collaborate_with_initiator. #85734 (Konstantin Bogdanov).
Добавлена поддержка глобальных констант из выражения WITH для параллельного распределённого INSERT SELECT с целевой таблицей Distributed. Ранее запрос мог завершаться ошибкой Unknown expression identifier. #85811 (Nikolai Kochetov).
Исправлена логическая ошибка при попытке выполнить CREATE ... AS (SELECT * FROM s3Cluster(...)) с DatabaseReplicated. #85904 (Konstantin Bogdanov).
Добавлены проверки ключа шардирования sharding_key при выполнении операции ALTER таблицы типа Distributed. Ранее некорректный ALTER мог приводить к повреждению определения таблицы и требовать перезапуска сервера. #86015 (Nikolay Degterinsky).
Исправлены метрики IndexUncompressedCacheBytes/IndexUncompressedCacheCells/IndexMarkCacheBytes/IndexMarkCacheFiles (ранее они учитывались в метрике без префикса Cache). #83730 (Azat Khuzhin).
Исправлена ошибка LOGICAL_ERROR в QueryMetricLog: Mutex не может быть NULL. #82979 (Pablo Marcos).
Исправлены некорректные значения метрик KafkaAssignedPartitions и KafkaConsumersWithAssignment. #85494 (Ilya Golshtein).
Исправлена недооценка статистики по обработанным байтам, когда используется PREWHERE (явно или автоматически). #85495 (Michael Kolupaev).
Исправлен дрейф учёта памяти в планировщике фоновых задач и исполнителе. #84946 (Azat Khuzhin).
Исправлены случаи, когда парсинг значения типа Time мог вызывать проблемы с MSan. Это исправляет #82477. #82514 (Yarik Briukhovetskyi).
Исправлена сортировка значений NaN в типе LowCardinality(Float32|Float64|BFloat16). #83786 (Pervakov Grigorii).
Исправлено переполнение больших значений (>2106-02-07) при приведении типа из Date к DateTime64. #83982 (Yarik Briukhovetskyi).
Исправлена проблема с неявным чтением отрицательных значений Time в таблицу и сделана документация менее запутанной. #83091 (Yarik Briukhovetskyi).
Кодек DoubleDelta теперь может применяться только к столбцам числового типа. В частности, столбцы FixedString больше не могут сжиматься с помощью DoubleDelta (исправляет #80220). #84383 (Jimmy Aguilar Mena).
Исправлена потеря точности в JSONExtract при преобразовании чисел JSON в типы Decimal. Теперь числовые значения JSON сохраняют своё точное десятичное представление, избегая ошибок округления с плавающей запятой. #85665 (ssive7b).
При передаче настроек через URI учитывается только последнее значение. #82137 (Sema Checherinda).
Исправлены гонки данных в клиенте (за счёт отказа от использования глобального контекста) и переопределения session_timezone (ранее, если session_timezone был установлен, например, в users.xml/опциях клиента в непустое значение, а в контексте запроса — в пустое, то использовалось значение из users.xml, что неверно; теперь контекст запроса всегда имеет приоритет над глобальным контекстом). #82444 (Azat Khuzhin).
Запрещено устанавливать threadpool_writer_pool_size в ноль, чтобы избежать зависаний серверных операций. #82532 (Bharat Nallan).
Ранее определения движка таблицы MongoDB могли включать компонент пути в аргументе host:port, который незаметно игнорировался. Интеграция с MongoDB отказывалась загружать такие таблицы. С данным исправлением теперь можно загружать такие таблицы, при этом компонент пути игнорируется, если движок MongoDB имеет пять аргументов, а имя базы данных берётся из аргументов. Примечание: Исправление не применяется к вновь создаваемым таблицам или запросам с табличной функцией mongo, а также к источникам словарей и именованным коллекциям. #81942 (Vladimir Cherkasov).
В предыдущих версиях сервер возвращал лишний контент в ответ на запросы к /js. Это закрывает #61890. #81895 (Alexey Milovidov).
Исправлен метод InterpreterInsertQuery::extendQueryLogElemImpl, чтобы при необходимости добавлялись обратные кавычки вокруг имён баз данных и таблиц (например, когда имена содержат специальные символы, такие как -). #81528 (Ilia Shvyrialkin).
Исправлена возможная гонка данных между потоком подсказок и основным потоком клиента. #82233 (Azat Khuzhin).
Исправлена безопасность при возникновении исключений в переписывании union/intersect/except_default_mode. Закрывает #82664. #82820 (Alexey Milovidov).
При использовании некеширующей реализации Database метаданные соответствующей таблицы удаляются после возврата столбцов и аннулирования ссылки. #82939 (buyval01).
Вызов onprogress в JSONEachRowWithProgress теперь синхронизирован с финализацией. #83879 (Sema Checherinda).
Исправлена редкая ошибка, из-за которой запрос MATERIALIZE COLUMN мог приводить к появлению неожиданных файлов в checksums.txt и в итоге — к отсоединению частей данных. #84007 (alesapin).
Исправлена генерация имен столбцов для булевых литералов: теперь используются "true"/"false" вместо "1"/"0", что предотвращает конфликты имен столбцов между булевыми и целочисленными литералами в запросах. #84945 (xiaohuanlin).
Исправлены потенциальные проблемы с некорректной сортировкой в движке таблиц Merge. #85025 (Xiaozhe Yu).
Добавлена настройка обратной совместимости, позволяющая новому анализатору в случае конфликта имён ссылаться на внешний псевдоним в секции WITH. Исправляет #82700. #83797 (Dmitry Novik).
Разрешена возможность ссылаться на любую таблицу в аргументе view(...) табличной функции remote при включённом анализаторе. Исправлены #78717 и #79377. #83844 (Dmitry Novik).
Исправлена работа записи с добавлением (в MergeTree, используемом для экспериментальных транзакций) для типов метаданных plain_rewritable/plain, которые ранее просто игнорировались. #83695 (Tuan Pham Anh).
Исправлено отсечение файлов по виртуальному столбцу в озёрах данных. #84520 (Kseniia Sumarokova).
Исправлена проблема, из-за которой при выполнении запроса к удалённому источнику с задержкой мог происходить выход за границы вектора. #84820 (George Larionov).
Корректно сохранять все настройки в метаданных таблицы движка очереди объектов. #84860 (Antonio Andelic).
Исправлена ошибка CORRUPTED_DATA, возникающая при использовании ленивых столбцов с внешней сортировкой. #84738 (János Benjamin Antal).
Убраны лишние вызовы getStatus() при выполнении запросов SYSTEM DROP REPLICA. Исправлена ситуация, когда таблица удаляется в фоновом режиме и выбрасывается исключение Shutdown for storage is called. #85220 (Nikolay Degterinsky).
Добавлены пропущенные проверки длины имени таблицы в запросах CREATE OR REPLACE и RENAME. #85326 (Michael Kolupaev).
Исправлено падение и повреждение данных при выполнении ALTER UPDATE для JSON. #85383 (Pavel Kruglov).
Исправлена ошибка сегментации в CoalescingMergeTree при работе с длинными строками. Закрывает #84582. #85709 (scanhex12).
Исправлено регулярное выражение send_logs_source_regexp (после рефакторинга асинхронного логирования в #85105). #85797 (Azat Khuzhin).
Исправлена возможная неконсистентность в словарях с update_field при ошибках MEMORY_LIMIT_EXCEEDED. #85807 (Azat Khuzhin).
Исправлены HTTP-запросы, выполняемые табличной функцией url(), так, чтобы корректно включать номера портов в заголовок Host при обращении к нестандартным портам. Это устраняет сбои аутентификации при использовании предварительно подписанных URL-адресов с S3-совместимыми сервисами, такими как MinIO, работающими на нестандартных портах, что часто встречается в средах разработки. (Исправляет #85898). #85921 (Tom Quist).