Pular para o conteúdo principal
Alterações relevantes para serviços do ClickHouse Cloud com base no lançamento v24.12.

Alterações incompatíveis com versões anteriores

  • As funções greatest e least agora ignoram valores de entrada NULL, enquanto antes retornavam NULL se um dos argumentos fosse NULL. Por exemplo, SELECT greatest(1, 2, NULL) agora retorna 2. Isso torna o comportamento compatível com o PostgreSQL. #65519 (kevinyhzou).
  • Tipos Variant/Dynamic não são mais permitidos em ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY por padrão, porque isso pode levar a resultados inesperados. #69731 (Pavel Kruglov).
  • Remove as tabelas de sistema generate_series e generateSeries. Elas foram adicionadas por engano aqui: #59390. #71091 (Alexey Milovidov).
  • Remove StorageExternalDistributed. Fecha #70600. #71176 (flynn).
  • As configurações do config do servidor (users.xml) agora também se aplicam ao cliente. Isso é útil para configurações de formato, por exemplo date_time_output_format. #71178 (Michael Kolupaev).
  • Corrige um possível erro No such file or directory causado por símbolos especiais não escapados em arquivos de subcolunas JSON. #71182 (Pavel Kruglov).
  • Os motores de tabela Kafka, NATS e RabbitMQ agora têm seus próprios grants na hierarquia SOURCES. Adicione grants a quaisquer usuários de banco de dados não padrão que criem tabelas com esses tipos de motor. #71250 (Christoph Wurm).
  • Verifica a consulta completa da mutação antes de executá-la (incluindo subconsultas). Isso evita executar acidentalmente uma consulta inválida e acumular mutações inúteis que bloqueiam mutações válidas. #71300 (Christoph Wurm).
  • Renomeia a configuração do cache do sistema de arquivos skip_download_if_exceeds_query_cache para filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit. #71578 (Kseniia Sumarokova).
  • Proíbe tipos Dynamic/Variant em funções min/max para evitar confusão. #71761 (Pavel Kruglov).
  • Remove o suporte a argumentos Enum, bem como UInt128 e UInt256, em deltaSumTimestamp. Remove também o suporte a Int8, UInt8, Int16 e UInt16 no segundo argumento (“timestamp”) de deltaSumTimestamp. #71790 (Alexey Milovidov).
  • Adiciona validação da consulta de origem quando ClickHouse é usado como origem para um Dicionário. #72548 (Alexey Katsman).

