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

Релиз ClickHouse 18.16

Релиз ClickHouse 18.16.1, 2018-12-21

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

  • Исправлена ошибка, из-за которой возникали проблемы при обновлении словарей из ODBC-источника. #3825, #3829
  • JIT-компиляция агрегатных функций теперь работает со столбцами LowCardinality. #3838

Улучшения:

  • Добавлена настройка low_cardinality_allow_in_native_format (по умолчанию включена). Если её отключить, столбцы LowCardinality будут преобразовываться в обычные столбцы для запросов SELECT, а в запросах INSERT будут ожидаться обычные столбцы. #3879

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

  • Исправлены сборки для macOS и ARM.

Релиз ClickHouse 18.16.0, 2018-12-14

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

  • Выражения DEFAULT вычисляются для отсутствующих полей при загрузке данных в полуструктурированных форматах ввода (JSONEachRow, TSKV). Эта возможность включается настройкой insert_sample_with_metadata. #3555
  • У запроса ALTER TABLE теперь есть действие MODIFY ORDER BY для изменения ключа сортировки при добавлении или удалении столбца таблицы. Это полезно для таблиц семейства MergeTree, которые выполняют дополнительные операции при слиянии на основе этого ключа сортировки, например SummingMergeTree, AggregatingMergeTree и других. #3581 #3755
  • Для таблиц семейства MergeTree теперь можно задавать разные ключ сортировки (ORDER BY) и индекс (PRIMARY KEY). Ключ сортировки может быть длиннее индекса. #3581
  • Добавлены табличная функция hdfs и движок таблицы HDFS для импорта и экспорта данных в HDFS. chenxing-xc
  • Добавлены функции для работы с base64: base64Encode, base64Decode, tryBase64Decode. Alexander Krasheninnikov
  • Теперь можно использовать параметр для настройки точности агрегатной функции uniqCombined (выбора количества ячеек HyperLogLog). #3406
  • Добавлена таблица system.contributors, содержащая имена всех, кто делал коммиты в ClickHouse. #3452
  • Добавлена возможность не указывать партицию в запросе ALTER TABLE ... FREEZE, чтобы сразу сделать резервную копию всех партиций. #3514
  • Добавлены функции dictGet и dictGetOrDefault, для которых не нужно указывать тип возвращаемого значения. Тип определяется автоматически по описанию словаря. Amos Bird
  • Теперь можно указывать комментарии для столбца в описании таблицы и изменять их с помощью ALTER. #3377
  • Поддерживается чтение из таблиц типа Join с простыми ключами. Amos Bird
  • Теперь при создании таблицы типа Join можно указывать параметры join_use_nulls, max_rows_in_join, max_bytes_in_join и join_overflow_mode. Amos Bird
  • Добавлена функция joinGet, которая позволяет использовать таблицу типа Join как словарь. Amos Bird
  • В таблицу system.tables добавлены столбцы partition_key, sorting_key, primary_key и sampling_key, чтобы предоставить информацию о ключах таблицы. #3609
  • В таблицу system.columns добавлены столбцы is_in_partition_key, is_in_sorting_key, is_in_primary_key и is_in_sampling_key. #3609
  • В таблицу system.parts добавлены столбцы min_time и max_time. Эти столбцы заполняются, когда ключ партиционирования представляет собой выражение, состоящее из столбцов DateTime. Emmanuel Donin de Rosière

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

  • Исправления и повышение производительности типа данных LowCardinality. GROUP BY с использованием LowCardinality(Nullable(...)). Получение значений extremes. Обработка функций высшего порядка. LEFT ARRAY JOIN. Распределённый GROUP BY. Функции, возвращающие Array. Выполнение ORDER BY. Запись в таблицы Distributed (nicelulu). Обеспечена обратная совместимость для запросов INSERT от старых клиентов, реализующих протокол Native. Поддержка LowCardinality для JOIN. Повышена производительность при работе в одном потоке. #3823 #3803 #3799 #3769 #3744 #3681 #3651 #3649 #3641 #3632 #3568 #3523 #3518
  • Исправлена работа опции select_sequential_consistency. Ранее, когда эта опция была включена, после начала записи в новую партицию иногда возвращался неполный результат. #2863
  • Базы данных теперь корректно указываются при выполнении DDL-запросов с ON CLUSTER и ALTER UPDATE/DELETE. #3772 #3460
  • Базы данных для подзапросов внутри VIEW теперь указываются корректно. #3521
  • Исправлена ошибка при использовании PREWHERE с FINAL для VersionedCollapsingMergeTree. 7167bfd7
  • Теперь вы можете использовать KILL QUERY, чтобы отменять запросы, которые ещё не начали выполняться, так как ожидают снятия блокировки с таблицы. #3517
  • Исправлены вычисления даты и времени в случаях, когда в полночь часы переводили назад (это происходит в Иране и происходило в Москве с 1981 по 1983 год). Ранее из-за этого время сбрасывалось на день раньше, чем нужно, а также дата и время некорректно форматировались в текстовом виде. #3819
  • Исправлены ошибки, возникавшие в некоторых случаях при использовании VIEW и подзапросов без указания базы данных. Winter Zhang
  • Исправлено состояние гонки при одновременном чтении из MATERIALIZED VIEW и удалении MATERIALIZED VIEW, возникавшее из-за отсутствия блокировки внутреннего MATERIALIZED VIEW. #3404 #3694
  • Исправлена ошибка Lock handler cannot be nullptr. #3689
  • Исправлена обработка запросов при включенной опции compile_expressions (по умолчанию она включена). Недетерминированные константные выражения, такие как функция now, больше не разворачиваются. #3457
  • Исправлено аварийное завершение при указании неконстантного аргумента scale в функциях toDecimal32/64/128.
  • Исправлена ошибка, возникавшая при попытке вставить массив с элементами NULL в формате Values в столбец типа Array без Nullable (если input_format_values_interpret_expressions = 1). #3487 #3503
  • Исправлено постоянное логирование ошибок в DDLWorker, если ZooKeeper недоступен. 8f50c620
  • Исправлен возвращаемый тип функций quantile* для аргументов типов Date и DateTime. #3580
  • Исправлена работа конструкции WITH, если в ней указан простой псевдоним без выражений. #3570
  • Исправлена обработка запросов с именованными подзапросами и квалифицированными именами столбцов при включенном enable_optimize_predicate_expression. Winter Zhang
  • Исправлена ошибка Attempt to attach to nullptr thread group при работе с materialized views. Marek Vavruša
  • Исправлен сбой при передаче некоторых некорректных аргументов функции arrayReverse. 73e3a7b6
  • Исправлено переполнение буфера в функции extractURLParameter. Улучшена производительность. Добавлена корректная обработка строк, содержащих нулевые байты. 141e9799
  • Исправлено переполнение буфера в функциях lowerUTF8 и upperUTF8. Удалена возможность вызывать эти функции с аргументами типа FixedString. #3662
  • Исправлено редкое состояние гонки при удалении таблиц MergeTree. #3680
  • Исправлено состояние гонки при чтении из таблиц Buffer и одновременном выполнении ALTER или DROP над целевыми таблицами. #3719
  • Исправлен segfault при превышении ограничения max_temporary_non_const_columns. #3788

