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 porORDER BY *. A sintaxe anterior estava muito sujeita a erros em tabelas com uma colunaall. #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
INSERTrecebidas quando as configurações no nível da consultaasync_insertededuplicate_blocks_in_dependent_materialized_viewsestão habilitadas ao mesmo tempo. Esse comportamento é controlado pela configuraçãothrow_if_deduplication_in_dependent_materialized_views_enabled_with_async_inserte 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-copierfoi 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
locateagora aceita os argumentos(needle, haystack[, start_pos])por padrão. O comportamento anterior(haystack, needle, [, start_pos])pode ser restaurado ao definirfunction_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, executeALTER 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,
SimpleAggregateFunctionnoORDER BYde tabelasMergeTree(assim comoAggregateFunctionjá é proibido, pois não é comparável) (useallow_suspicious_primary_keypara 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ãolz4, que é mais rápido; por isso, definimoszstdcomo padrão. Isso é controlado pelas configuraçõesoutput_format_parquet_compression_method,output_format_orc_compression_methodeoutput_format_arrow_compression_method. Alteramos o padrão parazstdem 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_replicatedno 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 tabelasMergeTree. Pode ser usada para introspecção. Sintaxe:mergeTreeIndex(database, table, [with_marks = true]), em quedatabase.tableé uma tabela existente com engineMergeTree. #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
LZ4HCpassará 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 aLZ4HC(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 tipoDateTimeouDateTime64. #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_keepemax_rows_to_keep- Adiciona testes para refletir as novas mudanças - Atualiza a documentação dememory.md- Adiciona a propriedadecontextda tabela aoMemorySinkpara 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 tipoDateTimeouDateTime64. #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 aasync_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/avgcondicionais para tiposbiginte 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 = -1as 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ão0.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.
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
insertManyFromde Number Nullable ou String Nullable. #60846 (李扬). - Função
dotProductotimizada 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::replicatee evita quememcpySmallAllowReadWriteOverflow15Implseja otimizada para amemcpyembutida. Fecha #61074.ColumnString::replicatefica 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
COLUMNScom 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 MATERIALIZEem uma coluna com expressãoDEFAULTouMATERIALIZEDagora 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_priorityemstorage_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_thresholdecommit_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 cnão pode ser analisada corretamente com a sintaxe antiga. Na nova sintaxe, a consultaALTER 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 sejaQPL_STS_BEING_PROCESSEDe, em seguida, recorrer ao codec de software. #59551 (jasperzhu). - Adiciona
preadposicional 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_depthcom 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_versionpara a tabela ReplicatedMergeTree na tabela de sistemasystem.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
StorageBuffertiver 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 Errorcom o código de erro HTTPGATEWAY_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
Variantcom tipos Variant semelhantes por padrão (permitir isso com a configuraçãoallow_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 consultaDESCRIBE, com a configuraçãodescribe_include_virtual_columnshabilitada. #60205 (Anton Popov). - Execução em curto-circuito para
ULIDStringToDateTime. #60211 (Juan Madurga). - Adicionada a coluna
query_idàs tabelassystem.backupsesystem.backup_log. Adicionada a stacktrace do erro na colunaerror. #60220 (Maksim Kita). - Gravação paralela dos blocos
INSERTpendentes do engine Distributed emDETACH/desligamento do servidor eSYSTEM 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çãodistributed_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 = 1para oferecer suporte imediato ao QuickSight. Além disso, as configuraçõesmysql_map_string_to_text_in_show_columnsemysql_map_fixed_string_to_text_in_show_columnsagora 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_depthcom um valor muito alto. Isso fecha #59622. #60434 (Alexey Milovidov). - A função
substringagora passou a ter um novo aliasbyteSlice. #60494 (Robert Schulze). - A configuração do servidor
dns_cache_max_sizefoi renomeada paradns_cache_max_entriespara reduzir a ambiguidade. #60500 (Kirill Nikiforov). SHOW INDEX | INDEXES | INDICES | KEYSnã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_msnas 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çãoinput_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-clienteclickhouse-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 compatibilidadeFROM_UNIXTIMEeDATE_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 colunaNullable(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_codecem 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 JOINpartial_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_levelparause_legacy_max_level. #61545 (William Schoeffel). - Removidas algumas entradas duplicadas em blob_storage_log. #61622 (YenchangChan).
- Adicionada a função
current_usercomo 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-clientaceitará a opção--output-formatcomo sinônimo de--format. Isso resolve #59848. #61797 (Alexey Milovidov). - Se
stdoutfor um terminal e o formato de saída não for especificado,clickhouse-cliente ferramentas semelhantes usarãoPrettyCompactpor padrão, assim como no modo interativo.clickhouse-clienteclickhouse-localtratarã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)
- Corrige bug no
intDivpara argumentos do tipo Decimal #59243 (Yarik Briukhovetskyi). - Corrigir_problema_de_kql_encontrado_por_wingfuzz #59626 (Yong Wang).
- Corrige o erro “Read beyond last offset” no AsynchronousBoundedReadBuffer #59630 (Vitaly Baranov).
- rabbitmq: corrigido o caso em que não havia mensagens nem confirmadas nem rejeitadas #59775 (Kseniia Sumarokova).
- Corrige a execução de funções sobre
consteLowCardinalitycomGROUP BY constno analyzer #59986 (Azat Khuzhin). - Corrige a conversão da escala do DateTime64 #60004 (Yarik Briukhovetskyi).
- Corrigido o INSERT no SQLite com aspas simples (escapando aspas simples com aspas, em vez de barra invertida) #60015 (Azat Khuzhin).
- Corrige a remoção do alias da coluna por optimize_uniq_to_count #60026 (Raúl Marín).
- Corrigido finished_mutations_to_keep=0 para MergeTree (como diz a documentação, 0 significa manter tudo) #60031 (Azat Khuzhin).
- Corrige possível exceção da tabela s3queue ao ser removida #60036 (Kseniia Sumarokova).
- PartsSplitter intervalos inválidos para a mesma parte #60041 (Maksim Kita).
- Usar max_query_size do contexto em DDLLogEntry em vez do valor fixo 4096 #60083 (Kruglov Pavel).
- Corrige a formatação inconsistente das consultas #60095 (Alexey Milovidov).
- Corrige a inconsistência na formatação de explain em subconsultas #60102 (Alexey Milovidov).
- Corrige travamento de
cosineDistancecom Nullable #60150 (Raúl Marín). - Permitir o CAST de Bool em representação de string para Bool true #60160 (Robert Schulze).
- Corrige system.s3queue_log #60166 (Kseniia Sumarokova).
- Corrige o
arrayReducecom nome de função de agregação Nullable #60188 (Raúl Marín). - Corrige a execução de actions durante a pré-filtragem (PK, poda de partições) #60196 (Azat Khuzhin).
- Ocultar informações sensíveis do s3queue #60233 (Kseniia Sumarokova).
- Reverte “Substituir
ORDER BY ALLporORDER BY *” #60248 (Robert Schulze). - Azure Blob Storage : Corrige problemas no endpoint e no prefixo #60251 (SmitaRKulkarni).
- Corrigidos os códigos de exceção HTTP. #60252 (Austin Kothig).
- corrige o bug do cache LRUResource (cache do Hive) #60262 (shanfengp).
- s3queue: corrige um erro (também corrige o teste instável test_storage_s3_queue/test.py::test_shards_distributed) #60282 (Kseniia Sumarokova).
- Corrigido o uso de valor não inicializado e resultado inválido nas funções de hash com IPv6 #60359 (Kruglov Pavel).
- Forçar reanálise se as réplicas paralelas forem alteradas #60362 (Raúl Marín).
- Corrigido o uso do tipo de metadados
plaincom a nova opção de configuraçãodisks#60396 (Kseniia Sumarokova). - Não permitir que max_parallel_replicas seja definido como 0, pois isso não faz sentido #60430 (Kruglov Pavel).
- Tentativa de corrigir o erro lógico ‘Não é possível capturar a coluna porque ela tem tipo incompatível’ em mapContainsKeyLike #60451 (Kruglov Pavel).
- Corrige o OptimizeDateOrDateTimeConverterWithPreimageVisitor com argumentos nulos #60453 (Raúl Marín).
- Tente evitar calcular subconsultas escalares em CREATE TABLE. #60464 (Nikolai Kochetov).
- Mesclagem #59674. #60470 (Alexey Milovidov).
- Verificação correta das chaves no s3Cluster #60477 (Antonio Andelic).
- Corrige um deadlock durante o parsing em paralelo quando muitas linhas são ignoradas devido a erros #60516 (Kruglov Pavel).
- Corrigir_max_query_size_para_o_operador_composto_de_kql: #60534 (Yong Wang).
- Correção do Keeper: adiciona timeouts durante a espera pelos logs de commit #60544 (Antonio Andelic).
- Reduz o número de linhas lidas em
system.numbers#60546 (JackyWoo). - Não exibir dicas numéricas para tipos de data #60577 (Raúl Marín).
- Corrigida a leitura de MergeTree com funções não determinísticas no filtro #60586 (Kruglov Pavel).
- Corrige erro lógico causado por tipo de valor inválido na configuração de compatibilidade #60596 (Kruglov Pavel).
- Corrige estados inconsistentes de funções de agregação em clusters mistos x86-64/ARM #60610 (Harry Lee).
- correção(prql): Handler de panic robusto #60615 (Maximilian Roos).
- Corrigido
intDivpara argumentos decimais e de data #60672 (Yarik Briukhovetskyi). - Correção: expandir CTE na consulta ALTER MODIFY #60682 (Yakov Olkhovskiy).
- Corrigido o system.parts para o mecanismo de banco de dados não Atomic/Ordinary (ou seja, Memory) #60689 (Azat Khuzhin).
- Corrige “Definição de armazenamento inválida no arquivo de metadados” em views parametrizadas #60708 (Azat Khuzhin).
- Corrigido estouro de buffer em CompressionCodecMultiple #60731 (Alexey Milovidov).
- Removido conteúdo sem sentido de SQL/JSON #60738 (Alexey Milovidov).
- Remove a verificação incorreta de sanitização na função agregada quantileGK #60740 (李扬).
- Corrige o bug de insert-select + insert_deduplication_token ao definir
streamscomo 1 #60745 (Jordi Villar). - Impedir a definição de cabeçalhos de metadados personalizados em operações de upload em múltiplas partes não compatíveis #60748 (Francisco J. Jurado Moreno).
- Correção em toStartOfInterval #60763 (Andrey Zvonov).
- Corrigido travamento em arrayEnumerateRanked #60764 (Raúl Marín).
- Corrige travamento ao usar input() em INSERT SELECT JOIN #60765 (Kruglov Pavel).
- Corrige travamento com valor diferente de allow_experimental_analyzer em subconsultas #60770 (Dmitry Novik).
- Removida a recursão ao ler do S3 #60849 (Antonio Andelic).
- Corrigido possível travamento ao ocorrer erro no HashedDictionaryParallelLoader #60926 (vdimir).
- Corrige o RESTORE assíncrono em banco de dados Replicated #60934 (Antonio Andelic).
- Corrige um deadlock em inserts assíncronos para tabelas
Logvia protocolo nativo #61055 (Anton Popov). - Corrigida a avaliação preguiçosa do argumento padrão em dictGetOrDefault para RangeHashedDictionary #61196 (Kruglov Pavel).
- Corrige diversos bugs em groupArraySorted #61203 (Raúl Marín).
- Corrige a reconfiguração do Keeper para o binário standalone #61233 (Antonio Andelic).
- Corrigido o uso de session_token no mecanismo S3 #61234 (Kruglov Pavel).
- Corrige um possível resultado incorreto da função de agregação
uniqExact#61257 (Anton Popov). - Corrige bugs no show database #61269 (Raúl Marín).
- Corrigido erro lógico no storage do RabbitMQ com colunas MATERIALIZED #61320 (vdimir).
- Corrige o CREATE OR REPLACE DICTIONARY #61356 (Vitaly Baranov).
- Corrige a consulta ATTACH com ON CLUSTER externo #61365 (Nikolay Degterinsky).
- corrige o problema de split da DAG de actions #61458 (Raúl Marín).
- Corrige a finalização de um RESTORE que falhou #61466 (Vitaly Baranov).
- Desativa async_insert_use_adaptive_busy_timeout corretamente com as configurações de compatibilidade #61468 (Raúl Marín).
- Permitir o enfileiramento no pool de restauração #61475 (Nikita Taranov).
- Corrige bug na leitura de system.parts usando UUID (issue 61220). #61479 (Dan Wu).
- Corrige travamento em window view #61526 (Alexey Milovidov).
- Corrigido
repeatcom inteiros não nativos #61527 (Antonio Andelic). - Corrigido o argumento
-sdo cliente #61530 (Mikhail f. Shiryaev). - Corrige uma falha em arrayPartialReverseSort #61539 (Raúl Marín).
- Corrige a busca em strings com posição constante #61547 (Antonio Andelic).
- Corrige um erro no
addDaysao usardatetime64#61561 (Shuai li). - Corrigido
system.part_logpara async insert com desduplicação #61620 (Antonio Andelic). - Corrigido o conjunto de partes não prontas em
system.parts. #61666 (Nikolai Kochetov).