Список изменений за 2018 год
Релиз 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_use_nulls,max_rows_in_join,max_bytes_in_joinиjoin_overflow_modeпри создании таблицы типаJoin. 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 - Исправлена ошибка, вызывавшая сбой при использовании неконстантного аргумента масштаба в функциях
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при работе с материализованными представлениями. 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. Это означает, что каталог/etc/clickhouse-server/недоступен для записи пользователюclickhouse, что повышает безопасность. #2443 - Параметр
min_merge_bytes_to_use_direct_ioпо умолчанию равен 10 ГиБ. Слияния, которые формируют крупные части таблиц семейства MergeTree, выполняются в режимеO_DIRECT, что предотвращает чрезмерное вытеснение страниц из страницного кэша. #3504 - Ускорен запуск сервера при очень большом количестве таблиц. #3398
- Добавлен пул соединений и HTTP
Keep-Aliveдля соединений между репликами. #3594 - Если синтаксис запроса недопустим, в интерфейсе
HTTPвозвращается код400 Bad Request(ранее возвращался код500). 31bc680a - Параметр
join_default_strictnessпо умолчанию имеет значениеALLдля совместимости. 120e2cbe - Удалено логирование в
stderrв библиотекеre2для некорректных или сложных регулярных выражений. #3723 - Добавлено для табличного движка
Kafka: проверка наличия подписок перед началом чтения из Kafka; параметр таблицы kafka_max_block_size. Marek Vavruša - Функции
cityHash64,farmHash64,metroHash64,sipHash64,halfMD5,murmurHash2_32,murmurHash2_64,murmurHash3_32иmurmurHash3_64теперь работают с произвольным числом аргументов, а также с аргументами в виде кортежей. #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для константного аргумента ключа и неконстантного значения по умолчанию. Amos Bird - Функция
firstSignificantSubdomainтеперь обрабатывает доменыgov,milиedu. Igor Hatarist Повышена производительность. #3628 - Возможность указывать пользовательские переменные окружения для запуска
clickhouse-serverс использованием сценария инициализацииSYS-V init.d, задаваяCLICKHOUSE_PROGRAM_ENVв/etc/default/clickhouse. Павло Башинский - Исправлен код возврата для 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. Konstantин 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 - Исправлена ошибка, из-за которой сообщения
netlink: '...': attribute type 1 has an invalid lengthвыводились в журнал ядра Linux; это происходило только на достаточно новых версиях ядра 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 bridge не завершался вместе с основным серверным процессом. #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
Улучшения сборки:
Релиз ClickHouse 18.14.12, 2018-11-02
Исправления ошибок:
- Исправлено падение при объединении двух безымянных подзапросов. #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 - Теперь можно использовать столбцы
Nullableдля таблицMySQLиODBC. #3362 - Вложенные структуры данных могут считываться как вложенные объекты в формате
JSONEachRow. Добавлена настройкаinput_format_import_nested_json. Veloman Yunkan - Доступна параллельная обработка для многих материализованных представлений (
MATERIALIZED VIEW) при вставке данных. См. настройкуparallel_view_processing. Marek Vavruša - Добавлен запрос
SYSTEM FLUSH LOGS(принудительная запись логов в системные таблицы, такие какquery_log). #3321 - Теперь можно использовать предопределённые макросы
databaseиtableпри объявлении реплицируемых (Replicated) таблиц. #3251 - Добавлена возможность чтения значений типа
Decimalв инженерной нотации (с указанием степеней десяти). #3153
Экспериментальные возможности:
- Оптимизация предложения GROUP BY для типов данных
LowCardinality. #3138 - Оптимизировано вычисление выражений для типов данных
LowCardinality. #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. ON CLUSTERможно указывать для запросовALTER UPDATE.- Улучшена производительность при чтении данных в формате
JSONEachRow. #3332 - Добавлены синонимы для функций
LENGTHиCHARACTER_LENGTHдля совместимости. ФункцияCONCATбольше не чувствительна к регистру. #3306 - Добавлен синоним
TIMESTAMPдля типаDateTime. #3390 - В журналах сервера всегда отведено место под query_id, даже если строка журнала не связана с запросом. Это упрощает разбор текстовых журналов сервера сторонними инструментами.
- Потребление памяти запросом логируется, когда оно превышает следующий порог, выраженный целым числом гигабайт. #3205
- Добавлен режим совместимости для случая, когда клиентская библиотека, использующая протокол Native, по ошибке отправляет меньше столбцов, чем ожидает сервер в запросе INSERT. Такая ситуация могла возникать при использовании библиотеки clickhouse-cpp. Ранее это приводило к аварийному завершению работы сервера. #3171
- В пользовательском выражении WHERE в
clickhouse-copierтеперь можно использовать псевдонимpartition_key(для дополнительной фильтрации по партиции исходной таблицы). Это полезно, если схема партиционирования во время копирования меняется, но лишь незначительно. #3166 - Работа движка
Kafkaперенесена в пул фоновых потоков, чтобы автоматически снижать скорость чтения данных при высоких нагрузках. Marek Vavruša. - Поддержка чтения значений
TupleиNestedдля структур типаstructв формате Cap'n Proto. 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 есть серверы, которые принимают соединение, но затем сразу закрывают его вместо ответа на handshake, 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-временем (Unix timestamp), что приводило к неожиданным результатам. #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 - Исправлен сегфолт при выполнении
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 - Исправлена ошибка сегментации, которая в редких случаях могла возникать после оптимизации, заменявшей цепочки 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
Улучшения:
- Если кусок данных во время мутации остаётся неизменным, он не загружается репликами. #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
- Автодополнение в clickhouse-client по клавише Tab. 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 и объёме прочитанных и записанных данных как с использованием page cache, так и без него). #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 - Теперь вы можете складывать (объединять) состояния агрегатных функций с помощью оператора
+, а также умножать их на неотрицательную константу. #3062 #3034 - Таблицы семейства MergeTree получили виртуальный столбец
_partition_id. #3089
Экспериментальные возможности:
- Добавлен тип данных
LowCardinality(T). Этот тип данных автоматически создаёт локальный словарь значений и позволяет обрабатывать данные без распаковки словаря. #2830 - Добавлен кэш JIT-компилированных функций и счётчик числа использований до компиляции. Чтобы JIT-компилировать выражения, включите настройку
compile_expressions. #2990 #3077
Улучшения:
- Исправлена проблема с неограниченным накоплением журнала репликации при наличии заброшенных реплик. Добавлен эффективный режим восстановления для реплик с большим лагом репликации.
- Повышена производительность
GROUP BYс несколькими полями группировки, когда одно из них строкового типа, а остальные — фиксированной длины. - Повышена производительность при использовании
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 - В словарях The-Alchemist поддерживается тип данных
UUID. #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. - Добавлено случайное смещение при периодическом запуске потока очистки для таблиц
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 - Исправлена ошибка сегментирования при выполнении запроса
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, которая в редких случаях могла приводить к сбою сегментации (segfault). #2854 - Исправлена утечка памяти при вставке в таблицу со столбцами
AggregateFunction, если состояние агрегатной функции не простое (выделяет память отдельно) и если один запрос на вставку приводит к созданию нескольких небольших блоков. #3084 - Исправлена гонка при одновременном создании и удалении одной и той же таблицы
BufferилиMergeTree. - Исправлена потенциальная ошибка сегментации при сравнении кортежей, состоящих из некоторых нетривиальных типов, таких, как кортежи. #2989
- Исправлена возможная ошибка сегментации при выполнении некоторых запросов
ON CLUSTER. Winter Zhang - Исправлена ошибка в функции
arrayDistinctдля элементов массива типаNullable. #2845 #2937 - Опция
enable_optimize_predicate_expressionтеперь корректно работает с запросами видаSELECT *. Winter Zhang - Исправлено падение (segfault) при повторной инициализации сессии 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 для сборки добавлены некоторые предупреждения из
-Weverythingв дополнение к обычным-Wall -Wextra -Werror. #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 в случае ошибки запроса.
- Исправлено некорректное поведение материализованных представлений, содержащих DISTINCT. #2795
Обратно несовместимые изменения
- Удалена поддержка запросов CHECK TABLE для таблиц типа Distributed.
Изменения сборки:
- Заменён аллокатор: теперь вместо
tcmallocиспользуетсяjemalloc. В некоторых сценариях это увеличивает скорость до 20%. Однако есть запросы, которые замедлились до 20%. Потребление памяти в некоторых сценариях снижено примерно на 10%, улучшена стабильность. При высококонкурентных нагрузках использование CPU в пространстве пользователя и в системе показывает лишь незначительный рост. #2773 - Используется libressl из подмодуля. #1983 #2807
- Используется unixodbc из подмодуля. #2789
- Используется mariadb-connector-c из подмодуля. #2785
- В репозиторий добавлены файлы функциональных тестов, зависящие от доступности тестовых данных (пока без самих тестовых данных).
Релиз 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#2708. - Поддержка аутентификации
HTTP Basicв протоколе репликации #2727. - Функция
hasтеперь позволяет искать числовое значение в массиве значений типаEnumMaxim Khrisanfov. - Поддержка добавления произвольных разделителей сообщений при чтении из
KafkaAmos 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 CLUSTERWinter Zhang.
Исправления ошибок:
- Исправлена ошибка
Column ... is not under an aggregate function and not in GROUP BYдля агрегации с выражениемIN. Этот баг появился в версии 18.1.0. (bbdd780b) - Исправлена ошибка в агрегатной функции
windowFunnelWinter 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).
- Исправлена ошибка при CAST к типам Nullable (#1322).
- Исправлен некорректный результат функции
maxIntersection()при совпадении границ интервалов (Michael Furmur). - Исправлено некорректное преобразование цепочки выражений OR в аргументе функции (chenxing-xc).
- Исправлено снижение производительности для запросов, содержащих выражения
IN (subquery)внутри другого подзапроса (#2571). - Исправлена несовместимость между серверами с разными версиями в распределённых запросах, использующих функцию
CAST, записанную не заглавными буквами (fe8c4d6). - Добавлено отсутствующее кавычение идентификаторов для запросов к внешней СУБД (#2635).
Обратно несовместимые изменения:
- Преобразование строки, содержащей число ноль, к типу 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, из-за которой могло оказаться невозможным восстановить сессию и состояния таблиц
readonlyперед перезапуском сервера. - Исправлена ошибка при работе с ZooKeeper, из-за которой старые узлы могли не удаляться при обрыве сессии.
- Исправлена ошибка в функции
quantileTDigestдля аргументов типа Float (эта ошибка была внесена в версии 1.1.54388) (Mikhail Surin). - Исправлена ошибка в индексе для таблиц MergeTree, если столбец первичного ключа находится внутри функции для преобразования типов между знаковыми и беззнаковыми целыми одного размера (#2603).
- Исправлена ошибка сегментации, если используются
macros, но они отсутствуют в конфигурационном файле (#2570). - Исправлено переключение на базу данных по умолчанию при повторном подключении клиента (#2583).
- Исправлена ошибка, возникавшая при отключённой настройке
use_index_for_in_with_subqueries.
Исправление уязвимости:
- Отправка файлов больше невозможна при подключении к MySQL (
LOAD DATA LOCAL INFILE).
ClickHouse Release 1.1.54388, 2018-06-28
Новые возможности:
- Поддержка запроса
ALTER TABLE t DELETE WHEREдля реплицируемых таблиц. Добавлена таблицаsystem.mutationsдля отслеживания прогресса запросов этого типа. - Поддержка запроса
ALTER TABLE t [REPLACE|ATTACH] PARTITIONдля таблиц *MergeTree. - Поддержка запроса
TRUNCATE TABLE(Winter Zhang) - Несколько новых запросов
SYSTEMдля реплицируемых таблиц (RESTART REPLICAS,SYNC REPLICA,[STOP|START] [MERGES|FETCHES|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больше не возвращают некорректный результат. - Исправлена ошибка при чтении столбца-массива из структуры
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. - Исправлена вставка в материализованное представление для движка Distributed (Babacar Diassé).
- Исправлена гонка при записи данных из движка
Kafkaв материализованные представления (Yangkuan Liu). - Исправлена SSRF-уязвимость в табличной функции
remote(). - Исправлено поведение выхода
clickhouse-clientв многострочном режиме (#2510).
Улучшения:
- Фоновые задачи в реплицируемых таблицах теперь выполняются в пуле потоков, а не в отдельных потоках (Silviu Caragea).
- Улучшена производительность сжатия LZ4.
- Ускорен анализ запросов с большим количеством JOIN и подзапросов.
- DNS-кэш теперь обновляется автоматически при слишком большом количестве сетевых ошибок.
- Вставка в таблицу больше не выполняется, если вставка в одно из материализованных представлений невозможна из-за слишком большого количества частей.
- Исправлено расхождение в счётчиках событий
Query,SelectQueryиInsertQuery. - Допускаются выражения вида
tuple IN (SELECT tuple), если типы кортежей совпадают. - Сервер с реплицируемыми таблицами может запускаться, даже если ZooKeeper не настроен.
- При расчёте количества доступных ядер CPU теперь учитываются ограничения cgroups (Atri Sharma).
- Добавлен chown для конфигурационных директорий в конфигурационном файле systemd (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, которая приводила к потере наблюдателей (watches), зависанию распределённой очереди 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. - В системной таблице добавлена информация о размере частей данных в несжатом виде.
- Поддержка межсерверного шифрования для распределённых таблиц (
<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вместо неполного результата.
Improvements:
- Запросы
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(谢磊).
Bug Fixes:
- Исправлена ошибка с
IN, когда левая часть выражения имеет типNullable. - Теперь возвращаются корректные результаты при использовании кортежей с
IN, когда некоторые компоненты кортежа находятся в индексе таблицы. - Ограничение
max_execution_timeтеперь корректно работает с распределёнными запросами. - Исправлены ошибки при расчёте размера составных столбцов в таблице
system.columns. - Исправлена ошибка при создании временной таблицы
CREATE TEMPORARY TABLE IF NOT EXISTS. - Исправлены ошибки в
StorageKafka(##2075) - Исправлены падения сервера из‑за некорректных аргументов некоторых агрегатных функций.
- Исправлена ошибка, из‑за которой запрос
DETACH DATABASEне останавливал фоновые задачи для таблицReplicatedMergeTree. - Состояние
Too many partsтеперь реже возникает при вставке в агрегированные материализованные представления (##2084). - Скорректирована рекурсивная обработка подстановок в конфигурации, если за одной подстановкой на том же уровне должна следовать другая.
- Исправлен синтаксис в файле метаданных при создании
VIEW, использующего запрос сUNION ALL. SummingMergeTreeтеперь корректно работает при суммировании вложенных структур данных с составным ключом.- Устранена потенциальная гонка при выборе лидера для таблиц
ReplicatedMergeTree.
Build Changes:
- Сборка поддерживает
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. Пакеты со старыми именами по-прежнему доступны в репозиториях для обратной совместимости.
Backward Incompatible Changes:
- Убрана особая интерпретация выражения 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 Release 1.1.54370, 2018-03-16
New Features:
- Добавлена таблица
system.macrosи автоматическое обновление макросов при изменении конфигурационного файла. - Добавлен запрос
SYSTEM RELOAD CONFIG. - Добавлена агрегатная функция
maxIntersections(left_col, right_col), которая возвращает максимальное количество одновременно пересекающихся интервалов[left; right]. ФункцияmaxIntersectionsPosition(left, right)возвращает начало «максимального» интервала. (Michael Furmur).
Improvements:
- При вставке данных в
Replicated-таблицу выполняется меньше запросов кZooKeeper(и большинство пользовательских ошибок исчезло из логаZooKeeper). - Добавлена возможность создавать псевдонимы для наборов данных. Пример:
WITH (1, 2, 3) AS set SELECT number IN set FROM system.numbers LIMIT 10.
Bug Fixes:
- Исправлена ошибка
Illegal PREWHEREпри чтении из Merge-таблиц дляDistributed-таблиц. - Добавлены исправления, которые позволяют запускать clickhouse-server в Docker-контейнерах, использующих только IPv4.
- Исправлена гонка при чтении из системной таблицы
system.parts_columns. - Убрано двойное буферизование при синхронной вставке в таблицу
Distributed, которое могло приводить к тайм-ауту соединения. - Исправлена ошибка, из-за которой ожидание недоступной реплики перед началом выполнения запроса
SELECTмогло быть чрезмерно долгим. - Исправлены некорректные даты в таблице
system.parts. - Исправлена ошибка, из-за которой было невозможно вставлять данные в
Replicated-таблицу, еслиchrootбыл непустым в конфигурации кластераZooKeeper. - Исправлен алгоритм вертикального слияния для таблицы с пустым
ORDER BY. - Восстановлена возможность использовать словари в запросах к удалённым таблицам, даже если эти словари отсутствуют на сервере, выполняющем запрос. Эта функциональность была утрачена в релизе 1.1.54362.
- Восстановлено поведение для запросов вида
SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table), когда правая частьINдолжна использовать удалённую таблицуdefault.table, а не локальную. Это поведение было нарушено в версии 1.1.54358. - Удалено лишнее логирование на уровне error сообщения
Not found column ... in block.
ClickHouse Release 1.1.54362, 2018-03-11
New Features:
- Агрегирование без
GROUP BYдля пустого набора (например,SELECT count(*) FROM table WHERE 0) теперь возвращает результат с одной строкой, в которой агрегатные функции принимают значение NULL, в соответствии со стандартом SQL. Чтобы вернуть старое поведение (возврат пустого результата), установитеempty_result_for_aggregation_by_empty_setв значение 1. - Добавлено приведение типов для
UNION ALL. В спискахSELECTвUNION ALLтеперь допускаются разные имена псевдонимов в соответствии со стандартом SQL. - В предложениях
LIMIT BYтеперь поддерживаются произвольные выражения. Ранее можно было использовать только столбцы, возвращаемые операторомSELECT. - Индекс таблиц
MergeTreeиспользуется, когда операторINприменяется к кортежу выражений по столбцам первичного ключа. Пример:WHERE (UserID, EventDate) IN ((123, '2000-01-01'), ...)(Anastasiya Tsarkova). - Добавлен инструмент
clickhouse-copierдля копирования данных между кластерами и их перешардирования (бета). - Добавлены функции консистентного хэширования:
yandexConsistentHash,jumpConsistentHash,sumburConsistentHash. Они могут использоваться в качестве ключа шардирования для снижения объёма сетевого трафика при последующих перешардированиях. - Добавлены функции:
arrayAny,arrayAll,hasAny,hasAll,arrayIntersect,arrayResize. - Добавлена функция
arrayCumSum(Javi Santana). - Добавлены функции
parseDateTimeBestEffort,parseDateTimeBestEffortOrZeroиparseDateTimeBestEffortOrNullдля чтения значения типа DateTime из строки, содержащей текст в различных возможных форматах. - Данные могут быть частично перезагружены из внешних словарей при обновлении (загружаются только записи, в которых значение указанного поля больше, чем в предыдущей загрузке) (Arsen Hakobyan).
- Добавлена табличная функция
cluster. Пример:cluster(cluster_name, db, table). Табличная функцияremoteможет принимать имя кластера в качестве первого аргумента, если оно указано как идентификатор. - Табличные функции
remoteиclusterможно использовать в запросахINSERT. - Добавлены виртуальные столбцы
create_table_queryиengine_fullв таблицуsystem.tables. Столбецmetadata_modification_timeтакже является виртуальным. - Добавлены столбцы
data_pathиmetadata_pathв таблицыsystem.tablesиsystem.databases, а также столбецpathв таблицыsystem.partsиsystem.parts_columns. - Добавлена дополнительная информация о слияниях в таблице
system.part_log. - Для таблицы
system.query_logможно использовать произвольный ключ партиционирования (Kirill Shvakov). - Запрос
SHOW TABLESтеперь также отображает временные таблицы. В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, если строка полностью состоит из нулевых байтов (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). - Исправлена небольшая регрессия производительности в функциях, использующих регулярные выражения.
- Исправлена регрессия производительности при создании многомерных массивов из сложных выражений.
- Исправлена ошибка, которая могла приводить к появлению лишней секции
FORMATв.sql‑файле с метаданными. - Исправлена ошибка, из‑за которой лимит
max_table_size_to_dropприменялся при попытке удалитьMATERIALIZED VIEW, ссылающееся на явно указанную таблицу. - Исправлена несовместимость со старыми клиентами (старым клиентам иногда отправлялись данные типа
DateTime('timezone'), который они не поддерживают). - Исправлена ошибка при чтении элементов столбца
Nestedу структур, добавленных с помощьюALTER, но пустых для старых партиций, когда условия по этим столбцам были перенесены вPREWHERE. - Исправлена ошибка при фильтрации таблиц по виртуальным столбцам
_tableв запросах к таблицамMerge. - Исправлена ошибка при использовании столбцов
ALIASв таблицахDistributed. - Исправлена ошибка, из‑за которой динамическая компиляция была невозможна для запросов с агрегатными функциями из семейства
quantile. - Исправлено состояние гонки в конвейере выполнения запросов, возникавшее в очень редких случаях при использовании таблиц
Mergeс большим количеством таблиц, а также при использовании подзапросовGLOBAL. - Исправлен сбой при передаче массивов разного размера в функцию
arrayReduceпри использовании агрегатных функций от нескольких аргументов. - Запрещено использование запросов с
UNION ALLвMATERIALIZED VIEW. - Исправлена ошибка при инициализации системной таблицы
part_logпри запуске сервера (по умолчаниюpart_logотключена).
Изменения, нарушающие обратную совместимость:
- Опция
distributed_ddl_allow_replicated_alterудалена. Это поведение теперь включено по умолчанию. - Настройка
strict_insert_defaultsудалена. Если вы использовали эту функциональность, напишите по адресуfeedback@clickhouse.com. - Удалён движок
UnsortedMergeTree.
ClickHouse Release 1.1.54343, 2018-02-05
- Добавлена поддержка макросов для задания имён кластеров в распределённых DDL-запросах и конструкторах таблиц с движком Distributed:
CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table'). - Теперь запросы вида
SELECT ... FROM table WHERE expr IN (subquery)обрабатываются с использованием индекса таблицыtable. - Улучшена обработка дубликатов при вставке в таблицы с движком Replicated, чтобы они больше не замедляли выполнение очереди репликации.
ClickHouse Release 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 теперь корректно работают, когда в целевой таблице присутствуют столбцы MATERIALIZED (автор — zhang2014).
- Исправлена ошибка в реализации NULL.
ClickHouse Release 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/toRelativeMinute/toRelativeSecondмогут принимать значение типа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разрешена работа с временными таблицами (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. В частности, эти настройки используются для загрузки частей данных при репликации. Изменение этих настроек позволяет ускорить переключение при отказе (failover), если сеть перегружена. - Добавлена поддержка
ALTERдля таблиц типаNull(Anastasiya Tsarkova). - Функция
reinterpretAsStringрасширена для всех типов данных, которые хранятся в памяти непрерывным участком. - Добавлен параметр
--silentдля инструментаclickhouse-local. Он подавляет вывод информации о выполнении запроса в stderr. - Добавлена поддержка чтения значений типа
Dateиз текста в формате, где месяц и/или день месяца задаются одной цифрой вместо двух (Amos Bird).
Оптимизации производительности:
- Повышена производительность агрегатных функций
min,max,any,anyLast,anyHeavy,argMin,argMaxдля строковых аргументов. - Повышена производительность функций
isInfinite,isFinite,isNaN,roundToExp2. - Повышена производительность разбора и форматирования значений типов
DateиDateTimeв текстовом формате. - Повышены производительность и точность разбора чисел с плавающей запятой.
- Снижено потребление памяти при выполнении
JOINв случае, когда левая и правая части содержат столбцы с одинаковыми именами, которые не включены вUSING. - Повышена производительность агрегатных функций
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corrза счет уменьшения численной устойчивости вычислений. Старые функции доступны под именамиvarSampStable,varPopStable,stddevSampStable,stddevPopStable,covarSampStable,covarPopStable,corrStable.
Исправления ошибок:
- Исправлена дедупликация данных после выполнения запроса
DROPили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. Его можно использовать для запуска функциональных тестов. - Архив с исходным кодом теперь можно публиковать в репозиторий. Он может быть использован для воспроизведения сборки без использования GitHub.
- Добавлена ограниченная интеграция с Travis CI. Из-за ограничений по времени сборки в Travis тестируется только debug-сборка и запускается ограниченное подмножество тестов.
- Добавлена поддержка
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для ускорения сборки различных утилит.
Несовместимые изменения:
- Формат меток в таблицах типа
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, который использовался исключительно в демонстрационных целях. - Изменён формат состояния для агрегатных функций
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corr. Если вы сохраняли состояния этих агрегатных функций в таблицах (используя тип данныхAggregateFunctionили материализованные представления с соответствующими состояниями), пожалуйста, напишите на feedback@clickhouse.com. - В предыдущих версиях сервера существовала недокументированная возможность: если агрегатная функция зависит от параметров, её всё равно можно было указывать без параметров в типе данных
AggregateFunction. Пример:AggregateFunction(quantiles, UInt64)вместоAggregateFunction(quantiles(0.5, 0.9), UInt64). Эта возможность была утрачена. Хотя она и была недокументированной, мы планируем снова поддержать её в будущих релизах. - Типы данных Enum не могут использоваться в агрегатных функциях min/max. Эта возможность будет возвращена в следующем релизе.
Обратите внимание при обновлении:
- При поочерёдном обновлении (rolling update) кластера в момент, когда часть реплик работает на старой версии ClickHouse, а часть — на новой, репликация временно останавливается и в логе появляется сообщение
unknown parameter 'shard'. Репликация продолжится после обновления всех реплик кластера. - Если на серверах кластера запущены разные версии ClickHouse, возможно, что распределённые запросы, использующие следующие функции, будут возвращать некорректные результаты:
varSamp,varPop,stddevSamp,stddevPop,covarSamp,covarPop,corr. Необходимо обновить все узлы кластера.