Улучшения:

  • Сервер не записывает обработанные файлы конфигурации в каталог /etc/clickhouse-server/. Вместо этого он сохраняет их в каталоге preprocessed_configs внутри path. Это означает, что у пользователя clickhouse нет прав на запись в каталог /etc/clickhouse-server/, что повышает безопасность. #2443
  • Параметр min_merge_bytes_to_use_direct_io по умолчанию установлен в 10 GiB. Слияние, формирующее крупные части таблиц семейства MergeTree, будет выполняться в режиме O_DIRECT, что предотвращает чрезмерное вытеснение страничного кэша. #3504
  • Ускорен запуск сервера при очень большом числе таблиц. #3398
  • Добавлены пул соединений и HTTP Keep-Alive для соединений между репликами. #3594
  • Если синтаксис запроса недопустим, в интерфейсе HTTP возвращается код 400 Bad Request (ранее возвращался 500). 31bc680a
  • Параметр join_default_strictness по умолчанию установлен в значение ALL для обеспечения совместимости. 120e2cbe
  • Из библиотеки re2 убрано логирование в stderr для некорректных или слишком сложных регулярных выражений. #3723
  • Для движка таблицы Kafka добавлены: проверки подписок перед началом чтения из Kafka; настройка kafka_max_block_size для таблицы. Marek Vavruša
  • Функции cityHash64, farmHash64, metroHash64, sipHash64, halfMD5, murmurHash2_32, murmurHash2_64, murmurHash3_32 и murmurHash3_64 теперь работают с любым количеством аргументов, а также с аргументами в виде Tuple. #3451 #3519
  • Функция arrayReverse теперь работает с массивами любого типа. 73e3a7b6
  • Добавлен необязательный параметр: размер временного интервала для функции timeSlots. Kirill Shvakov
  • Для FULL и RIGHT JOIN параметр max_block_size используется для потока несопоставленных данных из правой таблицы. Amos Bird
  • Добавлен параметр командной строки --secure в clickhouse-benchmark и clickhouse-performance-test для включения TLS. #3688 #3690
  • Преобразование типов, если структура таблицы типа Buffer не соответствует структуре целевой таблицы. Vitaly Baranov
  • Добавлена опция tcp_keep_alive_timeout для включения отправки keep-alive-пакетов после бездействия в течение указанного интервала времени. #3441
  • Убрано лишнее заключение в кавычки значений ключа партиционирования в таблице system.parts, если он состоит из одного столбца. #3652
  • Функция остатка от деления работает с типами данных Date и DateTime. #3385
  • Добавлены синонимы для функций POWER, LN, LCASE, UCASE, REPLACE, LOCATE, SUBSTR и MID. #3774 #3763 Некоторые имена функций сделаны регистронезависимыми для совместимости со стандартом SQL. Добавлен синтаксический сахар SUBSTRING(expr FROM start FOR length) для совместимости с SQL. #3804
  • Добавлена возможность выполнять mlock для страниц памяти, содержащих исполняемый код clickhouse-server, чтобы предотвратить их вытеснение из оперативной памяти. Эта возможность по умолчанию отключена. #3553
  • Повышена производительность чтения из O_DIRECT (при включенной опции min_bytes_to_use_direct_io). #3405
  • Улучшена производительность функции dictGet...OrDefault для константного аргумента key и неконстантного аргумента по умолчанию. Amos Bird
  • Функция firstSignificantSubdomain теперь обрабатывает домены gov, mil и edu. Igor Hatarist Улучшена производительность. #3628
  • Возможность задавать пользовательские переменные окружения для запуска clickhouse-server с помощью скрипта SYS-V init.d, определив CLICKHOUSE_PROGRAM_ENV в /etc/default/clickhouse. Pavlo Bashynskyi
  • Исправлен код возврата init-скрипта clickhouse-server. #3516
  • В таблице system.metrics теперь появилась метрика VersionInteger, а в system.build_options добавлена строка VERSION_INTEGER, содержащая числовое представление версии ClickHouse, например 18016000. #3644
  • Убрана возможность сравнивать тип Date с числом, чтобы избежать возможных ошибок, например date = 2018-12-17, когда кавычки вокруг даты по ошибке пропускаются. #3687
  • Исправлено поведение функций с сохранением состояния, таких как rowNumberInAllBlocks. Ранее они возвращали результат на единицу больше из-за запуска на этапе анализа запроса. Amos Bird
  • Если не удаётся удалить файл force_restore_data, отображается сообщение об ошибке. Amos Bird

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

  • Обновлена библиотека jemalloc, что устраняет потенциальную утечку памяти. Amos Bird
  • Данные профилирования с jemalloc по умолчанию включены в отладочных сборках. 2cc82f5c
  • Добавлена возможность запускать интеграционные тесты, когда в системе установлен только Docker. #3650
  • Добавлен fuzz-тест выражений в запросах SELECT. #3442
  • Добавлен стресс-тест для коммитов, который выполняет функциональные тесты параллельно и в случайном порядке, чтобы выявлять больше состояний гонки. #3438
  • Улучшен способ запуска clickhouse-server в Docker-образе. Elghazal Ahmed
  • Для Docker-образа добавлена поддержка инициализации баз данных с помощью файлов в каталоге /docker-entrypoint-initdb.d. Konstantin Lebedev
  • Исправлены проблемы со сборкой на ARM. #3709

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

  • Удалена возможность сравнения типа Date с числом. Вместо toDate('2018-12-18') = 17883 необходимо использовать явное преобразование типа: = toDate(17883) #3687

Релиз ClickHouse 18.14

Релиз ClickHouse 18.14.19, 2018-12-19

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

  • Исправлена ошибка, из-за которой возникали проблемы при обновлении словарей из ODBC-источника. #3825, #3829
  • При выполнении DDL-запросов с предложением ON CLUSTER базы данных теперь указываются корректно. #3460
  • Исправлена ошибка сегментации при превышении лимита max_temporary_non_const_columns. #3788

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

  • Исправления для сборки на ARM.

Релиз ClickHouse 18.14.18, 2018-12-04

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

  • Исправлена ошибка в функции dictGet... для словарей типа range, если один из аргументов является константой, а другой — нет. #3751
  • Исправлена ошибка, из-за которой в журнал ядра Linux выводились сообщения netlink: '...': attribute type 1 has an invalid length; это происходило только на сравнительно новых версиях ядра Linux. #3749
  • Исправлена ошибка сегментации в функции empty для аргумента типа FixedString. Daniel, Dao Quang Minh
  • Исправлено чрезмерное выделение памяти при использовании большого значения настройки max_query_size (фрагмент памяти размером max_query_size байт заранее выделялся целиком). #3720

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

  • Исправлена сборка с использованием библиотек LLVM/Clang версии 7 из пакетов ОС (эти библиотеки используются для компиляции запросов во время выполнения). #3582

Релиз ClickHouse 18.14.17, 2018-11-30

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

  • Исправлены случаи, когда процесс моста ODBC не завершался вместе с основным процессом сервера. #3642
  • Исправлена синхронная вставка в таблицу Distributed со списком столбцов, отличающимся от списка столбцов удалённой таблицы. #3673
  • Исправлено редкое состояние гонки, которое могло приводить к аварийному завершению при удалении таблицы MergeTree. #3643
  • Исправлена взаимная блокировка при выполнении запроса в случае, если не удавалось создать поток запроса из-за ошибки Resource temporarily unavailable. #3643
  • Исправлен разбор секции ENGINE, когда использовался синтаксис CREATE AS table и секция ENGINE указывалась перед AS table (из-за ошибки указанный движок игнорировался). #3692

Релиз ClickHouse 18.14.15, 2018-11-21

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

  • Размер фрагмента памяти переоценивался при десериализации столбца типа Array(String), что приводило к ошибке “Memory limit exceeded”. Проблема появилась в версии 18.12.13. #3589

Релиз ClickHouse 18.14.14, 2018-11-20

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

  • Исправлены запросы предложение ON CLUSTER при настройке кластера в защищённом режиме (флаг <secure>). #3599

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

  • Исправлены проблемы с llvm-7 из системы и macOS #3582

Релиз ClickHouse 18.14.13, 2018-11-08

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

  • Исправлена ошибка Block structure mismatch in MergingSorted stream. #3162
  • Исправлено выполнение запросов предложение ON CLUSTER в случае, когда в конфигурации кластера были включены защищённые соединения (флаг <secure>). #3465
  • Исправлена ошибка в запросах, использующих SAMPLE, PREWHERE и столбцы-псевдонимы. #3543
  • Исправлена редкая ошибка unknown compression method, возникавшая при включённой настройке min_bytes_to_use_direct_io. 3544

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

  • Исправлена регрессия производительности запросов с GROUP BY по столбцам типа UInt16 или Date при выполнении на процессорах AMD EPYC. Igor Lapko
  • Исправлена регрессия производительности запросов, обрабатывающих длинные строки. #3530

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

  • Улучшения, упрощающие сборку Arcadia. #3475, #3535

