Журнал изменений v24.8 для ClickHouse 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. Это конкретное изменение применимо только к пользователям, которые всё ещё используют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‑запросы в многозапросных выражениях обрабатываются особым образом в зависимости от их предложения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 (Hive-style partitioning) для разных движков (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).