Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

changelog do v24.10 para Cloud

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

Alteração incompatível com versões anteriores

  • 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. 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#68614 (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 (Pavel Kruglov).
  • 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. 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 (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. #68492 (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 (Nikita Taranov).
  • 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 (Azat Khuzhin).

Novo recurso

  • Views materializadas atualizáveis estão prontas para produção. #70550 (Michael Kolupaev). Views materializadas atualizáveis agora têm suporte em bancos de dados Replicated. #60669 (Michael Kolupaev).
  • 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). 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 (Yarik Briukhovetskyi).
  • 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 (Kirill Nikiforov).
  • 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 (Maria Khristenko).
  • Isso permite conceder acesso a prefixos com curinga. GRANT SELECT ON db.table_pefix_* TO user. #65311 (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 (Alexey Korepanov).
  • 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 (Pablo Marcos).
  • 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. #66782 (Alexis Arnaud).
  • 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 (李扬).
  • 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 (sunny).
  • 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 (Yarik Briukhovetskyi).
  • Adiciona a configuração create_if_not_exists para usar por padrão o comportamento IF NOT EXISTS durante instruções CREATE. #68164 (Peter Nguyen).
  • Permite ler tabelas Iceberg no Azure e localmente. #68210 (Daniil Ivanik).
  • Adicionadas as funções de agregação distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes para uma melhor introspecção do conteúdo do tipo de coluna JSON. #68463 (Pavel Kruglov).
  • 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 (Michał Tabaszewski).
  • 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 (Alexey Milovidov).
  • Adicionar suporte ao modo –copy no clickhouse local como atalho para conversão de formato #68503. #68583 (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 (Dergousov Maxim).
  • Adiciona a coluna virtual _headers ao mecanismo de tabela URL. Fecha #65026. #68867 (flynn).
  • Adicionada a tabela system.projections para acompanhar as projeções disponíveis. #68901 (Jordi Villar).
  • Adicionado suporte à função arrayUnion. #68989 (Peter Nguyen).
  • 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 (李扬).
  • 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 (李扬).
  • 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 (李扬).
  • Suporte ao tipo Dynamic na maioria das funções, executando-as sobre os tipos internos do Dynamic. #69691 (Pavel Kruglov).
  • Adiciona o argumento scale (padrão: true) à função arrayAUC, permitindo pular a etapa de normalização (issue #69609). #69717 (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 (Dergousov Maxim).
  • 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 (Kseniia Sumarokova).
  • Suporte à leitura de tabelas Iceberg no HDFS. #70268 (flynn).
  • 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 (Pavel Kruglov).
  • 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 (Pavel Kruglov).
  • Adiciona suporte a CTE padrão, with insert, já que antes havia suporte apenas a insert ... with .... #70593 (Shichao Jin).
Navigation