Релиз 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
Улучшения сборки:
Релиз 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теперь позволяет искать числовое значение в массиве значений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).
- Исправлена ошибка при приведении к типам 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: если у пользователя по умолчанию есть доступ только для чтения, сервер отказывается запускаться с сообщением
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. Необходимо обновить все узлы кластера.