Перейти к основному содержанию

Релиз ClickHouse 1.1.54327, 2017-12-21

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

Релиз ClickHouse 1.1.54318, 2017-11-30

Этот релиз содержит исправления ошибок из предыдущего релиза 1.1.54310:
  • Исправлено некорректное удаление строк во время слияний в движке SummingMergeTree
  • Исправлена утечка памяти в нереплицируемых движках MergeTree
  • Исправлено снижение производительности при частых вставках в движках MergeTree
  • Исправлена проблема, из-за которой очередь репликации переставала работать
  • Исправлены ротация и архивирование серверных журналов

Релиз ClickHouse 1.1.54310, 2017-11-01

Новые возможности:

  • Настраиваемый ключ партиционирования для семейства движков таблиц MergeTree.
  • Движок таблицы Kafka.
  • Добавлена поддержка загрузки моделей 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.

Обратно несовместимые изменения:

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

Исправления ошибок:

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

Улучшения сборки:

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

Релиз ClickHouse 1.1.54304, 2017-10-19

Новые возможности:

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

Исправления ошибок:

  • 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
  • Исправлена обработка случая, когда исполняемый словарь возвращает ненулевой код ответа.

Релиз ClickHouse 1.1.54292, 2017-09-20

Новые возможности:

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

Исправления ошибок:

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

Релиз ClickHouse 1.1.54289, 2017-09-13

Новые возможности:

  • 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.

Исправления ошибок:

  • Улучшен процесс удаления старых узлов в 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-запроса.

Улучшенный процесс разработки и сборки ClickHouse:

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

Обратите внимание при обновлении:

  • Теперь значение по умолчанию для настройки 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> и перезапустите сервер.

Релиз ClickHouse 1.1.54284, 2017-08-29

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

Релиз ClickHouse 1.1.54282, 2017-08-23

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

Релиз ClickHouse 1.1.54276, 2017-08-16

Новые возможности:

  • Добавлена необязательная секция 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), а также повышена её производительность.

Основные изменения:

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

Обратно несовместимые изменения:

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

Полный список изменений:

  • Добавлена настройка 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 в байтах.

Исправления ошибок:

  • 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 в качестве источника.

Улучшенный процесс разработки и сборки ClickHouse:

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

Релиз ClickHouse 1.1.54245, 2017-07-04

Новые возможности:

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

Обратно несовместимые изменения:

  • Удалён SET GLOBAL.

Незначительные изменения:

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

Исправления ошибок:

  • Исправлено «залипание» некорректного 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 повреждён.
Последнее изменение 10 июня 2026 г.