Novos recursos

  • Implementado o comando SYSTEM LOAD PRIMARY KEY para carregar os índices primários de todas as partes de uma tabela especificada, ou de todas as tabelas se nenhuma tabela for especificada. Isso será útil para benchmarks e para evitar latência adicional durante a execução de consultas. #66252 (ZAWA_ll).
  • Adicionada a instrução SYSTEM LOAD PRIMARY KEY para carregar os índices primários de todas as partes de uma tabela específica ou de todas as tabelas, se nenhuma tabela for especificada. Isso pode ser útil para benchmarking e para evitar latência extra durante a execução da consulta. #67733 (ZAWA_ll).
  • Adicionar a consulta CHECK GRANT para verificar se o usuário/role atual recebeu a concessão do privilégio específico e se a tabela/coluna correspondente existe em memória. #68885 (Unalian).
  • Adicionada sintaxe SQL para descrever o gerenciamento de carga de trabalho e de recursos. Veja a documentação. #69187 (Sergei Trifonov).
  • O formato de armazenamento de dados Iceberg oferece ao usuário amplas opções para modificar o esquema de sua tabela. Neste pull request, foi implementada a leitura de uma tabela no formato Iceberg com a ordem das colunas, os nomes das colunas e extensões simples de tipos alterados. #69445 (Daniil Ivanik).
  • Permitir que cada método de autenticação tenha sua própria data de expiração; removê-la da entidade de usuário. #70090 (Arthur Passos).
  • Enviar roles de usuário externas do originador da consulta para outros nós do cluster. Útil quando apenas o originador tem acesso ao autenticador externo (como LDAP). #70332 (Andrey Zvonov).
  • Suporte à alteração de String para JSON. Este PR também altera a serialização dos tipos JSON e Dynamic para a nova versão V2. A versão antiga V1 ainda pode ser usada ao habilitar a configuração merge_tree_use_v1_object_and_dynamic_serialization (pode ser usada durante a atualização para permitir reverter a versão sem problemas). #70442 (Pavel Kruglov).
  • Adiciona a função toUnixTimestamp64Second, que converte um DateTime64 em um valor Int64 com precisão fixa de segundos, permitindo retornar um valor negativo se a data for anterior a 00:00:00 UTC de quinta-feira, 1º de janeiro de 1970. #70597 (zhanglistar).
  • Adicionar a nova configuração enforce_index_structure_match_on_partition_manipulation para permitir o attach quando as projeções e os índices secundários da tabela de origem forem um subconjunto dos da tabela de destino. Fecha #70602. #70603 (zwy991114).
  • A saída da função cast difere da saída do Apache Spark, o que causa diferenças no projeto Gluten; veja https://github.com/apache/incubator-gluten/issues/7602 Este PR adiciona suporte ao formato de saída de texto do Spark como recurso, desativado por padrão. #70957 (zhanglistar).
  • Adicionado um novo tipo de cabeçalho para endpoints S3 para autenticação de usuário (access_header). Isso permite obter um cabeçalho de acesso com a menor prioridade, que será substituído por access_key_id de qualquer outra origem (por exemplo, um esquema de tabela ou uma coleção nomeada). #71011 (MikhailBurdukov).
  • Implementação inicial de níveis de configuração. #71145 (Raúl Marín).
  • Adiciona suporte à cláusula staleness no operador ORDER BY com WITH FILL. #71151 (Mikhail Artemenko).
  • Implementa um CAST simples de Map/Tuple/Object para o novo JSON via serialização/desserialização de uma string JSON. #71320 (Pavel Kruglov).
  • Foram adicionados aliases anyRespectNulls, firstValueRespectNulls e anyValueRespectNulls para a função de agregação any. Também foram adicionados aliases anyLastRespectNulls e lastValueRespectNulls para a função de agregação anyLast. Isso permite usar uma sintaxe mais natural, apenas com camel case, em vez de misturar camel case e underscore, por exemplo: SELECT anyLastRespectNullsStateIf em vez de anyLast_respect_nullsStateIf. #71403 (Peter Nguyen).
  • Adicionado o parâmetro de configuração date_time_utc, permitindo que a formatação de logs em JSON ofereça suporte a data e hora em UTC no formato RFC 3339/ISO8601. #71560 (Ali).
  • Adicionada uma opção para selecionar o lado do join que atuará como tabela interna (build) no plano da consulta. Isso é controlado por query_plan_join_swap_table, que pode ser definido como auto. Nesse modo, o ClickHouse tentará escolher a tabela com o menor número de linhas. #71577 (Vladimir Cherkasov).
  • Uso de memória otimizado para valores de granularidade de índice quando a granularidade é constante na parte. Foi adicionada a possibilidade de sempre selecionar granularidade constante para a parte (configuração use_const_adaptive_granularity), o que ajuda a garantir que ela esteja sempre otimizada em termos de memória. Isso ajuda, em grandes cargas de trabalho (trilhões de linhas em armazenamento compartilhado), a evitar o crescimento constante do uso de memória pelos metadados (valores de granularidade de índice) das partes de dados. #71786 (Anton Popov).
  • Implementa allowed_feature_tier como uma opção global para desativar todas as funcionalidades experimentais / beta. #71841 (Raúl Marín).
  • Adicionadas as funções de tabela iceberg[S3;HDFS;Azure]Cluster, deltaLakeCluster, hudiCluster. #72045 (Mikhail Artemenko).
  • Adicionada a sintaxe ALTER USER {ADD|MODIFY|DROP SETTING}, ALTER USER {ADD|DROP PROFILE}, e o mesmo para ALTER ROLE e ALTER PROFILE. #72050 (pufit).
  • Adicionada a função arrayPrAUC, que calcula a AUC (área sob a curva) da curva de Precisão-Revocação. #72073 (Emmanuel).
  • Adicionado cache para o índice primário das tabelas MergeTree (pode ser habilitado pela configuração da tabela use_primary_key_cache). Se o carregamento sob demanda e o cache estiverem habilitados para o índice primário, ele será carregado no cache quando necessário (semelhante ao cache de marcas), em vez de permanecer na memória indefinidamente. Adicionado pré-aquecimento do índice primário em inserts/merges/fetches de partes de dados e nas reinicializações da tabela (pode ser habilitado pela configuração prewarm_primary_key_cache). #72102 (Anton Popov).
  • Adicionada a função indexOfAssumeSorted para tipos Array. Otimiza a busca no caso de um Array ordenado em ordem não decrescente. #72517 (Eric Kurbanov).
  • Permite usar um delimitador como segundo argumento opcional da função de agregação groupConcat. #72540 (Yarik Briukhovetskyi).
  • Uma nova configuração, http_response_headers, que permite personalizar os cabeçalhos da resposta HTTP. Por exemplo, você pode fazer o navegador exibir uma imagem armazenada no banco de dados. Isso fecha #59620. #72656 (Alexey Milovidov).
  • Adicionada a função fromUnixTimestamp64Second, que converte um valor Int64 de timestamp Unix em um DateTime64. #73146 (Robert Schulze).

