ClickHouse/CHANGELOG_RU.md
2018-08-09 22:21:31 +03:00

109 KiB
Raw Permalink Blame History

ClickHouse release 18.6.0, 2018-08-02

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

  • Добавлена поддержка ON выражений для JOIN ON синтаксиса: JOIN ON Expr([table.]column, ...) = Expr([table.]column, ...) [AND Expr([table.]column, ...) = Expr([table.]column, ...) ...] Выражение должно представлять из себя цепочку равенств, объединенных оператором AND. Каждая часть равенства может являться произвольным выражением над столбцами одной из таблиц. Поддержана возможность использования fully qualified имен столбцов (table.name, database.table.name, table_alias.name, subquery_alias.name) для правой таблицы. #2742
  • Добавлена возможность включить HTTPS для репликации. #2760

Улучшения:

  • Сервер передаёт на клиент также patch-компонент своей версии. Данные о patch компоненте версии добавлены в system.processes и query_log. #2646

ClickHouse release 18.5.1, 2018-07-31

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

  • Добавлена функция хеширования murmurHash2_32 #2756.

Улучшения:

  • Добавлена возможность указывать значения в конфигурационных файлах из переменных окружения с помощью атрибута from_env #2741.
  • Добавлены регистронезависимые версии функций coalesce, ifNull, nullIf #2752.

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

  • Исправлена возможная ошибка при старте реплики #2759.

ClickHouse release 18.4.0, 2018-07-28

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

  • Добавлены системные таблицы formats, data_type_families, aggregate_function_combinators, table_functions, table_engines, collations #2721.
  • Добавлена возможность использования табличной функции вместо таблицы в качестве аргумента табличной функции remote и cluster #2708.
  • Поддержка HTTP Basic аутентификации в протоколе репликации #2727.
  • В функции has добавлена возможность поиска в массиве значений типа Enum по числовому значению Maxim Khrisanfov.
  • Поддержка добавления произвольных разделителей сообщений в процессе чтения из Kafka Amos Bird.

Улучшения:

  • Запрос ALTER TABLE t DELETE WHERE не перезаписывает куски данных, которые не были затронуты условием WHERE #2694.
  • Настройка use_minimalistic_checksums_in_zookeeper таблиц семейства ReplicatedMergeTree включена по-умолчанию. Эта настройка была добавлена в версии 1.1.54378, 2018-04-16. Установка версий, более старых, чем 1.1.54378, становится невозможной.
  • Поддерживается запуск запросов KILL и OPTIMIZE с указанием ON CLUSTER Winter Zhang.

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

  • Исправлена ошибка Column ... is not under aggregate function and not in GROUP BY в случае агрегации по выражению с оператором IN. Ошибка появилась в версии 18.1.0. (bbdd780b)
  • Исправлена ошибка в агрегатной функции windowFunnel Winter Zhang.
  • Исправлена ошибка в агрегатной функции anyHeavy (a2101df2)
  • Исправлено падение сервера при использовании функции countArray().

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

  • Список параметров для таблиц Kafka был изменён с Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_schema, kafka_num_consumers]) на Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format[, kafka_row_delimiter, kafka_schema, kafka_num_consumers]). Если вы использовали параметры kafka_schema или kafka_num_consumers, вам необходимо вручную отредактировать файлы с метаданными path/metadata/database/table.sql, добавив параметр kafka_row_delimiter со значением '' в соответствующее место.

