Pular para o conteúdo principal

Tag de lançamento do ClickHouse: 24.2.2.15987

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

  • Validação de tipos suspeitos/experimentais em tipos aninhados. Antes, esses tipos (exceto JSON) não eram validados em tipos aninhados como Array/Tuple/Map. #59385 (Kruglov Pavel).
  • A cláusula de ordenação ORDER BY ALL (introduzida na v23.12) foi substituída por ORDER BY *. A sintaxe anterior estava muito sujeita a erros em tabelas com uma coluna all. #59450 (Robert Schulze).
  • Adicionar verificação de consistência para o número de threads e os tamanhos dos blocos. #60138 (Raúl Marín).
  • Rejeita consultas INSERT recebidas quando as configurações no nível da consulta async_insert e deduplicate_blocks_in_dependent_materialized_views estão habilitadas ao mesmo tempo. Esse comportamento é controlado pela configuração throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert e vem habilitado por padrão. Esta é uma continuação de https://github.com/ClickHouse/ClickHouse/pull/59699, necessária para desbloquear https://github.com/ClickHouse/ClickHouse/pull/59915. #60888 (Nikita Mikhaylov).
  • O utilitário clickhouse-copier foi movido para um repositório separado no GitHub: https://github.com/ClickHouse/copier. Ele não está mais incluído no pacote, mas continua disponível para download separadamente. Fecha: #60734 Fecha: #60540 Fecha: #60250 Fecha: #52917 Fecha: #51140 Fecha: #47517 Fecha: #47189 Fecha: #46598 Fecha: #40257 Fecha: #36504 Fecha: #35485 Fecha: #33702 Fecha: #26702 ### Entrada de documentação para alterações voltadas ao usuário. #61058 (Nikita Mikhaylov).
  • Para aumentar a compatibilidade com o MySQL, a função locate agora aceita os argumentos (needle, haystack[, start_pos]) por padrão. O comportamento anterior (haystack, needle, [, start_pos]) pode ser restaurado ao definir function_locate_has_mysql_compatible_argument_order = 0. #61092 (Robert Schulze).
  • As partes de dados em memória obsoletas foram descontinuadas na versão 23.5 e deixaram de ser suportadas na versão 23.10. Agora, o código restante foi removido. Continuação de #55186 e #45409. É improvável que você tenha usado partes de dados em memória, porque elas só estavam disponíveis antes da versão 23.5 e apenas quando eram habilitadas manualmente por meio dos SETTINGS correspondentes em uma tabela MergeTree. Para verificar se há partes de dados em memória, execute a seguinte consulta: SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type. Para desabilitar o uso de partes de dados em memória, execute ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT. Antes de atualizar a partir de lançamentos antigos do ClickHouse, primeiro verifique se você não tem partes de dados em memória. Se houver partes de dados em memória, desabilite-as primeiro, depois aguarde até que não haja mais partes de dados em memória e continue a atualização. #61127 (Alexey Milovidov).
  • Proibir, por padrão, SimpleAggregateFunction no ORDER BY de tabelas MergeTree (assim como AggregateFunction já é proibido, pois não é comparável) (use allow_suspicious_primary_key para permitir isso). #61399 (Azat Khuzhin).
  • O ClickHouse permite dados binários arbitrários no tipo de dado String, que normalmente é UTF-8. Strings de Parquet/ORC/Arrow suportam apenas UTF-8. Por isso, é possível escolher qual tipo de dado do Arrow usar para o tipo de dado String do ClickHouse: String ou Binary. Isso é controlado pelas configurações output_format_parquet_string_as_string, output_format_orc_string_as_string, output_format_arrow_string_as_string. Embora Binary seja mais correto e compatível, usar String por padrão atenderá às expectativas dos usuários na maioria dos casos. Parquet/ORC/Arrow oferece suporte a muitos métodos de compressão, incluindo lz4 e zstd. O ClickHouse oferece suporte a todos os métodos de compressão. Algumas ferramentas inferiores não oferecem suporte ao método de compressão lz4, que é mais rápido; por isso, definimos zstd como padrão. Isso é controlado pelas configurações output_format_parquet_compression_method, output_format_orc_compression_method e output_format_arrow_compression_method. Alteramos o padrão para zstd em Parquet e ORC, mas não em Arrow (que é voltado a usos de baixo nível). #61817 (Alexey Milovidov).
  • Correção para a falha de segurança da visão materializada, que permitia a um usuário inserir dados em uma tabela sem os privilégios necessários para isso. A correção valida que o usuário tem permissão para inserir não apenas em uma visão materializada, mas também em todas as tabelas subjacentes. Isso significa que algumas consultas que funcionavam antes agora podem falhar com Not enough privileges. Para resolver esse problema, o lançamento introduz um novo recurso de segurança SQL para views https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security. #54901 (pufit)

