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

Журнал изменений 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: если FORMATVALUES (наиболее распространённый случай), конец оператора 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).