Релиз ClickHouse 18.14.12, 2018-11-02

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

  • Исправлен сбой при JOIN двух безымянных подзапросов. #3505
  • Исправлена генерация некорректных запросов (с пустым WHERE) при выполнении запросов к внешним базам данных. hotid
  • Исправлено использование некорректного значения тайм-аута в словарях ODBC. Marek Vavruša

Релиз ClickHouse 18.14.11, 2018-10-29

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

  • Исправлена ошибка Block structure mismatch in UNION stream: different number of columns в запросах с LIMIT. #2156
  • Исправлены ошибки при слиянии данных в таблицах, содержащих массивы внутри структур Nested. #3397
  • Исправлены некорректные результаты запроса, если настройка merge_tree_uniform_read_distribution отключена (по умолчанию она включена). #3429
  • Исправлена ошибка при вставке в таблицу Distributed в формате Native. #3411

Релиз ClickHouse 18.14.10, 2018-10-23

  • Параметр compile_expressions (JIT-компиляция выражений) по умолчанию отключён. #3410
  • Параметр enable_optimize_predicate_expression по умолчанию отключён.

Релиз ClickHouse 18.14.9, 2018-10-16

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

  • Добавлен модификатор WITH CUBE для GROUP BY (также доступен альтернативный синтаксис GROUP BY CUBE(...)). #3172
  • Добавлена функция formatDateTime. Alexandr Krasheninnikov
  • Добавлены движок таблицы JDBC и табличная функция jdbc (требуется установка clickhouse-jdbc-bridge). Alexandr Krasheninnikov
  • Добавлены функции для работы с номером недели по ISO: toISOWeek, toISOYear, toStartOfISOYear и toDayOfYear. #3146
  • Теперь в таблицах MySQL и ODBC можно использовать столбцы Nullable. #3362
  • Вложенные структуры данных можно читать как вложенные объекты в формате JSONEachRow. Добавлена настройка input_format_import_nested_json. Veloman Yunkan
  • При вставке данных для многих MATERIALIZED VIEW доступна параллельная обработка. См. настройку parallel_view_processing. Marek Vavruša
  • Добавлен запрос SYSTEM FLUSH LOGS (принудительный сброс журналов в системные таблицы, например query_log) #3321
  • Теперь при объявлении таблиц Replicated можно использовать предопределённые макросы database и table. #3251
  • Добавлена возможность читать значения типа Decimal в инженерной записи (с указанием степеней десяти). #3153

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

  • Оптимизация предложения GROUP BY для LowCardinality data types. #3138
  • Оптимизировано вычисление выражений для LowCardinality data types. #3200

Улучшения:

  • Существенно снижено потребление памяти при выполнении запросов с ORDER BY и LIMIT. См. настройку max_bytes_before_remerge_sort. #3205
  • Если JOIN (LEFT, INNER, …) не указан, подразумевается INNER JOIN. #3147
  • Квалифицированные звёздочки теперь корректно работают в запросах с JOIN. Winter Zhang
  • Движок таблицы ODBC корректно выбирает способ заключения идентификаторов в кавычки в SQL-диалекте удалённой базы данных. Alexandr Krasheninnikov
  • Параметр compile_expressions (JIT-компиляция выражений) включён по умолчанию.
  • Исправлено поведение при одновременном выполнении DROP DATABASE/TABLE IF EXISTS и CREATE DATABASE/TABLE IF NOT EXISTS. Ранее запрос CREATE DATABASE ... IF NOT EXISTS мог вернуть сообщение об ошибке “File … already exists”, а запросы CREATE TABLE ... IF NOT EXISTS и DROP TABLE IF EXISTS могли возвращать Table ... is creating or attaching right now. #3101
  • Выражения LIKE и IN с константной правой частью передаются на удалённый сервер при выполнении запроса к таблицам MySQL или ODBC. #3182
  • Сравнения с константными выражениями в предложении WHERE теперь передаются на удалённый сервер при запросах к таблицам MySQL и ODBC. Ранее передавались только сравнения с константами. #3182
  • Исправлен расчёт ширины строки в терминале для форматов Pretty, в том числе для строк с иероглифами. Amos Bird.
  • В запросах ALTER UPDATE можно использовать ON CLUSTER.
  • Улучшена производительность чтения данных в формате JSONEachRow. #3332
  • Для обеспечения совместимости добавлены синонимы для функций LENGTH и CHARACTER_LENGTH. Функция CONCAT больше не зависит от регистра. #3306
  • Добавлен синоним TIMESTAMP для типа DateTime. #3390
  • В серверных журналах всегда зарезервировано место для query_id, даже если строка журнала не связана с запросом. Это облегчает разбор текстовых серверных журналов с помощью сторонних инструментов.
  • Использование памяти запросом записывается в журнал при превышении очередного целого значения в гигабайтах. #3205
  • Добавлен режим совместимости на случай, если клиентская библиотека, использующая собственный протокол, по ошибке отправляет меньше столбцов, чем сервер ожидает для запроса INSERT. Такая ситуация была возможна при использовании библиотеки clickhouse-cpp. Ранее в этом случае сервер аварийно завершал работу. #3171
  • В пользовательском выражении WHERE в clickhouse-copier теперь можно использовать псевдоним partition_key (для дополнительной фильтрации по партиции в исходной таблице). Это полезно, если схема партиционирования меняется при копировании, но лишь незначительно. #3166
  • Логика работы движка Kafka была перенесена в фоновый пул потоков, чтобы при высоких нагрузках автоматически снижать скорость чтения данных. Marek Vavruša.
  • Поддержка чтения значений Tuple и Nested из структур типа struct в Cap'n'Proto format. Marek Vavruša
  • В список доменов верхнего уровня для функции firstSignificantSubdomain теперь входит домен biz. decaseal
  • В конфигурации внешних словарей null_value интерпретируется как значение по умолчанию для типа данных. #3330
  • Добавлена поддержка функций intDiv и intDivOrZero для Decimal. b48402e8
  • Поддержка типов Date, DateTime, UUID и Decimal в качестве ключа для агрегатной функции sumMap. #3281
  • Поддержка типа данных Decimal во внешних словарях. #3324
  • Поддержка типа данных Decimal в таблицах SummingMergeTree. #3348
  • Добавлены специализации для UUID в функции if. #3366
  • Уменьшено количество системных вызовов open и close при чтении из таблицы MergeTree. #3283
  • Запрос TRUNCATE TABLE можно выполнить на любой реплике (он будет передан реплике-лидеру). Kirill Shvakov

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

  • Исправлена ошибка в таблицах Dictionary для словарей range_hashed. Эта ошибка возникала в версии 18.12.17. #1702
  • Исправлена ошибка при загрузке словарей range_hashed (сообщение Unsupported type Nullable (...)). Эта ошибка возникала в версии 18.12.17. #3362
  • Исправлены ошибки в функции pointInPolygon, вызванные накоплением погрешностей вычислений для многоугольников с большим количеством близко расположенных вершин. #3331 #3341
  • Если после слияния частей данных контрольная сумма для результирующей части отличалась от результата того же слияния на другой реплике, результат слияния удалялся, а часть данных загружалась с другой реплики (это корректное поведение). Но после загрузки часть данных не удавалось добавить в рабочий набор из-за ошибки о том, что такая часть уже существует (поскольку часть данных удалялась с некоторой задержкой после слияния). Это приводило к циклическим попыткам загрузить одни и те же данные. #3194
  • Исправлен некорректный расчёт общего потребления памяти запросами (из-за этой ошибки настройка max_memory_usage_for_all_queries работала неправильно, а метрика MemoryTracking имела неверное значение). Эта ошибка присутствовала в версии 18.12.13. Marek Vavruša
  • Исправлена работа CREATE TABLE ... ON CLUSTER ... AS SELECT .... Эта ошибка возникала в версии 18.12.13. #3247
  • Устранена избыточная подготовка структур данных для JOIN на сервере, инициирующем запрос, если JOIN выполняется только на удалённых серверах. #3340
  • Исправлены ошибки в движке Kafka: взаимные блокировки после исключений при начале чтения данных и блокировки при завершении работы Marek Vavruša.
  • Для таблиц Kafka не передавался необязательный параметр schema (схема для формата Cap'n'Proto). Vojtech Splichal
  • Если в ансамбле серверов ZooKeeper есть серверы, которые принимают соединение, но затем сразу закрывают его вместо ответа на рукопожатие, ClickHouse выбирает для подключения другой сервер. Ранее это приводило к ошибке Cannot read all data. Bytes read: 0. Bytes expected: 4. и сервер не мог запуститься. 8218cf3a
  • Если ансамбль серверов ZooKeeper содержит серверы, для которых DNS-запрос завершается ошибкой, такие серверы игнорируются. 17b8e209
  • Исправлено преобразование типов между Date и DateTime при вставке данных в формате VALUES (если input_format_values_interpret_expressions = 1). Ранее преобразование выполнялось между числовым значением количества дней с начала Unix-эпохи и Unix-временной меткой, что приводило к неожиданным результатам. #3229
  • Исправлено преобразование типов между Decimal и целыми числами. #3211
  • Исправлены ошибки в параметре enable_optimize_predicate_expression. Winter Zhang
  • Исправлена ошибка разбора в формате CSV для чисел с плавающей запятой при использовании нестандартного разделителя CSV, например ; #3155
  • Исправлена функция arrayCumSumNonNegative (она не накапливает отрицательные значения, если значение аккумулятора меньше нуля). Aleksey Studnev
  • Исправлена работа таблиц Merge, построенных поверх таблиц Distributed, при использовании PREWHERE. #3165
  • Исправления ошибок в запросе ALTER UPDATE.
  • Исправлены ошибки в табличной функции odbc, возникшие в версии 18.12. #3197
  • Исправлена работа агрегатных функций с комбинаторами StateArray. #3188
  • Исправлен сбой при делении значения Decimal на ноль. 69dd6609
  • Исправлен вывод типов для операций с Decimal и целочисленными аргументами. #3224
  • Исправлен segfault при GROUP BY для Decimal128. 3359ba06
  • Параметр log_query_threads (запись информации о каждом потоке, участвующем в выполнении запроса) теперь действует только в том случае, если параметр log_queries (запись информации о запросах) установлен в 1. Поскольку параметр log_query_threads включен по умолчанию, ранее информация о потоках записывалась, даже если логирование запросов было отключено. #3241
  • Исправлена ошибка при распределённом выполнении агрегатной функции quantiles (сообщение об ошибке Not found column quantile...). 292a8855
  • Исправлена проблема совместимости при одновременной работе в кластере с серверами версии 18.12.17 и более старыми серверами. В распределённых запросах с ключами GROUP BY как фиксированной, так и переменной длины при большом объёме данных для агрегации возвращаемые данные не всегда агрегировались полностью (две разные строки содержали одинаковые ключи агрегации). #3254
  • Исправлена обработка подстановок в clickhouse-performance-test, если запрос содержит лишь часть подстановок, объявленных в тесте. #3263
  • Исправлена ошибка при использовании FINAL с PREWHERE. #3298
  • Исправлена ошибка при использовании PREWHERE со столбцами, добавленными во время ALTER. #3298
  • Добавлена проверка, запрещающая использование arrayJoin в выражениях DEFAULT и MATERIALIZED. Ранее arrayJoin приводил к ошибке при вставке данных. #3337
  • Добавлена проверка отсутствия arrayJoin в секции PREWHERE. Ранее это приводило к сообщениям вроде Size ... does not match или Unknown compression method при выполнении запросов. #3357
  • Исправлен segfault, который в редких случаях мог возникать после оптимизации, заменяющей цепочки AND из проверок на равенство на соответствующее выражение IN. liuyimin-bytedance
  • Незначительные исправления в clickhouse-benchmark: ранее информация о клиенте не отправлялась на сервер; теперь число выполненных запросов точнее рассчитывается при завершении работы и при ограничении числа итераций. #3351 #3352

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

  • Удалена опция allow_experimental_decimal_type. Тип данных Decimal доступен по умолчанию. #3329