Novo recurso

  • Suporte ao modo Topk/topkweighed, que retorna a contagem de valores e o erro correspondente. #54508 (UnamedRus).
  • Adicionada uma nova sintaxe que permite especificar o usuário definidor em view/visão materializada. Isso permite executar SELECTs/INSERTs em views sem grants explícitos nas tabelas subjacentes. #54901 (pufit).
  • Implementada a conversão automática de tabelas MergeTree de diferentes tipos para um engine replicado. Crie o arquivo vazio convert_to_replicated no diretório de dados da tabela (/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/) e a tabela será convertida automaticamente na próxima inicialização do servidor. #57798 (Kirill).
  • Adicionada a função de tabela mergeTreeIndex. Ela representa o conteúdo dos arquivos de índice e de marcas das tabelas MergeTree. Pode ser usada para introspecção. Sintaxe: mergeTreeIndex(database, table, [with_marks = true]), em que database.table é uma tabela existente com engine MergeTree. #58140 (Anton Popov).
  • Tenta detectar automaticamente o formato do arquivo durante a inferência de esquema quando ele é desconhecido nos motores file/s3/hdfs/url/azureBlobStorage. Fecha #50576. #59092 (Kruglov Pavel).
  • Adiciona generate_series como função de tabela. Essa função gera uma tabela com uma progressão aritmética de números naturais. #59390 (divanik).
  • Foi adicionada a consulta ALTER TABLE table FORGET PARTITION partition, que remove nós do ZooKeeper relacionados a uma partição vazia. #59507 (Sergei Trifonov).
  • Suporte à leitura e à gravação de backups como arquivos tar. #59535 (josh-hildred).
  • Adiciona a nova função de agregação ‘groupArrayIntersect’. Dá sequência a: #49862. #59598 (Yarik Briukhovetskyi).
  • Foi implementada a tabela system.dns_cache, que pode ser útil para depuração de problemas de DNS. #59856 (Kirill Nikiforov).
  • Implementado suporte a buckets S3Express. #59965 (Nikita Taranov).
  • O codec LZ4HC passará a aceitar o novo nível 2, que é mais rápido que o nível mínimo anterior, 3, em troca de uma compressão menor. Em versões anteriores, LZ4HC(2) e valores inferiores eram equivalentes a LZ4HC(3). Autor: Cyan4973. #60090 (Alexey Milovidov).
  • Implementada a tabela system.dns_cache, que pode ser útil para depuração de problemas de DNS. Nova configuração do servidor dns_cache_max_size. #60257 (Kirill Nikiforov).
  • Adicionada a função toMillisecond, que retorna o componente de milissegundo para valores do tipo DateTime ou DateTime64. #60281 (Shaun Struwig).
  • Suporte à versão com um único argumento da table function merge, como em merge(['db_name', ] 'tables_regexp'). #60372 (豪肥肥).
  • Tornar todos os nomes de formato insensíveis a maiúsculas e minúsculas, como Tsv, ou TSV, ou tsv, ou até mesmo rowbinary. #60420 (豪肥肥).
  • Adicionada uma nova sintaxe que permite especificar o usuário definidor em uma view/visão materializada. Isso permite executar selects/inserts a partir de views sem privilégios explícitos nas tabelas subjacentes. #60439 (pufit).
  • Adiciona quatro propriedades ao StorageMemory (engine de memória): min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep e max_rows_to_keep - Adiciona testes para refletir as novas mudanças - Atualiza a documentação de memory.md - Adiciona a propriedade context da tabela ao MemorySink para permitir o acesso aos limites dos parâmetros da tabela. #60612 (Jake Bamrah).
  • Adicionada a função toMillisecond, que retorna o componente de milissegundo para valores do tipo DateTime ou DateTime64. #60649 (Robert Schulze).
  • Limites separados para o número de consultas em espera e em execução. Foi adicionada uma nova configuração de servidor, max_waiting_queries, que limita o número de consultas em espera devido a async_load_databases. Os limites existentes para o número de consultas em execução não contam mais as consultas em espera. #61053 (Sergei Trifonov).
  • Adicionado suporte a ATTACH PARTITION ALL. #61107 (Kirill Nikiforov).

