Alterações incompatíveis com versões anteriores
- As funções
greatesteleastagora ignoram valores de entrada NULL, enquanto antes retornavam NULL se um dos argumentos fosse NULL. Por exemplo,SELECT greatest(1, 2, NULL)agora retorna 2. Isso torna o comportamento compatível com o PostgreSQL. #65519 (kevinyhzou). - Tipos Variant/Dynamic não são mais permitidos em ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY por padrão, porque isso pode levar a resultados inesperados. #69731 (Pavel Kruglov).
- Remove as tabelas de sistema
generate_seriesegenerateSeries. Elas foram adicionadas por engano aqui: #59390. #71091 (Alexey Milovidov). - Remove
StorageExternalDistributed. Fecha #70600. #71176 (flynn). - As configurações do config do servidor (users.xml) agora também se aplicam ao cliente. Isso é útil para configurações de formato, por exemplo
date_time_output_format. #71178 (Michael Kolupaev). - Corrige um possível erro
No such file or directorycausado por símbolos especiais não escapados em arquivos de subcolunas JSON. #71182 (Pavel Kruglov). - Os motores de tabela Kafka, NATS e RabbitMQ agora têm seus próprios grants na hierarquia
SOURCES. Adicione grants a quaisquer usuários de banco de dados não padrão que criem tabelas com esses tipos de motor. #71250 (Christoph Wurm). - Verifica a consulta completa da mutação antes de executá-la (incluindo subconsultas). Isso evita executar acidentalmente uma consulta inválida e acumular mutações inúteis que bloqueiam mutações válidas. #71300 (Christoph Wurm).
- Renomeia a configuração do cache do sistema de arquivos
skip_download_if_exceeds_query_cacheparafilesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit. #71578 (Kseniia Sumarokova). - Proíbe tipos Dynamic/Variant em funções min/max para evitar confusão. #71761 (Pavel Kruglov).
- Remove o suporte a argumentos
Enum, bem comoUInt128eUInt256, emdeltaSumTimestamp. Remove também o suporte aInt8,UInt8,Int16eUInt16no segundo argumento (“timestamp”) dedeltaSumTimestamp. #71790 (Alexey Milovidov). - Adiciona validação da consulta de origem quando ClickHouse é usado como origem para um Dicionário. #72548 (Alexey Katsman).
Novos recursos
- Implementado o comando SYSTEM LOAD PRIMARY KEY para carregar os índices primários de todas as partes de uma tabela especificada, ou de todas as tabelas se nenhuma tabela for especificada. Isso será útil para benchmarks e para evitar latência adicional durante a execução de consultas. #66252 (ZAWA_ll).
- Adicionada a instrução
SYSTEM LOAD PRIMARY KEYpara carregar os índices primários de todas as partes de uma tabela específica ou de todas as tabelas, se nenhuma tabela for especificada. Isso pode ser útil para benchmarking e para evitar latência extra durante a execução da consulta. #67733 (ZAWA_ll). - Adicionar a consulta
CHECK GRANTpara verificar se o usuário/role atual recebeu a concessão do privilégio específico e se a tabela/coluna correspondente existe em memória. #68885 (Unalian). - Adicionada sintaxe SQL para descrever o gerenciamento de carga de trabalho e de recursos. Veja a documentação. #69187 (Sergei Trifonov).
- O formato de armazenamento de dados Iceberg oferece ao usuário amplas opções para modificar o esquema de sua tabela. Neste pull request, foi implementada a leitura de uma tabela no formato Iceberg com a ordem das colunas, os nomes das colunas e extensões simples de tipos alterados. #69445 (Daniil Ivanik).
- Permitir que cada método de autenticação tenha sua própria data de expiração; removê-la da entidade de usuário. #70090 (Arthur Passos).
- Enviar roles de usuário externas do originador da consulta para outros nós do cluster. Útil quando apenas o originador tem acesso ao autenticador externo (como LDAP). #70332 (Andrey Zvonov).
- Suporte à alteração de String para JSON. Este PR também altera a serialização dos tipos JSON e Dynamic para a nova versão V2. A versão antiga V1 ainda pode ser usada ao habilitar a configuração
merge_tree_use_v1_object_and_dynamic_serialization(pode ser usada durante a atualização para permitir reverter a versão sem problemas). #70442 (Pavel Kruglov). - Adiciona a função
toUnixTimestamp64Second, que converte umDateTime64em um valorInt64com precisão fixa de segundos, permitindo retornar um valor negativo se a data for anterior a 00:00:00 UTC de quinta-feira, 1º de janeiro de 1970. #70597 (zhanglistar). - Adicionar a nova configuração
enforce_index_structure_match_on_partition_manipulationpara permitir o attach quando as projeções e os índices secundários da tabela de origem forem um subconjunto dos da tabela de destino. Fecha #70602. #70603 (zwy991114). - A saída da função
castdifere da saída do Apache Spark, o que causa diferenças no projeto Gluten; veja https://github.com/apache/incubator-gluten/issues/7602 Este PR adiciona suporte ao formato de saída de texto do Spark como recurso, desativado por padrão. #70957 (zhanglistar). - Adicionado um novo tipo de cabeçalho para endpoints S3 para autenticação de usuário (
access_header). Isso permite obter um cabeçalho de acesso com a menor prioridade, que será substituído poraccess_key_idde qualquer outra origem (por exemplo, um esquema de tabela ou uma coleção nomeada). #71011 (MikhailBurdukov). - Implementação inicial de níveis de configuração. #71145 (Raúl Marín).
- Adiciona suporte à cláusula staleness no operador ORDER BY com WITH FILL. #71151 (Mikhail Artemenko).
- Implementa um CAST simples de Map/Tuple/Object para o novo JSON via serialização/desserialização de uma string JSON. #71320 (Pavel Kruglov).
- Foram adicionados aliases
anyRespectNulls,firstValueRespectNullseanyValueRespectNullspara a função de agregaçãoany. Também foram adicionados aliasesanyLastRespectNullselastValueRespectNullspara a função de agregaçãoanyLast. Isso permite usar uma sintaxe mais natural, apenas com camel case, em vez de misturar camel case e underscore, por exemplo:SELECT anyLastRespectNullsStateIfem vez deanyLast_respect_nullsStateIf. #71403 (Peter Nguyen). - Adicionado o parâmetro de configuração
date_time_utc, permitindo que a formatação de logs em JSON ofereça suporte a data e hora em UTC no formato RFC 3339/ISO8601. #71560 (Ali). - Adicionada uma opção para selecionar o lado do join que atuará como tabela interna (build) no plano da consulta. Isso é controlado por
query_plan_join_swap_table, que pode ser definido comoauto. Nesse modo, o ClickHouse tentará escolher a tabela com o menor número de linhas. #71577 (Vladimir Cherkasov). - Uso de memória otimizado para valores de granularidade de índice quando a granularidade é constante na parte. Foi adicionada a possibilidade de sempre selecionar granularidade constante para a parte (configuração
use_const_adaptive_granularity), o que ajuda a garantir que ela esteja sempre otimizada em termos de memória. Isso ajuda, em grandes cargas de trabalho (trilhões de linhas em armazenamento compartilhado), a evitar o crescimento constante do uso de memória pelos metadados (valores de granularidade de índice) das partes de dados. #71786 (Anton Popov). - Implementa
allowed_feature_tiercomo uma opção global para desativar todas as funcionalidades experimentais / beta. #71841 (Raúl Marín). - Adicionadas as funções de tabela
iceberg[S3;HDFS;Azure]Cluster,deltaLakeCluster,hudiCluster. #72045 (Mikhail Artemenko). - Adicionada a sintaxe
ALTER USER {ADD|MODIFY|DROP SETTING},ALTER USER {ADD|DROP PROFILE}, e o mesmo paraALTER ROLEeALTER PROFILE. #72050 (pufit). - Adicionada a função
arrayPrAUC, que calcula a AUC (área sob a curva) da curva de Precisão-Revocação. #72073 (Emmanuel). - Adicionado cache para o índice primário das tabelas
MergeTree(pode ser habilitado pela configuração da tabelause_primary_key_cache). Se o carregamento sob demanda e o cache estiverem habilitados para o índice primário, ele será carregado no cache quando necessário (semelhante ao cache de marcas), em vez de permanecer na memória indefinidamente. Adicionado pré-aquecimento do índice primário em inserts/merges/fetches de partes de dados e nas reinicializações da tabela (pode ser habilitado pela configuraçãoprewarm_primary_key_cache). #72102 (Anton Popov). - Adicionada a função indexOfAssumeSorted para tipos Array. Otimiza a busca no caso de um Array ordenado em ordem não decrescente. #72517 (Eric Kurbanov).
- Permite usar um delimitador como segundo argumento opcional da função de agregação
groupConcat. #72540 (Yarik Briukhovetskyi). - Uma nova configuração,
http_response_headers, que permite personalizar os cabeçalhos da resposta HTTP. Por exemplo, você pode fazer o navegador exibir uma imagem armazenada no banco de dados. Isso fecha #59620. #72656 (Alexey Milovidov). - Adicionada a função
fromUnixTimestamp64Second, que converte um valor Int64 de timestamp Unix em um DateTime64. #73146 (Robert Schulze).
Melhorias de desempenho
- Adiciona 2 novas configurações
short_circuit_function_evaluation_for_nullseshort_circuit_function_evaluation_for_nulls_threshold, que permitem executar funções em colunasNullableem modo de curto-circuito quando a proporção de valores NULL no bloco de dados excede o limite especificado. Ou seja, a função será executada apenas nas linhas com valores não nulos. Aplica-se apenas a funções que retornam NULL para linhas em que pelo menos um argumento é NULL. #60129 (李扬). - O uso de memória de
clickhouse disks remove --recursivefoi reduzido para discos de armazenamento de objetos. #67323 (Kirill). - Agora, as colunas dos blocos de entrada não serão mais copiadas para
join_algorithm='parallel_hash'ao serem distribuídas entre threads para processamento paralelo. #67782 (Nikita Taranov). - Ativa a compilação JIT para mais expressões:
abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*, funções de comparação (=,<,>,>=,<=) e funções lógicas (and,or). #70598 (李扬). - Agora, o algoritmo
parallel_hashserá usado (se aplicável) quando a configuraçãojoin_algorithmestiver definida comodefault. As duas alternativas anteriores (directehash) ainda serão consideradas quandoparallel_hashnão puder ser usado. #70788 (Nikita Taranov). - Algoritmo de merge
Replacingotimizado para partes não sobrepostas. #70977 (Anton Popov). - Não listar partes desanexadas em disks readonly e write-once nas métricas e em system.detached_parts. #71086 (Alexey Milovidov).
- Não calcule métricas assíncronas pesadas por padrão. O recurso foi introduzido em #40332, mas não faz sentido manter uma tarefa pesada em segundo plano que só é necessária para um único cliente. #71087 (Alexey Milovidov).
- Melhora o desempenho e a precisão do intervalo de coleta de system.query_metric_log ao reduzir a região crítica. #71473 (Pablo Marcos).
- Adiciona uma opção para extrair expressões comuns das expressões
WHEREeON, a fim de reduzir o número de tabelas hash usadas durante as junções. Pode ser habilitada comoptimize_extract_common_expressions = 1. #71537 (János Benjamin Antal). - Permite usar índices em
SELECTcomLowCardinality(String). #71598 (Yarik Briukhovetskyi). - Durante a execução de consultas com réplicas paralelas e plano local habilitado, ignore a análise de índices de salto nos workers. O coordenador escolherá os intervalos a serem lidos pelos workers com base na análise de índices feita do seu lado (no iniciador da consulta). #72109 (Igor Nikonov).
- Restaura a otimização da leitura de subcolunas de uma única coluna em partes Compact de https://github.com/ClickHouse/ClickHouse/pull/57631. Ela foi removida acidentalmente. #72285 (Pavel Kruglov).
- Ordenação de colunas
LowCardinality(String)mais rápida com a desvirtualização de chamadas no comparador. #72337 (Alexander Gololobov). - Otimize a função argMin/Max para alguns tipos de dados mais simples. #72350 (alesapin).
- Otimize o uso de bloqueios compartilhados no rastreador de memória para reduzir a contenção de bloqueios. #72375 (Jiebin Sun).
- Adicionada uma nova configuração,
use_async_executor_for_materialized_views. Usa execução assíncrona e potencialmente multithread para a consulta da visão materializada, o que pode acelerar o processamento das visões durante o INSERT, mas também consumir mais memória. #72497 (alesapin). - Os valores padrão das configurações
max_size_to_preallocate_for_aggregationemax_size_to_preallocate_for_joinsforam aumentados ainda mais para10^12, de modo que a otimização será aplicada em mais casos. #72555 (Nikita Taranov). - Melhorado o desempenho da desserialização de estados de funções de agregação (no tipo de dado
AggregateFunctione em consultas distribuídas). Houve uma leve melhora no desempenho da análise do formatoRowBinary. #72818 (Anton Popov).
Melhoria
- Funções de ordem superior com arrays constantes e argumentos capturados como constantes retornarão constantes. #58400 (Alexey Milovidov).
- Otimização de leitura em ordem com a geração de linhas virtuais, de modo que menos dados sejam lidos durante a ordenação por mesclagem, especialmente útil quando existem múltiplas partes. #62125 (Shichao Jin).
- Os nomes das etapas do plano de consulta (
EXPLAIN PLAN json=1) e dos processadores do pipeline (EXPLAIN PIPELINE compact=0,graph=1) agora têm um ID único como sufixo. Isso permite relacionar a saída do profiler dos processadores e os traces do OpenTelemetry à saída do explain. #63518 (qhsong). - Adicionada a opção de verificar se o objeto existe após a gravação no Azure Blob Storage; isso é controlado pela configuração
check_objects_after_upload. #64847 (Smita Kulkarni). - Corrige a lógica de
use-after-dtoremdestroyElementsdeHashTable. #65279 (cangyin). - Usa o banco de dados
Atomicpor padrão noclickhouse-local. Resolve os itens 1 e 5 da #50647. Fecha #44817. #68024 (Alexey Milovidov). - O buffer de escrita precisa ser cancelado ou finalizado explicitamente. As exceções interrompem o protocolo HTTP para notificar o cliente sobre o erro. #68800 (Sema Checherinda).
- Informar os hosts do DDLWorker em execução ao criar replica_dir e marcar as réplicas como ativas no DDLWorker. #69658 (Tuan Pham Anh).
-
- Refatore
DDLQueryStatusSource: - RenomeieDDLQueryStatusSourceparaDistributedQueryStatusSourcee torne-a uma classe base - Crie duas subclasses,DDLOnClusterQueryStatusSourceeReplicatedDatabaseQueryStatusSource, derivadas deDDLQueryStatusSource, para consultar o status das tarefas DDL deDDL On Clustere de bancos de dados Replicated, respectivamente. 2. Adicione suporte para parar de aguardar hosts offline em `DDLOnClusterQueryStatusSource`. #69660 (Tuan Pham Anh).
- Refatore
- Adicionada uma nova lógica de cancelamento:
CancellationCheckerverifica os timeouts de cada consulta iniciada e a interrompe assim que o timeout é atingido. #69880 (Yarik Briukhovetskyi). - Removida a configuração
allow_experimental_join_condition, permitindo condições não equi por padrão. #69910 (Vladimir Cherkasov). - Ativa
parallel_replicas_local_planpor padrão. A criação de um plano local completo no iniciador da consulta melhora o desempenho das réplicas paralelas com menor consumo de recursos e oferece mais oportunidades para aplicar otimizações de consulta. #70171 (Igor Nikonov). - Adicionada a possibilidade de configurar usuário/senha em http_handlers (para
dynamic_query_handler/predefined_query_handler). #70725 (Azat Khuzhin). - Adiciona suporte a
ALTER TABLE ... MODIFY/RESET SETTING ...para determinadas configurações no armazenamento S3Queue. #70811 (Kseniia Sumarokova). - Não faça chamadas à API de armazenamento de objetos ao listar diretórios, pois isso pode não ser econômico. Em vez disso, armazene a lista de nomes de arquivos na memória. As desvantagens são o aumento do tempo de carregamento inicial e da memória necessária para armazenar os nomes dos arquivos. #70823 (Julia Kartseva).
- Adicionado o parâmetro
--threadsaoclickhouse-compressor, permitindo compactar dados em paralelo. #70860 (Alexey Milovidov). - Permite configurar o tamanho do histórico do cliente Replxx. #71014 (Jiří Kozlovský).
- Foi adicionada uma configuração
prewarm_mark_cacheque habilita o carregamento de marcas no cache de marcas durante inserts, merges, fetches de partes e na inicialização da tabela. #71053 (Anton Popov). - Suporte a valores booleanos no leitor nativo de Parquet. #71055 (Arthur Passos).
- Tentar novamente em caso de mais erros ao interagir com S3, como “Malformed message”. #71088 (Alexey Milovidov).
- Redução do nível de log de algumas mensagens sobre S3. #71090 (Alexey Milovidov).
- Passa a suportar a gravação de arquivos HDFS com espaços. #71105 (exmy).
system.session_logestá bem bom. Isso fecha #51760. #71150 (Alexey Milovidov).- Corrige junções RIGHT / FULL em consultas com réplicas paralelas. Agora, junções RIGHT podem ser executadas com réplicas paralelas (a leitura da tabela da direita é distribuída). Junções FULL não podem ser paralelizadas entre nós e são executadas localmente. #71162 (Igor Nikonov).
- Adicionadas configurações que limitam o número de tabelas replicadas, dicionários e visões. #71179 (Kirill).
- Corrige #71227. #71286 (Arthur Passos).
GROUP BY/ORDER BYautomático em disco com base no uso de memória do servidor/usuário. Controlado pelas configurações de consultamax_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sort. #71406 (Azat Khuzhin).- Adiciona os dashboards por host
Overview (host)eCloud overview (host)ao dashboard avançado. #71422 (alesapin). - A função
translateagora também permite excluir caracteres se o argumentofromcontiver mais caracteres do que o argumentoto. Exemplo:SELECT translate('clickhouse', 'clickhouse', 'CLICK')agora retornaCLICK. #71441 (shuai.xu). - Foram adicionadas as novas funções
parseDateTime64,parseDateTime64OrNulleparseDateTime64OrZero. Em comparação com a função existenteparseDateTime(e suas variantes), elas retornam um valor do tipoDateTime64em vez deDateTime. #71581 (kevinyhzou). - Redimensionado o array index_granularity na memória para reduzir o consumo de memória da família de motores de tabela MergeTree. #71595 (alesapin).
- Os aplicativos de linha de comando destacarão a sintaxe mesmo para várias instruções. #71622 (Alexey Milovidov).
- Aplicativos de linha de comando retornarão códigos de saída diferentes de zero em caso de erro. Em versões anteriores, o aplicativo
disksretornava zero em caso de erro, e outros aplicativos retornavam zero para os erros 256 (PARTITION_ALREADY_EXISTS) e 512 (SET_NON_GRANTED_ROLE). #71623 (Alexey Milovidov). - O formato
Vertical(que também é ativado quando você termina sua consulta com\G) agora conta com os recursos dos formatos Pretty, como: - destacar separadores de milhar em números; - exibir uma dica de leitura numérica. #71630 (Alexey Milovidov). - Permite desativar o aumento do buffer de memória do cache do sistema de arquivos por meio da configuração
filesystem_cache_prefer_bigger_buffer_size. #71640 (Kseniia Sumarokova). - Adiciona uma configuração separada
background_download_max_file_segment_sizepara definir o tamanho máximo do segmento de arquivo em downloads em segundo plano no cache do sistema de arquivos. #71648 (Kseniia Sumarokova). - Altera o valor padrão de
enable_http_compressionde 0 para 1. Fecha #71591. #71774 (Peter Nguyen). - Suporte ao ALTER de Object para JSON. #71784 (Pavel Kruglov).
- Melhoria sutil na análise do tipo JSON: se o bloco atual para o caminho JSON contiver valores de vários tipos, tente escolher o tipo mais adequado testando os tipos em uma ordem especial de melhor esforço. #71785 (Pavel Kruglov).
- Anteriormente, ao ler de
system.asynchronous_metrics, era preciso aguardar a conclusão de uma atualização concorrente. Isso pode levar muito tempo se o sistema estiver sob alta carga. Com essa alteração, os valores coletados anteriormente sempre podem ser lidos. #71798 (Alexander Gololobov). - Defina
polling_max_timeout_mspara 10 minutos epolling_backoff_mspara 30 segundos. #71817 (Kseniia Sumarokova). - Consultas como ‘SELECT - FROM t LIMIT 1’ carregavam índices das partes, mesmo sem usá-los. #71866 (Alexander Gololobov).
- Allow_reorder_prewhere_conditions é ativado por padrão com configurações de compatibilidade antigas. #71867 (Raúl Marín).
- Não incremente o contador
ILLEGAL_TYPE_OF_ARGUMENTna tabelasystem.errorsquando a funçãobitmapTransformfor usada e os tipos de argumento forem válidos. #71971 (Dmitry Novik). - Ao recuperar dados diretamente de um Dicionário usando o storage Dictionary, a função de tabela de dicionário ou um
SELECTdireto do próprio dicionário, agora basta ter a permissãoSELECTou a permissãodictGetpara o dicionário. Isso está alinhado com tentativas anteriores de evitar contornos de ACL: https://github.com/ClickHouse/ClickHouse/pull/57362 e https://github.com/ClickHouse/ClickHouse/pull/65359. Isso também torna a última alteração retrocompatível. #72051 (Nikita Mikhaylov). - Na página HTML do Advanced dashboard, foi adicionado um seletor suspenso para selecionar o dashboard da tabela
system.dashboards. #72081 (Sergei Trifonov). - Respeitar
prefer_locahost_replicaao montar o plano paraINSERT ... SELECTdistribuído. #72190 (filimonov). - O problema é descrito aqui. O Azure Iceberg Writer cria arquivos de metadados do Iceberg (bem como arquivos de manifesto) que violam as especificações. Neste PR, adicionei uma tentativa de ler metadados do formato Iceberg v1 com o leitor v2 (já que eles os gravam dessa forma) e adicionei um erro para quando eles não criarem os campos correspondentes em um arquivo de manifesto. #72277 (Daniil Ivanik).
- Promover os tipos JSON/Dynamic/Variant de recursos experimentais para beta. #72294 (Pavel Kruglov).
- Agora é permitido
CREATE MATERIALIZED VIEWcomUNION [ALL]na consulta. O comportamento é o mesmo de uma visão materializada comJOIN: *apenas a primeira tabela na expressãoSELECTservirá como gatilho para inserção- , e todas as demais tabelas serão ignoradas. #72347 (alesapin). - Acelera as inserções no MergeTree quando há um único valor de chave de partição no lote inserido. #72348 (alesapin).
- Adiciona a nova métrica MergeTreeIndexGranularityInternalArraysTotalSize ao system.metrics. Essa métrica é necessária para identificar as instâncias com conjuntos de dados enormes suscetíveis ao problema de alto uso de memória. #72490 (Miсhael Stetsyuk).
- Todas as grafias da palavra
Nullagora são reconhecidas quando a consulta usaFormat Null. Antes, outras formas (por exemplo,NULL) não faziam com que exceções fossem lançadas, mas, ao mesmo tempo, o formatoNullna verdade não era usado nesses casos. #72658 (Nikita Taranov). - Permite valores desconhecidos em Set que não estão presentes em Enum. Corrige #72662. #72686 (zhanglistar).
- Adiciona
total_bytes_with_inactiveasystem.tablespara contabilizar o total de bytes das partes inativas. #72690 (Kai Zhu). - Adiciona MergeTreeSettings a system.settings_changes. #72694 (Raúl Marín).
- Adiciona suporte ao operador de busca em strings (por exemplo,
like) para o tipo de dado Enum, corrigindo #72661. #72732 (zhanglistar). - Adicionado suporte ao tipo JSON na função notEmpty. #72741 (Pavel Kruglov).
- Suporte ao parsing do erro
AuthenticationRequireddo GCS S3. #72753 (Vitaly Baranov). - Adicionado suporte ao tipo Dynamic nas funções ifNull e coalesce. #72772 (Pavel Kruglov).
- Adicionados os eventos de perfil
JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount. #72842 (Vladimir Cherkasov). - Suporte ao Dynamic nas funções toFloat64/touInt32/etc. #72989 (Pavel Kruglov).
Correção de bug (comportamento incorreto perceptível ao usuário em uma versão estável oficial)
- As partes deduplicadas durante a consulta
ATTACH PARTnão ficam mais travadas com o prefixoattaching_. #65636 (Kirill). - Correção do bug em que o dateTime64 perdia precisão na função
IN. #67230 (Yarik Briukhovetskyi). - Corrige um possível erro lógico ao usar funções com
IGNORE/RESPECT NULLSemORDER BY ... WITH FILL, fechando #57609. #68234 (Vladimir Cherkasov). - Corrigidos erros lógicos raros em inserções assíncronas no formato
Nativequando o limite de memória era atingido. #68965 (Anton Popov). - Corrige o COMMENT em CREATE TABLE para a coluna EPHEMERAL. #70458 (Yakov Olkhovskiy).
- Corrige erro lógico em JSONExtract com LowCardinality(Nullable). #70549 (Pavel Kruglov).
- Corrige o comportamento quando o nome da tabela é longo demais. #70810 (Yarik Briukhovetskyi).
- Adicionada a possibilidade de substituir
Content-Typepor meio de cabeçalhos do usuário no engine URL. #70859 (Artem Iurin). - Corrigido erro lógico em
StorageS3Queue“Não é possível criar um nó persistente em /processed porque ele já existe”. #70984 (Kseniia Sumarokova). - Corrigido o bug que não considerava a coluna _row_exists na opção de reconstrução da exclusão leve de projeção. #71089 (Shichao Jin).
- Corrige o valor incorreto em system.query_metric_log devido a uma condição de corrida inesperada. #71124 (Pablo Marcos).
- Corrige o nome incorreto da função de agregação quantileExactWeightedInterpolated. O bug foi introduzido em https://github.com/ClickHouse/ClickHouse/pull/69619. cc @Algunenano. #71168 (李扬).
- Corrige a exceção bad_weak_ptr com Dynamic na comparação entre funções. #71183 (Pavel Kruglov).
- Não exclua um blob quando houver nós usando esse blob no ReplicatedMergeTree com replicação zero-copy. #71186 (Antonio Andelic).
- Corrigido o problema em que as configurações de formato eram ignoradas no formato Native via HTTP e em inserts assíncronos. #71193 (Pavel Kruglov).
- As consultas
SELECTexecutadas com a configuraçãouse_query_cache = 1não são mais rejeitadas se o nome de uma tabela de sistema aparecer como literal; por exemplo,SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true;agora funciona. #71254 (Robert Schulze). - Corrige o bug de aumento no uso de memória quando
enable_filesystem_cache=1, mas o disco na configuração de armazenamento não tinha nenhuma configuração de cache. #71261 (Kseniia Sumarokova). - Corrige o possível erro “Cannot read all data” durante a desserialização do dicionário LowCardinality de uma coluna Dynamic. #71299 (Pavel Kruglov).
- Corrigida a limpeza incompleta do formato de saída paralelo no cliente. #71304 (Raúl Marín).
- Adicionado o desescape ausente em named collections. Sem a correção, o clickhouse-server não consegue iniciar. #71308 (MikhailBurdukov).
- Corrige async inserts com blocos vazios via protocolo nativo. #71312 (Anton Popov).
- Corrige a formatação inconsistente da AST ao conceder privilégios usando curingas incorretos #71309. #71332 (pufit).
- Verificação de tipos suspeitos e experimentais em type hints de JSON. #71369 (Pavel Kruglov).
- Corrigido o erro Número inválido de linhas no fragmento com coluna Variant. #71388 (Pavel Kruglov).
- Corrige travamento na função de tabela
mongodbao receber argumentos inválidos (por exemplo,NULL). #71426 (Vladimir Cherkasov). - Corrigido travamento com optimize_rewrite_array_exists_to_has. #71432 (Raúl Marín).
- Corrigido o erro NoSuchKey durante o rollback da transação quando a criação de um diretório falha no disco palin_rewritable. #71439 (Julia Kartseva).
- Corrigido o uso da configuração
max_insert_delayed_streams_for_parallel_writeem inserções. Antes, ela funcionava incorretamente, o que podia levar a uso elevado de memória em inserções que gravam dados em várias partições. #71474 (Anton Popov). - Corrige o possível erro
Argument for function must be constant(analisador antigo) no caso em quearrayJoinaparentemente pode aparecer na condiçãoWHERE. Regressão após https://github.com/ClickHouse/ClickHouse/pull/65414. #71476 (Nikolai Kochetov). - Evita uma falha no SortCursor com 0 colunas (analisador antigo). #71494 (Raúl Marín).
- Corrige erro de
date32fora do intervalo causado por dados ORC não inicializados. Para mais detalhes, consulte https://github.com/apache/incubator-gluten/issues/7823. #71500 (李扬). - Corrige a contagem do tamanho da coluna na parte wide para os tipos Dynamic e JSON. #71526 (Pavel Kruglov).
- Correção no Analyzer quando a consulta dentro de uma visão materializada usa IN com CTE. Fecha #65598. #71538 (Maksim Kita).
- Retorna 0 ou o caractere padrão, em vez de gerar erro, nas funções
bitShiftquando o acesso estiver fora dos limites. #71580 (Pablo Marcos). - Corrige travamentos do servidor ao usar visão materializada com determinados motores. #71593 (Pervakov Grigorii).
- ARRAY JOIN com uma estrutura de dados aninhada, que contém um alias para um array constante, estava causando uma desreferenciação de ponteiro nulo. Isso fecha #71677. #71678 (Alexey Milovidov).
- Corrige LOGICAL_ERROR ao executar ALTER com tupla vazia. Isso corrige #71647. #71679 (Amos Bird).
- Não transforme um conjunto constante em predicados nas colunas de partição ao usar o operador NOT IN. #71695 (Eduard Karacharov).
- Corrige o CAST de LowCardinality(Nullable) para Dynamic. Antes, isso podia causar o erro
Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable. #71742 (Pavel Kruglov). - Corrigida a exceção no
toDayOfWeekem condiçãoWHEREcom chave primária do tipoDateTime64. #71849 (Yakov Olkhovskiy). - Corrigido o preenchimento de valores padrão após o parse para colunas esparsas. #71854 (Anton Popov).
- Corrige o erro da função GROUPING quando a entrada é um ALIAS em uma tabela distribuída, fecha #68602. #71855 (Vladimir Cherkasov).
- Corrigidas instruções SELECT que usam a cláusula
WITH TIESe que podem não retornar um número suficiente de linhas. #71886 (wxybear). - Corrige uma exceção de TOO_LARGE_ARRAY_SIZE causada quando uma coluna na avaliação de arrayWithConstant é incorretamente considerada como excedendo o limite de tamanho do array. #71894 (Udi).
clickhouse-benchmarkrelatou métricas incorretas para consultas com duração superior a um segundo. #71898 (Alexey Milovidov).- Corrigida a condição de corrida entre o indicador de progresso e a tabela de progresso no clickhouse-client. Esse problema fica visível quando
FROM INFILEé usado. Intercepta pressionamentos de tecla durante consultasINSERTpara alternar a exibição da tabela de progresso. #71901 (Julia Kartseva). - Corrigida a serialização de valores Dynamic nos formatos JSON Pretty. #71923 (Pavel Kruglov).
- Corrige a coluna rows_processed em system.s3/azure_queue_log, que apresentava problema na versão 24.6. Fecha #69975. #71946 (Kseniia Sumarokova).
- Corrigido o caso em que as funções
s3/s3Clusterpodiam retornar um resultado incompleto ou lançar uma exceção. Isso ocorria ao usar um padrão glob na URI do S3 (comopattern/*), e era necessário que existisse um object vazio com a keypattern/(esses objects são criados automaticamente pelo Console do S3). Além disso, o default value da configuraçãos3_skip_empty_filesfoi alterado defalseparatrue. #71947 (Nikita Taranov). - Corrige um travamento no realce de sintaxe do
clickhouse-client. Fecha #71864. #71949 (Nikolay Degterinsky). - Corrige o erro
Illegal typeem tabelasMergeTreecom função binária monotônica emORDER BYquando o primeiro argumento é constante. Corrige #71941. #71966 (Nikolai Kochetov). - Permitir apenas consultas SELECT no EXPLAIN AST usado dentro de subconsulta. Outros tipos de consultas resultam no erro lógico: ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ ou
Inconsistent AST formatting. #71982 (Pavel Kruglov). - Ao inserir um registro com
clickhouse-client, o cliente lê as descrições das colunas do servidor. Mas havia um bug em que escrevíamos as descrições na ordem errada; deveria ser [statistics, ttl, settings]. #71991 (Han Fei). - Corrige a formatação dos comandos ALTER
MOVE PARTITION ... TO TABLE ...quandoformat_alter_commands_with_parenthesesestá habilitada. #72080 (János Benjamin Antal). - Adicionar o nome do formato inferido à consulta CREATE nos motores File/S3/URL/HDFS/Azure. Antes, o nome do formato era inferido sempre que o servidor era reiniciado e, se os arquivos de dados especificados fossem removidos, isso causava erros durante a inicialização do servidor. #72108 (Pavel Kruglov).
- Corrige um bug em que
min_age_to_force_merge_on_partition_onlyficava preso tentando mesclar repetidamente a mesma partição, que já havia sido mesclada em uma única parte, e deixava de mesclar partições que tinham múltiplas partes. #72209 (Christoph Wurm). - Corrigida uma falha em
SimpleSquashingChunksTransformque ocorria, em casos raros, ao processar colunas esparsas. #72226 (Vladimir Cherkasov). - Corrigida uma condição de corrida em
GraceHashJoin, o que podia fazer com que algumas linhas ficassem ausentes na saída dojoin. #72233 (Nikita Taranov). - Corrigidas as consultas
ALTER DELETEcom a coluna materializada_block_number(se a configuraçãoenable_block_number_columnestiver habilitada). #72261 (Anton Popov). - Corrigida uma race condition de dados quando
ColumnDynamic::dumpStructure()é chamado de forma concorrente, por exemplo, no construtor deConcurrentHashJoin. #72278 (Nikita Taranov). - Corrige possível
LOGICAL_ERRORcausado por colunas duplicadas emORDER BY ... WITH FILL. #72387 (Vladimir Cherkasov). - Corrigidos problemas de incompatibilidade de tipos em vários casos após aplicar
optimize_functions_to_subcolumns. #72394 (Anton Popov). - Corrige falha ao analisar consultas
BACKUP DATABASE db EXCEPT TABLES db.table. #72429 (Konstantin Bogdanov). - Não permitir a criação de um Variant vazio. #72454 (Pavel Kruglov).
- Corrige a formatação incorreta de
result_part_pathemsystem.merges. #72567 (Konstantin Bogdanov). - Corrigido o parsing de um glob com um único elemento. #72572 (Konstantin Bogdanov).
- Corrige a geração de consulta para o servidor seguidor em caso de consulta distribuída com ARRAY JOIN. Corrige #69276. #72608 (Dmitry Novik).
- Corrige um bug em que DateTime64 em DateTime64 não retornava nada. #72640 (Yarik Briukhovetskyi).
- Corrige o erro “No such key” no modo não ordenado do S3Queue quando a configuração
tracked_files_limité menor que a taxa com que os arquivos aparecem no S3. #72738 (Kseniia Sumarokova). - Descartar o mark cache pode levar um tempo considerável se ele for grande. Se mantivermos o mutex do contexto durante esse processo, isso bloqueará muitas outras atividades; até mesmo uma nova conexão de cliente não poderá ser estabelecida até que ele seja liberado. E, na verdade, manter esse mutex não é necessário para sincronização; basta ter uma referência local ao cache via shared ptr. #72749 (Alexander Gololobov).
- O cache de PK estava subestimando significativamente seu tamanho em uma das instâncias de teste. Em particular, as colunas LowCardinality não incluíam o tamanho do dicionário. A correção consiste em usar column->allocatedBytes() mais algumas estimativas adicionais de overhead para o tamanho da entrada de cache. #72750 (Alexander Gololobov).
- Corrigida a exceção lançada no RemoteQueryExecutor quando o usuário não existe localmente. #72759 (Andrey Zvonov).
- Corrigidas as mutações com a coluna materializada
_block_number(se a configuraçãoenable_block_number_columnestiver ativada). #72854 (Anton Popov). - Corrige o backup/restauração com disco simples e regravável caso haja arquivos vazios no backup. #72858 (Kseniia Sumarokova).
- Cancela corretamente inserções na DistributedAsyncInsertDirectoryQueue. #72885 (Antonio Andelic).
- Corrigida uma falha ao processar dados incorretos em colunas esparsas (pode acontecer com a configuração
enable_parsing_to_custom_serializationhabilitada). #72891 (Anton Popov). - Corrige uma possível falha durante a restauração de um backup. #72947 (Kseniia Sumarokova).
- Corrigido um bug no método JOIN
parallel_hashque poderia ocorrer quando a consulta tem uma condição complexa na cláusulaON, com filtros de desigualdade. #72993 (Nikita Taranov). - Use as configurações padrão de formato durante o parsing de JSON para evitar falhas na desserialização. #73043 (Pavel Kruglov).
- Corrige travamento em transações com armazenamento sem suporte. #73045 (Raúl Marín).
- Verificação de chaves JSON duplicadas durante o parsing de Tuple. Antes, isso podia causar o erro lógico
Invalid number of rows in Chunkdurante o parsing. #73082 (Pavel Kruglov).