Pular para o conteúdo principal

Lançamento do ClickHouse 20.12

Lançamento do ClickHouse v20.12.5.14-stable, 2020-12-28

Correção de bug

  • Desabilitada a escrita com AIO durante as mesclagens, porque isso pode levar, em casos extremamente raros, à corrupção de dados nas colunas de chave primária durante a mesclagem. #18481 (alesapin).
  • Corrigido o erro value is too short ao executar funções toType(...) (toDate, toUInt32, etc.) com argumento do tipo Nullable(String). Agora, essas funções retornam NULL em caso de erro de parsing, em vez de lançar exceção. Corrige #7673. #18445 (tavplubix).
  • Restritas as mesclagens de wide para partes compactas. No caso de mesclagem vertical, isso levava à corrupção da parte resultante. #18381 (Anton Popov).
  • Corrigido o preenchimento da tabela system.settings_profile_elements. Este PR corrige #18231. #18379 (Vitaly Baranov).
  • Corrigidas possíveis falhas em funções de agregação com o combinator Distinct ao usar agregação em dois níveis. Corrige #17682. #18365 (Anton Popov).
  • Corrigido o erro em que a consulta MODIFY COLUMN ... REMOVE TTL não removia de fato o TTL da coluna. #18130 (alesapin).

Melhoria de Compilação/Testes/Empacotamento

  • Atualizadas as informações de fusos horários para 2020e. #18531 (alesapin).

Lançamento do ClickHouse v20.12.4.5-stable, 2020-12-24

Correção de bug

  • Corrigido o problema em que o processo clickhouse-odbc-bridge fica inacessível para o servidor em máquinas com pilha dupla IPv4/IPv6; - Corrigido o problema em que atualizações de dicionário ODBC são executadas com consultas malformadas e/ou causam falhas; Possivelmente fecha #14489. #18278 (Denis Glazachev).
  • Corrigida a comparação de chave entre os tipos Enum e Int. Isso corrige #17989. #18214 (Amos Bird).
  • Corrigida a falha na conversão de chave única no engine de banco de dados MaterializeMySQL. Isso corrige #18186 e corrige #16372 #18211 (Winter Zhang).
  • Corrigido std::out_of_range: basic_string na análise de URL do S3. #18059 (Vladimir Chebotarev).
  • Corrigido o problema em que algumas tabelas não eram sincronizadas do MySQL para o ClickHouse, porque a conversão de índice de prefixo do MySQL não era compatível com o MaterializeMySQL. Isso corrige #15187 e corrige #17912 #17944 (Winter Zhang).
  • Corrigido o problema em que a otimização de consulta produzia resultados incorretos se a consulta contivesse ARRAY JOIN. #17887 (sundyli).
  • Corrigido possível segfault na função de agregação topK. Isso fecha #17404. #17845 (Maksim Kita).
  • Corrigida a tabela system.stack_trace vazia quando o servidor é executado no modo daemon. #17630 (Amos Bird).

Lançamento do ClickHouse v20.12.3.3-stable, 2020-12-13

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

  • Ativa use_compact_format_in_distributed_parts_names por padrão (consulte a documentação de referência). #16728 (Azat Khuzhin).
  • Aceita configurações de usuário relacionadas a formatos de arquivo (por exemplo, format_csv_delimiter) na cláusula SETTINGS ao criar uma tabela que usa o engine File, e usa essas configurações em todos os INSERTs e SELECTs. As configurações de formato de arquivo alteradas na sessão atual do usuário, ou na própria cláusula SETTINGS de uma consulta DML, não afetam mais a consulta. #16591 (Alexander Kuzmenkov).

Novo recurso

  • Adiciona suporte a compressão/descompressão *.xz. Isso permite usar *.xz na função file(). Corrige #8828. #16578 (Abi Palagashvili).
  • Introduz a consulta ALTER TABLE ... DROP|DETACH PART 'part_name'. #15511 (nvartolomei).
  • Adiciona a nova sintaxe ALTER UPDATE/DELETE IN PARTITION. #13403 (Vladimir Chebotarev).
  • Permite formatar tuplas nomeadas como objetos JSON ao usar formatos JSON de entrada/saída, controlado pela configuração output_format_json_named_tuples_as_objects, desabilitada por padrão. #17175 (Alexander Kuzmenkov).
  • Adiciona a possibilidade de inserir um valor enum como seu ID nos formatos TSV e CSV por padrão. #16834 (Kruglov Pavel).
  • Adiciona suporte a COLLATE para Nullable, LowCardinality, Array e Tuple, quando o tipo aninhado é String. Também refatora o código associado a collations em ColumnString.cpp. #16273 (Kruglov Pavel).
  • A nova função tcpPort retorna a porta TCP em que este servidor está escutando. #17134 (Ivan).
  • Adiciona novas funções matemáticas: acosh, asinh, atan2, atanh, cosh, hypot, log1p, sinh. #16636 (Konstantin Malanchev).
  • Possibilita distribuir as mesclagens entre diferentes réplicas. Introduz a configuração do MergeTree execute_merges_on_single_replica_time_threshold. #16424 (filimonov).
  • Adiciona a configuração aggregate_functions_null_for_empty para compatibilidade com o padrão SQL. Essa opção reescreve todas as funções de agregação em uma consulta, adicionando o sufixo -OrNull a elas. Implementa 10273. #16123 (flynn).
  • Atualiza o parsing de DateTime e DateTime64 para aceitar literais de Date em formato de string. #16040 (Maksim Kita).
  • Torna possível alterar o caminho do arquivo de histórico no clickhouse-client usando o parâmetro --history_file. #15960 (Maksim Kita).

Correção de bug

  • Corrige o problema em que o servidor pode, em casos muito raros, parar de aceitar conexões. #17542 (Amos Bird).
  • Corrigido o erro Function not implemented ao executar a consulta RENAME em banco de dados Atomic, com o ClickHouse em execução no Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix).
  • Não restaure as partes do WAL se in_memory_parts_enable_wal estiver desabilitado. #17802 (detailyang).
  • corrige a inicialização incorreta de max_compress_block_size em MergeTreeWriterSettings com min_compress_block_size. #17833 (flynn).
  • A mensagem de exceção sobre o tamanho máximo da tabela a ser removida foi exibida incorretamente. #17764 (alexey-milovidov).
  • Corrigido um possível segfault quando não há espaço suficiente para inserir na tabela Distributed. #17737 (tavplubix).
  • Corrigido o problema em que o ClickHouse falhava ao retomar a conexão com servidores MySQL. #17681 (Alexander Kazakov).
  • Pode ser determinado incorretamente se o cluster é replicado de forma circular (cruzada) ou não ao executar a consulta ON CLUSTER, devido a uma condição de corrida quando pool_size > 1. Isso foi corrigido. #17640 (tavplubix).
  • A exceção fmt::v7::format_error pode ser registrada em segundo plano nas tabelas MergeTree. Isso corrige #17613. #17615 (alexey-milovidov).
  • Quando o clickhouse-client é usado em modo interativo com consultas de várias linhas, o comentário de uma linha era estendido erroneamente até o fim da consulta. Isso corrige #13654. #17565 (alexey-milovidov).
  • Corrige o travamento da consulta ALTER quando a mutação correspondente foi interrompida em uma réplica diferente. Corrige #16953. #17499 (alesapin).
  • Corrige um problema em que o tamanho do cache de marcas era subestimado pelo ClickHouse. Isso pode acontecer quando há muitos arquivos minúsculos com marcas. #17496 (alesapin).
  • Correção no ORDER BY com a configuração optimize_redundant_functions_in_order_by habilitada. #17471 (Anton Popov).
  • Corrige duplicações após DISTINCT, que eram possíveis devido a uma otimização incorreta. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov).
  • Corrige falha ao ler a partir da tabela JOIN com tipos LowCardinality. Corrige #17228. #17397 (Nikolai Kochetov).
  • corrigido o estouro de pilha em toInt256(inf). Int256 é um recurso experimental. Fechado #17235. #17257 (flynn).
  • Corrige um possível erro Unexpected packet Data received from client registrado em consultas distribuídas com LIMIT. #17254 (Azat Khuzhin).
  • Corrige a invalidação do índice Set quando há colunas const na subconsulta. Isso corrige #17246. #17249 (Amos Bird).
  • Corrige uma possível análise incorreta do índice quando os tipos usados na comparação do índice são diferentes. Isso corrige #17122. #17145 (Amos Bird).
  • Corrige a comparação de ColumnConst, que causava uma falha. Isso corrigiu #17088. #17135 (Amos Bird).
  • Várias correções para o MaterializeMySQL (funcionalidade experimental). Corrige #16923 Corrige #15883 Corrige a falha de SYNC do MaterializeMySQL quando o binlog_checksum do MySQL é modificado. #17091 (Winter Zhang).
  • Corrige um bug em que consultas ON CLUSTER podem ficar travadas indefinidamente em tabelas ReplicatedMergeTree que não são líderes. #17089 (alesapin).
  • Corrigido travamento na consulta CREATE TABLE ... AS some_table quando some_table era criada com AS table_function(). Corrige #16944. #17072 (tavplubix).
  • Erro na implementação inacabada da função fuzzBits, issue relacionada: #16980. #17051 (hexiaoting).
  • Corrige o libunwind do LLVM no caso em que o registrador CFA é RAX. Trata-se deste bug no libunwind do LLVM. Já temos soluções alternativas para esse bug. #17046 (alexey-milovidov).
  • Evite erros de rede desnecessários em consultas remotas que podem ser canceladas durante a execução, como consultas com LIMIT. #17006 (Azat Khuzhin).
  • Corrigida a configuração optimize_distributed_group_by_sharding_key (desativada por padrão) para consultas com apenas OFFSET. #16996 (Azat Khuzhin).
  • Correção em tabelas Merge sobre tabelas Distributed com JOIN. #16993 (Azat Khuzhin).
  • Corrigido um resultado incorreto em inteiros grandes (128 e 256 bits) ao fazer CAST de double. O suporte a inteiros grandes é experimental. #16986 (Mike).
  • Corrige um possível travamento do servidor após ALTER TABLE ... MODIFY COLUMN ... NewType quando o SELECT contém uma expressão WHERE na coluna que está sendo alterada e o ALTER ainda não foi concluído. #16968 (Amos Bird).
  • As informações de blame não foram calculadas corretamente no clickhouse-git-import. #16959 (alexey-milovidov).
  • Corrige a otimização do ORDER BY com funções monótonas. Corrige #16107. #16956 (Anton Popov).
  • Corrige a otimização de group by quando a configuração optimize_aggregators_of_group_by_keys está habilitada e há junções. Corrige #12604. #16951 (Anton Popov).
  • Corrige o possível erro Illegal type of argument em consultas com ORDER BY. Corrige #16580. #16928 (Nikolai Kochetov).
  • Corrigido um código estranho em InterpreterShowAccessQuery. #16866 (tavplubix).
  • Evita que o servidor ClickHouse falhe ao usar a função timeSeriesGroupSum. A função foi removida das versões mais recentes do ClickHouse. #16865 (filimonov).
  • Corrige falhas raras e silenciosas quando o profiler de consultas está ativado e o ClickHouse está instalado em um sistema operacional com uma versão da glibc que tem tabelas de unwind assíncrono (supostamente) defeituosas para algumas funções. Isso corrige #15301. Isso corrige #13098. #16846 (alexey-milovidov).
  • Corrige falha ao usar any sem argumentos. Refere-se a #16803 . cc @azat. #16826 (Amos Bird).
  • Se não for possível alocar memória ao gravar os metadados da tabela em disco, poderá ser gravado um arquivo de metadados corrompido. #16772 (alexey-milovidov).
  • Corrigida otimização trivial de consulta com predicado de partição. #16767 (Azat Khuzhin).
  • Corrige o operador IN em várias colunas e tuplas com a configuração transform_null_in ativada. Corrige #15310. #16722 (Anton Popov).
  • Retorna o número de linhas afetadas em consultas INSERT via protocolo MySQL. Anteriormente, o ClickHouse sempre retornava 0; isso foi corrigido. Corrige #16605. #16715 (Winter Zhang).
  • Corrige falha em consulta remota ao usar a função de agregação com sufixo ‘if’. Corrige #16574 Corrige #16231 #16610 (Winter Zhang).
  • Corrigido o comportamento inconsistente causado por select_sequential_consistency na consulta de contagem trivial otimizada e em system.tables. #16309 (Hao Chen).

Melhoria

  • Remova partes vazias depois de serem podadas por TTL, mutação ou pelo algoritmo de merge collapsing. #16895 (Anton Popov).
  • Habilita o formato compacto de diretórios para envios assíncronos em tabelas Distributed: use_compact_format_in_distributed_parts_names é definido como 1 por padrão. #16788 (Azat Khuzhin).
  • Cancelar o upload multipart se nenhum dado tiver sido gravado no S3. #16840 (Pavel Kovalenko).
  • Refaça a resolução do IP de format_avro_schema_registry_url em caso de erros. #16985 (filimonov).
  • Mascarar a senha no data_path da system.distribution_queue. #16727 (Azat Khuzhin).
  • Gerar erro quando o uso de um transformador de colunas substituir uma coluna inexistente. #16183 (hexiaoting).
  • Desative o parsing paralelo quando não houver memória suficiente para que todas as threads trabalhem simultaneamente. Também podem ocorrer exceções como “Memory limit exceeded” quando alguém tentar inserir linhas extremamente grandes (> min_chunk_bytes_for_parallel_parsing), porque cada parte a ser processada precisa ser um conjunto independente de strings (uma ou mais). #16721 (Nikita Mikhaylov).
  • O script de instalação deve sempre criar subdiretórios nas pastas de config. Isso só é relevante para a compilação do Docker com config personalizada. #16936 (filimonov).
  • Correção da gramática na mensagem de erro nos formatos de entrada JSONEachRow, JSONCompactEachRow e RegexpRow. #17205 (nico piderman).
  • Definidos os parâmetros padrão host e port de SOURCE(CLICKHOUSE(...)) para a instância atual, e o valor padrão de user para 'default'. #16997 (vdimir).
  • Exibir uma mensagem de erro informativa ao executar ATTACH/DETACH TABLE <DICTIONARY>. Antes deste PR, detach table <dict> funciona, mas resulta em metadados em memória malformados. #16885 (Amos Bird).
  • Adicionada a função cutToFirstSignificantSubdomainWithWWW(). #16845 (Azat Khuzhin).
  • O servidor se recusava a iniciar, com uma mensagem de exceção, se uma configuração incorreta fosse fornecida (metric_log.collect_interval_milliseconds está ausente). #16815 (Ivan).
  • Mensagem de exceção mais clara quando a configuração de DDL distribuído está ausente. Isso corrige #5075. #16769 (Nikita Mikhaylov).
  • Melhoria de usabilidade: melhores sugestões na mensagem de erro de sintaxe quando a expressão CODEC está em posição incorreta na consulta CREATE TABLE. Isso corrige #12493. #16768 (alexey-milovidov).
  • Remover diretórios vazios de INSERT assíncrono na inicialização do engine Distributed. #16729 (Azat Khuzhin).
  • Solução alternativa para usar o S3 com o servidor nginx como proxy. Atualmente, o Nginx não aceita URLs com caminho vazio, como http://domain.com?delete, mas o aws-sdk-cpp padrão produz esse tipo de URL. Este commit usa uma versão corrigida do aws-sdk-cpp, que, nesses casos, gera URLs com ”/” como caminho, como http://domain.com/?delete. #16709 (ianton-ru).
  • Permite que as funções reinterpretAs* funcionem para inteiros e valores de ponto flutuante do mesmo tamanho. Implementa 16640. #16657 (flynn).
  • Agora, a configuração <auxiliary_zookeepers> pode ser alterada em config.xml e recarregada sem reiniciar o servidor. #16627 (Amos Bird).
  • Suporte a SNI em conexões HTTPS com recursos remotos. Isso permitirá a conexão com servidores da Cloudflare que exigem SNI. Isso corrige #10055. #16252 (alexey-milovidov).
  • Torna possível a conexão ao endpoint seguro do clickhouse-server, que exige SNI. Isso é possível quando o clickhouse-server está hospedado atrás de um proxy TLS. #16938 (filimonov).
  • Corrige um possível estouro de pilha se for criado um loop de visões materializadas. Isso fecha #15732. #16048 (alexey-milovidov).
  • Simplifica a implementação do processamento de tarefas em segundo plano para a família de motores de tabela MergeTree. Não deve haver alterações visíveis para o usuário. #15983 (alesapin).
  • Melhoria no MaterializeMySQL (funcionalidade experimental). Lança uma exceção informando os privilégios de sincronização corretos quando o usuário de sincronização do MySQL tem privilégios incorretos. #15977 (TCeason).
  • indexOf() passou a usar BloomFilter. #14977 (achimbab).

Melhoria de desempenho

  • Use o algoritmo Floyd-Rivest; ele é o melhor para o caso de uso de ordenação parcial no ClickHouse. Os benchmarks estão em https://github.com/danlark1/miniselect e aqui. #16825 (Danila Kutenin).
  • Agora, a família de motores ReplicatedMergeTree usa um pool de threads separado para fetches replicados. O tamanho do pool é limitado pela configuração background_fetches_pool_size, que pode ser ajustada com uma reinicialização do servidor. O valor padrão da configuração é 3, o que significa que a quantidade máxima de fetches paralelos é 3 (permitindo utilizar rede de 10G). Corrige #520. #16390 (alesapin).
  • Corrigido o crescimento descontrolado do estado de quantileTDigest. #16680 (hrissan).
  • Adiciona a descrição da subconsulta VIEW ao EXPLAIN. Limita a otimização de push down para VIEW. Adiciona réplicas locais de Distributed ao plano de consulta. #14936 (Nikolai Kochetov).
  • Corrige optimize_read_in_order/optimize_aggregation_in_order com max_threads > 0 e expressão em ORDER BY. #16637 (Azat Khuzhin).
  • Corrige o desempenho da leitura de tabelas Merge sobre um número muito grande de tabelas MergeTree. Corrige #7748. #16988 (Anton Popov).
  • Agora podemos podar partições com correspondência exata com segurança. Caso útil: suponha que a tabela esteja particionada por intHash64(x) % 100 e a consulta tenha a condição em intHash64(x) % 100 literalmente, não em x. #16253 (Amos Bird).

Funcionalidade Experimental

  • Adicionado o mecanismo de tabela EmbeddedRocksDB (pode ser usado para dicionários). #15073 (sundyli).

Melhoria de compilação/testes/empacotamento

Lançamento 20.11 do ClickHouse

Lançamento do ClickHouse v20.11.7.16-stable, 2021-03-02

Melhoria

  • Definidos explicitamente os uid / gid do usuário e do grupo clickhouse com os valores fixos (101) nas imagens do clickhouse-server. #19096 (filimonov).

Correção de bug

  • Correção de falha no índice BloomFilter. Corrige #19757. #19884 (Maksim Kita).
  • Era possível haver um deadlock se system.text&#95;log estivesse habilitado. Isso corrige #19874. #19875 (alexey-milovidov).
  • Em versões anteriores, argumentos incomuns da função arrayEnumerateUniq podem causar falha ou loop infinito. Isso corrige #19787. #19788 (alexey-milovidov).
  • Corrigido estouro de pilha ao usar a comparação precisa entre tipo aritmético e tipo String. #19773 (tavplubix).
  • Corrigida uma falha de segmentação na função bitmapAndnot. Corrige #19668. #19713 (Maksim Kita).
  • Algumas funções com inteiros grandes podem causar segfault. O suporte a inteiros grandes é um recurso experimental. Isso encerra #19667. #19672 (alexey-milovidov).
  • Corrige o resultado incorreto da função neighbor para o argumento LowCardinality. Corrige #10333. #19617 (Nikolai Kochetov).
  • Corrigido o erro de uso após liberação do CompressedWriteBuffer na Connection após a desconexão. #19599 (Azat Khuzhin).
  • A consulta DROP/DETACH TABLE table ON CLUSTER cluster SYNC podia ficar travada; isso foi corrigido. Corrige #19568. #19572 (tavplubix).
  • Correção da expressão id na consulta CREATE DICTIONARY. #19571 (Maksim Kita).
  • Corrige SIGSEGV com merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read=0/UINT64_MAX. #19528 (Azat Khuzhin).
  • Era possível haver um estouro de buffer (na leitura de memória) se a função addMonth fosse chamada com argumentos especialmente elaborados. Isso corrige #19441. Isso corrige #19413. #19472 (alexey-milovidov).
  • Marcar o lote distribuído como inválido em caso de bloco de dados vazio em um dos arquivos. #19449 (Azat Khuzhin).
  • Corrige um possível estouro de buffer na biblioteca Uber H3. Veja https://github.com/uber/h3/issues/392. Fecha #19219. #19383 (alexey-milovidov).
  • Corrige a coluna _state em system.parts (LOGICAL_ERROR ao consultar essa coluna, devido à ordem incorreta). #19346 (Azat Khuzhin).
  • Corrigido o erro Cannot convert column now64() because it is constant but values of constants are different in source and result. Continuação de #7156. #19316 (Nikolai Kochetov).
  • Corrige um bug em que consultas ALTER e DROP executadas concorrentemente podem travar ao processar uma tabela ReplicatedMergeTree. #19237 (alesapin).
  • Corrige a leitura infinita de um arquivo no formato ORC (problema introduzido em #10580). Corrige #19095. #19134 (Nikolai Kochetov).
  • Corrige um bug de inicialização quando o ClickHouse não conseguia ler o codec de compressão de LowCardinality(Nullable(...)) e gerava a exceção Attempt to read after EOF. Corrige #18340. #19101 (alesapin).
  • Corrigido o erro There is no checkpoint ao inserir dados pela interface HTTP usando o formato Template ou CustomSeparated. Corrige #19021. #19072 (tavplubix).
  • Restrinja as consultas MODIFY TTL para tabelas MergeTree criadas com a sintaxe antiga. Antes, a consulta era concluída com sucesso, mas na prática não surtia efeito. #19064 (Anton Popov).
  • Certifique-se de que groupUniqArray retorne o tipo correto para um argumento do tipo Enum. Isso fecha #17875. #19019 (alexey-milovidov).
  • Corrige um possível erro Expected single dictionary argument for function ao usar a função ignore com um argumento LowCardinality. Corrige #14275. #19016 (Nikolai Kochetov).
  • Corrigida a inserção da coluna LowCardinality na tabela com engine TinyLog. Corrige #18629. #19010 (Nikolai Kochetov).
  • Desative optimize_move_functions_out_of_any porque a otimização nem sempre é correta. Isso corrige #18051. Isso corrige #18973. #18981 (alexey-milovidov).
  • Corrigido um deadlock raríssimo durante o desligamento. #18977 (tavplubix).
  • Corrige um bug em que uma mutação com texto com caracteres de escape (como ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1')) era serializada incorretamente. Corrige #18878. #18944 (alesapin).
  • Attach da partição deve redefinir a mutação. #18804. #18935 (fastio).
  • Corrige um possível travamento ao encerrar o clickhouse-local. Isso corrige #18891. #18893 (alexey-milovidov).
  • Corrigido o combinador *If com função unária e tipos Nullable. #18806 (Azat Khuzhin).
  • INSERTs distribuídos assíncronos podem ser rejeitados pelo servidor se a configuração network_compression_method estiver definida globalmente com um valor diferente do padrão. Isso corrige #18741. #18776 (alexey-milovidov).
  • Corrigido o erro Attempt to read after eof ao tentar fazer CAST de NULL de Nullable(String) para Nullable(Decimal(P, S)). Agora, a função CAST retorna NULL quando não consegue interpretar um valor decimal a partir de uma string anulável. Corrige #7690. #18718 (Winter Zhang).
  • Corrigido o Logger com número de args incompatível. #18717 (sundyli).
  • Adiciona suporte ao tipo de dado FixedString. Receberei esta exceção “Code: 50, e.displayText() = DB::Exception: Unsupported type FixedString(1)” ao replicar dados do MySQL para o ClickHouse. Este patch corrige o bug #18450 e também corrige #6556. #18553 (awesomeleo).
  • Corrige o possível erro Pipeline stuck ao usar ORDER BY após uma subconsulta com RIGHT ou FULL join. #18550 (Nikolai Kochetov).
  • Corrige um bug que pode fazer com que consultas ALTER fiquem travadas após o cancelamento da mutation correspondente. Detectado pelo thread fuzzer. #18518 (alesapin).
  • Desabilita a gravação com AIO durante as mesclagens, pois isso pode levar, em casos extremamente raros, à corrupção de dados nas colunas da chave primária durante a mesclagem. #18481 (alesapin).
  • Desabilita o constant folding para subconsultas na etapa de análise, quando o resultado não puder ser calculado. #18446 (Azat Khuzhin).
  • Corrigido o erro value is too short ao executar funções toType(...) (toDate, toUInt32 etc.) com argumento do tipo Nullable(String). Agora, essas funções retornam NULL em caso de erro de parsing em vez de gerar uma exceção. Corrige #7673. #18445 (tavplubix).
  • Restringe mesclagens de partes wide para partes compactas. No caso de mesclagem vertical, isso levava à corrupção da parte resultante. #18381 (Anton Popov).
  • Corrigido o preenchimento da tabela system.settings_profile_elements. Este PR corrige #18231. #18379 (Vitaly Baranov).
  • Corrige a análise de índice de funções binárias com argumento constante, que pode levar a resultados de consulta incorretos. Isso corrige #18364. #18373 (Amos Bird).
  • Corrige possíveis travamentos em funções de agregação com o combinador Distinct ao usar agregação em dois níveis. Corrige #17682. #18365 (Anton Popov).
  • SELECT count() FROM table agora pode ser executado se for possível selecionar apenas uma coluna qualquer da table. Este PR corrige #10639. #18233 (Vitaly Baranov).
  • SELECT JOIN agora exige o privilégio SELECT em cada uma das tabelas envolvidas no join. Este PR corrige #17654. #18232 (Vitaly Baranov).
  • Corrige um possível resultado incompleto da consulta ao ler a partir de MergeTree* em caso de backoff nas leituras (mensagem <Debug> MergeTreeReadPool: Will lower number of threads nos logs). Introduzido em #16423. Corrige #18137. #18216 (Nikolai Kochetov).
  • Corrige o erro em que a consulta MODIFY COLUMN ... REMOVE TTL na verdade não remove o TTL da coluna. #18130 (alesapin).
  • Corrige funções não determinísticas no otimizador de predicados. Isso corrige #17244. #17273 (Winter Zhang).
  • A mutação podia travar ao aguardar alguma parte inexistente após MOVE ou REPLACE PARTITION ou, em casos raros, após DETACH ou DROP PARTITION. Isso foi corrigido. #15537 (tavplubix).

Melhoria de compilação/testes/empacotamento

  • Atualização das informações sobre fusos horários para 2020e. #18531 (alesapin).

Lançamento do ClickHouse v20.11.6.6-stable, 2020-12-24

Correção de bug

  • Corrigido um problema em que o processo clickhouse-odbc-bridge ficava inacessível para o servidor em máquinas com pilha dupla IPv4/IPv6, e outro em que atualizações de dicionários ODBC eram realizadas com consultas malformadas e/ou causavam falhas. Isso possivelmente fecha #14489. #18278 (Denis Glazachev).
  • Corrigida a comparação de chaves entre os tipos Enum e Int. Corrige #17989. #18214 (Amos Bird).
  • Corrigido travamento ao converter chave única no engine de banco de dados MaterializeMySQL. Isso corrige #18186 e #16372 #18211 (Winter Zhang).
  • Corrigido std::out_of_range: basic_string ao analisar URL do S3. #18059 (Vladimir Chebotarev).
  • Corrigido o problema em que algumas tabelas não eram sincronizadas do MySQL para o ClickHouse porque a conversão de índices de prefixo do MySQL não tinha suporte no MaterializeMySQL. Isso corrige #15187 e #17912 #17944 (Winter Zhang).
  • Corrigido o problema em que a otimização de consultas produzia um resultado incorreto se a consulta contivesse ARRAY JOIN. #17887 (sundyli).
  • Corrige um possível segfault na função de agregação topK. Isso fecha #17404. #17845 (Maksim Kita).
  • Não restaure partes do WAL se in_memory_parts_enable_wal estiver desabilitado. #17802 (detailyang).
  • Corrigido um problema em que o ClickHouse falhava ao retomar a conexão com servidores MySQL. #17681 (Alexander Kazakov).
  • Corrigido o comportamento inconsistente de optimize_trivial_count_query ao usar um predicado de partição. #17644 (Azat Khuzhin).
  • Corrigida a tabela system.stack_trace, que ficava vazia quando o servidor era executado em modo daemon. #17630 (Amos Bird).
  • Corrigido o comportamento quando a exceção fmt::v7::format_error pode ser registrada em segundo plano em tabelas MergeTree. Isso corrige #17613. #17615 (alexey-milovidov).
  • Corrigido o comportamento quando o clickhouse-client é usado no modo interativo com consultas multilinha e um comentário de uma linha era estendido erroneamente até o final da consulta. Isso corrige #13654. #17565 (alexey-milovidov).
  • Corrigido o problema em que o servidor pode parar de aceitar conexões em casos raríssimos. #17542 (alexey-milovidov).
  • Corrigido o travamento da consulta ALTER quando a mutação correspondente foi interrompida em outra réplica. Isso corrige #16953. #17499 (alesapin).
  • Corrigido um bug em que o tamanho do cache de marcas era subestimado pelo ClickHouse. Isso pode acontecer quando há muitos arquivos minúsculos com marcas. #17496 (alesapin).
  • Corrigido o ORDER BY quando a configuração optimize_redundant_functions_in_order_by está habilitada. #17471 (Anton Popov).
  • Corrigidas as duplicatas após DISTINCT, que podiam ocorrer devido a uma otimização incorreta. Isso corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov).
  • Corrigido travamento ao ler da tabela JOIN com tipos LowCardinality. Isso corrige #17228. #17397 (Nikolai Kochetov).
  • Corrigida a invalidação do índice Set quando há colunas const na subconsulta. Isso corrige #17246 . #17249 (Amos Bird).
  • Corrigida uma possível análise incorreta de índice quando os tipos na comparação do índice são diferentes. Isso corrige #17122. #17145 (Amos Bird).
  • Corrigida a comparação de ColumnConst, que causava uma falha. Isso corrige #17088 . #17135 (Amos Bird).
  • Corrigido bug em que consultas ON CLUSTER podiam travar indefinidamente em ReplicatedMergeTreeTables não líderes. #17089 (alesapin).
  • Corrigido um bug encontrado pelo fuzzer na função fuzzBits. Isso corrige #16980. #17051 (hexiaoting).
  • Evite erros de rede desnecessários em consultas remotas que podem ser canceladas durante sua execução, como consultas com LIMIT. #17006 (Azat Khuzhin).
  • Corrigido o resultado incorreto em inteiros grandes (128, 256 bits) ao converter de double. #16986 (Mike).
  • Refazer a resolução do IP de format_avro_schema_registry_url em caso de erros. #16985 (filimonov).
  • Corrigido um possível travamento do servidor após ALTER TABLE ... MODIFY COLUMN ... NewType quando um SELECT contém uma expressão WHERE na coluna que está sendo alterada e a alteração ainda não foi concluída. #16968 (Amos Bird).
  • As informações de autoria não foram calculadas corretamente no clickhouse-git-import. #16959 (alexey-milovidov).
  • Corrigida a otimização do ORDER BY com funções monótonas. Corrige #16107. #16956 (Anton Popov).
  • Corrigida a otimização de GROUP BY quando a configuração optimize_aggregators_of_group_by_keys está habilitada e há junções. Isso corrige #12604. #16951 (Anton Popov).
  • O script de instalação deve sempre criar subdiretórios nas pastas de config. Isso só é relevante para a compilação do Docker com config personalizada. #16936 (filimonov).
  • Corrigido um possível erro Illegal type of argument em consultas com ORDER BY. Isso corrige #16580. #16928 (Nikolai Kochetov).
  • Cancelar o upload multipart se nenhum dado tiver sido gravado em WriteBufferFromS3. #16840 (Pavel Kovalenko).
  • Corrigido o erro ao usar any sem argumentos. Isso corrige #16803. #16826 (Amos Bird).
  • Corrigido o comportamento em que o ClickHouse sempre retornava 0 em vez do número de linhas afetadas em consultas INSERT via protocolo MySQL. Isso corrige #16605. #16715 (Winter Zhang).
  • Corrigido o crescimento descontrolado do TDigest. #16680 (hrissan).
  • Corrigida a falha em consulta remota ao usar o sufixo if em função de agregação. Isso corrige #16574, #16231 e #16610 (Winter Zhang).
  • Corrigido o comportamento inconsistente causado por select_sequential_consistency na consulta de contagem trivial otimizada e em system.tables. #16309 (Hao Chen).
  • Gera erro ao usar o replace do ColumnTransformer em uma coluna inexistente. #16183 (hexiaoting).

Lançamento do ClickHouse v20.11.3.3-stable, 2020-11-13

Correção de bug

  • Corrige travamentos silenciosos raros quando o profiler de consulta está ativado e o ClickHouse está instalado em um sistema operacional com uma versão do glibc que tem tabelas de unwind assíncrono (supostamente) corrompidas para algumas funções. Isso corrige #15301. Isso corrige #13098. #16846 (alexey-milovidov).

Lançamento do ClickHouse v20.11.2.1, 2020-11-11

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

  • Se algum profile fosse especificado na seção de config distributed_ddl, esse profile poderia sobrescrever as configurações do profile default na inicialização do servidor. Isso foi corrigido; agora, as configurações das consultas de DDL distribuído não devem afetar as configurações globais do servidor. #16635 (tavplubix).
  • Restringe o uso de tipos de dados não comparáveis (como AggregateFunction) em chaves (chave de ordenação, chave primária, chave de partição e assim por diante). #16601 (alesapin).
  • Remove as consultas ANALYZE e AST e torna a configuração enable_debug_queries obsoleta, já que agora ela faz parte da consulta EXPLAIN, que é mais completa. #16536 (Ivan).
  • As funções de agregação boundingRatio, rankCorr, retention, timeSeriesGroupSum, timeSeriesGroupRateSum, windowFunnel foram incorretamente tratadas como insensíveis a maiúsculas e minúsculas. Agora, seus nomes passam a diferenciar maiúsculas de minúsculas, como projetado. Apenas funções especificadas no padrão SQL, criadas para compatibilidade com outros SGBDs, ou funções semelhantes a essas devem ser insensíveis a maiúsculas e minúsculas. #16407 (alexey-milovidov).
  • Faz a função rankCorr retornar nan quando houver dados insuficientes #16124. #16135 (hexiaoting).
  • Ao atualizar a partir de versões anteriores à 20.5, se uma rolling update for realizada e o cluster contiver tanto versões 20.5 ou superiores quanto inferiores à 20.5, se nós do ClickHouse com versões antigas forem reiniciados e a versão antiga for iniciada na presença de versões mais novas, isso poderá levar a erros Part ... intersects previous part. Para evitar esse erro, primeiro instale os pacotes mais novos do clickhouse-server em todos os nós do cluster e depois reinicie-os (assim, quando o clickhouse-server for reiniciado, ele será iniciado com a nova versão).

Novo recurso

  • Adicionado suporte ao LDAP como diretório de usuários para usuários que não existem localmente. #12736 (Denis Glazachev).
  • Adicionada a tabela system.replicated_fetches, que mostra os fetches em segundo plano atualmente em execução. #16428 (alesapin).
  • Adicionada a configuração date_time_output_format. #15845 (Maksim Kita).
  • Adicionada uma interface web básica ao ClickHouse. #16158 (alexey-milovidov).
  • Permite ler/gravar uma única mensagem Protobuf de uma só vez (sem delimitadores de comprimento). #15199 (filimonov).
  • Adicionado suporte inicial ao OpenTelemetry. O ClickHouse agora aceita cabeçalhos traceparent do OpenTelemetry por meio dos protocolos Native e HTTP, e os repassa em alguns casos para componentes downstream. Os spans de trace das consultas executadas são salvos na tabela system.opentelemetry_span_log. #14195 (Alexander Kuzmenkov).
  • Permite especificar a chave primária na lista de colunas da consulta CREATE TABLE. Isso é necessário para garantir compatibilidade com outros dialetos SQL. #15823 (Maksim Kita).
  • Implementado OFFSET offset_row_count {ROW | ROWS} FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES} na consulta SELECT com ORDER BY. Esta é a forma padrão do SQL para especificar LIMIT. #15855 (hexiaoting).
  • Função errorCodeToName - retorna o nome da variável correspondente ao erro (útil para analisar query&#95;log e similares). Tabela system.errors - mostra quantas vezes ocorreram erros (respeita system_events_show_zero_values). #16438 (Azat Khuzhin).
  • Adicionada a função untuple, uma função especial que pode introduzir novas colunas na lista SELECT ao expandir uma tupla nomeada. #16242 (Nikolai Kochetov, Amos Bird).
  • Agora podemos fornecer identificadores por meio de parâmetros de consulta. E esses parâmetros podem ser usados como objetos de tabelas ou colunas. #16594 (Amos Bird).
  • Adicionado suporte a inteiros grandes (UInt256, Int128, Int256) e ao tipo de dado UUID no índice BloomFilter do MergeTree. Inteiros grandes são um recurso experimental. #16642 (Maksim Kita).
  • Adicionada a função farmFingerprint64 (hash não criptográfico de string). #16570 (Jacob Hayes).
  • Adicionado log_queries_min_query_duration_ms: apenas consultas mais lentas do que o valor dessa configuração irão para query_log/query_thread_log (ou seja, algo como slow_query_log no MySQL). #16529 (Azat Khuzhin).
  • Possibilidade de criar uma imagem Docker baseada no Alpine. Usa binário pré-compilado e componentes da glibc do Ubuntu 20.04. #16479 (filimonov).
  • Adicionadas as funções de conversão toUUIDOrNull, toUUIDOrZero. #16337 (Maksim Kita).
  • Adicionada a configuração max_concurrent_queries_for_all_users; veja #6636 para casos de uso. #16154 (nvartolomei).
  • Adicionada uma nova opção print_query_id ao clickhouse-client. Ela ajuda a gerar strings arbitrárias com o id da consulta atual gerado pelo cliente. O clickhouse-client também passa a imprimir o id da consulta por padrão. #15809 (Amos Bird).
  • Adiciona as funções tid e logTrace. Isso fecha #9434. #15803 (flynn).
  • Adicionar a função formatReadableTimeDelta, que formata o intervalo de tempo em uma string legível … #15497 (Filipe Caixeta).
  • Adicionada a opção disable_merges para volumes em configuração de vários discos. #13956 (Vladimir Chebotarev).

Funcionalidade experimental

  • Novas funções encrypt, aes_encrypt_mysql, decrypt, aes_decrypt_mysql. Como essas funções ainda têm desempenho lento, consideramos este um recurso experimental. #11844 (Vasily Nemkov).

Correção de bug

  • Ocultar a senha em data_path na system.distribution_queue. #16727 (Azat Khuzhin).
  • Corrige o operador IN para várias colunas e tuplas com a configuração transform_null_in habilitada. Corrige #15310. #16722 (Anton Popov).
  • A configuração max_parallel_replicas funcionava incorretamente se a tabela consultada não usasse amostragem. Isso corrige #5733. #16675 (alexey-milovidov).
  • Correção de optimize_read_in_order/optimize_aggregation_in_order com max_threads > 0 e expressão em ORDER BY. #16637 (Azat Khuzhin).
  • O cálculo de expressões DEFAULT envolvia possíveis conflitos de nomes (algo muito improvável de acontecer). Isso corrige #9359. #16612 (alexey-milovidov).
  • Corrige a unidade de query_thread_log.query_duration_ms. #16563 (Azat Khuzhin).
  • Corrigido um bug ao usar MySQL Master -> MySQL Slave -> o mecanismo MaterializeMySQL do ClickHouse. MaterializeMySQL é um recurso experimental. #16504 (TCeason).
  • Um argumento especialmente elaborado da função round com Decimal estava causando uma divisão inteira por zero. Isso corrige #13338. #16451 (alexey-milovidov).
  • Corrigido o DROP TABLE para Distributed (sujeito a condição de corrida com INSERT). #16409 (Azat Khuzhin).
  • Corrigido o processamento de entradas muito grandes na fila de replicação. Entradas muito grandes podem aparecer em queries ALTER se a estrutura da tabela for extremamente grande (próxima de 1 MB). Isso corrige #16307. #16332 (alexey-milovidov).
  • Corrigido o comportamento inconsistente em que parte dos dados retornados podia ser descartada porque o conjunto usado na filtragem não havia sido criado. #16308 (Nikita Mikhaylov).
  • Corrigido o dictGet em sharding_key (e em locais semelhantes, ou seja, quando o contexto da função é armazenado permanentemente). #16205 (Azat Khuzhin).
  • Corrige a exceção lançada no clickhouse-local ao tentar executar o comando OPTIMIZE. Corrige #16076. #16192 (filimonov).
  • Corrige a regressão #15780; por exemplo, indexOf([1, 2, 3], toLowCardinality(1)) agora está sendo proibido, mas não deveria. #16038 (Mike).
  • Corrigido um bug com banco de dados MySQL. Quando o servidor MySQL usado como engine de banco de dados fica indisponível, algumas consultas geram Exception porque tentam obter tabelas de um servidor indisponível, embora isso seja desnecessário. Por exemplo, a consulta SELECT ... FROM system.parts deve funcionar apenas com tabelas MergeTree e não acessar o banco de dados MySQL de forma alguma. #16032 (Kruglov Pavel).
  • Agora será gerada uma exceção quando ALTER MODIFY COLUMN ... DEFAULT ... tiver um valor padrão incompatível com o tipo da coluna. Corrige #15854. #15858 (alesapin).
  • Corrigidas as funções IPv4CIDRToRange/IPv6CIDRToRange para aceitar valores constantes de colunas IP. #15856 (vladimir-golovchenko).

Melhoria

  • Considere INTERVAL '1 hour' como equivalente a INTERVAL 1 HOUR, para manter a compatibilidade com Postgres e similares. Isso corrige #15637. #15978 (flynn).
  • Habilitado o parsing de valores enum por seus IDs numéricos para os formatos de entrada CSV, TSV e JSON. #15685 (vivarum).
  • Melhor agendamento das tarefas de leitura para a arquitetura JBOD e o armazenamento MergeTree. Nova configuração read_backoff_min_concurrency, que define o limite mínimo para o número de threads de leitura. #16423 (Amos Bird).
  • Adiciona o suporte que faltava ao LowCardinality no formato Avro. #16521 (Mike).
  • Solução alternativa para usar S3 com o servidor nginx como proxy. Atualmente, o Nginx não aceita URLs com caminho vazio, como http://domain.com?delete, mas o aws-sdk-cpp padrão produz esse tipo de URL. Este commit usa uma versão corrigida do aws-sdk-cpp, que, nesses casos, gera URLs com &quot;/&quot; como caminho, como http://domain.com/?delete. #16814 (ianton-ru).
  • Diagnósticos aprimorados para erros de parse nos dados de entrada. Informa o número da linha nos erros Cannot read all data. #16644 (alexey-milovidov).
  • Aprimora o comportamento de minMap e maxMap. Eles não ignorarão valores iguais a zero no resultado. Corrige #16087. #16631 (Ildus Kurbangaliev).
  • Melhorias na atualização da configuração do ZooKeeper em tempo de execução. #16630 (sundyli).
  • Aplique a cláusula SETTINGS o mais cedo possível. Isso permite modificar mais configurações na consulta. Fecha #3178. #16619 (alexey-milovidov).
  • Agora, o campo event_time_microseconds é armazenado como Decimal64, e não UInt64. #16617 (Nikita Mikhaylov).
  • Agora, é possível usar funções parametrizadas no transformador de colunas APPLY. #16589 (Amos Bird).
  • Melhorado o agendamento da tarefa em segundo plano que remove dados de tabelas removidas nos bancos de dados Atomic. Os bancos de dados Atomic não criam um link simbólico quebrado para o diretório de dados da tabela se ela de fato não tiver um diretório de dados. #16584 (tavplubix).
  • Subconsultas na cláusula WITH (CTE) podem referenciar subconsultas anteriores na cláusula WITH pelo nome. #16575 (Amos Bird).
  • Adicionar current_database ao system.query_thread_log. #16558 (Azat Khuzhin).
  • Permite buscar partes que já estão confirmadas ou desatualizadas na instância atual para o diretório detached. Isso é útil ao migrar tabelas de outro cluster quando há um mapeamento de N shards para 1. Também é consistente com a implementação atual de fetchPartition. #16538 (Amos Bird).
  • Várias melhorias para RabbitMQ: correção de um bug em #16263. Também foi reduzido o tempo de vida do loop de eventos. Adicionada uma configuração de filas mais eficiente. #16426 (Kseniia Sumarokova).
  • Corrige a asserção de depuração na função quantileDeterministic. Na versão anterior, ela também podia transferir pela rede até o dobro de dados. Embora não houvesse nenhum bug. Isso corrige #15683. #16410 (alexey-milovidov).
  • Adicionada a métrica TablesToDropQueueSize. Ela equivale ao número de tabelas removidas que aguardam a remoção de dados em segundo plano. #16364 (tavplubix).
  • Diagnósticos melhores quando o cliente perde a conexão. Nas versões anteriores, as exceções Attempt to read after EOF e Broken pipe eram registradas no servidor. Na nova versão, isso passa a ser uma mensagem informativa: Client has dropped the connection, cancel the query.. #16329 (alexey-milovidov).
  • Adicionado suporte a total_rows/total_bytes (de system.tables) para os motores de tabela Set/Join. #16306 (Azat Khuzhin).
  • Agora é possível especificar PRIMARY KEY sem ORDER BY na família de motores de tabela MergeTree. Fecha #15591. #16284 (alesapin).
  • Se não houver uma pasta tmp no sistema (chroot, configuração incorreta etc.), clickhouse-local criará uma subpasta temporária no diretório atual. #16280 (filimonov).
  • Adiciona suporte a tipos de dados aninhados (como tupla nomeada) como subtipos. Corrige #15587. #16262 (Ivan).
  • Suporte a database_atomic_wait_for_drop_and_detach_synchronously/NO DELAY/SYNC no DROP DATABASE. #16127 (Azat Khuzhin).
  • Adiciona allow_nondeterministic_optimize_skip_unused_shards (para permitir funções não determinísticas, como rand() ou dictGet(), na chave de sharding). #16105 (Azat Khuzhin).
  • Corrige memory_profiler_step/max_untracked_memory para consultas via HTTP (teste incluído). Corrige o problema de que ajustar esse valor globalmente na configuração XML também não ajuda, já que essas configurações não são aplicadas de qualquer forma; apenas o valor padrão (4MB) é usado. Corrige query_id para o ThreadStatus raiz da consulta HTTP (inicializando QueryScope após ler query_id). #16101 (Azat Khuzhin).
  • Agora é possível executar consultas ALTER ... ON CLUSTER independentemente da configuração <internal_replication> na config do cluster. #16075 (alesapin).
  • Corrige um problema raro em que o clickhouse-client pode ser abortado ao sair devido ao carregamento de sugestões. Isso corrige #16035. #16047 (alexey-milovidov).
  • Adicionado suporte ao layout cache em dicionários Redis com chave complexa. #15985 (Anton Popov).
  • Corrige travamento de consulta (loop infinito) em caso de configuração incorreta (connections_with_failover_max_tries definido como 0). #15876 (Azat Khuzhin).
  • Alterado o nível de algumas mensagens de log de information para debug, para que mensagens de information não apareçam em todas as consultas. Isso corrige #5293. #15816 (alexey-milovidov).
  • Remova as métricas MemoryTrackingInBackground* para evitar resultados potencialmente enganosos. Isso corrige #15684. #15813 (alexey-milovidov).
  • Adicionado suporte a reconexões na ferramenta zookeeper-dump-tree. #15711 (alexey-milovidov).
  • Permite especificar explicitamente a lista de colunas na consulta CREATE TABLE table AS table_function(...). Corrige #9249. Corrige #14214. #14295 (tavplubix).

Melhoria de desempenho

  • Não faz merge de partes entre partições em SELECT FINAL. #15938 (Kruglov Pavel).
  • Melhora o desempenho das funções de agregação -OrNull e -OrDefault. #16661 (alexey-milovidov).
  • Melhora o desempenho de quantileMerge. Em versões anteriores, era absurdamente lento. Isso fecha #1463. #16643 (alexey-milovidov).
  • Melhora um pouco o desempenho das funções lógicas. #16347 (alexey-milovidov).
  • Melhorado o desempenho da atribuição de merges nos motores de tabela MergeTree. Não deve ser perceptível para o usuário. #16191 (alesapin).
  • Acelera o carregamento de dicionários hashed/sparse_hashed com a pré-alocação da tabela hash. #15454 (Azat Khuzhin).
  • Agora, a otimização trivial de count se torna ligeiramente não trivial. Predicados que contêm a expressão exata da partição também podem ser otimizados. Isso também corrige #11092, que retorna uma contagem incorreta quando max_parallel_replicas > 1. #15074 (Amos Bird).

Melhoria de Compilação/Testes/Empacotamento

  • Adiciona uma verificação de instabilidade para testes sem estado. Ela detectará com antecedência testes funcionais potencialmente instáveis, antes de serem incorporados. #16238 (alesapin).
  • Usa a versão correta do croaring em vez da amalgamação. #16285 (sundyli).
  • Melhora a geração de arquivos de compilação para o sistema de compilação ya.make (Arcadia). #16700 (alexey-milovidov).
  • Adiciona uma ferramenta para verificar arquivos binlog do MySQL para o engine de banco de dados MaterializeMySQL. MaterializeMySQL é um recurso experimental. #16223 (Winter Zhang).
  • Verifica o bit de executável em arquivos não executáveis. Muitas vezes, as pessoas fazem commit acidentalmente de arquivos executáveis no Windows. #15843 (alexey-milovidov).
  • Verifica #pragma once nos cabeçalhos. #15818 (alexey-milovidov).
  • Corrige o estilo de código inválido &vector[idx] no libhdfs3. Isso corrige a compilação de depuração do libcxx. Veja também https://github.com/ClickHouse-Extras/libhdfs3/pull/8 . #15815 (Amos Bird).
  • Corrige a compilação de uma ferramenta de exemplo diversa no Mac OS. Observe que não compilamos exemplos no Mac OS em nosso CI (compilamos apenas o binário do ClickHouse), então a chance de isso não quebrar de novo é zero. Isso corrige #15804. #15808 (alexey-milovidov).
  • Simplifica o script de init do Sys/V. #14135 (alexey-milovidov).
  • Adiciona boost::program_options ao db_generator para aumentar sua usabilidade. Isso fecha #15940. #15973 (Nikita Mikhaylov).

Lançamento do ClickHouse 20.10

Lançamento do ClickHouse v20.10.7.4-stable, 2020-12-24

Correção de bug

  • Corrigido um problema em que o processo clickhouse-odbc-bridge não pode ser alcançado pelo servidor em máquinas com pilha dupla IPv4/IPv6, e corrigido um problema em que atualizações de dicionários ODBC são realizadas usando consultas malformadas e/ou provocam falhas. Isso possivelmente fecha #14489. #18278 (Denis Glazachev).
  • Corrige a comparação de chaves entre os tipos Enum e Int. Isso corrige #17989. #18214 (Amos Bird).
  • Corrigida falha ao converter chave única na engine de banco de dados MaterializeMySQL. Isso corrige #18186 e #16372 #18211 (Winter Zhang).
  • Corrigido std::out_of_range: basic_string ao analisar URLs do S3. #18059 (Vladimir Chebotarev).
  • Corrigido o problema em que algumas tabelas não eram sincronizadas do MySQL para o ClickHouse porque a conversão de índices de prefixo do MySQL não era compatível com o MaterializeMySQL. Isso corrige #15187 e #17912 #17944 (Winter Zhang).
  • Corrigido um possível segfault na função de agregação topK. Isso fecha #17404. #17845 (Maksim Kita).
  • Não restaure as partes do WAL se in_memory_parts_enable_wal estiver desabilitado. #17802 (detailyang).
  • Corrigido um problema em que o ClickHouse não conseguia retomar a conexão com servidores MySQL. #17681 (Alexander Kazakov).
  • Corrigida a tabela system.stack_trace, que ficava vazia quando o servidor era executado no modo daemon. #17630 (Amos Bird).
  • Corrigido o comportamento quando clickhouse-client é usado no modo interativo com consultas multilinha, em que um comentário de linha única era estendido por engano até o fim da consulta. Isso corrige #13654. #17565 (alexey-milovidov).
  • Corrigido o problema em que o servidor podia parar de aceitar conexões em casos muito raros. #17542 (alexey-milovidov).
  • Corrigido o travamento da consulta ALTER quando a mutação correspondente foi interrompida em outra réplica. Isso corrige #16953. #17499 (alesapin).
  • Corrigido um bug em que o tamanho do cache de marcas foi subestimado pelo ClickHouse. Isso pode acontecer quando há muitos arquivos minúsculos com marcas. #17496 (alesapin).
  • Corrigido ORDER BY quando a configuração optimize_redundant_functions_in_order_by está habilitada. #17471 (Anton Popov).
  • Corrigidas as duplicatas após DISTINCT, que eram possíveis devido a uma otimização incorreta. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov).
  • Corrigido travamento ao ler da tabela JOIN com tipos LowCardinality. Isso corrige #17228. #17397 (Nikolai Kochetov).
  • Foi corrigida a invalidação do índice set quando há colunas const na subconsulta. Isso corrige #17246 . #17249 (Amos Bird).
  • Corrigida a comparação de ColumnConst, que levava a uma falha. Isso corrige #17088. #17135 (Amos Bird).
  • Corrigido um bug em que consultas ON CLUSTER podiam travar indefinidamente em ReplicatedMergeTreeTables não líderes. #17089 (alesapin).
  • Corrigido um bug identificado pelo fuzzer na função fuzzBits. Isso corrige #16980. #17051 (hexiaoting).
  • Evita erros de rede desnecessários em consultas remotas que podem ser canceladas durante a execução, como consultas com LIMIT. #17006 (Azat Khuzhin).
  • Corrigido resultado incorreto com inteiros grandes (128 e 256 bits) ao converter de double. #16986 (Mike).
  • Resolver o IP de format_avro_schema_registry_url novamente em caso de erros. #16985 (filimonov).
  • Corrigida uma possível falha do servidor após ALTER TABLE ... MODIFY COLUMN ... NewType quando SELECT tem uma expressão WHERE na coluna que está sendo alterada e o ALTER ainda não foi concluído. #16968 (Amos Bird).
  • As informações de blame não foram calculadas corretamente no clickhouse-git-import. #16959 (alexey-milovidov).
  • Correção da otimização de ORDER BY com funções monótonas. Isso corrige #16107. #16956 (Anton Popov).
  • Corrigida a otimização de group by com a configuração optimize_aggregators_of_group_by_keys habilitada e junções. Isso corrige #12604. #16951 (Anton Popov).
  • O script de instalação deve sempre criar subdiretórios nas pastas de configuração. Isso só é relevante para a compilação do Docker com configuração personalizada. #16936 (filimonov).
  • Corrige o possível erro Illegal type of argument em consultas com ORDER BY. Isso corrige #16580. #16928 (Nikolai Kochetov).
  • Cancelar o upload multipart se nenhum dado tiver sido gravado em WriteBufferFromS3. #16840 (Pavel Kovalenko).
  • Corrigida uma falha ao usar any sem argumentos. Isso corrige #16803. #16826 (Amos Bird).
  • Corrigido o comportamento em que o ClickHouse sempre retornava 0 em vez do número de linhas afetadas em consultas INSERT via protocolo MySQL. Isso corrige #16605. #16715 (Winter Zhang).
  • Corrigido o aumento descontrolado de TDigest. #16680 (hrissan).
  • Corrigida a falha em consultas remotas ao usar o sufixo if em função de agregação. Corrige #16574, #16231 #16610 (Winter Zhang).

Lançamento do ClickHouse v20.10.4.1-stable, 2020-11-13

Correção de bug

  • Corrige falhas raras e silenciosas quando o query profiler está ativado e o ClickHouse está instalado em um sistema operacional com uma versão da glibc que tem tabela de desempilhamento assíncrono (supostamente) quebradas para algumas funções. Isso corrige #15301. Isso corrige #13098. #16846 (alexey-milovidov).
  • Corrige o operador IN em várias colunas e tuplas com a configuração transform_null_in ativada. Corrige #15310. #16722 (Anton Popov).
  • Isso corrigirá optimize_read_in_order/optimize_aggregation_in_order com max_threads>0 e expressão em ORDER BY. #16637 (Azat Khuzhin).
  • Agora, ao fazer o parsing de AVRO na entrada, LowCardinality é removido do tipo. Corrige #16188. #16521 (Mike).
  • Corrige o rápido crescimento dos metadados ao usar MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine com slave_parallel_worker ativado no MySQL Slave, reduzindo corretamente os conjuntos de GTID. Isso corrige #15951. #16504 (TCeason).
  • Corrige o DROP TABLE para Distributed (condição de corrida com INSERT). #16409 (Azat Khuzhin).
  • Corrige o processamento de entradas muito grandes na fila de replicação. Entradas muito grandes podem aparecer em consultas ALTER se a estrutura da tabela for extremamente grande (próxima de 1 MB). Isso corrige #16307. #16332 (alexey-milovidov).
  • Corrige um bug com banco de dados MySQL. Quando o servidor MySQL usado como engine de banco de dados fica indisponível, algumas consultas geram Exception porque tentam obter tabelas de um servidor desabilitado, embora isso seja desnecessário. Por exemplo, a consulta SELECT ... FROM system.parts deve funcionar apenas com tabelas MergeTree e não acessar o banco de dados MySQL de forma alguma. #16032 (Kruglov Pavel).

Melhoria

  • Solução alternativa para usar o S3 com o servidor nginx atuando como proxy. Atualmente, o Nginx não aceita URLs com caminho vazio, como http://domain.com?delete, mas o aws-sdk-cpp padrão gera esse tipo de URL. Este commit usa uma versão corrigida do aws-sdk-cpp, que, nesses casos, cria URLs com ”/” como caminho, como em http://domain.com/?delete. #16813 (ianton-ru).

Lançamento do ClickHouse v20.10.3.30, 2020-10-28

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

  • Torna multiple_joins_rewriter_version obsoleto. Remove a primeira versão do reescritor de junções. #15472 (Artem Zuikov).
  • Altera o valor padrão da configuração format_regexp_escaping_rule (relacionada ao formato Regexp) para Raw (ou seja, ler o subpadrão inteiro como um valor), para deixar o comportamento mais próximo do que os usuários esperam. #15426 (alexey-milovidov).
  • Adicionado suporte a comentários multilinha aninhados /* comment /* comment */ */ em SQL. Isso está em conformidade com o padrão SQL. #14655 (alexey-milovidov).
  • Adicionadas configurações do MergeTree (max_replicated_merges_with_ttl_in_queue e max_number_of_merges_with_ttl_in_pool) para controlar o número de merges com TTL no background pool e na fila de replicação. Essa alteração quebra a compatibilidade com versões mais antigas somente se você usar TTL de exclusão. Caso contrário, a replicação permanecerá compatível. Você pode evitar problemas de incompatibilidade se atualizar todas as réplicas do shard de uma só vez ou executar SYSTEM STOP TTL MERGES até concluir a atualização de todas as réplicas. Se surgir uma entrada incompatível na fila de replicação, antes de tudo execute SYSTEM STOP TTL MERGES e, em seguida, ALTER TABLE ... DETACH PARTITION ... na partição à qual o merge TTL incompatível foi atribuído. Anexe-a novamente em uma única réplica. #14490 (alesapin).
  • Ao atualizar a partir de versões anteriores à 20.5, se for realizado um rolling update e o cluster contiver tanto versões 20.5 ou superiores quanto versões inferiores à 20.5, a reinicialização de nós do ClickHouse com versões antigas — quando essa versão antiga é iniciada na presença de versões mais novas — pode levar a erros Part ... intersects previous part. Para evitar esse erro, primeiro instale os pacotes mais novos do clickhouse-server em todos os nós do cluster e só depois reinicie-os (assim, quando o clickhouse-server for reiniciado, ele será iniciado com a nova versão).

Novo recurso

  • Recompressão de dados em segundo plano. Adicionada a capacidade de especificar TTL ... RECOMPRESS codec_name para a família de motores de tabela MergeTree. #14494 (alesapin).
  • Adiciona inserts de quórum em paralelo. Isso fecha #15601. #15601 (Latysheva Alexandra).
  • Configurações para reforçar ainda mais a durabilidade dos dados. Útil para configurações não replicadas. #11948 (Anton Popov).
  • Quando um bloco duplicado é gravado em uma réplica onde ele não existe localmente (não foi obtido de outras réplicas), não o ignore; grave-o localmente para obter o mesmo efeito de como se ele tivesse sido replicado com sucesso. #11684 (alexey-milovidov).
  • Agora há suporte a WITH <identifier> AS (subquery) ... para introduzir subconsultas nomeadas no contexto da consulta. Isso fecha #2416. Isso fecha #4967. #14771 (Amos Bird).
  • Introduz a configuração enable_global_with_statement, que propaga as instruções WITH da primeira consulta SELECT para outras consultas SELECT no mesmo nível e torna os aliases nas instruções WITH visíveis às subconsultas. #15451 (Amos Bird).
  • Execução segura de consultas entre clusters (com initial_user como usuário da consulta em execução). #13156 (Azat Khuzhin). #15551 (Azat Khuzhin).
  • Adicionada a capacidade de remover propriedades de colunas e TTLs de tabela. Foram introduzidas as consultas ALTER TABLE MODIFY COLUMN col_name REMOVE what_to_remove e ALTER TABLE REMOVE TTL. Ambas as operações são leves e executadas no nível dos metadados. #14742 (alesapin).
  • Adicionado o formato RawBLOB. Ele se destina à entrada ou saída de um único valor, sem escape nem delimitadores. Isso encerra #15349. #15364 (alexey-milovidov).
  • Adicionada a função reinterpretAsUUID, que permite converter uma sequência de bytes big-endian em UUID. #15480 (Alexander Kuzmenkov).
  • Implementada a configuração force_data_skipping_indices. #15642 (Azat Khuzhin).
  • Adiciona a configuração output_format_pretty_row_numbers para numerar o resultado nos formatos Pretty. Isso encerra #15350. #15443 (flynn).
  • Adicionada uma ferramenta de ofuscação de consultas. Ela permite compartilhar mais consultas, facilitando os testes. Isso fecha #15268. #15321 (alexey-milovidov).
  • Adicionada a função de tabela null('structure'). #14797 (vxider).
  • Adicionada a função formatReadableQuantity. Ela é útil para facilitar a leitura de números grandes. #14725 (Artem Hnilov).
  • Adicionado o formato LineAsString, que aceita uma sequência de linhas separadas por quebras de linha; cada linha é analisada integralmente como um único campo String. #14703 (Nikita Mikhaylov), #13846 (hexiaoting).
  • Adicionado o formato JSONStrings, que gera dados em arrays de strings. #14333 (hcz).
  • Adicionado suporte ao formato de coluna “Raw” para o formato Regexp. Isso permite extrair subpadrões inteiros, sem nenhuma regra de escape. #15363 (alexey-milovidov).
  • Permite configurar a representação de NULL para o formato de saída TSV. Isso é controlado pela configuração output_format_tsv_null_representation, que, por padrão, é \N. Isso encerra #9375. Observe que essa configuração controla apenas o formato de saída, e \N é a única representação de NULL com suporte no formato de entrada TSV. #14586 (Kruglov Pavel).
  • Suporte ao tipo Decimal para MaterializeMySQL. MaterializeMySQL é um recurso experimental. #14535 (Winter Zhang).
  • Incluído novo recurso: SHOW DATABASES LIKE 'xxx'. #14521 (hexiaoting).
  • Adicionado um script para importar qualquer repositório Git para o ClickHouse como um conjunto de dados de exemplo. #14471 (alexey-milovidov).
  • Agora, instruções INSERT podem ter asterisco (ou variantes dele) com transformadores de coluna na lista de colunas. #14453 (Amos Bird).
  • Novas configurações de limite de complexidade de consultas max_rows_to_read_leaf, max_bytes_to_read_leaf para consultas distribuídas, que limitam o número máximo de linhas/bytes lidos nos nós folha. O limite se aplica apenas a leituras locais, excluindo o estágio final de merge no nó raiz. #14221 (Roman Khavronenko).
  • Permite ao usuário especificar configurações para o armazenamento ReplicatedMergeTree* na seção <replicated_merge_tree> do arquivo de configuração. Funciona de forma semelhante à seção <merge_tree>. Para armazenamentos ReplicatedMergeTree*, as configurações de <merge_tree> e <replicated_merge_tree> são aplicadas em conjunto, mas as de <replicated_merge_tree> têm precedência. Adicionada a tabela system.replicated_merge_tree_settings. #13573 (Amos Bird).
  • Adicionada a função mapPopulateSeries. #13166 (Ildus Kurbangaliev).
  • Suporte a tipos do MySQL: decimal (como Decimal no ClickHouse) e datetime com precisão de subsegundos (como DateTime64). #11512 (Vasily Nemkov).
  • Adiciona o campo event_time_microseconds às tabelas system.text_log, system.trace_log, system.query_log e system.query_thread_log. #14760 (Bharat Nallan).
  • Adiciona event_time_microseconds às tabelas system.asynchronous_metric_log e system.metric_log. #14514 (Bharat Nallan).
  • Adicionar o campo query_start_time_microseconds às tabelas system.query_log e system.query_thread_log. #14252 (Bharat Nallan).

Correção de bug

  • Corrigido o caso em que a memória podia ser alocada em excesso, independentemente do limite. Isso fecha #14560. #16206 (alexey-milovidov).
  • Corrigido o travamento da fonte de dicionário executable. Em versões anteriores, ao usar alguns formatos (por exemplo, JSONEachRow), os dados não eram enviados para um processo filho antes de ele gerar pelo menos alguma saída. Isso corrige #1697. Isso corrige #2455. #14525 (alexey-milovidov).
  • Corrige a dupla liberação em caso de exceção na função dictGet. Isso poderia ter acontecido se o Dicionário tivesse sido carregado com erro. #16429 (Nikolai Kochetov).
  • Corrigido o group by com os modificadores totals/rollup/cube e as funções min/max nas chaves de group by. Corrige #16393. #16397 (Anton Popov).
  • Corrigido o INSERT assíncrono em Distributed com prefer_localhost_replica=0 e internal_replication. #16358 (Azat Khuzhin).
  • Corrige um erro grave no código da implementação de TwoLevelStringHashTable, que poderia levar a vazamento de memória. #16264 (Amos Bird).
  • Correção de segfault em alguns casos de agregação incorreta em lambdas. #16082 (Anton Popov).
  • Corrigido o travamento da consulta ALTER MODIFY ... ORDER BY no ReplicatedVersionedCollapsingMergeTree. Isso corrige #15980. #16011 (alesapin).
  • MaterializeMySQL (funcionalidade experimental): corrige o parser dos nomes de collate e charset e oferece suporte a length = 0 para o tipo String. #16008 (Winter Zhang).
  • Permite usar o layout direct para dicionários com chaves complexas. #16007 (Anton Popov).
  • Evita que a réplica fique travada por 5 a 10 minutos quando ocorre um erro de replicação após um período de inatividade. #15987 (filimonov).
  • Corrige segfaults raros ao inserir em ou consultar uma MaterializedView e remover simultaneamente a tabela de destino (para o mecanismo de banco de dados Atomic). #15984 (tavplubix).
  • Corrige a ambiguidade na análise sintática de perfis de configuração: CREATE USER ... SETTINGS profile readonly agora é considerado como o uso de um perfil chamado readonly, e não de uma configuração chamada profile com a restrição readonly. Isso corrige #15628. #15982 (Vitaly Baranov).
  • MaterializeMySQL (funcionalidade experimental): Corrige travamento em caso de falha ao criar banco de dados. #15954 (Winter Zhang).
  • Corrigida a falha de DROP TABLE IF EXISTS com o erro Table ... does not exist quando a tabela é renomeada simultaneamente (para o engine de banco de dados Atomic). Corrigido um deadlock raro ao executar simultaneamente algumas consultas DDL com várias tabelas (como DROP DATABASE e RENAME TABLE) - Corrigida a falha de DROP/DETACH DATABASE com Table ... does not exist ao executar simultaneamente DROP/DETACH TABLE. #15934 (tavplubix).
  • Corrige resultado vazio incorreto em consulta de tabela Distributed quando a consulta tem WHERE, PREWHERE e GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Corrige #12513: expressões de diferença com o mesmo alias ao reanalisar a consulta. #15886 (Winter Zhang).
  • Corrige possíveis deadlocks muito raros na implementação de RBAC. #15875 (Vitaly Baranov).
  • Corrige a exceção Block structure mismatch em consultas SELECT ... ORDER BY DESC executadas após a consulta ALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin).
  • MaterializeMySQL (funcionalidade experimental): Corrigida a imprecisão em select count(). #15767 (tavplubix).
  • Corrige alguns casos de consultas em que apenas colunas virtuais são selecionadas. Anteriormente, podia ocorrer a exceção Not found column _nothing in block. Corrige #12298. #15756 (Anton Popov).
  • Corrige a remoção de visão materializada com tabela interna no banco de dados Atomic (que fazia com que todos os DROP TABLE subsequentes travassem devido ao travamento da thread de trabalho, causado pelo DROP TABLE recursivo da tabela interna da MV). #15743 (Azat Khuzhin).
  • Possibilidade de mover uma parte para outro disco/volume caso a primeira tentativa falhe. #15723 (Pavel Kovalenko).
  • Corrige o erro Cannot find column, que pode ocorrer ao inserir em MATERIALIZED VIEW caso a consulta da MV contenha ARRAY JOIN. #15717 (Nikolai Kochetov).
  • Corrigido o valor padrão excessivamente baixo da configuração max_replicated_logs_to_keep, que podia fazer com que réplicas se perdessem com muita frequência. Melhorado o processo de recuperação de réplica perdida, escolhendo a réplica mais atualizada para clonar. Além disso, as partes antigas da réplica perdida não são removidas, mas desanexadas. #15701 (tavplubix).
  • Corrigida uma rara condição de corrida nos dicionários e nas tabelas do MySQL. #15686 (alesapin).
  • Corrigida uma condição de corrida (benigna) no AMQP-CPP. #15667 (alesapin).
  • Corrige o erro Cannot add simple transform to empty Pipe, que ocorria ao ler da tabela Buffer, cuja estrutura é diferente da tabela de destino. Isso podia acontecer se a tabela de destino retornasse um resultado vazio para a consulta. Corrige #15529. #15662 (Nikolai Kochetov).
  • Tratamento adequado de erros ao inserir no MergeTree com S3. MergeTree sobre S3 é uma funcionalidade experimental. #15657 (Pavel Kovalenko).
  • Corrigido um bug na função de tabela do S3: a Region da URL não era aplicada à configuração do cliente S3. #15646 (Vladimir Chebotarev).
  • Corrige a ordem de destruição dos recursos na etapa ReadFromStorage do plano de consulta. Isso pode causar travamentos em casos raros. Possivelmente relacionado a #15610. #15645 (Nikolai Kochetov).
  • Subtrai a métrica ReadonlyReplica ao desanexar tabelas somente leitura. #15592 (sundyli).
  • Corrigido o erro Element ... is not a constant expression ao usar o resultado da função JSON* em VALUES, LIMIT ou no lado direito do operador IN. #15589 (tavplubix).
  • A consulta será concluída mais rapidamente em caso de exceção. A execução nas réplicas remotas será cancelada se ocorrer uma exceção. #15578 (Azat Khuzhin).
  • Impede a ocorrência da mensagem de erro Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Isso corrige #15541. #15557 (alexey-milovidov).
  • Corrige Database <db> does not exist. em consultas com IN e tabela distribuída quando não há banco de dados no nó iniciador. #15538 (Artem Zuikov).
  • A mutação podia ficar travada esperando por uma parte inexistente após MOVE ou REPLACE PARTITION ou, em casos raros, após DETACH ou DROP PARTITION. Isso foi corrigido. #15537 (tavplubix).
  • Corrigido bug em que o operador ILIKE deixa de ignorar maiúsculas e minúsculas se LIKE com o mesmo padrão tiver sido executado. #15536 (alesapin).
  • Corrige erros Missing columns ao selecionar colunas ausentes nos dados, mas que dependem de outras colunas que também estão ausentes nos dados. Corrige #15530. #15532 (alesapin).
  • Lançar um erro quando apenas um parâmetro for passado para ReplicatedMergeTree, em vez de ignorá-lo. #15516 (nvartolomei).
  • Corrigido um bug na assinatura de eventos no DDLWorker que, em casos raros, pode levar ao travamento de consultas em ON CLUSTER. Introduzido em #13450. #15477 (alesapin).
  • Reportar o erro correto quando o segundo argumento da função de agregação boundingRatio tiver um tipo incorreto. #15407 (detailyang).
  • Corrige #15365: ao anexar um banco de dados com engine MySQL, era gerada uma exceção (sem contexto de consulta). #15384 (Winter Zhang).
  • Corrige o caso em que há múltiplas ocorrências de transformadores de coluna em uma consulta select. #15378 (Amos Bird).
  • Corrigida a compressão no armazenamento S3. #15376 (Vladimir Chebotarev).
  • Corrige um bug em que consultas como SELECT toStartOfDay(today()) falham, informando que o argumento time&#95;zone está vazio. #15319 (Bharat Nallan).
  • Correção de uma condição de corrida durante a renomeação de tabela MergeTree e a limpeza em segundo plano. #15304 (alesapin).
  • Corrige uma condição de corrida rara na inicialização do servidor quando os logs do sistema estão habilitados. #15300 (alesapin).
  • Corrigido o travamento de consultas com muitas subconsultas para a mesma tabela com mecanismo MySQL. Anteriormente, se houvesse mais de 16 subconsultas para a mesma tabela MySQL em uma consulta, ela ficava travada indefinidamente. #15299 (Anton Popov).
  • Corrige o relatório do MSan no QueryLog. Memória não inicializada pode ser usada no campo memory_usage. #15258 (alexey-milovidov).
  • Corrigido ‘Unknown identifier’ em GROUP BY quando a consulta tem JOIN em uma tabela Merge. #15242 (Artem Zuikov).
  • Corrige falha na instância ao usar joinGet com tipos LowCardinality. Isso corrige #15214. #15220 (Amos Bird).
  • Corrige um bug no mecanismo de tabela Buffer, que não permite inserir dados com uma nova estrutura no Buffer após uma consulta ALTER. Corrige #15117. #15192 (alesapin).
  • Ajustado o tamanho do campo Decimal no pacote de definição de coluna do MySQL. #15152 (maqroll).
  • Corrige Data compressed with different methods no join_algorithm='auto'. Mantém LowCardinality como tipo para a chave de junção da tabela à esquerda em join_algorithm='partial_merge'. #15088 (Artem Zuikov).
  • Atualização do jemalloc para corrigir percpu_arena com máscara de afinidade. #15035 (Azat Khuzhin). #14957 (Azat Khuzhin).
  • Já usamos comparação com preenchimento entre String e FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). Este PR aplica a mesma lógica à comparação de campo, o que corrige o uso de FixedString como chaves primárias. Isso corrige #14908. #15033 (Amos Bird).
  • Se a função bar fosse chamada com argumentos especialmente elaborados, poderia ocorrer um estouro de buffer. Isso fecha #13926. #15028 (alexey-milovidov).
  • Corrigido o erro Cannot rename ... errno: 22, strerror: Invalid argument durante a execução de uma consulta DDL no banco de dados Atomic ao executar o clickhouse-server no Docker no Mac OS. #15024 (tavplubix).
  • Corrige falha em RIGHT ou FULL JOIN com join_algorith=‘auto’ quando o limite de memória é excedido e é necessário trocar HashJoin por MergeJoin. #15002 (Artem Zuikov).
  • Agora, as configurações number_of_free_entries_in_pool_to_execute_mutation e number_of_free_entries_in_pool_to_lower_max_size_of_merge podem ter o mesmo valor que background_pool_size. #14975 (alesapin).
  • Correção para fazer o pushdown de predicado funcionar quando a subconsulta contém a função finalizeAggregation. Corrige #14847. #14937 (filimonov).
  • Passa a publicar frequências de CPU por núcleo lógico em system.asynchronous_metrics. Isso corrige #14923. #14924 (Alexander Kuzmenkov).
  • MaterializeMySQL (recurso experimental): Corrigido o erro .metadata.tmp File exists. #14898 (Winter Zhang).
  • Corrige o problema em que algumas invocações da função extractAllGroups podem provocar o erro “Limite de memória excedido”. Isso corrige #13383. #14889 (alexey-milovidov).
  • Corrigido o SIGSEGV ao tentar fazer INSERT no StorageFile com descritor de arquivo. #14887 (Azat Khuzhin).
  • Corrigido um segfault no dicionário cache #14837. #14879 (Nikita Mikhaylov).
  • MaterializeMySQL (recurso experimental): Corrigido um bug no processamento de eventos do binlog do MySQL, que causava Attempt to read after eof e Packet payload is not fully read no mecanismo de banco de dados MaterializeMySQL. #14852 (Winter Zhang).
  • Corrige um erro raro em consultas SELECT quando a coluna consultada tem uma expressão DEFAULT que depende de outra coluna, que também tem DEFAULT, não está presente na consulta SELECT e não existe em disco. Corrige parcialmente #14531. #14845 (alesapin).
  • Corrige um problema em que o servidor pode travar na inicialização ao se comunicar com o ZooKeeper, caso os arquivos de configuração precisem ser buscados do ZK (usando a opção de inclusão from_zk). Isso corrige #14814. #14843 (Alexander Kuzmenkov).
  • Corrige a detecção incorreta de monotonicidade para a conversão reduzida Int -> Int de tipos com sinal. Isso pode levar a resultados incorretos de consulta. Esse bug foi identificado em #14513. #14783 (Amos Bird).
  • O transformador de coluna Replace deve substituir os identificadores por ASTs clonadas. Isso corrige #14695 . #14734 (Amos Bird).
  • Corrigida a ausência do nome padrão do banco de dados nos metadados da visão materializada ao executar ALTER ... MODIFY QUERY. #14664 (tavplubix).
  • Corrigido um bug em que a mutação ALTER UPDATE com uma coluna Nullable na expressão de atribuição e um valor constante (como UPDATE x = 42) resultava em um valor incorreto na coluna ou em segfault. Corrige #13634, #14045. #14646 (alesapin).
  • Corrigido o resultado incorreto da multiplicação de Decimal, que causava escala decimal incorreta na coluna de resultado. #14603 (Artem Zuikov).
  • Corrigida a função has com LowCardinality de Nullable. #14591 (Mike).
  • Limpeza do diretório de dados após exceções do ZooKeeper durante a CreateQuery para o mecanismo StorageReplicatedMergeTree. #14563 (Bharat Nallan).
  • Corrige segfaults raros em funções com o combinador -Resample, que poderiam ocorrer em decorrência de overflow com parâmetros muito grandes. #14562 (Anton Popov).
  • Corrigido um bug ao converter Nullable(String) em Enum. Introduzido por #12745. Isso corrige #14435. #14530 (Amos Bird).
  • Corrigida a ordem de ordenação incorreta da coluna Nullable. Isso corrige #14344. #14495 (Nikita Mikhaylov).
  • Corrigido o problema em que a função currentDatabase() não podia ser usada em consulta DDL ON CLUSTER. #14211 (Winter Zhang).
  • MaterializeMySQL (funcionalidade experimental): Corrigido o erro Packet payload is not fully read no engine de banco de dados MaterializeMySQL. #14696 (BohuTANG).

Melhoria

  • Mecanismo de banco de dados Atomic habilitado por padrão para bancos de dados recém-criados. #15003 (tavplubix).
  • Adicionada a possibilidade de especificar codecs especializados, como Delta, T64 etc., para colunas com subtipos. Implementa #12551, corrige #11397, corrige #4609. #15089 (alesapin).
  • Recarregamento dinâmico da configuração do ZooKeeper. #14678 (sundyli).
  • Agora é possível executar consultas ALTER ... ON CLUSTER independentemente da configuração <internal_replication> no config do cluster. #16075 (alesapin).
  • Agora, joinGet oferece suporte a consulta por múltiplas chaves. Continuação de #12418. #13015 (Amos Bird).
  • Aguarde até que DROP/DETACH TABLE realmente seja concluído se NO DELAY ou SYNC for especificado para o banco de dados Atomic. #15448 (tavplubix).
  • Agora é possível alterar, com a consulta ALTER, o tipo da coluna de versão do VersionedCollapsingMergeTree. #15442 (alesapin).
  • Expande as macros {database}, {table} e {uuid} em zookeeper_path na criação de tabela replicada. Não permite RENAME TABLE se isso puder quebrar zookeeper_path após a reinicialização do servidor. Corrige #6917. #15348 (tavplubix).
  • A função now aceita um argumento de fuso horário. Isso fecha 15264. #15285 (flynn).
  • Não permita conexões com o servidor ClickHouse até que todos os scripts em /docker-entrypoint-initdb.d/ tenham sido executados. #15244 (Aleksei Kozharin).
  • Adicionada a configuração optimize à consulta EXPLAIN PLAN. Se habilitada, as otimizações no nível do plano de consulta serão aplicadas. Habilitada por padrão. #15201 (Nikolai Kochetov).
  • Mensagem de exceção apropriada para quantidade incorreta de argumentos de CAST. Isso fecha #13992. #15029 (alexey-milovidov).
  • Adicionada opção para desabilitar TTL move na inserção de data part. #15000 (Pavel Kovalenko).
  • Ignorar restrições de chave ao executar mutações. Sem este pull request, não é possível executar mutações quando force_index_by_date = 1 ou force_primary_key = 1. #14973 (Amos Bird).
  • Permite excluir uma tabela Replicated se a tentativa anterior de exclusão falhou devido à expiração da sessão do ZooKeeper. Isso corrige #11891. #14926 (alexey-milovidov).
  • Corrigida a violação indevida da restrição de configurações ao executar SELECT com SETTINGS em uma tabela distribuída. #14876 (Amos Bird).
  • Adicionada a configuração de consulta load_balancing_first_offset para definir explicitamente qual é a primeira réplica. Ela é usada em conjunto com a estratégia de balanceamento de carga FIRST_OR_RANDOM, o que permite controlar a carga das réplicas. #14867 (Amos Bird).
  • Exibe subconsultas para SET e JOIN no resultado de EXPLAIN. #14856 (Nikolai Kochetov).
  • Permite usar uma configuração de armazenamento com múltiplos volumes no armazenamento Distributed. #14839 (Pavel Kovalenko).
  • Cria query_start_time e query_start_time_microseconds a partir do mesmo timespec. #14831 (Bharat Nallan).
  • Suporte para desabilitar a persistência de StorageJoin e StorageSet; esse recurso é controlado pela configuração disable_set_and_join_persistency. Este PR também resolveu o problema #6318. #14776 (vxider).
  • Agora, COLUMNS pode ser usado para agrupar uma lista de colunas e, em seguida, aplicar transformadores de coluna. #14775 (Amos Bird).
  • Adicionar merge_algorithm à tabela system.merges para melhorar a inspeção de mesclagens. #14705 (Amos Bird).
  • Corrige um possível vazamento de memória causado pelo watch exists do ZooKeeper. #14693 (hustnn).
  • Permite a execução paralela de DDL distribuído. #14684 (Azat Khuzhin).
  • Adicionado o contador de eventos QueryMemoryLimitExceeded. Isso fecha #14589. #14647 (fastio).
  • Corrige alguns espaços em branco finais na formatação de consultas. #14595 (Azat Khuzhin).
  • O ClickHouse trata partition expr e key expr de maneiras diferentes. Partition expr é usada para construir um índice minmax que contém as colunas relacionadas, enquanto primary key expr é armazenada como uma expressão. Às vezes, o usuário pode particionar uma tabela em níveis mais amplos, como partition by i / 1000. No entanto, operadores binários não são monotônicos, e este PR tenta corrigir isso. Isso também pode beneficiar outros casos de uso. #14513 (Amos Bird).
  • Adiciona uma opção para ignorar as verificações de acesso do DiskS3. O disk s3 é um recurso experimental. #14497 (Pavel Kovalenko).
  • Acelera o processo de desligamento do servidor se houver requisições ao S3 em andamento. #14496 (Pavel Kovalenko).
  • SYSTEM RELOAD CONFIG agora lança uma exceção caso a recarga falhe e continua usando o users.xml anterior. O recarregamento periódico em segundo plano também continua usando o users.xml anterior caso a recarga falhe. #14492 (Vitaly Baranov).
  • Para INSERTs com dados inline no formato VALUES no modo script do clickhouse-client, passa a ser aceito ponto e vírgula como terminador dos dados, além da quebra de linha. Fecha #12288. #13192 (Alexander Kuzmenkov).
  • Suporte para codecs personalizados em partes compactas. #12183 (Anton Popov).

Melhoria de desempenho

  • Ativa partes compactas por padrão para partes pequenas. Isso permitirá processar inserts frequentes com um pouco mais de eficiência (4..100 vezes). #11913 (alexey-milovidov).
  • Melhora o desempenho de quantileTDigest. Isso corrige #2668. #15542 (Kruglov Pavel).
  • Reduz significativamente o uso de memória em AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
  • Multiplicação de 256 bits mais rápida. #15418 (Artem Zuikov).
  • Melhora o desempenho de tipos de 256 bits usando (u)int64_t como tipo básico para inteiros wide. Os inteiros wide originais usam tipos de 8 bits como tipo básico. #14859 (Artem Zuikov).
  • Usa explicitamente um disk temporário para armazenar dados temporários de mesclagem vertical. #15639 (Grigory Pervakov).
  • Usa uma única requisição DeleteObjects do S3 em vez de várias DeleteObject em um loop. Sem alterações de funcionalidade, portanto isso é coberto por testes existentes, como integration/test_log_family_s3. #15238 (ianton-ru).
  • Corrige DateTime <op> DateTime, que estava escolhendo por engano a implementação genérica lenta. Isso corrige #15153. #15178 (Amos Bird).
  • Melhora o desempenho da chave de GROUP BY do tipo FixedString. #15034 (Amos Bird).
  • Usa mlock apenas no segmento de código ao iniciar o clickhouse-server. Em versões anteriores, todas as regiões mapeadas eram bloqueadas na memória, inclusive as informações de depuração. As informações de depuração normalmente são separadas em um arquivo distinto, mas, quando isso não acontecia, o uso de memória aumentava em +2..3 GiB. #14929 (alexey-milovidov).
  • O binário do ClickHouse ficou menor devido à otimização em tempo de link (LTO).

Melhoria de compilação/testes/empacotamento

  • Agora usamos o clang-11 para a compilação de produção do ClickHouse. #15239 (alesapin).
  • Agora usamos o clang-11 na compilação do ClickHouse em CI. #14846 (alesapin).
  • Migrar as compilações binárias (Linux, Darwin, AArch64, FreeDSD) para clang-11. #15622 (Ilya Yatsishin).
  • Agora, todas as imagens de teste usam llvm-symbolizer-11. #15069 (alesapin).
  • Permite compilar com llvm-11. #15366 (alexey-milovidov).
  • Alterado de clang-tidy-10 para clang-tidy-11. #14922 (alexey-milovidov).
  • Usar por padrão o gerenciador experimental de passes do LLVM. #15608 (Danila Kutenin).
  • Não permitir que nenhuma unidade de tradução C++ leve mais de 10 minutos para ser compilada nem use mais de 10 GB de memória. Isso corrige #14925. #15060 (alexey-milovidov).
  • Torne o teste de desempenho mais estável e representativo, separando as execuções de teste das execuções de profiling. #15027 (alexey-milovidov).
  • Tentativa de tornar o teste de desempenho mais confiável. Isso é feito remapeando, em tempo real, a memória executável do processo com madvise para usar transparent huge pages — isso pode reduzir o número de misses de iTLB, principal fonte de instabilidade em testes de desempenho. #14685 (alexey-milovidov).
  • Convertido para python3. Isso fecha #14886. #15007 (Azat Khuzhin).
  • Os testes funcionais agora falham antecipadamente se o servidor não responder. Isso fecha #15262. #15267 (alexey-milovidov).
  • Permite executar a versão AArch64 do clickhouse-server sem config. Isso facilita #15174. #15266 (alexey-milovidov).
  • Melhorias nas imagens Docker de CI: eliminação do ZooKeeper e adoção de um único script para instalar as configurações de teste. #15215 (alesapin).
  • Corrige o repasse das opções do CMake no script de fast test. Corrige um erro em #14711. #15155 (alesapin).
  • Adicionado um script para executar benchmark de hardware com um único comando. #15115 (alexey-milovidov).
  • O teste enorme test_dictionaries_all_layouts_and_sources foi dividido em testes menores. #15110 (Nikita Mikhaylov).
  • Possível correção para o relatório do MSan em base64 (em servidores com AVX-512). Isso corrige #14006. #15030 (alexey-milovidov).
  • Reformatação e limpeza do código em todos os arquivos *.py dos testes de integração. #14864 (Bharat Nallan).
  • Corrige um caso de teste instável na CI relacionado a uma transação vazia no MaterializeMySQL. #14854 (Winter Zhang).
  • Tentativa de deixar a compilação um pouco mais rápida. #14808 (alexey-milovidov).
  • Acelera um pouco a compilação removendo cabeçalhos não utilizados. #14714 (alexey-milovidov).
  • Corrigida falha de compilação no OSX. #14761 (Winter Zhang).
  • Ativa ccache por padrão no cmake, se ele for encontrado no SO. #14575 (alesapin).
  • Gerenciar a configuração das compilações de CI no repositório do ClickHouse. #14547 (alesapin).
  • Nos arquivos CMake: - Algumas partes das descrições das opções foram movidas para comentários logo acima. - Substituídos 0 -> OFF e 1 -> ON nos valores padrão de option. - Foram adicionadas algumas descrições e links para a documentação às opções. - A opção FUZZER foi substituída (há outra opção, ENABLE_FUZZING, que também habilita a mesma funcionalidade). - A opção ENABLE_GTEST_LIBRARY foi removida, pois já existe ENABLE_TESTS. Veja a descrição completa no PR: #14711 (Mike).
  • Reduz um pouco o tamanho do binário (~50 Mb na versão de depuração). #14555 (Artem Zuikov).
  • Use std::filesystem::path no ConfigProcessor para concatenar caminhos de arquivos. #14558 (Bharat Nallan).
  • Corrigida a asserção de depuração em bitShiftLeft() ao ser chamada com um big integer negativo. #14697 (Artem Zuikov).

Lançamento do ClickHouse 20.9

Lançamento do ClickHouse v20.9.7.11-stable, 2020-12-07

Melhoria de desempenho

  • Corrigido o desempenho da leitura em tabelas Merge sobre um grande número de tabelas MergeTree. Corrige #7748. #16988 (Anton Popov).

Correção de bug

  • Não restaurar partes do WAL se in_memory_parts_enable_wal estiver desativado. #17802 (detailyang).
  • Corrigido segfault quando não há espaço suficiente ao inserir em uma tabela Distributed. #17737 (tavplubix).
  • Corrigido um problema em que o ClickHouse falhava ao restabelecer a conexão com servidores MySQL. #17681 (Alexander Kazakov).
  • Corrigido o erro Function not implemented ao executar a consulta RENAME em um banco de dados Atomic, com o ClickHouse em execução no Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix).
  • Quando o clickhouse-client é usado em modo interativo com consultas em várias linhas, um comentário de uma linha era estendido erroneamente até o fim da consulta. Isso corrige #13654. #17565 (alexey-milovidov).
  • Corrige o problema em que o servidor pode, em casos muito raros, deixar de aceitar conexões. #17542 (alexey-milovidov).
  • Corrige o travamento da consulta ALTER quando a mutation correspondente foi interrompida em outra réplica. Corrige #16953. #17499 (alesapin).
  • Corrigido um bug em que o ClickHouse subestimava o tamanho do cache de marcas. Isso pode acontecer quando há muitos arquivos minúsculos com marcas. #17496 (alesapin).
  • Corrige o ORDER BY quando a configuração optimize_redundant_functions_in_order_by está habilitada. #17471 (Anton Popov).
  • Corrige duplicação após DISTINCT, que podia ocorrer devido a uma otimização incorreta. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov).
  • Corrige falha ao ler a tabela JOIN com tipos LowCardinality. Corrige #17228. #17397 (Nikolai Kochetov).
  • Corrigida a invalidação do índice Set quando há colunas const na subconsulta. Isso corrige #17246. #17249 (Amos Bird).
  • Corrigida a comparação de ColumnConst que causava uma falha. Isso corrigiu #17088. #17135 (Amos Bird).
  • Corrigida uma falha na consulta CREATE TABLE ... AS some_table quando some_table foi criada com AS table_function() Corrige #16944. #17072 (tavplubix).
  • Correção de bug na função fuzzBits, problema relacionado: #16980. #17051 (hexiaoting).
  • Evita erros de rede desnecessários em consultas remotas que podem ser canceladas durante a execução, como consultas com LIMIT. #17006 (Azat Khuzhin).
  • Pequena melhoria. #16866 (tavplubix).
  • Retorna o número de linhas afetadas em consultas INSERT via protocolo MySQL. Antes, o ClickHouse sempre retornava 0; isso foi corrigido. Corrige #16605. #16715 (Winter Zhang).

Melhoria de Compilação/Testes/Empacotamento

  • Atualizados os dados de fuso horário embutidos para a versão 2020d (também atualiza o cctz para o ramo master mais recente). #17204 (filimonov).

Lançamento do ClickHouse v20.9.6.14-stable, 2020-11-20

Melhoria

  • Agora é possível conectar-se ao endpoint seguro do clickhouse-server que requer SNI. Isso é possível quando o clickhouse-server está hospedado atrás de um proxy TLS. #16938 (filimonov).
  • Funções agregadas condicionais (por exemplo: avgIf, sumIf, maxIf) devem retornar NULL quando não houver linhas e forem usados argumentos Nullable. #13964 (Winter Zhang).

Correção de bug

  • Corrige um bug em que consultas ON CLUSTER podiam ficar travadas indefinidamente em tabelas ReplicatedMergeTree não líderes. #17089 (alesapin).
  • Resolve novamente o IP de format_avro_schema_registry_url em caso de erro. #16985 (filimonov).
  • Corrige uma possível falha do servidor após ALTER TABLE ... MODIFY COLUMN ... NewType quando SELECT tem uma expressão WHERE na coluna em alteração e o ALTER ainda não foi concluído. #16968 (Amos Bird).
  • O script de instalação deve sempre criar subdiretórios nas pastas de configuração. Isso só é relevante para builds do Docker com configuração personalizada. #16936 (filimonov).
  • Corrige um possível erro Illegal type of argument em consultas com ORDER BY. Corrige #16580. #16928 (Nikolai Kochetov).
  • Aborta o multipart upload se nenhum dado tiver sido gravado em WriteBufferFromS3. #16840 (Pavel Kovalenko).
  • Corrige a falha ao usar any sem argumentos. Isto é para #16803. cc @azat. #16826 (Amos Bird).
  • Corrige o operador IN em várias colunas e tuplas com a configuração transform_null_in habilitada. Corrige #15310. #16722 (Anton Popov).
  • Isso corrigirá optimize_read_in_order/optimize_aggregation_in_order com max_threads>0 e expressão em ORDER BY. #16637 (Azat Khuzhin).
  • corrige #16574 corrige #16231 corrige falha de consulta remota ao usar a função de agregação com sufixo ‘if’. #16610 (Winter Zhang).
  • A consulta é concluída mais rapidamente em caso de exceção. Cancela a execução em réplicas remotas se ocorrer uma exceção. #15578 (Azat Khuzhin).

Lançamento do ClickHouse v20.9.5.5-stable, 2020-11-13

Correção de bug

  • Corrige falhas silenciosas raras quando o query profiler está ativado e o ClickHouse está instalado em um SO com uma versão da glibc que tem tabelas de desempilhamento assíncrono supostamente corrompidas para algumas funções. Isso corrige #15301. Isso corrige #13098. #16846 (alexey-milovidov).
  • Agora, ao fazer o parsing de AVRO na entrada, o LowCardinality é removido do tipo. Corrige #16188. #16521 (Mike).
  • Corrige o rápido crescimento dos metadados ao usar MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, com slave_parallel_worker ativado no MySQL Slave, reduzindo corretamente os conjuntos de GTID. Isso corrige #15951. #16504 (TCeason).
  • Corrige o bug em DROP TABLE para Distributed (condição de corrida com INSERT). #16409 (Azat Khuzhin).
  • Corrige o processamento de entradas muito grandes na fila de replicação. Entradas muito grandes podem aparecer em consultas ALTER se a estrutura da tabela for extremamente grande (próxima de 1 MB). Isso corrige #16307. #16332 (alexey-milovidov).
  • Corrige o comportamento inconsistente em que uma parte dos dados retornados podia ser descartada porque o conjunto usado para filtragem não era criado. #16308 (Nikita Mikhaylov).
  • Corrige um bug com banco de dados MySQL. Quando o servidor MySQL usado como engine de banco de dados está indisponível, algumas consultas geram Exception, porque tentam obter tabelas de um servidor desativado, embora isso seja desnecessário. Por exemplo, a consulta SELECT ... FROM system.parts deve funcionar apenas com tabelas MergeTree e não acessar o banco de dados MySQL de forma alguma. #16032 (Kruglov Pavel).

Lançamento do ClickHouse v20.9.4.76-stable (2020-10-29)

Correção de bug

  • Corrige dupla liberação em caso de exceção na função dictGet. Isso pode ter acontecido se o Dicionário tiver sido carregado com erro. #16429 (Nikolai Kochetov).
  • Corrige group by com modificadores totals/rollup/cube e funções min/max sobre chaves do group by. Corrige #16393. #16397 (Anton Popov).
  • Corrigido INSERT assíncrono em Distributed com prefer_localhost_replica=0 e internal_replication. #16358 (Azat Khuzhin).
  • Corrige um erro grave no código da implementação de TwoLevelStringHashTable, que poderia levar a vazamento de memória. Estou surpreso com como esse bug conseguiu passar despercebido por tanto tempo… #16264 (Amos Bird).
  • Corrige o caso em que a memória pode ser alocada em excesso, independentemente do limite. Isso fecha #14560. #16206 (alexey-milovidov).
  • Corrige o travamento da consulta ALTER MODIFY ... ORDER BY em ReplicatedVersionedCollapsingMergeTree. Isso corrige #15980. #16011 (alesapin).
  • Corrige o parser dos nomes de collate e de charset e adiciona suporte a length = 0 para o tipo String. #16008 (Winter Zhang).
  • Permite usar o layout direct em dicionários com chaves complexas. #16007 (Anton Popov).
  • Impede que a réplica fique travada por 5 a 10 min quando ocorre um erro de replicação após um período de inatividade. #15987 (filimonov).
  • Corrige segfaults raros ao inserir em ou selecionar de MaterializedView e remover simultaneamente a tabela de destino (para o mecanismo de banco de dados Atomic). #15984 (tavplubix).
  • Corrige a ambiguidade na interpretação de perfis de configurações: CREATE USER ... SETTINGS profile readonly agora é considerado como o uso de um perfil chamado readonly, e não de uma configuração chamada profile com a restrição readonly. Isso corrige #15628. #15982 (Vitaly Baranov).
  • Corrige um travamento quando a criação do banco de dados falha. #15954 (Winter Zhang).
  • Corrigida a falha de DROP TABLE IF EXISTS com o erro Table ... does not exist quando a tabela é renomeada de forma concorrente (no engine de banco de dados Atomic). Corrigido um deadlock raro ao executar, de forma concorrente, algumas consultas DDL envolvendo várias tabelas (como DROP DATABASE e RENAME TABLE) Corrigida a falha de DROP/DETACH DATABASE com Table ... does not exist ao executar, de forma concorrente, DROP/DETACH TABLE. #15934 (tavplubix).
  • Corrige resultado vazio incorreto em consulta da tabela Distributed quando a consulta contém WHERE, PREWHERE e GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Corrigidos possíveis deadlocks no RBAC. #15875 (Vitaly Baranov).
  • Corrige a exceção Block structure mismatch em consultas SELECT ... ORDER BY DESC executadas após a consulta ALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin).
  • Corrigida a imprecisão do select count() no MaterializeMySQL. #15767 (tavplubix).
  • Corrige alguns casos de consultas em que apenas colunas virtuais são selecionadas. Antes, a exceção Not found column _nothing in block podia ser lançada. Corrige #12298. #15756 (Anton Popov).
  • Corrigido o valor padrão excessivamente baixo da configuração max_replicated_logs_to_keep, que podia fazer com que réplicas se perdessem com muita frequência. Melhorado o processo de recuperação de réplicas perdidas ao escolher a réplica mais atualizada para clonar. Além disso, partes antigas da réplica perdida não são removidas; em vez disso, são desanexadas. #15701 (tavplubix).
  • Corrige o erro Cannot add simple transform to empty Pipe, que ocorria ao ler da tabela Buffer, cuja estrutura é diferente da tabela de destino. Isso podia acontecer se a tabela de destino retornasse um resultado vazio para a consulta. Corrige #15529. #15662 (Nikolai Kochetov).
  • Corrigido um bug com globs na função de tabela S3: a região da URL não era aplicada à configuração do cliente S3. #15646 (Vladimir Chebotarev).
  • Reduz a métrica ReadonlyReplica ao desanexar tabelas somente leitura. Isso corrige #15598. #15592 (sundyli).
  • Gerar um erro quando um único parâmetro for passado para ReplicatedMergeTree em vez de ignorá-lo. #15516 (nvartolomei).

Melhoria

  • Agora é permitido executar consultas ALTER ... ON CLUSTER independentemente da definição de <internal_replication> na configuração do cluster. #16075 (alesapin).
  • As macros {database}, {table} e {uuid} agora são expandidas nos argumentos de ReplicatedMergeTree durante a criação da tabela. #16160 (tavplubix).

Lançamento do ClickHouse v20.9.3.45-stable (2020-10-09)

Correção de bug

  • Corrigido o erro Cannot find column, que pode ocorrer ao inserir em MATERIALIZED VIEW caso a consulta da MV contenha ARRAY JOIN. #15717 (Nikolai Kochetov).
  • Corrigida uma condição de corrida no AMQP-CPP. #15667 (alesapin).
  • Corrigida a ordem de destruição dos recursos na etapa ReadFromStorage do plano de consulta. Em casos raros, isso pode causar falhas. Possivelmente relacionado a #15610. #15645 (Nikolai Kochetov).
  • Corrigido o erro Element ... is not a constant expression ao usar o resultado da função JSON* em VALUES, LIMIT ou à direita do operador IN. #15589 (tavplubix).
  • Evita a possibilidade de ocorrer a mensagem de erro Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Isso corrige #15541. #15557 (alexey-milovidov).
  • Reduz significativamente o consumo de memória em AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
  • A mutação podia travar aguardando alguma parte inexistente após MOVE ou REPLACE PARTITION ou, em casos raros, após DETACH ou DROP PARTITION. Isso foi corrigido. #15537 (tavplubix).
  • Corrige um bug em que o operador ILIKE deixa de ser insensível a maiúsculas e minúsculas se LIKE com o mesmo padrão tiver sido executado. #15536 (alesapin).
  • Corrige erros Missing columns ao selecionar colunas ausentes nos dados, mas que dependem de outras colunas também ausentes nos dados. Corrige #15530. #15532 (alesapin).
  • Corrigido um bug na assinatura de eventos do DDLWorker que, em casos raros, pode levar ao travamento de consultas com ON CLUSTER. Introduzido em #13450. #15477 (alesapin).
  • Exibir o erro correto quando o segundo argumento da função agregada boundingRatio tiver o tipo errado. #15407 (detailyang).
  • Corrige um bug em que consultas como SELECT toStartOfDay(today()) falham com a mensagem de erro sobre um argumento time_zone vazio. #15319 (Bharat Nallan).
  • Corrigida condição de corrida durante a renomeação de tabela MergeTree e a limpeza em segundo plano. #15304 (alesapin).
  • Corrige uma rara condição de corrida durante a inicialização do servidor quando system.logs está habilitado. #15300 (alesapin).
  • Corrigido o relatório do MSan no QueryLog. Memória não inicializada podia ser usada no campo memory_usage. #15258 (alexey-milovidov).
  • Corrige a falha da instância ao usar joinGet com tipos LowCardinality. Isso corrige #15214. #15220 (Amos Bird).
  • Corrige um bug no engine de tabela Buffer, que não permite inserir dados com uma nova estrutura em Buffer após a consulta ALTER. Corrige #15117. #15192 (alesapin).
  • Ajustado o tamanho do campo decimals no pacote de definição de coluna do MySQL. #15152 (maqroll).
  • Corrigido o erro Cannot rename ... errno: 22, strerror: Invalid argument durante a execução de consulta DDL no banco de dados Atomic ao executar o clickhouse-server no Docker no Mac OS. #15024 (tavplubix).
  • Correção para fazer o push down de predicados funcionar quando a subconsulta contém a função finalizeAggregation. Corrige #14847. #14937 (filimonov).
  • Corrige um problema em que o servidor pode ficar travado na inicialização ao se comunicar com o ZooKeeper, caso os arquivos de configuração precisem ser buscados do ZK (usando a opção de inclusão from_zk). Isso corrige #14814. #14843 (Alexander Kuzmenkov).

Melhoria

  • Agora é possível alterar o tipo da coluna de versão do VersionedCollapsingMergeTree usando a consulta ALTER. #15442 (alesapin).

Lançamento do ClickHouse v20.9.2.20, 2020-09-22

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

  • Ao atualizar a partir de versões anteriores à 20.5, se for realizado um rolling update e o cluster contiver tanto versões 20.5 ou superiores quanto versões anteriores à 20.5, reiniciar nós do ClickHouse com versões antigas — fazendo com que a versão antiga seja iniciada na presença de versões mais novas — pode levar a erros Part ... intersects previous part. Para evitar esse erro, primeiro instale os pacotes mais novos do clickhouse-server em todos os nós do cluster e só depois reinicie-os (assim, quando o clickhouse-server for reiniciado, ele já será iniciado com a nova versão).

Novo recurso

  • Adicionados os transformadores de coluna EXCEPT, REPLACE, APPLY, que podem ser aplicados à lista de colunas selecionadas (após * ou COLUMNS(...)). Por exemplo, você pode escrever SELECT * EXCEPT(URL) REPLACE(number + 1 AS number). Outro exemplo: select * apply(length) apply(max) from wide_string_table para descobrir o comprimento máximo de todas as colunas do tipo String. #14233 (Amos Bird).
  • Adicionada uma função de agregação rankCorr, que calcula um coeficiente de correlação por postos. #11769 (antikvist) #14411 (Nikita Mikhaylov).
  • Adicionada a função de tabela view, que transforma uma subconsulta em um objeto de tabela. Isso facilita passar consultas entre contextos. Por exemplo, ela pode ser usada em funções de tabela remote/cluster. #12567 (Amos Bird).

Correção de bug

  • Corrigido bug em que uma mutação ALTER UPDATE com uma coluna Nullable na expressão de atribuição e um valor constante (como UPDATE x = 42) levava a um valor incorreto na coluna ou a segfault. Corrige #13634, #14045. #14646 (alesapin).
  • Corrigido o resultado incorreto da multiplicação de Decimal, causado pela escala decimal incorreta da coluna de resultado. #14603 (Artem Zuikov).
  • Corrigida a ordem incorreta de classificação da coluna Nullable. Isso corrige #14344. #14495 (Nikita Mikhaylov).
  • Corrigida a inconsistência na comparação com a chave primária do tipo FixedString durante a análise de índice, quando comparada com uma string de tamanho menor. Isso corrige #14908. #15033 (Amos Bird).
  • Corrigido um bug que fazia com que as mesclagens fossem atribuídas incorretamente se a tabela tivesse partições com uma única parte. #14444 (alesapin).
  • Se a função bar fosse chamada com argumentos especialmente elaborados, poderia ocorrer um estouro de buffer. Isso fecha #13926. #15028 (alexey-milovidov).
  • Passa a publicar as frequências da CPU por núcleo lógico em system.asynchronous_metrics. Isso corrige #14923. #14924 (Alexander Kuzmenkov).
  • Corrigido o erro .metadata.tmp File exists ao usar o mecanismo de banco de dados MaterializeMySQL. #14898 (Winter Zhang).
  • Corrige o problema em que algumas invocações da função extractAllGroups podem causar o erro “Memory limit exceeded”. Isso corrige #13383. #14889 (alexey-milovidov).
  • Corrigido SIGSEGV ao tentar fazer INSERT em StorageFile(fd). #14887 (Azat Khuzhin).
  • Corrige um erro raro em consultas SELECT quando a coluna consultada tem uma expressão DEFAULT que depende de outra coluna que também tem DEFAULT, mas não está presente na consulta SELECT nem existe no disco. Corrige parcialmente #14531. #14845 (alesapin).
  • Corrige a detecção incorreta de monotonicidade para a conversão Int -> Int com redução de tipos com sinal. Isso pode levar a um resultado incorreto da consulta. Esse bug foi identificado em #14513. #14783 (Amos Bird).
  • Corrigido o nome padrão do banco de dados que estava ausente nos metadados da visão materializada ao executar ALTER ... MODIFY QUERY. #14664 (tavplubix).
  • Corrige um possível resultado incorreto da função has quando os tipos LowCardinality e Nullable estão envolvidos. #14591 (Mike).
  • Limpeza do diretório de dados após exceções do Zookeeper durante a consulta CREATE de tabelas com engine ReplicatedMergeTree. #14563 (Bharat Nallan).
  • Corrige segfaults raros em funções com o combinador -Resample, que poderiam ocorrer como resultado de overflow com parâmetros muito grandes. #14562 (Anton Popov).
  • Verificação de overflow no tamanho do array na aggregate function topK. Sem essa verificação, o usuário pode enviar uma consulta com parâmetros cuidadosamente elaborados que podem levar à falha do servidor. Isso fecha #14452. #14467 (alexey-milovidov).
  • Encaminhamento de restart/start/stop/reload do SysVinit para o systemd (se estiver em uso). #14460 (Azat Khuzhin).
  • Interromper a execução da consulta se ocorrer uma exceção no próprio PipelineExecutor. Isso pode evitar casos raros em que a consulta fique travada. #14334 #14402 (Nikolai Kochetov).
  • Corrige um travamento durante a consulta ALTER em tabela que foi criada com AS table_function. Corrige #14212. #14326 (alesapin).
  • Corrigida exceção durante a consulta ALTER LIVE VIEW com o comando REFRESH. LIVE VIEW é uma funcionalidade experimental. #14320 (Bharat Nallan).
  • Corrigido o tempo de vida do QueryPlan (para EXPLAIN PIPELINE graph=1) em consultas com interpretador aninhado. #14315 (Azat Khuzhin).
  • Melhorada a verificação do tamanho da tupla em dicionários externos de chave complexa com cache SSD. Isso corrige #13981. #14313 (alexey-milovidov).
  • Não permite CODEC para o tipo de coluna ALIAS. Corrige #13911. #14263 (Bharat Nallan).
  • Corrige a instrução GRANT ALL quando executada em nível não global. #13987 (Vitaly Baranov).
  • Corrigida a captura de arrayJoin() em lambda (era lançada uma exceção com uma mensagem de erro lógico). #13792 (Azat Khuzhin).

Funcionalidade Experimental

  • Adicionada a ferramenta db-generator para gerar bancos de dados aleatórios com base em consultas SELECT fornecidas. Ela pode facilitar a reprodução de problemas quando há apenas um relatório de bug incompleto do usuário. #14442 (Nikita Mikhaylov) #10973 (ZeDRoman).

Melhoria

  • Permite usar configuração de armazenamento com vários volumes no armazenamento Distributed. #14839 (Pavel Kovalenko).
  • Não é mais permitido usar argumento time_zone vazio em funções do tipo toStartOf*. #14509 (Bharat Nallan).
  • O handler do MySQL retorna OK para consultas como SET @@var = value. Essa instrução é ignorada. Isso é necessário porque alguns drivers MySQL enviam a consulta SET @@ para configuração após o handshake. https://github.com/ClickHouse/ClickHouse/issues/9336#issuecomment-686222422 #14469 (BohuTANG).
  • Agora os TTLs serão aplicados durante a mesclagem se não tiverem sido materializados anteriormente. #14438 (alesapin).
  • Agora o clickhouse-obfuscator oferece suporte ao tipo UUID, conforme proposto em #13163. #14409 (dimarub2000).
  • Adicionada a nova configuração system_events_show_zero_values, conforme proposto em #11384. #14404 (dimarub2000).
  • Converte implicitamente a chave primária para NOT NULL em MaterializeMySQL (o mesmo que MySQL). Corrige #14114. #14397 (Winter Zhang).
  • Substitui inteiros wide (256 bits) do boost multiprecision pela implementação de https://github.com/cerevra/int. Inteiros de 256 bits são experimentais. #14229 (Artem Zuikov).
  • Adiciona codec de compressão padrão para partes em system.part_log com o nome default_compression_codec. #14116 (alesapin).
  • Adiciona argumento de precisão para o tipo DateTime. Isso permite usar o nome DateTime em vez de DateTime64. #13761 (Winter Zhang).
  • Adicionado suporte à autorização requirepass para dicionário externo Redis. #13688 (Ivan Torgashov).
  • Melhorias no engine RabbitMQ: adicionado tratamento de falhas de conexão e de canais, commits adequados, tratamento de falhas de insert, melhorias nos exchanges, durabilidade da fila e possibilidade de retomar a fila, novas configurações de fila. Testes corrigidos. #12761 (Kseniia Sumarokova).
  • Suporte a codecs personalizados em partes compactas. #12183 (Anton Popov).

Melhoria de desempenho

  • Otimização de consultas com LIMIT/LIMIT BY/ORDER BY para Distributed com GROUP BY sharding_key (com optimize_skip_unused_shards e optimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin).
  • Criação de Set para múltiplos JOIN e IN em paralelo. Isso pode melhorar ligeiramente o desempenho de consultas com várias expressões IN subquery diferentes. #14412 (Nikolai Kochetov).
  • Melhoria de desempenho do motor Kafka ao fornecer uma thread independente para cada consumidor. Pool de threads separado para motores de streaming (como Kafka). #13939 (fastio).

Melhoria de Compilação/Testes/Empacotamento

  • Reduzido o tamanho do binário na compilação de depuração ao remover as informações de depuração de Functions. Isso é necessário apenas para um projeto interno da Yandex que usa um vinculador muito antigo. #14549 (alexey-milovidov).
  • Preparação para compilação com clang 11. #14455 (alexey-milovidov).
  • Corrigida a lógica no script de backport. Nas versões anteriores, ele era acionado por qualquer etiqueta com cor 100% vermelha. Isso era estranho. #14433 (alexey-milovidov).
  • Os testes de integração usam a configuração base padrão. Todas as alterações de config são explícitas, com os parâmetros main_configs, user_configs e dictionaries para a instância. #13647 (Ilya Yatsishin).

Lançamento do ClickHouse 20.8

Lançamento do ClickHouse v20.8.12.2-lts, 2021-01-16

Correção de bug

  • Corrige o combinador *If com função unária e tipos Nullable. #18806 (Azat Khuzhin).
  • Restringe mesclagens de partes wide para partes compactas. No caso de mesclagem vertical, isso levava à corrupção da parte resultante. #18381 (Anton Popov).

Lançamento do ClickHouse v20.8.11.17-lts, 2020-12-25

Correção de bug

  • Desabilitada a escrita com AIO durante mesclagens, pois isso pode levar a uma corrupção de dados extremamente rara nas colunas da chave primária durante a mesclagem. #18481 (alesapin).
  • Corrigido o erro value is too short ao executar funções toType(...) (toDate, toUInt32, etc.) com argumento do tipo Nullable(String). Agora, essas funções retornam NULL em erros de parsing em vez de gerar uma exceção. Corrige #7673. #18445 (tavplubix).
  • Corrige possíveis falhas em funções de agregação com o combinador Distinct ao usar agregação em dois níveis. Corrige #17682. #18365 (Anton Popov).

Lançamento do ClickHouse v20.8.10.13-lts, 2020-12-24

Correção de bug

  • Quando a rotação do log do servidor era configurada com o parâmetro logger.size com um valor numérico maior que 2^32, os logs não eram rotacionados corretamente. #17905 (Alexander Kuzmenkov).
  • Corrigida a inicialização incorreta de max_compress_block_size em MergeTreeWriterSettings usando min_compress_block_size. #17833 (flynn).
  • Corrigido um problema em que o ClickHouse não conseguia restabelecer a conexão com servidores MySQL. #17681 (Alexander Kazakov).
  • Corrigido o travamento da consulta ALTER quando a mutation correspondente foi interrompida em uma réplica diferente. Isso corrige #16953. #17499 (alesapin).
  • Corrigido um bug em que o tamanho do cache de marcas era subestimado pelo ClickHouse. Isso pode acontecer quando há muitos arquivos minúsculos com marcas. #17496 (alesapin).
  • Corrigido o ORDER BY com a configuração optimize_redundant_functions_in_order_by habilitada. #17471 (Anton Popov).
  • Corrigida a comparação de ColumnConst, que causava uma falha. Isso corrigiu #17088. #17135 (Amos Bird).
  • Corrigido um bug em que consultas ON CLUSTER podiam ficar bloqueadas indefinidamente para tabelas ReplicatedMergeTree não líderes. #17089 (alesapin).
  • Evite erros de rede desnecessários em consultas remotas que podem ser canceladas durante a execução, como consultas com LIMIT. #17006 (Azat Khuzhin).
  • Resolva novamente o IP de format_avro_schema_registry_url em caso de erro. #16985 (filimonov).
  • Corrigida uma possível queda do servidor após ALTER TABLE ... MODIFY COLUMN ... NewType quando SELECT tem uma expressão WHERE na coluna que está sendo alterada e o ALTER ainda não foi concluído. #16968 (Amos Bird).
  • O script de instalação deve sempre criar subdiretórios nas pastas de config. Isso é relevante apenas para a compilação do Docker com config personalizada. #16936 (filimonov).
  • Corrigido um possível erro Illegal type of argument em consultas com ORDER BY. Corrige #16580. #16928 (Nikolai Kochetov).
  • Interrompe o upload multipart caso nenhum dado tenha sido gravado em WriteBufferFromS3. #16840 (Pavel Kovalenko).
  • Corrigido travamento ao usar any sem argumentos. Isso corrige #16803. #16826 (Amos Bird).
  • Corrigido o operador IN para várias colunas e tuplas com a configuração transform_null_in habilitada. Corrige #15310. #16722 (Anton Popov).
  • Corrigido o comportamento inconsistente de optimize_read_in_order/optimize_aggregation_in_order com max_threads > 0 e uma expressão em ORDER BY. #16637 (Azat Khuzhin).
  • Corrigido o problema em que a otimização de consulta produzia resultados incorretos se a consulta contivesse ARRAY JOIN. #17887 (sundyli).
  • A consulta é encerrada mais rapidamente em caso de exceção. A execução em réplicas remotas é cancelada se ocorrer uma exceção. #15578 (Azat Khuzhin).

Lançamento do ClickHouse v20.8.6.6-lts, 2020-11-13

Correção de bug

  • Corrige raros travamentos silenciosos quando o profiler de consultas está ativado e o ClickHouse está instalado em um sistema operacional com uma versão da glibc que tem tabelas de unwinding assíncrono (supostamente) defeituosas para algumas funções. Isso corrige #15301. Isso corrige #13098. #16846 (alexey-milovidov).
  • Agora, ao fazer parsing de AVRO na entrada, o LowCardinality é removido do tipo. Corrige #16188. #16521 (Mike).
  • Corrige o rápido crescimento dos metadados ao usar MySQL Master -> MySQL Slave -> engine MaterializeMySQL do ClickHouse, com slave_parallel_worker ativado no MySQL Slave, reduzindo corretamente os conjuntos de GTID. Isso corrige #15951. #16504 (TCeason).
  • Corrige DROP TABLE para Distributed (condição de corrida com INSERT). #16409 (Azat Khuzhin).
  • Corrige o processamento de entradas muito grandes na fila de replicação. Entradas muito grandes podem aparecer em consultas ALTER se a estrutura da tabela for extremamente grande (próxima de 1 MB). Isso corrige #16307. #16332 (alexey-milovidov).
  • Corrige o comportamento inconsistente em que parte dos dados retornados podia ser descartada porque o conjunto usado para filtrá-los não era criado. #16308 (Nikita Mikhaylov).
  • Corrige um bug com banco de dados MySQL. Quando o servidor MySQL usado como engine de banco de dados está fora do ar, algumas consultas geram Exception porque tentam obter tabelas de um servidor desabilitado, embora isso não seja necessário. Por exemplo, a consulta SELECT ... FROM system.parts deve funcionar apenas com tabelas MergeTree e não acessar o banco de dados MySQL de forma alguma. #16032 (Kruglov Pavel).

Lançamento do ClickHouse v20.8.5.45-lts, 2020-10-29

Correção de bug

  • Corrige a dupla liberação em caso de exceção na função dictGet. Isso poderia acontecer se o dicionário tivesse sido carregado com erro. #16429 (Nikolai Kochetov).
  • Corrige o group by com modificadores totals/rollup/cube e funções min/max sobre chaves de group by. Corrige #16393. #16397 (Anton Popov).
  • Corrigido o INSERT assíncrono em Distributed com prefer_localhost_replica=0 e internal_replication. #16358 (Azat Khuzhin).
  • Corrige um possível vazamento de memória durante GROUP BY com chaves do tipo string, causado por um erro na implementação de TwoLevelStringHashTable. #16264 (Amos Bird).
  • Corrige o caso em que a memória pode ser alocada em excesso, independentemente do limite. Isso fecha #14560. #16206 (alexey-milovidov).
  • Corrige o travamento da consulta ALTER MODIFY ... ORDER BY em ReplicatedVersionedCollapsingMergeTree. Isso corrige #15980. #16011 (alesapin).
  • Corrige o parser de nomes de collate e charset e adiciona suporte a length = 0 para o tipo String. #16008 (Winter Zhang).
  • Permitido o uso do layout direct para dicionários com chaves complexas. #16007 (Anton Popov).
  • Evita que a réplica fique bloqueada por 5 a 10 min quando ocorre um erro de replicação após um período de inatividade. #15987 (filimonov).
  • Corrige segfaults raros ao inserir em ou consultar uma MaterializedView e, simultaneamente, remover a tabela de destino (para o engine de banco de dados Atomic). #15984 (tavplubix).
  • Corrige a ambiguidade na interpretação de perfis de configurações: CREATE USER ... SETTINGS profile readonly agora passa a ser considerado como o uso de um perfil chamado readonly, e não de uma configuração chamada profile com a restrição readonly. Isso corrige #15628. #15982 (Vitaly Baranov).
  • Corrige um crash quando a criação do banco de dados falha. #15954 (Winter Zhang).
  • Corrigida a falha de DROP TABLE IF EXISTS com o erro Table ... does not exist quando a tabela é renomeada concorrentemente (para o engine de banco de dados Atomic). Corrigido um deadlock raro ao executar concorrentemente algumas consultas DDL com múltiplas tabelas (como DROP DATABASE e RENAME TABLE) Corrigida a falha de DROP/DETACH DATABASE com Table ... does not exist ao executar DROP/DETACH TABLE concorrentemente. #15934 (tavplubix).
  • Corrige resultado vazio incorreto em consulta na tabela Distributed quando a consulta contém WHERE, PREWHERE e GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Corrigidos possíveis deadlocks no RBAC. #15875 (Vitaly Baranov).
  • Corrigida a exceção Block structure mismatch em consultas SELECT ... ORDER BY DESC executadas após a consulta ALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin).
  • Corrige alguns casos de consultas em que apenas colunas virtuais são selecionadas. Antes, a exceção Not found column _nothing in block podia ser lançada. Corrige #12298. #15756 (Anton Popov).
  • Corrige o erro Cannot find column, que pode ocorrer ao inserir em MATERIALIZED VIEW caso a consulta para MV contenha ARRAY JOIN. #15717 (Nikolai Kochetov).
  • Corrigido o valor padrão muito baixo da configuração max_replicated_logs_to_keep, que podia fazer com que as réplicas se perdessem com muita frequência. Melhorado o processo de recuperação de réplica perdida, escolhendo a réplica mais atualizada para clonagem. Além disso, as partes antigas da réplica perdida não são removidas, mas desanexadas. #15701 (tavplubix).
  • Corrige o erro Cannot add simple transform to empty Pipe, que ocorria ao ler da tabela Buffer, cuja estrutura é diferente da tabela de destino. Isso podia acontecer se a tabela de destino retornasse um resultado vazio para a consulta. Corrige #15529. #15662 (Nikolai Kochetov).
  • Corrigido um bug com globs na função de tabela do S3: a região da URL não era aplicada à configuração do cliente S3. #15646 (Vladimir Chebotarev).
  • Reduz a métrica ReadonlyReplica ao desanexar tabelas somente leitura. Isso corrige #15598. #15592 (sundyli).
  • Lançar um erro quando apenas um parâmetro for passado para ReplicatedMergeTree, em vez de ignorá-lo. #15516 (nvartolomei).

Melhoria

  • Agora é possível executar consultas ALTER ... ON CLUSTER independentemente da configuração <internal_replication> no cluster. #16075 (alesapin).
  • Expande as macros {database}, {table} e {uuid} nos argumentos de ReplicatedMergeTree durante a criação da tabela. #16159 (tavplubix).

Lançamento do ClickHouse v20.8.4.11-lts, 2020-10-09

Correção de bug

  • Corrige a ordem de destruição dos recursos na etapa ReadFromStorage do plano de consulta. Em casos raros, isso pode causar falhas. Possivelmente relacionado ao #15610. #15645 (Nikolai Kochetov).
  • Corrigido o erro Element ... is not a constant expression ao usar o resultado da função JSON* em VALUES, LIMIT ou no lado direito do operador IN. #15589 (tavplubix).
  • Evita a possibilidade de ocorrer a mensagem de erro Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Isso corrige #15541. #15557 (alexey-milovidov).
  • Reduz de forma significativa o uso de memória em AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
  • A mutação pode ficar travada esperando alguma parte inexistente após MOVE ou REPLACE PARTITION ou, em casos raros, após DETACH ou DROP PARTITION. Isso foi corrigido. #15537 (tavplubix).
  • Corrigido um bug em que o operador ILIKE passava a diferenciar maiúsculas de minúsculas se LIKE com o mesmo padrão tivesse sido executado. #15536 (alesapin).
  • Corrige erros Missing columns ao selecionar colunas ausentes nos dados, mas que dependem de outras colunas também ausentes nos dados. Corrige #15530. #15532 (alesapin).
  • Corrige um bug na assinatura de eventos no DDLWorker que, embora raramente, pode fazer com que consultas fiquem bloqueadas em ON CLUSTER. Introduzido em #13450. #15477 (alesapin).
  • Relatar o erro correto quando o segundo argumento da função de agregação boundingRatio tiver o tipo incorreto. #15407 (detailyang).
  • Corrige uma condição de corrida durante a renomeação de tabela MergeTree e a limpeza em segundo plano. #15304 (alesapin).
  • Corrige uma rara condição de corrida na inicialização do servidor quando system.logs está habilitado. #15300 (alesapin).
  • Corrige o relatório do MSan no QueryLog. Memória não inicializada pode ser usada no campo memory_usage. #15258 (alexey-milovidov).
  • Corrige travamento da instância ao usar joinGet com tipos LowCardinality. Isso corrige #15214. #15220 (Amos Bird).
  • Corrige um bug na engine de tabela Buffer que não permite inserir dados com a nova estrutura em Buffer após a consulta ALTER. Corrige #15117. #15192 (alesapin).
  • Ajustado o tamanho do campo decimals no pacote de definição de coluna do MySQL. #15152 (maqroll).
  • Já usamos uma comparação com preenchimento entre String e FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). Este PR aplica a mesma lógica à comparação de campos, corrigindo o uso de FixedString como chaves primárias. Isso corrige #14908. #15033 (Amos Bird).
  • Se a função bar fosse chamada com argumentos especialmente elaborados, haveria a possibilidade de estouro de buffer. Isso corrige #13926. #15028 (alexey-milovidov).
  • Corrigido o erro Cannot rename ... errno: 22, strerror: Invalid argument na execução de consulta DDL em banco de dados Atomic ao executar o clickhouse-server no Docker no Mac OS. #15024 (tavplubix).
  • Agora, as configurações number_of_free_entries_in_pool_to_execute_mutation e number_of_free_entries_in_pool_to_lower_max_size_of_merge podem ter o mesmo valor de background_pool_size. #14975 (alesapin).
  • Correção para que o push down de predicados funcione quando a subconsulta contém a função finalizeAggregation. Corrige #14847. #14937 (filimonov).
  • Publica as frequências da CPU por núcleo lógico em system.asynchronous_metrics. Isso corrige #14923. #14924 (Alexander Kuzmenkov).
  • Foi corrigido o erro .metadata.tmp File exists ao usar o mecanismo de banco de dados MaterializeMySQL. #14898 (Winter Zhang).
  • Corrige um problema em que o servidor pode travar na inicialização ao se comunicar com o ZooKeeper, caso os arquivos de configuração precisem ser buscados no ZK (usando a opção de inclusão from_zk). Isso corrige #14814. #14843 (Alexander Kuzmenkov).
  • Corrige a detecção incorreta de monotonicidade para o CAST Int -> Int com redução de faixa em tipos com sinal. Isso pode levar a resultados incorretos de consulta. Esse bug foi identificado em #14513. #14783 (Amos Bird).
  • Corrigida a ordenação incorreta da coluna Nullable. Corrige #14344. #14495 (Nikita Mikhaylov).

Melhoria

  • Agora é possível alterar o tipo da coluna de versão no VersionedCollapsingMergeTree com a consulta ALTER. #15442 (alesapin).

Lançamento do ClickHouse v20.8.3.18-stable, 2020-09-18

Correção de bug

  • Corrige o problema em que algumas invocações da função extractAllGroups podem acionar o erro “Memory limit exceeded”. Isso corrige #13383. #14889 (alexey-milovidov).
  • Corrige SIGSEGV ao tentar fazer INSERT em StorageFile(fd). #14887 (Azat Khuzhin).
  • Corrige um erro raro em consultas SELECT quando a coluna consultada tem uma expressão DEFAULT que depende de outra coluna que também tem DEFAULT, não está presente na consulta SELECT e não existe no disco. Corrige parcialmente #14531. #14845 (alesapin).
  • Corrige a ausência do nome padrão do banco de dados nos metadados da visão materializada ao executar ALTER ... MODIFY QUERY. #14664 (tavplubix).
  • Corrige um bug em que uma mutation ALTER UPDATE com coluna Nullable na expressão de atribuição e valor constante (como UPDATE x = 42) leva a um valor incorreto na coluna ou a segfault. Corrige #13634, #14045. #14646 (alesapin).
  • Corrige um resultado incorreto na multiplicação Decimal causado pela escala decimal incorreta da coluna de resultado. #14603 (Artem Zuikov).
  • Adiciona a verificação, pois nem lc->isNullable() nem ls->getDictionaryPtr()->isNullable() retornavam o resultado correto. #14591 (myrrc).
  • Limpa o diretório de dados após exceções do ZooKeeper durante CreateQuery para o engine StorageReplicatedMergeTree. #14563 (Bharat Nallan).
  • Corrige segfaults raros em funções com o combinator -Resample, que poderiam ocorrer como resultado de overflow com parâmetros muito grandes. #14562 (Anton Popov).

Melhoria

  • Acelera o processo de desligamento do servidor quando há requisições ao S3 em andamento. #14858 (Pavel Kovalenko).
  • Permite usar uma configuração de armazenamento com múltiplos volumes no armazenamento Distributed. #14839 (Pavel Kovalenko).
  • Acelera o processo de desligamento do servidor quando há requisições ao S3 em andamento. #14496 (Pavel Kovalenko).
  • Oferece suporte a codecs personalizados em partes compactas. #12183 (Anton Popov).

Lançamento do ClickHouse v20.8.2.3-stable, 2020-09-08

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

  • Agora, a consulta OPTIMIZE FINAL não recalcula o TTL das partes adicionadas antes da criação do TTL. Use ALTER TABLE ... MATERIALIZE TTL uma vez para calculá-lo; depois disso, OPTIMIZE FINAL avaliará o TTL corretamente. Esse comportamento nunca funcionou para tabelas replicadas. #14220 (alesapin).
  • A configuração parallel_distributed_insert_select foi ampliada com uma opção para executar INSERT em uma tabela local. A configuração muda de tipo de Bool para UInt64, portanto os valores false e true não são mais suportados. Se você tiver esses valores na configuração do servidor, o servidor não iniciará. Substitua-os por 0 e 1, respectivamente. #14060 (Azat Khuzhin).
  • Foi removido o suporte ao formato de entrada/saída ODBCDriver. Este era um formato obsoleto, antes usado para comunicação com o ClickHouse ODBC driver, e há muito tempo substituído pelo formato ODBCDriver2. Corrige #13629. #13847 (hexiaoting).
  • Ao atualizar de versões anteriores à 20.5, se for realizado um rolling update e o cluster contiver tanto versões 20.5 ou superiores quanto versões inferiores à 20.5, se nós do ClickHouse com versões antigas forem reiniciados e a versão antiga tiver sido iniciada na presença de versões mais novas, isso pode levar a erros Part ... intersects previous part. Para evitar esse erro, primeiro instale os pacotes mais recentes do clickhouse-server em todos os nós do cluster e só depois reinicie-os (assim, quando o clickhouse-server for reiniciado, ele iniciará com a nova versão).

Novo recurso

  • Permite especificar o codec de compressão Default para colunas que correspondem às configurações especificadas em config.xml. Implementa: #9074. #14049 (alesapin).
  • Oferece suporte à autenticação Kerberos no Kafka, usando as bibliotecas krb5 e cyrus-sasl. #12771 (Ilya Golshtein).
  • Adiciona a função normalizeQuery, que substitui literais, sequências de literais e aliases complexos por placeholders. Adiciona a função normalizedQueryHash, que retorna valores de hash de 64 bits idênticos para consultas semelhantes. Isso ajuda a analisar o log de consultas. Isso fecha #11271. #13816 (alexey-milovidov).
  • Adiciona a tabela time_zones. #13880 (Bharat Nallan).
  • Adiciona a função defaultValueOfTypeName, que retorna o valor padrão de um determinado tipo. #13877 (hcz).
  • Adiciona a função countDigits(x), que conta o número de dígitos decimais em uma coluna inteira ou Decimal. Adiciona a função isDecimalOverflow(d, [p]), que verifica se o valor na coluna Decimal excede sua precisão (ou a precisão especificada). #14151 (Artem Zuikov).
  • Adiciona as implementações quantileExactLow e quantileExactHigh, com os aliases correspondentes medianExactLow e medianExactHigh. #13818 (Bharat Nallan).
  • Adiciona a função date_trunc, que trunca um valor de data/hora para uma parte de data/hora especificada. #13888 (Vladimir Golovchenko).
  • Adiciona a nova seção opcional <user_directories> à configuração principal. #13425 (Vitaly Baranov).
  • Adiciona a instrução ALTER SAMPLE BY, que permite alterar a cláusula SAMPLE da tabela. #13280 (Amos Bird).
  • A função position agora aceita o argumento opcional start_pos. #13237 (vdimir).

Correção de bug

  • Corrigida a sobreposição visível de dados pela barra de progresso no cliente em modo interativo. Isso corrige #12562, #13369 e #13584, além de corrigir #12964. #13691 (alexey-milovidov).
  • Corrigida a ordem de ordenação incorreta da coluna LowCardinality ao ordenar por múltiplas colunas. Isso corrige #13958. #14223 (Nikita Mikhaylov).
  • Verificação de estouro no tamanho do array na função de agregação topK. Sem essa verificação, o usuário pode enviar uma consulta com parâmetros cuidadosamente elaborados que podem levar à falha do servidor. Isso encerra #14452. #14467 (alexey-milovidov).
  • Corrige um bug que pode levar à atribuição incorreta de operações de merge se a tabela tiver partições com uma única parte. #14444 (alesapin).
  • Interrompe a execução da consulta se ocorrer uma exceção no próprio PipelineExecutor. Isso pode evitar casos raros de travamento da consulta. Continuação de #14334. #14402 #14334 (Nikolai Kochetov).
  • Corrige falha durante a consulta ALTER em tabela criada com AS table_function. Corrige #14212. #14326 (alesapin).
  • Correção de exceção durante a consulta ALTER LIVE VIEW com o comando REFRESH. A visualização em tempo real é um recurso experimental. #14320 (Bharat Nallan).
  • Corrigido o tempo de vida do QueryPlan (para EXPLAIN PIPELINE graph=1) em consultas com interpretador aninhado. #14315 (Azat Khuzhin).
  • Corrige segfault no clickhouse-odbc-bridge durante a obtenção do schema de algumas fontes externas. Este PR corrige #13861. #14267 (Vitaly Baranov).
  • Corrige travamento na busca por inclusão de mark introduzido em #12277. #14225 (Amos Bird).
  • Corrige a criação de tabelas com tuplas nomeadas. Isso corrige #13027. #14143 (alexey-milovidov).
  • Corrige a formatação dos valores decimais negativos mínimos. Isso corrige #14111. #14119 (Alexander Kuzmenkov).
  • Corrige a métrica DistributedFilesToInsert (que era zerada quando não deveria). #14095 (Azat Khuzhin).
  • Corrigido pointInPolygon ao usar um array 2D constante como polígono. #14079 (Alexey Ilyukhov).
  • Corrigido o ponto de montagem incorreto nas informações adicionais de Poco::Exception: no space left on device. #14050 (tavplubix).
  • Corrigida a instrução GRANT ALL quando executada em um nível não global. #13987 (Vitaly Baranov).
  • Corrige o parser para rejeitar CREATE TABLE como função de tabela com engine. #13940 (hcz).
  • Corrige resultados incorretos em consultas select com a palavra-chave DISTINCT e em subconsultas com UNION ALL quando a configuração optimize_duplicate_order_by_and_distinct está habilitada. #13925 (Artem Zuikov).
  • Corrigido um potencial deadlock ao renomear a tabela Distributed. #13922 (tavplubix).
  • Corrige a ordenação incorreta de colunas FixedString ao ordenar por múltiplas colunas. Corrige #13182. #13887 (Nikolai Kochetov).
  • Corrige um resultado potencialmente impreciso na mesclagem de topK/topKWeighted (com parâmetros não padrão). #13817 (Azat Khuzhin).
  • Corrige uma falha na leitura de uma tabela MergeTree com INDEX do tipo SET ao comparar com NULL. Isso corrige #13686. #13793 (Amos Bird).
  • Corrigida a captura de arrayJoin na lambda (LOGICAL_ERROR). #13792 (Azat Khuzhin).
  • Adicionada verificação de overflow do passo na função range. #13790 (Azat Khuzhin).
  • Corrigido o erro Directory not empty durante a execução simultânea de DROP DATABASE e CREATE TABLE. #13756 (alexey-milovidov).
  • Adicionada verificação de intervalo para a função h3KRing. Isso corrige #13633. #13752 (alexey-milovidov).
  • Corrige a condição de corrida entre DETACH e as mesclagens em segundo plano. As partes podem reaparecer após o DETACH. Esta é a continuação de #8602, que não corrigiu o problema, mas introduziu um teste que passou a falhar em casos muito raros, demonstrando a existência do problema. #13746 (alexey-milovidov).
  • Corrige Settings.Names/Values de logging quando log_queries_min_type > QUERY_START. #13737 (Azat Khuzhin).
  • Corrige o código de status da resposta do endpoint /replicas_status quando verbose=1. #13722 (javi santana).
  • Corrigida a mensagem incorreta em clickhouse-server.init ao verificar usuário e grupo. #13711 (ylchou).
  • Não otimizar any(arrayJoin()) -> arrayJoin() com a configuração optimize_move_functions_out_of_any. #13681 (Azat Khuzhin).
  • Corrigido travamento em JOIN com StorageMerge e set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov).
  • Corrige um erro de digitação na mensagem de erro referente à configuração The value of 'number_of_free_entries_in_pool_to_lower_max_size_of_merge' setting. #13678 (alexey-milovidov).
  • Consultas concorrentes ALTER ... REPLACE/MOVE PARTITION ... podiam causar deadlock. Isso foi corrigido. #13626 (tavplubix).
  • Corrigido o comportamento em que, às vezes, o dicionário de cache retornava o valor padrão em vez do valor presente na fonte. #13624 (Nikita Mikhaylov).
  • Corrigida a corrupção de índices secundários em partes compactas. Partes compactas são um recurso experimental. #13538 (Anton Popov).
  • Corrige timeouts prematuros de ON CLUSTER em consultas que precisam ser executadas em uma única réplica. Corrige #6704, #7228, #13361, #11884. #13450 (alesapin).
  • Corrige um erro no código da função netloc. Isso corrige #13335. #13446 (alexey-milovidov).
  • Corrigida possível condição de corrida em StorageMemory. #13416 (Nikolai Kochetov).
  • Corrige cabeçalhos ausentes ou em excesso nos formatos TSV/CSVWithNames no protocolo HTTP. Isso corrige #12504. #13343 (Azat Khuzhin).
  • Corrigido o parsing de políticas de linha do users.xml quando os nomes dos bancos de dados ou das tabelas contêm pontos. Isso corrige #5779, #12527. #13199 (Vitaly Baranov).
  • Corrigido o acesso ao dicionário redis após a queda da conexão. Isso pode acontecer com os layouts de dicionário cache e direct. #13082 (Anton Popov).
  • Removida a verificação incorreta de acesso por autenticação ao usar ClickHouseDictionarySource para consultar tabelas remotas. #12756 (sundyli).
  • Distingue corretamente subconsultas em alguns casos para a eliminação de subexpressões comuns. #8333. #8367 (Amos Bird).

Melhoria

  • Proíbe CODEC no tipo de coluna ALIAS. Corrige #13911. #14263 (Bharat Nallan).
  • Ao aguardar a conclusão de uma atualização de Dicionário, use o tempo limite especificado pela configuração query_wait_timeout_milliseconds em vez de um valor fixo no código. #14105 (Nikita Mikhaylov).
  • Adicionada a configuração min_index_granularity_bytes, que evita a criação acidental de uma tabela com a configuração index_granularity_bytes muito baixa. #14139 (Bharat Nallan).
  • Agora é possível buscar partições de clusters que usam ZooKeeper diferentes: ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'zk-name:/path-in-zookeeper'. Isso é útil para transferir dados para novos clusters. #14155 (Amos Bird).
  • Desempenho ligeiramente melhor da tabela Memory quando construída a partir de um grande número de blocos muito pequenos (o que é improvável). Autor da ideia: Mark Papadakis. Fecha #14043. #14056 (alexey-milovidov).
  • Funções de agregação condicionais (por exemplo: avgIf, sumIf, maxIf) devem retornar NULL quando não houver linhas e usar argumentos Nullable. #13964 (Winter Zhang).
  • Aumento do limite no combinador -Resample para 1M. #13947 (Mikhail f. Shiryaev).
  • Corrigido um erro no formato AvroConfluent que fazia o engine de tabela Kafka parar de processar mensagens ao receber uma mensagem malformada e anormalmente pequena. #13941 (Gervasio Varela).
  • Corrigido erro indevido em consultas longas. Era possível receber um erro de sintaxe diferente de Max query size exceeded para uma consulta correta. #13928 (Nikolai Kochetov).
  • Mensagem de erro mais clara para valor NULL no formato TabSeparated. #13906 (jiang tao).
  • A função arrayCompact comparará NaNs bit a bit se o tipo dos elementos do array for Float32/Float64. Nas versões anteriores, NaNs eram sempre diferentes se o tipo dos elementos do array fosse Float32/Float64 e sempre iguais se o tipo fosse mais complexo, como Nullable(Float64). Isso fecha #13857. #13868 (alexey-milovidov).
  • Corrigida uma condição de corrida de dados na função lgamma. Essa condição foi detectada apenas no tsan, e nenhum efeito colateral chegou a ocorrer. #13842 (Nikolai Kochetov).
  • Evite consultas muito lentas quando arrays forem manipulados como campos. Em vez disso, gere uma exceção. #13753 (alexey-milovidov).
  • Adicionado suporte à autorização requirepass do Redis (para a origem de dicionário Redis). #13688 (Ivan Torgashov).
  • Adicionada a ferramenta de dump do Write-Ahead Log (WAL) do MergeTree. O WAL é um recurso experimental. #13640 (BohuTANG).
  • Em versões anteriores, a função lcm podia provocar uma falha de asserção em compilação de depuração se fosse chamada com argumentos especificamente elaborados. Isso corrige #13368. #13510 (alexey-milovidov).
  • Passa a fornecer monotonicidade para as funções toDate/toDateTime em mais casos. As informações de monotonicidade são usadas na análise de índice (consultas mais complexas poderão usar o índice). Agora, a saturação dos argumentos de entrada é feita de forma mais natural e oferece melhor monotonicidade. #13497 (Amos Bird).
  • Suporte a identificadores compostos para configurações personalizadas. As configurações personalizadas são um ponto de integração entre a base de código do ClickHouse e outras bases de código (sem trazer benefícios para o próprio ClickHouse) #13496 (Vitaly Baranov).
  • Mover partes de DiskLocal para DiskS3 em paralelo. DiskS3 é um recurso experimental. #13459 (Pavel Kovalenko).
  • Habilitar, por padrão, partes com granularidade mista. #13449 (alesapin).
  • Verificação adequada do host remoto em redirecionamentos do S3 (questão relacionada à segurança). #13404 (Vladimir Chebotarev).
  • Adicionados QueryTimeMicroseconds, SelectQueryTimeMicroseconds e InsertQueryTimeMicroseconds ao system.events. #13336 (ianton-ru).
  • Corrige a asserção de depuração quando Decimal tem um expoente negativo excessivamente grande. Corrige #13188. #13228 (alexey-milovidov).
  • Adicionada uma camada de cache para o DiskS3 (cache no disco local para arquivos de marcas e de índices). DiskS3 é um recurso experimental. #13076 (Pavel Kovalenko).
  • Corrigido o readline para que agora grave o histórico em um arquivo. #13600 (Amos Bird).
  • Criar o banco de dados system com a engine Atomic por padrão (uma preparação para habilitar a engine de banco de dados Atomic por padrão em toda parte). #13680 (tavplubix).

Melhoria de desempenho

  • Otimiza levemente consultas muito curtas com LowCardinality. #14129 (Anton Popov).
  • Habilita INSERTs paralelos para os motores de tabela Null, Memory, Distributed e Buffer quando a configuração max_insert_threads estiver definida. #14120 (alexey-milovidov).
  • Falha imediatamente se o limite max_rows_to_read for excedido durante a varredura de partes. A motivação por trás dessa mudança é pular a varredura de intervalos para todas as partes selecionadas se estiver claro que max_rows_to_read já foi excedido. A mudança é bastante perceptível para consultas em um grande número de partes. #13677 (Roman Khavronenko).
  • Melhora levemente o desempenho da agregação por chaves UInt8/UInt16. #13099 (alexey-milovidov).
  • Otimiza as funções has(), indexOf() e countEqual() para Array(LowCardinality(T)) e argumentos constantes no lado direito. #12550 (myrrc).
  • Ao executar consultas triviais INSERT SELECT, define automaticamente max_threads como 1 ou max_insert_threads e define max_block_size como min_insert_block_size_rows. Relacionado a #5907. #12195 (flynn).

Funcionalidade experimental

  • O ClickHouse pode funcionar como réplica do MySQL — isso é implementado pelo engine de banco de dados MaterializeMySQL. Implementa #4006. #10851 (Winter Zhang).
  • Adicionados os tipos Int128, Int256, UInt256 e funções relacionadas. Decimals foi estendido com Decimal256 (precisão de até 76 dígitos). Os novos tipos estão disponíveis na configuração allow_experimental_bigint_types. Funciona de forma extremamente lenta e ruim. A implementação está incompleta. Por favor, não use este recurso. #13097 (Artem Zuikov).

Melhoria em compilação/testes/empacotamento

  • Adicionado o script clickhouse install, útil para quem tem apenas um binário. #13528 (alexey-milovidov).
  • Permite executar o binário clickhouse sem configuração. #13515 (alexey-milovidov).
  • Habilitar a verificação de erros de digitação no código com codespell. #13513 #13511 (alexey-milovidov).
  • Habilitado o Shellcheck no CI como linter para testes .sh. Isso fecha #13168. #13530 #13529 (alexey-milovidov).
  • Adicionar uma opção no CMake para fazer a configuração falhar em vez de reconfigurar automaticamente, habilitada por padrão. #13687 (Konstantin).
  • A versão do tzdata embutido passou a ser exposta via TZDATA_VERSION em system.build_options. #13648 (filimonov).
  • Aprimora a geração da tabela system.time_zones durante a compilação. Fecha #14209. #14215 (filimonov).
  • Compile o ClickHouse com a versão mais recente do tzdata do repositório de pacotes. #13623 (alexey-milovidov).
  • Adicionada a possibilidade de escrever comentários no estilo JavaScript em skip_list.json. #14159 (alesapin).
  • Garanta que não haja código GPL copiado. #13514 (alexey-milovidov).
  • Altera as imagens Docker de teste para usar test-base como imagem base. #14167 (Ilya Yatsishin).
  • Adição de lógica de nova tentativa ao iniciar o cluster com docker-compose; aumento de COMPOSE_HTTP_TIMEOUT. #14112 (vzakaznikov).
  • Ativado o system.text_log no teste de estresse para encontrar mais bugs. #13855 (Nikita Mikhaylov).
  • Módulo LDAP do Testflows: inclusão dos certificados ausentes e do dhparam.pem para o openldap4. #13780 (vzakaznikov).
  • O ZooKeeper não pode funcionar de forma confiável em testes unitários na infraestrutura de CI. Usar testes unitários para interagir com um ZooKeeper real já é uma má ideia desde o começo (testes unitários não devem verificar sistemas distribuídos complexos). Já usamos testes de integração para esse fim, e eles são mais adequados. #13745 (alexey-milovidov).
  • Adicionada uma imagem Docker para a verificação de estilo. Adicionada uma verificação de estilo para garantir que todos os arquivos do Docker e do Docker Compose estejam no diretório docker. #13724 (Ilya Yatsishin).
  • Corrigida a compilação do Cassandra no Mac OS. #13708 (Ilya Yatsishin).
  • Corrigido erro de linkedição em compilação compartilhada. #13700 (Amos Bird).
  • Atualização do conjunto de testes de autenticação de usuário LDAP para verificar se funciona com RBAC. #13656 (vzakaznikov).
  • Removida a opção -DENABLE_CURL_CLIENT de contrib/aws. #13628 (Vladimir Chebotarev).
  • Aumento dos timeouts de verificação de integridade dos nós do ClickHouse e adição de suporte para gerar um dump dos logs do docker-compose se forem encontrados contêineres não saudáveis. #13612 (vzakaznikov).
  • Garante que #10977 seja invalidado. #13539 (Amos Bird).
  • Ignorar PRs do robot-clickhouse. #13489 (Nikita Mikhaylov).
  • Mova os Dockerfiles dos testes de integração para o diretório docker/test. Os arquivos do docker_compose estão disponíveis no contêiner Docker runner. As imagens Docker são criadas na CI, e não nos testes de integração. #13448 (Ilya Yatsishin).

Lançamento do ClickHouse 20.7

Lançamento do ClickHouse v20.7.2.30-stable, 2020-08-31

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

  • A função modulo (operador %), quando recebe pelo menos um número de ponto flutuante como argumento, passa a calcular o resto da divisão diretamente sobre números de ponto flutuante, sem converter ambos os argumentos em inteiros. Isso torna o comportamento compatível com a maioria dos SGBDs. Isso também se aplica aos tipos de dados Date e DateTime. Foi adicionado o alias mod. Isso fecha #7323. #12585 (alexey-milovidov).
  • Descontinuada a exibição especial de valores zero de Date/DateTime como 0000-00-00 e 0000-00-00 00:00:00. #12442 (alexey-milovidov).
  • A função groupArrayMoving* não estava funcionando para consultas distribuídas. Seu resultado era calculado com um tipo de dados incorreto (sem promoção para o maior tipo). A função groupArrayMovingAvg estava retornando um número inteiro inconsistente com a função avg. Isso corrige #12568. #12622 (alexey-milovidov).
  • Adicionada uma verificação de sanidade para as configurações do MergeTree. Se as configurações estiverem incorretas, o servidor se recusará a iniciar ou a criar uma tabela, exibindo uma explicação detalhada ao usuário. #13153 (alexey-milovidov).
  • Proteção contra casos em que o usuário pode definir background_pool_size com um valor menor que number_of_free_entries_in_pool_to_execute_mutation ou number_of_free_entries_in_pool_to_lower_max_size_of_merge. Nesses casos, os ALTERs não funcionarão ou o tamanho máximo da mesclagem ficará excessivamente limitado. Será lançada uma exceção explicando o que fazer. Isso fecha #10897. #12728 (alexey-milovidov).
  • Ao atualizar a partir de versões anteriores à 20.5, se for feito um rolling update e o cluster contiver tanto versões 20.5 ou superiores quanto versões inferiores à 20.5, reiniciar nós do ClickHouse com versões antigas — quando essa versão antiga for iniciada na presença de versões mais novas — pode levar a erros Part ... intersects previous part. Para evitar esse erro, primeiro instale os pacotes mais novos do clickhouse-server em todos os nós do cluster e só depois faça as reinicializações (assim, quando o clickhouse-server for reiniciado, ele iniciará com a nova versão).

Novo recurso

  • Tipo de dicionário Polygon que fornece lookups eficientes de “geocodificação reversa”, para encontrar a região a partir de coordenadas em um dicionário com muitos polígonos (mapa-múndi). Ele usa um algoritmo cuidadosamente otimizado com grades recursivas para manter baixo o uso de CPU e memória. #9278 (achulkov2).
  • Adicionado suporte à autenticação LDAP para usuários pré-configurados (método “Simple Bind”). #11234 (Denis Glazachev).
  • Introduz a configuração alter_partition_verbose_result, que exibe informações sobre as partes afetadas para alguns tipos de consultas ALTER TABLE ... PARTITION ... (atualmente ATTACH e FREEZE). Fecha #8076. #13017 (alesapin).
  • Adiciona a função bayesAB para testes A/B bayesianos. #12327 (achimbab).
  • Adicionada a tabela system.crash_log, na qual stack traces de erros fatais são coletados. Essa tabela deve estar vazia. #12316 (alexey-milovidov).
  • Adicionados os headers HTTP X-ClickHouse-Database e X-ClickHouse-Format, que podem ser usados para definir o banco de dados padrão e o formato de saída. #12981 (hcz).
  • Adiciona suporte às funções minMap e maxMap em SimpleAggregateFunction. #12662 (Ildus Kurbangaliev).
  • Adiciona a configuração allow_non_metadata_alters, que restringe a execução de consultas ALTER que modificam dados em disco. Desabilitada por padrão. Fecha #11547. #12635 (alesapin).
  • A função formatRow foi adicionada para permitir converter expressões arbitrárias em uma string por meio de um formato especificado. Ela é útil para manipular saídas SQL e é bastante versátil quando combinada com a função columns. #12574 (Amos Bird).
  • Adiciona a função FROM_UNIXTIME para compatibilidade com MySQL, relacionada a 12149. #12484 (flynn).
  • Permite tipos Nullable como chaves em tabelas MergeTree se a configuração de tabela allow_nullable_key estiver habilitada. Fecha #5319. #12433 (Amos Bird).
  • Integração com COS. #12386 (fastio).
  • Adiciona as funções mapAdd e mapSubtract para somar/subtrair valores mapeados por chave. #11735 (Ildus Kurbangaliev).

Correção de bug

  • Corrige timeouts prematuros de ON CLUSTER para consultas que precisam ser executadas em apenas uma réplica. Corrige #6704, #7228, #13361, #11884. #13450 (alesapin).
  • Corrigida a falha na busca de inclusão de marca introduzida em #12277. #14225 (Amos Bird).
  • Corrigida uma condição de corrida em dicionários externos com layout de cache que podia levar à falha do servidor. #12566 (alesapin).
  • Corrige a sobrescrição visível de dados pela barra de progresso no cliente em modo interativo. Isso corrige #12562, #13369, #13584 e #12964. #13691 (alexey-milovidov).
  • Corrigida a ordem de classificação incorreta de colunas LowCardinality ao usar ORDER BY com múltiplas colunas. Isso corrige #13958. #14223 (Nikita Mikhaylov).
  • Removido o timeout fixo no código, que sobrescrevia incorretamente a configuração query_wait_timeout_milliseconds para o dicionário de cache. #14105 (Nikita Mikhaylov).
  • Corrigido o ponto de montagem incorreto nas informações extras para Poco::Exception: no space left on device. #14050 (tavplubix).
  • Corrige a otimização incorreta de consultas select com a palavra-chave DISTINCT quando as subconsultas também têm DISTINCT, se a configuração optimize_duplicate_order_by_and_distinct estiver habilitada. #13925 (Artem Zuikov).
  • Corrigido um possível deadlock ao renomear uma tabela Distributed. #13922 (tavplubix).
  • Corrige a ordenação incorreta de colunas FixedString quando ORDER BY com múltiplas colunas é usado. Corrige #13182. #13887 (Nikolai Kochetov).
  • Corrigida a possível perda de precisão das agregações topK/topKWeighted (com parâmetros não padrão). #13817 (Azat Khuzhin).
  • Corrigida a leitura a partir de tabela MergeTree com INDEX do tipo SET que falhava ao comparar com NULL. Isso corrige #13686. #13793 (Amos Bird).
  • Corrigido o overflow do passo na função range(). #13790 (Azat Khuzhin).
  • Corrigido o erro Directory not empty ao executar DROP DATABASE e CREATE TABLE de forma concorrente. #13756 (alexey-milovidov).
  • Adicionada verificação de intervalo para a função h3KRing. Isso corrige #13633. #13752 (alexey-milovidov).
  • Corrigida a condição de corrida entre DETACH e mesclagens em segundo plano. As partes podem reaparecer após o DETACH. Esta é uma continuação de #8602, que não corrigiu o problema, mas introduziu um teste que passou a falhar em casos muito raros, demonstrando o problema. #13746 (alexey-milovidov).
  • Corrigido o logging de Settings.Names/Values quando log_queries_min_type é maior que QUERY_START. #13737 (Azat Khuzhin).
  • Corrigida mensagem incorreta em clickhouse-server.init ao verificar o usuário e o grupo. #13711 (ylchou).
  • Não otimize any(arrayJoin()) para arrayJoin() sob optimize_move_functions_out_of_any. #13681 (Azat Khuzhin).
  • Corrigido um possível deadlock em consultas concorrentes ALTER ... REPLACE/MOVE PARTITION .... #13626 (tavplubix).
  • Corrigido o comportamento em que, às vezes, o dicionário de cache retornava o valor padrão em vez do valor presente na origem. #13624 (Nikita Mikhaylov).
  • Corrige a corrupção de índices secundários em partes compactas (partes compactas são um recurso experimental). #13538 (Anton Popov).
  • Corrige o código incorreto na função netloc. Isso corrige #13335. #13446 (alexey-milovidov).
  • Corrige um erro na função parseDateTimeBestEffort quando um Unix timestamp era passado como argumento. Isso corrige #13362. #13441 (alexey-milovidov).
  • Corrige o tipo de retorno inválido na comparação de tuplas com elementos NULL. Corrige #12461. #13420 (Nikolai Kochetov).
  • Corrige a otimização incorreta que causava o erro aggregate function any(x) is found inside another aggregate function in query ao usar SET optimize_move_functions_out_of_any = 1 e aliases dentro de any(). #13419 (Artem Zuikov).
  • Corrigida possível condição de corrida em StorageMemory. #13416 (Nikolai Kochetov).
  • Corrigida a saída vazia nos formatos Arrow e Parquet caso a consulta retorne zero linhas. Isso foi feito porque a saída vazia não é válida nesses formatos. #13399 (hcz).
  • Corrige consultas SELECT com colunas constantes e o prefixo da chave primária na cláusula ORDER BY. #13396 (Anton Popov).
  • Corrigido o PrettyCompactMonoBlock no clickhouse-local. Corrigidos extremes/totals com PrettyCompactMonoBlock. Corrige #7746. #13394 (Azat Khuzhin).
  • Corrigido o deadlock em system.text_log. #12452 (alexey-milovidov). Faz parte de #12339. Isso corrige #12325. #13386 (Nikita Mikhaylov).
  • Corrigido File(TSVWithNames*) (o cabeçalho era escrito várias vezes), corrigido clickhouse-local --format CSVWithNames* (sem cabeçalho, com falha após #12197), corrigido clickhouse-local --format CSVWithNames* com zero linhas (sem cabeçalho). #13343 (Azat Khuzhin).
  • Corrige segfault quando a função groupArrayMovingSum desserializa um state vazio. Corrige #13339. #13341 (alesapin).
  • Lança erro na função arrayJoin() na seção JOIN ON. #13330 (Artem Zuikov).
  • Corrigida falha em LEFT ASOF JOIN com join_use_nulls=1. #13291 (Artem Zuikov).
  • Corrige o possível erro Totals having transform was already added to pipeline no caso de uma consulta proveniente de uma réplica atrasada. #13290 (Nikolai Kochetov).
  • O servidor pode falhar se o usuário passar argumentos especialmente elaborados para a função h3ToChildren. Isso corrige #13275. #13277 (alexey-milovidov).
  • Corrige um desempenho potencialmente baixo e resultados ligeiramente incorretos em uniqExact, topK, sumDistinct e funções de agregação semelhantes, quando chamadas em tipos Float com valores NaN. Isso também acionava um assert em compilação de depuração. Isso corrige #12491. #13254 (alexey-milovidov).
  • Corrige a asserção em KeyCondition quando a chave primária contém uma expressão com função monotônica e a consulta contém uma comparação com uma constante de tipo diferente. Isso corrige #12465. #13251 (alexey-milovidov).
  • Retorna o número recebido para valores com o MSB ativado na função roundUpToPowerOfTwoOrZero(). Isso evita possíveis erros em caso de overflow nos tamanhos de arrays. #13234 (Azat Khuzhin).
  • Corrige a função if com constexpr Nullable como condição que não é NULL literal. Corrige #12463. #13226 (alexey-milovidov).
  • Corrige a asserção na função arrayElement no caso de os elementos do array serem Nullable e o índice do array também ser Nullable. Isso corrige #12172. #13224 (alexey-milovidov).
  • Corrigidas funções de conversão de DateTime64 com argumento constante. #13205 (Azat Khuzhin).
  • Corrige o processamento das políticas de linha de users.xml quando os nomes de bancos de dados ou tabelas contêm pontos. Isso corrige #5779, #12527. #13199 (Vitaly Baranov).
  • Corrige o acesso ao dicionário redis após a conexão cair uma vez. Isso pode acontecer com os layouts de dicionário cache e direct. #13082 (Anton Popov).
  • Corrige a análise incorreta de índices na presença de funções. Isso poderia fazer com que algumas partes de dados fossem ignoradas ao ler tabelas MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov).
  • Corrigido o erro Cannot convert column because it is constant but values of constants are different in source and result em consultas remotas que usam funções determinísticas no escopo da consulta, mas não determinísticas entre consultas, como now(), now64(), randConstant(). Corrige #11327. #13075 (Nikolai Kochetov).
  • Corrige uma falha que podia ocorrer em consultas com tupla no ORDER BY e LIMIT pequeno. Corrige #12623. #13009 (Nikolai Kochetov).
  • Corrige o erro Block structure mismatch em consultas com UNION e JOIN. Corrige #12602. #12989 (Nikolai Kochetov).
  • Corrigida a lógica de merge_with_ttl_timeout, que não funcionava bem quando a expiração afetava mais de uma partição durante um intervalo de tempo. (Por @excitoon). #12982 (Alexander Kazakov).
  • Corrige a duplicação de colunas em dicionário com hash por intervalo criado a partir de consulta DDL. Isso corrige #10605. #12857 (alesapin).
  • Corrigido o limite desnecessário para o número de threads em consultas SELECT da réplica local. #12840 (Nikolai Kochetov).
  • Corrige um bug raro quando as consultas ALTER DELETE e ALTER MODIFY COLUMN são executadas simultaneamente como uma única mutação. O bug faz com que a quantidade de linhas em count.txt fique incorreta e, como consequência, gera dados incorretos na parte. Também corrige um pequeno bug quando ALTER RENAME COLUMN e ALTER ADD COLUMN são executados simultaneamente. #12760 (alesapin).
  • Uso de credenciais incorretas com a fonte de dicionário clickhouse ao consultar tabelas remotas. #12756 (sundyli).
  • Corrigido CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin).
  • Corrige o desempenho com Tuples grandes, que são interpretados como funções na seção IN. É o caso em que o usuário escreve WHERE x IN tuple(1, 2, ...) em vez de WHERE x IN (1, 2, ...), por algum motivo obscuro. #12700 (Anton Popov).
  • Corrige o rastreamento de memória de input_format_parallel_parsing (associando a thread ao grupo). #12672 (Azat Khuzhin).
  • Corrigida a otimização incorreta optimize_move_functions_out_of_any=1 no caso de any(func(<lambda>)). #12664 (Artem Zuikov).
  • Corrigido #10572: índice de filtro de Bloom com expressão constante. #12659 (Winter Zhang).
  • Corrigido SIGSEGV no StorageKafka quando o broker está indisponível (e não só nesse caso). #12658 (Azat Khuzhin).
  • Adiciona suporte à função if com argumentos Array(UUID). Isso corrige #11066. #12648 (alexey-milovidov).
  • CREATE USER IF NOT EXISTS agora não lança exceção se o usuário já existir. Isso corrige #12507. #12646 (Vitaly Baranov).
  • A exceção There is no supertype... pode ser gerada durante ALTER ... UPDATE em casos inesperados (por exemplo, ao subtrair de uma coluna UInt64). Isso corrige #7306. Isso corrige #4165. #12633 (alexey-milovidov).
  • Corrige o possível erro Pipeline stuck em consultas com ordenação externa. Corrige #12617. #12618 (Nikolai Kochetov).
  • Corrigido o erro Output of TreeExecutor is not sorted para OPTIMIZE DEDUPLICATE. Corrige #11572. #12613 (Nikolai Kochetov).
  • Corrigido o problema em que o alias do resultado da função any podia se perder durante a otimização de consultas. #12593 (Anton Popov).
  • Remover dados de tabelas Distributed (blocos de INSERTs assíncronos) ao executar DROP TABLE. #12556 (Azat Khuzhin).
  • Agora o ClickHouse recalculará os checksums das partes quando o arquivo checksums.txt estiver ausente. Com falha desde #9827. #12545 (alesapin).
  • Corrige um bug que levava à corrupção de partes antigas após a consulta ALTER DELETE quando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Correção de uma condição de corrida nas tabelas de visualização em tempo real que poderia causar duplicação de dados. LIVE VIEW é um recurso experimental. #12519 (vzakaznikov).
  • Corrige a compatibilidade com versões anteriores no formato binário dos valores de AggregateFunction(avg, ...). Isso corrige #12342. #12486 (alexey-milovidov).
  • Corrige falha no JOIN com Dicionário quando o JOIN é feito sobre uma expressão da chave do dicionário: t JOIN dict ON expr(dict.id) = t.id. Desabilita a otimização de join de dicionário nesse caso. #12458 (Artem Zuikov).
  • Corrige overflow quando é especificado um LIMIT ou OFFSET muito grande. Isso corrige #10470. Isso corrige #11372. #12427 (alexey-milovidov).
  • kafka: corrige SIGSEGV caso haja uma mensagem com erro no meio do lote. #12302 (Azat Khuzhin).

Melhoria

  • Mantenha menos logs no ZooKeeper. Evite o crescimento excessivo dos nós do ZooKeeper em caso de réplicas offline quando houver muitos servidores/tabelas/inserções. #13100 (alexey-milovidov).
  • Agora, as exceções são encaminhadas ao cliente caso ocorra um erro durante ALTER ou uma mutação. Fecha #11329. #12666 (alesapin).
  • Adicione QueryTimeMicroseconds, SelectQueryTimeMicroseconds e InsertQueryTimeMicroseconds a system.events, bem como a system.metrics, processes, query_log etc. #13028 (ianton-ru).
  • Foram adicionados SelectedRows e SelectedBytes ao system.events, bem como a system.metrics, processes, query_log etc. #12638 (ianton-ru).
  • Adicionada a informação de current_database ao system.query_log. #12652 (Amos Bird).
  • Permite TabSeparatedRaw como formato de entrada. #12009 (hcz).
  • Agora, joinGet oferece suporte a consulta por múltiplas chaves. #12418 (Amos Bird).
  • Permite que as funções de agregação *Map funcionem com Arrays que contêm NULLs. Corrige #13157. #13225 (alexey-milovidov).
  • Evite overflow no parsing de valores DateTime que resultem em um timestamp Unix negativo no respectivo timezone (por exemplo, 1970-01-01 00:00:00 em Moscow). Em vez disso, sature em zero. Isso corrige #3470. Isso corrige #4172. #12443 (alexey-milovidov).
  • AvroConfluent: Ignorar registros tombstone do Kafka - suporte para ignorar registros corrompidos #13203 (Andrew Onyshchuk).
  • Corrige erro incorreto para consultas longas. Era possível receber um erro de sintaxe diferente de Max query size exceeded para uma consulta correta. #13928 (Nikolai Kochetov).
  • Corrigida uma condição de corrida de dados na função lgamma. Esse problema foi detectado apenas no tsan, e nenhum efeito colateral de fato ocorreu. #13842 (Nikolai Kochetov).
  • Corrige a formatação do intervalo ‘Week’ nas instruções ATTACH/ALTER/CREATE QUOTA. #13417 (vladimir-golovchenko).
  • Agora, partes corrompidas também são relatadas quando encontradas durante o processamento de partes compactas. Partes compactas são um recurso experimental. #13282 (Amos Bird).
  • Corrigido o assert em geohashesInBox. Isso corrige #12554. #13229 (alexey-milovidov).
  • Corrige o assert em parseDateTimeBestEffort. Isso corrige #12649. #13227 (alexey-milovidov).
  • Pequena otimização em Processors/PipelineExecutor: interromper um loop quando faz sentido. #13058 (Mark Papadakis).
  • Suporte ao TRUNCATE de tabela sem a palavra-chave TABLE. #12653 (Winter Zhang).
  • Corrige a sobrescrita padrão do formato da consulta EXPLAIN. Isso corrige #12541. #12541 (BohuTANG).
  • Permite definir o kind e o tipo do JOIN de uma forma mais padronizada: LEFT SEMI JOIN em vez de SEMI LEFT JOIN. Por enquanto, ambos estão corretos. #12520 (Artem Zuikov).
  • Altera o valor padrão de multiple_joins_rewriter_version para 2. Isso habilita o novo reescritor de múltiplas junções, que leva em conta os nomes das colunas. #12469 (Artem Zuikov).
  • Adicionadas várias métricas para requisições a armazenamentos baseados em S3. #12464 (ianton-ru).
  • Usa a porta segura padrão correta para o clickhouse-benchmark com o argumento --secure. Isso corrige #11044. #12440 (alexey-milovidov).
  • Reversão de erros de inserção nos motores Log, TinyLog, StripeLog. Em versões anteriores, um erro de inserção levava a um estado inconsistente da tabela (isso está de acordo com a documentação e é normal para esses motores de tabela). Isso corrige #12402. #12426 (alexey-milovidov).
  • Implementa RENAME DATABASE e RENAME DICTIONARY no engine de banco de dados Atomic - Adiciona a macro implícita {uuid}, que pode ser usada no caminho do ZooKeeper para ReplicatedMergeTree. Funciona com consultas CREATE ... ON CLUSTER .... Defina show_table_uuid_in_table_create_query_if_not_nil como true para usá-la. - Torna opcionais os argumentos do engine ReplicatedMergeTree; /clickhouse/tables/{uuid}/{shard}/ e {replica} são usados por padrão. Fecha #12135. - Correções menores. - Essas alterações quebram a retrocompatibilidade do engine de banco de dados Atomic. Bancos de dados Atomic criados anteriormente devem ser convertidos manualmente para o novo formato. O banco de dados Atomic é um recurso experimental. #12343 (tavplubix).
  • Separado AWSAuthV4Signer em um logger separado, removido o excesso de AWSClient: AWSClient das mensagens de log. #12320 (Vladimir Chebotarev).
  • Mensagem de exceção aprimorada no armazenamento de acesso em disco. #12625 (alesapin).
  • Melhoria na exceção da função in quando há um número inválido de argumentos. #12529 (Anton Popov).
  • Corrigida a mensagem de erro sobre granularidade adaptativa. #12624 (alesapin).
  • Corrige o parsing de SETTINGS após FORMAT. #12480 (Azat Khuzhin).
  • Se a tabela MergeTree não contivesse ORDER BY nem PARTITION BY, era possível executar ALTER para CLEAR de todas as colunas, e o ALTER ficava travado. Corrigido em #7941. #12382 (alexey-milovidov).
  • Evite recarregar o autocompletar a partir do arquivo de histórico após cada consulta (para evitar sobreposição no histórico com outras sessões de cliente). #13086 (Azat Khuzhin).

Melhoria de desempenho

  • Reduz o uso de memória em algumas operações em até 2 vezes. #12424 (alexey-milovidov).
  • Otimiza a busca pela PK para consultas que correspondem a uma faixa exata da PK. #12277 (Ivan Babrou).
  • Otimiza levemente consultas muito curtas com LowCardinality. #14129 (Anton Popov).
  • Melhora levemente o desempenho da agregação por chaves UInt8/UInt16. #13091 e #13055 (alexey-milovidov).
  • Aplica pushdown da etapa LIMIT ao plano de consulta (dentro de subconsultas). #13016 (Nikolai Kochetov).
  • Busca paralela por chave primária e etapas de índice de skipping nas partes, conforme descrito em #11564. #12589 (Ivan Babrou).
  • Converte argumentos do tipo String das funções “if” e “transform” em enum se set optimize_if_transform_strings_to_enum = 1. #12515 (Artem Zuikov).
  • Substitui funções monotônicas por seus argumentos em ORDER BY se set optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov).
  • Adiciona uma otimização de ORDER BY que reescreve ORDER BY x, f(x) para ORDER by x se set optimize_redundant_functions_in_order_by = 1. #12404 (Artem Zuikov).
  • Permite pushdown de predicado quando a subconsulta contém a cláusula WITH. Isso corrige #12293 #12663 (Winter Zhang).
  • Melhora o desempenho da leitura de partes compactas. Partes compactas são um recurso experimental. #12492 (Anton Popov).
  • Tenta implementar otimização de streaming em DiskS3. DiskS3 é um recurso experimental. #12434 (Vladimir Chebotarev).

Melhoria em compilação/testes/empacotamento

  • Use shellcheck para o lint dos testes em sh. #13200 #13207 (alexey-milovidov).
  • Adicionado script que define rótulos para pull requests no hook do GitHub. #13183 (alesapin).
  • Removidos alguns dos submódulos recursivos. Veja #13378. #13379 (alexey-milovidov).
  • Garanta que todos os submódulos usem URLs corretas. Continuação de #13379. Isso corrige #13378. #13397 (alexey-milovidov).
  • Adicionado suporte a configurações definidas pelo usuário, que podem ser acessadas de dentro das consultas. Isso é necessário quando o mecanismo do ClickHouse é usado como componente de outro sistema. #13013 (Vitaly Baranov).
  • Adicionados testes para a funcionalidade de RBAC do privilégio INSERT no TestFlows. Ampliadas as tabelas em que o SELECT é testado. Adicionados Requirements para corresponder aos novos testes de mecanismo de tabela. #13340 (MyroTk).
  • Corrigido erro de timeout durante a reinicialização do servidor no teste de estresse. #13321 (alesapin).
  • Agora, o fast test aguardará o servidor com novas tentativas. #13284 (alesapin).
  • A função materialize() (a função para testes do ClickHouse) funcionará com NULL como esperado, transformando-o em uma coluna não constante. #13212 (alexey-milovidov).
  • Corrige a compilação do libunwind no AArch64. Isso corrige #13204. #13208 (alexey-milovidov).
  • Ainda mais tentativas no gtest do zkutil para evitar a intermitência dos testes. #13165 (alexey-milovidov).
  • Pequenas correções nos TestFlows de RBAC. #13152 (vzakaznikov).
  • Correção no teste 00960_live_view_watch_events_live.py. #13108 (vzakaznikov).
  • Melhoria na limpeza do cache no script de implantação da documentação. #13107 (alesapin).
  • Reescreveu alguns testes órfãos em gtest. Removeu includes desnecessários dos testes. #13073 (Nikita Mikhaylov).
  • Adicionados testes para a funcionalidade de RBAC relacionada ao privilégio SELECT no TestFlows. #13061 (Ritaank Tiwari).
  • Executar novamente alguns testes na verificação Fast test. #12992 (alesapin).
  • Correção de erro do MSan na biblioteca “rdkafka”. Isso fecha #12990. rdkafka foi atualizado para a versão 1.5 (master). #12991 (alexey-milovidov).
  • Corrige o relatório do UBSan em base64 se os testes tiverem sido executados em um servidor com AVX-512. Isso corrige #12318. Autor: @qoega. #12441 (alexey-milovidov).
  • Corrige o erro apontado pelo UBSan na biblioteca HDFS. Isso encerra #12330. #12453 (alexey-milovidov).
  • Verifica a possibilidade de restaurar um backup de uma versão antiga para uma versão nova. Isso encerra #8979. #12959 (alesapin).
  • Não crie a imagem helper_container durante os testes de integração. Crie o contêiner Docker na CI e use o helper_container pré-criado nos testes de integração. #12953 (Ilya Yatsishin).
  • Adicionado um teste para a consulta ALTER TABLE CLEAR COLUMN em colunas de chave primária. #12951 (alesapin).
  • Aumento dos timeouts nos testes do testflows. #12949 (vzakaznikov).
  • Corrige a compilação de teste no Mac OS X. Fecha #12767. #12772 (alexey-milovidov).
  • Connector-ODBC atualizado para mysql-connector-odbc-8.0.21. #12739 (Ilya Yatsishin).
  • Adicionados testes de sintaxe de RBAC no TestFlows. #12642 (vzakaznikov).
  • Melhora no desempenho do TestKeeper. Isso acelerará os testes com uso intenso de tabelas replicadas. #12505 (alexey-milovidov).
  • Agora verificamos se o servidor consegue iniciar após a execução dos testes de estresse. Isso corrige #12473. #12496 (alesapin).
  • Atualizada a fmtlib para master (7.0.1). #12446 (alexey-milovidov).
  • Adicionar imagem Docker para testes rápidos. #12294 (alesapin).
  • Refatoração dos caminhos de configuração para os testes de integração. #12285 (Ilya Yatsishin).
  • Adicionada uma opção do compilador para controlar o tamanho dos frames da pilha, evitando que fiquem grandes demais. Isso ajudará a executar o código em fibras com tamanho de pilha pequeno. #11524 (alexey-milovidov).
  • Atualização dos arquivos .gitignore. #13447 (vladimir-golovchenko).

Lançamento do ClickHouse 20.6

Lançamento do ClickHouse v20.6.3.28-stable

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

  • Ao atualizar de versões anteriores à 20.5, se for realizado um rolling update e o cluster contiver tanto versões 20.5 ou superiores quanto versões inferiores à 20.5, reiniciar nós do ClickHouse com versões antigas — fazendo com que a versão antiga seja iniciada na presença de versões mais novas — pode levar a erros Part ... intersects previous part. Para evitar esse erro, primeiro instale os pacotes mais novos do clickhouse-server em todos os nós do cluster e só depois reinicie-os (assim, quando o clickhouse-server for reiniciado, ele iniciará com a nova versão).

Novo recurso

  • Adicionada uma implementação inicial da consulta EXPLAIN. Sintaxe: EXPLAIN SELECT .... Isso corrige #1118. #11873 (Nikolai Kochetov).
  • Adicionado o armazenamento RabbitMQ. #11069 (Kseniia Sumarokova).
  • Implementado o operador ILIKE, no estilo do PostgreSQL, para #11710. #12125 (Mike).
  • Adicionado suporte a RIGHT e FULL JOIN com SET join_algorithm = 'partial_merge'. Somente a strictness ALL é permitida (ANY, SEMI, ANTI e ASOF não são). #12118 (Artem Zuikov).
  • Adicionada a função initializeAggregation para inicializar uma agregação com base em um único valor. #12109 (Guillaume Tassery).
  • Adicionado suporte a ALTER TABLE ... [ADD|MODIFY] COLUMN ... FIRST #4006. #12073 (Winter Zhang).
  • Adicionada a função parseDateTimeBestEffortUS. #12028 (flynn).
  • Adicionado suporte ao formato ORC para saída (antes havia suporte apenas para entrada). #11662 (Kruglov Pavel).

Correção de bug

  • Corrigido o erro aggregate function any(x) is found inside another aggregate function in query ao usar SET optimize_move_functions_out_of_any = 1 e aliases dentro de any(). #13419 (Artem Zuikov).
  • Corrigido o PrettyCompactMonoBlock no clickhouse-local. Corrigidos extremes/totals com PrettyCompactMonoBlock. Isso corrige #7746. #13394 (Azat Khuzhin).
  • Corrigido um possível erro Totals having transform was already added to pipeline no caso de uma consulta proveniente de uma réplica atrasada. #13290 (Nikolai Kochetov).
  • O servidor pode travar se o usuário passar argumentos especialmente elaborados para a função h3ToChildren. Isso corrige #13275. #13277 (alexey-milovidov).
  • Corrigido um possível baixo desempenho e resultados ligeiramente incorretos para uniqExact, topK, sumDistinct e funções agregadas semelhantes chamadas em tipos Float com valores NaN. Isso também acionava uma asserção em compilação de depuração. Isso corrige #12491. #13254 (alexey-milovidov).
  • Corrigida a função if com constexpr Nullable como condição, quando não é NULL literal. Corrige #12463. #13226 (alexey-milovidov).
  • Corrigido o assert na função arrayElement no caso de os elementos do array serem Nullable e o índice do array também ser Nullable. Isso corrige #12172. #13224 (alexey-milovidov).
  • Corrigidas as funções de conversão de DateTime64 com argumento constante. #13205 (Azat Khuzhin).
  • Corrigida a análise incorreta de índice com funções. Isso podia levar ao descarte de partes erradas ao ler tabelas MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov).
  • Corrigido o erro Cannot convert column because it is constant but values of constants are different in source and result em consultas remotas que usam funções determinísticas no escopo da consulta, mas não determinísticas entre consultas, como now(), now64(), randConstant(). Corrige #11327. #13075 (Nikolai Kochetov).
  • Corrigida a limitação desnecessária do número de threads para SELECTs da réplica local. #12840 (Nikolai Kochetov).
  • Corrigido um bug raro quando as consultas ALTER DELETE e ALTER MODIFY COLUMN eram executadas simultaneamente como uma única mutação. O bug fazia com que a quantidade de linhas em count.txt ficasse incorreta e, como consequência, gerasse dados incorretos na part. Além disso, foi corrigido um pequeno bug envolvendo a execução simultânea de ALTER RENAME COLUMN e ALTER ADD COLUMN. #12760 (alesapin).
  • Corrigido CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin).
  • Corrigido um problema de desempenho com tuplas grandes, que são interpretadas como funções na cláusula IN. Isso ocorre no caso em que o usuário escreve WHERE x IN tuple(1, 2, ...) em vez de WHERE x IN (1, 2, ...) por algum motivo obscuro. #12700 (Anton Popov).
  • Corrigido o rastreamento de memória para input_format_parallel_parsing (associando a thread ao grupo). #12672 (Azat Khuzhin).
  • Corrigido o índice de filtro de Bloom com expressão constante. Isso corrige #10572. #12659 (Winter Zhang).
  • Corrigido SIGSEGV em StorageKafka quando o broker está indisponível (e não só nesse caso). #12658 (Azat Khuzhin).
  • Adicionado suporte à função if com argumentos Array(UUID). Isso corrige #11066. #12648 (alexey-milovidov).
  • CREATE USER IF NOT EXISTS agora não lança exceção se o usuário já existir. Isso corrige #12507. #12646 (Vitaly Baranov).
  • Melhor mensagem de exceção no armazenamento de acesso ao disco. #12625 (alesapin).
  • A função groupArrayMoving* não estava funcionando em consultas distribuídas. Seu resultado estava sendo calculado com o tipo de dado incorreto (sem promoção para o maior tipo). A função groupArrayMovingAvg estava retornando um número inteiro, o que era inconsistente com a função avg. Isso corrige #12568. #12622 (alexey-milovidov).
  • Corrigida a ausência de aliases na função any. #12593 (Anton Popov).
  • Corrigida uma condição de corrida em dicionários externos com layout cache que pode causar a queda do servidor. #12566 (alesapin).
  • Remover os dados das tabelas distribuídas (blocos de INSERTs assíncronos) ao executar DROP TABLE. #12556 (Azat Khuzhin).
  • Corrigido um bug que deixava partes antigas corrompidas após a consulta ALTER DELETE quando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Exceção aprimorada para a função in com número inválido de argumentos. #12529 (Anton Popov).
  • Correção de uma condição de corrida em tabelas de visualização em tempo real que podia causar duplicação de dados. #12519 (vzakaznikov).
  • Corrigido um problema de desempenho na leitura de partes compactas. #12492 (Anton Popov).
  • Corrigida a compatibilidade retroativa no formato binário dos valores de AggregateFunction(avg, ...). Isso corrige #12342. #12486 (alexey-milovidov).
  • Corrigido o parse de SETTINGS após FORMAT. #12480 (Azat Khuzhin).
  • Corrigido o deadlock quando text_log está habilitado. #12452 (alexey-milovidov).
  • Corrigido o overflow ao especificar um LIMIT ou OFFSET muito grande. Isso corrige #10470. Isso corrige #11372. #12427 (alexey-milovidov).
  • Corrigido um possível segfault em StorageMerge. Isso corrige #12054. #12401 (tavplubix).
  • Revertida a mudança introduzida em #11079 para resolver #12098. #12397 (Mike).
  • Verificação adicional dos argumentos do índice com filtro de Bloom. Isso corrige #11408. #12388 (alexey-milovidov).
  • Evita exceção quando uma constante negativa ou de ponto flutuante é usada na condição WHERE em tabelas indexadas. Isso corrige #11905. #12384 (alexey-milovidov).
  • É permitido usar CLEAR na coluna mesmo que existam expressões DEFAULT dependentes. Isso corrige #12333. #12378 (alexey-milovidov).
  • Corrige TOTALS/ROLLUP/CUBE em funções de agregação com argumentos -State e Nullable. Isso corrige #12163. #12376 (alexey-milovidov).
  • Corrigidas a mensagem de erro e os códigos de saída para consultas ALTER RENAME COLUMN, quando RENAME não é permitido. Corrige #12301 e #12303. #12335 (alesapin).
  • Foi corrigida uma condição de corrida muito rara em ReplicatedMergeTreeQueue. #12315 (alexey-milovidov).
  • Ao usar o codec Delta ou DoubleDelta com tipos de largura variável, era retornada uma exceção com o código LOGICAL_ERROR em vez de uma exceção com o código BAD_ARGUMENTS (garantimos que exceções com o código logical error nunca ocorram). Isso corrige #12110. #12308 (alexey-milovidov).
  • Corrigida a ordem das colunas no modificador WITH FILL. Antes, a ordem das colunas da cláusula ORDER BY não era respeitada. #12306 (Anton Popov).
  • Evita a exceção de “bad cast” quando há uma expressão que filtra dados por colunas virtuais (como _table em tabelas Merge) ou por colunas de “índice” em tabelas de sistema, como ao filtrar por nome do banco de dados ao consultar system.tables, e essa expressão retorna o tipo Nullable. Isso corrige #12166. #12305 (alexey-milovidov).
  • Corrigido o TTL após a renomeação da coluna da qual depende a expressão TTL. #12304 (Anton Popov).
  • Corrigido SIGSEGV quando há uma mensagem com erro no meio do lote no engine Kafka. #12302 (Azat Khuzhin).
  • Corrigida a situação em que algumas threads podiam ficar travadas aleatoriamente por alguns segundos durante a atualização do cache de DNS. #12296 (tavplubix).
  • Corrigido um erro de digitação no nome da configuração. #12292 (alexey-milovidov).
  • Exibir erro após falha no carregamento de TrieDictionary. #12290 (Vitaly Baranov).
  • A função arrayFill funcionava incorretamente com arrays vazios, o que podia causar um travamento. Isso corrige #12263. #12279 (alexey-milovidov).
  • Implementa conversões para o tipo comum nos tipos LowCardinality. Isso permite executar UNION ALL de tabelas com colunas LowCardinality e outras colunas. Isso corrige #8212. Isso corrige #4342. #12275 (alexey-milovidov).
  • Corrigido o comportamento ao atingir o limite de redirecionamentos em uma solicitação ao armazenamento S3. #12256 (ianton-ru).
  • Corrigido o comportamento em que, durante várias inserções sequenciais em StorageFile, o cabeçalho de alguns tipos especiais era gravado mais de uma vez. Isso corrigiu #6155. #12197 (Nikita Mikhaylov).
  • Corrigidas as funções lógicas para valores UInt8 quando estes não são iguais a 0 nem a 1. #12196 (Alexander Kazakov).
  • Limita max_memory_usage* à memória residente do processo. #12182 (Azat Khuzhin).
  • Correção da verificação dos argumentos de dictGet durante a eliminação de funções injetivas no GROUP BY. #12179 (Azat Khuzhin).
  • Corrigido o comportamento quando o engine SummingMergeTree soma colunas da chave de partição. Adicionada uma exceção no caso de definição explícita das colunas a serem somadas que entra em conflito com as colunas da chave de partição. Isso corrige #7867. #12173 (Nikita Mikhaylov).
  • Não separe o nome da tabela da fonte do dicionário em schema e nome da tabela se a conexão ODBC não oferecer suporte a schema. #12165 (Vitaly Baranov).
  • Corrigida a lógica incorreta em ALTER DELETE que levava à exclusão de registros quando a condição era avaliada como NULL. Isso corrige #9088. Isso encerra #12106. #12153 (alexey-milovidov).
  • Corrigida a transformação da consulta a ser enviada a um SGBD externo (por exemplo, MySQL, ODBC) na presença de aliases. Isso corrige #12032. #12151 (alexey-milovidov).
  • Corrigido código com erro na otimização redundante de ORDER BY. O bug foi introduzido em #10067. #12148 (alexey-milovidov).
  • Corrigido um possível overflow na divisão de inteiros. Isso corrige #12119. #12140 (alexey-milovidov).
  • Corrigido um possível loop infinito em greatCircleDistance e geoDistance. Isso corrige #12117. #12137 (alexey-milovidov).
  • Padroniza o tratamento do arquivo “pid”. Em versões anteriores, o servidor podia se recusar a iniciar se tivesse sido interrompido sem um desligamento adequado e houvesse outro processo com o mesmo pid do servidor executado anteriormente. Além disso, o arquivo pid podia ser removido em uma tentativa malsucedida de inicialização do servidor, mesmo que houvesse outro servidor em execução. Isso corrige #3501. #12133 (alexey-milovidov).
  • Corrigido um bug que fazia com que os metadados da tabela ficassem incorretos no ZooKeepeer para tabelas ReplicatedVersionedCollapsingMergeTree. Corrige #12093. #12121 (alesapin).
  • Evita a exceção “There is no query” em visões materializadas com junções ou com subconsultas vinculadas a logs do sistema (system.query_log, metric_log, etc) ou à tabela subjacente de engine=Buffer. #12120 (filimonov).
  • Corrigido o tratamento da dependência entre a tabela com ENGINE=Dictionary e o dicionário. Isso corrige #10994. Isso corrige #10397. #12116 (Vitaly Baranov).
  • O formato Parquet agora funciona corretamente com os tipos LowCardinality e LowCardinality(Nullable). Corrigidos #12086 e #8406. #12108 (Nikolai Kochetov).
  • Corrigido o problema de desempenho em consultas com UNION causado por um limite incorreto para o número total de threads. Corrige #12030. #12103 (Nikolai Kochetov).
  • Corrigido o segfault nos combinadores -StateResample. #12092 (Anton Popov).
  • Corrigidas as métricas result_rows e result_bytes, que estavam vazias, em system.quey_log para consultas SELECT. Corrige #11595. #12089 (Nikolai Kochetov).
  • Corrigida a limitação desnecessária do número de threads para consultas a partir de VIEW. Corrige #11937. #12085 (Nikolai Kochetov).
  • Corrigido SIGSEGV no StorageKafka ao executar DROP TABLE. #12075 (Azat Khuzhin).
  • Corrigido um possível travamento ao usar um tipo incorreto para PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov).
  • Corrigido o erro Cannot capture column em funções de ordem superior com argumento Tuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov).
  • Corrigida a verificação de restrições para checar se a restrição é uma expressão constante. Isso corrige #11360. #12042 (alexey-milovidov).
  • Corrigidos um resultado incorreto e uma possível falha ao invocar a função if com argumentos do tipo FixedString de tamanhos diferentes. Isso corrige #11362. #12021 (alexey-milovidov).

Melhoria

  • Agora é permitido definir o JOIN kind e type de forma mais padrão: LEFT SEMI JOIN em vez de SEMI LEFT JOIN. Por enquanto, ambos estão corretos. #12520 (Artem Zuikov).
  • lifetime_rows/lifetime_bytes para o engine Buffer. #12421 (Azat Khuzhin).
  • Passa a escrever a mensagem detalhada da exceção para o cliente em vez de ‘MySQL server has gone away’. #12383 (BohuTANG).
  • Permite alterar o conjunto de caracteres usado para imprimir as bordas da grade. Os conjuntos de caracteres disponíveis são: UTF-8, ASCII. A configuração output_format_pretty_grid_charset habilita esse recurso. #12372 (Sabyanin Maxim).
  • Adicionado suporte ao MySQL ‘SELECT DATABASE()’ #9336 2. Adicionado teste de integração para consulta de substituição do MySQL. #12314 (BohuTANG).
  • Adicionado KILL QUERY [connection_id] para o cliente/driver MySQL cancelar consultas longas, issue #12038. #12152 (BohuTANG).
  • Adicionado suporte a substituições %g (ano ISO com dois dígitos) e %G (ano ISO com quatro dígitos) na função formatDateTime. #12136 (vivarum).
  • Adicionada a coluna ‘type’ em system.disks. #12115 (ianton-ru).
  • Comando REVOKE aprimorado: agora ele exige a opção grant/admin apenas para o acesso que será revogado. Por exemplo, para executar REVOKE ALL ON *.* FROM user1, agora não é necessário ter todos os direitos de acesso concedidos com a opção grant. Adicionado o comando REVOKE ALL FROM user1 - ele revoga todos os roles concedidos a user1. #12083 (Vitaly Baranov).
  • Adicionada prioridade de réplica para load_balancing (para priorização manual do balanceamento de carga). #11995 (Azat Khuzhin).
  • Os caminhos nos metadados do S3 foram alterados para relativos, o que permite lidar com blobs do S3 com mais facilidade. #11892 (Vladimir Chebotarev).

Melhoria de desempenho

  • Melhoria no desempenho de ‘ORDER BY’ e ‘GROUP BY’ com prefixo da chave de ordenação (ativado com a configuração optimize_aggregation_in_order, desativado por padrão). #11696 (Anton Popov).
  • Funções injetivas dentro de uniq*() foram removidas se set optimize_injective_functions_inside_uniq=1. #12337 (Ruslan Kamalov).
  • O índice não era usado para o operador IN com literais, uma regressão de desempenho introduzida por volta da v19.3. Isso corrige #10574. #12062 (nvartolomei).
  • Implementados uploads de parte única para o DiskS3 (recurso experimental). #12026 (Vladimir Chebotarev).

Funcionalidade experimental

  • Adicionado um novo formato em memória para partes em tabelas da família MergeTree, que mantém os dados na memória. As partes são gravadas em disco na primeira mesclagem. Uma parte será criada no formato em memória se o número de linhas ou o tamanho em bytes ficar abaixo dos limites min_rows_for_compact_part e min_bytes_for_compact_part. Também há suporte opcional a Write-Ahead Log, que vem ativado por padrão e é controlado pela configuração in_memory_parts_enable_wal. #10697 (Anton Popov).

melhoria em compilação/testes/empacotamento

  • Implementa o modo de fuzzing de consultas baseado em AST para o clickhouse-client. Veja este label para a lista de issues que encontramos recentemente com fuzzing. A maioria delas foi encontrada por esta ferramenta, e algumas pelo SQLancer e por 00746_sql_fuzzy.pl. #12111 (Alexander Kuzmenkov).
  • Adiciona um novo tipo de testes baseado no framework Testflows. #12090 (vzakaznikov).
  • Adiciona teste de integração HTTPS para S3. #12412 (Pavel Kovalenko).
  • Registra mensagens de trap do sanitizer em uma thread separada. Isso evitará um possível deadlock ao usar o sanitizador de thread. #12313 (alexey-milovidov).
  • Agora os testes funcionais e de estresse poderão ser executados com a versão antiga do script clickhouse-test. #12287 (alesapin).
  • Remove a estranha criação de arquivo durante a compilação em orc. #12258 (Nikita Mikhaylov).
  • Coloca arquivos comuns do Docker Compose no contêiner Docker de integração. #12168 (Ilya Yatsishin).
  • Corrige avisos do CodeQL. CodeQL é outro analisador estático que usaremos junto com clang-tidy e PVS-Studio, que já usamos. #12138 (alexey-milovidov).
  • Pequenas correções no CMake para a compilação UNBUNDLED. #12131 (Matwey V. Kornilov).
  • Adiciona uma demonstração da imagem Docker mínima sem usar nenhuma distribuição Linux. #12126 (alexey-milovidov).
  • Atualiza os pacotes do sistema na imagem Docker clickhouse-server. #12124 (Ivan Blinkov).
  • Adiciona a flag UNBUNDLED à tabela system.build_options. Move as listas de exclusão do clickhouse-test para o repositório do ClickHouse. #12107 (alesapin).
  • Verificação regular com a ferramenta de análise de segurança Anchore Container Analysis, que procura por CVE na imagem Docker clickhouse-server. Também confirma que o Dockerfile pode ser compilado. É executada diariamente na master e em pull requests para o Dockerfile. #12102 (Ivan Blinkov).
  • Verificação diária com a ferramenta de análise de segurança GitHub CodeQL, que procura por CWE. #12101 (Ivan Blinkov).
  • Instala ca-certificates antes do primeiro apt-get update no Dockerfile. #12095 (Ivan Blinkov).

Lançamento do ClickHouse 20.5

Lançamento do ClickHouse v20.5.4.40-stable 2020-08-10

Correção de bug

  • Corrigida a análise incorreta de índices com funções. Isso podia levar ao descarte incorreto de partes durante a leitura de tabelas MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov).
  • Removida a limitação desnecessária do número de threads para consultas na réplica local. #12840 (Nikolai Kochetov).
  • Corrigido o desempenho com tuplas grandes, que são interpretadas como funções na seção IN, no caso em que o usuário escreve WHERE x IN tuple(1, 2, ...) em vez de WHERE x IN (1, 2, ...) por algum motivo obscuro. #12700 (Anton Popov).
  • Corrigido o rastreamento de memória de input_format_parallel_parsing (ao anexar a thread ao grupo). #12672 (Azat Khuzhin).
  • Corrigido o índice de filtro de Bloom com expressão constante. Isso corrige #10572. #12659 (Winter Zhang).
  • Corrigido SIGSEGV em StorageKafka quando o broker fica indisponível (e não apenas nessa situação). #12658 (Azat Khuzhin).
  • Adicionado suporte à função if com argumentos do tipo Array(UUID). Isso corrige #11066. #12648 (alexey-milovidov).
  • Corrigida a ausência de aliases na função any. #12593 (Anton Popov).
  • Corrigida uma condição de corrida em dicionários externos com layout de cache, que pode levar à queda do servidor. #12566 (alesapin).
  • Remover dados de tabelas distribuídas (blocos de INSERTs assíncronos) em DROP TABLE. #12556 (Azat Khuzhin).
  • Corrigido um bug que levava à corrupção de partes antigas após a consulta ALTER DELETE quando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Exceção mais clara para a função in com número inválido de argumentos. #12529 (Anton Popov).
  • Corrigida a condição de corrida em tabelas de visualização em tempo real, que poderia causar duplicação de dados. #12519 (vzakaznikov).
  • Corrigido um problema de desempenho ao ler partes compactas. #12492 (Anton Popov).
  • Corrigida a compatibilidade com versões anteriores no formato binário dos valores de AggregateFunction(avg, ...). Isso corrige #12342. #12486 (alexey-milovidov).
  • Corrigido o deadlock quando text_log está habilitado. #12452 (alexey-milovidov).
  • Corrigido overflow ao especificar um LIMIT ou OFFSET muito grande. Isso corrige #10470. Isso corrige #11372. #12427 (alexey-milovidov).
  • Corrigido possível segfault no StorageMerge. Fecha #12054. #12401 (tavplubix).
  • Reverte a alteração feita em #11079 para corrigir #12098. #12397 (Mike).
  • Evita uma exceção quando uma constante negativa ou de ponto flutuante é usada na condição WHERE em tabelas com índice. Isso corrige #11905. #12384 (alexey-milovidov).
  • Permitir usar CLEAR na coluna mesmo que existam expressões DEFAULT dependentes. Isso corrige #12333. #12378 (alexey-milovidov).
  • Corrigidos TOTALS/ROLLUP/CUBE para funções de agregação com argumentos -State e Nullable. Isso corrige #12163. #12376 (alexey-milovidov).
  • Corrigido SIGSEGV quando há uma mensagem com erro no meio do lote no engine Kafka. #12302 (Azat Khuzhin).
  • Corrigido o comportamento quando o mecanismo SummingMergeTree soma colunas da chave de partição. Adicionada uma exceção para o caso de definição explícita das colunas a serem somadas que se sobrepõem às colunas da chave de partição. Isso corrige #7867. #12173 (Nikita Mikhaylov).
  • Corrigida a transformação da consulta a ser enviada a um SGBD externo (por exemplo, MySQL, ODBC) na presença de aliases. Isso corrige #12032. #12151 (alexey-milovidov).
  • Corrigido um bug que levava a metadados incorretos de tabela no ZooKeepeer para tabelas ReplicatedVersionedCollapsingMergeTree. Corrige #12093. #12121 (alesapin).
  • Corrigida a limitação desnecessária do número de threads para consultas SELECT em VIEW. Corrige #11937. #12085 (Nikolai Kochetov).
  • Corrigida uma falha no JOIN com o tipo LowCardinality com join_algorithm=partial_merge. #12035 (Artem Zuikov).
  • Corrigido o resultado incorreto para if() com NULLs na condição. #11807 (Artem Zuikov).

Melhoria de desempenho

  • Índice não utilizado pelo operador IN com literais; regressão de desempenho introduzida por volta da v19.3. Isso corrige #10574. #12062 (nvartolomei).

melhoria em compilação/testes/empacotamento

  • Instala ca-certificates antes do primeiro apt-get update no Dockerfile. #12095 (Ivan Blinkov).

Lançamento do ClickHouse v20.5.2.7-stable 2020-07-02

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

  • Retorna um resultado não-Nullable de COUNT(DISTINCT) e da família de aggregate functions uniq. Se todos os valores passados forem NULL, retorna zero em vez disso. Isso melhora a compatibilidade com SQL. #11661 (alexey-milovidov).
  • Foi adicionada uma verificação para o caso em que uma user-level setting é especificada no lugar errado. As user-level settings devem ser especificadas em users.xml, dentro da seção <profile>, para um profile de usuário específico (ou em <default> para as configurações padrão). O servidor não iniciará e registrará uma mensagem de Exception no Log. Isso corrige #9051. Se você quiser ignorar essa verificação, pode mover as settings para o local apropriado ou adicionar <skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings> a config.xml. #11449 (alexey-milovidov).
  • A setting input_format_with_names_use_header está enabled por padrão. Isso afetará o parsing dos input formats -WithNames e -WithNamesAndTypes. #10937 (alexey-milovidov).
  • Remove a setting experimental_use_processors. Ela está enabled por padrão. #10924 (Nikolai Kochetov).
  • Atualiza zstd para 1.4.4. Há pequenas melhorias de desempenho e na taxa de compressão. Se você executar réplicas com versões diferentes do ClickHouse, poderá ver mensagens de error adequadas, como Data after merge is not byte-identical to data on another replicas., com explicação. Essas mensagens são normais e você não deve se preocupar. Essa alteração é compatível com versões anteriores, mas a listamos aqui no changelog caso você se pergunte sobre essas mensagens. #10663 (alexey-milovidov).
  • Foi adicionada uma verificação para codecs sem sentido e uma setting allow_suspicious_codecs para controlar essa verificação. Isso fecha #4966. #10645 (alexey-milovidov).
  • Várias setting changes do Kafka alteram seus valores padrão. Veja #11388.
  • Ao atualizar de versões anteriores à 20.5, se um rolling update for realizado e o cluster contiver tanto versões 20.5 ou superiores quanto inferiores à 20.5, e se nós do ClickHouse com versões antigas forem reiniciados enquanto a versão antiga for iniciada na presença de versões mais novas, isso poderá levar a errors Part ... intersects previous part. Para evitar esse error, primeiro instale os pacotes mais novos do clickhouse-server em todos os nós do cluster e depois faça as reinicializações (assim, quando o clickhouse-server for reiniciado, ele iniciará com a nova versão).

Novo recurso

  • TTL DELETE WHERE e TTL GROUP BY para redução automática da granularidade dos dados e rollup em tabelas. #10537 (expl0si0nn).
  • Implementação do protocolo wire do PostgreSQL. #10242 (Movses).
  • Adicionadas tabelas de sistema para usuários, funções, privilégios, perfis de configuração, cotas e políticas em nível de linha; adicionados os comandos SHOW USER, SHOW [CURRENT|ENABLED] ROLES, SHOW SETTINGS PROFILES. #10387 (Vitaly Baranov).
  • Suporte para gravação na função de tabela ODBC #10554 (ageraab). #10901 (tavplubix).
  • Adiciona métricas de desempenho de consulta com base em perf_events do Linux (essas métricas são calculadas com contadores de hardware da CPU e contadores do SO). É opcional e exige que CAP_SYS_ADMIN esteja definido no binário clickhouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov).
  • Agora há suporte aos modificadores NULL e NOT NULL para tipos de dados na consulta CREATE. #11057 (Павел Потемкин).
  • Adicionado o formato de entrada e saída ArrowStream. #11088 (hcz).
  • Suporte ao Cassandra como fonte de dicionário externo. #4978 (favstovol).
  • Adicionado um novo layout direct, que carrega todos os dados diretamente da origem para cada consulta, sem armazenar dados nem usar cache. #10622 (Artem Streltsov).
  • Adicionado aos dicionários o novo layout complex_key_direct, que não armazena nada localmente durante a execução da consulta. #10850 (Artem Streltsov).
  • Adicionado suporte à sintaxe de variáveis globais no estilo do MySQL (stub). Isso é necessário para garantir a compatibilidade com o protocolo MySQL. #11832 (alexey-milovidov).
  • Adicionado realce de sintaxe ao clickhouse-client usando replxx. #11422 (Tagir Kuskarov).
  • As funções minMap e maxMap foram adicionadas. #11603 (Ildus Kurbangaliev).
  • Adiciona a tabela system.asynchronous_metric_log, que registra o histórico de métricas de system.asynchronous_metrics. #11588 (Alexander Kuzmenkov).
  • Adicionadas as funções extractAllGroupsHorizontal(haystack, re) e extractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov).
  • Adicionadas consultas SHOW CLUSTER(S). #11467 (hexiaoting).
  • Adiciona a função netloc para extrair a localização de rede, assim como netloc de urlparse(url) em Python. #11356 (Guillaume Tassery).
  • Adiciona mais 2 colunas virtuais ao engine=Kafka para acessar os cabeçalhos das mensagens. #11283 (filimonov).
  • Adicionada a coluna virtual _timestamp_ms para o motor Kafka (o tipo é Nullable(DateTime64(3))). #11260 (filimonov).
  • Adicionada a função randomFixedString. #10866 (Andrei Nekrashevich).
  • Adicionada a função fuzzBits, que inverte aleatoriamente os bits em uma string com determinada probabilidade. #11237 (Andrei Nekrashevich).
  • Permitir a comparação de números com uma string constante nos operadores de comparação e nas seções IN e VALUES. #11647 (alexey-milovidov).
  • Adicionado o modo de balanceamento de carga round_robin. #11645 (Azat Khuzhin).
  • Adicionada a configuração cast_keep_nullable. Se estiver definida, CAST(something_nullable AS Type) retorna Nullable(Type). #11733 (Artem Zuikov).
  • Adicionada a coluna position à tabela system.columns e column_position à tabela system.parts_columns. Ela contém a posição ordinal de uma coluna na tabela, começando em 1. Isso fecha #7744. #11655 (alexey-milovidov).
  • Suporte de ON CLUSTER para SYSTEM {FLUSH DISTRIBUTED,STOP/START DISTRIBUTED SEND}. #11415 (Azat Khuzhin).
  • Adicionada a tabela system.distribution_queue. #11394 (Azat Khuzhin).
  • Suporte a todas as configurações de formato no Kafka, exposição de algumas configurações no nível da tabela e ajuste dos padrões para melhor desempenho. #11388 (filimonov).
  • Adicionada a função port (para extrair a porta da URL). #11120 (Azat Khuzhin).
  • Agora, as funções dictGet* aceitam nomes de tabelas. #11050 (Vitaly Baranov).
  • A ferramenta clickhouse-format agora consegue formatar várias consultas quando o argumento -n é usado. #10852 (Darío).
  • Possibilidade de configurar um resolver de proxy para o DiskS3. #10744 (Pavel Kovalenko).
  • Permite que pointInPolygon funcione com um polígono não constante. PointInPolygon agora pode receber Array(Array(Tuple(…, …))) como segundo argumento, um array com o polígono e seus buracos. #10623 (Alexey Ilyukhov) #11421 (Alexey Ilyukhov).
  • Adicionado move_ttl_info a system.parts para permitir a introspecção da funcionalidade de movimentação por TTL. #10591 (Vladimir Chebotarev).
  • Possibilidade de usar o S3 por meio de proxies. #10576 (Pavel Kovalenko).
  • Adicionar sinônimos NCHAR e NVARCHAR para tipos de dados. #11025 (alexey-milovidov).
  • Resolvido #7224: foram adicionadas as métricas FailedQuery, FailedSelectQuery e FailedInsertQuery à tabela system.events. #11151 (Nikita Orlov).
  • Adiciona mais estatísticas do jemalloc a system.asynchronous_metrics e garante que esses valores estejam atualizados. #11748 (Alexander Kuzmenkov).
  • Permite definir credenciais padrão do S3 e cabeçalhos de autenticação personalizados. #11134 (Grigory Pervakov).
  • Adicionadas novas funções para importar/exportar DateTime64 como Int64 com diferentes precisões: to-/fromUnixTimestamp64Milli/-Micro/-Nano. #10923 (Vasily Nemkov).
  • Permite especificar a URI mongodb:// para dicionários do MongoDB. #10915 (Alexander Kuzmenkov).
  • A palavra-chave OFFSET agora pode ser usada sem uma cláusula LIMIT correspondente. #10802 (Guillaume Tassery).
  • Adicionada a tabela system.licenses. Esta tabela contém as licenças de bibliotecas de terceiros localizadas no diretório contrib. Isso fecha #2890. #10795 (alexey-milovidov).
  • Nova função toStartOfSecond(DateTime64) -> DateTime64 que zera a parte fracionária de segundos do valor DateTime64. #10722 (Vasily Nemkov).
  • Adicionado o novo formato de entrada JSONAsString, que aceita uma sequência de objetos JSON separados por quebras de linha, espaços e/ou vírgulas. #10607 (Kruglov Pavel).
  • Agora é permitido criar perfil de memória com passos de granularidade menores que 4 MiB. Adicionado um profiler de memória por amostragem para capturar alocações/desalocações aleatórias. #10598 (alexey-milovidov).
  • SimpleAggregateFunction agora também é compatível com sumMap. #10000 (Ildus Kurbangaliev).
  • Adiciona suporte a ALTER RENAME COLUMN para o mecanismo de tabela Distributed. Continuação de #10727. Corrige #10747. #10887 (alesapin).

Correção de bug

  • Corrige o erro apontado pelo UBSan no parse de Decimal. Isso corrige #7540. #10512 (alexey-milovidov).
  • Corrige uma possível exceção de ponto flutuante ao analisar DateTime64. Isso corrige #11374. #11875 (alexey-milovidov).
  • Corrigida uma falha rara causada pelo uso de uma coluna Nullable na condição PREWHERE. #11895 #11608 #11869 (Nikolai Kochetov).
  • Não permita arrayJoin dentro de funções de ordem superior. Isso estava causando falhas na sincronização do protocolo. Isso fecha #3933. #11846 (alexey-milovidov).
  • Corrige o resultado incorreto da comparação de FixedString com uma String constante. Isso corrige #11393. Esse bug apareceu na versão 20.4. #11828 (alexey-milovidov).
  • Corrigido resultado incorreto de if com NULLs na condição. #11807 (Artem Zuikov).
  • Corrigido o uso de threads em excesso nas consultas. #11788 (Nikolai Kochetov).
  • Corrigida a exceção Scalar does not exist ao usar WITH <scalar subquery> ... em SELECT ... FROM merge_tree_table ... #11621. #11767 (Amos Bird).
  • Corrige o comportamento inesperado de consultas como SELECT *, xyz.*, que eram concluídas com sucesso quando se esperava um erro. #11753 (hexiaoting).
  • Agora, os fetches replicados serão cancelados durante um ALTER de metadados. #11744 (alesapin).
  • Interpretar os metadados armazenados no ZooKeeper antes de verificar se são iguais. #11739 (Azat Khuzhin).
  • Corrigido o LOGICAL_ERROR causado pela inferência incorreta do tipo de literais complexos no formato de entrada Values. #11732 (tavplubix).
  • Corrigido ORDER BY ... WITH FILL em colunas constantes. #11697 (Anton Popov).
  • Corrige uma condição de corrida muito rara em SYSTEM SYNC REPLICA. Se a tabela replicada for criada e, ao mesmo tempo, a partir de uma conexão separada, outro cliente emitir o comando SYSTEM SYNC REPLICA nessa tabela (o que é improvável, porque esse outro cliente teria de estar ciente de que a tabela foi criada), pode ocorrer um desreferenciamento de nullptr. #11691 (alexey-milovidov).
  • Passe timeouts adequados ao se comunicar com a ponte XDBC. Recentemente, os timeouts não estavam sendo respeitados ao verificar se a ponte estava ativa e ao receber metadados. #11690 (alexey-milovidov).
  • Corrige o uso de LIMIT n WITH TIES em conjunto com a instrução ORDER BY quando ela contém aliases. #11689 (Anton Popov).
  • Corrige possível Pipeline stuck em consultas SELECT com FINAL paralelo. Corrige #11636. #11682 (Nikolai Kochetov).
  • Corrige um erro que leva a um estado incorreto em system.mutations. Pode indicar que a mutação inteira já foi concluída, mas o servidor ainda tem tarefas MUTATE_PART na fila de replicação e tenta executá-las. Isso corrige #11611. #11681 (alesapin).
  • Corrigido o destaque de sintaxe na consulta CREATE USER. #11664 (alexey-milovidov).
  • Adicionado suporte a expressões regulares com flags que ignoram maiúsculas e minúsculas. Isso corrige #11101 e #11506. #11649 (alexey-milovidov).
  • Removida a otimização trivial da consulta count se a segurança em nível de linha estiver definida. Em versões anteriores, o usuário obtinha a contagem total de registros em uma tabela, em vez da contagem filtrada. Isso corrige #11352. #11644 (alexey-milovidov).
  • Corrigidos os filtros de Bloom para String (índices de omissão de dados). #11638 (Azat Khuzhin).
  • Sem a opção -q, o banco de dados não é criado na inicialização. #11604 (giordyb).
  • Corrigido o erro Block structure mismatch em consultas com amostragem ao ler da tabela Buffer. #11602 (Nikolai Kochetov).
  • Corrigido o código de saída errado do clickhouse-client quando exception.code() % 256 == 0. #11601 (filimonov).
  • Corrige condições de corrida em CREATE/DROP de diferentes réplicas de ReplicatedMergeTree. Continua funcionando mesmo que a tabela não tenha sido removida completamente do ZooKeeper ou não tenha sido criada com sucesso. Isso corrige #11432. #11592 (alexey-milovidov).
  • Corrige um erro trivial na mensagem de log sobre “o tamanho do mark cache ter sido reduzido” na inicialização do servidor. Isso fecha #11399. #11589 (alexey-milovidov).
  • Corrigido o erro Size of offsets does not match size of column em consultas com PREWHERE column in (subquery) e ARRAY JOIN. #11580 (Nikolai Kochetov).
  • Corrigido um segfault raro em SHOW CREATE TABLE Corrige #11490. #11579 (tavplubix).
  • Todas as consultas em uma sessão HTTP tinham o mesmo query_id. Isso foi corrigido. #11578 (tavplubix).
  • Agora, o contêiner Docker clickhouse-server passará a preferir IPv6 ao verificar se o servidor está ativo. #11550 (Ivan Starkov).
  • Corrige o erro Data compressed with different methods, que pode ocorrer se min_bytes_to_use_direct_io estiver habilitado, PREWHERE estiver ativo e SAMPLE ou um número elevado de threads estiver sendo usado. Isso corrige #11539. #11540 (alexey-milovidov).
  • Corrige shard_num/replica_num em <node> (quebra use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin).
  • Corrige async INSERT em Distributed com prefer_localhost_replica=0 e sem internal_replication. #11527 (Azat Khuzhin).
  • Corrige vazamento de memória quando uma exceção é lançada no meio da agregação com funções -State. Isso corrige #8995. #11496 (alexey-milovidov).
  • Corrigida a exceção Pipeline stuck para INSERT SELECT FINAL, em que SELECT (max_threads>1) tem múltiplos streams, mas INSERT tem apenas um (max_insert_threads==0). #11455 (Azat Khuzhin).
  • Corrigido resultado incorreto em consultas como select count() from t, u. #11454 (Artem Zuikov).
  • Corrigido o retorno do tamanho comprimido dos codecs. #11448 (Nikolai Kochetov).
  • Corrige uma falha do servidor quando uma coluna tem um codec de compressão com argumentos não literais. Corrige #11365. #11431 (alesapin).
  • Corrige uma possível leitura de memória não inicializada durante o desligamento do MergeTree, se a tabela não tiver sido criada com sucesso. #11420 (alexey-milovidov).
  • Corrige falha em JOIN com LowCarinality(T) e Nullable(T). #11380. #11414 (Artem Zuikov).
  • Corrigido o código de erro para a chave USING incorreta. #11373. #11404 (Artem Zuikov).
  • Corrigido geohashesInBox para argumentos fora do intervalo de latitude/longitude. #11403 (Vasily Nemkov).
  • Melhores mensagens de erro para as funções joinGet(). #11389 (Artem Zuikov).
  • Corrige o possível erro Pipeline stuck em consultas com ordenação e limite externos. Corrige #11359. #11366 (Nikolai Kochetov).
  • Removido o bloqueio redundante durante o envio de partes no ReplicatedMergeTree. #11354 (alesapin).
  • Corrigido o suporte a \G (saída vertical) no clickhouse-client em modo multilinha. Fecha #9933. #11350 (alexey-milovidov).
  • Corrige possível segfault ao usar o banco de dados Lazy. #11348 (alexey-milovidov).
  • Corrige falha em consultas diretas ao mecanismo de tabela Join (sem JOIN) e nulabilidade incorreta. #11340 (Artem Zuikov).
  • Corrigido travamento em quantilesExactWeightedArray. #11337 (Nikolai Kochetov).
  • Agora, as operações de merge são interrompidas antes da alteração de metadados em consultas ALTER. #11335 (alesapin).
  • Volta a paralelizar a gravação em MATERIALIZED VIEW com a configuração parallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov).
  • Corrigido o visitParamExtractRaw quando o JSON extraído contém strings com { ou [ desbalanceados. #11318 (Ewout).
  • Corrigida uma condição de corrida muito rara no ThreadPool. #11314 (alexey-milovidov).
  • Corrigida uma pequena condição de corrida de dados no clickhouse-copier. Detectada por testes de integração. #11313 (alexey-milovidov).
  • Corrigido um possível uso de memória não inicializada na conversão. Exemplo: SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov).
  • Corrige o problema em que a análise de índices não funciona quando uma tabela tem uma coluna Array na chave primária e uma consulta filtra essa coluna com as funções empty ou notEmpty. Isso corrige #11286. #11303 (alexey-milovidov).
  • Corrige um bug em que a estimativa da velocidade da consulta pode ficar incorreta, e o limite de min_execution_speed pode não funcionar ou funcionar incorretamente se a consulta for limitada por max_network_bandwidth, max_execution_speed ou pelas configurações de priority. Altera o valor padrão de timeout_before_checking_execution_speed para um valor diferente de zero, porque, caso contrário, as configurações min_execution_speed e max_execution_speed não têm efeito. Isso corrige #11297. Isso corrige #5732. Isso corrige #6228. Melhoria de usabilidade: evita a concatenação da mensagem de exceção com a barra de progresso no clickhouse-client. #11296 (alexey-milovidov).
  • Corrigida falha quando SET DEFAULT ROLE é chamado com argumentos incorretos. Isso corrige #10586. #11278 (Vitaly Baranov).
  • Corrige travamento ao ler dados malformados no formato Protobuf. Isso corrige #5957, corrige #11203. #11258 (Vitaly Baranov).
  • Corrigido um bug em que o dicionário cache podia retornar o valor padrão em vez do valor esperado (quando havia apenas chaves expiradas). Isso afeta apenas campos do tipo string. #11233 (Nikita Mikhaylov).
  • Corrige o erro Block structure mismatch in QueryPipeline ao ler de VIEW com constantes na consulta interna. Corrige #11181. #11205 (Nikolai Kochetov).
  • Corrigida a possível exceção Invalid status for associated output. #11200 (Nikolai Kochetov).
  • Agora, será verificado se primary.idx está definido na consulta CREATE. #11199 (alesapin).
  • Corrigido um possível erro Cannot capture column em funções de ordem superior com argumento capturado Array(Array(LowCardinality)). #11185 (Nikolai Kochetov).
  • Corrigido o globbing do S3, que podia falhar quando havia mais de 1000 chaves e em alguns backends. #11179 (Vladimir Chebotarev).
  • Se o índice de data skipping dependia de colunas que seriam modificadas durante o merge em segundo plano (para SummingMergeTree, AggregatingMergeTree, bem como para TTL GROUP BY), ele era calculado incorretamente. Esse problema foi corrigido movendo o cálculo do índice para depois do merge, de modo que o índice seja calculado sobre os dados já mesclados. #11162 (Azat Khuzhin).
  • Correção para o travamento que às vezes ocorria ao executar o DROP da tabela engine=Kafka (ou durante reinicializações do servidor). #11145 (filimonov).
  • Corrige a reserva excessiva de threads para consultas simples (otimização para reduzir o número de threads, que ficou parcialmente comprometida após alterações no pipeline). #11114 (Azat Khuzhin).
  • Removido o logging da tarefa de finalização de mutação quando nada foi finalizado. #11109 (alesapin).
  • Corrigido um deadlock durante a inicialização do servidor após a atualização que alterou a estrutura das tabelas de log do sistema. #11106 (alesapin).
  • Corrigido um vazamento de memória no registerDiskS3. #11074 (Pavel Kovalenko).
  • Corrige o erro No such name in Block::erase() quando JOIN aparece com PREWHERE ou optimize_move_to_prewhere gera PREWHERE a partir de WHERE. #11051 (Artem Zuikov).
  • Corrige a possível perda de dados durante o encerramento da tabela com motor Kafka. #11048 (filimonov).
  • Corrigidos bugs na resolução de argumentos de parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
  • Agora é possível usar ADD/DROP e RENAME na mesma coluna em uma única consulta ALTER. A mensagem de exceção para MODIFY e RENAME simultâneos ficou mais clara. Corrige parcialmente #10669. #11037 (alesapin).
  • Corrigido o processamento de URLs do S3. #11036 (Vladimir Chebotarev).
  • Corrige o rastreamento de memória em GROUP BY de dois níveis quando há LIMIT. #11022 (Azat Khuzhin).
  • Corrigido um erro potencial de use-after-free muito raro no MergeTree caso a tabela não tenha sido criada com sucesso. #10986 (alexey-milovidov).
  • Corrigido o tratamento de metadados (path relativo para rename) e de dados (path relativo para symlink) no banco de dados Atomic. #10980 (Azat Khuzhin).
  • Corrigido o travamento do servidor em consultas ALTER e DROP DATABASE simultâneas com o mecanismo de banco de dados Atomic. #10968 (tavplubix).
  • Corrigido o tamanho incorreto dos dados brutos no método getRawData(). #10964 (Igr).
  • Corrige a incompatibilidade da agregação em dois níveis entre a versão 20.1 e as anteriores. Essa incompatibilidade ocorre quando versões diferentes do ClickHouse são usadas no nó iniciador e nos nós remotos, o resultado do GROUP BY é grande e a agregação é realizada em um único campo String. Isso resulta em várias linhas não mescladas para uma única chave no resultado. #10952 (alexey-milovidov).
  • Evite enviar arquivos gravados parcialmente pelo DistributedBlockOutputStream. #10940 (Azat Khuzhin).
  • Corrigido travamento em SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov).
  • Correção para o travamento que às vezes ocorria durante o DROP de uma tabela com engine=Kafka (ou durante reinicializações do servidor). #10910 (filimonov).
  • Agora é possível executar várias instruções ALTER RENAME, como a TO b, c TO a. #10895 (alesapin).
  • Corrige uma possível condição de corrida que pode ocorrer ao obter o resultado do estado de uma função de agregação a partir de múltiplas threads para a mesma coluna. A única forma (que encontrei) de isso acontecer é ao usar a função finalizeAggregation durante a leitura de uma tabela com engine Memory, que armazena o estado de AggregateFunction para a função quanite*. #10890 (Nikolai Kochetov).
  • Corrigida a compatibilidade retroativa com tuplas em tabelas distribuídas. #10889 (Anton Popov).
  • Corrigido SIGSEGV em StringHashTable (caso essa chave não exista). #10870 (Azat Khuzhin).
  • Corrigido o travamento de WATCH após a remoção da tabela LiveView de um banco de dados com engine Atomic. #10859 (tavplubix).
  • Corrigido um bug no ReplicatedMergeTree que podia fazer com que alguns ALTER em consultas OPTIMIZE ficassem bloqueados, aguardando alguma réplica após ela se tornar inativa. #10849 (tavplubix).
  • Agora, as restrições são atualizadas quando a coluna usada na expressão CONSTRAINT é renomeada. Corrige #10844. #10847 (alesapin).
  • Corrigida a possível leitura de memória não inicializada no dicionário cache. #10834 (alexey-milovidov).
  • Corrige a ordem das colunas após Block::sortColumns() (também adiciona um teste que mostra que isso afeta um caso de uso real — o mecanismo Buffer). #10826 (Azat Khuzhin).
  • Corrige o problema com o ODBC bridge quando não é solicitado o uso de aspas em identificadores. Isso corrige #7984. #10821 (alexey-milovidov).
  • Corrigidos os problemas apontados pelo UBSan e pelo MSan no DateLUT. #10798 (alexey-milovidov).
  • Use src_type para converter corretamente os tipos nas condições de chave. Corrige #6287. #10791 (Andrew Onyshchuk).
  • Remova os patches antigos do libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 Isso permite desabilitar -fno-omit-frame-pointer em compilações do clang, o que melhora o desempenho em pelo menos 1% em média. #10761 (Amos Bird).
  • Corrige avgWeighted ao usar um peso de ponto flutuante em vários shards. #10758 (Baudouin Giard).
  • Corrige o comportamento de parallel_view_processing. Agora, se ocorrer uma exceção, todas as inserções em MATERIALIZED VIEW deverão ser concluídas. Corrige #10241. #10757 (Nikolai Kochetov).
  • Corrigido o combinator -OrNull e -OrDefault quando combinado com -State. #10741 (hcz).
  • Corrige uma falha em generateRandom com tipos aninhados. Corrige #10583. #10734 (Nikolai Kochetov).
  • Corrige a corrupção de dados na coluna-chave LowCardinality(FixedString) em SummingMergeTree, que pode ter ocorrido após a mesclagem. Corrige #10489. #10721 (Nikolai Kochetov).
  • Corrigido o uso da chave primária envolta em uma função com o modificador ‘FINAL’ e a otimização ‘ORDER BY’. #10715 (Anton Popov).
  • Corrige um possível estouro de buffer na função h3EdgeAngle. #10711 (alexey-milovidov).
  • Corrige o desaparecimento dos totais. Os totais podiam ser filtrados se a consulta tivesse join ou subconsulta com uma condição WHERE externa. Corrige #10674. #10698 (Nikolai Kochetov).
  • Corrige a atomicidade de inserções via HTTP. Isso corrige #9666. #10687 (Andrew Onyshchuk).
  • Corrige vários usos do operador IN com o mesmo conjunto em uma única consulta. #10686 (Anton Popov).
  • Corrigido um bug que fazia com que as requisições HTTP ficassem travadas ao encerrar o cliente quando readonly=2 e cancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix).
  • Corrige a ordem dos parâmetros no construtor de AggregateTransform. #10667 (palasonic1).
  • Corrige a ausência de execução paralela de consultas remotas com distributed_aggregation_memory_efficient ativado. Corrige #10655. #10664 (Nikolai Kochetov).
  • Corrige uma possível contagem incorreta de linhas em consultas com LIMIT. Corrige #10566, #10709. #10660 (Nikolai Kochetov).
  • Corrige um bug que bloqueava ALTERs concorrentes quando a tabela tem muitas partes. #10659 (alesapin).
  • Corrige o desreferenciamento de nullptr em StorageBuffer caso o servidor tenha sido desligado antes da inicialização da tabela. #10641 (alexey-milovidov).
  • Corrige a otimização de predicados para consultas distribuídas (enable_optimize_predicate_expression=1) em consultas com a cláusula HAVING (ou seja, quando é necessário filtrar no servidor iniciador), preservando a ordem das expressões (e isso basta para corrigir o problema), e também força o agregador a usar nomes de colunas em vez de índices. Corrige: #10613, #11413. #10621 (Azat Khuzhin).
  • Corrigido optimize_skip_unused_shards com LowCardinality. #10611 (Azat Khuzhin).
  • Corrige segfault no StorageBuffer em caso de exceção na inicialização do servidor. Corrige #10550. #10609 (tavplubix).
  • Na consulta SYSTEM DROP DNS CACHE, também são removidos os caches usados para verificar se o usuário tem permissão para se conectar a partir de determinados endereços IP. #10608 (tavplubix).
  • Corrigidos resultados escalares incorretos na consulta interna de MATERIALIZED VIEW quando essa consulta continha uma tabela dependente. #10603 (Nikolai Kochetov).
  • Corrigido o tratamento da variável de condição para mutações síncronas. Em alguns casos, os sinais dessa variável de condição podiam ser perdidos. #10588 (Vladimir Chebotarev).
  • Corrige uma possível falha quando createDictionary() é chamada antes de loadStoredObject() terminar. #10587 (Vitaly Baranov).
  • Corrigido o erro the BloomFilter false positive must be a double number between 0 and 1 #10551. #10569 (Winter Zhang).
  • Corrigido o SELECT da coluna ALIAS cujo tipo da expressão padrão é diferente do tipo da coluna. #10563 (Azat Khuzhin).
  • Foi implementada a comparação entre DateTime64 e valores String (assim como para DateTime). #10560 (Vasily Nemkov).
  • Corrigida a corrupção do índice, que pode ocorrer em alguns casos após mesclar partes compactas em outra parte compacta. #10531 (Anton Popov).
  • Desabilita, por padrão, a otimização de GROUP BY para sharding_key (optimize_distributed_group_by_sharding_key havia sido introduzida e mantida desativada por padrão, devido às particularidades da análise de sharding_key; um exemplo simples é o uso de if na sharding key) e corrige isso para WITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin).
  • Corrige: #10263 (depois desse PR, o envio distribuído via INSERT passou a ser adiado a cada INSERT) Corrige: #8756 (esse PR quebra envios distribuídos quando todas as condições a seguir são atendidas (uma configuração improvável no momento, suponho): internal_replication == false, múltiplos shards locais (ativa o código de hardlinking) e distributed_storage_policy (faz link(2) falhar com EXDEV)). #10486 (Azat Khuzhin).
  • Erro corrigido no limite “max_rows_to_sort”. #10268 (alexey-milovidov).
  • O dicionário é obtido e os direitos de acesso são verificados apenas uma vez por chamada de qualquer função que leia dicionários externos. #10928 (Vitaly Baranov).

Melhoria

  • Aplica TTL a dados antigos após a consulta ALTER MODIFY TTL. Esse comportamento é controlado pela configuração materialize_ttl_after_modify, que é ativada por padrão. #11042 (Anton Popov).
  • Ao processar sequências de escape com barra invertida no estilo C em literais de string, VALUES e vários formatos de texto (esta é uma extensão ao padrão SQL característica do ClickHouse e do MySQL), mantenha a barra invertida se for encontrada uma sequência de escape desconhecida (por exemplo, \% ou \w), o que torna mais conveniente usar expressões regulares LIKE e match (basta escrever name LIKE 'used\_cars' em vez de name LIKE 'used\\_cars') e, ao mesmo tempo, aumenta a compatibilidade. Isso corrige #10922. #11208 (alexey-milovidov).
  • Ao ler um valor Decimal, remova os dígitos excedentes após o ponto decimal. Esse comportamento é mais compatível com MySQL e PostgreSQL. Isso corrige #10202. #11831 (alexey-milovidov).
  • Permitir fazer DROP de tabela replicada se os metadados no ZooKeeper já tiverem sido removidos e não existirem mais (esse também é o caso ao usar o TestKeeper para testes e o servidor tiver sido reiniciado). Permitir fazer RENAME de tabela replicada mesmo se houver um erro na comunicação com o ZooKeeper. Isso corrige #10720. #11652 (alexey-milovidov).
  • Pequena melhoria no diagnóstico da leitura de Decimal a partir de String. Isso fecha #10202. #11829 (alexey-milovidov).
  • Corrigida a chamada de sleep no manipulador de sinal. A espera estava durando menos tempo do que o esperado. #11825 (alexey-milovidov).
  • (Somente no Linux) As métricas de desempenho relacionadas ao SO (para CPU e I/O) funcionarão mesmo sem a capability CAP_NET_ADMIN. #10544 (Alexander Kazakov).
  • Adicionado hostname como alias da função hostName. Esse recurso foi sugerido por Victor Tarnavskiy, da Yandex.Metrica. #11821 (alexey-milovidov).
  • Adicionado suporte a DDL distribuído (atualização/exclusão/remoção de partição) em clusters de replicação cruzada. #11703 (Nikita Mikhaylov).
  • Emitir um aviso em vez de erro no log do servidor durante a inicialização se não for possível escutar em um dos endereços configurados (por exemplo, se o IPv6 não estiver disponível dentro do Docker). Observe que, se o servidor não conseguir escutar em todos os endereços listados, ele continuará se recusando a iniciar, como antes. Isso corrige #4406. #11687 (alexey-milovidov).
  • Criação do usuário default e do banco de dados ao iniciar a imagem Docker. #10637 (Paramtamtam).
  • Quando uma consulta multilinha é impressa no log do servidor, as linhas são unidas. Isso passa a funcionar corretamente no caso de literais de string multilinha, identificadores e comentários de uma única linha. Isso corrige #3853. #11686 (alexey-milovidov).
  • Agora os comandos permitem vários nomes: CREATE USER, CREATE ROLE, ALTER USER, SHOW CREATE USER, SHOW GRANTS e assim por diante. #11670 (Vitaly Baranov).
  • Adicionado suporte a DDL distribuído (UPDATE/DELETE/DROP PARTITION) em clusters com replicação cruzada. #11508 (frank lee).
  • Remove a senha da linha de comando no clickhouse-client e no clickhouse-benchmark se o usuário a tiver especificado explicitamente. Isso evita a exposição da senha pelo ps e por ferramentas semelhantes. #11665 (alexey-milovidov).
  • Não use informações de depuração do arquivo ELF se elas não corresponderem ao binário em execução. Isso é necessário para evitar a exibição de nomes de função e locais incorretos no código-fonte em stack traces. Isso corrige #7514. #11657 (alexey-milovidov).
  • Retorna NULL/zero quando o valor não é interpretado por completo nas funções parseDateTimeBestEffortOrNull/Zero. Isso corrige #7876. #11653 (alexey-milovidov).
  • Ignora parâmetros vazios na URL solicitada. Eles podem aparecer quando você escreve http://localhost:8123/?&a=b ou http://localhost:8123/?a=b&&c=d. Isso fecha #10749. #11651 (alexey-milovidov).
  • Permitir o uso de groupArrayArray e groupUniqArrayArray como SimpleAggregateFunction. #11650 (Volodymyr Kuznetsov).
  • Permite a comparação com strings constantes por meio de conversões implícitas ao analisar condições de índice em outros tipos. Isso pode fechar #11630. #11648 (alexey-milovidov).
  • https://github.com/ClickHouse/ClickHouse/pull/7572#issuecomment-642815377 Suporte à configuração padrão para HTTPHandlers. #11628 (Winter Zhang).
  • Permitir que mais formatos de entrada funcionem com o motor Kafka. Corrigir o problema com flushes prematuros. Corrigir o problema de desempenho quando kafka_num_consumers for maior que o número de partições no tópico. #11599 (filimonov).
  • Aprimora a lógica de multiple_joins_rewriter_version=2. Corrige o erro de colunas desconhecidas em aliases de lambda. #11587 (Artem Zuikov).
  • Mensagem de exceção mais clara quando não é possível analisar a lista de declaração de colunas. Isso fecha #10403. #11537 (alexey-milovidov).
  • Melhora a lógica de enable_optimize_predicate_expression=1 para VIEW. #11513 (Artem Zuikov).
  • Adicionado suporte ao PREWHERE em tabelas de visualização em tempo real. #11495 (vzakaznikov).
  • Atualização automática do cache de DNS, usado para verificar se um usuário tem permissão para se conectar a partir de determinado endereço. #11487 (tavplubix).
  • OPTIMIZE FINAL forçará o merge mesmo que merges simultâneos estejam em execução. Isso fecha #11309 e #11322. #11346 (alexey-milovidov).
  • Suprime a exibição de consultas canceladas no clickhouse-client. Em versões anteriores, o resultado podia continuar sendo exibido no terminal mesmo depois de você pressionar Ctrl+C para cancelar a consulta. Isso fecha #9473. #11342 (alexey-milovidov).
  • Agora, o arquivo de histórico é atualizado após cada consulta, e não há condição de corrida quando vários clientes usam o mesmo arquivo de histórico. Isso corrige #9897. #11453 (Tagir Kuskarov).
  • Melhores mensagens de log ao recarregar a configuração. #11341 (alexey-milovidov).
  • Remover espaços em branco no final de consultas formatadas em clickhouse-client ou clickhouse-format em alguns casos. #11325 (alexey-milovidov).
  • Adicionada a configuração “output_format_pretty_max_value_width”. Se o valor for maior, ele será cortado para evitar a exibição de valores muito grandes no terminal. Isso fecha #11140. #11324 (alexey-milovidov).
  • Mensagem de exceção mais clara em caso de escassez de mapeamentos de memória. Isso encerra #11027. #11316 (alexey-milovidov).
  • Suporte a (U)Int8, (U)Int16 e Date no ASOF JOIN. #11301 (Artem Zuikov).
  • Suporte ao parâmetro kafka_client_id para tabelas Kafka. Isso também torna o client.id padrão usado pelo ClickHouse ao se comunicar com o Kafka mais descritivo e útil. #11252 (filimonov).
  • Mantém o valor da métrica DistributedFilesToInsert em caso de exceções. Nas versões anteriores, o valor era definido quando alguns arquivos seriam enviados, mas ficava em zero se ocorresse uma exceção e ainda houvesse arquivos pendentes. Agora, ele corresponde ao número de arquivos pendentes no filesystem. #11220 (alexey-milovidov).
  • Adicionado suporte a nomes de tipos de dados compostos por várias palavras (como DOUBLE PRECISION e CHAR VARYING) para melhorar a compatibilidade com SQL. #11214 (Павел Потемкин).
  • Adicionados sinônimos para alguns tipos de dados. #10856 (Павел Потемкин).
  • O log de consultas agora vem habilitado por padrão. #11184 (Ivan Blinkov).
  • Exibir o tipo de autenticação na tabela system.users e ao executar a consulta SHOW CREATE USER. #11080 (Vitaly Baranov).
  • Remover dados ao executar DROP DATABASE explicitamente no mecanismo de banco de dados Memory. Corrige #10557. #11021 (tavplubix).
  • Defina nomes para as threads internas da biblioteca rdkafka. Disponibilize os logs do rdkafka nos logs do servidor. #10983 (Azat Khuzhin).
  • Suporte a caracteres de espaço em branco Unicode em consultas. Isso ajuda quando as consultas são copiadas e coladas do Word ou de páginas da web. Isso corrige #10896. #10903 (alexey-milovidov).
  • Permite o uso de tipos UInt grandes como índice na função tupleElement. #10874 (hcz).
  • Considera prefer_localhost_replica/load_balancing ao fazer INSERT em Distributed. #10867 (Azat Khuzhin).
  • Introduzidas as configurações min_insert_block_size_rows_for_materialized_views e min_insert_block_size_bytes_for_materialized_views. Essas configurações são semelhantes a min_insert_block_size_rows e min_insert_block_size_bytes, mas se aplicam apenas aos blocos inseridos em MATERIALIZED VIEW. Isso ajuda a controlar a compactação de blocos ao enviar para MVs e a evitar uso excessivo de memória. #10858 (Azat Khuzhin).
  • Remove a exceção da fila replicada durante o desligamento do servidor. Corrige #10819. #10841 (alesapin).
  • Garanta que varSamp e varPop não retornem resultados negativos devido a erros numéricos e que stddevSamp e stddevPop não sejam calculados com base em uma variância negativa. Isso corrige #10532. #10829 (alexey-milovidov).
  • Mensagem de exceção de DNS aprimorada. Isso corrige #10813. #10828 (alexey-milovidov).
  • Altera o código de resposta HTTP para 400 Bad Request em caso de alguns erros de parse. Corrige #10636. #10640 (alexey-milovidov).
  • Exibir uma mensagem se clickhouse-client for mais recente que clickhouse-server. #10627 (alexey-milovidov).
  • Adicionado suporte à consulta INSERT INTO [db.]table WATCH. #10498 (vzakaznikov).
  • Permite passar quota_key no clickhouse-client. Isso resolve #10227. #10270 (alexey-milovidov).

Melhoria de desempenho

  • Permite que várias réplicas atribuam merges, mutações, exclusão de partição, movimentação e substituição concorrentemente. Isso corrige #10367. #11639 (alexey-milovidov) #11795 (alexey-milovidov).
  • Otimização do GROUP BY em relação à chave de ordenação da tabela, habilitada pela configuração optimize_aggregation_in_order. #9113 (dimarub2000).
  • Consultas com FINAL são executadas em paralelo. Adicionada a configuração max_final_threads para limitar o número de threads usadas. #10463 (Nikolai Kochetov).
  • Melhora o desempenho de consultas INSERT via INSERT SELECT ou de INSERT com clickhouse-client quando pequenos blocos são gerados (caso típico com parsing paralelo). Isso corrige #11275. Corrige o problema em que CONSTRAINTs não funcionavam para campos com DEFAULT. Isso corrige #11273. Corrige o problema em que CONSTRAINTS eram ignoradas em tabelas TEMPORARY. Isso corrige #11274. #11276 (alexey-milovidov).
  • Otimização que elimina os agregadores min/max/any das chaves de GROUP BY na seção SELECT, habilitada pela configuração optimize_aggregators_of_group_by_keys. #11667 (xPoSx). #11806 (Azat Khuzhin).
  • Nova otimização que move todas as operações para fora da função any, ativada com optimize_move_functions_out_of_any #11529 (Ruslan).
  • Melhora o desempenho do clickhouse-client no modo interativo quando os formatos Pretty são usados. Nas versões anteriores, podia-se gastar uma quantidade significativa de tempo calculando a largura visível de uma string UTF-8. Isso corrige #11323. #11323 (alexey-milovidov).
  • Melhor desempenho para consultas com ORDER BY e LIMIT pequeno (menor que max_block_size). #11171 (Albert Kidrachev).
  • Adiciona detecção de CPU em runtime para selecionar e direcionar a melhor implementação da função. Adiciona suporte à geração de código para vários alvos. Isso fecha #1017. #10058 (DimasKovas).
  • Habilita mlock do binário do ClickHouse por padrão. Isso evita que o executável do ClickHouse seja removido da memória sob alta carga de E/S. #11139 (alexey-milovidov).
  • Permite que consultas com a função de agregação sum e sem chaves em GROUP BY sejam executadas várias vezes mais rápido. #10992 (alexey-milovidov).
  • Melhoria na ordenação radix (usada em ORDER BY com chaves simples) com a remoção de algumas movimentações redundantes de dados. #10981 (Arslan Gumerov).
  • Ordenação de partes maiores da tabela da esquerda no MergeJoin. Armazenamento em buffer dos blocos da esquerda na memória. Adição da configuração partial_merge_join_left_table_buffer_bytes para gerenciar os tamanhos dos buffers dos blocos da esquerda. #10601 (Artem Zuikov).
  • Remova ORDER BY e DISTINCT duplicados das subconsultas; essa otimização é ativada com optimize_duplicate_order_by_and_distinct #10067 (Mikhail Malafeev).
  • Este recurso elimina funções de outras chaves na cláusula GROUP BY, habilitado com optimize_group_by_function_keys #10051 (xPoSx).
  • Nova otimização que remove operações aritméticas de dentro das funções de agregação, habilitada com optimize_arithmetic_operations_in_aggregate_functions #10047 (Ruslan).
  • Usar cliente HTTP para S3 com base em Poco em vez de curl. Isso melhorará o desempenho e reduzirá o uso de memória do armazenamento S3 e das funções de tabela. #11230 (Pavel Kovalenko).
  • Corrigido um problema de desempenho do Kafka relacionado a reagendamentos com base em limites, que eram sempre aplicados. #11149 (filimonov).
  • Ativado percpu_arena:percpu para o jemalloc (Isso reduzirá a fragmentação de memória causada pelo pool de threads). #11084 (Azat Khuzhin).
  • Otimiza o uso de memória ao ler uma resposta de um cliente HTTP do S3. #11561 (Pavel Kovalenko).
  • Ajuste as configurações padrão do Kafka para melhorar o desempenho. #11388 (filimonov).

Recurso experimental

  • Adicionado o tipo de dado Point (Tuple(Float64, Float64)) e Polygon (Array(Array(Tuple(Float64, Float64))). #10678 (Alexey Ilyukhov).
  • Adicionada a função hasSubstr, que permite procurar subsequências em arrays. Observação: é provável que essa função seja renomeada sem aviso prévio. #11071 (Ryad Zenine).
  • Adicionado suporte a OpenCL e ao algoritmo de ordenação bitônica, que pode ser usado para ordenar tipos de dados inteiros em uma única coluna. Precisa ser compilado com a flag -DENABLE_OPENCL=1. Para usar o algoritmo de ordenação bitônica em vez de outros, é necessário definir bitonic_sort para a opção special_sort da configuração e garantir que o OpenCL esteja disponível. Este recurso não melhora o desempenho nem nada do tipo; ele é fornecido apenas como exemplo e para fins de demonstração. É provável que seja removido em um futuro próximo se não houver mais desenvolvimento nessa direção. #10232 (Ri).

Melhoria em compilação/testes/empacotamento

  • Clang-tidy ativado para programas e utilitários. #10991 (alexey-milovidov).
  • Removida a dependência de tzdata: não falhar caso o diretório /usr/share/zoneinfo não exista. Observe que todos os fusos horários funcionam no ClickHouse mesmo sem o tzdata instalado no sistema. #11827 (alexey-milovidov).
  • Adicionados testes de estresse com MSan e UBSan. Observe que já temos MSan e UBSan para testes funcionais, e o teste de “estresse” é um outro tipo de teste. #10871 (alexey-milovidov).
  • Imprime o ID de compilação do compilador nas mensagens de falha. Isso nos dará um pouco mais de certeza sobre qual binário falhou. Adicionada a nova função buildId. #11824 (alexey-milovidov).
  • Adicionado um teste para garantir que as mutações continuem a funcionar após a consulta FREEZE. #11820 (alexey-milovidov).
  • Não permitir testes com a substring “fail” em seus nomes, pois isso torna menos prático visualizar os resultados dos testes no navegador quando você pressiona Ctrl+F e procura por “fail”. #11817 (alexey-milovidov).
  • Remove as importações não utilizadas do HTTPHandlerFactory. #11660 (Bharat Nallan).
  • Foi adicionada uma amostragem aleatória das instâncias em que o copier é executado. Isso é necessário para evitar o erro Too many simultaneous queries. Também foi aumentado o timeout e reduzida a probabilidade de falha. #11573 (Nikita Mikhaylov).
  • Corrigido include omitido. #11525 (Matwey V. Kornilov).
  • Acelera a compilação ao remover programas de exemplo antigos. Também encontrou alguns testes funcionais órfãos. #11486 (alexey-milovidov).
  • Aumento do tamanho do ccache para compilações na CI. #11450 (alesapin).
  • Manter apenas unit_tests_dbms na compilação do pacote deb. #11429 (Ilya Yatsishin).
  • librdkafka atualizada para a versão 1.4.2. #11256 (filimonov).
  • Refatoração dos arquivos de compilação do CMake. #11390 (Ivan).
  • Corrigidos vários testes de integração instáveis. #11355 (alesapin).
  • Adicionado suporte a testes unitários executados com UBSan. #11345 (alexey-milovidov).
  • Removido o timeout redundante do teste de integração test_insertion_sync_fails_with_timeout. #11343 (alesapin).
  • Verificação aprimorada de consultas travadas no clickhouse-test. #11321 (alexey-milovidov).
  • Exibe um aviso se o servidor tiver sido compilado em modo de depuração ou com sanitizers. #11304 (alexey-milovidov).
  • Agora, o clickhouse-test verifica se o servidor está respondendo antes de executar os testes. #11285 (alesapin).
  • Corrige o teste potencialmente instável 00731_long_merge_tree_select_opened_files.sh. Ele não falha com frequência, mas descobrimos uma possível condição de corrida nesse teste durante experimentos com o ThreadFuzzer: #9814 Veja o link para ver um exemplo. #11270 (alexey-milovidov).
  • Repita o teste no CI se a chamada de curl tiver estourado o tempo limite. Isso pode acontecer devido a travamentos do sistema por mais de 10 segundos, algo típico da nossa infraestrutura de CI. Isso corrige #11267. #11268 (alexey-milovidov).
  • Adicionado um teste para o mecanismo de tabela Join por @donmikel. Fecha #9158. #11265 (alexey-milovidov).
  • Corrigidos vários erros não significativos nos testes unitários. #11262 (alesapin).
  • Agora, partes do comando do linker da biblioteca cctz não serão misturadas com as de outras bibliotecas. #11213 (alesapin).
  • Separado o /programs/server em programa propriamente dito e biblioteca. #11186 (Ivan).
  • Melhorados os scripts de compilação para Protobuf & gRPC. #11172 (Vitaly Baranov).
  • Ativado o teste de desempenho que não estava funcionando. #11158 (alexey-milovidov).
  • Criar o bucket raiz do S3 para testes antes de iniciar qualquer instância do CH. #11142 (Pavel Kovalenko).
  • Adicionado teste de desempenho para polígonos não constantes. #11141 (alexey-milovidov).
  • Correção do teste 00979_live_view_watch_continuous_aggregates. #11024 (vzakaznikov).
  • Adicionada a capacidade de executar o ZooKeeper em testes de integração usando tmpfs. #11002 (alesapin).
  • Aguardar o odbc-bridge com backoff exponencial. O tempo de espera anterior de 200 ms não era suficiente em nosso ambiente de CI. #10990 (alexey-milovidov).
  • Corrigido teste não determinístico. #10989 (alexey-milovidov).
  • Foi adicionado um teste para dados externos vazios. #10926 (alexey-milovidov).
  • O banco de dados é recriado a cada teste. Isso melhora o isolamento entre os testes. #10902 (alexey-milovidov).
  • Adicionadas mais verificações assert no código das colunas. #10833 (alexey-milovidov).
  • Melhor cooperação com sanitizers. Exibe informações sobre query_id na mensagem de falha do sanitizer. #10832 (alexey-milovidov).
  • Corrige uma condição de corrida óbvia na verificação “Smoke test de compilação Split”. #10820 (alexey-milovidov).
  • Correção de relatório (falso positivo) do MSan em MergeTreeIndexFullText. O problema apareceu pela primeira vez em #9968. #10801 (alexey-milovidov).
  • Adicionar supressão do MSan para a biblioteca cliente do MariaDB. #10800 (alexey-milovidov).
  • O make do GRPC não conseguia encontrar os arquivos protobuf; o Makefile foi alterado para adicionar o link correto. #10794 (mnkonkova).
  • Ative avisos adicionais (-Weverything) para base, utils e programs. Observe que já temos isso na maior parte do código. #10779 (alexey-milovidov).
  • As supressões de avisos de bibliotecas foram, por engano, declaradas como públicas em #10396. #10776 (alexey-milovidov).
  • Restaura um patch excluído acidentalmente em #10396. #10774 (alexey-milovidov).
  • Correção de erros nos testes de desempenho, parte 2. #10773 (alexey-milovidov).
  • Corrigidos erros nos testes de desempenho. #10766 (alexey-milovidov).
  • Atualizadas as compilações cruzadas para usar o compilador clang-10. #10724 (Ivan).
  • Atualização das instruções para instalar pacotes RPM. Isso foi sugerido por Denis (login no TG @ldviolet) e implementado por Arkady Shejn. #10707 (alexey-milovidov).
  • Tentativa de correção do teste tests/queries/0_stateless/01246_insert_into_watch_live_view.py. #10670 (vzakaznikov).
  • Correção do teste 00979_live_view_watch_continuous_aggregates.py e sua reativação. #10658 (vzakaznikov).
  • Corrigido erro de OOM no teste de estresse do ASan. #10646 (alexey-milovidov).
  • Corrigido o alerta do UBSan (adição de zero a nullptr) em HashTable que surgiu após a migração para clang-10. #10638 (alexey-milovidov).
  • Removida a chamada externa ao linker ld (bfd) durante o processamento do tzdata na compilação. #10634 (alesapin).
  • Permite usar o lld para vincular blobs (recursos). #10632 (alexey-milovidov).
  • Corrige o relatório do UBSan na biblioteca LZ4. #10631 (alexey-milovidov). Veja também https://github.com/lz4/lz4/issues/857
  • Atualização do LZ4 para a branch de desenvolvimento mais recente. #10630 (alexey-milovidov).
  • Adicionado um arquivo legível por máquina, gerado automaticamente, com a lista de versões estáveis. #10628 (alexey-milovidov).
  • Correção da verificação da versão do capnproto para capnp::UnalignedFlatArrayMessageReader. #10618 (Matwey V. Kornilov).
  • Redução do uso de memória nos testes. #10617 (alexey-milovidov).
  • Correção de timeouts fixos nos novos testes de visualização em tempo real. #10604 (vzakaznikov).
  • Aumento do timeout ao abrir um cliente em tests/queries/0_stateless/helpers/client.py. #10599 (vzakaznikov).
  • Ativa o ThinLTO para compilações com clang, continuação de #10435. #10585 (Amos Bird).
  • Inclusão de fuzzers e preparação para a integração com o oss-fuzz. #10546 (kyprizel).
  • Corrigida a compilação no FreeBSD. #10150 (Ivan).
  • Adicionada uma nova compilação para testes de consultas usando o framework pytest. #10039 (Ivan).

Lançamento do ClickHouse v20.4

Lançamento do ClickHouse v20.4.8.99-stable 2020-08-10

Correção de bug

  • Corrigido um erro na função parseDateTimeBestEffort quando um timestamp Unix era passado como argumento. Isso corrige #13362. #13441 (alexey-milovidov).
  • Corrigido um possível baixo desempenho e um resultado levemente incorreto em uniqExact, topK, sumDistinct e funções agregadas semelhantes chamadas em tipos Float com valores NaN. Isso também acionava uma asserção em compilação de depuração. Isso corrige #12491. #13254 (alexey-milovidov).
  • Corrigida a função if quando usada com um constexpr Nullable como cond que não é NULL literal. Corrige #12463. #13226 (alexey-milovidov).
  • Assert corrigida na função arrayElement no caso de os elementos do array serem Nullable e o índice do array também ser Nullable. Isso corrige #12172. #13224 (alexey-milovidov).
  • Corrigida a análise incorreta de índices com funções. Isso podia levar à eliminação de partes erradas ao ler tabelas MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov).
  • Corrigida a limitação desnecessária do número de threads para consultas SELECT na réplica local. #12840 (Nikolai Kochetov).
  • Corrigida a possível linha extra de overflow nos dados, que podia aparecer em consultas WITH TOTALS. #12747 (Nikolai Kochetov).
  • Corrigido um problema de desempenho com tuplas grandes, que são interpretadas como funções na cláusula IN. Em casos em que o usuário escreve WHERE x IN tuple(1, 2, ...) em vez de WHERE x IN (1, 2, ...), por algum motivo obscuro. #12700 (Anton Popov).
  • Corrigido o rastreamento de memória para input_format_parallel_parsing (ao associar a thread ao grupo). #12672 (Azat Khuzhin).
  • Corrigido #12293 para permitir o push predicate quando a subconsulta contém a cláusula WITH. #12663 (Winter Zhang).
  • Corrigido o #10572: correção do índice de filtro de Bloom com expressão constante. #12659 (Winter Zhang).
  • Corrigido SIGSEGV em StorageKafka quando o broker está indisponível (e não apenas nesse caso). #12658 (Azat Khuzhin).
  • Adicionado suporte à função if com argumentos Array(UUID). Isso corrige #11066. #12648 (alexey-milovidov).
  • Corrigida uma condição de corrida em dicionários externos com layout do tipo cache, que podia levar à queda do servidor. #12566 (alesapin).
  • Removidos os dados de tabelas Distributed (blocos de INSERTs assíncronos) ao executar DROP TABLE. #12556 (Azat Khuzhin).
  • Corrigido um bug que fazia com que partes antigas ficassem corrompidas após a consulta ALTER DELETE quando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Melhor exceção para a função in com número inválido de argumentos. #12529 (Anton Popov).
  • Corrigido problema de desempenho na leitura de partes compactas. #12492 (Anton Popov).
  • Corrigida uma falha em JOIN com Dicionário ao fazer a junção pela expressão da chave do dicionário: t JOIN dict ON expr(dict.id) = t.id. Desabilitada a otimização de join de dicionário para esse caso. #12458 (Artem Zuikov).
  • Corrigido possível segfault no StorageMerge. Fecha #12054. #12401 (tavplubix).
  • Corrigida a ordem das colunas no modificador WITH FILL. Anteriormente, a ordem das colunas na cláusula ORDER BY não era respeitada. #12306 (Anton Popov).
  • Evita a exceção “bad cast” quando há uma expressão que filtra dados por colunas virtuais (como _table em tabelas Merge) ou por colunas de “índice” em tabelas do sistema, como ao filtrar pelo nome do banco de dados em consultas a system.tables, e essa expressão retorna o tipo Nullable. Isso corrige #12166. #12305 (alexey-milovidov).
  • Exibir erro após falha ao carregar o TrieDictionary. #12290 (Vitaly Baranov).
  • A função arrayFill funcionava incorretamente com arrays vazios, o que podia levar a um travamento. Isso corrige #12263. #12279 (alexey-milovidov).
  • Foram implementadas conversões para o tipo comum nos tipos LowCardinality. Isso permite executar UNION ALL de tabelas com colunas LowCardinality e outras colunas. Isso corrige #8212. Isso corrige #4342. #12275 (alexey-milovidov).
  • Corrigido o comportamento que fazia com que, durante várias inserções sequenciais em StorageFile, o cabeçalho de alguns tipos especiais fosse gravado mais de uma vez. Isso corrigiu #6155. #12197 (Nikita Mikhaylov).
  • Corrigidas as funções lógicas para valores UInt8 quando diferentes de 0 ou 1. #12196 (Alexander Kazakov).
  • Restringe max_memory_usage* à memória residente do processo. #12182 (Azat Khuzhin).
  • Corrigida a verificação dos argumentos de dictGet durante a eliminação de funções injetivas no GROUP BY. #12179 (Azat Khuzhin).
  • Não divida o nome da tabela da fonte do dicionário em esquema e nome da tabela em si se a conexão ODBC não oferecer suporte a esquema. #12165 (Vitaly Baranov).
  • Corrigida a lógica incorreta em ALTER DELETE que levava à exclusão de registros quando a condição era avaliada como NULL. Isso corrige #9088. Isso fecha #12106. #12153 (alexey-milovidov).
  • Corrigida a transformação da consulta a ser enviada a um SGBD externo (por exemplo, MySQL, ODBC) na presença de aliases. Isso corrige #12032. #12151 (alexey-milovidov).
  • Corrigido um possível overflow na divisão inteira. Isso corrige #12119. #12140 (alexey-milovidov).
  • Corrigido um possível loop infinito em greatCircleDistance, geoDistance. Isso corrige #12117. #12137 (alexey-milovidov).
  • Normalize o tratamento do arquivo “pid”. Em versões anteriores, o servidor podia se recusar a iniciar se tivesse sido encerrado à força sem o desligamento adequado e houvesse outro processo com o mesmo pid do servidor executado anteriormente. Além disso, o arquivo pid podia ser removido durante uma inicialização malsucedida do servidor, mesmo que houvesse outro servidor em execução. Isso corrige #3501. #12133 (alexey-milovidov).
  • Corrigido o tratamento da dependência da tabela com ENGINE=Dictionary em relação ao dicionário. Isso corrige #10994. Isso corrige #10397. #12116 (Vitaly Baranov).
  • Corrigido o desempenho de consultas com UNION, afetado por um limite incorreto para o número total de threads. Corrige #12030. #12103 (Nikolai Kochetov).
  • Corrigido o segfault nos combinadores -StateResample. #12092 (Anton Popov).
  • Corrigidas as métricas vazias result_rows e result_bytes em system.quey_log para consultas SELECT. Corrige #11595. #12089 (Nikolai Kochetov).
  • Corrigida a limitação desnecessária do número de threads para consultas a partir de VIEW. Corrige #11937. #12085 (Nikolai Kochetov).
  • Corrigido um possível travamento ao usar um tipo incorreto para PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov).
  • Corrigido o erro Expected single dictionary argument for function na função defaultValueOfArgumentType com o tipo LowCardinality. Corrige #11808. #12056 (Nikolai Kochetov).
  • Foi corrigido o erro Cannot capture column em funções de ordem superior com argumento Tuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov).
  • Analisar os metadados das tabelas em paralelo ao carregar o banco de dados. Isso corrige a lentidão na inicialização do servidor quando há um grande número de tabelas. #12045 (tavplubix).
  • Faz a função de agregação topK retornar Enum para tipos Enum. Isso corrige #3740. #12043 (alexey-milovidov).
  • Corrigida a verificação de restrições para o caso de a restrição ser uma expressão constante. Isso corrige #11360. #12042 (alexey-milovidov).
  • Corrigida a comparação incorreta entre tuplas e colunas Nullable. Corrige #11985. #12039 (Nikolai Kochetov).
  • Corrigido o cálculo das permissões de acesso quando allow_introspection_functions=0. #12031 (Vitaly Baranov).
  • Corrigidos um resultado incorreto e uma possível falha ao invocar a função if com argumentos do tipo FixedString de tamanhos diferentes. Isso corrige #11362. #12021 (alexey-milovidov).
  • Uma consulta com a função neighbor como a única expressão no resultado pode retornar um resultado vazio se a função for chamada com o offset -9223372036854775808. Isso corrige #11367. #12019 (alexey-milovidov).
  • Corrigido o cálculo das permissões de acesso quando allow_ddl=0. #12015 (Vitaly Baranov).
  • Corrigido um possível estouro no tamanho do array em generateRandom que poderia levar a um travamento. Isso corrige #11371. #12013 (alexey-milovidov).
  • Corrigida uma possível exceção de ponto flutuante. Isso fecha #11378. #12005 (alexey-milovidov).
  • Corrigido o nome incorreto da configuração na mensagem de log ao iniciar o servidor. #11997 (alexey-milovidov).
  • Corrigido o erro Query parameter was not set no formato Values. Corrige #11918. #11936 (tavplubix).
  • Mantém aliases para substituições em consultas (consultas parametrizadas). Isso corrige #11914. #11916 (alexey-milovidov).
  • Corrigido o bug em que não ocorriam movimentações ao alterar a política de armazenamento a partir da política padrão. #11893 (Vladimir Chebotarev).
  • Corrigida uma possível exceção de ponto flutuante durante a análise de DateTime64. Isso corrige #11374. #11875 (alexey-milovidov).
  • Corrigido o cálculo de uso de memória na interface HTTP (pode ser significativo com wait_end_of_query=1). #11840 (Azat Khuzhin).
  • Analisar os metadados armazenados no ZooKeeper antes de verificar se são iguais. #11739 (Azat Khuzhin).

Melhoria de desempenho

  • O índice não era usado com o operador IN e literais, uma regressão de desempenho introduzida por volta da v19.3. Isso corrige #10574. #12062 (nvartolomei).

Melhoria em Compilação/Testes/Empacotamento

  • Instala ca-certificates antes do primeiro apt-get update no Dockerfile. #12095 (Ivan Blinkov).

Lançamento do ClickHouse v20.4.6.53-stable 2020-06-25

Correção de bug

  • Corrige um travamento raro causado pelo uso de uma coluna Nullable em uma condição prewhere. Continuação de #11608. #11869 (Nikolai Kochetov).
  • Não permitir arrayJoin dentro de funções de ordem superior. Isso estava causando falha na sincronização do protocolo. Isso fecha #3933. #11846 (alexey-milovidov).
  • Corrige o resultado incorreto da comparação entre FixedString e a constante String. Isso corrige #11393. Esse bug surgiu na versão 20.4. #11828 (alexey-milovidov).
  • Corrige o resultado incorreto de if() com NULLs na condição. #11807 (Artem Zuikov).
  • Corrigido o uso excessivo de threads em consultas. #11788 (Nikolai Kochetov).
  • Corrigido o comportamento inesperado de consultas como SELECT *, xyz.*, que eram executadas com sucesso quando o esperado era um erro. #11753 (hexiaoting).
  • Agora, os fetches de replicação serão cancelados durante o ALTER de metadados. #11744 (alesapin).
  • Corrigido o LOGICAL_ERROR causado pela dedução incorreta do tipo de literais complexos no formato de entrada Values. #11732 (tavplubix).
  • Correção de ORDER BY ... WITH FILL em colunas const. #11697 (Anton Popov).
  • Passe os timeouts adequados ao se comunicar com a bridge XDBC. Recentemente, os timeouts não estavam sendo respeitados ao verificar se a bridge estava ativa e ao receber metainformações. #11690 (alexey-milovidov).
  • Corrigido o uso de LIMIT n WITH TIES em conjunto com a instrução ORDER BY que contém aliases. #11689 (Anton Popov).
  • Corrige um erro que leva a um estado incorreto de system.mutations. Pode indicar que a mutação inteira já foi concluída, mas o servidor ainda tem tarefas MUTATE_PART na fila de replicação e tenta executá-las. Isso corrige #11611. #11681 (alesapin).
  • Adicionado suporte a expressões regulares com flags que não diferenciam maiúsculas de minúsculas. Isso corrige #11101 e #11506. #11649 (alexey-milovidov).
  • Remove a otimização trivial da consulta count se a segurança em nível de linha estiver definida. Em versões anteriores, o usuário obtinha a contagem total de registros em uma tabela, em vez da contagem filtrada. Isso corrige #11352. #11644 (alexey-milovidov).
  • Corrige filtros de Bloom para String (índices de salto de dados). #11638 (Azat Khuzhin).
  • Corrige uma falha rara causada pelo uso da coluna Nullable na condição prewhere. (Provavelmente está de alguma forma relacionado a #11572). #11608 (Nikolai Kochetov).
  • Corrigido o erro Block structure mismatch em consultas com amostragem ao ler da tabela Buffer. #11602 (Nikolai Kochetov).
  • Corrigido o código de saída incorreto do clickhouse-client quando exception.code() % 256 = 0. #11601 (filimonov).
  • Corrige um erro trivial na mensagem de log sobre “O tamanho do cache de marks foi reduzido” durante a inicialização do servidor. Isso fecha #11399. #11589 (alexey-milovidov).
  • Corrigido o erro Size of offsets does not match size of column em consultas com PREWHERE column in (subquery) e ARRAY JOIN. #11580 (Nikolai Kochetov).
  • Corrigido um segfault raro em SHOW CREATE TABLE Corrige #11490. #11579 (tavplubix).
  • Todas as consultas em uma sessão HTTP tinham o mesmo query_id. Isso foi corrigido. #11578 (tavplubix).
  • Agora, o contêiner Docker do clickhouse-server dará preferência ao IPv6 ao verificar se o servidor está ativo. #11550 (Ivan Starkov).
  • Corrige shard_num/replica_num em <node> (quebra use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin).
  • Corrige uma condição de corrida que pode levar a uma exceção durante a exclusão de uma tabela. É um pouco complicada, mas não é nada perigosa. Se quiser uma explicação, é só me chamar no Telegram. #11523 (alesapin).
  • Corrige um vazamento de memória quando ocorre uma exceção no meio da agregação com funções -State. Isso corrige #8995. #11496 (alexey-milovidov).
  • Se o índice de data skipping depender de colunas que seriam modificadas durante a mesclagem em segundo plano (para SummingMergeTree, AggregatingMergeTree, bem como para TTL GROUP BY), ele era calculado incorretamente. Esse problema foi corrigido movendo o cálculo do índice para depois da mesclagem, para que ele seja calculado sobre os dados mesclados. #11162 (Azat Khuzhin).
  • Removidos os patches antigos do libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 Isso permite desabilitar -fno-omit-frame-pointer nas compilações do clang, o que melhora o desempenho em pelo menos 1% em média. #10761 (Amos Bird).
  • Corrigido o uso da chave primária quando encapsulada em uma função com o modificador ‘FINAL’ e a otimização de ‘ORDER BY’. #10715 (Anton Popov).

melhoria em compilação/testes/empacotamento

  • Corrige vários erros menores em testes unitários. #11262 (alesapin).
  • Corrige um falso positivo do MSan em MergeTreeIndexFullText. O problema apareceu pela primeira vez em #9968. #10801 (alexey-milovidov).

Lançamento do ClickHouse v20.4.5.36-stable 2020-06-10

Correção de bug

  • Corrige o erro Data compressed with different methods, que pode ocorrer se min_bytes_to_use_direct_io estiver habilitado, PREWHERE estiver ativo e for usado SAMPLE ou um número elevado de threads. Isso corrige #11539. #11540 (alexey-milovidov).
  • Corrigido o retorno do tamanho comprimido dos codecs. #11448 (Nikolai Kochetov).
  • Corrige a falha do servidor quando uma coluna usa um codec de compressão com argumentos não literais. Corrige #11365. #11431 (alesapin).
  • Corrige pointInPolygon quando o ponto é nan. Corrige #11375. #11421 (Alexey Ilyukhov).
  • Corrigida uma possível leitura de memória não inicializada durante o desligamento do MergeTree caso a tabela não tenha sido criada com sucesso. #11420 (alexey-milovidov).
  • Corrigido o geohashesInBox para argumentos fora do intervalo de latitude/longitude. #11403 (Vasily Nemkov).
  • Corrige possível erro Pipeline stuck em consultas com ordenação externa e limite. Corrige #11359. #11366 (Nikolai Kochetov).
  • Removido o bloqueio redundante durante o envio de partes no ReplicatedMergeTree. #11354 (alesapin).
  • Corrigido o suporte a \G (saída vertical) no clickhouse-client em modo multilinha. Fecha #9933. #11350 (alexey-milovidov).
  • Corrigido um possível segfault ao usar o banco de dados Lazy. #11348 (alexey-milovidov).
  • Corrigido travamento em quantilesExactWeightedArray. #11337 (Nikolai Kochetov).
  • Agora, as merges são interrompidas antes da alteração de metadados em consultas ALTER. #11335 (alesapin).
  • Faz com que a gravação em MATERIALIZED VIEW com a configuração parallel_view_processing = 1 volte a ser paralela. Corrige #10241. #11330 (Nikolai Kochetov).
  • Corrigido o visitParamExtractRaw quando o JSON extraído contém strings com { ou [ sem par. #11318 (Ewout).
  • Corrige uma condição de corrida raríssima no ThreadPool. #11314 (alexey-milovidov).
  • Corrigida uma condição de corrida sem impacto significativo no clickhouse-copier. Encontrada em testes de integração. #11313 (alexey-milovidov).
  • Corrige um possível problema de memória não inicializada na conversão. Exemplo: SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov).
  • Corrige o problema em que a análise de índice não funciona quando uma tabela tem uma coluna Array na chave primária e uma consulta filtra por essa coluna com as funções empty ou notEmpty. Isso corrige #11286. #11303 (alexey-milovidov).
  • Corrige um bug em que a estimativa da velocidade da consulta pode estar incorreta, e o limite de min_execution_speed pode não funcionar ou funcionar incorretamente se a consulta for limitada pelas configurações max_network_bandwidth, max_execution_speed ou priority. Altera o valor padrão de timeout_before_checking_execution_speed para um valor diferente de zero, porque, caso contrário, as configurações min_execution_speed e max_execution_speed não têm efeito. Isso corrige #11297. Isso corrige #5732. Isso corrige #6228. Melhoria de usabilidade: evita a concatenação da mensagem de exceção com a barra de progresso no clickhouse-client. #11296 (alexey-milovidov).
  • Corrige a falha quando SET DEFAULT ROLE é chamado com argumentos incorretos. Isso corrige #10586. #11278 (Vitaly Baranov).
  • Corrige um travamento ao ler dados malformados no formato Protobuf. Corrige #5957 e #11203. #11258 (Vitaly Baranov).
  • Corrigido um bug em que o dicionário do tipo cache podia retornar o valor padrão em vez do valor normal (quando havia apenas chaves expiradas). Isso afeta apenas campos do tipo string. #11233 (Nikita Mikhaylov).
  • Corrigido o erro Block structure mismatch in QueryPipeline ao ler de VIEW com constantes na consulta interna. Corrige #11181. #11205 (Nikolai Kochetov).
  • Corrige a possível exceção Invalid status for associated output. #11200 (Nikolai Kochetov).
  • Corrigido o possível erro Cannot capture column em funções de ordem superior com o argumento capturado Array(Array(LowCardinality)). #11185 (Nikolai Kochetov).
  • Corrigido o globbing do S3, que podia falhar quando havia mais de 1000 chaves e em alguns backends. #11179 (Vladimir Chebotarev).
  • Se o índice de data skipping dependia de colunas que seriam modificadas durante o merge em segundo plano (para SummingMergeTree, AggregatingMergeTree, bem como para TTL GROUP BY), ele era calculado incorretamente. Esse problema foi corrigido movendo o cálculo do índice para depois do merge, para que o índice seja calculado sobre os dados já mesclados. #11162 (Azat Khuzhin).
  • Corrige um problema de desempenho do Kafka relacionado a reagendamentos baseados em limites, que eram sempre aplicados. #11149 (filimonov).
  • Correção para o travamento que às vezes ocorria durante o DROP da tabela com engine=Kafka (ou durante reinicializações do servidor). #11145 (filimonov).
  • Corrige a alocação excessiva de threads para consultas simples (otimização para reduzir o número de threads, que ficou parcialmente comprometida após alterações no pipeline). #11114 (Azat Khuzhin).
  • Corrige a otimização de predicados para consultas distribuídas (enable_optimize_predicate_expression=1) em consultas com cláusula HAVING (ou seja, quando é necessário filtrar no servidor iniciador), preservando a ordem das expressões (e isso basta para corrigir), e também força o agregador a usar nomes de colunas em vez de índices. Corrige: #10613, #11413. #10621 (Azat Khuzhin).

Melhoria em Compilação/Testes/Empacotamento

  • Corrigidos vários testes de integração instáveis. #11355 (alesapin).

Lançamento do ClickHouse v20.4.4.18-stable 2020-05-26

Nenhuma alteração em comparação com a v20.4.3.16-stable.

Lançamento do ClickHouse v20.4.3.16-stable 2020-05-23

Correção de bug

  • Removido o logging da tarefa de finalização de mutation quando nada foi finalizado. #11109 (alesapin).
  • Corrigido o vazamento de memória em registerDiskS3. #11074 (Pavel Kovalenko).
  • Corrigida a potencial perda de dados durante o encerramento da tabela com motor Kafka. #11048 (filimonov).
  • Corrigidos bugs na resolução de argumentos de parseDateTime64BestEffort. #11038 (Vasily Nemkov).
  • Corrigido um erro potencial de use-after-free, embora muito raro, no MergeTree caso a tabela não fosse criada com sucesso. #10986, #10970 (alexey-milovidov).
  • Corrigido o tratamento dos metadados (caminho relativo para renomeação) e dos dados (caminho relativo para link simbólico) no banco de dados Atomic. #10980 (Azat Khuzhin).
  • Corrigida a falha do servidor ao executar consultas ALTER e DROP DATABASE de forma concorrente com o engine de banco de dados Atomic. #10968 (tavplubix).
  • Corrigido o tamanho incorreto dos dados brutos no método getRawData(). #10964 (Igr).
  • Corrigida a incompatibilidade da agregação em dois níveis entre a versão 20.1 e as anteriores. Essa incompatibilidade ocorre quando versões diferentes do ClickHouse são usadas no nó iniciador e nos nós remotos, o resultado de GROUP BY é grande e a agregação é feita por um único campo String. Isso leva a várias linhas não mescladas para uma única chave no resultado. #10952 (alexey-milovidov).
  • Corrigido o envio de arquivos parcialmente escritos pelo DistributedBlockOutputStream. #10940 (Azat Khuzhin).
  • Corrigida falha em SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov).
  • Corrigido o travamento que às vezes ocorria ao executar DROP em uma tabela com mecanismo Kafka. (ou durante reinicializações do servidor). #10910 (filimonov).
  • Corrigida a impossibilidade de executar vários ALTER RENAME, como a TO b, c TO a. #10895 (alesapin).
  • Corrigida uma possível condição de corrida que poderia ocorrer ao obter o resultado do estado de uma função de agregação a partir de várias threads para a mesma coluna. A única forma de isso acontecer é ao usar a função finalizeAggregation durante a leitura de uma tabela com a engine Memory, que armazena o estado de AggregateFunction para a função quantile*. #10890 (Nikolai Kochetov).
  • Corrigida a compatibilidade com versões anteriores de tuplas em tabelas Distributed. #10889 (Anton Popov).
  • Corrigido SIGSEGV em StringHashTable caso essa chave não exista. #10870 (Azat Khuzhin).
  • Corrigidos travamentos do WATCH após a remoção da tabela LiveView do banco de dados com engine Atomic. #10859 (tavplubix).
  • Corrigido um bug no ReplicatedMergeTree que podia fazer com que algum ALTER na consulta OPTIMIZE ficasse travado, aguardando alguma réplica após ela se tornar inativa. #10849 (tavplubix).
  • Agora, as restrições são atualizadas quando a coluna usada na expressão CONSTRAINT é renomeada. Corrige #10844. #10847 (alesapin).
  • Corrigida uma possível leitura de memória não inicializada no dicionário de cache. #10834 (alexey-milovidov).
  • Foi corrigida a ordem das colunas após Block::sortColumns(). #10826 (Azat Khuzhin).
  • Corrigido o problema com a bridge ODBC quando não é solicitado o uso de aspas em identificadores. Corrige #7984. #10821 (alexey-milovidov).
  • Corrigidos os problemas reportados por UBSan e MSan em DateLUT. #10798 (alexey-milovidov).
  • Corrigida a conversão de tipo incorreta nas condições de chave. Corrige #6287. #10791 (Andrew Onyshchuk).
  • Corrigido o comportamento de parallel_view_processing. Agora, todas as inserções em MATERIALIZED VIEW, sem exceção, devem ser concluídas caso ocorra uma exceção. Corrige #10241. #10757 (Nikolai Kochetov).
  • Corrigidos os combinadores -OrNull e -OrDefault quando combinados com -State. #10741 (hcz).
  • Corrigido um possível estouro de buffer na função h3EdgeAngle. #10711 (alexey-milovidov).
  • Corrigido bug que bloqueava ALTERs concorrentes quando a tabela tinha muitas partes. #10659 (alesapin).
  • Corrigido o desreferenciamento de nullptr em StorageBuffer caso o servidor fosse desligado antes da inicialização da tabela. #10641 (alexey-milovidov).
  • Corrigido o optimize_skip_unused_shards com LowCardinality. #10611 (Azat Khuzhin).
  • Corrigido o tratamento da variável de condição para mutações síncronas. Em alguns casos, os sinais dessa variável de condição podiam se perder. #10588 (Vladimir Chebotarev).
  • Foi corrigida uma possível falha quando createDictionary() é chamada antes de loadStoredObject() terminar. #10587 (Vitaly Baranov).
  • Corrigido o SELECT da coluna ALIAS quando o tipo da expressão padrão é diferente do tipo da coluna. #10563 (Azat Khuzhin).
  • Implementada a comparação entre valores DateTime64 e String. #10560 (Vasily Nemkov).
  • Desativa por padrão a otimização de GROUP BY por sharding_key (optimize_distributed_group_by_sharding_key havia sido introduzido e deixado desativado por padrão devido às particularidades da análise da sharding_key; um exemplo simples é o uso de if na chave de sharding) e corrige isso para WITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin).
  • Corrigido #10263. #10486 (Azat Khuzhin).
  • Adicionados testes para a configuração max_rows_to_sort. #10268 (alexey-milovidov).
  • Adicionada compatibilidade com versões anteriores para a criação de índice de filtro de Bloom. #10551. #10569 (Winter Zhang).

Lançamento do ClickHouse v20.4.2.9, 2020-05-12

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

  • As tabelas de sistema (por exemplo, system.query_log, system.trace_log, system.metric_log) usam o formato compacto de partes de dados para partes com menos de 10 MiB. O formato compacto de partes de dados é compatível desde a versão 20.3. Se você pretende fazer downgrade para uma versão anterior à 20.3, deve excluir manualmente os dados das tabelas de logs do sistema em /var/lib/clickhouse/data/system/.
  • Quando a comparação de strings envolve FixedString e os argumentos comparados têm tamanhos diferentes, faça a comparação como se a string menor fosse preenchida até o comprimento da maior. Isso visa à compatibilidade com SQL, se considerarmos que o tipo de dado FixedString corresponde ao SQL CHAR. Isso corrige #9272. #10363 (alexey-milovidov)
  • SHOW CREATE TABLE passou a ser multilinha. Agora está mais legível e mais parecido com o MySQL. #10049 (Azat Khuzhin)
  • Foi adicionada a configuração validate_polygons, usada na função pointInPolygon e habilitada por padrão. #9857 (alexey-milovidov)

Novo recurso

  • Adicionado suporte a conexão segura do ClickHouse com o ZooKeeper #10184 (Konstantin Lebedev)
  • Suporte a handlers HTTP personalizados. Veja a descrição em #5436. #7572 (Winter Zhang)
  • Adicionado o formato de entrada/saída MessagePack. #9889 (Kruglov Pavel)
  • Adicionado o formato de entrada Regexp. #9196 (Kruglov Pavel)
  • Adicionado o formato de saída Markdown para incorporar tabelas em documentos Markdown. #10317 (Kruglov Pavel)
  • Adicionado suporte à seção de configurações personalizadas em dicionários. Também corrige o problema #2829. #10137 (Artem Streltsov)
  • Adicionado suporte a configurações personalizadas em consultas DDL para CREATE DICTIONARY #10465 (Artem Streltsov)
  • Adiciona um profiler de memória simples para todo o servidor, que coleta contextos de alocação quando o uso de memória do servidor ultrapassa o próximo limite de alocação. #10444 (alexey-milovidov)
  • Adicionada a configuração always_fetch_merged_part, que impede a réplica de mesclar partes por conta própria e faz com que ela sempre prefira baixá-las de outras réplicas. #10379 (alesapin)
  • Adiciona a função JSONExtractKeysAndValuesRaw, que extrai dados brutos de objetos JSON #10378 (hcz)
  • Adicionar o uso de memória do SO a system.asynchronous_metrics. #10361 (alexey-milovidov)
  • Foram adicionadas variantes genéricas para as funções least e greatest. Agora, elas funcionam com um número arbitrário de argumentos de tipos arbitrários. Isso corrige #4767 #10318 (alexey-milovidov)
  • Agora o ClickHouse controla, do seu lado, os timeouts das fontes de dicionário. Duas novas configurações foram adicionadas à configuração do dicionário do tipo cache: strict_max_lifetime_seconds, que por padrão é max_lifetime, e query_wait_timeout_milliseconds, que por padrão é de um minuto. A primeira configuração também é útil com a configuração allow_read_expired_keys (para impedir a leitura de chaves expiradas há muito tempo). #10337 (Nikita Mikhaylov)
  • Adicionar log_queries_min_type para filtrar quais entradas serão registradas no query_log #10053 (Azat Khuzhin)
  • Adicionada a função isConstant. Essa função verifica se seu argumento é uma expressão constante e retorna 1 ou 0. Ela se destina a desenvolvimento, depuração e demonstração. #10198 (alexey-milovidov)
  • adiciona joinGetOrNull para retornar NULL quando a chave não existir, em vez de retornar o valor padrão. #10094 (Amos Bird)
  • Considere NULL igual a NULL no operador IN, caso a opção transform_null_in esteja definida. #10085 (achimbab)
  • Adicionado ALTER TABLE ... RENAME COLUMN para a família de motores de tabela MergeTree. #9948 (alesapin)
  • Adicionado suporte a INSERT SELECT distribuído em paralelo. #9759 (vxider)
  • Adicionada a capacidade de fazer consultas em Distributed sobre Distributed (sem distributed_group_by_no_merge) … #9923 (Azat Khuzhin)
  • Adiciona a função arrayReduceInRanges, que agrega os elementos do array nos intervalos especificados. #9598 (hcz)
  • Adicionar o status do Dicionário ao exporter do Prometheus. #9622 (Guillaume Tassery)
  • Adiciona a função arrayAUC #8698 (taiyang-li)
  • Suporte à instrução DROP VIEW para melhorar a compatibilidade com o TPC-H. #9831 (Amos Bird)
  • Adicionada a opção ‘strict_order’ ao windowFunnel() #9773 (achimbab)
  • Adicionado suporte aos operadores SQL DATE e TIMESTAMP, por exemplo, SELECT date '2001-01-01' #9691 (Artem Zuikov)

recurso experimental

  • Foi adicionado o engine de banco de dados experimental Atomic. Ele oferece suporte às consultas DROP e RENAME TABLE sem bloqueio e à consulta atômica EXCHANGE TABLES t1 AND t2 #7512 (tavplubix)
  • Suporte inicial ao ReplicatedMergeTree sobre S3 (funciona de forma não ideal) #10126 (Pavel Kovalenko)

Correção de bug

  • Corrigidos resultados escalares incorretos na consulta interna de MATERIALIZED VIEW quando essa consulta continha uma tabela dependente #10603 (Nikolai Kochetov)
  • Corrigido um bug que fazia com que as requisições HTTP ficassem bloqueadas quando o cliente fechava a conexão com readonly=2 e cancel_http_readonly_queries_on_client_close=1. #10684 (tavplubix)
  • Corrige segfault em StorageBuffer quando uma exceção é gerada ao iniciar o servidor. Corrige #10550 #10609 (tavplubix)
  • A consultaSYSTEM DROP DNS CACHE agora também remove caches usados para verificar se o usuário tem permissão para se conectar a partir de determinados endereços IP #10608 (tavplubix)
  • Corrige o uso de múltiplos operadores IN com o mesmo conjunto em uma única consulta. Corrige #10539 #10686 (Anton Popov)
  • Corrige travamento em generateRandom com tipos aninhados. Corrige #10583. #10734 (Nikolai Kochetov)
  • Corrige a corrupção de dados na coluna de chave LowCardinality(FixedString) em SummingMergeTree, que poderia ter ocorrido após a mesclagem. Corrige #10489. #10721 (Nikolai Kochetov)
  • Corrigida a lógica da configuração aggregation_memory_efficient_merge_threads. #10667 (palasonic1)
  • Corrige o problema de desaparecimento dos totais. Os totais poderiam ter sido filtrados se a consulta tivesse JOIN ou uma subconsulta com uma condição WHERE externa. Corrige #10674 #10698 (Nikolai Kochetov)
  • Corrige a ausência de execução paralela de consultas remotas com distributed_aggregation_memory_efficient habilitado. Corrige #10655 #10664 (Nikolai Kochetov)
  • Corrige a possível contagem incorreta de linhas em consultas com LIMIT. Corrige #10566, #10709 #10660 (Nikolai Kochetov)
  • Corrige a corrupção de índice, que pode ocorrer em alguns casos após a mesclagem de partes compactas em outra parte compacta. #10531 (Anton Popov)
  • Corrigida a situação em que a mutation concluía todas as partes, mas ficava presa em is_done=0. #10526 (alesapin)
  • Corrigido overflow no início da epoch unix para fusos horários com deslocamento fracionário em relação ao UTC. Corrige #9335. #10513 (alexey-milovidov)
  • Melhorias no diagnóstico de formatos de entrada. Corrige #10204 #10418 (tavplubix)
  • Corrigido overflow numérico em simpleLinearRegression() para inteiros grandes #10474 (hcz)
  • Corrigido use-after-free no encerramento do Distributed, evitando aguardar o envio de todos os lotes #10491 (Azat Khuzhin)
  • Adiciona certificados de CA à imagem Docker do clickhouse-server #10476 (filimonov)
  • Corrige um raro loop infinito que poderia ocorrer ao usar a função addressToLine ou colunas AggregateFunctionState. #10466 (Alexander Kuzmenkov)
  • Tratar o “no node error” do ZooKeeper durante consulta distribuída #10050 (Daniel Chen)
  • Corrigido um bug que impedia o servidor de anexar a tabela após a alteração do valor padrão da coluna. #10441 (alesapin)
  • Fazer a conversão implícita do tipo da expressão padrão para o tipo da coluna nas colunas ALIAS #10563 (Azat Khuzhin)
  • Não remova o diretório de metadados se ATTACH DATABASE falhar #10442 (Winter Zhang)
  • Evita depender do tzdata do sistema. Corrige o carregamento do fuso horário Africa/Casablanca no CentOS 8. Corrige #10211 #10425 (alexey-milovidov)
  • Corrige alguns problemas quando os dados são inseridos com quorum e depois excluídos (DROP PARTITION, TTL etc.). Isso levava ao travamento de INSERTs ou a exceções falso-positivas em SELECTs. Corrige #9946 #10188 (Nikita Mikhaylov)
  • Verificação do número e do tipo de argumentos ao criar o índice BloomFilter #9623 #10431 (Winter Zhang)
  • Prefira fallback_to_stale_replicas em vez de skip_unavailable_shards; caso contrário, se ambas as configurações forem especificadas e não houver réplicas atualizadas, a consulta falhará (patch de @alex-zaitsev ) #10422 (Azat Khuzhin)
  • Corrige o problema em que uma consulta com ARRAY JOIN, ORDER BY e LIMIT pode retornar um resultado incompleto. Corrige #10226. #10427 (Vadim Plakhtinskiy)
  • Adiciona o nome do banco de dados ao nome do dicionário após DETACH/ATTACH. Corrige a tabela system.dictionaries e a consulta SYSTEM RELOAD #10415 (Azat Khuzhin)
  • Corrigido um possível resultado incorreto para extremos no pipeline de processadores. #10131 (Nikolai Kochetov)
  • Corrige um possível segfault quando a configuração distributed_group_by_no_merge está habilitada (introduzida na versão 20.3.7.46 por #10131). #10399 (Nikolai Kochetov)
  • Corrige o achatamento incorreto dos tipos de dados Array(Tuple(...)). Resolve #10259 #10390 (alexey-milovidov)
  • Corrigidos os nomes de colunas de constantes dentro de JOIN que podem entrar em conflito com os nomes de constantes fora de JOIN #9950 (Alexander Kuzmenkov)
  • Corrigida a ordem das colunas após Block::sortColumns() #10826 (Azat Khuzhin)
  • Corrigido possível erro Pipeline stuck no ConcatProcessor, que pode ocorrer em consulta remota. #10381 (Nikolai Kochetov)
  • Não reserve espaço em disco para agregações. Corrige #9241 #10375 (Azat Khuzhin)
  • Corrige o comportamento incorreto das funções datetime para fusos horários que alternaram entre deslocamentos positivos e negativos em relação a UTC (por exemplo, Pacific/Kiritimati). Corrige #7202 #10369 (alexey-milovidov)
  • Evita um loop infinito na função dictIsIn. Corrige #515 #10365 (alexey-milovidov)
  • Desabilitada por padrão a otimização de GROUP BY sharding_key e corrigida para WITH ROLLUP/CUBE/TOTALS #10516 (Azat Khuzhin)
  • Verifica o código de erro ao verificar as partes e não marca a parte como corrompida se o erro for algo como “memória insuficiente”. Corrige #6269 #10364 (alexey-milovidov)
  • Mostrar informações sobre dicionários não carregados nas tabelas de sistema. #10234 (Vitaly Baranov)
  • Corrigido o dereferenciamento de nullptr em StorageBuffer caso o servidor tivesse sido desligado antes da inicialização da tabela. #10641 (alexey-milovidov)
  • Corrigida a condição de corrida entre DROP e OPTIMIZE no ReplicatedMergeTree. DROP podia deixar resíduos no caminho da réplica no ZooKeeper se houvesse uma consulta OPTIMIZE concorrente. #10312 (tavplubix)
  • Corrige o erro ‘Logical error: CROSS JOIN has expressions’ em consultas que misturam vírgulas e junções nomeadas. Corrige #9910 #10311 (Artem Zuikov)
  • Corrigidas consultas com max_bytes_before_external_group_by. #10302 (Artem Zuikov)
  • Corrige o problema de limitação da profundidade máxima de recursão no analisador sintático em determinados casos. Isso corrige #10283 Esta correção pode introduzir uma pequena incompatibilidade: consultas longas e complexas via clickhouse-client podem deixar de funcionar, e você deve ajustar as configurações max_query_size e max_parser_depth conforme necessário. #10295 (alexey-milovidov)
  • Permite usar count(*) com várias junções. Corrige #9853 #10291 (Artem Zuikov)
  • Corrigido o erro Pipeline stuck que ocorria com max_rows_to_group_by e group_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov)
  • Corrige o erro ‘Cannot add column’ ao criar o dicionário range_hashed usando uma consulta DDL. Corrige #10093. #10235 (alesapin)
  • Corrigida uma possível exceção rara Cannot drain connections: cancel first. #10239 (Nikolai Kochetov)
  • Corrigido bug em que o ClickHouse exibia a mensagem de error “Unknown function lambda.” quando o usuário tentava executar ALTER UPDATE/DELETE em tabelas com ENGINE = Replicated*. A verificação de funções não determinísticas agora trata corretamente expressões lambda. #10237 (Alexander Kazakov)
  • Corrigido um segfault relativamente raro em StorageSystemTables que ocorre quando SELECT … FROM system.tables é executado em um banco de dados com engine Lazy. #10209 (Alexander Kazakov)
  • Corrigida a possível execução infinita de uma consulta quando ela deveria, na verdade, parar em LIMIT, ao ler de uma fonte infinita como system.numbers ou system.zeros. #10206 (Nikolai Kochetov)
  • Corrigida a função “generateRandom” para o tipo Date. Isso corrige #9973. Corrigido um caso de borda em que datas do ano 2106 são inseridas em tabelas MergeTree com particionamento no estilo antigo, mas as partições são nomeadas com o ano 1970. #10218 (alexey-milovidov)
  • Converta os tipos caso a definição da tabela de uma View não corresponda à consulta SELECT. Isso corrige #10180 e #10022 #10217 (alexey-milovidov)
  • Corrige parseDateTimeBestEffort para strings em RFC-2822 quando o dia da semana é terça-feira ou quinta-feira. Isso corrige #10082 #10214 (alexey-milovidov)
  • Corrigidos os nomes das colunas de constantes dentro de JOIN que podem conflitar com os nomes de constantes fora de JOIN. #10207 (alexey-milovidov)
  • Corrige a otimização move-to-prewhere na presença de funções arrayJoin (em alguns casos). Isso corrige #10092 #10195 (alexey-milovidov)
  • Corrigido problema com o separador aparecendo no SCRAMBLE para o mysql-connector-java (JDBC) nativo #10140 (BohuTANG)
  • Corrigido o uso do banco de dados atual na verificação de acesso quando o banco de dados não é especificado. #10192 (Vitaly Baranov)
  • Corrigido o ALTER em tabelas com partes compactas. #10130 (Anton Popov)
  • Adicionada a possibilidade de flexibilizar a restrição ao uso de funções não determinísticas em mutações com a configuração allow_nondeterministic_mutations. #10186 (filimonov)
  • Corrigida a invocação de DROP TABLE para Dicionário #10165 (Azat Khuzhin)
  • Converte blocos se a estrutura não corresponder ao fazer INSERT na tabela Distributed #10135 (Azat Khuzhin)
  • O número de linhas foi registrado incorretamente (como a soma de todas as partes) quando o bloco inserido era dividido em partes com chave de partição. #10138 (alexey-milovidov)
  • Adiciona algumas verificações de argumentos e suporte a argumentos de identificador para o mecanismo de banco de dados MySQL #10077 (Winter Zhang)
  • Corrige uma verificação incorreta de index_granularity_bytes ao criar uma nova réplica. Corrige #10098. #10121 (alesapin)
  • Corrigido erro na consulta CHECK TABLE quando a tabela contém índices skip. #10068 (alesapin)
  • Correção do Distributed-over-Distributed com apenas um shard em uma tabela aninhada #9997 (Azat Khuzhin)
  • Corrige a possível perda de linhas em consultas com JOIN e UNION ALL. Corrige #9826, #10113. … #10099 (Nikolai Kochetov)
  • Corrigido um bug no Dicionário quando o servidor ClickHouse local é usado como origem. Isso pode causar corrupção de memória se os tipos no dicionário e na origem não forem compatíveis. #10071 (alesapin)
  • Corrigida a inicialização de tabelas replicadas ao atualizar a partir de uma versão antiga do ClickHouse em que o nó /table/replicas/replica_name/metadata não existe. Corrige #10037. #10095 (alesapin)
  • Corrigido o erro Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Isso acontecia quando a configuração distributed_aggregation_memory_efficient estava habilitada e a consulta distribuída lia dados agregados com agregação de nível único e de dois níveis, misturados de diferentes shards. #10063 (Nikolai Kochetov)
  • Correção de deadlock quando um banco de dados com visão materializada falhava ao fazer attach na inicialização #10054 (Azat Khuzhin)
  • Corrige uma falha de segmentação que podia ocorrer em GROUP BY com chaves de string contendo bytes zero no final (#8636, #8925). … #10025 (Alexander Kuzmenkov)
  • Corrige resultados incorretos de consultas distribuídas quando um alias podia se sobrepor ao nome qualificado da coluna. Corrige #9672 #9714 #9972 (Artem Zuikov)
  • Corrigido um possível deadlock em SYSTEM RESTART REPLICAS #9955 (tavplubix)
  • Corrige o número de threads usadas na execução remota de consultas (regressão de desempenho desde a versão 20.3). Isso acontecia quando uma consulta de uma tabela Distributed era executada simultaneamente em shards locais e remotos. Corrige #9965 #9971 (Nikolai Kochetov)
  • Corrigida a lógica de DeleteOnDestroy em ATTACH PART, que poderia levar à remoção automática da parte anexada, e adicionados alguns testes #9410 (Vladimir Chebotarev)
  • Corrige um bug que fazia as consultas DDL ON CLUSTER travarem na inicialização do servidor. #9927 (Gagan Arneja)
  • Corrigido um bug em que as tabelas necessárias não eram obtidas em uma das etapas de processamento de consultas a alguns bancos de dados. Corrige #9699. #9949 (achulkov2)
  • Corrige o erro ‘Not found column in block’ quando JOIN aparece com TOTALS. Corrige #9839 #9939 (Artem Zuikov)
  • Corrigido o parsing de múltiplos hosts definidos no comando CREATE USER #9924 (Vitaly Baranov)
  • Corrigido o TRUNCATE para o Join table engine (#9917). #9920 (Amos Bird)
  • Corrigida a condição de corrida entre drop e optimize no ReplicatedMergeTree. #9901 (alesapin)
  • Corrige o DISTINCT em Distributed quando optimize_skip_unused_shards está ativado. #9808 (Azat Khuzhin)
  • Corrigido o erro “scalar does not exist” em ALTERs (#9878). … #9904 (Amos Bird)
  • Corrigido erro com nomes qualificados em distributed_product_mode=\'local\'. Corrige #4756 #9891 (Artem Zuikov)
  • Para consultas INSERT, os shards agora ajustam as configurações do iniciador às suas restrições, em vez de gerar uma exceção. Essa correção permite enviar consultas INSERT para um shard com restrições diferentes. Essa alteração aprimora a correção #9447. #9852 (Vitaly Baranov)
  • Adiciona algumas tentativas adicionais ao fazer commit dos offsets no broker do Kafka, já que ele pode rejeitar o commit se, durante offsets.commit.timeout.ms, não houver réplicas suficientes disponíveis para o tópico __consumer_offsets #9884 (filimonov)
  • Corrigido o comportamento do engine Distributed quando colunas virtuais da tabela subjacente são usadas em WHERE #9847 (Azat Khuzhin)
  • Corrigidos alguns casos em que o fuso horário do argumento da função não estava sendo usado corretamente. #9574 (Vasily Nemkov)
  • Corrigido o erro ‘Expressões diferentes com o mesmo alias’ quando a consulta tem PREWHERE e WHERE em tabela distribuída e SET distributed_product_mode = 'local'. #9871 (Artem Zuikov)
  • Corrige o consumo excessivo de memória em mutações de tabelas com chave primária composta. Isso corrige #9850. #9860 (alesapin)
  • Corrigido o cálculo dos privilégios para funções de introspecção com base na configuração allow_introspection_functions. #9840 (Vitaly Baranov)
  • Corrigido max_distributed_connections (com e sem Processors) #9673 (Azat Khuzhin)
  • Corrige a possível exceção Got 0 in totals chunk, expected 1 no cliente. Isso acontecia em consultas com JOIN quando a tabela à direita do JOIN tinha zero linhas. Exemplo: select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. … #9823 (Nikolai Kochetov)
  • Corrige o erro ‘o reescritor de COMMA para CROSS JOIN não está habilitado ou não consegue reescrever a consulta’ em casos de subconsultas com COMMA JOIN fora das listas de tabelas (isto é, em WHERE). Corrige #9782 #9830 (Artem Zuikov)
  • Corrigida a falha que fazia o servidor travar quando optimize_skip_unused_shards está definido e a expressão da chave não pode ser convertida para o tipo do campo #9804 (Azat Khuzhin)
  • Corrigido o tratamento de string vazia em splitByString. #9767 (hcz)
  • Corrigida a consulta ALTER TABLE DELETE COLUMN com falha em partes compactas. #9779 (alesapin)
  • Corrigida a ausência de rows_before_limit_at_least para consultas via HTTP (com pipeline de processors). Corrige #9730 #9757 (Nikolai Kochetov)
  • Corrige o consumo excessivo de memória em consultas ALTER (mutações). Isso corrige #9533 e #9670. #9754 (alesapin)
  • Corrige um possível erro permanente “Não é possível agendar uma tarefa”. #9154 (Azat Khuzhin)
  • Corrige bug no uso de backticks no DDL de dicionários externos. Corrige #9619. #9734 (alesapin)
  • Corrigida uma condição de corrida em text_log. Não corresponde a nenhum bug real. #9726 (alexey-milovidov)
  • Corrigido um bug na replicação que impedia a replicação de funcionar se o usuário tivesse executado mutações na versão anterior. Isso corrige #9645. #9652 (alesapin)
  • Corrigidos os nomes incorretos de funções internas de sumKahan e sumWithOverflow. Isso causava uma exceção ao usar essas funções em consultas remotas. #9636 (Azat Khuzhin)
  • Adicionada a configuração use_compact_format_in_distributed_parts_names, que permite gravar arquivos de consultas INSERT na tabela Distributed em um formato mais compacto. Isso corrige #9647. #9653 (alesapin)
  • Corrigido RIGHT e FULL JOIN com LowCardinality nas chaves de junção. #9610 (Artem Zuikov)
  • Corrigidas possíveis exceções Size of filter does not match size of column e Invalid number of rows in Chunk em MergeTreeRangeReader. Elas podiam ocorrer ao executar PREWHERE em alguns casos. #9612 (Anton Popov)
  • Permite ALTER ON CLUSTER em tabelas Distributed com replicação interna. Isso corrige #3268 #9617 (shinoi2)
  • Corrigido o problema em que o fuso horário não era preservado ao escrever uma expressão aritmética simples como time + 1 (em contraste com uma expressão como time + INTERVAL 1 SECOND). Isso corrige #5743 #9323 (alexey-milovidov)

Melhoria

  • Use o fuso horário ao comparar DateTime com um literal de string. Isso corrige #5206. #10515 (alexey-milovidov)
  • Exibe informações de diagnóstico detalhadas se o valor Decimal não puder ser analisado no formato de entrada de texto. #10205 (alexey-milovidov)
  • Adicionar métricas de tarefas/memória para os pools de agendamento Distributed/Buffer #10449 (Azat Khuzhin)
  • Exibe o resultado assim que ele estiver pronto para consultas SELECT DISTINCT no clickhouse-local e na interface HTTP. Isso corrige #8951 #9559 (alexey-milovidov)
  • Permite usar a consulta SAMPLE OFFSET em vez de cityHash64(PRIMARY KEY) % N == n para fazer a divisão no clickhouse-copier. Para usar esse recurso, passe --experimental-use-sample-offset 1 como argumento de linha de comando. #10414 (Nikita Mikhaylov)
  • Permite processar BOM em TSV se a primeira coluna não puder conter BOM em seu valor. Isso corrige #10301 #10424 (alexey-milovidov)
  • Adicionado suporte à inserção de campos aninhados em Avro #10354 (Andrew Onyshchuk)
  • É permitida a alteração de coluna no modo sem modificação de dados quando o mesmo tipo é especificado. #10382 (Vladimir Chebotarev)
  • Aplicação automática de distributed_group_by_no_merge na chave de sharding do GROUP BY (se optimize_skip_unused_shards estiver definido) #10341 (Azat Khuzhin)
  • Otimização de consultas com LIMIT/LIMIT BY/ORDER BY para Distributed com GROUP BY sharding_key #10373 (Azat Khuzhin)
  • Adicionada a configuração max_server_memory_usage para limitar o uso total de memória do servidor. A métrica MemoryTracking agora é calculada sem discrepância. A configuração max_memory_usage_for_all_queries agora está obsoleta e não tem efeito. Isso fecha #10293. #10362 (alexey-milovidov)
  • Adicionada a opção de config system_tables_lazy_load. Se estiver definida como false, as tabelas de sistema com logs serão carregadas na inicialização do servidor. Alexander Burmak, Svyatoslav Tkhon Il Pak, #9642 #10359 (alexey-milovidov)
  • Uso do pool de threads em segundo plano (background_schedule_pool_size) para envios distribuídos #10263 (Azat Khuzhin)
  • Use o pool de threads em segundo plano para os flushes de buffer em segundo plano. #10315 (Azat Khuzhin)
  • Suporte para um caso especial de remoção de partes gravadas de forma incompleta. Isso corrige #9940. #10221 (alexey-milovidov)
  • Use isInjective() em vez de uma lista manual dessas funções para otimizar o GROUP BY. #10342 (Azat Khuzhin)
  • Evita exibir uma mensagem de erro no log se o cliente enviar um pacote RST imediatamente após se conectar. Esse é um comportamento típico do balanceador IPVS com keepalived e VRRP. Isso corrige #1851 #10274 (alexey-milovidov)
  • Permite interpretar +inf para tipos de ponto flutuante. Fecha #1839 #10272 (alexey-milovidov)
  • Implementada a função de tabela generateRandom para tipos Nested. Isso fecha #9903 #10219 (alexey-milovidov)
  • Adicionado max_allowed_packed à interface de compatibilidade com MySQL, o que ajudará alguns clientes a se comunicarem com o ClickHouse via protocolo MySQL. #10199 (BohuTANG)
  • Permitir o uso de literais para GLOBAL IN (isto é, SELECT * FROM remote('localhost', system.one) WHERE dummy global in (0)) #10196 (Azat Khuzhin)
  • Corrigidos vários pequenos problemas no modo interativo do clickhouse-client #10194 (alexey-milovidov)
  • Evitar o carregamento desnecessário de dicionários (system.tables, DROP/SHOW CREATE TABLE) #10164 (Azat Khuzhin)
  • Atualização do RWLock: parâmetro de timeout para getLock() + implementação reformulada para garantir justiça por fases #10073 (Alexander Kazakov)
  • Compatibilidade aprimorada com o mysql-connector-java nativo (JDBC) #10021 (BohuTANG)
  • A função toString é considerada monotônica e pode ser usada na análise de índices mesmo quando aplicada em casos tautológicos com argumento String ou LowCardinality(String). #10110 (Amos Bird)
  • Adicionado suporte à cláusula ON CLUSTER nos comandos {CREATE|DROP} USER/ROLE/ROW POLICY/SETTINGS PROFILE/QUOTA, GRANT. #9811 (Vitaly Baranov)
  • Suporte ao estilo de hospedagem virtual para URI do S3 #9998 (Pavel Kovalenko)
  • Agora, o tipo de layout para dicionários sem argumentos pode ser especificado sem parênteses em consultas DDL de dicionários. Corrige #10057. #10064 (alesapin)
  • Adicionada a possibilidade de usar intervalos numéricos com zeros à esquerda no caminho do arquivo #9989 (Olga Khvostikova)
  • Melhor uso de memória no CROSS JOIN. #10029 (Artem Zuikov)
  • Tenta se conectar a todos os shards do cluster ao obter a estrutura da tabela remota quando skip_unavailable_shards está definido. #7278 (nvartolomei)
  • Adicionados total_rows/total_bytes à tabela system.tables. #9919 (Azat Khuzhin)
  • As tabelas de log do sistema agora usam partes polimórficas por padrão. #9905 (Anton Popov)
  • Adicionar a coluna type a system.settings/merge_tree_settings #9909 (Azat Khuzhin)
  • Verificação das instruções de CPU disponíveis o mais cedo possível durante a inicialização do servidor. #9888 (alexey-milovidov)
  • Removido o estágio ORDER BY das mutações porque lemos de uma única parte ordenada em uma única thread. Também foi adicionada uma verificação para garantir que as linhas da mutação estejam ordenadas pela chave de ordenação e que essa ordem não seja violada. #9886 (alesapin)
  • Implementar o operador LIKE para FixedString à esquerda. Isso é necessário para oferecer melhor suporte às consultas TPC-DS. #9890 (alexey-milovidov)
  • Adiciona force_optimize_skip_unused_shards_no_nested, que desabilita force_optimize_skip_unused_shards para uma tabela Distributed aninhada #9812 (Azat Khuzhin)
  • Agora, o tamanho das colunas é calculado apenas uma vez para as partes de dados do MergeTree. #9827 (alesapin)
  • Avaliação de expressões constantes para optimize_skip_unused_shards (ou seja, SELECT * FROM foo_dist WHERE key=xxHash32(0)) #8846 (Azat Khuzhin)
  • A verificação do uso de uma coluna Date ou DateTime em expressões TTL foi removida. #9967 (Vladimir Chebotarev)
  • Implementação otimizada de links físicos no DiskS3. #9760 (Pavel Kovalenko)
  • Se set multiple_joins_rewriter_version = 2 estiver habilitado, a segunda versão das reescritas de múltiplos JOIN será ativada, mantendo inalterados os nomes de colunas que não entram em conflito. Ela oferece suporte a múltiplos JOINs com USING e permite select * em JOINs com subconsultas. #9739 (Artem Zuikov)
  • Implementação de “alter” não bloqueante para StorageMergeTree #9606 (alesapin)
  • Adicionado suporte completo do MergeTree ao DiskS3 #9646 (Pavel Kovalenko)
  • Estende splitByString para aceitar strings vazias como separadores. #9742 (hcz)
  • Adiciona uma coluna timestamp_ns a system.trace_log. Ela contém um timestamp de alta precisão do evento de trace e permite criar linhas do tempo de perfis de thread (“gráficos de chama”). #9696 (Alexander Kuzmenkov)
  • Quando a configuração send_logs_level está habilitada, evita-se a mistura entre mensagens de log e o progresso da consulta. #9634 (Azat Khuzhin)
  • Adicionado suporte para MATERIALIZE TTL IN PARTITION. #9581 (Vladimir Chebotarev)
  • Suporte a tipos complexos em campos Avro aninhados #10502 (Andrew Onyshchuk)

Melhoria de desempenho

  • Melhor lógica de inserção na tabela da direita para Partial MergeJoin. #10467 (Artem Zuikov)
  • Desempenho aprimorado dos formatos orientados a linhas (mais de 10% para CSV e mais de 35% para Avro no caso de tabelas estreitas). #10503 (Andrew Onyshchuk)
  • Desempenho aprimorado de consultas com conjuntos definidos explicitamente no lado direito do operador IN e tuplas no lado esquerdo. #10385 (Anton Popov)
  • Usa menos memória para a tabela hash no HashJoin. #10416 (Artem Zuikov)
  • HashJoin especial sobre StorageDictionary. Permite reescrever funções dictGet() como junções. Isso, por si só, não é retroincompatível, mas pode expor #8400 em algumas instalações. #10133 (Artem Zuikov)
  • Habilita a inserção paralela da visão materializada quando a tabela de destino oferece suporte. #10052 (vxider)
  • Desempenho aprimorado da análise de índice com funções monotônicas. #9607#10026 (Anton Popov)
  • Uso de intrínsecos SIMD SSE2 ou SSE4.2 para acelerar a tokenização em filtros de Bloom. #9968 (Vasily Nemkov)
  • Desempenho aprimorado de consultas com conjuntos definidos explicitamente no lado direito do operador IN. Isso corrige a regressão de desempenho na versão 20.3. #9740 (Anton Popov)
  • Agora, o clickhouse-copier divide cada partição em um número de partes e as copia de forma independente. #9075 (Nikita Mikhaylov)
  • Adicionados mais métodos de agregação. Por exemplo, a consulta 1 do TPC-H agora escolherá FixedHashMap<UInt16, AggregateDataPtr> e terá um ganho de desempenho de 25% #9829 (Amos Bird)
  • Usa um único contador de linhas para vários fluxos na transformação pre-limit. Isso ajuda a evitar a unificação dos fluxos do pipeline em consultas com limit, mas sem order by (como select f(x) from (select x from t limit 1000000000)) e permite usar várias threads no processamento posterior. #9602 (Nikolai Kochetov)

Melhoria em compilação/testes/empacotamento

  • Use um fork das bibliotecas AWS SDK do ClickHouse-Extras #10527 (Pavel Kovalenko)
  • Adicionar testes de integração para a nova consulta ALTER RENAME COLUMN. #10654 (vzakaznikov)
  • Corrige um possível estouro de inteiro com sinal na invocação da função now64 com argumentos incorretos. Isso corrige #8973 #10511 (alexey-milovidov)
  • Separação das configurações de fuzzer e sanitizer para tornar a configuração de compilação compatível com o Oss-fuzz. #10494 (kyprizel)
  • Correções no clang-tidy para o clang-10. #10420 (alexey-milovidov)
  • Exibir caminhos absolutos nas mensagens de erro. Caso contrário, o KDevelop não consegue navegar até o arquivo correto e acaba abrindo um novo arquivo. #10434 (alexey-milovidov)
  • Adicionada a variável de ambiente ASAN_OPTIONS para investigar erros em testes de estresse na CI com o AddressSanitizer. #10440 (Nikita Mikhaylov)
  • Habilita ThinLTO para compilações com clang (experimental). #10435 (alexey-milovidov)
  • Removida a dependência acidental do Z3, que pode ser introduzida se o sistema tiver o solver Z3 instalado. #10426 (alexey-milovidov)
  • Mover os arquivos do Docker dos testes de integração para o diretório docker/. #10335 (Ilya Yatsishin)
  • Permite o uso de clang-10 em CI. Isso garante que #10238 seja corrigido. #10384 (alexey-milovidov)
  • Atualizado o OpenSSL para a versão master do upstream. Corrigido o problema em que conexões TLS podiam falhar com a mensagem OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error e SSL Exception: error:2400006E:random number generator::error retrieving entropy. O problema estava presente na versão 20.1. #8956 (alexey-milovidov)
  • Corrige a compilação com o clang-10. #10238 #10370 (Amos Bird)
  • Adiciona teste de desempenho para INSERT paralelo em visão materializada. #10345 (vxider)
  • Corrigido o teste instável test_settings_constraints_distributed.test_insert_clamps_settings. #10346 (Vitaly Baranov)
  • Adicionar utilitário para envio de resultados de testes no CI do ClickHouse #10330 (Ilya Yatsishin)
  • Converter os resultados de teste para o formato JSONEachRow no utilitário junit_to_html #10323 (Ilya Yatsishin)
  • Atualizado o cctz. #10215 (alexey-milovidov)
  • Permite criar um relatório HTML a partir de um relatório JUnit XML puro. #10247 (Ilya Yatsishin)
  • Atualizada a verificação da versão mínima do compilador. Corrigida a causa raiz do problema #10250 #10256 (alexey-milovidov)
  • Suporte inicial para tabelas de visualização em tempo real em Distributed #10179 (vzakaznikov)
  • Corrige o relatório (falso) do MSan no MergeTreeIndexFullText. O problema surgiu pela primeira vez em #9968. #10801 (alexey-milovidov)
  • clickhouse-docker-util #10151 (filimonov)
  • Atualização do pdqsort para uma versão mais recente #10171 (Ivan)
  • Atualização da libdivide para v3.0 #10169 (Ivan)
  • Adicionada verificação para partes polimórficas habilitadas. #10086 (Anton Popov)
  • Adicionada compilação cruzada para FreeBSD. Isso corrige #9465 #9643 (Ivan)
  • Adicionado teste de desempenho para #6924 #6980 (filimonov)
  • Adicionado suporte a /dev/null no engine File para melhorar os testes de desempenho #8455 (Amos Bird)
  • Mova todas as pastas de /dbms um nível acima #9974 (Ivan)
  • Adicionado um teste que verifica se a leitura do MergeTree com uma única thread é realizada em ordem. Complemento de #9670 #9762 (alexey-milovidov)
  • Corrigido o teste 00964_live_view_watch_events_heartbeat.py para evitar uma condição de corrida. #9944 (vzakaznikov)
  • Corrigido o teste de integração test_settings_constraints #9962 (Vitaly Baranov)
  • Cada função em seu próprio arquivo, parte 12. #9922 (alexey-milovidov)
  • Adicionado um teste de desempenho para o caso de análise extremamente lenta de array de tuplas. #9872 (alexey-milovidov)
  • Atualize o zstd para 1.4.4. Ele traz pequenas melhorias de desempenho e na taxa de compressão. Se você executar réplicas com versões diferentes do ClickHouse, poderá ver mensagens de erro plausíveis Data after merge is not byte-identical to data on another replicas. com explicação. Essas mensagens estão Ok e você não deve se preocupar. #10663 (alexey-milovidov)
  • Corrigido o relatório do TSan em system.stack_trace. #9832 (alexey-milovidov)
  • Removida a dependência de clock_getres. #9833 (alexey-milovidov)
  • Adicionada a verificação de nomes de identificadores com o clang-tidy. #9799 (alexey-milovidov)
  • Atualização da imagem Docker “builder”. Esta imagem não é usada em CI, mas é útil para desenvolvedores. #9809 (alexey-milovidov)
  • Removida a antiga ferramenta performance-test, que não é mais usada no CI. O clickhouse-performance-test é ótimo, mas agora estamos usando uma ferramenta muito superior, que faz testes comparativos com fórmulas estatísticas sofisticadas para obter resultados confiáveis, independentemente de várias mudanças no ambiente. #9796 (alexey-milovidov)
  • Adicionada a maior parte das verificações do clang-static-analyzer. #9765 (alexey-milovidov)
  • Atualizado o Poco para 1.9.3 em preparação para o suporte a URI do MongoDB. #6892 (Alexander Kuzmenkov)
  • Corrigida a compilação com -DUSE_STATIC_LIBRARIES=0 -DENABLE_JEMALLOC=0 #9651 (Artem Zuikov)
  • No script de changelog, se um commit de merge tiver sido aplicado com cherry-pick à branch de lançamento, use o nome do PR da descrição do commit. #9708 (Nikolai Kochetov)
  • Adicionado suporte à tag vX.X-conflicts no script de backport. #9705 (Nikolai Kochetov)
  • Corrigido o auto-label no script de backport. #9685 (Nikolai Kochetov)
  • Usar libc++ na compilação cruzada no Darwin para alinhá-la com a compilação nativa. #9665 (Hui Wang)
  • Corrige o teste instável 01017_uniqCombined_memory_usage. Continuação de #7236. #9667 (alexey-milovidov)
  • Corrigida a compilação para o compilador Clang nativo do macOS #9649 (Ivan)
  • Permite adicionar várias falhas simuladas relacionadas às funções pthread_mutex_lock e pthread_mutex_unlock. #9635 (alexey-milovidov)
  • Adicionado suporte ao clang-tidy no script packager. #9625 (alexey-milovidov)
  • Adicionada a capacidade de usar msgpack não incluído no pacote. #10168 (Azat Khuzhin)

Lançamento do ClickHouse v20.3

lançamento do ClickHouse v20.3.21.2-lts, 2020-11-02

Correção de bug

  • Corrige dictGet em sharding_key (e em locais semelhantes, ou seja, quando o contexto da função é armazenado permanentemente). #16205 (Azat Khuzhin).
  • Corrige resultado vazio incorreto em consulta à tabela Distributed se a consulta tiver WHERE, PREWHERE e GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Corrige cabeçalhos ausentes ou em excesso nos formatos TSV/CSVWithNames. Isso corrige #12504. #13343 (Azat Khuzhin).

Lançamento do ClickHouse v20.3.20.6-lts, 2020-10-09

Correção de bug

  • Uma mutação podia ficar travada aguardando uma parte inexistente após MOVE ou REPLACE PARTITION ou, em casos raros, após DETACH ou DROP PARTITION. Isso foi corrigido. #15724, #15537 (tavplubix).
  • Corrige o travamento de consultas com muitas subconsultas para a mesma tabela do engine MySQL. Antes, se houvesse mais de 16 subconsultas para a mesma tabela MySQL em uma consulta, ela travava indefinidamente. #15299 (Anton Popov).
  • Corrige ‘Identificador desconhecido’ em GROUP BY quando a consulta tem JOIN em uma tabela Merge. #15242 (Artem Zuikov).
  • Correção para fazer o push down de predicado funcionar quando a subconsulta contém a função finalizeAggregation. Corrige #14847. #14937 (filimonov).
  • Consultas simultâneas ALTER ... REPLACE/MOVE PARTITION ... podiam causar deadlock. Isso foi corrigido. #13626 (tavplubix).

Lançamento do ClickHouse v20.3.19.4-lts, 2020-09-18

Correção de bug

  • Corrige um erro raro em consultas SELECT quando a coluna consultada tem uma expressão DEFAULT que depende de outra coluna que também tem DEFAULT, não está presente na consulta SELECT e não existe em disco. Corrige parcialmente #14531. #14845 (alesapin).
  • Corrige um bug em que uma mutation ALTER UPDATE com uma coluna Nullable na expressão de atribuição e um valor constante (como UPDATE x = 42) resulta em um valor incorreto na coluna ou em segfault. Corrige #13634, #14045. #14646 (alesapin).
  • Corrige um resultado incorreto na multiplicação Decimal causado pela escala decimal incorreta da coluna de resultado. #14603 (Artem Zuikov).

Melhoria

Lançamento do ClickHouse v20.3.18.10-lts, 2020-09-08

Correção de bug

  • Interrompe a execução da consulta se uma exceção ocorrer no próprio PipelineExecutor. Isso pode evitar casos raros de travamento da consulta. Continuação de #14334. #14402 (Nikolai Kochetov).
  • Corrigido o comportamento em que, às vezes, o Dicionário de cache retornava o valor padrão em vez do valor presente na origem. #13624 (Nikita Mikhaylov).
  • Corrige o parsing de políticas de linha de users.xml quando os nomes de bancos de dados ou tabelas contêm pontos. Isso corrige #5779, #12527. #13199 (Vitaly Baranov).
  • Corrige CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin).
  • Corrigida uma condição de corrida em text_log. Isso não corresponde a nenhum bug real. #9726 (alexey-milovidov).

Melhoria

  • Corrige a mensagem de erro incorreta para consultas longas. Era possível receber um erro de sintaxe diferente de Max query size exceeded para uma consulta correta. #13928 (Nikolai Kochetov).
  • Retorna NULL/zero quando o valor não é analisado por completo nas funções parseDateTimeBestEffortOrNull/Zero. Isso corrige #7876. #11653 (alexey-milovidov).

Melhoria de desempenho

  • Leve otimização de consultas muito curtas com LowCardinality. #14129 (Anton Popov).

melhoria em compilação/testes/empacotamento

  • Corrigido um aviso do UBSan (adição de zero a nullptr) na HashTable que surgiu após a migração para o clang-10. #10638 (alexey-milovidov).

Lançamento do ClickHouse v20.3.17.173-lts, 2020-08-15

Correção de bug

  • Corrige um travamento em JOIN com StorageMerge e set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov).
  • Corrige o tipo de retorno inválido na comparação de tuplas com elementos NULL. Corrige #12461. #13420 (Nikolai Kochetov).
  • Corrige consultas com colunas constantes e prefixo de ORDER BY da chave primária. #13396 (Anton Popov).
  • Retorna o número informado para números com MSB definido em roundUpToPowerOfTwoOrZero(). #13234 (Azat Khuzhin).

Lançamento do ClickHouse v20.3.16.165-lts 2020-08-10

Correção de bug

  • Corrigido um erro na função parseDateTimeBestEffort quando um timestamp Unix era passado como argumento. Isso corrige #13362. #13441 (alexey-milovidov).
  • Corrigido um possível problema de baixo desempenho e um resultado ligeiramente incorreto em uniqExact, topK, sumDistinct e aggregate functions semelhantes chamadas em tipos Float com valores NaN. Isso também acionava uma asserção na compilação de depuração. Isso corrige #12491. #13254 (alexey-milovidov).
  • Corrigida a função if com constexpr Nullable como condição que não é NULL literal. Corrige #12463. #13226 (alexey-milovidov).
  • Corrigido o assert na função arrayElement no caso em que os elementos do array são Nullable e o índice do array também é Nullable. Isso corrige a #12172. #13224 (alexey-milovidov).
  • Corrigida a limitação desnecessária do número de threads para consultas SELECT de uma réplica local. #12840 (Nikolai Kochetov).
  • Corrigida a possibilidade de uma linha extra de overflow nos dados, que poderia aparecer em consultas WITH TOTALS. #12747 (Nikolai Kochetov).
  • Corrigido o desempenho com tuplas grandes, que são interpretadas como funções na seção IN. É o caso em que o usuário escreve WHERE x IN tuple(1, 2, ...) em vez de WHERE x IN (1, 2, ...) por algum motivo obscuro. #12700 (Anton Popov).
  • Corrigido o rastreamento de memória para input_format_parallel_parsing (ao associar a thread ao grupo). #12672 (Azat Khuzhin).
  • Corrigido #12293, permitindo push predicate quando a subconsulta contém cláusula WITH. #12663 (Winter Zhang).
  • Corrigido #10572: correção do índice de filtro de Bloom com expressão constante. #12659 (Winter Zhang).
  • Corrigido SIGSEGV em StorageKafka quando o broker está indisponível (e não só nesse caso). #12658 (Azat Khuzhin).
  • Corrigida uma condição de corrida em dicionários externos com layout de cache que pode levar à queda do servidor. #12566 (alesapin).
  • Corrigido um bug que fazia com que partes antigas ficassem inválidas após a consulta ALTER DELETE quando enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Mensagem de exceção melhor para a função in com número inválido de argumentos. #12529 (Anton Popov).
  • Corrigido um problema de desempenho na leitura de partes compactas. #12492 (Anton Popov).
  • Corrigido o deadlock caso text_log esteja habilitado. #12452 (alexey-milovidov).
  • Corrigido um possível segfault com StorageMerge. Fecha #12054. #12401 (tavplubix).
  • Corrigidos TOTALS/ROLLUP/CUBE para funções de agregação com argumentos -State e Nullable. Isso corrige #12163. #12376 (alexey-milovidov).
  • Corrigida a ordem das colunas no modificador WITH FILL. Anteriormente, a ordem das colunas na cláusula ORDER BY não era respeitada. #12306 (Anton Popov).
  • Evita a exceção “bad cast” quando há uma expressão que filtra dados por colunas virtuais (como _table em tabelas Merge) ou por colunas de “índice” em tabelas do sistema, como ao filtrar pelo nome do banco de dados em consultas a system.tables, e essa expressão retorna o tipo Nullable. Isso corrige #12166. #12305 (alexey-milovidov).
  • Exibir erro após falha ao carregar TrieDictionary. #12290 (Vitaly Baranov).
  • A função arrayFill funcionava incorretamente com arrays vazios, o que poderia causar um travamento. Isso corrige #12263. #12279 (alexey-milovidov).
  • Implementadas conversões para o tipo comum em tipos LowCardinality. Isso permite executar UNION ALL entre tabelas com colunas de LowCardinality e outras colunas. Isso corrige #8212. Isso corrige #4342. #12275 (alexey-milovidov).
  • Corrigido o comportamento em que, durante várias inserções sequenciais em StorageFile, o cabeçalho de alguns tipos especiais era gravado mais de uma vez. Isso corrigiu #6155. #12197 (Nikita Mikhaylov).
  • Corrigidas as funções lógicas para valores UInt8 quando estes são diferentes de 0 ou 1. #12196 (Alexander Kazakov).
  • Corrigida a verificação dos argumentos de dictGet na eliminação de funções injetivas em GROUP BY. #12179 (Azat Khuzhin).
  • Corrigida a lógica incorreta em ALTER DELETE que fazia com que registros fossem excluídos quando a condição era avaliada como NULL. Isso corrige #9088. Isso fecha #12106. #12153 (alexey-milovidov).
  • Corrigida a transformação da consulta a ser enviada para SGBDs externos (por exemplo, MySQL, ODBC) quando há aliases. Isso corrige #12032. #12151 (alexey-milovidov).
  • Corrigido um possível overflow em divisão inteira. Isso corrige #12119. #12140 (alexey-milovidov).
  • Corrigido um possível loop infinito em greatCircleDistance, geoDistance. Isso corrige #12117. #12137 (alexey-milovidov).
  • Evita a exceção There is no query em visões materializadas com junções ou subconsultas associadas aos logs do sistema (system.query_log, metric_log, etc.) ou à tabela subjacente com engine=Buffer. #12120 (filimonov).
  • Corrigido o problema de desempenho em consultas com UNION, causado por um limite incorreto para o número total de threads. Corrige #12030. #12103 (Nikolai Kochetov).
  • Corrigido o segfault nos combinadores -StateResample. #12092 (Anton Popov).
  • Removida a limitação desnecessária no número de threads para consultas SELECT a partir de VIEW. Corrige #11937. #12085 (Nikolai Kochetov).
  • Corrigido um possível travamento ao usar um tipo incorreto em PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov).
  • Corrigido o erro Expected single dictionary argument for function na função defaultValueOfArgumentType com o tipo LowCardinality. Corrige #11808. #12056 (Nikolai Kochetov).
  • Corrigido o erro Cannot capture column em funções de alta ordem com argumento Tuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov).
  • Analisar os metadados das tabelas em paralelo ao carregar o banco de dados. Isso corrige a lentidão na inicialização do servidor quando há um grande número de tabelas. #12045 (tavplubix).
  • Faz com que a função de agregação topK retorne Enum para tipos Enum. Isso corrige #3740. #12043 (alexey-milovidov).
  • Corrigida a verificação de restrições para identificar se a restrição é uma expressão constante. Isso corrige #11360. #12042 (alexey-milovidov).
  • Corrigida a comparação incorreta entre tuplas e colunas Nullable. Corrige #11985. #12039 (Nikolai Kochetov).
  • Corrigido um resultado incorreto e uma possível falha ao invocar a função if com argumentos do tipo FixedString de tamanhos diferentes. Isso corrige #11362. #12021 (alexey-milovidov).
  • Uma consulta com a função neighbor como a única expressão retornada pode retornar um resultado vazio se a função for chamada com o deslocamento -9223372036854775808. Isso corrige #11367. #12019 (alexey-milovidov).
  • Corrigido um possível estouro no tamanho do array em generateRandom, que pode levar a um travamento. Isso corrige #11371. #12013 (alexey-milovidov).
  • Corrigida uma possível exceção de ponto flutuante. Fecha #11378. #12005 (alexey-milovidov).
  • Corrigido o nome errado da configuração na mensagem de log durante a inicialização do servidor. #11997 (alexey-milovidov).
  • Corrigido Query parameter was not set no formato Values. Corrige #11918. #11936 (tavplubix).
  • Preserva aliases para substituições em consultas (consultas parametrizadas). Isso corrige #11914. #11916 (alexey-milovidov).
  • Corrigida uma possível exceção de ponto flutuante ao fazer o parsing de DateTime64. Isso corrige #11374. #11875 (alexey-milovidov).
  • Corrigida a contabilização de memória na interface HTTP (pode ser significativa com wait_end_of_query=1). #11840 (Azat Khuzhin).
  • Corrigido o resultado incorreto de if() com NULLs na condição. #11807 (Artem Zuikov).
  • Analisar os metadados armazenados no zookeeper antes de verificar se são iguais. #11739 (Azat Khuzhin).
  • Corrigido o uso de LIMIT n WITH TIES junto com a cláusula ORDER BY, que contém aliases. #11689 (Anton Popov).
  • Corrigida uma possível leitura de memória não inicializada no dicionário de cache. #10834 (alexey-milovidov).

Melhoria de desempenho

  • Índice não utilizado pelo operador IN com literais; regressão de desempenho introduzida por volta da v19.3. Isso corrige #10574. #12062 (nvartolomei).

Lançamento do ClickHouse v20.3.12.112-lts 2020-06-25

Correção de bug

  • Corrige uma falha rara causada pelo uso de uma coluna Nullable na condição prewhere. Continuação de #11608. #11869 (Nikolai Kochetov).
  • Não permita arrayJoin dentro de funções de ordem superior. Isso estava causando falhas na sincronização do protocolo. Isso fecha #3933. #11846 (alexey-milovidov).
  • Corrigido o uso excessivo de threads para consultas. #11788 (Nikolai Kochetov).
  • Corrigido o comportamento inesperado de consultas como SELECT *, xyz.*, que eram executadas com sucesso quando o esperado era um erro. #11753 (hexiaoting).
  • Agora, os fetches replicados serão cancelados durante alterações de metadados. #11744 (alesapin).
  • Corrigido o LOGICAL_ERROR causado pela inferência incorreta do tipo de literais complexos no formato de entrada Values. #11732 (tavplubix).
  • Correção de ORDER BY ... WITH FILL em colunas constantes. #11697 (Anton Popov).
  • Passe os timeout corretos ao se comunicar com a ponte XDBC. Recentemente, os timeout não estavam sendo respeitados ao verificar se a ponte estava ativa e ao receber metainformações. #11690 (alexey-milovidov).
  • Corrige um erro que leva a um estado incorreto de system.mutations. Pode indicar que a mutação inteira já foi concluída, mas o servidor ainda tem tarefas MUTATE_PART na fila de replicação e tenta executá-las. Isso corrige #11611. #11681 (alesapin).
  • Adicionado suporte a expressões regulares com sinalizadores que ignoram maiúsculas e minúsculas. Isso corrige #11101 e #11506. #11649 (alexey-milovidov).
  • Remove a otimização trivial da consulta count caso a segurança em nível de linha esteja definida. Em versões anteriores, o usuário obtinha a contagem total de registros de uma tabela em vez da contagem filtrada. Isso corrige #11352. #11644 (alexey-milovidov).
  • Corrigidos os filtros de Bloom para String (índices de omissão de dados). #11638 (Azat Khuzhin).
  • Corrige um travamento raro causado pelo uso de uma coluna Nullable na cláusula prewhere. (Provavelmente isso está de alguma forma relacionado a #11572). #11608 (Nikolai Kochetov).
  • Corrigido o erro Block structure mismatch em consultas com amostragem ao ler da tabela Buffer. #11602 (Nikolai Kochetov).
  • Corrige o código de saída incorreto do clickhouse-client quando exception.code() % 256 = 0. #11601 (filimonov).
  • Corrige um erro trivial na mensagem de log sobre “o tamanho do mark cache foi reduzido” na inicialização do servidor. Isso fecha #11399. #11589 (alexey-milovidov).
  • Corrige o erro Size of offsets does not match size of column em consultas com PREWHERE column in (subquery) e ARRAY JOIN. #11580 (Nikolai Kochetov).
  • Todas as consultas em uma sessão HTTP tinham o mesmo query_id. Isso foi corrigido. #11578 (tavplubix).
  • Agora o contêiner Docker clickhouse-server passará a dar preferência à verificação da disponibilidade do servidor via IPv6. #11550 (Ivan Starkov).
  • Corrige shard_num/replica_num em <node> (quebrava use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin).
  • Corrige vazamento de memória quando ocorre uma exceção no meio da agregação com funções -State. Isso corrige #8995. #11496 (alexey-milovidov).
  • Corrige resultados incorretos de consultas distribuídas quando um alias podia sobrescrever o nome qualificado de uma coluna. Corrige #9672 #9714. #9972 (Artem Zuikov).

Lançamento do ClickHouse v20.3.11.97-lts 2020-06-10

Novo recurso

  • Agora o ClickHouse controla os timeouts das fontes de dicionário no seu próprio lado. Duas novas configurações foram adicionadas à configuração do dicionário cache: strict_max_lifetime_seconds, que por padrão é max_lifetime, e query_wait_timeout_milliseconds, que por padrão é de um minuto. A primeira configuração também é útil com a configuração allow_read_expired_keys (para impedir a leitura de chaves expiradas há muito tempo). #10337 (Nikita Mikhaylov).

Correção de bug

  • Corrige o erro Data compressed with different methods que pode ocorrer se min_bytes_to_use_direct_io estiver habilitado, o PREWHERE estiver ativo e houver uso de SAMPLE ou de um grande número de threads. Isso corrige #11539. #11540 (alexey-milovidov).
  • Corrigido o retorno do tamanho comprimido para codecs. #11448 (Nikolai Kochetov).
  • Corrige travamento do servidor quando uma coluna usa um codec de compressão com argumentos não literais. Corrige #11365. #11431 (alesapin).
  • Corrige pointInPolygon quando o ponto é nan. Corrige #11375. #11421 (Alexey Ilyukhov).
  • Corrigido um travamento em JOIN com LowCarinality(T) e Nullable(T). #11380. #11414 (Artem Zuikov).
  • Corrigido o código de erro para a chave USING inválida. #11373. #11404 (Artem Zuikov).
  • Corrigido o geohashesInBox para argumentos fora do intervalo de latitude/longitude. #11403 (Vasily Nemkov).
  • Mensagens de erro melhores para as funções joinGet(). #11389 (Artem Zuikov).
  • Corrige um possível erro Pipeline stuck ao executar consultas com ordenação externa e limite. Corrige #11359. #11366 (Nikolai Kochetov).
  • Removido o bloqueio redundante durante o envio de partes no ReplicatedMergeTree. #11354 (alesapin).
  • Corrigido o suporte a \G (saída vertical) no clickhouse-client em modo multilinha. Isso corrige #9933. #11350 (alexey-milovidov).
  • Corrige travamento em SELECTs diretos no StorageJoin (sem JOIN) e nulabilidade incorreta. #11340 (Artem Zuikov).
  • Corrigido travamento em quantilesExactWeightedArray. #11337 (Nikolai Kochetov).
  • Agora, as merges são interrompidas antes da alteração de metadados em consultas ALTER. #11335 (alesapin).
  • Volta a tornar paralela a gravação em MATERIALIZED VIEW com a configuração parallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov).
  • Corrigido visitParamExtractRaw quando o JSON extraído contém strings com { ou [ desbalanceados. #11318 (Ewout).
  • Corrigida uma condição de corrida muito rara na ThreadPool. #11314 (alexey-milovidov).
  • Corrigido o possível uso de memória não inicializada na conversão. Exemplo: SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov).
  • Corrige o problema que impedia a análise de índice de funcionar quando uma tabela tinha uma coluna Array na chave primária e uma consulta filtrava por essa coluna com as funções empty ou notEmpty. Isso corrige #11286. #11303 (alexey-milovidov).
  • Corrige um bug em que a estimativa da velocidade da consulta pode estar incorreta, e o limite de min_execution_speed pode não funcionar ou funcionar incorretamente se a consulta for limitada pelas configurações max_network_bandwidth, max_execution_speed ou priority. Altera o valor padrão de timeout_before_checking_execution_speed para um valor diferente de zero, porque, caso contrário, as configurações min_execution_speed e max_execution_speed não têm efeito. Isso corrige #11297. Isso corrige #5732. Isso corrige #6228. Melhoria de usabilidade: evita a concatenação da mensagem de exceção com a barra de progresso no clickhouse-client. #11296 (alexey-milovidov).
  • Corrige travamento ao ler dados malformados no formato Protobuf. Corrige #5957 e #11203. #11258 (Vitaly Baranov).
  • Corrigido um bug em que o dicionário do tipo cache podia retornar o valor padrão em vez do valor normal (quando havia apenas chaves expiradas). Isso afeta apenas campos do tipo string. #11233 (Nikita Mikhaylov).
  • Corrige o erro Block structure mismatch in QueryPipeline durante a leitura de VIEW com constantes na consulta interna. Corrige #11181. #11205 (Nikolai Kochetov).
  • Corrigida uma possível exceção Invalid status for associated output. #11200 (Nikolai Kochetov).
  • Corrige um possível erro Cannot capture column em funções de ordem superior com o argumento capturado Array(Array(LowCardinality)). #11185 (Nikolai Kochetov).
  • Corrigido o globbing no S3, que podia falhar quando havia mais de 1000 chaves e em alguns backends. #11179 (Vladimir Chebotarev).
  • Se o data skipping index depender de colunas que serão modificadas durante o merge em segundo plano (para SummingMergeTree, AggregatingMergeTree, bem como para TTL GROUP BY), ele era calculado incorretamente. Esse problema foi corrigido movendo o cálculo do índice para depois do merge, para que ele seja calculado sobre os dados já mesclados. #11162 (Azat Khuzhin).
  • Corrige a reserva excessiva de threads para consultas simples (otimização para reduzir o número de threads, que ficou parcialmente comprometida após alterações no pipeline). #11114 (Azat Khuzhin).
  • Corrige a otimização de predicados em consultas distribuídas (enable_optimize_predicate_expression=1) para consultas com a seção HAVING (ou seja, quando é necessária a filtragem no servidor iniciador), preservando a ordem das expressões (e isso basta para corrigir o problema), e também obriga o agregador a usar nomes de colunas em vez de índices. Correções: #10613, #11413. #10621 (Azat Khuzhin).
  • Introduzida a lógica de retry de commit para reduzir a possibilidade de duplicatas do Kafka em casos raros em que o commit do offset falhava. #9884 (filimonov).

Melhoria de desempenho

  • Obter o dicionário e verificar os direitos de acesso apenas uma vez para cada chamada de qualquer função que leia dicionários externos. #10928 (Vitaly Baranov).

Melhoria em compilação/testes/empacotamento

  • Corrigidos vários testes de integração instáveis. #11355 (alesapin).

Lançamento do ClickHouse v20.3.10.75-lts 2020-05-23

Correção de bug

  • Removido o logging da tarefa de finalização de mutação quando nada era finalizado. #11109 (alesapin).
  • Corrigidos bugs na resolução de argumentos de parseDateTime64BestEffort. #11038 (Vasily Nemkov).
  • Corrigido o tamanho incorreto dos dados brutos no método getRawData(). #10964 (Igr).
  • Corrigida a incompatibilidade da agregação em dois níveis entre a versão 20.1 e anteriores. Essa incompatibilidade ocorre quando versões diferentes do ClickHouse são usadas no nó iniciador e nos nós remotos, quando o resultado de GROUP BY é grande e a agregação é realizada por um único campo String. Isso leva a várias linhas não mescladas para uma mesma chave no resultado. #10952 (alexey-milovidov).
  • Corrigida a retrocompatibilidade com tuplas em tabelas Distributed. #10889 (Anton Popov).
  • Corrigido SIGSEGV em StringHashTable caso essa chave não exista. #10870 (Azat Khuzhin).
  • Corrigido bug em ReplicatedMergeTree que poderia fazer com que um ALTER na consulta OPTIMIZE ficasse travado, aguardando uma réplica após ela se tornar inativa. #10849 (tavplubix).
  • Corrigida a ordem das colunas após Block::sortColumns(). #10826 (Azat Khuzhin).
  • Corrigido o problema com a ponte ODBC quando não é solicitado o uso de aspas em identificadores. Corrige #7984. #10821 (alexey-milovidov).
  • Corrigido o relatório do UBSan e do MSan no DateLUT. #10798 (alexey-milovidov).
  • Corrigida a conversão incorreta de tipo em condições de chave. Corrige #6287. #10791 (Andrew Onyshchuk)
  • Corrigido o comportamento de parallel_view_processing. Agora, se ocorrer uma exceção, todas as inserções em MATERIALIZED VIEW que não gerarem exceção deverão ser concluídas. Corrige #10241. #10757 (Nikolai Kochetov).
  • Corrigidos os combinadores -OrNull e -OrDefault quando combinados com -State. #10741 (hcz).
  • Corrigido travamento em generateRandom com tipos aninhados. Corrige #10583. #10734 (Nikolai Kochetov).
  • Corrigida a corrupção de dados na coluna de chave LowCardinality(FixedString) em SummingMergeTree, que poderia ocorrer após a mesclagem. Corrige #10489. #10721 (Nikolai Kochetov).
  • Corrigido um possível estouro de buffer na função h3EdgeAngle. #10711 (alexey-milovidov).
  • Corrigido o problema de desaparecimento dos totais. Os totais poderiam ter sido filtrados se a consulta tivesse JOIN ou subconsulta com uma condição WHERE externa. Corrige #10674. #10698 (Nikolai Kochetov).
  • Corrigidos vários casos de uso do operador IN com o mesmo conjunto em uma única consulta. #10686 (Anton Popov).
  • Corrigido um bug que fazia com que requisições HTTP ficassem bloqueadas ao fechar o cliente quando readonly=2 e cancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix).
  • Corrigida a ordem dos parâmetros no construtor de AggregateTransform. #10667 (palasonic1).
  • Corrigida a falta de execução paralela de consultas remotas com distributed_aggregation_memory_efficient ativado. Corrige #10655. #10664 (Nikolai Kochetov).
  • Corrigido o possível número incorreto de linhas em consultas com LIMIT. Corrige #10566, #10709. #10660 (Nikolai Kochetov).
  • Corrigido um bug que bloqueava ALTERs simultâneos quando a tabela tinha muitas partes. #10659 (alesapin).
  • Corrigido um bug em que, ao executar a consulta SYSTEM DROP DNS CACHE, também eram removidos caches usados para verificar se o usuário tem permissão para se conectar a partir de determinados endereços IP. #10608 (tavplubix).
  • Corrigidos resultados escalares incorretos na consulta interna de MATERIALIZED VIEW quando essa consulta continha uma tabela dependente. #10603 (Nikolai Kochetov).
  • Corrigido o SELECT da coluna ALIAS, cujo tipo da expressão padrão era diferente do tipo da coluna. #10563 (Azat Khuzhin).
  • Implementada a comparação entre DateTime64 e valores String. #10560 (Vasily Nemkov).
  • Corrigida a corrupção de índice, que pode ocorrer em alguns casos após a mesclagem de partes compactas em outra parte compacta. #10531 (Anton Popov).
  • Corrigida a situação em que a mutação concluía todas as partes, mas permanecia travada em is_done=0. #10526 (alesapin).
  • Corrigido o overflow no início da epoch Unix em fusos horários com deslocamento fracionário em relação a UTC. Isso corrige #9335. #10513 (alexey-milovidov).
  • Corrigido o encerramento inadequado do armazenamento Distributed. #10491 (Azat Khuzhin).
  • Corrigido overflow numérico em simpleLinearRegression para inteiros grandes. #10474 (hcz).

Melhoria em Compilação/Testes/Empacotamento

Correção de bug

  • Corrigido o erro the BloomFilter false positive must be a double number between 0 and 1 #10551. #10569 (Winter Zhang).

Lançamento do ClickHouse v20.3.8.53, 2020-04-23

Correção de bug

  • Corrigido o comportamento incorreto das funções de data e hora para fusos horários que alternam entre deslocamentos positivos e negativos em relação ao UTC (por exemplo, Pacific/Kiritimati). Isso corrige #7202 #10369 (alexey-milovidov)
  • Corrigido possível segfault com distributed_group_by_no_merge habilitado (introduzido na versão 20.3.7.46 por #10131). #10399 (Nikolai Kochetov)
  • Corrige o achatamento incorreto dos tipos de dados Array(Tuple(...)). Isso corrige #10259 #10390 (alexey-milovidov)
  • Removida a reserva de disks no Aggregator. Isso corrige um bug na reserva de espaço em disco, que pode fazer com que uma grande agregação externa falhe mesmo quando poderia ser concluída com sucesso #10375 (Azat Khuzhin)
  • Corrigida a condição de corrida entre DROP e OPTIMIZE em ReplicatedMergeTree. DROP podia deixar resíduos no caminho da réplica no ZooKeeper se houvesse uma consulta OPTIMIZE concorrente. #10312 (tavplubix)
  • Corrige um bug que impedia o servidor de anexar a tabela após a alteração do valor padrão da coluna. #10441 (alesapin)
  • Não remova o diretório de metadados quando o ATTACH do banco de dados falhar antes do carregamento das tabelas. #10442 (Winter Zhang)
  • Corrigidos vários bugs que ocorriam quando alguns dados eram inseridos com quorum e depois excluídos de alguma forma (DROP PARTITION, TTL), o que fazia com que INSERTs travassem ou gerava exceções de falso positivo em SELECTs. Isso corrige #9946 #10188 (Nikita Mikhaylov)
  • Corrige um possível erro Pipeline stuck em ConcatProcessor que poderia ter ocorrido em uma consulta remota. #10381 (Nikolai Kochetov)
  • Corrigido o comportamento incorreto na HashTable que causava um erro de compilação ao tentar ler a HashMap a partir do buffer. #10386 (palasonic1)
  • Permite usar count(*) com múltiplas junções. Corrige #9853 #10291 (Artem Zuikov)
  • Prefira fallback_to_stale_replicas em vez de skip_unavailable_shards; caso contrário, quando ambas as configurações estiverem definidas e não houver réplicas atualizadas, a consulta falhará (patch de @alex-zaitsev). Correção: #2564. #10422 (Azat Khuzhin)
  • Corrige o problema em que uma consulta com ARRAY JOIN, ORDER BY e LIMIT pode retornar um resultado incompleto. Isso corrige #10226. Autor: Vadim Plakhtinskiy. #10427 (alexey-milovidov)
  • Verificação do número e do tipo de argumentos ao criar o índice BloomFilter #9623 #10431 (Winter Zhang)

Melhoria de desempenho

  • Melhorado o desempenho de consultas com conjuntos definidos explicitamente no lado direito do operador IN e Tuples no lado esquerdo. Isso corrige a regressão de desempenho na versão 20.3. #9740, #10385 (Anton Popov)

Lançamento do ClickHouse v20.3.7.46, 2020-04-17

Correção de bug

  • Corrige o erro Logical error: CROSS JOIN has expressions em consultas com mistura de vírgulas e junções nomeadas. #10311 (Artem Zuikov).
  • Corrige consultas com max_bytes_before_external_group_by. #10302 (Artem Zuikov).
  • Corrige a otimização move-to-prewhere na presença de funções arrayJoin (em determinados casos). Isso corrige #10092. #10195 (alexey-milovidov).
  • Adiciona a possibilidade de flexibilizar a restrição ao uso de funções não determinísticas em mutações com a configuração allow_nondeterministic_mutations. #10186 (filimonov).

Lançamento do ClickHouse v20.3.6.40, 2020-04-16

Novo recurso

  • Adicionada a função isConstant. Essa função verifica se seu argumento é uma expressão constante e retorna 1 ou 0. Ela se destina a fins de desenvolvimento, depuração e demonstração. #10198 (alexey-milovidov).

Correção de bug

  • Corrigido o erro Pipeline stuck ao usar max_rows_to_group_by e group_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov).
  • Corrige uma exceção rara que pode ocorrer: Cannot drain connections: cancel first. #10239 (Nikolai Kochetov).
  • Corrigido um bug em que o ClickHouse exibia a mensagem de erro “Unknown function lambda.” quando o usuário tentava executar ALTER UPDATE/DELETE em tabelas com ENGINE = Replicated*. A verificação de funções não determinísticas agora trata corretamente expressões lambda. #10237 (Alexander Kazakov).
  • Corrigida a função “generateRandom” para o tipo Date. Isso corrige #9973. Corrigido um caso de borda em que datas do ano 2106 são inseridas em tabelas MergeTree com particionamento no estilo antigo, mas as partições recebem nomes com o ano 1970. #10218 (alexey-milovidov).
  • Converte tipos quando a definição da tabela de uma View não corresponde à consulta SELECT. Isso corrige #10180 e #10022. #10217 (alexey-milovidov).
  • Corrige parseDateTimeBestEffort para strings em RFC-2822 quando o dia da semana é terça-feira ou quinta-feira. Isso corrige #10082. #10214 (alexey-milovidov).
  • Corrige os nomes das colunas de constantes dentro de JOIN que podem entrar em conflito com os nomes de constantes fora de JOIN. #10207 (alexey-milovidov).
  • Corrige uma possível execução infinita da consulta quando ela deveria, na verdade, parar no LIMIT, ao ler de uma fonte infinita como system.numbers ou system.zeros. #10206 (Nikolai Kochetov).
  • Corrigido o uso do banco de dados atual na verificação de acesso quando o banco de dados não é especificado. #10192 (Vitaly Baranov).
  • Converter blocos se a estrutura não corresponder durante o INSERT em Distributed(). #10135 (Azat Khuzhin).
  • Corrigido um possível resultado incorreto para extremos no pipeline de processadores. #10131 (Nikolai Kochetov).
  • Corrige alguns tipos de ALTER em partes compactas. #10130 (Anton Popov).
  • Corrige a verificação incorreta de index_granularity_bytes durante a criação de uma nova réplica. Corrige #10098. #10121 (alesapin).
  • Corrige SIGSEGV ao fazer INSERT em uma tabela Distributed quando sua estrutura difere da das tabelas subjacentes. #10105 (Azat Khuzhin).
  • Corrige uma possível perda de linhas em consultas com JOIN e UNION ALL. Corrige #9826, #10113. #10099 (Nikolai Kochetov).
  • Corrigida a inicialização de tabelas replicadas ao atualizar a partir de uma versão antiga do ClickHouse na qual o nó /table/replicas/replica_name/metadata não existe. Corrige #10037. #10095 (alesapin).
  • Adiciona algumas verificações de argumentos e oferece suporte a argumentos identificadores para o mecanismo de banco de dados MySQL. #10077 (Winter Zhang).
  • Corrigido um bug na fonte de dicionário do servidor ClickHouse em localhost. O bug pode levar à corrupção de memória se os tipos no dicionário e na fonte não forem compatíveis. #10071 (alesapin).
  • Corrige erro na consulta CHECK TABLE quando a tabela contém índices de salto. #10068 (alesapin).
  • Corrige o erro Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Isso acontecia quando a configuração distributed_aggregation_memory_efficient estava habilitada e uma consulta distribuída lia dados agregados em níveis diferentes de shards diferentes (misturando agregação de um nível e de dois níveis). #10063 (Nikolai Kochetov).
  • Corrige uma falha de segmentação que podia ocorrer em GROUP BY com chaves string contendo bytes nulos à direita (#8636, #8925). #10025 (Alexander Kuzmenkov).
  • Corrige o número de threads usadas na execução remota de consultas (regressão de desempenho desde a versão 20.3). Isso ocorria quando uma consulta de uma tabela Distributed era executada simultaneamente em shards locais e remotos. Corrige #9965. #9971 (Nikolai Kochetov).
  • Corrige um bug em que as tabelas necessárias não eram obtidas em uma das etapas de processamento de consultas a alguns bancos de dados. Corrige #9699. #9949 (achulkov2).
  • Corrige o erro ‘Not found column in block’ quando JOIN é usado com TOTALS. Corrige #9839. #9939 (Artem Zuikov).
  • Corrige um bug que fazia com que consultas DDL com ON CLUSTER travassem na inicialização do servidor. #9927 (Gagan Arneja).
  • Corrigido o parsing de vários hosts definidos no comando CREATE USER, por exemplo, CREATE USER user6 HOST NAME REGEXP 'lo.?*host', NAME REGEXP 'lo*host'. #9924 (Vitaly Baranov).
  • Corrigido o TRUNCATE no mecanismo de tabela Join (#9917). #9920 (Amos Bird).
  • Corrige o erro “scalar does not exist” em ALTERs (#9878). #9904 (Amos Bird).
  • Corrigida a condição de corrida entre drop e optimize no ReplicatedMergeTree. #9901 (alesapin).
  • Corrige erro em nomes qualificados no distributed_product_mode='local'. Corrige #4756. #9891 (Artem Zuikov).
  • Corrigido o cálculo de privilégios para funções de introspecção na configuração ‘allow_introspection_functions’. #9840 (Vitaly Baranov).

melhoria de compilação/testes/empacotamento

Lançamento do ClickHouse v20.3.5.21, 2020-03-27

Correção de bug

  • Corrige o erro ‘Different expressions with the same alias’ quando a consulta tem PREWHERE e WHERE em uma tabela distribuída e SET distributed_product_mode = 'local'. #9871 (Artem Zuikov).
  • Corrige o consumo excessivo de memória das mutações em tabelas com chave primária composta. Isso corrige #9850. #9860 (alesapin).
  • Para consultas INSERT, o shard agora limita as configurações recebidas do nó iniciador às restrições do shard, em vez de lançar uma exceção. Essa correção permite enviar consultas INSERT para um shard com restrições diferentes. Essa alteração aprimora a correção de #9447. #9852 (Vitaly Baranov).
  • Corrige o erro ‘COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query’ no caso de subconsultas com COMMA JOIN fora das listas de tabelas (isto é, em WHERE). Corrige #9782. #9830 (Artem Zuikov).
  • Corrige uma possível exceção Got 0 in totals chunk, expected 1 no cliente. Isso acontecia em consultas com JOIN caso a tabela associada à direita tivesse zero linhas. Exemplo: select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. #9823 (Nikolai Kochetov).
  • Corrige SIGSEGV com optimize_skip_unused_shards quando o tipo não pode ser convertido. #9804 (Azat Khuzhin).
  • Corrige a consulta ALTER TABLE DELETE COLUMN com falha para partes compactas. #9779 (alesapin).
  • Corrige max_distributed_connections (com e sem Processors). #9673 (Azat Khuzhin).
  • Corrige alguns casos em que o fuso horário do argumento da função não era usado corretamente. #9574 (Vasily Nemkov).

Melhoria

  • Removido o estágio de ORDER BY das mutações, pois a leitura é feita de uma única parte ordenada em uma única thread. Também foi adicionada uma verificação para garantir que a ordem das linhas na mutação siga a ordem da chave de ordenação e não seja violada. #9886 (alesapin).

Lançamento do ClickHouse v20.3.4.10, 2020-03-20

Correção de bug

  • Este lançamento também contém todas as correções de bugs da versão 20.1.8.41
  • Corrige a ausência de rows_before_limit_at_least para consultas via HTTP (com pipeline de processadores). Isso corrige #9730. #9757 (Nikolai Kochetov)

Lançamento do ClickHouse v20.3.3.6, 2020-03-17

Correção de bug

  • Este lançamento também inclui todas as correções de bugs da versão 20.1.7.38
  • Corrige um bug na replicação que impede seu funcionamento se o usuário tiver executado mutações na versão anterior. Isso corrige #9645. #9652 (alesapin). Isso faz com que a versão 20.3 volte a ser compatível com versões anteriores.
  • Adiciona a configuração use_compact_format_in_distributed_parts_names, que permite gravar arquivos de consultas INSERT na tabela Distributed em um formato mais compacto. Isso corrige #9647. #9653 (alesapin). Isso faz com que a versão 20.3 volte a ser compatível com versões anteriores.

Lançamento do ClickHouse v20.3.2.1, 2020-03-12

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

  • Corrigido o problema file name too long ao enviar dados para tabelas Distributed com um grande número de réplicas. Corrigido o problema em que as credenciais das réplicas ficavam expostas no log do servidor. O formato do nome do diretório em disco foi alterado para [shard{shard_index}[_replica{replica_index}]]. #8911 (Mikhail Korotov) Depois de atualizar para a nova versão, você não poderá fazer downgrade sem intervenção manual, porque a versão antiga do servidor não reconhece o novo formato de diretório. Se quiser fazer downgrade, será necessário renomear manualmente os diretórios correspondentes para o formato antigo. Essa alteração é relevante apenas se você tiver usado INSERTs assíncronos em tabelas Distributed. Na versão 20.3.3, introduziremos uma configuração que permitirá habilitar o novo formato gradualmente.
  • Foi alterado o formato dos registros do log de replicação para comandos de mutação. É preciso aguardar o processamento das mutações antigas antes de instalar a nova versão.
  • Implementado um profiler de memória simples que grava stacktraces em system.trace_log a cada N bytes acima do limite soft de alocação #8765 (Ivan) #9472 (alexey-milovidov) A coluna de system.trace_log foi renomeada de timer_type para trace_type. Isso exigirá alterações em ferramentas de terceiros para análise de desempenho e processamento de flamegraphs.
  • Use o ID da thread do SO em todos os lugares, em vez do número interno da thread. Isso corrige #7477 O clickhouse-client antigo não consegue receber logs enviados pelo servidor quando a configuração send_logs_level está habilitada, porque os nomes e os tipos das mensagens de log estruturadas foram alterados. Por outro lado, diferentes versões do servidor podem enviar logs com tipos diferentes umas para as outras. Quando você não usa a configuração send_logs_level, não precisa se preocupar. #8954 (alexey-milovidov)
  • Removida a função indexHint #9542 (alexey-milovidov)
  • Removidas as funções findClusterIndex, findClusterValue. Isso corrige #8641. Se você usava essas funções, envie um e-mail para clickhouse-feedback@yandex-team.com #9543 (alexey-milovidov)
  • Agora não é mais permitido criar colunas nem adicionar colunas com uma subconsulta SELECT como expressão padrão. #9481 (alesapin)
  • Tornar obrigatórios aliases para subconsultas em JOIN. #9274 (Artem Zuikov)
  • Lógica das queries ALTER MODIFY/ADD aprimorada. Agora não é possível usar ADD para adicionar uma coluna sem tipo, a modificação da expressão padrão com MODIFY não altera o tipo da coluna, e a modificação do tipo com MODIFY não faz a coluna perder o valor da expressão padrão. Corrige #8669. #9227 (alesapin)
  • Passa a ser necessário reiniciar o servidor para aplicar as alterações na configuração de logging. Esta é uma solução temporária para evitar o bug em que o servidor grava logs em um arquivo de log excluído (consulte #8696). #8707 (Alexander Kuzmenkov)
  • A configuração experimental_use_processors está habilitada por padrão. Essa configuração habilita o uso do novo pipeline de consulta. Trata-se de uma refatoração interna, e não esperamos mudanças visíveis. Se você notar algum problema, defina-a novamente como zero. #8768 (alexey-milovidov)

Novo recurso

  • Adicionados os formatos de entrada e saída Avro e AvroConfluent #8571 (Andrew Onyshchuk) #8957 (Andrew Onyshchuk) #8717 (alexey-milovidov)
  • Atualizações multithread e sem bloqueio de chaves expiradas em dicionários cache (com a opção de ler os valores antigos). #8303 (Nikita Mikhaylov)
  • Adicionada a consulta ALTER ... MATERIALIZE TTL. Ela executa uma mutação que força a remoção dos dados expirados por TTL e recalcula as metainformações de TTL em todas as partes. #8775 (Anton Popov)
  • Alterne de HashJoin para MergeJoin (em disco), se necessário #9082 (Artem Zuikov)
  • Adicionado o comando MOVE PARTITION para ALTER TABLE #4729 #6168 (Guillaume Tassery)
  • Recarregamento dinâmico da configuração de armazenamento a partir do arquivo de configuração. #8594 (Vladimir Chebotarev)
  • Passou a ser permitido alterar storage_policy para uma opção não menos completa. #8107 (Vladimir Chebotarev)
  • Adicionado suporte a globs/coringas para armazenamento S3 e função de tabela. #8851 (Vladimir Chebotarev)
  • Implementados bitAnd, bitOr, bitXor e bitNot para o tipo de dados FixedString(N). #9091 (Guillaume Tassery)
  • Adicionada a função bitCount. Isso corrige #8702. #8708 (alexey-milovidov) #8749 (ikopylov)
  • Adicionada a função de tabela generateRandom para gerar linhas aleatórias com o esquema fornecido. Permite preencher qualquer tabela de teste com dados. #8994 (Ilya Yatsishin)
  • JSONEachRowFormat: suporta o caso especial em que objetos estão contidos em um array de nível superior. #8860 (Kruglov Pavel)
  • Agora é possível criar uma coluna com expressão DEFAULT que depende de uma coluna com expressão ALIAS por padrão. #9489 (alesapin)
  • Permite especificar --limit acima do tamanho dos dados de origem no clickhouse-obfuscator. Os dados serão repetidos com uma seed aleatória diferente. #9155 (alexey-milovidov)
  • Adicionada a função groupArraySample (semelhante a groupArray) com o algoritmo de amostragem por reservatório. #8286 (Amos Bird)
  • Agora você pode monitorar o tamanho da fila de atualização dos dicionários cache/complex_key_cache por meio das métricas do sistema. #9413 (Nikita Mikhaylov)
  • Permite usar CRLF como separador de linha no formato de saída CSV quando a configuração output_format_csv_crlf_end_of_line está definida como 1 #8934 #8935 #8963 (Mikhail Korotov)
  • Implementadas mais funções da API H3: h3GetBaseCell, h3HexAreaM2, h3IndexesAreNeighbors, h3ToChildren, h3ToString e stringToH3 #8938 (Nico Mandery)
  • Nova configuração introduzida: max_parser_depth, para controlar o tamanho máximo da pilha e permitir consultas grandes e complexas. Isso corrige #6681 e #7668. #8647 (Maxim Smirnov)
  • Adicionar a configuração force_optimize_skip_unused_shards para lançar uma exceção se não for possível ignorar shards não utilizados #8805 (Azat Khuzhin)
  • Permite configurar vários disks/volumes para armazenar dados para envio no engine Distributed #8756 (Azat Khuzhin)
  • Adicionado suporte à política de armazenamento (<tmp_policy>) para armazenar dados temporários. #8750 (Azat Khuzhin)
  • Adicionado o cabeçalho HTTP X-ClickHouse-Exception-Code, que é definido caso uma exceção seja lançada antes do envio dos dados. Isso implementa #4971. #8786 (Mikhail Korotov)
  • Adicionada a função ifNotFinite. É apenas açúcar sintático: ifNotFinite(x, y) = isFinite(x) ? x : y. #8710 (alexey-milovidov)
  • Adicionada a coluna last_successful_update_time à tabela system.dictionaries #9394 (Nikita Mikhaylov)
  • Adicionada a função blockSerializedSize (tamanho em disco sem compressão) #8952 (Azat Khuzhin)
  • Adicionada a função moduloOrZero #9358 (hcz)
  • Adicionadas as tabelas de sistema system.zeros e system.zeros_mt, bem como as funções de tabela zeros() e zeros_mt(). As tabelas (e as funções de tabela) contêm uma única coluna chamada zero e do tipo UInt8. Essa coluna contém zeros. Ela é necessária para fins de teste, como a forma mais rápida de gerar muitas linhas. Isso corrige #6604 #9593 (Nikolai Kochetov)

Funcionalidade Experimental

  • Adicionado um novo formato compact de partes em tabelas da família MergeTree, no qual todas as colunas são armazenadas em um único arquivo. Isso ajuda a aumentar o desempenho de inserts pequenos e frequentes. O formato antigo (um arquivo por coluna) agora é chamado de wide. O formato de armazenamento dos dados é controlado pelas configurações min_bytes_for_wide_part e min_rows_for_wide_part. #8290 (Anton Popov)
  • Suporte a armazenamento S3 para tabelas Log, TinyLog e StripeLog. #8862 (Pavel Kovalenko)

Correção de bug

  • Corrigidos espaços em branco inconsistentes nas mensagens de log. #9322 (alexey-milovidov)
  • Corrige um bug em que arrays de tuplas sem nome eram achatados como estruturas Nested durante a criação da tabela. #8866 (achulkov2)
  • Corrigido o problema em que o erro “Too many open files” podia ocorrer caso houvesse arquivos demais correspondendo ao padrão glob na tabela File ou na função de tabela file. Agora os arquivos são abertos sob demanda. Isso corrige #8857 #8861 (alexey-milovidov)
  • DROP TEMPORARY TABLE agora passa a remover apenas tabelas temporárias. #8907 (Vitaly Baranov)
  • Remover partição desatualizada ao desligar o servidor ou fazer DETACH/ATTACH de uma tabela. #8602 (Guillaume Tassery)
  • Sobre o modo como o disco padrão calcula o espaço livre no subdiretório data. Foi corrigido o problema em que a quantidade de espaço livre não era calculada corretamente se o diretório data estivesse montado em um dispositivo separado (caso raro). Isso corrige #7441 #9257 (Mikhail Korotov)
  • Permitir join por vírgula (cross) contendo IN (). #9251 (Artem Zuikov)
  • Permite reescrever CROSS como INNER JOIN se houver o operador [NOT] LIKE na cláusula WHERE. #9229 (Artem Zuikov)
  • Corrige possível resultado incorreto após GROUP BY com a configuração distributed_aggregation_memory_efficient habilitada. Corrige #9134. #9289 (Nikolai Kochetov)
  • As chaves encontradas eram contabilizadas como não encontradas nas métricas dos dicionários de cache. #9411 (Nikita Mikhaylov)
  • Corrigida a incompatibilidade no protocolo de replicação introduzida em #8598. #9412 (alesapin)
  • Corrigida a condição de corrida em queue_task_handle durante a inicialização das tabelas ReplicatedMergeTree. #9552 (alexey-milovidov)
  • O token NOT não funcionou na consulta SHOW TABLES NOT LIKE #8727 #8940 (alexey-milovidov)
  • Adicionada verificação de intervalo à função h3EdgeLengthM. Sem essa verificação, pode ocorrer estouro de buffer. #8945 (alexey-milovidov)
  • Corrigido um erro nos cálculos em lote de operações lógicas ternárias com múltiplos argumentos (mais de 10). #8718 (Alexander Kazakov)
  • Corrige um erro na otimização PREWHERE, que poderia levar a segfaults ou à exceção Inconsistent number of columns got from MergeTreeRangeReader. #9024 (Anton Popov)
  • Corrige a exceção inesperada Timeout exceeded while reading from socket, que ocorre aleatoriamente em uma conexão segura antes que o tempo limite seja realmente excedido e quando o perfilador de consultas está habilitado. Também adiciona as configurações connect_timeout_with_failover_secure_ms (padrão de 100 ms), semelhantes a connect_timeout_with_failover_ms, mas usadas para conexões seguras (porque o handshake SSL é mais lento do que uma conexão TCP comum) #9026 (tavplubix)
  • Correção de bug na finalização de mutações, em que uma mutação podia ficar travada em um estado com parts_to_do=0 e is_done=0. #9022 (alesapin)
  • Use a nova lógica de ANY JOIN com a configuração partial_merge_join. Agora, é possível fazer junções ANY|ALL|SEMI LEFT e ALL INNER com partial_merge_join=1. #8932 (Artem Zuikov)
  • O shard agora restringe as configurações recebidas do iniciador às restrições do shard, em vez de lançar uma exceção. Essa correção permite enviar consultas para um shard com restrições diferentes. #9447 (Vitaly Baranov)
  • Corrigido um problema de gerenciamento de memória no MergeTreeReadPool. #8791 (Vladimir Chebotarev)
  • Corrige a família de funções toDecimal*OrNull() ao ser chamada com a string e. Corrige #8312 #8764 (Artem Zuikov)
  • Certifique-se de que FORMAT Null não envie dados ao cliente. #8767 (Alexander Kuzmenkov)
  • Corrigido um bug que impedia a atualização do timestamp em LiveViewBlockInputStream. LIVE VIEW é um recurso experimental. #8644 (vxider) #8625 (vxider)
  • Corrigido o comportamento incorreto de ALTER MODIFY TTL, que não permitia remover expressões TTL antigas. #8422 (Vladimir Chebotarev)
  • Corrigido um relatório do UBSan em MergeTreeIndexSet. Isso corrige #9250 #9365 (alexey-milovidov)
  • Corrigido o comportamento das funções match e extract quando o haystack tem zero bytes. O comportamento estava incorreto quando o haystack era constante. Isso corrige #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)
  • Evita lançar exceção no destrutor da biblioteca Apache Avro de terceiros. #9066 (Andrew Onyshchuk)
  • Não faça commit de apenas parte de um lote obtido via poll do Kafka, pois isso pode causar lacunas nos dados. #8876 (filimonov)
  • Corrigido joinGet com tipos de retorno Nullable. #8919 #9014 (Amos Bird)
  • Corrige a incompatibilidade de dados quando comprimidos com o codec T64. #9016 (Artem Zuikov) Corrige os IDs de tipo de dados no codec de compressão T64, o que causa (des)compressão incorreta nas versões afetadas. #9033 (Artem Zuikov)
  • Adiciona a configuração enable_early_constant_folding e a desabilita em alguns casos que causam erros. #9010 (Artem Zuikov)
  • Corrige o otimizador de pushdown de predicados com VIEW e habilita o teste #9011 (Winter Zhang)
  • Corrige segfault em tabelas Merge, que pode acontecer ao ler de mecanismos de armazenamento File #9387 (tavplubix)
  • Foi adicionada uma verificação da política de armazenamento em ATTACH PARTITION FROM, REPLACE PARTITION, MOVE TO TABLE. Caso contrário, isso poderia tornar os dados da parte inacessíveis após a reinicialização e impedir que o ClickHouse iniciasse. #9383 (Vladimir Chebotarev)
  • Corrige ALTERs se houver TTL definido para a tabela. #8800 (Anton Popov)
  • Corrige uma condição de corrida que pode ocorrer quando SYSTEM RELOAD ALL DICTIONARIES é executado enquanto algum dicionário está sendo modificado/adicionado/removido. #8801 (Vitaly Baranov)
  • Nas versões anteriores, o engine de banco de dados Memory usava um caminho de dados vazio, então as tabelas eram criadas no diretório path (por exemplo, /var/lib/clickhouse/), e não no diretório de dados do banco de dados (por exemplo, /var/lib/clickhouse/db_name). #8753 (tavplubix)
  • Corrigidas mensagens de log incorretas sobre a ausência do disco padrão ou da política. #9530 (Vladimir Chebotarev)
  • Corrigido o not(has()) para o índice bloom_filter de tipos Array. #9407 (achimbab)
  • Permitir que a(s) primeira(s) coluna(s) de uma tabela com mecanismo Log seja(m) um alias #9231 (Ivan)
  • Corrigida a ordem dos ranges na leitura da tabela MergeTree em uma thread. Isso podia causar exceções em MergeTreeRangeReader ou resultados incorretos de consulta. #9050 (Anton Popov)
  • Fazer com que reinterpretAsFixedString retorne FixedString em vez de String. #9052 (Andrew Onyshchuk)
  • Evita casos extremamente raros em que o usuário pode receber uma mensagem de erro incorreta (Success em vez de uma descrição detalhada do erro). #9457 (alexey-milovidov)
  • Não ocorre travamento ao usar o formato Template com um modelo de linha vazio. #8785 (Alexander Kuzmenkov)
  • Arquivos de metadados para tabelas do sistema poderiam ser criados no local errado #8653 (tavplubix) Corrige #8581.
  • Corrigida uma condição de corrida de dados em exception_ptr no dicionário de cache #8303. #9379 (Nikita Mikhaylov)
  • Não lança uma exceção para a consulta ATTACH TABLE IF NOT EXISTS. Anteriormente, ela era lançada se a tabela já existisse, apesar da cláusula IF NOT EXISTS. #8967 (Anton Popov)
  • Corrigido o parêntese de fechamento ausente na mensagem de exceção. #8811 (alexey-milovidov)
  • Evita a exibição da mensagem Possible deadlock avoided ao iniciar o clickhouse-client no modo interativo. #9455 (alexey-milovidov)
  • Corrigido o problema em que o padding no final do valor codificado em base64 podia ficar malformado. Biblioteca base64 atualizada. Isso corrige #9491, fecha #9492 #9500 (alexey-milovidov)
  • Evita a perda de dados no Kafka em casos raros em que ocorre uma exceção após a leitura do sufixo, mas antes do commit. Corrige #9378 #9507 (filimonov)
  • Corrigida uma exceção em DROP TABLE IF EXISTS #8663 (Nikita Vasilev)
  • Corrige falha quando um usuário tenta ALTER MODIFY SETTING na família de motores de tabela MergeTree no formato antigo. #9435 (alesapin)
  • Suporte a números UInt64 que não cabem em Int64 em funções relacionadas a JSON. Atualizado o SIMDJSON para a branch master. Isso corrige #9209 #9344 (alexey-milovidov)
  • Corrigida a execução de predicados invertidos ao usar um índice funcional não estritamente monotônico. #9223 (Alexander Kazakov)
  • Não tente simplificar a constante IN em GROUP BY #8868 (Amos Bird)
  • Corrige um bug em mutações ALTER DELETE que levava à corrupção de índice. Isso corrige #9019 e #8982. Além disso, corrige condições de corrida extremamente raras em consultas ALTER no ReplicatedMergeTree. #9048 (alesapin)
  • Quando a configuração compile_expressions está habilitada, você pode obter unexpected column em LLVMExecutableFunction ao usar o tipo Nullable #8910 (Guillaume Tassery)
  • Múltiplas correções para o engine Kafka: 1) corrige duplicatas que estavam aparecendo durante o rebalanceamento do consumer group. 2) Corrige raros ‘buracos’ que apareciam quando os dados eram coletados de várias partições em um único poll e confirmados parcialmente (agora sempre processamos / fazemos commit de todo o bloco de mensagens coletado no poll). 3) Corrige flushes por tamanho de bloco (antes disso, apenas o flush por timeout estava funcionando corretamente). 4) melhor procedimento de subscription (com feedback de atribuição). 5) Faz os testes rodarem mais rápido (com intervals e timeouts padrão). Como os dados antes não eram gravados por tamanho de bloco (como deveriam, de acordo com a documentação), esse PR pode causar alguma degradação de desempenho com as configurações padrão (devido a flushes mais frequentes & menores, que são menos eficientes). Se você encontrar problema de desempenho após essa mudança, aumente kafka_max_block_size na tabela para um valor maior (por exemplo CREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). Corrige #7259 #8917 (filimonov)
  • Corrige a exceção Parameter out of bound em algumas consultas após otimizações de PREWHERE. #8914 (Baudouin Giard)
  • Corrigido o caso de mistura de argumentos constantes e não constantes na função arrayZip. #8705 (alexey-milovidov)
  • Ao executar a consulta CREATE, simplifique expressões constantes nos argumentos do mecanismo de armazenamento. Substitua o nome do banco de dados vazio pelo banco de dados atual. Corrige #6508, #3492 #9262 (tavplubix)
  • Agora não é mais possível criar ou adicionar colunas com aliases cíclicos simples, como a DEFAULT b, b DEFAULT a. #9603 (alesapin)
  • Corrigido um bug de movimentação dupla que pode corromper a parte original. Isso é relevante se você usar ALTER TABLE MOVE #8680 (Vladimir Chebotarev)
  • Permite que o identificador interval seja interpretado corretamente sem backticks. Corrigido um problema em que uma consulta não podia ser executada mesmo que o identificador interval estivesse entre backticks ou aspas duplas. Isso corrige #9124. #9142 (alexey-milovidov)
  • Corrigidos o teste de fuzzing e o comportamento incorreto das funções bitTestAll/bitTestAny. #9143 (alexey-milovidov)
  • Corrige possível travamento/número incorreto de linhas em LIMIT n WITH TIES quando há muitas linhas iguais à n’ésima linha. #9464 (tavplubix)
  • Corrigidas mutações em partes gravadas com insert_quorum habilitado. #9463 (alesapin)
  • Corrigida a condição de corrida de dados na destruição de Poco::HTTPServer. Isso podia acontecer quando o servidor era iniciado e desligado logo em seguida. #9468 (Anton Popov)
  • Correção de um bug em que uma mensagem de erro enganosa era exibida ao executar SHOW CREATE TABLE a_table_that_does_not_exist. #8899 (achulkov2)
  • Corrigida a exceção Parameters are out of bound em alguns casos raros em que há uma constante na cláusula SELECT com cláusulas ORDER BY e LIMIT. #8892 (Guillaume Tassery)
  • Corrige a finalização de mutações: mesmo quando a mutação já foi concluída, ela pode ter o status is_done=0. #9217 (alesapin)
  • Impedir a execução de ALTER ADD INDEX em tabelas MergeTree com a sintaxe antiga, pois isso não funciona. #8822 (Mikhail Korotov)
  • Durante a inicialização do servidor, não acesse a tabela de que a LIVE VIEW depende, para que o servidor possa iniciar. Além disso, remova as dependências da LIVE VIEW ao desanexá-la. A LIVE VIEW é um recurso experimental. #8824 (tavplubix)
  • Corrigido possível segfault em MergeTreeRangeReader ao executar PREWHERE. #9106 (Anton Popov)
  • Corrige possíveis incompatibilidades de checksum com TTLs de coluna. #9451 (Anton Popov)
  • Corrigido um bug em que as partes não eram movidas em segundo plano pelas regras de TTL quando havia apenas um volume. #8672 (Vladimir Chebotarev)
  • Corrigido o problema Method createColumn() is not implemented for data type Set. Corrige #7799. #8674 (alexey-milovidov)
  • Agora, tentaremos finalizar mutações com mais frequência. #9427 (alesapin)
  • Corrigido intDiv com constante menos um #9351 (hcz)
  • Corrigida uma possível condição de corrida em BlockIO. #9356 (Nikolai Kochetov)
  • Corrige um bug que levava ao encerramento do servidor ao tentar usar / remover a tabela Kafka criada com parâmetros incorretos. #9513 (filimonov)
  • Adicionada uma solução alternativa para o caso de o sistema operacional retornar um resultado incorreto para a função timer_create. #8837 (alexey-milovidov)
  • Corrigido um erro no uso do parâmetro min_marks_for_seek. Corrigida a mensagem de erro quando não há chave de sharding na tabela Distributed e tentamos ignorar shards não utilizados. #8908 (Azat Khuzhin)

Melhoria

  • Implementadas consultas ALTER MODIFY/DROP com base em mutações para a família de motores ReplicatedMergeTree*. Agora, ALTERS bloqueia apenas na etapa de atualização dos metadados e não bloqueia após isso. #8701 (alesapin)
  • Adicionada a capacidade de reescrever CROSS como INNER JOINs com a seção WHERE contendo nomes não qualificados. #9512 (Artem Zuikov)
  • Fazer com que as consultas SHOW TABLES e SHOW DATABASES passem a oferecer suporte a expressões WHERE e a FROM/IN #9076 (sundyli)
  • Adicionada a configuração deduplicate_blocks_in_dependent_materialized_views. #9070 (urykhy)
  • Após mudanças recentes, o cliente MySQL passou a imprimir strings binárias em hexadecimal, tornando-as ilegíveis (#9032). A solução alternativa no ClickHouse é marcar as colunas de string como UTF-8, o que nem sempre acontece, mas geralmente é o caso. #9079 (Yuriy Baranov)
  • Adicionado suporte a chaves String e FixedString no sumMap #8903 (Baudouin Giard)
  • Suporte a chaves do tipo String em maps do SummingMergeTree #8933 (Baudouin Giard)
  • Sinaliza ao thread pool o encerramento da thread mesmo que ela tenha gerado uma exceção #8736 (Ding Xiang Fei)
  • Permite definir query_id em clickhouse-benchmark #9416 (Anton Popov)
  • Não permitir expressões estranhas na consulta ALTER TABLE ... PARTITION partition. Isso corrige #7192 #8835 (alexey-milovidov)
  • A tabela system.table_engines agora fornece informações sobre o suporte a funcionalidades (como supports_ttl ou supports_sort_order). #8830 (Max Akhmedov)
  • Ative system.metric_log por padrão. Ele conterá linhas com valores de ProfileEvents e CurrentMetrics coletados no intervalo “collect_interval_milliseconds” (um segundo por padrão). A tabela é muito pequena (geralmente da ordem de megabytes), e coletar esses dados por padrão é algo razoável. #9225 (alexey-milovidov)
  • Inicializa o profiler de consultas para todas as threads em um grupo; por exemplo, isso permite perfilar completamente consultas INSERT. Corrige #6964 #8874 (Ivan)
  • Agora, a LIVE VIEW temporária é criada com CREATE LIVE VIEW name WITH TIMEOUT [42] ... em vez de CREATE TEMPORARY LIVE VIEW ..., porque a sintaxe anterior não era consistente com CREATE TEMPORARY TABLE ... #9131 (tavplubix)
  • Adicionado o parâmetro de configuração text_log.level para limitar as entradas enviadas para a tabela system.text_log #8809 (Azat Khuzhin)
  • Permitir armazenar a parte baixada em discos/volumes de acordo com as regras de TTL #8598 (Vladimir Chebotarev)
  • Para dicionários MySQL externos, permite compartilhar o pool de conexões MySQL entre os dicionários. Essa opção reduz significativamente o número de conexões com servidores MySQL. #9409 (Clément Rodriguez)
  • Mostrar, na saída de clickhouse-benchmark, o tempo de execução de consulta mais próximo para quantis, em vez de valores interpolados. É melhor mostrar valores que correspondam ao tempo de execução de algumas consultas. #8712 (alexey-milovidov)
  • Possibilidade de adicionar chave & timestamp à mensagem ao inserir dados no Kafka. Corrige #7198 #8969 (filimonov)
  • Se o servidor for executado no terminal, destaque com cores o número da thread, o ID da consulta e a prioridade do log. Isso melhora a legibilidade das mensagens de log correlacionadas para os desenvolvedores. #8961 (alexey-milovidov)
  • Mensagem de exceção aprimorada ao carregar tabelas do banco de dados Ordinary. #9527 (alexey-milovidov)
  • Implementado arraySlice para arrays com estados de funções de agregação. Isso corrige #9388 #9391 (alexey-milovidov)
  • Permitir o uso de funções constantes e arrays constantes no lado direito do operador IN. #8813 (Anton Popov)
  • Se ocorrer uma exceção do ZooKeeper ao buscar dados para system.replicas, exiba-a em uma coluna separada. Isso implementa #9137 #9138 (alexey-milovidov)
  • Remoção atômica de partes de dados do MergeTree durante a destruição. #8402 (Vladimir Chebotarev)
  • Suporte à segurança em nível de linha para tabelas Distributed. #8926 (Ivan)
  • Agora reconhecemos sufixos (como KB, KiB…) nos valores das configurações. #8072 (Mikhail Korotov)
  • Evita erro de falta de memória ao construir o resultado de um JOIN grande. #8637 (Artem Zuikov)
  • Adicionados os nomes dos clusters às sugestões no modo interativo do clickhouse-client. #8709 (alexey-milovidov)
  • Inicializa o profiler de consultas para todas as threads de um grupo; por exemplo, isso permite perfilar completamente consultas de inserção #8820 (Ivan)
  • Adicionada a coluna exception_code à tabela system.query_log. #8770 (Mikhail Korotov)
  • Habilitado o servidor de compatibilidade com MySQL na porta 9004 no arquivo de configuração padrão do servidor. Corrigido o comando de geração de senha no exemplo de configuração. #8771 (Yuriy Baranov)
  • Evita a interrupção ao desligar se o sistema de arquivos estiver em modo somente leitura. Isso corrige #9094 #9100 (alexey-milovidov)
  • Mensagem de erro mais clara quando é necessário informar o tamanho em uma consulta HTTP POST. #9453 (alexey-milovidov)
  • Adicionar as colunas virtuais _path e _file aos motores HDFS e File e às funções de tabela hdfs e file #8489 (Olga Khvostikova)
  • Corrigido o erro Cannot find column ao inserir em MATERIALIZED VIEW caso uma nova coluna tenha sido adicionada à tabela interna da visão. #8766 #8788 (vzakaznikov) #8788 #8806 (Nikolai Kochetov) #8803 (Nikolai Kochetov)
  • Corrigido o Progress no protocolo nativo cliente-servidor, com o envio do progress após a atualização final (como nos logs). Isso pode ser relevante apenas para algumas ferramentas de terceiros que usam o protocolo nativo. #9495 (Azat Khuzhin)
  • Adicionada uma métrica do sistema que rastreia o número de conexões de clientes usando o protocolo MySQL (#9013). #9015 (Eugene Klimov)
  • A partir de agora, as respostas HTTP terão o cabeçalho X-ClickHouse-Timezone definido com o mesmo valor de fuso horário que SELECT timezone() retornaria. #9493 (Denis Glazachev)

Melhoria de desempenho

  • Melhora no desempenho da análise de índice com IN #9261 (Anton Popov)
  • Código mais simples e eficiente em Funções Lógicas + limpeza de código. Continuação de #8718 #8728 (Alexander Kazakov)
  • Melhoria geral de desempenho (na faixa de 5% a 200% para as queries afetadas) ao garantir um aliasing ainda mais estrito com recursos do C++20. #9304 (Amos Bird)
  • Aliasing mais estrito nos loops internos das funções de comparação. #9327 (alexey-milovidov)
  • Aliasing mais estrito nos loops internos das funções aritméticas. #9325 (alexey-milovidov)
  • Implementação cerca de 3 vezes mais rápida para ColumnVector::replicate(), por meio da qual ColumnConst::convertToFullColumn() é implementado. Também será útil em testes ao materializar constantes. #9293 (Alexander Kazakov)
  • Outra pequena melhoria de desempenho em ColumnVector::replicate() (isso acelera a função materialize e funções de ordem superior), com um ganho adicional em relação a #9293 #9442 (Alexander Kazakov)
  • Desempenho aprimorado da aggregate function stochasticLinearRegression. Este patch foi contribuído pela Intel. #8652 (alexey-milovidov)
  • Melhora no desempenho da função reinterpretAsFixedString. #9342 (alexey-milovidov)
  • Não enviar blocks ao cliente para o format Null no pipeline de processador. #8797 (Nikolai Kochetov) #8767 (Alexander Kuzmenkov)

melhoria de compilação/testes/empacotamento

  • O tratamento de exceções agora funciona corretamente no Windows Subsystem for Linux. Consulte https://github.com/ClickHouse-Extras/libunwind/pull/3 Isso corrige #6480 #9564 (sobolevsv)
  • Substituído readline por replxx para edição interativa de linhas no clickhouse-client #8416 (Ivan)
  • Menor tempo de compilação e menos instanciações de template em FunctionsComparison. #9324 (alexey-milovidov)
  • Adicionada a integração com clang-tidy no CI. Veja também #6044 #9566 (alexey-milovidov)
  • Agora fazemos a linkedição do ClickHouse no CI com lld, inclusive para gcc. #9049 (alesapin)
  • Permite randomizar o escalonamento de threads e injetar falhas quando as variáveis de ambiente THREAD_FUZZER_* estiverem definidas. Isso ajuda nos testes. #9459 (alexey-milovidov)
  • Habilitar sockets seguros nos testes sem estado #9288 (tavplubix)
  • Torna SPLIT_SHARED_LIBRARIES=OFF mais robusto #9156 (Azat Khuzhin)
  • Torna o teste “performance_introspection_and_logging” confiável mesmo com travamentos aleatórios do servidor. Isso pode acontecer no ambiente de CI. Veja também #9515 #9528 (alexey-milovidov)
  • Validar XML no Style Check. #9550 (alexey-milovidov)
  • Corrigida uma condição de corrida no teste 00738_lock_for_inner_table. Este teste dependia de sleep. #9555 (alexey-milovidov)
  • Remova os testes de desempenho do tipo once. Isso é necessário para executar todos os testes de desempenho no modo de comparação estatística (mais confiável). #9557 (alexey-milovidov)
  • Adicionado teste de desempenho para funções aritméticas. #9326 (alexey-milovidov)
  • Adicionado teste de desempenho para as funções agregadas sumMap e sumMapWithOverflow. Em complemento a #8933 #8947 (alexey-milovidov)
  • Garantia do estilo de ErrorCodes pelo Style check. #9370 (alexey-milovidov)
  • Adicionar script para o histórico dos testes. #8796 (alesapin)
  • Adicionar o aviso do GCC -Wsuggest-override para localizar e corrigir todos os pontos em que a palavra-chave override deve ser usada. #8760 (kreuzerkrieg)
  • Ignorar símbolo fraco no Mac OS X, pois ele precisa ser definido #9538 (Usuário excluído)
  • Foi normalizado o tempo de execução de algumas consultas em testes de desempenho. Isso foi feito em preparação para executar todos os testes de desempenho no modo de comparação. #9565 (alexey-milovidov)
  • Corrige alguns testes para dar suporte ao pytest nos testes de consulta #9062 (Ivan)
  • Habilitado o SSL na compilação com MSan, para que o servidor não falhe na inicialização ao executar testes sem estado #9531 (tavplubix)
  • Corrigida a substituição de banco de dados nos resultados dos testes #9384 (Ilya Yatsishin)
  • Correções de compilação para várias plataformas #9381 (proller) #8755 (proller) #8631 (proller)
  • Adicionada a seção disks à imagem Docker de testes stateless-with-coverage #9213 (Pavel Kovalenko)
  • Removidos arquivos da árvore do código-fonte ao compilar com GRPC #9588 (Amos Bird)
  • Compilação ligeiramente mais rápida ao remover o SessionCleaner do Context. Simplificação do código do SessionCleaner. #9232 (alexey-milovidov)
  • Atualizada a verificação de consultas travadas no script clickhouse-test #8858 (Alexander Kazakov)
  • Removidos alguns arquivos desnecessários do repositório. #8843 (alexey-milovidov)
  • Alterado o tipo dos testes de desempenho matemáticos de once para loop. #8783 (Nikolai Kochetov)
  • Adicionada imagem Docker que permite gerar um relatório HTML interativo de navegação pelo código da nossa base de código. #8781 (alesapin) Veja Woboq Code Browser
  • Suprime algumas falhas em testes no MSan. #8780 (Alexander Kuzmenkov)
  • Aceleração do teste “exception while insert”. Este teste frequentemente expira na compilação debug-with-coverage. #8711 (alexey-milovidov)
  • Atualizados libcxx e libcxxabi para a master. Como preparação para #9304 #9308 (alexey-milovidov)
  • Corrigido o teste instável 00910_zookeeper_test_alter_compression_codecs. #9525 (alexey-milovidov)
  • Remova flags duplicadas do linker. Certifique-se de que o linker não buscará um símbolo inesperado. #9433 (Amos Bird)
  • Adiciona o driver clickhouse-odbc às imagens de teste. Isso permite testar a interação do ClickHouse com ele mesmo por meio do próprio driver ODBC. #9348 (filimonov)
  • Corrigidos vários bugs nos testes unitários. #9047 (alesapin)
  • Ativa o aviso -Wmissing-include-dirs do GCC para eliminar todos os includes inexistentes - principalmente como resultado de erros nos scripts do CMake #8704 (kreuzerkrieg)
  • Descreve os motivos pelos quais o profiler de consultas pode não funcionar. Destina-se a #9049 #9144 (alexey-milovidov)
  • Atualizado o OpenSSL para a versão master upstream. Corrigido o problema em que conexões TLS podiam falhar com as mensagens OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error e SSL Exception: error:2400006E:random number generator::error retrieving entropy. O problema estava presente na versão 20.1. #8956 (alexey-milovidov)
  • Atualização do Dockerfile do servidor #8893 (Ilya Mazaev)
  • Pequenas correções no script build-gcc-from-sources #8774 (Michael Nacharov)
  • Substitua numbers por zeros nos perftests em que a coluna number não é usada. Isso levará a resultados de teste mais limpos. #9600 (Nikolai Kochetov)
  • Corrigido um problema de estouro de pilha ao usar initializer_list nos construtores de Column. #9367 (Usuário excluído)
  • Atualize o librdkafka para a v1.3.0. Habilite as bibliotecas rdkafka e gsasl integradas no Mac OS X. #9000 (Andrew Onyshchuk)
  • correção de compilação com GCC 9.2.0 #9306 (vxider)

Lançamento do ClickHouse v20.1

Lançamento do ClickHouse v20.1.16.120-stable 2020-60-26

Correção de bug

  • Corrige uma falha rara causada pelo uso de uma coluna Nullable na condição prewhere. Continuação de #11608. #11869 (Nikolai Kochetov).
  • Não permite arrayJoin dentro de funções de ordem superior. Isso estava causando quebra na sincronização do protocolo. Isso fecha #3933. #11846 (alexey-milovidov).
  • Corrige o comportamento inesperado de queries como SELECT *, xyz.*, que eram bem-sucedidas quando um erro era esperado. #11753 (hexiaoting).
  • Corrige LOGICAL_ERROR causado pela dedução incorreta do tipo de literais complexos no input format Values. #11732 (tavplubix).
  • Corrige ORDER BY ... WITH FILL em colunas constantes. #11697 (Anton Popov).
  • Passa timeouts corretos ao se comunicar com a XDBC bridge. Recentemente, os timeouts não estavam sendo respeitados ao verificar se a bridge estava ativa e ao receber metainformações. #11690 (alexey-milovidov).
  • Adiciona suporte a expressões regulares com flags case-insensitive. Isso corrige #11101 e #11506. #11649 (alexey-milovidov).
  • Corrige filtros de Bloom para String (índices de data skipping). #11638 (Azat Khuzhin).
  • Corrige uma falha rara causada pelo uso de uma coluna Nullable na condição prewhere. (Provavelmente, isso está relacionado de alguma forma a #11572). #11608 (Nikolai Kochetov).
  • Corrige o código de saída incorreto do clickhouse-client quando exception.code() % 256 = 0. #11601 (filimonov).
  • Corrige um erro trivial na mensagem de log sobre “Mark cache size was lowered” na inicialização do servidor. Isso fecha #11399. #11589 (alexey-milovidov).
  • Agora, o contêiner Docker do clickhouse-server dará preferência ao IPv6 ao verificar se o servidor está ativo. #11550 (Ivan Starkov).
  • Corrige vazamento de memória quando uma exceção é lançada no meio da agregação com funções -State. Isso corrige #8995. #11496 (alexey-milovidov).
  • Corrige o uso da chave primária encapsulada em uma função com o modificador ‘FINAL’ e a otimização ‘ORDER BY’. #10715 (Anton Popov).

Lançamento do ClickHouse v20.1.15.109-stable 2020-06-19

Correção de bug

  • Corrige o bloqueio excessivo na estrutura durante alter. #11790 (alesapin).

Lançamento do ClickHouse v20.1.14.107-stable 2020-06-11

Correção de bug

  • Corrige o erro Size of offsets does not match size of column em consultas com PREWHERE column in (subquery) e ARRAY JOIN. #11580 (Nikolai Kochetov).

Lançamento do ClickHouse v20.1.13.105-stable 2020-06-10

Correção de bug

  • Corrige o erro Data compressed with different methods, que pode ocorrer se min_bytes_to_use_direct_io estiver habilitado, PREWHERE estiver ativo e houver uso de SAMPLE ou de um número elevado de threads. Isso corrige #11539. #11540 (alexey-milovidov).
  • Corrige o tamanho comprimido retornado para codecs. #11448 (Nikolai Kochetov).
  • Corrige falha no servidor quando uma coluna tem um codec de compressão com argumentos não literais. Corrige #11365. #11431 (alesapin).
  • Corrige pointInPolygon quando nan é usado como ponto. Corrige #11375. #11421 (Alexey Ilyukhov).
  • Corrigido o geohashesInBox para argumentos fora do intervalo de latitude/longitude. #11403 (Vasily Nemkov).
  • Corrige o possível erro Pipeline stuck em consultas com ordenação externa e limite. Corrige #11359. #11366 (Nikolai Kochetov).
  • Corrigida a falha em quantilesExactWeightedArray. #11337 (Nikolai Kochetov).
  • Volta a paralelizar a gravação em MATERIALIZED VIEW com a configuração parallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov).
  • Corrigido o visitParamExtractRaw quando o JSON extraído contém strings com { ou [ sem par. #11318 (Ewout).
  • Corrigida uma condição de corrida muito rara no ThreadPool. #11314 (alexey-milovidov).
  • Corrige um possível problema de memória não inicializada na conversão. Exemplo: SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov).
  • Corrige o problema em que a análise de índice não funciona se uma tabela tiver uma coluna Array na chave primária e se uma consulta filtrar por essa coluna usando as funções empty ou notEmpty. Isso corrige #11286. #11303 (alexey-milovidov).
  • Corrige um bug em que a estimativa da velocidade da consulta pode estar incorreta, e o limite de min_execution_speed pode não funcionar ou funcionar incorretamente se a consulta for limitada pelas configurações max_network_bandwidth, max_execution_speed ou priority. Altera o valor padrão de timeout_before_checking_execution_speed para um valor diferente de zero, porque, caso contrário, as configurações min_execution_speed e max_execution_speed não têm efeito. Isso corrige #11297. Isso corrige #5732. Isso corrige #6228. Melhoria de usabilidade: evita a concatenação da mensagem de exceção com a barra de progresso no clickhouse-client. #11296 (alexey-milovidov).
  • Corrige a falha ao ler dados malformados no formato Protobuf. Corrige #5957 e #11203. #11258 (Vitaly Baranov).
  • Corrige um possível erro Cannot capture column em funções de ordem superior com argumento capturado Array(Array(LowCardinality)). #11185 (Nikolai Kochetov).
  • Se o índice de data skipping dependia de colunas que seriam modificadas durante o merge em segundo plano (para SummingMergeTree, AggregatingMergeTree, bem como para TTL GROUP BY), ele era calculado incorretamente. Esse problema foi corrigido movendo o cálculo do índice para depois do merge, para que ele seja calculado sobre os dados já mesclados. #11162 (Azat Khuzhin).
  • Removido o logging da tarefa de finalização de mutação caso nada tenha sido finalizado. #11109 (alesapin).
  • Corrigidos bugs na resolução de argumentos de parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
  • Corrige o tamanho incorreto dos dados brutos no método getRawData(). #10964 (Igr).
  • Corrige a compatibilidade com versões anteriores de tuplas em tabelas Distributed. #10889 (Anton Popov).
  • Corrige SIGSEGV em StringHashTable (caso essa chave não exista). #10870 (Azat Khuzhin).
  • Corrigido um bug no ReplicatedMergeTree que poderia fazer com que alguns ALTER na consulta OPTIMIZE ficassem travados, aguardando alguma réplica após ela se tornar inativa. #10849 (tavplubix).
  • Corrige a ordem das colunas após Block::sortColumns() (também adiciona um teste que mostra que isso afeta um caso real de uso: o mecanismo Buffer). #10826 (Azat Khuzhin).
  • Corrige o problema com o ODBC bridge quando não é solicitado o uso de aspas em identificadores. Isso corrige #7984. #10821 (alexey-milovidov).
  • Corrigido o relatório do UBSan e do MSan no DateLUT. #10798 (alexey-milovidov).
  • Corrige o comportamento de parallel_view_processing. Agora, se ocorrer uma exceção, todas as inserções em MATERIALIZED VIEW deverão ser concluídas, sem exceção. Corrige #10241. #10757 (Nikolai Kochetov).
  • Corrigido o combinador -OrNull e -OrDefault quando combinados com -State. #10741 (hcz).
  • Corrige o problema de desaparecimento dos totais. Os totais poderiam ser filtrados se a consulta tivesse um join ou uma subconsulta com condição where externa. Corrige #10674. #10698 (Nikolai Kochetov).
  • Corrige vários usos do operador IN com o mesmo conjunto em uma única consulta. #10686 (Anton Popov).
  • Corrige a ordem dos parâmetros no construtor de AggregateTransform. #10667 (palasonic1).
  • Corrige a ausência de execução paralela de consultas remotas com distributed_aggregation_memory_efficient ativado. Corrige #10655. #10664 (Nikolai Kochetov).
  • Corrige a otimização de predicados para consultas distribuídas (enable_optimize_predicate_expression=1) em consultas com a seção HAVING (ou seja, quando é necessário filtrar no servidor iniciador), preservando a ordem das expressões (e isso basta para corrigir o problema), e também força o agregador a usar nomes de colunas em vez de índices. Corrige: #10613, #11413. #10621 (Azat Khuzhin).
  • Corrigido o erro the BloomFilter false positive must be a double number between 0 and 1 #10551. #10569 (Winter Zhang).
  • Correção do SELECT da coluna ALIAS cujo tipo da expressão padrão é diferente do tipo da coluna. #10563 (Azat Khuzhin).
    • Implementada a comparação entre valores DateTime64 e String (tal como para DateTime). #10560 (Vasily Nemkov).

Lançamento do ClickHouse v20.1.12.86, 2020-05-26

Correção de bug

  • Corrigida a incompatibilidade da agregação em dois níveis entre a versão 20.1 e versões anteriores. Essa incompatibilidade ocorre quando versões diferentes do ClickHouse são usadas no nó iniciador e nos nós remotos, o tamanho do resultado de GROUP BY é grande e a agregação é feita por um único campo String. Isso leva a várias linhas não mescladas para uma única chave no resultado. #10952 (alexey-milovidov).
  • Corrigida a corrupção de dados na coluna de chave LowCardinality(FixedString) em SummingMergeTree, que poderia ter ocorrido após a mesclagem. Corrige #10489. #10721 (Nikolai Kochetov).
  • Corrigido um bug que fazia com que requisições HTTP ficassem travadas quando o cliente era fechado com readonly=2 e cancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix).
  • Corrigido um bug em que a consulta SYSTEM DROP DNS CACHE também removia os caches usados para verificar se o usuário tem permissão para se conectar a partir de determinados endereços IP. #10608 (tavplubix).
  • Corrigidos resultados escalares incorretos na consulta interna de MATERIALIZED VIEW caso essa consulta contivesse uma tabela dependente. #10603 (Nikolai Kochetov).
  • Corrigida a situação em que a mutação concluía todas as partes, mas permanecia travada em is_done=0. #10526 (alesapin).
  • Corrigido o overflow no início da epoch Unix para fusos horários com deslocamento fracionário em relação ao UTC. Isso corrige #9335. #10513 (alexey-milovidov).
  • Corrigido o encerramento incorreto do armazenamento Distributed. #10491 (Azat Khuzhin).
  • Corrigido o overflow numérico em simpleLinearRegression ao usar inteiros grandes. #10474 (hcz).
  • Corrigida a remoção do diretório de metadados quando o Attach do banco de dados falha. #10442 (Winter Zhang).
  • Adicionada a verificação do número e do tipo de argumentos na criação do índice BloomFilter #9623. #10431 (Winter Zhang).
  • Corrigido um problema em que uma consulta com ARRAY JOIN, ORDER BY e LIMIT podia retornar um resultado incompleto. Isso corrige #10226. #10427 (alexey-milovidov).
  • Prefira fallback_to_stale_replicas em vez de skip_unavailable_shards. #10422 (Azat Khuzhin).
  • Corrigido o achatamento incorreto em tipos de dados Array(Tuple(...)). Isso corrige #10259. #10390 (alexey-milovidov).
  • Corrigido o comportamento incorreto em HashTable que causava erro de compilação ao tentar ler um HashMap de um buffer. #10386 (palasonic1).
  • Corrigido um possível erro Pipeline stuck no ConcatProcessor, que poderia ocorrer em uma consulta remota. #10381 (Nikolai Kochetov).
  • Corrigido o erro Pipeline stuck ao usar max_rows_to_group_by e group_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov).
  • Corrigidos vários bugs quando alguns dados eram inseridos com quórum e, em seguida, excluídos por algum motivo (DROP PARTITION, TTL), o que levava ao bloqueio de INSERTs ou a exceções de falso positivo em SELECTs. Isso corrige #9946. #10188 (Nikita Mikhaylov).
  • Corrigida a incompatibilidade quando versões anteriores à 18.12.17 são usadas em servidores remotos e uma versão mais recente é usada no servidor iniciador, com GROUP BY usando tanto chaves fixas quanto não fixas, e quando o método de group by em dois níveis está ativado. #3254 (alexey-milovidov).

Melhoria de compilação/testes/empacotamento

  • Adicionados certificados de autoridades certificadoras à imagem Docker do clickhouse-server. #10476 (filimonov).

Lançamento do ClickHouse v20.1.10.70, 2020-04-17

Correção de bug

  • Corrigida uma possível exceção rara Cannot drain connections: cancel first. #10239 (Nikolai Kochetov).
  • Corrigido um bug em que o ClickHouse retornava a mensagem de erro 'Unknown function lambda.' quando o usuário tentava executar ALTER UPDATE/DELETE em tabelas com ENGINE = Replicated*. A verificação de funções não determinísticas agora trata corretamente expressões lambda. #10237 (Alexander Kazakov).
  • Corrigido o parseDateTimeBestEffort para strings em RFC-2822 quando o dia da semana é terça-feira ou quinta-feira. Isso corrige #10082. #10214 (alexey-milovidov).
  • Corrigidos os nomes de colunas de constantes dentro de JOIN que podem conflitar com nomes de constantes fora do JOIN. #10207 (alexey-milovidov).
  • Corrige uma possível execução infinita da consulta quando ela deveria, na verdade, parar em LIMIT, ao ler de uma fonte infinita como system.numbers ou system.zeros. #10206 (Nikolai Kochetov).
  • Corrige a otimização de mover para PREWHERE na presença de funções arrayJoin (em determinados casos). Isso corrige #10092. #10195 (alexey-milovidov).
  • Adicionada a possibilidade de flexibilizar a restrição ao uso de funções não determinísticas em mutações com a configuração allow_nondeterministic_mutations. #10186 (filimonov).
  • Converte blocos se a estrutura não corresponder ao fazer INSERT em uma tabela com engine Distributed. #10135 (Azat Khuzhin).
  • Corrige SIGSEGV ao fazer INSERT em tabela Distributed quando sua estrutura difere da das tabelas subjacentes. #10105 (Azat Khuzhin).
  • Corrige a possível perda de linhas em consultas com JOIN e UNION ALL. Corrige #9826, #10113. #10099 (Nikolai Kochetov).
  • Adiciona verificação de argumentos e suporte a argumentos do tipo identificador para o mecanismo de banco de dados MySQL. #10077 (Winter Zhang).
  • Corrige um bug na origem do dicionário do ClickHouse a partir de um servidor ClickHouse em localhost. O bug pode levar à corrupção de memória se os tipos no dicionário e na origem não forem compatíveis. #10071 (alesapin).
  • Corrige o erro Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Isso ocorria quando a configuração distributed_aggregation_memory_efficient estava habilitada e a consulta distribuída lia dados agregados em níveis diferentes de shards distintos (misturando agregação de um nível e de dois níveis). #10063 (Nikolai Kochetov).
  • Corrige uma falha de segmentação que poderia ocorrer em GROUP BY com chaves de texto contendo bytes nulos ao final (#8636, #8925). #10025 (Alexander Kuzmenkov).
  • Corrige um bug em que as tabelas necessárias não eram obtidas em uma das etapas de processamento de consultas a alguns bancos de dados. Corrige #9699. #9949 (achulkov2).
  • Corrige o erro 'Not found column in block' quando JOIN é usado com TOTALS. Corrige #9839. #9939 (Artem Zuikov).
  • Corrige um bug que fazia as consultas DDL ON CLUSTER travarem na inicialização do servidor. #9927 (Gagan Arneja).
  • Corrigido o TRUNCATE no Join table engine (#9917). #9920 (Amos Bird).
  • Corrigido o erro 'scalar does not exist' em consultas ALTER (#9878). #9904 (Amos Bird).
  • Correção de condição de corrida entre drop e optimize no ReplicatedMergeTree. #9901 (alesapin).
  • Corrigida a lógica de DeleteOnDestroy em ATTACH PART, que poderia levar à remoção automática da parte anexada, e adicionados alguns testes. #9410 (Vladimir Chebotarev).

melhoria de compilação/testes/empacotamento

Lançamento do ClickHouse v20.1.9.54, 2020-03-28

Correção de bug

  • Corrige o erro 'Different expressions with the same alias' quando a consulta tem PREWHERE e WHERE em uma tabela distribuída e SET distributed_product_mode = 'local'. #9871 (Artem Zuikov).
  • Corrige o consumo excessivo de memória das mutações em tabelas com chave primária composta. Isso corrige #9850. #9860 (alesapin).
  • Para consultas INSERT, o shard agora limita as configurações recebidas do nó iniciador às restrições do shard, em vez de gerar uma exceção. Essa correção permite enviar consultas INSERT para um shard com restrições diferentes. Essa mudança aprimora a correção de #9447. #9852 (Vitaly Baranov).
  • Corrige uma possível exceção Got 0 in totals chunk, expected 1 no cliente. Isso acontecia em consultas com JOIN caso a tabela à direita no join tivesse zero linhas. Exemplo: select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. #9823 (Nikolai Kochetov).
  • Corrige SIGSEGV com optimize_skip_unused_shards quando o tipo não pode ser convertido. #9804 (Azat Khuzhin).
  • Corrige alguns casos em que o fuso horário do argumento da função não era usado corretamente. #9574 (Vasily Nemkov).

Melhoria

  • Remover o estágio ORDER BY das mutações, porque lemos de uma única parte ordenada em uma única thread. Também adicionar uma verificação de que a ordem das linhas na mutação segue a ordem da chave de ordenação e não é violada. #9886 (alesapin).

Melhoria de Compilação/Testes/Empacotamento

  • Remove flags duplicadas do linker. Garante que o linker não procure um símbolo inesperado. #9433 (Amos Bird).

Lançamento do ClickHouse v20.1.8.41, 2020-03-20

Correção de bug

  • Corrige um possível erro permanente Cannot schedule a task (devido a uma exceção não tratada em ParallelAggregatingBlockInputStream::Handler::onFinish/onFinishThread). Isso corrige #6833. #9154 (Azat Khuzhin)
  • Corrige o consumo excessivo de memória em consultas ALTER (mutações). Isso corrige #9533 e #9670. #9754 (alesapin)
  • Corrige um bug no uso de acentos graves em DDL de dicionários externos. Isso corrige #9619. #9734 (alesapin)

Lançamento do ClickHouse v20.1.7.38, 2020-03-18

Correção de bug

  • Corrigidos os nomes incorretos de funções internas de sumKahan e sumWithOverflow. Isso levava a uma exceção ao usar essas funções em consultas remotas. #9636 (Azat Khuzhin). Esse problema estava presente em todos os lançamentos do ClickHouse.
  • Permite ALTER ON CLUSTER em tabelas Distributed com replicação interna. Isso corrige #3268. #9617 (shinoi2). Esse problema ocorria em todos os lançamentos do ClickHouse.
  • Corrige possíveis exceções Size of filter does not match size of column e Invalid number of rows in Chunk em MergeTreeRangeReader. Elas podiam ocorrer ao executar PREWHERE em alguns casos. Corrige #9132. #9612 (Anton Popov)
  • Corrigido o problema: o fuso horário não era preservado ao escrever uma expressão aritmética simples como time + 1 (em contraste com uma expressão como time + INTERVAL 1 SECOND). Isso corrige #5743. #9323 (alexey-milovidov). Esse problema estava presente em todos os lançamentos do ClickHouse.
  • Agora não é mais possível criar ou adicionar colunas com aliases circulares simples, como a DEFAULT b, b DEFAULT a. #9603 (alesapin)
  • Corrigido o problema em que o preenchimento no final do valor codificado em base64 podia ficar malformado. Atualizada a biblioteca base64. Isso corrige #9491, fecha #9492 #9500 (alexey-milovidov)
  • Corrigida a condição de corrida na destruição de Poco::HTTPServer. Isso podia acontecer quando o servidor era iniciado e desligado logo em seguida. #9468 (Anton Popov)
  • Corrige possível travamento/número incorreto de linhas em LIMIT n WITH TIES quando há muitas linhas iguais à n’ésima linha. #9464 (tavplubix)
  • Corrige possíveis checksums inconsistentes com TTLs de coluna. #9451 (Anton Popov)
  • Corrige falha quando um usuário tenta ALTER MODIFY SETTING na família de motores de tabela MergeTree em formato antigo. #9435 (alesapin)
  • Agora vamos tentar finalizar as mutações com mais frequência. #9427 (alesapin)
  • Corrige a incompatibilidade no protocolo de replicação introduzida em #8598. #9412 (alesapin)
  • Corrigido not(has()) para o índice bloom_filter de tipos Array. #9407 (achimbab)
  • Corrigido o comportamento das funções match e extract quando a string de entrada tem zero bytes. O comportamento estava incorreto quando a string de entrada era constante. Isso corrige #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)

Melhoria de compilação/testes/empacotamento

Lançamento do ClickHouse v20.1.6.30, 2020-03-05

Correção de bug

  • Corrige incompatibilidade de dados na compressão com o codec T64. #9039 (abyss7)
  • Corrige a ordem dos intervalos ao ler de uma tabela MergeTree em uma thread. Corrige #8964. #9050 (CurtizJ)
  • Corrige um possível segfault em MergeTreeRangeReader ao executar PREWHERE. Corrige #9064. #9106 (CurtizJ)
  • Corrige reinterpretAsFixedString para que retorne FixedString em vez de String. #9052 (oandrew)
  • Corrigido o joinGet para tipos de retorno Nullable. Corrige #8919 #9014 (amosbird)
  • Corrige o teste de fuzzing e o comportamento incorreto das funções bitTestAll/bitTestAny. #9143 (alexey-milovidov)
  • Corrige o comportamento das funções match e extract quando a string de entrada tem zero bytes. O comportamento estava incorreto quando a string de entrada era constante. Corrige #9160 #9163 (alexey-milovidov)
  • Corrigida a execução de predicados invertidos quando é usado um índice funcional monotônico não estrito. Corrige #9034 #9223 (Akazz)
  • Permite reescrever CROSS como INNER JOIN se houver o operador [NOT] LIKE na cláusula WHERE. Corrige #9191 #9229 (4ertus2)
  • Permitir que a(s) primeira(s) coluna(s) de uma tabela com engine Log seja(m) alias. #9231 (abyss7)
  • Permitir join por vírgula contendo IN(). Corrige #7314. #9251 (4ertus2)
  • Melhora a lógica das consultas ALTER MODIFY/ADD. Agora, não é possível ADD uma coluna sem tipo; a expressão padrão em MODIFY não altera o tipo da coluna, e MODIFY do tipo não perde o valor da expressão padrão. Corrige #8669. #9227 (alesapin)
  • Corrigida a finalização de mutações; mesmo quando a mutação já tiver sido concluída, ela pode aparecer com status is_done=0. #9217 (alesapin)
  • Adicionado suporte ao pipeline “Processors” para system.numbers e system.numbers_mt. Isso também corrige o bug em que max_execution_time não é respeitado. #7796 (KochetovNicolai)
  • Corrigida a contagem incorreta da métrica DictCacheKeysRequestedFound. #9411 (nikitamikhaylov)
  • Adicionada uma verificação da política de armazenamento em ATTACH PARTITION FROM, REPLACE PARTITION, MOVE TO TABLE, que, de outra forma, poderia tornar inacessíveis os dados de uma parte após a reinicialização e impedir a inicialização do ClickHouse. #9383 (excitoon)
  • Corrigido o problema relatado pelo UBSan em MergeTreeIndexSet. Isso corrige #9250 #9365 (alexey-milovidov)
  • Corrigida uma possível condição de corrida em BlockIO. #9356 (KochetovNicolai)
  • Suporte a números UInt64 que não cabem em Int64 em funções relacionadas a JSON. Atualização do SIMDJSON para a versão master. Isso corrige #9209 #9344 (alexey-milovidov)
  • Corrige o problema em que a quantidade de espaço livre não é calculada corretamente quando o diretório de dados é montado em um dispositivo separado. No disco padrão, calcula o espaço livre com base no subdiretório de dados. Isso corrige #7441 #9257 (millb)
  • Corrige o problema em que conexões TLS podem falhar com a mensagem OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error and SSL Exception: error:2400006E:random number generator::error retrieving entropy. Atualiza o OpenSSL para a branch master do upstream. #8956 (alexey-milovidov)
  • Ao executar a consulta CREATE, faz a redução de expressões constantes nos argumentos do mecanismo de armazenamento. Substitui o nome vazio do banco de dados pelo banco de dados atual. Corrige #6508, #3492. Também corrige a verificação do endereço local no ClickHouseDictionarySource. #9262 (tabplubix)
  • Corrigido segfault em StorageMerge, que pode ocorrer ao ler de StorageFile. #9387 (tabplubix)
  • Evita a perda de dados no Kafka em casos raros, quando ocorre uma exceção após a leitura do sufixo, mas antes do commit. Corrige #9378. Relacionado a: #7175 #9507 (filimonov)
  • Corrige um erro que fazia o servidor encerrar ao tentar usar / remover a tabela Kafka criada com parâmetros incorretos. Corrige #9494. Incorpora #9507. #9513 (filimonov)

Novo recurso

  • Adiciona a opção deduplicate_blocks_in_dependent_materialized_views para controlar o comportamento de inserções idempotentes em tabelas com visões materializadas. Este novo recurso foi adicionado à versão de correção de bugs a pedido da Altinity. #9070 (urykhy)

Lançamento do ClickHouse v20.1.2.4, 2020-01-22

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

  • A configuração merge_tree_uniform_read_distribution foi tornada obsoleta. O servidor ainda reconhece essa configuração, mas ela não tem efeito. #8308 (alexey-milovidov)
  • O tipo de retorno da função greatCircleDistance foi alterado para Float32, porque agora o resultado do cálculo é Float32. #7993 (alexey-milovidov)
  • Agora, espera-se que os parâmetros de consulta sejam representados em formato com escape. Por exemplo, para passar a string a<tab>b, é preciso escrever a\tb ou a\<tab>b e, respectivamente, a%5Ctb ou a%5C%09b na URL. Isso é necessário para possibilitar a passagem de NULL como \N. Isso corrige #7488. #8517 (alexey-milovidov)
  • Ativa a configuração use_minimalistic_part_header_in_zookeeper para ReplicatedMergeTree por padrão. Isso reduzirá significativamente a quantidade de dados armazenados no ZooKeeper. Essa configuração é compatível desde a versão 19.1, e já a usamos em produção em vários serviços sem nenhum problema há mais de meio ano. Desative essa configuração se houver possibilidade de fazer downgrade para versões anteriores a 19.1. #6850 (alexey-milovidov)
  • Os índices de data skipping estão prontos para produção e habilitados por padrão. As configurações allow_experimental_data_skipping_indices, allow_experimental_cross_to_join_conversion e allow_experimental_multiple_joins_emulation agora estão obsoletas e não têm efeito. #7974 (alexey-milovidov)
  • Adiciona uma nova lógica de ANY JOIN para StorageJoin, consistente com a operação JOIN. Para atualizar sem alterar o comportamento, é necessário adicionar SETTINGS any_join_distinct_right_table_keys = 1 aos metadados das tabelas do engine Join ou recriar essas tabelas após a atualização. #8400 (Artem Zuikov)
  • Exige que o servidor seja reiniciado para aplicar alterações na configuração de logging. Esta é uma solução temporária para evitar o bug em que o servidor grava logs em um arquivo de log excluído (consulte #8696). #8707 (Alexander Kuzmenkov)

Novo recurso

  • Adicionadas informações sobre os caminhos das partes em system.merges. #8043 (Vladimir Chebotarev)
  • Adicionada a possibilidade de executar a consulta SYSTEM RELOAD DICTIONARY no modo ON CLUSTER. #8288 (Guillaume Tassery)
  • Adicionada a possibilidade de executar consultas CREATE DICTIONARY no modo ON CLUSTER. #8163 (alesapin)
  • Agora, o perfil do usuário em users.xml pode herdar múltiplos perfis. #8343 (Mikhail f. Shiryaev)
  • Adicionada a tabela system.stack_trace, que permite ver os stack traces de todas as threads do servidor. Isso é útil para que os desenvolvedores inspecionem o estado interno do servidor. Isso corrige #7576. #8344 (alexey-milovidov)
  • Adicionado o tipo de dado DateTime64 com precisão de frações de segundo configurável. #7170 (Vasily Nemkov)
  • Adicionada a função de tabela clusterAllReplicas, que permite consultar todos os nós do cluster. #8493 (kiran sunkari)
  • Adicionada a função agregada categoricalInformationValue, que calcula o valor de informação de um atributo discreto. #8117 (hcz)
  • Acelera o parsing de arquivos de dados nos formatos CSV, TSV e JSONEachRow ao executá-lo em paralelo. #7780 (Alexander Kuzmenkov)
  • Adicionada a função bankerRound, que realiza o arredondamento bancário. #8112 (hcz)
  • Adicionado suporte a mais idiomas no dicionário embutido para nomes de regiões: ‘ru’, ‘en’, ‘ua’, ‘uk’, ‘by’, ‘kz’, ‘tr’, ‘de’, ‘uz’, ‘lv’, ‘lt’, ‘et’, ‘pt’, ‘he’, ‘vi’. #8189 (alexey-milovidov)
  • Melhoria na consistência da lógica de ANY JOIN. Agora t1 ANY LEFT JOIN t2 é igual a t2 ANY RIGHT JOIN t1. #7665 (Artem Zuikov)
  • Adiciona a configuração any_join_distinct_right_table_keys, que habilita o comportamento antigo de ANY INNER JOIN. #7665 (Artem Zuikov)
  • Adicionados novos SEMI e ANTI JOIN. O comportamento antigo de ANY INNER JOIN agora está disponível como SEMI LEFT JOIN. #7665 (Artem Zuikov)
  • Adicionado o formato Distributed ao engine File e à função de tabela file, permitindo ler arquivos .bin gerados por inserts assíncronos em uma tabela Distributed. #8535 (Nikolai Kochetov)
  • Adiciona um argumento opcional de coluna de reset ao runningAccumulate, que permite redefinir os resultados da agregação a cada novo valor de chave. #8326 (Sergey Kononenko)
  • Adicionada a possibilidade de usar o ClickHouse como endpoint do Prometheus. #7900 (vdimir)
  • Adiciona a seção <remote_url_allow_hosts> em config.xml, que restringe os hosts permitidos para os motores de tabela remotos e para as funções de tabela URL, S3, HDFS. #7154 (Mikhail Korotov)
  • Adicionada a função greatCircleAngle, que calcula a distância em uma esfera em graus. #8105 (alexey-milovidov)
  • Raio da Terra alterado para ficar consistente com a biblioteca H3. #8105 (alexey-milovidov)
  • Adicionados os formatos JSONCompactEachRow e JSONCompactEachRowWithNamesAndTypes para entrada e saída. #7841 (Mikhail Korotov)
  • Adicionada funcionalidade para motores de tabela e funções de tabela relacionados a arquivos (File, S3, URL, HDFS) que permite ler e gravar arquivos gzip com base em um parâmetro adicional do motor ou na extensão do arquivo. #7840 (Andrey Bodrov)
  • Adicionada a função randomASCII(length), que gera uma string com um conjunto aleatório de caracteres ASCII imprimíveis. #8401 (BayoNet)
  • Adicionada a função JSONExtractArrayRaw, que retorna um array dos elementos não analisados de um array JSON da string JSON. #8081 (Oleg Matrokhin)
  • Adicionada a função arrayZip, que permite combinar vários arrays de mesmo comprimento em um único array de tuplas. #8149 (Winter Zhang)
  • Adicionada a capacidade de mover dados entre discos de acordo com as expressões TTL configuradas para a família de motores de tabela *MergeTree. #8140 (Vladimir Chebotarev)
  • Adicionada a função de agregação avgWeighted, que permite calcular a média ponderada. #7898 (Andrey Bodrov)
  • Agora, o parsing paralelo está habilitado por padrão para os formatos TSV, TSKV, CSV e JSONEachRow. #7894 (Nikita Mikhaylov)
  • Adicionadas várias funções geoespaciais da biblioteca H3: h3GetResolution, h3EdgeAngle, h3EdgeLength, h3IsValid e h3kRing. #8034 (Konstantin Malanchev)
  • Adicionado suporte à compressão brotli (br) em armazenamentos e funções de tabela relacionados a arquivos. Isso corrige #8156. #8526 (alexey-milovidov)
  • Adicionadas funções groupBit* para o tipo SimpleAggregationFunction. #8485 (Guillaume Tassery)

Correção de bug

  • Corrige a renomeação de tabelas com o mecanismo Distributed. Corrige o problema #7868. #8306 (tavplubix)
  • Agora os dicionários oferecem suporte a EXPRESSION para atributos em strings arbitrárias em dialetos SQL que não sejam do ClickHouse. #8098 (alesapin)
  • Corrigida a consulta INSERT SELECT FROM mysql(...) que estava com falha. Isso corrige #8070 e #7960. #8234 (tavplubix)
  • Corrige o erro “Mismatch column sizes” ao inserir um Tuple padrão via JSONEachRow. Isso corrige #5653. #8606 (tavplubix)
  • Agora, uma exceção será gerada ao usar WITH TIES em conjunto com LIMIT BY. Também foi adicionada a possibilidade de usar TOP com LIMIT BY. Isso corrige #7472. #7637 (Nikita Mikhaylov)
  • Corrige dependência não intencional de uma versão mais recente da glibc no binário clickhouse-odbc-bridge. #8046 (Amos Bird)
  • Corrigido um bug na função check da família de motores *MergeTree. Agora ela não falha quando a última granule e a última mark têm a mesma quantidade de linhas (não final). #8047 (alesapin)
  • Corrige a inserção em colunas Enum* após a consulta ALTER, quando o tipo numérico subjacente é igual ao tipo especificado na tabela. Isso corrige #7836. #7908 (Anton Popov)
  • Passou a permitir o argumento negativo não constante “size” para a função substring. Isso não era permitido por engano. Isso corrige #4832. #7703 (alexey-milovidov)
  • Corrige bug de parsing quando um número incorreto de argumentos é fornecido ao mecanismo de tabela (O|J)DBC. #7709 (alesapin)
  • Uso do nome do comando do processo ClickHouse em execução ao enviar logs para o syslog. Nas versões anteriores, era usada uma string vazia em vez do nome do comando. #8460 (Michael Nacharov)
  • Corrigida a verificação dos hosts permitidos para localhost. Este PR corrige a solução fornecida em #8241. #8342 (Vitaly Baranov)
  • Corrige uma falha rara nas funções argMin e argMax com argumentos de string longos, quando o resultado é usado na função runningAccumulate. Isso corrige #8325 #8341 (dinosaur)
  • Corrige o memory overcommit em tabelas com engine Buffer. #8345 (Azat Khuzhin)
  • Corrigido um possível bug em funções que podem receber NULL como um dos argumentos e retornar um valor diferente de NULL. #8196 (alexey-milovidov)
  • Cálculos de métricas aprimorados no pool de threads para processos em segundo plano dos motores de tabela MergeTree. #8194 (Vladimir Chebotarev)
  • Corrige a função IN na cláusula WHERE quando há um filtro de tabela no nível de linha. Corrige #6687 #8357 (Ivan)
  • Agora, uma exceção é lançada se o valor inteiro não for totalmente analisado nos valores de configuração. #7678 (Mikhail Korotov)
  • Correção de exceção quando uma função de agregação é usada em uma consulta a uma tabela distribuída com mais de dois shards locais. #8164 (小路)
  • Agora, o filtro de Bloom consegue lidar com arrays de comprimento zero sem realizar cálculos redundantes. #8242 (achimbab)
  • Corrigida a verificação para saber se um host de cliente é permitido, fazendo a correspondência entre o host do cliente e o host_regexp especificado em users.xml. #8241 (Vitaly Baranov)
  • Flexibiliza a verificação de colunas ambíguas, que leva a falsos positivos em várias cláusulas JOIN ON. #8385 (Artem Zuikov)
  • Corrigida uma possível falha do servidor (std::terminate) quando o servidor não consegue enviar nem gravar dados no formato JSON ou XML com valores do tipo de dados String (que exigem validação de UTF-8), ao comprimir dados de resultado com o algoritmo Brotli ou em alguns outros casos raros. Isso corrige #7603 #8384 (alexey-milovidov)
  • Corrige a condição de corrida em StorageDistributedDirectoryMonitor identificada pela CI. Isso corrige #8364. #8383 (Nikolai Kochetov)
  • Agora, as mesclagens em segundo plano na família de motores de tabela *MergeTree preservam com mais precisão a ordem dos volumes da política de armazenamento. #8549 (Vladimir Chebotarev)
  • Agora o mecanismo de tabela Kafka passa a funcionar corretamente com o formato Native. Isso corrige #6731 #7337 #8003. #8016 (filimonov)
  • Corrigidos os formatos com cabeçalho (como CSVWithNames) que estavam gerando uma exceção de EOF para o mecanismo de tabela Kafka. #8016 (filimonov)
  • Corrigido um bug ao criar um Set a partir de uma subconsulta na parte direita da cláusula IN. Isso corrige #5767 e #2542. #7755 (Nikita Mikhaylov)
  • Corrige possível travamento durante a leitura do armazenamento File. #7756 (Nikolai Kochetov)
  • Corrigida a leitura de arquivos no formato Parquet contendo colunas do tipo list. #8334 (maxulan)
  • Corrige o erro Not found column em consultas distribuídas com condição PREWHERE dependente da chave de amostragem se max_parallel_replicas > 1. #7913 (Nikolai Kochetov)
  • Corrigido o erro Not found column quando a consulta usava PREWHERE dependente do alias da tabela e o conjunto de resultados ficava vazio por causa da condição da chave primária. #7911 (Nikolai Kochetov)
  • Corrigido o tipo de retorno das funções rand e randConstant quando o argumento é Nullable. Agora, as funções sempre retornam UInt32 e nunca Nullable(UInt32). #8204 (Nikolai Kochetov)
  • Desativado o push-down de predicado para a expressão WITH FILL. Isso corrige #7784. #7789 (Winter Zhang)
  • Corrigido o resultado incorreto de count() para SummingMergeTree quando a cláusula FINAL é usada. #3280 #7786 (Nikita Mikhaylov)
  • Corrige possíveis resultados incorretos para funções constantes em servidores remotos. Isso ocorria em consultas com funções como version(), uptime(), etc., que retornam valores constantes diferentes em servidores distintos. Isso corrige #7666. #7689 (Nikolai Kochetov)
  • Corrige um bug complexo na otimização de push-down de predicados que levava a resultados incorretos. Isso corrige vários problemas nessa otimização. #8503 (Winter Zhang)
  • Corrigido travamento na consulta CREATE TABLE .. AS dictionary. #8508 (Azat Khuzhin)
  • Várias melhorias na gramática do ClickHouse no arquivo .g4. #8294 (taiyang-li)
  • Correção de bug que causava falhas em JOINs com tabelas com engine Join. Isso corrige #7556 #8254 #7915 #8100. #8298 (Artem Zuikov)
  • Corrigido o recarregamento desnecessário dos dicionários em CREATE DATABASE. #7916 (Azat Khuzhin)
  • Limita o número máximo de streams na leitura de StorageFile e StorageHDFS. Corrige #7650. #7981 (alesapin)
  • Corrige um erro na consulta ALTER ... MODIFY ... CODEC quando o usuário especifica tanto a expressão padrão quanto o codec. Corrige 8593. #8614 (alesapin)
  • Corrigido erro na mesclagem em segundo plano de colunas do tipo SimpleAggregateFunction(LowCardinality). #8613 (Nikolai Kochetov)
  • Corrigida a verificação de tipo na função toDateTime64. #8375 (Vasily Nemkov)
  • Agora o servidor não trava mais com LEFT ou FULL JOIN usando a engine Join e configurações join_use_nulls não suportadas. #8479 (Artem Zuikov)
  • Agora, a consulta DROP DICTIONARY IF EXISTS db.dict não gera exceção se db não existir. #8185 (Vitaly Baranov)
  • Corrige possíveis travamentos em funções de tabela (file, mysql, remote) causados pelo uso de uma referência a um objeto IStorage já removido. Corrige o parsing incorreto das colunas especificadas ao inserir em uma função de tabela. #7762 (tavplubix)
  • Garanta que a rede esteja disponível antes de iniciar o clickhouse-server. Isso corrige #7507. #8570 (Zhichang Yu)
  • Corrige o tratamento de timeout em conexões seguras, para que as consultas não fiquem travadas indefinidamente. Isso corrige #8126. #8128 (alexey-milovidov)
  • Corrigida a contenção redundante entre workers concorrentes do clickhouse-copier. #7816 (Ding Xiang Fei)
  • Agora, as mutações não ignoram mais as partes anexadas, mesmo que a versão da mutação delas seja maior que a versão atual da mutação. #7812 (Zhichang Yu) #8250 (alesapin)
  • Ignora cópias redundantes de partes de dados *MergeTree após a movimentação para outro disco e a reinicialização do servidor. #7810 (Vladimir Chebotarev)
  • Corrige travamento em FULL JOIN com LowCardinality na chave de JOIN. #8252 (Artem Zuikov)
  • É proibido usar o nome de uma coluna mais de uma vez em uma consulta de inserção, como INSERT INTO tbl (x, y, x). Isso corrige #5465, #7681. #7685 (alesapin)
  • Adicionado fallback para detectar o número de núcleos físicos da CPU em CPUs desconhecidas (usando o número de núcleos lógicos da CPU). Isso corrige #5239. #7726 (alexey-milovidov)
  • Corrigido o erro There's no column em colunas materializadas e alias. #8210 (Artem Zuikov)
  • Corrigida uma falha grave quando a consulta EXISTS era usada sem o qualificador TABLE ou DICTIONARY, como em EXISTS t. Isso corrige #8172. Esse bug foi introduzido na versão 19.17. #8213 (alexey-milovidov)
  • Corrige um bug raro relacionado ao erro "Sizes of columns does not match" que podia aparecer ao usar a coluna SimpleAggregateFunction. #7790 (Boris Granveaud)
  • Corrigido o bug em que um usuário com allow_databases vazio recebia acesso a todos os bancos de dados (e o mesmo para allow_dictionaries). #7793 (DeifyTheGod)
  • Correção de falha no cliente quando o servidor já havia se desconectado. #8071 (Azat Khuzhin)
  • Corrige o comportamento do ORDER BY em casos de ordenação por prefixo da chave primária e sufixo fora da chave primária. #7759 (Anton Popov)
  • Verifica se a coluna qualificada está presente na tabela. Isso corrige #6836. #7758 (Artem Zuikov)
  • Corrigido o comportamento em que ALTER MOVE, executado imediatamente após o fim da mesclagem, movia a superparte especificada. Corrige #8103. #8104 (Vladimir Chebotarev)
  • Corrige um possível travamento do servidor ao usar UNION com um número diferente de colunas. Corrige #7279. #7929 (Nikolai Kochetov)
  • Corrigido o tamanho da substring resultante da função substr com tamanho negativo. #8589 (Nikolai Kochetov)
  • Agora o servidor não executa mutação de parte em MergeTree se não houver threads livres suficientes no pool em segundo plano. #8588 (tavplubix)
  • Corrigido um pequeno erro de digitação na formatação da AST de UNION ALL. #7999 (litao91)
  • Corrigidos os resultados incorretos do filtro de Bloom para números negativos. Isso corrige #8317. #8566 (Winter Zhang)
  • Corrigido um possível overflow de buffer na descompressão. Um usuário mal-intencionado pode fornecer dados comprimidos forjados que causarão leitura além do buffer. Esse problema foi identificado por Eldar Zaitov, da equipe de segurança da informação da Yandex. #8404 (alexey-milovidov)
  • Corrige resultado incorreto devido a overflow de inteiros em arrayIntersect. #7777 (Nikolai Kochetov)
  • Agora, a consulta OPTIMIZE TABLE não aguardará que as réplicas offline executem a operação. #8314 (javi santana)
  • Corrigido o parser de ALTER TTL para tabelas Replicated*MergeTree. #8318 (Vladimir Chebotarev)
  • Corrigida a comunicação entre o servidor e o cliente, para que o servidor leia as informações das tabelas temporárias após a falha de uma consulta. #8084 (Azat Khuzhin)
  • Corrigido erro da função bitmapAnd ao fazer a interseção entre um bitmap agregado e um bitmap escalar. #8082 (Yue Huang)
  • Aprimora a definição de ZXid de acordo com o ZooKeeper Programmer’s Guide, corrigindo um bug no clickhouse-cluster-copier. #8088 (Ding Xiang Fei)
  • A função de tabela odbc agora respeita a configuração external_table_functions_use_nulls. #7506 (Vasily Nemkov)
  • Corrigido um bug que causava uma rara condição de corrida. #8143 (Alexander Kazakov)
  • Agora, SYSTEM RELOAD DICTIONARY recarrega completamente um dicionário, ignorando update_field. Isso corrige #7440. #8037 (Vitaly Baranov)
  • Adicionada a possibilidade de verificar se o dicionário existe na consulta CREATE. #8032 (alesapin)
  • Corrige o parsing de Float* no formato Values. Isso corrige #7817. #7870 (tavplubix)
  • Corrigida a falha quando não era possível reservar espaço em algumas operações em segundo plano da família de motores de tabela *MergeTree. #7873 (Vladimir Chebotarev)
  • Corrige a falha na operação de merge quando a tabela contém uma coluna SimpleAggregateFunction(LowCardinality). Isso corrige #8515. #8522 (Azat Khuzhin)
  • Suporte restaurado para todos os locales do ICU e adicionada a possibilidade de aplicar collations a expressões constantes. Também foi adicionado o nome do idioma à tabela system.collations. #8051 (alesapin)
  • Corrige um bug em que dicionários externos com tempo de vida mínimo zero (LIFETIME(MIN 0 MAX N), LIFETIME(N)) não eram atualizados em segundo plano. #7983 (alesapin)
  • Corrigido travamento quando um dicionário externo com ClickHouse como origem tem uma subconsulta na consulta. #8351 (Nikolai Kochetov)
  • Corrige a análise incorreta da extensão de arquivo em tabela com mecanismo URL. Isso corrige #8157. #8419 (Andrey Bodrov)
  • Corrige a consulta CHECK TABLE para tabelas *MergeTree sem chave. Corrige #7543. #7979 (alesapin)
  • Corrigida a conversão de Float64 para o tipo do MySQL. #8079 (Yuriy Baranov)
  • Agora, se a tabela não foi completamente excluída devido a uma pane no servidor, o servidor tentará restaurá-la e carregá-la. #8176 (tavplubix)
  • Corrigido um travamento na função de tabela file ao inserir em um arquivo inexistente. Agora, nesse caso, o arquivo será criado e a inserção será executada. #8177 (Olga Khvostikova)
  • Corrige um deadlock raro que pode ocorrer quando trace_log está ativado. #7838 (filimonov)
  • Adiciona a capacidade de trabalhar com tipos diferentes de Date no dicionário externo RangeHashed criado a partir de uma consulta DDL. Corrige 7899. #8275 (alesapin)
  • Corrige travamento quando now64() é chamada com o resultado de outra função. #8270 (Vasily Nemkov)
  • Corrigido um bug na detecção do IP do cliente em conexões via protocolo wire do MySQL. #7743 (Dmitry Muzyka)
  • Corrige o tratamento de arrays vazios na função arraySplit. Isso corrige #7708. #7747 (hcz)
  • Corrigido o problema em que o pid-file de outro clickhouse-server em execução podia ser removido. #8487 (Weiqing Xu)
  • Corrigido o recarregamento do Dicionário quando ele tem invalidate_query, que interrompia as atualizações e gerava alguma exceção nas tentativas anteriores de atualização. #8029 (alesapin)
  • Corrigido erro na função arrayReduce que pode causar “double free” e erro no combinador de função de agregação Resample que pode causar vazamento de memória. Adicionada a função de agregação aggThrow. Essa função pode ser usada para testes. #8446 (alexey-milovidov)

Melhoria

  • Logging aprimorado ao trabalhar com a engine de tabela S3. #8251 (Grigory Pervakov)
  • Mensagem de ajuda exibida quando nenhum argumento é fornecido ao chamar clickhouse-local. Isso corrige #5335. #8230 (Andrey Nagorny)
  • Adicionada a configuração mutations_sync, que permite aguardar consultas ALTER UPDATE/DELETE de forma síncrona. #8237 (alesapin)
  • Permite definir user_files_path como relativo em config.xml (de forma semelhante a format_schema_path). #7632 (hcz)
  • Adicionar uma exceção para tipos inválidos nas funções de conversão com o sufixo -OrZero. #7880 (Andrey Konyaev)
  • Simplificado o formato do cabeçalho de envio de dados para um shard em uma consulta distribuída. #8044 (Vitaly Baranov)
  • Refatoração do mecanismo de tabela Live View. #8519 (vzakaznikov)
  • Adicionadas verificações adicionais para dicionários externos criados a partir de consultas DDL. #8127 (alesapin)
  • Corrige o erro Column ... already exists ao usar FINAL e SAMPLE em conjunto, por exemplo, select count() from table final sample 1/2. Corrige #5186. #7907 (Nikolai Kochetov)
  • Agora, o primeiro argumento da função joinGet pode ser um identificador de tabela. #7707 (Amos Bird)
  • Permite usar MaterializedView com subconsultas em tabelas Kafka. #8197 (filimonov)
  • Agora, os moves em segundo plano entre discos são executados em um pool de threads separado. #7670 (Vladimir Chebotarev)
  • SYSTEM RELOAD DICTIONARY agora é executado de modo síncrono. #8240 (Vitaly Baranov)
  • Os stack traces agora exibem endereços físicos (deslocamentos no arquivo-objeto) em vez de endereços de memória virtual (onde o arquivo-objeto foi carregado). Isso permite usar addr2line quando o binário é independente de posição e o ASLR está ativo. Isso corrige #8360. #8387 (alexey-milovidov)
  • Adiciona suporte à nova sintaxe para filtros de segurança em nível de linha: <table name='table_name'>...</table>. Corrige #5779. #8381 (Ivan)
  • Agora a função cityHash pode trabalhar com os tipos Decimal e UUID. Corrige #5184. #7693 (Mikhail Korotov)
  • Removida a granularidade fixa do índice (era 1024) dos logs do sistema, pois ela ficou obsoleta após a implementação da granularidade adaptativa. #7698 (alexey-milovidov)
  • Foi habilitado o servidor de compatibilidade com MySQL quando o ClickHouse é compilado sem SSL. #7852 (Yuriy Baranov)
  • Agora o servidor calcula checksums dos lotes distribuídos, o que gera mensagens de erro mais detalhadas em caso de dados corrompidos no lote. #7914 (Azat Khuzhin)
  • Suporte a DROP DATABASE, DETACH TABLE, DROP TABLE e ATTACH TABLE no engine de banco de dados MySQL. #8202 (Winter Zhang)
  • Adicionada autenticação na table function S3 e no mecanismo de tabela. #7623 (Vladimir Chebotarev)
  • Adicionada verificação de partes extras do MergeTree em diferentes disks, para evitar a perda de partes de dados em disks não definidos. #8118 (Vladimir Chebotarev)
  • Adicionado suporte a SSL ao cliente e ao servidor no Mac. #8297 (Ivan)
  • Agora o ClickHouse pode funcionar como servidor federado do MySQL (consulte https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html). #7717 (Maxim Fedotov)
  • clickhouse-client agora só habilita bracketed-paste quando multiquery está ativado e multiline desativado. Isso corrige #7757. #7761 (Amos Bird)
  • Suporte para Array(Decimal) na função if. #7721 (Artem Zuikov)
  • Adicionado suporte a Decimal nas funções arrayDifference, arrayCumSum e arrayCumSumNegative. #7724 (Artem Zuikov)
  • Adicionada a coluna lifetime à tabela system.dictionaries. #6820 #7727 (kekekekule)
  • Verificação aprimorada de partes existentes em diferentes disks para os motores de tabela *MergeTree. Resolve #7660. #8440 (Vladimir Chebotarev)
  • Integração com o AWS SDK para interações com S3, o que permite usar todos os recursos do S3 nativamente. #8011 (Pavel Kovalenko)
  • Adicionado suporte a subconsultas em tabelas Live View. #7792 (vzakaznikov)
  • Foi removida a verificação de uso de coluna Date ou DateTime em expressões TTL. #7920 (Vladimir Chebotarev)
  • Informações sobre o disco foram adicionadas à tabela system.detached_parts. #7833 (Vladimir Chebotarev)
  • Agora, as configurações max_(table|partition)_size_to_drop podem ser alteradas sem necessidade de reiniciar. #7779 (Grigory Pervakov)
  • Pequena melhoria na usabilidade das mensagens de erro. Pedir ao usuário para não remover as linhas abaixo de Stack trace:. #7897 (alexey-milovidov)
  • Melhoria na leitura de mensagens do mecanismo Kafka em vários formatos após #7935. #8035 (Ivan)
  • Maior compatibilidade com clientes MySQL que não oferecem suporte ao plugin de autenticação sha2_password. #8036 (Yuriy Baranov)
  • Adicionado suporte a mais tipos de coluna no servidor de compatibilidade com MySQL. #7975 (Yuriy Baranov)
  • Implementada a otimização de ORDER BY para os armazenamentos Merge, Buffer e Materilized View com tabelas MergeTree subjacentes. #8130 (Anton Popov)
  • Agora passamos a usar sempre a implementação POSIX de getrandom para garantir melhor compatibilidade com kernels antigos (< 3.17). #7940 (Amos Bird)
  • Melhor verificação de destino válido em uma regra TTL de movimentação. #8410 (Vladimir Chebotarev)
  • Melhorias nas verificações de lotes de insert corrompidos no mecanismo de tabela Distributed. #7933 (Azat Khuzhin)
  • Adicionar à tabela system.mutations uma coluna com um array dos nomes das partes que as mutações deverão processar futuramente. #8179 (alesapin)
  • Otimização do merge sort paralelo para processadores. #8552 (Nikolai Kochetov)
  • A configuração mark_cache_min_lifetime agora está obsoleta e não tem mais efeito. Em versões anteriores, o cache de marcas podia crescer na memória além de mark_cache_size para acomodar dados durante mark_cache_min_lifetime segundos. Isso gerava confusão e um uso de memória maior do que o esperado, o que é especialmente problemático em sistemas com pouca memória. Se você notar degradação de desempenho após instalar este lançamento, deverá aumentar mark_cache_size. #8484 (alexey-milovidov)
  • Preparação para usar tid em toda parte. Isso é necessário para #7477. #8276 (alexey-milovidov)

Melhoria de desempenho

  • Otimizações de desempenho no pipeline de processadores. #7988 (Nikolai Kochetov)
  • Atualizações sem bloqueio de chaves expiradas em dicionários de cache (com permissão para ler as antigas). #8303 (Nikita Mikhaylov)
  • Compilação do ClickHouse sem -fno-omit-frame-pointer globalmente para liberar mais um registrador. #8097 (Amos Bird)
  • Melhora o desempenho da função greatCircleDistance e adiciona testes de desempenho para ela. #7307 (Olga Khvostikova)
  • Desempenho aprimorado da função roundDown. #8465 (alexey-milovidov)
  • Desempenho aprimorado de max, min, argMin e argMax para o tipo de dado DateTime64. #8199 (Vasily Nemkov)
  • Melhorado o desempenho da ordenação sem limite ou com limite alto e ordenação externa. #8545 (alexey-milovidov)
  • Desempenho da formatação de números de ponto flutuante melhorado em até 6 vezes. #8542 (alexey-milovidov)
  • Desempenho aprimorado da função modulo. #7750 (Amos Bird)
  • O ORDER BY e a mesclagem com chave de coluna única foram otimizados. #8335 (alexey-milovidov)
  • Melhorias na implementação de arrayReduce e dos combinadores -Array e -State. #7710 (Amos Bird)
  • Agora, PREWHERE está otimizado para ser pelo menos tão eficiente quanto WHERE. #7769 (Amos Bird)
  • Melhora a forma como round e roundBankers tratam números negativos. #8229 (hcz)
  • Melhoria no desempenho de decodificação dos codecs DoubleDelta e Gorilla em cerca de 30–40%. Isso corrige #7082. #8019 (Vasily Nemkov)
  • Desempenho aprimorado das funções relacionadas a base64. #8444 (alexey-milovidov)
  • Adicionada a função geoDistance. Ela é semelhante a greatCircleDistance, mas usa uma aproximação do modelo elipsoidal WGS-84. O desempenho de ambas as funções é praticamente o mesmo. #8086 (alexey-milovidov)
  • Funções de agregação min e max mais rápidas para o tipo de dado Decimal. #8144 (Artem Zuikov)
  • Vetorizado o processamento de arrayReduce. #7608 (Amos Bird)
  • Estruturas if encadeadas agora são otimizadas como multiIf. #8355 (kamalov-ruslan)
  • Corrige a regressão de desempenho do engine de tabela Kafka introduzida na versão 19.15. Corrige #7261. #7935 (filimonov)
  • Removida a geração de código “pie” que o gcc dos pacotes do Debian ocasionalmente inclui por padrão. #8483 (alexey-milovidov)
  • Formatos de dados com análise paralela #6553 (Nikita Mikhaylov)
  • Parser otimizado de Values com expressões habilitado por padrão (input_format_values_deduce_templates_of_expressions=1). #8231 (tavplubix)

Melhoria em compilação/testes/empacotamento

  • Correções na compilação para ARM e para o modo mínimo. #8304 (proller)
  • Adicionado flush do arquivo de cobertura para clickhouse-server quando std::atexit não é chamado. Também houve uma pequena melhoria no logging em testes sem estado com cobertura. #8267 (alesapin)
  • Atualizada a biblioteca LLVM em contrib. Evitado o uso do LLVM a partir de pacotes do SO. #8258 (alexey-milovidov)
  • Deixe a compilação do curl incluído totalmente silenciosa. #8232 #8203 (Pavel Kovalenko)
  • Corrige alguns avisos do MemorySanitizer. #8235 (Alexander Kuzmenkov)
  • Use as macros add_warning e no_warning no arquivo CMakeLists.txt. #8604 (Ivan)
  • Adicionado suporte ao objeto do Minio compatível com S3 (https://min.io/) para melhorar os testes de integração. #7863 #7875 (Pavel Kovalenko)
  • Os arquivos de cabeçalho da libc foram importados para o contrib. Isso permite tornar as compilações mais consistentes em diferentes sistemas (somente para x86_64-linux-gnu). #5773 (alexey-milovidov)
  • Remoção de -fPIC de algumas bibliotecas. #8464 (alexey-milovidov)
  • Limpeza do CMakeLists.txt do curl. Consulte https://github.com/ClickHouse/ClickHouse/pull/8011#issuecomment-569478910 #8459 (alexey-milovidov)
  • Supressão de avisos na biblioteca CapNProto. #8220 (alexey-milovidov)
  • Adicionar testes de desempenho para tabelas hash com otimização para strings curtas. #7679 (Amos Bird)
  • Agora, o ClickHouse pode ser compilado em AArch64 mesmo sem MADV_FREE disponível. Isso corrige #8027. #8243 (Amos Bird)
  • Atualizado o zlib-ng para corrigir problemas com o sanitizer de memória. #7182 #8206 (Alexander Kuzmenkov)
  • Habilitada a biblioteca interna do MySQL em sistemas não Linux, porque o uso de pacotes do SO é muito frágil e geralmente não funciona de jeito nenhum. Isso corrige #5765. #8426 (alexey-milovidov)
  • Corrigida a compilação em alguns sistemas após ativar libc++. Isso substitui #8374. #8380 (alexey-milovidov)
  • Tornar os métodos Field mais seguros em relação a tipos para detectar mais erros. #7386 #8209 (Alexander Kuzmenkov)
  • Arquivos ausentes foram adicionados ao submódulo libc-headers. #8507 (alexey-milovidov)
  • Corrigidas as aspas incorretas em JSON na saída do teste de desempenho. #8497 (Nikolai Kochetov)
  • Agora, o stack trace é exibido para std::exception e Poco::Exception. Nas versões anteriores, ele estava disponível apenas para DB::Exception. Isso melhora os diagnósticos. #8501 (alexey-milovidov)
  • Adaptação de clock_gettime e clock_nanosleep para versões mais novas da glibc. #8054 (Amos Bird)
  • Ativar part_log na configuração de exemplo para desenvolvedores. #8609 (alexey-milovidov)
  • Corrigido o comportamento assíncrono do recarregamento em 01036_no_superfluous_dict_reload_on_create_database*. #8111 (Azat Khuzhin)
  • Corrigidos os testes de desempenho do codec. #8615 (Vasily Nemkov)
  • Adiciona scripts de instalação para a compilação .tgz e sua documentação. #8612 #8591 (alesapin)
  • Removido o teste antigo do ZSTD (ele foi criado em 2016 para reproduzir o bug que a versão pré-1.0 do ZSTD tinha). Isso corrige #8618. #8619 (alexey-milovidov)
  • Corrigida a compilação no Mac OS Catalina. #8600 (meo)
  • Aumentado o número de linhas nos testes de desempenho de codec para que os resultados fiquem perceptíveis. #8574 (Vasily Nemkov)
  • Em compilações de depuração, trate exceções LOGICAL_ERROR como falhas de asserção, para que fiquem mais fáceis de perceber. #8475 (Alexander Kuzmenkov)
  • Tornar mais determinístico o teste de desempenho relacionado a formatos. #8477 (alexey-milovidov)
  • Atualizado o lz4 para corrigir uma falha do MemorySanitizer. #8181 (Alexander Kuzmenkov)
  • Suprimido um falso positivo conhecido do MemorySanitizer no tratamento de exceções. #8182 (Alexander Kuzmenkov)
  • Atualizado gcc e g++ para a versão 9 em build/docker/build.sh #7766 (TLightSky)
  • Adicionado um caso de teste de desempenho para verificar que PREWHERE é pior que WHERE. #7768 (Amos Bird)
  • Progresso na correção de um teste instável. #8621 (alexey-milovidov)
  • Evitar relatório do MemorySanitizer para dados de libunwind. #8539 (alexey-milovidov)
  • Atualizado o libc++ para a versão mais recente. #8324 (alexey-milovidov)
  • Compilação da biblioteca ICU a partir do código-fonte. Isso corrige #6460. #8219 (alexey-milovidov)
  • Foi trocado de libressl para openssl. O ClickHouse deve oferecer suporte a TLS 1.3 e SNI após essa mudança. Isso corrige #8171. #8218 (alexey-milovidov)
  • Corrigido um relatório do UBSan ao usar chacha20_poly1305 do SSL (acontece ao se conectar a https://yandex.ru/). #8214 (alexey-milovidov)
  • Corrigido o modo do arquivo de password padrão em distribuições Linux .deb. #8075 (proller)
  • Expressão aprimorada para obter o PID do clickhouse-server em clickhouse-test. #8063 (Alexander Kazakov)
  • Atualizado o contrib/googletest para a v1.10.0. #8587 (Alexander Burmak)
  • Corrigido o alerta do ThreadSanitizer na biblioteca base64. A biblioteca também foi atualizada para a versão mais recente, mas isso não é relevante. Isso corrige #8397. #8403 (alexey-milovidov)
  • Correção de 00600_replace_running_query nos processadores. #8272 (Nikolai Kochetov)
  • Removido o suporte ao tcmalloc para simplificar o CMakeLists.txt. #8310 (alexey-milovidov)
  • As compilações de lançamento com gcc agora usam libc++ em vez de libstdc++. Recentemente, libc++ era usado apenas com clang. Isso melhorará a consistência das configurações de compilação e a portabilidade. #8311 (alexey-milovidov)
  • Ative a biblioteca ICU na compilação com MemorySanitizer. #8222 (alexey-milovidov)
  • Suprime avisos da biblioteca CapNProto. #8224 (alexey-milovidov)
  • Removidos os casos especiais de código para tcmalloc, porque ele não é mais suportado. #8225 (alexey-milovidov)
  • Na tarefa de cobertura da CI, encerre o servidor corretamente para permitir que ele salve o relatório de cobertura. Isso corrige relatórios de cobertura incompletos que vínhamos vendo ultimamente. #8142 (alesapin)
  • Testes de desempenho para todos os codecs com valores Float64 e UInt64. #8349 (Vasily Nemkov)
  • termcap está claramente obsoleto e causou vários problemas (por exemplo, a ausência da capacidade “up” e a exibição de ^J em vez de múltiplas linhas). Prefira terminfo ou o ncurses incluído. #7737 (Amos Bird)
  • Corrigido o teste de integração test_storage_s3. #7734 (Nikolai Kochetov)
  • Suporte a StorageFile(<format>, null) para inserir um bloco em um arquivo no formato especificado sem realmente gravar em disco. Isso é necessário para testes de desempenho. #8455 (Amos Bird)
  • Adicionado o argumento --print-time aos testes funcionais, que exibe o tempo de execução de cada teste. #8001 (Nikolai Kochetov)
  • Adicionadas assertivas a KeyCondition durante a avaliação da RPN. Isso corrigirá o aviso do gcc-9. #8279 (alexey-milovidov)
  • Registrar as opções do cmake nas compilações de CI. #8273 (Alexander Kuzmenkov)
  • Não gerar informações de depuração para algumas bibliotecas maiores. #8271 (alexey-milovidov)
  • Faça com que log_to_console.xml sempre registre em stderr, independentemente de ser interativo ou não. #8395 (Alexander Kuzmenkov)
  • Removidas algumas funcionalidades não usadas da ferramenta clickhouse-performance-test. #8555 (alexey-milovidov)
  • Agora também vamos procurar por lld-X, com a versão correspondente do clang-X. #8092 (alesapin)
  • Melhoria na compilação do Parquet. #8421 (maxulan)
  • Mais alertas do GCC #8221 (kreuzerkrieg)
  • O pacote para Arch Linux agora permite executar o servidor do ClickHouse, e não apenas o cliente. #8534 (Vladimir Chebotarev)
  • Corrigido teste com processadores. Pequenas melhorias de desempenho. #7672 (Nikolai Kochetov)
  • Atualizado o contrib/protobuf. #8256 (Matwey V. Kornilov)
  • Em preparação para a mudança para c++20, como celebração de Ano-Novo. “Que a força do C++ esteja com o ClickHouse.” #8447 (Amos Bird)

Funcionalidade experimental

  • Adicionada a configuração experimental min_bytes_to_use_mmap_io. Ela permite ler arquivos grandes sem copiar dados do kernel para o userspace. A configuração é desabilitada por padrão. O limiar recomendado é de cerca de 64 MB, porque mmap/munmap é lento. #8520 (alexey-milovidov)
  • Quotas reformuladas como parte do sistema de controle de acesso. Adicionados a nova tabela system.quotas, as novas funções currentQuota, currentQuotaKey e a nova sintaxe SQL CREATE QUOTA, ALTER QUOTA, DROP QUOTA, SHOW QUOTA. #7257 (Vitaly Baranov)
  • Passou a ser possível ignorar configurações desconhecidas com avisos, em vez de gerar exceções. #7653 (Vitaly Baranov)
  • Políticas de linha reformuladas como parte do sistema de controle de acesso. Adicionados a nova tabela system.row_policies, a nova função currentRowPolicies() e a nova sintaxe SQL CREATE POLICY, ALTER POLICY, DROP POLICY, SHOW CREATE POLICY, SHOW POLICIES. #7808 (Vitaly Baranov)

Correção de segurança

  • Corrigida a possibilidade de leitura da estrutura de diretórios em tabelas com o engine de tabela File. Isso corrige #8536. #8537 (alexey-milovidov)
Última modificação em 10 de junho de 2026