Melhoria de desempenho

  • Elimina os agregadores min/max/any/anyLast das chaves do GROUP BY na seção SELECT. #52230 (JackyWoo).
  • Melhora o desempenho do método de agregação serializada quando envolve várias colunas [Nullable]. Esta é uma versão geral de #51399 sem comprometer a integridade da abstração. #55809 (Amos Bird).
  • Geração tardia da saída do join para melhorar o desempenho do ALL join. #58278 (LiuNeng).
  • Melhorias nas funções de agregação ArgMin / ArgMax / any / anyLast / anyHeavy, bem como nas consultas ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1. #58640 (Raúl Marín).
  • Otimize o desempenho de sum/avg condicionais para tipos bigint e decimais grandes, reduzindo falhas de previsão de ramificação. #59504 (李扬).
  • Melhoria no desempenho de SELECTs com mutações ativas. #59531 (Azat Khuzhin).
  • Pequena otimização no filtro por coluna. Evita filtrar com result_size_hint = -1 as colunas de filtro cujo tipo de dado subjacente não é numérico. A memória de pico pode ser reduzida para 44% da original em alguns casos. #59698 (李扬).
  • A chave primária usará menos memória. #60049 (Alexey Milovidov).
  • Melhoria no uso de memória da chave primária e de algumas outras operações. #60050 (Alexey Milovidov).
  • As chaves primárias das tabelas serão carregadas na memória sob demanda, no primeiro acesso. Isso é controlado pela nova configuração do MergeTree primary_key_lazy_load, que vem ativada por padrão. Isso oferece várias vantagens: - elas não serão carregadas para tabelas que não são usadas; - se não houver memória suficiente, uma exceção será lançada no primeiro uso, em vez de na inicialização do servidor. Isso traz várias desvantagens: - o custo de latência do carregamento da chave primária ocorrerá na primeira consulta, em vez de antes de aceitar conexões; isso, em teoria, pode introduzir um problema de thundering herd. Isso fecha #11188. #60093 (Alexey Milovidov).
  • Função vetorizada dotProduct, útil para busca vetorial. #60202 (Robert Schulze).
  • Se a chave primária da tabela contiver, em sua maioria, colunas inúteis, não as mantenha na memória. Isso é controlado por uma nova configuração, primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns, com o valor padrão 0.9, o que significa o seguinte: para uma chave primária composta, se uma coluna mudar de valor em pelo menos 0.9 de todas as vezes, as colunas seguintes não serão carregadas. #60255 (Alexey Milovidov).
  • Executar a função multiIf de forma colunar quando o tipo subjacente de result_type for numérico. #60384 (李扬).
  • Como mostra a Fig. 1, a substituição de ”&&” por ”&” pode gerar código SIMD. imagem Fig. 1. Código compilado a partir de ’&&’ (à esquerda) e ’&’ (à direita). #60498 (Zhiguo Zhou).
  • Mutexes quase 2x mais rápidos (estavam mais lentos devido ao ThreadFuzzer). #60823 (Azat Khuzhin).
  • A drenagem de conexões foi movida de prepare para work, e várias conexões passaram a ser drenadas em paralelo. #60845 (lizhuoyu5).
  • Otimiza o insertManyFrom de Number Nullable ou String Nullable. #60846 (李扬).
  • Função dotProduct otimizada para eliminar cópias de memória desnecessárias e custosas. #60928 (Robert Schulze).
  • As operações com o cache do sistema de arquivos sofrerão menos com a contenção de bloqueios. #61066 (Alexey Milovidov).
  • Otimiza ColumnString::replicate e evita que memcpySmallAllowReadWriteOverflow15Impl seja otimizada para a memcpy embutida. Fecha #61074. ColumnString::replicate fica 2,46x mais rápida em x86-64. #61075 (李扬).
  • Impressão de inteiros de 256 bits 30x mais rápida. #61100 (Raúl Marín).
  • Se uma consulta com erro de sintaxe continha o matcher COLUMNS com uma expressão regular, a expressão regular era compilada todas as vezes durante o backtracking do parser, em vez de ser compilada uma única vez. Esse era um erro fundamental. A expressão regular compilada era colocada na AST. Mas a letra A em AST significa “abstract”, o que quer dizer que ela não deve conter objetos pesados. Partes da AST podem ser criadas e descartadas durante o parsing, inclusive com um grande número de retrocessos. Isso torna o parsing mais lento e, consequentemente, permite que um usuário readonly provoque DoS. Mas o principal problema é que isso impede o progresso dos fuzzers. #61543 (Alexey Milovidov).