Melhorias de desempenho

  • Adiciona 2 novas configurações short_circuit_function_evaluation_for_nulls e short_circuit_function_evaluation_for_nulls_threshold, que permitem executar funções em colunas Nullable em modo de curto-circuito quando a proporção de valores NULL no bloco de dados excede o limite especificado. Ou seja, a função será executada apenas nas linhas com valores não nulos. Aplica-se apenas a funções que retornam NULL para linhas em que pelo menos um argumento é NULL. #60129 (李扬).
  • O uso de memória de clickhouse disks remove --recursive foi reduzido para discos de armazenamento de objetos. #67323 (Kirill).
  • Agora, as colunas dos blocos de entrada não serão mais copiadas para join_algorithm='parallel_hash' ao serem distribuídas entre threads para processamento paralelo. #67782 (Nikita Taranov).
  • Ativa a compilação JIT para mais expressões: abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*, funções de comparação (=, <, >, >=, <=) e funções lógicas (and, or). #70598 (李扬).
  • Agora, o algoritmo parallel_hash será usado (se aplicável) quando a configuração join_algorithm estiver definida como default. As duas alternativas anteriores (direct e hash) ainda serão consideradas quando parallel_hash não puder ser usado. #70788 (Nikita Taranov).
  • Algoritmo de merge Replacing otimizado para partes não sobrepostas. #70977 (Anton Popov).
  • Não listar partes desanexadas em disks readonly e write-once nas métricas e em system.detached_parts. #71086 (Alexey Milovidov).
  • Não calcule métricas assíncronas pesadas por padrão. O recurso foi introduzido em #40332, mas não faz sentido manter uma tarefa pesada em segundo plano que só é necessária para um único cliente. #71087 (Alexey Milovidov).
  • Melhora o desempenho e a precisão do intervalo de coleta de system.query_metric_log ao reduzir a região crítica. #71473 (Pablo Marcos).
  • Adiciona uma opção para extrair expressões comuns das expressões WHERE e ON, a fim de reduzir o número de tabelas hash usadas durante as junções. Pode ser habilitada com optimize_extract_common_expressions = 1. #71537 (János Benjamin Antal).
  • Permite usar índices em SELECT com LowCardinality(String). #71598 (Yarik Briukhovetskyi).
  • Durante a execução de consultas com réplicas paralelas e plano local habilitado, ignore a análise de índices de salto nos workers. O coordenador escolherá os intervalos a serem lidos pelos workers com base na análise de índices feita do seu lado (no iniciador da consulta). #72109 (Igor Nikonov).
  • Restaura a otimização da leitura de subcolunas de uma única coluna em partes Compact de https://github.com/ClickHouse/ClickHouse/pull/57631. Ela foi removida acidentalmente. #72285 (Pavel Kruglov).
  • Ordenação de colunas LowCardinality(String) mais rápida com a desvirtualização de chamadas no comparador. #72337 (Alexander Gololobov).
  • Otimize a função argMin/Max para alguns tipos de dados mais simples. #72350 (alesapin).
  • Otimize o uso de bloqueios compartilhados no rastreador de memória para reduzir a contenção de bloqueios. #72375 (Jiebin Sun).
  • Adicionada uma nova configuração, use_async_executor_for_materialized_views. Usa execução assíncrona e potencialmente multithread para a consulta da visão materializada, o que pode acelerar o processamento das visões durante o INSERT, mas também consumir mais memória. #72497 (alesapin).
  • Os valores padrão das configurações max_size_to_preallocate_for_aggregation e max_size_to_preallocate_for_joins foram aumentados ainda mais para 10^12, de modo que a otimização será aplicada em mais casos. #72555 (Nikita Taranov).
  • Melhorado o desempenho da desserialização de estados de funções de agregação (no tipo de dado AggregateFunction e em consultas distribuídas). Houve uma leve melhora no desempenho da análise do formato RowBinary. #72818 (Anton Popov).

