v24.8 — список изменений для Cloud
Актуальные изменения для сервисов ClickHouse Cloud на основе релиза v24.8.
Обратное несовместимое изменение
-
Изменена двоичная сериализация типа данных Variant: добавлен компактный режим, чтобы избежать записи одного и того же дискриминатора несколько раз для гранул с одним вариантом или только со значениями NULL. Добавлена настройка MergeTree
use_compact_variant_discriminators_serialization, которая по умолчанию включена. Обратите внимание, что тип Variant по‑прежнему является экспериментальным, и обратная несовместимость в сериализации не должна на вас повлиять, если только вы ранее не работали с поддержкой для раннего включения этой функции. #62774 (Kruglov Pavel). -
Запрещено
CREATE MATERIALIZED VIEW ... ENGINE Replicated*MergeTree POPULATE AS SELECT ...с базами данных типа Replicated. Этот конкретный PR применим только к пользователям, которые всё ещё используют ReplicatedMergeTree. #63963 (vdimir). -
Метрика
KeeperOutstandingRequetsбыла переименована вKeeperOutstandingRequests. Это исправляет опечатку, указанную в #66179. #66206 (Robert Schulze). -
clickhouse-clientиclickhouse-localтеперь по умолчанию работают в режиме multi-query (вместо single-query). Например,clickhouse-client -q "SELECT 1; SELECT 2"теперь работает, тогда как ранее пользователям приходилось добавлять--multiquery(или-n). Переключатель--multiquery/-nбольше не нужен.INSERT-запросы в multi-query-режиме обрабатываются по‑особому в зависимости от их предложенияFORMAT: еслиFORMATравенVALUES(наиболее распространённый случай), конец оператораINSERTобозначается завершающей точкой с запятой;в конце запроса. Для всех остальныхFORMAT(например,CSVилиJSONEachRow) конец оператораINSERTобозначается двумя переводами строки\n\nв конце запроса. #63898 (wxybear). -
В предыдущих версиях можно было использовать альтернативный синтаксис для типов данных
LowCardinality, добавляяWithDictionaryк имени типа данных. Это была первоначальная рабочая реализация, она никогда не документировалась и не была доступна широкой публике. Теперь она объявлена устаревшей. Если вы использовали этот синтаксис, вам необходимо выполнитьALTERдля ваших таблиц и переименовать типы данных вLowCardinality. #66842 (Alexey Milovidov). -
Исправлены логические ошибки при использовании хранилища
Bufferс распределённой целевой таблицей. Это обратное несовместимое изменение: запросы, использующиеBufferс распределённой целевой таблицей, могут перестать работать, если таблица фигурирует в запросе более одного раза (например, в self-join). #67015 (vdimir). -
В предыдущих версиях вызов функций для случайных распределений, основанных на гамма-функции (таких как хи-квадрат, Стьюдента, Фишера), с отрицательными аргументами, близкими к нулю, приводил к длительным вычислениям или бесконечному циклу. В новой версии вызов этих функций с нулевыми или отрицательными аргументами приведёт к генерации исключения. Это закрывает #67297. #67326 (Alexey Milovidov).
-
В предыдущих версиях
arrayWithConstantмогла работать медленно, если ей задавали генерацию очень больших массивов. В новой версии она ограничена 1 ГБ на массив. Это закрывает #32754. #67741 (Alexey Milovidov). -
Исправлено форматирование модификатора
REPLACE(запрещено опускать скобки). #67774 (Azat Khuzhin).
Новые возможности
-
Расширена функция tuple для конструирования именованных кортежей в запросе. Добавлена функция tupleNames для извлечения имен из кортежей. #54881 (Amos Bird).
-
Поддержка ASOF JOIN для алгоритма full_sorting_join. Закрывает #54493. #55051 (vdimir).
-
Добавлена новая табличная функция fuzzQuery. Эта функция позволяет модифицировать заданную строку запроса случайными вариациями. Пример: SELECT query FROM fuzzQuery('SELECT 1');. #62103 (pufit).
-
Добавлена новая оконная функция percent_rank. #62747 (lgbo).
-
Добавлена поддержка аутентификации по JWT в clickhouse-client. #62829 (Konstantin Bogdanov).
-
Добавлены SQL-функции changeYear, changeMonth, changeDay, changeHour, changeMinute, changeSecond. Например, SELECT changeMonth(toDate('2024-06-14'), 7) возвращает дату 2024-07-14. #63186 (cucumber95).
-
Добавлена таблица system.error_log, которая содержит историю значений ошибок из таблицы system.errors, периодически сбрасываемую на диск. #65381 (Pablo Marcos).
-
Добавлена агрегатная функция groupConcat. Примерно то же самое, что arrayStringConcat(groupArray(column), ','). Может принимать 2 параметра: строковый разделитель и количество элементов для обработки. #65451 (Yarik Briukhovetskyi).
-
Добавлено хранилище AzureQueue. #65458 (Kseniia Sumarokova).
-
Добавлена новая настройка для отключения/включения записи page index в файлы Parquet. #65475 (lgbo).
-
Автоматически добавляется подстановочный символ * в конец пути к директории при использовании табличной функции file. #66019 (Zhidong (David) Guo).
-
Добавлена опция --memory-usage для клиента в неинтерактивном режиме. #66393 (vdimir).
-
Добавлен виртуальный столбец _etag для движка таблиц S3. Исправляет #65312. #65386 (skyoct)
-
Этот pull request добавляет Hive-стиль партиционирования для разных движков (File, URL, S3, AzureBlobStorage, HDFS). Hive-стиль партиционирования организует данные в секционированные подкаталоги, что делает более эффективными выполнение запросов и управление большими наборами данных. В настоящее время он только создает виртуальные столбцы с соответствующими именами и данными. В последующем PR будет добавлена соответствующая фильтрация данных (повышение производительности). #65997 (Yarik Briukhovetskyi).
-
Добавлена функция printf для совместимости со Spark. #66257 (李扬).
-
Добавлена поддержка чтения геометрии MULTILINESTRING в формате WKT с помощью функции readWKTLineString. #67647 (Jacob Reckhard).
-
Добавлен механизм тегирования (пространства имен) для кэша запросов. Одни и те же запросы с разными тегами считаются разными для кэша запросов. Пример: SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'abc' и SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'def' теперь создают разные записи в кэше запросов. #68235 (sakulali).