Melhoria

  • Ao executar a consulta MODIFY COLUMN para visões materializadas, verifique a estrutura da tabela interna para garantir que todas as colunas existam. #47427 (sunny).
  • Adicionada a tabela system.keywords, que contém todas as palavras-chave do parser. Ela é necessária principalmente e será usada para melhorar o fuzzing e o realce de sintaxe. #51808 (Nikita Mikhaylov).
  • Adicionado suporte a view parametrizada com o analisador, para não analisar a criação de view parametrizada. Refatorada a lógica existente de view parametrizada para não analisar a criação de view parametrizada. #54211 (SmitaRKulkarni).
  • O engine de banco de dados Ordinary está obsoleto. Você receberá um aviso no clickhouse-client se o seu servidor estiver usando esse engine. Isso encerra #52229. #56942 (shabroo).
  • Todos os bloqueios de zero copy relacionados a uma tabela devem ser removidos quando a tabela for removida. O diretório que contém esses bloqueios também deve ser removido. #57575 (Sema Checherinda).
  • Adiciona suporte a curto-circuito para a função dictGetOrDefault. Fecha #52098. #57767 (jsc0218).
  • Permite declarar enum na estrutura de uma tabela externa. #57857 (Duc Canh Le).
  • Executar ALTER COLUMN MATERIALIZE em uma coluna com expressão DEFAULT ou MATERIALIZED agora grava os valores corretos: o valor padrão para as partes existentes com valor padrão ou o valor não padrão para as partes existentes com valor não padrão. Antes, o valor padrão era gravado em todas as partes existentes. #58023 (Duc Canh Le).
  • Foi implementada uma lógica de backoff (por exemplo, exponencial), o que permitirá reduzir o uso de CPU e de memória, além do tamanho dos arquivos de log. #58036 (MikhailBurdukov).
  • Considere linhas marcadas com exclusão leve ao selecionar partes para mesclar. #58223 (Zhuo Qiu).
  • Permite definir volume_priority em storage_configuration. #58533 (Andrey Zvonov).
  • Adicionado suporte ao tipo Date32 no codec T64. #58738 (Hongbin Ma).
  • Este PR torna as conexões http/https reutilizáveis em todos os casos de uso, mesmo quando a resposta é 3xx ou 4xx. #58845 (Sema Checherinda).
  • Adicionados comentários às colunas em mais tabelas do sistema. Continuação de https://github.com/ClickHouse/ClickHouse/pull/58356. #59016 (Nikita Mikhaylov).
  • Agora podemos usar colunas virtuais em PREWHERE. Isso é vantajoso para colunas virtuais não constantes, como _part_offset. #59033 (Amos Bird).
  • As configurações do mecanismo de tabela Distributed agora podem ser definidas no arquivo de configuração do servidor (de forma semelhante às configurações do MergeTree), por exemplo, <distributed> <flush_on_detach>false</flush_on_detach> </distributed>. #59291 (Azat Khuzhin).
  • Melhoria no Keeper: manter em cache na memória apenas uma determinada quantidade de logs, controlada por latest_logs_cache_size_threshold e commit_logs_cache_size_threshold. #59460 (Antonio Andelic).
  • Em vez de usar uma chave constante, agora o armazenamento de objetos gera uma chave para determinar a permissão de remover objetos. #59495 (Sema Checherinda).
  • Não infira números de ponto flutuante em notação exponencial por padrão. Adiciona a configuração input_format_try_infer_exponent_floats, que restaura o comportamento anterior (desabilitada por padrão). Fecha #59476. #59500 (Kruglov Pavel).
  • Permite que operações ALTER sejam envolvidas por parênteses. A inclusão de parênteses pode ser controlada pela configuração format_alter_operations_with_parentheses. Por padrão, em consultas formatadas, os parênteses são incluídos, pois armazenamos as operações ALTER formatadas em alguns locais como metadados (por exemplo: mutações). A nova sintaxe torna mais claras algumas consultas em que as operações ALTER terminam em uma lista. Por exemplo: ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c não pode ser analisada corretamente com a sintaxe antiga. Na nova sintaxe, a consulta ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c) fica inequívoca. Versões mais antigas não conseguem ler a nova sintaxe; portanto, usá-la pode causar problemas se versões mais novas e mais antigas do ClickHouse estiverem misturadas em um único cluster. #59532 (János Benjamin Antal).
  • Atualizado o Intel QPL (usado pelo codec DEFLATE_QPL) da v1.3.1 para a v1.4.0 . Também foi corrigido um bug no mecanismo de timeout de polling, pois observamos que, em alguns casos, o timeout não funcionava corretamente; se isso ocorresse, o IAA e a CPU poderiam processar o buffer de forma concorrente. Por enquanto, é melhor garantir que o status do codec IAA não seja QPL_STS_BEING_PROCESSED e, em seguida, recorrer ao codec de software. #59551 (jasperzhu).
  • Adiciona pread posicional ao libhdfs3. Se você quiser chamar a leitura posicional no libhdfs3, use a função hdfsPread em hdfs.h da seguinte forma: tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);. #59624 (M1eyu).
  • Verificação de estouro de pilha em parsers, mesmo que o usuário tenha configurado incorretamente a configuração max_parser_depth com um valor muito alto. Isso encerra #59622. #59697 (Alexey Milovidov).
  • Unifica o comportamento de named collections criadas em XML e SQL no armazenamento Kafka. #59710 (Pervakov Grigorii).
  • Permite uuid em replica_path se o CREATE TABLE o especificar explicitamente. #59908 (Azat Khuzhin).
  • Adiciona a coluna metadata_version para a tabela ReplicatedMergeTree na tabela de sistema system.tables. #59942 (Maksim Kita).
  • Melhoria no Keeper: adicionar tentativas novamente em caso de falha em operações relacionadas a disco. #59980 (Antonio Andelic).
  • Adiciona a nova definição de config backups.remove_backup_files_after_failure: <clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>. #60002 (Vitaly Baranov).
  • Use várias threads ao ler os metadados das tabelas de um backup durante a execução do comando RESTORE. #60040 (Vitaly Baranov).
  • Agora, se StorageBuffer tiver mais de 1 shard (num_layers > 1), o flush em segundo plano ocorrerá simultaneamente em todos os shards, usando múltiplas threads. #60111 (alesapin).
  • Suporte para especificar usuários em configurações específicas do S3 na config usando a chave user. #60144 (Antonio Andelic).
  • Copiar o fallback do arquivo S3 no GCP para a cópia em buffer caso o GCP retorne Internal Error com o código de erro HTTP GATEWAY_TIMEOUT. #60164 (Maksim Kita).
  • Permite usar “local” como tipo de armazenamento de objetos em vez de “local_blob_storage”. #60165 (Kseniia Sumarokova).
  • Implementar o operador de comparação para valores Variant e a inserção correta de Field na coluna Variant. Não permitir a criação do tipo Variant com tipos Variant semelhantes por padrão (permitir isso com a configuração allow_suspicious_variant_types) Fecha #59996. Fecha #59850. #60198 (Kruglov Pavel).
  • Melhoria na usabilidade geral das colunas virtuais. Agora é permitido usar colunas virtuais em PREWHERE (isso é vantajoso para colunas virtuais não constantes, como _part_offset). Agora, a documentação integrada das colunas virtuais está disponível como comentário da coluna na consulta DESCRIBE, com a configuração describe_include_virtual_columns habilitada. #60205 (Anton Popov).
  • Execução em curto-circuito para ULIDStringToDateTime. #60211 (Juan Madurga).
  • Adicionada a coluna query_id às tabelas system.backups e system.backup_log. Adicionada a stacktrace do erro na coluna error. #60220 (Maksim Kita).
  • Gravação paralela dos blocos INSERT pendentes do engine Distributed em DETACH/desligamento do servidor e SYSTEM FLUSH DISTRIBUTED (o paralelismo só funcionará se você tiver uma política de múltiplos discos para a tabela, como tudo no engine Distributed no momento). #60225 (Azat Khuzhin).
  • A configuração do filtro está incorreta em joinRightColumnsSwitchNullability, corrige #59625. #60259 (lgbo).
  • Adiciona uma configuração para forçar o uso do cache read-through em merges. #60308 (Kseniia Sumarokova).
  • A issue #57598 menciona um comportamento distinto no tratamento de transações. Um COMMIT/ROLLBACK emitido quando não há transação ativa é relatado como erro, ao contrário do comportamento do MySQL. #60338 (PapaToemmsn).
  • Foi adicionado o modo none_only_active à configuração distributed_ddl_output_mode. #60340 (Alexander Tokmakov).
  • As conexões pela porta MySQL agora são executadas automaticamente com a configuração prefer_column_name_to_alias = 1 para oferecer suporte imediato ao QuickSight. Além disso, as configurações mysql_map_string_to_text_in_show_columns e mysql_map_fixed_string_to_text_in_show_columns agora vêm habilitadas por padrão, afetando apenas conexões MySQL. Isso aumenta a compatibilidade com mais ferramentas de BI. #60365 (Robert Schulze).
  • Quando o formato de saída for o Pretty format e um bloco consistir em um único valor numérico superior a um milhão, um número legível será exibido à direita da tabela. Ex.: ┌──────count()─┐ │ 233765663884 │ -- 233.77 billion └──────────────┘. #60379 (rogeryk).
  • Permite configurar handlers de redirecionamento HTTP para o clickhouse-server. Por exemplo, você pode fazer com que / redirecione para a UI Play. #60390 (Alexey Milovidov).
  • O dashboard avançado tem cores um pouco melhores para gráficos com várias linhas. #60391 (Alexey Milovidov).
  • Corrige uma condição de corrida no código JavaScript que fazia gráficos duplicados ficarem sobrepostos. #60392 (Alexey Milovidov).
  • Verificação de estouro de pilha em parsers, mesmo que o usuário tenha configurado incorretamente a opção max_parser_depth com um valor muito alto. Isso fecha #59622. #60434 (Alexey Milovidov).
  • A função substring agora passou a ter um novo alias byteSlice. #60494 (Robert Schulze).
  • A configuração do servidor dns_cache_max_size foi renomeada para dns_cache_max_entries para reduzir a ambiguidade. #60500 (Kirill Nikiforov).
  • SHOW INDEX | INDEXES | INDICES | KEYS não classifica mais pelas colunas da chave primária (o que era pouco intuitivo). #60514 (Robert Schulze).
  • Melhoria no Keeper: interromper a inicialização caso seja detectado um snapshot inválido, para evitar perda de dados. #60537 (Antonio Andelic).
  • Adicionada a injeção de falhas para dividir os intervalos de leitura do MergeTree em intervalos com e sem interseção usando a configuração merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability. #60548 (Maksim Kita).
  • O Advanced dashboard agora tem controles sempre visíveis ao rolar a página. Isso permite adicionar um novo gráfico sem precisar voltar ao topo. #60692 (Alexey Milovidov).
  • Tipos String e Enums podem ser usados no mesmo contexto, como em arrays, consultas UNION e expressões condicionais. Isso fecha #60726. #60727 (Alexey Milovidov).
  • Atualize o tzdata para 2024a. #60768 (Raúl Marín).
  • Suporte a arquivos sem extensão de formato no banco de dados Filesystem. #60795 (Kruglov Pavel).
  • Melhoria no Keeper: suporte ao leadership_expiry_ms nas configurações do Keeper. #60806 (Brokenice0415).
  • Passa a inferir sempre números em notação exponencial em formatos JSON, independentemente da configuração input_format_try_infer_exponent_floats. Adiciona a configuração input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects, que permite usar o tipo String para caminhos ambíguos em vez de gerar uma exceção durante a inferência de Tuples nomeadas a partir de objetos JSON. #60808 (Kruglov Pavel).
  • Adicionar uma flag para o SMJ tratar null como o maior ou o menor valor. Assim, o comportamento pode ser compatível com outros sistemas SQL, como o Apache Spark. #60896 (loudongfeng).
  • A versão do ClickHouse foi adicionada às labels do Docker. Fecha #54224. #60949 (Nikolay Monkov).
  • Adicionada a configuração parallel_replicas_allow_in_with_subquery = 1, que permite que subconsultas em IN funcionem com réplicas paralelas. #60950 (Nikolai Kochetov).
  • DNSResolver embaralha o conjunto de IPs resolvidos. #60965 (Sema Checherinda).
  • Suporte à detecção do formato de saída pela extensão do arquivo em clickhouse-client e clickhouse-local. #61036 (豪肥肥).
  • Verifique periodicamente atualizações no limite de memória. #61049 (Han Fei).
  • Ativa, por padrão, o profiling dos processors (tempo gasto e bytes de entrada/saída para ordenação, agregação, …). #61096 (Azat Khuzhin).
  • Adiciona a função toUInt128OrZero, que foi omitida por engano (o erro está relacionado a https://github.com/ClickHouse/ClickHouse/pull/945). Os aliases de compatibilidade FROM_UNIXTIME e DATE_FORMAT (eles não são nativos do ClickHouse e existem apenas para compatibilidade com o MySQL) passaram a ser case insensitive, como esperado para aliases de compatibilidade com SQL. #61114 (Alexey Milovidov).
  • Melhorias nas verificações de acesso, permitindo revogar direitos não concedidos caso o usuário de destino também não tenha os privilégios necessários para a revogação. Exemplo: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit).
  • Corrige um erro na otimização anterior: https://github.com/ClickHouse/ClickHouse/pull/59698: remove o break para garantir que a primeira coluna filtrada tenha o tamanho mínimo cc @jsc0218. #61145 (李扬).
  • Correção da função has() com coluna Nullable (corrige #60214). #61249 (Mikhail Koviazin).
  • Agora é possível especificar o atributo merge="true" em substituições de configuração para subárvores <include from_zk="/path" merge="true">. Se esse atributo for especificado, o ClickHouse mesclará a subárvore com a configuração existente; caso contrário, o comportamento padrão será anexar novo conteúdo à configuração. #61299 (alesapin).
  • Adicionadas métricas assíncronas para mapeamentos de memória virtual: VMMaxMapCount & VMNumMaps. Fecha #60662. #61354 (Tuan Pham Anh).
  • Use a configuração temporary_files_codec em todos os pontos em que criamos dados temporários, por exemplo, na ordenação em memória externa e no GROUP BY em memória externa. Antes, isso só funcionava no algoritmo de JOIN partial_merge. #61456 (Maksim Kita).
  • Remova a verificação duplicada de containing_part.empty(), pois ela já é feita aqui: https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141. #61467 (William Schoeffel).
  • Adicionada uma nova configuração max_parser_backtracks, que permite limitar a complexidade da análise de consultas. #61502 (Alexey Milovidov).
  • Menor contenção durante o redimensionamento dinâmico do cache do sistema de arquivos. #61524 (Kseniia Sumarokova).
  • Não permitir o modo com shard da fila do StorageS3, pois ela será reescrita. #61537 (Kseniia Sumarokova).
  • Corrigido o erro de digitação: de use_leagcy_max_level para use_legacy_max_level. #61545 (William Schoeffel).
  • Removidas algumas entradas duplicadas em blob_storage_log. #61622 (YenchangChan).
  • Adicionada a função current_user como alias de compatibilidade com o MySQL. #61770 (Yarik Briukhovetskyi).
  • Use uma identidade gerenciada para a E/S de backups ao usar o Azure Blob Storage. Adicione uma configuração para impedir que o ClickHouse tente criar um Container inexistente, o que exige permissões no nível da conta de armazenamento. #61785 (Daniel Pozo Escalona).
  • Na versão anterior, alguns números nos formatos Pretty não estavam bonitos o suficiente. #61794 (Alexey Milovidov).
  • Um valor longo em Pretty formats não será truncado se for o único valor no conjunto de resultados, como no resultado da consulta SHOW CREATE TABLE. #61795 (Alexey Milovidov).
  • Assim como clickhouse-local, clickhouse-client aceitará a opção --output-format como sinônimo de --format. Isso resolve #59848. #61797 (Alexey Milovidov).
  • Se stdout for um terminal e o formato de saída não for especificado, clickhouse-client e ferramentas semelhantes usarão PrettyCompact por padrão, assim como no modo interativo. clickhouse-client e clickhouse-local tratarão os argumentos de linha de comando para formatos de entrada e saída de forma unificada. Isso fecha #61272. #61800 (Alexey Milovidov).
  • Agrupamento de dígitos com sublinhados nos formatos Pretty para melhorar a legibilidade. Isso é controlado por uma nova configuração, output_format_pretty_highlight_digit_groups. #61802 (Alexey Milovidov).

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

Última modificação em 10 de junho de 2026