1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ClickHouse-ClickHouse

Клонировать/Скачать
CHANGELOG.md 490 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 12.03.2025 19:14 d6cb0fc

Выпуск ClickHouse v21.9, 2021-09-09

Неразрывные изменения*

  • Не выводите завершающие нули в текстовом представлении типов Decimal. Например: 1.23 будет выведен вместо 1.230000 для десятичного типа с масштабом 6. Это закрывает #15794. Это может привести к незначительной несовместимости, если ваши приложения каким-то образом зависели от завершающих нулей. Сериализация в выходных форматах можно контролировать с помощью параметра output_format_decimal_trailing_zeros. Реализация toString и преобразование в String изменены безусловно. #27680 (alexey-milovidov).

  • Не позволяйте применять параметрическую агрегирующую функцию с комбинатором -Merge к состоянию агрегирующей функции, если состояние было создано агрегирующей функцией с другими параметрами. Например, состояние fooState(42)(x) не может быть завершено с fooMerge(s) или fooMerge(123)(s), параметры должны быть указаны явно, как fooMerge(42)(s) и должны совпадать. Это не влияет на некоторые специальные агрегирующие функции, такие как quantile и sequence*, которые используют параметры только для завершения. #26847 (tavplubix).

  • В режиме clickhouse-local всегда считайте локальные адреса с портом удаленными. #26736 (Raúl Marín).* Исправлена проблема, связанная с некоторыми сложными запросами, где псевдонимы столбцов совпадают с именами выражений, что может привести к ошибочному преобразованию. Это исправляет #25447. Это исправляет #26914. Это исправление может привести к обратной несовместимости: если есть различные выражения с одинаковыми именами, будет выброшено исключение. Это может сломать некоторые редкие случаи, когда установлен параметр enable_optimize_predicate_expression. #26639 (alexey-milovidov).* Теперь скалярный подзапрос всегда возвращает результат типа Nullable, если его тип может быть Nullable. Это необходимо потому, что в случае пустого подзапроса его результат должен быть Null. Ранее было возможно получить ошибку о неконсistentных типах (тип не распознается до выполнения скалярного подзапроса, и он мог использовать необязательный тип). Подзапрос с пустым результатом, который не может быть преобразован в Nullable (например, Array или Tuple), теперь вызывает ошибку. Исправляет #25411. #26423 (Nikolai Kochetov).

Новая функция

  • Реализация вычисления функций с коротким замыканием, закрывает #12587. Добавлены настройки short_circuit_function_evaluation для конфигурирования вычисления функций с коротким замыканием. #23367 (Kruglov Pavel).

  • Добавлена поддержка операторов INTERSECT, EXCEPT, ANY, ALL. #24757 (Kirill Ershov). (Kseniia Sumarokova).

  • Добавлена поддержка шифрования на уровне виртуальной файловой системы (шифрование данных на месте) с использованием алгоритма AES-CTR. #24206 (Latysheva Alexandra). (Vitaly Baranov) #26733 #26377 #26465.* Добавлены функции естественного языкового процессинга (NLP) для токенизации, лемматизации, поиска синонимов и других расширений. #24997 (Nikolay Degterinsky).

  • Добавлена интеграция с библиотекой S2 геометрии. #24980 (Andr0901). (Nikita Mikhaylov).

  • Добавлен движок таблиц SQLite, функция таблицы и движок базы данных. #24194 (Arslan Gumerov). (Kseniia Sumarokova).

  • Добавлена поддержка пользовательских запросов для источников словарей MySQL, PostgreSQL, ClickHouse, JDBC, Cassandra. Закрывает #1270. #26995 (Maksim Kita).

  • Введен синтаксис для here-документов. Пример SELECT $doc$ VALUE $doc$. #26671 (Maksim Kita).

  • Добавлена совместная (реплицированная) хранение пользователей, ролей, политик строк, квот и профилей настроек через ZooKeeper. #27426 (Kevin Michel).

  • Добавлена компрессия для INTO OUTFILE, которая автоматически выбирает алгоритм сжатия. Закрывает #3473. #27134 (Filatenkov Artur).

  • Добавлен INSERT ... FROM INFILE, аналогично SELECT ... INTO OUTFILE. #27655 (Filatenkov Artur).* Добавлен словарь complex_key_range_hashed. Закрывает #22029. #27629 (Maksim Kita).

  • Поддержка выражений в разделе JOIN ON. Закрывает #21868. #24420 (Vladimir C).

  • При соединении клиента с сервером клиент получает информацию обо всех предупреждениях, уже собранных сервером. Это можно отключить с помощью опции --no-warnings. Добавлена таблица system.warnings для сбора предупреждений о конфигурации сервера. #26246 (Filatenkov Artur). #26282 (Filatenkov Artur).

  • Разрешено использование постоянных выражений из WITH и SELECT в параметрах агрегирующей функции. Закрывает #10945. #27531 (abel-cheng).

  • Добавлена функция tupleToNameValuePairs, которая преобразует именованный кортеж в массив пар. #27505 (Braulio Valdivielso Martínez).

  • Добавлена поддержка метода сжатия bzip2 для импорта/экспорта. Закрывает #22428. #27377 (Nikolay Degterinsky).

  • Добавлена функция bitmapSubsetOffsetLimit(bitmap, offset, cardinality_limit), создающая подмножество битовой карты, ограничивающее результаты до cardinality_limit с смещением offset. #27234com/ClickHouse/ClickHouse/pull/27234) (DHBin).

  • Добавлена колонка default_database в таблицу system.users. #27054 (kevin wan).

  • Поддержана возможность использования макроса cluster внутри функций таблиц 'cluster' и 'clusterAllReplicas'. #26913 (polyprogrammist).

  • Добавлены новые функции currentRoles(), enabledRoles(), defaultRoles(). #26780 (Vitaly Baranov).

  • Введены новые функции currentProfiles(), enabledProfiles(), defaultProfiles(). #26714 (Vitaly Baranov).

  • Добавлены функции, возвращающие (initial_)query_id текущего запроса. Это закрывает задачу #23682. #26410 (Alexey Boykov).

  • Реализовано новое свойство REPLACE GRANT. #26384 (Caspian).

  • Реализовано оконное выражение nth_value(expr, N), которое возвращает значение N-го элемента в окне. #26334 (Zuo, RuoYu).

  • Теперь команда EXPLAIN имеет режим EXPLAIN ESTIMATE ..., который показывает информацию о прочитанных строках, метках и частях из таблиц типа MergeTree. Закрывает задачу #23941. #26131 (fastio).

  • Добавлена таблица system.zookeeper_log. Все действия клиента ZooKeeper записываются в эту таблицу. Реализует задачу #25449.com/ClickHouse/ClickHouse/issues/25449). #26129 (tavplubix).

    • Реализована нулевая копия репликации для ReplicatedMergeTree через хранилище HDFS. #25918 (Zhichang Yu).
    • Разрешено вставлять тип Nested как массив структур в форматах входных данных Arrow, ORC и Parquet. #25902 (Kruglov Pavel).
    • Добавлен новый тип данных Date32 (хранение данных как Int32), поддерживающий диапазон дат такой же, как у DateTime64, а также возможность загрузки данных в формате Parquet с типом Date32 в ClickHouse Date32. Добавлена новая функция toDate32, аналогичная toDate. #25774 (LiuNeng).
    • Введено возможность установки базовой базы данных по умолчанию для пользователей. #25268. #25687 (kevin wan).
    • Добавлено опциональное параметрическое соединение для движка MongoDB, чтобы принимать опции строки подключения и поддерживать защищённое соединение SSL. Закрыты задачи #21189. #21041. #22045 (Omar Bazaraa). #### Экспериментальная функция* Добавлен сжатый кодек "AES_128_GCM_SIV", который шифрует столбцы вместо их сжатия. #19896 (PHO). Будет переписан, не используйте.
  • Переименован MaterializeMySQL в MaterializedMySQL. #26822 (tavplubix).#### Улучшение производительности

  • Улучшение производительности быстрых запросов при max_execution_time = 0 за счет снижения количества системных вызовов clock_gettime. #27325 (filimonov).

  • Оптимизация сравнений, связанных с датами и временем, для повышения производительности. Это исправляет #27083. #27122 (Amos Bird).

  • Поделиться дескрипторами файлов в одновременных чтениях одного и того же файла. На Linux заметной разницы в производительности нет. Однако количество открытых файлов будет значительно (в 10–100 раз) меньше на типичных серверах, что делает операции проще. См. #26214. #26768 (alexey-milovidov).

  • Улучшение задержек коротких запросов, требующих чтения таблиц с большим количеством столбцов. #26371 (Anton Popov).

  • Отказ от создания множеств для индексов при анализе запроса. #26365 (Raúl Marín).

  • Векторизация суммирования Nullable целочисленных типов с нативным представлением (David Manzanares, Raúl Marín). #26248 (Raúl Marín).

  • Компиляция выражений, включающих столбцы с типами Enum. #26237com/ClickHouse/ClickHouse/pull/26237) (Maksim Kita).

    • Компиляция агрегирующих функций groupBitOr, groupBitAnd, groupBitXor. #26161 (Maksim Kita).
    • Улучшение использования памяти за счет более точного прогнозирования размера блока при чтении пустых столбцов типа DEFAULT. Закрывает #17317. #25917 (Vladimir Chebotarev).
    • Снижение использования памяти и количество считываемых строк в запросах с ORDER BY primary_key. #25721 (Anton Popov).
    • Включение distributed_push_down_limit по умолчанию. #27104 (Azat Khuzhin).
    • Делает toTimeZone монотонным при постоянном значении времени зоны для поддержки очистки разделов при использовании SQL вроде:. #26261 (huangzhaowei).

Улучшение

  • Отметить оконные функции как готовые для общего использования. Удалить настройку allow_experimental_window_functions. #27184 (Alexander Kuzmenkov).

  • Улучшить совместимость с часовым поясом, имеющим смещение, отличное от целого числа минут. #27080 (Raúl Marín).

  • Если файловый дескриптор в таблице File является обычным файлом — разрешить его многократное чтение.Это позволяет clickhouse-local многократно читать данные из стандартного ввода (например, при нескольких запросах SELECT или подзапросах) если стандартный ввод — это обычный файл: clickhouse-local --query "SELECT * FROM table UNION ALL SELECT * FROM table" < file. Это закрывает #11124. Внесено вкладом от (alexey-milovidov). #25960 (BoloniniD).

  • Устраните двойной анализ индекса и избегайте возможных недопустимых проверок ограничений во время анализа проекций. #27742 (Amos Bird).

  • Разрешите передачу параметров запроса в теле HTTP-запросов. #27706 (Hermano Lustosa).

  • Запрещите использование arrayJoin на выражениях разделения данных. #27648 (Raúl Marín).

  • Логируйте адрес клиента, если аутентификация не удалась. #27514 (Misko Lee).

  • Используйте байты вместо строк для двоичных данных в протоколе GRPC. #27431 (Vitaly Baranov).

  • Отправьте ответ с сообщением об ошибке, если порт HTTP не установлен и пользователь пытается отправить HTTP-запрос на TCP-порт. #27385 (Braulio Valdivielso Martínez).* Добавлена внутренняя функция _CAST, которая не будет сохранять нулевые значения типа, но внешняя функция CAST будет сохранять согласно настройке cast_keep_nullable. Закрывает #12636. #27382 (Kseniia Sumarokova).

  • Добавлена настройка log_formatted_queries, чтобы логировать дополнительные сформированные запросы в system.query_log. Это полезно для анализа нормализованных запросов, так как функции типа normalizeQuery и normalizeQueryKeepNames не парсят/формируют запросы для достижения лучшей производительности. #27380 (Amos Bird).* Добавлены две настройки max_hyperscan_regexp_length и max_hyperscan_regexp_total_length, чтобы предотвратить использование огромных регулярных выражений в связанных с Hyperscan функциях, таких как multiMatchAny. #27378 (Amos Bird).

  • Теперь потребление памяти битмап-агрегатными функциями учитывается при ограничении использования памяти. Это закрывает #26555. #27252 (alexey-milovidov).

  • Добавлена новая минимаксная форма данных индекса для правильной поддержки Nullable. #27250 (Azat Khuzhin).

  • Добавлен кэш на OnClickListener.SECONDS для S3 прокси-резолвера. #27216 (ianton-ru).

  • Глобальный мьютекс разделён на отдельные части конструирования регулярных выражений. Это помогает избежать блокировки других связанных потоков при конструировании огромных регулярных выражений. #27211 (Amos Bird).

  • Поддержка схемы для движка базы данных PostgreSQL. Закрывает #27166. #27198 (Kseniia Sumarokova).

  • Отслеживание использования памяти в clickhouse-client. #27191 (Filatenkov Artur).* Проблема записи query_kind в system.query_log, даже если запрос не смог запуститься. #27182 (Amos Bird).* Добавлены колонки replica_is_active, которые отображают имя реплики вместе с её активным статусом в таблице system.replicas. Закрывает #27138. #27180 (Maksim Kita).

  • Разрешено передача параметров запроса через URI сервера в веб-интерфейсе. #27177 (kolsys).

    • Добавлена новая метрика с названием MaxPushedDDLEntryID, которая представляет собой максимальное значение ID записи DDL, которое текущий узел отправляет в ZooKeeper. #27174 (Fuwang Hu).
    • Улучшены условия проверки существования и проверка пустых узлов при создании znodes в clickhouse-keeper. #27125 (小路).
    • Объединение JOIN корректно обрабатывает пустое множество справа. #27078 (Vladimir C).
    • Теперь функции могут быть константами уровня шарда, что означает, что если они выполняются в контексте какого-либо распределённого столбца, они генерируют обычный столбец, а в противном случае — постоянное значение. Примеры таких функций: hostName(), tcpPort(), version(), buildId(), uptime() и т. д. #27020 (Amos Bird).
    • Обновлено extractAllGroupsHorizontal: верхний предел количества совпадений на строку теперь можно установить через необязательный третий аргумент. #26961```markdown (com/ClickHouse/ClickHouse/pull/26961) (Vasily Nemkov).
    • Экспонированы статистики RocksDB через системную таблицу system.rocksdb. Чтение опций RocksDB из конфигурации ClickHouse (rocksdb.* ключи). ВАЖНО: ClickHouse не зависит от RocksDB, это просто один из дополнительных модулей интеграционных хранилищ. #26821 (Azat Khuzhin).
    • Уменьшен уровень детализации внутренних логов RocksDB. ВАЖНО: ClickHouse не зависит от RocksDB, это просто один из дополнительных модулей интеграционных хранилищ. Это закрывает #26252. #26789 (alexey-milovidov).
    • Изменение по умолчанию ролей влияет только на новые сессии. #26759 (Vitaly Baranov).
    • В Docker по умолчанию отключен watchdog. Исправление для некорректной обработки Ctrl+C. #26757 (Mikhail F. Shiryaev).
    • SET PROFILE теперь применяет ограничения также, если они установлены для переданного профиля. #26730 (Vitaly Baranov).
    • Улучшение обработки запросов KILL QUERY. #26675 (Raúl Marín).
    • Функция mapPopulatesSeries поддерживает тип данных Map. #26663 (Ildus Kurbangaliev).
    • Исправление избыточных попыток соединения в два раза с использованием skip_unavailable_shards. #26658
