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

# changelog do v24.10 para Cloud

> Changelog do lançamento rápido v24.10

Alterações relevantes para os serviços do ClickHouse Cloud com base no lançamento v24.10.

<div id="backward-incompatible-change">
  ## Alteração incompatível com versões anteriores
</div>

* Agora é permitido escrever `SETTINGS` antes de `FORMAT` em uma cadeia de consultas com `UNION` quando as subconsultas estão entre parênteses. Isso fecha [#39712](https://github.com/ClickHouse/ClickHouse/issues/39712). A alteração muda o comportamento quando uma consulta tem a cláusula `SETTINGS` especificada duas vezes em sequência. A cláusula `SETTINGS` mais próxima terá preferência para a subconsulta correspondente. Nas versões anteriores, a cláusula `SETTINGS` mais externa podia ter preferência sobre a interna. [#60197](https://github.com/ClickHouse/ClickHouse/pull/60197)[#68614](https://github.com/ClickHouse/ClickHouse/pull/68614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Reimplementa o tipo Dynamic. Agora, quando o limite de tipos de dados dinâmicos é atingido, novos tipos não são convertidos em String, mas armazenados em uma estrutura de dados especial em formato binário, com o tipo de dado codificado em binário. Agora, qualquer tipo já inserido em uma coluna Dynamic pode ser lido dela como subcoluna. [#68132](https://github.com/ClickHouse/ClickHouse/pull/68132) ([Pavel Kruglov](https://github.com/Avogar)).
* Expressões como `a[b].c` agora têm suporte para tuplas nomeadas, assim como subscritos nomeados em expressões arbitrárias, por exemplo, `expr().name`. Isso é útil para processar JSON. Isso fecha [#54965](https://github.com/ClickHouse/ClickHouse/issues/54965). Nas versões anteriores, uma expressão na forma `expr().name` era analisada como `tupleElement(expr(), name)`, e o analisador de consultas procurava uma coluna `name` em vez do elemento de tupla correspondente; já na nova versão, isso foi alterado para `tupleElement(expr(), 'name')`. Na maioria dos casos, a versão anterior não funcionava, mas é possível imaginar um cenário muito incomum em que essa mudança poderia levar a incompatibilidade: se você armazenasse nomes de elementos de tupla em uma coluna ou alias com nome diferente do nome do elemento da tupla: `SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a`. É muito improvável que você tenha usado consultas assim, mas ainda assim precisamos marcar essa alteração como potencialmente incompatível com versões anteriores. [#68435](https://github.com/ClickHouse/ClickHouse/pull/68435) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Quando a configuração `print_pretty_type_names` está habilitada, ela passará a exibir o tipo de dado `Tuple` em formato Pretty nas instruções `SHOW CREATE TABLE`, na função `formatQuery` e no modo interativo em `clickhouse-client` e `clickhouse-local`. Nas versões anteriores, essa configuração era aplicada apenas a consultas `DESCRIBE` e a `toTypeName`. Isso fecha [#65753](https://github.com/ClickHouse/ClickHouse/issues/65753). [#68492](https://github.com/ClickHouse/ClickHouse/pull/68492) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* A reordenação das condições de filtro da cláusula `[PRE]WHERE` agora é permitida por padrão. Isso pode ser desabilitado definindo `allow_reorder_prewhere_conditions` como `false`. [#70657](https://github.com/ClickHouse/ClickHouse/pull/70657) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige a otimização `optimize_functions_to_subcolumns` (antes, ela podia levar ao erro `Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String)`), preservando o tipo `LowCardinality` em `mapKeys`/`mapValues`. [#70716](https://github.com/ClickHouse/ClickHouse/pull/70716) ([Azat Khuzhin](https://github.com/azat)).

<div id="new-feature">
  ## Novo recurso
</div>

* Views materializadas atualizáveis estão prontas para produção. [#70550](https://github.com/ClickHouse/ClickHouse/pull/70550) ([Michael Kolupaev](https://github.com/al13n321)). Views materializadas atualizáveis agora têm suporte em bancos de dados Replicated. [#60669](https://github.com/ClickHouse/ClickHouse/pull/60669) ([Michael Kolupaev](https://github.com/al13n321)).
* A função `toStartOfInterval()` agora tem uma nova sobrecarga que emula a função `time_bucket()` do TimescaleDB e, de forma equivalente, a função `date_bin()` do PostgreSQL. ([#55619](https://github.com/ClickHouse/ClickHouse/issues/55619)). Ela permite alinhar valores de data ou timestamp a múltiplos de um determinado intervalo a partir de uma origem *arbitrária* (em vez de usar 0000-01-01 00:00:00.000 como origem *fixa*). Por exemplo, `SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'));` retorna `2023-01-01 14:44:30`, que corresponde a um múltiplo de intervalos de 1 minuto, a partir da origem `2023-01-01 14:35:30`. [#56738](https://github.com/ClickHouse/ClickHouse/pull/56738) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Integração com MongoDB refatorada: migração para o novo driver mongocxx em substituição ao obsoleto Poco::MongoDB, remoção do suporte ao protocolo antigo obsoleto, suporte à conexão por URI, suporte a todos os tipos do MongoDB, suporte a instruções WHERE e ORDER BY no MongoDB, restrição para expressões não suportadas pelo MongoDB. [#63279](https://github.com/ClickHouse/ClickHouse/pull/63279) ([Kirill Nikiforov](https://github.com/allmazz)).
* Uma nova opção `--progress-table` no clickhouse-client exibe uma tabela com métricas que variam durante a execução da consulta; a nova opção `--enable-progress-table-toggle` está associada à opção `--progress-table` e alterna a exibição da tabela de progresso ao pressionar a tecla de controle (Espaço). [#63689](https://github.com/ClickHouse/ClickHouse/pull/63689) ([Maria Khristenko](https://github.com/mariaKhr)).
* Isso permite conceder acesso a prefixos com curinga. `GRANT SELECT ON db.table_pefix_* TO user`. [#65311](https://github.com/ClickHouse/ClickHouse/pull/65311) ([pufit](https://github.com/pufit)).
* Introduzido o formato JSONCompactWithProgress, no qual o ClickHouse retorna cada linha como um objeto JSON delimitado por quebras de linha, incluindo metadados, dados, progresso, totais e estatísticas. [#66205](https://github.com/ClickHouse/ClickHouse/pull/66205) ([Alexey Korepanov](https://github.com/alexkorep)).
* Adiciona system.query\_metric\_log, que contém o histórico de valores de memória e métricas da tabela system.events para consultas individuais, gravado periodicamente em disco. [#66532](https://github.com/ClickHouse/ClickHouse/pull/66532) ([Pablo Marcos](https://github.com/pamarcos)).
* Adiciona a configuração `input_format_json_empty_as_default`, que, quando habilitada, trata campos vazios em entradas JSON como valores padrão. Fecha [#59339](https://github.com/ClickHouse/ClickHouse/issues/59339). [#66782](https://github.com/ClickHouse/ClickHouse/pull/66782) ([Alexis Arnaud](https://github.com/a-a-f)).
* Foram adicionadas as funções `overlay` e `overlayUTF8`, que substituem partes de uma string por outra. Exemplo: `SELECT overlay('Hello New York', 'Jersey', 11)` retorna `Hello New Jersey`. [#66933](https://github.com/ClickHouse/ClickHouse/pull/66933) ([李扬](https://github.com/taiyang-li)).
* Adicionado novo comando: exclusão leve em partição `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)).
* Implementada a comparação de valores do tipo de dados `Interval`, de modo que agora eles são convertidos para o supertipo comum mínimo. [#68057](https://github.com/ClickHouse/ClickHouse/pull/68057) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Adiciona a configuração create\_if\_not\_exists para usar por padrão o comportamento IF NOT EXISTS durante instruções CREATE. [#68164](https://github.com/ClickHouse/ClickHouse/pull/68164) ([Peter Nguyen](https://github.com/petern48)).
* Permite ler tabelas Iceberg no Azure e localmente. [#68210](https://github.com/ClickHouse/ClickHouse/pull/68210) ([Daniil Ivanik](https://github.com/divanik)).
* Adicionadas as funções de agregação distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes para uma melhor introspecção do conteúdo do tipo de coluna JSON. [#68463](https://github.com/ClickHouse/ClickHouse/pull/68463) ([Pavel Kruglov](https://github.com/Avogar)).
* As entradas do cache de consultas agora podem ser removidas por tag. Por exemplo, a entrada do cache de consultas criada por `SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc'` agora pode ser removida com `SYSTEM DROP QUERY CACHE TAG 'abc'` (ou, claro, simplesmente com `SYSTEM DROP QUERY CACHE`, que limpará todo o cache de consultas). [#68477](https://github.com/ClickHouse/ClickHouse/pull/68477) ([Michał Tabaszewski](https://github.com/pinsvin00)).
* Uma consulta `SELECT` simples pode ser escrita com `SELECT` implícito para permitir expressões no estilo de calculadora, por exemplo, `ch "1 + 2"`. Isso é controlado por uma nova configuração, `implicit_select`. [#68502](https://github.com/ClickHouse/ClickHouse/pull/68502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Adicionar suporte ao modo --copy no clickhouse local como atalho para conversão de formato [#68503](https://github.com/ClickHouse/ClickHouse/issues/68503). [#68583](https://github.com/ClickHouse/ClickHouse/pull/68583) ([Denis Hananein](https://github.com/denis-hananein)).
* Adicionada a função `ripeMD160`, que calcula o hash criptográfico RIPEMD-160 de uma cadeia de caracteres. Exemplo: `SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))` retorna `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#68639](https://github.com/ClickHouse/ClickHouse/pull/68639) ([Dergousov Maxim](https://github.com/m7kss1)).
* Adiciona a coluna virtual \_headers ao mecanismo de tabela URL. Fecha [#65026](https://github.com/ClickHouse/ClickHouse/issues/65026). [#68867](https://github.com/ClickHouse/ClickHouse/pull/68867) ([flynn](https://github.com/ucasfl)).
* Adicionada a tabela `system.projections` para acompanhar as projeções disponíveis. [#68901](https://github.com/ClickHouse/ClickHouse/pull/68901) ([Jordi Villar](https://github.com/jrdi)).
* Adicionado suporte à função `arrayUnion`. [#68989](https://github.com/ClickHouse/ClickHouse/pull/68989) ([Peter Nguyen](https://github.com/petern48)).
* Adicionar a nova função `arrayZipUnaligned` para garantir compatibilidade com o Spark(arrays\_zip), permitindo arrays não alinhados com base na `arrayZip` original. \`\`\` sql SELECT arrayZipUnaligned(\[1], \[1, 2, 3]). [#69030](https://github.com/ClickHouse/ClickHouse/pull/69030) ([李扬](https://github.com/taiyang-li)).
* Suporte à função de agregação `quantileExactWeightedInterpolated`, que é uma versão interpolada baseada em `quantileExactWeighted`. Algumas pessoas podem se perguntar por que precisamos de uma nova `quantileExactWeightedInterpolated`, já que já temos `quantileExactInterpolatedWeighted`. O motivo é que a nova é mais precisa do que a antiga. Além disso, ela serve para compatibilidade com o Spark no Apache Gluten. [#69619](https://github.com/ClickHouse/ClickHouse/pull/69619) ([李扬](https://github.com/taiyang-li)).
* Suporte à função arrayElementOrNull. Ela retorna null se o índice do array estiver fora do intervalo ou se a chave do map não for encontrada. [#69646](https://github.com/ClickHouse/ClickHouse/pull/69646) ([李扬](https://github.com/taiyang-li)).
* Suporte ao tipo Dynamic na maioria das funções, executando-as sobre os tipos internos do Dynamic. [#69691](https://github.com/ClickHouse/ClickHouse/pull/69691) ([Pavel Kruglov](https://github.com/Avogar)).
* Adiciona o argumento `scale` (padrão: `true`) à função `arrayAUC`, permitindo pular a etapa de normalização (issue [#69609](https://github.com/ClickHouse/ClickHouse/issues/69609)). [#69717](https://github.com/ClickHouse/ClickHouse/pull/69717) ([gabrielmcg44](https://github.com/gabrielmcg44)).
* A função `RIPEMD160` foi adicionada novamente e calcula o hash criptográfico RIPEMD-160 de uma string. Exemplo: `SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))` retorna `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#70087](https://github.com/ClickHouse/ClickHouse/pull/70087) ([Dergousov Maxim](https://github.com/m7kss1)).
* Permite armazenar em cache os arquivos lidos para motores de tabela com armazenamento de objetos e lagos de dados, usando o hash do ETag + caminho do arquivo como chave de cache. [#70135](https://github.com/ClickHouse/ClickHouse/pull/70135) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Suporte à leitura de tabelas Iceberg no HDFS. [#70268](https://github.com/ClickHouse/ClickHouse/pull/70268) ([flynn](https://github.com/ucasfl)).
* Permitir ler/gravar o tipo JSON como string binária no formato RowBinary com as configurações `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)).
* Permite serializar/desserializar uma coluna JSON como uma única coluna String no formato Native. Na saída, use a configuração `output_format_native_write_json_as_string`. Na entrada, use a versão de serialização `1` antes dos dados da coluna. [#70312](https://github.com/ClickHouse/ClickHouse/pull/70312) ([Pavel Kruglov](https://github.com/Avogar)).
* Adiciona suporte a CTE padrão, `with insert`, já que antes havia suporte apenas a `insert ... with ...`. [#70593](https://github.com/ClickHouse/ClickHouse/pull/70593) ([Shichao Jin](https://github.com/jsc0218)).