Релиз ClickHouse 18.12

Релиз ClickHouse 18.12.17, 2018-09-16

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

  • Для источника clickhouse реализован invalidate_query (возможность задать запрос для проверки того, требуется ли обновление внешнего словаря). #3126
  • Добавлена возможность использовать типы данных UInt*, Int* и DateTime (наряду с типом Date) в качестве ключа внешнего словаря range_hashed, задающего границы диапазонов. Теперь NULL можно использовать для обозначения открытого диапазона. Vasily Nemkov
  • Тип Decimal теперь поддерживает агрегатные функции var* и stddev*. #3129
  • Тип Decimal теперь поддерживает математические функции (exp, sin и т. д.). #3129
  • В таблице system.part_log теперь есть столбец partition_id. #3089

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

  • Merge теперь корректно работает на таблицах Distributed. Winter Zhang
  • Исправлена несовместимость (лишняя зависимость от версии glibc), из-за которой ClickHouse нельзя было запускать на Ubuntu Precise и более ранних версиях. Эта несовместимость появилась в версии 18.12.13. #3130
  • Исправлены ошибки в настройке enable_optimize_predicate_expression. Winter Zhang
  • Исправлена небольшая проблема с обратной совместимостью, возникавшая при работе с кластером реплик на версиях ниже 18.12.13 и одновременном создании новой реплики таблицы на сервере с более новой версией (она проявлялась в сообщении Can not clone replica, because the ... updated to new ClickHouse version, что логично, но происходить не должно). #3122

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

  • Параметр enable_optimize_predicate_expression включен по умолчанию (что довольно оптимистично). Если возникают ошибки анализа запросов, связанные с поиском имен столбцов, установите enable_optimize_predicate_expression в 0. Winter Zhang

Релиз ClickHouse 18.12.14, 2018-09-13

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

  • Добавлена поддержка запросов ALTER UPDATE. #3035
  • Добавлена опция allow_ddl, ограничивающая доступ пользователя к DDL-запросам. #3104
  • Добавлена опция min_merge_bytes_to_use_direct_io для движков MergeTree, которая позволяет задать порог общего размера слияния (при превышении этого порога файлы частей данных будут обрабатываться с использованием O_DIRECT). #3117
  • Системная таблица system.merges теперь содержит столбец partition_id. #3099

Улучшения

  • Если часть данных не изменяется в ходе mutation, реплики его не загружают. #3103
  • При работе с clickhouse-client доступно автодополнение имен настроек. #3106

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

  • Добавлена проверка размеров массивов, являющихся элементами полей типа Nested, при вставке. #3118
  • Исправлена ошибка при обновлении внешних словарей с источником ODBC и хранилищем hashed. Эта ошибка возникала в версии 18.12.13.
  • Исправлен сбой при создании временной таблицы из запроса с условием IN. Winter Zhang
  • Исправлена ошибка в агрегатных функциях для массивов, которые могут содержать элементы NULL. Winter Zhang

