Не выводите завершающие нули в текстовом представлении типов 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).
Реализовано оконное выражение 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).Arrow
, ORC
и Parquet
. #25902 (Kruglov Pavel).Date32
(хранение данных как Int32
), поддерживающий диапазон дат такой же, как у DateTime64
, а также возможность загрузки данных в формате Parquet с типом Date32
в ClickHouse Date32
. Добавлена новая функция toDate32
, аналогичная toDate
. #25774 (LiuNeng).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).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).clickhouse-keeper
. #27125 (小路).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).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).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).BackgroundMessageBrokerSchedulePoolTask
, возможно, неверно введенная. #27452 (Ben)./proc/meminfo
. #27361 (Майк Кот).distributed_group_by_no_merge = 2
с distributed_push_down_limit = 1
или optimize_distributed_group_by_sharding_key = 1
с LIMIT BY и LIMIT OFFSET. #27249. (Азат Хужин). Эти являются редкими сочетаниями настроек, которыми никто не пользуется.system.detached_parts
может содержать неверную информацию для некоторых частей, это исправлено. Исправляет #27114. #27183 (tavplubix).multiSearch*
при пустом массиве, закрывает #27169. #27181 (Владимир Ц).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 (Максим Кита).ALTER TABLE ... PARTITION ID xxx
проверяется на корректность. Исправляет #25718. #26963 (alesapin).Исправлено чтение пользовательских доменов верхнего уровня (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).
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
.system.asynchronous_metrics
и system.asynchronous_metric_log
) по использованию процессора, использованию дискового пространства, использованию памяти, вводу-выводу, сети, файлам, средней нагрузке, частоте процессора, сенсорам температуры, счетчикам EDAC, времени работы системы; также добавлены метрики о джиттере планирования и затраченном времени на сбор метрик. Это работает аналогично atop
в ClickHouse и позволяет получить доступ к данным мониторинга даже если нет установленных дополнительных инструментов.Закрыто #9430. #24416 (alexey-milovidov, Егор Леванков).
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).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).Здесь исправлены пунктуационные ошибки, добавлены пропущенные пробелы и устранены проблемы с согласованием слов.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).
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).
"digest"
, аналогичные ZooKeeper. #24448 (alesapin).col IS NULL
преобразуется в чтение подколонки col.null
. Оптимизация может быть включена путём установки параметра optimize_functions_to_subcolumns
, который по умолчанию отключен. #24406 (Антон Попов).bloom_filter
теперь можно использовать для выражений с функцией hasAny
и константными массивами. Это закрывает: #24291. #24900 (Василий Немков).Разрешено ограничивать пропускную способность для репликации. Добавлены две настройки 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).toInt64('+')
вызывал исключение. #24475 (Amos Bird).SSD_CACHE
создаётся с помощью DDL запроса, он может создаваться только внутри директории user_files
. #24466 (Maksim Kita).SELECT * FROM remote('[::1]', system.one)
). #24319 (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 (Антон Попов).
Улучшение обратной совместимости. Используйте старую версию функции модуля при использовании в ключе раздела. Закрывает #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).Библиот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 (Пинг Ю).
Добавлена функция 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).
EXPLAIN PIPELINE
с SELECT xxx FINAL
показывало неверный пайплайн. (hexiaoting).DateTime
вместо столбца типа DateTime64
в WHERE
. #24100 (Vasily Nemkov).ALTER PARTITION
могли вызывать ошибки Part A intersects previous part B
и Unexpected merged part C intersecting drop range D
в очереди репликации. Это исправлено. Исправляет #23296. #23997 (tavplubix).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).Values
. #23761 (Ксения Сумарокова).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).
Включение 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).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).optimize_skip_unused_shards_rewrite_in
, включен по умолчанию, так как он все еще требует optimize_skip_unused_shards
). #21511 (Azat Khuzhin).PREWHERE
, как это было до версии 21.1 (внесение корректив в внутренние алгоритмы). Недостаточное количество перемещённых условий может привести к снижению производительности. #23397 (Anton Popov).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).
Добавлены тесты 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).
Теперь создание таблиц типа 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).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).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).
Исправление ситуации, когда вычисление модуля деления отрицательного числа на малый делитель приводит к тому, что используемый тип данных недостаточно велик для хранения отрицательного результата. Это закрывает #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
bitAnd
, bitOr
и т. д.) запрещены для аргументов с плавающей запятой. Теперь вам нужно явно преобразовать в целое число. #19853 (Azat Khuzhin).lcm
/gcd
для чисел с плавающей запятой. #19532 (Azat Khuzhin).OPTIMIZE TABLE
/слияний; учтены ограничения памяти запроса и выборки для OPTIMIZE TABLE
/слияний. #18772 (Azat Khuzhin).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).cluster
, а также для обоих функций таблиц remote
и cluster
поддержана распределение данных между узлами путём указания ключа шардинга. Закрыта задача #16752. #18264 (flynn).decodeXMLComponent
для декодирования символов для XML. Пример: SELECT decodeXMLComponent('Hello,"world"!')
#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).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
для простых запросов подсчета для оптимизации простого подсчета;Ускорено выполнение агрегирующей функции 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%.
Поддержка константного результата в функции multiIf
.
Включена поддержка функций length
, empty
, notEmpty
для типа данных Map
, которая возвращает количество ключей в Map
.
#19530 (taiyang-li).
Добавлена опция --reconnect
для clickhouse-benchmark
. При указании этой опции будет происходить переподключение перед каждым запросом. Это необходимо для тестирования.
Поддержана возможность использования нового расположения файла .debug
. Это исправляет проблему #19348.
Функция toIPv6
парсит адреса IPv4
.
Добавлено поле http_referer
в system.query_log
, system.processes
и т. д. Это закрывает проблему #19389.
#19390.com/ClickHouse/ClickHouse/pull/19390) (alexey-milovidov).
IPv4
в PRETTY форматах. Они были выровнены направо, а не налево. Это закрывает #19184. #19339 (alexey-milovidov).max_server_memory_usage
без перезапуска сервера. Это закрывает #18154. #19186 (alexey-milovidov).bar
с определённым значением NaN может быть несколько вводящим в заблуждение в предыдущих версиях. Это исправляет #19088. #19107 (alexey-milovidov).Образ 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) (Мис Цзян).
Запуск 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).
Восстановлен вход Kafka в сборках FreeBSD. #18924 (Александр Снарский).
Устранено потенциальное сброс null-значения в таблице функции VALUES
. #19357 (alexey-milovidov).
Предотвращены отчеты UBSan в функциях arrayElement
, substring
и arraySum
. Исправляет #19305. Исправляет #19287. Это закрывает #19336. #19347 (alexey-milovidov).
Исправление сбоя индекса 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).
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 отличен от нуля./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 (Павел Круглов).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).ORDER BY
при включённой настройке optimize_redundant_functions_in_order_by
. #17471 (Anton Popov).DISTINCT
, возникающие из-за некорректной оптимизации. Это исправляет #17294. #17296com/ClickHouse/ClickHouse/pull/17296) (li chengxiang). #17439 (Nikolai Kochetov).Временно исправлена проблема с функцией 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 (Артем Зуйков).
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).SYSTEM SUSPEND
для моделирования отказов. Он может использоваться для тестирования процесса failover. Это закрывает #15979. #18850 (alexey-milovidov).lld
. Выяснилось, что lld
по умолчанию не генерирует его на моей машине. Идентификатор сборки используется для отчетов об ошибках и анализа. #18808 (alexey-milovidov).* Исправлены ошибки ShellCheck в проверке стиля. #18566 (Ilya Yatsishin).strerror
. #18204 (alexey-milovidov).anchore/scan-action@main
(перемещено с master
на main
). #18192 (Stig Bakken).clickhouse-test
выполняет DROP/CREATE баз данных с таймаутом. #18098 (alesapin).libc
на ловушки, приводящие к завершению процесса. #16366 (alexey-milovidov).librdkafka
при декомпрессии с помощью Snappy (было проблемой только для сборок gcc10, но официальные сборки используют clang, поэтому хотя бы последние официальные выпуски не затронуты). #18053 (Азат Хузин).memcpy
с аргументами (nullptr
, 0
) (Исправление отчета UBSan). Это исправляет #18525. #18526 (alexey-milovidov).Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )