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 shortao executar funçõestoType(...)(toDate,toUInt32, etc.) com argumento do tipoNullable(String). Agora, essas funções retornamNULLem 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
Distinctao usar agregação em dois níveis. Corrige #17682. #18365 (Anton Popov). - Corrigido o erro em que a consulta
MODIFY COLUMN ... REMOVE TTLnão removia de fato o TTL da coluna. #18130 (alesapin).
Melhoria de Compilação/Testes/Empacotamento
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-bridgefica 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_stringna 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_tracevazia 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_namespor 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áusulaSETTINGSao criar uma tabela que usa o engineFile, e usa essas configurações em todos osINSERTs eSELECTs. As configurações de formato de arquivo alteradas na sessão atual do usuário, ou na própria cláusulaSETTINGSde 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*.xzna funçãofile(). 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
tcpPortretorna 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_emptypara 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-clientusando 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 implementedao executar a consultaRENAMEem banco de dadosAtomic, 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_walestiver desabilitado. #17802 (detailyang). - corrige a inicialização incorreta de
max_compress_block_sizeem MergeTreeWriterSettings commin_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 quandopool_size> 1. Isso foi corrigido. #17640 (tavplubix). - A exceção
fmt::v7::format_errorpode 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 BYcom a configuraçãooptimize_redundant_functions_in_order_byhabilitada. #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
JOINcom tiposLowCardinality. 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 clientregistrado em consultas distribuídas comLIMIT. #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 CLUSTERpodem ficar travadas indefinidamente em tabelas ReplicatedMergeTree que não são líderes. #17089 (alesapin). - Corrigido travamento na consulta
CREATE TABLE ... AS some_tablequandosome_tableera criada comAS table_function(). Corrige #16944. #17072 (tavplubix). - Erro na implementação inacabada da função fuzzBits, issue relacionada: #16980. #17051 (hexiaoting).
- Corrige o
libunwinddo 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 ... NewTypequando oSELECTcontém uma expressãoWHEREna coluna que está sendo alterada e oALTERainda 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_keysestá habilitada e há junções. Corrige #12604. #16951 (Anton Popov). - Corrige o possível erro
Illegal type of argumentem consultas comORDER 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
anysem 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
INem várias colunas e tuplas com a configuraçãotransform_null_inativada. 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_consistencyna 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_urlem 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
hosteportdeSOURCE(CLICKHOUSE(...))para a instância atual, e o valor padrão deuserpara'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_millisecondsestá 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
CODECestá em posição incorreta na consultaCREATE 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, comohttp://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 emconfig.xmle 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 oclickhouse-serverestá 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
ReplicatedMergeTreeusa um pool de threads separado para fetches replicados. O tamanho do pool é limitado pela configuraçãobackground_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
VIEWaoEXPLAIN. Limita a otimização de push down paraVIEW. Adiciona réplicas locais deDistributedao 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
Mergesobre um número muito grande de tabelasMergeTree. 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) % 100e a consulta tenha a condição emintHash64(x) % 100literalmente, 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
- Melhora a cobertura de testes na compilação de imagens. #17233 (alesapin).
- Atualiza os dados de fuso horário embutidos para a versão 2020d (também atualiza o cctz para a versão mais recente da branch master). #17204 (filimonov).
- Corrige erro relatado pelo UBSan no Poco. Fecha #12719. #16765 (alexey-milovidov).
- Deixa de instrumentar bibliotecas de terceiros com UBSan. #16764 (alexey-milovidov).
- Corrige erro relatado pelo UBSan em dicionários de cache. Fecha #12641. #16763 (alexey-milovidov).
- Corrige erro relatado pelo UBSan ao tentar converter um número de ponto flutuante infinito em inteiro. Fecha #14190. #16677 (alexey-milovidov).
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_logestivesse 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
neighborpara o argumentoLowCardinality. 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 SYNCpodia 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
addMonthfosse 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
ALTEReDROPexecutadas 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çãoAttempt to read after EOF. Corrige #18340. #19101 (alesapin). - Corrigido o erro
There is no checkpointao inserir dados pela interface HTTP usando o formatoTemplateouCustomSeparated. Corrige #19021. #19072 (tavplubix). - Restrinja as consultas
MODIFY TTLpara tabelasMergeTreecriadas 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
groupUniqArrayretorne 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 functionao usar a funçãoignorecom um argumentoLowCardinality. Corrige #14275. #19016 (Nikolai Kochetov). - Corrigida a inserção da coluna
LowCardinalityna tabela com engineTinyLog. Corrige #18629. #19010 (Nikolai Kochetov). - Desative
optimize_move_functions_out_of_anyporque 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_methodestiver definida globalmente com um valor diferente do padrão. Isso corrige #18741. #18776 (alexey-milovidov). - Corrigido o erro
Attempt to read after eofao tentar fazerCASTdeNULLdeNullable(String)paraNullable(Decimal(P, S)). Agora, a funçãoCASTretornaNULLquando 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 stuckao usarORDER BYapós uma subconsulta comRIGHTouFULLjoin. #18550 (Nikolai Kochetov). - Corrige um bug que pode fazer com que consultas
ALTERfiquem 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 shortao executar funçõestoType(...)(toDate,toUInt32etc.) com argumento do tipoNullable(String). Agora, essas funções retornamNULLem 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
Distinctao usar agregação em dois níveis. Corrige #17682. #18365 (Anton Popov). SELECT count() FROM tableagora pode ser executado se for possível selecionar apenas uma coluna qualquer datable. Este PR corrige #10639. #18233 (Vitaly Baranov).SELECT JOINagora exige o privilégioSELECTem 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 threadsnos logs). Introduzido em #16423. Corrige #18137. #18216 (Nikolai Kochetov). - Corrige o erro em que a consulta
MODIFY COLUMN ... REMOVE TTLna 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
MOVEouREPLACE PARTITIONou, em casos raros, apósDETACHouDROP PARTITION. Isso foi corrigido. #15537 (tavplubix).
Melhoria de compilação/testes/empacotamento
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-bridgeficava inacessível para o servidor em máquinas com pilha duplaIPv4/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_stringao 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_walestiver 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_queryao 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_errorpode 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 BYquando a configuraçãooptimize_redundant_functions_in_order_byestá 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
JOINcom tiposLowCardinality. 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 CLUSTERpodiam travar indefinidamente emReplicatedMergeTreeTablesnã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_urlem caso de erros. #16985 (filimonov). - Corrigido um possível travamento do servidor após
ALTER TABLE ... MODIFY COLUMN ... NewTypequando umSELECTcontém uma expressãoWHEREna 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_keysestá 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 argumentem consultas comORDER 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
anysem 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
INSERTvia 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
ifem função de agregação. Isso corrige #16574, #16231 e #16610 (Winter Zhang). - Corrigido o comportamento inconsistente causado por
select_sequential_consistencyna 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
profilefosse especificado na seção de configdistributed_ddl, esse profile poderia sobrescrever as configurações do profiledefaultna 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
ANALYZEeASTe torna a configuraçãoenable_debug_queriesobsoleta, já que agora ela faz parte da consultaEXPLAIN, que é mais completa. #16536 (Ivan). - As funções de agregação
boundingRatio,rankCorr,retention,timeSeriesGroupSum,timeSeriesGroupRateSum,windowFunnelforam 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
rankCorrretornar 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
traceparentdo 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 tabelasystem.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 especificarLIMIT. #15855 (hexiaoting). - Função
errorCodeToName- retorna o nome da variável correspondente ao erro (útil para analisarquery_loge similares). Tabelasystem.errors- mostra quantas vezes ocorreram erros (respeitasystem_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 paraquery_log/query_thread_log(ou seja, algo comoslow_query_logno 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_idao 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
tidelogTrace. 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_mergespara 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
INpara várias colunas e tuplas com a configuraçãotransform_null_inhabilitada. Corrige #15310. #16722 (Anton Popov). - A configuração
max_parallel_replicasfuncionava 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
DEFAULTenvolvia 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
roundcomDecimalestava 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-localao tentar executar o comandoOPTIMIZE. 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.partsdeve 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 aINTERVAL 1 HOUR, para manter a compatibilidade com Postgres e similares. Isso corrige #15637. #15978 (flynn). - Habilitado o parsing de valores
enumpor 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çãoread_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
LowCardinalityno formatoAvro. #16521 (Mike). - Solução alternativa para usar
S3com o servidor nginx como proxy. Atualmente, o Nginx não aceita URLs com caminho vazio, comohttp://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, comohttp://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
minMapemaxMap. 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 dadosAtomicnã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áusulaWITHpelo 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 EOFeBroken pipeeram 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 KEYsemORDER BYna 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-localcriará 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/SYNCnoDROP DATABASE. #16127 (Azat Khuzhin). - Adiciona
allow_nondeterministic_optimize_skip_unused_shards(para permitir funções não determinísticas, comorand()oudictGet(), na chave de sharding). #16105 (Azat Khuzhin). - Corrige
memory_profiler_step/max_untracked_memorypara 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. Corrigequery_idpara o ThreadStatus raiz da consulta HTTP (inicializando QueryScope após ler query_id). #16101 (Azat Khuzhin). - Agora é possível executar consultas
ALTER ... ON CLUSTERindependentemente da configuração<internal_replication>na config do cluster. #16075 (alesapin). - Corrige um problema raro em que o
clickhouse-clientpode ser abortado ao sair devido ao carregamento de sugestões. Isso corrige #16035. #16047 (alexey-milovidov). - Adicionado suporte ao layout
cacheem dicionáriosRediscom chave complexa. #15985 (Anton Popov). - Corrige travamento de consulta (loop infinito) em caso de configuração incorreta (
connections_with_failover_max_triesdefinido 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
-OrNulle-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
croaringem 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 oncenos 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_optionsaodb_generatorpara 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-bridgenão pode ser alcançado pelo servidor em máquinas com pilha duplaIPv4/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_stringao 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
WALsein_memory_parts_enable_walestiver 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
ALTERquando 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 BYquando a configuraçãooptimize_redundant_functions_in_order_byestá 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
JOINcom tiposLowCardinality. 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 CLUSTERpodiam 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_urlnovamente em caso de erros. #16985 (filimonov). - Corrigida uma possível falha do servidor após
ALTER TABLE ... MODIFY COLUMN ... NewTypequandoSELECTtem uma expressãoWHEREna coluna que está sendo alterada e oALTERainda 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_keyshabilitada 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 argumentem consultas comORDER 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
anysem 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
INSERTvia 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
ifem 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
INem várias colunas e tuplas com a configuraçãotransform_null_inativada. 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_workerativado 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.partsdeve 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_versionobsoleto. 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 formatoRegexp) paraRaw(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_queueemax_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 executarSYSTEM STOP TTL MERGESaté concluir a atualização de todas as réplicas. Se surgir uma entrada incompatível na fila de replicação, antes de tudo executeSYSTEM STOP TTL MERGESe, 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_namepara 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çõesWITHda primeira consulta SELECT para outras consultas SELECT no mesmo nível e torna os aliases nas instruçõesWITHvisí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_removeeALTER 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_numberspara 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
NULLpara o formato de saídaTSV. Isso é controlado pela configuraçãooutput_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 deNULLcom suporte no formato de entradaTSV. #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_leafpara 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 armazenamentosReplicatedMergeTree*, 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 tabelasystem.replicated_merge_tree_settings. #13573 (Amos Bird). - Adicionada a função
mapPopulateSeries. #13166 (Ildus Kurbangaliev). - Suporte a tipos do MySQL:
decimal(comoDecimalno ClickHouse) edatetimecom precisão de subsegundos (comoDateTime64). #11512 (Vasily Nemkov). - Adiciona o campo
event_time_microsecondsàs tabelassystem.text_log,system.trace_log,system.query_logesystem.query_thread_log. #14760 (Bharat Nallan). - Adiciona
event_time_microsecondsàs tabelassystem.asynchronous_metric_logesystem.metric_log. #14514 (Bharat Nallan). - Adicionar o campo
query_start_time_microsecondsàs tabelassystem.query_logesystem.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 BYnoReplicatedVersionedCollapsingMergeTree. Isso corrige #15980. #16011 (alesapin). MaterializeMySQL(funcionalidade experimental): corrige o parser dos nomes de collate e charset e oferece suporte alength = 0para o tipo String. #16008 (Winter Zhang).- Permite usar o layout
directpara 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 readonlyagora é considerado como o uso de um perfil chamadoreadonly, e não de uma configuração chamadaprofilecom a restriçãoreadonly. 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 EXISTScom o erroTable ... does not existquando 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 (comoDROP DATABASEeRENAME TABLE) - Corrigida a falha deDROP/DETACH DATABASEcomTable ... does not existao executar simultaneamenteDROP/DETACH TABLE. #15934 (tavplubix). - Corrige resultado vazio incorreto em consulta de tabela
Distributedquando a consulta temWHERE,PREWHEREeGLOBAL 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 mismatchem consultasSELECT ... ORDER BY DESCexecutadas após a consultaALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). MaterializeMySQL(funcionalidade experimental): Corrigida a imprecisão emselect 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 TABLEsubsequentes travassem devido ao travamento da thread de trabalho, causado peloDROP TABLErecursivo 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 emMATERIALIZED VIEWcaso a consulta daMVcontenhaARRAY 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 tabelaBuffer, 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
ReadFromStoragedo plano de consulta. Isso pode causar travamentos em casos raros. Possivelmente relacionado a #15610. #15645 (Nikolai Kochetov). - Subtrai a métrica
ReadonlyReplicaao desanexar tabelas somente leitura. #15592 (sundyli). - Corrigido o erro
Element ... is not a constant expressionao usar o resultado da funçãoJSON*emVALUES,LIMITou no lado direito do operadorIN. #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
MOVEouREPLACE PARTITIONou, em casos raros, apósDETACHouDROP PARTITION. Isso foi corrigido. #15537 (tavplubix). - Corrigido bug em que o operador
ILIKEdeixa de ignorar maiúsculas e minúsculas seLIKEcom o mesmo padrão tiver sido executado. #15536 (alesapin). - Corrige erros
Missing columnsao 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
boundingRatiotiver 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 argumentotime_zoneestá 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 tabelaMySQLem 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
joinGetcom tiposLowCardinality. Isso corrige #15214. #15220 (Amos Bird). - Corrige um bug no mecanismo de tabela
Buffer, que não permite inserir dados com uma nova estrutura noBufferapós uma consultaALTER. 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 methodsnojoin_algorithm='auto'. Mantém LowCardinality como tipo para a chave de junção da tabela à esquerda emjoin_algorithm='partial_merge'. #15088 (Artem Zuikov). - Atualização do
jemallocpara corrigirpercpu_arenacom 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
barfosse 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 argumentdurante 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_mutationenumber_of_free_entries_in_pool_to_lower_max_size_of_mergepodem ter o mesmo valor quebackground_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
extractAllGroupspodem 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 causavaAttempt to read after eofePacket payload is not fully readno mecanismo de banco de dadosMaterializeMySQL. #14852 (Winter Zhang).- Corrige um erro raro em consultas
SELECTquando a coluna consultada tem uma expressãoDEFAULTque depende de outra coluna, que também temDEFAULT, não está presente na consultaSELECTe 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 -> Intde tipos com sinal. Isso pode levar a resultados incorretos de consulta. Esse bug foi identificado em #14513. #14783 (Amos Bird). - O transformador de coluna
Replacedeve 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 UPDATEcom uma colunaNullablena expressão de atribuição e um valor constante (comoUPDATE 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
hascomLowCardinalitydeNullable. #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 DDLON CLUSTER. #14211 (Winter Zhang). MaterializeMySQL(funcionalidade experimental): Corrigido o erroPacket payload is not fully readno engine de banco de dadosMaterializeMySQL. #14696 (BohuTANG).
Melhoria
- Mecanismo de banco de dados
Atomichabilitado por padrão para bancos de dados recém-criados. #15003 (tavplubix). - Adicionada a possibilidade de especificar codecs especializados, como
Delta,T64etc., 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 CLUSTERindependentemente da configuração<internal_replication>no config do cluster. #16075 (alesapin). - Agora,
joinGetoferece suporte a consulta por múltiplas chaves. Continuação de #12418. #13015 (Amos Bird). - Aguarde até que
DROP/DETACH TABLErealmente seja concluído seNO DELAYouSYNCfor especificado para o banco de dadosAtomic. #15448 (tavplubix). - Agora é possível alterar, com a consulta
ALTER, o tipo da coluna de versão doVersionedCollapsingMergeTree. #15442 (alesapin). - Expande as macros
{database},{table}e{uuid}emzookeeper_pathna criação de tabela replicada. Não permiteRENAME TABLEse isso puder quebrarzookeeper_pathapós a reinicialização do servidor. Corrige #6917. #15348 (tavplubix). - A função
nowaceita 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à consultaEXPLAIN 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 = 1ouforce_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_offsetpara definir explicitamente qual é a primeira réplica. Ela é usada em conjunto com a estratégia de balanceamento de cargaFIRST_OR_RANDOM, o que permite controlar a carga das réplicas. #14867 (Amos Bird). - Exibe subconsultas para
SETeJOINno resultado deEXPLAIN. #14856 (Nikolai Kochetov). - Permite usar uma configuração de armazenamento com múltiplos volumes no armazenamento
Distributed. #14839 (Pavel Kovalenko). - Cria
query_start_timeequery_start_time_microsecondsa partir do mesmotimespec. #14831 (Bharat Nallan). - Suporte para desabilitar a persistência de
StorageJoineStorageSet; esse recurso é controlado pela configuraçãodisable_set_and_join_persistency. Este PR também resolveu o problema #6318. #14776 (vxider). - Agora,
COLUMNSpode ser usado para agrupar uma lista de colunas e, em seguida, aplicar transformadores de coluna. #14775 (Amos Bird). - Adicionar
merge_algorithmà tabelasystem.mergespara 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 exprekey exprde maneiras diferentes.Partition expré usada para construir um índice minmax que contém as colunas relacionadas, enquantoprimary key expré armazenada como uma expressão. Às vezes, o usuário pode particionar uma tabela em níveis mais amplos, comopartition 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 disks3é 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 CONFIGagora lança uma exceção caso a recarga falhe e continua usando ousers.xmlanterior. O recarregamento periódico em segundo plano também continua usando ousers.xmlanterior 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
mlockapenas 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-10paraclang-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
madvisepara 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_sourcesfoi 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
ccachepor 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 ->
OFFe 1 ->ONnos valores padrão deoption. - Foram adicionadas algumas descrições e links para a documentação às opções. - A opçãoFUZZERfoi substituída (há outra opção,ENABLE_FUZZING, que também habilita a mesma funcionalidade). - A opçãoENABLE_GTEST_LIBRARYfoi removida, pois já existeENABLE_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::pathnoConfigProcessorpara 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
Mergesobre um grande número de tabelasMergeTree. Corrige #7748. #16988 (Anton Popov).
Correção de bug
- Não restaurar partes do WAL se
in_memory_parts_enable_walestiver 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 implementedao executar a consultaRENAMEem um banco de dadosAtomic, 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 BYquando a configuraçãooptimize_redundant_functions_in_order_byestá 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
JOINcom tiposLowCardinality. 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_tablequandosome_tablefoi criada comAS 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-serverque requer SNI. Isso é possível quando oclickhouse-serverestá hospedado atrás de um proxy TLS. #16938 (filimonov). - Funções agregadas condicionais (por exemplo:
avgIf,sumIf,maxIf) devem retornarNULLquando não houver linhas e forem usados argumentos Nullable. #13964 (Winter Zhang).
Correção de bug
- Corrige um bug em que consultas
ON CLUSTERpodiam ficar travadas indefinidamente em tabelas ReplicatedMergeTree não líderes. #17089 (alesapin). - Resolve novamente o IP de
format_avro_schema_registry_urlem caso de erro. #16985 (filimonov). - Corrige uma possível falha do servidor após
ALTER TABLE ... MODIFY COLUMN ... NewTypequandoSELECTtem uma expressãoWHEREna 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 argumentem consultas comORDER 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
anysem argumentos. Isto é para #16803. cc @azat. #16826 (Amos Bird). - Corrige o operador
INem várias colunas e tuplas com a configuraçãotransform_null_inhabilitada. 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_workerativado 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.partsdeve 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 bycom modificadores totals/rollup/cube e funções min/max sobre chaves dogroup 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 BYemReplicatedVersionedCollapsingMergeTree. Isso corrige #15980. #16011 (alesapin). - Corrige o parser dos nomes de collate e de charset e adiciona suporte a
length = 0para 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 readonlyagora é considerado como o uso de um perfil chamadoreadonly, e não de uma configuração chamadaprofilecom a restriçãoreadonly. 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 EXISTScom o erroTable ... does not existquando 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 (comoDROP DATABASEeRENAME TABLE) Corrigida a falha deDROP/DETACH DATABASEcomTable ... does not existao executar, de forma concorrente,DROP/DETACH TABLE. #15934 (tavplubix). - Corrige resultado vazio incorreto em consulta da tabela
Distributedquando a consulta contémWHERE,PREWHEREeGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Corrigidos possíveis deadlocks no RBAC. #15875 (Vitaly Baranov).
- Corrige a exceção
Block structure mismatchem consultasSELECT ... ORDER BY DESCexecutadas após a consultaALTER 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 blockpodia 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 tabelaBuffer, 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
ReadonlyReplicaao 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 CLUSTERindependentemente 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 deReplicatedMergeTreedurante 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 emMATERIALIZED VIEWcaso a consulta daMVcontenhaARRAY 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
ReadFromStoragedo 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 expressionao usar o resultado da funçãoJSON*emVALUES,LIMITou à direita do operadorIN. #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
MOVEouREPLACE PARTITIONou, em casos raros, apósDETACHouDROP PARTITION. Isso foi corrigido. #15537 (tavplubix). - Corrige um bug em que o operador
ILIKEdeixa de ser insensível a maiúsculas e minúsculas seLIKEcom o mesmo padrão tiver sido executado. #15536 (alesapin). - Corrige erros
Missing columnsao 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
boundingRatiotiver 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.logsestá 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
joinGetcom tiposLowCardinality. Isso corrige #15214. #15220 (Amos Bird). - Corrige um bug no engine de tabela
Buffer, que não permite inserir dados com uma nova estrutura emBufferapós a consultaALTER. 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 argumentdurante 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
VersionedCollapsingMergeTreeusando a consultaALTER. #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*ouCOLUMNS(...)). Por exemplo, você pode escreverSELECT * EXCEPT(URL) REPLACE(number + 1 AS number). Outro exemplo:select * apply(length) apply(max) from wide_string_tablepara 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 UPDATEcom uma coluna Nullable na expressão de atribuição e um valor constante (comoUPDATE 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
FixedStringdurante 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
barfosse 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 existsao usar o mecanismo de banco de dadosMaterializeMySQL. #14898 (Winter Zhang). - Corrige o problema em que algumas invocações da função
extractAllGroupspodem 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
SELECTquando a coluna consultada tem uma expressãoDEFAULTque depende de outra coluna que também temDEFAULT, mas não está presente na consultaSELECTnem existe no disco. Corrige parcialmente #14531. #14845 (alesapin). - Corrige a detecção incorreta de monotonicidade para a conversão
Int -> Intcom 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
hasquando 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
ALTERem tabela que foi criada comAS 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
CODECpara o tipo de colunaALIAS. 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-generatorpara 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_zonevazio em funções do tipotoStartOf*. #14509 (Bharat Nallan). - O handler do MySQL retorna
OKpara consultas comoSET @@var = value. Essa instrução é ignorada. Isso é necessário porque alguns drivers MySQL enviam a consultaSET @@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-obfuscatoroferece 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 NULLemMaterializeMySQL(o mesmo queMySQL). 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_logcom o nomedefault_compression_codec. #14116 (alesapin). - Adiciona argumento de precisão para o tipo
DateTime. Isso permite usar o nomeDateTimeem vez deDateTime64. #13761 (Winter Zhang). - Adicionado suporte à autorização
requirepasspara dicionário externoRedis. #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_shardseoptimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin). - Criação de Set para múltiplos
JOINeINem paralelo. Isso pode melhorar ligeiramente o desempenho de consultas com várias expressõesIN subquerydiferentes. #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 shortao executar funçõestoType(...)(toDate,toUInt32, etc.) com argumento do tipoNullable(String). Agora, essas funções retornamNULLem 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
Distinctao 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.sizecom 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_sizeem MergeTreeWriterSettings usandomin_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
ALTERquando 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 BYcom a configuraçãooptimize_redundant_functions_in_order_byhabilitada. #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 CLUSTERpodiam 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_urlem caso de erro. #16985 (filimonov). - Corrigida uma possível queda do servidor após
ALTER TABLE ... MODIFY COLUMN ... NewTypequandoSELECTtem uma expressãoWHEREna coluna que está sendo alterada e oALTERainda 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 argumentem consultas comORDER 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
anysem argumentos. Isso corrige #16803. #16826 (Amos Bird). - Corrigido o operador
INpara várias colunas e tuplas com a configuraçãotransform_null_inhabilitada. Corrige #15310. #16722 (Anton Popov). - Corrigido o comportamento inconsistente de
optimize_read_in_order/optimize_aggregation_in_ordercom 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_workerativado 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.partsdeve 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 BYcom chaves do tipo string, causado por um erro na implementação deTwoLevelStringHashTable. #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 BYemReplicatedVersionedCollapsingMergeTree. Isso corrige #15980. #16011 (alesapin). - Corrige o parser de nomes de collate e charset e adiciona suporte a
length = 0para 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 readonlyagora passa a ser considerado como o uso de um perfil chamadoreadonly, e não de uma configuração chamadaprofilecom a restriçãoreadonly. 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 EXISTScom o erroTable ... does not existquando 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 (comoDROP DATABASEeRENAME TABLE) Corrigida a falha deDROP/DETACH DATABASEcomTable ... does not existao executarDROP/DETACH TABLEconcorrentemente. #15934 (tavplubix). - Corrige resultado vazio incorreto em consulta na tabela
Distributedquando a consulta contémWHERE,PREWHEREeGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Corrigidos possíveis deadlocks no RBAC. #15875 (Vitaly Baranov).
- Corrigida a exceção
Block structure mismatchem consultasSELECT ... ORDER BY DESCexecutadas após a consultaALTER 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 blockpodia ser lançada. Corrige #12298. #15756 (Anton Popov). - Corrige o erro
Cannot find column, que pode ocorrer ao inserir emMATERIALIZED VIEWcaso a consulta paraMVcontenhaARRAY 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 tabelaBuffer, 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
ReadonlyReplicaao 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 CLUSTERindependentemente da configuração<internal_replication>no cluster. #16075 (alesapin). - Expande as macros
{database},{table}e{uuid}nos argumentos deReplicatedMergeTreedurante 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
ReadFromStoragedo 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 expressionao usar o resultado da funçãoJSON*emVALUES,LIMITou no lado direito do operadorIN. #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
MOVEouREPLACE PARTITIONou, em casos raros, apósDETACHouDROP PARTITION. Isso foi corrigido. #15537 (tavplubix). - Corrigido um bug em que o operador
ILIKEpassava a diferenciar maiúsculas de minúsculas seLIKEcom o mesmo padrão tivesse sido executado. #15536 (alesapin). - Corrige erros
Missing columnsao 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
boundingRatiotiver 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.logsestá 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
Bufferque não permite inserir dados com a nova estrutura emBufferapós a consultaALTER. Corrige #15117. #15192 (alesapin). - Ajustado o tamanho do campo
decimalsno 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
barfosse 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 argumentna 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_mutationenumber_of_free_entries_in_pool_to_lower_max_size_of_mergepodem ter o mesmo valor debackground_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 existsao usar o mecanismo de banco de dadosMaterializeMySQL. #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 -> Intcom 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
VersionedCollapsingMergeTreecom a consultaALTER. #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
extractAllGroupspodem 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
SELECTquando a coluna consultada tem uma expressãoDEFAULTque depende de outra coluna que também temDEFAULT, não está presente na consultaSELECTe 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 UPDATEcom coluna Nullable na expressão de atribuição e valor constante (comoUPDATE 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()nemls->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 FINALnão recalcula oTTLdaspartesadicionadas antes da criação doTTL. UseALTER TABLE ... MATERIALIZE TTLuma vez para calculá-lo; depois disso,OPTIMIZE FINALavaliará oTTLcorretamente. Esse comportamento nunca funcionou para tabelas replicadas. #14220 (alesapin). - A configuração
parallel_distributed_insert_selectfoi ampliada com uma opção para executarINSERTem uma tabela local. A configuração muda de tipo deBoolparaUInt64, portanto os valoresfalseetruenão são mais suportados. Se você tiver esses valores na configuração do servidor, o servidor não iniciará. Substitua-os por0e1, 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 formatoODBCDriver2. 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
Defaultpara colunas que correspondem às configurações especificadas emconfig.xml. Implementa: #9074. #14049 (alesapin). - Oferece suporte à autenticação Kerberos no Kafka, usando as bibliotecas
krb5ecyrus-sasl. #12771 (Ilya Golshtein). - Adiciona a função
normalizeQuery, que substitui literais, sequências de literais e aliases complexos por placeholders. Adiciona a funçãonormalizedQueryHash, 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 ouDecimal. Adiciona a funçãoisDecimalOverflow(d, [p]), que verifica se o valor na colunaDecimalexcede sua precisão (ou a precisão especificada). #14151 (Artem Zuikov). - Adiciona as implementações
quantileExactLowequantileExactHigh, com os aliases correspondentesmedianExactLowemedianExactHigh. #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
positionagora aceita o argumento opcionalstart_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
LowCardinalityao 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
ALTERem tabela criada comAS 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-bridgedurante 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
pointInPolygonao 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
selectcom a palavra-chaveDISTINCTe em subconsultas com UNION ALL quando a configuraçãooptimize_duplicate_order_by_and_distinctestá habilitada. #13925 (Artem Zuikov). - Corrigido um potencial deadlock ao renomear a tabela
Distributed. #13922 (tavplubix). - Corrige a ordenação incorreta de colunas
FixedStringao 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
arrayJoinna 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 emptydurante a execução simultânea deDROP DATABASEeCREATE 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_statusquandoverbose=1. #13722 (javi santana). - Corrigida a mensagem incorreta em
clickhouse-server.initao 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 CLUSTERem 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/CSVWithNamesno 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
redisapós a queda da conexão. Isso pode acontecer com os layouts de dicionáriocacheedirect. #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
CODECno tipo de colunaALIAS. 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_millisecondsem 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çãoindex_granularity_bytesmuito 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 retornarNULLquando 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 exceededpara uma consulta correta. #13928 (Nikolai Kochetov). - Mensagem de erro mais clara para valor NULL no formato
TabSeparated. #13906 (jiang tao). - A função
arrayCompactcomparará 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 notsan, 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
lcmpodia 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/toDateTimeem 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,SelectQueryTimeMicrosecondseInsertQueryTimeMicrosecondsao 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
readlinepara que agora grave o histórico em um arquivo. #13600 (Amos Bird). - Criar o banco de dados
systemcom a engineAtomicpor padrão (uma preparação para habilitar a engine de banco de dadosAtomicpor 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 tabelaNull,Memory,DistributedeBufferquando a configuraçãomax_insert_threadsestiver definida. #14120 (alexey-milovidov). - Falha imediatamente se o limite
max_rows_to_readfor 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 quemax_rows_to_readjá 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()ecountEqual()paraArray(LowCardinality(T))e argumentos constantes no lado direito. #12550 (myrrc). - Ao executar consultas triviais
INSERT SELECT, define automaticamentemax_threadscomo 1 oumax_insert_threadse definemax_block_sizecomomin_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,UInt256e funções relacionadas. Decimals foi estendido com Decimal256 (precisão de até 76 dígitos). Os novos tipos estão disponíveis na configuraçãoallow_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
clickhousesem 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
tzdatado 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_logno 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_CLIENTdecontrib/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 Dockerrunner. 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 aliasmod. Isso fecha #7323. #12585 (alexey-milovidov). - Descontinuada a exibição especial de valores zero de Date/DateTime como
0000-00-00e0000-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çãogroupArrayMovingAvgestava retornando um número inteiro inconsistente com a funçãoavg. 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_sizecom um valor menor quenumber_of_free_entries_in_pool_to_execute_mutationounumber_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 consultasALTER TABLE ... PARTITION ...(atualmenteATTACHeFREEZE). Fecha #8076. #13017 (alesapin). - Adiciona a função
bayesABpara 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-DatabaseeX-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
minMapemaxMapemSimpleAggregateFunction. #12662 (Ildus Kurbangaliev). - Adiciona a configuração
allow_non_metadata_alters, que restringe a execução de consultasALTERque modificam dados em disco. Desabilitada por padrão. Fecha #11547. #12635 (alesapin). - A função
formatRowfoi 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çãocolumns. #12574 (Amos Bird). - Adiciona a função
FROM_UNIXTIMEpara compatibilidade com MySQL, relacionada a 12149. #12484 (flynn). - Permite tipos Nullable como chaves em tabelas MergeTree se a configuração de tabela
allow_nullable_keyestiver habilitada. Fecha #5319. #12433 (Amos Bird). - Integração com COS. #12386 (fastio).
- Adiciona as funções
mapAddemapSubtractpara somar/subtrair valores mapeados por chave. #11735 (Ildus Kurbangaliev).
Correção de bug
- Corrige timeouts prematuros de
ON CLUSTERpara 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
LowCardinalityao 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_millisecondspara 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
selectcom a palavra-chaveDISTINCTquando as subconsultas também têmDISTINCT, se a configuraçãooptimize_duplicate_order_by_and_distinctestiver habilitada. #13925 (Artem Zuikov). - Corrigido um possível deadlock ao renomear uma tabela
Distributed. #13922 (tavplubix). - Corrige a ordenação incorreta de colunas
FixedStringquandoORDER BYcom 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 emptyao executarDROP DATABASEeCREATE TABLEde 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 queQUERY_START. #13737 (Azat Khuzhin). - Corrigida mensagem incorreta em
clickhouse-server.initao verificar o usuário e o grupo. #13711 (ylchou). - Não otimize
any(arrayJoin())paraarrayJoin()soboptimize_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
parseDateTimeBestEffortquando 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 queryao usarSET optimize_move_functions_out_of_any = 1e aliases dentro deany(). #13419 (Artem Zuikov). - Corrigida possível condição de corrida em
StorageMemory. #13416 (Nikolai Kochetov). - Corrigida a saída vazia nos formatos
ArroweParquetcaso 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
PrettyCompactMonoBlockno clickhouse-local. Corrigidos extremes/totals comPrettyCompactMonoBlock. 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), corrigidoclickhouse-local --format CSVWithNames*(sem cabeçalho, com falha após #12197), corrigidoclickhouse-local --format CSVWithNames*com zero linhas (sem cabeçalho). #13343 (Azat Khuzhin). - Corrige segfault quando a função
groupArrayMovingSumdesserializa um state vazio. Corrige #13339. #13341 (alesapin). - Lança erro na função
arrayJoin()na seçãoJOIN ON. #13330 (Artem Zuikov). - Corrigida falha em
LEFT ASOF JOINcomjoin_use_nulls=1. #13291 (Artem Zuikov). - Corrige o possível erro
Totals having transform was already added to pipelineno 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,sumDistincte funções de agregação semelhantes, quando chamadas em tipos Float com valoresNaN. 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
arrayElementno 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
redisapós a conexão cair uma vez. Isso pode acontecer com os layouts de dicionáriocacheedirect. #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 resultem consultas remotas que usam funções determinísticas no escopo da consulta, mas não determinísticas entre consultas, comonow(),now64(),randConstant(). Corrige #11327. #13075 (Nikolai Kochetov). - Corrige uma falha que podia ocorrer em consultas com tupla no
ORDER BYeLIMITpequeno. Corrige #12623. #13009 (Nikolai Kochetov). - Corrige o erro
Block structure mismatchem consultas comUNIONeJOIN. 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 DELETEeALTER MODIFY COLUMNsão executadas simultaneamente como uma única mutação. O bug faz com que a quantidade de linhas emcount.txtfique incorreta e, como consequência, gera dados incorretos na parte. Também corrige um pequeno bug quandoALTER RENAME COLUMNeALTER ADD COLUMNsão executados simultaneamente. #12760 (alesapin). - Uso de credenciais incorretas com a fonte de dicionário
clickhouseao 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 escreveWHERE x IN tuple(1, 2, ...)em vez deWHERE 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=1no caso deany(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
ifcom argumentosArray(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 duranteALTER ... UPDATEem 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 stuckem consultas com ordenação externa. Corrige #12617. #12618 (Nikolai Kochetov). - Corrigido o erro
Output of TreeExecutor is not sortedparaOPTIMIZE DEDUPLICATE. Corrige #11572. #12613 (Nikolai Kochetov). - Corrigido o problema em que o alias do resultado da função
anypodia 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.txtestiver ausente. Com falha desde #9827. #12545 (alesapin). - Corrige um bug que levava à corrupção de partes antigas após a consulta
ALTER DELETEquandoenable_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
ALTERou uma mutação. Fecha #11329. #12666 (alesapin). - Adicione
QueryTimeMicroseconds,SelectQueryTimeMicrosecondseInsertQueryTimeMicrosecondsasystem.events, bem como a system.metrics, processes, query_log etc. #13028 (ianton-ru). - Foram adicionados
SelectedRowseSelectedBytesaosystem.events, bem como a system.metrics, processes, query_log etc. #12638 (ianton-ru). - Adicionada a informação de
current_databaseaosystem.query_log. #12652 (Amos Bird). - Permite
TabSeparatedRawcomo formato de entrada. #12009 (hcz). - Agora,
joinGetoferece suporte a consulta por múltiplas chaves. #12418 (Amos Bird). - Permite que as funções de agregação
*Mapfuncionem 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:00em 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 exceededpara uma consulta correta. #13928 (Nikolai Kochetov). - Corrigida uma condição de corrida de dados na função
lgamma. Esse problema foi detectado apenas notsan, 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
assertemparseDateTimeBestEffort. 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 JOINem vez deSEMI LEFT JOIN. Por enquanto, ambos estão corretos. #12520 (Artem Zuikov). - Altera o valor padrão de
multiple_joins_rewriter_versionpara 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 DATABASEeRENAME DICTIONARYno engine de banco de dadosAtomic- Adiciona a macro implícita{uuid}, que pode ser usada no caminho do ZooKeeper paraReplicatedMergeTree. Funciona com consultasCREATE ... ON CLUSTER .... Definashow_table_uuid_in_table_create_query_if_not_nilcomotruepara usá-la. - Torna opcionais os argumentos do engineReplicatedMergeTree;/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 dadosAtomic. Bancos de dadosAtomiccriados anteriormente devem ser convertidos manualmente para o novo formato. O banco de dadosAtomicé um recurso experimental. #12343 (tavplubix). - Separado
AWSAuthV4Signerem umloggerseparado, removido o excesso deAWSClient: AWSClientdas 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
inquando 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
LIMITao 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 BYseset optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov). - Adiciona uma otimização de
ORDER BYque reescreveORDER BY x, f(x)paraORDER by xseset 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
shellcheckpara 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
SELECTno 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.
rdkafkafoi 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 COLUMNem 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
initializeAggregationpara 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
ORCpara 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 queryao usarSET optimize_move_functions_out_of_any = 1e aliases dentro deany(). #13419 (Artem Zuikov). - Corrigido o
PrettyCompactMonoBlockno clickhouse-local. Corrigidos extremes/totals comPrettyCompactMonoBlock. Isso corrige #7746. #13394 (Azat Khuzhin). - Corrigido um possível erro
Totals having transform was already added to pipelineno 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,sumDistincte 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
constexprNullable como condição, quando não é NULL literal. Corrige #12463. #13226 (alexey-milovidov). - Corrigido o
assertna funçãoarrayElementno 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
DateTime64com 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 resultem consultas remotas que usam funções determinísticas no escopo da consulta, mas não determinísticas entre consultas, comonow(),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 DELETEeALTER MODIFY COLUMNeram executadas simultaneamente como uma única mutação. O bug fazia com que a quantidade de linhas emcount.txtficasse incorreta e, como consequência, gerasse dados incorretos na part. Além disso, foi corrigido um pequeno bug envolvendo a execução simultânea deALTER RENAME COLUMNeALTER 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 escreveWHERE x IN tuple(1, 2, ...)em vez deWHERE 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
SIGSEGVemStorageKafkaquando o broker está indisponível (e não só nesse caso). #12658 (Azat Khuzhin). - Adicionado suporte à função
ifcom argumentosArray(UUID). Isso corrige #11066. #12648 (alexey-milovidov). CREATE USER IF NOT EXISTSagora 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çãogroupArrayMovingAvgestava retornando um número inteiro, o que era inconsistente com a funçãoavg. 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
cacheque 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 DELETEquandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Exceção aprimorada para a função
incom 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_logestá habilitado. #12452 (alexey-milovidov). - Corrigido o overflow ao especificar um
LIMITouOFFSETmuito 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
CLEARna coluna mesmo que existam expressõesDEFAULTdependentes. Isso corrige #12333. #12378 (alexey-milovidov). - Corrige
TOTALS/ROLLUP/CUBEem funções de agregação com argumentos-StateeNullable. Isso corrige #12163. #12376 (alexey-milovidov). - Corrigidas a mensagem de erro e os códigos de saída para consultas
ALTER RENAME COLUMN, quandoRENAMEnã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
DeltaouDoubleDeltacom tipos de largura variável, era retornada uma exceção com o códigoLOGICAL_ERRORem vez de uma exceção com o códigoBAD_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áusulaORDER BYnã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
_tableem tabelasMerge) ou por colunas de “índice” em tabelas de sistema, como ao filtrar por nome do banco de dados ao consultarsystem.tables, e essa expressão retorna o tipoNullable. Isso corrige #12166. #12305 (alexey-milovidov). - Corrigido o
TTLapó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
arrayFillfuncionava 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 colunasLowCardinalitye 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
SummingMergeTreesoma 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 DELETEque 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
greatCircleDistanceegeoDistance. 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
Parquetagora funciona corretamente com os tiposLowCardinalityeLowCardinality(Nullable). Corrigidos #12086 e #8406. #12108 (Nikolai Kochetov). - Corrigido o problema de desempenho em consultas com
UNIONcausado 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_rowseresult_bytes, que estavam vazias, emsystem.quey_logpara 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 columnem funções de ordem superior com argumentoTuple(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
ifcom argumentos do tipoFixedStringde tamanhos diferentes. Isso corrige #11362. #12021 (alexey-milovidov).
Melhoria
- Agora é permitido definir o
JOINkind e type de forma mais padrão:LEFT SEMI JOINem vez deSEMI LEFT JOIN. Por enquanto, ambos estão corretos. #12520 (Artem Zuikov). lifetime_rows/lifetime_bytespara 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_charsethabilita 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çãoformatDateTime. #12136 (vivarum). - Adicionada a coluna ‘type’ em system.disks. #12115 (ianton-ru).
- Comando
REVOKEaprimorado: agora ele exige a opção grant/admin apenas para o acesso que será revogado. Por exemplo, para executarREVOKE ALL ON *.* FROM user1, agora não é necessário ter todos os direitos de acesso concedidos com a opção grant. Adicionado o comandoREVOKE ALL FROM user1- ele revoga todos os roles concedidos auser1. #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 seset 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 limitesmin_rows_for_compact_partemin_bytes_for_compact_part. Também há suporte opcional a Write-Ahead Log, que vem ativado por padrão e é controlado pela configuraçãoin_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 comclang-tidyePVS-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à tabelasystem.build_options. Move as listas de exclusão doclickhouse-testpara 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 oDockerfilepode ser compilado. É executada diariamente namastere em pull requests para oDockerfile. #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-certificatesantes do primeiroapt-get updateno 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 escreveWHERE x IN tuple(1, 2, ...)em vez deWHERE 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
SIGSEGVemStorageKafkaquando o broker fica indisponível (e não apenas nessa situação). #12658 (Azat Khuzhin). - Adicionado suporte à função
ifcom argumentos do tipoArray(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 DELETEquandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Exceção mais clara para a função
incom 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_logestá habilitado. #12452 (alexey-milovidov). - Corrigido overflow ao especificar um
LIMITouOFFSETmuito 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
-StateeNullable. 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
SummingMergeTreesoma 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
SELECTemVIEW. 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-certificatesantes do primeiroapt-get updateno 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_headerestá enabled por padrão. Isso afetará o parsing dos input formats-WithNamese-WithNamesAndTypes. #10937 (alexey-milovidov). - Remove a setting
experimental_use_processors. Ela está enabled por padrão. #10924 (Nikolai Kochetov). - Atualiza
zstdpara 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, comoData 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_codecspara 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 WHEREeTTL GROUP BYpara 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_eventsdo Linux (essas métricas são calculadas com contadores de hardware da CPU e contadores do SO). É opcional e exige queCAP_SYS_ADMINesteja definido no binárioclickhouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov). - Agora há suporte aos modificadores
NULLeNOT NULLpara tipos de dados na consultaCREATE. #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-clientusandoreplxx. #11422 (Tagir Kuskarov). - As funções
minMapemaxMapforam adicionadas. #11603 (Ildus Kurbangaliev). - Adiciona a tabela
system.asynchronous_metric_log, que registra o histórico de métricas desystem.asynchronous_metrics. #11588 (Alexander Kuzmenkov). - Adicionadas as funções
extractAllGroupsHorizontal(haystack, re)eextractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov). - Adicionadas consultas SHOW CLUSTER(S). #11467 (hexiaoting).
- Adiciona a função
netlocpara extrair a localização de rede, assim comonetlocdeurlparse(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_mspara 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)retornaNullable(Type). #11733 (Artem Zuikov). - Adicionada a coluna
positionà tabelasystem.columnsecolumn_positionà tabelasystem.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-formatagora 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
pointInPolygonfuncione 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_infoasystem.partspara 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
NCHAReNVARCHARpara tipos de dados. #11025 (alexey-milovidov). - Resolvido #7224: foram adicionadas as métricas
FailedQuery,FailedSelectQueryeFailedInsertQueryà tabelasystem.events. #11151 (Nikita Orlov). - Adiciona mais estatísticas do
jemallocasystem.asynchronous_metricse 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óriocontrib. 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).
SimpleAggregateFunctionagora também é compatível comsumMap. #10000 (Ildus Kurbangaliev).- Adiciona suporte a
ALTER RENAME COLUMNpara 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
Nullablena condição PREWHERE. #11895 #11608 #11869 (Nikolai Kochetov). - Não permita
arrayJoindentro 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
ifcom 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 existao usarWITH <scalar subquery> ...emSELECT ... 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 FILLem 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 REPLICAnessa 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
timeoutsadequados ao se comunicar com a ponte XDBC. Recentemente, ostimeoutsnã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 TIESem conjunto com a instruçãoORDER BYquando ela contém aliases. #11689 (Anton Popov). - Corrige possível
Pipeline stuckem consultasSELECTcomFINALparalelo. 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 tarefasMUTATE_PARTna 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
countse 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 mismatchem consultas com amostragem ao ler da tabelaBuffer. #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 columnem consultas comPREWHERE column in (subquery)eARRAY JOIN. #11580 (Nikolai Kochetov). - Corrigido um segfault raro em
SHOW CREATE TABLECorrige #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-serverpassará a preferir IPv6 ao verificar se o servidor está ativo. #11550 (Ivan Starkov). - Corrige o erro
Data compressed with different methods, que pode ocorrer semin_bytes_to_use_direct_ioestiver 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 stuckparaINSERT SELECT FINAL, em queSELECT(max_threads>1) tem múltiplos streams, masINSERTtem 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)eNullable(T). #11380. #11414 (Artem Zuikov). - Corrigido o código de erro para a chave
USINGincorreta. #11373. #11404 (Artem Zuikov). - Corrigido
geohashesInBoxpara 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 stuckem 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 VIEWcom a configuraçãoparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Corrigido o
visitParamExtractRawquando 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
emptyounotEmpty. 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_speedpode não funcionar ou funcionar incorretamente se a consulta for limitada pormax_network_bandwidth,max_execution_speedou pelas configurações depriority. Altera o valor padrão detimeout_before_checking_execution_speedpara um valor diferente de zero, porque, caso contrário, as configuraçõesmin_execution_speedemax_execution_speednã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 noclickhouse-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
cachepodia 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 QueryPipelineao ler deVIEWcom 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.idxestá definido na consultaCREATE. #11199 (alesapin). - Corrigido um possível erro
Cannot capture columnem funções de ordem superior com argumento capturadoArray(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 ouoptimize_move_to_prewheregera 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/DROPeRENAMEna mesma coluna em uma única consultaALTER. A mensagem de exceção paraMODIFYeRENAMEsimultâ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 BYde 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 (
pathrelativo para rename) e de dados (pathrelativo para symlink) no banco de dados Atomic. #10980 (Azat Khuzhin). - Corrigido o travamento do servidor em consultas
ALTEReDROP DATABASEsimultâneas com o mecanismo de banco de dadosAtomic. #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, comoa 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
finalizeAggregationdurante a leitura de uma tabela com engineMemory, que armazena o estado deAggregateFunctionpara a funçãoquanite*. #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
WATCHapós a remoção da tabelaLiveViewde um banco de dados com engineAtomic. #10859 (tavplubix). - Corrigido um bug no
ReplicatedMergeTreeque podia fazer com que algunsALTERem consultasOPTIMIZEficassem 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_typepara 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-pointerem compilações doclang, o que melhora o desempenho em pelo menos 1% em média. #10761 (Amos Bird). - Corrige
avgWeightedao 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 emMATERIALIZED VIEWdeverã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
generateRandomcom tipos aninhados. Corrige #10583. #10734 (Nikolai Kochetov). - Corrige a corrupção de dados na coluna-chave
LowCardinality(FixedString)emSummingMergeTree, 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
INcom 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=2ecancel_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_efficientativado. 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áusulaHAVING(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 VIEWquando 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 deloadStoredObject()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_keyhavia sido introduzida e mantida desativada por padrão, devido às particularidades da análise de sharding_key; um exemplo simples é o uso deifna 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) edistributed_storage_policy(fazlink(2)falhar comEXDEV)). #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
TTLa dados antigos após a consultaALTER MODIFY TTL. Esse comportamento é controlado pela configuraçãomaterialize_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,
VALUESe 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 regularesLIKEematch(basta escrevername LIKE 'used\_cars'em vez dename 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
hostnamecomo alias da funçãohostName. Esse recurso foi sugerido por Victor Tarnavskiy, da Yandex.Metrica. #11821 (alexey-milovidov). - Adicionado suporte a
DDLdistribuí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
defaulte 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-cliente noclickhouse-benchmarkse o usuário a tiver especificado explicitamente. Isso evita a exposição da senha pelopse 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=bouhttp://localhost:8123/?a=b&&c=d. Isso fecha #10749. #11651 (alexey-milovidov). - Permitir o uso de
groupArrayArrayegroupUniqArrayArraycomoSimpleAggregateFunction. #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_consumersfor 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=1para 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-clientouclickhouse-formatem 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.idpadrão usado pelo ClickHouse ao se comunicar com o Kafka mais descritivo e útil. #11252 (filimonov). - Mantém o valor da métrica
DistributedFilesToInsertem 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 PRECISIONeCHAR 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 DATABASEexplicitamente no mecanismo de banco de dadosMemory. 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_viewsemin_insert_block_size_bytes_for_materialized_views. Essas configurações são semelhantes amin_insert_block_size_rowsemin_insert_block_size_bytes, mas se aplicam apenas aos blocos inseridos emMATERIALIZED 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
varSampevarPopnão retornem resultados negativos devido a erros numéricos e questddevSampestddevPopnã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_threadspara limitar o número de threads usadas. #10463 (Nikolai Kochetov). - Melhora o desempenho de consultas
INSERTviaINSERT SELECTou deINSERTcom 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/anydas chaves deGROUP BYna seçãoSELECT, habilitada pela configuraçãooptimize_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 comoptimize_move_functions_out_of_any#11529 (Ruslan). - Melhora o desempenho do
clickhouse-clientno 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 BYeLIMITpequeno (menor quemax_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
mlockdo 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
sume sem chaves em GROUP BY sejam executadas várias vezes mais rápido. #10992 (alexey-milovidov). - Melhoria na ordenação radix (usada em
ORDER BYcom 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_bytespara gerenciar os tamanhos dos buffers dos blocos da esquerda. #10601 (Artem Zuikov). - Remova
ORDER BYeDISTINCTduplicados das subconsultas; essa otimização é ativada comoptimize_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)) ePolygon(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 definirbitonic_sortpara a opçãospecial_sortda 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/zoneinfonão exista. Observe que todos os fusos horários funcionam no ClickHouse mesmo sem otzdatainstalado 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
timeoutredundante do teste de integraçãotest_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
curltiver 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
cctznã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
lldpara 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
capnprotoparacapnp::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
parseDateTimeBestEffortquando 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,sumDistincte 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
arrayElementno 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 escreveWHERE x IN tuple(1, 2, ...)em vez deWHERE 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 predicatequando 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
SIGSEGVemStorageKafkaquando o broker está indisponível (e não apenas nesse caso). #12658 (Azat Khuzhin). - Adicionado suporte à função
ifcom argumentosArray(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 DELETEquandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Melhor exceção para a função
incom 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
JOINcom 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áusulaORDER BYnão era respeitada. #12306 (Anton Popov). - Evita a exceção “bad cast” quando há uma expressão que filtra dados por colunas virtuais (como
_tableem tabelasMerge) ou por colunas de “índice” em tabelas do sistema, como ao filtrar pelo nome do banco de dados em consultas asystem.tables, e essa expressão retorna o tipoNullable. Isso corrige #12166. #12305 (alexey-milovidov). - Exibir erro após falha ao carregar o TrieDictionary. #12290 (Vitaly Baranov).
- A função
arrayFillfuncionava 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 colunasLowCardinalitye 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
dictGetdurante 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 DELETEque 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_rowseresult_bytesemsystem.quey_logpara 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 functionna funçãodefaultValueOfArgumentTypecom o tipoLowCardinality. Corrige #11808. #12056 (Nikolai Kochetov). - Foi corrigido o erro
Cannot capture columnem funções de ordem superior com argumentoTuple(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
topKretornar 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
ifcom argumentos do tipoFixedStringde tamanhos diferentes. Isso corrige #11362. #12021 (alexey-milovidov). - Uma consulta com a função
neighborcomo 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 setno formatoValues. 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-certificatesantes do primeiroapt-get updateno 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
Nullableem uma condiçãoprewhere. 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 FILLem colunas const. #11697 (Anton Popov). - Passe os
timeoutsadequados ao se comunicar com a bridge XDBC. Recentemente, ostimeoutsnã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 TIESem conjunto com a instruçãoORDER BYque 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 tarefasMUTATE_PARTna 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
countse 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
Nullablena condiçãoprewhere. (Provavelmente está de alguma forma relacionado a #11572). #11608 (Nikolai Kochetov). - Corrigido o erro
Block structure mismatchem consultas com amostragem ao ler da tabelaBuffer. #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 columnem consultas comPREWHERE column in (subquery)eARRAY JOIN. #11580 (Nikolai Kochetov). - Corrigido um segfault raro em
SHOW CREATE TABLECorrige #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-pointernas compilações doclang, 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 semin_bytes_to_use_direct_ioestiver 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
geohashesInBoxpara argumentos fora do intervalo de latitude/longitude. #11403 (Vasily Nemkov). - Corrige possível erro
Pipeline stuckem 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 VIEWcom a configuraçãoparallel_view_processing = 1volte a ser paralela. Corrige #10241. #11330 (Nikolai Kochetov). - Corrigido o
visitParamExtractRawquando 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
emptyounotEmpty. 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_speedpode não funcionar ou funcionar incorretamente se a consulta for limitada pelas configuraçõesmax_network_bandwidth,max_execution_speedoupriority. Altera o valor padrão detimeout_before_checking_execution_speedpara um valor diferente de zero, porque, caso contrário, as configuraçõesmin_execution_speedemax_execution_speednã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 noclickhouse-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 QueryPipelineao ler deVIEWcom 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 columnem funções de ordem superior com o argumento capturadoArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Corrigido o
globbingdo 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áusulaHAVING(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
Lançamento do ClickHouse v20.4.4.18-stable 2020-05-26
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
MergeTreecaso 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
ALTEReDROP DATABASEde forma concorrente com o engine de banco de dadosAtomic. #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
DROPem uma tabela com mecanismoKafka. (ou durante reinicializações do servidor). #10910 (filimonov). - Corrigida a impossibilidade de executar vários
ALTER RENAME, comoa 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
finalizeAggregationdurante a leitura de uma tabela com a engineMemory, que armazena o estado deAggregateFunctionpara a funçãoquantile*. #10890 (Nikolai Kochetov). - Corrigida a compatibilidade com versões anteriores de tuplas em tabelas Distributed. #10889 (Anton Popov).
- Corrigido
SIGSEGVemStringHashTablecaso essa chave não exista. #10870 (Azat Khuzhin). - Corrigidos travamentos do
WATCHapós a remoção da tabelaLiveViewdo banco de dados com engineAtomic. #10859 (tavplubix). - Corrigido um bug no
ReplicatedMergeTreeque podia fazer com que algumALTERna consultaOPTIMIZEficasse 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
ODBCquando não é solicitado o uso de aspas em identificadores. Corrige #7984. #10821 (alexey-milovidov). - Corrigidos os problemas reportados por
UBSaneMSanemDateLUT. #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 emMATERIALIZED VIEW, sem exceção, devem ser concluídas caso ocorra uma exceção. Corrige #10241. #10757 (Nikolai Kochetov). - Corrigidos os combinadores
-OrNulle-OrDefaultquando 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
nullptremStorageBuffercaso o servidor fosse desligado antes da inicialização da tabela. #10641 (alexey-milovidov). - Corrigido o
optimize_skip_unused_shardscomLowCardinality. #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 deloadStoredObject()terminar. #10587 (Vitaly Baranov). - Corrigido o
SELECTda colunaALIASquando 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 BYpor sharding_key (optimize_distributed_group_by_sharding_keyhavia sido introduzido e deixado desativado por padrão devido às particularidades da análise da sharding_key; um exemplo simples é o uso deifna chave de sharding) e corrige isso paraWITH 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çãopointInPolygone 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
Markdownpara 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
leastegreatest. 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, equery_wait_timeout_milliseconds, que por padrão é de um minuto. A primeira configuração também é útil com a configuraçãoallow_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
NULLigual aNULLno operadorIN, caso a opçãotransform_null_inesteja definida. #10085 (achimbab) - Adicionado
ALTER TABLE ... RENAME COLUMNpara 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 VIEWpara 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
DATEeTIMESTAMP, 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
DROPeRENAME TABLEsem bloqueio e à consulta atômicaEXCHANGE 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 VIEWquando 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=2ecancel_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 consulta
SYSTEM DROP DNS CACHEagora 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
INcom o mesmo conjunto em uma única consulta. Corrige #10539 #10686 (Anton Popov) - Corrige travamento em
generateRandomcom tipos aninhados. Corrige #10583. #10734 (Nikolai Kochetov) - Corrige a corrupção de dados na coluna de chave
LowCardinality(FixedString)emSummingMergeTree, 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
JOINou uma subconsulta com uma condiçãoWHEREexterna. Corrige #10674 #10698 (Nikolai Kochetov) - Corrige a ausência de execução paralela de consultas remotas com
distributed_aggregation_memory_efficienthabilitado. 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-freeno 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
addressToLineou 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 DATABASEfalhar #10442 (Winter Zhang) - Evita depender do
tzdatado sistema. Corrige o carregamento do fuso horárioAfrica/Casablancano 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_replicasem vez deskip_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_mergeestá 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 stucknoConcatProcessor, 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
datetimepara 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
DROPeOPTIMIZEnoReplicatedMergeTree.DROPpodia deixar resíduos no caminho da réplica no ZooKeeper se houvesse uma consultaOPTIMIZEconcorrente. #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_sizeemax_parser_depthconforme necessário. #10295 (alexey-milovidov) - Permite usar
count(*)com várias junções. Corrige #9853 #10291 (Artem Zuikov) - Corrigido o erro
Pipeline stuckque ocorria commax_rows_to_group_byegroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov) - Corrige o erro ‘Cannot add column’ ao criar o dicionário
range_hashedusando 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.numbersousystem.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
parseDateTimeBestEffortpara 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 TABLEpara Dicionário #10165 (Azat Khuzhin) - Converte blocos se a estrutura não corresponder ao fazer
INSERTna 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_bytesao criar uma nova réplica. Corrige #10098. #10121 (alesapin) - Corrigido erro na consulta
CHECK TABLEquando 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
JOINeUNION 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/metadatanã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çãodistributed_aggregation_memory_efficientestava 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 BYcom 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
Distributedera executada simultaneamente em shards locais e remotos. Corrige #9965 #9971 (Nikolai Kochetov) - Corrigida a lógica de
DeleteOnDestroyemATTACH 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 CLUSTERtravarem 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
JOINaparece comTOTALS. Corrige #9839 #9939 (Artem Zuikov) - Corrigido o parsing de múltiplos hosts definidos no comando CREATE USER #9924 (Vitaly Baranov)
- Corrigido o
TRUNCATEpara o Join table engine (#9917). #9920 (Amos Bird) - Corrigida a condição de corrida entre drop e optimize no
ReplicatedMergeTree. #9901 (alesapin) - Corrige o
DISTINCTem Distributed quandooptimize_skip_unused_shardsestá 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 1no cliente. Isso acontecia em consultas comJOINquando a tabela à direita doJOINtinha 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_shardsestá 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 COLUMNcom falha em partes compactas. #9779 (alesapin) - Corrigida a ausência de
rows_before_limit_at_leastpara 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
sumKahanesumWithOverflow. 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 consultasINSERTna tabelaDistributedem 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 columneInvalid number of rows in ChunkemMergeTreeRangeReader. Elas podiam ocorrer ao executarPREWHEREem alguns casos. #9612 (Anton Popov) - Permite
ALTER ON CLUSTERem tabelasDistributedcom 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 comotime + 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 OFFSETem vez decityHash64(PRIMARY KEY) % N == npara fazer a divisão noclickhouse-copier. Para usar esse recurso, passe--experimental-use-sample-offset 1como 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_mergena chave de sharding do GROUP BY (seoptimize_skip_unused_shardsestiver 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_usagepara limitar o uso total de memória do servidor. A métricaMemoryTrackingagora é calculada sem discrepância. A configuraçãomax_memory_usage_for_all_queriesagora 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
+infpara tipos de ponto flutuante. Fecha #1839 #10272 (alexey-milovidov) - Implementada a função de tabela
generateRandompara 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 CLUSTERnos 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à tabelasystem.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 BYdas 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 desabilitaforce_optimize_skip_unused_shardspara 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
DateouDateTimeem 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 = 2estiver 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 comUSINGe permiteselect *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
splitByStringpara aceitar strings vazias como separadores. #9742 (hcz) - Adiciona uma coluna
timestamp_nsasystem.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_levelestá 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 semorder by(comoselect 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
now64com 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_OPTIONSpara 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-10em 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 erroreSSL 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/nullno engineFilepara 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.pypara 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. Oclickhouse-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-conflictsno script de backport. #9705 (Nikolai Kochetov) - Corrigido o
auto-labelno 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_lockepthread_mutex_unlock. #9635 (alexey-milovidov) - Adicionado suporte ao
clang-tidyno scriptpackager. #9625 (alexey-milovidov) - Adicionada a capacidade de usar
msgpacknã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
dictGetemsharding_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
Distributedse a consulta tiverWHERE,PREWHEREeGLOBAL 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
MOVEouREPLACE PARTITIONou, em casos raros, apósDETACHouDROP 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 tabelaMySQLem 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
SELECTquando a coluna consultada tem uma expressãoDEFAULTque depende de outra coluna que também temDEFAULT, não está presente na consultaSELECTe não existe em disco. Corrige parcialmente #14531. #14845 (alesapin). - Corrige um bug em que uma mutation
ALTER UPDATEcom uma coluna Nullable na expressão de atribuição e um valor constante (comoUPDATE 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
- Suporte a codecs personalizados em partes compactas. #12183 (Anton Popov).
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.xmlquando 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 exceededpara 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 BYda 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
parseDateTimeBestEffortquando 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,sumDistincte aggregate functions semelhantes chamadas em tipos Float com valoresNaN. 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
assertna funçãoarrayElementno 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 escreveWHERE x IN tuple(1, 2, ...)em vez deWHERE 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 predicatequando 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 DELETEquandoenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Mensagem de exceção melhor para a função
incom 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_logesteja habilitado. #12452 (alexey-milovidov). - Corrigido um possível segfault com StorageMerge. Fecha #12054. #12401 (tavplubix).
- Corrigidos
TOTALS/ROLLUP/CUBEpara funções de agregação com argumentos-StateeNullable. Isso corrige #12163. #12376 (alexey-milovidov). - Corrigida a ordem das colunas no modificador
WITH FILL. Anteriormente, a ordem das colunas na cláusulaORDER BYnão era respeitada. #12306 (Anton Popov). - Evita a exceção “bad cast” quando há uma expressão que filtra dados por colunas virtuais (como
_tableem tabelasMerge) ou por colunas de “índice” em tabelas do sistema, como ao filtrar pelo nome do banco de dados em consultas asystem.tables, e essa expressão retorna o tipoNullable. Isso corrige #12166. #12305 (alexey-milovidov). - Exibir erro após falha ao carregar
TrieDictionary. #12290 (Vitaly Baranov). - A função
arrayFillfuncionava 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
dictGetna eliminação de funções injetivas em GROUP BY. #12179 (Azat Khuzhin). - Corrigida a lógica incorreta em
ALTER DELETEque 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 queryem 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 functionna funçãodefaultValueOfArgumentTypecom o tipoLowCardinality. Corrige #11808. #12056 (Nikolai Kochetov). - Corrigido o erro
Cannot capture columnem funções de alta ordem com argumentoTuple(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
topKretorne 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
ifcom argumentos do tipoFixedStringde tamanhos diferentes. Isso corrige #11362. #12021 (alexey-milovidov). - Uma consulta com a função
neighborcomo 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 setno formatoValues. 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 comwait_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 TIESjunto com a cláusulaORDER 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
Nullablena condição prewhere. Continuação de #11608. #11869 (Nikolai Kochetov). - Não permita
arrayJoindentro 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 FILLem 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 tarefasMUTATE_PARTna 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
Nullablena cláusula prewhere. (Provavelmente isso está de alguma forma relacionado a #11572). #11608 (Nikolai Kochetov). - Corrigido o erro
Block structure mismatchem consultas com amostragem ao ler da tabelaBuffer. #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 columnem consultas comPREWHERE column in (subquery)eARRAY 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, equery_wait_timeout_milliseconds, que por padrão é de um minuto. A primeira configuração também é útil com a configuraçãoallow_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 methodsque pode ocorrer semin_bytes_to_use_direct_ioestiver 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
pointInPolygonquando 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
USINGinválida. #11373. #11404 (Artem Zuikov). - Corrigido o
geohashesInBoxpara 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 stuckao 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 VIEWcom a configuraçãoparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Corrigido
visitParamExtractRawquando 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
emptyounotEmpty. 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_speedpode não funcionar ou funcionar incorretamente se a consulta for limitada pelas configuraçõesmax_network_bandwidth,max_execution_speedoupriority. Altera o valor padrão detimeout_before_checking_execution_speedpara um valor diferente de zero, porque, caso contrário, as configuraçõesmin_execution_speedemax_execution_speednã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 noclickhouse-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 QueryPipelinedurante a leitura deVIEWcom 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 columnem funções de ordem superior com o argumento capturadoArray(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çãoHAVING(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
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 campoString. 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
SIGSEGVemStringHashTablecaso essa chave não exista. #10870 (Azat Khuzhin). - Corrigido bug em
ReplicatedMergeTreeque poderia fazer com que umALTERna consultaOPTIMIZEficasse 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
ODBCquando não é solicitado o uso de aspas em identificadores. Corrige #7984. #10821 (alexey-milovidov). - Corrigido o relatório do
UBSane doMSannoDateLUT. #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 emMATERIALIZED VIEWque não gerarem exceção deverão ser concluídas. Corrige #10241. #10757 (Nikolai Kochetov). - Corrigidos os combinadores
-OrNulle-OrDefaultquando combinados com-State. #10741 (hcz). - Corrigido travamento em
generateRandomcom tipos aninhados. Corrige #10583. #10734 (Nikolai Kochetov). - Corrigida a corrupção de dados na coluna de chave
LowCardinality(FixedString)emSummingMergeTree, 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
INcom 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=2ecancel_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_efficientativado. 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 VIEWquando essa consulta continha uma tabela dependente. #10603 (Nikolai Kochetov). - Corrigido o
SELECTda colunaALIAS, 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
simpleLinearRegressionpara inteiros grandes. #10474 (hcz).
Melhoria em Compilação/Testes/Empacotamento
- Corrigido o problema apontado pelo UBSan na biblioteca LZ4. #10631 (alexey-milovidov).
- Corrigida a compilação com clang-10. #10238. #10370 (Amos Bird).
- Adicionados testes que expõem falhas relacionadas à configuração
max_rows_to_sort. #10268 (alexey-milovidov). - Adicionadas melhorias na exibição de informações de diagnóstico em formatos de entrada. Corrige #10204. #10418 (tavplubix).
- Adicionados certificados de CA à imagem Docker do clickhouse-server. #10476 (filimonov).
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_mergehabilitado (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
DROPeOPTIMIZEemReplicatedMergeTree.DROPpodia deixar resíduos no caminho da réplica no ZooKeeper se houvesse uma consultaOPTIMIZEconcorrente. #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 stuckemConcatProcessorque 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_replicasem vez deskip_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
INe 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 expressionsem 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 stuckao usarmax_rows_to_group_byegroup_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
parseDateTimeBestEffortpara 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 comosystem.numbersousystem.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
ALTERem partes compactas. #10130 (Anton Popov). - Corrige a verificação incorreta de
index_granularity_bytesdurante 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
JOINeUNION 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/metadatanã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 TABLEquando 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çãodistributed_aggregation_memory_efficientestava 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
Distributedera 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 comTOTALS. Corrige #9839. #9939 (Artem Zuikov). - Corrige um bug que fazia com que consultas DDL com
ON CLUSTERtravassem 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
TRUNCATEno 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
dropeoptimizenoReplicatedMergeTree. #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
- Corrigido o teste de integração
test_settings_constraints. #9962 (Vitaly Baranov). - Removida a dependência de
clock_getres. #9833 (alexey-milovidov).
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 1no cliente. Isso acontecia em consultas comJOINcaso 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 COLUMNcom 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_leastpara 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 consultasINSERTna tabelaDistributedem 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 longao enviar dados para tabelasDistributedcom 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 usadoINSERTs assíncronos em tabelasDistributed. 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
stacktracesemsystem.trace_loga cada N bytes acima do limite soft de alocação #8765 (Ivan) #9472 (alexey-milovidov) A coluna desystem.trace_logfoi renomeada detimer_typeparatrace_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-clientantigo não consegue receber logs enviados pelo servidor quando a configuraçãosend_logs_levelestá 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çãosend_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 paraclickhouse-feedback@yandex-team.com#9543 (alexey-milovidov) - Agora não é mais permitido criar colunas nem adicionar colunas com uma subconsulta
SELECTcomo expressão padrão. #9481 (alesapin) - Tornar obrigatórios aliases para subconsultas em JOIN. #9274 (Artem Zuikov)
- Lógica das queries
ALTER MODIFY/ADDaprimorada. Agora não é possível usarADDpara adicionar uma coluna sem tipo, a modificação da expressão padrão comMODIFYnão altera o tipo da coluna, e a modificação do tipo comMODIFYnã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_processorsestá 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
AvroeAvroConfluent#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 PARTITIONparaALTER 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_policypara 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,bitXorebitNotpara o tipo de dadosFixedString(N). #9091 (Guillaume Tassery) - Adicionada a função
bitCount. Isso corrige #8702. #8708 (alexey-milovidov) #8749 (ikopylov) - Adicionada a função de tabela
generateRandompara 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
DEFAULTque depende de uma coluna com expressãoALIASpor padrão. #9489 (alesapin) - Permite especificar
--limitacima do tamanho dos dados de origem noclickhouse-obfuscator. Os dados serão repetidos com uma seed aleatória diferente. #9155 (alexey-milovidov) - Adicionada a função
groupArraySample(semelhante agroupArray) 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_cachepor 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_lineestá definida como 1 #8934 #8935 #8963 (Mikhail Korotov) - Implementadas mais funções da API H3:
h3GetBaseCell,h3HexAreaM2,h3IndexesAreNeighbors,h3ToChildren,h3ToStringestringToH3#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_shardspara 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à tabelasystem.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.zerosesystem.zeros_mt, bem como as funções de tabelazeros()ezeros_mt(). As tabelas (e as funções de tabela) contêm uma única coluna chamadazeroe do tipoUInt8. 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çõesmin_bytes_for_wide_partemin_rows_for_wide_part. #8290 (Anton Popov) - Suporte a armazenamento S3 para tabelas
Log,TinyLogeStripeLog. #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
Fileou na função de tabelafile. 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óriodataestivesse 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 BYcom a configuraçãodistributed_aggregation_memory_efficienthabilitada. 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_handledurante a inicialização das tabelasReplicatedMergeTree. #9552 (alexey-milovidov) - O token
NOTnão funcionou na consultaSHOW 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çõesconnect_timeout_with_failover_secure_ms(padrão de 100 ms), semelhantes aconnect_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=0eis_done=0. #9022 (alesapin) - Use a nova lógica de ANY JOIN com a configuração
partial_merge_join. Agora, é possível fazer junçõesANY|ALL|SEMI LEFTeALL INNERcompartial_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 stringe. Corrige #8312 #8764 (Artem Zuikov) - Certifique-se de que
FORMAT Nullnã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
matcheextractquando 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
joinGetcom 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ãoT64, o que causa (des)compressão incorreta nas versões afetadas. #9033 (Artem Zuikov) - Adiciona a configuração
enable_early_constant_foldinge 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 armazenamentoFile#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
Memoryusava um caminho de dados vazio, então as tabelas eram criadas no diretóriopath(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
Logseja(m) um alias #9231 (Ivan) - Corrigida a ordem dos ranges na leitura da tabela
MergeTreeem uma thread. Isso podia causar exceções emMergeTreeRangeReaderou resultados incorretos de consulta. #9050 (Anton Popov) - Fazer com que
reinterpretAsFixedStringretorneFixedStringem vez deString. #9052 (Andrew Onyshchuk) - Evita casos extremamente raros em que o usuário pode receber uma mensagem de erro incorreta (
Successem vez de uma descrição detalhada do erro). #9457 (alexey-milovidov) - Não ocorre travamento ao usar o formato
Templatecom 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áusulaIF 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 avoidedao 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
Kafkaem 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 SETTINGna família de motores de tabelaMergeTreeno 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
INemGROUP BY#8868 (Amos Bird) - Corrige um bug em mutações
ALTER DELETEque levava à corrupção de índice. Isso corrige #9019 e #8982. Além disso, corrige condições de corrida extremamente raras em consultasALTERnoReplicatedMergeTree. #9048 (alesapin) - Quando a configuração
compile_expressionsestá habilitada, você pode obterunexpected columnemLLVMExecutableFunctionao usar o tipoNullable#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, aumentekafka_max_block_sizena tabela para um valor maior (por exemploCREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). Corrige #7259 #8917 (filimonov) - Corrige a exceção
Parameter out of boundem 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
intervalseja interpretado corretamente sem backticks. Corrigido um problema em que uma consulta não podia ser executada mesmo que o identificadorintervalestivesse 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 TIESquando há muitas linhas iguais à n’ésima linha. #9464 (tavplubix) - Corrigidas mutações em partes gravadas com
insert_quorumhabilitado. #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 boundem alguns casos raros em que há uma constante na cláusulaSELECTcom cláusulasORDER BYeLIMIT. #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 INDEXem 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 VIEWdepende, para que o servidor possa iniciar. Além disso, remova as dependências daLIVE VIEWao desanexá-la. ALIVE VIEWé um recurso experimental. #8824 (tavplubix) - Corrigido possível segfault em
MergeTreeRangeReaderao executarPREWHERE. #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
intDivcom 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
Kafkacriada 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/DROPcom base em mutações para a família de motoresReplicatedMergeTree*. Agora,ALTERSbloqueia 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
WHEREcontendo nomes não qualificados. #9512 (Artem Zuikov) - Fazer com que as consultas
SHOW TABLESeSHOW DATABASESpassem a oferecer suporte a expressõesWHEREe aFROM/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_idemclickhouse-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_enginesagora fornece informações sobre o suporte a funcionalidades (comosupports_ttlousupports_sort_order). #8830 (Max Akhmedov) - Ative
system.metric_logpor 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 VIEWtemporária é criada comCREATE LIVE VIEW name WITH TIMEOUT [42] ...em vez deCREATE TEMPORARY LIVE VIEW ..., porque a sintaxe anterior não era consistente comCREATE 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
arraySlicepara 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à tabelasystem.query_log. #8770 (Mikhail Korotov) - Habilitado o servidor de compatibilidade com MySQL na porta
9004no 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
_pathe_fileaos motoresHDFSeFilee às funções de tabelahdfsefile#8489 (Olga Khvostikova) - Corrigido o erro
Cannot find columnao inserir emMATERIALIZED VIEWcaso 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-Timezonedefinido com o mesmo valor de fuso horário queSELECT 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 qualColumnConst::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çãomaterializee 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
Nullno 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
readlineporreplxxpara edição interativa de linhas noclickhouse-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-tidyno CI. Veja também #6044 #9566 (alexey-milovidov) - Agora fazemos a linkedição do ClickHouse no CI com
lld, inclusive paragcc. #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 desleep. #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
sumMapesumMapWithOverflow. 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-overridepara localizar e corrigir todos os pontos em que a palavra-chaveoverridedeve 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
onceparaloop. #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
libcxxelibcxxabipara 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-dirsdo 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 erroreSSL 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
numbersporzerosnos perftests em que a colunanumbernã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
rdkafkaegsaslintegradas 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
Nullablena condição prewhere. Continuação de #11608. #11869 (Nikolai Kochetov). - Não permite
arrayJoindentro 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 FILLem 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
Nullablena 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
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 columnem consultas comPREWHERE column in (subquery)eARRAY 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 semin_bytes_to_use_direct_ioestiver 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 stuckem 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 VIEWcom a configuraçãoparallel_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
emptyounotEmpty. 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_speedpode não funcionar ou funcionar incorretamente se a consulta for limitada pelas configuraçõesmax_network_bandwidth,max_execution_speedoupriority. Altera o valor padrão detimeout_before_checking_execution_speedpara um valor diferente de zero, porque, caso contrário, as configuraçõesmin_execution_speedemax_execution_speednã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 noclickhouse-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 columnem funções de ordem superior com argumento capturadoArray(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
ReplicatedMergeTreeque poderia fazer com que algunsALTERna consultaOPTIMIZEficassem 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).
-
- Use
src_typepara a conversão correta de tipos em condições de chave. Corrige #6287. #10791 (Andrew Onyshchuk).
- Use
- Corrige o comportamento de
parallel_view_processing. Agora, se ocorrer uma exceção, todas as inserções emMATERIALIZED VIEWdeverã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
joinou uma subconsulta com condiçãowhereexterna. Corrige #10674. #10698 (Nikolai Kochetov). - Corrige vários usos do operador
INcom 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_efficientativado. 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çãoHAVING(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)emSummingMergeTree, 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=2ecancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix). - Corrigido um bug em que a consulta
SYSTEM DROP DNS CACHEtambé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 VIEWcaso 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
simpleLinearRegressionao 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 BYeLIMITpodia retornar um resultado incompleto. Isso corrige #10226. #10427 (alexey-milovidov). - Prefira
fallback_to_stale_replicasem vez deskip_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
HashTableque causava erro de compilação ao tentar ler um HashMap de um buffer. #10386 (palasonic1). - Corrigido um possível erro
Pipeline stucknoConcatProcessor, que poderia ocorrer em uma consulta remota. #10381 (Nikolai Kochetov). - Corrigido o erro
Pipeline stuckao usarmax_rows_to_group_byegroup_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 BYusando 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 executarALTER UPDATE/DELETEem tabelas comENGINE = Replicated*. A verificação de funções não determinísticas agora trata corretamente expressões lambda. #10237 (Alexander Kazakov). - Corrigido o
parseDateTimeBestEffortpara 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
JOINque podem conflitar com nomes de constantes fora doJOIN. #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.numbersousystem.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
INSERTem uma tabela com engineDistributed. #10135 (Azat Khuzhin). - Corrige
SIGSEGVao fazerINSERTem tabelaDistributedquando sua estrutura difere da das tabelas subjacentes. #10105 (Azat Khuzhin). - Corrige a possível perda de linhas em consultas com
JOINeUNION 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çãodistributed_aggregation_memory_efficientestava 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 BYcom 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'quandoJOINé usado comTOTALS. Corrige #9839. #9939 (Artem Zuikov). - Corrige um bug que fazia as consultas DDL
ON CLUSTERtravarem na inicialização do servidor. #9927 (Gagan Arneja). - Corrigido o
TRUNCATEno 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
dropeoptimizenoReplicatedMergeTree. #9901 (alesapin). - Corrigida a lógica de
DeleteOnDestroyemATTACH PART, que poderia levar à remoção automática da parte anexada, e adicionados alguns testes. #9410 (Vladimir Chebotarev).
melhoria de compilação/testes/empacotamento
- Corrigido o teste unitário
collapsing_sorted_stream. #9367 (Deleted user).
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 temPREWHEREeWHEREem uma tabela distribuída eSET 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 consultasINSERTpara 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 1no cliente. Isso acontecia em consultas comJOINcaso 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
SIGSEGVcomoptimize_skip_unused_shardsquando 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 BYdas 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 emParallelAggregatingBlockInputStream::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
sumKahanesumWithOverflow. 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 CLUSTERem tabelasDistributedcom 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 columneInvalid number of rows in ChunkemMergeTreeRangeReader. Elas podiam ocorrer ao executarPREWHEREem 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 comotime + 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 TIESquando 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 SETTINGna família de motores de tabelaMergeTreeem 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
matcheextractquando 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
- 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)
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
MergeTreeRangeReaderao executarPREWHERE. Corrige #9064. #9106 (CurtizJ) - Corrige
reinterpretAsFixedStringpara que retorneFixedStringem vez deString. #9052 (oandrew) - Corrigido o
joinGetpara 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
CROSScomoINNER JOINse houver o operador[NOT] LIKEna cláusulaWHERE. 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ívelADDuma coluna sem tipo; a expressão padrão emMODIFYnão altera o tipo da coluna, eMODIFYdo 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_timenã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
UInt64que não cabem em Int64 em funções relacionadas a JSON. Atualização doSIMDJSONpara 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
Kafkaem 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
Kafkacriada com parâmetros incorretos. Corrige #9494. Incorpora #9507. #9513 (filimonov)
Novo recurso
- Adiciona a opção
deduplicate_blocks_in_dependent_materialized_viewspara 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_distributionfoi 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
greatCircleDistancefoi alterado paraFloat32, 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 escrevera\tboua\<tab>be, respectivamente,a%5Ctboua%5C%09bna 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_zookeeperparaReplicatedMergeTreepor 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_conversioneallow_experimental_multiple_joins_emulationagora estão obsoletas e não têm efeito. #7974 (alexey-milovidov) - Adiciona uma nova lógica de
ANY JOINparaStorageJoin, consistente com a operaçãoJOIN. Para atualizar sem alterar o comportamento, é necessário adicionarSETTINGS any_join_distinct_right_table_keys = 1aos 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 DICTIONARYno modoON CLUSTER. #8288 (Guillaume Tassery) - Adicionada a possibilidade de executar consultas
CREATE DICTIONARYno modoON CLUSTER. #8163 (alesapin) - Agora, o perfil do usuário em
users.xmlpode 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
DateTime64com 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,TSVeJSONEachRowao 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. Agorat1 ANY LEFT JOIN t2é igual at2 ANY RIGHT JOIN t1. #7665 (Artem Zuikov) - Adiciona a configuração
any_join_distinct_right_table_keys, que habilita o comportamento antigo deANY INNER JOIN. #7665 (Artem Zuikov) - Adicionados novos
SEMIeANTI JOIN. O comportamento antigo deANY INNER JOINagora está disponível comoSEMI LEFT JOIN. #7665 (Artem Zuikov) - Adicionado o formato
Distributedao engineFilee à função de tabelafile, permitindo ler arquivos.bingerados por inserts assíncronos em uma tabelaDistributed. #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>emconfig.xml, que restringe os hosts permitidos para os motores de tabela remotos e para as funções de tabelaURL,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
JSONCompactEachRoweJSONCompactEachRowWithNamesAndTypespara 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 arquivosgzipcom 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 stringJSON. #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
TTLconfiguradas 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,CSVeJSONEachRow. #7894 (Nikita Mikhaylov) - Adicionadas várias funções geoespaciais da biblioteca
H3:h3GetResolution,h3EdgeAngle,h3EdgeLength,h3IsValideh3kRing. #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 tipoSimpleAggregationFunction. #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
EXPRESSIONpara 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
Tuplepadrão viaJSONEachRow. Isso corrige #5653. #8606 (tavplubix) - Agora, uma exceção será gerada ao usar
WITH TIESem conjunto comLIMIT BY. Também foi adicionada a possibilidade de usarTOPcomLIMIT 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 consultaALTER, 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
argMineargMaxcom argumentos de string longos, quando o resultado é usado na funçãorunningAccumulate. 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
NULLcomo um dos argumentos e retornar um valor diferente deNULL. #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
INna cláusulaWHEREquando 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_regexpespecificado emusers.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 formatoJSONouXMLcom valores do tipo de dadosString(que exigem validação deUTF-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
StorageDistributedDirectoryMonitoridentificada pela CI. Isso corrige #8364. #8383 (Nikolai Kochetov) - Agora, as mesclagens em segundo plano na família de motores de tabela
*MergeTreepreservam com mais precisão a ordem dos volumes da política de armazenamento. #8549 (Vladimir Chebotarev) - Agora o mecanismo de tabela
Kafkapassa a funcionar corretamente com o formatoNative. 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 tabelaKafka. #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
Parquetcontendo colunas do tipolist. #8334 (maxulan) - Corrige o erro
Not found columnem consultas distribuídas com condiçãoPREWHEREdependente da chave de amostragem semax_parallel_replicas > 1. #7913 (Nikolai Kochetov) - Corrigido o erro
Not found columnquando a consulta usavaPREWHEREdependente 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
randerandConstantquando o argumento éNullable. Agora, as funções sempre retornamUInt32e nuncaNullable(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()paraSummingMergeTreequando a cláusulaFINALé 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 engineJoin. 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
StorageFileeStorageHDFS. Corrige #7650. #7981 (alesapin) - Corrige um erro na consulta
ALTER ... MODIFY ... CODECquando 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
LEFTouFULL JOINusando a engine Join e configuraçõesjoin_use_nullsnão suportadas. #8479 (Artem Zuikov) - Agora, a consulta
DROP DICTIONARY IF EXISTS db.dictnão gera exceção sedbnã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 objetoIStoragejá 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
*MergeTreeapós a movimentação para outro disco e a reinicialização do servidor. #7810 (Vladimir Chebotarev) - Corrige travamento em
FULL JOINcomLowCardinalityna chave deJOIN. #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 columnem colunas materializadas e alias. #8210 (Artem Zuikov) - Corrigida uma falha grave quando a
consultaEXISTSera usada sem o qualificadorTABLEouDICTIONARY, como emEXISTS 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 colunaSimpleAggregateFunction. #7790 (Boris Granveaud) - Corrigido o bug em que um usuário com
allow_databasesvazio recebia acesso a todos os bancos de dados (e o mesmo paraallow_dictionaries). #7793 (DeifyTheGod) - Correção de falha no cliente quando o servidor já havia se desconectado. #8071 (Azat Khuzhin)
- Corrige o comportamento do
ORDER BYem 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
UNIONcom um número diferente de colunas. Corrige #7279. #7929 (Nikolai Kochetov) - Corrigido o tamanho da substring resultante da função
substrcom tamanho negativo. #8589 (Nikolai Kochetov) - Agora o servidor não executa mutação de parte em
MergeTreese 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 TABLEnão aguardará que as réplicas offline executem a operação. #8314 (javi santana) - Corrigido o parser de
ALTER TTLpara tabelasReplicated*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
bitmapAndao fazer a interseção entre um bitmap agregado e um bitmap escalar. #8082 (Yue Huang) - Aprimora a definição de
ZXidde acordo com o ZooKeeper Programmer’s Guide, corrigindo um bug noclickhouse-cluster-copier. #8088 (Ding Xiang Fei) - A função de tabela
odbcagora respeita a configuraçãoexternal_table_functions_use_nulls. #7506 (Vasily Nemkov) - Corrigido um bug que causava uma rara condição de corrida. #8143 (Alexander Kazakov)
- Agora,
SYSTEM RELOAD DICTIONARYrecarrega completamente um dicionário, ignorandoupdate_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 formatoValues. 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 TABLEpara tabelas*MergeTreesem chave. Corrige #7543. #7979 (alesapin) - Corrigida a conversão de
Float64para 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
fileao 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_logestá ativado. #7838 (filimonov) - Adiciona a capacidade de trabalhar com tipos diferentes de
Dateno dicionário externoRangeHashedcriado 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-filede outroclickhouse-serverem 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
arrayReduceque pode causar “double free” e erro no combinador de função de agregaçãoResampleque pode causar vazamento de memória. Adicionada a função de agregaçãoaggThrow. 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 consultasALTER UPDATE/DELETEde forma síncrona. #8237 (alesapin) - Permite definir
user_files_pathcomo relativo emconfig.xml(de forma semelhante aformat_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 existsao usarFINALeSAMPLEem conjunto, por exemplo,select count() from table final sample 1/2. Corrige #5186. #7907 (Nikolai Kochetov) - Agora, o primeiro argumento da função
joinGetpode ser um identificador de tabela. #7707 (Amos Bird) - Permite usar
MaterializedViewcom subconsultas em tabelasKafka. #8197 (filimonov) - Agora, os moves em segundo plano entre discos são executados em um pool de threads separado. #7670 (Vladimir Chebotarev)
SYSTEM RELOAD DICTIONARYagora é 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
addr2linequando 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
cityHashpode trabalhar com os tiposDecimaleUUID. 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 TABLEeATTACH TABLEno engine de banco de dadosMySQL. #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
MergeTreeem 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-clientagora só habilitabracketed-pastequandomultiqueryestá ativado emultilinedesativado. Isso corrige #7757. #7761 (Amos Bird)- Suporte para
Array(Decimal)na funçãoif. #7721 (Artem Zuikov) - Adicionado suporte a Decimal nas funções
arrayDifference,arrayCumSumearrayCumSumNegative. #7724 (Artem Zuikov) - Adicionada a coluna
lifetimeà tabelasystem.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 SDKpara interações comS3, 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
DateouDateTimeem expressõesTTL. #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_droppodem 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
Kafkaem 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 BYpara os armazenamentosMerge,BuffereMaterilized Viewcom tabelasMergeTreesubjacentes. #8130 (Anton Popov) - Agora passamos a usar sempre a implementação POSIX de
getrandompara 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
insertcorrompidos no mecanismo de tabelaDistributed. #7933 (Azat Khuzhin) - Adicionar à tabela
system.mutationsuma 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_lifetimeagora está obsoleta e não tem mais efeito. Em versões anteriores, o cache de marcas podia crescer na memória além demark_cache_sizepara acomodar dados durantemark_cache_min_lifetimesegundos. 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á aumentarmark_cache_size. #8484 (alexey-milovidov) - Preparação para usar
tidem 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-pointerglobalmente para liberar mais um registrador. #8097 (Amos Bird) - Melhora o desempenho da função
greatCircleDistancee adiciona testes de desempenho para ela. #7307 (Olga Khvostikova) - Desempenho aprimorado da função
roundDown. #8465 (alexey-milovidov) - Desempenho aprimorado de
max,min,argMineargMaxpara o tipo de dadoDateTime64. #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 BYe a mesclagem com chave de coluna única foram otimizados. #8335 (alexey-milovidov) - Melhorias na implementação de
arrayReducee dos combinadores-Arraye-State. #7710 (Amos Bird) - Agora,
PREWHEREestá otimizado para ser pelo menos tão eficiente quantoWHERE. #7769 (Amos Bird) - Melhora a forma como
rounderoundBankerstratam números negativos. #8229 (hcz) - Melhoria no desempenho de decodificação dos codecs
DoubleDeltaeGorillaem 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 agreatCircleDistance, 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
minemaxmais rápidas para o tipo de dadoDecimal. #8144 (Artem Zuikov) - Vetorizado o processamento de
arrayReduce. #7608 (Amos Bird) - Estruturas
ifencadeadas agora são otimizadas comomultiIf. #8355 (kamalov-ruslan) - Corrige a regressão de desempenho do engine de tabela
Kafkaintroduzida na versão 19.15. Corrige #7261. #7935 (filimonov) - Removida a geração de código “pie” que o
gccdos pacotes do Debian ocasionalmente inclui por padrão. #8483 (alexey-milovidov) - Formatos de dados com análise paralela #6553 (Nikita Mikhaylov)
- Parser otimizado de
Valuescom 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
ARMe para o modo mínimo. #8304 (proller) - Adicionado flush do arquivo de cobertura para
clickhouse-serverquandostd::atexitnã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
curlincluído totalmente silenciosa. #8232 #8203 (Pavel Kovalenko) - Corrige alguns avisos do
MemorySanitizer. #8235 (Alexander Kuzmenkov) - Use as macros
add_warningeno_warningno arquivoCMakeLists.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
libcforam importados para o contrib. Isso permite tornar as compilações mais consistentes em diferentes sistemas (somente parax86_64-linux-gnu). #5773 (alexey-milovidov) - Remoção de
-fPICde algumas bibliotecas. #8464 (alexey-milovidov) - Limpeza do
CMakeLists.txtdo 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
AArch64mesmo semMADV_FREEdisponível. Isso corrige #8027. #8243 (Amos Bird) - Atualizado o
zlib-ngpara 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
Fieldmais 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
JSONna saída do teste de desempenho. #8497 (Nikolai Kochetov) - Agora, o stack trace é exibido para
std::exceptionePoco::Exception. Nas versões anteriores, ele estava disponível apenas paraDB::Exception. Isso melhora os diagnósticos. #8501 (alexey-milovidov) - Adaptação de
clock_gettimeeclock_nanosleeppara versões mais novas da glibc. #8054 (Amos Bird) - Ativar
part_logna 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
.tgze 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_ERRORcomo 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
lz4para corrigir uma falha do MemorySanitizer. #8181 (Alexander Kuzmenkov) - Suprimido um falso positivo conhecido do MemorySanitizer no tratamento de exceções. #8182 (Alexander Kuzmenkov)
- Atualizado
gcceg++para a versão 9 embuild/docker/build.sh#7766 (TLightSky) - Adicionado um caso de teste de desempenho para verificar que
PREWHEREé pior queWHERE. #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
libresslparaopenssl. 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_poly1305do 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-serveremclickhouse-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_querynos processadores. #8272 (Nikolai Kochetov) - Removido o suporte ao
tcmallocpara simplificar oCMakeLists.txt. #8310 (alexey-milovidov) - As compilações de lançamento com gcc agora usam
libc++em vez delibstdc++. 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
Float64eUInt64. #8349 (Vasily Nemkov) termcapestá claramente obsoleto e causou vários problemas (por exemplo, a ausência da capacidade “up” e a exibição de^Jem vez de múltiplas linhas). Prefiraterminfoou oncursesincluí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-timeaos testes funcionais, que exibe o tempo de execução de cada teste. #8001 (Nikolai Kochetov) - Adicionadas assertivas a
KeyConditiondurante 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.xmlsempre 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 doclang-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, porquemmap/munmapé lento. #8520 (alexey-milovidov) - Quotas reformuladas como parte do sistema de controle de acesso. Adicionados a nova tabela
system.quotas, as novas funçõescurrentQuota,currentQuotaKeye a nova sintaxe SQLCREATE 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çãocurrentRowPolicies()e a nova sintaxe SQLCREATE 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)