Релиз ClickHouse 18.12.13, 2018-09-10

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

  • Добавлен тип данных DECIMAL(digits, scale) (Decimal32(scale), Decimal64(scale), Decimal128(scale)). Чтобы включить его, используйте параметр allow_experimental_decimal_type. #2846 #2970 #3008 #3047
  • Новый модификатор WITH ROLLUP для GROUP BY (альтернативный синтаксис: GROUP BY ROLLUP(...)). #2948
  • В запросах с JOIN символ звёздочки раскрывается в список столбцов всех таблиц в соответствии со стандартом SQL. Прежнее поведение можно восстановить, установив asterisk_left_columns_only в значение 1 на уровне пользовательской конфигурации. Winter Zhang
  • Добавлена поддержка JOIN с табличными функциями. Winter Zhang
  • Автодополнение по нажатию клавиши Tab в clickhouse-client. Sergey Shcherbin
  • Нажатие Ctrl+C в clickhouse-client очищает введённый запрос. #2877
  • Добавлена настройка join_default_strictness (значения: ", 'any', 'all'). Она позволяет не указывать ANY или ALL в JOIN. #2982
  • В каждой строке журнала сервера, относящейся к обработке запроса, отображается идентификатор запроса. #2482
  • Теперь вы можете получать журналы выполнения запросов в clickhouse-client (используйте настройку send_logs_level). При распределённой обработке запросов журналы передаются каскадом со всех серверов. #2482
  • Теперь таблицы system.query_log и system.processes (SHOW PROCESSLIST) содержат информацию обо всех изменённых настройках при выполнении запроса (вложенная структура данных Settings). Добавлена настройка log_query_settings. #2482
  • Таблицы system.query_log и system.processes теперь содержат информацию о количестве потоков, участвующих в выполнении запроса (см. столбец thread_numbers). #2482
  • Добавлены счётчики ProfileEvents, которые измеряют время, затраченное на чтение и запись по сети, чтение и запись на диск, количество сетевых ошибок, а также время ожидания при ограниченной пропускной способности сети. #2482
  • Добавлены счётчики ProfileEvents, содержащие системные метрики из rusage (их можно использовать для получения информации об использовании CPU в пространстве пользователя и в ядре, страничных ошибках и переключениях контекста), а также метрики taskstats (используйте их, чтобы получать информацию о времени ожидания I/O, времени ожидания CPU и объёме прочитанных и записанных данных — как с кэшем страниц, так и без него). #2482
  • Счётчики ProfileEvents ведутся как глобально, так и для каждого запроса, а также для каждого потока выполнения запроса, что позволяет детально профилировать потребление ресурсов отдельными запросами. #2482
  • Добавлена таблица system.query_thread_log, содержащая информацию о каждом потоке, выполняющем запрос. Добавлена настройка log_query_threads. #2482
  • В таблицах system.metrics и system.events теперь есть встроенная документация. #3016
  • Добавлена функция arrayEnumerateDense. Amos Bird
  • Добавлены функции arrayCumSumNonNegative и arrayDifference. Aleksey Studnev
  • Добавлена агрегатная функция retention. Sundy Li
  • Теперь вы можете складывать (merge) состояния агрегатных функций с помощью оператора «плюс», а также умножать состояния агрегатных функций на неотрицательную константу. #3062 #3034
  • Таблицы семейства MergeTree теперь имеют виртуальный столбец _partition_id. #3089

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

  • Добавлен тип данных LowCardinality(T). Этот тип данных автоматически создает локальный словарь значений и позволяет обрабатывать данные без распаковки словаря. #2830
  • Добавлены кэш JIT-скомпилированных функций и счетчик количества использований до компиляции. Чтобы JIT-компилировать выражения, включите настройку compile_expressions. #2990 #3077

Улучшения:

  • Исправлена проблема с неограниченным ростом журнала репликации при наличии заброшенных реплик. Добавлен эффективный режим восстановления для реплик с большим отставанием.
  • Повышена производительность GROUP BY при наличии нескольких полей агрегации, если одно из них имеет тип String, а остальные — фиксированной длины.
  • Улучшена производительность при использовании PREWHERE, в том числе при неявном переносе выражений в PREWHERE.
  • Улучшена производительность парсинга текстовых форматов (CSV, TSV). Amos Bird #2980
  • Улучшена производительность чтения строк и массивов в двоичных форматах. Amos Bird
  • Повышена производительность и снижено потребление памяти при выполнении запросов к system.tables и system.columns, если на одном сервере очень много таблиц. #2953
  • Исправлена проблема с производительностью при большом потоке запросов, завершающихся ошибкой (_dl_addr видна в perf top, но сервер почти не нагружает CPU). #2938
  • Условия приводятся в представлении (если включен enable_optimize_predicate_expression). Winter Zhang
  • Улучшена работа типа данных UUID. #3074 #2985
  • Тип данных UUID поддерживается в словарях The-Alchemist. #2822
  • Функция visitParamExtractRaw корректно работает со вложенными структурами. Winter Zhang
  • Когда включена настройка input_format_skip_unknown_fields, неизвестные поля объектов в формате JSONEachRow корректно пропускаются. BlahGeek
  • В выражении CASE с условиями теперь можно опустить ELSE, что эквивалентно ELSE NULL. #2920
  • Теперь при работе с ZooKeeper можно настраивать тайм-аут для операции. urykhy
  • Можно указать смещение для LIMIT n, m в форме LIMIT n OFFSET m. #2840
  • Вы можете использовать синтаксис SELECT TOP n в качестве альтернативы LIMIT. #2840
  • Увеличен размер очереди для записи в системные таблицы, чтобы ошибка SystemLog parameter queue is full возникала реже.
  • Агрегатная функция windowFunnel теперь поддерживает события, удовлетворяющие нескольким условиям. Amos Bird
  • Дублирующиеся столбцы можно использовать в предложении USING в JOIN. #3006
  • У форматов Pretty теперь есть ограничение на выравнивание столбцов по ширине. Используйте настройку output_format_pretty_max_column_pad_width. Если значение шире, оно всё равно будет отображаться целиком, но остальные ячейки таблицы не будут слишком широкими. #3003
  • Табличная функция odbc теперь позволяет указывать имя базы данных или схемы. Amos Bird
  • Добавлена возможность использовать имя пользователя, указанное в конфигурационном файле clickhouse-client. Vladimir Kozbin
  • Счётчик ZooKeeperExceptions был разделён на три счётчика: ZooKeeperUserExceptions, ZooKeeperHardwareExceptions и ZooKeeperOtherExceptions.
  • Запросы ALTER DELETE работают с materialized views.
  • Добавлена рандомизация периодического запуска потока очистки для таблиц ReplicatedMergeTree, чтобы избежать периодических пиков нагрузки при очень большом количестве таблиц ReplicatedMergeTree.
  • Поддержка запросов с ATTACH TABLE ... ON CLUSTER. #3025

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

  • Исправлена проблема с таблицами Dictionary (возникало Исключение Size of offsets does not match size of column или Unknown compression method). Эта ошибка появилась в версии 18.10.3. #2913
  • Исправлена ошибка при слиянии таблиц CollapsingMergeTree, если одна из частей данных оказывалась пустой (такие части образуются при слиянии или ALTER DELETE, если все данные были удалены), а для слияния использовался алгоритм vertical. #3049
  • Исправлено состояние гонки при DROP или TRUNCATE таблиц Memory с одновременным SELECT, которое могло приводить к аварийному завершению сервера. Эта ошибка появилась в версии 1.1.54388. #3038
  • Устранена возможность потери данных при вставке в таблицы Replicated, если возвращается ошибка Session is expired (потерю данных можно обнаружить по метрике ReplicatedDataLoss). Эта ошибка возникала в версии 1.1.54378. #2939 #2949 #2964
  • Исправлен segfault при JOIN ... ON. #3000
  • Исправлена ошибка при поиске имён столбцов, когда выражение WHERE целиком состоит из квалифицированного имени столбца, например WHERE table.column. #2994
  • Исправлена ошибка “Not found column”, возникавшая при выполнении распределённых запросов, если с удалённого сервера запрашивался единственный столбец, представляющий собой выражение IN с подзапросом. #3087
  • Исправлена ошибка Block structure mismatch in UNION stream: different number of columns, которая возникала при распределённых запросах, если один из сегментов был локальным, а другой — нет, и срабатывала оптимизация переноса в PREWHERE. #2226 #3037 #3055 #3065 #3073 #3090 #3093
  • Исправлена функция pointInPolygon для некоторых случаев с невыпуклыми многоугольниками. #2910
  • Исправлен некорректный результат при сравнении nan с целыми числами. #3024
  • Исправлена ошибка в библиотеке zlib-ng, которая в редких случаях могла приводить к ошибке сегментации. #2854
  • Исправлена утечка памяти при вставке в таблицу со столбцами AggregateFunction, если состояние агрегатной функции является не простым (память выделяется отдельно) и если один запрос на вставку приводит к образованию нескольких небольших блоков. #3084
  • Устранено состояние гонки при одновременном создании и удалении одной и той же таблицы Buffer или MergeTree.
  • Исправлена возможность возникновения segfault при сравнении Tuple, состоящих из некоторых нетривиальных типов, таких как Tuple. #2989
  • Исправлена возможность возникновения segfault при выполнении некоторых запросов с ON CLUSTER. Winter Zhang
  • Исправлена ошибка в функции arrayDistinct для элементов массива типа Nullable. #2845 #2937
  • Опция enable_optimize_predicate_expression теперь корректно поддерживает запросы с SELECT *. Winter Zhang
  • Исправлено падение из-за ошибки сегментации при повторной инициализации сеанса ZooKeeper. #2917
  • Устранена возможная блокировка при работе с ZooKeeper.
  • Исправлен некорректный код добавления вложенных структур данных в SummingMergeTree.
  • При выделении памяти для состояний агрегатных функций выравнивание теперь учитывается корректно, что позволяет использовать при их реализации операции, требующие выравнивания. chenxing-xc

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

  • Безопасное использование ODBC-источников данных. Для взаимодействия с ODBC-драйверами используется отдельный процесс clickhouse-odbc-bridge. Ошибки в сторонних ODBC-драйверах больше не приводят к проблемам со стабильностью сервера и не создают уязвимостей. #2828 #2879 #2886 #2893 #2921
  • Исправлена некорректная проверка пути к файлу в табличной функции catBoostPool. #2894
  • Содержимое системных таблиц (tables, databases, parts, columns, parts_columns, merges, mutations, replicas и replication_queue) фильтруется в соответствии с настроенным для пользователя доступом к базам данных (allow_databases). Winter Zhang

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

  • В запросах с JOIN символ звёздочки раскрывается в список столбцов всех таблиц в соответствии со стандартом SQL. Чтобы восстановить прежнее поведение, установите asterisk_left_columns_only в значение 1 на уровне конфигурации пользователя.

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

  • Теперь большинство интеграционных тестов можно запускать для конкретного коммита.
  • Проверки стиля кода также можно запускать для конкретного коммита.
  • Реализация memcpy теперь корректно выбирается при сборке на CentOS7/Fedora. Etienne Champetier
  • При сборке с использованием clang, помимо обычных -Wall-Wextra -Werror, были добавлены некоторые предупреждения из -Weverything. #2957
  • Для отладки сборки используется опция отладки jemalloc.
  • Интерфейс библиотеки для взаимодействия с ZooKeeper объявлен абстрактным. #2950

Релиз ClickHouse 18.10

Релиз ClickHouse 18.10.3, 2018-08-13

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

  • Для репликации можно использовать HTTPS. #2760
  • Добавлены функции murmurHash2_64, murmurHash3_32, murmurHash3_64 и murmurHash3_128 помимо уже существующей murmurHash2_32. #2791
  • Добавлена поддержка типа Nullable в ODBC-драйвере ClickHouse (формат вывода ODBCDriver2). #2834
  • Добавлена поддержка UUID в столбцах ключа.

Улучшения:

  • Кластеры можно удалять без перезапуска сервера после их удаления из файлов конфигурации. #2777
  • Внешние словари можно удалять без перезапуска сервера после их удаления из файлов конфигурации. #2779
  • Добавлена поддержка SETTINGS для движка таблицы Kafka. Alexander Marshalov
  • Улучшен тип данных UUID (работа ещё не завершена). #2618
  • Добавлена поддержка пустых частей после слияния в движках SummingMergeTree, CollapsingMergeTree и VersionedCollapsingMergeTree. #2815
  • Старые записи о завершённых мутациях удаляются (ALTER DELETE). #2784
  • Добавлена таблица system.merge_tree_settings. Kirill Shvakov
  • В таблицу system.tables добавлены столбцы зависимостей: dependencies_database и dependencies_table. Winter Zhang
  • Добавлен параметр конфигурации max_partition_size_to_drop. #2782
  • Добавлен параметр output_format_json_escape_forward_slashes. Alexander Bocharov
  • Добавлена настройка max_fetch_partition_retries_count. #2831
  • Добавлена настройка prefer_localhost_replica, позволяющая отключить предпочтение локальной реплики и обращаться к ней без межпроцессного взаимодействия. #2832
  • Агрегатная функция quantileExact возвращает nan при агрегации по пустому набору Float32 или Float64. Sundy Li

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

  • Убрано лишнее экранирование параметров строки подключения ODBC, из-за которого невозможно было установить соединение. Эта ошибка возникала в версии 18.6.0.
  • Исправлена логика обработки команд REPLACE PARTITION в очереди репликации. Если для одной и той же партиции есть две команды REPLACE, из-за некорректной логики одна из них могла остаться в очереди репликации невыполненной. #2814
  • Исправлена ошибка слияния, возникавшая, когда все части данных были пустыми (части, образованные в результате слияния или после ALTER DELETE, если все данные были удалены). Эта ошибка появилась в версии 18.1.0. #2930
  • Исправлена ошибка при одновременном Set или Join. Amos Bird
  • Исправлена ошибка Block structure mismatch in UNION stream: different number of columns, возникавшая в запросах UNION ALL внутри подзапроса, если один из запросов SELECT содержит повторяющиеся имена столбцов. Winter Zhang
  • Исправлена утечка памяти, если при подключении к серверу MySQL возникало исключение.
  • Исправлен некорректный код ответа clickhouse-client в случае ошибки запроса.
  • Исправлено некорректное поведение materialized views, содержащих DISTINCT. #2795

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

  • Удалена поддержка запросов CHECK TABLE для таблиц Distributed.

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

  • Заменён allocator: теперь вместо tcmalloc используется jemalloc. В некоторых сценариях это повышает скорость до 20%. Однако некоторые queries замедлились на величину до 20%. Потребление памяти в некоторых сценариях снизилось примерно на 10%, при этом стабильность улучшилась. При высококонкурентных нагрузках использование CPU в userspace и системе показывает лишь незначительный рост. #2773
  • Используется libressl из submodule. #1983 #2807
  • Используется unixodbc из submodule. #2789
  • Используется mariadb-connector-c из submodule. #2785
  • В repository добавлены файлы функциональных тестов, зависящие от наличия тестовых данных (пока без самих тестовых данных).

Релиз ClickHouse 18.6

Релиз ClickHouse 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. Каждая сторона равенства может быть произвольным выражением над столбцами одной из таблиц. Поддерживается использование полностью квалифицированных имен столбцов (table.name, database.table.name, table_alias.name, subquery_alias.name) для правой таблицы. #2742
  • Можно включить HTTPS для репликации. #2760

Улучшения:

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

Релиз ClickHouse 18.5

Релиз ClickHouse 18.5.1, 2018-07-31

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

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

Улучшения:

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

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

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

Релиз ClickHouse 18.4

Релиз ClickHouse 18.4.0, 2018-07-28

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

  • Добавлены системные таблицы: formats, data_type_families, aggregate_function_combinators, table_functions, table_engines, collations #2721.
  • Добавлена возможность использовать в качестве аргумента remote или cluster table function табличную функцию вместо таблицы #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 an 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 18.1

Релиз ClickHouse 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).

