Alterações incompatíveis com versões anteriores
Alterações no formato de dados e no esquema
- A configuração padrão
schema_inference_make_columns_nullablefoi alterada para respeitar as informações de nulabilidade (Nullable) das colunas nos metadados de Parquet/ORC/Arrow, em vez de tornar tudoNullable. Não há alterações para formatos de texto. #71499 (Michael Kolupaev).
Alterações em consultas e funções
- O cache de resultados de consulta agora ignora a configuração
log_comment, de modo que alterar apenas olog_commentde uma consulta não provoca mais um cache miss. Há uma pequena chance de alguns usuários terem segmentado intencionalmente o cache variando olog_comment. Essa mudança altera esse comportamento e, portanto, não é compatível com versões anteriores. Use a configuraçãoquery_cache_tagpara essa finalidade. #79878 (filimonov). - Em versões anteriores, consultas com funções de tabela com o mesmo nome das funções de implementação de operadores eram formatadas de maneira inconsistente. Fecha #81601. Fecha #81977. Fecha #82834. Fecha #82835. Consultas EXPLAIN SYNTAX não formatarão operadores — o novo comportamento reflete melhor o propósito de explicar a sintaxe.
clickhouse-format,formatQuerye similares não formatarão funções como operadores se a consulta as contiver em forma funcional. #82825 (Alexey Milovidov). - Operações binárias sem sentido com IPv4/IPv6 foram desabilitadas: soma/subtração de um IPv4/IPv6 com um tipo não inteiro. Antes, isso permitia operações com tipos de ponto flutuante e gerava erros lógicos com alguns outros tipos (como DateTime). #86336 (Raúl Marín).
- As funções
searchAnyesearchAllforam renomeadas parahasAnyTokensehasAllTokenspara maior consistência com a função existentehasToken. #88109 (Robert Schulze).
Alterações no tipo de dados
- Proibido usar o tipo Dynamic em chaves de junção. Isso pode levar a resultados inesperados quando o tipo Dynamic é comparado a um tipo que não é Dynamic. É melhor converter uma coluna Dynamic para o tipo necessário. #86358 (Pavel Kruglov).
Alterações em armazenamento e índices
- Descontinuada a configuração
allow_dynamic_metadata_for_data_lakes. Agora, todas as tabelas Iceberg tentam obter o esquema mais recente da tabela no armazenamento antes da execução de cada consulta. #86366 (Daniil Ivanik). - O índice de texto invertido foi refeito do zero para ser escalável em conjuntos de dados que não cabem na RAM. #86485 (Anton Popov).
- A configuração de servidor
storage_metadata_write_full_object_keyagora é ativada por padrão e não pode mais ser desativada. #87335 (Sema Checherinda). - Removido
cache_hits_thresholddo cache do sistema de arquivos.cache_hits_thresholdfoi adicionado antes da inclusão da política de cache SLRU, e não é necessário oferecer suporte a ambos. #88344 (Kseniia Sumarokova).
Alterações em configurações e na configuração
- Redução de
replicated_deduplication_window_secondsde 1 semana para 1 hora, para armazenar menos znodes no ZooKeeper quando a taxa de inserção é baixa. #87414 (Sema Checherinda). - Renomeação da configuração
query_plan_use_new_logical_join_stepparaquery_plan_use_logical_join_step. #87679 (Vladimir Cherkasov). - A nova sintaxe permite que o parâmetro
tokenizerseja mais expressivo. #87997 (Elmi Ahmadov). - Duas pequenas alterações em como as configurações
min_free_disk_ratio_to_perform_insertemin_free_disk_bytes_to_perform_insertfuncionam: usar bytes não reservados em vez de bytes disponíveis para determinar se um insert deve ser rejeitado. Isso provavelmente não é crucial se as reservas para background merges e mutações forem pequenas em comparação com os limites configurados, mas parece mais correto. - Não aplicar essas configurações a tabelas de sistema. A justificativa é que ainda queremos que tabelas comoquery_logcontinuem sendo atualizadas. Isso ajuda bastante na depuração. Os dados gravados em tabelas de sistema geralmente são pequenos em comparação com os dados reais, portanto elas devem conseguir continuar por muito mais tempo com um limitemin_free_disk_ratio_to_perform_insertrazoável. #88468 (c-end).
Mudanças no Keeper
- Ativa o modo assíncrono para a replicação interna do Keeper. O Keeper manterá o mesmo comportamento de antes, com possíveis melhorias de desempenho. Se você estiver atualizando de uma versão anterior à 23.9, precisará atualizar primeiro para a 23.9+ e depois para a 25.10+. Você também pode definir
keeper_server.coordination_settings.async_replicationcomo 0 antes da atualização e ativá-lo depois que ela for concluída. #88515 (Antonio Andelic).
Novos recursos
Funções
- Adicionada a função
naiveBayesClassifierpara classificar texto usando Naive Bayes com base em ngrams. #78700 (Nihal Z. Miaji). - Adicionada a função
arrayExcept, que subtrai um array de outro como um Set. #82368 (Joanna Hulboj). - Nova função
convpara converter números entre bases; atualmente oferece suporte a bases de2-36. #83058 (hp). - Adicionada a aggregate function
studentTTestOneSample. #85436 (Dylan). - Adicionada a função
isValidASCIIpara verificar se a String contém apenas caracteres ASCII. Fecha #85377. #85786 (rajat mohan). - Funções de agregação
timeSeriesChangesToGridetimeSeriesResetsToGrid. Elas se comportam de forma semelhante atimeSeriesRateToGrid, aceitando Parameters para o timestamp inicial, timestamp final, passo e window retrospectiva, além de dois Arguments para os timestamps e valores, mas exigindo pelo menos 1 sample por window em vez de 2. Calculachanges/resetsdo PromQL, contando o número de vezes que o valor da amostra muda ou diminui na window especificada para cada timestamp na grade temporal definida pelos Parameters. O return type é Array(Nullable(Float64)). #86010 (Stephen Chi). - Aggregate function
quantilePrometheusHistogram, que aceita os limites superiores e os valores cumulativos dos buckets do histograma como Arguments e realiza interpolação linear entre os limites superior e inferior do bucket em que a posição do quantile é encontrada. Ela se comporta de forma semelhante à funçãohistogram_quantile()do PromQL em histogramas clássicos. #86294 (Stephen Chi). - Adicionadas variantes otimizadas case-insensitive das funções
startsWitheendsWith:startsWithCaseInsensitive,endsWithCaseInsensitive,startsWithCaseInsensitiveUTF8eendsWithCaseInsensitiveUTF8. #87374 (Guang Zhao).
Tabelas de sistema
- Adiciona uma nova tabela de sistema
database_replicascom informações sobre réplicas de banco de dados. #83408 (Konstantin Morozov). - Adiciona uma nova tabela
system.aggregated_zookeeper_log. A tabela contém estatísticas (por exemplo, número de operações, latência média e erros) de operações do ZooKeeper agrupadas por ID da sessão, caminho pai e tipo de operação, e é periodicamente persistida em disco. #85102 (Miсhael Stetsyuk). - Adiciona a tabela de sistema
iceberg_metadata_logpara recuperar arquivos de metadados do Iceberg durante instruções SELECT. #86152 (scanhex12). - Adiciona avisos de CPU e memória à tabela
system.warnings. #86838 (Bharat Nallan). - Adiciona uma tabela de sistema para arquivos de metadados do delta lake. #87263 (scanhex12).
Motores de tabela e armazenamento
- Suporte para o motor de tabela Alias. #76569 (RinChanNOW).
- Agora você pode usar o NATS JetStream para consumir mensagens especificando as novas configurações
nats_streamenats_consumerpara o motor NATS. #84799 (Dmitry Novikov). - Tabelas Iceberg e delta lake com configuração de disk. Isso permite especificar tabelas de usuário em um disk existente. Adiciona a configuração
allowed_disks_for_table_engines, que permite usar disks específicos para o Iceberg. Exemplo:CREATE TABLE test ENGINE = Iceberg('path/inside/disk') SETTING datalake_disk_name = '<some_user_disk>';### Item de documentação para mudanças voltadas ao usuário. #86778 (scanhex12). - Adiciona uma nova configuração de tabela
min_level_for_wide_part, que permite especificar o nível mínimo para que uma part seja criada como wide. #88179 (Christoph Wurm).
Iceberg e lagos de dados
- Adicionado suporte para consultar o Apache Paimon no ClickHouse. Essa integração permitirá que os usuários do ClickHouse interajam diretamente com o armazenamento em lago de dados do Paimon. #84423 (JIaQi).
ALTER UPDATEpara o motor de tabela Iceberg. #86059 (scanhex12).
Índices e estatísticas
- Novo índice de filtro de Bloom
sparse_gram, útil para localizar substrings longas. #79985 (scanhex12). - Adicionada a capacidade de criar estatísticas automaticamente em todas as colunas adequadas de tabelas
MergeTree. Adicionada a configuração de nível de tabelaauto_statistics_types, que armazena os tipos de estatísticas a serem criadas, separados por vírgulas (por exemplo,auto_statistics_types = 'minmax, uniq, countmin'). #87241 (Anton Popov).
Funcionalidades de SQL e consultas
- Adicionado suporte à sintaxe
LIMIT BY ALL. Assim comoGROUP BY ALLeORDER BY ALL,LIMIT BY ALLé expandido automaticamente para usar todas as expressões não agregadas da cláusula SELECT como chaves de LIMIT BY. Por exemplo,SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALLé equivalente aSELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, name. Esse recurso simplifica as consultas quando você quer limitar por todas as colunas não agregadas selecionadas sem precisar listá-las explicitamente. Fecha #59152. #84079 (Surya Kant Ranjan). - Trata um nome de configuração usado isoladamente nas configurações da consulta como equivalente a
1(por exemplo,SELECT ... SETTINGS use_query_cacheé equivalente ause_query_cache = 1). #85800 (thraeka). - Permite que os usuários criem views temporárias com a mesma sintaxe das tabelas temporárias. #86432 (Aly Kafoury).
- Adiciona suporte a
LIMITnegativo eOFFSETnegativo. Fecha #28913. #88411 (Nihal Z. Miaji).
Funcionalidades do cliente e da CLI
- Acesse instâncias do ClickHouse Cloud usando credenciais do Cloud com
--login. #82753 (Krishna Mannem). - Adicionada a opção
--semicolons_inlinepara formatar consultas de modo que os pontos e vírgulas sejam colocados na última linha, em vez de em uma nova linha. #88018 (Jan Rada).
Configuração do servidor e gerenciamento de workloads
- Novas opções de configuração:
logger.startupLevelelogger.shutdownLevelpermitem sobrescrever o nível de log durante a inicialização e o desligamento do ClickHouse, respectivamente. #85967 (Lennard Eijsackers). - Adiciona uma maneira de definir
WORKLOADeRESOURCEem SQL usando a seção “resources_and_workloads” da configuração do servidor. #87430 (Sergei Trifonov).
Comandos do sistema
- Adicionado o comando
SYSTEM RECONNECT ZOOKEEPERpara forçar a desconexão e a reconexão do ZooKeeper (https://github.com/ClickHouse/ClickHouse/issues/87317). #87318 (Pradeep Chhetri). - Limitado o número de coleções nomeadas por meio das configurações
max_named_collection_num_to_warnemax_named_collection_num_to_throw. Adicionadas a nova métricaNamedCollectione o erroTOO_MANY_NAMED_COLLECTIONS. #87343 (Pablo Marcos).
Keeper
- Adicionadas variantes recursivas dos comandos
cp-cpremv-mvrno cliente do Keeper. #88570 (Mikhail Artemenko).
Recursos experimentais
- As funções
searchAllesearchAnyagora funcionam em colunas que não são de texto. Nesses casos, elas usam o tokenizer padrão. #87722 (Jimmy Aguilar Mena). - Implementado o tipo de dado
QBit, que armazena vetores em formato bit-sliced, e a funçãoL2DistanceTransposed, que permite busca vetorial aproximada, em que o equilíbrio entre precisão e velocidade é controlado por um parâmetro. #87922 (Raufs Dunamalijevs).
Melhorias de desempenho
Execução e otimização de consultas
- Melhor desempenho das consultas com a refatoração da ordem e da integração do Query Condition Cache (QCC) com a análise de índices. A filtragem do QCC agora é aplicada antes da análise da chave primária e do índice de salto, reduzindo cálculos de índice desnecessários. A análise de índices foi estendida para oferecer suporte a vários filtros de intervalo, e os resultados dessa filtragem agora são armazenados de volta no QCC. Isso acelera significativamente consultas em que a análise de índices domina o tempo de execução — especialmente as que dependem de índices de salto (por exemplo, índices vetoriais ou invertidos). #82380 (Amos Bird).
- Várias micro-otimizações para acelerar consultas pequenas. #83096 (Raúl Marín).
- Compressão de logs e eventos de perfil no protocolo nativo. Em clusters com mais de 100 réplicas, eventos de perfil não comprimidos consomem de 1 a 10 MB/s, e a barra de progresso fica lenta em conexões de internet lentas. Isso corrige #82533. #83586 (Alexey Milovidov).
- Melhoria na otimização de PREWHERE para condições como
func(primary_column) = 'xx'ecolumn in (xxx). #85529 (李扬). - Evita varredura completa em
system.tablesao filtrar poruuid(pode ser útil se você tiver apenas o UUID dos logs ou do caminho no ZooKeeper). #88379 (Azat Khuzhin).
Otimizações de JOIN
- Fornece uma lógica para fazer o pushdown de predicados disjuntivos em JOINs. Exemplo: no TPC-H Q7, para uma condição em 2 tabelas n1 e n2 como
(n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE'), extraímos filtros parciais separados para cada tabela:n1.n_name = 'FRANCE' OR n1.n_name = 'GERMANY'para n1 en2.n_name = 'GERMANY' OR n2.n_name = 'FRANCE'para n2. #84735 (Yarik Briukhovetskyi). - Implementada a reescrita de JOIN: 1. Converter
LEFT ANY JOINeRIGHT ANY JOINem JOINsSEMI/ANTIse a condição de filtro for sempre falsa para linhas correspondentes ou não correspondentes. Essa otimização é controlada pela nova configuraçãoquery_plan_convert_any_join_to_semi_or_anti_join. 2. ConverterFULL ALL JOINemLEFT ALL JOINouRIGHT ALL JOINse a condição de filtro for sempre falsa para linhas não correspondentes de um dos lados. #86028 (Dmitry Novik). - Desempenho de
HashJoinligeiramente otimizado no caso de JOINsLEFT/RIGHTcom muitas linhas sem correspondência. #86312 (Nikita Taranov). - A reordenação de JOIN agora usa estatísticas. O recurso pode ser habilitado definindo
allow_statistics_optimize = 1equery_plan_optimize_join_order_limit = 10. #86822 (Han Fei). - Ignora o recálculo, em runtime, das estatísticas da tabela hash durante a otimização de JOIN. Foram adicionados novos profile events
JoinOptimizeMicrosecondseQueryPlanOptimizeMicroseconds. #87683 (Vladimir Cherkasov). AddedColumns::appendFromBlockfoi movido inline para melhorar ligeiramente o desempenho de JOIN em alguns casos. #88455 (Nikita Taranov).
Otimizações de strings e funções
- Melhora o desempenho da busca em strings com diferenciação entre maiúsculas e minúsculas (operações como filtragem, por exemplo
WHERE URL LIKE '%google%') com o uso da biblioteca StringZilla, aproveitando instruções SIMD da CPU quando disponíveis. #84161 (Raúl Marín). - Melhora o desempenho de
LIKEcom prefixo ou sufixo usando a nova configuração padrãooptimize_rewrite_like_perfect_affix. #85920 (Guang Zhao). - Melhora o desempenho das funções
tokens,hasAllTokens,hasAnyTokens. #88416 (Anton Popov).
Otimizações de MergeTree e armazenamento
- Adiciona a serialização opcional da subcoluna
.sizepara colunas String de nível superior em tabelas MergeTree, para melhorar a compressão e permitir acesso eficiente à subcoluna. Introduz novas configurações do MergeTree para controle da versão de serialização e otimização de expressões para strings vazias. #82850 (Amos Bird). - Reduz a alocação e a cópia de memória ao executar SELECT em uma tabela AggregatingMergeTree com FINAL quando a tabela tem colunas do tipo
SimpleAggregateFunction(anyLast). #84428 (Duc Canh Le). - Melhora o desempenho das mesclagens verticais após executar uma exclusão leve. #86169 (Anton Popov).
- Melhora o desempenho de consultas rápidas com muitas partes na tabela (otimizando
MarkRangescomdevectorem vez dedeque). #86933 (Azat Khuzhin). - Melhora o desempenho da aplicação de patch parts no modo join. #87094 (Anton Popov).
- Permite salvar marcas em cache e evita E/S direta para o leitor MergeTreeLazy. #87989 (Nikita Taranov).
- A consulta SELECT com a cláusula
FINALem uma tabelaReplacingMergeTreecom a colunais_deletedagora é executada mais rapidamente devido à melhor paralelização de 2 otimizações existentes: 1) a otimizaçãodo_not_merge_across_partitions_select_finalpara partições da tabela que têm apenas uma únicapart; 2) a divisão dos outros intervalos selecionados da tabela emintersecting / non-intersecting, de modo que apenas os intervalosintersectingprecisem passar pela transformação de mesclagem FINAL. #88090 (Shankar Iyer).
Otimizações de agregação e GROUP BY
- Corrige a degradação de desempenho causada por uma chave serializada grande ao agrupar por várias colunas do tipo string/número. Fecha https://github.com/ClickHouse/ClickHouse/pull/83884#issuecomment-3187972297 cc @mkmkme . É uma continuação de https://github.com/ClickHouse/ClickHouse/pull/83884. #85924 (李扬).
- RadixSort: ajuda o compilador a usar SIMD e a CPU a fazer prefetch com mais eficiência. Usa despacho dinâmico para usar software prefetch apenas em CPUs Intel. Dá continuidade ao trabalho de @taiyang-li em https://github.com/ClickHouse/ClickHouse/pull/77029. #86378 (Raúl Marín).
Otimizações de índice e busca textual
- Melhor desempenho na criação de índice de texto para documentos que contêm principalmente tokens pouco frequentes. #87546 (Anton Popov).
Otimizações para lago de dados
Otimizações internas
- Melhorias no DB::SharedMutex. #87491 (Raúl Marín).
- Acelera o caso mais comum do destrutor de Field. #87631 (Raúl Marín).
- Reduz o impacto da não utilização de fail points. #88196 (Raúl Marín).
Melhorias
Otimização e execução de consultas
mannWhitneyUTestnão lança mais exceção quando ambas as amostras contêm apenas valores idênticos. Agora retorna um resultado válido, em conformidade com o SciPy. Isso fecha: #79814. #80009 (DeanNeaht).- Foi adicionada uma otimização experimental da ordem de join que pode reordenar automaticamente JOINs para melhorar o desempenho (controlada pela configuração
query_plan_optimize_join_order_limit). Observe que a otimização da ordem de join atualmente tem suporte limitado a estatísticas e depende principalmente de estimativas de contagem de linhas dos motores de armazenamento — uma coleta de estatísticas mais sofisticada e a estimativa de cardinalidade serão adicionadas em lançamentos futuros. Se você encontrar problemas com consultas JOIN após a atualização, poderá desativar temporariamente a nova implementação definindoSET query_plan_use_new_logical_join_step = 0e relatar o problema para investigação. Observação sobre a resolução de identificadores da cláusula USING: A resolução da coluna coalescida da cláusulaOUTER JOIN ... USINGfoi alterada para ficar mais consistente: anteriormente, ao selecionar tanto a coluna da cláusula USING quanto colunas qualificadas (a, t1.a, t2.a) em um OUTER JOIN, a coluna da cláusula USING era incorretamente resolvida comot1.a, mostrando 0/NULL para linhas da tabela da direita sem correspondência na tabela da esquerda. Agora, os identificadores da cláusula USING são sempre resolvidos para a coluna coalescida, enquanto os identificadores qualificados são resolvidos para as colunas não coalescidas, independentemente de quais outros identificadores estejam presentes na consulta. Por exemplo: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) — Antes: a=0, t1.a=0, t2.a=2 (incorreto — ‘a’ foi resolvido como t1.a) — Depois: a=2, t1.a=0, t2.a=2 (correto — ‘a’ é coalescido). #80848 (Vladimir Cherkasov). - Suporte à filtragem de partes de dados usando índices de salto durante a leitura, para reduzir leituras desnecessárias de índices. Isso é controlado pela nova configuração
use_skip_indexes_on_data_read(desabilitada por padrão). Isso corrige #75774. Isso também inclui parte da infraestrutura comum compartilhada com #81021. #81526 (Amos Bird). - A reescrita da transação de armazenamento de objetos no disk remove blobs remotos anteriores se a transação de metadados for confirmada. #81787 (Sema Checherinda).
- Torne configurável a estratégia de retentativa do S3 e permita recarregar a quente as configurações do disco S3 ao alterar o arquivo XML de configuração. #82642 (RinChanNOW).
- Corrigida a etapa de otimização para expressão de igualdade redundante quando o LowCardinality do tipo resultante difere antes e depois da otimização. #82651 (Yakov Olkhovskiy).
- Uma coluna especial pode ser usada para indicar a presença de um campo de
oneof. #82885 (Ilya Golshtein). - Agora, os usuários recebem instruções mais claras quando são especificadas configurações incorretas para o novo engine de tabela Kafka. #83701 (János Benjamin Antal).
- Quando clientes HTTP definem o cabeçalho
X-ClickHouse-100-Continue: defer, além deExpect: 100-continue, o ClickHouse não envia uma resposta100 Continueao cliente até que a validação de quota seja concluída com sucesso, evitando o desperdício de largura de banda de rede com a transmissão de corpos da requisição que acabariam sendo descartados de qualquer forma. Isso é relevante para consultas INSERT, em que a consulta pode ser enviada na URL, na string de consulta, e os dados são enviados no corpo da requisição. Interromper uma requisição sem enviar o corpo completo impede a reutilização da conexão com HTTP/1.1, mas a latência adicional introduzida pela abertura de novas conexões geralmente é insignificante em comparação com a duração total de um INSERT com grandes volumes de dados. #84304 (c-end). - Não é mais possível especificar fusos horários para o tipo Time. #84689 (Yarik Briukhovetskyi).
- O preenchimento automático no cliente ficou mais rápido e consistente com o uso de
system.completions, em vez de executar várias consultas às tabelas de sistema. #84694 (|2ustam). - Simplificada (e com alguns bugs evitados) a lógica relacionada ao parsing de Time[64] no formato
best_effort. #84730 (Yarik Briukhovetskyi). - Algumas consultas
JOINficam mais rápidas ao criar um filtro de Bloom a partir da subárvore direita em tempo de execução e passá-lo para a varredura na subárvore esquerda. Isso pode ser benéfico para consultas comoSELECT avg(o_totalprice) FROM orders, customer, nation WHERE c_custkey = o_custkey AND c_nationkey=n_nationkey AND n_name = 'FRANCE'. #84772 (Alexander Gololobov). - Você pode usar parâmetros de consulta depois de
TOao criar uma visão materializada; por exemplo:CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table. #84899 (Diskein). - Mascarar credenciais do S3 nos logs ao usar DATABASE ENGINE = Backup com armazenamento S3. #85336 (Kenny Sun).
- Atualize o jemalloc para uma versão mais recente. Aprimore o profiling de alocação com base nas ferramentas internas do jemalloc. O profiler global do jemalloc agora pode ser habilitado com a configuração
jemalloc_enable_global_profiler. Alocações e desalocações globais amostradas agora podem ser armazenadas emsystem.trace_logsob o tipoJemallocSampleao habilitar a configuraçãojemalloc_collect_global_profile_samples_in_trace_log. O profiling do jemalloc agora pode ser habilitado independentemente para cada consulta usando a configuraçãojemalloc_enable_profiler. O armazenamento de amostras emsystem.trace_logpode ser controlado por consulta usando a configuraçãojemalloc_collect_profile_samples_in_trace_log. #85438 (Antonio Andelic). - Adicionadas as funções deltaLakeAzureCluster (semelhante à deltaLakeAzure para cluster) e deltaLakeS3Cluster (alias de deltaLakeCluster). Resolve #85358. #85547 (Smita Kulkarni).
- Renomear InterpreterSystemQuery::dropReplicaImpl para InterpreterSystemQuery::dropStorageReplica - Em InterpreterSystemQuery::dropDatabaseReplica: - Ao remover com o database ou remover a réplica inteira: também remove a réplica de cada tabela do banco de dados - Se ‘WITH TABLES’ for fornecido, remover a réplica de cada armazenamento - Caso contrário, a lógica permanece inalterada, apenas chama DatabaseReplicated::dropReplica nos bancos de dados - Ao remover uma réplica de banco de dados com o caminho do Keeper: - Se ‘WITH TABLES’ for fornecido: - Restaurar o banco de dados como Atomic - Restaurar tabelas RMT a partir da instrução no Keeper - Remover o banco de dados (as tabelas restauradas também são removidas) - Caso contrário, apenas chama DatabaseReplicated::dropReplica no caminho do Keeper fornecido. #85637 (Tuan Pham Anh).
- Corrige a inconsistência na formatação do TTL quando ele contém a função
materialize. Fecha #82828. #85749 (Alexey Milovidov). - Aplicar a configuração azure_max_single_part_copy_size a operações normais de cópia, da mesma forma que para backup. #85767 (Ilya Golshtein).
- Reduz a velocidade das threads do cliente S3 em caso de erros que permitem nova tentativa no armazenamento de objetos S3. Isso estende a configuração anterior
backup_slow_all_threads_after_retryable_s3_erroraos discos S3 e a renomeia para a forma mais gerals3_slow_all_threads_after_retryable_error. #85918 (Julia Kartseva). - Marcar as configurações allow_experimental_variant/dynamic/json e enable_variant/dynamic/json como obsoletas. Agora, todos os três tipos estão habilitados incondicionalmente. #85934 (Pavel Kruglov).
- Engine de tabela S3(Azure)Queue aprimorado para permitir que sobreviva à perda de conexão com o ZooKeeper sem risco de possíveis duplicatas. Requer a ativação da configuração
use_persistent_processing_nodesdo S3Queue (alterável porALTER TABLE MODIFY SETTING). #85995 (Kseniia Sumarokova). - O estado da tabela Iceberg não é mais armazenado em um objeto de armazenamento. Isso deve permitir o uso do Iceberg no ClickHouse com consultas concorrentes. #86062 (Daniil Ivanik).
- Adicionada a configuração
query_condition_cache_selectivity_threshold(valor padrão: 1.0), que exclui da inserção no cache de condições de consulta os resultados de varredura de predicados com baixa seletividade. Isso permite reduzir o consumo de memória do cache de condições de consulta, ao custo de uma taxa de acerto de cache menor. #86076 (zhongyuankai). - Adiciona suporte à filtragem pela string completa da URL (diretiva
full_url) emhttp_handlers(incluindo esquema e host:port). #86155 (Azat Khuzhin). - Adicionada uma configuração experimental ao recurso de gravação no Delta Lake
allow_experimental_delta_lake_writes, desabilitada por padrão. #86180 (Kseniia Sumarokova). - Corrige a detecção do systemd no script init.d (corrige a checagem “Install packages”). #86187 (Azat Khuzhin).
- Adiciona uma nova métrica dimensional
startup_scripts_failure_reason. Essa métrica é necessária para diferenciar os vários tipos de erro que fazem os scripts de inicialização falharem. Em particular, para fins de alerta, precisamos distinguir entre erros transitórios (por exemplo,MEMORY_LIMIT_EXCEEDEDouKEEPER_EXCEPTION) e erros não transitórios. #86202 (Miсhael Stetsyuk). - Múltiplos arquivos de dados em gravações no Iceberg. #86275 (scanhex12).
- Mais tipos para partições em operações de gravação no Iceberg. Isso encerra #86206. #86298 (scanhex12).
- Permite omitir a função
identity()na partição de tabela Iceberg. #86314 (scanhex12). - Adicionada a possibilidade de habilitar o
loggingem JSON apenas para um canal específico; para isso, definalogger.formatting.channelcomo um entresyslog/console/errorlog/log. #86331 (Azat Khuzhin). - Adicionado limite de linhas/bytes para arquivos de dados inseridos no Delta Lake. Controlado pelas configurações
delta_lake_insert_max_rows_in_data_fileedelta_lake_insert_max_bytes_in_data_file. #86357 (Kseniia Sumarokova). - Permite o uso de números nativos em
WHERE. Eles já podem ser usados como argumentos de funções lógicas. Isso simplifica as otimizações de filter-push-down e move-to-prewhere. #86390 (Nikolai Kochetov). - Erro corrigido ao executar
SYSTEM DROP REPLICAem um catálogo com metadados corrompidos. #86391 (Nikita Mikhaylov). - Adicionadas tentativas extras para a verificação de acesso ao disco (
skip_access_check=0) no Azure, pois o provisionamento do acesso pode demorar bastante. #86419 (Alexander Tokmakov). - Renomeada a configuração
evaluation_timeparapromql_evaluation_time. #86459 (Vitaly Baranov). - Configuração para excluir arquivos ao fazer drop no Iceberg. Isso encerra #86211. #86501 (scanhex12).
- Redução do uso de memória nas gravações no Iceberg. #86544 (scanhex12).
- Tornar a função
today()não sensível a maiúsculas e minúsculas para mantê-la consistente com outras funções relacionadas a data e hora, comoNOW(). #86561 (Kaviraj Kanagaraj). - Ajusta a janela de staleness nas funções
timeSeries*()para ser aberta à esquerda e fechada à direita. #86588 (Vitaly Baranov). - Adiciona os eventos de profile
FailedInternal*Query. #86627 (Shane Andrade). - Torna o bloqueio de bucket no modo ordenado do S3Queue persistente, de forma semelhante aos nós de processamento quando
use_persistent_processing_nodes = 1. Adiciona injeção de falhas no Keeper nos testes. #86628 (Kseniia Sumarokova). - Corrige o tratamento de usuários com ponto no nome quando adicionados por meio de arquivo de configuração. #86633 (Mikhail Koviazin).
- Adicionadas métricas assíncronas de uso de memória em consultas (
QueriesMemoryUsageeQueriesPeakMemoryUsage). #86669 (Azat Khuzhin). - Você pode usar a flag
clickhouse-benchmark --precisepara ter relatórios mais precisos de QPS e outras métricas por intervalo. Isso ajuda a obter um QPS consistente quando a duração das consultas é comparável ao intervalo de relatório--delay D. #86684 (Sergei Trifonov). - Permitir configurar os valores
nicedas threads do Linux para atribuir a algumas delas (merge/mutate, consulta, visão materializada, cliente do ZooKeeper) prioridades mais altas ou mais baixas. #86703 (Miсhael Stetsyuk). - Corrige o erro enganoso “o upload especificado não existe”, que ocorre quando a exceção original se perde durante o upload multipart devido a uma condição de corrida. #86725 (Julia Kartseva).
- Limita a descrição do plano de consulta na consulta
EXPLAIN. A descrição não é calculada para consultas que não sejamEXPLAIN. Foi adicionada a configuraçãoquery_plan_max_step_description_length. #86741 (Nikolai Kochetov). - Adiciona a possibilidade de ajustar os sinais pendentes na tentativa de contornar
CANNOT_CREATE_TIMER(para os profilers de consulta,query_profiler_real_time_period_ns/query_profiler_cpu_time_period_ns). Também coletaSigQdo/proc/self/statuspara introspecção (seProcessSignalQueueSizeestiver próximo deProcessSignalQueueLimit, é provável que ocorram errosCANNOT_CREATE_TIMER). #86760 (Azat Khuzhin). - insert/select distribuídos para lagos de dados. #86783 (scanhex12).
- Melhoria no desempenho da solicitação RemoveRecursive no Keeper. #86789 (Antonio Andelic).
- Remover os espaços em branco extras em PrettyJSONEachRow na saída do tipo JSON. #86819 (Pavel Kruglov).
- Amplia a janela de desduplicação replicada para até 10000. #86820 (Sema Checherinda).
- Agora gravamos os tamanhos dos blobs para
prefix.pathquando o diretório é removido em um disco regravável simples. #86908 (alesapin). - Fazer com que a função
yesterday()não diferencie maiúsculas de minúsculas e seja consistente com a funçãotoday(). #86914 (Kaviraj Kanagaraj). - Suporte a testes de desempenho em arquivos
.xmlem instâncias remotas do ClickHouse, incluindo o ClickHouse Cloud. Exemplo de uso:tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure. #86995 (Raufs Dunamalijevs). - Respeitar os limites de memória em alguns pontos que sabidamente alocam uma quantidade significativa de memória (>16MiB) (ordenação, inserts assíncronos, log em arquivo). #87035 (Azat Khuzhin).
- Evitar que configurações não booleanas deixem de definir valor em consultas. Melhoria de #85800. #87084 (thraeka).
- Suporte a sugestões para nomes de formatos. Fecha #86761. #87092 (flynn).
- Réplicas remotas ignoram a análise de índice na ausência de projeções. #87096 (zoomxi).
- Gerar uma exceção se a configuração
network_compression_methodnão for um codec genérico suportado. #87097 (Robert Schulze). - A tabela do sistema
system.query_cacheagora retorna todas as entradas do cache de resultados de consulta, enquanto antes retornava apenas entradas compartilhadas ou entradas não compartilhadas do mesmo usuário e função. Isso não é um problema, pois entradas não compartilhadas não devem revelar resultados de consultas, enquantosystem.query_cacheretorna strings de consulta. Isso torna o comportamento da tabela do sistema mais semelhante ao desystem.query_log. #87104 (Robert Schulze). - Adicionado suporte a autenticação e SSL na função de tabela
arrowFlight(). #87120 (Vitaly Baranov). - Adiciona um novo parâmetro ao mecanismo de tabela
S3e à função de tabelas3, chamadostorage_class_name, que permite especificar o tiering inteligente suportado pela AWS. Compatível tanto com o formato chave-valor quanto com o formato posicional (descontinuado). #87122 (alesapin). - Permite desativar a codificação UTF-8 para a tabela YTsaurus. #87150 (MikhailBurdukov).
- Suporte ao Azure para disks de lago de dados. #87173 (scanhex12).
- Adiciona o novo parâmetro de índice de texto
dictionary_block_frontcoding_compressionpara controlar a compressão do dicionário. Por padrão, ele fica habilitado para usar a compressãofront-coding. #87175 (Elmi Ahmadov). - Habilitada a avaliação de curto-circuito para a função parseDateTime. #87184 (Pavel Kruglov).
- O comando
alter table ... materialize statistics allpassa a materializar todas as estatísticas de uma tabela. #87197 (Han Fei). - Desative
s3_slow_all_threads_after_retryable_errorpor padrão. #87198 (Nikita Mikhaylov). - Adiciona uma nova tabela
system.aggregated_zookeeper_log. A tabela contém estatísticas (por exemplo, número de operações, latência média, erros) de operações do ZooKeeper agrupadas por ID da sessão, caminho pai e tipo de operação, e gravadas periodicamente em disco. #87208 (Miсhael Stetsyuk). - Função de tabela
arrowflightrenomeada paraarrowFlight. #87249 (Vitaly Baranov). - Atualizado o
clickhouse-benchmarkpara aceitar o uso de-no lugar de_nas flags da CLI. #87251 (Ahmed Gouda). - Adicionada a configuração de sessão para excluir uma lista de índices de salto da materialização nas inserções (
exclude_materialize_skip_indexes_on_insert). Adicionada a configuração da tabela MergeTree para excluir uma lista de índices de salto da materialização durante a mesclagem (exclude_materialize_skip_indexes_on_merge). #87252 (George Larionov). - Torne síncrono o flush para
system.crash_logdurante o tratamento de sinais. #87253 (Miсhael Stetsyuk). - Adicionada uma nova coluna
statisticsem system.parts_columns. #87259 (Han Fei). - Adicionada a configuração
inject_random_order_for_select_without_order_by, que injetaORDER BY rand()em consultasSELECTde nível superior sem a cláusulaORDER BY. #87261 (Rui Zhang). - Suporte a outros formatos (ORC, Avro) nas gravações do Iceberg. Isso resolve #86179. #87277 (scanhex12).
- Melhora a mensagem de erro do joinGet para indicar corretamente que o número de
join_keysnão é igual ao número deright_table_keys. #87279 (Isak Ellmer). - Consolide os dados de todas as threads antes de inseri-los em visões materializadas, dependendo das configurações
min_insert_block_size_rows_for_materialized_viewsemin_insert_block_size_bytes_for_materialized_views. Antes, separallel_view_processingestivesse habilitado, cada thread que inseria em uma visão materializada específica consolidava a inserção de forma independente, o que poderia resultar em um número maior de partes geradas. #87280 (Antonio Andelic). - Este patch adiciona a possibilidade de verificar o stat de qualquer nó do Keeper durante a transação de escrita. Isso pode ajudar a detectar o problema ABA. #87282 (Mikhail Artemenko).
- Redirecionar solicitações pesadas do ytsaurus para proxies de alta carga. #87342 (MikhailBurdukov).
- Este patch corrige os rollbacks de operações
unlink/rename/removeRecursive/removeDirectory/etc., bem como a contagem de links físicos em quaisquer workloads possíveis para metadados de transações em disco, além de simplificar as interfaces para torná-las mais genéricas, de modo que possam ser reutilizadas em outros armazenamentos de metadados. #87358 (Mikhail Artemenko). - Adicionado o parâmetro de configuração
keeper_server.tcp_nodelay, que permite desativarTCP_NODELAYpara o Keeper. #87363 (Copilot). - Adicionado suporte a
--connectionemclickhouse-benchmarks. É o mesmo suporte oferecido porclickhouse-client; você pode especificar conexões predefinidas noconfig.xml/config.yamldo cliente, no caminhoconnections_credentials, para evitar informar explicitamente usuário/senha por argumentos de linha de comando. Adicionado suporte a--accept-invalid-certificateemclickhouse-benchmark. #87370 (Azat Khuzhin). - Agora, a configuração
max_insert_threadspassará a ter efeito em tabelas Iceberg. #87407 (alesapin). - Adicione histogramas e métricas dimensionais ao
PrometheusMetricsWriter. Dessa forma, oPrometheusRequestHandlerterá todas as métricas essenciais e poderá ser usado para coletar métricas na nuvem de forma confiável e com baixa sobrecarga. #87521 (Miсhael Stetsyuk). - A função
hasTokenagora retorna zero correspondências para o token vazio (antes, isso lançava uma exceção). #87564 (Jimmy Aguilar Mena). - Adicionado suporte a índice de texto para valores de
ArrayeMap(mapKeysemapValues). As funções compatíveis sãomapContainsKeyehas. #87602 (Elmi Ahmadov). - Adiciona uma nova métrica
ZooKeeperSessionExpired, que indica o número de sessões globais expiradas do ZooKeeper. #87613 (Miсhael Stetsyuk). - Use o cliente de armazenamento S3 com configurações específicas para backup (por exemplo, backup_slow_all_threads_after_retryable_s3_error) para cópia nativa no servidor em um destino de backup. Torne s3_slow_all_threads_after_retryable_error obsoleto. #87660 (Julia Kartseva).
- Corrige o tratamento incorreto das configurações
max_joined_block_size_rowsemax_joined_block_size_bytesdurante a serialização do plano de consulta com omake_distributed_planexperimental. #87675 (Vladimir Cherkasov). - A configuração
enable_http_compressionagora é o padrão. Isso significa que, se um cliente aceitar compressão HTTP, o servidor a utilizará. No entanto, essa mudança tem algumas desvantagens. O cliente pode solicitar um método de compressão mais pesado, comobzip2, o que não é razoável e aumentará o consumo de recursos do servidor (mas isso só ficará visível quando resultados grandes forem transferidos). O cliente pode solicitargzip, o que não é tão ruim, mas é menos eficiente do quezstd. Fecha #71591. #87703 (Alexey Milovidov). - Foi adicionada uma nova configuração
keeper_hostsque expõe a lista de hosts do [Zoo]Keeper aos quais o ClickHouse pode se conectar. #87718 (Nikita Mikhaylov). - Adiciona
ALTER TABLE REWRITE PARTS- reescreve as partes da tabela do zero, aplicando todas as novas configurações (já que algumas, comouse_const_adaptive_granularity, serão aplicadas apenas às novas partes). #87774 (Azat Khuzhin). - Adicione os valores
frometoaos dashboards do sistema para facilitar investigações históricas. #87823 (Mikhail f. Shiryaev). - Adicionar mais informações para monitoramento de desempenho em SELECTs do Iceberg. #87903 (Daniil Ivanik).
- Adiciona a nova configuração
joined_block_split_single_rowpara reduzir o uso de memória em hash joins com muitas correspondências por chave. Isso permite dividir os resultados do hash join em fragmentos até mesmo dentro das correspondências de uma única linha da tabela à esquerda, o que é particularmente útil quando uma linha da tabela à esquerda corresponde a milhares ou milhões de linhas da tabela à direita. Antes, todas as correspondências precisavam ser materializadas de uma só vez na memória. Isso reduz o pico de uso de memória, mas pode aumentar o uso de CPU. #87913 (Vladimir Cherkasov). - Melhoria no cache do sistema de arquivos: reutilização do iterador de prioridade do cache entre threads que reservam espaço simultaneamente no cache. #87914 (Kseniia Sumarokova).
- Adicionada a capacidade de limitar requisições ao
Keeper(configuraçãomax_request_size, igual ajute.maxbufferdoZooKeeper, DESATIVADA por padrão para manter a retrocompatibilidade; será definida nos próximos lançamentos). #87952 (Azat Khuzhin). - Correção no
clickhouse-benchmarkpara que não inclua stacktraces em mensagens de erro por padrão. #87954 (Ahmed Gouda). - Evite usar o carregamento assíncrono de marcas pelo pool de threads (
load_marks_asynchronously=1) quando as marcas estiverem em cache (pois o pool pode estar sobrecarregado, e as consultas serão penalizadas por isso mesmo que as marcas já estejam em cache). #87967 (Azat Khuzhin). - Ytsaurus: permitir criar tabelas/funções de tabela/dicionários com um subconjunto de colunas. #87982 (MikhailBurdukov).
- A partir de agora,
system.zookeeper_connection_logvem habilitado por padrão e pode ser usado para obter informações sobre as sessões do Keeper. #88011 (János Benjamin Antal). - Torne consistente o comportamento de TCP e HTTP quando tabelas externas duplicadas forem passadas. O HTTP permite que uma tabela temporária seja passada várias vezes. #88032 (Sema Checherinda).
- Remover MemoryPools personalizados para a leitura de Arrow/ORC/Parquet. Esse componente parece ser desnecessário após https://github.com/ClickHouse/ClickHouse/pull/84082, porque agora rastreamos todas as alocações de qualquer forma. #88035 (Nikita Mikhaylov).
- Permite criar o banco de dados
Replicatedsem argumentos. #88044 (Pervakov Grigorii). - Adicionado suporte para conexão à porta TLS do clickhouse-keeper, mantendo os nomes das flags iguais aos do clickhouse-client. #88065 (Pradeep Chhetri).
- Adicionado um novo evento de perfil para rastrear o número de vezes que um merge em segundo plano foi rejeitado por exceder os limites de memória. #88084 (Grant Holly).
- Adicionado o parâmetro opcional
start_valueà funçãogenerateSerialIDpara definir valores iniciais personalizados para novas sequências. #88085 (Manuel). - Habilita o analisador para validar expressões padrão de colunas em CREATE/ALTER TABLE. #88087 (Max Justus Spransy).
- Melhoria no planejamento interno de consultas: usar JoinStepLogical para
CROSS JOIN. #88151 (Vladimir Cherkasov). - Suporte total ao operador
IS NOT DISTINCT FROM(<=>). #88155 (simonmichal). - Ativa o profiler global de sampling por padrão: coleta stacktraces de todas as threads a cada 10 segundos de CPU e de tempo de relógio. #88209 (Alexander Tokmakov).
- Corrigido o suporte a operações
EXCHANGE TABLESem tabelas com o engineAlias. O engine agora armazena a tabela de destino como nomes de banco de dados e de tabela, em vez de um ID de armazenamento constante, o que permite resolver corretamente o destino após trocas de tabelas. #88233 (Kai Zhu). - Adicionada a configuração
temporary_files_buffer_sizepara controlar o tamanho do buffer dos gravadores de arquivos temporários. * Otimizado o consumo de memória da operaçãoscatter(usada, por exemplo, emgrace hash join) para colunasLowCardinality. #88237 (Vladimir Cherkasov). - Adicionado suporte à leitura direta de índices de texto com réplicas paralelas. Melhorado o desempenho da leitura de índices de texto no armazenamento de objetos. #88262 (Anton Popov).
- Agora, a função
generateSerialIDoferece suporte a um argumento não constante com o nome da série. Corrige #83750. #88270 (Alexey Milovidov). - Banco de dados de catálogos de data lakes para processamento distribuído. #88273 (scanhex12).
- Atualize o SDK do Azure para incluir a correção de ‘Content-Length’ observada nas operações de cópia e criação de contêineres. #88278 (Smita Kulkarni).
- Tornar a função lag sem diferenciar maiúsculas de minúsculas, para compatibilidade com o MySQL. #88322 (Lonny Kapelushnik).
- Adicionada a config
keeper_server.coordination_settings.check_node_acl_on_remove. Se estiver ativada, antes de cada remoção de um nó, as ACLs tanto do próprio nó quanto do nó pai serão verificadas. Caso contrário, somente a ACL do nó pai será verificada. #88513 (Antonio Andelic). - As colunas
JSONagora são exibidas com formatação legível ao usar o formatoVertical. Fecha #81794. #88524 (Frank Rosner). - Armazene os arquivos do
clickhouse-client(por exemplo, o histórico de consultas) nos locais descritos pela especificação XDG Base Directories, em vez da raiz do diretório pessoal.~/.clickhouse-client-historyainda será usado se já existir. #88538 (Konstantin Bogdanov). - Corrige um vazamento de memória causado por
GLOBAL IN(https://github.com/ClickHouse/ClickHouse/issues/88615). #88617 (pranav mehta). - Adicionada sobrecarga a hasAny/hasAllTokens para aceitar uma string como entrada. #88679 (George Larionov).
- Após este patch, a heurística
to_remove_small_parts_at_rightserá executada antes do cálculo da pontuação do intervalo de merge. Antes, o seletor de merge escolhia o merge wide e depois filtrava seu sufixo. Corrige: #85374. #88736 (Mikhail Artemenko). - Adicionada uma etapa ao script de pós-instalação do
clickhouse-keeperpara permitir que ele seja iniciado na inicialização do sistema. #88746 (YenchangChan). - Verificar as credenciais na interface web apenas ao colar, em vez de verificar a cada tecla digitada. Isso evita um problema com servidores LDAP configurados incorretamente. Isso fecha #85777. #88769 (Alexey Milovidov).
- Limita o tamanho da mensagem de exceção quando uma restrição é violada. Em versões anteriores, você podia receber uma mensagem de exceção muito longa quando uma string muito longa era inserida, e ela acabava sendo registrada no query_log. Fecha #87032. #88801 (Alexey Milovidov).
Correção de bug (comportamento incorreto perceptível ao usuário em uma versão estável oficial)
- Os resultados das consultas ALTER são validados apenas no nó iniciador para bancos de dados replicados e tabelas com replicação interna. Isso corrige situações em que uma consulta ALTER já confirmada poderia ficar travada em outros nós. #83849 (János Benjamin Antal).
- Limita o número de tarefas de cada tipo em
BackgroundSchedulePool. Evita situações em que todos os slots são ocupados por tarefas de um único tipo, enquanto outras ficam sem recursos. Também evita deadlocks quando as tarefas ficam esperando umas pelas outras. Isso é controlado pela configuração no servidorbackground_schedule_pool_max_parallel_tasks_per_type_ratio. #84008 (Alexander Tokmakov). - Corrigido o GeoParquet, que causava erros de protocolo no cliente. #84020 (Michael Kolupaev).
- Correção na resolução de funções dependentes do host, como shardNum(), em subconsultas no nó iniciador. #84409 (Eduard Karacharov).
- Desligue corretamente as tabelas ao recuperar a réplica do banco de dados. Um desligamento inadequado causaria LOGICAL_ERROR em alguns motores de tabela durante a recuperação da réplica do banco de dados. #84744 (Antonio Andelic).
- Verificar as permissões de acesso ao gerar sugestões de correção de erros de digitação para o nome do banco de dados. #85371 (Dmitry Novik).
- Corrigido o tratamento incorreto de datas anteriores ao
epochcom frações de segundo em várias funções relacionadas a data e hora, comoparseDateTime64BestEffort,change{Year,Month,Day}emakeDateTime64. Antes, a parte fracionária dos segundos era subtraída dos segundos, em vez de ser adicionada. Por exemplo,parseDateTime64BestEffort('1969-01-01 00:00:00.468')retornava1968-12-31 23:59:59.532em vez de1969-01-01 00:00:00.468. #85396 (xiaohuanlin). -
- LowCardinality para colunas do Hive 2. Preenche colunas do Hive antes das colunas virtuais (necessário para https://github.com/ClickHouse/ClickHouse/pull/81040) 3. LOGICAL_ERROR com formato vazio para Hive #85528 4. Corrige a verificação quando as colunas de partição do Hive são as únicas colunas 5. Garante que todas as colunas do Hive sejam especificadas no esquema 6. Correção parcial para parallel_replicas_cluster com Hive 7. Usa um contêiner ordenado em extractkeyValuePairs nos utilitários do Hive (necessário para https://github.com/ClickHouse/ClickHouse/pull/81040). #85538 (Arthur Passos).
- Evita a otimização desnecessária do primeiro argumento das funções
IN, que às vezes resultava em erro quando o mapeamento de array era usado. #85546 (Yakov Olkhovskiy). - O mapeamento entre os IDs de origem do Iceberg e os nomes no Parquet não foi ajustado ao schema quando o arquivo Parquet foi gravado. Este PR processa o schema relevante para cada arquivo de dados do Iceberg, e não o schema atual. #85829 (Daniil Ivanik).
- Corrige a leitura do tamanho do arquivo separadamente da abertura dele. Está relacionado a https://github.com/ClickHouse/ClickHouse/pull/33372, que foi introduzido em resposta a um bug em kernels do Linux anteriores ao lançamento da versão
5.10. #85837 (Konstantin Bogdanov). - O ClickHouse Keeper não deixa mais de iniciar em sistemas em que o IPv6 está desabilitado no nível do kernel (por exemplo, RHEL com ipv6.disable=1). Agora, ele tenta usar um listener IPv4 como alternativa se o listener IPv6 inicial falhar. #85901 (jskong1124).
- Este PR fecha #77990. Adiciona suporte a TableFunctionRemote para réplicas paralelas em globalJoin. #85929 (zoomxi).
- Corrige um ponteiro nulo em
OrcSchemaReader::initializeIfNeeded(). Este PR corrige o seguinte problema: #85292. #85951 (yanglongwei). - Adiciona uma verificação para permitir subconsultas correlacionadas na cláusula FROM apenas quando usarem colunas da consulta externa. Corrige #85469. Corrige #85402. #85966 (Dmitry Novik).
- Corrige a atualização via ALTER de uma coluna com uma subcoluna usada na expressão materializada de outra coluna. Anteriormente, uma coluna materializada com uma subcoluna em sua expressão não era atualizada corretamente. #85985 (Pavel Kruglov).
- Impedir a alteração de colunas cujas subcolunas são usadas na PK ou na expressão de partição. #86005 (Pavel Kruglov).
- Corrige a falha de comandos ALTER COLUMN IF EXISTS quando o estado da coluna muda na mesma instrução ALTER. Comandos como DROP COLUMN IF EXISTS, MODIFY COLUMN IF EXISTS, COMMENT COLUMN IF EXISTS e RENAME COLUMN IF EXISTS agora tratam corretamente os casos em que uma coluna é excluída por um comando anterior na mesma instrução. #86046 (xiaohuanlin).
- Corrigida a leitura de subcolunas com modo de mapeamento de colunas não padrão no armazenamento DeltaLake. #86064 (Kseniia Sumarokova).
- Corrigido o uso de valores padrão incorretos para o caminho com dica de Enum dentro do JSON. #86065 (Pavel Kruglov).
- Análise da URL do catálogo Hive do DataLake com sanitização de entrada. Fecha #86018. #86092 (rajat mohan).
- Corrige um erro lógico no redimensionamento dinâmico do cache do sistema de arquivos. Fecha #86122. Fecha https://github.com/ClickHouse/clickhouse-core-incidents/issues/473. #86130 (Kseniia Sumarokova).
- Use
NonZeroUInt64paralogs_to_keepem DatabaseReplicatedSettings. #86142 (Tuan Pham Anh). - Uma exceção era gerada por uma consulta
FINALcom skip index se a tabela (por exemplo,ReplacingMergeTree) tivesse sido criada com a configuraçãoindex_granularity_bytes = 0. Essa exceção já foi corrigida. #86147 (Shankar Iyer). - Remove comportamento indefinido (UB) e corrige problemas na análise da expressão de partição do Iceberg. #86166 (Daniil Ivanik).
- Corrigida a inferência de Date/DateTime/DateTime64 para datas fora do intervalo suportado. #86184 (Pavel Kruglov).
- Corrige falha no caso de blocos constantes e não constantes em um INSERT. #86230 (Azat Khuzhin).
- Processa includes de
/etc/metrika.xmlpor padrão ao criar disks a partir de SQL. #86232 (alekar). - Corrigida a accurateCastOrNull/accurateCastOrDefault de String para JSON. #86240 (Pavel Kruglov).
- Suporte para diretórios sem ’/’ no engine Iceberg. #86249 (scanhex12).
- Corrige falha com replaceRegex, com um haystack do tipo FixedString e uma needle vazia. #86270 (Raúl Marín).
- Corrige falha durante ALTER UPDATE Nullable(JSON). #86281 (Pavel Kruglov).
- Corrige a ausência do definidor da coluna em system.tables. #86295 (Raúl Marín).
- Corrige a conversão CAST de LowCardinality(Nullable(T)) para Dynamic. #86365 (Pavel Kruglov).
- Corrige um erro lógico durante gravações no DeltaLake. Fecha #86175. #86367 (Kseniia Sumarokova).
- Corrige
416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resourceao ler blobs vazios do Azure Blob Storage no disco plain_rewritable. #86400 (Julia Kartseva). - Corrige GROUP BY Nullable(JSON). #86410 (Pavel Kruglov).
- Corrigido um bug em visões materializadas: uma MV poderia não funcionar se fosse criada, removida e depois criada novamente com o mesmo nome. #86413 (Alexander Tokmakov).
- Falhar caso todas as réplicas estejam indisponíveis ao ler de funções *cluster. #86414 (Julian Maicher).
- Corrige o vazamento de
MergesMutationsMemoryTrackingcausado por tabelasBuffere corrigequery_views_logpara streaming deKafka(e outros). #86422 (Azat Khuzhin). - Corrige o SHOW TABLES após remover a tabela de referência do storage alias. #86433 (RinChanNOW).
- Corrige o cabeçalho de fragmento ausente quando send_chunk_header está habilitado e a UDF é invocada via protocolo HTTP. #86469 (Vladimir Cherkasov).
- Corrige um possível deadlock quando os
flushesde perfil do jemalloc estão habilitados. #86473 (Azat Khuzhin). - Corrige a leitura de subcolunas no engine de tabela DeltaLake. Fecha #86204. #86477 (Kseniia Sumarokova).
- Tratamento correto do ID de host de loopback para evitar colisões no processamento de tarefas DDL:. #86479 (Tuan Pham Anh).
- Correção na operação de desanexar/anexar tabelas do mecanismo de banco de dados PostgreSQL com colunas numéricas/decimais. #86480 (Julian Maicher).
- Correção do uso de memória não inicializada em getSubcolumnType. #86498 (Raúl Marín).
- As funções
searchAnyesearchAll, quando chamadas com subcadeias de busca vazias, agora retornamtrue(ou seja, “corresponde a tudo”). Anteriormente, retornavamfalse. (issue #86300). #86500 (Elmi Ahmadov). - Corrigida a função
timeSeriesResampleToGridWithStaleness()quando o primeiro bucket não tem valor. #86507 (Vitaly Baranov). - Corrigido o travamento causado pela configuração de
merge_tree_min_read_task_sizecomo 0. #86527 (yanglongwei). - Durante a leitura, o formato de cada arquivo de dados passa a ser obtido dos metadados do Iceberg (antes, era obtido dos argumentos da tabela). #86529 (Daniil Ivanik).
- Corrige uma falha em que alguns dados válidos enviados pelo usuário para uma coluna
AggregateFunction(quantileDD)podiam fazer com que as operações de merge entrassem em recursão infinita. #86560 (Raphaël Thériault). - Corrigido o engine de banco de dados Backup que gerava exceção em consulta com arquivos de partes de tamanho zero. #86563 (Max Justus Spransy).
- Corrigida a ausência do cabeçalho do fragmento quando
send_chunk_headerestá ativado e a UDF é invocada pelo protocolo HTTP. #86606 (Vladimir Cherkasov). - Corrige o erro lógico do S3Queue “Expected current processor to be equal to ”, causado pela expiração da sessão do Keeper. #86615 (Kseniia Sumarokova).
- Problemas de nulabilidade em
inserte poda. Isso fecha #86407. #86630 (scanhex12). - Não desative o cache do sistema de arquivos se o cache de metadados do Iceberg estiver desativado. #86635 (Daniil Ivanik).
- Corrigido o erro ‘Deadlock in Parquet::ReadManager (single-threaded)’ no Parquet reader v3. #86644 (Michael Kolupaev).
- Correção do suporte a IPv6 em
listen_hostno ArrowFlight. #86664 (Vitaly Baranov). - Corrige o desligamento no handler
ArrowFlight. Este PR corrige #86596. #86665 (Vitaly Baranov). - Correção de consultas distribuídas com
describe_compact_output=1. #86676 (Azat Khuzhin). - Corrige o parsing da definição de janela e a aplicação de parâmetros de consulta. #86720 (Azat Khuzhin).
- Corrige a exceção
Partition strategy wildcard can not be used without a '_partition_id' wildcard.ao criar uma tabela comPARTITION BY, mas sem o curinga de partição, algo que funcionava em versões anteriores à 25.8. Fecha https://github.com/ClickHouse/clickhouse-private/issues/37567. #86748 (Kseniia Sumarokova). - Corrigido o LogicalError quando consultas paralelas tentam adquirir o mesmo bloqueio. #86751 (Pervakov Grigorii).
- Corrige a gravação de NULL nos dados compartilhados de JSON no formato de entrada RowBinary e adiciona algumas validações extras em ColumnObject. #86812 (Pavel Kruglov).
- Suporte aos tipos JSON/Dynamic em tabelas criadas com a função de tabela
cluster. #86821 (Pavel Kruglov). - Corrigida a permutação vazia de Tuple com limit. #86828 (Pavel Kruglov).
- Não use um nó Keeper separado para nós persistentes de processamento. Correção para https://github.com/ClickHouse/ClickHouse/pull/85995. Fecha #86406. #86841 (Kseniia Sumarokova).
- Corrigido o problema em uma tabela do mecanismo TimeSeries que impedia a criação de uma nova réplica em um banco de dados Replicated. #86845 (Nikolay Degterinsky).
- Corrige a consulta a
system.distributed_ddl_queuenos casos em que faltam determinados nós do Keeper em algumas tarefas. #86848 (Antonio Andelic). - Correção do seek no final do bloco descomprimido. #86906 (Pavel Kruglov).
- Processar a exceção lançada durante a execução assíncrona do iterador do Iceberg. #86932 (Daniil Ivanik).
- Corrigido o salvamento de grandes configurações XML pré-processadas. #86934 (c-end).
- Corrigido o preenchimento do campo date na tabela system.iceberg_metadata_log. #86961 (Daniil Ivanik).
- Corrigido o recálculo infinito de
TTLcomWHERE. #86965 (Anton Popov). - Corrige o resultado não determinístico da função calculada na CTE na consulta. #86967 (Yakov Olkhovskiy).
- Corrigido LOGICAL_ERROR no EXPLAIN com pointInPolygon em colunas de chave primária. #86971 (Michael Kolupaev).
- Corrigido um possível erro no resultado da função
uniqExactcom os modificadoresROLLUPeCUBE. #87014 (Nikita Taranov). - Corrige tabelas de lago de dados com uma sequência codificada em percentual no nome. Fecha #86626. #87020 (Anton Ivashkin).
- Corrigida a resolução do esquema da tabela com a função de tabela
url()quando a configuraçãoparallel_replicas_for_cluster_functionsestá definida como 1. #87029 (Konstantin Bogdanov). - Fazer o cast correto da saída de PREWHERE após dividi-la em várias etapas. #87040 (Antonio Andelic).
- Corrigido o problema com atualizações leves usando a cláusula
ON CLUSTER. #87043 (Anton Popov). - Corrigida a compatibilidade dos estados de algumas funções de agregação com o argumento String. #87049 (Pavel Kruglov).
- Corrige o comportamento incorreto de
IS NULLem colunas Nullable noOUTER JOINcomoptimize_functions_to_subcolumns, fechando #78625. #87058 (Vladimir Cherkasov). - Corrige um problema em que o nome do modelo da OpenAI não estava sendo propagado. #87100 (Kaushik Iska).
- EmbeddedRocksDB: O caminho deve ficar dentro de user_files. #87109 (Raúl Marín).
- Corrige tabelas KeeperMap criadas antes da versão 25.1, que deixavam dados no ZooKeeper após a consulta DROP. #87112 (Nikolay Degterinsky).
- Corrigida a leitura dos IDs de campos de
mapsearraysno Parquet. #87136 (scanhex12). - Corrigida a leitura de Array com a subcoluna de tamanhos do array na materialização tardia. #87139 (Pavel Kruglov).
- Corrigida a contabilização incorreta das desalocações de dados temporários no controle do limite
max_temporary_data_on_disk_size, corrigindo #87118. #87140 (JIaQi). - A função checkHeaders agora valida corretamente os cabeçalhos fornecidos e rejeita cabeçalhos proibidos. Autor original: Michael Anastasakis (@michael-anastasakis). #87172 (Raúl Marín).
- Torna o comportamento de
toDateetoDate32uniforme para todos os tipos numéricos. Corrige a verificação de underflow de Date32 durante a conversão a partir de int16. #87176 (Pervakov Grigorii). - Corrigida a função CASE com argumentos Dynamic. #87177 (Pavel Kruglov).
- Corrige um erro lógico em réplicas paralelas para consultas com várias junções, especialmente com RIGHT JOIN após LEFT/INNER JOIN. #87178 (Igor Nikonov).
- Passa a respeitar a configuração
input_format_try_infer_variantsno cache de inferência de esquema. #87180 (Pavel Kruglov). - Faça com que pathStartsWith corresponda apenas a caminhos dentro do prefixo. #87181 (Raúl Marín).
- Correção da leitura de array vazio a partir de string vazia em CSV. #87182 (Pavel Kruglov).
- Corrige um possível resultado incorreto de
EXISTSnão correlacionado. Isso apresentava falha comexecute_exists_as_scalar_subquery=1, introduzido em https://github.com/ClickHouse/ClickHouse/pull/85481, e afeta a25.8. Corrige #86415. #87207 (Nikolai Kochetov). - Corrigidos erros lógicos na coluna virtual
_row_numbere nas exclusões posicionadas do Iceberg. #87220 (Michael Kolupaev). - Corrigido o
LOGICAL_ERROR“Too large size passed to allocator” emJOINdevido à mistura de blocos const e não const. #87231 (Azat Khuzhin). - Lança um erro se iceberg_metadata_log não estiver configurado, mas o usuário tentar obter informações de depuração sobre metadados do Iceberg. Corrige o acesso a nullptr. #87250 (Daniil Ivanik).
- Corrigidas atualizações leves com subconsultas que leem de outras tabelas
MergeTree. #87285 (Anton Popov). - Corrigida a otimização move-to-prewhere, que não funcionava quando havia uma política de linha. Continuação de #85118. Fecha #69777. Fecha #83748. #87303 (Nikolai Kochetov).
- Corrigida a aplicação de patches em colunas com expressão padrão ausentes nas partes de dados. #87347 (Anton Popov).
- Corrigida a atualização do EmbeddedRocksDB. #87392 (Raúl Marín).
- Corrigida a leitura direta a partir do índice de texto em armazenamento de objetos. #87399 (Anton Popov).
- Evitar a criação de privilégio com
engineinexistente. #87419 (Jitendra). - Ignorar apenas erros de “não encontrado” para
s3_plain_rewritable(o que pode levar a todo tipo de problema). #87426 (Azat Khuzhin). - Corrige dicionários com origem YTSaurus e layouts *range_hashed. #87490 (MikhailBurdukov).
- Corrigida a criação de um array de tuplas vazias. #87520 (Pavel Kruglov).
- Verificação de colunas inválidas durante a criação de tabela temporária. #87524 (Pavel Kruglov).
- Nunca inclua as colunas de partição do Hive no cabeçalho do formato. Corrige #87515. #87528 (Arthur Passos).
- Corrige a preparação da leitura no formato DeltaLake quando um formato de texto é usado. #87529 (Pavel Kruglov).
- Corrige a validação de acesso em operações de select e insert para tabelas Buffer. #87545 (pufit).
- Não permitir a criação de índice de data skipping em tabela S3. #87554 (Bharat Nallan).
- Evita o vazamento de memória rastreada no logging assíncrono (pode haver um desvio significativo em 10 horas, ~100GiB) e no text_log (é possível haver quase o mesmo desvio). #87584 (Azat Khuzhin).
- Corrigido um bug que poderia fazer com que as configurações globais do servidor fossem sobrescritas pelas configurações de SELECT de uma view ou visão materializada, caso essa view fosse removida de forma assíncrona e o servidor fosse reiniciado antes do término da limpeza em segundo plano. #87603 (Alexander Tokmakov).
- Excluir os bytes do userspace page cache (se possível) ao calcular o alerta de sobrecarga de memória. #87610 (Bharat Nallan).
- Corrigido um bug em que a ordem incorreta dos tipos durante a desserialização de CSV levava a
LOGICAL_ERROR. #87622 (Yarik Briukhovetskyi). - Corrigido o tratamento incorreto de
command_read_timeoutem dicionários executáveis. #87627 (Azat Khuzhin). - Corrigido o comportamento incorreto de SELECT * REPLACE na cláusula WHERE ao usar o novo analisador para filtrar colunas substituídas. #87630 (xiaohuanlin).
- Corrigida a agregação em dois níveis ao usar
MergesobreDistributed. #87687 (c-end). - Corrige a geração do bloco de saída no algoritmo HashJoin quando a lista de linhas da tabela da direita não é usada. Corrige #87401. #87699 (Dmitry Novik).
- O modo de leitura com réplicas paralelas podia ser selecionado incorretamente se não houvesse dados para ler após a análise de índice. Fecha #87653. #87700 (zoomxi).
- Corrigido o tratamento de colunas
timestamp/timestamptzno Glue. #87733 (Andrey Zvonov). - Isso fecha #86587. #87761 (scanhex12).
- Corrigida a gravação de valores booleanos na interface PostgreSQL. #87762 (Artem Yurov).
- Corrige o erro de tabela desconhecida em consulta INSERT SELECT com CTE, #85368. #87789 (Guang Zhao).
- Corrigida a leitura da subcoluna nula de map em Variants, que não podem estar dentro de Nullable. #87798 (Pavel Kruglov).
- Corrigido o tratamento de erro em caso de falha ao remover completamente o banco de dados do cluster no nó secundário. #87802 (Tuan Pham Anh).
- Corrige vários bugs nos índices de salto. #87817 (Raúl Marín).
- No AzureBlobStorage, foi atualizado para primeiro tentar a cópia nativa e recorrer a leitura & gravação em caso de erro ‘Unauthorized’ (no AzureBlobStorage, se as contas de armazenamento da origem & do destino forem diferentes, recebemos o erro ‘Unauthorized’). Também foi corrigida a aplicação de “use_native_copy” quando o endpoint é definido na configuração. #87826 (Smita Kulkarni).
- ClickHouse trava se o arquivo ArrowStream contiver um dicionário com valores duplicados. #87863 (Ilya Golshtein).
- Corrige o merge com projeções quando o último bloco está vazio. #87928 (Raúl Marín).
- Não remova funções injetivas do GROUP BY se os tipos dos argumentos não forem permitidos no GROUP BY. #87958 (Pavel Kruglov).
- Correção da eliminação incorreta de grânulos/partições para chaves baseadas em data e hora, ao usar a configuração
session_timezonenas consultas. #87987 (Eduard Karacharov). - Retorna o número de linhas afetadas após a consulta na interface PostgreSQL. #87990 (Artem Yurov).
- Restringe o uso de pushdown de filtro para PASTE JOIN, porque isso pode causar resultados incorretos. #88078 (Yarik Briukhovetskyi).
- Aplica a normalização de URI antes da avaliação na verificação de grants introduzida por https://github.com/ClickHouse/ClickHouse/pull/84503. #88089 (pufit).
- Corrige um erro lógico quando ARRAY JOIN COLUMNS() não corresponde a nenhuma coluna no novo analisador. #88091 (xiaohuanlin).
- Corrigir o aviso “Uso elevado de memória do ClickHouse” (excluindo o cache de páginas). #88092 (Azat Khuzhin).
- Corrigida uma possível corrupção de dados em tabelas
MergeTreecomTTLde coluna definido. #88095 (Anton Popov). - Corrigida a falha nas funções
mortonEncodeehilbertEncodequando chamadas com um argumento Tuple vazio. #88110 (xiaohuanlin). - Agora, as consultas
ON CLUSTERlevarão menos tempo quando houver réplicas inativas no cluster. #88153 (alesapin). - Agora, o worker de DDL remove hosts obsoletos do conjunto de réplicas. Isso reduzirá a quantidade de metadados armazenados no ZooKeeper. #88154 (alesapin).
- Desfaça corretamente a operação de movimentação de diretório em caso de erro. Precisamos reescrever todos os objetos
prefix.pathalterados durante a execução, não apenas o da raiz. #88198 (Mikhail Artemenko). - Corrigida a propagação da flag
is_sharedemColumnLowCardinality. Isso pode levar a um resultado incorreto em group-by se um novo valor for inserido em uma coluna depois que os valores de hash já tiverem sido pré-calculados e armazenados em cache noReverseIndex. #88213 (Nikita Taranov). - Corrige a configuração de workload
max_cpu_share. Agora ela pode ser usada sem que a configuração de workloadmax_cpusesteja definida. #88217 (Neerav). - Corrigido um bug em que mutações muito pesadas com subconsultas podiam ficar travadas na etapa de preparação. Agora é possível interromper essas mutações com
SYSTEM STOP MERGES. #88241 (alesapin). - Agora, subconsultas correlacionadas funcionarão com armazenamento de objetos. #88290 (alesapin).
- Evite tentar inicializar os bancos de dados DataLake ao acessar
system.projectionsesystem.data_skipping_indices. #88330 (Azat Khuzhin). - Agora, os catálogos de data lake só serão mostrados nas tabelas de introspecção do sistema se
show_data_lake_catalogs_in_system_tablesestiver explicitamente habilitado. #88341 (alesapin). - Corrigido o DatabaseReplicated para que respeite a configuração
interserver_http_host. #88378 (xiaohuanlin). - Argumentos posicionais agora foram explicitamente desabilitados ao definir projeções, pois não fazem sentido neste estágio interno da consulta. Isso corrige #48604. #88380 (Amos Bird).
- Corrige o problema de complexidade quadrática na função
countMatches. Fecha #88400. #88401 (Alexey Milovidov). - Faz com que os comandos
ALTER COLUMN ... COMMENTem tabelas KeeperMap sejam replicados, para que sejam gravados nos metadados do banco de dados Replicated e propagados para todas as réplicas. Fecha #88077. #88408 (Eduard Karacharov). - Corrige um caso de falsa dependência cíclica com visões materializadas no banco de dados Replicated, que impedia a adição de novas réplicas ao banco de dados. #88423 (Nikolay Degterinsky).
- Corrigida a agregação de colunas esparsas quando
group_by_overflow_modeé definido comoany. #88440 (Eduard Karacharov). - Corrige o erro “column not found” ao usar
query_plan_use_logical_join_step=0com várias cláusulas FULL JOIN USING. Fecha #88103. #88473 (Vladimir Cherkasov). - Clusters grandes com número de nós > 10 têm alta probabilidade de falhar na restauração com o erro
[941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 <Trace>: RestoreCoordinationOnCluster The version of node /clickhouse/backups/restore-7c551a77-bd76-404c-bad0-3213618ac58e/stage/num_hosts changed (attempt #9), will try again. O nónum_hostsé sobrescrito por vários hosts ao mesmo tempo. A correção torna dinâmica a configuração que controla o número de tentativas. Fecha #87721. #88484 (Mikhail f. Shiryaev). - Este PR serve apenas para garantir compatibilidade com a versão 23.8 e anteriores. O problema de compatibilidade foi introduzido por este PR: https://github.com/ClickHouse/ClickHouse/pull/54240. Este SQL falhará com
enable_analyzer=0(antes da 23.8, isso funcionava):select * from t1 s final join ( select * from t2 final ) r final on s.key = r.key join ( select * from t3 final ) c final on s.key = c.keyPorqueJoinToSubqueryTransformVisitorreescreverá este SQL paraSELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c FINAL ) AS `--.t` ON `_--s.key` = `_--c.key`Queremos reescrever este SQL para (apenas movendo o último FINAL)SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c ) AS `--.t` FINAL ON `_--s.key` = `_--c.key`. #88491 (JIaQi). - Corrige o overflow de inteiro apontado pelo UBSAN na mensagem de erro de
accurateCastao converter valores grandes para DateTime. #88520 (xiaohuanlin). - Corrige a coalescing merge tree para tipos Tuple. Fecha #88469. #88526 (scanhex12).
- Proibir exclusões com
iceberg_format_version=1. Isso encerra #88444. #88532 (scanhex12). - Este patch corrige a operação de movimentação dos disks
plain-rewritableem pastas com profundidade arbitrária. #88586 (Mikhail Artemenko). - Corrige o SQL SECURITY DEFINER com funções *cluster. #88588 (Julian Maicher).
- Corrige um possível travamento causado por mutação concorrente das colunas const subjacentes em PREWHERE. #88605 (Azat Khuzhin).
- Corrigida a leitura a partir do índice de texto e habilitado o cache de condições de consulta (com as configurações
use_skip_indexes_on_data_readeuse_query_condition_cachehabilitadas). #88660 (Anton Popov). - Uma exceção
Poco::TimeoutExceptionlançada porPoco::Net::HTTPChunkedStreamBuf::readFromDevicecausa uma falha com SIGABRT. #88668 (Miсhael Stetsyuk). - Corrigida a adição a
system.zookeeper_connection_logcaso o ClickHouse se conecte pela primeira vez após recarregar a configuração. #88728 (Antonio Andelic). - Corrigido um bug em que a conversão de DateTime64 para Date com
date_time_overflow_behavior = 'saturate'podia gerar resultados incorretos para valores fora do intervalo ao trabalhar com fusos horários. #88737 (Manuel). - Mais uma tentativa de corrigir o “erro de zero bytes” no table engine S3 com cache habilitado. #88740 (Kseniia Sumarokova).
- Corrige a validação de acesso em consultas SELECT para a função de tabela
loop. #88802 (pufit). - Capture exceções quando o logging assíncrono falhar para evitar o encerramento do programa. #88814 (Raúl Marín).