ClickHouse release 18.1.0, 2018-07-23

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

  • Поддержка запроса ALTER TABLE t DELETE WHERE для нереплицированных MergeTree-таблиц (#2634).
  • Поддержка произвольных типов для семейства агрегатных функций uniq* (#2010).
  • Поддержка произвольных типов в операторах сравнения (#2026).
  • Возможность в users.xml указывать маску подсети в формате 10.0.0.1/255.255.255.0. Это необходимо для использования "дырявых" масок IPv6 сетей (#2637).
  • Добавлена функция arrayDistinct (#2670).
  • Движок SummingMergeTree теперь может работать со столбцами типа AggregateFunction (Constantin S. Pan).

Улучшения:

  • Изменена схема версионирования релизов. Теперь первый компонент содержит год релиза (A.D.; по московскому времени; из номера вычитается 2000), второй - номер крупных изменений (увеличивается для большинства релизов), третий - патч-версия. Релизы по-прежнему обратно совместимы, если другое не указано в changelog.
  • Ускорено преобразование чисел с плавающей точкой в строку (Amos Bird).
  • Теперь, если при вставке из-за ошибок парсинга пропущено некоторое количество строк (такое возможно про включённых настройках input_allow_errors_num, input_allow_errors_ratio), это количество пишется в лог сервера (Leonardo Cecchi).

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

  • Исправлена работа команды TRUNCATE для временных таблиц (Amos Bird).
  • Исправлен редкий deadlock в клиентской библиотеке ZooKeeper, который возникал при сетевой ошибке во время вычитывания ответа (c315200).
  • Исправлена ошибка при CAST в Nullable типы (#1322).
  • Исправлен неправильный результат функции maxIntersection() в случае совпадения границ отрезков (Michael Furmur).
  • Исправлено неверное преобразование цепочки OR-выражений в аргументе функции (chenxing-xc).
  • Исправлена деградация производительности запросов, содержащих выражение IN (подзапрос) внутри другого подзапроса (#2571).
  • Исправлена несовместимость серверов разных версий при распределённых запросах, использующих функцию CAST не в верхнем регистре (fe8c4d6).
  • Добавлено недостающее квотирование идентификаторов при запросах к внешним СУБД (#2635).

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

  • Не работает преобразование строки, содержащей число ноль, в DateTime. Пример: SELECT toDateTime('0'). По той же причине не работает DateTime DEFAULT '0' в таблицах, а также <null_value>0</null_value> в словарях. Решение: заменить 0 на 0000-00-00 00:00:00.

ClickHouse release 1.1.54394, 2018-07-12

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

  • Добавлена агрегатная функция histogram (Михаил Сурин).
  • Возможность использования OPTIMIZE TABLE ... FINAL без указания партиции для ReplicatedMergeTree (Amos Bird).

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

  • Исправлена ошибка - выставление слишком маленького таймаута у сокетов (одна секунда) для чтения и записи при отправке и скачивании реплицируемых данных, что приводило к невозможности скачать куски достаточно большого размера при наличии некоторой нагрузки на сеть или диск (попытки скачивания кусков циклически повторяются). Ошибка возникла в версии 1.1.54388.
  • Исправлена работа при использовании chroot в ZooKeeper, в случае вставки дублирующихся блоков данных в таблицу.
  • Исправлена работа функции has для случая массива с Nullable элементами (#2115).
  • Исправлена работа таблицы system.tables при её использовании в распределённых запросах; столбцы metadata_modification_time и engine_full сделаны невиртуальными; исправлена ошибка в случае, если из таблицы были запрошены только эти столбцы.
  • Исправлена работа пустой таблицы типа TinyLog после вставки в неё пустого блока данных (#2563).
  • Таблица system.zookeeper работает в случае, если значение узла в ZooKeeper равно NULL.

ClickHouse release 1.1.54390, 2018-07-06

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

  • Возможность отправки запроса в формате multipart/form-data (в поле query), что полезно, если при этом также отправляются внешние данные для обработки запроса (Ольга Хвостикова).
  • Добавлена возможность включить или отключить обработку одинарных или двойных кавычек при чтении данных в формате CSV. Это задаётся настройками format_csv_allow_single_quotes и format_csv_allow_double_quotes (Amos Bird)
  • Возможность использования OPTIMIZE TABLE ... FINAL без указания партиции для не реплицированных вариантовMergeTree (Amos Bird).

Улучшения:

  • Увеличена производительность, уменьшено потребление памяти, добавлен корректный учёт потребления памяти, при использовании оператора IN в случае, когда для его работы может использоваться индекс таблицы (#2584).
  • Убраны избыточные проверки чексумм при добавлении куска. Это важно в случае большого количества реплик, так как в этом случае суммарное количество проверок было равно N^2.
  • Добавлена поддержка аргументов типа Array(Tuple(...)) для функции arrayEnumerateUniq (#2573).
  • Добавлена поддержка Nullable для функции runningDifference. (#2594)
  • Увеличена производительность анализа запроса в случае очень большого количества выражений (#2572).
  • Более быстрый выбор кусков для слияния в таблицах типа ReplicatedMergeTree. Более быстрое восстановление сессии с ZooKeeper. (#2597).
  • Файл format_version.txt для таблиц семейства MergeTree создаётся заново при его отсутствии, что имеет смысл в случае запуска ClickHouse после копирования структуры директорий без файлов (Ciprian Hacman).

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

  • Исправлена ошибка при работе с ZooKeeper, которая могла приводить к невозможности восстановления сессии и readonly состояниям таблиц до перезапуска сервера.
  • Исправлена ошибка при работе с ZooKeeper, которая могла приводить к неудалению старых узлов при разрыве сессии.
  • Исправлена ошибка в функции quantileTDigest для Float аргументов (ошибка появилась в версии 1.1.54388) (Михаил Сурин).
  • Исправлена ошибка работы индекса таблиц типа MergeTree, если в условии, столбец первичного ключа расположен внутри функции преобразования типов между знаковым и беззнаковым целым одного размера (#2603).
  • Исправлен segfault, если в конфигурационном файле нет macros, но они используются (#2570).
  • Исправлено переключение на базу данных по-умолчанию при переподключении клиента (#2583).
  • Исправлена ошибка в случае отключенной настройки use_index_for_in_with_subqueries.

Исправления безопасности:

  • При соединениях с MySQL удалена возможность отправки файлов (LOAD DATA LOCAL INFILE).

ClickHouse release 1.1.54388, 2018-06-28

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

  • Добавлена поддержка запроса ALTER TABLE t DELETE WHERE для реплицированных таблиц и таблица system.mutations.
  • Добавлена поддержка запроса ALTER TABLE t [REPLACE|ATTACH] PARTITION для *MergeTree-таблиц.
  • Добавлена поддержка запроса TRUNCATE TABLE (Winter Zhang)
  • Добавлено несколько новых SYSTEM-запросов для реплицированных таблиц (RESTART REPLICAS, SYNC REPLICA, [STOP|START] [MERGES|FETCHES|REPLICATED SENDS|REPLICATION QUEUES]).
  • Добавлена возможность записи в таблицу с движком MySQL и соответствующую табличную функцию (sundy-li).
  • Добавлена табличная функция url() и движок таблиц URL (Александр Сапин).
  • Добавлена агрегатная функция windowFunnel (sundy-li).
  • Добавлены функции startsWith и endsWith для строк (Вадим Плахтинский).
  • В табличной функции numbers() добавлена возможность указывать offset (Winter Zhang).
  • Добавлена возможность интерактивного ввода пароля в clickhouse-client.
  • Добавлена возможность отправки логов сервера в syslog (Александр Крашенинников).
  • Добавлена поддержка логирования в словарях с источником shared library (Александр Сапин).
  • Добавлена поддержка произвольного разделителя в формате CSV (Иван Жуков)
  • Добавлена настройка date_time_input_format. Если переключить эту настройку в значение 'best_effort', значения DateTime будут читаться в широком диапазоне форматов.
  • Добавлена утилита clickhouse-obfuscator для обфускации данных. Пример использования: публикация данных, используемых в тестах производительности.

Экспериментальные возможности:

  • Добавлена возможность вычислять аргументы функции and только там, где они нужны (Анастасия Царькова)
  • Добавлена возможность JIT-компиляции в нативный код некоторых выражений (pyos).

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

  • Исправлено появление дублей в запросе с DISTINCT и ORDER BY.
  • Запросы с ARRAY JOIN и arrayFilter раньше возвращали некорректный результат.
  • Исправлена ошибка при чтении столбца-массива из Nested-структуры (#2066).
  • Исправлена ошибка при анализе запросов с секцией HAVING вида HAVING tuple IN (...).
  • Исправлена ошибка при анализе запросов с рекурсивными алиасами.
  • Исправлена ошибка при чтении из ReplacingMergeTree с условием в PREWHERE, фильтрующим все строки (#2525).
  • Настройки профиля пользователя не применялись при использовании сессий в HTTP-интерфейсе.
  • Исправлено применение настроек из параметров командной строки в программе clickhouse-local.
  • Клиентская библиотека ZooKeeper теперь использует таймаут сессии, полученный от сервера.
  • Исправлена ошибка в клиентской библиотеке ZooKeeper, из-за которой ожидание ответа от сервера могло длиться дольше таймаута.
  • Исправлено отсечение ненужных кусков при запросе с условием на столбцы ключа партиционирования (#2342).
  • После CLEAR COLUMN IN PARTITION в соответствующей партиции теперь возможны слияния (#2315).
  • Исправлено соответствие типов в табличной функции ODBC (sundy-li).
  • Исправлено некорректное сравнение типов DateTime с таймзоной и без неё (Александр Бочаров).
  • Исправлен синтаксический разбор и форматирование оператора CAST.
  • Исправлена вставка в материализованное представление в случае, если движок таблицы представления - Distributed (Babacar Diassé).
  • Исправлен race condition при записи данных из движка Kafka в материализованные представления (Yangkuan Liu).
  • Исправлена SSRF в табличной функции remote().
  • Исправлен выход из clickhouse-client в multiline-режиме (#2510).

Улучшения:

  • Фоновые задачи в реплицированных таблицах теперь выполняются не в отдельных потоках, а в пуле потоков (Silviu Caragea)
  • Улучшена производительность разжатия LZ4.
  • Ускорен анализ запроса с большим числом JOIN-ов и подзапросов.
  • DNS-кэш теперь автоматически обновляется при большом числе сетевых ошибок.
  • Вставка в таблицу теперь не происходит, если вставка в одно из её материализованных представлений невозможна из-за того, что в нём много кусков.
  • Исправлено несоответствие в значениях счётчиков событий Query, SelectQuery, InsertQuery.
  • Разрешены выражения вида tuple IN (SELECT tuple), если типы кортежей совпадают.
  • Сервер с реплицированными таблицами теперь может стартовать, даже если не сконфигурирован ZooKeeper.
  • При расчёте количества доступных ядер CPU теперь учитываются ограничения cgroups (Atri Sharma).
  • Добавлен chown директорий конфигов в конфигурационном файле systemd (Михаил Ширяев).

Изменения сборки:

  • Добавлена возможность сборки компилятором gcc8.
  • Добавлена возможность сборки llvm из submodule.
  • Используемая версия библиотеки librdkafka обновлена до v0.11.4.
  • Добавлена возможность использования библиотеки libcpuid из системы, используемая версия библиотеки обновлена до 0.4.0.
  • Исправлена сборка с использованием библиотеки vectorclass (Babacar Diassé).
  • Cmake теперь по умолчанию генерирует файлы для ninja (как при использовании -G Ninja).
  • Добавлена возможность использования библиотеки libtinfo вместо libtermcap (Георгий Кондратьев).
  • Исправлен конфликт заголовочных файлов в Fedora Rawhide (#2520).

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

  • Убран escaping в форматах Vertical и Pretty*, удалён формат VerticalRaw.
  • Если в распределённых запросах одновременно участвуют серверы версии 1.1.54388 или новее и более старые, то при использовании выражения cast(x, 'Type'), записанного без указания AS, если слово cast указано не в верхнем регистре, возникает ошибка вида Not found column cast(0, 'UInt8') in block. Решение: обновить сервер на всём кластере.

ClickHouse release 1.1.54385, 2018-06-01

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

  • Исправлена ошибка, которая в некоторых случаях приводила к блокировке операций с ZooKeeper.

ClickHouse release 1.1.54383, 2018-05-22

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

  • Исправлена деградация скорости выполнения очереди репликации при большом количестве реплик

ClickHouse release 1.1.54381, 2018-05-14

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

  • Исправлена ошибка, приводящая к "утеканию" метаданных в ZooKeeper при потере соединения с сервером ZooKeeper.

ClickHouse release 1.1.54380, 2018-04-21

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

  • Добавлена табличная функция file(path, format, structure). Пример, читающий байты из /dev/urandom: ln -s /dev/urandom /var/lib/clickhouse/user_files/random clickhouse-client -q "SELECT * FROM file('random', 'RowBinary', 'd UInt8') LIMIT 10".

Улучшения:

  • Добавлена возможность оборачивать подзапросы скобками () для повышения читаемости запросов. Например: (SELECT 1) UNION ALL (SELECT 1).
  • Простые запросы SELECT из таблицы system.processes не учитываются в ограничении max_concurrent_queries.

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

  • Исправлена неправильная работа оператора IN в MATERIALIZED VIEW.
  • Исправлена неправильная работа индекса по ключу партиционирования в выражениях типа partition_key_column IN (...).
  • Исправлена невозможность выполнить OPTIMIZE запрос на лидирующей реплике после выполнения RENAME таблицы.
  • Исправлены ошибки авторизации возникающие при выполнении запросов OPTIMIZE и ALTER на нелидирующей реплике.
  • Исправлены зависания запросов KILL QUERY.
  • Исправлена ошибка в клиентской библиотеке ZooKeeper, которая при использовании непустого префикса chroot в конфигурации приводила к потере watch'ей, остановке очереди distributed DDL запросов и замедлению репликации.

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

  • Убрана поддержка выражений типа (a, b) IN (SELECT (a, b)) (можно использовать эквивалентные выражение (a, b) IN (SELECT a, b)). Раньше такие запросы могли приводить к недетерминированной фильтрации в WHERE.

ClickHouse release 1.1.54378, 2018-04-16

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

  • Возможность изменения уровня логгирования без перезагрузки сервера.
  • Добавлен запрос SHOW CREATE DATABASE.
  • Возможность передать query_id в clickhouse-client (elBroom).
  • Добавлена настройка max_network_bandwidth_for_all_users.
  • Добавлена поддержка ALTER TABLE ... PARTITION ... для MATERIALIZED VIEW.
  • Добавлена информация о размере кусков данных в несжатом виде в системные таблицы.
  • Поддержка межсерверного шифрования для distributed таблиц (<secure>1</secure> в конфигурации реплики в <remote_servers>).
  • Добавлена настройка уровня таблицы семейства ReplicatedMergeTree для уменьшения объема данных, хранимых в zookeeper: use_minimalistic_checksums_in_zookeeper = 1
  • Возможность настройки приглашения clickhouse-client. По-умолчанию добавлен вывод имени сервера в приглашение. Возможность изменить отображаемое имя сервера. Отправка его в HTTP заголовке X-ClickHouse-Display-Name (Kirill Shvakov).
  • Возможность указания нескольких topics через запятую для движка Kafka (Tobias Adamson)
  • При остановке запроса по причине KILL QUERY или replace_running_query, клиент получает исключение Query was cancelled вместо неполного результата.

Улучшения:

  • Запросы вида ALTER TABLE ... DROP/DETACH PARTITION выполняются впереди очереди репликации.
  • Возможность использовать SELECT ... FINAL и OPTIMIZE ... FINAL даже в случае, если данные в таблице представлены одним куском.
  • Пересоздание таблицы query_log налету в случае если было произведено её удаление вручную (Kirill Shvakov).
  • Ускорение функции lengthUTF8 (zhang2014).
  • Улучшена производительность синхронной вставки в Distributed таблицы (insert_distributed_sync = 1) в случае очень большого количества шардов.
  • Сервер принимает настройки send_timeout и receive_timeout от клиента и применяет их на своей стороне для соединения с клиентом (в переставленном порядке: send_timeout у сокета на стороне сервера выставляется в значение receive_timeout принятое от клиента, и наоборот).
  • Более надёжное восстановление после сбоев при асинхронной вставке в Distributed таблицы.
  • Возвращаемый тип функции countEqual изменён с UInt32 на UInt64 (谢磊)

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

  • Исправлена ошибка c IN где левая часть выражения Nullable.
  • Исправлен неправильный результат при использовании кортежей с IN в случае, если часть компоненнтов кортежа есть в индексе таблицы.
  • Исправлена работа ограничения max_execution_time с распределенными запросами.
  • Исправлены ошибки при вычислении размеров составных столбцов в таблице system.columns.
  • Исправлена ошибка при создании временной таблицы CREATE TEMPORARY TABLE IF NOT EXISTS
  • Исправлены ошибки в StorageKafka (#2075)
  • Исправлены падения сервера от некорректных аргументов некоторых аггрегатных функций.
  • Исправлена ошибка, из-за которой запрос DETACH DATABASE мог не приводить к остановке фоновых задач таблицы типа ReplicatedMergeTree.
  • Исправлена проблема с появлением Too many parts в агрегирующих материализованных представлениях (#2084).
  • Исправлена рекурсивная обработка подстановок в конфиге, если после одной подстановки, требуется другая подстановка на том же уровне.
  • Исправлена ошибка с неправильным синтаксисом в файле с метаданными при создании VIEW, использующих запрос с UNION ALL.
  • Исправлена работа SummingMergeTree в случае суммирования вложенных структур данных с составным ключом.
  • Исправлена возможность возникновения race condition при выборе лидера таблиц ReplicatedMergeTree.

Изменения сборки:

  • Поддержка ninja вместо make при сборке. ninja используется по-умолчанию при сборке релизов.
  • Переименованы пакеты clickhouse-server-base в clickhouse-common-static; clickhouse-server-common в clickhouse-server; clickhouse-common-dbg в clickhouse-common-static-dbg. Для установки используйте clickhouse-server clickhouse-client. Для совместимости, пакеты со старыми именами продолжают загружаться в репозиторий.

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

  • Удалена специальная интерпретация выражения IN, если слева указан массив. Ранее выражение вида arr IN (set) воспринималось как "хотя бы один элемент arr принадлежит множеству set". Для получения такого же поведения в новой версии, напишите arrayExists(x -> x IN (set), arr).
  • Отключено ошибочное использование опции сокета SO_REUSEPORT (которая по ошибке включена по-умолчанию в библиотеке Poco). Стоит обратить внимание, что на Linux системах теперь не имеет смысла указывать одновременно адреса :: и 0.0.0.0 для listen - следует использовать лишь адрес ::, который (с настройками ядра по-умолчанию) позволяет слушать соединения как по IPv4 так и по IPv6. Также вы можете вернуть поведение старых версий, указав в конфиге <listen_reuse_port>1</listen_reuse_port>.

ClickHouse release 1.1.54370, 2018-03-16

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

  • Добавлена системная таблица system.macros и автоматическое обновление макросов при изменении конфигурационного файла.
  • Добавлен запрос SYSTEM RELOAD CONFIG.
  • Добавлена агрегатная функция maxIntersections(left_col, right_col), возвращающая максимальное количество одновременно пересекающихся интервалов [left; right]. Функция maxIntersectionsPosition(left, right) возвращает начало такого "максимального" интервала. (Michael Furmur).

Улучшения:

  • При вставке данных в Replicated-таблицу делается меньше обращений к ZooKeeper (также из лога ZooKeeper исчезло большинство user-level ошибок).
  • Добавлена возможность создавать алиасы для множеств. Пример: WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.

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

  • Исправлена ошибка Illegal PREWHERE при чтении из Merge-таблицы над Distributed-таблицами.
  • Добавлены исправления, позволяющие запускать clickhouse-server в IPv4-only docker-контейнерах.
  • Исправлен race condition при чтении из системной таблицы system.parts_columns
  • Убрана двойная буферизация при синхронной вставке в Distributed-таблицу, которая могла приводить к timeout-ам соединений.
  • Исправлена ошибка, вызывающая чрезмерно долгое ожидание недоступной реплики перед началом выполнения SELECT.
  • Исправлено некорректное отображение дат в таблице system.parts.
  • Исправлена ошибка, приводящая к невозможности вставить данные в Replicated-таблицу, если в конфигурации кластера ZooKeeper задан непустой chroot.
  • Исправлен алгоритм вертикального мержа при пустом ключе ORDER BY таблицы.
  • Возвращена возможность использовать словари в запросах к удаленным таблицам, даже если этих словарей нет на сервере-инициаторе. Данная функциональность была потеряна в версии 1.1.54362.
  • Восстановлено поведение, при котором в запросах типа SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table) в правой части IN должна использоваться удаленная таблица default.table, а не локальная. данное поведение было нарушено в версии 1.1.54358.
  • Устранено ненужное Error-level логирование Not found column ... in block.

Релиз ClickHouse 1.1.54362, 2018-03-11

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

  • Агрегация без 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.
  • Использование индекса таблиц семейства MergeTree при наличии условия 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 из строки, содержащей текст в широком множестве возможных форматов.
  • Возможность частичной перезагрузки данных внешних словарей при их обновлении (загрузка лишь записей со значением заданного поля большим, чем при предыдущей загрузке) (Arsen Hakobyan).
  • Добавлена табличная функция cluster. Пример: cluster(cluster_name, db, table). Табличная функция remote может принимать имя кластера в качестве первого аргумента, если оно указано в виде идентификатора.
  • Возможность использования табличных функций remote, cluster в INSERT запросах.
  • Добавлены виртуальные столбцы 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, EXISTS 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, если строка состоит полностью из нулевых байт (zhang2014).
  • Добавлен конфигурационный параметр listen_try, позволяющий слушать хотя бы один из listen адресов и не завершать работу, если некоторые адреса не удаётся слушать (полезно для систем с выключенной поддержкой IPv4 или IPv6).
  • Добавлен движок таблиц VersionedCollapsingMergeTree.
  • Поддержка строк и произвольных числовых типов для источника словарей library.
  • Возможность использования таблиц семейства MergeTree без первичного ключа (для этого необходимо указать ORDER BY tuple()).
  • Добавлена возможность выполнить преобразование (CAST) Nullable типа в не Nullable тип, если аргумент не является NULL.
  • Возможность выполнения RENAME TABLE для VIEW.
  • Добавлена функция throwIf.
  • Добавлена настройка odbc_default_field_size, позволяющая расширить максимальный размер значения, загружаемого из ODBC источника (по-умолчанию - 1024).
  • В таблицу system.processes и в SHOW PROCESSLIST добавлены столбцы is_cancelled и peak_memory_usage.

Улучшения:

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

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

  • Исправлены случаи ошибочного удаления ненужных столбцов из подзапросов, а также отсутствие удаления ненужных столбцов из подзапросов, содержащих UNION ALL.
  • Исправлена ошибка в слияниях для таблиц типа ReplacingMergeTree.
  • Исправлена работа синхронного режима вставки в Distributed таблицы (insert_distributed_sync = 1).
  • Исправлены segfault при некоторых случаях использования FULL и RIGHT JOIN с дублирующимися столбцами в подзапросах.
  • Исправлены segfault, которые могут возникать при использовании функциональности replace_running_query и KILL QUERY.
  • Исправлен порядок столбцов 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.
  • Исправлена ошибка, которая может возникать при инициализации системной таблицы part_log при старте сервера (по-умолчанию part_log выключен).

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

  • Удалена настройка distributed_ddl_allow_replicated_alter. Соответствующее поведение включено по-умолчанию.
  • Удалена настройка strict_insert_defaults. Если вы использовали эту функциональность, напишите на clickhouse-feedback@yandex-team.com.
  • Удалён движок таблиц UnsortedMergeTree.

Релиз ClickHouse 1.1.54343, 2018-02-05

  • Добавлена возможность использовать макросы при задании имени кластера в распределенных DLL запросах и создании Distributed-таблиц: CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table').
  • Теперь при вычислении запросов вида SELECT ... FROM table WHERE expr IN (subquery) используется индекс таблицы table.
  • Улучшена обработка дубликатов при вставке в Replicated-таблицы, теперь они не приводят к излишнему замедлению выполнения очереди репликации.

Релиз ClickHouse 1.1.54342, 2018-01-22

Релиз содержит исправление к предыдущему релизу 1.1.54337:

  • Исправлена регрессия в версии 1.1.54337: если пользователь по-умолчанию имеет readonly доступ, то сервер отказывался стартовать с сообщением Cannot create database in readonly mode.
  • Исправлена регрессия в версии 1.1.54337: на системах под управлением systemd, логи по ошибке всегда записываются в syslog; watchdog скрипт по ошибке использует init.d.
  • Исправлена регрессия в версии 1.1.54337: неправильная конфигурация по-умоланию в Docker образе.
  • Исправлена недетерминированная работа GraphiteMergeTree (в логах видно по сообщениям Data after merge is not byte-identical to data on another replicas).
  • Исправлена ошибка, в связи с которой запрос OPTIMIZE к Replicated таблицам мог приводить к неконсистентным мержам (в логах видно по сообщениям Part ... intersects previous part).
  • Таблицы типа Buffer теперь работают при наличии MATERIALIZED столбцов в таблице назначения (by zhang2014).
  • Исправлена одна из ошибок в реализации NULL.

Релиз ClickHouse 1.1.54337, 2018-01-18

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

  • Добавлена поддержка хранения многомерных массивов и кортежей (тип данных Tuple) в таблицах.
  • Поддержка табличных функций для запросов DESCRIBE и INSERT. Поддержка подзапроса в запросе DESCRIBE. Примеры: DESC TABLE remote('host', default.hits); DESC TABLE (SELECT 1); INSERT INTO TABLE FUNCTION remote('host', default.hits). Возможность писать INSERT INTO TABLE вместо INSERT INTO.
  • Улучшена поддержка часовых поясов. В типе DateTime может быть указана таймзона, которая используется для парсинга и отображения данных в текстовом виде. Пример: DateTime('Europe/Moscow'). При указании таймзоны в функциях работы с DateTime, тип возвращаемого значения будет запоминать таймзону, для того, чтобы значение отображалось ожидаемым образом.
  • Добавлены функции toTimeZone, timeDiff, toQuarter, toRelativeQuarterNum. В функцию toRelativeHour/Minute/Second можно передать аргумент типа Date. Имя функции now воспринимается без учёта регистра.
  • Добавлена функция toStartOfFifteenMinutes (Kirill Shvakov).
  • Добавлена программа clickhouse format для переформатирования запросов.
  • Добавлен конфигурационный параметр format_schema_path (Marek Vavruša). Он используется для задания схемы для формата Cap'n'Proto. Файлы со схемой могут использоваться только из указанной директории.
  • Добавлена поддержка incl и conf.d подстановок для конфигурации словарей и моделей (Pavel Yakunin).
  • В таблице system.settings появилось описание большинства настроек (Kirill Shvakov).
  • Добавлена таблица system.parts_columns, содержащая информацию о размерах столбцов в каждом куске данных MergeTree таблиц.
  • Добавлена таблица system.models, содержащая информацию о загруженных моделях CatBoost.
  • Добавлены табличные функции mysql и odbc и соответствующие движки таблиц MySQL, ODBC для обращения к удалённым базам данных. Функциональность в состоянии "бета".
  • Для функции groupArray разрешено использование аргументов типа AggregateFunction (можно создать массив из состояний агрегатных функций).
  • Удалены ограничения на использование разных комбинаций комбинаторов агрегатных функций. Для примера, вы можете использовать как функцию avgForEachIf, так и avgIfForEach, которые имеют разный смысл.
  • Комбинатор агрегатных функций -ForEach расширен для случая агрегатных функций с более чем одним аргументом.
  • Добавлена поддержка агрегатных функций от Nullable аргументов, для случаев, когда функция всегда возвращает не Nullable результат (реализовано с участием Silviu Caragea). Пример: groupArray, groupUniqArray, topK.
  • Добавлен параметр командной строки max_client_network_bandwidth для clickhouse-client (Kirill Shvakov).
  • Пользователям с доступом readonly = 2 разрешено работать с временными таблицами (CREATE, DROP, INSERT...) (Kirill Shvakov).
  • Добавлена возможность указания количества consumers для Kafka. Расширена возможность конфигурации движка Kafka (Marek Vavruša).
  • Добавлены функции intExp2, intExp10.
  • Добавлена агрегатная функция sumKahan.
  • Добавлены функции toNumberOrNull, где Number - числовой тип.
  • Добавлена поддержка секции WITH для запроса INSERT SELECT (автор: zhang2014).
  • Добавлены настройки http_connection_timeout, http_send_timeout, http_receive_timeout. Настройки используются, в том числе, при скачивании кусков для репликации. Изменение этих настроек позволяет сделать более быстрый failover в случае перегруженной сети.
  • Добавлена поддержка ALTER для таблиц типа Null (Anastasiya Tsarkova).
  • Функция reinterpretAsString расширена на все типы данных, значения которых хранятся в памяти непрерывно.
  • Для программы clickhouse-local добавлена опция --silent для подавления вывода информации о выполнении запроса в stderr.
  • Добавлена поддержка чтения Date в текстовом виде в формате, где месяц и день месяца могут быть указаны одной цифрой вместо двух (Amos Bird).

Увеличение производительности:

  • Увеличена производительность агрегатных функций min, max, any, anyLast, anyHeavy, argMin, argMax от строковых аргументов.
  • Увеличена производительность функций isInfinite, isFinite, isNaN, roundToExp2.
  • Увеличена производительность форматирования в текстовом виде и парсинга из текста значений типа Date и DateTime.
  • Увеличена производительность и точность парсинга чисел с плавающей запятой.
  • Уменьшено потребление памяти при JOIN, если левая и правая часть содержали столбцы с одинаковым именем, не входящие в USING.
  • Увеличена производительность агрегатных функций varSamp, varPop, stddevSamp, stddevPop, covarSamp, covarPop, corr за счёт уменьшения стойкости к вычислительной погрешности. Старые версии функций добавлены под именами varSampStable, varPopStable, stddevSampStable, stddevPopStable, covarSampStable, covarPopStable, corrStable.

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

  • Исправлена работа дедупликации блоков после DROP или DETATH PARTITION. Раньше удаление партиции и вставка тех же самых данных заново не работала, так как вставленные заново блоки считались дубликатами.
  • Исправлена ошибка, в связи с которой может неправильно обрабатываться WHERE для запросов на создание MATERIALIZED VIEW с указанием POPULATE.
  • Исправлена ошибка в работе параметра root_path в конфигурации zookeeper_servers.
  • Исправлен неожиданный результат при передаче аргумента типа Date в функцию toStartOfDay.
  • Исправлена работа функции addMonths, subtractMonths, арифметика с INTERVAL n MONTH, если в результате получается предыдущий год.
  • Добавлена недостающая поддержка типа данных UUID для DISTINCT, JOIN, в агрегатных функциях uniq и во внешних словарях (Иванов Евгений). Поддержка UUID всё ещё остаётся не полной.
  • Исправлено поведение SummingMergeTree для строк, в которых все значения после суммирования равны нулю.
  • Многочисленные доработки для движка таблиц Kafka (Marek Vavruša).
  • Исправлена некорректная работа движка таблиц Join (Amos Bird).
  • Исправлена работа аллокатора под FreeBSD и OS X.
  • Функция extractAll теперь может доставать пустые вхождения.
  • Исправлена ошибка, не позволяющая подключить при сборке libressl вместо openssl.
  • Исправлена работа CREATE TABLE AS SELECT из временной таблицы.
  • Исправлена неатомарность обновления очереди репликации. Эта проблема могла приводить к рассинхронизации реплик и чинилась при перезапуске.
  • Исправлено переполнение в функциях gcd, lcm, modulo (оператор %) (Maks Skorokhod).
  • Файлы -preprocessed теперь создаются после изменения umask (umask может быть задан в конфигурационном файле).
  • Исправлена ошибка фоновой проверки кусков (MergeTreePartChecker) при использовании партиционирования по произвольному ключу.
  • Исправлен парсинг кортежей (значений типа Tuple) в текстовых форматах.
  • Исправлены сообщения о неподходящих типах аргументов для функций multiIf, array и некоторых других.
  • Переработана поддержка Nullable типов. Исправлены ошибки, которые могут приводить к падению сервера. Исправлено подавляющее большинство других ошибок, связанных с поддержкой NULL: неправильное приведение типов при INSERT SELECT, недостаточная поддержка Nullable в HAVING и в PREWHERE, режим join_use_nulls, Nullable типы в операторе OR и т. п.
  • Исправлена работа с внутренними свойствами типов данных, что позволило исправить проблемы следующего вида: ошибочное суммирование полей типа Enum в SummingMergeTree; значения типа Enum ошибочно выводятся с выравниванием по правому краю в таблицах в Pretty форматах, и т. п.
  • Более строгие проверки для допустимых комбинаций составных столбцов - это позволило исправить ошибок, которые могли приводить к падениям.
  • Исправлено переполнение при задании очень большого значения параметра для типа FixedString.
  • Исправлена работа агрегатной функции topK для generic случая.
  • Добавлена отсутствующая проверка на совпадение размеров массивов для n-арных вариантов агрегатных функций с комбинатором -Array.
  • Исправлена работа --pager для clickhouse-client (автор: ks1322).
  • Исправлена точность работы функции exp10.
  • Исправлено поведение функции visitParamExtract согласно документации.
  • Исправлено падение при объявлении некорректных типов данных.
  • Исправлена работа DISTINCT при условии, что все столбцы константные.
  • Исправлено форматирование запроса в случае наличия функции tupleElement со сложным константным выражением в качестве номера элемента.
  • Исправлена работа Dictionary таблиц для словарей типа range_hashed.
  • Исправлена ошибка, приводящая к появлению лишних строк при FULL и RIGHT JOIN (Amos Bird).
  • Исправлено падение сервера в случае создания и удаления временных файлов в config.d директориях в момент перечитывания конфигурации.
  • Исправлена работа запроса SYSTEM DROP DNS CACHE: ранее сброс DNS кэша не приводил к повторному резолвингу имён хостов кластера.
  • Исправлено поведение MATERIALIZED VIEW после DETACH TABLE таблицы, на которую он смотрит (Marek Vavruša).

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

  • Для сборки используется pbuilder. Сборка максимально независима от окружения на сборочной машине.
  • Для разных версий систем выкладывается один и тот же пакет, который совместим с широким диапазоном Linux систем.
  • Добавлен пакет clickhouse-test, который может быть использован для запуска функциональных тестов.
  • Добавлена выкладка в репозиторий архива с исходниками. Этот архив может быть использован для воспроизведения сборки без использования GitHub.
  • Добавлена частичная интеграция с Travis CI. В связи с ограничениями на время сборки в Travis, запускается только ограниченный набор тестов на Debug сборке.
  • Добавлена поддержка Cap'n'Proto в сборку по-умолчанию.
  • Документация переведена с Restructured Text на Markdown.
  • Добавлена поддержка systemd (Vladimir Smirnov). В связи с несовместимостью с некоторыми образами, она выключена по-умолчанию и может быть включена вручную.
  • Для динамической компиляции запросов, clang и lld встроены внутрь clickhouse. Они также могут быть вызваны с помощью clickhouse clang и clickhouse lld.
  • Удалено использование расширений GNU из кода и включена опция -Wextra. При сборке с помощью clang по-умолчанию используется libc++ вместо libstdc++.
  • Выделены библиотеки clickhouse_parsers и clickhouse_common_io для более быстрой сборки утилит.

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

  • Формат засечек (marks) для таблиц типа Log, содержащих Nullable столбцы, изменён обратно-несовместимым образом. В случае наличия таких таблиц, вы можете преобразовать их в TinyLog до запуска новой версии сервера. Для этого в соответствующем таблице файле .sql в директории metadata, замените ENGINE = Log на ENGINE = TinyLog. Если в таблице нет Nullable столбцов или тип таблицы не Log, то ничего делать не нужно.
  • Удалена настройка experimental_allow_extended_storage_definition_syntax. Соответствующая функциональность включена по-умолчанию.
  • Функция runningIncome переименована в runningDifferenceStartingWithFirstValue во избежание путаницы.
  • Удалена возможность написания FROM ARRAY JOIN arr без указания таблицы после FROM (Amos Bird).
  • Удалён формат BlockTabSeparated, использовавшийся лишь для демонстрационных целей.
  • Изменён формат состояния агрегатных функций varSamp, varPop, stddevSamp, stddevPop, covarSamp, covarPop, corr. Если вы использовали эти состояния для хранения в таблицах (тип данных AggregateFunction от этих функций или материализованные представления, хранящие эти состояния), напишите на clickhouse-feedback@yandex-team.com.
  • В предыдущих версиях существовала недокументированная возможность: в типе данных AggregateFunction можно было не указывать параметры для агрегатной функции, которая зависит от параметров. Пример: AggregateFunction(quantiles, UInt64) вместо AggregateFunction(quantiles(0.5, 0.9), UInt64). Эта возможность потеряна. Не смотря на то, что возможность не документирована, мы собираемся вернуть её в ближайших релизах.
  • Значения типа данных Enum не могут быть переданы в агрегатные функции min/max. Возможность будет возвращена обратно в следующем релизе.

На что обратить внимание при обновлении:

  • При обновлении кластера, на время, когда на одних репликах работает новая версия сервера, а на других - старая, репликация будет приостановлена и в логе появятся сообщения вида unknown parameter 'shard'. Репликация продолжится после обновления всех реплик кластера.
  • Если на серверах кластера работают разные версии ClickHouse, то возможен неправильный результат распределённых запросов, использующих функции varSamp, varPop, stddevSamp, stddevPop, covarSamp, covarPop, corr. Необходимо обновить все серверы кластера.

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

Релиз содержит исправление к предыдущему релизу 1.1.54318:

  • Исправлена проблема с возможным race condition при репликации, которая может приводить к потере данных. Проблеме подвержены версии 1.1.54310 и 1.1.54318. Если вы их используете и у вас есть Replicated таблицы, то обновление обязательно. Понять, что эта проблема существует, можно по сообщениям в логе Warning вида Part ... from own log doesn't 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 (позволяет указать существующую таблицу для хранения данных материализованного представления).
  • Запрос ATTACH TABLE без аргументов.
  • Логика обработки Nested-столбцов в SummingMergeTree, заканчивающихся на -Map, вынесена в агрегатную функцию sumMap. Такие столбцы теперь можно задавать явно.
  • Максимальный размер IP trie-словаря увеличен до 128М записей.
  • Функция getSizeOfEnumType.
  • Агрегатная функция sumWithOverflow.
  • Поддержка входного формата Capn Proto.
  • Возможность задавать уровень сжатия при использовании алгоритма zstd.

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

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

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

  • Исправлено зависание при синхронной вставке в Distributed таблицу.
  • Исправлена неатомарность при добавлении/удалении кусков в реплицированных таблицах.
  • Данные, вставляемые в материализованное представление, теперь не подвергаются излишней дедупликации.
  • Запрос в Distributed таблицу, для которого локальная реплика отстаёт, а удалённые недоступны, теперь не падает.
  • Для создания временных таблиц теперь не требуется прав доступа к БД default.
  • Исправлено падение при указании типа Array без аргументов.
  • Исправлено зависание при недостатке места на диске в разделе с логами.
  • Исправлено переполнение в функции toRelativeWeekNum для первой недели Unix-эпохи.

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

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

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

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

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

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

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

Релиз 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 и нарушению консистентности реплик.
  • Исправлена ошибка, приводящая к блокировке при завершении работы сервера, если в это время 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 timestamp из форматов CSV и JSONEachRow.
  • Включено по-умолчанию отключение отстающих реплик при распределённых запросах (по-умолчанию порог равен 5 минутам).
  • Используются FIFO блокировки при ALTER: выполнение 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.
  • Исправлено появление zombie процессов при работе со словарём с источником executable.
  • Исправлен segfault при запросе HEAD.

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

  • Возможность сборки с помощью pbuilder.
  • Возможность сборки с использованием libc++ вместо libstdc++ под Linux.
  • Добавлены инструкции для использования статических анализаторов кода Coverity, 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 в старое значение, прописав в 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
  • Добавлена возможность синхронной вставки в Distributed таблицу: выдается Ok только после того как все данные записались на все шарды. Активируется настройкой insert_distributed_sync=1
  • Добавлен тип данных UUID для работы с 16-байтовыми идентификаторами
  • Добавлены алиасы типов CHAR, FLOAT и т.д. для совместимости с Tableau
  • Добавлены функции toYYYYMM, toYYYYMMDD, toYYYYMMDDhhmmss для перевода времени в числа
  • Добавлена возможность использовать IP адреса (совместно с hostname) для идентификации сервера при работе с кластерными DDL запросами
  • Добавлена поддержка неконстантных аргументов и отрицательных смещений в функции substring(str, pos, len)
  • Добавлен параметр max_size для агрегатной функции groupArray(max_size)(column), и оптимизирована её производительность

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

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

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

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

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

  • Добавлена настройка output_format_json_quote_denormals, включающая вывод nan и inf значений в формате JSON
  • Более оптимальное выделение потоков при чтении из Distributed таблиц
  • Разрешено задавать настройки в режиме readonly, если их значение не изменяется
  • Добавлена возможность считывать нецелые гранулы движка 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, ограничивающая время ожидания ответов серверов кластера.
  • Улучшено отображение стэктрейсов в логах сервера
  • Добавлен метод сжатия none
  • Возможность использования нескольких секций dictionaries_config в config.xml
  • Возможность подключения к MySQL через сокет на файловой системе
  • В таблицу system.parts добавлен столбец с информацией о размере marks в байтах

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

  • Исправлена некорректная работа Distributed таблиц, использующих Merge таблицы, при SELECT с условием на поле _table
  • Исправлен редкий race condition в ReplicatedMergeTree при проверке кусков данных
  • Исправлено возможное зависание процедуры leader election при старте сервера
  • Исправлено игнорирование настройки 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 млрд. элементов
  • Исправлен failover для словарей с источником MySQL

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

  • Добавлена возмозможность сборки в Arcadia
  • Добавлена возможность сборки с помощью 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-таблицы для всех подключённых внешних словарей)
  • Возможность проверки необходимости обновления словаря путём отправки запроса в источник
  • Qualified имена столбцов
  • Квотирование идентификаторов двойными кавычками
  • Сессии в HTTP интерфейсе
  • Запрос OPTIMIZE для Replicated таблицы теперь можно выполнять не только на лидере

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

  • Убрана команда SET GLOBAL

Мелкие изменения:

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

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

  • Исправлено залипание плохого соединения при вставке в Distributed таблицу
  • GLOBAL IN теперь работает при запросе из таблицы Merge, смотрящей в Distributed
  • Теперь правильно определяется количество ядер на виртуалках Google Compute Engine
  • Исправления в работе executable источника кэшируемых внешних словарей
  • Исправлены сравнения строк, содержащих нулевые символы
  • Исправлено сравнение полей первичного ключа типа Float32 с константами
  • Раньше неправильная оценка размера поля могла приводить к слишком большим аллокациям
  • Исправлено падение при запросе Nullable столбца, добавленного в таблицу ALTER-ом
  • Исправлено падение при сортировке по Nullable столбцу, если количество строк меньше LIMIT
  • Исправлен ORDER BY подзапроса, состоящего только из константных значений
  • Раньше Replicated таблица могла остаться в невалидном состоянии после неудавшегося DROP TABLE
  • Алиасы для скалярных подзапросов с пустым результатом теперь не теряются
  • Теперь запрос, в котором использовалась компиляция, не завершается ошибкой, если .so файл повреждается