com/ClickHouse/ClickHouse/pull/26658) ([Azat Khuzhin](https://github.com/azat)).
  * Предотвращение зависания `clickhouse-benchmark` при неудачной попытке подключения (например, при достижении лимита открытых файлов EMFILE).   [#26656](https://github.com/ClickHouse/ClickHouse/pull/26656) ([Azat Khuzhin](https://github.com/azat)).
  * Разрешение использования большего количества потоков движком Kafka.   [#26642](https://github.com/ClickHouse/ClickHouse/pull/26642) ([feihengye](https://github.com/feihengye)).
  * Добавление поддержки round-robin для `clickhouse-benchmark` (это не отличается от обычного запуска с несколькими хостами/портами, за исключением отчета статистики).   [#26607](https://github.com/ClickHouse/ClickHouse/pull/26607) ([Azat Khuzhin](https://github.com/azat)).
  * Включение клиентского типа запроса для протокола совместимости с `mysql` и `postgresql`.   [#26498](https://github.com/ClickHouse/ClickHouse/pull/26498) ([anneji-dev](https://github.com/anneji-dev)).
  * Применение `LIMIT` на шардах для запросов вроде `SELECT * FROM dist ORDER BY key LIMIT 10` с `distributed_push_down_limit=1`.   Предотвращение выполнения шагов `Distinct`/`LIMIT BY` для запросов вроде `SELECT DISTINCT shading_key FROM dist ORDER BY key`.   Теперь `distributed_push_down_limit` учитывается оптимизацией `optimize_distributed_group_by_sharding_key`.   [#26466](https://github.com/ClickHouse/ClickHouse/pull/26466) ([Azat Khuzhin](https://github.com/azat)).
  * Обновление protobuf до версии 3.17.3.   Изменения доступны на https://github.com/protocolbuffers/protobuf/releases.   [#26424](https://github.com/ClickHouse/ClickHouse/pull/26424) ([Ilya Yatsishin](https://github.com/qoega)).
  * Включение настройки `use_hedged_requests`, которая позволяет сглаживать хвостовые задержки в больших кластерах.   [#26380](https://github.com/ClickHouse/ClickHouse/pull/26380) ([alexey-milovidov](https://github.com/alexey-milovidov)).* Улучшено поведение при отсутствии указанного хоста в списке разрешённых хостов пользователя.   [#26368](https://github.com/ClickHouse/ClickHouse/pull/26368) ([ianton-ru](https://github.com/ianton-ru)).
  * Добавлена возможность установки настроек монитора директорий `Distributed` через команду `CREATE TABLE` (например, `CREATE TABLE dist (key Int) ENGINE=Distributed(cluster, db, table) SETTINGS monitor_batch_inserts=1`).   [#26336](https://github.com/ClickHouse/ClickHouse/pull/26336) ([Azat Khuzhin](https://github.com/azat)).
  * Сохранение адреса сервера в истории URL в веб-интерфейсе, если он отличается от адреса источника веб-интерфейса.  Это закрывает [#26044](https://github.com/ClickHouse/ClickHouse/issues/26044).   [#26322](https://github.com/ClickHouse/ClickHouse/pull/26322) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Добавлены события для профилирования вызовов функций `sleep` / `sleepEachRow`.   [#26320](https://github.com/ClickHouse/ClickHouse/pull/26320) ([Raúl Marín](https://github.com/Algunenano)).
  * Разрешено переиспользование соединений шардов между различными кластерами.  Также это предотвращает создание новых соединений при использовании функции таблицы `cluster`.   [#26318](https://github.com/ClickHouse/ClickHouse/pull/26318) ([Amos Bird](https://github.com/amosbird)).
  * Контроль периода выполнения очистки старых временных директорий с помощью параметра с значением по умолчанию.   [#26212](https://github.com/ClickHouse/ClickHouse/issues/26212).   [#26313](https://github.com/ClickHouse/ClickHouse/pull/26313) ([fastio](https://github.com/fastio)).
  * Добавлена настройка `function_range_max_elements_in_block`, чтобы регулировать порог безопасности для объёма данных, генерируемых функцией `range`.  Это закрывает [#26303](https://github.com/ClickHouse/ClickHouse/issues/26303).com/ClickHouse/ClickHouse/issues/26303).   [#26305](https://github.com/ClickHouse/ClickHouse/pull/26305) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Проверка хэш-функции при создании таблицы, а не при выборке. Добавление настроек для MergeTree, если кто-то создаёт таблицу с некорректной колонкой выборки, но выборка никогда не используется, отключение этих настроек для запуска сервера без исключения.   [#26256](https://github.com/ClickHouse/ClickHouse/pull/26256) ([zhaoyu](https://github.com/zxc111)).
  * Добавлены настройки `output_format_avro_string_column_pattern` для помещения указанных столбцов типа String в Avro как строки вместо по умолчанию байтов. Реализует [#22414](https://github.com/ClickHouse/ClickHouse/issues/22414).   [#26245](https://github.com/ClickHouse/ClickHouse/pull/26245) ([Ilya Golshtein](https://github.com/ilejn)).
  * Добавлена информация о размерах колонок в таблице `system.columns` для таблиц `Log` и `TinyLog`. Это закрывает [#9001](https://github.com/ClickHouse/ClickHouse/issues/9001).   [#26241](https://github.com/ClickHouse/ClickHouse/pull/26241) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Исключение не выбрасывается при запросе таблицы `system.detached_parts`, если есть пользовательская конфигурация диска и директория `detached` отсутствует на некоторых дисках. Это закрывает [#26078](https://github.com/ClickHouse/ClickHouse/issues/26078).   [#26236](https://github.com/ClickHouse/ClickHouse/pull/26236) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Проверка ненадёжных функций в ключах, включая постоянные выражения, такие как `now()`, `today()`. Это закрывает [#25875](https://github.com/ClickHouse/ClickHouse/issues/25875). Это закрывает [#11333](https://github.com/ClickHouse/ClickHouse/issues/11333).   [#26235](https://github.com/ClickHouse/ClickHouse/pull/26235) ([alexey-milovidov](https://github.com/alexey-milovidov)).com/ClickHouse/ClickHouse/pull/26235) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Преобразование типов данных `timestamp` и `timestamptz` в `DateTime64` в движке таблиц PostgreSQL.  [#26234](https://github.com/ClickHouse/ClickHouse/pull/26234) ([jasine](https://github.com/jasine)).
  * Применение агрессивного анализа индекса IN для проекций, чтобы выбрать лучшего кандидата для проекции.  [#26218](https://github.com/ClickHouse/ClickHouse/pull/26218) ([Amos Bird](https://github.com/amosbird)).
  * Удалено ключевое слово `GLOBAL` для `IN`, когда передается скалярная функция.  В предыдущих версиях, если пользователь указывал `GLOBAL IN f(x)`, выбрасывалось исключение.  [#26217](https://github.com/ClickHouse/ClickHouse/pull/26217) ([Amos Bird](https://github.com/amosbird)).
  * Добавлено идентификатор ошибки (например, `BAD_ARGUMENTS`) в сообщения исключения.  Это закрывает [#25862](https://github.com/ClickHouse/ClickHouse/issues/25862).  [#26172](https://github.com/ClickHouse/ClickHouse/pull/26172) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Исправлено некорректное отображение прогресса для `clickhouse-local` при использовании опции `--progress`.  Полоса прогресса будет очищена, когда достигнет OnClickListener.  То же самое, как это сделано для `clickhouse-client`.  Закрыто [#17484](https://github.com/ClickHouse/ClickHouse/issues/17484).
  * Добавлены настройки `merge_selecting_sleep_ms`.  [#26120](https://github.com/ClickHouse/ClickHouse/pull/26120) ([lthaooo](https://github.com/lthaooo)).
  * Удалено сложное использование Linux AIO с одним блоком предварительного чтения и заменено простым синхронным вводом-выводом с использованием `O_DIRECT`.  В предыдущих версиях настройка `min_bytes_to_use_direct_io` могла работать некорректно, если `max_threads` больше одного.Чтение с прямым вводом-выводом (которое отключено по умолчанию для запросов и включено по умолчанию для больших слияний) будет работать менее эффективно. Это закрывает [#25997](https://github.com/ClickHouse/ClickHouse/issues/25997). [#26003](https://github.com/ClickHouse/ClickHouse/pull/26003) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Очистка таблицы `Distributed` при выполнении запроса `REPLACE TABLE`. Разрешает [#24566](https://github.com/ClickHouse/ClickHouse/issues/24566) — не заменяет (или создает) таблицу при выполнении запроса `[CREATE OR] REPLACE TABLE ... AS SELECT`, если вставка в новую таблицу завершается ошибкой. Разрешает [#23175](https://github.com/ClickHouse/ClickHouse/issues/23175). [#25895](https://github.com/ClickHouse/ClickHouse/pull/25895) ([tavplubix](https://github.com/tavplubix)).

* Добавлена колонка `views` в систему `query_log`, содержащая названия материализованных или живых представлений, выполняемых запросом. Добавлена новая логическая таблица (`system.query_views_log`), которая содержит информацию о каждом представлении, выполненном во время запроса. Изменены правила выполнения представлений: при выбросе исключения во время выполнения представления любое уже запущенное представление продолжит работу до завершения. Это было поведением при параллельной обработке представлений (`parallel_view_processing=true`) и теперь это всегда одно и то же поведение. Зависимые представления теперь отслеживают прогресс чтения в контексте. [#25714](https://github.com/ClickHouse/ClickHouse/pull/25714) ([Raúl Marín](https://github.com/Algunenano)).* Выполнение асинхронного дренажа соединений после завершения распределённых запросов. Добавлена новая серверная настройка `max_threads_for_connection_collector`, которая указывает количество рабочих потоков для сбора соединений в фоновом режиме. Если бассейн заполнен, соединение будет откачиваться синхронно, но немного по-другому: оно откачивается после того, как мы отправляем EOS клиенту, запрос завершится успешно сразу после получения достаточного количества данных, а любое исключение будет записано в лог вместо выброса его клиенту. Добавлен параметр `drain_timeout` (по умолчанию  Yöntem 3 секунды). Откачивание соединения приведёт к его отключению при истечении времени ожидания. [#25674](https://github.com/ClickHouse/ClickHouse/pull/25674) ([Amos Bird](https://github.com/amosbird)).

Исправление:
  • Выполнение асинхронного дренажа соединений после завершения распределённых запросов. Добавлена новая серверная настройка max_threads_for_connection_collector, которая указывает количество рабочих потоков для сбора соединений в фоновом режиме. Если бассейн заполнен, соединение будет откачиваться синхронно, но немного по-другому: оно откачивается после того, как мы отправляем EOS клиенту, запрос завершится успешно сразу после получения достаточного количества данных, а любое исключение будет записано в лог вместо выброса его клиенту. Добавлен параметр drain_timeout (по умолчанию 3 секунды). Откачивание соединения приведёт к его отключению при истечении времени ожидания. #25674 (Amos Bird). ```* Поддержка нескольких включений в конфигурации. Теперь можно включать конфигурацию пользователей, удалённые серверы из нескольких источников. Просто поместите элемент <include /> с атрибутами `from_zk`, `from_env` или `incl`, и он будет заменён на значение подстановки. #24404 (nvartolomei).

  • Исправление множественного вставления блока в распределённую таблицу с insert_distributed_one_random_shard = 1. Это маргинальная функциональность. Отмечено как улучшение. #23140 (Amos Bird).

  • Поддержка ключей/значений типа LowCardinality и FixedString для типа Map. #21543 (hexiaoting).

  • Включение перезагрузки конфигурации локального диска. #19526 (taiyang-li).* Теперь KeyConditions могут корректно пропустить null-ключи, включая isNull и isNotNull. [https://github.com/ClickHouse/ClickHouse/pull/12433]. #12455 (Amos Bird).

Исправление ошибки

  • Исправлено несколько ошибок, которые могут привести к расхождению реплик. #27808 (tavplubix).

    • Устранена редкая ошибка в команде DROP PART, которая может привести к ошибке Unexpected merged part intersects drop range. #27807 (alesapin).
    • Предотвращены аварийные завершения работы при некоторых форматах данных, когда сообщение NULL (tombstone) поступает от Kafka. Закрывает #19255. #27794 (filimonov).
    • Исправлена фильтрация столбцов с использованием union distinct в подзапросах. Закрывает #27578. #27689 (Kseniia Sumarokova).
    • Исправлено неправильное преобразование типов при применении функций типа arrayHas к массивам LowCardinality Nullable различных неконкатенированных типов, таких как DateTime и DateTime64. В предыдущих версиях произошло неправильное преобразование. В новой версии это приведёт к исключению. Это закрывает #26330. #27682 (alexey-milovidov). * Исправлено создание незакрытых соединений при выполнении функции таблицы PostgreSQL. Закрывает #26088. #27662 (Kseniia Sumarokova).
    • Исправлен еще один случай ошибки Unexpected merged part ... intersecting drop range .... #27656 (tavplubix).
    • Исправлена ошибка с псевдонимированной колонкой в таблице Distributed. #27652 (Vladimir C).
    • После установки значения max_memory_usage* на значение отличное от нуля, было невозможно его сбросить обратно до 0 (неограниченного). Это исправлено. #27638 (tavplubix).
    • Исправлено переполнение времени при его конструировании из компонентов. Закрывает #27193. #27605 (Vasily Nemkov).
    • Устранено сбоев при материализации проекционного материала, когда некоторые части содержат пропущенные столбцы. Это исправляет проблему #27512. #27528 (Amos Bird).
    • Исправлена метрика BackgroundMessageBrokerSchedulePoolTask, возможно, неверно введенная. #27452 (Ben).
    • Устранены ошибки распределенных запросов с нулевыми шардами и агрегацией. #27427 (Азат Хузин).* Совместимость при отсутствии суффикса KB в /proc/meminfo. #27361 (Майк Кот).
    • Устранение некорректного результата для запроса с уровнем безопасности строки, PREWHERE и фильтром LowCardinality. Исправляет проблему #27179. #27329 (Николай Кошечков).
    • Исправлено некорректное валидирование идентификатора раздела для таблиц MergeTree, созданных с использованием старой синтаксической конструкции. #27328 (tavplubix).
    • Устранено некорректное поведение протокола MySQL при использовании параллельных форматов (CSV / TSV). #27326 (Рауль Марин).
    • Устранена ошибка "Не удалось найти столбец" для запросов с выборкой. Было введено в #24574. Исправляет проблему #26522. #27301 (Николай Кошечков).
    • Устранены ошибки типа "Ожидается ColumnLowCardinality, получено UInt8" или "Некорректное преобразование из типа DB::ColumnVector<char8_t> в DB::ColumnLowCardinality" для некоторых запросов с LowCardinality в PREWHERE. А также важнее всего, устранена проблема отсутствия пробелов в сообщении об ошибке. Исправляет проблему #23515. #27298 (Николай Кошечков).com/KochetovNicolai)).
    • Устранение ошибок при distributed_group_by_no_merge = 2 с distributed_push_down_limit = 1 или optimize_distributed_group_by_sharding_key = 1 с LIMIT BY и LIMIT OFFSET. #27249. (Азат Хужин). Эти являются редкими сочетаниями настроек, которыми никто не пользуется.
    • Устранение проблемы зависания мутации на недействительных разделах в нереплицируемом MergeTree. #27248 (Азат Хужин).
    • В случае амбивалентности лямбда-функции предпочитает свои аргументы другим псевдонимам или идентификаторам. #27235 (Рауль Марин).
    • Устранение проблемы с структурой столбцов в объединённом соединении, закрывает #27091. #27217 (Владимир Ц).
    • В редких случаях таблица system.detached_parts может содержать неверную информацию для некоторых частей, это исправлено. Исправляет #27114. #27183 (tavplubix).
    • Устранение ошибки незаполненной памяти в функциях multiSearch* при пустом массиве, закрывает #27169. #27181 (Владимир Ц).
    • Устранение проблем синхронизации в GRPCServer. Этот Pull Request исправляет #27024. #27064com/ClickHouse/ClickHouse/pull/27064) (Виталий Баранов).
    • Исправлен парсинг конфигурации для cache, complex_key_cache, ssd_cache, complex_key_ssd_cache. Опции allow_read_expired_keys, max_update_queue_size, update_queue_push_timeout_milliseconds, query_wait_timeout_milliseconds не парсились для словарей с типом отличным от cache. #27032 (Максим Кита).
    • Устранено возможное переполнение стека мутации из-за гонки с DROP_RANGE. #27002 (Азат Хужин).
    • Теперь идентификатор раздела в запросах типа ALTER TABLE ... PARTITION ID xxx проверяется на корректность. Исправляет #25718. #26963 (alesapin).
    • Устранена ошибка "Неизвестное имя столбца" при использовании нескольких JOIN в некоторых случаях, закрывает #26899. #26957 (Vladimir C).
  • Исправлено чтение пользовательских доменов верхнего уровня (TLD) (остановка обработки с меньшим буфером или большим файлом). #26948 (Azat Khuzhin).

  • Исправлена ошибка Отсутствуют колонки: 'xxx', когда колонка DEFAULT ссылается на другую непременную колонку без выражения DEFAULT. Исправляет #26591. #26900 (alesapin).* Исправление загрузки ключей словаря в library-bridge для источника словаря library. #26834 (Kseniia Sumarokova).

  • Параметры агрегирующей функции могут быть потеряны при применении некоторых комбинаторов, что приводит к исключениям типа Конвертация от AggregateFunction(topKArray, Array(String)) до AggregateFunction(topKArray(10), Array(String)) невозможна. Это исправлено. Исправляет #26196 и #26433. #26814 (tavplubix).

  • Добавление значения event_time_microseconds для REMOVE_PART в system.part_log. В предыдущих версиях это значение было не установлено. #26720 (Azat Khuzhin).

  • При выключении таблицы ReplicatedMergeTree данные не должны удаляться, чтобы избежать конфликтов между данными и метаданными. #26716 (nvartolomei).

  • Иногда команда SET ROLE могла работать некорректно, этот Pull Request её исправляет. #26707 (Vitaly Baranov).

  • Некоторые исправления параллельной форматировки (https://github.com/ClickHouse/ClickHouse/issues/26694). #26703 (Raúl Marín).

  • Исправление потенциального обращения к null указателю в оконных функциях. Это исправляет #25276. #26668 (Alexander Kuzmenkov).* Исправление конвертации файла истории clickhouse-client (при переходе с формата трехлетней давности версии clickhouse-client) если файл пустой. #26589 (Azat Khuzhin).

  • Исправление неправильных имён функций groupBitmapAnd/Or/Xor (может отображаться в некоторых случаях). Это исправляет. #26557 (Amos Bird).

  • Обновление проверки команды chown в точке входа контейнера clickhouse-server Docker. Это исправляет ошибку, при которой перезапуск кластера pod завершался неудачно (или истекало время) на Kubernetes. #26545 (Ky Li).

  • Исправление аварийного завершения работы RabbitMQ при выключении, если установка RabbitMQ не была запущена. Закрывает #26504. #26529 (Kseniia Sumarokova).

  • Исправление проблем с запросом CREATE DICTIONARY, если имя словаря или базы данных было заключено в кавычки. Закрывает #26491. #26508 (Maksim Kita).

  • Исправление разрешения имени столбца после переопределения псевдонимов столбцов. Это исправляет #26432. #26475 (Amos Bird).

  • Исправление аварийного завершения работы при размытии данных. Исправляет #22517. #26428com/ClickHouse/ClickHouse/pull/26428) (Nikolai Kochetov).

  • Исправление бесконечного блока потока без соединения в partial_merge_join. Закрывает #26325. #26374 (Vladimir C).

  • Исправление возможного аварийного завершения работы при входе как удалённого пользователя. Этот Pull Request исправляет #26073. #26363 (Vitaly Baranov).

  • Исправление optimize_distributed_group_by_sharding_key для нескольких колонок (что приводит к некорректному результату при optimize_skip_unused_shards=1/allow_nondeterministic_optimize_skip_unused_shards=1 и нескольких колонках в выражении ключа шардинга). #26353 (Азат Хужин).

  • Устранена редкая ошибка восстановления потерянной реплики, которая может привести к расхождению реплик. #26321 (tavplubix).

  • Исправлена ошибка декомпрессии zstd (при импорте/экспорте в формате zstd framing, который не связан с данными таблиц) при наличии последовательностей экранирования в конце внутреннего буфера. Закрывает #26013. #26314 (Ксения Сумарокова).

  • Исправлен логический недочёт при соединении с агрегатами, закрывает #26017. #26250 (Владимир C).* Удалён лишний переход на новую строку в столбце thread_name в таблице system.stack_trace. Это исправляет #24124. #26210 (alexey-milovidov).

  • Исправлена потенциальная ошибка завершения программы, если используется более одного выражения untuple. #26179 (alexey-milovidov).

  • Исключение больше не выбрасывается в toString для Nullable Enum, если Enum не имеет значения для нуля. Закрывает #25806. #26123 (Владимир C).

  • Исправлена некорректная sequence_id в пакетах протокола MySQL, отправляемых ClickHouse при возникновении исключения во время выполнения запроса. Это может вызвать сброс соединения клиента MySQL с сервером ClickHouse. Исправляет #21184. #26051 (tavplubix).

  • Исправление для случая, когда cutToFirstSignificantSubdomainCustom(), cutToFirstSignificantSubdomainCustomWithWWW(), firstSignificantSubdomainCustom() возвращают неверный тип для констант, что делает невозможной работу optimize_skip_unused_shards: #26041 (Азат Хужин).

  • Исправление ключа шардинга из колонки без функции для remote() (ранее запрос select * from remote('127.1', system.one, dummy) приводил к ошибке Неизвестный столбец: dummy, есть только столбцы). #25824 (Azat Khuzhin).* Устранение ошибок Не найден столбец ... и Отсутствует столбец ... при выборке из MaterializeMySQL. Исправляет #23708, #24830, #25794. #25822 (tavplubix).

  • Исправление optimize_skip_unused_shards_rewrite_in для типов данных, отличных от UInt64 (может выбирать неверные шарды в конечном итоге или выбрасывать ошибку Невозможно определить тип пустого кортежа или Функция tuple требует хотя бы одного аргумента). #25798 (Azat Khuzhin).

Улучшения сборки/тестирования/пакетирования* Теперь мы запускаем тесты с состоянием и без состояния в случайных часовых поясах. Исправляет #12439. ЧТЕНИЕ строки как datetime и ЗАПИСЬ datetime как строки в формате Protobuf теперь УЧИТАЮТ часовой пояс. ЧТЕНИЕ UInt16 как datetime в форматах Arrow и Parquet теперь РАССМАТРИВАЕТ его как дату и ЗАТем преобразует в datetime с учётом часового пояса datetime, так как дата сериализуется в Arrow и Parquet как UInt16. GraphiteMergeTree теперь УЧИТАЮТ часовой пояс при округлении времени. Исправляет #5098. Автор: @alexey-milovidov. #15408 (alesapin).

  • clickhouse-test поддерживает SQL-тесты с использованием шаблонов Jinja2. #26579 (Vladimir C).

  • Добавлена поддержка сборки с помощью clang-13. Это закрывает #27705. #27714 (alexey-milovidov). #27777 (Sergei Semin).

  • Добавлены опции CMake для сборки с или без конкретного набора команд процессора. Это относится к #17469 и #27509. #27508 (alexey-milovidov).

  • Исправлено связывание вспомогательных программ при использовании динамических библиотек. #26958 (Raúl Marín).com/Algunenano)).

  • Обновление RocksDB до версии 2021-07-16. #26411 (alexey-milovidov).### Выпуск ClickHouse v21.8, 2021-08-12

Примечания по обновлению

  • Новая версия использует тип данных Map для таблиц системных логов (system.query_log, system.query_thread_log, system.processes, system.opentelemetry_span_log). Эти таблицы будут автоматически созданы с новыми типами данных. Виртуальные столбцы создаются для поддержки старых запросов. Закрывает #18698. #23934, #25773 (hexiaoting, sundy-li, Maksim Kita). Если вы хотите выполнить понижение версии от 21.8 до более ранних версий, вам потребуется вручную очистить системные таблицы с логами. Посмотрите каталог /var/lib/clickhouse/data/system/*_log.

Новые возможности

  • Добавлена поддержка части стандарта SQL/JSON. #24148 (l1tsolaiki, Ксения Сумарокова).
  • Введено сбор общих системных метрик (в system.asynchronous_metrics и system.asynchronous_metric_log) по использованию процессора, использованию дискового пространства, использованию памяти, вводу-выводу, сети, файлам, средней нагрузке, частоте процессора, сенсорам температуры, счетчикам EDAC, времени работы системы; также добавлены метрики о джиттере планирования и затраченном времени на сбор метрик. Это работает аналогично atop в ClickHouse и позволяет получить доступ к данным мониторинга даже если нет установленных дополнительных инструментов.Закрыто #9430. #24416 (alexey-milovidov, Егор Леванков).
    • Добавлен движок таблиц MaterializedPostgreSQL и баз данных. Этот движок баз данных позволяет реплицировать всю базу данных или любую её часть. #20470 (Ксения Сумарокова).
    • Добавлены новые функции leftPad(), rightPad(), leftPadUTF8(), rightPadUTF8(). #26075 (Виталий Баранов).
    • Добавлен ключевое слово FIRST к команде ADD INDEX для возможности добавления индекса в начало списка индексов. #25904 (xjewer).
    • Введен новый столбец system.data_skipping_indices, содержащий информацию о существующих индексах для пропуска данных. Закрыто #7659. #25693 (Дмитрий Новик).
    • Добавлены функции bin и unbin. #25609 (zhaoyu).
    • Поддержана работа с типами данных Map, UInt128, Int128, UInt256, Int256 в функциях mapAdd и mapSubtract. #25596 (Ильдус Курбангалiev).
    • Поддержана конструкция DISTINCT ON (columns), закрыто #25404. #25589 (Цзицзе Лю).* Добавлена возможность сброса пользовательского параметра до значения по умолчанию и удаление его из метаданных таблицы. Это позволяет откатить изменения без знания значений системы/конфигурации по умолчанию. Закрывает #14449. #17769 (xjewer).
    • Отображение конвейеров в виде графиков в веб-интерфейсе при отправке запроса EXPLAIN PIPELINE graph = 1. #26067 (alexey-milovidov). #### Улучшения производительности* Сборка агрегатных функций. Используйте опцию compile_aggregate_expressions, чтобы включить её. #24789 (Maksim Kita).
  • Улучшение задержек коротких запросов, требующих чтения из таблиц с большим количеством столбцов. #26371 (Anton Popov).#### Другие улучшения
  • Используйте тип данных Map для таблиц логов системы (system.query_log, system.query_thread_log, system.processes, system.opentelemetry_span_log). Эти таблицы будут автоматически созданы с новыми типами данных. Виртуальные столбцы создаются для поддержки старых запросов. Закрывает #18698. #23934, #25773 (hexiaoting, sundy-li, Maksim Kita).
  • Для словарей с ключом, содержащим только одно атрибут, позволяют не оборачивать выражение ключа в кортеж для функций dictGet, dictHas. #26130 (Maksim Kita).
  • Реализованы функции bin/hex из состояний AggregateFunction. #26094 (zhaoyu).
  • Поддержана возможность использования аргументов типа UUID для функций empty и notEmpty. UUID считается пустым, если он состоит полностью из нулей (пустой UUID). Закрывает #3446. #25974 (zhaoyu).
  • Добавлена поддержка SET SQL_SELECT_LIMIT в протоколе MySQL. Закрывает #17115. #25972 (Kseniia Sumarokova).
  • Увеличено инструментирование взаимодействия сети: добавлены счетчики для получаемых/отправленных байтов; добавлены метрики для получения/передачи. Добавлена недостающая документация. Закрывает #5897.

Здесь исправлены пунктуационные ошибки, добавлены пропущенные пробелы и устранены проблемы с согласованием слов.com/ClickHouse/ClickHouse/issues/5897). #25962 (alexey-milovidov).

  • Добавлена настройка optimize_move_to_prewhere_if_final. Если запрос имеет FINAL, оптимизация move_to_prewhere будет активирована только при условии, что оба optimize_move_to_prewhere и optimize_move_to_prewhere_if_final включены. Закрывает #8684. #25940 (Kseniia Sumarokova).

  • Разрешено использование сложных заключённых в кавычки идентификаторов объединённых таблиц. Закрывает #17861. #25924 (alexey-milovidov).

  • Добавлена поддержка Юникода (например, китайских, кириллических символов) в типах данных Nested. Закрыто #25594. #25923 (alexey-milovidov).

  • Разрешено использование функций quantiles* с aggregate_functions_null_for_empty. Закрыто #25892. #25919 (alexey-milovidov).

  • Разрешены произвольные константные выражения (например, 1 + 2) как параметры для параметрических агрегатных функций, а также использование параметров запроса (в параметризованных запросах типа {param:UInt8}) внутри этих функций. Закрыто #11607. #25910 (alexey-milovidov).* Исключение теперь корректно выбрасывается при попытке парсинга некорректной даты. Закрыто #6481. #25909 (alexey-milovidov).

  • Добавлена поддержка множественного включения в конфигурацию. Теперь можно включать конфигурации пользователей и удалённых серверов из нескольких источников. Просто добавьте элемент <include /> со значением атрибута from_zk, from_env или incl, и он будет заменён на соответствующее значение. #24404 (nvartolomei).

  • Добавлена поддержка запросов с колонкой, названием которой "null" (она должна быть указана в обратных кавычках или двойных кавычках) и ON CLUSTER. Закрыто #24035. #25907 (alexey-milovidov).

  • Добавлена поддержка типов данных LowCardinality, Decimal и UUID для функции JSONExtract. Закрыто #24606. #25900 (ksenii-sumarokova).

  • Реализован переход файла истории от формата readline до формата replxx. #25888 (Азат Хужин).

  • Исправлено возможное пересечение частей после выполнения команды DROP PART или фонового удаления пустой части. #25884 (alesapin).

  • Улучшена работа с потерянными частями для таблиц типа ReplicatedMergeTree.Исправлена редкая несоответствующая консистентность в ReplicationQueue. Исправляет #10368. #25820 (alesapin).

  • Разрешено запускать clickhouse-client с непрочитаемым рабочим каталогом. #25817 (ianton-ru).

  • Исправлено сообщение об ошибке «Нет доступных колонок» для хранилища Merge. #25801 (Азат Хужин).

  • Теперь движок MySQL поддерживает обмен комментариями столбцов между MySQL и ClickHouse. #25795 (Костантин Сторожук).

  • Исправлено несовместимое поведение константы GROUP BY при работе с пустыми наборами данных. Закрывает #6842. #25786 (Ксения Сумарокова).

  • Отменены уже выполняющиеся слияния в разделе на DROP PARTITION и TRUNCATE для ReplicatedMergeTree. Решает #17151. #25684 (tavplubix).

  • Поддержка типа данных ENUM для MaterializeMySQL. #25676 (Костантин Сторожук).

  • Поддержка материализованных и псевдонимированных столбцов в JOIN, закрывает #13274. #25634 (Владимир C).* Исправлен потенциальный логический распределённый конфликт между командами ALTER TABLE ... DETACH и фоновым слиянием. #25605 (Азат Хужин).

  • Добавлена метрика NetworkReceiveElapsedMicroseconds, которая корректно отражает время, затраченное на ожидание данных от клиента до INSERT. Закрывает #9958. #25602 (alexey-milovidov).

  • Поддержка команды TRUNCATE TABLE для S3 и HDFS. Закрыто #25530. #25550 (Ксения Сумарокова).

  • Поддержка динамической перезагрузки конфигурации для изменения количества потоков в пуле выполнения фоновых задач (слияний, мутаций, загрузок). #25548 (Никита Михайлов).

  • Разрешено извлечение сложных элементов как строк с помощью JSONExtract. Это реализует #25414. #25452 (Амос Бирд).

  • Поддержка регулярных выражений в аргументе Database для StorageMerge. Закрыто #776. #25064 (flynn).

  • Веб-интерфейс: если значение выглядит как URL, автоматически создаётся ссылка. #25965 (alexey-milovidov).* Добавлена возможность запуска sudo service clickhouse-server start на системах с systemd, таких как CentOS 8. Закрыто #14298. Закрыто #17799. #25921 (alexey-milovidov).

Исправленные ошибки

  • Исправлено некорректное выполнение команды SET ROLE в некоторых случаях. #26707 (Vitaly Baranov).

  • Устранена возможность обращения к nullptr при использовании оконных функций. Исправление #25276. #26668 (Alexander Kuzmenkov).

  • Исправлены названия функций groupBitmapAnd/Or/Xor. Исправление #26557 (Amos Bird).

  • Устранено аварийное завершение работы RabbitMQ при выключении, если настройка RabbitMQ не была запущена. Закрыто #26504. #26529 (Kseniia Sumarokova).

  • Исправлены проблемы с запросом CREATE DICTIONARY, если имя словаря или базы данных было заключено в кавычки. Закрыто #26491. #26508 (Maksim Kita).

  • Исправлена проблема с разрешением имени после переопределения псевдонимов столбцов. Исправление #26432. #26475 (Amos Bird). * Устранена проблема бесконечной передачи блока без соединения в partial_merge_join. Закрыто #26325. #26374 (Vladimir C).

    • Устранено аварийное завершение работы при входе от имени удалённого пользователя. Исправление #26073. #26363 (Vitaly Baranov).
    • Исправлено поведение optimize_distributed_group_by_sharding_key для нескольких колонок (что приводит к неверному результату при optimize_skip_unused_shards=1/allow_nondeterministic_optimize_skip_unused_shards=1 и нескольких колонках в выражении ключа шардинга). #26353 (Azat Khuzhin).
    • Преобразование (CAST) из типа Date в тип DateTime (или DateTime64) не учитывало часовой пояс типа DateTime. Это также может влиять на сравнение между Date и DateTime. Вывод общего типа для Date и DateTime также не учитывал соответствующий часовой пояс. Он повлиял на результаты выполнения функции if и конструирования массива. Закрывает #24128. #24129 (Maksim Kita).* Устранена редкая ошибка восстановления потерянной реплики, которая может привести к расхождению реплик. #26321 (tavplubix).
  • Устранена ошибка декомпрессии zstd в случае наличия последовательностей экранирования в конце внутреннего буфера. Закрывает #26013. #26314 (Kseniia Sumarokova).

  • Устранена логическая ошибка при соединении с агрегатами, закрывает #26017. #26250 (Vladimir C).

  • Удалён лишний переход строки в столбце thread_name таблицы system.stack_trace. Исправлено #24124. #26210 (alexey-milovidov).

  • Устранена ошибка joinGet с колонками типа LowCarinality, закрывает #25993. #26118 (Vladimir C).

  • Устранена возможность аварийного завершения работы функции pointInPolygon, если настройка validate_polygons отключена. #26113 (alexey-milovidov).

  • Устранена ошибка выброса исключения при проходе по несуществующему удалённому каталогу. #26087 (ianton-ru).* Устранено редкое аварийное завершение работы сервера из-за вызова abort в клиенте ZooKeeper. Исправлено #25813. #26079 (alesapin).* Устранена неправильная оценка количества потоков для правого подзапроса соединения в некоторых случаях. Закрывает #24075. #26052 (Vladimir C).

  • Устранена некорректная установка sequence_id в пакетах протокола MySQL, отправляемых ClickHouse при возникновении исключения во время выполнения запроса. Это может вызвать сброс соединения клиента MySQL с сервером ClickHouse. Исправляет #21184. #26051 (tavplubix).

  • Исправлен возможный расхождение заголовков при использовании нормального проектирования с PREWHERE. Исправление #26020. #26038 (Amos Bird).

  • Исправлена отображаемая форма типа Map с целочисленными ключами в JSON. #25982 (Антон Попов).

  • Исправлен потенциальный deadlock во время разбора стека профилировщика запросов. Исправление #25968. #25970 (Максим Кита).

  • Исправлен сбой при вызове dictGet() с некорректными аргументами. #25913 (Виталий Баранов).* Исправлена аутентификация scram-sha-256 для движков PostgreSQL. Закрывает #24516. #25906 (Ксения Сумарокова).* Исправлено использование чрезмерно длительной задержки для фоновых задач, когда фоновый пулинг заполнен. Исправляет #25836. #25893 (alesapin).* Исправлено управление исключениями ARM с непредопределенным размером страницы. Исправляет #25512, #25044, #24901, #23183, #20221, #19703, #19028, #18391, #18121, #17994, #12483. #25854 (Maksim Kita).

  • Исправлено значение sharding_key из колонки без использования функции для remote() (ранее запрос SELECT * FROM remote('127.1', system.one, dummy) приводил к ошибке Неизвестный столбец: dummy, есть только столбцы .). #25824 (Azat Khuzhin).

  • Устранены ошибки Not found column ... и Missing column ... при выборке из MaterializeMySQL. Исправляет #23708, #24830, #25794. #25822 (tavplubix).

  • Исправлена проблема с optimize_skip_unused_shards_rewrite_in для типов данных, отличных от UInt64 (может выбрать неверные шарды в конечном итоге или выбросить ошибку Невозможно определить тип пустого кортежа или Функция tuple требует хотя бы одного аргумента). #25798 (Azat Khuzhin).* Исправлена редкая ошибка с запросом DROP PART для таблиц типа ReplicatedMergeTree, которая может привести к сообщению об ошибке Unexpected part merge crossing the deletion range. #25783 (alesapin).

  • Исправлена ошибка в TTL с выражением GROUP BY, которое отказывается выполнять TTL после первой выполненной части. #25743 (alesapin).

  • Разрешено использование StorageMerge для доступа к таблицам с псевдонимами. Закрывает #6051. #25694 (Kseniia Sumarokova).

  • Исправлено медленное соединение словарей в некоторых случаях, закрывает #24209. #25618 (Vladimir C).

  • Исправлено изменение столбцов с помощью ALTER MODIFY COLUMN, участвующих в выражениях TTL. #25554 (Anton Popov).

  • Исправлено утверждение в PREWHERE с типом данных, отличным от UInt8, закрывает #19589. #25484 (Vladimir C).

  • Устранены некоторые сбои msan после размытия. Исправляет #22517. #26428 (Nikolai Kochetov).

  • Обновление проверки команды chown в точке входа контейнера clickhouse-server.Это исправляет ошибку "cluster pod restart failed (или timeout)" в Kubernetes. #26545 (Ky Li). ### Выпуск ClickHouse v21.7, 2021-07-09#### Неразрывные изменения

  • Улучшена производительность запросов с явно определёнными большими наборами значений. Добавлено совместимое настроение legacy_column_name_of_tuple_literal. Логично установить его значение в true, при выполнении поэтапного обновления кластера от версий ниже 21.7 до любой более поздней версии. В противном случае распределённые запросы с явно определёнными наборами значений в условии IN могут завершиться ошибкой во время обновления. #25371 (Anton Popov).

  • Неразрывные изменения максимального размера буфера в clickhouse-keeper (экспериментальная альтернатива ZooKeeper). Лучше сделать это сейчас (до запуска в продакционной среде), чем позже. #25421 (alesapin).#### Новая функциональность

  • Поддержка конфигурации в формате YAML как альтернативы XML. Это закрывает #3607. #21858 (BoloniniD).

  • Предоставляет способ восстановления реплицированной таблицы, когда данные могут присутствовать, но метаданные ZooKeeper потеряны. Разрешает #13458. #13652 (Mike Kot).

  • Поддерживает структуры и карты в форматах Arrow/Parquet/ORC и словари в входящих/выходящих форматах Arrow. Вводит новое значение output_format_arrow_low_cardinality_as_dictionary. #24341 (Kruglov Pavel).

  • Добавлена поддержка типа Array в словарях. #25119 (Maksim Kita).

  • Добавлен метод bitPositionsToArray. Закрывает #23792. Автор Kevin Wan. #25394 (Maksim Kita).

  • Добавлен метод dateName для возврата названий таких как "Пятница" или "Апрель". Автор Daniil Kondratyev. #25372 (Maksim Kita).

  • Добавлен метод toJSONString для сериализации столбцов в их JSON представление. #25164 (Amos Bird).

  • Теперь query_log имеет два новых поля: initial_query_start_time, initial_query_start_time_microsecond, которые записывают время начала распределённого запроса при его наличии. #25022com/ClickHouse/ClickHouse/pull/25022) (Amos Bird).

  • Добавлен агрегирующий метод segmentLengthSum. #24250 (flynn).

  • Добавлен новый булевый параметр prefer_global_in_and_join, который по умолчанию делает все IN/JOIN глобальными. #23434 (Amos Bird).

  • Поддерживается запрос ALTER DELETE для движка таблиц Join. #23260 (foolchi).

  • Добавлено агрегатное функциональное выражение quantileBFloat16, а также соответствующие ему quantilesBFloat1s и medianBFloat16. Это очень простой и быстрый оценщик квартилей с относительной ошибкой не более 0,390625%. Это закрывает задачу #16641. #23204 (Ivan Novitskiy).

  • Реализовано функциональное выражение sequenceNextNode(), полезное для анализа потока данных. #19766 (achimbab).

Экспериментальная функциональность* Добавлена поддержка виртуальной файловой системы поверх HDFS. #11058 (overshov) (Ксения Сумарокова).

  • Теперь clickhouse-keeper (экспериментальный альтернативный вариант ZooKeeper) поддерживает ACL типа "digest", аналогичные ZooKeeper. #24448 (alesapin).

Улучшение производительности* Добавлена оптимизация, которая преобразует некоторые функции в чтение подколонок для сокращения количества считываемых данных. Например, выражение col IS NULL преобразуется в чтение подколонки col.null. Оптимизация может быть включена путём установки параметра optimize_functions_to_subcolumns, который по умолчанию отключен. #24406 (Антон Попов).

  • Реализовано перезаписывание нескольких колонок в возможные псевдонимы. Это может позволить лучшую оптимизацию, такую как проекции. #24405 (Амос Бёрд).
  • Индекс типа bloom_filter теперь можно использовать для выражений с функцией hasAny и константными массивами. Это закрывает: #24291. #24900 (Василий Немков).
  • Добавлен экспоненциальный откат для перезапуска попытки чтения при пустых очередях RabbitMQ. (ClickHouse поддерживает импорт данных из RabbitMQ). Закрывает #24340. #24415 (Ксения Сумарокова).#### Улучшения

Разрешено ограничивать пропускную способность для репликации. Добавлены две настройки Replicated*MergeTree: max_replicated_fetches_network_bandwidth и max_replicated_sends_network_bandwidth, которые позволяют ограничить максимальную скорость реплицированных запросов/отправок для таблицы. Добавлены две глобальные настройки (в профиле пользователя default): max_replicated_fetches_network_bandwidth_for_server и max_replicated_sends_network_bandwidth_for_server, которые ограничивают максимальную скорость репликации для всех таблиц. Настройки не выполняются с абсолютной точностью. Деактивированы по умолчанию. Исправляет #1821. #24573 (alesapin).

Ограничение ресурсов и изоляция для мостов ODBC и библиотеки. Используется отдельная группа и пользователь clickhouse-bridge для процессов моста. Установлена настройка oom_score_adj, чтобы мосты были первыми объектами для убийства при недостатке памяти. Установлена максимальная размер RAM в 1 ГБ. Закрывает #23861. #25280 (Kseniia Sumarokova).

Добавлен автономный символический ссылка clickhouse-keeper к основному исполняемому файлу clickhouse. Теперь возможно запустить координацию без основного сервера ClickHouse. #24059 (alesapin).* Использование глобальных настроек для запросов к VIEW. Исправлено поведение, при котором запросы к VIEW используют локальные настройки, что может привести к ошибкам, если настройки на CREATE VIEW и SELECT различаются. В настоящее время VIEW не будет использовать эти модифицированные настройки, но вы всё ещё можете передать дополнительные настройки в разделе SETTINGS запроса CREATE VIEW. Закрывает #20551. #24095 (Vladimir).

  • При запуске сервера, части с некорректным идентификатором раздела больше никогда не будут удалены, а всегда отсоединены. #25070. #25166 (Nikolai Kochetov).* Увеличен размер фонового пула расписаний до 128 (background_schedule_pool_size). Это позволяет избежать зависания очереди репликации при медленном соединении с ZooKeeper. #25072 (alesapin).

    • Добавлено новое свойство слияния дерева max_parts_to_merge_at_once, которое ограничивает количество частей, которые могут быть объединены в фоновом режиме одновременно. Это не влияет на запрос OPTIMIZE FINAL. Исправляет #1820. #24496 (alesapin).

    • Разрешено использование оператора NOT IN в секции по разделению. #24894 (Amos Bird).

    • Распознание адресов IPv4 типа 127.0.1.1 как локальных. Это спорный вопрос и закрывает #23504. Майкл Филимонов протестирует эту функцию. #24316 (alexey-milovidov).

    • База данных ClickHouse, созданная с помощью MaterializeMySQL (это экспериментальная функция), теперь содержит все комментарии столбцов из базы данных MySQL, которую она материализует. #25199 (Storozhuk Kostiantyn).

    • Добавлены новые настройки (connection_auto_close/connection_max_tries/connection_pool_size) для движка хранения MySQL. #24146 (Azat Khuzhin).

    • Улучшена скорость запуска движка Distributed. #25663 (Azat Khuzhin).* Улучшение для таблиц Distributed. Удаление реплик из dirname для внутреннего реплицирования true (позволяет выполнить INSERT в Distributed с кластера от любого количества реплик, ранее поддерживалось только 15 реплик, всё больше приведёт к ошибке ENAMETOOLONG при создании директории для асинхронных блоков). #25513 (Azat Khuzhin).

  • Поддержан тип Interval для LowCardinality. Это необходимо для промежуточных значений некоторых выражений. Закрывает #21730. #25410 (Vladimir).

  • Добавлен оператор сравнения времени == для функций sequenceMatch и sequenceCount. Например: sequenceMatch('(? 1)(? t == 1)(? 2)')(time, data = 1, data = 2). #25299 (Christophe Kalenzaga).

  • Добавлены настройки http_max_fields, http_max_field_name_size, http_max_field_value_size. #25296 (Ivan).

  • Добавлена поддержка функции if с типами данных Decimal и Int в её ветвях. Это закрывает #20549. Это закрывает #10142. #25283 (alexey-milovidov).

  • Обновлено сообщение приветствия в clickhouse-client и отображено сообщение при переподключении. Это закрывает #10577. #25281 (alexey-milovidov).

  • Улучшена трассировка памяти в агрегирующей функции topK.Это закрывает #25259. #25260 (alexey-milovidov).

  • Исправлено значение topLevelDomain для доменов IDN (например, example.рф). Ранее для таких доменов возвращалась пустая строка. #25103 (Azat Khuzhin).

  • Определение версии ядра Linux выполняется в реальном времени (для работы вложенного epoll, что требуется для async_socket_for_remote/use_hedged_requests, иначе удалённые запросы могут зависнуть). #25067 (Azat Khuzhin).

  • Для распределённых запросов, когда optimize_skip_unused_shards=1, теперь можно пропускать шард с условием типа (sharding key) IN (одноэлементный кортеж). Кортежи с многими элементами уже поддерживались. Кортеж с одним элементом не работал, так как он парсился как литерал. #24930 (Amos Bird).

  • Улучшены лог-сообщения ошибок S3, больше нет двойных пробелов в случае пустых ключей и бакетов. #24897 (Vladimir Chebotarev).

  • Некоторым запросам требуется многопроходный семантический анализ. В этом случае попробуйте использовать повторно созданные множества для IN. #24874 (Amos Bird).

  • Уважайте max_distributed_connections для insert_distributed_sync (иначе для больших кластеров и синхронной вставки может закончиться max_thread_pool_size). #24754.com/ClickHouse/ClickHouse/pull/24754) (Azat Khuzhin).

    • Избегайте скрытия ошибок типа Limit for rows or bytes to read exceeded для скалярных подзапросов. #24545 (nvartolomei).
    • Сделайте парсер String-to-Int строже, чтобы toInt64('+') вызывал исключение. #24475 (Amos Bird).
    • Если SSD_CACHE создаётся с помощью DDL запроса, он может создаваться только внутри директории user_files. #24466 (Maksim Kita).
    • Поддержка PostgreSQL для указания нестандартной схемы для запросов вставки. Закрывает #24149. #24413 (Kseniia Sumarokova).
    • Исправление разрешения IPv6 адресов (то есть исправляет SELECT * FROM remote('[::1]', system.one)). #24319 (Azat Khuzhin).
    • Исправление пробелов в конце строки в FROM для подзапросов в многострочном режиме, а также незначительное изменение вывода запросов в более удобочитаемый вид. #24151 (Azat Khuzhin).
    • Улучшение для распределённых таблиц. Добавлено возможность разделения распределённого пакета при сбоях (например, из-за ограничений памяти или повреждений), под управлением distributed_directory_monitor_split_batch_on_failure (отключено по умолчанию). #23864 (Azat Khuzhin).* Обработка столкновений имен колонок для движка таблиц Join. Закрывает #20309. #23769 (Vladimir).
  • Отображение прогресса для движка таблиц File в clickhouse-local и при запросе INSERT в clickhouse-client, когда данные передаются через stdin. Закрывает #18209. #23656 (Kseniia Sumarokova).

  • Исправление ошибок и улучшение clickhouse-copier. Разрешено копирование таблиц с различными (но совместимыми) схемами. Закрывает #9159. Добавлен тест для копирования ReplacingMergeTree. Закрывает #22711. Поддержка TTL для столбцов и индексов пропуска данных. Это просто удаляет его для создания внутренней распределенной таблицы (подлежащей таблицы будет иметь TTL и индексы пропуска). Закрывает #19384. Разрешено копирование столбцов MATERIALIZED и ALIAS. Есть некоторые случаи, когда это может быть полезным (например, если этот столбец находится в PRIMARY KEY). Теперь это можно разрешить, установив свойство allow_to_copy_alias_and_materialized_columns в конфигурации задачи на значение true. Закрывает #9177. Закрывает #11007. Закрывает #9514.Добавлена возможность удаления разделов целевой таблицы в конфигурации задачи перед перемещением вспомогательных таблиц. Закрывает #20957. Удаление запроса OPTIMIZE DEDUPLICATE. Этот хак был необходим, так как ALTER TABLE MOVE PARTITION повторялся много раз, а простые таблицы MergeTree не имеют дедубликации. Закрывает #17966. Запись прогресса в узел ZooKeeper по пути task_path + /status в формате JSON. Закрывает #20955. Поддержка ReplicatedTables без аргументов. Закрывает #24834. #23518 (Nikita Mikhaylov).* Добавлено время ожидания с обратной связью между попытками чтения из S3. #23461 (Vladimir Chebotarev).

  • Уважаем insert_allow_materialized_columns (позволяет материализованные столбцы) при вставке в Distributed таблицу. #23349 (Azat Khuzhin).* Добавлена возможность применения ограничения LIMIT для распределённых запросов. #23027 (Azat Khuzhin).

  • Устранено проблему нулевой копии репликации с несколькими томами S3 (Исправляет #22679). #22864 (ianton-ru).

  • Реальный номер порта, привязанный при запросе доступного порта от операционной системы, теперь отображается в сообщении журнала. #25569 (bnaecker).

  • Исправлен случай, когда иногда преобразование массивов PostgreSQL приводило к типу данных String вместо многомерного массива, поскольку attndims работал некорректно в некоторых случаях. Закрывает #24804. #25538 (Kseniia Sumarokova).

  • Исправлена конвертация DateTime с часовым поясом для MySQL, PostgreSQL, ODBC. Закрывает #5057. #25528 (Kseniia Sumarokova).

  • Команда KILL MUTATION для разных таблиц теперь различается (фиксирует неожиданную ошибку Cancelled mutating parts). #25025 (Azat Khuzhin).

  • Возможность объявления диска S3 в корне бакета (виртуальная файловая система S3 — это экспериментальная функция, находящаяся в разработке). #24898 (Vladimir Chebotarev). * Включение чтения подколонок (например, компонентов Tuple) для распределённых таблиц. #24472 (Антон Попов).

    • Функциональность для протокола совместимости с MySQL: сделать функцию user возвращать правильный вывод. Закрывает #25697. #25697 (sundyli).

Исправление ошибок

  • Улучшение обратной совместимости. Используйте старую версию функции модуля при использовании в ключе раздела. Закрывает #23508. #24157 (Ксения Сумарокова).

  • Исправление крайне редкого бага на серверах с низкими объёмами памяти, который может привести к невозможности выполнения слияний без перезапуска. Возможно исправляет #24603. #24872 (Алексей Сапин).

  • Исправление крайне редкой ошибки Tagging already tagged part в очереди репликации во время параллельного ALTER MOVE/REPLACE PARTITION. Возможно исправляет #22142. #24961 (Алексей Сапин).

  • Исправление потенциального аварийного завершения работы при вычислении состояния агрегирующей функции путём агрегации состояний других агрегирующих функций (не практический случай использования). Смотрите #24523. #25015.com/ClickHouse/ClickHouse/pull/25015) (alexey-milovidov).

  • Исправлено поведение запроса SYSTEM RESTART REPLICA или SYSTEM SYNC REPLICA, который не завершался. Это было обнаружено на сервере с очень малым объёмом оперативной памяти. #24457 (Nikita Mikhaylov).

  • Исправлен баг, который может привести к зависанию клиента ZooKeeper внутри clickhouse-server. #24721 (alesapin).

  • Если соединение с ZooKeeper было потеряно и реплика была клонирована после восстановления соединения, её очередь репликации могла содержать устаревшие записи. Исправлено провалившееся утверждение при наличии пересекающихся виртуальных частей в очереди репликации. Может случаться крайне редко, если какая-то часть данных была потеряна. В лог вместо завершения программы выводится сообщение об ошибке. #24777 (tavplubix).

  • Исправлено потерянное условие WHERE в оптимизации push-down для плана запроса (по умолчанию query_plan_filter_push_down = 1). Исправляет #25368. #25370 (Nikolai Kochetov).

  • Исправлена ошибка, которая может привести к перекрытию частей после слияний с TTL: Часть all_40_40_0 перекрывается частью all_40_40_1, но должна была бы быть слита в all_40_41_1. Это должно случаться крайне редко. #25549/com/ClickHouse/ClickHouse/pull/25549) (alesapin).

  • При потере соединения с ZooKeeper таблица ReplicatedMergeTree могла ждать завершения фоновых операций перед попыткой повторной установки соединения. Теперь эта проблема исправлена, фоновые операции теперь принудительно прекращаются. #25306 (tavplubix).

  • Исправлено сообщение об ошибке Ключевое выражение содержит сравнение между непереводимыми типами данных для запросов с ARRAY JOIN, если массив используется в первичном ключе. Исправляет #8247. #25546 (Антон Попов).

  • Исправлены неверные общие данные для запроса WITH TOTALS и WITH FILL. Исправляет #20872. #25539 (Антон Попов).

  • Исправлен конфликт данных при выполнении запроса system.clusters одновременно с перезагрузкой конфигурации кластера. #25737 (Amos Bird).

  • Устранено исключение Нет такого файла или каталога при перемещении таблицы Distributed между базами данных. Исправляет #24971. #25667 (tavplubix).

  • Операция REPLACE PARTITION могла быть проигнорирована в редких случаях, если исходная партиция была пустой. Проблема исправлена. Исправляет #24869.com/ClickHouse/ClickHouse/issues/24869). #25665 (tavplubix).

  • Исправлена ошибка в движке базы данных Replicated, которая могла редко вызывать пропуск очередного DDL-запроса некоторыми репликами. #24805 (tavplubix).

  • Исправлено обращение к NULL указателю в EXPLAIN AST при отсутствии запроса. #25631 (Николай Кошечков).

  • Исправлено ожидание автоматического удаления пустых частей, что может привести к полной заполненности фонового пула и зависанию репликации. #23315 (Антон Попов).* Восстановление таблицы, хранящейся в виртуальной файловой системе S3 (это экспериментальная функция, не готовая для использования в производстве). #25601 (ianton-ru).

  • Устранение ошибки доступа к пустому указателю в формате Arrow, используемом с типом данных Decimal256. Добавлена поддержка типа данных Decimal256 для формата Arrow. #25531 (Павел Круглов).

  • Устранение избыточного подчеркивания перед названиями предварительно обработанных конфигурационных файлов. #25431 (Виталий Баранов).

  • Устранение ошибки в программе clickhouse-copier: Segfault при отсутствии ключа шардинга в конфигурации задачи для программы копирования. #25419 (Никита Михайлов).

  • Устранение ошибки в преобразователе столбцов REPLACE, используемом в DDL, путём правильного цитирования форматированного запроса. Это исправляет проблему #23925. #25391 (Амос Бирд).

  • Устранение возможности непредсказуемого поведения функции quantileDeterministic и аналогичных функций. Это закрывает проблему #20480. #25313 (Алексей Миловидов).* Поддержка SimpleAggregateFunction(LowCardinality) для SummingMergeTree. Исправляет проблему #25134. #25300 (Николай Кошечков).

  • Устранение логической ошибки с сообщением об ошибке "не могу суммировать Array/Tuple в min/maxMap". #25298 (Павел Круглов).* Устранено поведение ошибки Bad cast from type DB::ColumnLowCardinality to DB::ColumnVector<char8_t> для запросов, где аргумент LowCardinality использовался в IN (эта ошибка появилась в версии 21.6). Исправляет проблему #25187. #25290 (Николай Кошечков).

    • Исправлено некорректное поведение joinGetOrNull с незаполненными столбцами. Это исправляет #24261. #25288 (Amos Bird).

    • Исправлена ошибка в работе больших целых чисел и отчет UBSan. В предыдущих версиях CAST(1e19 AS UInt128) возвращало ноль. #25279 (alexey-milovidov).

    • Устранена ошибка при вставке подмножества столбцов с использованием формата CSVWithNames. Исправляет #25129. #25169 (Никита Миходялов).

    • Отказ от использования проекции таблицы для SELECT с FINAL. Поддержка этого пока недоступна. #25163 (Amos Bird).

    • Исправлено возможное потерю частей после обновления до 21.5 в случае использования UUID в ключе разделения таблицы. (Использование UUID в ключе разделения не рекомендовано). Исправляет #25070. #25127 (Николай Кошечков).* Исправлено падение запроса с кросс-соединением и joined_subquery_requires_alias = 0. Исправляет #24011. #25082 (Nikolai Kochetov).

  • Исправлена ошибка в функции mapContains с константными картами, которая приводила к ошибке пустой столбец был возвращён функцией mapContains. Закрывает #25077. #25080 (Kruglov Pavel).

  • Исключено создание таблиц с колонками, обращающимися к самим себе, как a UInt32 ALIAS a + 1 или b UInt32 MATERIALIZED b. Исправляет #24910, #24292. #25059 (alesapin).

  • Исправлено неверное выполнение запроса с агрегирующей проекцией с ключом GROUP BY, который не является пустым, для выполнения запроса с GROUP BY пустым ключом. #25055 (Amos Bird).

  • Исправление сериализации разделённых вложенных сообщений в формате Protobuf. Этот Pull Request исправляет #24647. #25000 (Vitaly Baranov).

  • Исправление настроек limit/offset для распределённых запросов (игнорирование на удалённых узлах). #24940 (Azat Khuzhin).

  • Исправление возможной ошибки heap-buffer-overflow в формате Arrow. #24922.com/ClickHouse/ClickHouse/pull/24922) (Kruglov Pavel).

  • Исправление возможной ошибки 'Не удалось прочитать из istream при смещении 0' при чтении файла с DiskS3 (виртуальная файловая система S3 является экспериментальной функцией, которая не должна использоваться в производстве). #24885 (Pavel Kovalenko).

  • Исправление исключения "Отсутствуют столбцы" при объединении распределенного материализованного представления. #24870 (Azat Khuzhin).

  • Разрешение значений NULL в протоколе совместимости PostgreSQL. Закрывает #22622. #24857 (Kseniia Sumarokova).

  • Исправление бага, когда исключение Mutation was killed может быть выброшено клиенту при ожидании мутации, если мутация еще не загружена в память. #24809 (alesapin).

  • Исправление бага в процессе десериализации состояния генератора случайных чисел, что могло привести к неконсистентному поведению некоторых типов данных, таких как AggregateFunction(groupArraySample(N), T)). #24538 (tavplubix).

  • Запрет строительства uniqXXXXStates других агрегационных состояний. #24523 (Raúl Marín). Затем разрешение этого снова путем полного устранения причины связанной проблемы. (alexey-milovidov).com/alexey-milovidov)).

  • Исправление использования кортежей в запросах CREATE ... AS SELECT. #24464 (Anton Popov).

  • Исправление вычислений общего количества байтов в таблице Buffer. В текущей версии ClickHouse счетчик total_writes.bytes слишком сильно уменьшается во время сброса буфера. Это приводит к переполнению счетчика и возврату значения около 17,44 ЭБ некоторое время после сброса. #24450 (DimasKovas).* Исправление некорректной информации о монотонности функции toWeek. Это исправляет проблему #24422. Ошибка была введена в https://github.com/ClickHouse/ClickHouse/pull/5212 и позже обнаружена более продвинутым планировщиком разделов. #24446 (Amos Bird).

  • Исправлен потенциальный дедлок при управлении аутентификацией пользователя через LDAP, который мог возникнуть при отображении ролей LDAP (перемapping), когда группа LDAP отображалась на несуществующую локальную роль. #24431 (Denis Glazachev).

  • В сообщении типа "multipart/form-data" предшествующий разделителю CRLF следует считаться частью разделителя. Исправляет проблему #23905. #24399 (Ivan).

  • Исправление удаления раздела с пересеченными фейковыми частями. В редких случаях могут существовать части с номером мутации большим, чем текущее число блока. #24321 (Amos Bird).

  • Исправление ошибки при перемещении материализованного представления из обычной базы данных в атомную (RENAME TABLE). Теперь внутренняя таблица вместе с материализованным представлением перемещается в новую базу данных. Исправляет проблему #23926. #24309 (tavplubix).* Разрешение использования пустых HTTP-заголовков. Исправляет проблему #23901. #24285 (Ivan).

  • Корректировка обработки мутаций (ALTER UPDATE/DELETE) в таблицах Memory. Закрывает проблему #24274. #24275 (flynn).

  • Установка свойства столбца LowCardinality в выходных данных JOIN таким же, как и в входных данных, закрывает проблему #23351. Закрыты следующие задачи: #23351, #20315. #24061 (Vladimir).

  • Внесено исправление для таблиц Kafka. Устранена проблема в поведении при переходе на другой сервер (failover), когда Engine = Kafka не могла начать потребление данных, если тот же потребитель ранее имел пустое назначение. Закрывает #21118. #21267 (filimonov).

Улучшения сборки/тестирования/пакетирования* Добавлено строительство для darwin-aarch64 (Mac M1 / Apple Silicon) в CI #25560 (Ivan) и добавлены ссылки в документацию и на сайт (alexey-milovidov).

  • Добавлена кросс-платформенная встраиваемость двоичных ресурсов в исполняемые файлы. Это работает на Illumos. #25146 (bnaecker).
  • Добавлены связанные с соединением опции для тестов стресса для улучшения фузинга. #25200 (Vladimir).
  • Включен процесс сборки с модулем s3 в osx #25217. #25218 (kevin wan).
  • Добавлены случаи интеграционных тестов для покрытия JDBC-контракта. #25047 (Zhichun Wu).
  • Конфигурация интеграционных тестов имеет специальное отношение к словарям. Оставленные мануальные настройки словарей удалены. #24728 (Ilya Yatsishin).
  • Добавлены тесты libfuzzer для класса YAMLParser. #24480 (BoloniniD).
  • Теперь используются Ubuntu 20.04 для запуска интеграционных тестов, версия docker-compose для запуска интеграционных тестов обновлена до 1.28.2. Переменные окружения теперь влияют на docker-compose. Переработана функция test_dictionaries_all_layouts_separate_sources для параллельного запуска. #20393 (Ilya Yatsishin).com/qoega)).
  • Исправлено ошибочное чтение TOCTOU в скрипте установки. #25277 (alexey-milovidov).### Выпуск ClickHouse 21.6, 2021-06-05

Примечания по обновлению

  • Библиотeka сжатия zstd обновлена до версии v1.5.0. Вы можете получать сообщения о том, что "checksum не совпадает" во время репликации. Эти сообщения являются ожидаемыми из-за обновления алгоритма сжатия, и вы можете игнорировать их. Эти сообщения информационные и не указывают на какое-либо недопустимое поведение.

  • Настройка compile_expressions по умолчанию активирована. Хотя она была тщательно протестирована в различных сценариях, если вы заметили какие-то нежелательные эффекты на ваших серверах, попробуйте отключить эту настройку.* Значения типа UUID нельзя сравнивать с целым числом. Например, вместо записи uuid != 0 используйте uuid != '00000000-0000-0000-0000-000000000000'. #### Новая функция* Добавлен оператор преобразования в стиле PostgreSQL (::). Например: [1, 2]::Array(UInt8), 0.1::Decimal(4, 4), number::UInt16. #23871 (Anton Popov).

  • Подготовка больших целых чисел к выпуску. Добавлена поддержка типа данных UInt128. Устранены известные проблемы с типом данных Decimal256. Добавлена поддержка больших целых чисел в словарях. Добавлена поддержка функций gcd/lcm для больших целых чисел. Добавлена поддержка больших целых чисел в поиске массивов и условных функциях. Добавлена поддержка LowCardinality(UUID). Добавлена поддержка больших целых чисел в функции генерации случайных значений generateRandom и clickhouse-obfuscator. Устранено ошибочное поведение при возврате UUID из скалярных подзапросов. Это исправляет #7834, #23936, #4176, #24018. Нечувствительное изменение обратной совместимости: значения типа UUID больше нельзя сравнивать с целыми числами. Например, вместо записи uuid != 0 следует писать uuid != '00000000-0000-0000-0000-000000000000'. #23631 (alexey-milovidov).

  • Добавлена поддержка типа данных Array для вставки и выборки данных в форматах Arrow, Parquet и ORC.#21770 (taylor12805).

  • Реализованы комментарии к таблицам. Закрывает #23225. #23548 (flynn).

  • Добавлена поддержка создания словарей с помощью запросов DDL в clickhouse-local. Закрывает #22354. Добавлена поддержка команд DETACH DICTIONARY PERMANENTLY. Добавлена поддержка команд EXCHANGE DICTIONARIES для базового движка Atomic. Добавлена поддержка перемещения словарей между базами данных с помощью команды RENAME DICTIONARY. #23436 (Maksim Kita).

  • Добавлена агрегирующая функция uniqTheta для поддержки Theta Sketch в ClickHouse. #23894. #22609 (Пинг Ю).

  • Добавлена функция splitByRegexp. #24077 (Абел-Чэнг).

  • Добавлена функция arrayProduct, которая принимает массив в качестве параметра и возвращает произведение всех его элементов. Закрывает #21613. #23782 (Максим Кита).

  • Добавлен столбец thread_name в таблицу system.stack_trace. Это закрывает #23256. #24124 (Абел-Чэнг). * Если insert_null_as_default = 1, вместо NULL вставляются значения по умолчанию в запросах INSERT ... SELECT и INSERT ... SELECT ... UNION ALL .... Закрывает #22832. #23524 (Ксения Сумарокова).

  • Добавлена поддержка отображения прогресса в clickhouse-local с помощью опции --progress. #23196 (Эгор Савин).

  • Добавлена поддержка сжатия HTTP (определяется заголовком Content-Encoding HTTP) в источнике данных http. Это исправляет #8912. #23946 (ФАртур-кмд).

  • Добавлены команды SYSTEM QUERY RELOAD MODEL и SYSTEM QUERY RELOAD MODELS. Закрывают #18722. #23182 (Максим Кита).

  • Добавлена настройка json (логическое значение, по умолчанию равно 0) для запроса EXPLAIN PLAN. При активации вывод запроса будет представлять собой одну строку JSON. Рекомендуется использовать формат TSVRaw, чтобы избежать лишнего экранирования. #23082 (Николай Кошечков).

  • Добавлена настройка indexes (логическое значение, по умолчанию выключено) для запроса EXPLAIN PIPELINE. При активации показывается информация об использованных индексах, количестве отфильтрованных частей и гранул для каждого примененного индекса. Поддерживается для таблиц типа MergeTree*.#22352 (Николай Кошечтов).

  • LDAP: реализована функциональность обнаружения DN пользователя для использования при отображении групп Active Directory в роли ClickHouse. #22228 (Денис Глазачев).

  • Новая агрегирующая функция deltaSumTimestamp для суммирования разницы между последовательными строками, сохраняя порядок во время слияния путём хранения временных меток. #21888 (Расс Франк).

  • Добавлен менее безопасный провайдер учетных данных IMDS для S3, который корректно работает под Docker. #21852 (Владимир Чеботарёв).

  • Возвращена функция indexHint. Это исправляет #21238. Это откатывает #9542. Это исправляет #9540. #21304 (Амос Бёрд). #### Экспериментальная функция* Добавлена поддержка PROJECTION для таблиц типа MergeTree*. #20202 (Amos Bird).#### Улучшение производительности

  • Включите настройку compile_expressions по умолчанию. Когда эта настройка включена, композиция простых функций и операторов будет компилироваться в нативный код с помощью LLVM во время выполнения. #8482 (Maksim Kita, alexey-milovidov). Примечание: если вы чувствуете себя затруднительно, отключите эту опцию.

  • Обновлена библиотека re2. Производительность проверки регулярных выражений улучшена. Также этот pull request добавляет совместимость с gcc-11. #24196 (Raúl Marín).

  • Чтение формата входных данных ORC по полосам вместо чтения всей таблицы в память за один раз, что экономит память при больших размерах файла. #23102 (Chao Ma).

  • Объединение агрегирующих функций sum, count и avg в запросе в одну агрегирующую функцию. Оптимизация контролируется с помощью настройки optimize_fuse_sum_count_avg. Это реализовано с помощью новой агрегирующей функции sumCount. Эта функция возвращает кортеж из двух полей: sum и count. #21337 (hexiaoting).

  • Обновлена библиотека zstd до версии 1.5.0. Производительность сжатия улучшена на единицы процентов. #24135 (Raúl Marín). Примечание: вы можете получить сообщения о том, что "checksum не соответствует".Эти сообщения ожидают обновления алгоритма сжатия, и их можно игнорировать.

  • Улучшена производительность таблиц типа Buffer: блокировка за общее количество байтов/строк для движка Buffer больше не требуется. #24066 (Azat Khuzhin).

  • Поддержка зарезервированной памяти для хэшированных/разреженно-хэшированных словарей восстановлена. #23979 (Azat Khuzhin).

  • Включен async_socket_for_remote по умолчанию (уменьшение количества потоков при запросе распределённых таблиц с большим числом целевых серверов). #23683 (Nikolai Kochetov).

Улучшение

  • Добавлена виртуальная колонка _partition_value для семейства таблиц MergeTree. Она может использоваться для оптимизации разделов детерминировано. Это необходимо для реализации матчера разделов для мутаций. #23673 (Amos Bird).

  • Добавлен параметр region для хранилища S3 и диска. #23846 (Vladimir Chebotarev).

  • Разрешено конфигурирование различных уровней логгирования для разных каналов логгирования. Закрывает #19569. #23857 (filimonov).

  • Сохранение по умолчанию часового пояса при операциях с типом данных DateTime, если часовой пояс явно не указан.Например, если вы добавите одну секунду к значению типа DateTime без указания часового пояса, значение останется без часового пояса. В предыдущих версиях значение часового пояса по умолчанию было явно указано в возвращаемом типе данных, так что он становился DateTime('UTC'). Это закрывает #4854. #23392 (alexey-milovidov).

  • Разрешено пользователю указывать пустую строку вместо имени базы данных для хранилища MySQL. Будет использована база данных по умолчанию для запросов. В предыдущих версиях это работало для запросов SELECT, а также была добавлена поддержка для запросов INSERT. Это закрывает #19281. Это может быть полезно при работе с Sphinx или другими совместимыми с MySQL внешними базами данных. #23319 (alexey-milovidov).

  • Устранены проблемы с функцией quantile(s)TDigest. Добавлен специальный обработчик одиночных центроидов согласно tdunning/t-digest 3.2+. Также исправлена проблема с переуплотнением центроидов в реализации более ранних версий алгоритма. #23314 (Vladimir Chebotarev).

  • Функция now64 теперь поддерживает необязательный аргумент часового пояса. #24091 (Vasily Nemkov).* Исправлена ситуация, когда прогресс-бар в режиме взаимодействия в клиенте clickhouse-client, который появляется посередине данных, может перезаписывать некоторые части видимых данных в терминале. Закрывает #19283. #23050 (alexey-milovidov).

  • Исправлен сбой при неудачном выделении памяти в simdjson. https://github.com/simdjson/simdjson/pull/1567 . Отмечен как улучшение, так как это очень редкая ошибка. #24147 (Amos Bird).

  • Сохранение словарей до завершения работы хранилища (это предотвратит возможные ошибки типа внешний словарь 'DICT' не найден при закрытии сервера во время окончательной очистки движка Buffer). #24068 (Azat Khuzhin).

  • Очистка таблиц Buffer перед закрытием таблиц (в рамках одной базы данных), чтобы избежать удаления блоков данных из-за отсоединения нижележащей таблицы (и ошибки типа целевая таблица default.a_data_01870 не существует. Блок данных удален в логе). #24067 (Azat Khuzhin).

  • Теперь prefer_column_name_to_alias = 1 также будет предпочитать имена столбцов для GROUP BY, HAVING и ORDER BY. Это исправляет #23882. #24022 (Amos Bird).

  • Добавлена поддержка ORDER BY WITH FILL для DateTime64. #24016 (kevin wan).* Включена возможность использования DateTime64 в качестве версионного столбца в ReplacingMergeTree. #23992 (kevin wan).

  • Добавлен логгинг информации о названии операционной системы, версии ядра и архитектуре процессора при запуске сервера. #23988 (Azat Khuzhin).

  • Добавлена поддержка указания схемы таблицы для источника словаря postgresql. Закрывает #23958. #23980 (Kseniia Sumarokova).

  • Добавлены подсказки для имён элементов Enum (предложение имени в случае опечатки). Закрывает #17112. #23919 (flynn).

  • Добавлен показатель процента найденных значений (found rate) для словарей (см. found_rate в system.dictionaries). #23916 (Azat Khuzhin).

  • Разрешено добавлять конкретные настройки очереди через таблицу rabbitmq_queue_settings_list. (Закрывает #23737 и #23918). Разрешает пользователю контролировать все настройки RabbitMQ: если значение настройки таблицы rabbitmq_queue_consume установлено равным 1, то движок таблицы RabbitMQ будет подключаться только к указанной очереди и не будет выполнять никаких настроек стороны потребителя RabbitMQ, таких как объявление обменников, очередей, привязок. (Закрывает #21757).com/ClickHouse/ClickHouse/issues/21757)). Добавлен правильный сброс при удалении таблицы RabbitMQ — удаляются очереди, которые были объявлены таблицей, а также все связанные обменники — если они были созданы этой таблицей. #23887 (Kseniia Sumarokova).

  • Добавлены метрики broken_data_files/broken_data_compressed_bytes в system.distribution_queue. Добавлена метрика для количества файлов для асинхронного внесения данных в распределенные таблицы, отмеченных как поврежденные (BrokenDistributedFilesToInsert). #23885 (Azat Khuzhin).

  • Запросы system.tables больше не обращаются к ZooKeeper. #23793 (Fuwang Hu).

  • Уважение значения lock_acquire_timeout_for_background_operations для запросов OPTIMIZE. #23623 (Azat Khuzhin).

  • Возможность изменения настроек диска S3 в реальном времени через новую SQL-команду SYSTEM RESTART DISK. #23429 (Pavel Kovalenko).

  • Если пользователь случайно установил значение max_distributed_connections равным нулю, каждый запрос к таблице Distributed будет выбрасывать исключение с сообщением, содержащим "логическую ошибку". Но это действительно ожидаемое поведение, а не логическая ошибка, поэтому сообщение об ошибке было немного некорректным.Это также активировало проверки в нашем окружении CI, которое гарантирует, что логических ошибок никогда не происходит. Вместо этого мы будем рассматривать max_distributed_connections, неправильно настроенный на ноль, как минимальное возможное значение (один). #23348 (Azat Khuzhin)* Отключаем min_bytes_to_use_mmap_io по умолчанию. #23322 (Azat Khuzhin).

  • Поддержка LowCardinality с join_use_nulls. Закрывает #15101. #23237 (vdimir).

  • Добавлена возможность восстановления частей MergeTree в директорию detached для диска S3. #23112 (Pavel Kovalenko).

  • Попытки повторной связи при падении HTTP соединения в S3. #22988 (Vladimir Chebotarev).

  • Добавлены настройки external_storage_max_read_rows и external_storage_max_threads для движков таблиц MySQL, источников словарей и мелкого захвата данных MaterializeMySQL. #22697 (TCeason).

  • MaterializeMySQL (экспериментальная функциональность): ранее MySQL версия 5.7.9 не поддерживалась из-за несовместимости SQL. Теперь проверку параметров MySQL оставляем за MaterializeMySQL. #23413 (TCeason).

  • Включен доступ к подколонкам для распределённых таблиц. #24472 (Anton Popov).

  • Исправление использования кортежей в запросах CREATE ... AS SELECT. #24464 (Anton Popov).* Поддержка формата Parquet в таблицах Kafka. #23412 (Chao Ma).

Исправление ошибки*

Используйте старую версию модульной функции при использовании в ключах разделения и первичного ключа. Закрывает #23508. #24157 (Ксения Сумарокова). Это было источником обратной непригодности в предыдущих выпусках.

  • Устранена проблема бесконечной обработки запросов SYSTEM RESTART REPLICA или SYSTEM SYNC REPLICA. Это было выявлено на сервере с крайне малым количеством оперативной памяти. #24457 (Никита Михайлов).

  • Устранена некорректная монотонность функции toWeek. Это исправляет #24422. Эта ошибка была введена в #5212 и обнаружена позже более продвинутым планировщиком разделений. #24446 (Амос Бирд).

  • Устранена проблема удаления разделения с пересекающимися фейковыми частями. В редких случаях могут существовать части с версией мутации больше текущего номера блока. #24321 (Амос Бирд).

  • Устранена ошибка при перемещении материализованного представления из обычной базы данных в атомную (RENAME TABLE).Теперь внутренняя таблица перемещается вместе с материализованным представлением в новую базу данных. Исправляет #23926. #24309 (tavplubix).

  • Разрешены пустые HTTP-заголовки в клиентских запросах. Исправляет #23901. #24285 (Ivan).

  • Установите max_threads = 1, чтобы исправить ошибку мутации таблиц типа Memory. Закрывает #24274. #24275 (flynn).

  • Устранена опечатка в реализации таблиц типа Memory, эта ошибка была введена в #15127. Закрывает #24192. #24193 (张中南).

  • Устранено непредвиденное завершение работы сервера из-за недоступности HDFS во время выполнения запроса. Закрывает #24117. #24191 (Ксения Сумарокова).

  • Устранено аварийное завершение при обновлении столбца типа Nested с постоянным условием. #24183 (hexiaoting).

  • Устранено условие гонки, которое могло произойти в RBAC при высоких нагрузках. Этот Pull Request исправляет #24090, #24134,. #24176.com/ClickHouse/ClickHouse/pull/24176) (Vitaly Baranov).

    • Устранение редкого бага, который мог привести к частичной инициализации таблицы, способной принимать запросы записи (вставка/изменение и т. д.). Теперь такие таблицы будут находиться в режиме чтения только. #24122 (alesapin).
    • Устранение проблемы: EXPLAIN PIPELINE с SELECT xxx FINAL показывало неверный пайплайн. (hexiaoting).
    • Исправлено использование константного значения типа DateTime вместо столбца типа DateTime64 в WHERE. #24100 (Vasily Nemkov).
    • Устранение аварийного завершения в слиянии JOIN, закрывает #24010. #24013 (vdimir).
    • Некоторые запросы ALTER PARTITION могли вызывать ошибки Part A intersects previous part B и Unexpected merged part C intersecting drop range D в очереди репликации. Это исправлено. Исправляет #23296. #23997 (tavplubix).
    • Устранение SIGSEGV для внешнего GROUP BY и строки переполнения (то есть запросы типа SELECT FROM GROUP BY WITH TOTALS SETTINGS max_bytes_before_external_group_by > 0, max_rows_to_group_by > 0, group_by_overflow_mode = 'any', totals_mode = 'before_having'). #23962 (Azat Khuzhin).
    • Устранение учета метрик ключей для словаря CACHE с повторяющимися источниками (что приводит к переполнению DictCacheKeysRequestedMiss). #23929 (Andrei Yurchenko).com/ClickHouse/ClickHouse/pull/23929). /com/ClickHouse/ClickHouse/pull/23929) (Азат Хужин).
    • Исправление реализации пула соединений движка PostgreSQL. Закрывает #23897. #23909 (Ксения Сумарокова).
    • Исправление поведения при использовании distributed_group_by_no_merge = 2 с GROUP BY и агрегирующей функцией, вложенными в обычную функцию (было сломано в #23546). Выброс исключения при попытке использования distributed_group_by_no_merge = 2 с оконной функцией. Отключение optimize_distributed_group_by_sharding_key для запросов с оконными функциями. #23906 (Азат Хужин).
    • Исправление для таблицы функции s3: лучшая обработка ошибок HTTP. Ранее были игнорированы тела ответов HTTP-ошибок. #23844 (Владимир Чеботарёв).
    • Исправление для таблицы функции s3: лучшая обработка URI. Устранена несовместимость с URL, содержащими символ +, данные с такими ключами ранее не могли быть прочитаны. #23822 (Владимир Чеботарёв).
    • Исправление ошибки Can't initialize pipeline with empty pipe для запросов с GLOBAL IN/JOIN и use_hedged_requests. Закрывает #23431. #23805 (Николай Кошечков). * Исправление проблемы с командой CLEAR COLUMN, которая не работает, если она используется в материализованном представлении. Закрывает #23764. #23781 (flynn).
    • Исправление утечки памяти при чтении из HDFS, если используется формат Values. #23761 (Ксения Сумарокова).
    • Предотвращение возможной ошибки "Cannot schedule a task" (в случае возникновения исключения) при выполнении INSERT в Distributed. #23744 (Азат Хужин).
    • Исправлен баг восстановления застывшей реплики ReplicatedMergeTree. Некоторые изменения метаданных могут быть проигнорированы устаревшим репликой, если запрос ALTER был выполнен во время простоя реплики. #23742 (tavplubix).* Исправлен баг с JOIN и WITH TOTALS, закрыта задача #17718. #23549 (vdimir).
  • Исправлена возможность ошибки Block structure mismatch для запросов с UNION, которая могла возникнуть после оптимизации push-down фильтров. Устраняет проблему #23029. #23359 (Nikolai Kochetov).

  • Добавлена конвертация типа данных при включенной настройке optimize_skip_unused_shards_rewrite_in. Это исправляет отчет MSan. #23219 (Azat Khuzhin).

  • Добавлено недостающее проверочное условие при обновлении вложенных подколонок, закрыта задача: #22353. #22503 (hexiaoting).#### Улучшения сборки/тестирования/пакетирования* Поддержка сборки на Illumos. #24144. Добавляет поддержку сборки на операционных системах, производных от Solaris. #23746 (bnaecker).

  • Добавление более подробных бенчмарков для хеш-таблиц, включая таблицу Swiss Table от Google (которая оказалась медленнее хеш-мапы ClickHouse в нашем конкретном сценарии использования). #24111 (Maksim Kita).

  • Обновление librdkafka до версии 1.6.1. #23874 (filimonov).

  • Включение asynchronous-unwind-tables явно всегда. Это может исправить профилировщик запросов на архитектуре AArch64. #23602 (alexey-milovidov).

  • Избежание возможной зависимости сборки от локали и порядка файловой системы. Это позволяет создавать воспроизводимые сборки. #23600 (alexey-milovidov).

  • Удаление источника недетерминированности из процесса сборки. Теперь сборки, выполненные в разное время, будут давать бинарники с одинаковым содержимым на уровне байтов. Частично решает проблему #22113. #23559 (alexey-milovidov).

  • Добавление простого инструмента для проведения бенчмарков (Zoo)Keeper. #23038 (alesapin).## Выпуск ClickHouse 21.5, 2021-05-20

Неразрывные изменения назад* Изменение сравнения целых чисел и чисел с плавающей запятой при условии, что целое число не может быть точно представлено в типе данных с плавающей запятой. В новой версии сравнение будет возвращать значение false, так как произойдет ошибочное округление. Пример: 9223372036854775808.0 != 9223372036854775808, поскольку число 9223372036854775808 не может быть точно представлено в виде числа с плавающей запятой (и 9223372036854775808.0 округляется до 9223372036854776000.0). Однако в предыдущей версии сравнение будет возвращать значение true, так как числа считаются равными, потому что если число с плавающей запятой 9222372036854776000.0 преобразовать обратно в UInt64, то получится 9223372036854775808. Для справки, язык программирования Python также рассматривает эти числа как равные. Но это поведение зависело от модели процессора (различные результаты на AMD64 и AArch64 для некоторых чисел за пределами диапазона), поэтому мы делаем сравнение более точным. Оно будет считать целые и числа с плавающей запятой равными только в том случае, если целое число может быть точно представлено в виде числа с плавающей запятой. #22595 (alexey-milovidov).* Удаление поддержки argMin и argMax для одного аргумента типа Tuple. Код был не безопасен для работы с памятью. Эта функция была добавлена по ошибке и вызывает путаницу у пользователей. Эти функции могут быть восстановлены позже под другими названиями. Это исправляет #22384 и откатывает #17359. #23393 (alexey-milovidov).

Новая функциональность* Добавлены функции dictGetChildren(словарь, ключ) и dictGetDescendants(словарь, ключ, уровень). Функция dictGetChildren возвращает всех потомков как массив индексов. Это обратное преобразование для dictGetHierarchy. Функция dictGetDescendants возвращает всех потомков, применяя dictGetChildren рекурсивно уровень раз. Нулевое значение уровня эквивалентно бесконечности. Улучшена производительность функций dictGetHierarchy и dictIsIn. Закрывает #14656. #22096 (Maksim Kita).

  • Добавлена функция dictGetOrNull. Она работает так же, как dictGet, но в случае отсутствия ключа в словаре возвращает Null. Закрывает #22375. #22413 (Maksim Kita).
  • Добавлена таблицная функция s3Cluster, которая позволяет параллельно обрабатывать файлы с s3 на каждом узле указанного кластера. #22012 (Nikita Mikhaylov).
  • Добавлена поддержка реплик и шардов в движках таблиц MySQL/PostgreSQL и таблицной функции. Можно использовать запись SELECT * FROM mysql('host{1,2}-{1|2}', ...). Закрывает #20969. #22217 (Kseniia Sumarokova).
  • Добавлена команда ALTER TABLE ... FETCH PART .... Она аналогична команде FETCH PARTITION, но выбирает только одну часть. #22706 (turbo jason).* Добавлено настроек max_distributed_depth, которое ограничивает глубину рекурсивных запросов к распределённым таблицам. Закрывает #20229. #21942 (flynn).#### Улучшение производительности
  • Улучшена производительность intDiv за счет динамического диспачинга для AVX2. Это закрывает #22314. #23000 (alexey-milovidov).
  • Улучшена производительность чтения из входного формата ArrowStream для источников, отличных от локального файла (например, URL). #22673 (nvartolomei).
  • По умолчанию отключено сжатие при взаимодействии с localhost (через clickhouse-client или сервер-сервер с распределенными запросами) через протокол native. Это может повысить производительность некоторых операций импорта/экспорта. Это закрывает #22234. #22237 (alexey-milovidov).
  • Исключены значения, не принадлежащие шарду, из правой части секции IN для распределенных запросов (под optimize_skip_unused_shards_rewrite_in, включен по умолчанию, так как он все еще требует optimize_skip_unused_shards). #21511 (Azat Khuzhin).
  • Улучшена производительность чтения подмножества столбцов с использованием движка таблиц типа File и ориентированной на колонки формы данных, таких как Parquet, Arrow или ORC. Это закрывает #issue:20129. #21302 (keenwolf).* Разрешено перемещение большего количества условий в PREWHERE, как это было до версии 21.1 (внесение корректив в внутренние алгоритмы). Недостаточное количество перемещённых условий может привести к снижению производительности. #23397 (Anton Popov).
  • Улучшена производительность соединений ODBC и исправлены все накопившиеся проблемы. Используется библиотека nanodbc вместо Poco::ODBC. Закрывает #9678. Добавлена поддержка DateTime64 и Decimal* для движка таблиц ODBC. Закрывает #21961. Исправлена проблема с обрезкой кириллического текста. Закрывает #16246. Добавлены пулы подключений для моста ODBC. #21972 (Kseniia Sumarokova).

Улучшение

Увеличен максимальный размер URL в HTTP-интерфейсе (max_uri_size) до 1 МБ по умолчанию. Это закрывает #21197. #22997 (alexey-milovidov).* Установите значение background_fetches_pool_size равным 8, что лучше всего подходит для использования в продакшн-среде с частыми небольшими вставками или медленной группой серверов ZooKeeper. #22945 (alexey-milovidov).

  • В FlatDictionary добавлены опции initial_array_size и max_array_size. #22521 (Maksim Kita).

  • Добавлена новая настройка non_replicated_deduplication_window для удаления дубликатов при вставках в таблицы типа MergeTree без репликации. #22514 (alesapin).

  • Обновлены пути к конфигурационным файлам модели CatBoost при перезагрузке конфигураций. #22434 (Kruglov Pavel).

  • Поддержана типизация данных Decimal256 в словарях. Decimal256 — это экспериментальная функциональность. Закрывает #20979. #22960 (Maksim Kita).

  • Активировано использование асинхронных сокетов для удалённых запросов (async_socket_for_remote) по умолчанию (используется меньшее количество потоков ОС для распределённых запросов). #23683 (Nikolai Kochetov).* Исправлены функции quantile(s)TDigest. Добавлен специальный обработчик одиночных центроидов согласно(tdunning/t-digest 3.2+). Также исправлена ошибка с переуплотнением центроидов в реализации более ранних версий алгоритма. #23314 (Vladimir Chebotarev).* Сделано имя функции unhex регистрозависимым для совместимости с MySQL. #23229 (alexey-milovidov).

  • Реализованы функции arrayHasAny, arrayHasAll, has, indexOf, countEqual для общего случая, когда типы элементов массива различаются. В предыдущих версиях функции arrayHasAny, arrayHasAll возвращали false, а has, indexOf, countEqual выбрасывали исключение. Также добавлена поддержка типа данных Decimal и больших целых чисел в функциях has и аналогичных. Это закрывает #20272. #23044 (alexey-milovidov).

  • Уровень порога максимального количества совпадений в результате выполнения функции extractAllGroupsHorizontal повышен. #23036 (Vasily Nemkov).

  • Выполнение optimize_skip_unused_shards отключено для кластера с одним узлом. #22999 (Azat Khuzhin).

  • Добавлена возможность запуска clickhouse-keeper (экспериментальная замена ZooKeeper) с использованием SSL. Настройки конфигурации keeper_server.tcp_port_secure могут использоваться для безопасного взаимодействия между клиентом и сервером keeper. keeper_server.raft_configuration.secure может использоваться для включения внутреннего безопасного взаимодействия между узлами. #22992 (alesapin).* Добавлена возможность очистки буфера только в фоновом режиме для таблиц Buffer. #22986 (Azat Khuzhin).

  • При выборке из таблицы MergeTree с условием WHERE, содержащим NULL, в редких случаях выбрасывалось исключение. Это закрывает #20019. #22978 (alexey-milovidov).

  • Исправлено управление ошибками в Poco HTTP Client для AWS. #22973 (kreuzerkrieg).

  • Уважение ограничения max_part_removal_threads для ReplicatedMergeTree. #22971 (Azat Khuzhin).

  • Исправлено редкое случайное поведение при активации настроек MergeTree inactive_parts_to_throw_insert = 0 с inactive_parts_to_delay_insert > 0. #22947 (Azat Khuzhin).* Функция dateDiff теперь работает с аргументами типа DateTime64 (даже для значений вне диапазона DateTime). #22931 (Vasily Nemkov).

  • MaterializeMySQL (экспериментальная функция): добавлена возможность репликации баз данных MySQL, содержащих представления, без сбоев. Это достигается за счет игнорирования представлений. #22760 (Christian).

  • Разрешено использование RBAC-стратегии управления доступом через протокол PostgreSQL. Закрывает #22658. Протокол PostgreSQL включен по умолчанию в конфигурациях. #22755 (Ксения Сумарокова).

  • Добавлены метрики для отслеживания времени, затраченного на ожидание блокировки слоя буферизации. #22725 (Азат Хузин).

  • Разрешено использование CTE в определении VIEW. Это закрывает #22491. #22657 (Амос Бирд).

  • Очищена область экрана и показан курсор в clickhouse-client, если предыдущее приложение оставило мусор в терминале. Это закрывает #16518. #22634 (alexey-milovidov).

  • Установлено последовательное поведение функции round на платформах, отличных от x86_64.Используется округление до ближайшего четного числа (банковское округление). #22582 (alexey-milovidov).

  • Контрольная проверка структуры блоков данных, отправляемых таблицами Distributed. #22325 (Азат Хузин).

  • Возможность публикации ошибок Kafka в виртуальном столбце движка Kafka, контролируемой параметром kafka_handle_error_mode. #21850 (fastio).

  • Добавлены псевдонимы simpleJSONExtract/simpleJSONHas для visitParam/visitParamExtract{UInt,Int,Bool,Float,Raw,String}. Исправляет #21383. #21519 (fastio).

  • Добавлен clickhouse-library-bridge для источника словарей типа "библиотека". Закрывает #9502. #21509 (Ксения Сумарокова).

  • Запрещено удалять столбец, если он используется в материализованном представлении. Закрывает #21164. #22303 (flynn).

  • Поддержка динамических межсерверных учетных данных (вращение учетных данных без простоя). #14113 (johnskopis).

  • Добавлена поддержка хранения Kafka с сообщениями в форматах Arrow и ArrowStream. #23415 (Чжао Ма).* Устранена отсутствующая точка с запятой в сообщении об ошибке. Это может вызвать неприятное чтение для пользователя. #23208 (Алексей Милоидов).

  • Устранены пробелы в некоторых сообщениях об ошибках относительно типа LowCardinality. #23207 (Алексей Милоидов).

  • Некоторые значения были выровнены по центру в ячейках таблицы в формате Markdown. Больше это не так. #23096 (Алексей Милоидов).

  • Удалены ненужные детали из рекомендаций в clickhouse-client. Это закрывает #22158. #23040 (Алексей Милоидов).

  • Корректировка расчета поля bytes_allocated в системных словарях для разреженных хэш-словарей. #22867 (Азат Хузин).

  • Устранена неточность при подсчете общего количества строк при обратном чтении из MergeTree. #22726 (Азат Хузин).

  • Устранена возможность конфигурации словаря с источником ClickHouse, который обращается к самому себе, что приводит к бесконечному циклу. Закрывает #14314. #22479 (Максим Кита).

Исправление ошибки

  • Устранены несколько проблем с отложенными запросами.Введено исправление ошибки Не удалось инициализировать конвейер пустым конвеером для запросов с GLOBAL IN/JOIN, когда включен параметр use_hedged_requests. Исправлено #23431. #23805 (Nikolai Kochetov). Устранена гонка при соединении с отложенным запросом, что приводило к аварийному завершению работы. Это исправляет #22161. #22443 (Kruglov Pavel). Устранена возможность аварийного завершения работы при получении неизвестного пакета от удалённого запроса (при включенной опции async_socket_for_remote). Исправлено #21167. #23309 (Nikolai Kochetov).* Исправлена ситуация, когда отключение параметра input_format_with_names_use_header приводит к игнорированию всех входящих данных в формате CSVWithNames. Исправлено #22406. #23202 (Nikita Mikhaylov).

  • Исправлено временное выключение соединения в удаленном мосте JDBC. Закрыто #9609. #23771 (Maksim Kita, Alexey Milovidov).

  • Исправлена логика начальной загрузки complex_key_hashed, если указан update_field. Закрыто #23800. #23824 (Maksim Kita).

  • Устранена ошибка аварийного завершения работы при использовании PREWHERE и фильтра политики строки вместе с пустым результатом. #23763 (Amos Bird).

  • Избежана возможная ошибка «Невозможно расписание задачи» (в случае возникновения исключения) при выполнении команды INSERT в таблицу Distributed. #23744 (Azat Khuzhin).* Добавлено исключение в случае полной совпадаемости значений во всех образцах в агрегирующей функции mannWhitneyUTest. Исправлено #23646. #23654 (Nikita Mikhaylov).

  • Устранена ошибка сервера при вставке данных через HTTP, вызывавшая исключение. Это исправляет #23512. #23643 (Nikita Mikhaylov).

  • Устранено неправильное истолкование некоторых выражений LIKE с последовательностями экранирования. #23610 (alexey-milovidov).

  • Устранена проблема зависания команды перезапуска / остановки. Закрывает #20214. #23552 (filimonov).

  • Устранена ошибка парсера COLUMNS при наличии нескольких соединений в запросе выборки. Закрывает #22736. #23501 (Maksim Kita).

  • Устранён сбой при изменении значения по умолчанию столбца, когда сам столбец используется как параметр ReplacingMergeTree. #23483 (hexiaoting).

  • Устранены проблемы в вертикальной объединении с ReplacingMergeTree. В редких случаях они могли привести к ошибкам слияния с исключениями типа Incomplete granules are not allowed while blocks are granules size. #23459com/ClickHouse/ClickHouse/pull/23459) (Антон Попов).

  • Устранена ошибка, которая не позволяла преобразовать пустое литеральное массив в массив с размерностью больше одного, например CAST([] AS Array(Array(String))). Закрывает #14476. #23456 (Максим Кита).

  • Устранена ошибка, при которой агрегирующая функция deltaSum выдавала неверный результат после сброса счетчика. #23437 (Расс Франк).

  • Устранена ошибка Cannot unlink file при неудачном создании таблицы ReplicatedMergeTree с конфигурацией многодисковой системы. Это закрывает #21755. #23433 (tavplubix).

  • Устранена непредвиденная генерация константного выражения при сечении данных на основе виртуальных столбцов. Это исправляет https://github.com/ClickHouse/ClickHouse/pull/21401#discussion_r611888913. #23366 (Амос Бирд).

  • Устранено падение программы при установке параметра join_algorithm в значение 'auto' и выполнении соединения с использованием словаря. Закрыто #23002. #23312 (Владимир).

  • Не расслабляем условия NOT во время сечения данных. Это исправляет #23305 и #21539. #23310 (Амос Бирд).* Устранена очень редкая ситуация конкурентного доступа при фоновой очистке старых блоков. Это может привести к тому, что блок не будет дедублицирован, если он слишком близко находится к концу периода дедубликации. #23301 (tavplubix).

  • Устранена очень редкая ситуация конкурентного доступа между созданием и удалением таблиц типа ReplicatedMergeTree. Это может вызвать исключения вроде "узел не существует" при попытке создания реплицируемой таблицы. Исправлено #21419. #23294 (tavplubix).

  • Устранена проблема создания простого ключевого словаря из DDL, если первичный ключ не является первым атрибутом. Исправлено #23236. #23262 (Maksim Kita).

  • Устранена проблема чтения из ODBC при наличии множества длинных имён столбцов в таблице. Закрыто #8853. #23215 (Kseniia Sumarokova).

  • MaterializeMySQL (экспериментальная функциональность): устранена ошибка "Колонка не найдена", возникающая при выборке из MaterializeMySQL с условием на ключевой столбец. Исправлено #22432. #23200 (tavplubix).* Корректная обработка псевдонимов, если подзапрос был оптимизирован до константы. Исправляет #22924. Исправляет #10401. #23191 (Maksim Kita).* Сервер может не запуститься, если в профиле по умолчанию включены настройки data_type_default_nullable. Это исправлено. Исправляет #22573. #23185 (tavplubix).

  • Устранена ошибка при завершении работы, связанная с неправильным учетом текущих соединений. #23154 (Vitaly Baranov).

  • Устранена ошибка Table.inner_id doesn't exist при выборке из материализованного представления после его отсоединения от атомной базы данных и последующего присоединения обратно. #23047 (tavplubix).

  • Исправлена ошибка Cannot find column in ActionsDAG result, которая может возникнуть, если подзапрос использует untuple. Исправляет #22290. #22991 (Nikolai Kochetov).

  • Исправлено использование постоянных столбцов типа Map с nullable значениями. #22939 (Anton Popov).

  • Исправлены проблемы с formatDateTime() для DateTime64 и спецификатором формата %C, а также исправлены проблемы с toDateTime64() для больших значений и ненулевой шкалы. #22937 (Vasily Nemkov).

  • Устранены ошибки при использовании mannWhitneyUTest и rankCorr вместе с оконными функциями. Это исправляет #22728. #22876 (Nikita Mikhaylov).* ВЕЖЛИВЫЙ ВИД (экспериментальная функциональность): устранена возможность зависания при параллельном удалении и создании временного ВЕЖЛИВОГО ВИДА в TemporaryLiveViewCleaner, см.. #22858 (Виталий Баранов).

  • Устранена проблема с пушдауном HAVING в случае использования фильтрационного столбца в агрегации. #22763 (Антон Попов).

  • Устранена возможность зависаний в запросах к Zookeeper при возникновении исключения OOM. Исправляет #22438. #22684 (Николай Кошечтов).

  • Устранено зависание при ожидании мутаций на нескольких репликах для движков таблиц ReplicatedMergeTree. Ранее завершение мутации/ALTER запроса могло произойти до выполнения мутации на других репликах. #22669 (alesapin).

  • Устранена ошибка при работе с логами, содержащими вложенные типы данных без колонок в секции SELECT. #22654 (Азат Хузин).

  • Устранён бесконечный ожидание вспомогательных запросов AWS. #22594 (Владимир Чеботарёв).* Устранена ошибка падения клиента при раннем закрытии соединения. #22579. #22591 (nvartolomei).* Дата-тип Map (экспериментальная функциональность): исправлена неправильная сериализация функции map в распределённых запросах. #22588 (foolchi).

  • Исправлена десериализация пустой строки без новой строки в конце в формате TSV. Это закрывает #20244. Временный вариант решения без обновления версии: установите input_format_null_as_default равной нулю. В старых версиях значение было равно нулю. #22527 (алексей миловидов).

  • Исправлена неверная конвертация столбца типа LowCardinality в алгоритме объединения. Закрывает #22386, закрывает #22388. #22510 (Владимир).* Возможна была ситуация выхода за границы буфера (при чтении) в полнотекстовом индексе tokenbf_v1. Избыточные байты не используются, но операция чтения может привести к аварийному завершению работы в редких случаях. Это закрывает #19233. #22421 (alexey-milovidov).

  • Не ограничивайте размер чанков в HTTP. Исправляет #21907. #22322 (Ivan).

  • Устранена ошибка, приводящая к недонагрузке данных при активированной опции optimize_aggregation_in_order и множестве частей в таблице. Незначительно улучшена производительность агрегации с активированной опцией optimize_aggregation_in_order. #21889 (Антон Попов).

  • Проверка использования функции представления таблицы как столбца. Это дополняет #20350. #21465 (Амос Бирд).

  • Исправлена ошибка "неизвестный столбец" для таблиц с движком Merge в запросах с JOIN и агрегацией. Закрывает #18368, закрывает #22226. #21370 (Владимир).

  • Исправлены конфликты названий в оптимизации pushdown. Это вызывало некорректную фильтрацию WHERE после FULL JOIN. Закрывает #20497. #20622```markdown

Исправление ошибок

  • Устранена очень редкая ошибка, когда вставка с quorum_parallel=1 не является действительно "quorum" из-за дедупликации. #18215 (filimonov — отчет, alesapin — исправление).

Улучшение сборки/тестирования/пакетирования

  • Выполнение бессостоятностных тестов параллельно в CI. #22300 (alesapin).

  • Упрощение пакетов Debian. Это исправляет #21698. #22976 (alexey-milovidov).

  • Добавлена поддержка сборки ClickHouse для Apple M1. #21639 (changvvb).

  • Исправлена сборка ClickHouse Keeper для macOS. #22860 (alesapin).

  • Исправлены некоторые тесты на платформе AArch64. #22596 (alexey-milovidov).

  • Добавлено выравнивание функций для возможного лучшего производительства. #21431 (Danila Kutenin).

  • Адаптированы некоторые тесты для получения одинаковых результатов на amd64 и aarch64 (qemu). Результат зависел от поведения процессора с конкретной реализацией. #22590 (alexey-milovidov).

  • Разрешено профилирование запросов только на x86_64. Смотрите #15174.

com/ClickHouse/ClickHouse/issues/15174#issuecomment-812954965) и [#15638](https://github.com/ClickHouse/ClickHouse/issues/15638#issuecomment-703805337). Это закрывает [#15638](https://github.com/ClickHouse/ClickHouse/issues/15638). [#22580](https://github.com/ClickHouse/ClickHouse/pull/22580) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Разрешена сборка с внешним xz (lzma) используя опцию CMake `USE_INTERNAL_XZ_LIBRARY=OFF`. [#22571](https://github.com/ClickHouse/ClickHouse/pull/22571) ([Kfir Itzhak](https://github.com/mastertheknife)).
* Включение встроенной `openldap` на `ppc64le` [#22487](https://github.com/ClickHouse/ClickHouse/pull/22487) ([Kfir Itzhak](https://github.com/mastertheknife)).
* Отключение неподдерживаемых библиотек (обычно платформозависимых) на `ppc64le` [#22475](https://github.com/ClickHouse/ClickHouse/pull/22475) ([Kfir Itzhak](https://github.com/mastertheknife)).
* Добавление Jepsen теста в CI для ClickHouse Keeper. [#22373](https://github.com/ClickHouse/ClickHouse/pull/22373) ([alesapin](https://github.com/alesapin)).
* Сборка `jemalloc` с поддержкой [профилирования кучи](https://github.com/jemalloc/jemalloc/wiki/Use-Case%3A-Heap-Profiling). [#22834](https://github.com/ClickHouse/ClickHouse/pull/22834) ([nvartolomei](https://github.com/nvartolomei)).
* Избежание UB в движках `*Log` при разблокировке rwlock из-за разблокировки из другого потока. [#22583](https://github.com/ClickHouse/ClickHouse/pull/22583) ([Azat Khuzhin](https://github.com/azat)).
* Устранение UB путём разблокировки rwlock TinyLog из того же потока. [#22560](https://github.com/ClickHouse/ClickHouse/pull/22560) ([Azat Khuzhin](https://github.com/azat)).

## Выпуск ClickHouse 21.4### Выпуск ClickHouse 21.4.1 2021-04-12

#### Неразрывные изменения*

* Функция `toStartOfIntervalFunction` теперь выравнивает интервалы часов до полуночи (в предыдущих версиях они выравнивались до начала эпохи Unix). Например, `toStartOfInterval(x, INTERVAL 11 HOUR)` разделит каждый день на три интервала: `00:00:00 - 10:59:59`, `11:00:00 - 21:59:59` и `22:00:00 - 23:59:59`. Это поведение более соответствует практическим потребностям. Этот запрос закрывает [#9510](https://github.com/ClickHouse/ClickHouse/issues/9510). [#22060](https://github.com/ClickHouse/ClickHouse/pull/22060) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* В конфигах графита для параметров `Age` и `Precision` должны увеличиваться с увеличением периода хранения данных. Теперь это проверяется, а неверный конфиг вызывает исключение. [#21496](https://github.com/ClickHouse/ClickHouse/pull/21496) ([Mikhail F. Shiryaev](https://github.com/Felixoid)).

* Исправлено неправильное возвращаемое значение функций `cutToFirstSignificantSubdomainCustom()` и `firstSignificantSubdomainCustom()` для доменов третьего уровня, присутствующих в списке пользовательских верхних уровней домена. Для входящих доменов, совпадающих с этими пользовательскими верхними уровнями домена, третий уровень был считался первым значимым. Это исправлено. Изменение может привести к несовместимости, если функция используется, например, как ключ шардинга. [#21946](https://github.com/ClickHouse/ClickHouse/pull/21946) ([Azat Khuzhin](https://github.com/azat)).* Колонка `keys` в таблице `system.dictionaries` была заменена колонками `key.names` и `key.types`. Колонки `key.names`, `key.types`, `attribute.names`, `attribute.types` из таблицы `system.dictionaries` больше не требуют загрузки словарей. [#21884](https://github.com/ClickHouse/ClickHouse/pull/21884) ([Maksim Kita](https://github.com/kitaisreal)).* Теперь реплики, обрабатывающие команду `ALTER TABLE ATTACH PART[ITION]`, ищут данные в своих папках `detached/` перед получением данных от других реплик. Как деталь реализации, в журнал повторяемых операций введена новая команда `ATTACH_PART`. Части ищутся и сравниваются по контрольной сумме. [#18978](https://github.com/ClickHouse/ClickHouse/pull/18978) ([Mike Kot](https://github.com/myrrc)). **Примечание:**  * Запросы `ATTACH PART[ITION]` могут не работать во время обновления кластера.
  * После выполнения запроса `ALTER ... ATTACH` в новой версии невозможно сделать откат к старой версии ClickHouse, так как старые серверы не смогут обработать запись `ATTACH_PART` в журнале повторяемых операций. 
  * В этой версии пустой `<remote_url_allow_hosts></remote_url_allow_hosts>` будет блокировать все доступы к удаленным хостам, в то время как в предыдущих версиях это ничего не делало. Если вы хотите сохранить старое поведение и у вас есть пустой элемент `remote_url_allow_hosts` в конфигурационном файле, удалите его. [#20058](https://github.com/ClickHouse/ClickHouse/pull/20058) ([Vladimir Chebotarev](https://github.com/excitoon)).

#### Новая функция
* Расширен диапазон значений типа `DateTime64`, чтобы поддерживать даты с 1925 по 2283 год. Улучшена поддержка типа `DateTime` около нулевой даты (`1970-01-01`). [#9404](https://github.com/ClickHouse/ClickHouse/pull/9404) ([alexey-milovidov](https://github.com/alexey-milovidov), [Vasily Nemkov](https://github.com/Enmk)). Некоторые функции времени и даты могут не работать для расширенного диапазона дат.
* Добавлена поддержка аутентификации Kerberos для заранее настроенных пользователей и HTTP-запросов (GSS-SPNEGO). [#14995](https://github.com/ClickHouse/ClickHouse/pull/14995) ([Denis Glazachev](https://github.com/traceon)).
* Добавлено новое настраиваемое поле `prefer_column_name_to_alias`, которое позволяет использовать оригинальные имена столбцов вместо псевдонимов. Это требуется для большей совместимости с правилами использования псевдонимов в других базах данных.Это решение для задач [#9715](https://github.com/ClickHouse/ClickHouse/issues/9715) и [#9887](https://github.com/ClickHouse/ClickHouse/issues/9887).  [#22044](https://github.com/ClickHouse/ClickHouse/pull/22044) ([Amos Bird](https://github.com/amosbird)).

* Добавлены функции `dictGetChildren(словарь, ключ)` и `dictGetDescendants(словарь, ключ, уровень)`.  Функция `dictGetChildren` возвращает всех потомков как массив индексов.  Это обратное преобразование для `dictGetHierarchy`.  Функция `dictGetDescendants` возвращает всех потомков, если бы `dictGetChildren` была применена рекурсивно `уровень` раз.  Ноль в качестве значения `уровня` эквивалентен бесконечному уровню.  Закрывает задачу [#14656](https://github.com/ClickHouse/ClickHouse/issues/14656).  [#22096](https://github.com/ClickHouse/ClickHouse/pull/22096) ([Maksim Kita](https://github.com/kitaisreal)).
* Добавлен новый источник словаря `executable_pool`.  Закрывает задачу [#14528](https://github.com/ClickHouse/ClickHouse/issues/14528).  [#21321](https://github.com/ClickHouse/ClickHouse/pull/21321) ([Maksim Kita](https://github.com/kitaisreal)).
* Добавлена таблицная функция `dictionary`.  Она работает так же, как движок `Dictionary`.  Закрывает задачу [#21560](https://github.com/ClickHouse/ClickHouse/issues/21560).  [#21910](https://github.com/ClickHouse/ClickHouse/pull/21910) ([Maksim Kita](https://github.com/kitaisreal)).
* Поддержана возможность использования типа `Nullable` для атрибута `PolygonDictionary`.  [#21890](https://github.com/ClickHouse/ClickHouse/pull/21890) ([Maksim Kita](https://github.com/kitaisreal)).
* Функции `dictGet` и `dictHas` теперь используют текущее имя базы данных, если оно не указано при создании словарей с помощью DDL.  Закрывает задачу [#21632](https://github.com/ClickHouse/ClickHouse/issues/21632).  [#21859](https://github.com/ClickHouse/ClickHouse/pull/21859) ([Maksim Kita](https://github.com/kitaisreal)).com/kitaisreal)).
 * Добавлена функция `dictGetOrNull`. Она работает как `dictGet`, но возвращает `null`, если ключ не найден в словаре. Закрывает [#22375](https://github.com/ClickHouse/ClickHouse/issues/22375). [#22413](https://github.com/ClickHouse/ClickHouse/pull/22413) ([Maksim Kita](https://github.com/kitaisreal)).
 * Добавлен асинхронный обновление в `ComplexKeyCache`, `SSDCache`, `SSDComplexKeyCache` словарях. Добавлена поддержка типа `Nullable` в `Cache`, `ComplexKeyCache`, `SSDCache`, `SSDComplexKeyCache` словарях. Добавлена поддержка получения нескольких атрибутов с помощью функций `dictGet`, `dictGetOrDefault`. Исправляет [#21517](https://github.com/ClickHouse/ClickHouse/issues/21517). [#20595](https://github.com/ClickHouse/ClickHouse/pull/20595) ([Maksim Kita](https://github.com/kitaisreal)).
 * Поддержана функция `dictHas` для `RangeHashedDictionary`. Исправляет [#6680](https://github.com/ClickHouse/ClickHouse/issues/6680). [#19816](https://github.com/ClickHouse/ClickHouse/pull/19816) ([Maksim Kita](https://github.com/kitaisreal)).
 * Добавлена функция `timezoneOf`, которая возвращает имя часового пояса для типов данных `DateTime` или `DateTime64`. Это не закрывает [#9959](https://github.com/ClickHouse/ClickHouse/issues/9959). Устранены несоответствия в названиях функций: добавлены псевдонимы `timezone` и `timeZone`, а также `toTimezone` и `toTimeZone`, `timezoneOf` и `timeZoneOf`. [#22001](https://github.com/ClickHouse/ClickHouse/pull/22001) ([alexey-milovidov](https://github.com/alexey-milovidov)).
 * Добавлен новый необязательный раздел `GRANTEES` для команд `CREATE/ALTER USER`. Он указывает пользователей или роли, которым разрешено получать привилегии от этого пользователя при условии, что этот пользователь имеет все необходимые права доступа с возможностью передачи.По умолчанию используется `GRANTEES ANY`, что означает, что пользователь с правом передачи может передать привилегии любому пользователю. Синтаксис: `CREATE USER ... GRANTEES {user | role | ANY | NONE} [, ...] [EXCEPT {user | role} [, ...]]`. [#21641](https://github.com/ClickHouse/ClickHouse/pull/21641) ([Vitaly Baranov](https://github.com/vitlibar)).

* Добавлен новый столбец `slowdowns_count` в `system.clusters`. При использовании сбалансированных запросов этот столбец показывает количество случаев, когда мы переходим к другой реплике, так как текущая реплика отвечает медленнее. Также показывается фактическое значение `errors_count` в `system.clusters`. [#21480](https://github.com/ClickHouse/ClickHouse/pull/21480) ([Kruglov Pavel](https://github.com/Avogar)).

* Добавлена виртуальная колонка `_partition_id` для движков `MergeTree*`. Разрешено использование `_partition_id` для удаления разделов. Добавлено функциональное выражение `partitionID()` для вычисления строки с идентификатором раздела. [#21401](https://github.com/ClickHouse/ClickHouse/pull/21401) ([Amos Bird](https://github.com/amosbird)).

* Добавлена функция `isIPAddressInRange`, которая проверяет, содержится ли IPv4 или IPv6 адрес в данном CIDR сетевом префиксе. [#21329](https://github.com/ClickHouse/ClickHouse/pull/21329) ([PHO](https://github.com/depressed-pho)).

* Добавлен новый SQL-командный запрос `ALTER TABLE 'table_name' UNFREEZE [PARTITION 'part_expr'] WITH NAME 'backup_name'`. Этот запрос необходим для правильного удаления "замороженных" разделов со всех дисков. [#21142](https://github.com/ClickHouse/ClickHouse/pull/21142) ([Павел Коваленко](https://github.com/Jokser)).

* Поддерживается неявное преобразование типа ключа для JOIN. [#19885](https://github.com).com/ClickHouse/ClickHouse/pull/19885) ([Владимир](https://github.com/vdimir)). #### Экспериментальная функциональность* Поддержка `RANGE OFFSET` фрейма (для оконных функций) для типов с плавающей запятой. Реализованы оконные функции `lagInFrame`/`leadInFrame`, аналогичные `lag`/`lead`, но учитывающие оконный фрейм. Они эквивалентны при использовании фрейма `between unbounded preceding and unbounded following`. Это закрывает [#5485](https://github.com/ClickHouse/ClickHouse/issues/5485). [#21895](https://github.com/ClickHouse/ClickHouse/pull/21895) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* Реализована нулевая репликация для `ReplicatedMergeTree` через хранилище S3. [#16240](https://github.com/ClickHouse/ClickHouse/pull/16240) ([ianton-ru](https://github.com/ianton-ru)).
* Добавлена возможность миграции существующего диска S3 на схему с возможностями резервного копирования и восстановления. [#22070](https://github.com/ClickHouse/ClickHouse/pull/22070) ([Pavel Kovalenko](https://github.com/Jokser)).#### Улучшение производительности  
* Поддержка параллельного форматирования в `clickhouse-local` и во всех остальных местах. [#21630](https://github.com/ClickHouse/ClickHouse/pull/21630) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).  
* Поддержка параллельной расшифровки для форматов `CSVWithNames` и `TSVWithNames`. Это закрывает [#21085](https://github.com/ClickHouse/ClickHouse/issues/21085). [#21149](https://github.com/ClickHouse/ClickHouse/pull/21149) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).  
* Включение чтения с использованием mmap IO для диапазонов файлов от 64 МБ (настройка `min_bytes_to_use_mmap_io`). Это может привести к умеренному повышению производительности. [#22326](https://github.com/ClickHouse/ClickHouse/pull/22326) ([alexey-milovidov](https://github.com/alexey-milovidov)).  
* Добавление кэша для файлов, считываемых с помощью настройки `min_bytes_to_use_mmap_io`. Это обеспечивает значительное (более чем в два раза) повышение производительности при маленьких значениях настройки за счет избежания частых вызовов mmap/munmap и последующих ошибок страниц. Обратите внимание, что использование mmap IO имеет серьезные недостатки, делающие его менее надёжным в продакшне (например, зависание или SIGBUS на дефектных дисках; меньший контроль использования памяти). Тем не менее, это хорошо проявляет себя в бенчмарках. [#22206](https://github.com/ClickHouse/ClickHouse/pull/22206) ([alexey-milovidov](https://github.com/alexey-milovidov)).  
* Избегание ненужного копирования данных при использовании кодека `NONE`.Пожалуйста, обратите внимание, что кодек `NONE` в большинстве случаев бесполезен — рекомендуется всегда использовать сжатие (`LZ4` по умолчанию). Несмотря на общее мнение, отключение сжатия может не повысить производительность (возможен противоположный эффект). Кодек `NONE` полезен в некоторых случаях:

- Когда данные не могут быть сжаты;
- Для синтетических бенчмарков.

[#22145](https://github.com/ClickHouse/ClickHouse/pull/22145) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Ускорение операции `GROUP BY` при маленьких значениях `max_rows_to_group_by` и режиме переполнения `group_by_overflow_mode='any'`.

[#21856](https://github.com/ClickHouse/ClickHouse/pull/21856) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).

* Оптимизация производительности запросов типа `SELECT ... FINAL ... WHERE`. Теперь в запросах с `FINAL` можно перемещать столбцы, входящие в ключ сортировки, в `PREWHERE`.

[#21830](https://github.com/ClickHouse/ClickHouse/pull/21830) ([foolchi](https://github.com/foolchi)).

* Улучшение производительности путём замены `memcpy` на другую реализацию. Это закрывает [#18583](https://github.com/ClickHouse/ClickHouse/issues/18583).

[#21520](https://github.com/ClickHouse/ClickHouse/pull/21520) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Улучшение производительности агрегации в порядке сортировочного ключа (при включённой настройке `optimize_aggregation_in_order`).

[#19401](https://github.com/ClickHouse/ClickHouse/pull/19401) ([Anton Popov](https://github.com/CurtizJ)).

#### Улучшение

Добавлен пул соединений для движка таблиц/баз данных PostgreSQL и источника словарей. Должно исправить [#21444](https://github.com/ClickHouse/ClickHouse/issues/21444).[#21839](https://github.com/ClickHouse/ClickHouse/pull/21839) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Поддержка непредопределенной схемы таблицы для хранилища/postgres-функции. Закрывает [#21701](https://github.com/ClickHouse/ClickHouse/issues/21701). [#21711](https://github.com/ClickHouse/ClickHouse/pull/21711) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Поддержка приоритета реплик для источника словарей PostgreSQL. [#21710](https://github.com/ClickHouse/ClickHouse/pull/21710) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Введено новое настроение слияния `min_bytes_to_rebalance_partition_over_jbod`, которое позволяет назначать новые части на различные диски объема JBOD в балансированном порядке. [#16481](https://github.com/ClickHouse/ClickHouse/pull/16481) ([Amos Bird](https://github.com/amosbird)).
  * Добавлены значения `Grant`, `Revoke` и `System` столбца `query_kind` для соответствующих запросов в `system.query_log`. [#21102](https://github.com/ClickHouse/ClickHouse/pull/21102) ([Vasily Nemkov](https://github.com/Enmk)).
  * Разрешена настройка тайм-аутов для HTTP-соединений, используемых для репликации, независимо от других HTTP-тайм-аутов. [#20088](https://github.com/ClickHouse/ClickHouse/pull/20088) ([nvartolomei](https://github.com/nvartolomei)).
  * Улучшено сообщение об ошибке в клиенте в случае исключения во время записи блоков сервером. В предыдущих версиях клиент мог получить вводящее в заблуждение сообщение типа `Данные сжаты с использованием различных методов`. [#22427](https://github.com/ClickHouse/ClickHouse/pull/22427) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Исправлено сообщение об ошибке `Directory tmp_fetch_XXX уже существует`, которое могло возникнуть после неудачной загрузки части.Удаление временной директории загрузки, если она уже существует. Исправляет [#14197](https://github.com/ClickHouse/ClickHouse/issues/14197). [#22411](https://github.com/ClickHouse/ClickHouse/pull/22411) ([nvartolomei](https://github.com/nvartolomei)).
* Исправление отчета MSan для функции `range` с аргументом `UInt256` (поддержка больших целых чисел экспериментальная). Это закрывает [#22157](https://github.com/ClickHouse/ClickHouse/issues/22157). [#22387](https://github.com/ClickHouse/ClickHouse/pull/22387) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Добавлен столбец `current_database` в таблицу `system.processes`. Содержит текущую базу данных запроса. [#22365](https://github.com/ClickHouse/ClickHouse/pull/22365) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* Добавлено регистронезависимое поиск истории/навигации и перемещение по подсловам в `clickhouse-client`. [#22105](https://github.com/ClickHouse/ClickHouse/pull/22105) ([Amos Bird](https://github.com/amosbird)).
* Если кортеж из NULL значений, например `(NULL, NULL)` находится слева от оператора `IN`, а справа находятся кортежи с непустыми значениями, например `SELECT (NULL, NULL) IN ((0, 0), (3, 1))`, то вместо выброса исключения о неконсистентных типах следует вернуть 0. Эта конструкция может возникать при оптимизации запросов типа `SELECT (NULL, NULL) = (8, 0) OR (NULL, NULL) = (3, 2) OR (NULL, NULL) = (0, 0) OR (NULL, NULL) = (3, 1)`. Это закрывает [#22017](https://github.com/ClickHouse/ClickHouse/issues/22017). [#22063](https://github.com/ClickHouse/ClickHouse/pull/22063) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Обновлена используемая версия simdjson до 0.9.1. Это исправляет [#21984](https://github.com/ClickHouse/ClickHouse/issues/21984). [#22057](https://github.com/ClickHouse/ClickHouse/pull/22057) ([Vitaly Baranov](https://github.com/vitlibar)).* Добавлены регистронезависимые псевдонимы для функций `CONNECTION_ID()` и `VERSION()`. Это исправляет [#22028](https://github.com/ClickHouse/ClickHouse/issues/22028). [#22042](https://github.com/ClickHouse/ClickHouse/pull/22042) ([Eugene Klimov](https://github.com/Slach)).
* Добавлена опция `strict_increase` к функции `windowFunnel` для вычисления каждого события один раз (решает [#21835](https://github.com/ClickHouse/ClickHouse/issues/21835)). [#22025](https://github.com/ClickHouse/ClickHouse/pull/22025) ([Vladimir](https://github.com/vdimir)).
* Если ключ раздела таблицы `MergeTree` не включает столбцы `Date` или `DateTime`, но содержит точно один столбец `DateTime64`, его значения должны выводиться в столбцах `min_time` и `max_time` таблиц `system.parts` и `system.parts_columns`. Добавлены столбцы `min_time` и `max_time` в таблицу `system.parts_columns` (ранее было несоответствие между таблицами `system.parts` и `system.parts_columns`). Это закрывает [#18244](https://github.com/ClickHouse/ClickHouse/issues/18244). [#22011](https://github.com/ClickHouse/ClickHouse/pull/22011) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Поддержана установка параметра `replication_alter_partitions_sync=1` в `clickhouse-copier` для перемещения разделов из вспомогательной таблицы в целевую. Уменьшены значения по умолчанию для таймаутов. Исправляет [#21911](https://github.com/ClickHouse/ClickHouse/issues/21911). [#21912](https://github.com/ClickHouse/ClickHouse/pull/21912) ([turbo jason](https://github.com/songenjie)).
* Отображение пути к директории данных таблиц типа `EmbeddedRocksDB` в системных таблицах. [#21903](https://github.com/ClickHouse/ClickHouse/pull/21903) ([tavplubix](https://github.com/tavplubix)).
* Добавлено событие профиля `HedgedRequestsChangeReplica`, изменено время ожидания чтения данных с секунд на миллисекунды.[#21886](https://github.com/ClickHouse/ClickHouse/pull/21886) ([Kruglov Pavel](https://github.com/Avogar)).
  * Диск S3 (экспериментальная функциональность, находящаяся в разработке). Исправлена проблема с невозможностью перемещения директорий, если место назначения не пустое и используется кэширование дисков. [#21837](https://github.com/ClickHouse/ClickHouse/pull/21837) ([Pavel Kovalenko](https://github.com/Jokser)).
  * Лучшее отформатированное представление типов данных `Array` и `Map` в веб-интерфейсе. [#21798](https://github.com/ClickHouse/ClickHouse/pull/21798) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Обновление кластеров происходит только при наличии обновлённых конфигураций. [#21685](https://github.com/ClickHouse/ClickHouse/pull/21685) ([Kruglov Pavel](https://github.com/Avogar)).
  * Пропагация параметров запроса и сессии для распределённых DDL-запросов. Установите значение `distributed_ddl_entry_format_version` равным 2 для активации этой возможности. Добавлен параметр `distributed_ddl_output_mode`. Поддерживаемые режимы: `none`, `throw` (по умолчанию), `null_status_on_timeout` и `never_throw`. Различные исправления и улучшения для базового движка `Replicated`. [#21535](https://github.com/ClickHouse/ClickHouse/pull/21535) ([tavplubix](https://github.com/tavplubix)).
  * Если `PODArray` был создан с размером элемента, который ни является дробью, ни кратным 16, возможна переполнение буфера. В текущих выпусках нет ошибок. [#21533](https://github.com/ClickHouse/ClickHouse/pull/21533) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Добавлены колонки `last_error_time`, `last_error_message`, `last_error_stacktrace`, `remote` для таблицы `system.errors`. [#21529](https://github.com/ClickHouse/ClickHouse/pull/21529) ([Azat Khuzhin](https://github.com/azat)).* Добавлены псевдонимы `simpleJSONExtract/simpleJSONHas` для `visitParam/visitParamExtract{UInt, Int, Bool, Float, Raw, String}`. Исправляет #21383.  [#21519](https://github.com/ClickHouse/ClickHouse/pull/21519). ([fastio](https://github.com/fastio)).
* Добавлены настройки `optimize_skip_unused_shards_limit` для ограничения количества значений ключа шардинга для `optimize_skip_unused_shards`.  [#21512](https://github.com/ClickHouse/ClickHouse/pull/21512) ([Azat Khuzhin](https://github.com/azat)).
* Улучшено поведение `clickhouse-format`, чтобы исключения не выбрасывались при наличии лишних пробелов или комментариев после последнего запроса, а также выбрасывалось исключение с понятным сообщением рано при использовании формата `ASTInsertQuery` с данными.  [#21311](https://github.com/ClickHouse/ClickHouse/pull/21311) ([flynn](https://github.com/ucasFL)).
* Улучшена поддержка целочисленных ключей в типе данных `Map`.  [#21157](https://github.com/ClickHouse/ClickHouse/pull/21157) ([Anton Popov](https://github.com/CurtizJ)).
* Реализовано попытание повторного соединения с MySQL при потере соединения в `MaterializeMySQL`.  [#20961](https://github.com/ClickHouse/ClickHouse/pull/20961) ([Håvard Kvålen](https://github.com/havardk)).
* Поддержано больше случаев для преобразования `CROSS JOIN` в `INNER JOIN`.  [#20392](https://github.com/ClickHouse/ClickHouse/pull/20392) ([Vladimir](https://github.com/vdimir)).
* При включенной настройке `optimize_on_insert` пустые части не создаются при выполнении команды `INSERT`. Исправляет проблему [#20304](https://github.com/ClickHouse/ClickHouse/issues/20304).  [#20387](https://github.com/ClickHouse/ClickHouse/pull/20387) ([Kruglov Pavel](https://github.com/Avogar)).
* В `MaterializeMySQL` добавлена минимаксная пропускная индексация для столбца `_version`.  [#20382](https://github.com/ClickHouse/ClickHouse/pull/20382).```markdown
#### Новое

* Добавлена опция `--backslash` для `clickhouse-format`, которая может добавлять обратную косую черту `\` в конце каждой строки отформатированного запроса.  [#21494](https://github.com/ClickHouse/ClickHouse/pull/21494) ([flynn](https://github.com/ucasFL)).
* Теперь ClickHouse не будет выбрасывать исключение `LOGICAL_ERROR`, когда мы пытаемся мутировать уже покрытую часть.  Исправляет проблему [#22013](https://github.com/ClickHouse/ClickHouse/issues/22013).  [#22291](https://github.com/ClickHouse/ClickHouse/pull/22291) ([alesapin](https://github.com/alesapin)).

#### Исправление ошибок

* Удалён сокет из epoll перед отменой пакетного приемника в `HedgedConnections`, чтобы предотвратить возможную гонку.  Исправляет [#22161](https://github.com/ClickHouse/ClickHouse/issues/22161).  [#22443](https://github.com/ClickHouse/ClickHouse/pull/22443) ([Kruglov Pavel](https://github.com/Avogar)).
* Добавлено (утраченное) учёта памяти в параллельных процедурах анализа данных.  В предыдущих версиях была возможность выхода за пределы выделенной памяти при наличии очень больших блоков данных в результирующем наборе.  Это закрывает [#22008](https://github.com/ClickHouse/ClickHouse/issues/22008).  [#22425](https://github.com/ClickHouse/ClickHouse/pull/22425) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Исправлено исключение, которое может возникнуть при выполнении запроса `SELECT` с постоянным условием `WHERE`, если столбцы исходной таблицы имеют названия, состоящие из цифр.  [#22270](https://github.com/ClickHouse/ClickHouse/pull/22270) ([LiuNeng](https://github.com/liuneng1994)).
* Исправлено отменение запроса с `use_hedged_requests=0` и `async_socket_for_remote=1`.  [#22183](https://github.com/ClickHouse/ClickHouse/pull/22183)

Убедитесь, что все ссылки и форматирование остаются корректными.com/ClickHouse/ClickHouse/pull/22183) (Azat Khuzhin).

  • Исправлено непойманное исключение в InterserverIOHTTPHandler. #22146 (Azat Khuzhin).

  • Исправлен вход в контейнер Docker в случае, когда http_port отсутствует в конфигурации. #22132 (Ewout).

  • Исправлено сообщение об ошибке Недопустимое количество строк в Chunk при использовании JOIN с TOTALS и arrayJoin. Закрывает #19303. #22129 (Vladimir).

  • Исправлено имя фонового пула потоков, который используется для получения сообщений из Kafka. Контейнер Kafka с поврежденным пулом потоков не будет получать сообщения из очереди сообщений. #22122 (fastio).

  • Исправлено ожидание завершения запросов OPTIMIZE и ALTER для движков таблиц ReplicatedMergeTree. Теперь запрос не будет зависеть, если таблица была отсоединена или перезапущена. #22118 (alesapin).

  • Отключено использование async_socket_for_remote/use_hedged_requests для баггожных ядер Linux. #22109 (Azat Khuzhin).

  • Вход в контейнер Docker: избежать изменения владельца файла . в случае, если LOG_PATH пустой. Закрывает #22100. #22102 (filimonov).* В функции decrypt отсутствовало проверочное условие минимального размера данных, зашифрованных в режиме AEAD. Это закрывает #21897. #22064 (alexey-milovidov).

  • В редких случаях объединение для CollapsingMergeTree может создать гранулу с количеством строк равным index_granularity + 1. Из-за этого внутренняя проверка, добавленная в #18928 (влияет на версии 21.2 и 21.3), может завершиться ошибкой Incomplete granules are not allowed while blocks are granules size. Эта ошибка не позволяла частям объединяться. #21976 (Nikolai Kochetov).

  • Отменено #15454, которое могло привести к значительному увеличению использования памяти при загрузке внешних словарей типа хэша. Это закрывает #21935. #21948 (Maksim Kita).

  • Предотвращены перекрывающиеся соединения (Unknown packet 9 from server ошибка). #21941 (Azat Khuzhin).

  • Устранена проблема чтения HTTP POST запроса с типом содержимого "multipart/form-data" в некоторых случаях. #21936 (Ivan).* Устранена неправильная сортировка результатов ORDER BY, когда запрос содержит оконные функции, а также применена оптимизация для чтения в порядке первичного ключа. Исправляет #21828. #21915 (Alexander Kuzmenkov).* Устранена проблема с зависшим процессом при первом запуске моделирования с помощью CatBoost. Закрывает #13832. #21844 (Kruglov Pavel).* Устранена некорректная обработка запроса (и возможный сбой программы), который мог произойти при вынесении условия WHERE или HAVING перед GROUP BY. Исправляет #21773.

  • Улучшена обработка ошибок и логирование в WriteBufferFromS3. #21836 (Павел Коваленко).

  • Исправлены возможные сбои в агрегирующих функциях с комбинатором Distinct, при использовании двухуровневой агgregation. Это последующее исправление #18365. Может быть воспроизведено только в среде производства. #21818 (Амос Бирд).

  • Исправлен анализ индекса скалярного подзапроса. Это исправляет #21717, которое было введено в #18896. #21766 (Амос Бирд).

  • Исправлен баг для таблиценных движков ReplicatedMerge, когда запрос ALTER MODIFY COLUMN не меняет тип столбца Decimal, если его размер (32 бита или 64 бита) не изменяется. #21728 (Alesapin).

  • Исправлен возможный случай бесконечного ожидания при одновременном выполнении команд OPTIMIZE и DROP для ReplicatedMergeTree. #21716 (Азат Хузин).

  • Исправлена работа функции arrayElement с типом Map для константных целочисленных аргументов. #21699.com/ClickHouse/ClickHouse/pull/21699) (Антон Попов).

  • Исправлено SIGSEGV при обращении к несуществующим атрибутам от ip_trie с access_to_key_from_attributes. #21692 (Азат Хузин).

  • Сервер теперь начинает принимать соединения только после инициализации DDLWorker и словарей. #21676 (Азат Хузин).

  • Добавлена конвертация типа ключей таблиц типа Join (ранее приводила к SIGSEGV). #21646 (Азат Хузин).

  • Исправлено отмену распределённых запросов (например простого выбора из нескольких шардов с ограничением, то есть select * from remote('127.{2,3}', system.numbers) limit 100) с async_socket_for_remote=1. #21643 (Азат Хужин).

  • Исправлено fsync_part_directory для горизонтального слияния. #21642 (Азат Хужин).

  • Удалены неизвестные столбцы из объединенной таблицы в WHERE для запросов к внешним базам данных (MySQL, PostgreSQL). Закрывает #14614, закрывает #19288 (дубликат), закрывает #19645 (дубликат). #21640 (Владимир).

  • Вызов std::terminate, если произошла ошибка записи данных в S3. #21624 (Владимир).* Исправление возможной ошибки Не удалось найти столбец при активированном optimize_skip_unused_shards и использовании нулевых шардов. #21579 (Азат Хужин).

  • В случае постоянного условия WHERE запроса и активированного параметра optimize_skip_unused_shards все шарды могут быть пропущены, что может привести к неверному пустому результату. #21550 (Амос Бирд).

  • Исправление функции таблицы clusterAllReplicas, которая возвращает неверное значение _shard_num. закрывает #21481. #21498 (флайн).

  • Исправление хранения старых учетных данных S3 после обновления конфигурации. #21457 (Григорий Перваков).

  • Исправление гонки на объекте SSL внутри SecureSocket в Poco. #21456 (Никита Михайлов).

  • Исправление парсинга формата Avro для Kafka. исправляет #21437. #21438 (Илья Гольштейн).

  • Исправление приема и отправки таймаутов и неблокирующего чтения в защищённом сокете. #21429 (Павел Круглов).

  • Флаг force_drop_table не работал для MATERIALIZED VIEW, это исправлено. Исправляет #18943. #20626.com/ClickHouse/ClickHouse/pull/20626) (tavplubix).

    • Исправлена проблема с коллизиями в имени PredicateRewriteVisitor. Это приводило к некорректной фильтрации WHERE после полного соединения. Закрывает #20497. #20622 (Vladimir).

Улучшение сборки/тестирования/пакетирования

  • Добавлены тесты Jepsen для ClickHouse Keeper. #21677 (alesapin).

  • Параллельное выполнение бесостоятельного тестирования в CI. В зависимости от #22181. #22300 (alesapin).

  • Активировано проверочное состояние для SQLancer CI запуска. #22015 (Ilya Yatsishin).

  • Несколько подготовок для сборки PowerPC: Включение встроенной версии openldap на ppc64le. #22487 (Kfir Itzhak). Включение компиляции на ppc64le с использованием Clang. #22476 (Kfir Itzhak). Устранение проблем при компиляции Boost на ppc64le. #22474 (Kfir Itzhak). Устранение ошибки CMake относительно внутренней переменной CMake CMAKE_ASM_COMPILE_OBJECT, которая не установлена на ppc64le. #22469 (Kfir Itzhak). Устранение проблемы с отсутствием libclang_rt.builtins на ppc64le в Fedora/RHEL/CentOS. #22458.com/ClickHouse/ClickHouse/pull/22458) (Kfir Itzhak). Включение сборки с использованием jemalloc на ppc64le. #22447 (Kfir Itzhak). Устранение проблем с внедрением конфигурации ClickHouse и временных зон cctz на ppc64le. #22445 (Kfir Itzhak). Устранение проблем компиляции на ppc64le и использование правильного регистра указателя команд на ppc64le. #22430 (Kfir Itzhak).

  • Возобновление активации библиотеки S3 (AWS) на aarch64. #22484 (Kfir Itzhak).

  • Добавлен tzdata в контейнеры Docker, так как чтение формата ORC требует его. Это закрывает #14156. #22000 (alexey-milovidov).

  • Введение двух аргументов в Dockerfile образа clickhouse-server: deb_location и single_binary_location. #21977 (filimonov).

  • Разрешение использования clang-tidy с выпусковыми сборками путём включения утверждений при его использовании. #21914 (alexey-milovidov).

  • Добавление имени бинарников LLVM-12 для поиска в скриптах CMake. Неявное преобразование констант для глушения предупреждений Clang. Обновление подмодулей для сборки с CMake 3.19. Глушение рекурсии в расширении макроса в библиотеке readpassphrase.Изменение устаревшего флага -fuse-ld на --ld-path для Clang. #21597 (Ilya Yatsishin).

  • Обновление файла docker/test/testflows/runner/dockerd-entrypoint.sh, чтобы использовать прокси Yandex для DockerHub, поскольку Docker Hub активировал очень строгие ограничения скорости. #21551 (vzakaznikov).

  • Устранение проблемы сборки общих библиотек macOS. #20184 (nvartolomei).

  • Добавление опции ctime к команде zookeeper-dump-tree. Это позволяет выгрузить время создания узла. #21842 (Ilya).

Выпуск ClickHouse 21.3 (LTS)### Выпуск ClickHouse v21.3, 2021-03-12

Неразрывные изменения обратной совместимости

  • Теперь создание таблиц типа MergeTree в старой синтаксической форме с указанием TTL игнорируется. При этом присоединение старых таблиц всё ещё возможно. #20282 (alesapin).

  • Теперь все функциональные названия, нечувствительные к регистру букв, будут преобразованы в каноническое представление. Это необходимо для маршрутизации запросов проекций (внедряемое в будущем). #20174 (Amos Bird).

  • Исправлено создание TTL в случаях, когда его выражение является функцией и совпадает с ключом ORDER BY. Теперь можно установить пользовательскую агрегацию для первичных ключевых столбцов в TTL с помощью GROUP BY. Неразрывные изменения обратной совместимости: Для первичных ключевых столбцов, которые не находятся в GROUP BY и явно не указаны, теперь применяется функция any вместо max, когда TTL истёк. Также при использовании TTL вместе с WHERE или GROUP BY могут возникнуть исключения во время слияний при выполнении роллингового обновления. #15450 (Anton Popov).#### Новое функциональное решение
    Добавлены настройки файла движка: engine_file_empty_if_not_exists и engine_file_truncate_on_insert. #20620 (M0r64n).
    Добавлена агрегирующая функция deltaSum для суммирования разностей между последовательными строками. #20057 (Russ Frank).
    Добавлена новая колонка event_time_microseconds в таблице system.part_log. #20027 (Bharat Nallan).
    Добавлена функция timezoneOffset(datetime), которая возвращает смещение от UTC в секундах. Это закрывает задачу #issue:19850. #19962 (keenwolf).
    Добавлена настройка insert_shard_id для поддержки вставки данных в конкретный шард из распределённой таблицы. #19961 (flynn).
    Функция reinterpretAs обновлена для поддержки больших целых чисел. Исправляет #19691. #19858 (Maksim Kita).
    Поддержана клиентская сторона шифрования ключей пользователя (голова x-amz-server-side-encryption-customer-(key/md5)). См. ссылку. Закрывает #19428. #19748 (Vladimir Chebotarev).
    Добавлена опция implicit_key для источника словаря executable.Она позволяет избежать печати ключа для каждой записи, если записи приходят в том же порядке, что и входные ключи. Реализует #14527. #19677 (Maksim Kita).

  • Добавлены типы квот query_selects и query_inserts. #19603 (JackyWoo).

  • Добавлена функция extractTextFromHTML. #19600 (zlx19950903), (alexey-milovidov).

  • Таблицы с движком MergeTree* теперь имеют два новых настроек уровня таблицы для контроля параллелизма запросов. Настройка max_concurrent_queries ограничивает количество одновременно выполняемых запросов, связанных с этой таблицей. Настройка min_marks_to_honor_max_concurrent_queries указывает применять предыдущую настройку только в том случае, если запрос читает хотя бы это количество маркеров. #19544 (Amos Bird).* Добавлено функциональное выражение file, которое позволяет считывать файл из директории user_files как строку. Это отличается от функциональной таблицы file. Это реализует #issue:18851. #19204 (keenwolf).

Экспериментальная функциональность

  • Добавлен экспериментальный базовый движок Replicated, который реплицирует запросы DDL между несколькими хостами. #16193 (tavplubix).
  • Введена экспериментальная поддержка оконных функций, включаемых с помощью allow_experimental_window_functions = 1. Это предварительная реализация качества альфа, которая не предназначена для использования в производстве и будет меняться способами, несовместимыми с обратной совместимостью в будущих выпусках. Для получения списка поддерживаемых функций см. документацию. #20337 (Alexander Kuzmenkov).
  • Добавлена возможность резервного копирования/восстановления метаданных файлов для DiskS3. #18377 (Pavel Kovalenko).#### Улучшение производительности
    Добавлена возможность отложенных запросов к удалённым данным. При включении параметра use_hedged_requests (по умолчанию выключено), позволяет установить множество соединений с различными репликами для выполнения запроса. Новое соединение будет установлено, если текущее соединение с репликой не было установлено в течение времени hedged_connection_timeout, либо данные не были получены в течение времени receive_data_timeout. Запрос использует первое соединение, которое отправляет пакет прогресса, содержащий непустую информацию (или пакет данных, если параметр allow_changing_replica_until_first_data_packet активирован); остальные соединения будут отменены. Поддерживаются запросы с max_parallel_replicas > 1. #19291 (Круглов Павел). Это позволяет значительно снизить хвостовые задержки на очень больших кластерах.

Добавлена поддержка PREWHERE (и включение соответствующей оптимизации) при наличии выражений уровня строки безопасности для таблиц. #19576 (Денис Глазачев).

Параметр distributed_aggregation_memory_efficient теперь включен по умолчанию. Он снижает использование памяти и повышает производительность распределённых запросов. #20599 (alexey-milovidov).* Улучшена производительность оператора GROUP BY для множества ключей фиксированного размера. #20472 (alexey-milovidov).

  • Улучшена производительность агрегирующих функций за счет более строгого использования псевдонимов. #19946 (alexey-milovidov).

  • Ускорена скорость чтения из таблиц типа Memory в крайних случаях (когда скорость чтения составляет порядка 50 ГБ/с) путём упрощения конвейера и (следовательно) снижения коллизий блокировки при планировании конвейера. #20468 (alexey-milovidov).

  • Частично перепроимплементирован HTTP-сервер для минимизации копирования входящих и исходящих данных. Это даёт до 1.5-кратное увеличение производительности при вставке длинных записей через HTTP. #19516 (Иван).

  • Добавлен параметр compress для таблиц типа Memory. При его активации таблица будет использовать меньше ОЗУ. На некоторых машинах и наборах данных это также может повысить производительность выборки, но это не всегда так. Закрывает #20093. Примечание: есть причины, почему таблицы Memory могут работать медленнее, чем MergeTree: (1) отсутствие сжатия (2) статический размер блоков (3) отсутствие индексов и предварительной выборки. #20168 (alexey-milovidov).com/alexей-mиловичов)).* Легкое улучшение кода в агрегации. #20978 (alexey-milovidov).

  • Возврат специализаций intDiv/modulo для повышения производительности. Это исправляет #21293. Регрессия была введена в https://github.com/ClickHouse/ClickHouse/pull/18145. #21307 (Amos Bird).

  • Не объединять блоки слишком плотно при выполнении INSERT SELECT, если данные вставляются в таблицу Memory. В предыдущих версиях нерациональное представление данных создавалось в таблице Memory после INSERT SELECT. Это закрывает #13052. #20169 (alexey-milovidov).

  • Исправление хотя бы одного случая, когда парсер типа данных может иметь экспоненциальную сложность (найдено с помощью фузера). Это закрывает #20096. #20132 (alexey-milovidov).

  • Параллелизация SELECT с FINAL для одной части с уровнем > 0 при установке параметра do_not_merge_across_partitions_select_final равным 1. #19375 (Kruglov Pavel).

  • Заполнение только запрошенных столбцов при запросе system.parts и system.parts_columns. Закрывает #19570. #21035 (Anmol Arora).* Выполнение алгебраических оптимизаций арифметических выражений внутри агрегирующей функции avg. Закрывает #20092. #20183 (flynn).#### Улучшение

  • Неделимые методы сжатия в нижнем и верхнем регистрах для таблиц функций. Также исправлен метод сжатия LZMA, который проверялся в верхнем регистре. #21416 (Vladimir Chebotarev).

  • Добавлены два настраиваемых параметра для задержки или выброса ошибки при вставке данных, если слишком много неактивных частей. Это полезно, когда сервер не может быстро очистить части. #20178 (Amos Bird).

  • Улучшена совместимость для клиентов MySQL: 1. JDBC для MySQL; 2. mycli. #21367 (Amos Bird).

  • Запрещено удалять столбец, если он используется в материализованном представлении. Закрыто #21164. #21303 (flynn).

  • Источник словаря MySQL теперь будет повторно пытаться установить соединение после непредвиденного отключения (потеря соединения с сервером MySQL во время запроса), что иногда происходит на соединениях SSL/TLS. #21237 (Alexander Kazakov).* Улучшение удобства использования: более последовательное парсинг DateTime64: распознавание случаев, когда Unix-таймстамп с подсекундной разрешающей способностью указан как масштабированное целое число (например, 1111111111222 вместо 1111111111.222). Это закрывает #13194. #21053 (alexey-milovidov).

  • Выполнение только слияния отсортированных блоков на инициаторе с использованием параметра distributed_group_by_no_merge. #20882 (Azat Khuzhin).

  • При загрузке конфигурации для источника MySQL ClickHouse теперь случайным образом перемешивает список реплик с одинаковым приоритетом, чтобы обеспечить логику выбора MySQL конечной точки по круговой системе. Это закрывает #20629. #20632 (Alexander Kazakov).

  • Функция 'reinterpretAs(x, Type)' переименована в 'reinterpret(x, Type)'. #20611 (Maksim Kita).* Добавлена поддержка виртуальных хостов для движка RabbitMQ. #20576

  • Улучшена сериализация для данных, объединённых типами Array и Tuple. Улучшено соответствие enum типов данных с прототипом protobuf enum. Временно отключены значения при сериализации типа Map. Теперь отсутствующие значения по умолчанию устанавливаются автоматически. #20506 (Виталий Баранов)

  • Устранена проблема гонки между выполнением распределённых задач DDL и очисткой очереди DDL. Теперь задача DDL не может быть удалена из ZooKeeper, если есть активные рабочие процессы. Исправляет #20016. #20448 (tavplubix)

  • Устранена возможность раннего свёртывания констант для явно запрещённых функций. #20303 (Азат Хузин)

  • Неявное преобразование целого числа в тип Decimal теперь завершается ошибкой ARGUMENT_OUT_OF_BOUND, если значение целого числа не помещается в тип Decimal. #20232 (tavplubix)

  • Бесблоковый SYSTEM FLUSH DISTRIBUTED. #20215 (Азат Хузин)

  • Нормализованы запросы count(constant) и sum(1) до count(). Это необходимо для маршрутизации запросов проекций. #20175 (Амос Бирд)* Поддержка всех нативных целых типов данных в функциях битовой карты. #20171 (Amos Bird).

  • Обновлены CacheDictionary, ComplexCacheDictionary, SSDCacheDictionary, SSDComplexKeyDictionary для использования LRUHashMap как базового индекса. #20164 (Maxim Kita).

  • Настройка access_management теперь настраивается при старте через предоставление CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT, по умолчанию выключена (0). #20139 (Marquitos).

  • Исправление для toDateTime64(toDate() / toDateTime()) для DateTime64 — Реализация ограничения значений DateTime64 для совпадения с поведением DateTime. #20131 (Azat Khuzin).

  • Улучшения квот: SHOW TABLES теперь рассматривается как один запрос в расчетах квот, а не два запроса. Запросы SYSTEM теперь учитываются при использовании квот. Исправлено вычисление конца интервала при использовании квот. #20106 (Vitaliy Baranov).

  • Поддержка выражений path IN (множество) для таблицы system.zookeeper. #20105 (Xiao Lu).

  • Отображение полной информации о таблицах MaterializeMySQL в system.tables. #20051 (Stig Bakken).* Исправлено изменение данных в исполняющемся словаре, которое стало возможным только при неправильном использовании (например, когда скрипт возвращает данные, игнорируя входные данные). #20045 (alexey-milovidov).

  • Теперь значение опции MYSQL_OPT_RECONNECT можно контролировать параметром "opt_reconnect" в секции конфигурации MySQL реплики. #19998 (Александр Казаков).

  • При вызове функции JSONExtract с типом Float32 теперь допускается неточное преобразование в тип результата. Например, число 0.1 в JSON имеет двойную точность и не может быть точно представлено в виде Float32, но пользователю всё равно требуется получить его. Предыдущие версии возвращали 0 для не.Nullable типа и NULL для Nullable типа, чтобы указать, что преобразование неточно. Логика была полностью корректной, но она удивляла пользователей и приводила к вопросам. Это закрывает #13962. #19960 (alexey-milovidov).

  • Добавлена конвертация структуры блока для INSERT в распределённые таблицы, если они не совпадают. #19947 (Азат Хузин).

  • Улучшено представление таблицы system.distributed_ddl_queue. Инициализация MaxDDLEntryID последним значением после перезапуска. До этого pull request'а значение MaxDDLEntryID оставалось нулём до обработки нового DDLTask. #19924com/ClickHouse/ClickHouse/pull/19924) (Аmos Bird)* Отображение таблиц MaterializeMySQL в system.parts. #19770 (Stig Bakken).

  • Добавление отдельной директивы конфигурации для профиля Buffer. #19721 (Azat Khuzhin).

  • Перемещение условий, не связанных с JOIN, в раздел WHERE. #18720. #19685 (hexiaoting).

  • Добавление возможности ограничивать скорость выполнения команд INSERT в распределенной системе на основе количества ожидающих байтов для асинхронной отправки (bytes_to_delay_insert/max_delay_to_insert и bytes_to_throw_insert настройки для движка Distributed). #19673 (Azat Khuzhin).

  • Устранение некоторых редких случаев игнорирования ошибок записи в деструкторах. #19451 (Azat Khuzhin).

  • Вывод внутренних кадров в трассировках стека при возникновении критических ошибок. #19317 (Ivan).

Исправление ошибки

  • Устранение избыточных повторных соединений с ZooKeeper и возможности наличия двух активных сессий для одного сервера ClickHouse. Оба проблемы были введены в #14678. #21264 (alesapin).* Устранение ошибки Bad cast from type ... to DB::ColumnLowCardinality при вставке данных в таблицу с колонкой типа LowCardinality из формата Values. Исправляет проблему #21140 #21357 (Nikolai Kochetov).* Устранено избыточное повторное соединение с ZooKeeper и возможность наличия двух активных сессий для одного сервера ClickHouse. Оба этих проблемы были введены в #14678. #21264 (alesapin)

  • Устранена ошибка Bad cast from type ... to DB::ColumnLowCardinality, возникающая при вставке данных в таблицу с колонкой типа LowCardinality из формата Values. Исправляет проблему #21140. #21357 (Nikolai Kochetov)

  • Устранён зациклившийся процесс (deadlock) в операциях ALTER DELETE для нереплицируемых движков MergeTree, когда предикат содержит саму таблицу. Исправляет проблему #20558. #21477 (alesapin)

  • Устранена ошибка SIGSEGV для распределённых запросов при сбоях. #21434 (Azat Khuzhin)

  • Теперь запросы ALTER MODIFY COLUMN корректно влияют на изменения ключей разделов, пропускают индексы, TTL и так далее. Исправляет проблему #13675. #21334 (alesapin)* Устранена ошибка с использованием join_use_nulls и объединением TOTALS из подзапросов. Это закрывает проблемы #19362 и #21137. #21248 (vdimir)* Устранена ошибка в команде EXPLAIN для запросов с UNION. Исправляет проблемы #20876, #21170. #21246 (flynn).

  • Теперь мутации допустимы только для движков таблиц, поддерживающих их (семейство MergeTree, Memory, MaterializedView). Другие движки будут отображать более понятные ошибки. Исправляет проблему #21168. #21183 (alesapin).* Исправлена проблема #21112. Устранена ошибка, которая могла вызывать дубликаты при вставке данных (если один из обратных вызовов пришёл немного позже). #21138 (Ксения Сумарокова).

  • Исправлено поведение input_format_null_as_default, которое теперь работает при наличии null-типов. Это исправляет #21116. #21121 (Amos Bird).

  • Исправлена ошибка, связанная с преобразованием Tuple в Map. Закрывает #21029. #21120 (hexiaoting).

  • Исправлена утечка метаданных при удалении Replicated*MergeTree с пользовательским (не по умолчанию) ZooKeeper кластером. #21119 (fastio).

  • Исправлено несоответствие типов при использовании ключей LowCardinality в joinGet. Это исправляет #21114. #21117 (Amos Bird).

  • Устранены значения по умолчанию default_replica_path и default_replica_name, которые являются бесполезными для движков Replicated(*)MergeTree, требующих указания других параметров. #21060 (mxzlxy).

  • Возможность выхода за границы памяти при форматировании специально созданного значения типа DateTime64, находящегося вне диапазона.Это закрывает #20494. Это закрывает #20543. #21023 (alexey-milovidov).

  • Блокировка параллельных вставок в хранилище join. #21009 (vdimir).

  • Исправлено поведение, когда ALTER MODIFY COLUMN создаёт мутацию, которая намеренно проваливается. #21007 (Антон Попов).

  • Закрыто #9969. Исправлена ошибка HTTP-сжатия Brotli, возникающая при больших объёмах данных, сложной структуре и формате вывода JSON. Обновлено Brotli до последней версии, включающей исправление редкого доступа к непроинициализированному данным в буфере. #20991 (Ксения Сумарокова).

  • Исправлено сообщение "Пустая задача была возвращена от очереди асинхронной задачи" при отмене запроса. #20881 (Azat Khuzhin).

  • Запрос USE database; не работал при использовании клиента MySQL 5.7 для подключения к серверу ClickHouse, это исправлено. Исправляет #18926. #20878 (tavplubix).

  • Исправлена работа комбинатора -Distinct с комбинатором -State в агрегирующих функциях. #20866 (Антон Попов).* Исправлен субзапрос с объединением DISTINCT и ограничивающим условием LIMIT. Закрывает #20597. #20610 (flynn).

  • Устранено несоответствие поведения словаря при выполнении запросов, где мы ищем отсутствующие ключи в словаре. #20578 (Никита Михайлов).

  • Исправлено количество потоков для скалярных субзапросов и субзапросов для индекса (после #19007 всегда использовался один поток). Исправляет #20457, #20512. #20550 (Николай Кошечков).

  • Исправлено падение программы при получении неизвестного пакета от удаленного запроса (введено в #17868). #20547 (Azat Khuzhin).

  • Добавлены правильные проверки при парсинге названий директорий для асинхронного INSERT (исправляет SIGSEGV). #20498 (Azat Khuzhin).

  • Исправлено некорректное поведение функции transform для чисел с плавающей запятой. Закрывает #20460. #20479 (flynn).

  • Исправлен бесконечный цикл при распространении псевдонимов WITH в субзапросах. Это исправляет #20388.com/ClickHouse/ClickHouse/issues/20388). #20476 (Amos Bird).

  • Устранение неправильного завершения работы сервера при отключении HTTP-клиента. #20464 (Azat Khuzhin).

  • Устранение ошибки LOGICAL_ERROR для join_use_nulls=1, когда в JOIN содержится константа из SELECT. #20461 (Azat Khuzhin).

  • Проверка использования таблицей функции view в списке выражений и выбрасывание ошибки. Это исправляет #20342. #20350 (Amos Bird).

  • Предотвращение недопустимого обращения к пустому значению в RANGE_HASHED() словаре. #20345 (Azat Khuzhin).

  • Устранение обращения к пустому значению с join_use_nulls=1. #20344 (Azat Khuzhin).

  • Устранение некорректного результата выполнения бинарной операции между двумя постоянными десятичными числами разных масштабов. Исправляет #20283. #20339 (Maksim Kita).

  • Устранение слишком частых попыток повторного выполнения неудачных фоновых задач для семейства движков таблиц ReplicatedMergeTree. Это могло привести к чрезмерному количеству логгирования и увеличенной нагрузке на процессор. Исправляет #20203.#20335 (alesapin).

    • Ограничение возможности удаления или переименования версионного столбца для движков таблиц *CollapsingMergeTree и ReplacingMergeTree. #20300 (alesapin).
    • Исправление поведения при работе с поврежденным JSON, когда мы пытались прочитать весь файл в память, что приводило к исключению от аллокатора. Исправляет #19719. #20286 (Nikita Mikhaylov).
    • Устранение исключения во время горизонтального слияния для семейства движков таблиц MergeTree, которые не поддерживают горизонтальное объединение. Исправляет #20259. #20279 (alesapin).
  • Исправление редкого сбоя сервера при перезагрузке конфигурации во время завершения работы. Закрывает #19689. #20224 (alesapin).

  • Исправление CTE при использовании в INSERT SELECT. Это исправляет #20187, закрывает #20195. #20211 (Amos Bird).

  • Исправление #19314. #20156 (Ivan).* Исправление функции toMinute для правильной обработки специальных часовых поясов. #20149 (keenwolf).

  • Исправление сбоев сервера после запроса с функцией if, результат которой имеет тип Tuple. Тип Tuple должен содержать Array или другой сложный тип. Закрывает #18356. #20133 (alesapin).

  • Теперь движок таблиц MongoDB устанавливает соединение только тогда, когда ему требуется считывать данные. ATTACH TABLE больше не пытается установить соединение. #20110 (Vitaly Baranov).

  • Исправление ошибки в StorageJoin. #20079 (vdimir).

  • Исправление ситуации, когда вычисление модуля деления отрицательного числа на малый делитель приводит к тому, что используемый тип данных недостаточно велик для хранения отрицательного результата. Это закрывает #20052. #20067 (alexey-milovidov).

  • MaterializeMySQL: Исправление репликации для операторов, обновляющих несколько таблиц. #20066 (Håvard Kvålen).

  • Предотвращение ошибки "Connection refused" в Docker во время выполнения скрипта инициализации. #20012 (filimonov).

  • EmbeddedRocksDB — экспериментальное хранилище.Устранена проблема отсутствия правильной проверки типа. Упрощён код. Это закрывает #19967. #19972 (alexey-milovidov).

  • Устранена ошибка сегментации в функции fromModifiedJulianDay, когда аргумент имеет тип Nullable(T) для любых целочисленных типов, кроме Int32. #19959 (PHO).

  • Устранена ошибка падения при работе индекса BloomFilter. Исправляет #19757. #19884 (Maksim Kita).

  • Возможность мёртвой блокировки, если включено системное свойство text_log. Исправляет #19874. #19875 (alexey-milovidov).

  • Устранена ошибка запуска сервера с таблицами, имеющими выражения по умолчанию, содержащие dictGet(). Разрешено получение типа возвращаемого значения dictGet() без загрузки словаря. #19805 (Vitaly Baranov).

  • Устранена ошибка прерывания выполнения команд SELECT в clickhouse-client. #19790 (taiyang-li).

  • Устранена ошибка, при которой перемещение частей данных в целевую таблицу может завершиться ошибкой при запуске нескольких экземпляров clickhouse-copier. #19743 (madianjun).* В фоновом потоке, выполняющем запросы ON CLUSTER, могло произойти зависание при ожидании удалённой реплицированной таблицы. Проблема исправлена. #19684 (yiguolei). #### Улучшения сборки/тестирования/пакетирования* Добавлена возможность сборки ClickHouse с включенным AVX-2 глобально. Это приносит небольшие преимущества по производительности на современных процессорах. Не рекомендовано для использования в продакшне и пока не будет поддерживаться как официальная сборка. #20180 (alexey-milovidov).

  • Исправлены некоторые проблемы, найденные Coverity. Подробнее см. #19964. #20010 (alexey-milovidov).

  • Добавлена возможность запуска модифицированного бинарника под gdb. В предыдущей версии если вы установили точку останова в gdb перед запуском, сервер отказывался запуститься из-за провалившейся проверки целостности. #21258 (alexey-milovidov).

  • Добавлен тест для различных методов сжатия в Kafka. #21111 (filimonov).

  • Исправлен конфликт портов в тесте test_storage_kerberized_hdfs. #19974 (Ilya Yatsishin).

  • Теперь выводятся stdout и stderr в лог при неудачном старте контейнера в интеграционных тестах. До этого PR сообщение об ошибке было очень коротким и не помогало в диагностике проблем. #20631 (Vitaly Baranov).## Выпуск ClickHouse 21.2

Выпуск ClickHouse v21.2.2.8-stable, 2021-02-07#### Неразрывные изменения

  • Битовые функции (bitAnd, bitOr и т. д.) запрещены для аргументов с плавающей запятой. Теперь вам нужно явно преобразовать в целое число. #19853 (Azat Khuzhin).
  • Запрещено использование lcm/gcd для чисел с плавающей запятой. #19532 (Azat Khuzhin).
  • Исправлена отслеживание памяти для OPTIMIZE TABLE/слияний; учтены ограничения памяти запроса и выборки для OPTIMIZE TABLE/слияний. #18772 (Azat Khuzhin).
  • Запрещено использовать столбец с плавающей запятой как ключ раздела, см. #18421. #18464 (hexiaoting).
  • Избыточные скобки в определении типа больше не поддерживаются, пример: Array((UInt8)).

Новая функция

  • Добавлен движок таблицы PostgreSQL (включая выборку/вставку с поддержкой многомерных массивов), а также как функция таблицы. Добавлена PostgreSQL словарная источник данных. Добавлен движок базы данных PostgreSQL. #18554 (Kseniia Sumarokova).
  • Тип данных Nested теперь поддерживает произвольные уровни вложенности. Введены подколонки сложных типов, такие как size0 в Array, null в Nullable, названия элементов Tuple, которые можно читать без чтения всей колонки. #17310 (Anton Popov).* Добавлена поддержка Nullable для FlatDictionary, HashedDictionary, ComplexKeyHashedDictionary, DirectDictionary, ComplexKeyDirectDictionary, RangeHashedDictionary. #18236 (Maksim Kita).
  • Добавлена новая таблица system.distributed_ddl_queue, которая отображает запросы в очереди DDL-обрабатывающего механизма. #17656 (Bharat Nallan).
  • Добавлена поддержка отображения LDAP групповых имён и общих значений атрибутов в локальные роли для пользователей из LDAP-каталогов. #17211 (Denis Glazachev).
  • Поддержана вставка в функцию таблицы cluster, а также для обоих функций таблиц remote и cluster поддержана распределение данных между узлами путём указания ключа шардинга. Закрыта задача #16752. #18264 (flynn).
  • Добавлена функция decodeXMLComponent для декодирования символов для XML. Пример: SELECT decodeXMLComponent('Hello,&quot;world&quot;!') #17659. #18542 (nauta).
  • Добавлены функции parseDateTimeBestEffortUSOrZero, parseDateTimeBestEffortUSOrNull. #19712 (Maksim Kita).
  • Добавлена математическая функция sign. #19527 (flynn).
  • Добавлена информация о используемых функциях (функции, движки таблиц, и т. д.) в системную таблицу system.query_log. #18495.com/ClickHouse/ClickHouse/issues/18495). #19371 (Kseniia Sumarokova).
    • Функция formatDateTime теперь поддерживает модификацию %Q, чтобы форматировать дату в квартал. #19224 (Jianmei Zhang).
    • Поддержка сочетания клавиш MetaKey+Enter в интерфейсе воспроизведения. #19012 (sundyli).
    • Добавлены три функции для типа данных map: 1. mapContains(map, key) проверяет наличие ключа во входном мапе; 2. mapKeys(map) возвращает все ключи в виде массива; 3. mapValues(map) возвращает все значения в виде массива. #18788 (hexiaoting).
    • Добавлена настройка log_comment, связанная с #18494. #18549 (Zijie Lu).
    • Добавлена поддержка кортежных аргументов для функций argMin и argMax. #17359 (Ildus Kurbangaliev).
    • Поддержана синтаксическая конструкция EXISTS VIEW. #18552 (Du Chuan).
    • Добавлена синтаксическая конструкция SELECT ALL. закрывает #18706. #18723 (flynn).

Улучшение производительности

  • Более быстрое удаление частей за счет снижения количества системных вызовов stat.
    Это возвращает оптимизацию, которая существовала ранее.Более безопасный интерфейс IDisk. Это закрывает #19065. #19086 (alexey-milovidov).* Алиасы, объявленные в команде WITH, теперь правильно используются при анализе индексов. Запросы типа WITH column AS alias SELECT ... WHERE alias = ... могут использовать индекс сейчас. #18896 (Amos Bird).

  • Добавлена опция optimize_alias_column_prediction (включена по умолчанию), которая будет:

    • Учитывать алиасированные столбцы в условии WHERE во время сечения по разделителям и пропуска данных с помощью вторичных индексов;
    • Учитывать алиасированные столбцы в условии WHERE для простых запросов подсчета для оптимизации простого подсчета;
    • Учитывать алиасированные столбцы в группировках и сортировках для оптимизации агрегации в порядке и чтения в порядке. #16995 (sundyli).
  • Ускорено выполнение агрегирующей функции sum. Улучшение заметно только на синтетических тестах и не очень практично. #19216 (alexey-milovidov).

  • Обновлено libc++, используется другое ABI для обеспечения лучшей производительности. #18914 (Danila Kutenin).

  • Переписана функция sumIf() и sum(if()) в функцию countIf(), когда логически эквивалентна. #17041 (flynn).

  • Используется пулинг соединений для соединений S3, управляемый параметром s3_max_connections. #13405 (Vladimir Chebotarev).* Добавлена поддержка длинной опции zstd для лучшего сжатия строковых столбцов для экономии места. #17184 (ygrek).

  • Незначительно улучшена задержка сервера за счет отсутствия доступа к конфигурации на каждом соединении. #19863 (alexey-milovidov).* Уменьшена борьба за блокировки для нескольких уровней движка Buffer. #19379. (Азат Хужин).

    • Добавлена поддержка разделения шага Filter плана запроса на пару Expression + Filter. Вместе с оптимизацией слияния Expression + Expression (#17458), это может отложить выполнение некоторых выражений после шага Filter. #19253 (Николай Кошечтов).
    • Теперь запрос SELECT count() FROM table может выполняться, если выбран хотя бы один столбец из таблицы. Этот Pull Request исправляет проблему #10639. #18233 (Vitaly Baranov).
    • Установка кодировки utf8mb4 при взаимодействии с удаленными серверами MySQL. Исправление проблемы #19795. #19800 (alexey-milovidov).
    • Функция таблицы S3 теперь поддерживает режим сжатия auto (автоматическое определение). Это закрывает проблему #18754. #19793 (Vladimir Chebotarev).
    • Корректное вывод бесконечных аргументов для функции formatReadableTimeDelta. В предыдущих версиях происходила неявная конвертация в реализация-зависимое целочисленное значение. #19791 (alexey-milovidov).* Функция таблицы S3 будет использовать глобальный регион, если конкретный регион невозможно точно определить. Это закрывает проблему #10998. #19750 (Vladimir Chebotarev).
  • В распределённых запросах, если установлено значение async_socket_for_remote, возможно получение переполнения стека как минимум в конфигурации сборки отладочной версии, если используется очень глубоко вложенный тип данных в таблице (например, Array(Array(Array(...))))). Это исправляет проблему #19108. Изменение вводит небольшую обратную совместимость: избыточные скобки в определении типа больше не поддерживаются, пример: Array((UInt8)). #19736 (alexey-milovidov).

  • Добавлен отдельный пул для брокеров сообщений (RabbitMQ и Kafka). #19722 (Azat Khuzhin).

  • Исправлена редкая ситуация превышения лимита max_number_of_merges_with_ttl_in_pool (более слияний с TTL могут быть назначены) для неклонированной MergeTree. #19708 (alesapin).

  • Словарь: более информативное сообщение об ошибке при парсинге атрибутов. #19678 (Maksim Kita).

  • Добавлена опция отключения проверки контрольных сумм при чтении. Никогда не следует использовать в производстве.Не ожидайте никаких преимуществ от отключения этой опции. Она может использоваться только для экспериментов и бенчмарков. Настройка применима только для таблиц семейства MergeTree. Контрольные суммы всегда проверяются для других движков таблиц и при получении данных через сеть. По моим наблюдениям, нет различий в производительности или они меньше 0,5%.

#19588 (alexey-milovidov).

  • Поддержка константного результата в функции multiIf.

  • #19533 (Maksim Kita).

  • Включена поддержка функций length, empty, notEmpty для типа данных Map, которая возвращает количество ключей в Map.

  • #19530 (taiyang-li).

  • Добавлена опция --reconnect для clickhouse-benchmark. При указании этой опции будет происходить переподключение перед каждым запросом. Это необходимо для тестирования.

  • #19872 (alexey-milovidov).

  • Поддержана возможность использования нового расположения файла .debug. Это исправляет проблему #19348.

  • #19520 (Amos Bird).

  • Функция toIPv6 парсит адреса IPv4.

  • #19518 (Bharat Nallan).

  • Добавлено поле http_referer в system.query_log, system.processes и т. д. Это закрывает проблему #19389.

  • #19390.com/ClickHouse/ClickHouse/pull/19390) (alexey-milovidov).

    • Улучшено соответствие MySQL за счет увеличения количества функций, чувствительных к регистру, и добавления псевдонимов. #19387 (Daniil Kondratyev).
    • Добавлены метрики для частей MergeTree типов (Wide/Compact/InMemory). #19381 (Azat Khuzhin).
    • Разрешено выполнение контейнера Docker с произвольным UID. #19374 (filimonov).
    • Устранена неправильная выравнивание значений типа данных IPv4 в PRETTY форматах. Они были выровнены направо, а не налево. Это закрывает #19184. #19339 (alexey-milovidov).
    • Добавлена возможность изменения параметра max_server_memory_usage без перезапуска сервера. Это закрывает #18154. #19186 (alexey-milovidov).
    • Исключение при вызове функции bar с определённым значением NaN может быть несколько вводящим в заблуждение в предыдущих версиях. Это исправляет #19088. #19107 (alexey-milovidov).
    • Установлено явное значение uid/gid пользователя и группы ClickHouse на фиксированное значение (101) в образах clickhouse-server. #19096 (filimonov).* Исправлено ошибочное сообщение "Memory limit exceeded" для PeekableReadBuffer при вставке данных с большими строками. Исправляет #18690. #18979 (tavplubix).
  • Образ Docker: несколько улучшений для точки входа clickhouse-server. #18954 (filimonov).

  • Добавлены параметры normalizeQueryKeepNames и normalizedQueryHashKeepNames, чтобы нормализовать запросы без маскирования длинных имён знаком вопроса (? ). Это помогает лучше анализировать логи сложных запросов. #18910 (Amos Bird).

  • Проверка контрольной суммы блока перед отправкой распределенного пакета на отправителе (без двойного чтения файла, контрольные суммы будут проверяться во время чтения), что позволяет избежать зависания операции INSERT на получателе (на отрезанном .bin файле на отправителе). Избегайте двойного чтения .bin файлов для батчевых INSERT (ранее требовалось вычисление количества строк/байтов для учета squash, теперь эта информация включена в заголовок, обратная совместимость сохранена). #18853 (Азат Хужин).

  • Устранено проблемы с правым и полным соединением таблиц с состояниями агрегирующих функций. В предыдущих версиях выбрасывалась异常关于cloneResized方法的异常。#18818 (templarzq)。* Добавлены префиксные настройки конечной точки S3. #18812 (Владимир Чеботарёв).

  • Добавлена поддержка типов аргументов [UInt8, UInt16, UInt32, UInt64] для функций bitmapTransform, bitmapSubsetInRange, bitmapSubsetLimit, bitmapContains. Это закрывает #18713. #18791 (sundyli).

  • Разрешено дальнейшее псевдонимирование CTE (общих таблицных выражений). Пропагация CSE (вычитания общих подвыражений) в подзапросах одного уровня при enable_global_with_statement = 1. Это исправляет #17378. Это исправляет https://github.com/ClickHouse/ClickHouse/pull/16575#issuecomment-753416235. #18684 (Amos Bird).

  • Обновлен librdkafka до версии v1.6.0-RC2. Исправляет #18668. #18671 (filimonov).

  • Автоматический перезапуск фонового потока при возникновении непредвиденных исключений, отвечающего за выполнение распределённых DDL запросов. Исправляет #17991. #18285 (徐炘).

  • Обновлен AWS C++ SDK для использования глобальных регионов в S3. #17870 (Владимир Чеботарёв).

  • Добавлена поддержка предложения WITH ... [AND] [PERIODIC] REFRESH [interval_in_sec] при создании таблиц LIVE VIEW. #14822 (vzakaznikov).* Ограничение запросов MODIFY TTL для таблиц MergeTree, созданных в старой синтаксической форме. Ранее запрос успешно выполнялся, но фактически никакого эффекта не имел. #19064 (Антон Попов).

Исправление ошибки

  • Исправлен анализ индекса двоичных функций с постоянным аргументом, что приводит к неправильным результатам запросов. Это исправляет #18364. #18373 (Amos Bird).

  • Исправлена проблема запуска сервера при наличии таблиц со значениями по умолчанию, содержащими dictGet(). Разрешено получение типа возвращаемого значения dictGet() без загрузки словаря. #19805 (Виталий Баранов).

  • Исправлен сбой сервера после выполнения запроса с функцией if, результат которого имеет тип Tuple. Тип Tuple должен содержать Array или другой сложный тип. Исправляет #18356. #20133 (alesapin).

  • MaterializeMySQL (экспериментальная функциональность): Исправлена репликация для операторов, обновляющих несколько таблиц. #20066 (Хавард Квальен).

  • Предотвращён отказ соединения в Docker во время выполнения скрипта инициализации. #20012 (Филимонов).* EmbeddedRocksDB — это экспериментальное хранилище. Исправлена проблема отсутствия правильной проверки типа. Упрощён код. Это закрывает #19967. #19972 (alexey-milovidov).

  • Исправлен сбой функции fromModifiedJulianDay при передаче аргумента типа Nullable(T) для любых целочисленных типов, кроме Int32. #19959 (PHO).

  • Функция greatCircleAngle возвращала неточные результаты в предыдущих версиях. Это закрывает #19769. #19789 (alexey-milovidov).

  • Исправлена редкая ошибка, когда некоторые реплицированные операции (например, мутация) не могли обрабатывать некоторые части данных после повреждения данных. Исправляет #19593. #19702 (alesapin).

  • Временная нить, выполняющая запросы ON CLUSTER, может зависнуть в ожидании удаленной реплицированной таблицы. Это исправлено. #19684 (yiguolei).

  • Исправлена ошибка десериализации описания столбцов. Это делает невозможным выполнение команды INSERT в таблицу с колонкой, имеющей имя \. #19479 (alexey-milovidov).* Отмечается как поврежденная распределённая партиция данных при пустом блоке данных в одном из файлов. #19449 (Azat Khuzhin).

  • Устранено очень редкое баг, которое могло привести к зависанию мутации после DROP/DETACH/REPLACE/MOVE PARTITION. Баг частично был исправлен через #15537 для большинства случаев. #19443 (tavplubix).

  • Исправлена возможная ошибка Transform Extremes уже добавлен в конвейер. Исправляет #14100. #19430 (Nikolai Kochetov).

  • Исправлено значение по умолчанию в типах соединений с ненулевым значением по умолчанию (например, некоторые Enumы). Закрывает #18197. #19360 (vdimir).

  • Не отмечается файл для распределённого отправления как повреждённый при достижении конца файла. #19290 (Azat Khuzhin).

  • Исправлена утечка дескриптора канала pipe fd для async_socket_for_remote. #19153 (Azat Khuzhin).

  • Исправлено бесконечное чтение из файла в формате ORC (было введено в #10580). Исправляет #19095. #19134 (Nikolai Kochetov).* Исправлено проблемное состояние записи данных в дереве слияния, которое может привести к меткам с размером больше размера гранулярности. Исправляет #18913. #19123 (alesapin).

  • Устранена ошибка запуска при невозможности чтения сжатого кодека из LowCardinality(Nullable(...)), что приводит к исключению Attempt to read after EOF. Исправляет #18340. #19101 (alesapin).

  • Упрощена реализация tupleHammingDistance. Поддерживает кортежи любой равной длины. Исправляет #19029. #19084 (Nikolai Kochetov).

  • Обеспечено возвращение правильного типа аргумента типа Enum для groupUniqArray. Это закрывает #17875. #19019 (alexey-milovidov).

  • Устранена возможная ошибка Expected single dictionary argument for function, если используется функция ignore с аргументом LowCardinality. Исправляет #14275. #19016 (Nikolai Kochetov).

  • Устранена проблема вставки столбца LowCardinality в таблицу с движком TinyLog. Исправляет #18629. #19010 (Nikolai Kochetov).* Устранено небольшое ограничение в JOIN: Join пытается материализовать постоянные колонки, но наш код ожидает их в других местах. #18982 (Nikita Mikhaylov).

  • Отключено optimize_move_functions_out_of_any, так как оптимизация не всегда корректна. Это закрывает #18051. Это закрывает #18973. #18981 (alexey-milovidov).

  • Устранено возможное исключение QueryPipeline stream: различное количество колонок, вызванное объединением шагов Expression плана запроса. Исправляет #18190. #18980 (Nikolai Kochetov).

  • Устранено крайне редкое зависание при завершении работы. #18977 (tavplubix).

  • Устранена редкая ошибка при исчерпании памяти сервером. #18976 (tavplubix).

  • Исправлена некорректная работа запроса ALTER TABLE ... DROP PART 'part_name', который удаляет все блоки деконфликтования для всей партиции. Исправление #18874. #18969 (alesapin).

  • Устранена проблема #18894: добавлено проверочное условие для предотвращения исключения при совпадении длинного псевдонима столбца ('table.column' стиль, обычно генерируется автоматически BI-инструментами, такими как Looker) с длинным именем таблицы. #18968 (Daniel Qin).

  • Исправлена ошибка Задача не найдена в очереди задач (возможна только для удалённых запросов, с async_socket_for_remote = 1). #18964 (Nikolai Kochetov).

  • Исправлена ошибка при сериализации мутации с некоторыми экранированными данными (например, ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1')) некорректно. Исправление #18878. #18944 (alesapin).

  • При выполнении команды ATTACH PARTITION будут сброшены мутации. #18804. #18935 (fastio).

  • Исправлена проблема с bitmapOrCardinality, которая может привести к обращению к null указателю. Это закрывает #18911. #18912 (sundyli).

  • Устранена ошибка Попытка чтения после конца файла при попытке CAST NULL из Nullable(String) в Nullable(Decimal(P, S)). Теперь функция CAST возвращает NULL, если она не может распарсить десятичное число из nullable строки. Исправление #7690. #18718 (Winter Zhang).

  • Исправлена проблема с преобразованием типов данных для движка MySQL. #18124.com/ClickHouse/ClickHouse/pull/18124) (Мис Цзян).

    • Исправление исключения прерывания при выполнении только SELECT в clickhouse-client. #19790 (Таианг Ли).

Улучшение сборки/тестирования/пакетирования

  • Запуск SQLancer (логического фуззера SQL) в CI. #19006 (Илья Яцышин).

  • Query Fuzzer будет более подробно тестировать новые тесты. Это закрывает #18916. #19185 (Алексей МилоvidoB).

  • Интеграция с Big List of Naughty Strings для лучшего фуззинга. #19480 (Алексей МилоvidoB).

  • Добавлены интеграционные тесты, запущенные с использованием MSan. #18974 (Алесяпин).

  • Устранены ошибки MemorySanitizer в cyrus-sasl и musl. #19821 (Илья Яцышин).

  • Недостаточное количество аргументов в функции positionCaseInsensitiveUTF8 вызвало активацию адресного санитайзера. #19720 (Алексей МилоvidoB).

  • Удалён параметр --project-directory для docker-compose в интеграционных тестах. Корректировка форматирования логов из контейнера Docker. #19706 (Илья Яцышин).

  • Упрощена генерация файла macros.xml для интеграционных тестов.Больше нет избыточной записи логов от dicttoxml. Проект dicttoxml неактивен более 5 лет. #19697 (Ilya Yatsishin).

  • Разрешено явное включение или отключение watchdog через переменную окружения CLICKHOUSE_WATCHDOG_ENABLE. По умолчанию он включен, если сервер не подключен к терминалу. #19522 (alexey-milovidov).

  • Разрешена сборка ClickHouse с поддержкой Kafka на платформе arm64. #19369 (filimonov).

  • Разрешена сборка librdkafka без SSL. #19337 (filimonov).

  • Восстановлен вход Kafka в сборках FreeBSD. #18924 (Александр Снарский).

  • Устранено потенциальное сброс null-значения в таблице функции VALUES. #19357 (alexey-milovidov).

  • Предотвращены отчеты UBSan в функциях arrayElement, substring и arraySum. Исправляет #19305. Исправляет #19287. Это закрывает #19336. #19347 (alexey-milovidov).

Выпуск ClickHouse 21.1### Выпуск ClickHouse v21.1.3.32-stable, 2021-02-03#### Исправление ошибок

  • Исправление сбоя индекса BloomFilter. Устраняет проблему #19757. #19884 (Maksim Kita).

  • Исправление сбоя при выталкивании предикатов в объединении уникальных подзапросов. Это исправляет проблему #19855. #19861 (Amos Bird).

  • Исправление отсеивания значений UInt8 больше 127. #19799 (Anton Popov).

  • В предыдущих версиях, необычные аргументы для функции arrayEnumerateUniq могли вызвать сбой или бесконечный цикл. Это закрывает проблему #19787. #19788 (alexey-milovidov).

  • Исправлено переполнение стека при использовании точного сравнения типов данных арифметики со строками. #19773 (tavplubix).

  • Исправление сбоя при использовании имени вложенного столбца в WHERE или PREWHERE. Устраняет проблему #19755. #19763 (Nikolai Kochetov).

  • Исправление сегментации ошибки в функции bitmapAndnot. Устраняет проблему #19668. #19713 (Maksim Kita).

  • Некоторые функции с большими целыми числами могут привести к segfault.Большие целые числа — это экспериментальная функциональность. Это закрывает проблему #19667. #19672 (alexey-milovidov).

  • Исправление неправильного результата функции neighbor для аргумента типа LowCardinality. Устраняет проблему #10333. #19617 (Nikolai Kochetov).

  • Исправление использования после освобождения памяти CompressedWriteBuffer в Connection после отключения. #19599 (Azat Khuzhin).

  • Запрос DROP/DETACH TABLE table ON CLUSTER cluster SYNC может зависнуть, что было исправлено. Исправления #19568. #19572 (tavplubix).

  • Исправление ошибки в запросе CREATE DICTIONARY с выражением ID. #19571 (Maksim Kita).

  • Исправление SIGSEGV при merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read = 0/UINT64_MAX. #19528 (Azat Khuzhin).

  • Возможность переполнения буфера (при чтении памяти) при вызове функции addMonth с специально подготовленными аргументами. Это исправляет #19441. Это исправляет #19413. #19472 (alexey-milovidov).* Возможность чтения незаполненной памяти при передаче пустой строки как IV в функциях шифрования/расшифрования. Это закрывает #19391. #19397 (alexey-milovidov).

  • Исправление возможного переполнения буфера в библиотеке Uber H3. См. https://github.com/uber/h3/issues/392. Это закрывает #19219. #19383 (alexey-milovidov).

  • Исправление столбца LOGICAL_ERROR в системной таблице system.parts_state. #19346 (Azat Khuzhin).

  • Исправление возможного неверного результата или segfault при агрегации, если материализованное представление и его целевая таблица имеют различную структуру. Исправляет #18063. #19322 (tavplubix).

  • Исправление ошибки Не удается преобразовать колонку now64(), так как она является константой, но значения этих констант отличаются в источнике и результате. Продолжение #7156. #19316 (Nikolai Kochetov).

  • Исправлен баг при одновременном выполнении запросов ALTER и DROP, который может привести к зависанию при обработке таблицы ReplicatedMergeTree. #19237 (alesapin).* Исправлена ошибка "There are no checkpoints" при вставке данных через HTTP-интерфейс с использованием формата Template или CustomSeparated. Исправление #19021. #19072 (tavplubix).

    • Отключено складирование констант для подзапросов на этапе анализа, когда результат вычисления невозможен. #18446 (Azat Khuzhin).
    • Мутация могла зависнуть, ожидая некоего несуществующего раздела после команд MOVE или REPLACE PARTITION, а также в редких случаях — после DETACH или DROP PARTITION. Это исправлено. #15537 (tavplubix). ### Выпуск ClickHouse v21. 1. 2. 15-stable 2021-01-18#### Неразрывные изменения
  • Настройка input_format_null_as_default включена по умолчанию. PR #17525 (alexey-milovidov).

  • Проверка ограничений настроек профилей из конфигурации. Сервер не сможет запуститься, если файл users.xml содержит настройки, не удовлетворяющие соответствующим ограничениям. PR #18486 (tavplubix).

  • Ограничение изменения хранилищ с помощью команды ALTER MODIFY SETTING для параметров, влияющих на части данных (write_final_mark и enable_mixed_granularity_parts). PR #18306 (Amos Bird).

  • Установка значения insert_quorum_parallel равной 1 по умолчанию. Это значительно удобнее использования последовательного кворума. Но если вы полагаетесь на последовательную согласованность, следует установить это значение обратно в ноль. PR #17567 (alexey-milovidov).

  • Удаление функции sumburConsistentHash. Это закрывает #18120. PR #18656 (alexey-milovidov).

  • Удалены агрегирующие функции timeSeriesGroupSum, timeSeriesGroupRateSum, так как другой участник сообщил, что они никогда не работали. Это исправляет #16869. Если вам пришлось использовать эти функции, напишите письмо на адрес clickhouse-feedback@yandex-team.com. PR #17423 (alexey-milovidov).* Запрещено использование toUnixTimestamp(Date()) (ранее просто возвращало UInt16 представление Date). #17376 (Azat Khuzhin).

    • Разрешено использование расширенных целочисленных типов (Int128, Int256, UInt256) в функциях avg и avgWeighted. Также разрешено использование различных типов (целое число, десятичная дробь, число с плавающей запятой) для значений и весов в функции avgWeighted. Это обратно-несовместимое изменение: теперь функции avg и avgWeighted всегда возвращают Float64 (как указано в документации). До этого изменения тип возврата для аргументов типа Decimal также был Decimal. #15419 (Mike).
    • Выражение toUUID(N) больше не работает. Замените его на toUUID('00000000-0000-0000-0000-000000000000'). Это изменение вызвано непредсказуемыми результатами toUUID(N), где N отличен от нуля.
    • SSL-сертификаты с некорректным значением "key usage" теперь отклоняются. В предыдущих версиях они использовались успешно. См. #19262.
    • Удалены явные ссылки на файл замещений (/etc/metrika.xml) в разделах конфигурации по умолчанию (<remote_servers>, <zookeeper>, <macros>, <compression>, <networks>). Если вы использовали файл замещений и полагались на эти явные ссылки, вам следует восстановить их вручную и явно до обновления, добавив соответствующие секции с атрибутами incl="...". См. PR #18740 (alexey-milovidov).#### Новая функция
  • Реализован протокол gRPC в ClickHouse. #15111 (Vitaly Baranov).

  • Добавлена возможность использования нескольких кластеров ZooKeeper. #17070 (fastio).

  • Реализованы запросы REPLACE TABLE и CREATE OR REPLACE TABLE. #18521 (tavplubix).

  • Реализованы UNION DISTINCT и простой UNION, который теперь по умолчанию работает как UNION DISTINCT. Добавлено настроек union_default_mode, которое позволяет рассматривать его как UNION ALL или требовать явной спецификации режима. #16338 (flynn).

  • Добавлена функция accurateCastOrNull. Это закрывает #10290. Добавлены типовые преобразования в выражениях x IN (подзапрос). Это закрывает #10266. #16724 (Maksim Kita).

  • Справочник IP поддерживает прямую работу с типами IPv4 / IPv6. #17571 (vdimir).

  • Справочник IP поддерживает получение ключей. Разрешает #18241. #18480 (vdimir).

  • Добавлена поддержка сжатия/распаковки данных с использованием *.zst. Это позволяет использовать *.zst в функции file() и Content-encoding: zstd в клиенте HTTP. Это закрывает #16791. #17144```markdown (com/ClickHouse/ClickHouse/pull/17144) (Abi Palagashvili).

    • Добавлены агрегирующие функции mannWhitneyUTest, studentTTest и welchTTest. Частично рефакторирована функция rankCorr. #16883 (Nikita Mikhaylov).
    • Добавлены функции countMatches/countMatchesCaseInsensitive. #17459 (Azat Khuzhin).
    • Реализованы функции countSubstrings()/countSubstringsCaseInsensitive()/countSubstringsCaseInsensitiveUTF8() (подсчет количества вхождений подстроки). #17347 (Азат Хужин).
    • Добавлена информация о используемых базах данных, таблицах и столбцах в систему query_log. Добавлены поля query_kind и normalized_query_hash. #17726 (Амос Бирд).
    • Добавлены настройки optimize_on_insert. При активации выполняется трансформация вставленного блока данных так же, как если бы слияние было выполнено над этим блоком (например, Replacing, Collapsing, Aggregating...). Это значение по умолчанию включено. Это может повлиять на поведение Materialized View и MaterializeMySQL (см. подробное описание). Закрывает #10683. #16954 (Павел Круглов).
    • Поддержка аутентификации Kerberos для HDFS. #16621 (Илья Гольштейн).
    • Поддержка команды SHOW SETTINGS для отображения параметров в системе settings.

Убедитесь, что все изменения корректны и соответствуют требованиям.Также поддерживаются команды `SHOW CHANGED SETTINGS` и `LIKE/ILIKE`.  [#18056](https://github.com/ClickHouse/ClickHouse/pull/18056) ([Джанмеи Чжан](https://github.com/zhangjmruc)).

* Функция `position` теперь поддерживает синтаксис `POSITION(needle IN haystack)` для совместимости с SQL. Закрывает [#18701](https://github.com/ClickHouse/ClickHouse/issues/18701).  [#18779](https://github.com/ClickHouse/ClickHouse/pull/18779) ([Джанмеи Чжан](https://github.com/zhangjmruc)).

* Теперь существует новое хранилище настроек `max_partitions_to_read` для таблиц семейства MergeTree. Оно ограничивает максимальное количество разделов, доступных в одном запросе. Также добавлена пользовательская настройка `force_max_partition_limit` для принудительного применения этого ограничения.  [#18712](https://github.com/ClickHouse/ClickHouse/pull/18712) ([Амос Бирд](https://github.com/amosbird)).

* Добавлен столбец `query_id` в `system.part_log` для новых частей. Закрывает [#10097](https://github.com/ClickHouse/ClickHouse/issues/10097).  [#18644](https://github.com/ClickHouse/ClickHouse/pull/18644) ([flynn](https://github.com/ucasFL)).

* Разрешено создание таблицы с выборкой с указанием колонок. Пример: `CREATE TABLE t1 (x String) ENGINE = Memory AS SELECT 1;`.  [#18060](https://github.com/ClickHouse/ClickHouse/pull/18060) ([Максим Кицай](https://github.com/kitaisreal)).

* Добавлены агрегирующие функции `arrayMin`, `arrayMax`, `arrayAvg`.  [#18032](https://github.com/ClickHouse/ClickHouse/pull/18032) ([Максим Кицай](https://github.com/kitaisreal)).

* Реализован запрос `ATTACH TABLE имя FROM 'путь_к_данным/' (столбец1 Тип1, ...)`. Он создаёт новую таблицу с предоставляемой структурой и присоединяет данные таблицы из указанной директории в `user_files`.  [#17903](https://github.com/ClickHouse/ClickHouse/pull/17903).com/ClickHouse/ClickHouse/pull/17903) ([tavplubix](https://github.com/tavplubix)).
* Добавлена поддержка мутаций для StorageMemory. Это закрывает [#9117](https://github.com/ClickHouse/ClickHouse/issues/9117). [#15127](https://github.com/ClickHouse/ClickHouse/pull/15127) ([flynn](https://github.com/ucasFL)).
* Добавлена поддержка синтаксиса `EXISTS DATABASE имя`. [#18458](https://github.com/ClickHouse/ClickHouse/pull/18458) ([Ду Чжун](https://github.com/spongedu)).
* Добавлены встроенные функции `isIPv4String` и `isIPv6String` аналогично [MySQL](https://github.com/ClickHouse/ClickHouse/compare/master...spongedu:support_is_ipv4?expand=1). [#18349](https://github.com/ClickHouse/ClickHouse/pull/18349) ([Ду Чжун](https://github.com/spongedu)).
* Добавлено новое настроение `insert_distributed_one_random_shard = 1`, которое позволяет вставлять данные в распределённую таблицу с несколькими шардами без использования распределённого ключа. [#18294](https://github.com/ClickHouse/ClickHouse/pull/18294) ([Amos Bird](https://github.com/amosbird)).
* Добавлены настройки `min_compress_block_size` и `max_compress_block_size` в MergeTreeSettings, которые имеют более высокий приоритет, чем глобальные настройки, и действуют, когда они установлены. Закрывают [13890](https://github.com/ClickHouse/ClickHouse/issues/13890). [#17867](https://github.com/ClickHouse/ClickHouse/pull/17867) ([flynn](https://github.com/ucasFL)).
* Добавлена поддержка 64-битных roaring битовых карт. [#17858](https://github.com/ClickHouse/ClickHouse/pull/17858) ([Анди Янг](https://github.com/andyyzh)).
* Расширен синтаксис `OPTIMIZE ... DEDUPLICATE`, чтобы позволить явному (или неявному с использованием преобразователей столбцов со звёздочками) списку столбцов для проверки на наличие дубликатов. [#17846](https://github.com/ClickHouse/ClickHouse/pull/17846) ([Василий Немков](https://github.com/Enmk)).* Добавлены функции `toModifiedJulianDay`, `fromModifiedJulianDay`, `toModifiedJulianDayOrNull`, и `fromModifiedJulianDayOrNull`. Эти функции конвертируют между датами календаря Пролептического Грегорианского и номерами дня Modified Julian.  [#17750](https://github.com/ClickHouse/ClickHouse/pull/17750) ([PHO](https://github.com/depressed-pho)).
* Добавлена возможность использования пользовательского списка доменов верхнего уровня: добавлены функции `firstSignificantSubdomainCustom`, `cutToFirstSignificantSubdomainCustom`.  [#17748](https://github.com/ClickHouse/ClickHouse/pull/17748) ([Azat Khuzhin](https://github.com/azat)).
* Добавлена поддержка протокола `PROXYv1` для обёртки нативного TCP интерфейса. Разрешено использование квот, ключируемое прокси-перенаправляемым адресом IP (применимо для адреса `PROXYv1` и для `X-Forwarded-For` от HTTP интерфейса). Это полезно при предоставлении доступа к ClickHouse только через доверенный прокси (например, CloudFlare), но при желании учёта ресурсов пользователя по их оригинальному IP адресу. Это исправляет [#17268](https://github.com/ClickHouse/ClickHouse/issues/17268).  [#17707](https://github.com/ClickHouse/ClickHouse/pull/17707) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Теперь clickhouse-client поддерживает открытие `EDITOR` для редактирования команд. `Alt-Shift-E`.  [#17665](https://github.com/ClickHouse/ClickHouse/pull/17665) ([Amos Bird](https://github.com/amosbird)).
* Добавлена функция `encodeXMLComponent` для экранирования символов для помещения строки в XML текстовый узел или атрибут.  [#17659](https://github.com/ClickHouse/ClickHouse/pull/17659) ([nauta](https://github.com/nautaa)).
* Введен синтаксис `DETACH TABLE/VIEW ...PERMANENTLY`, чтобы после перезапуска таблица автоматически не восстанавливалась (только по явному запросу). Таблица всё ещё может быть подключена обратно с помощью короткого синтаксиса ATTACH TABLE. Реализует [#5555](https://github.com/ClickHouse/ClickHouse/issues/5555). Исправляет [#13850](https://github.com/ClickHouse/ClickHouse/issues/13850). [#17642](https://github.com/ClickHouse/ClickHouse/pull/17642) ([filimonov](https://github.com/filimonov)).

* Добавлены асинхронные метрики общего количества строк, байтов и частей в таблицах MergeTree. Это исправляет [#11714](https://github.com/ClickHouse/ClickHouse/issues/11714). [#17639](https://github.com/ClickHouse/ClickHouse/pull/17639) ([flynn](https://github.com/ucasFL)).

* Добавлены настройки `limit` и `offset` для пагинации вне SQL: [#16176](https://github.com/ClickHouse/ClickHouse/issues/16176). Они полезны для создания API. Эти две настройки повлияют на запрос SELECT так, как если бы они были добавлены следующим образом: `select * from (your_original_select_query) t limit xxx offset xxx;`. [#17633](https://github.com/ClickHouse/ClickHouse/pull/17633) ([hexiaoting](https://github.com/hexiaoting)).

* Предоставлен новый агрегатор-комбинатор `-SimpleState`, чтобы создавать типы `SimpleAggregateFunction` через запрос. Это полезно для определения материализованного представления для движка AggregatingMergeTree и также будет выгодно для проекций. [#16853](https://github.com/ClickHouse/ClickHouse/pull/16853) ([Amos Bird](https://github.com/amosbird)).

* Добавлен параметр `queries-file` для `clickhouse-client` и `clickhouse-local`. [#15930](https://github.com/ClickHouse/ClickHouse/pull/15930) ([Maksim Kita](https://github.com/kitaisreal)).

* Добавлен параметр `query` для `clickhouse-benchmark`. [#17832](https://github.com/ClickHouse/ClickHouse/pull/17832) ([Maksim Kita](https://github.com/kitaisreal)).* Теперь `EXPLAIN AST` поддерживает запросы других типов помимо `SELECT`.  [#18136](https://github.com/ClickHouse/ClickHouse/pull/18136) ([taiyang-li](https://github.com/taiyang-li)). #### Экспериментальная функция* Добавлены функции для вычисления minHash и simHash текстовых n-грамм и шинглов. Они предназначены для поиска полуналожений. Также добавлены функции `bitHammingDistance` и `tupleHammingDistance`. [#7649](https://github.com/ClickHouse/ClickHouse/pull/7649) ([flynn](https://github.com/ucasFL)).
* Введен новый тип данных `Map`. Подробнее см. [#1841](https://github.com/ClickHouse/ClickHouse/issues/1841). Первый вариант для типа `Map` поддерживает только тип ключей и значений `String`. [#15806](https://github.com/ClickHouse/ClickHouse/pull/15806) ([hexiaoting](https://github.com/hexiaoting)).
* Реализован альтернативный парсер SQL на основе библиотеки ANTLR4 и сгенерированной из грамматики EBNF. [#11298](https://github.com/ClickHouse/ClickHouse/pull/11298) ([Ivan](https://github.com/abyss7)).#### Улучшение производительности  
* Новая реализация словаря IP с меньшим потреблением памяти, улучшенной производительностью в некоторых случаях и исправленными ошибками.   [#16804](https://github.com/ClickHouse/ClickHouse/pull/16804) ([vdimir](https://github.com/vdimir)).  
* Параллельное форматирование при экспорте данных.   [#11617](https://github.com/ClickHouse/ClickHouse/pull/11617) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).  
* Интеграция с LDAP: Добавлен параметр `verification_cooldown` в конфигурацию соединения с сервером LDAP для кэширования успешных попыток "bind" за конфигурируемый период времени.   [#15988](https://github.com/ClickHouse/ClickHouse/pull/15988) ([Denis Glazachev](https://github.com/traceon)).  
* Добавлена опция `--no-system-table` для `clickhouse-local`, чтобы запустить без системных таблиц. Это позволяет избежать инициализации `DateLUT`, которая может занять заметное время (десятки миллисекунд) при старте.   [#18899](https://github.com/ClickHouse/ClickHouse/pull/18899) ([alexey-milovidov](https://github.com/alexey-milovidov)).  
* Замена `PODArray` на `PODArrayWithStackMemory` в `AggregateFunctionWindowFunnelData` для улучшения производительности функции `windowFunnel`.   [#18817](https://github.com/ClickHouse/ClickHouse/pull/18817) ([flynn](https://github.com/ucasFL)).  
* Отправка пустых блоков на шарды при синхронном вставлении в распределённую таблицу теперь отключена. Это закрывает [#14571](https://github.com/ClickHouse/ClickHouse/issues/14571).   [#18775](https://github.com/ClickHouse/ClickHouse/pull/18775) ([alexey-milovidov](https://github.com/alexey-milovidov)).  
* Оптимизация чтения для StorageMemory.   [#18052](https://github.com/ClickHouse/ClickHouse/pull/18052) ([Maksim Kita](https://github.com/kitaisreal)).* Использование алгоритма DragonBox для преобразования чисел с плавающей запятой в строки вместо ryu. Это значительно повышает производительность преобразования чисел с плавающей запятой в строки. [#17831](https://github.com/ClickHouse/ClickHouse/pull/17831) ([Maksim Kita](https://github.com/kitaisreal)).
* Ускорение реализации `IPv6CIDRToRange`. [#17569](https://github.com/ClickHouse/ClickHouse/pull/17569) ([vdimir](https://github.com/vdimir)).
* Добавление настройки `remerge_sort_lowered_memory_bytes_ratio` (если использование памяти после повторного объединения не уменьшается на эту долю, повторное объединение будет отключено). [#17539](https://github.com/ClickHouse/ClickHouse/pull/17539) ([Azat Khuzhin](https://github.com/azat)).
* Улучшение производительности AggregatingMergeTree с SimpleAggregateFunction(String) в PK. [#17109](https://github.com/ClickHouse/ClickHouse/pull/17109) ([Азат Хужин](https://github.com/azat)).
* Теперь комбинатор `-If` деферициализирован, а `count` правильно векторизован. Это относится к [этой PR](https://github.com/ClickHouse/ClickHouse/pull/17041). [#17043](https://github.com/ClickHouse/ClickHouse/pull/17043) ([Амос Бирд](https://github.com/amosbird)).
* Улучшена производительность чтения из таблиц `Merge` при работе с большим количеством таблиц `MergeTree`. Исправляет [#7748](https://github.com/ClickHouse/ClickHouse/issues/7748). [#16988](https://github.com/ClickHouse/ClickHouse/pull/16988) ([Антон Попов](https://github.com/CurtizJ)).
* Улучшена производительность работы функции `repeat`. [#16937](https://github.com/ClickHouse/ClickHouse/pull/16937) ([satanson](https://github.com/satanson)).
* Незначительно улучшена производительность парсинга чисел с плавающей запятой. [#16809](https://github.com/ClickHouse/ClickHouse/pull/16809)./com/ClickHouse/ClickHouse/pull/16809) ([Максим Кита](https://github.com/kitaisreal)).
* Добавлена возможность пропуска объединённых разделов для команды `OPTIMIZE TABLE ... FINAL`. [#15939](https://github.com/ClickHouse/ClickHouse/pull/15939) ([Павел Круглов](https://github.com/Avogar)).
* Интеграция с библиотекой [fast_float от Даниэля Лемира](https://github.com/lemire/fast_float) для парсинга чисел с плавающей запятой. [#16787](https://github.com/ClickHouse/ClickHouse/pull/16787) ([Максим Кита](https://github.com/kitaisreal)). Эта функциональность пока не активна, так как её производительность ниже, чем у грубого парсера чисел с плавающей запятой в ClickHouse.
* Исправлено значение `max_distributed_connections`, влияющее на `prefer_localhost_replica = 1` и `max_threads != max_distributed_connections`. [#17848](https://github.com/ClickHouse/ClickHouse/pull/17848) ([Азат Хужин](https://github.com/azat)).
* Адаптивный выбор однопакетной или многопакетной загрузки данных на S3. Однопакетная загрузка контролируется новым параметром `max_single_part_upload_size`. [#17934](https://github.com/ClickHouse/ClickHouse/pull/17934) ([Павел Коваленко](https://github.com/Jokser)).
* Поддержка асинхронных задач в `PipelineExecutor`. Начальная поддержка асинхронных сокетов для удалённых запросов. [#17868](https://github.com/ClickHouse/ClickHouse/pull/17868) ([Николай Кошечков](https://github.com/KochetovNicolai)).
* Разрешено использование оптимизации `optimize_move_to_prewhere` с компактными частями, когда размеры столбцов неизвестны. [#17330](https://github.com/ClickHouse/ClickHouse/pull/17330) ([Антон Попов](https://github.com/CurtizJ)).#### Улучшение* Предотвратите мертвую блокировку при выполнении INSERT INTO SELECT из самой себя из таблицы с движками `TinyLog` или `Log`. Это закрывает [#6802](https://github.com/ClickHouse/ClickHouse/issues/6802). Это закрывает [#18691](https://github.com/ClickHouse/ClickHouse/issues/18691). Это закрывает [#16812](https://github.com/ClickHouse/ClickHouse/issues/16812). Это закрывает [#14570](https://github.com/ClickHouse/ClickHouse/issues/14570). [#15260](https://github.com/ClickHouse/ClickHouse/pull/15260) ([alexey-milovidov](https://github.com/alexey-milovidov)).
 * Добавлена поддержка синтаксиса `SHOW CREATE VIEW имя`, как в [MySQL](https://dev.mysql.com/doc/refman/5.7/en/show-create-view.html). [#18095](https://github.com/ClickHouse/ClickHouse/pull/18095) ([Du Chuan](https://github.com/spongedu)).
 * Разрешены все запросы типа `Decimal * Float` или наоборот, включая агрегирующие (например, `SELECT sum(decimal_field * 1.1)` или `SELECT dec_col * float_col`), тип результата — Float32 или Float64. [#18145](https://github.com/ClickHouse/ClickHouse/pull/18145) ([Mike](https://github.com/myrrc)).
 * Улучшен минималистичный веб-интерфейс: добавлено отслеживание истории; добавлена поддержка совместной работы; предотвращено возникновение гонки между различными запросами; добавлены индикаторы выполнения и готовности запроса; добавлен favicon; обнаруживается нажатие Ctrl+Enter, если textarea не имеет фокуса. [#17293](https://github.com/ClickHouse/ClickHouse/pull/17293) [#17770](https://github.com/ClickHouse/ClickHouse/pull/17770) ([alexey-milovidov](https://github.com/alexey-milovidov)).
 * clickhouse-server не отправлял запрос `close` на сервер ZooKeeper. [#16837](https://github.com/ClickHouse/ClickHouse/pull/16837) ([alesapin](https://github.com/alesapin)).* Предотвращено аварийное завершение работы сервера при слишком низких ограничениях памяти (`max_memory_usage = 1` / `max_untracked_memory = 1`).  [#17453](https://github.com/ClickHouse/ClickHouse/pull/17453) ([Azat Khuzhin](https://github.com/azat)).
 * Исправлено недетерминированное поведение функции `windowFunnel` при одинаковых временных метках для различных событий.  [#18884](https://github.com/ClickHouse/ClickHouse/pull/18884) ([Fuwang Hu](https://github.com/fuwhu)).
 * Docker: явно установлены uid / gid пользователя и группы clickhouse на фиксированные значения (101) в образах clickhouse-server Docker.  [#19096](https://github.com/ClickHouse/ClickHouse/pull/19096) ([filimonov](https://github.com/filimonov)).
 * Асинхронные вставки в таблицы типа `Distributed`: Добавлены два новых параметра (по аналогии с семейством MergeTree):
     - `fsync_after_insert` — выполнение fsync после каждой вставки. Уменьшает производительность вставок.
     - `fsync_directories` — выполнение fsync для временной директории (используется только при асинхронной вставке) после всех операций (записей, переименований и т. д.). 
     [#18864](https://github.com/ClickHouse/ClickHouse/pull/18864) ([Azat Khuzhin](https://github.com/azat)).* Команда `SYSTEM KILL` теперь работает в Docker. Это закрывает [#18847](https://github.com/ClickHouse/ClickHouse/issues/18847).  
    [#18848](https://github.com/ClickHouse/ClickHouse/pull/18848) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Расширение макросов в пути zk при выполнении команды `FETCH PARTITION`.  
    [#18839](https://github.com/ClickHouse/ClickHouse/pull/18839) ([fastio](https://github.com/fastio)).

* Применение команды `ALTER TABLE <replicated_table> ON CLUSTER MODIFY SETTING ...` ко всем репликам. Поскольку такие команды ALTER не реплицируются.  
    [#18789](https://github.com/ClickHouse/ClickHouse/pull/18789) ([Amos Bird](https://github.com/amosbird)).

* Разрешено использование строки как регулярного выражения в преобразователе столбцов `EXCEPT`. Это решает проблему [#18685](https://github.com/ClickHouse/ClickHouse/issues/18685).  
    [#18699](https://github.com/ClickHouse/ClickHouse/pull/18699) ([Amos Bird](https://github.com/amosbird)).

* Исправлена работа SimpleAggregateFunction в SummingMergeTree. Теперь она работает как AggregateFunction. В предыдущих версиях значения суммировались вместе, игнорируя агрегирующую функцию. Это исправляет проблему [#18564](https://github.com/ClickHouse/ClickHouse/issues/18564).  
    [#8052](https://github.com/ClickHouse/ClickHouse/issues/8052).  
    [#18637](https://github.com/ClickHouse/ClickHouse/pull/18637) ([Amos Bird](https://github.com/amosbird)).  
    Еще одно исправление использования `SimpleAggregateFunction` в `SummingMergeTree`. Это исправляет проблему [#18676](https://github.com/ClickHouse/ClickHouse/issues/18676).  
    [#18677](https://github.com/ClickHouse/ClickHouse/pull/18677) ([Amos Bird](https://github.com/amosbird)).* Исправлено утверждение ошибки внутри аллокатора в случае, когда последний аргумент функции `bar` является NaN. Теперь выбрасывается простое исключение ClickHouse. Это исправляет проблему [#17876](https://github.com/ClickHouse/ClickHouse/issues/17876).  
     [#18520](https://github.com/ClickHouse/ClickHouse/pull/18520) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).  
* Устранена проблема удобства использования: отсутствие новой строки после сообщения об ошибке в некоторых инструментах.  
   [#18444](https://github.com/ClickHouse/ClickHouse/pull/18444) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Добавлена возможность изменения типа столбцов первичного ключа и разделителя партиций с `LowCardinality(Type)` на `Type` и обратно. Также добавлена возможность изменения типа столбца первичного ключа с `EnumX` на `IntX`. Исправляет [#5604](https://github.com/ClickHouse/ClickHouse/issues/5604).  
   [#18362](https://github.com/ClickHouse/ClickHouse/pull/18362) ([alesapin](https://github.com/alesapin)).
  * Реализован доступ к полю через `untuple`.  
   [#18133](https://github.com/ClickHouse/ClickHouse/issues/18133).  
   [#18309](https://github.com/ClickHouse/ClickHouse/pull/18309) ([hexiaoting](https://github.com/hexiaoting)).
  * Разрешено парсинг массивовых полей из CSV, если они представлены как строка, содержащая сериализованный массив. Пример: `"[""Hello"", ""world"", ""42"""" TV""]"` будет распарсен как `['Hello', 'world', '42" TV']`. Разрешено парсинг массива в CSV в строке без окружающих скобок. Пример: `"'Hello', 'world', '42"" TV'"` будет распарсен как `['Hello', 'world', '42" TV']`.  
   [#18271](https://github.com/ClickHouse/ClickHouse/pull/18271) ([alexey-milovidov](https://github.com/alexey-milovidov)).* Улучшена адаптивная вычисляемая гранулярность для широких частей дерева слияния. [#18223](https://github.com/ClickHouse/ClickHouse/pull/18223) ([alesapin](https://github.com/alesapin)).
* Теперь `clickhouse install` может работать на Mac. Проблема заключалась в том, что на этой платформе нет procfs. [#18201](https://github.com/ClickHouse/ClickHouse/pull/18201) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Улучшение подсказок для синтаксиса запроса `SHOW ...`. [#18183](https://github.com/ClickHouse/ClickHouse/pull/18183) ([Du Chuan](https://github.com/spongedu)).
* Поддержка агрегации массивов `arrayMin`, `arrayMax`, `arraySum`, `arrayAvg` для типов данных `Int128`, `Int256`, `UInt256`. [#18147](https://github.com/ClickHouse/ClickHouse/pull/18147) ([Maksim Kita](https://github.com/kitaisreal)).
* Добавлено поле `disk` в настройках хранения множества и объединения. [#18112](https://github.com/ClickHouse/ClickHouse/pull/18112) ([Grigory Pervakov](https://github.com/GrigoryPervakov)).
* Контроль доступа: теперь функция таблицы `merge()` требует текущего пользователя иметь привилегию `SELECT` на каждой таблице, из которой он получает данные. Этот Pull Request исправляет [#16964](https://github.com/ClickHouse/ClickHouse/issues/16964). [#18104](https://github.com/ClickHouse/ClickHouse/pull/18104).
* Временные таблицы теперь видны в системных таблицах `system.tables` и `system.columns` только в сессиях, где они были созданы. Внутренняя база данных `_temporary_and_external_tables` скрыта в этих системных таблицах; временные таблицы отображаются как таблицы с пустой базой данных с установленным флагом `is_temporary`. [#18014](https://github.com/ClickHouse/ClickHouse/pull/18014) ([Vitaly Baranov](https://github.com/vitlibar)).* Устранена проблема отрисовки `clickhouse-client`, возникающая при изменении размера окна терминала.  [#18009](https://github.com/ClickHouse/ClickHouse/pull/18009) ([Amos Bird](https://github.com/amosbird)).
 * Уровень подробности логов событий, когда клиент отключается, снижен с уровня Предупреждение до Информация.  [#18005](https://github.com/ClickHouse/ClickHouse/pull/18005) ([filimonov](https://github.com/filimonov)).
 * Принудительное удаление пустых или поврежденных файлов метаданных с файловой системы для `DiskS3`.  S3 — это экспериментальная функция.  [#17935](https://github.com/ClickHouse/ClickHouse/pull/17935) ([Pavel Kovalenko](https://github.com/Jokser)).
 * Контроль доступа: установка `allow_introspection_functions=0` запрещает использование функций introspection, но больше не запрещает выдачу привилегий для них (получатель будет обязан установить `allow_introspection_functions=1` для себя, чтобы использовать эту привилегию).  Аналогично, `allow_ddl=0` запрещает использование команд DDL, но больше не запрещает выдачу привилегий для них.  [#17908](https://github.com/ClickHouse/ClickHouse/pull/17908) ([Vitaly Baranov](https://github.com/vitlibar)).
 * Улучшение удобства использования: подсказки для названий столбцов.  [#17112](https://github.com/ClickHouse/ClickHouse/issues/17112).  [#17857](https://github.com/ClickHouse/ClickHouse/pull/17857) ([fastio](https://github.com/fastio)).
 * Добавлена диагностическая информация при попытках двух объединённых таблиц прочитать данные друг друга.  [#17854](https://github.com/ClickHouse/ClickHouse/pull/17854) ([Xu Xin](https://github.com/weeds085490)).* Возможность переопределения значения тайм-аута для выполнения скриптов с использованием образа Docker ClickHouse.  [#17818](https://github.com/ClickHouse/ClickHouse/pull/17818) ([Guillaume Tassery](https://github.com/YiuRULE)).
* Проверка грамматики определения движка для системных таблиц логов для предотвращения некоторых ошибок конфигурации. Примечание: эта проверка грамматики не является семантической, то есть ошибки такого типа как отсутствие колонок / выражений функций не будут выявлены до создания таблицы.  [#17739](https://github.com/ClickHouse/ClickHouse/pull/17739) ([Du Chuan](https://github.com/spongedu)).* Исключена выброс исключения при инициализации таблицы RabbitMQ в случае отсутствия соединения (соединение будет восстановлено в фоновом режиме). [#17709](https://github.com/ClickHouse/ClickHouse/pull/17709) ([Kseniia Sumarokova](https://github.com/kssenii)).

* Отменено игнорирование ограничений памяти сервера во время сброса буфера. [#17646](https://github.com/ClickHouse/ClickHouse/pull/17646) ([Azat Khuzhin](https://github.com/azat)).

* Переключение на исправленную версию RocksDB (из ClickHouse-Extras) для решения проблемы использования данных после освобождения памяти. [#17643](https://github.com/ClickHouse/ClickHouse/pull/17643) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).

* Добавлена смещенная информация об ошибке параллельной обработки. Это решение проблемы [#17457](https://github.com/ClickHouse/ClickHouse/issues/17457). [#17641](https://github.com/ClickHouse/ClickHouse/pull/17641) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).

* Отменено выбрасывание ошибки "Слишком много частей" посередине запроса INSERT. [#17566](https://github.com/ClickHouse/ClickHouse/pull/17566) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Разрешены параметры запроса в операторе UPDATE в запросе ALTER. Устраняет проблему [#10976](https://github.com/ClickHouse/ClickHouse/issues/10976). [#17563](https://github.com/ClickHouse/ClickHouse/pull/17563) ([alexey-milovidov](https://github.com/alexey-milovidov)).

* Обфускатор запросов: избегайте использования некоторых ключевых слов SQL в качестве имен идентификаторов. [#17526](https://github.com/ClickHouse/ClickHouse/pull/17526) ([alexey-milovidov](https://github.com/alexey-milovidov)).* Экспортирована текущая максимальная запись DDL, выполненная DDLWorker, через метрику сервера. Это полезно для проверки, если DDLWorker застрял где-то. [#17464](https://github.com/ClickHouse/ClickHouse/pull/17464) ([Amos Bird](https://github.com/amosbird)).* Экспортированы асинхронные метрики всех текущих потоков серверов. Это полезно для отслеживания проблем, таких как [эта](https://github.com/ClickHouse-Extras/poco/pull/28). [#17463](https://github.com/ClickHouse/ClickHouse/pull/17463) ([Amos Bird](https://github.com/amosbird)).

* Включены динамические столбцы, такие как MATERIALIZED / ALIAS при запросах с помощью звездочки, когда настройки `asterisk_include_materialized_columns` и `asterisk_include_alias_columns` включены. [#17462](https://github.com/ClickHouse/ClickHouse/pull/17462) ([Ken Chen](https://github.com/chenziliang)).

* Разрешено указание [TTL](https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#mergetree-table-ttl) для удаления старых записей из системных логических таблиц, используя атрибут `<ttl>` в `config.xml`. [#17438](https://github.com/ClickHouse/ClickHouse/pull/17438) ([Du Chuan](https://github.com/spongedu)).

* Теперь запросы, поступающие на сервер через протоколы MySQL и PostgreSQL, имеют уникальные типы интерфейсов (которые можно видеть в колонке `interface` таблицы `system.query_log`): `4` для MySQL и `5` для PostgreSQL вместо ранее использовавшегося значения `1`, которое теперь используется только для нативного протокола. [#17437](https://github.com/ClickHouse/ClickHouse/pull/17437) ([Vitaly Baranov](https://github.com/vitlibar)).

* Исправлен парсинг предложения SETTINGS в запросе `INSERT ... SELECT ... SETTINGS`. [#17414](https://github.com/ClickHouse/ClickHouse/pull/17414) ([Azat Khuzhin](https://github.com/azat)).

* Учитывается правильно память в RadixSort. [#17412](https://github.com/ClickHouse/ClickHouse/pull/17412) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).

* Добавлена проверка конца файла в `receiveHello` на стороне сервера для предотвращения получения исключения `Attempt to read after eof`.[#17365](https://github.com/ClickHouse/ClickHouse/pull/17365) ([Kruglov Pavel](https://github.com/Avogar)).
* Предотвращено возможное переполнение стека при преобразовании больших целых чисел. Большие целые числа являются экспериментальными. [#17269](https://github.com/ClickHouse/ClickHouse/pull/17269) ([flynn](https://github.com/ucasFL)).
* Индексы типа `set` теперь поддерживают `GLOBAL IN`. Это исправляет [#17232](https://github.com/ClickHouse/ClickHouse/issues/17232), [#5576](https://github.com/ClickHouse/ClickHouse/issues/5576). [#17253](https://github.com/ClickHouse/ClickHouse/pull/17253) ([Amos Bird](https://github.com/amosbird)).
* Добавлено ограничение для HTTP переадресаций в запросах к хранилищу S3 (`s3_max_redirects`). [#17220](https://github.com/ClickHouse/ClickHouse/pull/17220) ([ianton-ru](https://github.com/ianton-р)).
* При использовании комбинатора `-OrNull` вместе с комбинаторами `-If`, `-Merge`, `-MergeState`, `-State`, `-OrNull` следует располагать перед ними. [#16935](https://github.com/ClickHouse/ClickHouse/pull/16935) ([flynn](https://github.com/ucasFL)).

Поддержана конфигурация прокси HTTP и конечной точки HTTPS S3. [#16861](https://github.com/ClickHouse/ClickHouse/pull/16861) ([Павел Коваленко](https://github.com/Jokser)).
Добавлена правильная аутентификация с использованием окружения, файла `~/.aws` и метода `AssumeRole` для клиента S3. [#16856](https://github.com/ClickHouse/ClickHouse/pull/16856) ([Владимир Чеботарёв](https://github.com/excitoon)).
Добавлено больше трассировок OpenTelemetry. Добавлен пример экспорта данных трассировки в Zipkin. [#16535](https://github.com/ClickHouse/ClickHouse/pull/16535) ([Александр Куздморов](https://github.com/akuzm)).
Кэши словарей: полностью устранены обратные вызовы и блокировки при получении данных.Ключи не разделены на "не найдено" и "истёкшее", но хранятся в одном и том же мапе во время запроса.  [#14958](https://github.com/ClickHouse/ClickHouse/pull/14958) ([Никита Михайлов](https://github.com/nikitamikhaylov)).

* Устранение проблемы с неработающими `fsync_part_directory`, `fsync_after_insert`, `in_memory_parts_insert_sync` (экспериментальная функция).  [#18845](https://github.com/ClickHouse/ClickHouse/pull/18845) ([Азат Хузин](https://github.com/azat)).

* Разрешено использование движка `Atomic` для вложенной базы данных движка `MaterializeMySQL`.  [#14849](https://github.com/ClickHouse/ClickHouse/pull/14849) ([tavplubix](https://github.com/tavplubix)).

#### Исправление ошибки
* Устранение проблемы, когда сервер может прекратить принимать соединения в очень редких случаях.  [#17542](https://github.com/ClickHouse/ClickHouse/pull/17542) (Amos Bird, [alexey-milovidov](https://github.com/alexey-milovidov)).

* Устранение ошибки анализа индекса бинарных функций с константным аргументом, что приводит к неверным результатам запроса.  Это исправляет [#18364](https://github.com/ClickHouse/ClickHouse/issues/18364).  [#18373](https://github.com/ClickHouse/ClickHouse/pull/18373) ([Amos Bird](https://github.com/amosbird)).

* Устранение возможной ошибки анализа индекса при различии типов данных сравнения индекса.  Это исправляет [#17122](https://github.com/ClickHouse/ClickHouse/issues/17122).  [#17145](https://github.com/ClickHouse/ClickHouse/pull/17145) ([Amos Bird](https://github.com/amosbird)).

* Отключение записи с использованием AIO во время слияний, так как это может привести к крайне редкому повреждению данных столбцов первичного ключа во время слияния.  [#18481](https://github.com/ClickHouse/ClickHouse/pull/18481) ([alesapin](https://github.com/alesapin)). * Ограничение слияний от широких частей до компактных. В случае вертикального слияния это приводило к поврежденному результирующему разделу. [#18381](https://github.com/ClickHouse/ClickHouse/pull/18381) ([Антон Попов](https://github.com/CurtizJ)).
  * Устранение возможной неполной части результата запроса при чтении из `MergeTree*` в случае задержки чтения (сообщение `<Debug> MergeTreeReadPool: Will lower number of threads` в логах). Было введено в [#16423](https://github.com/ClickHouse/ClickHouse/issues/16423). Исправляет [#18137](https://github.com/ClickHouse/ClickHouse/issues/18137). [#18216](https://github.com/ClickHouse/ClickHouse/pull/18216) ([Николай Кошечтов](https://github.com/KochetovNicolai)).
  * Устранение ошибки использования после освобождения памяти в библиотеке `rocksdb`. [#18862](https://github.com/ClickHouse/ClickHouse/pull/18862) ([sundyli](https://github.com/sundy-li)).
  * Устранение бесконечного чтения из файла в формате `ORC` (было введено в [#10580](https://github.com/ClickHouse/ClickHouse/issues/10580)). Исправляет [#19095](https://github.com/ClickHouse/ClickHouse/issues/19095). [#19134](https://github.com/ClickHouse/ClickHouse/pull/19134) ([Николай Кошечтов](https://github.com/KochetovNicolai)).
  * Устранение ошибки в писателе данных дерева слияний, которая может привести к меткам большего размера, чем установленная гранулярность. Исправляет [#18913](https://github.com/ClickHouse/ClickHouse/issues/18913). [#19123](https://github.com/ClickHouse/ClickHouse/pull/19123) ([alesapin](https://github.com/alesapin)).
  * Устранение ошибки при старте, когда ClickHouse не мог прочитать сжатие кодека из `LowCardinality(Nullable(...))` и выбрасывал исключение `Attempt to read after EOF`. Исправляет [#18340](https://github.com/ClickHouse/ClickHouse/issues/18340). [#19101](https://github.com/ClickHouse/ClickHouse/pull/19101)com/ClickHouse/ClickHouse/pull/19101) ([alesapin](https://github.com/alesapin)).
  * Ограничение запросов `MODIFY TTL` для таблиц `MergeTree`, созданных в старой синтаксической конструкции. Ранее запрос успешно выполнялся, но фактически не имел эффекта. [#19064](https://github.com/ClickHouse/ClickHouse/pull/19064) ([Антон Попов](https://github.com/CurtizJ)).
  * Обеспечение корректного типа возвращаемого значения функцией `groupUniqArray` для аргумента типа Enum. Это закрывает [#17875](https://github.com/ClickHouse/ClickHouse/issues/17875). [#19019](https://github.com/ClickHouse/ClickHouse/pull/19019) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Устранение возможной ошибки `Expected single dictionary argument for function` при использовании функции `ignore` с аргументом `LowCardinality`. Исправляет [#14275](https://github.com/ClickHouse/ClickHouse/issues/14275). [#19016](https://github.com/ClickHouse/ClickHouse/pull/19016) ([Николай Кошечтов](https://github.com/KochetovNicolai)).
  * Устранение ошибки при вставке столбца `LowCardinality` в таблицу с движком `TinyLog`. Исправляет [#18629](https://github.com/ClickHouse/ClickHouse/issues/18629). [#19010](https://github.com/ClickHouse/ClickHouse/pull/19010) ([Николай Кошечтов](https://github.com/KochetovNicolai)).
  * Соединение пытается материализовать константные колонки, но наш код хочет использовать их в других местах. [#18982](https://github.com/ClickHouse/ClickHouse/pull/18982) ([Никита Михайлов](https://github.com/nikitamikhaylov)).
  * Отключение оптимизации `optimize_move_functions_out_of_any`, так как она не всегда корректна. Это закрывает [#18051](https://github.com/ClickHouse/ClickHouse/issues/18051). Это закрывает [#18973](https://github.com/ClickHouse/ClickHouse/issues/18973). [#18981](https://github.com/ClickHouse/ClickHouse/pull/18981) ([alexey-milovidov](https://github.com/alexey-milovidov)).* Устранено возможное исключение `QueryPipeline stream: различное количество столбцов` вызванное слиянием шагов `Expression` плана запроса. Исправляет [#18190](https://github.com/ClickHouse/ClickHouse/issues/18190). [#18980](https://github.com/ClickHouse/ClickHouse/pull/18980) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Устранено очень редкое состояние мертвого замка при завершении работы. [#18977](https://github.com/ClickHouse/ClickHouse/pull/18977). /com/ClickHouse/ClickHouse/pull/18977) ([tavplubix](https://github.com/tavplubix)).
* Исправлено некорректное поведение при выполнении запроса `ALTER TABLE ... DROP PART 'part_name'`, который удаляет все блоки деконфликта для всего раздела. Исправление [#18874](https://github.com/ClickHouse/ClickHouse/issues/18874). [#18969](https://github.com/ClickHouse/ClickHouse/pull/18969) ([alesapin](https://github.com/alesapin)).
* При присоединении раздела сброс должен выполняться для мутации. [#18804](https://github.com/ClickHouse/ClickHouse/issues/18804). [#18935](https://github.com/ClickHouse/ClickHouse/pull/18935) ([fastio](https://github.com/fastio)).
* Исправлена проблема с `bitmapOrCardinality`, которая может привести к обращению к пустому указателю. Это закрывает [#18911](https://github.com/ClickHouse/ClickHouse/issues/18911). [#18912](https://github.com/ClickHouse/ClickHouse/pull/18912) ([sundyli](https://github.com/sundy-li)).
* Исправлен возможный зависание при завершении работы в `clickhouse-local`. Это исправляет [#18891](https://github.com/ClickHouse/ClickHouse/issues/18891). [#18893](https://github.com/ClickHouse/ClickHouse/pull/18893) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Запросы для внешних баз данных (MySQL, ODBC, JDBC) были некорректно преобразованы, если в выражении было указано `x IN table`. Это исправляет [#9756](https://github.com/ClickHouse/ClickHouse/issues/9756). [#18876](https://github.com/ClickHouse/ClickHouse/pull/18876).```markdown
(com/ClickHouse/ClickHouse/pull/18876) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Исправлено поведение If combinator с одноразовой функцией и Nullable типами. [#18806](https://github.com/ClickHouse/ClickHouse/pull/18806) ([Azat Khuzhin](https://github.com/azat)).
* Исправлена проблема, когда асинхронные распределённые вставки могут быть отклонены сервером, если настройка `network_compression_method` глобально установлена на значение отличное от значения по умолчанию. Это исправляет [#18741](https://github.com/ClickHouse/ClickHouse/issues/18741). [#18776](https://github.com/ClickHouse/ClickHouse/pull/18776) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Исправлено ошибочное сообщение "Попытка чтения после конца файла" при попытке `CAST` `NULL` из `Nullable(String)` в `Nullable(Decimal(P, S))`. Теперь функция `CAST` возвращает `NULL`, если она не может распарсить десятичное число из nullable строки. Исправление [#7690](https://github.com/ClickHouse/ClickHouse/issues/7690). [#18718](https://github.com/ClickHouse/ClickHouse/pull/18718) ([Winter Zhang](https://github.com/zhang2014)).
* Исправлена небольшая проблема с логированием. [#18717](https://github.com/ClickHouse/ClickHouse/issues/18717). [com/ClickHouse/ClickHouse/pull/18717]([sundyli](https://github.com/sundy-li)).
  * Устранение проблемы удаления пустых частей в таблицах типа `ReplicatedMergeTree`, созданных с использованием старой синтаксической конструкции. Исправляет [#18582](https://github.com/ClickHouse/ClickHouse/issues/18582). [#18614](https://github.com/ClickHouse/ClickHouse/pull/18614) ([Anton Popov](https://github.com/CurtizJ)).
  * Устранение ошибки переполнения даты при работе с различными значениями.
```Ограничение строгого значения даты до "2106-02-07", преобразование значений даты больше "2106-02-07" в значение  Yöntem.  [#18565](https://github.com/ClickHouse/ClickHouse/pull/18565) ([hexiaoting](https://github.com/hexiaoting)).
  * Добавление поддержки типа данных `FixedString` для репликации из MySQL.  Репликация из MySQL является экспериментальной функцией.  Этот патч исправляет [#18450](https://github.com/ClickHouse/ClickHouse/issues/18450) Также исправляет [#6556](https://github.com/ClickHouse/ClickHouse/issues/6556).  [#18553](https://github.com/ClickHouse/ClickHouse/pull/18553) ([awesomeleo](https://github.com/awesomeleo)).
  * Устранение возможной ошибки `Pipeline stuck` при использовании `ORDER BY` после подзапроса с соединением `RIGHT` или `FULL`.  [#18550](https://github.com/ClickHouse/ClickHouse/pull/18550) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Устранение бага, который может привести к зависанию запросов `ALTER` после соответствующего убийства мутации.  Найдено с помощью потока фузера.  [#18518](https://github.com/ClickHouse/ClickHouse/pull/18518) ([alesapin](https://github.com/alesapin)).
  * Поддержка правильного времени 12AM в функции `parseDateTimeBestEffort`.  Это исправляет [#18402](https://github.com/ClickHouse/ClickHouse/issues/18402).  [#18449](https://github.com/ClickHouse/ClickHouse/pull/18449) ([vladimir-golovchenko](https://github.com/vladimir-golovchenko)).
  * Исправлено сообщение об ошибке `значение слишком короткое` при выполнении функций `toType(...)` (`toDate`, `toUInt32`, и т. д.) с аргументами типа `Nullable(String)`.  Теперь такие функции возвращают `NULL` при возникновении ошибки парсинга вместо выбрасывания исключения.  Исправляет [#7673](https://github.com/ClickHouse/ClickHouse/issues/7673).  [#18445](https://github.com/ClickHouse/ClickHouse/pull/18445) ([alesapin](https://github.com/alesapin)).com/ClickHouse/ClickHouse/pull/18445) ([tavplubix](https://github.com/tavplubix)).
  * Устранение непредвиденного поведения команды `SHOW TABLES`.  [#18431](https://github.com/ClickHouse/ClickHouse/pull/18431) ([fastio](https://github.com/fastio)).
  * Устранение проблемы генерации несовместимого типа аргумента и типа возврата в комбинаторе `-SimpleState`.  [#18404](https://github.com/ClickHouse/ClickHouse/pull/18404) ([Amos Bird](https://github.com/amosbird)).
  * Устранение возможной проблемы с распараллеливанием (`race condition`) при одновременном использовании таблиц `Set` или `Join` и выборках из таблицы `system.tables`.  [#18385](https://github.com/ClickHouse/ClickHouse/pull/18385) ([alexey-milovidov](https://github.com/alexey-milovidov)).
  * Устранение проблем заполнения таблицы `system.settings_profile_elements`.  Этот Pull Request исправляет [#18231](https://github.com/ClickHouse/ClickHouse/issues/18231).  [#18379](https://github.com/ClickHouse/ClickHouse/pull/18379) ([Vitaly Baranov](https://github.com/vitlibar)).
  * Устранение возможных аварийных завершений работы агрегирующих функций с комбинатором `Distinct` при двухуровневой агрегации.  Исправление [#17682](https://github.com/ClickHouse/ClickHouse/issues/17682).  [#18365](https://github.com/ClickHouse/ClickHouse/pull/18365) ([Anton Popov](https://github.com/CurtizJ)).
  * Исправлено проблемное поведение процесса `clickhouse-odbc-bridge`, который становится недоступным сервером на машинах с двумя версиями IPv4/IPv6; Исправлено проблемное поведение при выполнении некорректных запросов обновления словарей ODBC и/или вызывающее аварийное завершение работы процесса `odbc-bridge`; Возможно закрывает [#14489](https://github.com/ClickHouse/ClickHouse/issues/14489).  [#18278](https://github.com/ClickHouse/ClickHouse/pull/18278) ([Denis Glazachev](https://github.com/DenisGlazachev)).```markdown
com/traceon)).
  * Контроль доступа: `SELECT count() FROM table` теперь может выполняться, если пользователь имеет доступ хотя бы к одной колонке в таблице. Этот Pull Request исправляет [#10639](https://github.com/ClickHouse/ClickHouse/issues/10639). [#18233](https://github.com/ClickHouse/ClickHouse/pull/18233) ([Vitaly Baranov](https://github.com/vitlibar)).
  * Контроль доступа: `SELECT JOIN` теперь требует привилегий `SELECT` для каждой соединенной таблицы. Этот Pull Request исправляет [#17654](https://github.com/ClickHouse/ClickHouse/issues/17654). [#18232](https://github.com/ClickHouse/ClickHouse/pull/18232) ([Vitaly Baranov](https://github.com/vitlibar)).
  * Устранено проблему сравнения ключей между типами Enum и Int. Это исправляет [#17989](https://github.com/ClickHouse/ClickHouse/issues/17989). [#18214](https://github.com/ClickHouse/ClickHouse/pull/18214) ([Amos Bird](https://github.com/amosbird)).
  * Репликация из MySQL (экспериментальная функция). Исправлено [#18186](https://github.com/ClickHouse/ClickHouse/issues/18186). Исправлено [#16372](https://github.com/ClickHouse/ClickHouse/issues/16372). Устранено проблему конвертации уникального ключа в движке баз данных MaterializeMySQL. [#18211](https://github.com/ClickHouse/ClickHouse/pull/18211) ([Winter Zhang](https://github.com/zhang2014)).
  * Исправлено поведение запросов с обоими `WITH FILL` и `WITH TIES`. [#17466](https://github.com/ClickHouse/ClickHouse/issues/17466). [#18188](https://github.com/ClickHouse/ClickHouse/pull/18188) ([hexiaoting](https://github.com/hexiaoting)).
  * Исправлено вставку строки со значением по умолчанию при ошибке парсинга последнего столбца. Исправлено [#17712](https://github.com/ClickHouse/ClickHouse/issues/17712). [#18182](https://github.com/ClickHouse/ClickHouse/pull/18182) ([Jianmei Zhang](https://github.com/zhangjmruc)).
  • Исправлено сообщение об ошибке Unknown setting profile при попытке установки профиля настроек. #18167 (tavplubix).

  • Исправлено сообщение об ошибке при выполнении запроса MODIFY COLUMN ... REMOVE TTL, который фактически не удаляет TTL колонки. #18130 (alesapin).

  • Исправлено исключение std::out_of_range: basic_string при парсинге URL S3. #18059 (Vladimir Chebotarev).

  • Исправлено сравнение типов данных DateTime64 и Date. Исправляет #13804 и #11222. #18050 (Vasily Nemkov).

  • Репликация из MySQL (экспериментальная функциональность): Исправляет #15187 и #17912; поддерживает преобразование префикса индекса MySQL для MaterializeMySQL. #17944 (Winter Zhang).

  • При конфигурировании вращения серверных логов через параметр logger.size с числовым значением больше 2^32, логи не вращались правильно. Это исправлено. #17905 (Alexander Kuzmenkov).

  • Простейшая оптимизация запроса давала неверный результат, если запрос содержал ARRAY JOIN (то есть запрос был фактически сложным). #17887 (sundyli).* Исправлен возможный segfault в агрегирующей функции topK. Закрывает #17404. #17845 (Maksim Kita).

  • WAL (экспериментальная функция): Не восстанавливайте части из WAL, если in_memory_parts_enable_wal отключено. #17802 (detailyang).

  • Сообщение об ошибке о максимальном размере таблицы для удаления было отображено некорректно. #17764 (alexey-milovidov).

  • Устранена возможность получения сегментации при вставке в таблицу Distributed, когда недостаточно места. #17737 (tavplubix).

  • Устранена проблема, при которой ClickHouse не мог возобновить соединение с серверами MySQL. #17681 (Alexander Kazakov).

  • Windows: Устранено сообщение об ошибке "Function not implemented" при выполнении запроса RENAME в базе данных Atomic с запущенным ClickHouse на Windows Subsystem for Linux. Исправляет #17661. #17664 (tavplubix).

  • При выполнении запроса ON CLUSTER из-за условия гонки может быть неправильно определено, является ли кластер круговым (перекрестным) реплицированным или нет, когда pool_size > 1. Это исправлено. #17640 (tavplubix).

  • Исправлена пустота таблицы system.stack_trace` при работе сервера в режиме демона. #17630 (Amos Bird).

    • Исключение fmt::v7::format_error теперь может быть записано в лог в фоновом режиме для таблиц типа MergeTree. Это исправляет #17613. #17615 (alexey-milovidov).
    • При использовании clickhouse-client в интерактивном режиме с многострочными запросами односимвольный комментарий мог быть неверно расширен до конца запроса. Это исправляет #13654. #17565 (alexey-milovidov).
    • Исправлено зависание запроса ALTER, когда соответствующее мутация было завершено на другом реплике. Это исправляет #16953. #17499 (alesapin).
    • Исправлено проблему с учетом памяти при заниженной оценке размера кэша меток. Это может произойти при наличии большого количества мелких файлов с метками. #17496 (alesapin).
    • Исправлена работа ORDER BY при включённой настройке optimize_redundant_functions_in_order_by. #17471 (Anton Popov).
    • Устранены дубликаты после применения оператора DISTINCT, возникающие из-за некорректной оптимизации. Это исправляет #17294. #17296com/ClickHouse/ClickHouse/pull/17296) (li chengxiang). #17439 (Nikolai Kochetov).
    • Устранена высокая нагрузка на процессор в фоновых задачах таблиц типа MergeTree. #17416 (tavplubix).
    • Исправлен возможный сбой при чтении из таблицы JOIN с типами данных LowCardinality. Исправляет #17228. #17397 (Nikolai Kochetov).
    • Репликация из MySQL (экспериментальная функция): Исправляет #16835 попытку исправить расхождение заголовков с командой SHOW MySQL. #17366 (Winter Zhang).
    • Исправлены непредсказуемые функции с помощью оптимизатора предикатов. Это исправляет #17244. #17273 (Winter Zhang).
    • Исправлен возможный сбой Unexpected packet Data received from client для запросов типа Distributed с использованием LIMIT. #17254 (Azat Khuzhin).
    • Исправлено невалидное состояние индекса при наличии константных столбцов в подзапросе. Это исправляет #17246. #17249 (Amos Bird).
    • clickhouse-copier: Исправление для непартционированных таблиц #15235. Исправлены следующие проблемы:* Устранена возможная неработоспособность мутаций для частей, хранящихся на диске S3 (экспериментальная функция). #17227 (Павел Коваленко).
  • Временно исправлена проблема с функцией fuzzBits. Соответствующий запрос: #16980. #17051 (hexiaoting).

  • Исправлена оптимизация запроса optimize_distributed_group_by_sharding_key при использовании OFFSET. #16996 (Азат Хузин).

  • Исправлены запросы из таблиц Merge через таблицы Distributed с JOINами. #16993 (Азат Хузин).

  • Исправлена оптимизация ORDER BY с монотонными функциями. Исправляет #16107. #16956 (Антон Попов).

  • Исправлено некорректное сравнение типов DateTime64 с различными масштабами. Исправляет #16655. #16952 (Василий Немков).

  • Исправлена оптимизация группировки с включенной настройкой optimize_aggregators_of_group_by_keys и JOINами. Исправляет #12604. #16951 (Антон Попов).

  • Мелкое исправление в запросе SHOW ACCESS. #16866 (tavplubix).* Исправлено поведение с включенной настройкой optimize_trivial_count_query и условием раздела. #16767 (Азат Хузин).

  • Возвращается количество затронутых строк для запросов INSERT через протокол MySQL. Ранее ClickHouse всегда возвращал 0, что было исправлено. Исправляет #16605. #16715 (Винтер Чжан).

  • Устранение непоследовательного поведения, вызванного select_sequential_consistency для оптимизированного запроса счетчика и системных таблиц. #16309 (Hao Chen).

  • Выброс ошибки при работе преобразователя столбцов REPLACE с несуществующим столбцом. #16183 (hexiaoting).

  • Выброс исключения в случае некорректного выражения ON в соединении RIGHT|FULL JOIN. #15162 (Артем Зуйков).

Улучшение сборки/тестирования/пакетирования

  • Добавлена простая проверка целостности для бинарников ClickHouse. Это позволяет выявлять повреждения данных из-за сбоев аппаратуры (битовый рот в хранилище данных или битовые ошибки в ОЗУ). #18811 (alexey-milovidov).
  • Изменено использование OpenSSL на BoringSSL. Это позволяет избежать проблем с санитайзерами. Это исправляет #12490, #17502, #17503.com/ClickHouse/ClickHouse/issues/17502), #12952. #18129 (alexey-milovidov).
    • Упрощён скрипт инициализации Sys/V. Он не работал на Ubuntu 12.04 или более ранних версиях. #17428 (alexey-milovidov).
    • Внесены множественные улучшения в скрипт установки /clickhouse install. #17421 (alexey-milovidov).
    • Теперь ClickHouse может имитировать работу фейкового ZooKeeper. На данный момент реализация хранения данных представляет собой просто внутреннюю таблицу, а сервер частично поддерживает протокол ZooKeeper. #16877 (alesapin).
    • Исправлено удаление мертвых списков наблюдателей для TestKeeperStorage (мока для ZooKeeper). #18065 (alesapin).
    • Добавлен командный запрос SYSTEM SUSPEND для моделирования отказов. Он может использоваться для тестирования процесса failover. Это закрывает #15979. #18850 (alexey-milovidov).
    • Генерируется идентификатор сборки при компиляции ClickHouse с lld. Выяснилось, что lld по умолчанию не генерирует его на моей машине. Идентификатор сборки используется для отчетов об ошибках и анализа. #18808 (alexey-milovidov).* Исправлены ошибки ShellCheck в проверке стиля. #18566 (Ilya Yatsishin).
  • Обновлены данные о часовых зонах до версии 2020e. #18531 (alesapin).
  • Устранены предупреждения codespell. Разделена проверка стиля на отдельные части. Обновлен образ Docker для проверки стиля. #18463 (Ilya Yatsishin).
  • Введена автоматическая проверка наличия конфликтных маркеров в документах. #18332 (alexey-milovidov).
  • Включен Thread Fuzzer для тестов без состояния с непредсказуемым поведением. #18299 (alesapin).
  • Отказ от использования многопоточной функции strerror. #18204 (alexey-milovidov).
  • Обновлено действие рабочего процесса anchore/scan-action@main (перемещено с master на main). #18192 (Stig Bakken).
  • Теперь clickhouse-test выполняет DROP/CREATE баз данных с таймаутом. #18098 (alesapin).
  • Введен экспериментальный вариант поддержки Pytest для тестов без состояния. #17902 (Ivan).
  • Теперь используется свежий образ демона Docker в интеграционных тестах. #17671 (alesapin).* Отправка информации о официальной сборке, памяти, CPU и свободном пространстве жесткого диска в Sentry при его активации. Sentry — это опциональная функция, помогающая разработчикам ClickHouse. Это закрывает #17279. #17543 (alexey-milovidov).
  • В коде clickhouse-copier присутствовало незаполненное значение переменной. #17363 (Nikita Mikhaylov).
  • Устранение одного сообщения MSan #17309. #17344 (Nikita Mikhaylov).
  • Устранение проблемы с IPv6 в библиотеке Arrow Flight. См. комментарии.
  • Добавлена библиотека, которая заменяет некоторые функции из libc на ловушки, приводящие к завершению процесса. #16366 (alexey-milovidov).
  • Предоставлено диагностирование в серверных журналах при переполнении стека, отправка сообщения об ошибке в clickhouse-client. Это закрывает #14840. #16346 (alexey-milovidov).
  • Теперь мы можем запускать почти все бессостоятельные функциональные тесты параллельно. #15236 (alesapin).* Устранено повреждение в librdkafka при декомпрессии с помощью Snappy (было проблемой только для сборок gcc10, но официальные сборки используют clang, поэтому хотя бы последние официальные выпуски не затронуты). #18053 (Азат Хузин).
  • Если сервер был завершен OOM-убийцей, выводится сообщение в журнал. #13516 (alexey-milovidov).
  • PODArray: Избежание вызова memcpy с аргументами (nullptr, 0) (Исправление отчета UBSan). Это исправляет #18525. #18526 (alexey-milovidov).
  • Небольшое улучшение для конкатенации путей ZooKeeper внутри DDLWorker. #17767 (Бхарат Наллан).
  • Разрешено перезагрузить символы из отладочного файла. Этот запрос также исправляет проблему с id сборки. #17637 (Амос Бирд). ## Журнал изменений за 2020 год

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ClickHouse-ClickHouse.git
git@api.gitlife.ru:oschina-mirror/ClickHouse-ClickHouse.git
oschina-mirror
ClickHouse-ClickHouse
ClickHouse-ClickHouse
master