diff --git a/CHANGELOG_RU.md b/CHANGELOG_RU.md index 9d64eb1de51..65ea8d03178 100644 --- a/CHANGELOG_RU.md +++ b/CHANGELOG_RU.md @@ -3,25 +3,25 @@ ### Новые возможности: * Добавлен тип данных `DECIMAL(digits, scale)` (`Decimal32(scale)`, `Decimal64(scale)`, `Decimal128(scale)`). Возможность доступна под настройкой `allow_experimental_decimal_type`. #2846 #2970 #3008 #3047 -* Модификатор `WITH ROLLUP` для `GROUP BY` (альтернативный синтаксис: `GROUP BY ROLLUP(...)`). #2948 +* Модификатор `WITH ROLLUP` для `GROUP BY` (также доступен синтаксис: `GROUP BY ROLLUP(...)`). #2948 * Добавлена поддержка JOIN с табличной функцией. #2907 * Автодополнение по нажатию Tab в clickhouse-client. * Нажатие Ctrl+C в clickhouse-client очищает запрос, если он был введён. -* Добавлена настройка `join_default_strictness` (значения `''`, `'any'`, `'all'`). Её использование позволяет не указывать ANY или ALL для JOIN. +* Добавлена настройка `join_default_strictness` (значения `''`, `'any'`, `'all'`). Её использование позволяет не указывать `ANY` или `ALL` для `JOIN`. * В каждой строчке лога сервера, относящейся к обработке запроса, выводится идентификатор запроса. #2482 -* Возможность получения логов выполнения запроса в clickhouse-client (настройка send_logs_level). При распределённой обработке запроса, логи отправляются каскадно со всех серверов. #2482 -* В таблицах system.query_log и system.processes появилась информация о всех изменённых настройках при выполнении запроса (вложенная структура данных Settings). Добавлена настройка log_query_settings. #2482 -* В таблицах system.query_log и system.processes появилась информация о номерах потоков, участвующих в исполнении запроса (столбец thread_numbers). #2482 -* Добавлены счётчики ProfileEvents, измеряющие время, потраченное на чтение и запись по сети; чтение и запись на диск; количество сетевых ошибок; время потраченное на ожидании при ограничении сетевой полосы. #2482 -* Добавлены счётчики ProfileEvents, содержащие системные метрики из rusage (позволяющие получить информацию об использовании CPU в userspace и ядре, page faults, context switches) а также метрики taskstats (позволяющие получить информацию о времени ожидания IO, CPU, а также количество прочитанных и записанных данных с учётом и без учёта page cache). #2482 -* Счётчики ProfileEvents учитываются не только глобально, но и на каждый запрос, а также на каждый поток выполнения запроса, что позволяет детально профилировать потребление ресурсов отдельными запросами. #2482 -* Добавлена таблица system.query_thread_log, содержащая информацию о каждом потоке выполнения запроса. Добавлена настройка log_query_threads. #2482 -* В таблицах system.metrics и system.events появилась встроенная документация. -* Добавлена функция arrayEnumerateDense. -* Добавлены функции arrayCumSumNonNegative и arrayDifference. -* Добавлена агрегатная функция retention. +* Возможность получения логов выполнения запроса в clickhouse-client (настройка `send_logs_level`). При распределённой обработке запроса, логи отправляются каскадно со всех серверов. #2482 +* В таблицах `system.query_log` и `system.processes` (`SHOW PROCESSLIST`) появилась информация о всех изменённых настройках при выполнении запроса (вложенная структура данных `Settings`). Добавлена настройка `log_query_settings`. #2482 +* В таблицах `system.query_log` и `system.processes` появилась информация о номерах потоков, участвующих в исполнении запроса (столбец `thread_numbers`). #2482 +* Добавлены счётчики `ProfileEvents`, измеряющие время, потраченное на чтение и запись по сети; чтение и запись на диск; количество сетевых ошибок; время потраченное на ожидании при ограничении сетевой полосы. #2482 +* Добавлены счётчики `ProfileEvents`, содержащие системные метрики из rusage (позволяющие получить информацию об использовании CPU в userspace и ядре, page faults, context switches) а также метрики taskstats (позволяющие получить информацию о времени ожидания IO, CPU, а также количество прочитанных и записанных данных с учётом и без учёта page cache). #2482 +* Счётчики `ProfileEvents` учитываются не только глобально, но и на каждый запрос, а также на каждый поток выполнения запроса, что позволяет детально профилировать потребление ресурсов отдельными запросами. #2482 +* Добавлена таблица `system.query_thread_log`, содержащая информацию о каждом потоке выполнения запроса. Добавлена настройка `log_query_threads`. #2482 +* В таблицах `system.metrics` и `system.events` появилась встроенная документация. +* Добавлена функция `arrayEnumerateDense`. +* Добавлены функции `arrayCumSumNonNegative` и `arrayDifference`. +* Добавлена агрегатная функция `retention`. * Возможность сложения (слияния) состояний агрегатных функций с помощью оператора плюс, а также умножения состояний агрегатных функций на целую неотрицательную константу. -* В таблицах семейства MergeTree добавлен виртуальный столбец _partition_id. +* В таблицах семейства MergeTree добавлен виртуальный столбец `_partition_id`. ### Экспериментальные возможности: @@ -31,68 +31,68 @@ ### Улучшения: * Исправлена проблема неограниченного накопления лога репликации в случае наличия заброшенных реплик. Добавлен режим эффективного восстановления реплик после длительного отставания. -* Увеличена производительность при выполнении GROUP BY в случае, если есть несколько полей агрегации, одно из которых строковое, а другие - фиксированной длины. -* Увеличена производительность при использовании PREWHERE и при неявном переносе выражений в PREWHERE. -* Увеличена производительность парсинга текстовых форматов (CSV, TSV) Amos Bird +* Увеличена производительность при выполнении `GROUP BY` в случае, если есть несколько полей агрегации, одно из которых строковое, а другие - фиксированной длины. +* Увеличена производительность при использовании `PREWHERE` и при неявном переносе выражений в `PREWHERE`. +* Увеличена производительность парсинга текстовых форматов (`CSV`, `TSV`) Amos Bird * Увеличена производительность чтения строк и массивов в бинарных форматах Amos Bird -* Увеличена производительность и уменьшено потребление памяти в запросах к таблицам system.tables и system.columns в случае наличия очень большого количества таблиц на одном сервере. -* Исправлена проблема низкой производительности в случае наличия большого потока запросов, для которых возвращается ошибка (в этом случае сервер тратит всё время в функции `_dl_addr` при выводе стек трейсов). +* Увеличена производительность и уменьшено потребление памяти в запросах к таблицам `system.tables` и `system.columns` в случае наличия очень большого количества таблиц на одном сервере. +* Исправлена проблема низкой производительности в случае наличия большого потока запросов, для которых возвращается ошибка (в `perf top` видна функция `_dl_addr`, при этом сервер использует мало CPU). * Прокидывание условий внутрь View (при включенной настройке `enable_optimize_predicate_expression`). -* Доработки недостающей функциональности для типа данных UUID. -* Тип данных UUID поддержан в словарях. -* Функция visitParamExtractRaw корректно работает с вложенными структурами. -* При использовании настройки `input_format_skip_unknown_fields` корректно работает пропуск значений-объектов в формате JSONEachRow. -* Для выражения CASE с условиями, появилась возможность не указывать ELSE, что эквивалентно ELSE NULL. +* Доработки недостающей функциональности для типа данных `UUID`. +* Тип данных `UUID` поддержан в словарях. +* Функция `visitParamExtractRaw` корректно работает с вложенными структурами. +* При использовании настройки `input_format_skip_unknown_fields` корректно работает пропуск значений-объектов в формате `JSONEachRow`. +* Для выражения `CASE` с условиями, появилась возможность не указывать `ELSE`, что эквивалентно `ELSE NULL`. * Возможность конфигурирования operation timeout при работе с ZooKeeper. -* Возможность указания смещения для LIMIT в виде LIMIT n OFFSET m. +* Возможность указания смещения для `LIMIT n, m` в виде `LIMIT n OFFSET m`. * Возможность использования синтаксиса `SELECT TOP n` в качестве альтернативы для `LIMIT`. * Увеличен размер очереди записи в системные таблицы, что позволяет уменьшить количество ситуаций `SystemLog queue is full`. -* В агрегатной функции windowFunnel добавлена поддержка событий, подходящих под несколько условий. +* В агрегатной функции `windowFunnel` добавлена поддержка событий, подходящих под несколько условий. * Возможность использования дублирующихся столбцов в секции `USING` для `JOIN`. * Для форматов `Pretty` введено ограничение выравнивания столбцов по ширине. Настройка `output_format_pretty_max_column_pad_width`. В случае более широкого значения, оно всё ещё будет выведено целиком, но остальные ячейки таблицы не будут излишне широкими. -* В табличной функции odbc добавлена возможность указания имени базы данных/схемы. +* В табличной функции `odbc` добавлена возможность указания имени базы данных/схемы. * Добавлена возможность использования имени пользователя, заданного в конфигурационном файле `clickhouse-client`. * Счётчик `ZooKeeperExceptions` разделён на три счётчика `ZooKeeperUserExceptions`, `ZooKeeperHardwareExceptions`, `ZooKeeperOtherExceptions`. * Запросы `ALTER DELETE` работают для материализованных представлений. -* Добавлена рандомизация во времени периодического запуска cleanup thread для таблиц типа ReplicatedMergeTree, чтобы избежать периодических всплесков нагрузки в случае очень большого количества таблиц типа ReplicatedMergeTree. +* Добавлена рандомизация во времени периодического запуска cleanup thread для таблиц типа `ReplicatedMergeTree`, чтобы избежать периодических всплесков нагрузки в случае очень большого количества таблиц типа `ReplicatedMergeTree`. ### Исправление ошибок: -* Исправлена ошибка в работе таблиц типа Dictionary. -* Исправлена ошибка при мерже данных таблиц типа CollapsingMergeTree, если один из кусков данных пустой (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных), и для слияния был выбран алгоритм `vertical`. Исправлена ошибка при мерже, если все куски были пустыми и для слияния был выбран алгоритм `vertical`. -* Исправлен race condition при DROP или TRUNCATE таблиц типа Memory при одновременном SELECT. -* Исправлена возможность потери данных при вставке в Replicated таблицы в случае получения ошибки `Session expired`. +* Исправлена ошибка в работе таблиц типа `Dictionary`. +* Исправлена ошибка при мерже данных таблиц типа `CollapsingMergeTree`, если один из кусков данных пустой (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных), и для слияния был выбран алгоритм `vertical`. +* Исправлен race condition при `DROP` или `TRUNCATE` таблиц типа Memory при одновременном `SELECT`, который мог приводить к падениям сервера. +* Исправлена возможность потери данных при вставке в `Replicated` таблицы в случае получения ошибки `Session expired` (потеря данных может быть обнаружена по метрике `ReplicatedDataLoss`). * Исправлен segfault при `JOIN ... ON`. -* Исправлена ошибка поиска имён столбцов в случае, если выражение WHERE состоит целиком из квалифицированного имени столбца, как например `WHERE table.column`. +* Исправлена ошибка поиска имён столбцов в случае, если выражение `WHERE` состоит целиком из квалифицированного имени столбца, как например `WHERE table.column`. * Исправлена ошибка вида "Not found column" при выполнении распределённых запросов в случае, если с удалённого сервера запрашивается единственный столбец, представляющий собой выражение IN с подзапросом. -* Исправлена ошибка `Block structure mismatch in UNION stream: different number of columns`, возникающая при распределённых запросах, если один из шардов локальный, а другой - нет, и если при этом срабатывает оптимизация переноса в PREWHERE. -* Исправлена работа функции pointInPolygon для некоторого случая невыпуклых полигонов. +* Исправлена ошибка `Block structure mismatch in UNION stream: different number of columns`, возникающая при распределённых запросах, если один из шардов локальный, а другой - нет, и если при этом срабатывает оптимизация переноса в `PREWHERE`. +* Исправлена работа функции `pointInPolygon` для некоторого случая невыпуклых полигонов. * Исправлен некорректный результат при сравнении `nan` с целыми числами. -* Исправлена ошибка в библиотеке zlib-ng, которая могла приводить к segfault в редких случаях. -* Исправлена утечка памяти при вставке в таблицу со столбцами типа AggregateFunction, если состояние агрегатной функции нетривиальное (выделяет память отдельно), и если в одном запросе на вставку получается несколько маленьких блоков. -* Исправлен race condition при одновременном создании и удалении одной и той же таблицы типа Buffer или MergeTree. +* Исправлена ошибка в библиотеке `zlib-ng`, которая могла приводить к segfault в редких случаях. +* Исправлена утечка памяти при вставке в таблицу со столбцами типа `AggregateFunction`, если состояние агрегатной функции нетривиальное (выделяет память отдельно), и если в одном запросе на вставку получается несколько маленьких блоков. +* Исправлен race condition при одновременном создании и удалении одной и той же таблицы типа `Buffer` или `MergeTree`. * Исправлена возможность segfault при сравнении кортежей из некоторых нетривиальных типов, таких как, например, кортежей. -* Исправлена возможность segfault при выполнении некоторых запросов ON CLUSTER. -* Исправлена ошибка в функции arrayDistinct в случае Nullable элементов массивов. +* Исправлена возможность segfault при выполнении некоторых запросов `ON CLUSTER`. +* Исправлена ошибка в функции `arrayDistinct` в случае `Nullable` элементов массивов. * Возможность `enable_optimize_predicate_expression` корректно поддерживает случаи с `SELECT *`. * Исправлена возможность segfault при переинициализации сессии с ZooKeeper. * Исправлена возможность блокировки при взаимодействии с ZooKeeper. -* Исправлен некорректный код суммирования вложенных структур данных в SummingMergeTree. +* Исправлен некорректный код суммирования вложенных структур данных в `SummingMergeTree`. * При выделении памяти для состояний агрегатных функций, корректно учитывается выравнивание, что позволяет использовать при реализации состояний агрегатных функций операции, для которых выравнивание является необходимым. ### Исправления безопасности: -* Безопасная работа с ODBC источниками данных. Взаимодействие с ODBC драйверами выполняется через отдельный процесс clickhouse-odbc-bridge. Ошибки в сторонних ODBC драйверах не приводят к проблемам со стабильностью сервера или уязвимостям. -* Исправлена некорректная валидация пути к файлу в табличной функции catBoostPool. -* Содержимое системных (`tables`, `databases`, `parts`, `columns`, `parts_columns`, `merges`, `mutations`, `replicas`, `replication_queue`) таблиц фильтруется согласно конфигурации доступа к базам данных для пользователя (`allow_databases`). +* Безопасная работа с ODBC источниками данных. Взаимодействие с ODBC драйверами выполняется через отдельный процесс `clickhouse-odbc-bridge`. Ошибки в сторонних ODBC драйверах теперь не приводят к проблемам со стабильностью сервера или уязвимостям. +* Исправлена некорректная валидация пути к файлу в табличной функции `catBoostPool`. +* Содержимое системных таблиц (`tables`, `databases`, `parts`, `columns`, `parts_columns`, `merges`, `mutations`, `replicas`, `replication_queue`) фильтруется согласно конфигурации доступа к базам данных для пользователя (`allow_databases`). ### Изменения сборки: * Добавлен покоммитный запуск большинства интеграционных тестов. * Добавлен покоммитный запуск проверки стиля кода. -* Корректный выбор реализации memcpy при сборке на CentOS7 / Fedora. +* Корректный выбор реализации `memcpy` при сборке на CentOS7 / Fedora. * При сборке с помощью clang добавлены некоторые warnings из `-Weverything` в дополнение к обычным `-Wall -Wextra -Werror`. -* При debug сборке используется debug вариант jemalloc. +* При debug сборке используется debug вариант `jemalloc`. * Абстрагирован интерфейс библиотеки для взаимодействия с ZooKeeper. @@ -105,28 +105,41 @@ * поддержка UUID в ключевых колонках. ### Улучшения: -* добавлена поддержка SETTINGS для движка Kafka -* поддежка пустых кусков после мержей в движках Summing, Collapsing and VersionedCollapsing -* удаление старых записей о полностью выполнившихся мутациях -* исправлена логика REPLACE PARTITION для движка RplicatedMergeTree -* добавлена системная таблица system.merge_tree_settings -* в системную таблицу system.tables добавлены столбцы зависимостей: dependencies_database и dependencies_table -* улучшена валидация connection string ODBC -* удалена поддержка CHECK TABLE для распределенных таблиц -* добавлены stateful тесты (пока без данных) -* добавлена опция конфига max_partition_size_to_drop -* добавлена настройка output_format_json_escape_slashes -* добавлена настройка max_fetch_partition_retries_count +* Удаление кластеров без перезагрузки сервера при их удалении из конфигурационных файлов. #2777 +* Удаление внешних словарей без перезагрузки сервера при их удалении из конфигурационных файлов. #2779 +* Добавлена поддержка SETTINGS для движка Kafka +* Доработки для типа данных UUID (не полностью) Simon Podlipsky. +* Поддежка пустых кусков после мержей в движках Summing, Collapsing and VersionedCollapsing +* Удаление старых записей о полностью выполнившихся мутациях (ALTER DELETE). +* Исправлена логика REPLACE PARTITION для движка RplicatedMergeTree +* Добавлена системная таблица system.merge_tree_settings Kirill Shvakov +* В системную таблицу system.tables добавлены столбцы зависимостей: dependencies_database и dependencies_table +* Улучшена валидация connection string ODBC +* Добавлена опция конфига max_partition_size_to_drop +* Добавлена настройка output_format_json_escape_forward_slashes +* Добавлена настройка max_fetch_partition_retries_count * Добавлена настройка prefer_localhost_replica, позволяющая отключить предпочтение локальной реплики и хождение на локальную реплику без межпроцессного взаимодействия. +* Агрегатная функция `quantileExact` возвращает `nan` в случае агрегации по пустому множеству Float типов. ### Исправление ошибок: +* Убрано излишнее экранирование параметров connection string для ODBC, котрое приводило к невозможности соединения. Ошибка возникла в версии . +* Исправлена логика обработки команд на REPLACE PARTITION в очереди репликации. Неправильная логика могла приводить к тому, что при наличии двух REPLACE одной и той же партиции, один из них оставался в очереди репликации и не мог выполниться. +* Исправлена ошибка при мерже, если все куски были пустыми (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных). +* Исправлена ошибка при параллельной записи в таблицы типа Set или Join. Amos Bird. +* Исправлена ошибка `Block structure mismatch in UNION stream: different number of columns`, возникающая при запросах с `UNION ALL` внутри подзапроса, в случае, если один из `SELECT` запросов содержит дублирующиеся имена столбцов. zhang2014 +* Исправлена утечка памяти в случае исключения при соединении с MySQL сервером. +* Исправлен некорректный код возврата clickhouse-client в случае ошибочного запроса. Ошибка возникла в версии * #2786 * #2777 * #2795 +### Обратно несовместимые изменения +* Убрана поддержка запросов CHECK TABLE для Distributed таблиц. + ### Изменения сборки: -* заменен аллокатор, теперь используется jemalloc вместо tcmalloc -* добавлены libressl, unixodbc и mariadb-connector-c как сабмодули +* Заменен аллокатор, теперь используется jemalloc вместо tcmalloc. +* Добавлены libressl, unixodbc и mariadb-connector-c как сабмодули. +* В репозиторий добавлены файлы функциональных тестов, рассчитывающих на наличие тестовых данных (пока без самих тестовых данных). ## ClickHouse release 18.6.0, 2018-08-02