Улучшения:

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

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

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

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

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

Релиз ClickHouse 1.1

Релиз ClickHouse 1.1.54394, 2018-07-12

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

  • Добавлена агрегатная функция histogram (Mikhail Surin).
  • Теперь 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 1.1.54390, 2018-07-06

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

  • Запросы можно отправлять в формате multipart/form-data (в поле query), что удобно, если вместе с запросом нужно передать внешние данные для его обработки (Olga Hvostikova).
  • Добавлена возможность включать или отключать обработку одинарных и двойных кавычек при чтении данных в формате 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, из-за которой до перезапуска сервера могло быть невозможно восстановить сеанс и состояние таблиц в режиме только для чтения.
  • Исправлена ошибка при работе с ZooKeeper, из-за которой старые узлы могли не удаляться при прерывании сеанса.
  • Исправлена ошибка в функции quantileTDigest для аргументов Float (эта ошибка появилась в версии 1.1.54388) (Mikhail Surin).
  • Исправлена ошибка в индексе для таблиц MergeTree, если столбец первичного ключа расположен внутри функции преобразования типов между знаковыми и беззнаковыми целыми числами одинакового размера (#2603).
  • Исправлен segfault, если используются macros, но они отсутствуют в файле конфигурации (#2570).
  • Исправлено переключение клиента на базу данных по умолчанию при повторном подключении (#2583).
  • Исправлена ошибка, возникавшая, когда параметр use_index_for_in_with_subqueries был отключён.

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

  • При подключении к MySQL (LOAD DATA LOCAL INFILE) отправка файлов больше недоступна.

Релиз ClickHouse 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|SENDS REPLICATED|REPLICATION QUEUES]).
  • Добавлена возможность записи в таблицу с движком MySQL и использования соответствующей табличной функции (sundy-li).
  • Добавлены табличная функция url() и движок таблицы URL (Alexander Sapin).
  • Добавлена агрегатная функция windowFunnel (sundy-li).
  • Добавлены новые строковые функции startsWith и endsWith (Vadim Plakhtinsky).
  • Табличная функция numbers() теперь позволяет задавать смещение (Winter Zhang).
  • Пароль для clickhouse-client теперь можно вводить интерактивно.
  • Записи серверного журнала теперь можно отправлять в syslog (Alexander Krasheninnikov).
  • Поддержка журналирования в словарях с источником в виде разделяемой библиотеки (Alexander Sapin).
  • Поддержка пользовательских разделителей CSV (Ivan Zhukov)
  • Добавлена настройка date_time_input_format. Если установить для неё значение 'best_effort', значения DateTime будут считываться в широком диапазоне форматов.
  • Добавлена утилита clickhouse-obfuscator для обфускации данных. Пример использования: публикация данных, используемых в тестах производительности.

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

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

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

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

Улучшения:

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

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

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

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

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

Релиз ClickHouse 1.1.54385, 2018-06-01

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

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

Релиз ClickHouse 1.1.54383, 2018-05-22

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

  • Исправлено замедление обработки очереди репликации, если у таблицы много реплик.

Релиз ClickHouse 1.1.54381, 2018-05-14

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

  • Исправлена утечка узлов в ZooKeeper при потере ClickHouse соединения с сервером ZooKeeper.

Релиз ClickHouse 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 на реплике, не являющейся лидером, если для таблицы был выполнен REANAME.
  • Исправлена ошибка авторизации при выполнении запросов OPTIMIZE или ALTER на реплике, не являющейся лидером.
  • Исправлено зависание KILL QUERY.
  • Исправлена ошибка в клиентской библиотеке ZooKeeper, которая приводила к потере наблюдений, зависанию очереди DDL и замедлению очереди репликации, если в конфигурации ZooKeeper используется непустой префикс chroot.

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

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

Релиз ClickHouse 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).
  • Для движка Kafka можно указать несколько topics, разделенных запятыми (Tobias Adamson)
  • Когда запрос останавливается с помощью KILL QUERY или replace_running_query, клиент получает исключение Query was canceled вместо неполного результата.

