> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Журнал изменений v24.10 для Cloud

> Журнал изменений быстрого релиза v24.10

Изменения для сервисов ClickHouse Cloud в релизе v24.10.

<div id="backward-incompatible-change">
  ## Обратно несовместимое изменение
</div>

* Разрешено записывать `SETTINGS` перед `FORMAT` в цепочке запросов с `UNION`, когда подзапросы заключены в скобки. Это закрывает [#39712](https://github.com/ClickHouse/ClickHouse/issues/39712). Изменено поведение в случае, когда в запросе оператор SETTINGS указан дважды подряд. Для соответствующего подзапроса приоритет теперь будет у ближайшего оператора SETTINGS. В предыдущих версиях внешний оператор SETTINGS мог иметь приоритет над внутренним. [#60197](https://github.com/ClickHouse/ClickHouse/pull/60197)[#68614](https://github.com/ClickHouse/ClickHouse/pull/68614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Пере реализован тип Dynamic. Теперь, когда достигается предел динамических типов данных, новые типы не приводятся к String, а сохраняются в специальной структуре данных в бинарном формате с типом данных, закодированным в бинарном виде. Теперь любой тип, когда-либо вставленный в столбец типа Dynamic, можно прочитать из него как подстолбец. [#68132](https://github.com/ClickHouse/ClickHouse/pull/68132) ([Pavel Kruglov](https://github.com/Avogar)).
* Выражения вида `a[b].c` поддерживаются для именованных Tuple, а также поддерживается доступ по имени из произвольных выражений, например `expr().name`. Это полезно при обработке JSON. Это закрывает [#54965](https://github.com/ClickHouse/ClickHouse/issues/54965). В предыдущих версиях выражение вида `expr().name` разбиралось как `tupleElement(expr(), name)`, и анализатор запросов искал столбец `name`, а не соответствующий элемент кортежа; в новой версии это изменено на `tupleElement(expr(), 'name')`. В большинстве случаев предыдущая версия не работала, но можно представить очень необычный сценарий, при котором это изменение могло бы привести к несовместимости: если вы хранили имена элементов кортежа в столбце или псевдониме, который назывался иначе, чем имя элемента кортежа: `SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a`. Крайне маловероятно, что вы использовали такие запросы, но мы всё же должны отметить это изменение как потенциально обратно несовместимое. [#68435](https://github.com/ClickHouse/ClickHouse/pull/68435) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Когда включена настройка `print_pretty_type_names`, она будет выводить тип данных `Tuple` в удобочитаемом виде в командах `SHOW CREATE TABLE`, функции `formatQuery`, а также в интерактивном режиме в `clickhouse-client` и `clickhouse-local`. В предыдущих версиях эта настройка применялась только к запросам `DESCRIBE` и `toTypeName`. Это закрывает [#65753](https://github.com/ClickHouse/ClickHouse/issues/65753). [#68492](https://github.com/ClickHouse/ClickHouse/pull/68492) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Изменение порядка условий фильтра в выражении `[PRE]WHERE` теперь разрешено по умолчанию. Его можно отключить, установив `allow_reorder_prewhere_conditions` в `false`. [#70657](https://github.com/ClickHouse/ClickHouse/pull/70657) ([Nikita Taranov](https://github.com/nickitat)).
* Исправлена оптимизация `optimize_functions_to_subcolumns` (ранее могла приводить к ошибке `Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String)`), за счёт сохранения типа `LowCardinality` в `mapKeys`/`mapValues`. [#70716](https://github.com/ClickHouse/ClickHouse/pull/70716) ([Azat Khuzhin](https://github.com/azat)).

<div id="new-feature">
  ## Новая возможность
</div>

* Refreshable materialized views готовы к использованию в продакшне. [#70550](https://github.com/ClickHouse/ClickHouse/pull/70550) ([Michael Kolupaev](https://github.com/al13n321)). Refreshable materialized views теперь поддерживаются в базах данных Replicated. [#60669](https://github.com/ClickHouse/ClickHouse/pull/60669) ([Michael Kolupaev](https://github.com/al13n321)).
* У функции `toStartOfInterval()` появилась новая перегрузка, которая эмулирует функцию TimescaleDB `time_bucket()`, а также функцию PostgreSQL `date_bin()`. ([#55619](https://github.com/ClickHouse/ClickHouse/issues/55619)). Она позволяет выравнивать значения даты или временной метки по кратным заданному интервалу относительно *произвольной* точки отсчёта (вместо 0000-01-01 00:00:00.000 в качестве *фиксированной* точки отсчёта). Например, `SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'));` возвращает `2023-01-01 14:44:30` — значение, кратное 1-минутным интервалам, начиная от точки отсчёта `2023-01-01 14:35:30`. [#56738](https://github.com/ClickHouse/ClickHouse/pull/56738) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Интеграция с MongoDB переработана: выполнена миграция с устаревшего Poco::MongoDB на новый драйвер mongocxx, удалена поддержка устаревшего протокола, добавлена поддержка подключения по URI, всех типов MongoDB, операторов WHERE и ORDER BY на стороне MongoDB, а также введено ограничение для выражений, не поддерживаемых MongoDB. [#63279](https://github.com/ClickHouse/ClickHouse/pull/63279) ([Kirill Nikiforov](https://github.com/allmazz)).
* Новая опция `--progress-table` в clickhouse-client выводит таблицу с метриками, которые меняются во время выполнения запроса; с опцией `--progress-table` также связана новая опция `--enable-progress-table-toggle`, которая позволяет переключать отображение таблицы прогресса нажатием управляющей клавиши (Space). [#63689](https://github.com/ClickHouse/ClickHouse/pull/63689) ([Maria Khristenko](https://github.com/mariaKhr)).
* Это позволяет предоставлять доступ к префиксам с подстановочными знаками. `GRANT SELECT ON db.table_pefix_* TO user`. [#65311](https://github.com/ClickHouse/ClickHouse/pull/65311) ([pufit](https://github.com/pufit)).
* Представлен формат JSONCompactWithProgress, в котором ClickHouse выводит каждую строку как отдельный объект JSON, разделённый символом новой строки, включая метаданные, данные, прогресс, итоги и статистику. [#66205](https://github.com/ClickHouse/ClickHouse/pull/66205) ([Alexey Korepanov](https://github.com/alexkorep)).
* Добавлен system.query\_metric\_log, содержащий историю значений памяти и метрик из таблицы system.events для отдельных запросов; данные периодически сбрасываются на диск. [#66532](https://github.com/ClickHouse/ClickHouse/pull/66532) ([Pablo Marcos](https://github.com/pamarcos)).
* Добавлена настройка `input_format_json_empty_as_default`, которая во включенном состоянии трактует пустые поля во входных JSON-данных как значения по умолчанию. Закрывает [#59339](https://github.com/ClickHouse/ClickHouse/issues/59339). [#66782](https://github.com/ClickHouse/ClickHouse/pull/66782) ([Alexis Arnaud](https://github.com/a-a-f)).
* Добавлены функции `overlay` и `overlayUTF8`, которые заменяют часть строки другой строкой. Пример: `SELECT overlay('Hello New York', 'Jersey', 11)` возвращает `Hello New Jersey`. [#66933](https://github.com/ClickHouse/ClickHouse/pull/66933) ([李扬](https://github.com/taiyang-li)).
* Добавлена новая команда: легковесное удаление в партиции `DELETE FROM [db.]table [ON CLUSTER cluster] [IN PARTITION partition_expr] WHERE expr;` \`\`\` VM-114-29-tos :) select \* from ads\_app\_poster\_ip\_source\_channel\_di\_replicated\_local;. [#67805](https://github.com/ClickHouse/ClickHouse/pull/67805) ([sunny](https://github.com/sunny19930321)).
* Реализовано сравнение значений типа данных `Interval`: теперь они приводятся к наименьшему супертипу. [#68057](https://github.com/ClickHouse/ClickHouse/pull/68057) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Добавлена настройка create\_if\_not\_exists, которая по умолчанию использует поведение IF NOT EXISTS для операторов CREATE. [#68164](https://github.com/ClickHouse/ClickHouse/pull/68164) ([Peter Nguyen](https://github.com/petern48)).
* Добавлена возможность чтения таблиц Iceberg в Azure и локально. [#68210](https://github.com/ClickHouse/ClickHouse/pull/68210) ([Daniil Ivanik](https://github.com/divanik)).
* Добавлены агрегатные функции distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes для более удобной интроспекции данных в столбцах типа JSON. [#68463](https://github.com/ClickHouse/ClickHouse/pull/68463) ([Pavel Kruglov](https://github.com/Avogar)).
* Записи кэша запросов теперь можно удалять по тегу. Например, запись кэша запросов, созданную с помощью `SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc'`, теперь можно удалить командой `SYSTEM DROP QUERY CACHE TAG 'abc'` (или, конечно, просто: `SYSTEM DROP QUERY CACHE`, что очистит весь кэш запросов). [#68477](https://github.com/ClickHouse/ClickHouse/pull/68477) ([Michał Tabaszewski](https://github.com/pinsvin00)).
* Простой запрос SELECT можно записать с неявным SELECT, чтобы включить выражения в стиле калькулятора, например `ch "1 + 2"`. Это поведение управляется новой настройкой `implicit_select`. [#68502](https://github.com/ClickHouse/ClickHouse/pull/68502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Добавлена поддержка режима --copy в clickhouse local как сокращённого способа преобразования форматов [#68503](https://github.com/ClickHouse/ClickHouse/issues/68503). [#68583](https://github.com/ClickHouse/ClickHouse/pull/68583) ([Denis Hananein](https://github.com/denis-hananein)).
* Добавлена функция `ripeMD160`, которая вычисляет криптографический хеш RIPEMD-160 от строки. Пример: `SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))` возвращает `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#68639](https://github.com/ClickHouse/ClickHouse/pull/68639) ([Dergousov Maxim](https://github.com/m7kss1)).
* Добавлен виртуальный столбец \_headers в движке таблицы URL. Закрывает [#65026](https://github.com/ClickHouse/ClickHouse/issues/65026). [#68867](https://github.com/ClickHouse/ClickHouse/pull/68867) ([flynn](https://github.com/ucasfl)).
* Добавлена таблица `system.projections` для отслеживания доступных проекций. [#68901](https://github.com/ClickHouse/ClickHouse/pull/68901) ([Jordi Villar](https://github.com/jrdi)).
* Добавлена поддержка функции `arrayUnion`. [#68989](https://github.com/ClickHouse/ClickHouse/pull/68989) ([Peter Nguyen](https://github.com/petern48)).
* Добавлена новая функция `arrayZipUnaligned` для совместимости со Spark(arrays\_zip), которая, в отличие от исходной `arrayZip`, допускает массивы разной длины. \`\`\` sql SELECT arrayZipUnaligned(\[1], \[1, 2, 3]). [#69030](https://github.com/ClickHouse/ClickHouse/pull/69030) ([李扬](https://github.com/taiyang-li)).
* Добавлена поддержка агрегатной функции `quantileExactWeightedInterpolated` — интерполированной версии `quantileExactWeighted`. У некоторых может возникнуть вопрос, зачем нужна новая `quantileExactWeightedInterpolated`, если у нас уже есть `quantileExactInterpolatedWeighted`. Дело в том, что новая функция точнее старой. Кстати, она нужна для совместимости со Spark в Apache Gluten. [#69619](https://github.com/ClickHouse/ClickHouse/pull/69619) ([李扬](https://github.com/taiyang-li)).
* Добавлена функция arrayElementOrNull. Она возвращает null, если индекс массива выходит за допустимые пределы или ключ в map не найден. [#69646](https://github.com/ClickHouse/ClickHouse/pull/69646) ([李扬](https://github.com/taiyang-li)).
* Добавлена поддержка типа Dynamic в большинстве функций за счёт их выполнения над внутренними типами в Dynamic. [#69691](https://github.com/ClickHouse/ClickHouse/pull/69691) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлен аргумент `scale` (по умолчанию: `true`) для функции `arrayAUC`, позволяющий пропустить этап нормализации (issue [#69609](https://github.com/ClickHouse/ClickHouse/issues/69609)). [#69717](https://github.com/ClickHouse/ClickHouse/pull/69717) ([gabrielmcg44](https://github.com/gabrielmcg44)).
* Функция `RIPEMD160`, вычисляющая криптографический хеш RIPEMD-160 для строки, была повторно добавлена. Пример: `SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))` возвращает `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#70087](https://github.com/ClickHouse/ClickHouse/pull/70087) ([Dergousov Maxim](https://github.com/m7kss1)).
* Добавлена возможность кэшировать читаемые файлы для движков таблиц Объектного хранилища и озер данных, используя хеш от ETag и пути к файлу в качестве ключа кэша. [#70135](https://github.com/ClickHouse/ClickHouse/pull/70135) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Добавлена поддержка чтения таблиц Iceberg в HDFS. [#70268](https://github.com/ClickHouse/ClickHouse/pull/70268) ([flynn](https://github.com/ucasfl)).
* Добавлена возможность читать/записывать тип JSON как двоичную строку в формате RowBinary с настройками `input_format_binary_read_json_as_string/output_format_binary_write_json_as_string`. [#70288](https://github.com/ClickHouse/ClickHouse/pull/70288) ([Pavel Kruglov](https://github.com/Avogar)).
* Добавлена возможность сериализовать/десериализовать JSON-столбец как один столбец типа String в формате Native. Для вывода используйте настройку `output_format_native_write_json_as_string`. Для ввода используйте версию сериализации `1` перед данными столбца. [#70312](https://github.com/ClickHouse/ClickHouse/pull/70312) ([Pavel Kruglov](https://github.com/Avogar)).
* Поддерживается стандартный CTE, `with insert`; ранее поддерживался только `insert ... with ...`. [#70593](https://github.com/ClickHouse/ClickHouse/pull/70593) ([Shichao Jin](https://github.com/jsc0218)).
