> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Список изменений за 2017 год

> Список изменений за 2017 год

<div id="clickhouse-release-1-1-54327-2017-12-21">
  ### Релиз ClickHouse 1.1.54327, 2017-12-21
</div>

Этот релиз содержит исправления ошибок предыдущего релиза 1.1.54318:

* Исправлена ошибка, связанная с возможным состоянием гонки при репликации, которая могла привести к потере данных. Эта проблема затрагивает версии 1.1.54310 и 1.1.54318. Если вы используете одну из этих версий с таблицами Replicated, настоятельно рекомендуется обновиться. Эта проблема проявляется в журналах в виде предупреждений, таких как `Part ... from own log does not exist.` Она актуальна, даже если вы не видите этих сообщений в журналах.

<div id="clickhouse-release-1-1-54318-2017-11-30">
  ### Релиз ClickHouse 1.1.54318, 2017-11-30
</div>

Этот релиз содержит исправления ошибок из предыдущего релиза 1.1.54310:

* Исправлено некорректное удаление строк во время слияний в движке SummingMergeTree
* Исправлена утечка памяти в нереплицируемых движках MergeTree
* Исправлено снижение производительности при частых вставках в движках MergeTree
* Исправлена проблема, из-за которой очередь репликации переставала работать
* Исправлены ротация и архивирование серверных журналов

<div id="clickhouse-release-1-1-54310-2017-11-01">
  ### Релиз ClickHouse 1.1.54310, 2017-11-01
</div>

<div id="new-features">
  #### Новые возможности:
</div>