Melhoria

  • Funções de ordem superior com arrays constantes e argumentos capturados como constantes retornarão constantes. #58400 (Alexey Milovidov).
  • Otimização de leitura em ordem com a geração de linhas virtuais, de modo que menos dados sejam lidos durante a ordenação por mesclagem, especialmente útil quando existem múltiplas partes. #62125 (Shichao Jin).
  • Os nomes das etapas do plano de consulta (EXPLAIN PLAN json=1) e dos processadores do pipeline (EXPLAIN PIPELINE compact=0,graph=1) agora têm um ID único como sufixo. Isso permite relacionar a saída do profiler dos processadores e os traces do OpenTelemetry à saída do explain. #63518 (qhsong).
  • Adicionada a opção de verificar se o objeto existe após a gravação no Azure Blob Storage; isso é controlado pela configuração check_objects_after_upload. #64847 (Smita Kulkarni).
  • Corrige a lógica de use-after-dtor em destroyElements de HashTable. #65279 (cangyin).
  • Usa o banco de dados Atomic por padrão no clickhouse-local. Resolve os itens 1 e 5 da #50647. Fecha #44817. #68024 (Alexey Milovidov).
  • O buffer de escrita precisa ser cancelado ou finalizado explicitamente. As exceções interrompem o protocolo HTTP para notificar o cliente sobre o erro. #68800 (Sema Checherinda).
  • Informar os hosts do DDLWorker em execução ao criar replica_dir e marcar as réplicas como ativas no DDLWorker. #69658 (Tuan Pham Anh).
    1. Refatore DDLQueryStatusSource: - Renomeie DDLQueryStatusSource para DistributedQueryStatusSource e torne-a uma classe base - Crie duas subclasses, DDLOnClusterQueryStatusSource e ReplicatedDatabaseQueryStatusSource, derivadas de DDLQueryStatusSource, para consultar o status das tarefas DDL de DDL On Cluster e de bancos de dados Replicated, respectivamente. 2. Adicione suporte para parar de aguardar hosts offline em `DDLOnClusterQueryStatusSource`. #69660 (Tuan Pham Anh).
  • Adicionada uma nova lógica de cancelamento: CancellationChecker verifica os timeouts de cada consulta iniciada e a interrompe assim que o timeout é atingido. #69880 (Yarik Briukhovetskyi).
  • Removida a configuração allow_experimental_join_condition, permitindo condições não equi por padrão. #69910 (Vladimir Cherkasov).
  • Ativa parallel_replicas_local_plan por padrão. A criação de um plano local completo no iniciador da consulta melhora o desempenho das réplicas paralelas com menor consumo de recursos e oferece mais oportunidades para aplicar otimizações de consulta. #70171 (Igor Nikonov).
  • Adicionada a possibilidade de configurar usuário/senha em http_handlers (para dynamic_query_handler/predefined_query_handler). #70725 (Azat Khuzhin).
  • Adiciona suporte a ALTER TABLE ... MODIFY/RESET SETTING ... para determinadas configurações no armazenamento S3Queue. #70811 (Kseniia Sumarokova).
  • Não faça chamadas à API de armazenamento de objetos ao listar diretórios, pois isso pode não ser econômico. Em vez disso, armazene a lista de nomes de arquivos na memória. As desvantagens são o aumento do tempo de carregamento inicial e da memória necessária para armazenar os nomes dos arquivos. #70823 (Julia Kartseva).
  • Adicionado o parâmetro --threads ao clickhouse-compressor, permitindo compactar dados em paralelo. #70860 (Alexey Milovidov).
  • Permite configurar o tamanho do histórico do cliente Replxx. #71014 (Jiří Kozlovský).
  • Foi adicionada uma configuração prewarm_mark_cache que habilita o carregamento de marcas no cache de marcas durante inserts, merges, fetches de partes e na inicialização da tabela. #71053 (Anton Popov).
  • Suporte a valores booleanos no leitor nativo de Parquet. #71055 (Arthur Passos).
  • Tentar novamente em caso de mais erros ao interagir com S3, como “Malformed message”. #71088 (Alexey Milovidov).
  • Redução do nível de log de algumas mensagens sobre S3. #71090 (Alexey Milovidov).
  • Passa a suportar a gravação de arquivos HDFS com espaços. #71105 (exmy).
  • system.session_log está bem bom. Isso fecha #51760. #71150 (Alexey Milovidov).
  • Corrige junções RIGHT / FULL em consultas com réplicas paralelas. Agora, junções RIGHT podem ser executadas com réplicas paralelas (a leitura da tabela da direita é distribuída). Junções FULL não podem ser paralelizadas entre nós e são executadas localmente. #71162 (Igor Nikonov).
  • Adicionadas configurações que limitam o número de tabelas replicadas, dicionários e visões. #71179 (Kirill).
  • Corrige #71227. #71286 (Arthur Passos).
  • GROUP BY/ORDER BY automático em disco com base no uso de memória do servidor/usuário. Controlado pelas configurações de consulta max_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sort. #71406 (Azat Khuzhin).
  • Adiciona os dashboards por host Overview (host) e Cloud overview (host) ao dashboard avançado. #71422 (alesapin).
  • A função translate agora também permite excluir caracteres se o argumento from contiver mais caracteres do que o argumento to. Exemplo: SELECT translate('clickhouse', 'clickhouse', 'CLICK') agora retorna CLICK. #71441 (shuai.xu).
  • Foram adicionadas as novas funções parseDateTime64, parseDateTime64OrNull e parseDateTime64OrZero. Em comparação com a função existente parseDateTime (e suas variantes), elas retornam um valor do tipo DateTime64 em vez de DateTime. #71581 (kevinyhzou).
  • Redimensionado o array index_granularity na memória para reduzir o consumo de memória da família de motores de tabela MergeTree. #71595 (alesapin).
  • Os aplicativos de linha de comando destacarão a sintaxe mesmo para várias instruções. #71622 (Alexey Milovidov).
  • Aplicativos de linha de comando retornarão códigos de saída diferentes de zero em caso de erro. Em versões anteriores, o aplicativo disks retornava zero em caso de erro, e outros aplicativos retornavam zero para os erros 256 (PARTITION_ALREADY_EXISTS) e 512 (SET_NON_GRANTED_ROLE). #71623 (Alexey Milovidov).
  • O formato Vertical (que também é ativado quando você termina sua consulta com \G) agora conta com os recursos dos formatos Pretty, como: - destacar separadores de milhar em números; - exibir uma dica de leitura numérica. #71630 (Alexey Milovidov).
  • Permite desativar o aumento do buffer de memória do cache do sistema de arquivos por meio da configuração filesystem_cache_prefer_bigger_buffer_size. #71640 (Kseniia Sumarokova).
  • Adiciona uma configuração separada background_download_max_file_segment_size para definir o tamanho máximo do segmento de arquivo em downloads em segundo plano no cache do sistema de arquivos. #71648 (Kseniia Sumarokova).
  • Altera o valor padrão de enable_http_compression de 0 para 1. Fecha #71591. #71774 (Peter Nguyen).
  • Suporte ao ALTER de Object para JSON. #71784 (Pavel Kruglov).
  • Melhoria sutil na análise do tipo JSON: se o bloco atual para o caminho JSON contiver valores de vários tipos, tente escolher o tipo mais adequado testando os tipos em uma ordem especial de melhor esforço. #71785 (Pavel Kruglov).
  • Anteriormente, ao ler de system.asynchronous_metrics, era preciso aguardar a conclusão de uma atualização concorrente. Isso pode levar muito tempo se o sistema estiver sob alta carga. Com essa alteração, os valores coletados anteriormente sempre podem ser lidos. #71798 (Alexander Gololobov).
  • Defina polling_max_timeout_ms para 10 minutos e polling_backoff_ms para 30 segundos. #71817 (Kseniia Sumarokova).
  • Consultas como ‘SELECT - FROM t LIMIT 1’ carregavam índices das partes, mesmo sem usá-los. #71866 (Alexander Gololobov).
  • Allow_reorder_prewhere_conditions é ativado por padrão com configurações de compatibilidade antigas. #71867 (Raúl Marín).
  • Não incremente o contador ILLEGAL_TYPE_OF_ARGUMENT na tabela system.errors quando a função bitmapTransform for usada e os tipos de argumento forem válidos. #71971 (Dmitry Novik).
  • Ao recuperar dados diretamente de um Dicionário usando o storage Dictionary, a função de tabela de dicionário ou um SELECT direto do próprio dicionário, agora basta ter a permissão SELECT ou a permissão dictGet para o dicionário. Isso está alinhado com tentativas anteriores de evitar contornos de ACL: https://github.com/ClickHouse/ClickHouse/pull/57362 e https://github.com/ClickHouse/ClickHouse/pull/65359. Isso também torna a última alteração retrocompatível. #72051 (Nikita Mikhaylov).
  • Na página HTML do Advanced dashboard, foi adicionado um seletor suspenso para selecionar o dashboard da tabela system.dashboards. #72081 (Sergei Trifonov).
  • Respeitar prefer_locahost_replica ao montar o plano para INSERT ... SELECT distribuído. #72190 (filimonov).
  • O problema é descrito aqui. O Azure Iceberg Writer cria arquivos de metadados do Iceberg (bem como arquivos de manifesto) que violam as especificações. Neste PR, adicionei uma tentativa de ler metadados do formato Iceberg v1 com o leitor v2 (já que eles os gravam dessa forma) e adicionei um erro para quando eles não criarem os campos correspondentes em um arquivo de manifesto. #72277 (Daniil Ivanik).
  • Promover os tipos JSON/Dynamic/Variant de recursos experimentais para beta. #72294 (Pavel Kruglov).
  • Agora é permitido CREATE MATERIALIZED VIEW com UNION [ALL] na consulta. O comportamento é o mesmo de uma visão materializada com JOIN: *apenas a primeira tabela na expressão SELECT servirá como gatilho para inserção- , e todas as demais tabelas serão ignoradas. #72347 (alesapin).
  • Acelera as inserções no MergeTree quando há um único valor de chave de partição no lote inserido. #72348 (alesapin).
  • Adiciona a nova métrica MergeTreeIndexGranularityInternalArraysTotalSize ao system.metrics. Essa métrica é necessária para identificar as instâncias com conjuntos de dados enormes suscetíveis ao problema de alto uso de memória. #72490 (Miсhael Stetsyuk).
  • Todas as grafias da palavra Null agora são reconhecidas quando a consulta usa Format Null. Antes, outras formas (por exemplo, NULL) não faziam com que exceções fossem lançadas, mas, ao mesmo tempo, o formato Null na verdade não era usado nesses casos. #72658 (Nikita Taranov).
  • Permite valores desconhecidos em Set que não estão presentes em Enum. Corrige #72662. #72686 (zhanglistar).
  • Adiciona total&#95;bytes&#95;with&#95;inactive a system.tables para contabilizar o total de bytes das partes inativas. #72690 (Kai Zhu).
  • Adiciona MergeTreeSettings a system.settings_changes. #72694 (Raúl Marín).
  • Adiciona suporte ao operador de busca em strings (por exemplo, like) para o tipo de dado Enum, corrigindo #72661. #72732 (zhanglistar).
  • Adicionado suporte ao tipo JSON na função notEmpty. #72741 (Pavel Kruglov).
  • Suporte ao parsing do erro AuthenticationRequired do GCS S3. #72753 (Vitaly Baranov).
  • Adicionado suporte ao tipo Dynamic nas funções ifNull e coalesce. #72772 (Pavel Kruglov).
  • Adicionados os eventos de perfil JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount. #72842 (Vladimir Cherkasov).
  • Suporte ao Dynamic nas funções toFloat64/touInt32/etc. #72989 (Pavel Kruglov).

