diff --git a/CHANGELOG_RU.md b/CHANGELOG_RU.md index bf81ce720bf..1e90defd2f0 100644 --- a/CHANGELOG_RU.md +++ b/CHANGELOG_RU.md @@ -1,3 +1,87 @@ +# ClickHouse 1.1.54356 Release Candidate, 2018-03-06 + +## Новые возможности: + +* Агрегация без `GROUP BY` по пустому множеству (как например, `SELECT count(*) FROM table WHERE 0`) теперь возвращает результат из одной строки с нулевыми значениями агрегатных функций, в соответствии со стандартом SQL. Вы можете вернуть старое поведение (возвращать пустой результат), выставив настройку `empty_result_for_aggregation_by_empty_set` в значение 1. +* Добавлено приведение типов при `UNION ALL`. Допустимо использование столбцов с разными алиасами в соответствующих позициях `SELECT` в `UNION ALL`, что соответствует стандарту SQL. +* Поддержка произвольных выражений в секции `LIMIT BY`. Ранее было возможно лишь использование столбцов - результата `SELECT`. +* Использование индекса при условии `IN` на кортеж от выражений от столбцов первичного ключа. Пример `WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...)` (Anastasiya Tsarkova). +* Добавлен инструмент `clickhouse-copier` для межкластерного копирования и перешардирования данных (бета). +* Добавлены функции консистентного хэширования `yandexConsistentHash`, `jumpConsistentHash`, `sumburConsistentHash`. Их можно использовать в качестве ключа шардирования для того, чтобы уменьшить объём сетевого трафика при последующих перешардированиях. +* Добавлены функции `arrayAny`, `arrayAll`, `hasAny`, `hasAll`, `arrayIntersect`, `arrayResize`. +* Добавлена функция `arrayCumSum` (Javi Santana). +* Добавлена функция `parseDateTimeBestEffort`, `parseDateTimeBestEffortOrZero`, `parseDateTimeBestEffortOrNull`, позволяющая прочитать DateTime из строки, содержащей текст в широком множестве возможных форматов. +* Возможность изменения параметров логгирования без перезагрузки сервера. +* Добавлена табличная функция `cluster`. Пример: `cluster(cluster_name, db, table)`. Табличная функция `remote` может принимать имя кластера в качестве первого аргумента, если оно указано в виде идентификатора. +* Добавлены виртуальные столбцы `create_table_query`, `engine_full` в таблицу `system.tables`. Столбец `metadata_modification_time` сделан виртуальным. +* Добавлены столбцы `data_path`, `metadata_path` в таблицы `system.tables` и` system.databases`, а также столбец `path` в таблицы `system.parts` и `system.parts_columns`. +* Добавлена дополнительная информация о слияниях в таблицу `system.part_log`. +* Возможность использования произвольного ключа партиционирования для таблицы `system.query_log` (Kirill Shvakov). +* Запрос `SHOW TABLES` теперь показывает также и временные таблицы. Добавлены временные таблицы и столбец `is_temporary` в таблице `system.tables` (zhang2014). +* Добавлен запрос `DROP TEMPORARY TABLE` (zhang2014). +* Поддержка `SHOW CREATE TABLE` для временных таблиц (zhang2014). +* Добавлен конфигурационный параметр `system_profile` для настроек, используемых внутренними процессами. +* Поддержка загрузки `object_id` в качестве атрибута в словарях с источником `MongoDB` (Павел Литвиненко). +* Возможность читать `null` как значение по-умолчанию при загрузке данных для внешнего словаря с источником `MongoDB` (Павел Литвиненко). +* Возможность чтения значения типа `DateTime` в формате `Values` из unix timestamp без одинарных кавычек. +* Поддержан failover в табличной функции `remote` для случая, когда на части реплик отсутствует запрошенная таблица. +* Возможность переопределять параметры конфигурации в параметрах командной строки при запуске `clickhouse-server`, пример: `clickhouse-server -- --logger.level=information`. +* Реализована функция `empty` от аргумента типа `FixedString`: функция возвращает 1, если строка состоит полностью из нулевых байт. +* Добавлен конфигурационный параметр `listen_try`, позволяющий слушать хотя бы один из listen адресов и не завершать работу, если некоторые адреса не удаётся слушать (полезно для систем с выключенной поддержкой IPv4 или IPv6). +* Добавлен движок таблиц `VersionedCollapsingMergeTree`. +* Поддержка строк и произвольных числовых типов для источника словарей `library`. +* Возможность использования таблиц семейства `MergeTree` без первичного ключа (для этого необходимо указать `ORDER BY tuple()`). +* Добавлена возможность выполнить преобразование (`CAST`) `Nullable` типа в не `Nullable` тип, если аргумент не является `NULL`. +* Возможность выполнения `RENAME TABLE` для `VIEW`. +* Добавлено ограничение `max_expanded_ast_elements` действующее на размер AST после рекурсивного раскрытия алиасов. +* Добавлена настройка `odbc_default_field_size`, позволяющая расширить максимальный размер значения, загружаемого из ODBC источника (по-умолчанию - 1024). + +## Улучшения: + +* Ограничения на результат и квоты на результат теперь не применяются к промежуточным данным для запросов INSERT SELECT и для подзапросов в SELECT. +* Уменьшено количество ложных срабатываний при проверке состояния Replicated таблиц при запуске сервера, приводивших к необходимости выставления флага `force_restore_data`. +* Добавлена настройка `allow_distributed_ddl`. +* Запрещено использование недетерминированных функций в выражениях для ключей таблиц семейства MergeTree. +* Файлы с подстановками из `config.d` директорий загружаются в алфавитном порядке. +* Увеличена производительность функции `arrayElement` в случае константного многомерного массива с пустым массивом в качестве одного из элементов. Пример: `[[1], []][x]`. +* Увеличена скорость запуска сервера при использовании конфигурационных файлов с очень большими подстановками (например, очень большими списками IP-сетей). +* При выполнении запроса, табличные функции выполняются один раз. Ранее табличные функции `remote`, `mysql` дважды делали одинаковый запрос на получение структуры таблицы с удалённого сервера. +* Используется генератор документации MkDocs. +* При попытке удалить столбец таблицы, от которого зависят `DEFAULT`/`MATERIALIZED` выражения других столбцов, кидается исключение (zhang2014). +* Добавлена возможность парсинга пустой строки в текстовых форматах как числа 0 для `Float` типов данных. Эта возможность присутствовала раньше, но была потеряна в релизе 1.1.54342. +* Значения типа `Enum` можно использовать в функциях `min`, `max`, `sum` и некоторых других - в этих случаях используются соответствующие числовые значения. Эта возможность присутствовала ранее, но была потеряна в релизе 1.1.54337. + +## Исправление ошибок: + +* Исправлены случаи ошибочного удаления ненужных столбцов из подзапросов, а также отсутствие удаления ненужных столбцов из подзапросов, содержащих `UNION ALL`. +* Исправлена ошибка в слияниях для таблиц типа `ReplacingMergeTree`. +* Исправлена работа синхронного режима вставки в `Distributed` таблицы (`insert_distributed_sync = 1`). +* Исправлены segfault при некоторых случаях использования `FULL` и `RIGHT JOIN` с дублирующимися столбцами в подзапросах. +* Исправлен порядок столбцов `source` и `last_exception` в таблице `system.dictionaries`. +* Исправлена ошибка - запрос `DROP DATABASE` не удалял файл с метаданными. +* Исправлен запрос `DROP DATABASE` для базы данных типа `Dictionary`. +* Исправлена неоправданно низкая точность работы функций `uniqHLL12` и `uniqCombined` для кардинальностей больше 100 млн. элементов (Alex Bocharov). +* Исправлено вычисление неявных значений по-умолчанию при необходимости одновременного вычисления явных выражений по-умолчанию в запросах `INSERT` (zhang2014). +* Исправлен редкий случай, в котором запрос к таблице типа `MergeTree` мог не завершаться (chenxing-xc). +* Исправлено падение при выполнении запроса `CHECK` для `Distributed` таблиц, если все шарды локальные (chenxing.xc). +* Исправлена незначительная регрессия производительности при работе функций, использующих регулярные выражения. +* Исправлена регрессия производительности при создании многомерных массивов от сложных выражений. +* Исправлена ошибка, из-за которой в `.sql` файл с метаданными может записываться лишняя секция `FORMAT`. +* Исправлена ошибка, приводящая к тому, что ограничение `max_table_size_to_drop` действует при попытке удаления `MATERIALIZED VIEW`, смотрящего на явно указанную таблицу. +* Исправлена несовместимость со старыми клиентами (на старые клиенты могли отправляться данные с типом `DateTime('timezone')`, который они не понимают). +* Исправлена ошибка при чтении столбцов-элементов `Nested` структур, которые были добавлены с помощью `ALTER`, но являются пустыми для старых партиций, когда условия на такие столбцы переносятся в `PREWHERE`. +* Исправлена ошибка при фильтрации таблиц по условию на виртуальных столбец `_table` в запросах к таблицам типа `Merge`. +* Исправлена ошибка при использовании `ALIAS` столбцов в `Distributed` таблицах. +* Исправлена ошибка, приводящая к невозможности динамической компиляции запросов с агрегатными функциями из семейства `quantile`. +* Исправлен race condition в конвейере выполнения запроса, который мог проявляться в очень редких случаях при использовании `Merge` таблиц над большим количеством таблиц, а также при использовании `GLOBAL` подзапросов. +* Исправлено падение при передаче массивов разных размеров в функцию `arrayReduce` при использовании агрегатных функций от нескольких аргументов. +* Запрещено использование запросов с `UNION ALL` в `MATERIALIZED VIEW`. + +## Обратно несовместимые изменения: + +* Удалена настройка distributed_ddl_allow_replicated_alter. Соответствующее поведение включено по-умолчанию. +* Удалён движок таблиц UnsortedMergeTree. + # Релиз ClickHouse 1.1.54343, 2018-02-05 * Добавлена возможность использовать макросы при задании имени кластера в распределенных DLL запросах и создании Distributed-таблиц: `CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table')`.