* Настраиваемый ключ партиционирования для семейства движков таблиц MergeTree.
* Движок таблицы [Kafka](/ru/reference/engines/table-engines/integrations/kafka).
* Добавлена поддержка загрузки моделей [CatBoost](https://yandex.com/dev/catboost/) и их применения к данным, хранящимся в ClickHouse.
* Добавлена поддержка часовых поясов с нецелыми смещениями относительно UTC.
* Добавлена поддержка арифметических операций с временными интервалами.
* Диапазон значений типов Date и DateTime расширен до 2105 года.
* Добавлен запрос `CREATE MATERIALIZED VIEW x TO y` (задаёт существующую таблицу для хранения данных materialized view).
* Добавлен запрос `ATTACH TABLE` без аргументов.
* Логика обработки Nested-столбцов с именами, оканчивающимися на -Map, в таблице SummingMergeTree была вынесена в агрегатную функцию sumMap. Теперь такие столбцы можно указывать явно.
* Максимальный размер словаря IP trie увеличен до 128M записей.
* Добавлена функция getSizeOfEnumType.
* Добавлена агрегатная функция sumWithOverflow.
* Добавлена поддержка входного формата Cap'n Proto.
* Теперь можно настраивать уровень сжатия при использовании алгоритма zstd.

<div id="backward-incompatible-changes">
  #### Обратно несовместимые изменения:
</div>

* Создание временных таблиц с движком, отличным от Memory, запрещено.
* Явное создание таблиц с движком View или MaterializedView запрещено.
* При создании таблицы новая проверка удостоверяется, что выражение ключа выборки включено в первичный ключ.

<div id="bug-fixes">
  #### Исправления ошибок:
</div>

* Исправлены зависания при синхронной вставке в distributed таблицу.
* Исправлены неатомарные добавление и удаление частей в таблицах Replicated.
* Данные, вставленные в materialized view, больше не подвергаются лишней дедупликации.
* Выполнение запроса к distributed таблице, у которой локальная реплика отстает, а удаленные реплики недоступны, больше не приводит к ошибке.
* Пользователям больше не нужны права доступа к базе данных `default`, чтобы создавать временные таблицы.
* Исправлено аварийное завершение при указании типа Array без аргументов.
* Исправлены зависания, если заполнен том диска с серверными журналами.
* Исправлено переполнение в функции toRelativeWeekNum для первой недели эпохи Unix.

<div id="build-improvements">
  #### Улучшения сборки:
</div>

* Несколько сторонних библиотек (в частности Poco) были обновлены и переведены на git-подмодули.

<div id="clickhouse-release-1-1-54304-2017-10-19">
  ### Релиз ClickHouse 1.1.54304, 2017-10-19
</div>

<div id="new-features">
  #### Новые возможности:
</div>

* Поддержка TLS в собственном протоколе (для включения задайте `tcp_ssl_port` в `config.xml` ).

<div id="bug-fixes">
  #### Исправления ошибок:
</div>

* `ALTER` для таблиц Replicated теперь старается запускаться как можно раньше.
* Исправлен сбой при чтении данных с настройкой `preferred_block_size_bytes=0.`
* Исправлены сбои `clickhouse-client` при нажатии `Page Down`
* Исправлена обработка некоторых сложных запросов с `GLOBAL IN` и `UNION ALL`
* `FREEZE PARTITION` теперь всегда выполняется атомарно.
* Пустые POST-запросы теперь возвращают ответ с кодом 411.
* Исправлены ошибки обработки выражений вида `CAST(1 AS Nullable(UInt8)).`
* Исправлена ошибка при чтении столбцов `Array(Nullable(String))` из таблиц `MergeTree`.
* Исправлен сбой при разборе запросов вида `SELECT dummy AS dummy, dummy AS b`
* Пользователи теперь корректно обновляются даже при некорректном `users.xml`
* Исправлена обработка случая, когда исполняемый словарь возвращает ненулевой код ответа.

<div id="clickhouse-release-1-1-54292-2017-09-20">
  ### Релиз ClickHouse 1.1.54292, 2017-09-20
</div>

<div id="new-features">
  #### Новые возможности:
</div>

* Добавлена функция `pointInPolygon` для работы с координатами на координатной плоскости.
* Добавлена агрегатная функция `sumMap` для вычисления суммы массивов по аналогии с `SummingMergeTree`.
* Добавлена функция `trunc`. Повышена производительность функций округления (`round`, `floor`, `ceil`, `roundToExp2`) и исправлена логика их работы. Изменена логика функции `roundToExp2` для дробных и отрицательных чисел.
* Исполняемый файл ClickHouse теперь в меньшей степени зависит от версии libc. Один и тот же исполняемый файл ClickHouse может работать на самых разных системах Linux. Зависимость по-прежнему сохраняется при использовании скомпилированных запросов (с параметром `compile = 1`, который по умолчанию не используется).
* Сокращено время, необходимое для динамической компиляции запросов.

<div id="bug-fixes">
  #### Исправления ошибок:
</div>

* Исправлена ошибка, из-за которой иногда появлялись сообщения `part ... intersects previous part` и ухудшалась согласованность реплик.
* Исправлена ошибка, из-за которой server зависал, если ZooKeeper был недоступен при завершении работы.
* Убрано избыточное логирование при восстановлении реплик.
* Исправлена ошибка в реализации UNION ALL.
* Исправлена ошибка в функции concat, возникавшая, если первый столбец в блоке имеет тип Array.
* Прогресс теперь корректно отображается в таблице system.merges.

<div id="clickhouse-release-1-1-54289-2017-09-13">
  ### Релиз ClickHouse 1.1.54289, 2017-09-13
</div>

<div id="new-features">
  #### Новые возможности:
</div>

* `SYSTEM`-запросы для администрирования сервера: `SYSTEM RELOAD DICTIONARY`, `SYSTEM RELOAD DICTIONARIES`, `SYSTEM DROP DNS CACHE`, `SYSTEM SHUTDOWN`, `SYSTEM KILL`.
* Добавлены функции для работы с массивами: `concat`, `arraySlice`, `arrayPushBack`, `arrayPushFront`, `arrayPopBack`, `arrayPopFront`.
* Добавлены параметры `root` и `identity` для конфигурации ZooKeeper. Это позволяет изолировать отдельных пользователей в пределах одного кластера ZooKeeper.
* Добавлены агрегатные функции `groupBitAnd`, `groupBitOr` и `groupBitXor` (для совместимости они также доступны под именами `BIT_AND`, `BIT_OR` и `BIT_XOR`).
* Внешние словари можно загружать из MySQL, указав сокет в файловой системе.
* Внешние словари можно загружать из MySQL по SSL (параметры `ssl_cert`, `ssl_key`, `ssl_ca`).
* Добавлена настройка `max_network_bandwidth_for_user`, ограничивающая общее потребление пропускной способности запросами одного пользователя.
* Добавлена поддержка `DROP TABLE` для временных таблиц.
* Добавлена поддержка чтения значений `DateTime` в формате Unix-временной метки из форматов `CSV` и `JSONEachRow`.
* Отстающие реплики в распределённых запросах теперь по умолчанию исключаются (пороговое значение по умолчанию — 5 минут).
* Во время ALTER используется FIFO-блокировка: запрос ALTER больше не блокируется на неопределённое время из-за непрерывно выполняющихся запросов.
* Добавлена возможность задавать `umask` в файле конфигурации.
* Улучшена производительность запросов с `DISTINCT`.

<div id="bug-fixes">
  #### Исправления ошибок:
</div>

* Улучшен процесс удаления старых узлов в ZooKeeper. Ранее старые узлы иногда не удалялись при очень частых вставках, из-за чего, помимо прочего, сервер медленно завершал работу.
* Исправлена логика случайного выбора хостов для подключения к ZooKeeper.
* Исправлено исключение отстающих реплик в распределённых запросах, если реплика — localhost.
* Исправлена ошибка, из-за которой часть данных в таблице `ReplicatedMergeTree` могла повреждаться после выполнения `ALTER MODIFY` для элемента в структуре `Nested`.
* Исправлена ошибка, из-за которой запросы SELECT могли «зависать».
* Улучшена работа распределённых DDL-запросов.
* Исправлена обработка запроса `CREATE TABLE ... AS <materialized view>`.
* Устранена взаимная блокировка в запросе `ALTER ... CLEAR COLUMN IN PARTITION` для таблиц `Buffer`.
* Исправлено неверное значение по умолчанию для `Enum` (0 вместо минимального) при использовании форматов `JSONEachRow` и `TSKV`.
* Устранено появление процессов-зомби при использовании словаря с источником `executable`.
* Исправлен segfault при выполнении HEAD-запроса.

<div id="improved-workflow-for-developing-and-assembling-clickhouse">
  #### Улучшенный процесс разработки и сборки ClickHouse:
</div>

* Вы можете использовать `pbuilder` для сборки ClickHouse.
* При сборке в Linux можно использовать `libc++` вместо `libstdc++`.
* Добавлены инструкции по использованию инструментов статического анализа кода: `Coverage`, `clang-tidy`, `cppcheck`.

<div id="please-note-when-upgrading">
  #### Обратите внимание при обновлении:
</div>

* Теперь значение по умолчанию для настройки MergeTree `max_bytes_to_merge_at_max_space_in_pool` (максимальный суммарный размер частей данных для слияния в байтах) стало выше: оно увеличено со 100 GiB до 150 GiB. Это может привести к запуску крупных слияний после обновления сервера, что, в свою очередь, может вызвать повышенную нагрузку на дисковую подсистему. Если свободного места на сервере меньше, чем удвоенный суммарный объём выполняющихся слияний, это приведёт к остановке всех остальных слияний, включая слияния небольших частей данных. В результате запросы INSERT будут завершаться с сообщением "Merges are processing significantly slower than inserts." Используйте запрос `SELECT * FROM system.merges`, чтобы отслеживать ситуацию. Вы также можете проверить метрику `DiskSpaceReservedForMerge` в таблице `system.metrics` или в Graphite. Ничего делать для исправления не требуется, поскольку проблема устранится сама собой, когда завершатся крупные слияния. Если это для вас неприемлемо, вы можете восстановить прежнее значение настройки `max_bytes_to_merge_at_max_space_in_pool`. Для этого перейдите к разделу `<merge_tree>` в config.xml, установите `<merge_tree>``<max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool>` и перезапустите сервер.

<div id="clickhouse-release-1-1-54284-2017-08-29">
  ### Релиз ClickHouse 1.1.54284, 2017-08-29
</div>

* Это релиз с исправлениями ошибок для предыдущего релиза 1.1.54282. В нём устранены утечки в каталоге частей в ZooKeeper.

<div id="clickhouse-release-1-1-54282-2017-08-23">
  ### Релиз ClickHouse 1.1.54282, 2017-08-23
</div>

Этот релиз содержит исправления ошибок, обнаруженных в предыдущем релизе 1.1.54276:

* Исправлено `DB::Exception: Assertion violation: !_path.empty()` при вставке в distributed таблицу.
* Исправлен разбор при вставке в формате RowBinary, если входные данные начинаются с ';'.
* Исправлены ошибки при компиляции во время выполнения некоторых агрегатных функций (например, `groupArray()`).

<div id="clickhouse-release-1-1-54276-2017-08-16">
  ### Релиз ClickHouse 1.1.54276, 2017-08-16
</div>

<div id="new-features">
  #### Новые возможности:
</div>

* Добавлена необязательная секция WITH для запроса SELECT. Пример запроса: `WITH 1+1 AS a SELECT a, a*a`
* INSERT можно выполнять синхронно в distributed таблице: OK возвращается только после того, как все данные будут сохранены на всех сегментах. Это включается настройкой insert\_distributed\_sync=1.
* Добавлен тип данных UUID для работы с 16-байтовыми идентификаторами.
* Добавлены псевдонимы CHAR, FLOAT и других типов для совместимости с Tableau.
* Добавлены функции toYYYYMM, toYYYYMMDD и toYYYYMMDDhhmmss для преобразования времени в числа.
* Для идентификации серверов в кластерных DDL-запросах можно использовать IP-адреса (вместе с именем хоста).
* Добавлена поддержка неконстантных аргументов и отрицательных смещений в функции `substring(str, pos, len).`
* Добавлен параметр max\_size для агрегатной функции `groupArray(max_size)(column)`, а также повышена её производительность.

<div id="main-changes">
  #### Основные изменения:
</div>

* Улучшена безопасность: все файлы сервера создаются с правами доступа 0640 (это можно изменить через параметр конфигурации `<umask>`).
* Улучшены сообщения об ошибках для запросов с некорректным синтаксисом.
* Значительно снижено потребление памяти и повышена производительность при слиянии крупных частей данных MergeTree.
* Значительно повышена производительность слияния данных для движка ReplacingMergeTree.
* Улучшена производительность асинхронных вставок из distributed таблицы за счёт объединения нескольких исходных операций вставки. Чтобы включить эту возможность, используйте параметр distributed\_directory\_monitor\_batch\_inserts=1.

<div id="backward-incompatible-changes">
  #### Обратно несовместимые изменения:
</div>

* Изменён бинарный формат состояний агрегатных функций `groupArray(array_column)` для массивов.

<div id="complete-list-of-changes">
  #### Полный список изменений:
</div>

* Добавлена настройка `output_format_json_quote_denormals`, которая позволяет выводить значения nan и inf в формате JSON.
* Оптимизировано выделение потоков при чтении из distributed таблицы.
* Настройки можно задавать в режиме только для чтения, если их значение не изменяется.
* Добавлена возможность считывать неполные гранулы движка MergeTree, чтобы соблюдать ограничения на размер блока, указанные в настройке preferred\_block\_size\_bytes. Это позволяет уменьшить потребление оперативной памяти и повысить локальность кэша при обработке запросов к таблицам с большими столбцами.
* Повышена эффективность использования индексов, содержащих выражения вида `toStartOfHour(x)`, для условий вида `toStartOfHour(x) op сonstexpr.`
* Добавлены новые настройки для движков MergeTree (раздел merge\_tree в config.xml):
  * replicated\_deduplication\_window\_seconds задаёт количество секунд, в течение которых допускается дедупликация вставок в таблицах Replicated.
  * cleanup\_delay\_period задаёт, как часто запускать очистку для удаления устаревших данных.
  * replicated\_can\_become\_leader может запретить реплике становиться лидером (и назначать слияния).
* Ускорена очистка устаревших данных в ZooKeeper.
* Внесено несколько улучшений и исправлений в DDL-запросы в кластере. Особый интерес представляет новая настройка distributed\_ddl\_task\_timeout, которая ограничивает время ожидания ответа от серверов в кластере. Если DDL-запрос не был выполнен на всех хостах, ответ будет содержать ошибку тайм-аута, а запрос будет выполнен в асинхронном режиме.
* Улучшено отображение трассировок стека в серверных журналах.
* Добавлено значение "none" для метода сжатия.
* В config.xml можно использовать несколько разделов dictionaries\_config.
* Можно подключаться к MySQL через сокет в файловой системе.
* В таблице system.parts появился новый столбец с информацией о размере marks в байтах.

<div id="bug-fixes">
  #### Исправления ошибок:
</div>

* distributed таблицы, использующие таблицу Merge, теперь корректно работают для запросов SELECT с условием по полю `_table`.
* Исправлено редкое состояние гонки в ReplicatedMergeTree при проверке частей данных.
* Исправлено возможное зависание на этапе «выбора лидера» при запуске сервера.
* Настройка max\_replica\_delay\_for\_distributed\_queries игнорировалась при использовании локальной реплики источника данных. Это исправлено.
* Исправлено некорректное поведение `ALTER TABLE CLEAR COLUMN IN PARTITION` при попытке очистить несуществующий столбец.
* Исправлено исключение в функции multiIf при использовании пустых массивов или строк.
* Исправлены избыточные выделения памяти при десериализации формата Native.
* Исправлено некорректное автообновление словарей Trie.
* Исправлено исключение при выполнении запросов с секцией GROUP BY к таблице Merge при использовании SAMPLE.
* Исправлено падение GROUP BY при использовании distributed\_aggregation\_memory\_efficient=1.
* Теперь можно указывать database.table в правой части IN и JOIN.
* Для параллельной агрегации использовалось слишком много потоков. Это исправлено.
* Исправлена работа функции `if` с аргументами FixedString.
* SELECT работал некорректно для distributed таблицы на сегментах с весом 0. Это исправлено.
* Выполнение `CREATE VIEW IF EXISTS` больше не приводит к сбоям.
* Исправлено некорректное поведение при установленном input\_format\_skip\_unknown\_fields=1 и наличии отрицательных чисел.
* Исправлен бесконечный цикл в функции `dictGetHierarchy()`, если в словаре есть некорректные данные.
* Исправлены ошибки `Syntax error: unexpected (...)` при выполнении распределённых запросов с подзапросами в секции IN или JOIN и таблицами Merge.
* Исправлена некорректная интерпретация запроса SELECT к таблицам Dictionary.
* Исправлена ошибка `Cannot mremap` при использовании массивов в секциях IN и JOIN с более чем 2 миллиардами элементов.
* Исправлено переключение при отказе для словарей с MySQL в качестве источника.

<div id="improved-workflow-for-developing-and-assembling-clickhouse">
  #### Улучшенный процесс разработки и сборки ClickHouse:
</div>

* Сборки можно выполнять в Arcadia.
* Для компиляции ClickHouse можно использовать gcc 7.
* Параллельные сборки с использованием ccache+distcc теперь выполняются быстрее.

<div id="clickhouse-release-1-1-54245-2017-07-04">
  ### Релиз ClickHouse 1.1.54245, 2017-07-04
</div>

<div id="new-features">
  #### Новые возможности:
</div>

* Распределённый DDL (например, `CREATE TABLE ON CLUSTER`)
* Реплицируемый запрос `ALTER TABLE CLEAR COLUMN IN PARTITION.`
* Движок для таблиц Dictionary (доступ к данным словаря в виде таблицы).
* Движок базы данных Dictionary (в базах данных этого типа автоматически доступны таблицы Dictionary для всех подключённых внешних словарей).
* Проверка обновлений словаря путём отправки запроса к источнику.
* Квалифицированные имена столбцов
* Использование двойных кавычек для идентификаторов.
* Сеансы в HTTP-интерфейсе.
* Запрос OPTIMIZE для таблицы Replicated может выполняться не только на лидере.

<div id="backward-incompatible-changes">
  #### Обратно несовместимые изменения:
</div>

* Удалён `SET GLOBAL`.

<div id="minor-changes">
  #### Незначительные изменения:
</div>

* Теперь после срабатывания алерта в лог выводится полная трассировка стека.
* Смягчена проверка числа повреждённых/лишних частей данных при запуске (ложных срабатываний было слишком много).

<div id="bug-fixes">
  #### Исправления ошибок:
</div>

* Исправлено «залипание» некорректного connection при вставке в distributed таблицу.
* Теперь GLOBAL IN работает и для запроса из таблицы Merge, обращающегося к distributed таблице.
* Исправлено неверное определение количества ядер на виртуальной машине Google Compute Engine.
* Изменена работа executable-источника кэшированных внешних словарей.
* Исправлено сравнение строк, содержащих нулевые символы.
* Исправлено сравнение полей primary key типа Float32 с константами.
* Ранее неверная оценка размера field могла приводить к чрезмерно большим выделениям памяти.
* Исправлен сбой при выполнении запроса к столбцу Nullable, добавленному в таблицу с помощью ALTER.
* Исправлен сбой при сортировке по столбцу Nullable, если количество строк меньше LIMIT.
* Исправлен subquery в ORDER BY, состоящий только из константных значений.
* Ранее таблица Replicated могла оставаться в некорректном состоянии после неудачного DROP TABLE.
* Псевдонимы для scalar subqueries с пустым результатом больше не теряются.
* Теперь запрос, использующий компиляцию, не завершается с error, если файл .so повреждён.
