Alterações incompatíveis com versões anteriores
- O formato de saída Parquet converte colunas Date e DateTime para tipos de data/hora compatíveis com o Parquet, em vez de gravá-las como números puros. DateTime passa a ser DateTime64(3) (antes: UInt32); a configuração
output_format_parquet_datetime_as_uint32restaura o comportamento anterior. Date passa a ser Date32 (antes: UInt16). #70950 (Michael Kolupaev). - Não permitir, por padrão, tipos comparáveis (como JSON/Object/AggregateFunction) em ORDER BY e nas funções de comparação
less/greater/equal/etc. #73276 (Pavel Kruglov). JSONEachRowWithProgressgravará o progresso sempre que ele ocorrer. Em versões anteriores, o progresso era mostrado apenas após cada bloco do resultado, o que o tornava inútil. A forma como o progresso é exibido foi alterada: ele não mostrará valores zero. Tenha em mente que o progresso é enviado mesmo quando ocorre com frequência. Isso pode gerar um volume significativo de tráfego. Tenha em mente que o progresso não é descarregado quando a saída está comprimida. Isso fecha #70800. #73834 (Alexey Milovidov).- A origem do dicionário
mysqlnão faz mais a consultaSHOW TABLE STATUS, porque ela não traz nenhum benefício para tabelas InnoDB, assim como para versões recentes do MySQL em geral. Isso fecha #72636. Essa alteração é retrocompatível, mas foi incluída nesta categoria para que você tenha a chance de percebê-la. #73914 (Alexey Milovidov). - As tabelas
Mergeunificarão a estrutura das tabelas subjacentes por meio da união de suas colunas e da derivação de tipos comuns. Isso corrige #64864. Isso corrige #35307. Em certos casos, essa alteração pode ser incompatível com versões anteriores. Um exemplo é quando não há um tipo comum entre as tabelas, mas a conversão para o tipo da primeira tabela ainda é possível, como no caso de UInt64 e Int64 ou de qualquer tipo numérico para String. Se você quiser voltar ao comportamento antigo, definamerge_table_max_tables_to_look_for_schema_inferencecomo1ou definacompatibilitycomo24.12ou uma versão anterior. #73956 (Alexey Milovidov). - As consultas
CHECK TABLEagora exigem um privilégioCHECKseparado. Em versões anteriores, bastava ter o privilégioSHOW TABLESpara executar essas consultas. Mas uma consultaCHECK TABLEpode ser pesada, e os limites usuais de complexidade de consulta aplicados a consultasSELECTnão se aplicam a ela. Isso poderia levar a DoS. #74471 (Alexey Milovidov). - Verifica se todas as colunas de uma visão materializada correspondem à tabela de destino quando
allow_materialized_view_with_bad_selectéfalse. #74481 (Christoph Wurm). - A função
h3ToGeo()agora retorna os resultados na ordem(lat, lon)(que é a ordem padrão das funções geométricas). Usuários que quiserem manter a ordem legada dos resultados(lon, lat)podem definir a configuraçãoh3togeo_lon_lat_result_order = true. #74719 (Manish Gill). - Adicionados os formatos
JSONCompactEachRowWithProgresseJSONCompactStringsEachRowWithProgress. Continuação de #69989.JSONCompactWithNameseJSONCompactWithNamesAndTypesnão geram mais “totals” — aparentemente, isso foi um erro de implementação. #75037 (Alexey Milovidov). - Altere o padrão de
format_alter_operations_with_parenthesespara true para eliminar ambiguidades na lista de comandos ALTER (veja https://github.com/ClickHouse/ClickHouse/pull/59532). Isso quebra a replicação com clusters anteriores à versão 24.3. Se você estiver atualizando um cluster que usa lançamentos mais antigos, desative essa configuração na config do servidor ou atualize primeiro para a 24.3. #75302 (Raúl Marín). - Proibir TRUNCATE DATABASE em bancos de dados Replicated. #76651 (Bharat Nallan).
- Desabilita réplicas paralelas por padrão quando o analisador está desabilitado, independentemente da configuração de
compatibility. Ainda é possível alterar esse comportamento definindo explicitamenteparallel_replicas_only_with_analyzercomofalse. #77115 (Igor Nikonov). - Não é mais possível usar
NaNouinfcomo valores de ponto flutuante em configurações. #77546 (Yarik Briukhovetskyi). - Corrige casos em que
dateTruncé usado com argumentos negativos de data/datahora. #77622 (Yarik Briukhovetskyi). - A integração legada com o MongoDB foi removida. A configuração do servidor
use_legacy_mongodb_integrationtornou-se obsoleta e agora não tem mais efeito. #77895 (Robert Schulze). - Melhora a validação do SummingMergeTree para ignorar a agregação de colunas usadas em chaves de partição ou de ordenação. #78022 (Pervakov Grigorii).
Novos recursos
- Adicionado um cache em memória para grânulos desserializados de índices de skipping. Isso deve acelerar consultas repetidas que usam índices de skipping. O tamanho do novo cache é controlado pelas configurações do servidor
skipping_index_cache_sizeeskipping_index_cache_max_entries. Esse cache foi motivado originalmente pelos índices de similaridade vetorial, que agora ficaram muito mais rápidos. #70102 (Robert Schulze). - Uma nova implementação do cache de páginas em espaço do usuário, que permite armazenar dados em cache na memória do próprio processo, em vez de depender do cache de páginas do sistema operacional. Isso é útil quando os dados são armazenados em um sistema de arquivos virtual remoto, sem o suporte do cache do sistema de arquivos local. #70509 (Michael Kolupaev).
- Adiciona uma configuração para consultar tabelas Iceberg com base em um timestamp específico. #71072 (Brett Hoerner).
- Implementa o pruning de partições em tabelas Iceberg para operações de transformação de partição relacionadas a tempo no Iceberg. #72044 (Daniil Ivanik).
- Adiciona a capacidade de criar índices min-max (skipping) por padrão para colunas gerenciadas pelo MergeTree usando as configurações
enable_minmax_index_for_all_numeric_columns(para colunas numéricas) eenable_minmax_index_for_all_string_columns(para colunas de texto). Por enquanto, ambas as configurações estão desativadas, portanto ainda não há nenhuma mudança de comportamento. #72090 (Smita Kulkarni). - Adicionada a função de agregação sequenceMatchEvents, que retorna os timestamps dos eventos correspondentes à cadeia de eventos mais longa no padrão. #72349 (UnamedRus).
- As instruções
SELECTeVIEWagora aceitam aliases, por exemplo,SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);. Isso permite executar a consulta 15 do TPC-H sem modificações. #72480 (Yarik Briukhovetskyi). - Foi adicionada uma nova configuração
enable_adaptive_memory_spill_schedulerque permite que vários grace JOINs na mesma consulta monitorem seu consumo de memória combinado e acionem, de forma adaptativa, o spilling para armazenamento externo a fim de evitar MEMORY_LIMIT_EXCEEDED. #72728 (lgbo). - Adicionada a função
arrayNormalizedGini. #72823 (flynn). - Suporte a tipos de dados Decimal de baixa cardinalidade; corrige #72256. #72833 (zhanglistar).
- Quando
min_age_to_force_merge_secondsemin_age_to_force_merge_on_partition_onlyestão ativados, a mesclagem das partes ignorará o limite máximo de bytes. #73656 (Kai Zhu). - Adiciona suporte à leitura de valores HALF_FLOAT do Apache Arrow/Parquet/ORC (eles são lidos como Float32). Isso encerra #72960. Lembre-se de que o half float IEEE-754 não é o mesmo que BFloat16. Encerra #73835. #73836 (Alexey Milovidov).
- A tabela
system.trace_logconterá duas novas colunas,symbolselines, com o stack trace simbolizado. Isso facilita a coleta e a exportação de informações de perfil. Isso é controlado pelo valor de configuração do servidorsymbolizeemtrace_loge vem habilitado por padrão. #73896 (Alexey Milovidov). - Adiciona uma nova função,
generateSerialID, que pode ser usada para gerar números autoincrementais em tabelas. Continuação de #64310, por kazalika. Fecha #62485. #73950 (Alexey Milovidov). - Adicionada a sintaxe
query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN. Isso significa que as subconsultas{query1, query2, ... queryN}podem ser executadas em paralelo entre si (e isso é preferível). #73983 (Vitaly Baranov). - Agora, a Play UI tem uma barra de progresso durante a execução da consulta. Ela permite cancelar consultas. Exibe o número total de registros e informações detalhadas sobre a velocidade. A tabela pode ser renderizada de forma incremental assim que os dados chegam. Habilite a compressão HTTP. A renderização da tabela ficou mais rápida. O cabeçalho da tabela passou a ficar fixo. Ela permite selecionar células e navegar entre elas com as teclas de seta. Corrige o problema em que o contorno da célula selecionada a deixava menor. As células não se expandem mais ao passar o mouse sobre elas, mas apenas quando selecionadas. O momento de interromper a renderização dos dados recebidos é decidido no cliente, e não no servidor. Destaca grupos de dígitos em números. O design geral foi renovado e ficou mais marcante. Verifica se o servidor está acessível e se as credenciais estão corretas, além de exibir a versão do servidor e o tempo de atividade. O ícone de nuvem tem contorno em todas as fontes, inclusive no Safari. Inteiros grandes dentro de tipos de dados aninhados serão renderizados melhor. Exibirá inf/nan corretamente. Exibirá tipos de dados quando o mouse estiver sobre o cabeçalho de uma coluna. #74204 (Alexey Milovidov).
- Adiciona a capacidade de criar, por padrão, índices min-max (skipping) para colunas gerenciadas pelo MergeTree usando as configurações
add_minmax_index_for_numeric_columns(para colunas numéricas) eadd_minmax_index_for_string_columns(para colunas de texto). Por enquanto, ambas as configurações estão desativadas, portanto ainda não há mudança de comportamento. #74266 (Smita Kulkarni). - Adiciona os campos
script_query_numberescript_line_numberasystem.query_log, ao ClientInfo no protocolo nativo e aos logs do servidor. Isso fecha #67542. Agradecimentos a pinsvin00 por ter iniciado esse recurso anteriormente em #68133. #74477 (Alexey Milovidov). - Adicionar suporte ao operador de subtração para DateTime64, permitindo a subtração entre valores DateTime64, bem como com DateTime. #74482 (Li Yin).
- Adiciona suporte ao mecanismo de tabela DeltaLake para AzureBlobStorage. Corrige #68043. #74541 (Smita Kulkarni).
- Adiciona a configuração bind_host para definir o endereço IP de origem nas conexões do clickhouse client. #74741 (Todd Yocum).
- Foi adicionada a possibilidade de aplicar mutações ainda não concluídas (ainda não materializadas por um processo em segundo plano) durante a execução de consultas
SELECT, imediatamente após o envio. Isso pode ser habilitado definindoapply_mutations_on_fly. #74877 (Anton Popov). - Foram corrigidos alguns casos anteriormente inesperados quando os argumentos de data e hora de
toStartOfIntervalsão negativos. Isso foi feito com a implementação de uma nova função chamada toStartOfIntervalAllowNegative, que faz praticamente a mesma coisa, mas retorna apenas Date32/DateTime64. #74933 (Yarik Briukhovetskyi). - Uma nova função, initialQueryStartTime, foi adicionada. Ela retorna o horário de início da consulta atual. O valor é o mesmo em todos os shards durante uma consulta distribuída. #75087 (Roman Lomonosov).
- Adiciona
parametrized_view_parametersem system.tables. Fecha https://github.com/clickhouse/clickhouse/issues/66756. #75112 (NamNguyenHoai). - Permite alterar um comentário de banco de dados. Fecha #73351 ### Entrada na documentação para alterações voltadas ao usuário. #75622 (NamNguyenHoai).
- Adicionada a capacidade de ATTACH de tabelas sem a camada de banco de dados (evita a gambiarra com UUID). #75788 (Azat Khuzhin).
- Adicionada a configuração do servidor
concurrent_threads_scheduler, que controla como os slots de CPU são distribuídos entre consultas concorrentes. Pode ser definida comoround_robin(comportamento anterior) oufair_round_robinpara resolver o problema da distribuição desigual de CPU entre INSERTs e SELECTs. #75949 (Sergei Trifonov). - Restaura o codec QPL, removido na v24.10 devido a questões de licenciamento. #76021 (Konstantin Bogdanov).
- Adicionada a função
arraySymmetricDifference. Ela retorna todos os elementos de vários argumentos Array que não aparecem em todos os argumentos. Exemplo:SELECT arraySymmetricDifference([1, 2], [2, 3])retorna[1, 3]. (issue #61673). #76231 (Filipp Abapolov). - Adicionada a função de agregação
estimatecompressionratio— veja #70801. #76661 (Tariq Almawash). - Os eventos de perfil
FilterTransformPassedRowseFilterTransformPassedBytesmostrarão o número de linhas e de bytes filtrados durante a execução da consulta. #76662 (Onkar Deshpande). - Adicionada a função de hash keccak256, comumente usada em implementações de blockchain, especialmente em sistemas baseados em EVM. #76669 (Arnaud Briche).
- Scram SHA256 & atualização da autenticação wire do Postgres. #76839 (scanhex12).
- Esse recurso permite definir uma lista de cabeçalhos que são encaminhados dos cabeçalhos da solicitação do cliente para o autenticador HTTP externo. #77054 (inv2004).
- Suporte a
IcebergMetadataFilesCache, que armazenará arquivos/listas de manifest e metadata.json em um único cache. #77156 (Han Fei). - Adiciona as funções
arrayLevenshteinDistance,arrayLevenshteinDistanceWeightedearraySimilarity. #77187 (Mikhail f. Shiryaev). - Adiciona três novas funções:
icebergTruncate, de acordo com a especificação https://iceberg.apache.org/spec/#truncate-transform-details,toYearNumSinceEpochetoMonthNumSinceEpoch. Adiciona suporte à transformaçãotruncatena poda de partições do engineIceberg. #77403 (alesapin). - Permite que um usuário consulte o estado de uma tabela Iceberg em um ponto anterior no tempo. #77439 (Daniil Ivanik).
- Adicionado o agendamento de slots de CPU para workloads; veja https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling para mais detalhes. #77595 (Sergei Trifonov).
- A função
hasAll()agora pode aproveitar os índices de skipping para texto completo tokenbf_v1 e ngrambf_v1. #77662 (UnamedRus). - O tipo de dado
JSONestá pronto para uso em produção. Veja https://jsonbench.com/. Os tipos de dadosDynamiceVaraintestão prontos para uso em produção. #77785 (Alexey Milovidov). - Adicionado um cache em memória para índices de similaridade vetorial desserializados. Isso deve acelerar consultas repetidas de busca aproximada por vizinhos mais próximos (ANN). O tamanho do novo cache é controlado pelas configurações do servidor
vector_similarity_index_cache_sizeevector_similarity_index_cache_max_entries. Este recurso substitui o recurso de cache de índices de skipping de lançamentos anteriores. #77905 (Shankar Iyer). - Adicionadas as funções sparseGrams e sparseGramsHashes com versões UTF-8. Autor: scanhex12. #78176 (Pervakov Grigorii).
- Introduz a função
toInterval. Esta função recebe 2 argumentos (valor e unidade) e converte o valor em um tipoIntervalespecífico. #78723 (Andrew Davis).
Recursos experimentais
- Permite operações automáticas de merge para limpeza de partições inteiras após um
timeoutconfigurável, com a nova configuraçãoenable_replacing_merge_with_cleanup_for_min_age_to_force_merge. #76440 (Christoph Wurm). - Adiciona suporte ao Unity Catalog para tabelas DeltaLake em AWS S3 e no sistema de arquivos local. #76988 (alesapin).
- Introduz integração experimental com o catálogo de serviços AWS Glue para tabelas Iceberg. #77257 (alesapin).
Melhorias de desempenho
- Otimize o desempenho com projeção lazy para evitar a leitura de colunas não utilizadas. #55518 (Xiaozhe Yu).
- Comece comparando as linhas pelas colunas com maior probabilidade de serem diferentes. #63780 (UnamedRus).
- Otimização do formato de entrada RowBinary. Fecha #63805. #65059 (Pavel Kruglov).
- Acelera a desserialização de strings com otimizações de baixo nível. #65948 (Nikita Taranov).
- Aplica o atributo
preserve_mostem alguns pontos do código. #67778 (Nikita Taranov). - Implementa o cache de condições de consulta para melhorar o desempenho das consultas com condições repetidas. O intervalo da parcela de dados que não atende à condição é mantido na memória como um índice temporário. As consultas subsequentes usarão esse índice. fecha #67768 ### Entrada de documentação para alterações visíveis ao usuário. #69236 (zhongyuankai).
- Suporte à pré-busca assíncrona de E/S para
NativeORCBlockInputFormat, o que melhora o desempenho geral ao ocultar a latência de E/S remota. O ganho de desempenho pode chegar a 1,47x no meu caso de teste. #70534 (李扬). - Melhora o desempenho do grace hash join ao reordenar a tabela da direita do join pelas chaves. #72237 (kevinyhzou).
- Reintroduz o respeito a
ttl_only_drop_partsemmaterialize ttl; lê apenas as colunas necessárias para recalcular o TTL e descarta partes substituindo-as por uma vazia. #72751 (Andrey Zvonov). - Permite que
arrayROCAUCearrayAUCPRcalculem uma área parcial da curva completa, para que esse cálculo possa ser paralelizado em conjuntos de dados muito grandes. #72904 (Emmanuel). - Evita criar threads ociosas em excesso. #72920 (Guo Wangyang).
- A divisão dos blocos da tabela da esquerda por hash foi removida da fase de probe do algoritmo JOIN
parallel_hash. #73089 (Nikita Taranov). - Não listar chaves no armazenamento de blobs se houver apenas expansão entre chaves na função de tabela. Fecha #73333. #73518 (Konstantin Bogdanov).
- Substitui Int256 e UInt256 pelo builtin i256 do clang em cálculos aritméticos, de acordo com os testes em #70502. #73658 (李扬).
- Adiciona um caminho rápido para funções cujos tipos de argumento são todos numéricos. Corrige problemas de desempenho em https://github.com/ClickHouse/ClickHouse/pull/72258. #73820 (李扬).
- Não aplicar
maskedExecuteem colunas que não sejam funções; melhorar o desempenho da execução com curto-circuito. #73965 (lgbo). - Desative a detecção de headers para Kafka/NATS/RabbitMQ/FileLog para melhorar o desempenho. #74006 (Azat Khuzhin).
- Use wrappers de log por valor e não os aloque no heap. #74034 (Mikhail Artemenko).
- Executa um pipeline com maior grau de paralelismo após a agregação com grouping sets. #74082 (Nikita Taranov).
- Reduz a seção crítica no
MergeTreeReadPool. #74202 (Guo Wangyang). - Função
indexHintotimizada. Agora, colunas usadas apenas como argumentos da funçãoindexHintnão são lidas da tabela. #74314 (Anton Popov). - Melhoria de desempenho de réplicas paralelas. A desserialização de pacotes no iniciador da consulta, para pacotes não relacionados ao protocolo de réplicas paralelas, agora sempre ocorre na thread do pipeline. Antes, isso podia ocorrer em uma thread responsável pelo agendamento do pipeline, o que podia deixar o iniciador menos responsivo e atrasar a execução do pipeline. #74398 (Igor Nikonov).
- Corrigido o cálculo do tamanho na memória para colunas
LowCardinality. #74688 (Nikita Taranov). - Melhora o desempenho da leitura da coluna JSON inteira em partes Wide do S3. Isso é feito com a adição de prefetches para a desserialização de prefixos de subcolunas, cache dos prefixos desserializados e desserialização paralela de prefixos de subcolunas. Isso melhora a leitura da coluna JSON do S3 em 4x em consultas como
SELECT data FROM tablee em cerca de 10x em consultas comoSELECT data FROM table LIMIT 10. #74827 (Pavel Kruglov). - Pré-alocação da memória usada por inserções assíncronas para melhorar o desempenho. #74945 (Ilya Golshtein).
- Corrigida a pré-alocação dupla em
ConcurrentHashJoinquando os lados do join são invertidos pelo otimizador. #75149 (Nikita Taranov). - Corrigida a contenção desnecessária em
parallel_hashquandomax_rows_in_join = max_bytes_in_join = 0. #75155 (Nikita Taranov). - Pequena melhoria em alguns cenários de join: pré-calcular a quantidade de linhas de saída e reservar memória para elas. #75376 (Alexander Gololobov).
- Os arquivos de metadados
plain_rewritablesão pequenos e não precisam de um buffer padrão grande. Use um buffer de gravação dimensionado adequadamente para acomodar o caminho fornecido, melhorando o uso de memória em um grande número de partes ativas. ### Entrada de documentação para alterações voltadas ao usuário. #75758 (Julia Kartseva). - Em alguns casos (por exemplo, uma coluna Array vazia), as partes de dados podem conter arquivos vazios. Podemos deixar de gravar blobs vazios no ObjectStorage e armazenar apenas os metadados desses arquivos quando a tabela está em um disco com metadados e armazenamento de objetos separados. #75860 (Alexander Gololobov).
- Descobriu-se que o controle de concorrência podia levar a uma distribuição desigual de CPU entre INSERTs e SELECTs: quando todos os slots de CPU eram alocados incondicionalmente (sem competição) para INSERTs com
max_threads= 1, SELECTs com valores altos demax_threadssofriam com baixo desempenho por usarem apenas uma única thread. #75941 (Sergei Trifonov). - Pequena otimização em wrapInNullable para evitar a alocação desnecessária de um map nulo. #76489 (李扬).
- Melhora no desempenho de min/max para Decimal32/Decimal64/DateTime64. #76570 (李扬).
- Remova ativamente os dados do cache ao remover partes. Não permita que o cache cresça até o tamanho máximo se a quantidade de dados for menor. #76641 (Alexey Milovidov).
- A compilação de consultas (configuração
compile_expressions) agora considera o tipo de máquina. Isso acelera significativamente consultas desse tipo. #76753 (Robert Schulze). - Otimiza o arraySort. #76850 (李扬).
- Acelera a geração do resultado de JOIN ao desvirtualizar as chamadas para
col->insertFrom(). #77350 (Alexander Gololobov). - Mescle as marcas da mesma parte e grave-as no cache de condições de consulta de uma só vez para reduzir o uso de bloqueios. #77377 (zhongyuankai).
- Otimize o ORDER BY para colunas individuais Nullable ou de baixa cardinalidade. #77789 (李扬).
- Desative
filesystem_cache_prefer_bigger_buffer_sizequando o cache for usado de forma passiva, como em merges. #77898 (Kseniia Sumarokova). - Implementa a otimização simples de contagem para Iceberg. Agora, consultas com
count()e sem filtros devem ser mais rápidas. Fecha #77639. #78090 (alesapin). - Adiciona suporte à poda de dados do Iceberg com base nos valores de lower_bound e uppert_bound das colunas. Corrige #77638. #78242 (alesapin).
- Otimização do uso de memória do NativeReader. #78442 (Azat Khuzhin).
- Otimização trivial: não reescrever
count(if())como countIf seCASTfor necessário. Fecha #78564. #78565 (李扬).
Melhorias
- Reduza a quantidade de solicitações ao Keeper eliminando o uso de chamadas únicas de
get, que poderiam causar uma carga significativa no Keeper com o aumento do número de réplicas, nos pontos em quemultiReadestá disponível. #56862 (Nikolay Degterinsky). - Adiciona suporte à autenticação SSL com coleções nomeadas no MySQL. Fecha #59111. #59452 (Nikolay Degterinsky).
- Melhora o desempenho da infraestrutura do novo analisador ao armazenar
ColumnPtrem vez deFieldnoConstantNode. Relacionado a #62245. #63198 (Dmitry Novik). - Rejeitar consultas quando o servidor estiver sobrecarregado. A decisão é tomada com base na proporção entre o tempo de espera (
OSCPUWaitMicroseconds) e o tempo ocupado (OSCPUVirtualTimeMicroseconds). A consulta é descartada com certa probabilidade quando essa proporção está entremin_os_cpu_wait_time_ratio_to_throwemax_os_cpu_wait_time_ratio_to_throw(essas são configurações no nível da consulta). #63206 (Alexey Katsman). - Descarte os blocos o mais cedo possível para reduzir o uso de memória. #65647 (lgbo).
- A tabela
processors_profile_logagora passa a ter uma configuração padrão com TTL de 30 dias. #66139 (Ilya Yatsishin). - Permite a criação de um índice
bloom_filterem colunas com tipo de dado DateTime64. #66416 (Yutong Xiao). - Introduz faixas de latência e as usa para monitorar o tempo de conexão e o tempo até o primeiro byte de leitura/gravação em requisições ao S3. Dessa forma, será possível usar posteriormente os dados coletados para calcular percentis aproximados e ajustar os timeouts. #69783 (Alexey Katsman).
- As consultas enviadas ao armazenamento
Executablenão estão mais limitadas à execução em uma única thread. #70084 (yawnt). - Adicionados cabeçalhos HTTP à tabela de logs de spans do OpenTelemetry para aumentar a rastreabilidade. #70516 (jonymohajanGmail).
- Adiciona suporte à gravação de arquivos orc com um fuso horário personalizado, em vez de sempre usar o fuso horário
GMT. #70615 (kevinyhzou). - Substitui funções de tabela por suas alternativas
-Clusterse as réplicas paralelas estiverem habilitadas. Corrige #65024. #70659 (Konstantin Bogdanov). - Respeite as configurações de escalonamento de E/S ao gravar backups entre nuvens. #71093 (János Benjamin Antal).
- Restabelecer a conexão com as réplicas de dicionário do MySQL e do Postgres em segundo plano para não atrasar as solicitações aos dicionários correspondentes. #71101 (Yakov Olkhovskiy).
- Adicionar o nome do alias da métrica a system.asynchronous_metrics. #71164 (megao).
- As atualizações de views materializadas atualizáveis agora aparecem em
system.query_log. #71333 (Michael Kolupaev). - Avaliar em conjunto os filtros de Bloom do Parquet e os índices min/max. Necessário para dar suporte adequado a:
x = 3 or x > 5, em que os dados = [1, 2, 4, 5]. #71383 (Arthur Passos). - Melhorias nas métricas interativas. Corrige métricas de réplicas paralelas que não eram exibidas por completo. Exibe as métricas ordenadas pela atualização mais recente e, em seguida, lexicograficamente pelo nome. Não exibe métricas desatualizadas. #71631 (Julia Kartseva).
- Historicamente, por algum motivo, a consulta
ALTER TABLE MOVE PARTITION TO TABLEverificava os privilégiosSELECTeALTER DELETEem vez do privilégio específicoALTER_MOVE_PARTITION. Este PR passa a usar esse tipo de acesso. Para manter a compatibilidade, essa permissão também será concedida implicitamente seSELECTeALTER DELETEtiverem sido concedidos, mas esse comportamento será removido em lançamentos futuros. Fecha #16403. #71632 (pufit). - Habilita
use_hive_partitioningpor padrão. #71636 (Yarik Briukhovetskyi). - Lança uma exceção ao tentar materializar uma coluna na chave de ordenação, em vez de permitir que isso quebre a ordem de ordenação. No entanto, isso não resolve #71777. #71891 (Peter Nguyen).
- Permite um algoritmo mais geral para planejamento de JOIN quando o algoritmo de hash join estiver habilitado. #71926 (János Benjamin Antal).
- Ocultar dados sensíveis em
EXPLAIN QUERY TREE. #72025 (Yakov Olkhovskiy). - Permite usar um disk configurável para armazenar arquivos de metadados de databases e tables. O nome do disk pode ser definido pelo parâmetro de config
database_disk.disk. #72027 (Tuan Pham Anh). - Suporte aos tipos lógicos inteiros do Parquet no leitor nativo. #72105 (Arthur Passos).
- Faça com que o formato de saída JSON seja bem formatado por padrão. Adicione a nova configuração
output_format_json_pretty_printpara controlá-la e habilite-a por padrão. #72148 (Pavel Kruglov). - Solicita credenciais de forma interativa no navegador se o usuário
defaultexigir uma senha. Em versões anteriores, o servidor retornava HTTP 403; agora, retorna HTTP 401. #72198 (Alexey Milovidov). - Este PR converte os tipos de acesso
CREATE_USER,ALTER_USER,DROP_USER,CREATE_ROLE,ALTER_ROLE,DROP_ROLEde globais para parametrizados. Isso significa que agora você pode conceder privilégios de gerenciamento de acesso com mais precisão. #72246 (pufit). - Permite nomes de shard na configuração do cluster. #72276 (MikhailBurdukov).
- Suporte para CAST e ALTER entre tipos JSON com parâmetros diferentes. #72303 (Pavel Kruglov).
- Adicione a coluna
latest_fail_error_code_nameasystem.mutations. Precisamos dessa coluna para introduzir uma nova métrica sobre mutações travadas e usá-la para criar gráficos dos erros encontrados na nuvem e, opcionalmente, adicionar um novo alerta com menos ruído. #72398 (Miсhael Stetsyuk). - Reduz a quantidade de alocações ao anexar partições. #72583 (Konstantin Morozov).
- Faz com que o limite de max_bytes_before_external_sort passe a depender do consumo total de memória da consulta (antes, era o número de bytes no bloco de ordenação para uma thread de ordenação; agora, ele tem o mesmo significado de
max_bytes_before_external_group_by— ou seja, é o limite total para toda a memória da consulta em todas as threads). Além disso, foi adicionada mais uma configuração para controlar o tamanho do bloco no disco:min_external_sort_block_bytes. #72598 (Azat Khuzhin). - Ignorar as restrições de memória do collector de traces. #72606 (Azat Khuzhin).
- Suporte a subcolunas na chave de ordenação do MergeTree e nos índices de salto. #72644 (Pavel Kruglov).
- Adicionadas as configurações do servidor
dictionaries_lazy_loadewait_dictionaries_load_at_startupasystem.server_settings. #72664 (Christoph Wurm). - Adiciona a configuração
max_backup_bandwidthà lista de configurações que podem ser especificadas nas consultasBACKUP/RESTORE. #72665 (Christoph Wurm). - As réplicas paralelas usavam informações históricas sobre a disponibilidade das réplicas para melhorar a seleção de réplicas, mas não atualizavam a contagem de erros da réplica quando a conexão estava indisponível. Este PR passa a atualizar a contagem de erros da réplica quando ela fica indisponível. #72666 (zoomxi).
- Redução do nível de log das partes replicadas detectadas no engine ReplicatedMergeTree para ajudar a minimizar o volume de logs gerados em um cluster replicado. #72876 (mor-akamai).
- Muitos novos recursos exigirão um melhor encapsulamento do código (no que diz respeito aos metadados do Iceberg) e abstrações de código mais adequadas. #72941 (Daniil Ivanik).
- Suporte à comparação por igualdade para valores de coluna JSON. #72991 (Pavel Kruglov).
- Aprimora a formatação de identificadores com subcolunas JSON para evitar crases desnecessárias. #73085 (Pavel Kruglov).
- Registro de condições
PREWHEREno nívelTest. #73116 (Vladimir Cherkasov). - Suporte a SETTINGS com ENGINE implícito e à combinação de configurações de engine e de consulta. #73120 (Raúl Marín).
- Grava partes no nível 1 se
optimize_on_insertestiver habilitado. Isso permite usar várias otimizações de consultas comFINALpara partes recém-gravadas. #73132 (Anton Popov). - Para uma consulta como
WHERE a<b AND b<c AND c<5, é possível gerar novas condições de comparação (a<5 and b<5) para melhorar a capacidade de filtragem. #73164 (Shichao Jin). - Melhora a extração de expressões comuns em disjunções. Permite simplificar a expressão de filtro resultante mesmo quando não há uma subexpressão comum a todas as disjunções. Continuação de #71537. #73271 (Dmitry Novik).
- No Storage
S3(Azure)Queue, foi permitido adicionar configurações a tabelas criadas sem configurações. #73283 (Kseniia Sumarokova). - Clickhouse-client agora oferece suporte a Ctrl+D para finalizar a consulta. Agora é possível usar Ctrl+D em vez de digitar um ponto e vírgula e pressionar Enter. Além disso, Ctrl+D passa a funcionar como Enter no modo de linha única. #73293 (Xiaozhe Yu).
- Introduz a configuração
least_greatest_legacy_null_behavior(padrão:false), que controla se as funçõesleastegreatesttratam argumentosNULLretornandoNULLincondicionalmente (setrue) ou ignorando-os (sefalse). #73344 (Robert Schulze). - Usar requisições múltiplas do Keeper na thread de limpeza da ObjectStorageQueueMetadata. #73357 (Antonio Andelic).
- Um novo driver do MongoDB agora é o padrão. Os usuários que quiserem continuar usando o driver legado podem definir a configuração no servidor
use_legacy_mongodb_integrationcomo true. #73359 (Robert Schulze). - Quando o ClickHouse é executado em um cgroup, ainda coletamos métricas assíncronas de todo o sistema relacionadas à carga do sistema, ao agendamento de processos, à memória etc. Elas podem fornecer sinais úteis quando o ClickHouse é o único processo no host com alto consumo de recursos. #73369 (Nikita Taranov).
- No armazenamento S3Queue, agora é possível transferir tabelas ordenadas antigas criadas antes da versão 24.6 para a nova estrutura com buckets. #73467 (Kseniia Sumarokova).
- Adiciona
system.azure_queue, semelhante àsystem.s3queueexistente. #73477 (Kseniia Sumarokova). - Foi corrigida uma regressão que fazia com que o uso de locales de collation com modificadores gerasse um erro. Como exemplo,
SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shiftedagora funciona. #73544 (Robert Schulze). - Suporte para o tipo Nullable(JSON). #73556 (Pavel Kruglov).
- A função
parseDateTime64(e suas variantes) agora produz resultados corretos para datas de entrada anteriores a 1970 / posteriores a 2106. Exemplo:SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS'). #73594 (zhanglistar). - Corrige alguns problemas de usabilidade do clickhouse-disks relatados por usuários. Fecha #67136. #73616 (Daniil Ivanik).
- Permite alterar as configurações de commit no armazenamento S3(Azure)Queue. (As configurações de commit são: max_processed_files_before_commit, max_processed_rows_before_commit, max_processed_bytes_before_commit, max_processing_time_sec_before_commit). #73635 (Kseniia Sumarokova).
- No armazenamento S3(Azure)Queue, o progresso é agregado entre as fontes para compará-lo com as configurações de limite de commit. #73641 (Kseniia Sumarokova).
- Suporte às principais configurações na consulta
BACKUP/RESTORE. #73650 (Vitaly Baranov). - Passa a ler
output_format_compression_levelna saída em Parquet. #73651 (Arthur Passos). - Adiciona suporte à leitura de arrow fixed_size_list como um Array, em vez de tratá-lo como um tipo não compatível. #73654 (Julian Meyers).
- Este PR adiciona dois motores de backup:
Memory(mantém os backups na sessão atual do usuário) eNull(não mantém backups em nenhum lugar):. #73690 (Vitaly Baranov). concurrent_threads_soft_limit_numeconcurrent_threads_soft_limit_num_ratio_to_corespodem ser alterados sem reiniciar o servidor. #73713 (Sergei Trifonov).- Adicionado suporte a tipos numéricos estendidos (Decimal, inteiros grandes) nas funções formatReadable. #73765 (Raúl Marín).
- Passa a respeitar a correspondência de colunas sem diferenciar maiúsculas de minúsculas para campos em colunas de tupla. Fecha https://github.com/apache/incubator-gluten/issues/8324. #73780 (李扬).
- Suporte a TLS para o protocolo wire do Postgres. #73812 (scanhex12).
- Permite
LowCardinality(UUID)por padrão. Isso tem se mostrado prático entre os clientes do ClickHouse Cloud. #73826 (Alexey Milovidov). - Melhor mensagem durante a instalação. #73827 (Alexey Milovidov).
- Melhoria na mensagem sobre redefinição de senha do ClickHouse Cloud. #73831 (Alexey Milovidov).
- Melhora a mensagem de erro de uma tabela File que não pode acrescentar dados a um arquivo. #73832 (Alexey Milovidov).
- Perguntar ao usuário quando ele solicitar acidentalmente a saída em formato binário (como Native, Parquet, Avro) no terminal. Isso fecha #59524. #73833 (Alexey Milovidov).
- O tipo de dado
BFloat16está pronto para uso em produção. #73840 (Alexey Milovidov). - Realça os espaços em branco à direita nos formatos Pretty e Vertical no terminal para maior clareza. Isso é controlado pela configuração
output_format_pretty_highlight_trailing_spaces. Implementação inicial por Braden Burns em #72996. Fecha #71590. #73847 (Alexey Milovidov). clickhouse-clienteclickhouse-localdetectarão automaticamente a compressão da stdin quando ela for redirecionada de um arquivo. Isso fecha #70865. #73848 (Alexey Milovidov).- Trunca nomes de coluna longos demais nos formatos Pretty por padrão. Isso é controlado pelas configurações
output_format_pretty_max_column_name_width_cut_toeoutput_format_pretty_max_column_name_width_min_chars_to_cut. Esta é a continuação do trabalho de tanmaydatta em #66502. Isso fecha #65968. #73851 (Alexey Milovidov). - Torne os formatos
Prettymais apresentáveis: agrupe os blocos se não tiver passado muito tempo desde a saída do bloco anterior. Isso é controlado pelas novas configuraçõesoutput_format_pretty_squash_consecutive_ms(50 ms por padrão) eoutput_format_pretty_squash_max_wait_ms(1000 ms por padrão). Continuação de #49537. Isso fecha #49153. #73852 (Alexey Milovidov). - Corrige o mapeamento de tipos para SQLite (tipos inteiros para
int64e tipos de ponto flutuante parafloat64). #73853 (Joanna Hulboj). - Adiciona uma métrica para o número de partes de origem que estão sendo mescladas no momento. Isso fecha #70809. #73868 (Alexey Milovidov).
- Destaca as colunas no formato
Verticalse a saída for para um terminal. Isso pode ser desativado com a configuraçãooutput_format_pretty_color. #73898 (Alexey Milovidov). - Foi aprimorada a compatibilidade com MySQL a ponto de agora o
mysqlsh(um CLI avançado do MySQL da Oracle) conseguir se conectar ao ClickHouse. Isso é necessário para facilitar os testes. #73912 (Alexey Milovidov). - Se o número de registros de saída for maior que N =
output_format_pretty_max_rows, em vez de exibir apenas as N primeiras linhas, a tabela de saída será cortada no meio, exibindo as N/2 primeiras linhas e as N/2 últimas linhas. Continuação de #64200. Isso encerra #59502. #73929 (Alexey Milovidov). - A função
isIPv4Stringretornava true se um endereço IPv4 válido fosse seguido por um byte nulo, quando nesse caso deveria retornar false. Continuação de #65387. #73946 (Alexey Milovidov). - Torne o código de erro no MySQL wire protocol compatível com o MySQL. Continuação de #56831. Fecha #50957. #73948 (Alexey Milovidov).
- Adiciona a configuração
validate_enum_literals_in_opearatorspara validar literais de enum em operadores comoINeNOT INem relação ao tipo enum e lançar uma exceção caso o literal não seja um valor enum válido. #73985 (Vladimir Cherkasov). - No Storage
S3(Azure)Queue, faça commit de todos os arquivos (em um único lote definido pelas configurações de commit) em uma única transação do Keeper. #73991 (Kseniia Sumarokova). - Desabilitada a detecção de header para UDFs executáveis e dicionários (poderia levar a Function ‘X’: resultado incorreto, esperado Y linhas, obtido Y-1). #73992 (Azat Khuzhin).
- Adicionada a opção
distributedparaEXPLAIN PLAN.Agora,EXPLAIN distributed=1 ...acrescenta o plano remoto às etapasReadFromParallelRemote*. #73994 (Nikolai Kochetov). - Use o tipo de retorno adequado para not/xor com argumentos Dynamic. #74013 (Pavel Kruglov).
- Permite alterar
add_implicit_sign_column_constraint_for_collapsing_engineapós a criação da tabela. #74014 (Christoph Wurm). - Suporte a subcolunas na consulta SELECT da visão materializada. #74030 (Pavel Kruglov).
- Os formatos Pretty podem exibir campos multilinha dentro de uma célula de tabela, o que melhora a legibilidade. Isso é ativado por padrão e pode ser controlado pela configuração
output_format_pretty_multiline_fields. Continuação do trabalho de Volodyachan em #64094. Isso fecha #56912. #74032 (Alexey Milovidov). - Adicionado suporte à otimização
predicate-push-downno nível do plano de consulta para a etapaMergingAggregated. Isso melhora o desempenho de algumas consultas com o novo analisador. #74073 (Nikolai Kochetov). - Agora há três maneiras simples de definir um prompt personalizado no
clickhouse-client: 1. pelo parâmetro de linha de comando--prompt, 2. no arquivo de configuração, pela configuração<prompt>[...]</prompt>, e 3. também no arquivo de configuração, pelas configurações por conexão<connections_credentials><prompt>[...]</prompt></connection_credentials>. #74168 (Christoph Wurm). - Altera o status de sucesso da resposta do prometheus remote write de 200/OK para 204/NoContent. #74170 (Michael Dempsey).
- Exponha os cabeçalhos HTTP X-ClickHouse ao JavaScript no navegador. Isso torna o desenvolvimento de aplicativos mais prático. #74180 (Alexey Milovidov).
- O formato
JSONEachRowWithProgressincluirá eventos com metadados, além de totais e extremos. Ele também incluirows_before_limit_at_leasterows_before_aggregation. O formato imprime a exceção corretamente se ela chegar após resultados parciais. O progresso agora inclui nanossegundos de tempo decorrido. Um evento final de progresso é emitido ao final. O progresso durante o tempo de execução da consulta não será impresso com frequência maior do que o valor da configuraçãointeractive_delay. #74181 (Alexey Milovidov). - A ampulheta girará suavemente na Play UI. #74182 (Alexey Milovidov).
- Mesmo que a resposta HTTP seja comprimida, envie os pacotes assim que eles cheguem. Isso permite que o navegador receba pacotes de progresso e dados comprimidos. #74201 (Alexey Milovidov).
- Adiciona a capacidade de recarregar
max_remote_read_network_bandwidth_for_serveemax_remote_write_network_bandwidth_for_serverdinamicamente, sem reiniciar o servidor. #74206 (Kai Zhu). - Detectar automaticamente uma conexão segura ao se conectar à porta 9440 no ClickHouse Client. #74212 (Christoph Wurm).
- Autenticação de usuários apenas com nome de usuário para http_handlers (anteriormente, também era necessário informar a senha). #74221 (Azat Khuzhin).
- O suporte às linguagens de consulta alternativas PRQL e KQL foi classificado como experimental. Para usá-las, especifique as configurações
allow_experimental_prql_dialect = 1eallow_experimental_kusto_dialect = 1. #74224 (Robert Schulze). - Suporte ao retorno do tipo Enum padrão em mais funções de agregação. #74272 (Raúl Marín).
- Em
OPTIMIZE TABLE, agora também é possível usar a palavra-chaveFORCEcomo alternativa à palavra-chaveFINALexistente. #74342 (Robert Schulze). - Foi adicionada uma configuração do MergeTree,
materialize_skip_indexes_on_merge, que impede a criação de skip indexes durante a mesclagem. Isso permite controlar explicitamente (viaALTER TABLE [..] MATERIALIZE INDEX [...]) quando os skip indexes são criados. Isso pode ser útil se os skip indexes forem custosos de criar (por exemplo, vector similarity indexes). #74401 (Robert Schulze). - Suporte a subcolunas em expressões padrão e materializadas. #74403 (Pavel Kruglov).
- Otimização das solicitações do Keeper em Storage(S3/Azure)Queue. #74410 (Kseniia Sumarokova).
- Adicionada a métrica IsServerShuttingDown, necessária para acionar um alerta quando o desligamento do servidor demora demais. #74429 (Miсhael Stetsyuk).
- Adicionados os nomes das tabelas Iceberg ao EXPLAIN. #74485 (alekseev-maksim).
- Passa a usar até
1000réplicas paralelas por padrão. #74504 (Konstantin Bogdanov). - Melhora a mensagem de erro ao usar RECURSIVE CTE com o analyzer antigo. #74523 (Raúl Marín).
- Otimiza as solicitações do Keeper no Storage(S3/Azure)Queue. #74538 (Kseniia Sumarokova).
- Melhora a reutilização de sessões HTTP ao ler de um disco S3 (#72401). #74548 (Julian Maicher).
- Exibir mensagens de erro detalhadas em
system.errors. #74574 (Vitaly Baranov). - Foi ativada uma lógica de backoff para todos os tipos de tarefas replicadas. Isso permitirá reduzir o uso de CPU, o uso de memória e o tamanho dos arquivos de log. Foram adicionadas as novas configurações
max_postpone_time_for_failed_replicated_fetches_ms,max_postpone_time_for_failed_replicated_merges_msemax_postpone_time_for_failed_replicated_tasks_ms, que são semelhantes amax_postpone_time_for_failed_mutations_ms. #74576 (MikhailBurdukov). - Cálculo mais preciso da configuração
max_joined_block_size_rowspara o algoritmo de JOINparallel_hash. Ajuda a evitar maior consumo de memória em comparação com o algoritmohash. #74630 (Nikita Taranov). - Adicionado suporte à opção de configuração
dfs.client.use.datanode.hostnamedo libhdfs3. #74635 (Mikhail Tiukavkin). - Corrige Invalid: o codec ‘snappy’ não oferece suporte à configuração de um nível de compressão. #74659 (Arthur Passos).
- Permite usar senha na comunicação do cliente com o clickhouse-keeper. Esse recurso não é muito útil se você especificar a configuração de SSL adequada para o servidor e o cliente, mas ainda pode ser útil em alguns casos. A senha não pode ter mais de 16 caracteres. Não tem relação com o modelo de autenticação do Keeper. #74673 (alesapin).
- Permite usar caminhos de blob para calcular checksum ao fazer backup. #74729 (Vitaly Baranov).
- Use sharding dinâmico para JOIN se a chave de junção for um prefixo da PK em ambas as partes. Essa otimização é ativada com a configuração
query_plan_join_shard_by_pk_ranges(desativada por padrão). #74733 (Nikolai Kochetov). - Adiciona código de erro ao recarregador de configuração. #74746 (Garrett Thomas).
- Adicionado suporte a endereços IPv6 nas funções de tabela e nos motores do MySQL e PostgreSQL. #74796 (Mikhail Koviazin).
- Os parâmetros do codec Gorilla agora serão sempre salvos nos metadados da tabela, no arquivo .sql. Isso corrige: #70072. #74814 (Nikita Mikhaylov).
- Implementa a otimização de curto-circuito para
divideDecimal. Corrige #74280. #74843 (Kevin Mingtarja). - Melhora o desempenho de requisições múltiplas maiores no Keeper. #74849 (Antonio Andelic).
- Agora é possível especificar usuários nos scripts de inicialização. #74894 (pufit).
- Busca de partes em paralelo no ALTER TABLE FETCH PARTITION (o tamanho do pool de threads é controlado por
max_fetch_partition_thread_pool_size). #74978 (Azat Khuzhin). - Adicionada uma coluna de ID de consulta a
system.query_cache(issue #68205). #74982 (NamNguyenHoai). - Protocolo SSH reativado. Algumas vulnerabilidades críticas foram corrigidas, de modo que não é mais possível usar um pager personalizado nem especificar
server-logs-file. A capacidade de passar opções do cliente por variáveis de ambiente foi desabilitada por padrão (ainda é possível viassh-server.enable_client_options_passingem config.xml). Adicionado suporte à tabela de progresso, cancelamento de consulta, autocompletar, progresso de eventos de perfil, stdin e à opçãosend_logs_level. Isso fecha: #74340. #74989 (Nikita Mikhaylov). - Corrige a formatação de exceções usando um formato personalizado se elas ocorrerem durante a interpretação da consulta. Em versões anteriores, as exceções eram formatadas usando o formato padrão em vez do formato especificado na consulta. Isso fecha #55422. #74994 (Alexey Milovidov).
- Foram implementadas melhorias de parsing (parsing de IDs de sequência: foi adicionada a funcionalidade de analisar identificadores de sequência em arquivos de manifesto; e parsing de metadados Avro: o parser de metadados Avro foi reformulado para ser facilmente estendido em melhorias futuras). #75010 (Daniil Ivanik).
- Agora é possível cancelar consultas
ALTER TABLE ... FREEZE ...comKILL QUERYe timeout(max_execution_time). #75016 (Kirill). - Adicionado suporte a
groupUniqArrayArrayMapcomoSimpleAggregateFunction. #75034 (Miel Donkers). - Suporte a prepared statements no protocolo wire do Postgres. #75035 (scanhex12).
- Oculta as configurações de credenciais do catálogo no database engine
Iceberg. Fecha #74559. #75080 (Kseniia Sumarokova). - Adicionados alguns recursos que faltavam no BuzzHouse: os operadores
ILIKEeREGEXP,<=>eIS NOT DISTINCT FROM. #75168 (Pedro Ferreira). - A configuração
min_chunk_bytes_for_parallel_parsingnão pode mais ser definida como zero. Isso corrige: #71110. #75239 (Nikita Mikhaylov). intExp2/intExp10: Definem o comportamento para casos indefinidos: retornam 0 para argumento muito pequeno,18446744073709551615para argumento muito grande e geram exceção senan. #75312 (Vitaly Baranov).- Suporte nativo a
s3.endpointna config do catálogo emDatabaseIceberg. Fecha #74558. #75375 (Kseniia Sumarokova). - Evita falha silenciosa quando o usuário que executa
SYSTEM DROP REPLICAnão tem permissões suficientes. #75377 (Bharat Nallan). - Adiciona um ProfileEvent sobre o número de vezes em que qualquer um dos logs do sistema falhou ao fazer flush. #75466 (Alexey Milovidov).
- Adiciona verificação e logging na descriptografia e descompressão. #75471 (Vitaly Baranov).
- Foi adicionado suporte ao símbolo de micro (U+00B5) na função
parseTimeDelta. Agora, tanto o símbolo de micro (U+00B5) quanto a letra grega mu (U+03BC) são reconhecidos como representações válidas de microssegundos, alinhando o comportamento do ClickHouse à implementação do Go (veja time.go e time/format.go). #75472 (Vitaly Orlov). - Substitui a configuração do servidor (
send_settings_to_client) pela configuração do cliente (apply_settings_from_server), que controla se o código do lado do cliente (por exemplo, para interpretar dados de INSERT e formatar a saída da consulta) deve usar as configurações dousers.xmldo servidor e do perfil do usuário. Caso contrário, são usadas apenas as configurações da linha de comando do cliente, da sessão e da consulta. Observe que isso se aplica apenas ao cliente nativo (não, por exemplo, ao HTTP) e não se aplica à maior parte do processamento da consulta (que acontece no servidor). #75478 (Michael Kolupaev). - Melhoria no Keeper: desativação do cálculo de digest ao fazer commit no armazenamento em memória para melhorar o desempenho. Ele pode ser habilitado com a configuração
keeper_server.digest_enabled_on_commit. O digest ainda é calculado durante o pré-processamento das solicitações. #75490 (Antonio Andelic). - Aplicar push down à expressão de filtro de JOIN ON quando possível. #75536 (Vladimir Cherkasov).
- Mensagens de erro melhores para erros de sintaxe. Anteriormente, se a consulta fosse grande demais e o token cujo comprimento excedia o limite fosse um literal de string muito grande, a mensagem com o motivo se perdia no meio de dois exemplos desse token muito longo. Corrigido o problema em que uma consulta com UTF-8 era truncada incorretamente na mensagem de erro. Corrigido o uso excessivo de aspas em fragmentos de consulta. Isso fecha #75473. #75561 (Alexey Milovidov).
- Adicionar profile events ao armazenamento
S3(Azure)Queue. #75618 (Kseniia Sumarokova). - Desative o envio de configurações do servidor para o cliente (
send_settings_to_client=false) por compatibilidade (Este recurso será reimplementado posteriormente como configuração do cliente para melhorar a usabilidade). #75648 (Michael Kolupaev). - Adiciona a config
memory_worker_correct_memory_trackerpara permitir a correção do memory tracker interno com informações de diferentes fontes, lidas periodicamente pela thread em segundo plano. #75714 (Antonio Andelic). - Use o Analyzer no PrometheusRemoteReadProtocol. #75729 (Dmitry Novik).
- Temos suporte para métricas do tipo gauge/counter. No entanto, elas são insuficientes para algumas métricas (por exemplo, os tempos de resposta de requisições ao Keeper), então é necessário oferecer suporte ao tipo de métrica de histograma. A interface segue de perto a do cliente do Prometheus, em que basta chamar
observe(value)para incrementar o contador no bucket correspondente ao valor. As métricas de histograma são expostas por meio de system.histogram_metrics. #75736 (Miсhael Stetsyuk). - Adicionar a coluna
normalized_query_hashasystem.processes. Observação: embora ela possa ser calculada facilmente em tempo real com a funçãonormalizedQueryHash, isso é necessário para preparar alterações subsequentes. #75756 (Alexey Milovidov). - Consultar
system.tablesnão gerará exceção, mesmo que exista uma tabelaMergecriada sobre um banco de dados que não existe mais. Remova o métodogetTotalRowsdas tabelasHive, porque não permitimos que ele realize operações complexas. #75772 (Alexey Milovidov). - A interface web agora conta com navegação interativa no banco de dados. #75777 (Alexey Milovidov).
- Permite combinar discos somente leitura e de leitura e escrita em uma política de armazenamento (como vários volumes ou vários discos). Isso permite ler dados de todo o volume, enquanto as inserções darão preferência ao disco com escrita habilitada (ou seja, política de armazenamento Copy-on-Write). #75862 (Azat Khuzhin).
- Remove trace_id do ORDER BY padrão de system.opentelemetry_span_log. #75907 (Azat Khuzhin).
- A criptografia (atributo XML
encrypted_by) agora pode ser aplicada a qualquer arquivo de configuração (config.xml, users.xml, arquivos de configuração aninhados). Antes, ela funcionava apenas para o arquivo config.xml principal. #75911 (Mikhail Gorshkov). - Armazene start_time/end_time de backups com precisão de microssegundos. #75929 (Aleksandr Musorin).
- Adicionada a métrica
MemoryTrackingUncorrected, que mostra o valor do rastreador de memória global interno, não corrigido por RSS. #75935 (Antonio Andelic). - Calcular sob demanda os tamanhos das colunas e dos índices no MergeTree. #75938 (Pavel Kruglov).
- Converte join em subconsulta IN se a coluna de saída estiver vinculada à tabela à esquerda; uma etapa de unicidade é necessária primeiro, por isso fica desabilitado por padrão até que essa etapa seja adicionada posteriormente. #75942 (Shichao Jin).
- Foi adicionada uma configuração no nível do servidor,
throw_on_unknown_workload, que permite escolher o comportamento de uma consulta quando a configuraçãoworkloadé definida com um valor desconhecido: permitir acesso ilimitado (padrão) ou gerar um erroRESOURCE_ACCESS_DENIED. Isso é útil para forçar todas as consultas a usarem o escalonamento de workloads. #75999 (Sergei Trifonov). - Garantir que o novo engine de tabela Kafka experimental respeite totalmente as feature flags do Keeper. #76004 (János Benjamin Antal).
- Não reescreva subcolunas como getSubcolumn em ARRAY JOIN se não for necessário. #76018 (Pavel Kruglov).
- Tentar novamente em caso de erros de coordenação ao carregar tabelas. #76020 (Alexander Tokmakov).
- Aprimora a tabela
system.warningse adiciona algumas mensagens de alerta dinâmicas que podem ser adicionadas, atualizadas ou removidas. #76029 (Bharat Nallan). - Suporte para flush de logs individuais em SYSTEM FLUSH LOGS. #76132 (Raúl Marín).
- Melhorias na página
/binarydo servidor. Uso da curva de Hilbert em vez da curva de Morton. Exibição de 512 MB em endereços no quadrado, o que o preenche melhor (nas versões anteriores, os endereços preenchiam apenas metade do quadrado). Coloração dos endereços mais próxima do nome da biblioteca do que do nome da função. Permite rolar um pouco mais para fora da área. #76192 (Alexey Milovidov). - Este PR torna impossível executar a consulta
ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES, porque todas as operaçõesDROPdevem vir primeiro na ordem das operações. #76242 (pufit). - Vários aprimoramentos para
SYNC REPLICA(mensagens de erro aprimoradas, testes aprimorados, verificações de consistência). #76307 (Azat Khuzhin). - Reexecutar consultas ON CLUSTER em caso de TOO_MANY_SIMULTANEOUS_QUERIES. #76352 (Patrick Galbraith).
- O valor padrão de
output_format_pretty_max_rowsfoi alterado de 10000 para 1000. Acho que isso melhora a usabilidade. #76407 (Alexey Milovidov). - Suporte à atualização em tabelas MergeTree de somente leitura. #76467 (Alexey Milovidov).
- Use o fallback correto quando a cópia multipart para S3 falhar durante o backup com Access Denied. A cópia multipart pode gerar erro de Access Denied quando o backup é feito entre buckets com credenciais diferentes. #76515 (Antonio Andelic).
- Desligamento mais rápido dos servidores ClickHouse (sem o atraso de 2,5 s). #76550 (Azat Khuzhin).
- Adicionar query_id a system.errors. Ticket relacionado #75815. #76581 (Vladimir Baikov).
- O librdkafka foi atualizado para a versão 2.8.0, e a sequência de encerramento das tabelas Kafka foi melhorada, reduzindo atrasos durante exclusões de tabelas e reinicializações do servidor. O
engine=Kafkanão sai mais explicitamente do grupo de consumidores quando uma tabela é removida. Em vez disso, o consumidor permanece no grupo até ser removido automaticamente apóssession_timeout_ms(padrão: 45 segundos) de inatividade. #76621 (filimonov). - Corrigida a validação das configurações de requisição do S3. #76658 (Vitaly Baranov).
- Evita a alocação excessiva em readbufferfroms3 e em outros buffers de leitura remota, reduzindo pela metade o consumo de memória. #76692 (Sema Checherinda).
- Suporte ao tipo JSON e à leitura de subcolunas em View. #76903 (Pavel Kruglov).
- Adicionado suporte para converter UInt128 em IPv6. Isso permite a operação
bitAnde operações aritméticas com IPv6, bem como a conversão de volta para IPv6. Fecha #76752. Isso também permite que o resultado da operaçãobitAndem IPv6 seja reconvertido para IPv6. Veja: https://github.com/ClickHouse/ClickHouse/pull/57707. #76928 (Muzammil Abdul Rehman). - Tabelas do sistema como
server_settingsousettingstêm uma colunadefaultde valor padrão, o que é conveniente. Apenasmerge_tree_settingsereplicated_merge_tree_settingsnão têm essa coluna disponível. #76942 (Diego Nieto). - Não analisa valores Bool especiais em formatos de texto dentro do tipo Variant por padrão. É possível habilitar isso com a configuração
allow_special_bool_values_inside_variant. #76974 (Pavel Kruglov). - Suporte à configuração, por tarefa, do tempo de espera de consultas de baixa prioridade no nível da sessão e no nível do servidor. #77013 (VicoWu).
- Adicionado
ProfileEvents::QueryPreempted, que segue a mesma lógica deCurrentMetrics::QueryPreempted. #77015 (VicoWu). - Anteriormente, um banco de dados replicado podia registrar nos logs as credenciais especificadas em uma consulta. Esse comportamento foi corrigido. Isso fecha: #77123. #77133 (Nikita Mikhaylov).
- Atualização do zstd de 1.5.5 para 1.5.7, que traz melhorias de desempenho consideráveis. #77137 (Pradeep Chhetri).
- Permitir ALTER TABLE DROP PARTITION no disco plain_rewritable. #77138 (Julia Kartseva).
- Adicionada a possibilidade de aguardar aleatoriamente até 500 ms, independentemente do tamanho das partes, antes da execução de merges/mutações em caso de replicação zero-copy. #77165 (Alexey Katsman).
- Adiciona suporte à renomeação atômica quando
TRUNCATEé usado comINTO OUTFILE. Resolve #70323. #77181 (Onkar Deshpande). - Use FixedString para os tipos CHARACTER, CHAR e BPCHAR do PostgreSQL. #77304 (Pablo Marcos).
- Permite especificar explicitamente o arquivo de metadados a ser lido pelo Iceberg com a configuração
iceberg_metadata_file_pathda storage/table function. Corrige #47412. #77318 (alesapin). - Suporte ao uso de um disco remoto para que bancos de dados armazenem arquivos de metadados. #77365 (Tuan Pham Anh).
- Implementada a comparação para valores do tipo de dado JSON. Agora, objetos JSON podem ser comparados de forma semelhante a Maps. #77397 (Pavel Kruglov).
- Alteração revertida. #77399 (Yarik Briukhovetskyi).
- A configuração de backup/restauração
allow_s3_native_copyagora oferece suporte a três valores possíveis: -False- a cópia nativa do S3 não será usada; -True(padrão antigo) - o ClickHouse tentará primeiro a cópia nativa do S3; se falhar, recorrerá à abordagem de leitura+gravação; -'auto'(novo padrão) - o ClickHouse comparará primeiro as credenciais de origem e de destino. Se forem iguais, o ClickHouse tentará a cópia nativa do S3 e, em seguida, poderá recorrer à abordagem de leitura+gravação. Se forem diferentes, o ClickHouse seguirá diretamente para a abordagem de leitura+gravação. #77401 (Vitaly Baranov). - Suporte ao ALTER TABLE … ATTACH|DETACH|MOVE|REPLACE PARTITION no disco plain_rewritable. #77406 (Julia Kartseva).
- O cache de índice de skipping foi revertido. #77447 (Nikita Mikhaylov).
- Reduz o uso de memória durante prefetches da coluna JSON em partes Wide. #77640 (Pavel Kruglov).
- Adicionado suporte ao uso de token de sessão da AWS e de credenciais de ambiente no Delta Kernel para o mecanismo de tabela DeltaLake. #77661 (Kseniia Sumarokova).
- Suporte a parâmetros de consulta na configuração
additional_table_filters. Após a alteração, a consulta a seguir passaria a funcionar:. #77680 (wxybear). - Funções Definidas pelo Usuário (UDFs) agora podem ser marcadas como determinísticas por meio de uma nova tag na definição XML. Além disso, o cache de consultas agora verifica se as UDFs usadas em uma consulta são determinísticas. Se esse for o caso, ele armazena em cache o resultado da consulta. (Issue #59988). #77769 (Jimmy Aguilar Mena).
- Adicionada a validação dos parâmetros do mecanismo de tabela Buffer. #77840 (Pervakov Grigorii).
- Adiciona a configuração
enable_hdfs_preadpara habilitar ou desabilitar o pread do HDFS. #77885 (kevinyhzou). - Adiciona eventos de perfil para o número de solicitações ‘multi’ de leitura e escrita do ZooKeeper. #77888 (JackyWoo).
- Permitir a criação e a inserção em tabela temporária quando disable_insertion_and_mutation estiver ativado. #77901 (Xu Jia).
- Reduzir max_insert_delayed_streams_for_parallel_write (para 100). #77919 (Azat Khuzhin).
- Adiciona a opção de configurar o número de colunas que as mesclagens podem gravar em paralelo usando
max_merge_delayed_streams_for_parallel_write(isso deve reduzir em cerca de 25x o uso de memória nas mesclagens verticais para o S3). #77922 (Azat Khuzhin). - Corrigida a interpretação do ano na sintaxe Joda, como em ‘yyy’. #77973 (李扬).
- A anexação das partes de tabelas MergeTree será feita na ordem dos blocos, o que é importante para algoritmos especiais de mesclagem, como o ReplacingMergeTree. Isso fecha #71009. #77976 (Alexey Milovidov).
- As Query masking rules agora podem gerar um LOGICAL_ERROR se houver correspondência. Isso ajudará a verificar se uma senha predefinida está vazando em algum ponto dos logs. #78094 (Nikita Mikhaylov).
- Adicionada a coluna
index_length_columneminformation_schema.tablespara melhorar a compatibilidade com o MySQL. #78119 (Paweł Zakrzewski). - Introduzidas duas novas métricas:
TotalMergeFailureseNonAbortedMergeFailures. Essas métricas são necessárias para detectar os casos em que muitas operações de merge falham em um curto período. #78150 (Miсhael Stetsyuk). - Corrige a análise incorreta da URI do S3 quando a chave não é especificada no estilo path-style. #78185 (Arthur Passos).
- Corrigidos os valores incorretos das métricas assíncronas
BlockActiveTime,BlockDiscardTime,BlockWriteTime,BlockQueueTimeeBlockReadTime(antes da mudança, 1 segundo era reportado incorretamente como 0,001). #78211 (filimonov). - Respeite o limite de
loading_retriespara erros durante o envio para a visão materializada do StorageS3(Azure)Queue. Antes disso, novas tentativas para esses erros eram feitas indefinidamente. #78313 (Kseniia Sumarokova). - No StorageDeltaLake com a implementação delta-kernel-rs, corrige o desempenho e a barra de progresso. #78368 (Kseniia Sumarokova).
- O índice de similaridade vetorial podia alocar memória principal em excesso, em até 2x. Esta correção reformula a estratégia de alocação de memória, reduzindo o consumo de memória e melhorando a eficácia do cache do índice de similaridade vetorial. (problema #78056). #78394 (Shankar Iyer).
- Introduzir uma configuração
schema_typepara a tabelasystem.metric_logcom um tipo de esquema. Há três esquemas permitidos:wide— esquema atual, cada métrica/evento em uma coluna separada (mais eficaz para leituras de colunas individuais),transposed— semelhante asystem.asynchronous_metric_log, métricas/eventos são armazenados como linhas, e o mais interessante,transposed_with_wide_view— cria a tabela subjacente com esquematransposed, mas também introduz uma view com esquemawideque converte consultas para a tabela subjacente. Emtransposed_with_wide_view, não há suporte a resolução de subsegundos na view;event_time_microsecondsé apenas um alias para retrocompatibilidade. #78412 (alesapin). - Suporte a
include,from_env,from_zkem disks de runtime. Fecha #78177. #78470 (Kseniia Sumarokova). - Adiciona várias formas práticas de localizar o arquivo metadata.json na raiz em uma função de tabela e no engine Iceberg. Fecha #78455. #78475 (Daniil Ivanik).
- Suporte à poda de partições no Delta Lake. #78486 (Kseniia Sumarokova).
- Suporte à autenticação por senha no protocolo SSH no ClickHouse. #78586 (Nikita Mikhaylov).
- Adicionado um aviso dinâmico à tabela
system.warningspara mutações em execução há muito tempo. #78658 (Bharat Nallan). - Encerrar conexões se a CPU estiver extremamente sobrecarregada. A decisão é tomada com base na razão entre o tempo de espera (
OSCPUWaitMicroseconds) e o tempo de uso (OSCPUVirtualTimeMicroseconds). A consulta é descartada com certa probabilidade quando essa razão está entremin_os_cpu_wait_time_ratio_to_drop_connectionemax_os_cpu_wait_time_ratio_to_drop_connection. #78778 (Alexey Katsman). - Permitir valor vazio no particionamento Hive. #78816 (Arthur Passos).
- Corrige a coerção de tipo na cláusula
INparaBFloat16(ou seja,SELECT toBFloat16(1) IN [1, 2, 3];agora retorna1). Fecha #78754. #78839 (Raufs Dunamalijevs). - Não verificar partes em outros disks do MergeTree se
disk=estiver definido. #78855 (Azat Khuzhin). - Padronizar os tipos de dados em
used_data_type_familiesnosystem.query_log. #78972 (Kseniia Sumarokova).
Correção de bug (comportamento incorreto perceptível ao usuário em uma versão estável oficial)
- Corrige erro que impedia a criação do nó SEQUENTIAL com o keeper-client. #64177 (Duc Canh Le).
- Corrige a resolução de identificadores em escopos superiores. Permite o uso de aliases para expressões na cláusula WITH. Corrige #58994. Corrige #62946. Corrige #63239. Corrige #65233. Corrige #71659. Corrige #71828. Corrige #68749. #66143 (Dmitry Novik).
- Corrigida a contagem incorreta de caracteres em PositionImpl::vectorVector. #71003 (思维).
- Corrigir a monotonicidade da função negate. Em versões anteriores, a consulta
select * from a where -x = -42;, em quexé a chave primária, pode retornar um resultado incorreto. #71440 (Michael Kolupaev). - As operações
RESTOREpara entidades de acesso exigiam mais permissões do que o necessário devido a revogações parciais não tratadas. Este PR corrige o problema. Fecha #71853. #71958 (pufit). - Evita pausas após
ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE. Obtém as configurações corretas para o agendamento de tarefas em segundo plano. #72024 (Aleksei Filatov). - Corrige o tratamento de tupla vazia em arrayIntersect. Isso corrige #72578. #72581 (Amos Bird).
- Corrigido o tratamento de tuplas vazias em alguns formatos de entrada e saída (por exemplo, Parquet, Arrow). #72616 (Michael Kolupaev).
- Instruções GRANT SELECT/INSERT em nível de coluna em bancos de dados/tabelas com curinga agora geram um erro. #72646 (Johann Gan).
- Corrige a situação em que um usuário não consegue executar
REVOKE ALL ON *.*por causa de grants implícitos na entidade de acesso de destino. #72872 (pufit). - Corrigido travamento durante o processamento de lote pendente para INSERT distribuído assíncrono (devido, por exemplo, a
No such file or directory). #72939 (Azat Khuzhin). - Adicionar suporte a tokens SAS do Azure. #72959 (Azat Khuzhin).
- Corrige a formatação de fuso horário com deslocamento positivo na função escalar formatDateTime. #73091 (ollidraese).
- Correção para refletir corretamente a porta de origem quando a connection é feita por meio de PROXYv1 e
auth_use_forwarded_addressestá definido — anteriormente, a porta do proxy era usada de forma incorreta. Adicionada a funçãocurrentQueryID(). #73095 (Yakov Olkhovskiy). - Propagar as configurações de formato para o NativeWriter em TCPHandler, para que configurações como
output_format_native_write_json_as_stringsejam aplicadas corretamente. #73179 (Pavel Kruglov). - Corrigida a leitura de subcolunas de subobjetos JSON com prefixo incorreto. #73182 (Pavel Kruglov).
- Corrige uma falha em StorageObjectStorageQueue. #73274 (Kseniia Sumarokova).
- Corrige uma falha rara na view materializada atualizável durante o desligamento do servidor. #73323 (Michael Kolupaev).
- O
placeholder%fda funçãoformatDateTimeagora gera incondicionalmente seis dígitos de fração de segundo. Isso torna o comportamento compatível com a função MySQLDATE_FORMAT. O comportamento anterior pode ser restaurado usando a configuraçãoformatdatetime_f_prints_scale_number_of_digits = 1. #73324 (ollidraese). - A conversão de data e hora foi aprimorada durante a análise de índice com a aplicação de comportamento de saturação às conversões implícitas de Date para DateTime. Isso resolve possíveis imprecisões na análise de índice causadas pelas limitações do intervalo de datetime. Isso corrige #73307. Também corrige a conversão explícita
toDateTimequandodate_time_overflow_behavior = 'ignore', que é o valor padrão. #73326 (Amos Bird). - Corrigida a filtragem pela coluna
_etagdurante a leitura do armazenamentos3e da função de tabela. #73353 (Anton Popov). - Corrige o erro
Not-ready Set is passed as the second argument for function 'in'ao usarIN (subquery)na expressãoJOIN ONcom o analisador antigo. #73382 (Nikolai Kochetov). - Corrige a preparação para squashin em colunas Dynamic e JSON. Antes, em alguns casos, novos tipos podiam ser inseridos em variant compartilhado/dados compartilhados mesmo quando o limite de tipos/caminhos ainda não havia sido atingido. #73388 (Pavel Kruglov).
- Verifica se há tamanhos corrompidos durante a decodificação binária de tipos para evitar alocações grandes demais. #73390 (Pavel Kruglov).
- Corrigido um erro lógico na leitura de um cluster com uma única réplica e com réplicas paralelas habilitadas. #73403 (Michael Kolupaev).
- Corrigido o ObjectStorageQueue com ZooKeeper e versões mais antigas do Keeper. #73420 (Antonio Andelic).
- Implementa uma correção necessária para habilitar o particionamento no estilo Hive por padrão. #73479 (Yarik Briukhovetskyi).
- Corrige a condição de corrida ao criar índice de similaridade vetorial. #73517 (Antonio Andelic).
- Corrige segfault quando a origem do dicionário contém uma função com dados inválidos. #73535 (Yarik Briukhovetskyi).
- Corrige as retentativas de insert com falha no storage S3(Azure)Queue. Fecha #70951. #73546 (Kseniia Sumarokova).
- Corrigido um erro na função
tupleElementque pode ocorrer, em alguns casos, em tuplas com elementosLowCardinalitye com a configuraçãooptimize_functions_to_subcolumnshabilitada. #73548 (Anton Popov). - Corrige a análise sintática de enum glob seguido por outro de intervalo. Corrige #73473. #73569 (Konstantin Bogdanov).
- Corrigido um problema em que parallel_replicas_for_non_replicated_merge_tree era ignorado em subconsultas para tabelas não replicadas. #73584 (Igor Nikonov).
- Correção para
std::logical_errorgerada quando uma tarefa não pode ser agendada. Detectado em testes de estresse. Exemplo de stack trace:2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:.#73629 (Alexander Gololobov). - Não interprete consultas em
EXPLAIN SYNTAXpara evitar erros lógicos devido a um estágio de processamento incorreto em consultas distribuídas. Corrige #65205. #73634 (Dmitry Novik). - Corrige uma possível inconsistência de dados na coluna Dynamic. Corrige o possível erro lógico
Nested columns sizes are inconsistent with local_discriminators column size. #73644 (Pavel Kruglov). - Corrigido
NOT_FOUND_COLUMN_IN_BLOCKem consultas comFINALeSAMPLE. Corrigido um resultado incorreto em consultasSELECTcomFINALdeCollapsingMergeTreee habilitadas as otimizações deFINAL. #73682 (Anton Popov). - Corrigida falha em LIMIT BY COLUMNS. #73686 (Raúl Marín).
- Corrige o bug quando o uso da projeção normal é forçado e a consulta é exatamente igual à projeção definida, mas a projeção não é selecionada e, assim, um erro é exibido. #73700 (Shichao Jin).
- Corrige a desserialização da estrutura Dynamic/Object. Isso poderia levar a exceções CANNOT_READ_ALL_DATA. #73767 (Pavel Kruglov).
- Ignorar
metadata_version.txtdurante a restauração de partes a partir de um backup. #73768 (Vitaly Baranov). - Corrigido #73737. #73775 (zhanglistar).
- Corrige #72078 ( o suporte ao S3 Express não estava funcionando ). #73777 (Sameer Tamsekar).
- Permitir a mesclagem de linhas com valores inválidos na coluna de sinal em tabelas do tipo CollapsingMergeTree. #73864 (Christoph Wurm).
- Corrige o erro a seguir:
Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5. #73876 (Tuan Pham Anh). - Corrige uma falha ocasional na comparação de tipos
map(), devido à possibilidade de criarMapsem a nomeação explícita (‘keys’,‘values’) de sua tupla aninhada. #73878 (Yakov Olkhovskiy). - Ignora funções de janela durante a resolução da cláusula GROUP BY ALL. Corrige #73501. #73916 (Dmitry Novik).
- Propagar corretamente as configurações do Native format na comunicação cliente-servidor. #73924 (Pavel Kruglov).
- Corrigidos os privilégios implícitos (antes funcionavam como curinga). #73932 (Azat Khuzhin).
- Corrige o alto consumo de memória durante a criação de maps aninhados. #73982 (Pavel Kruglov).
- Corrige o parsing de JSON aninhado com chaves vazias. #73993 (Pavel Kruglov).
- Correção: o alias pode deixar de ser adicionado à projection se for referenciado por outro alias e selecionado na ordem inversa. #74033 (Yakov Olkhovskiy).
- Um disk que usa os metadados plain_rewritable pode ser compartilhado entre várias instâncias do servidor. Espera-se que uma instância leia um objeto de metadados enquanto outra o modifica. Erros de objeto não encontrado são ignorados durante a inicialização do plain_rewritable com o armazenamento Azure, de forma semelhante ao comportamento implementado para o S3. #74059 (Julia Kartseva).
- Corrige o comportamento de
anyeanyLastcom tipos enum e tabela vazia. #74061 (Joanna Hulboj). - Corrige o caso em que o usuário especifica argumentos nomeados no engine de tabela Kafka. #74064 (Yarik Briukhovetskyi).
- Corrigido o problema ao alterar as configurações de armazenamento
S3Queuecom o prefixo “s3queue_” para sem ele, e vice-versa. #74075 (Kseniia Sumarokova). - Adiciona uma configuração
allow_push_predicate_ast_for_distributed_subqueries. Isso adiciona push-down de predicados baseado em AST para consultas distribuídas com o analisador. Esta é uma solução temporária que usamos até que haja suporte a consultas distribuídas com serialização de plano de consulta. Fecha #66878 #69472 #65638 #68030 #73718. #74085 (Nikolai Kochetov). - Corrige o problema em que, após #73095, a porta pode estar presente no campo forwarded_for, o que impede a resolução do nome do host com a porta incluída. #74116 (Yakov Olkhovskiy).
- Corrigida a formatação incorreta de
ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...). #74126 (Han Fei). - Correção do problema #66112. #74128 (Anton Ivashkin).
- Não é mais possível usar
Loopcomo engine de tabela emCREATE TABLE. Essa combinação causava segfaults anteriormente. #74137 (Yarik Briukhovetskyi). - Corrige uma falha de segurança para evitar injeção de SQL nas funções de tabela do PostgreSQL e SQLite. #74144 (Pablo Marcos).
- Corrige uma falha ao ler uma subcoluna de uma tabela do engine Memory comprimida. Corrige #74009. #74161 (Nikita Taranov).
- Foi corrigido um loop infinito que ocorria em consultas à system.detached_tables. #74190 (Konstantin Morozov).
- Corrige erro lógico no S3Queue ao marcar o arquivo como falho. #74216 (Kseniia Sumarokova).
- Verificação de tipos não suportados em alguns mecanismos de armazenamento. #74218 (Pavel Kruglov).
- Corrige travamento com a consulta
INSERT INTO SELECTna interface PostgreSQL no macOS (problema #72938). #74231 (Artem Yurov). - Corrige as configurações de cópia nativa (
allow_s3_native_copy/allow_azure_native_copy) noRESTOREa partir do backup base. #74286 (Azat Khuzhin). - Corrigido o problema que ocorria quando o número de tabelas desanexadas no banco de dados era um múltiplo de max_block_size. #74289 (Konstantin Morozov).
- Corrige a cópia via ObjectStorage (ou seja, S3) quando as credenciais de origem e destino são diferentes. #74331 (Azat Khuzhin).
- Corrigido o
max_log_ptrnão inicializado no banco de dados replicado. #74336 (Konstantin Morozov). - Corrige a detecção de “usar o método Rewrite na API JSON” para cópia nativa no GCS. #74338 (Azat Khuzhin).
- Corrige travamento ao inserir um intervalo (problema #74299). #74478 (NamNguyenHoai).
- Corrige a análise incorreta de projeções quando
count(nullable)é usado em projeções agregadas. Isso corrige #74495. Este PR também adiciona alguns logs sobre a análise de projeções para esclarecer por que uma projeção é usada ou por que não é. #74498 (Amos Bird). - Corrige o cálculo incorreto de
BackgroundMergesAndMutationsPoolSize(estava 2x acima do valor real). #74509 (alesapin). - Corrige o bug de vazamento de watches no Keeper ao habilitar o Cluster Discovery. #74521 (RinChanNOW).
- Corrige a formatação de literais JSON constantes. Antes, isso podia causar erros de sintaxe ao enviar a consulta para outro servidor. #74533 (Pavel Kruglov).
- Corrigido problema de alinhamento de memória relatado pelo UBSan #74512. #74534 (Arthur Passos).
- Corrigida a limpeza concorrente do KeeperMap durante a criação da tabela. #74568 (Antonio Andelic).
- Não remova colunas de projeção não usadas em subconsultas na presença de
EXCEPTouINTERSECT, para preservar o resultado correto da consulta. Corrige #73930. Corrige #66465. #74577 (Dmitry Novik). - Corrige falha em consultas CREATE ao usar expressões de partição constantes com projeções implícitas habilitadas. Isso corrige #74596 . #74634 (Amos Bird).
- Corrigidas consultas
INSERT SELECTentre tabelas com colunas do tipoTuplee com serialização esparsa habilitada. #74698 (Anton Popov). - A função
rightfunciona incorretamente com offset negativo constante. #74701 (Daniil Ivanik). - Corrigida a falha ocasional ao inserir dados compactados com gzip, causada por uma descompressão defeituosa no lado do cliente. #74707 (siyuan).
- Evitar deixar a conexão em estado inconsistente após o término do INSERT com exceção. #74740 (Azat Khuzhin).
- Evite reutilizar conexões que ficaram em estado intermediário. #74749 (Azat Khuzhin).
- Revogações parciais de grants com curinga podiam remover mais privilégios do que o esperado. Fecha #74263. #74751 (pufit).
- Corrige travamento durante a análise da declaração do tipo JSON quando o nome do tipo não está em maiúsculas. #74784 (Pavel Kruglov).
- Correção no Keeper: corrige a leitura de registros de log em disco. #74785 (Antonio Andelic).
- Corrigida a verificação de privilégios para SYSTEM REFRESH/START/STOP VIEW; agora não é mais necessário ter esse privilégio em
*.*para executar uma consulta em uma view específica, apenas os privilégios dessa view são exigidos. #74789 (Alexander Tokmakov). - A função
hasColumnInTablenão considera colunas de alias. Corrigida para também funcionar com colunas de alias. #74841 (Bharat Nallan). - Keeper: corrige logical_error quando a conexão havia sido encerrada antes de ser estabelecida. #74844 (Michael Kolupaev).
- Corrige um comportamento em que o servidor não conseguia iniciar quando havia uma tabela usando
AzureBlobStorage. As tabelas agora são carregadas sem nenhuma solicitação ao Azure. #74880 (Alexey Katsman). - Corrige a falta dos campos
used_privilegesemissing_privilegesemquery_logpara operações de BACKUP e RESTORE. #74887 (Alexey Katsman). - Correção do erro FILE_DOESNT_EXIST que ocorria na mesclagem de partes de dados em uma tabela com uma coluna vazia no Azure Blob Storage. #74892 (Julia Kartseva).
- Corrige o nome da coluna da projeção ao fazer junção de tabelas temporárias, fecha #68872. #74897 (Vladimir Cherkasov).
- Renova o ticket krb do HDFS em caso de erro de sasl durante a solicitação hdfs select. #74930 (inv2004).
- Corrigidas consultas ao banco de dados Replicated nos startup_scripts. #74942 (Azat Khuzhin).
- Corrige problemas com expressões com alias na cláusula
JOIN ONquando é usada uma comparação null-safe. #74970 (Vladimir Cherkasov). - Reverte o estado da part de deleting para outdated quando a operação de remoção falha. #74985 (Sema Checherinda).
- Em versões anteriores, quando havia uma subconsulta escalar, passamos a registrar o progresso (acumulado durante o processamento da subconsulta) na inicialização do formato de dados, antes de os cabeçalhos HTTP serem gravados. Isso fazia com que cabeçalhos HTTP, como X-ClickHouse-QueryId e X-ClickHouse-Format, além do Content-Type, fossem perdidos. #74991 (Alexey Milovidov).
- Corrigidas consultas
CREATE TABLE AS...comdatabase_replicated_allow_replicated_engine_arguments=0. #75000 (Bharat Nallan). - Corrigido problema que deixava a conexão em um estado incorreto no cliente após exceções de INSERT. #75030 (Azat Khuzhin).
- Corrigida falha causada por exceção não capturada na replicação do PSQL. #75062 (Azat Khuzhin).
- O Sasl pode falhar em qualquer chamada rpc; a correção permite repetir a chamada caso o ticket krb5 tenha expirado. #75063 (inv2004).
- Corrigido o uso de índices (primários e secundários) em colunas
Array,MapeNullable(..)com a configuraçãooptimize_function_to_subcolumnshabilitada. Antes, os índices dessas colunas podiam ser ignorados. #75081 (Anton Popov). - Desative
flatten_nestedao criar visões materializadas com tabelas internas, pois não será possível usar essas colunas achatadas. #75085 (Christoph Wurm). - Correção de um problema em que alguns endereços IPv6 (como ::ffff:1.1.1.1) no campo forwarded_for eram interpretados incorretamente, resultando na desconexão do cliente com uma exceção. #75133 (Yakov Olkhovskiy).
- Corrige o tratamento de JOIN null-safe para o tipo de dado LowCardinality Nullable. Antes, JOIN ON com comparação null-safe, como
IS NOT DISTINCT FROM,<=>,a IS NULL AND b IS NULL OR a == b, não funcionava corretamente com colunas LowCardinality. #75143 (Vladimir Cherkasov). - Corrige consultas com interpolação não utilizada no novo analisador. #75173 (János Benjamin Antal).
- Corrigido o bug de travamento de CTE com insert. #75188 (Shichao Jin).
- Correção do Keeper: evita gravar em changelogs danificados ao fazer rollback dos logs. #75197 (Antonio Andelic).
- Use
BFloat16como supertipo quando apropriado. Isso fecha: #74404. #75236 (Nikita Mikhaylov). - Corrige valores padrão inesperados no resultado de JOIN com any_join_distinct_right_table_keys e OR na cláusula JOIN ON. #75262 (Vladimir Cherkasov).
- Mascarar as credenciais do mecanismo de tabela azureblobstorage. #75319 (Garrett Thomas).
- Corrigido o comportamento em que o ClickHouse podia aplicar indevidamente pushdown de filtro a um banco de dados externo, como PostgreSQL, MySQL ou SQLite. Isso fecha: #71423. #75320 (Nikita Mikhaylov).
- Corrige um travamento no cache de esquema do Protobuf que pode ocorrer durante a saída em formato Protobuf e a consulta paralela
SYSTEM DROP FORMAT SCHEMA CACHE. #75357 (Pavel Kruglov). - Corrige um possível erro lógico ou problema de memória não inicializada quando um filtro de
HAVINGé aplicado antecipadamente com réplicas paralelas. #75363 (Vladimir Cherkasov). - Oculta informações sensíveis nas funções de tabela e nos motores de tabela
icebergS3eicebergAzure. #75378 (Kseniia Sumarokova). - A função
TRIMagora lida corretamente com caracteres de remoção vazios calculados. Exemplo:SELECT TRIM(LEADING concat('') FROM 'foo')(Problema #69922). #75399 (Manish Gill). - Corrigida uma condição de corrida em IOutputFormat. #75448 (Pavel Kruglov).
- Corrige um possível erro
Elements ... and ... of Nested data structure ... (Array columns) have different array sizesquando subcolunas JSON do tipo Array são usadas em JOIN com tabelas distribuídas. #75512 (Pavel Kruglov). - Corrige o cálculo incorreto do tamanho do buffer de resultados. Fecha #70031. #75548 (Konstantin Bogdanov).
- Corrigida a interação entre allow_feature_tier e a configuração de compatibilidade do MergeTree. #75635 (Raúl Marín).
- Corrige o valor incorreto de processed_rows em system.s3queue_log caso tenha havido nova tentativa de processar o arquivo. #75666 (Kseniia Sumarokova).
- Passa a respeitar
materialized_views_ignore_errorsquando uma visão materializada grava em um URL engine e há um problema de conectividade. #75679 (Christoph Wurm). - Corrigidas falhas raras ao ler uma tabela
MergeTreeapós múltiplas consultasRENAMEassíncronas (comalter_sync = 0) entre colunas de tipos diferentes. #75693 (Anton Popov). - Corrigido o erro
Block structure mismatch in QueryPipeline streamem algumas consultas comUNION ALL. #75715 (Nikolai Kochetov). - Reconstrói a projeção ao executar alter modify na coluna de sua PK. Antes, isso podia levar a erros
CANNOT_READ_ALL_DATAdurante consultas após o alter modify da coluna usada na PK da projeção. #75720 (Pavel Kruglov). - Corrigido o resultado incorreto de
ARRAY JOINpara subconsultas escalares (com analisador). #75732 (Nikolai Kochetov). - Corrigida a desreferenciação de ponteiro nulo em
DistinctSortedStreamTransform. #75734 (Nikita Taranov). - Corrigido o comportamento de
allow_suspicious_ttl_expressions. #75771 (Aleksei Filatov). - Corrige a leitura de memória não inicializada na função
translate. Isso fecha #75592. #75794 (Alexey Milovidov). - Propagar as configurações de formato para a formatação de strings em JSON no formato Native. #75832 (Pavel Kruglov).
- Registrado no histórico de alterações das configurações que o
parallel hashpassou a ser o algoritmo de join padrão na v24.12. Isso significa que o ClickHouse continuará a fazer join usandonon-parallel hashse estiver configurado um nível de compatibilidade anterior à v24.12. #75870 (Robert Schulze). - Corrigido um bug que impedia que tabelas com índices min-max adicionados implicitamente fossem copiadas para uma nova tabela (problema #75677). #75877 (Smita Kulkarni).
clickhouse-library-bridgepermite abrir bibliotecas arbitrárias do sistema de arquivos, o que significa que ele só é seguro quando executado em um ambiente isolado. Para evitar uma vulnerabilidade quando ele é executado junto ao clickhouse-server, vamos limitar os caminhos das bibliotecas a um local especificado na configuração. Essa vulnerabilidade foi encontrada por Arseniy Dugin por meio do ClickHouse Bug Bounty Program. #75954 (Alexey Milovidov).- Acabamos usando serialização JSON para alguns metadados, o que foi um erro, porque o JSON não oferece suporte a dados binários dentro de literais de string, incluindo bytes zero. As consultas SQL podem conter dados binários e UTF-8 inválido, então também precisamos oferecer suporte a isso em nossos arquivos de metadados. Ao mesmo tempo, o
JSONEachRowdo ClickHouse e formatos semelhantes contornam isso ao se desviarem do padrão JSON para permitir um round-trip perfeito dos dados binários. Veja a motivação aqui: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. A solução é tornar a bibliotecaPoco::JSONconsistente com a serialização no formato JSON do ClickHouse. Isso corrige #73668. #75963 (Alexey Milovidov). - Corrigido
Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED)ao executar DETACH PART. #76039 (Aleksei Filatov). - Corrigida a verificação dos limites de commit no armazenamento
S3Queue. #76104 (Kseniia Sumarokova). - Corrigido o problema ao anexar tabelas MergeTree com índices automáticos (
add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns). #76139 (Azat Khuzhin). - Corrigido o problema em que os stack traces das threads pai de um job (configuração
enable_job_stack_trace) não eram exibidos. Corrigido o problema em que a configuraçãoenable_job_stack_tracenão era propagada corretamente para as threads, fazendo com que o conteúdo do stack trace nem sempre respeitasse essa configuração. #76191 (Yakov Olkhovskiy). - Corrige o reinterpretAs com FixedString em arquiteturas big-endian. #76253 (Azat Khuzhin).
- Corrige todos os tipos de bugs causados por condição de corrida entre UUIDs e nomes de tabelas (por exemplo, isso corrigirá a condição de corrida entre
RENAMEeRESTART REPLICA; no caso deRENAMEconcorrente comSYSTEM RESTART REPLICA, é possível acabar reiniciando a réplica errada e/ou deixando uma das tabelas no estadoTable X is being restarted). #76308 (Azat Khuzhin). - Removida a alocação no manipulador de sinal. #76446 (Nikita Taranov).
- Corrige o tratamento de erros inesperados durante a evicção no redimensionamento dinâmico do cache do sistema de arquivos. #76466 (Kseniia Sumarokova).
- Corrigida a inicialização de
used_flagno hash em paralelo. Isso pode causar falha no servidor. #76580 (Nikita Taranov). - Corrige um erro lógico ao chamar a função
defaultProfiles()em uma projeção. #76627 (pufit). - Não solicitar autenticação básica interativa no navegador na interface web. Fecha #76319. #76637 (Alexey Milovidov).
- Corrige a exceção THERE_IS_NO_COLUMN ao selecionar um literal booleano em tabelas distribuídas. #76656 (Yakov Olkhovskiy).
- O subcaminho dentro do diretório da tabela agora é escolhido de forma mais criteriosa. #76681 (Daniil Ivanik).
- Corrige o erro
Not found column in blockapós alterar uma tabela com uma subcoluna na PK. Depois de https://github.com/ClickHouse/ClickHouse/pull/72644, requer https://github.com/ClickHouse/ClickHouse/pull/74403. #76686 (Nikolai Kochetov). - Adiciona testes de desempenho para curto-circuitos com NULL e corrige bugs. #76708 (李扬).
- Descarrega os buffers de escrita de saída antes de finalizá-los. Corrige o
LOGICAL_ERRORgerado durante a finalização de alguns formatos de saída, por exemploJSONEachRowWithProgressRowOutputFormat. #76726 (Antonio Andelic). - Adicionado suporte a UUID binário do MongoDB (#74452) - Corrigido o pushdown de WHERE para o MongoDB ao usar a função de tabela (#72210) - Alterado o mapeamento de tipos entre MongoDB e ClickHouse para que o UUID binário do MongoDB só possa ser interpretado como UUID do ClickHouse. Isso deve evitar ambiguidades e surpresas no futuro. - Corrigido o mapeamento de OID, preservando a compatibilidade com versões anteriores. #76762 (Kirill Nikiforov).
- Corrige o tratamento de exceções na desserialização em paralelo dos prefixos de subcolunas JSON. #76809 (Pavel Kruglov).
- Corrigir o comportamento da função
lgammapara inteiros negativos. #76840 (Ilya Kataev). - Corrige a análise reversa de chave para chaves primárias definidas explicitamente. Semelhante a #76654. #76846 (Amos Bird).
- Corrigida a impressão formatada dos valores Bool em formato JSON. #76905 (Pavel Kruglov).
- Corrige possível falha causada por rollback incorreto da coluna JSON em caso de erro durante async inserts. #76908 (Pavel Kruglov).
- Anteriormente,
multi_ifpodia retornar colunas de tipos diferentes durante o planejamento e a execução principal. Isso fazia com que o código apresentasse comportamento indefinido do ponto de vista do C++. #76914 (Nikita Taranov). - Corrigida a serialização incorreta de chaves constantes do tipo Nullable no MergeTree. Isso corrige #76939. #76985 (Amos Bird).
- Corrige a ordenação dos valores
BFloat16. Isso fecha #75487. Isso fecha #75669. #77000 (Alexey Milovidov). - Correção de bug no JSON com subcoluna Variant, adicionando uma verificação para ignorar subcolunas efêmeras na verificação de consistência da parte. #72187. #77034 (Smita Kulkarni).
- Corrige travamento ao processar templates no formato Values em caso de incompatibilidade de tipos. #77071 (Pavel Kruglov).
- Não permitir a criação de uma tabela EmbeddedRocksDB com subcoluna na chave primária. Antes, essa tabela podia ser criada, mas consultas
SELECTfalhavam. #77074 (Pavel Kruglov). - Corrige comparação inválida em consultas distribuídas porque o pushdown de predicados para os nós remotos não respeita os tipos dos literais. #77093 (Duc Canh Le).
- Corrige falha durante a criação de tabela Kafka que gerava exceção. #77121 (Pavel Kruglov).
- Suporte ao novo JSON e a subcolunas nos motores Kafka e RabbitMQ. #77122 (Pavel Kruglov).
- Corrige o desenrolamento da pilha em exceções no MacOS. #77126 (Eduard Karacharov).
- Corrigida a leitura da subcoluna ‘null’ na função getSubcolumn. #77163 (Pavel Kruglov).
- Corrige índices de salto que não funcionavam em expressões com literais no analisador e remove casts triviais durante a análise de índices. #77229 (Pavel Kruglov).
- Corrigido o índice de filtro de Bloom com Array e funções não suportadas. #77271 (Pavel Kruglov).
- Devemos verificar a restrição quanto ao número de tabelas apenas durante a consulta CREATE inicial. #77274 (Nikolay Degterinsky).
SELECT toBFloat16(-0.0) == toBFloat16(0.0)agora retornatruecorretamente (antes, retornavafalse). Isso torna o comportamento consistente comFloat32eFloat64. #77290 (Shankar Iyer).- Corrige uma possível referência incorreta à variável key_index não inicializada, o que pode levar a um travamento em compilações de depuração (essa referência não inicializada não causará problemas em compilações de lançamento porque o código subsequente provavelmente gerará erros.) ### entrada de documentação para alterações visíveis ao usuário. #77305 (wxybear).
- Revertido. #77307 (Nikolai Kochetov).
- Corrigido o nome da partição com um valor Bool. O problema foi introduzido em https://github.com/ClickHouse/ClickHouse/pull/74533. #77319 (Pavel Kruglov).
- Corrige a comparação entre Tuples com elementos Nullable e Strings. Por exemplo, antes da mudança, a comparação entre um Tuple
(1, null)e uma String'(1,null)'resultava em um erro. Outro exemplo é a comparação entre um Tuple(1, a), em queaé uma coluna Nullable, e uma String'(1, 2)'. Esta mudança corrige esses problemas. #77323 (Alexey Katsman). - Corrige um travamento em ObjectStorageQueueSource. O problema foi introduzido em https://github.com/ClickHouse/ClickHouse/pull/76358. #77325 (Pavel Kruglov).
- Corrigido um bug em que o parâmetro de consulta
close_sessionnão surtia efeito, fazendo com que as sessões nomeadas fossem fechadas apenas apóssession_timeout. #77336 (Alexey Katsman). - Corrigido
async_insertcominput(). #77340 (Azat Khuzhin). - Correção:
WITH FILLpode falhar comNOT_FOUND_COLUMN_IN_BLOCKquando o planejador remove a coluna de ordenação. Problema semelhante relacionado ao cálculo inconsistente da DAG para a expressãoINTERPOLATE. #77343 (Yakov Olkhovskiy). - Revertido. #77390 (Vladimir Cherkasov).
- Corrigido o recebimento de mensagens do servidor NATS sem MV associada. #77392 (Dmitry Novikov).
- Corrigido erro lógico ao ler de
FileLogvazio por meio da função de tabelamerge, fecha #75575. #77441 (Vladimir Cherkasov). - Corrige vários
LOGICAL_ERRORs ao definir um alias para nós AST inválidos. #77445 (Raúl Marín). - Na implementação do cache do sistema de arquivos, foi corrigido o tratamento de erros durante a gravação de segmentos de arquivo. #77471 (Kseniia Sumarokova).
- Faz com que o DatabaseIceberg use o arquivo de metadados correto fornecido pelo catalog. Fecha #75187. #77486 (Kseniia Sumarokova).
- Usar as configurações padrão de formato na serialização Dynamic de variant compartilhado. #77572 (Pavel Kruglov).
- Reversão de ‘Evitar toAST() na execução de subconsultas escalares’. #77584 (Raúl Marín).
- Corrigida a verificação da existência do caminho dos dados da tabela no disco local. #77608 (Tuan Pham Anh).
- O cache de consultas agora assume que as UDFs são não determinísticas. Consequentemente, os resultados de consultas com UDFs não são mais armazenados em cache. Antes, os usuários podiam definir UDFs não determinísticas cujo resultado era indevidamente armazenado em cache (issue #77553). #77633 (Jimmy Aguilar Mena).
- Corrigido o envio de valores constantes para o servidor remoto em alguns tipos. #77634 (Pavel Kruglov).
- Corrige o
system.filesystem_cache_log, que só funcionava com a configuraçãoenable_filesystem_cache_log. #77650 (Kseniia Sumarokova). - Corrigido um erro lógico ao chamar a função
defaultRoles()dentro de uma projeção. Em complemento a #76627. #77667 (pufit). - Corrige falha causada por contexto expirado em StorageS3(Azure)Queue. #77720 (Kseniia Sumarokova).
- Argumentos secundários do tipo
Nullablepara a funçãoarrayResizeagora não são mais permitidos. Antes, o uso deNullablecomo segundo argumento podia causar desde erros até resultados incorretos. (issue #48398). #77724 (Manish Gill). - Ocultar credenciais nos motores de tabela RabbitMQ, Nats, Redis e AzureQueue. #77755 (Kseniia Sumarokova).
- Corrigido comportamento indefinido na comparação com NaN em ArgMin/ArgMax. #77756 (Raúl Marín).
- Verifica regularmente se merges e mutações foram canceladas, mesmo nos casos em que a operação não produz nenhum bloco para gravação. #77766 (János Benjamin Antal).
- Revertido. #77843 (Vladimir Cherkasov).
- Corrige um possível travamento quando ocorre o erro
NOT_FOUND_COLUMN_IN_BLOCK. #77854 (Vladimir Cherkasov). - Corrige travamento que ocorre em
StorageSystemObjectStorageQueueSettingsdurante o preenchimento de dados. #77878 (Bharat Nallan). - Desabilitada a busca difusa no histórico do servidor SSH (já que requer o skim). #78002 (Azat Khuzhin).
- Corrige um bug em que uma consulta de busca vetorial em uma coluna não indexada retornava resultados incorretos se houvesse outra coluna vetorial na tabela com um índice de similaridade vetorial definido. (Problema #77978). #78069 (Shankar Iyer).
- Corrige a mensagem
The requested output format {} is binary... Do you want to output it anyway? [y/N]. #78095 (Azat Khuzhin). - Correção de um bug no caso de
toStartOfIntervalcom o argumentooriginigual a zero. #78096 (Yarik Briukhovetskyi). - Impedir a definição de um parâmetro de consulta
session_idvazio na interface HTTP. #78098 (Alexey Katsman). - Corrige a sobrescrita de metadados no Database Replicated, que podia ocorrer devido à execução de uma consulta RENAME logo após uma consulta ALTER. #78107 (Nikolay Degterinsky).
- Corrige travamento no mecanismo NATS. #78108 (Dmitry Novikov).
- Não tente criar um
history_fileem um cliente embutido para SSH. #78112 (Azat Khuzhin). - Corrige a exibição de informações incorretas em
system.detached_tablesapós consultas RENAME DATABASE ou DROP TABLE. #78126 (Nikolay Degterinsky). - Correção nas verificações de excesso de tabelas com Database Replicated após https://github.com/ClickHouse/ClickHouse/pull/77274. Além disso, realizar a verificação antes de criar o armazenamento para evitar a criação de nós não contabilizados no ZooKeeper no caso de RMT ou KeeperMap. #78127 (Nikolay Degterinsky).
- Corrige possível travamento devido à inicialização simultânea dos metadados do S3Queue. #78131 (Azat Khuzhin).
- As funções
groupArray*agora produzem o erro BAD_ARGUMENTS para o valor 0 do tipo Int no argumento max_size, assim como já acontece para o tipo UInt, em vez de tentar executar a função com esse valor. #78140 (Eduard Karacharov). - Evita travamento ao executar recoverLostReplica se a tabela local for removida antes de ser desanexada. #78173 (Raúl Marín).
- Corrige a coluna “alterable” em system.s3_queue_settings, que sempre retornava
false. #78187 (Kseniia Sumarokova). - Masque a assinatura de acesso do Azure para que não fique visível ao usuário nem nos logs. #78189 (Kseniia Sumarokova).
- Corrige o pré-carregamento de subfluxos com prefixos em partes no formato Wide. #78205 (Pavel Kruglov).
- Corrigidos travamentos / resultado incorreto em
mapFromArraysno caso do tipoLowCardinality(Nullable)no array de chaves. #78240 (Eduard Karacharov). - Corrige as opções de autenticação do delta-kernel. #78255 (Kseniia Sumarokova).
- Não agendar a tarefa RefreshMV se
disable_insertion_and_mutationde uma réplica for true. Uma tarefa corresponde a alguma inserção; ela falhará sedisable_insertion_and_mutationfor true. #78277 (Xu Jia). - Validar o acesso às tabelas subjacentes do mecanismo Merge. #78339 (Pervakov Grigorii).
- O modificador FINAL pode se perder em tabela com engine
Distributed. #78428 (Yakov Olkhovskiy). Bitmapminretorna uint32_max quando o bitmap estáempty(uint64_max when input type >= 8bits), o que corresponde ao comportamento deminimum()de umroaring_bitmapvazio. #78444 (wxybear).- Reverter “a aplicação do atributo preserve_most em alguns pontos do código”, pois isso pode causar falhas. #78449 (Azat Khuzhin).
- Use colunas de inserção para a inferência de esquema do INFILE. #78490 (Pervakov Grigorii).
- Desabilita o processamento paralelo de consultas logo após ler
FROMquandodistributed_aggregation_memory_efficientestiver habilitado, pois isso pode levar a um erro lógico. Fecha #76934. #78500 (flynn). - Definido pelo menos um stream de leitura caso haja zero streams planejados após aplicar a configuração
max_streams_to_max_threads_ratio. #78505 (Eduard Karacharov). - No armazenamento S3Queue, corrige o erro lógico “Não é possível remover o registro: o UUID da tabela não está registrado”. Fecha #78285. #78541 (Kseniia Sumarokova).
- O ClickHouse agora consegue identificar seu cgroup v2 em sistemas com cgroups v1 e v2 habilitados. #78566 (Grigory Korolev).
- As table functions de cluster do ObjectStorage falhavam quando usadas com configurações no nível da tabela. #78587 (Daniil Ivanik).
- Verificações de transações mais robustas não são suportadas pelo ReplicatedMergeTree em
INSERTs. #78633 (Azat Khuzhin). - Aplicar configurações da consulta ao anexar. #78637 (Raúl Marín).
- Corrige um travamento quando um caminho inválido é informado em
iceberg_metadata_file_path. #78688 (alesapin). - No table engine DeltaLake com a implementação delta-kernel, foi corrigido o caso em que o schema de leitura é diferente do schema da tabela e há colunas de partição ao mesmo tempo, o que levava a um erro de coluna não encontrada. #78690 (Kseniia Sumarokova).
- Esta atualização corrige um bug em que uma nova sessão nomeada era inadvertidamente encerrada no momento programado para o encerramento de uma sessão anterior, se ambas compartilhassem o mesmo nome e a nova fosse criada antes de o tempo limite da antiga expirar. #78698 (Alexey Katsman).
- Não bloquear o encerramento da tabela durante a execução de CHECK TABLE. #78782 (Raúl Marín).
- Correção no Keeper: corrige a contagem de itens efêmeros em todos os casos. #78799 (Antonio Andelic).
- Corrige cast incorreto em
StorageDistributedao usar funções de tabela diferentes deview(). Fecha #78464. #78828 (Konstantin Bogdanov). - Corrige a formatação de
tupleElement(*, 1). Fecha #78639. #78832 (Konstantin Bogdanov). - Dicionários do tipo
ssd_cacheagora rejeitam os parâmetrosblock_sizeewrite_buffer_sizequando são zero ou negativos (issue #78314). #78854 (Elmi Ahmadov). - Corrige falha em MV REFRESHABLE no caso de ALTER após desligamento incorreto. #78858 (Azat Khuzhin).
- Corrige o processamento de valores DateTime inválidos no formato CSV. #78919 (Pavel Kruglov).
Melhoria em compilação/testes/empacotamento
- A dependência interna LLVM foi atualizada da versão 16 para a versão 18. #66053 (Nikita Mikhaylov).
- Restaura os testes de integração do nats removidos e corrige erros. - corrigidas algumas condições de corrida no engine do nats - corrigida a perda de dados ao fazer streaming de dados para o nats em caso de perda de conexão - corrigido o travamento no recebimento do último fragmento de dados quando o streaming a partir do nats terminava - nats_max_reconnect está descontinuado e não tem efeito; a reconexão é realizada permanentemente com o timeout nats_reconnect_wait. #69772 (Dmitry Novikov).
- Corrige o problema que impedia a geração dos arquivos asm do OpenSSL em contrib. #72622 (RinChanNOW).
- Melhora a estabilidade do teste 03210_variant_with_aggregate_function_type. #74012 (Anton Ivashkin).
- Suporte à compilação do HDFS em Macs ARM e Intel. #74244 (Yan Xin).
- O script universal de instalação passará a oferecer a instalação até mesmo no macOS. #74339 (Alexey Milovidov).
- Corrige a compilação quando o Kerberos não está habilitado. #74771 (flynn).
- Atualização do LLVM 19 embutido. #75148 (Konstantin Bogdanov).
- Potencialmente incompatível: melhoria para tornar os padrões ainda mais restritivos. Os padrões atuais já são seguros. O usuário precisa especificar uma opção para publicar portas explicitamente. Mas, quando o usuário
defaultnão tiver uma senha definida porCLICKHOUSE_PASSWORDe/ou um nome de usuário alterado pela variável de ambienteCLICKHOUSE_USER, ele deverá ficar acessível apenas no sistema local, como uma camada adicional de proteção. #75259 (Mikhail f. Shiryaev). - Os testes de integração têm um timeout de 1 hora para a execução de um único lote de testes paralelos. Quando esse timeout é atingido, o
pytesté interrompido sem gerar alguns logs. O timeout interno do pytest está definido como 55 minutos para imprimir os resultados de uma sessão e não acionar o sinal de timeout externo. Fecha #75532. #75533 (Ilya Yatsishin). - Converta todas as ações relacionadas ao clickhouse-server em uma função e execute-as somente ao iniciar o binário padrão em
entrypoint.sh. Uma melhoria há muito tempo aguardada foi sugerida em #50724. Adicionada a opção--usersaoclickhouse-extract-from-configpara obter valores deusers.xml. #75643 (Mikhail f. Shiryaev). - Para testes de estresse, se o servidor não tiver sido encerrado enquanto coletávamos stacktraces via gdb, será adicionado um tempo de espera extra para reduzir o ruído na detecção de
Possible deadlock on shutdown (see gdb.log). Isso só acrescentará atraso nos casos em que o teste não tiver sido concluído com sucesso. #75668 (Ilya Yatsishin). - Restaura os testes de integração do nats excluídos e corrige erros. - corrigidas algumas condições de corrida no engine do nats - corrigida a perda de dados ao transmitir dados para o nats em caso de perda de conexão - corrigido o travamento ao receber o último fragmento de dados quando a transmissão a partir do nats era encerrada - nats_max_reconnect está obsoleto e não tem efeito; a reconexão é realizada permanentemente com o timeout nats_reconnect_wait. #75850 (Dmitry Novikov).
- Habilite ICU e GRPC ao fazer compilação cruzada para Darwin. #75922 (Raúl Marín).
- Correção da saída do teste de split por causa de
sleepdurante o encerramento do grupo de processos. #76090 (Mikhail f. Shiryaev). - Não colete os
docker-composelogs ao final da execução, pois o script costuma ser interrompido. Em vez disso, colete-os em segundo plano. #76140 (Mikhail f. Shiryaev). - Divide os testes de armazenamento do Kafka em alguns arquivos. Corrige #69452. #76208 (Mikhail f. Shiryaev).
clickhouse-odbc-bridgeeclickhouse-library-bridgeforam transferidos para um repositório separado, https://github.com/ClickHouse/odbc-bridge/. #76225 (Alexey Milovidov).- Removidos cerca de 20 MB de código morto do executável. #76226 (Alexey Milovidov).
- Aumenta a versão mínima exigida do CMake para 3.25 devido à introdução de
block(). #76316 (Konstantin Bogdanov). - Atualização do fmt para 11.1.3. #76547 (Raúl Marín).
- Atualiza
lz4para1.10.0. #76571 (Konstantin Bogdanov). - Atualiza o
curlpara8.12.1. #76572 (Konstantin Bogdanov). - Atualiza o
libcpuidpara0.7.1. #76573 (Konstantin Bogdanov). - Use um formato legível por máquina para processar os resultados do pytest. #76910 (Mikhail f. Shiryaev).
- Corrige a compilação cruzada do Rust e permite desativar o Rust por completo. #76921 (Raúl Marín).
- Exige clang 19 para compilar o projeto. #76945 (Raúl Marín).
- O teste leva mais de 10 segundos para ser executado em modo serial. É tempo demais para testes rápidos. #76948 (Mikhail f. Shiryaev).
- Atualiza
sccachepara0.10.0. #77580 (Konstantin Bogdanov). - Respeita os recursos-alvo da CPU no Rust e habilita LTO em todos os crates. #78590 (Raúl Marín).
- Atualiza o
minizip-ngpara4.0.9. #78917 (Konstantin Bogdanov).