Улучшения:

  • Запросы 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 (谢磊).

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

  • Исправлена ошибка с IN, когда левая часть выражения имеет тип Nullable.
  • Теперь при использовании кортежей с IN корректные результаты возвращаются и в случаях, когда некоторые компоненты кортежа присутствуют в индексе таблицы.
  • Ограничение max_execution_time теперь корректно работает с распределёнными запросами.
  • Исправлены ошибки при вычислении размера составных столбцов в таблице system.columns.
  • Исправлена ошибка при создании временной таблицы с помощью CREATE TEMPORARY TABLE IF NOT EXISTS.
  • Исправлены ошибки в StorageKafka (##2075)
  • Исправлены аварийные завершения сервера из-за некорректных аргументов некоторых агрегатных функций.
  • Исправлена ошибка, из-за которой запрос DETACH DATABASE не останавливал фоновые задачи для таблиц ReplicatedMergeTree.
  • Состояние Too many parts теперь возникает с меньшей вероятностью при вставке в агрегированные materialized view (##2084).
  • Исправлена рекурсивная обработка подстановок в конфигурации, если за одной подстановкой на том же уровне должна следовать другая.
  • Исправлен синтаксис в файле метаданных при создании VIEW, использующего запрос с UNION ALL.
  • SummingMergeTree теперь корректно суммирует вложенные структуры данных с составным ключом.
  • Исправлена возможность возникновения состояния гонки при выборе лидера для таблиц 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 для прослушивания — используйте только ::, так как это позволяет принимать соединения и по IPv4, и по IPv6 (при настройках конфигурации ядра по умолчанию). При необходимости можно вернуть поведение предыдущих версий, указав <listen_reuse_port>1</listen_reuse_port> в конфигурации.

Релиз ClickHouse 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).
  • Добавлена возможность создавать псевдонимы для наборов данных. Пример: WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.

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

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

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

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

  • Агрегация без GROUP BY для пустого множества (например, SELECT count(*) FROM table WHERE 0) теперь возвращает результат из одной строки со значениями NULL для агрегатных функций в соответствии со стандартом SQL. Чтобы восстановить прежнее поведение (возвращать пустой результат), установите empty_result_for_aggregation_by_empty_set в 1.
  • Добавлено преобразование типов для UNION ALL. В UNION ALL теперь допускаются разные имена алиасов в соответствующих позициях SELECT в соответствии со стандартом 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.
  • В таблицу system.tables добавлены виртуальные столбцы create_table_query и engine_full. Столбец metadata_modification_time является виртуальным.
  • В таблицы system.tables и system.databases были добавлены столбцы data_path и metadata_path, а в таблицы system.parts и system.parts_columns — столбец path.
  • Добавлена дополнительная информация о слияниях в таблице system.part_log.
  • В таблице system.query_log можно использовать произвольный ключ партиционирования (Kirill Shvakov).
  • Запрос SHOW TABLES теперь также выводит временные таблицы. В system.tables добавлены временные таблицы и столбец is_temporary (zhang2014).
  • Добавлены запросы DROP TEMPORARY TABLE и EXISTS TEMPORARY TABLE (zhang2014).
  • Поддержка SHOW CREATE TABLE для временных таблиц (zhang2014).
  • Добавлен параметр конфигурации system_profile для настроек, используемых внутренними процессами.
  • Поддержка загрузки object_id в качестве атрибута в словарях MongoDB (Pavel Litvinenko).
  • Чтение null в качестве значения по умолчанию при загрузке данных для внешнего словаря из источника MongoDB (Pavel Litvinenko).
  • Чтение значений DateTime в формате Values из Unix-временной метки без использования одинарных кавычек.
  • В табличных функциях remote поддерживается аварийное переключение в случаях, когда на некоторых репликах отсутствует запрошенная таблица.
  • Параметры конфигурации можно переопределить в командной строке при запуске clickhouse-server. Пример: clickhouse-server -- --logger.level=information.
  • Реализована функция empty для аргумента типа FixedString: она возвращает 1, если строка полностью состоит из null-байтов (zhang2014).
  • Добавлен параметр конфигурации listen_try для прослушивания как минимум одного из адресов без завершения работы, если некоторые адреса недоступны для прослушивания (полезно для систем с отключённой поддержкой IPv4 или IPv6).
  • Добавлен движок таблиц VersionedCollapsingMergeTree.
  • Поддержка строк и произвольных числовых типов в источнике словаря library.
  • Таблицы MergeTree можно использовать без первичного ключа (для этого нужно указать ORDER BY tuple()).
  • Тип Nullable можно привести с помощью CAST к типу без Nullable, если аргумент не NULL.
  • Операцию RENAME TABLE можно выполнять для VIEW.
  • Добавлена функция throwIf.
  • Добавлена опция odbc_default_field_size, которая позволяет увеличить максимальный размер значения, загружаемого из ODBC-источника (по умолчанию он составляет 1024).
  • В таблице system.processes и в выводе SHOW PROCESSLIST теперь есть столбцы is_cancelled и peak_memory_usage.

Улучшения:

  • Ограничения и квоты на результат больше не применяются к промежуточным данным в запросах INSERT SELECT и в подзапросах SELECT.
  • Меньше ложных срабатываний force_restore_data при проверке состояния таблиц Replicated во время запуска сервера.
  • Добавлена опция 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.
  • Исправлено состояние гонки в query execution pipeline, которое в очень редких случаях возникало при использовании таблиц Merge с большим количеством таблиц и при использовании подзапросов GLOBAL.
  • Исправлен сбой при передаче в функцию arrayReduce массивов разного размера при использовании агрегатных функций от нескольких аргументов.
  • Запрещено использование запросов с UNION ALL в MATERIALIZED VIEW.
  • Исправлена ошибка при инициализации системной таблицы part_log при запуске сервера (по умолчанию part_log отключена).

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

  • Удалена опция distributed_ddl_allow_replicated_alter. Теперь это поведение включено по умолчанию.
  • Удалена настройка strict_insert_defaults. Если вы использовали эту возможность, напишите на feedback@clickhouse.com.
  • Удален движок UnsortedMergeTree.

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

  • Добавлена поддержка макросов для задания имён кластера в distributed DDL-запросах и конструкторах таблиц 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: если у пользователя по умолчанию есть доступ только для чтения, сервер отказывается запускаться с сообщением 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 the data on another replicas).
  • Исправлена ошибка, которая может приводить к несогласованным слияниям после запроса OPTIMIZE для таблиц Replicated (это можно увидеть в сообщениях журнала Part ... intersects the previous part).
  • Таблицы Buffer теперь корректно работают при наличии материализованных столбцов в целевой таблице (автор 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('Asia/Istanbul'). Если в функциях для аргументов 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 для доступа к удалённым базам данных. Эта возможность находится в стадии бета.
  • Добавлена возможность передавать аргумент типа AggregateFunction в агрегатную функцию groupArray (то есть можно создать массив состояний некоторой агрегатной функции).
  • Сняты ограничения на различные комбинации комбинаторов агрегатных функций. Например, можно использовать агрегатные функции avgForEachIf и avgIfForEach, которые ведут себя по-разному.
  • Комбинатор агрегатных функций -ForEach расширен на случай агрегатных функций с несколькими аргументами.
  • Добавлена поддержка агрегатных функций с аргументами Nullable даже в случаях, когда функция возвращает результат не типа Nullable (при участии Silviu Caragea). Пример: groupArray, groupUniqArray, topK.
  • Добавлен параметр max_client_network_bandwidth для clickhouse-client (Kirill Shvakov).
  • Пользователям с настройкой readonly = 2 разрешено работать с таблицами TEMPORARY (CREATE, DROP, INSERT…) (Kirill Shvakov).
  • Добавлена поддержка использования нескольких потребителей с движком Kafka. Расширены параметры конфигурации для Kafka (Marek Vavruša).
  • Добавлены функции intExp3 и intExp4.
  • Добавлена агрегатная функция sumKahan.
  • Добавлены функции to * Number* OrNull, где * Number* — числовой тип.
  • Добавлена поддержка секций WITH для запроса INSERT SELECT (автор: zhang2014).
  • Добавлены настройки: http_connection_timeout, http_send_timeout, http_receive_timeout. В частности, эти настройки используются для загрузки частей данных при репликации. Изменение этих настроек позволяет быстрее выполнять переключение при отказе, если сеть перегружена.
  • Добавлена поддержка ALTER для таблиц типа Null (Anastasiya Tsarkova).
  • Функция reinterpretAsString расширена на все типы данных, которые хранятся в памяти непрерывно.
  • Добавлена опция --silent для инструмента clickhouse-local. Она подавляет вывод информации о выполнении запроса в stderr.
  • Добавлена поддержка чтения значений типа Date из текста в формате, где месяц и/или день месяца указываются одной цифрой вместо двух (Amos Bird).

Оптимизации производительности:

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

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

  • Исправлена дедупликация данных после выполнения запроса DROP или DETACH PARTITION. В предыдущей версии удаление партиции и повторная вставка тех же данных не работали, поскольку вставленные блоки считались дубликатами.
  • Исправлена ошибка, которая могла приводить к некорректной интерпретации условия WHERE в запросах CREATE MATERIALIZED VIEW с POPULATE .
  • Исправлена ошибка при использовании параметра root_path в конфигурации zookeeper_servers.
  • Исправлены неожиданные результаты при передаче аргумента Date в toStartOfDay .
  • Исправлены функции addMonths и subtractMonths, а также арифметика для INTERVAL n MONTH в случаях, когда результат попадал в предыдущий год.
  • Добавлена отсутствовавшая поддержка типа данных UUID для DISTINCT , JOIN и агрегатной функции uniq, а также для внешних словарей (Evgeniy Ivanov). Поддержка 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 в общем случае.
  • Добавлена отсутствовавшая проверка равенства размеров массивов в аргументах n-арных вариантов агрегатных функций с комбинатором -Array.
  • Исправлена ошибка в --pager для clickhouse-client (автор: ks1322).
  • Исправлена точность функции exp10.
  • Исправлено поведение функции visitParamExtract для лучшего соответствия документации.
  • Исправлен сбой при указании некорректных типов данных.
  • Исправлено поведение DISTINCT в случае, когда все столбцы являются константами.
  • Исправлено форматирование запроса при использовании функции tupleElement со сложным константным выражением в качестве индекса элемента кортежа.
  • Исправлена ошибка в таблицах Dictionary для словарей range_hashed.
  • Исправлена ошибка, приводившая к появлению лишних строк в результате FULL и RIGHT JOIN (Amos Bird).
  • Исправлен сбой сервера при создании и удалении временных файлов в каталогах config.d во время перезагрузки конфигурации.
  • Исправлен запрос SYSTEM DROP DNS CACHE: кэш сбрасывался, но адреса узлов кластера не обновлялись.
  • Исправлено поведение MATERIALIZED VIEW после выполнения DETACH TABLE для таблицы, лежащей в основе представления (Marek Vavruša).

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

  • Для сборок используется инструмент pbuilder. Процесс сборки почти полностью не зависит от окружения хоста сборки.
  • Одна и та же сборка используется для разных версий ОС. Пакеты и бинарные файлы сделаны совместимыми с широким спектром Linux-систем.
  • Добавлен пакет clickhouse-test. Его можно использовать для запуска функциональных тестов.
  • Tar-архив с исходным кодом теперь можно публиковать в репозиторий. Его можно использовать для воспроизведения сборки без GitHub.
  • Добавлена ограниченная интеграция с Travis CI. Из-за ограничений Travis по времени сборки тестируется только отладочная сборка и запускается лишь ограниченное подмножество тестов.
  • Добавлена поддержка Cap'n'Proto в сборке по умолчанию.
  • Формат исходных файлов документации изменен с Restricted 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. Для этого замените ENGINE = Log на ENGINE = TinyLog в соответствующем файле .sql в каталоге metadata. Если в вашей таблице нет столбцов Nullable или если тип вашей таблицы не Log, то ничего делать не нужно.
  • Удалена настройка experimental_allow_extended_storage_definition_syntax. Теперь эта возможность включена по умолчанию.
  • Функция runningIncome была переименована в runningDifferenceStartingWithFirstvalue, чтобы избежать путаницы.
  • Удален синтаксис FROM ARRAY JOIN arr, в котором ARRAY JOIN указывается сразу после FROM без таблицы (Amos Bird).
  • Удален формат BlockTabSeparated, который использовался исключительно в демонстрационных целях.
  • Изменен формат state для агрегатных функций varSamp, varPop, stddevSamp, stddevPop, covarSamp, covarPop, corr. Если вы храните состояния этих агрегатных функций в таблицах (используя тип данных AggregateFunction или materialized view с соответствующими состояниями), пожалуйста, напишите на feedback@clickhouse.com.
  • В предыдущих версиях сервера была недокументированная возможность: если агрегатная функция зависит от параметров, ее все равно можно было указать без параметров в типе данных AggregateFunction. Пример: AggregateFunction(quantiles, UInt64) вместо AggregateFunction(quantiles(0.5, 0.9), UInt64). Эта возможность была утрачена. Хотя она не была документирована, мы планируем снова поддержать ее в будущих выпусках.
  • Типы данных Enum нельзя использовать в агрегатных функциях min/max. Эта возможность будет возвращена в следующем выпуске.

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

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