diff --git a/CHANGELOG.draft.md b/CHANGELOG.draft.md index 0674a4193fe..005826d4b06 100644 --- a/CHANGELOG.draft.md +++ b/CHANGELOG.draft.md @@ -1,4 +1,78 @@ -* Настройка `enable_optimize_predicate_expression` выключена по-умолчанию. +## ClickHouse release 18.16.0, 2018-12-14 + +### Новые возможности: + +* Вычисление `DEFAULT` выражений для отсутствующих полей при загрузке данных в полуструктурированных форматах (`JSONEachRow`, `TSKV`). +* Для запроса `ALTER TABLE` добавлено действие `MODIFY ORDER BY` для изменения ключа сортировки при одновременном добавлении или удалении столбца таблицы. Это полезно для таблиц семейства `MergeTree`, выполняющих дополнительную работу при слияниях, согласно этому ключу сортировки, как например, `SummingMergeTree`, `AggregatingMergeTree` и т. п. +* Добавлена табличная функция `hdfs` и движок таблиц `HDFS` для импорта и экспорта данных в HDFS. +* Добавлены функции для работы с base64: `base64Encode`, `base64Decode`, `tryBase64Decode`. +* Для агрегатной функции `uniqCombined` появилась возможность настраивать точность работы с помощью параметра (выбирать количество ячеек HyperLogLog). +* Добавлена таблица `system.contributors`, содержащая имена всех, кто делал коммиты в ClickHouse. +* Добавлена возможность не указывать партицию для запроса `ALTER TABLE ... FREEZE` для бэкапа сразу всех партиций. +* Добавлены функции `dictGet`, `dictGetOrDefault` без указания типа возвращаемого значения. Тип определяется автоматически из описания словаря. +* Слияния, образующие крупные куски таблиц семейства MergeTree, будут производиться в режиме O_DIRECT, что исключает вымывание кэша. Добавлена настройка таблиц семейства `MergeTree` `min_merge_bytes_to_use_direct_io`, по-умолчанию - 10 GiB. +* Возможность указания комментария для столбца в описании таблицы и изменения его с помощью ALTER. +* Добавлены столбцы `partition_key`, `sorting_key`, `primary_key`, `sampling_key` в таблицу `system.tables`, позволяющие получить информацию о ключах таблицы. +* Добавлены столбцы `is_in_partition_key`, `is_in_sorting_key`, `is_in_primary_key`, `is_in_sampling_key` в таблицу `system.columns`. + +### Исправления ошибок: + +* Исправлено некорректное слияние многомерных массивов во вложенных структурах данных при вертикальном мерже. +* Исправлена работа настройки `select_sequential_consistency`. Ранее, при включенной настройке, после начала записи в новую партицию, мог возвращаться неполный результат. +* Корректное указание базы данных при выполнении DDL запросов `ON CLUSTER`. +* Корректное указание базы данных для подзапросов внутри VIEW. +* Исправление ошибки `Unknown compression method` при использовании настройки `min_bytes_to_use_direct_io`. +* Исправлено удаление лишних `ALIAS` столбцов при выполнении запроса с `PREWHERE`. +* Исправлена работа `PREWHERE` с `FINAL` для `VersionedCollapsingMergeTree`. +* Возможность с помощью запроса KILL QUERY отмены запросов, которые ещё не начали выполняться из-за ожидания блокировки таблицы. +* Исправлена неправильная передача таймаутов для словарей ODBC, JDBC. +* Исправлена работа некоторых случаев VIEW и подзапросов без указания базы данных. +* Исправлен race condition при одновременном чтении из MATERIALIZED VIEW и удалением MATERIALIZED VIEW из-за отсутствия блокировки внутренней таблицы MATERIALIZED VIEW. +* Исправлена ошибка `Lock handler cannot be nullptr.` +* Исправления выполнения запросов при включенной настройке `compile_expressions` (выключена по-умолчанию) - убрана свёртка недетерминированных константных выражений, как например, функции `now`. +* Исправлено падение при указании неконстантного аргумента scale в функциях `toDecimal32/64/128`. +* Исправлена ошибка при попытке вставки в формате `Values` массива с `NULL` элементами в столбец типа `Array` без `Nullable` (в случае `input_format_values_interpret_expressions` = 1). +* Исправления и улучшения производительности для типа данных `LowCardinality`. GROUP BY по LowCardinality(Nullable(...)). Получение extremes значений. Выполнение функций высшего порядка. LEFT ARRAY JOIN. Распределённый GROUP BY. Функции, возвращающие Array. Выполнение ORDER BY. Запись в Distributed таблицы (nicelulu) +* Исправлено непрерывное логгирование ошибок в `DDLWorker`, если ZooKeeper недоступен. +* Исправлен тип возвращаемого значения для функций `quantile*` от аргументов типа `Date` и `DateTime`. +* Исправлена работа секции `WITH`, если она задаёт простой алиас. +* Исправлена обработка запросов с именованными подзапросами при включенной настройке `enable_optimize_predicate_expression`. +* Исправлена ошибка `Attempt to attach to nullptr thread group` при работе материализованных представлений. +* Исправлена ошибка при вставке данных в `Distributed` таблицу в случае несовпадающей структуры таблицы на удалённом сервере. +* Исправлено падение при передаче некоторых некорректных аргументов в функцию `arrayReverse`. +* Исправлен buffer overflow в функции `extractURLParameter`. Увеличена производительность. Добавлена корректная обработка строк, содержащих нулевые байты. +* Исправлен buffer overflow в функциях `lowerUTF8`, `upperUTF8`. Удалена возможность выполнения этих функций над аргументами типа FixedString. +* Исправлен редкий race condition при удалении таблиц типа MergeTree. ### Улучшения: -* Файлы *-preprocessed.xml записываются в директорию с данными (/var/lib/clickhouse/preprocessed_configs). Для /etc/clickhouse-server больше не нужен +w для пользователя clickhouse. Для удобства создан симлинк /var/lib/clickhouse/preprocessed_configs -> /etc/clickhouse-server/preprocessed + +* Обработанные конфигурационные файлы записываются сервером не в `/etc/clickhouse-server/` директорию, а в директорию `preprocessed_configs` внутри `path`. Это позволяет оставить директорию `/etc/clickhouse-server/` недоступной для записи пользователем `clickhouse`, что повышает безопасность. +* Ускорен запуск сервера в случае наличия очень большого количества таблиц. +* Добавлен HTTP Keep-Alive для соединения между репликами. +* В случае ошибки синтаксиса запроса, в `HTTP` интерфейсе возвращается код `400 Bad Request` (ранее возвращался код 500). +* Для настройки `join_default_strictness` выбрано значение по-умолчанию `ALL` для совместимости. +* Для движка таблиц Kafka TODO +* Функции `cityHash64`, `farmHash64`, `metroHash64`, `sipHash64`, `halfMD5`, `murmurHash2_32`, `murmurHash2_64`, `murmurHash3_32`, `murmurHash3_64` теперь работают для произвольного количества аргументов, а также для аргументов-кортежей. +* Функция `arrayReverse` теперь работает с любыми типами массивов. +* В `clickhouse-benchmark` и `clickhouse-performance-test` добавлен параметр командной строки `--secure` для включения TLS. +* Преобразование типов в случае, если структура таблицы типа `Buffer` не соответствует структуре таблицы назначения. +* Добавлена настройка tcp_keep_alive_timeout для включения keep-alive пакетов после неактивности в течение указанного интервала времени. +* Убрано излишнее квотирование ключа партиции в таблице `system.parts`, если он состоит из одного столбца. +* Функция деления с остатком работает для типов данных `Date` и `DateTime`. +* Добавлены синонимы функций POWER, LN. Некоторые имена функций сделаны регистронезависимыми для совместимости со стандартом SQL. +* Добавлена возможность включения `mlock` страниц памяти, соответствующих исполняемому коду `clickhouse-server` для предотвращения вытеснения их из памяти. Возможность выключена по-умолчанию. +* Увеличена производительность чтения с O_DIRECT (с включенной опцией min_bytes_to_use_direct_io). +* Улучшена производительность работы функции `dictGet...OrDefault` в случае константного аргумента-ключа и неконстантного аргумента-default. +* В функции `firstSignificantSubdomain` добавлена обработка доменов `gov`, `mil`, `edu`. Увеличена производительность работы. +* Возможность указания произвольных переменных окружения для запуска clickhouse-server с помощью указания `CLICKHOUSE_PROGRAM_ENV` в `/etc/default/clickhouse`. +* Правильный код возврата init-скрипта clickhouse-server. +* В таблицу `system.metrics` добавлена метрика `VersionInteger`, а в `system.build_options` добавлена строчка `VERSION_INTEGER`, содержащая версию ClickHouse в числовом представлении, вида `18016000`. +* Удалена возможность сравнения типа `Date` с числом, чтобы избежать потенциальных ошибок вида `date = 2018-12-17`, где ошибочно не указаны кавычки вокруг даты. + +### Улучшение сборки: + +* Обновлена библиотека `jemalloc`, что исправляет потенциальную утечку памяти. +* Добавлена возможность запуска интеграционных тестов, при наличии установленным в системе лишь `Docker`. +* Добавлен fuzz тест выражений в SELECT запросах. +* Добавлен покоммитный stress тест, выполняющий функциональные тесты параллельно и в произвольном порядке, без разбора результатов, позволяющий обнаружить больше race conditions. +* Исправление запуска clickhouse-server в Docker образе.