Correção de bug (comportamento incorreto perceptível ao usuário em uma versão estável oficial)

  • As partes deduplicadas durante a consulta ATTACH PART não ficam mais travadas com o prefixo attaching_. #65636 (Kirill).
  • Correção do bug em que o dateTime64 perdia precisão na função IN. #67230 (Yarik Briukhovetskyi).
  • Corrige um possível erro lógico ao usar funções com IGNORE/RESPECT NULLS em ORDER BY ... WITH FILL, fechando #57609. #68234 (Vladimir Cherkasov).
  • Corrigidos erros lógicos raros em inserções assíncronas no formato Native quando o limite de memória era atingido. #68965 (Anton Popov).
  • Corrige o COMMENT em CREATE TABLE para a coluna EPHEMERAL. #70458 (Yakov Olkhovskiy).
  • Corrige erro lógico em JSONExtract com LowCardinality(Nullable). #70549 (Pavel Kruglov).
  • Corrige o comportamento quando o nome da tabela é longo demais. #70810 (Yarik Briukhovetskyi).
  • Adicionada a possibilidade de substituir Content-Type por meio de cabeçalhos do usuário no engine URL. #70859 (Artem Iurin).
  • Corrigido erro lógico em StorageS3Queue “Não é possível criar um nó persistente em /processed porque ele já existe”. #70984 (Kseniia Sumarokova).
  • Corrigido o bug que não considerava a coluna _row_exists na opção de reconstrução da exclusão leve de projeção. #71089 (Shichao Jin).
  • Corrige o valor incorreto em system.query_metric_log devido a uma condição de corrida inesperada. #71124 (Pablo Marcos).
  • Corrige o nome incorreto da função de agregação quantileExactWeightedInterpolated. O bug foi introduzido em https://github.com/ClickHouse/ClickHouse/pull/69619. cc @Algunenano. #71168 (李扬).
  • Corrige a exceção bad_weak_ptr com Dynamic na comparação entre funções. #71183 (Pavel Kruglov).
  • Não exclua um blob quando houver nós usando esse blob no ReplicatedMergeTree com replicação zero-copy. #71186 (Antonio Andelic).
  • Corrigido o problema em que as configurações de formato eram ignoradas no formato Native via HTTP e em inserts assíncronos. #71193 (Pavel Kruglov).
  • As consultas SELECT executadas com a configuração use_query_cache = 1 não são mais rejeitadas se o nome de uma tabela de sistema aparecer como literal; por exemplo, SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true; agora funciona. #71254 (Robert Schulze).
  • Corrige o bug de aumento no uso de memória quando enable&#95;filesystem&#95;cache=1, mas o disco na configuração de armazenamento não tinha nenhuma configuração de cache. #71261 (Kseniia Sumarokova).
  • Corrige o possível erro “Cannot read all data” durante a desserialização do dicionário LowCardinality de uma coluna Dynamic. #71299 (Pavel Kruglov).
  • Corrigida a limpeza incompleta do formato de saída paralelo no cliente. #71304 (Raúl Marín).
  • Adicionado o desescape ausente em named collections. Sem a correção, o clickhouse-server não consegue iniciar. #71308 (MikhailBurdukov).
  • Corrige async inserts com blocos vazios via protocolo nativo. #71312 (Anton Popov).
  • Corrige a formatação inconsistente da AST ao conceder privilégios usando curingas incorretos #71309. #71332 (pufit).
  • Verificação de tipos suspeitos e experimentais em type hints de JSON. #71369 (Pavel Kruglov).
  • Corrigido o erro Número inválido de linhas no fragmento com coluna Variant. #71388 (Pavel Kruglov).
  • Corrige travamento na função de tabela mongodb ao receber argumentos inválidos (por exemplo, NULL). #71426 (Vladimir Cherkasov).
  • Corrigido travamento com optimize_rewrite_array_exists_to_has. #71432 (Raúl Marín).
  • Corrigido o erro NoSuchKey durante o rollback da transação quando a criação de um diretório falha no disco palin_rewritable. #71439 (Julia Kartseva).
  • Corrigido o uso da configuração max_insert_delayed_streams_for_parallel_write em inserções. Antes, ela funcionava incorretamente, o que podia levar a uso elevado de memória em inserções que gravam dados em várias partições. #71474 (Anton Popov).
  • Corrige o possível erro Argument for function must be constant (analisador antigo) no caso em que arrayJoin aparentemente pode aparecer na condição WHERE. Regressão após https://github.com/ClickHouse/ClickHouse/pull/65414. #71476 (Nikolai Kochetov).
  • Evita uma falha no SortCursor com 0 colunas (analisador antigo). #71494 (Raúl Marín).
  • Corrige erro de date32 fora do intervalo causado por dados ORC não inicializados. Para mais detalhes, consulte https://github.com/apache/incubator-gluten/issues/7823. #71500 (李扬).
  • Corrige a contagem do tamanho da coluna na parte wide para os tipos Dynamic e JSON. #71526 (Pavel Kruglov).
  • Correção no Analyzer quando a consulta dentro de uma visão materializada usa IN com CTE. Fecha #65598. #71538 (Maksim Kita).
  • Retorna 0 ou o caractere padrão, em vez de gerar erro, nas funções bitShift quando o acesso estiver fora dos limites. #71580 (Pablo Marcos).
  • Corrige travamentos do servidor ao usar visão materializada com determinados motores. #71593 (Pervakov Grigorii).
  • ARRAY JOIN com uma estrutura de dados aninhada, que contém um alias para um array constante, estava causando uma desreferenciação de ponteiro nulo. Isso fecha #71677. #71678 (Alexey Milovidov).
  • Corrige LOGICAL_ERROR ao executar ALTER com tupla vazia. Isso corrige #71647. #71679 (Amos Bird).
  • Não transforme um conjunto constante em predicados nas colunas de partição ao usar o operador NOT IN. #71695 (Eduard Karacharov).
  • Corrige o CAST de LowCardinality(Nullable) para Dynamic. Antes, isso podia causar o erro Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable. #71742 (Pavel Kruglov).
  • Corrigida a exceção no toDayOfWeek em condição WHERE com chave primária do tipo DateTime64. #71849 (Yakov Olkhovskiy).
  • Corrigido o preenchimento de valores padrão após o parse para colunas esparsas. #71854 (Anton Popov).
  • Corrige o erro da função GROUPING quando a entrada é um ALIAS em uma tabela distribuída, fecha #68602. #71855 (Vladimir Cherkasov).
  • Corrigidas instruções SELECT que usam a cláusula WITH TIES e que podem não retornar um número suficiente de linhas. #71886 (wxybear).
  • Corrige uma exceção de TOO_LARGE_ARRAY_SIZE causada quando uma coluna na avaliação de arrayWithConstant é incorretamente considerada como excedendo o limite de tamanho do array. #71894 (Udi).
  • clickhouse-benchmark relatou métricas incorretas para consultas com duração superior a um segundo. #71898 (Alexey Milovidov).
  • Corrigida a condição de corrida entre o indicador de progresso e a tabela de progresso no clickhouse-client. Esse problema fica visível quando FROM INFILE é usado. Intercepta pressionamentos de tecla durante consultas INSERT para alternar a exibição da tabela de progresso. #71901 (Julia Kartseva).
  • Corrigida a serialização de valores Dynamic nos formatos JSON Pretty. #71923 (Pavel Kruglov).
  • Corrige a coluna rows_processed em system.s3/azure_queue_log, que apresentava problema na versão 24.6. Fecha #69975. #71946 (Kseniia Sumarokova).
  • Corrigido o caso em que as funções s3/s3Cluster podiam retornar um resultado incompleto ou lançar uma exceção. Isso ocorria ao usar um padrão glob na URI do S3 (como pattern/*), e era necessário que existisse um object vazio com a key pattern/ (esses objects são criados automaticamente pelo Console do S3). Além disso, o default value da configuração s3_skip_empty_files foi alterado de false para true. #71947 (Nikita Taranov).
  • Corrige um travamento no realce de sintaxe do clickhouse-client. Fecha #71864. #71949 (Nikolay Degterinsky).
  • Corrige o erro Illegal type em tabelas MergeTree com função binária monotônica em ORDER BY quando o primeiro argumento é constante. Corrige #71941. #71966 (Nikolai Kochetov).
  • Permitir apenas consultas SELECT no EXPLAIN AST usado dentro de subconsulta. Outros tipos de consultas resultam no erro lógico: ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ ou Inconsistent AST formatting. #71982 (Pavel Kruglov).
  • Ao inserir um registro com clickhouse-client, o cliente lê as descrições das colunas do servidor. Mas havia um bug em que escrevíamos as descrições na ordem errada; deveria ser [statistics, ttl, settings]. #71991 (Han Fei).
  • Corrige a formatação dos comandos ALTER MOVE PARTITION ... TO TABLE ... quando format_alter_commands_with_parentheses está habilitada. #72080 (János Benjamin Antal).
  • Adicionar o nome do formato inferido à consulta CREATE nos motores File/S3/URL/HDFS/Azure. Antes, o nome do formato era inferido sempre que o servidor era reiniciado e, se os arquivos de dados especificados fossem removidos, isso causava erros durante a inicialização do servidor. #72108 (Pavel Kruglov).
  • Corrige um bug em que min_age_to_force_merge_on_partition_only ficava preso tentando mesclar repetidamente a mesma partição, que já havia sido mesclada em uma única parte, e deixava de mesclar partições que tinham múltiplas partes. #72209 (Christoph Wurm).
  • Corrigida uma falha em SimpleSquashingChunksTransform que ocorria, em casos raros, ao processar colunas esparsas. #72226 (Vladimir Cherkasov).
  • Corrigida uma condição de corrida em GraceHashJoin, o que podia fazer com que algumas linhas ficassem ausentes na saída do join. #72233 (Nikita Taranov).
  • Corrigidas as consultas ALTER DELETE com a coluna materializada _block_number (se a configuração enable_block_number_column estiver habilitada). #72261 (Anton Popov).
  • Corrigida uma race condition de dados quando ColumnDynamic::dumpStructure() é chamado de forma concorrente, por exemplo, no construtor de ConcurrentHashJoin. #72278 (Nikita Taranov).
  • Corrige possível LOGICAL_ERROR causado por colunas duplicadas em ORDER BY ... WITH FILL. #72387 (Vladimir Cherkasov).
  • Corrigidos problemas de incompatibilidade de tipos em vários casos após aplicar optimize_functions_to_subcolumns. #72394 (Anton Popov).
  • Corrige falha ao analisar consultas BACKUP DATABASE db EXCEPT TABLES db.table. #72429 (Konstantin Bogdanov).
  • Não permitir a criação de um Variant vazio. #72454 (Pavel Kruglov).
  • Corrige a formatação incorreta de result_part_path em system.merges. #72567 (Konstantin Bogdanov).
  • Corrigido o parsing de um glob com um único elemento. #72572 (Konstantin Bogdanov).
  • Corrige a geração de consulta para o servidor seguidor em caso de consulta distribuída com ARRAY JOIN. Corrige #69276. #72608 (Dmitry Novik).
  • Corrige um bug em que DateTime64 em DateTime64 não retornava nada. #72640 (Yarik Briukhovetskyi).
  • Corrige o erro “No such key” no modo não ordenado do S3Queue quando a configuração tracked_files_limit é menor que a taxa com que os arquivos aparecem no S3. #72738 (Kseniia Sumarokova).
  • Descartar o mark cache pode levar um tempo considerável se ele for grande. Se mantivermos o mutex do contexto durante esse processo, isso bloqueará muitas outras atividades; até mesmo uma nova conexão de cliente não poderá ser estabelecida até que ele seja liberado. E, na verdade, manter esse mutex não é necessário para sincronização; basta ter uma referência local ao cache via shared ptr. #72749 (Alexander Gololobov).
  • O cache de PK estava subestimando significativamente seu tamanho em uma das instâncias de teste. Em particular, as colunas LowCardinality não incluíam o tamanho do dicionário. A correção consiste em usar column->allocatedBytes() mais algumas estimativas adicionais de overhead para o tamanho da entrada de cache. #72750 (Alexander Gololobov).
  • Corrigida a exceção lançada no RemoteQueryExecutor quando o usuário não existe localmente. #72759 (Andrey Zvonov).
  • Corrigidas as mutações com a coluna materializada _block_number (se a configuração enable_block_number_column estiver ativada). #72854 (Anton Popov).
  • Corrige o backup/restauração com disco simples e regravável caso haja arquivos vazios no backup. #72858 (Kseniia Sumarokova).
  • Cancela corretamente inserções na DistributedAsyncInsertDirectoryQueue. #72885 (Antonio Andelic).
  • Corrigida uma falha ao processar dados incorretos em colunas esparsas (pode acontecer com a configuração enable_parsing_to_custom_serialization habilitada). #72891 (Anton Popov).
  • Corrige uma possível falha durante a restauração de um backup. #72947 (Kseniia Sumarokova).
  • Corrigido um bug no método JOIN parallel_hash que poderia ocorrer quando a consulta tem uma condição complexa na cláusula ON, com filtros de desigualdade. #72993 (Nikita Taranov).
  • Use as configurações padrão de formato durante o parsing de JSON para evitar falhas na desserialização. #73043 (Pavel Kruglov).
  • Corrige travamento em transações com armazenamento sem suporte. #73045 (Raúl Marín).
  • Verificação de chaves JSON duplicadas durante o parsing de Tuple. Antes, isso podia causar o erro lógico Invalid number of rows in Chunk durante o parsing. #73082 (Pavel Kruglov).
Última modificação em 10 de junho de 2026