From 42bdb65f60718c19cf110208cf242ad6b8b15fd8 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Wed, 12 Sep 2018 00:08:19 +0300 Subject: [PATCH] Added changelog for 18.12.13 (in progress) [#CLICKHOUSE-3939] --- CHANGELOG_RU.md | 120 +++++++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/CHANGELOG_RU.md b/CHANGELOG_RU.md index 441b1901294..c418b546d8b 100644 --- a/CHANGELOG_RU.md +++ b/CHANGELOG_RU.md @@ -2,9 +2,10 @@ ### Новые возможности: -* Добавлен тип данных `DECIMAL(digits, scale)` (`Decimal32(scale)`, `Decimal64(scale)`, `Decimal128(scale)`). Возможность доступна под настройкой `allow_experimental_decimal_type`. #2846] #2970 #3008 #3047 +* Добавлен тип данных `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 -* Добавлена поддержка JOIN с табличной функцией. #2907 +* В запросах с JOIN, звёздочка раскрывается в список столбцов всех таблиц, в соответствии со стандартом SQL. Вернуть старое поведение можно, выставив настройку (уровня пользователя) `asterisk_left_columns_only` в значение 1. Winter Zhang #2787 +* Добавлена поддержка JOIN с табличной функцией Winter Zhang #2907 * Автодополнение по нажатию Tab в clickhouse-client. Sergey Shcherbin #2447 * Нажатие Ctrl+C в clickhouse-client очищает запрос, если он был введён #2877 * Добавлена настройка `join_default_strictness` (значения `''`, `'any'`, `'all'`). Её использование позволяет не указывать `ANY` или `ALL` для `JOIN` #2982 @@ -16,99 +17,104 @@ * Добавлены счётчики `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`. -* Возможность сложения (слияния) состояний агрегатных функций с помощью оператора плюс, а также умножения состояний агрегатных функций на целую неотрицательную константу. +* В таблицах `system.metrics` и `system.events` появилась встроенная документация. #3016 +* Добавлена функция `arrayEnumerateDense` Amos Bird #2975 +* Добавлены функции `arrayCumSumNonNegative` и `arrayDifference` Aleksey Studnev #2942 +* Добавлена агрегатная функция `retention` Sundy Li #2887 +* Возможность сложения (слияния) состояний агрегатных функций с помощью оператора плюс, а также умножения состояний агрегатных функций на целую неотрицательную константу. #3062 #3034 * В таблицах семейства MergeTree добавлен виртуальный столбец `_partition_id` #3089 ### Экспериментальные возможности: -* Добавлен тип данных `LowCardinality(T)`. Тип данных автоматически создаёт локальный словарь значений и позволяет обрабатывать данные без распаковки словаря. -* Добавлен кэш JIT-скомпилированных функций, а также счётчик числа использований перед компиляцией. Возможность JIT-компиляции выражений включается настройкой `compile_expressions`. +* Добавлен тип данных `LowCardinality(T)`. Тип данных автоматически создаёт локальный словарь значений и позволяет обрабатывать данные без распаковки словаря. #2830 +* Добавлен кэш JIT-скомпилированных функций, а также счётчик числа использований перед компиляцией. Возможность JIT-компиляции выражений включается настройкой `compile_expressions` #2990 #3077 ### Улучшения: * Исправлена проблема неограниченного накопления лога репликации в случае наличия заброшенных реплик. Добавлен режим эффективного восстановления реплик после длительного отставания. * Увеличена производительность при выполнении `GROUP BY` в случае, если есть несколько полей агрегации, одно из которых строковое, а другие - фиксированной длины. * Увеличена производительность при использовании `PREWHERE` и при неявном переносе выражений в `PREWHERE`. -* Увеличена производительность парсинга текстовых форматов (`CSV`, `TSV`) Amos Bird -* Увеличена производительность чтения строк и массивов в бинарных форматах Amos Bird -* Увеличена производительность и уменьшено потребление памяти в запросах к таблицам `system.tables` и `system.columns` в случае наличия очень большого количества таблиц на одном сервере. -* Исправлена проблема низкой производительности в случае наличия большого потока запросов, для которых возвращается ошибка (в `perf top` видна функция `_dl_addr`, при этом сервер использует мало CPU). -* Прокидывание условий внутрь View (при включенной настройке `enable_optimize_predicate_expression`). -* Доработки недостающей функциональности для типа данных `UUID`. -* Тип данных `UUID` поддержан в словарях. -* Функция `visitParamExtractRaw` корректно работает с вложенными структурами. -* При использовании настройки `input_format_skip_unknown_fields` корректно работает пропуск значений-объектов в формате `JSONEachRow`. +* Увеличена производительность парсинга текстовых форматов (`CSV`, `TSV`) Amos Bird #2977 #2980 +* Увеличена производительность чтения строк и массивов в бинарных форматах Amos Bird #2955 +* Увеличена производительность и уменьшено потребление памяти в запросах к таблицам `system.tables` и `system.columns` в случае наличия очень большого количества таблиц на одном сервере. #2953 +* Исправлена проблема низкой производительности в случае наличия большого потока запросов, для которых возвращается ошибка (в `perf top` видна функция `_dl_addr`, при этом сервер использует мало CPU). #2938 +* Прокидывание условий внутрь View (при включенной настройке `enable_optimize_predicate_expression`) Winter Zhang #2907 +* Доработки недостающей функциональности для типа данных `UUID` #3074 #2985 +* Тип данных `UUID` поддержан в словарях The-Alchemist #2822 +* Функция `visitParamExtractRaw` корректно работает с вложенными структурами Winter Zhang #2974 +* При использовании настройки `input_format_skip_unknown_fields` корректно работает пропуск значений-объектов в формате `JSONEachRow` BlahGeek #2958 * Для выражения `CASE` с условиями, появилась возможность не указывать `ELSE`, что эквивалентно `ELSE NULL` #2920 -* Возможность конфигурирования operation timeout при работе с ZooKeeper. +* Возможность конфигурирования operation timeout при работе с ZooKeeper. urykhy #2971 * Возможность указания смещения для `LIMIT n, m` в виде `LIMIT n OFFSET m` #2840 * Возможность использования синтаксиса `SELECT TOP n` в качестве альтернативы для `LIMIT` #2840 * Увеличен размер очереди записи в системные таблицы, что позволяет уменьшить количество ситуаций `SystemLog queue is full`. -* В агрегатной функции `windowFunnel` добавлена поддержка событий, подходящих под несколько условий. +* В агрегатной функции `windowFunnel` добавлена поддержка событий, подходящих под несколько условий Amos Bird #2801 * Возможность использования дублирующихся столбцов в секции `USING` для `JOIN` #3006 -* Для форматов `Pretty` введено ограничение выравнивания столбцов по ширине. Настройка `output_format_pretty_max_column_pad_width`. В случае более широкого значения, оно всё ещё будет выведено целиком, но остальные ячейки таблицы не будут излишне широкими. -* В табличной функции `odbc` добавлена возможность указания имени базы данных/схемы. -* Добавлена возможность использования имени пользователя, заданного в конфигурационном файле `clickhouse-client`. +* Для форматов `Pretty` введено ограничение выравнивания столбцов по ширине. Настройка `output_format_pretty_max_column_pad_width`. В случае более широкого значения, оно всё ещё будет выведено целиком, но остальные ячейки таблицы не будут излишне широкими #3003 +* В табличной функции `odbc` добавлена возможность указания имени базы данных/схемы Amos Bird #2885 +* Добавлена возможность использования имени пользователя, заданного в конфигурационном файле `clickhouse-client` Vladimir Kozbin #2909 * Счётчик `ZooKeeperExceptions` разделён на три счётчика `ZooKeeperUserExceptions`, `ZooKeeperHardwareExceptions`, `ZooKeeperOtherExceptions`. * Запросы `ALTER DELETE` работают для материализованных представлений. * Добавлена рандомизация во времени периодического запуска cleanup thread для таблиц типа `ReplicatedMergeTree`, чтобы избежать периодических всплесков нагрузки в случае очень большого количества таблиц типа `ReplicatedMergeTree`. +* Поддержка запроса `ATTACH TABLE ... ON CLUSTER` #3025 ### Исправление ошибок: -* Исправлена ошибка в работе таблиц типа `Dictionary`. -* Исправлена ошибка при мерже данных таблиц типа `CollapsingMergeTree`, если один из кусков данных пустой (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных), и для слияния был выбран алгоритм `vertical`. -* Исправлен race condition при `DROP` или `TRUNCATE` таблиц типа Memory при одновременном `SELECT`, который мог приводить к падениям сервера. -* Исправлена возможность потери данных при вставке в `Replicated` таблицы в случае получения ошибки `Session expired` (потеря данных может быть обнаружена по метрике `ReplicatedDataLoss`). -* Исправлен segfault при `JOIN ... ON`. -* Исправлена ошибка поиска имён столбцов в случае, если выражение `WHERE` состоит целиком из квалифицированного имени столбца, как например `WHERE table.column`. -* Исправлена ошибка вида "Not found column" при выполнении распределённых запросов в случае, если с удалённого сервера запрашивается единственный столбец, представляющий собой выражение IN с подзапросом. -* Исправлена ошибка `Block structure mismatch in UNION stream: different number of columns`, возникающая при распределённых запросах, если один из шардов локальный, а другой - нет, и если при этом срабатывает оптимизация переноса в `PREWHERE`. -* Исправлена работа функции `pointInPolygon` для некоторого случая невыпуклых полигонов. -* Исправлен некорректный результат при сравнении `nan` с целыми числами. -* Исправлена ошибка в библиотеке `zlib-ng`, которая могла приводить к segfault в редких случаях. -* Исправлена утечка памяти при вставке в таблицу со столбцами типа `AggregateFunction`, если состояние агрегатной функции нетривиальное (выделяет память отдельно), и если в одном запросе на вставку получается несколько маленьких блоков. +* Исправлена ошибка в работе таблиц типа `Dictionary` (кидается исключение `Size of offsets doesn't match size of column` или `Unknown compression method`). Ошибка появилась в версии 18.10.3. #issue2913 +* Исправлена ошибка при мерже данных таблиц типа `CollapsingMergeTree`, если один из кусков данных пустой (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных), и для слияния был выбран алгоритм `vertical` #3049 +* Исправлен race condition при `DROP` или `TRUNCATE` таблиц типа `Memory` при одновременном `SELECT`, который мог приводить к падениям сервера. Ошибка появилась в версии 1.1.54388. #3038 +* Исправлена возможность потери данных при вставке в `Replicated` таблицы в случае получения ошибки `Session expired` (потеря данных может быть обнаружена по метрике `ReplicatedDataLoss`). Ошибка возникла в версии 1.1.54378. #2939 #2949 #2964 +* Исправлен segfault при `JOIN ... ON` #3000 +* Исправлена ошибка поиска имён столбцов в случае, если выражение `WHERE` состоит целиком из квалифицированного имени столбца, как например `WHERE table.column` #2994 +* Исправлена ошибка вида "Not found column" при выполнении распределённых запросов в случае, если с удалённого сервера запрашивается единственный столбец, представляющий собой выражение IN с подзапросом #3087 +* Исправлена ошибка `Block structure mismatch in UNION stream: different number of columns`, возникающая при распределённых запросах, если один из шардов локальный, а другой - нет, и если при этом срабатывает оптимизация переноса в `PREWHERE` #2226 #3037 #3055 #3065 #3073 #3090 #3093 +* Исправлена работа функции `pointInPolygon` для некоторого случая невыпуклых полигонов #2910 +* Исправлен некорректный результат при сравнении `nan` с целыми числами #3024 +* Исправлена ошибка в библиотеке `zlib-ng`, которая могла приводить к segfault в редких случаях #2854 +* Исправлена утечка памяти при вставке в таблицу со столбцами типа `AggregateFunction`, если состояние агрегатной функции нетривиальное (выделяет память отдельно), и если в одном запросе на вставку получается несколько маленьких блоков #3084 * Исправлен race condition при одновременном создании и удалении одной и той же таблицы типа `Buffer` или `MergeTree`. -* Исправлена возможность segfault при сравнении кортежей из некоторых нетривиальных типов, таких как, например, кортежей. -* Исправлена возможность segfault при выполнении некоторых запросов `ON CLUSTER`. -* Исправлена ошибка в функции `arrayDistinct` в случае `Nullable` элементов массивов #2845 -* Возможность `enable_optimize_predicate_expression` корректно поддерживает случаи с `SELECT *`. -* Исправлена возможность segfault при переинициализации сессии с ZooKeeper. +* Исправлена возможность segfault при сравнении кортежей из некоторых нетривиальных типов, таких как, например, кортежей #2989 +* Исправлена возможность segfault при выполнении некоторых запросов `ON CLUSTER` Winter Zhang #2960 +* Исправлена ошибка в функции `arrayDistinct` в случае `Nullable` элементов массивов #2845 #2937 +* Возможность `enable_optimize_predicate_expression` корректно поддерживает случаи с `SELECT *` Winter Zhang #2929 +* Исправлена возможность segfault при переинициализации сессии с ZooKeeper #2917 * Исправлена возможность блокировки при взаимодействии с ZooKeeper. * Исправлен некорректный код суммирования вложенных структур данных в `SummingMergeTree`. -* При выделении памяти для состояний агрегатных функций, корректно учитывается выравнивание, что позволяет использовать при реализации состояний агрегатных функций операции, для которых выравнивание является необходимым. +* При выделении памяти для состояний агрегатных функций, корректно учитывается выравнивание, что позволяет использовать при реализации состояний агрегатных функций операции, для которых выравнивание является необходимым chenxing-xc #2808 ### Исправления безопасности: -* Безопасная работа с 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 драйверах теперь не приводят к проблемам со стабильностью сервера или уязвимостям #2828 #2879 #2886 #2893 #2921 +* Исправлена некорректная валидация пути к файлу в табличной функции `catBoostPool` #2894 +* Содержимое системных таблиц (`tables`, `databases`, `parts`, `columns`, `parts_columns`, `merges`, `mutations`, `replicas`, `replication_queue`) фильтруется согласно конфигурации доступа к базам данных для пользователя (`allow_databases`) Winter Zhang #2856 + +### Обратно несовместимые изменения: + +* В запросах с JOIN, звёздочка раскрывается в список столбцов всех таблиц, в соответствии со стандартом SQL. Вернуть старое поведение можно, выставив настройку (уровня пользователя) `asterisk_left_columns_only` в значение 1. ### Изменения сборки: * Добавлен покоммитный запуск большинства интеграционных тестов. * Добавлен покоммитный запуск проверки стиля кода. -* Корректный выбор реализации `memcpy` при сборке на CentOS7 / Fedora. -* При сборке с помощью clang добавлены некоторые warnings из `-Weverything` в дополнение к обычным `-Wall -Wextra -Werror`. +* Корректный выбор реализации `memcpy` при сборке на CentOS7 / Fedora Etienne Champetier #2912 +* При сборке с помощью clang добавлены некоторые warnings из `-Weverything` в дополнение к обычным `-Wall -Wextra -Werror` #2957 * При debug сборке используется debug вариант `jemalloc`. -* Абстрагирован интерфейс библиотеки для взаимодействия с ZooKeeper. +* Абстрагирован интерфейс библиотеки для взаимодействия с ZooKeeper #2950 ## ClickHouse release 18.10.3, 2018-08-13 ### Новые возможности: -* поддержка межсерверной репликации по HTTPS -* MurmurHash -* Поддержка Nullable типов в ODBC драйвере ClickHouse (формат вывода ODBCDriver2). -* поддержка UUID в ключевых колонках. +* Возможность использования HTTPS для репликации. +* Добавлены функции `murmurHash2_64`, `murmurHash3_32`, `murmurHash3_64`, `murmurHash3_128`. +* Поддержка Nullable типов в ODBC драйвере ClickHouse (формат вывода `ODBCDriver2`). +* Поддержка `UUID` в ключевых столбцах. ### Улучшения: * Удаление кластеров без перезагрузки сервера при их удалении из конфигурационных файлов. #2777 * Удаление внешних словарей без перезагрузки сервера при их удалении из конфигурационных файлов. #2779 * Добавлена поддержка `SETTINGS` для движка таблиц `Kafka`. -* Доработки для типа данных `UUID` (не полностью) Simon Podlipsky. +* Доработки для типа данных `UUID` (не полностью) Šimon Podlipský #2618 * Поддежка пустых кусков после мержей в движках `SummingMergeTree`, `CollapsingMergeTree` and `VersionedCollapsingMergeTree` * Удаление старых записей о полностью выполнившихся мутациях (`ALTER DELETE`). * Исправлена логика `REPLACE PARTITION` для движка `ReplicatedMergeTree` @@ -123,21 +129,21 @@ ### Исправление ошибок: * Убрано излишнее экранирование параметров connection string для ODBC, котрое приводило к невозможности соединения. Ошибка возникла в версии 18.6.0. * Исправлена логика обработки команд на `REPLACE PARTITION` в очереди репликации. Неправильная логика могла приводить к тому, что при наличии двух `REPLACE` одной и той же партиции, один из них оставался в очереди репликации и не мог выполниться. -* Исправлена ошибка при мерже, если все куски были пустыми (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных). +* Исправлена ошибка при мерже, если все куски были пустыми (такие куски, в свою очередь, образуются при слиянии или при `ALTER DELETE` в случае удаления всех данных). Ошибка появилась в версии 18.1.0. #2930 * Исправлена ошибка при параллельной записи в таблицы типа `Set` или `Join`. Amos Bird. * Исправлена ошибка `Block structure mismatch in UNION stream: different number of columns`, возникающая при запросах с `UNION ALL` внутри подзапроса, в случае, если один из `SELECT` запросов содержит дублирующиеся имена столбцов. zhang2014 * Исправлена утечка памяти в случае исключения при соединении с MySQL сервером. * Исправлен некорректный код возврата clickhouse-client в случае ошибочного запроса. -* #2786 -* #2777 -* #2795 +* Исправлен некорректная работа materialized views, содержащих DISTINCT #issue2795 ### Обратно несовместимые изменения * Убрана поддержка запросов CHECK TABLE для Distributed таблиц. ### Изменения сборки: * Заменен аллокатор, теперь используется jemalloc вместо tcmalloc. -* Добавлены libressl, unixodbc и mariadb-connector-c как сабмодули. +* Использование libressl из submodule. +* Использование unixodbc из submodule. +* Использование mariadb-connector-c из submodule. * В репозиторий добавлены файлы функциональных тестов, рассчитывающих на наличие тестовых данных (пока без самих тестовых данных).