Pular para o conteúdo principal

lançamento do ClickHouse 19.17

lançamento do ClickHouse 19.17.6.36, 2019-12-27

Correção de bugs

  • Corrigido um possível overflow de buffer em decompress. Um usuário mal-intencionado pode fornecer dados compactados forjados que poderiam causar leitura além do buffer. Esse problema foi encontrado por Eldar Zaitov, da equipe de segurança da informação da Yandex. #8404 (alexey-milovidov)
  • Corrigida uma possível falha do servidor (std::terminate) quando o servidor não consegue enviar ou gravar dados em formato JSON ou XML com valores do tipo de dado String (que exigem validação UTF-8), ao comprimir dados de resultado com o algoritmo Brotli ou em alguns outros casos raros. #8384 (alexey-milovidov)
  • Corrigidos dicionários cuja origem é uma VIEW do ClickHouse; agora, a leitura desses dicionários não causa mais o erro There is no query. #8351 (Nikolai Kochetov)
  • Corrigida a verificação de se um host cliente é permitido pela host_regexp especificada em users.xml. #8241, #8342 (Vitaly Baranov)
  • RENAME TABLE para uma tabela distribuída agora renomeia a pasta que contém os dados inseridos antes de enviá-los para os shards. Isso corrige um problema com renomeações sucessivas tableA->tableB, tableC->tableA. #8306 (tavplubix)
  • Os dicionários externos range_hashed criados por consultas DDL agora permitem intervalos com tipos numéricos arbitrários. #8275 (alesapin)
  • Corrigido INSERT INTO table SELECT ... FROM mysql(...) com a função de tabela. #8234 (tavplubix)
  • Corrigido segfault em INSERT INTO TABLE FUNCTION file() ao inserir em um arquivo que não existe. Agora, nesse caso, o arquivo é criado e, em seguida, a inserção é processada. #8177 (Olga Khvostikova)
  • Corrigido erro em bitmapAnd ao fazer a interseção entre um bitmap agregado e um bitmap escalar. #8082 (Yue Huang)
  • Corrigida falha de segmentação quando a consulta EXISTS era usada sem o qualificador TABLE ou DICTIONARY, como em EXISTS t. #8213 (alexey-milovidov)
  • Corrigido o tipo de retorno das funções rand e randConstant no caso de argumento do tipo Nullable. Agora, as funções sempre retornam UInt32 e nunca Nullable(UInt32). #8204 (Nikolai Kochetov)
  • Corrigido o DROP DICTIONARY IF EXISTS db.dict; agora ele não lança exceção se db não existir. #8185 (Vitaly Baranov)
  • Se uma tabela não tiver sido completamente removida devido a uma falha no servidor, o servidor tentará restaurá-la e carregá-la #8176 (tavplubix)
  • Corrigida uma consulta simples de contagem para uma tabela distribuída quando houver mais de duas tabelas locais por shard. #8164 (小路)
  • Corrigido um bug que causava uma condição de corrida de dados em DB::BlockStreamProfileInfo::calculateRowsBeforeLimit() #8143 (Alexander Kazakov)
  • Corrigido o ALTER table MOVE part executado imediatamente após a mesclagem da parte especificada, o que podia fazer com que fosse movida uma parte na qual a parte especificada havia sido mesclada. Agora ele move corretamente a parte especificada. #8104 (Vladimir Chebotarev)
  • Agora é possível especificar expressões para dicionários como strings. Isso é útil para calcular atributos ao extrair dados de fontes que não sejam o ClickHouse, pois permite usar sintaxe não ClickHouse nessas expressões. #8098 (alesapin)
  • Corrigida uma condição de corrida muito rara em clickhouse-copier devido a um overflow em ZXid. #8088 (Ding Xiang Fei)
  • Corrigido o bug em que, após a falha da consulta (devido a “Too many simultaneous queries”, por exemplo), as informações das tabelas externas não eram lidas, e a solicitação seguinte interpretava essas informações como o início da próxima consulta, causando um erro como Unknown packet from client. #8084 (Azat Khuzhin)
  • Evita a desreferenciação de NULL após “Unknown packet X from server” #8071 (Azat Khuzhin)
  • Restaurado o suporte a todas as localidades do ICU, adicionada a capacidade de aplicar collations a expressões constantes e adicionado o nome do idioma à tabela system.collations. #8051 (alesapin)
  • O número de streams para leitura de StorageFile e StorageHDFS agora é limitado para evitar exceder o limite de memória. #7981 (alesapin)
  • Corrigida a consulta CHECK TABLE para tabelas *MergeTree sem chave definida. #7979 (alesapin)
  • Foi removido o número da mutação do nome de uma parte quando não havia mutações. Essa mudança melhorou a compatibilidade com versões mais antigas. #8250 (alesapin)
  • Corrigido o bug em que mutações eram ignoradas para algumas partes anexadas porque seu data_version é maior que a versão de mutação da tabela. #7812 (Zhichang Yu)
  • Permite iniciar o servidor com cópias redundantes de partes após movê-las para outro dispositivo. #7810 (Vladimir Chebotarev)
  • Corrigido o erro “Sizes of columns does not match” que podia aparecer ao usar colunas de funções de agregação. #7790 (Boris Granveaud)
  • Agora será gerada uma exceção ao usar WITH TIES juntamente com LIMIT BY. Agora também é possível usar TOP com LIMIT BY. #7637 (Nikita Mikhaylov)
  • Corrigida a recarga do dicionário caso ele tenha invalidate_query, que interrompia as atualizações e gerava algumas exceções nas tentativas anteriores de atualização. #8029 (alesapin)

lançamento do ClickHouse 19.17.4.11, 2019-11-22

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

  • Passou-se a usar coluna em vez de AST para armazenar resultados de subconsulta escalar, visando melhor desempenho. A configuração enable_scalar_subquery_optimization foi adicionada na versão 19.17 e veio habilitada por padrão. Isso causa erros como este durante a atualização para 19.17.2 ou 19.17.3 a partir de versões anteriores. Essa configuração foi desabilitada por padrão na 19.17.4 para possibilitar a atualização a partir da 19.16 e de versões mais antigas sem erros. #7392 (Amos Bird)

Novo recurso

  • Adicionada a capacidade de criar dicionários com consultas DDL. #7360 (alesapin)
  • Tornado o tipo de índice bloom_filter compatível com LowCardinality e Nullable #7363 #7561 (Nikolai Kochetov)
  • Adicionada a função isValidJSON para verificar se a string fornecida é um JSON válido. #5910 #7293 (Vdimir)
  • Implementada a função arrayCompact #7328 (Memo)
  • Criada a função hex para números do tipo Decimal. Ela funciona como hex(reinterpretAsString()), mas não remove os bytes zero finais. #7355 (Mikhail Korotov)
  • Adicionadas as funções arrayFill e arrayReverseFill, que substituem elementos por outros elementos à frente/atrás deles no array. #7380 (hcz)
  • Adicionado suporte a CRC32IEEE()/CRC64() #7480 (Azat Khuzhin)
  • Implementada a função char, semelhante à do mysql #7486 (sundyli)
  • Adicionada a função bitmapTransform. Ela transforma um array de valores em um bitmap em outro array de valores; o resultado é um novo bitmap #7598 (Zhichang Yu)
  • Implementada a função javaHashUTF16LE() #7651 (achimbab)
  • Adicionada a coluna virtual _shard_num para o engine Distributed #7624 (Azat Khuzhin)

Funcionalidade Experimental

  • Suporte a processadores (novo pipeline de execução de consulta) no MergeTree. #7181 (Nikolai Kochetov)

correção de bug

  • Corrigido o parsing incorreto de números de ponto flutuante em Values #7817 #7870 (tavplubix)
  • Corrige um deadlock raro que pode ocorrer quando trace_log está habilitado. #7838 (filimonov)
  • Evita a duplicação de mensagens quando a tabela Kafka de produção tem MVs que a consultam #7265 (Ivan)
  • Suporte a Array(LowCardinality(Nullable(String))) no IN. Corrige #7364 #7366 (achimbab)
  • Adicionado suporte a SQL_TINYINT e SQL_BIGINT, e corrigido o tratamento dos tipos SQL_FLOAT no ODBC Bridge. #7491 (Denis Glazachev)
  • Corrigida a agregação (avg e quantis) em colunas decimais vazias #7431 (Andrey Konyaev)
  • Corrigido o INSERT em Distributed com colunas MATERIALIZED #7377 (Azat Khuzhin)
  • Faz com que MOVE PARTITION funcione se algumas partes da partição já estiverem no disco ou volume de destino #7434 (Vladimir Chebotarev)
  • Corrigido um bug que impedia a criação de hardlinks durante mutações em ReplicatedMergeTree em configurações com vários discos. #7558 (Vladimir Chebotarev)
  • Corrigido um bug em uma mutação no MergeTree quando a parte inteira permanece inalterada e o melhor espaço é encontrado em outro disco #7602 (Vladimir Chebotarev)
  • Corrigido bug em que keep_free_space_ratio não era lido da configuração de discos #7645 (Vladimir Chebotarev)
  • Corrige erro em tabelas que contêm apenas colunas Tuple ou colunas com caminhos complexos. Corrige 7541. #7545 (alesapin)
  • Não considerar a memória do mecanismo Buffer no limite max_memory_usage #7552 (Azat Khuzhin)
  • Corrige o uso da mark final em tabelas MergeTree ordenadas por tuple(). Em casos raros, isso podia levar ao erro Can't adjust last granule durante um SELECT. #7639 (Anton Popov)
  • Corrige um bug em mutações que têm predicados com ações que exigem contexto (por exemplo, funções para JSON), o que pode levar a falhas ou exceções estranhas. #7664 (alesapin)
  • Corrige a inconsistência no escape dos nomes de banco de dados e de tabela nos diretórios data/ e shadow/ #7575 (Alexander Burmak)
  • Suporte a chaves duplicadas em JOINs RIGHT|FULL, por exemplo ON t.x = u.x AND t.x = u.y. Correção de falha nesse caso. #7586 (Artem Zuikov)
  • Corrigido o erro Not found column <expression> in block ao fazer JOIN por expressão com RIGHT ou FULL JOIN. #7641 (Artem Zuikov)
  • Mais uma tentativa de corrigir o laço infinito no formato PrettySpace #7591 (Olga Khvostikova)
  • Correção de bug na função concat quando todos os argumentos eram FixedString do mesmo tamanho. #7635 (alesapin)
  • Corrigida a exceção ao usar 1 argumento na definição dos armazenamentos S3, URL e HDFS. #7618 (Vladimir Chebotarev)
  • Corrigido o escopo do InterpreterSelectQuery para views com consulta #7601 (Azat Khuzhin)

Melhorias

  • colunas Nullable reconhecidas e valores NULL tratados corretamente pelo ODBC-bridge #7402 (Vasily Nemkov)
  • Gravação atômica do batch atual para envio distribuído #7600 (Azat Khuzhin)
  • Lança uma exceção se não for possível detectar a tabela para o nome da coluna na consulta. #7358 (Artem Zuikov)
  • Adicionada a configuração merge_max_block_size a MergeTreeSettings #7412 (Artem Zuikov)
  • Consultas com HAVING e sem GROUP BY assumem agrupamento por constante. Assim, SELECT 1 HAVING 1 agora retorna um resultado. #7496 (Amos Bird)
  • Suporte à interpretação de (X,) como tupla, de forma semelhante ao Python. #7501, #7562 (Amos Bird)
  • O comportamento da função range ficou quase igual ao do Python. #7518 (sundyli)
  • Adicionadas colunas constraints à tabela system.settings #7553 (Vitaly Baranov)
  • Melhor formato Null para o TCP handler, permitindo usar select ignore(<expression>) from table format Null para medir o desempenho via clickhouse-client #7606 (Amos Bird)
  • Consultas como CREATE TABLE ... AS (SELECT (1, 2)) são interpretadas corretamente #7542 (hcz)

Melhoria de desempenho

  • O desempenho da agregação com chaves de string curtas foi melhorado. #6243 (Alexander Kuzmenkov, Amos Bird)
  • Executa outra etapa de análise de sintaxe/expressão para obter possíveis otimizações após o dobramento de predicados constantes. #7497 (Amos Bird)
  • Usa metadados de armazenamento para avaliar um SELECT count() FROM table; trivial. #7510 (Amos Bird, alexey-milovidov)
  • Vetoriza o processamento de arrayReduce, de forma semelhante ao addBatch do Aggregator. #7608 (Amos Bird)
  • Pequenas melhorias no desempenho do consumo do Kafka #7475 (Ivan)

Melhorias em Build/Testes/Empacotamento

  • Adicionado suporte à compilação cruzada para a arquitetura de CPU AARCH64. Refatoração do script de empacotamento. #7370 #7539 (Ivan)
  • Descompactados os toolchains darwin-x86_64 e linux-aarch64 em um volume Docker montado durante a compilação de pacotes #7534 (Ivan)
  • Atualizada a imagem Docker do empacotador binário #7474 (Ivan)
  • Corrigidos erros de compilação no macOS Catalina #7585 (Ernest Poletaev)
  • Refatoração na lógica de análise de consulta: divisão de uma classe complexa em várias mais simples. #7454 (Artem Zuikov)
  • Corrigida a compilação sem submódulos #7295 (proller)
  • add_globs aprimorado nos arquivos CMake #7418 (Amos Bird)
  • Removidos caminhos fixos no destino unwind #7460 (Konstantin Podshumok)
  • Permitido o uso do formato MySQL sem SSL #7524 (proller)

Outros

Lançamento do ClickHouse 19.16

lançamento do ClickHouse 19.16.14.65, 2020-03-25

  • Corrigido um bug em cálculos em lote de operadores lógicos ternários com vários argumentos (mais de 10). #8718 (Alexander Kazakov) Essa correção foi retroportada para a versão 19.16 a pedido especial da Altinity.

Lançamento do ClickHouse 19.16.14.65, 2020-03-05

  • Corrige a incompatibilidade de subconsultas distribuídas com versões mais antigas do ClickHouse. Corrige #7851 (tabplubix)
  • Ao executar a consulta CREATE, simplifica 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 de endereço local em ClickHouseDictionarySource. #9262 (tabplubix)
  • Agora, os merges em segundo plano na família de motores de tabela *MergeTree preservam a ordem dos volumes da política de armazenamento com mais precisão. #8549 (Vladimir Chebotarev)
  • Evita perda de dados no Kafka em casos raros, quando ocorre uma exceção após a leitura do sufixo, mas antes do commit. Corrige #9378. Relacionado: #7175 #9507 (filimonov)
  • Corrige um bug que levava ao encerramento do servidor ao tentar usar / excluir uma tabela Kafka criada com parâmetros incorretos. Corrige #9494. Incorpora #9507. #9513 (filimonov)
  • Permite usar MaterializedView com subconsultas sobre tabelas Kafka. #8197 (filimonov)

Novo recurso

  • Adicionada a opção deduplicate_blocks_in_dependent_materialized_views para controlar o comportamento de inserções idempotentes em tabelas com visões materializadas. Esse novo recurso foi adicionado à versão de correção por uma solicitação especial da Altinity. #9070 (urykhy)

Lançamento do ClickHouse 19.16.2.2, 2019-10-30

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

  • Adicionada a validação de aridade ausente para count/counIf. #7095 #7298 (Vdimir)
  • Removida a configuração obsoleta asterisk_left_columns_only (ela estava desabilitada por padrão). #7335 (Artem Zuikov)
  • As format strings do formato de dados Template agora são especificadas em arquivos. #7118 (tavplubix)

Novo recurso

  • Introduz uniqCombined64() para calcular cardinalidade acima de UINT_MAX. #7213, #7222 (Azat Khuzhin)
  • Adiciona suporte a índices com filtro de Bloom em colunas Array. #6984 (achimbab)
  • Adiciona a função getMacro(name), que retorna uma String com o valor do <macros> correspondente da configuração do servidor. #7240 (alexey-milovidov)
  • Define duas opções de configuração para um Dicionário baseado em uma fonte HTTP: credentials e http-headers. #7092 (Guillaume Tassery)
  • Adiciona um novo ProfileEvent Merge, que conta o número de merges em segundo plano iniciados. #7093 (Mikhail Korotov)
  • Adiciona a função fullHostName, que retorna um nome de domínio totalmente qualificado. #7263 #7291 (sundyli)
  • Adiciona as funções arraySplit e arrayReverseSplit, que dividem um array por condições de “corte”. Elas são úteis no tratamento de sequências temporais. #7294 (hcz)
  • Adiciona novas funções que retornam o Array com todos os índices correspondentes na família de funções multiMatch. #7299 (Danila Kutenin)
  • Adiciona um novo engine de banco de dados Lazy, otimizado para armazenar um grande número de pequenas tabelas -Log. #7171 (Nikita Vasilev)
  • Adiciona as funções de agregação groupBitmapAnd, -Or, -Xor para colunas bitmap. #7109 (Zhichang Yu)
  • Adiciona os combinadores de função de agregação -OrNull e -OrDefault, que retornam null ou valores padrão quando não há nada a agregar. #7331 (hcz)
  • Introduz o formato de dados CustomSeparated, que oferece suporte a regras personalizadas de escape e delimitador. #7118 (tavplubix)
  • Adiciona suporte ao Redis como fonte de Dicionário externo. #4361 #6962 (comunodi, Anton Popov)

Correções de bugs

  • Corrige resultado incorreto de consulta se ela tiver a cláusula WHERE IN (SELECT ...) e optimize_read_in_order for usado. #7371 (Anton Popov)
  • Plugin de authentication do MariaDB desativado, pois depende de arquivos externos ao projeto. #7140 (Yuriy Baranov)
  • Corrige a exceção Cannot convert column ... because it is constant but values of constants are different in source and result, que raramente podia ocorrer quando as funções now(), today(), yesterday(), randConstant() são usadas. #7156 (Nikolai Kochetov)
  • Corrigido o uso do timeout de keep alive do HTTP em vez do timeout de keep alive do TCP. #7351 (Vasily Nemkov)
  • Corrigida uma falha de segmentação em groupBitmapOr (problema #7109). #7289 (Zhichang Yu)
  • Para visões materializadas, o commit no Kafka é executado depois que todos os dados são gravados. #7175 (Ivan)
  • Corrigido o valor incorreto de duration_ms na tabela system.part_log. Ele estava 10 vezes acima do correto. #7172 (Vladimir Chebotarev)
  • Correção rápida para resolver uma falha na tabela LIVE VIEW e reativar todos os testes de LIVE VIEW. #7201 (vzakaznikov)
  • Serializa corretamente valores NULL nos índices min/max das partes do MergeTree. #7234 (Alexander Kuzmenkov)
  • Não inclui colunas virtuais nos metadados .sql quando a tabela é criada como CREATE TABLE AS. #7183 (Ivan)
  • Corrige falha de segmentação na consulta ATTACH PART. #7185 (alesapin)
  • Corrige resultado incorreto para algumas consultas causado pela otimização de subconsultas IN vazias e INNER/RIGHT JOIN vazios. #7284 (Nikolai Kochetov)
  • Corrige erro do AddressSanitizer no método getHeader() do LIVE VIEW. #7271 (vzakaznikov)

Melhoria

  • Adicionada uma mensagem quando ocorrer espera em queue_wait_max_ms. #7390 (Azat Khuzhin)
  • A configuração s3_min_upload_part_size passou a ser de nível de tabela. #7059 (Vladimir Chebotarev)
  • Verificação de TTL no StorageFactory. #7304 (sundyli)
  • Compactação dos blocos do lado esquerdo no partial merge join (otimização). #7122 (Artem Zuikov)
  • Não permitir funções não determinísticas em mutações de motores de tabela Replicated, porque isso pode introduzir inconsistências entre réplicas. #7247 (Alexander Kazakov)
  • Desabilitado o memory tracker ao converter o stack trace da exceção em string. Isso pode evitar a perda de mensagens de erro do tipo Memory limit exceeded no servidor, que causava a exceção Attempt to read after eof no cliente. #7264 (Nikolai Kochetov)
  • Melhorias diversas de formato. Resolve #6033, #2633, #6611, #6742 #7215 (tavplubix)
  • O ClickHouse ignora valores no lado direito do operador IN que não podem ser convertidos para o tipo do lado esquerdo. Correção para que isso funcione adequadamente com tipos compostos — Array e Tuple. #7283 (Alexander Kuzmenkov)
  • Suporte a desigualdades ausentes para ASOF JOIN. É possível fazer join com a variante less-or-equal e com as variantes estritas greater e less para a coluna ASOF na sintaxe ON. #7282 (Artem Zuikov)
  • Otimizado o partial merge join. #7070 (Artem Zuikov)
  • Não usar mais de 98K de memória nas funções uniqCombined. #7236, #7270 (Azat Khuzhin)
  • Gravar em disco as partes da tabela do lado direito do join no PartialMergeJoin (se não houver memória suficiente). Recarregar os dados quando necessário. #7186 (Artem Zuikov)

Melhoria de desempenho

  • Acelera o joinGet com argumentos const, evitando a duplicação de dados. #7359 (Amos Bird)
  • Retorna imediatamente se a subconsulta estiver vazia. #7007 (小路)
  • Otimiza o parsing de expressões SQL em Values. #6781 (tavplubix)

Melhoria em compilação/testes/empacotamento

  • Desativados alguns contribs para compilação cruzada para Mac OS. #7101 (Ivan)
  • Adicionada a vinculação ausente com PocoXML para clickhouse_common_io. #7200 (Azat Khuzhin)
  • Aceita vários argumentos de filtro de teste no clickhouse-test. #7226 (Alexander Kuzmenkov)
  • Ativa musl e jemalloc para ARM. #7300 (Amos Bird)
  • Adicionado o parâmetro --client-option ao clickhouse-test para repassar parâmetros adicionais ao cliente. #7277 (Nikolai Kochetov)
  • Preservar as configurações existentes ao atualizar o pacote RPM. #7103 (filimonov)
  • Corrigidos erros detectados pelo PVS. #7153 (Artem Zuikov)
  • Corrigida a compilação para Darwin. #7149 (Ivan)
  • compatibilidade com a glibc 2.29. #7142 (Amos Bird)
  • Certifique-se de que dh&#95;clean não modifique possíveis arquivos-fonte. #7205 (Amos Bird)
  • Tentativa de evitar conflitos ao atualizar a partir do RPM da Altinity - o arquivo de configuração é empacotado separadamente em clickhouse-server-common. #7073 (filimonov)
  • Otimize alguns arquivos de cabeçalho para recompilações mais rápidas. #7212, #7231 (Alexander Kuzmenkov)
  • Adicionados testes de desempenho para Date e DateTime. #7332 (Vasily Nemkov)
  • Corrigidos alguns testes que continham mutações não determinísticas. #7132 (Alexander Kazakov)
  • Adicionada compilação com MemorySanitizer ao CI. #7066 (Alexander Kuzmenkov)
  • Evite o uso de valores não inicializados no MetricsTransmitter. #7158 (Azat Khuzhin)
  • Corrigidos alguns problemas no Fields encontrados pelo MemorySanitizer. #7135, #7179 (Alexander Kuzmenkov), #7376 (Amos Bird)
  • Corrigido comportamento indefinido em murmurhash32. #7388 (Amos Bird)
  • Corrigido comportamento indefinido em StoragesInfoStream. #7384 (tavplubix)
  • Corrigido o folding de expressões constantes para motores de banco de dados externos (MySQL, ODBC, JDBC). Em versões anteriores, isso não funcionava com várias expressões constantes e simplesmente não funcionava para Date, DateTime e UUID. Isso corrige #7245 #7252 (alexey-milovidov)
  • Correção do erro de corrida de dados detectado pelo ThreadSanitizer na visualização em tempo real ao acessar a variável no_users_thread. #7353 (vzakaznikov)
  • Remover símbolos de malloc da libcommon #7134, #7065 (Amos Bird)
  • Adicionada a flag global ENABLE_LIBRARIES para desabilitar todas as bibliotecas. #7063 (proller)

Limpeza de código

  • Generalização do repositório de configuração para preparar o DDL de dicionários. #7155 (alesapin)
  • Parser para DDL de dicionários sem nenhuma semântica. #7209 (alesapin)
  • Divisão de ParserCreateQuery em vários parsers menores. #7253 (alesapin)
  • Pequena refatoração e renomeação relacionadas a dicionários externos. #7111 (alesapin)
  • Refatoração de parte do código para preparar o Controle de Acesso Baseado em Funções. #7235 (Vitaly Baranov)
  • Algumas melhorias no código de DatabaseOrdinary. #7086 (Nikita Vasilev)
  • Não usar iteradores nos métodos find() e emplace() de tabelas hash. #7026 (Alexander Kuzmenkov)
  • Correção de getMultipleValuesFromConfig no caso em que o parâmetro root não está vazio. #7374 (Mikhail Korotov)
  • Remoção de algumas duplicações de código (TemporaryFile e TemporaryFileStream) #7166 (Artem Zuikov)
  • Pequena melhoria na legibilidade do código (MergeTreeData::getActiveContainingPart). #7361 (Vladimir Chebotarev)
  • Aguardar todos os jobs agendados que usam objetos locais caso ThreadPool::schedule(...) lance uma exceção. Renomear ThreadPool::schedule(...) para ThreadPool::scheduleOrThrowOnError(...) e corrigir os comentários para deixar explícito que ele pode lançar exceção. #7350 (tavplubix)

lançamento do ClickHouse 19.15

lançamento do ClickHouse 19.15.4.10, 2019-10-31

Correções de bugs

  • Adicionado o tratamento de SQL_TINYINT e SQL_BIGINT, e corrigido o tratamento dos tipos de dados SQL_FLOAT no ODBC Bridge. #7491 (Denis Glazachev)
  • Passou a ser permitido manter algumas partes no disco ou volume de destino em MOVE PARTITION. #7434 (Vladimir Chebotarev)
  • Corrigidos os valores NULL em colunas Nullable por meio do ODBC Bridge. #7402 (Vasily Nemkov)
  • Corrigido INSERT em nó não local de Distributed com colunas MATERIALIZED. #7377 (Azat Khuzhin)
  • Corrigida a função getMultipleValuesFromConfig. #7374 (Mikhail Korotov)
  • Corrigido o uso do timeout de HTTP keep alive em vez do timeout de TCP keep alive. #7351 (Vasily Nemkov)
  • Passa a aguardar a conclusão de todos os jobs em caso de exceção (corrige falhas de segmentação raras). #7350 (tavplubix)
  • Desativado o envio para MVs ao inserir na tabela Kafka. #7265 (Ivan)
  • Desabilitado o memory tracker para a pilha de exceção. #7264 (Nikolai Kochetov)
  • Corrigido código incorreto na transformação da consulta para banco de dados externo. #7252 (alexey-milovidov)
  • Evitado o uso de valores não inicializados em MetricsTransmitter. #7158 (Azat Khuzhin)
  • Adicionado exemplo de configuração com macros para testes (alexey-milovidov)

Versão 19.15.3.6 do ClickHouse, 2019-10-09

Correção de bug

  • Corrigido bad_variant em Dicionário hash. (alesapin)
  • Corrigido um bug de falha de segmentação na consulta ATTACH PART. (alesapin)
  • Corrigido o cálculo de tempo em MergeTreeData. (Vladimir Chebotarev)
  • Commit explícito no Kafka após a gravação ser finalizada. #7175 (Ivan)
  • Corrigida a serialização de valores NULL nos índices min/max das partes do MergeTree. #7234 (Alexander Kuzmenkov)

Versão do ClickHouse 19.15.2.2, 2019-10-01

Novo Recurso

  • Armazenamento em camadas: suporte ao uso de vários volumes de armazenamento para tabelas com engine MergeTree. É possível armazenar dados recentes em SSD e mover automaticamente dados antigos para HDD. (exemplo). #4918 (Igr) #6489 (alesapin)
  • Adiciona a função de tabela input para ler dados de entrada na consulta INSERT SELECT. #5450 (palasonic1) #6832 (Anton Popov)
  • Adiciona o layout de dicionário sparse_hashed, funcionalmente equivalente ao layout hashed, mas mais eficiente em termos de memória. Ele usa cerca de metade da memória, ao custo de uma recuperação de valores mais lenta. #6894 (Azat Khuzhin)
  • Implementa a capacidade de definir uma lista de usuários para acesso aos dicionários. Apenas o banco de dados conectado no momento é usado. #6907 (Guillaume Tassery)
  • Adiciona a opção LIMIT à consulta SHOW. #6944 (Philipp Malkovsky)
  • Adiciona a função bitmapSubsetLimit(bitmap, range_start, limit), que retorna o subconjunto dos menores limit valores no conjunto que não sejam menores que range_start. #6957 (Zhichang Yu)
  • Adiciona as funções bitmapMin e bitmapMax. #6970 (Zhichang Yu)
  • Adiciona a função repeat, relacionada à issue-6648 #6999 (flynn)

recurso experimental

  • Implementa uma variante de Merge Join (em memória) que não altera o pipeline atual. O resultado é parcialmente ordenado pela chave de junção. Defina partial_merge_join = 1 para usar esta funcionalidade. O Merge Join ainda está em desenvolvimento. #6940 (Artem Zuikov)
  • Adiciona a engine S3 e a função de tabela. Ainda está em desenvolvimento (ainda sem suporte a autenticação). #5596 (Vladimir Chebotarev)

Melhoria

  • Cada mensagem lida do Kafka é inserida atomicamente. Isso resolve quase todos os problemas conhecidos do engine Kafka. #6950 (Ivan)
  • Melhorias no failover de consultas distribuídas. O tempo de recuperação foi reduzido; além disso, agora ele é configurável e pode ser visto em system.clusters. #6399 (Vasily Nemkov)
  • Suporte a valores numéricos para Enums diretamente na seção IN. #6766 #6941 (dimarub2000)
  • Suporte a redirecionamentos (opcionais, desabilitados por padrão) no armazenamento URL. #6914 (maqroll)
  • Adiciona uma mensagem informativa quando um cliente com versão mais antiga se conecta a um servidor. #6893 (Philipp Malkovsky)
  • Remove o limite máximo do tempo de espera de backoff para envio de dados em tabelas Distributed #6895 (Azat Khuzhin)
  • Adiciona a capacidade de enviar profile events (contadores) com valores cumulativos para o Graphite. Isso pode ser habilitado em <events_cumulative> no config.xml do servidor. #6969 (Azat Khuzhin)
  • Adiciona a conversão automática do tipo T para LowCardinality(T) ao inserir dados em uma coluna do tipo LowCardinality(T) no formato Native via HTTP. #6891 (Nikolai Kochetov)
  • Adiciona a capacidade de usar a função hex sem precisar de reinterpretAsString para Float32, Float64. #7024 (Mikhail Korotov)

Melhorias de Build/Testes/Empacotamento

  • Adiciona gdb-index ao binário do ClickHouse com informações de depuração. Isso acelera a inicialização do gdb. #6947 (alesapin)
  • Acelera o empacotamento de pacotes deb com uma versão corrigida do dpkg-deb que usa pigz. #6960 (alesapin)
  • Define enable_fuzzing = 1 para habilitar a instrumentação do libfuzzer em todo o código do projeto. #7042 (kyprizel)
  • Adiciona um smoke test para split build no CI. #7061 (alesapin)
  • Adiciona build com MemorySanitizer ao CI. #7066 (Alexander Kuzmenkov)
  • Substitui libsparsehash por sparsehash-c11 #6965 (Azat Khuzhin)

Correção de bug

  • Corrigida a degradação de desempenho na análise de índices com chaves complexas em tabelas grandes. Isso corrige #6924. #7075 (alexey-milovidov)
  • Corrigido erro lógico que causava falhas de segmentação ao selecionar de um tópico Kafka vazio. #6909 (Ivan)
  • Corrigido o fechamento prematuro da conexão MySQL em MySQLBlockInputStream.cpp. #6882 (Clément Rodriguez)
  • Restaurado o suporte a kernels Linux muito antigos (corrige #6841) #6853 (alexey-milovidov)
  • Corrigida possível perda de dados na consulta insert select em caso de bloco vazio no fluxo de entrada. #6834 #6862 #6911 (Nikolai Kochetov)
  • Correção da função АrrayEnumerateUniqRanked para arrays vazios nos parâmetros #6928 (proller)
  • Corrigidas consultas complexas com array joins e subconsultas globais. #6934 (Ivan)
  • Corrigido o erro Unknown identifier em ORDER BY e GROUP BY com múltiplos JOINs #7022 (Artem Zuikov)
  • Corrigido aviso do MSan ao executar função com argumento LowCardinality. #7062 (Nikolai Kochetov)

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

  • O formato de serialização dos estados da aggregate function bitmap* foi alterado para melhorar o desempenho. Os estados serializados de bitmap* de versões anteriores não podem ser lidos. #6908 (Zhichang Yu)

Versão do ClickHouse 19.14

Versão do ClickHouse 19.14.7.15, 2019-10-02

Correção de bugs

  • Esta versão também inclui todas as correções de bugs da 19.11.12.69.
  • Corrigida a compatibilidade das consultas distribuídas entre a 19.14 e versões anteriores. Isso corrige #7068. #7069 (alexey-milovidov)

Versão do ClickHouse 19.14.6.12, 2019-09-19

Correção de bug

  • Correção para a função АrrayEnumerateUniqRanked com arrays vazios nos parâmetros. #6928 (proller)
  • Corrigido o nome da subconsulta em consultas com ARRAY JOIN e GLOBAL IN subquery com alias. Se especificado, use o alias da subconsulta como nome da tabela externa. #6934 (Ivan)

melhoria de Build/Testes/Empacotamento

  • Corrigido o teste instável 00715_fetch_merged_or_mutated_part_zookeeper, reescrevendo-o como scripts shell, pois é necessário aguardar a aplicação das mutações. #6977 (Alexander Kazakov)
  • Corrigida a falha do UBSan e do MemSan na função groupUniqArray com argumento de array vazio. Ela era causada pela inserção de um PaddedPODArray vazio na célula zero da tabela hash, porque o construtor do valor da célula zero não era chamado. #6937 (Amos Bird)

Versão 19.14.3.3 do ClickHouse, 2019-09-10

Novo recurso

  • Modificador WITH FILL para ORDER BY. (continuação de #5069) #6610 (Anton Popov)
  • Modificador WITH TIES para LIMIT. (continuação de #5069) #6610 (Anton Popov)
  • Analisar o literal NULL sem aspas como NULL (se a configuração format_csv_unquoted_null_literal_as_null=1 estiver habilitada). Inicializar campos nulos com valores padrão se o tipo de dado desse campo não for Nullable (se a configuração input_format_null_as_default=1 estiver habilitada). #5990 #6055 (tavplubix)
  • Suporte a curingas em caminhos de table functions file e hdfs. Se o caminho contiver curingas, a tabela será somente de leitura. Exemplo de uso: select * from hdfs('hdfs://hdfs1:9000/some_dir/another_dir/*/file{0..9}{0..9}') e select * from file('some_dir/{some_file,another_file,yet_another}.tsv', 'TSV', 'value UInt32'). #6092 (Olga Khvostikova)
  • Nova tabela system.metric_log, que armazena os valores de system.events e system.metrics com o intervalo de tempo especificado. #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov)
  • Permite gravar os logs de texto do ClickHouse na tabela system.text_log. #6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov)
  • Exibir símbolos privados em stack traces (isso é feito por meio do parsing das tabelas de símbolos de arquivos ELF). Foram adicionadas informações sobre arquivo e número da linha aos stack traces, caso informações de depuração estejam presentes. A busca por nomes de símbolos foi acelerada com a indexação dos símbolos presentes no programa. Foram adicionadas novas funções SQL para introspecção: demangle e addressToLine. A função symbolizeAddress foi renomeada para addressToSymbol por consistência. A função addressToSymbol retornará o nome com mangling por motivos de desempenho, e será necessário aplicar demangle. Foi adicionada a configuração allow_introspection_functions, que fica desativada por padrão. #6201 (alexey-milovidov)
  • Função de tabela values (o nome não faz distinção entre maiúsculas e minúsculas). Ela permite ler a partir da lista VALUES proposta em #5984. Exemplo: SELECT * FROM VALUES('a UInt64, s String', (1, 'one'), (2, 'two'), (3, 'three')). #6217. #6209 (dimarub2000)
  • Adicionada a possibilidade de alterar as configurações de armazenamento. Sintaxe: ALTER TABLE <table> MODIFY SETTING <setting> = <value>. #6366 #6669 #6685 (alesapin)
  • Suporte à remoção de partes desanexadas. Sintaxe: ALTER TABLE <table_name> DROP DETACHED PART '<part_id>'. #6158 (tavplubix)
  • Restrições de tabela. Permite adicionar uma restrição à definição da tabela, que será verificada durante a inserção. #5273 (Gleb Novikov) #6652 (alexey-milovidov)
  • Suporte a visões materializadas em cascata. #6324 (Amos Bird)
  • Ative o query profiler por padrão para amostrar cada thread de execução de consulta uma vez por segundo. #6283 (alexey-milovidov)
  • Formato de entrada ORC. #6454 #6703 (akonyaev90)
  • Adicionadas duas novas funções: sigmoid e tanh (úteis para aplicações de aprendizado de máquina). #6254 (alexey-milovidov)
  • Funções hasToken(haystack, token), hasTokenCaseInsensitive(haystack, token) para verificar se o token fornecido está em haystack. Um token é uma substring de comprimento máximo entre dois caracteres ASCII não alfanuméricos (ou os limites de haystack). O token deve ser uma string constante. Compatível com a especialização de índice tokenbf_v1. #6596, #6662 (Vasily Nemkov)
  • Nova função neighbor(value, offset[, default_value]). Permite acessar o valor anterior/próximo em uma coluna dentro de um bloco de dados. #5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov
  • Criada a função currentUser(), que retorna o login do usuário autenticado. Adicionado o alias user() para compatibilidade com o MySQL. #6470 (Alex Krash)
  • Novas funções de agregação quantilesExactInclusive e quantilesExactExclusive, propostas em #5885. #6477 (dimarub2000)
  • Função bitmapRange(bitmap, range_begin, range_end) que retorna um novo conjunto com o intervalo especificado (sem incluir range_end). #6314 (Zhichang Yu)
  • Função geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision) que cria um array de strings de geohash de comprimento precision que cobrem a área fornecida. #6127 (Vasily Nemkov)
  • Implementado suporte para consulta INSERT em tabelas Kafka. #6012 (Ivan)
  • Adicionado suporte às colunas virtuais _partition e _timestamp ao engine Kafka. #6400 (Ivan)
  • Possibilidade de remover dados sensíveis de query_log, dos logs do servidor e da lista de processos com regras baseadas em regexp. #5710 (filimonov)

Recurso experimental

  • Formato de dados de entrada e saída Template. Permite especificar uma string de formato personalizada para entrada e saída. #4354 #6727 (tavplubix)
  • Implementação de tabelas LIVE VIEW, originalmente propostas em #2898, preparadas em #3925 e posteriormente atualizadas em #5541. Consulte #5541 para uma descrição detalhada. #5541 (vzakaznikov) #6425 (Nikolai Kochetov) #6656 (vzakaznikov) Observe que o recurso LIVE VIEW pode ser removido em versões futuras.

Correção de bug

  • Esta versão também inclui todas as correções de bugs das versões 19.13 e 19.11.
  • Corrigida a falha de segmentação quando a tabela tem índices de salto e ocorre uma mesclagem vertical. #6723 (alesapin)
  • Corrigido o TTL por coluna com valores padrão de coluna não triviais. Anteriormente, no caso de um merge de TTL forçado com a consulta OPTIMIZE ... FINAL, os valores expirados eram substituídos pelos valores padrão do tipo em vez dos valores padrão da coluna definidos pelo usuário. #6796 (Anton Popov)
  • Corrige o problema de duplicação de mensagens do Kafka durante a reinicialização normal do servidor. #6597 (Ivan)
  • Corrigido loop infinito ao ler mensagens do Kafka. Não pausar/retomar o consumidor na assinatura em hipótese alguma — caso contrário, ele pode permanecer pausado indefinidamente em alguns cenários. #6354 (Ivan)
  • Corrigida a exceção Key expression contains comparison between inconvertible types na função bitmapContains. #6136 #6146 #6156 (dimarub2000)
  • Corrigida falha de segmentação quando optimize_skip_unused_shards está habilitado e a chave de sharding está ausente. #6384 (Anton Popov)
  • Corrigido código incorreto em mutações que podia levar à corrupção de memória. Corrigida falha de segmentação ao ler o endereço 0x14c0, que podia acontecer devido a DROP TABLE e SELECT concorrentes em system.parts ou system.parts_columns. Corrigida condição de corrida na preparação de consultas de mutação. Corrigido deadlock causado por OPTIMIZE em tabelas Replicated e por operações de modificação concorrentes, como ALTERs. #6514 (alexey-milovidov)
  • Removido o logging excessivamente verboso na interface MySQL #6389 (alexey-milovidov)
  • Restaura a capacidade de analisar configurações booleanas como ‘true’ e ‘false’ no arquivo de configuração. #6278 (alesapin)
  • Corrige falha nas funções quantile e median com Nullable(Decimal128). #6378 (Artem Zuikov)
  • Corrigido um possível resultado incompleto retornado por uma consulta SELECT com condição WHERE na chave primária que continha conversão para o tipo Float. Isso era causado por uma verificação incorreta de monotonicidade na função toFloat. #6248 #6374 (dimarub2000)
  • Verificada a configuração max_expanded_ast_elements para mutações. Limpadas as mutações após TRUNCATE TABLE. #6205 (Winter Zhang)
  • Corrige os resultados de JOIN para colunas-chave quando usados com join_use_nulls. Anexa NULLs em vez dos valores padrão das colunas. #6249 (Artem Zuikov)
  • Correção de índices de salto com mesclagem vertical e ALTER. Correção da exceção Bad size of marks file. #6594 #6713 (alesapin)
  • Corrige falha rara em ALTER MODIFY COLUMN e na mesclagem vertical quando uma das partes mescladas/alteradas está vazia (0 linhas) #6746 #6780 (alesapin)
  • Corrigido bug na conversão de tipos LowCardinality em AggregateFunctionFactory. Isso corrige #6257. #6281 (Nikolai Kochetov)
  • Corrige comportamento incorreto e possíveis falhas de segmentação nas funções agregadas topK e topKWeighted. #6404 (Anton Popov)
  • Corrigido código inseguro na função getIdentifier. #6401 #6409 (alexey-milovidov)
  • Corrigido um bug no protocolo wire do MySQL (usado ao se conectar ao ClickHouse a partir de um cliente MySQL). Causado por um estouro de buffer no heap em PacketPayloadWriteBuffer. #6212 (Yuriy Baranov)
  • Corrigido o vazamento de memória na função bitmapSubsetInRange. #6819 (Zhichang Yu)
  • Corrigido um bug raro em que uma mutação era executada após uma alteração de granularidade. #6816 (alesapin)
  • Permite mensagem protobuf com todos os campos por padrão. #6132 (Vitaly Baranov)
  • Corrigido um bug na função nullIf ao enviar NULL como segundo argumento. #6446 (Guillaume Tassery)
  • Corrige um bug raro de alocação/desalocação incorreta de memória em dicionários de cache com chave complexa e campos de string, o que leva ao consumo infinito de memória (parece um vazamento de memória). O bug se reproduz quando o tamanho da string é uma potência de dois a partir de oito (8, 16, 32 etc.). #6447 (alesapin)
  • Corrigida a codificação Gorilla para sequências pequenas, que causava a exceção Cannot write after end of buffer. #6398 #6444 (Vasily Nemkov)
  • Permite usar tipos não Nullable em junções com join_use_nulls habilitado. #6705 (Artem Zuikov)
  • Desabilita as substituições de Poco::AbstractConfiguration em consultas no clickhouse-client. #6706 (alexey-milovidov)
  • Evita deadlock em REPLACE PARTITION. #6677 (alexey-milovidov)
  • O uso de arrayReduce com argumentos constantes pode levar a falha de segmentação. #6242 #6326 (alexey-milovidov)
  • Corrigidas partes inconsistentes que podem aparecer se a réplica tiver sido restaurada após DROP PARTITION. #6522 #6523 (tavplubix)
  • Corrigido um travamento na função JSONExtractRaw. #6195 #6198 (alexey-milovidov)
  • Corrigido um bug na serialização incorreta de índices de skip e na agregação com granularidade adaptativa. #6594. #6748 (alesapin)
  • Corrigidos os modificadores WITH ROLLUP e WITH CUBE de GROUP BY com agregação em dois níveis. #6225 (Anton Popov)
  • Corrigido bug na gravação das marcas de índices secundários com granularidade adaptativa. #6126 (alesapin)
  • Corrigida a ordem de inicialização durante a partida do servidor. Como StorageMergeTree::background_task_handle é inicializado em startup(), MergeTreeBlockOutputStream::write() pode tentar usá-lo antes disso. Basta verificar se ele já foi inicializado. #6080 (Ivan)
  • Limpeza do buffer de dados da operação de leitura anterior que terminou com erro. #6026 (Nikolay)
  • Corrigido um bug na ativação da granularidade adaptativa ao criar uma nova réplica de uma tabela Replicated*MergeTree. #6394 #6452 (alesapin)
  • Corrigida uma possível falha durante a inicialização do servidor caso ocorresse uma exceção em libunwind ao acessar a estrutura ThreadStatus não inicializada durante o tratamento de uma exceção. #6456 (Nikita Mikhaylov)
  • Corrigida falha na função yandexConsistentHash. Detectada por teste de fuzzing. #6304 #6305 (alexey-milovidov)
  • Corrigida a possibilidade de consultas ficarem bloqueadas quando o servidor está sobrecarregado e o pool global de threads fica quase cheio. A chance de isso acontecer é maior em clusters com um grande número de shards (centenas), porque consultas distribuídas alocam uma thread por conexão com cada shard. Por exemplo, esse problema pode ocorrer se um cluster com 330 shards estiver processando 30 consultas distribuídas simultâneas. Esse problema afeta todas as versões a partir da 19.2. #6301 (alexey-milovidov)
  • Foi corrigida a lógica da função arrayEnumerateUniqRanked. #6423 (alexey-milovidov)
  • Corrigida a falha de segmentação ao decodificar a tabela de símbolos. #6603 (Amos Bird)
  • Corrigida uma exceção irrelevante na conversão com CAST de LowCardinality(Nullable) para uma coluna não Nullable, caso ela não contenha valores NULL (por exemplo, em uma consulta como SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String). #6094 #6119 (Nikolai Kochetov)
  • Removidas as aspas extras na descrição da tabela system.settings. #6696 #6699 (alexey-milovidov)
  • Evita um possível deadlock ao executar TRUNCATE em tabela Replicated. #6695 (alexey-milovidov)
  • Corrigida a leitura seguindo a ordem da chave de ordenação. #6189 (Anton Popov)
  • Corrigida a consulta ALTER TABLE ... UPDATE para tabelas com enable_mixed_granularity_parts=1. #6543 (alesapin)
  • Corrige o bug introduzido por #4405 (desde a versão 19.4.0). Ocorre em consultas a tabelas distribuídas sobre tabelas MergeTree quando nenhuma coluna é consultada (SELECT 1). #6236 (alesapin)
  • Corrigido o overflow na divisão inteira de um tipo com sinal para um tipo sem sinal. O comportamento era exatamente o mesmo da linguagem C ou C++ (regras de promoção de inteiros), o que pode ser surpreendente. Observe que o overflow ainda pode ocorrer ao dividir um número grande com sinal por um número grande sem sinal, ou vice-versa (mas esse caso é menos comum). O problema existia em todas as versões do servidor. #6214 #6233 (alexey-milovidov)
  • Limitado o tempo máximo de espera para throttling quando max_execution_speed ou max_execution_speed_bytes está definido. Corrigidos falsos erros como Estimated query execution time (inf seconds) is too long. #5547 #6232 (alexey-milovidov)
  • Corrigidos problemas no uso de colunas MATERIALIZED e aliases em MaterializedView. #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov)
  • Corrigido o comportamento do FormatFactory para fluxos de entrada não implementados como processadores. #6495 (Nikolai Kochetov)
  • Corrigido um erro de digitação. #6631 (Alex Ryndin)
  • Erro de digitação na mensagem de erro ( is -> are ). #6839 (Denis Zhuravlev)
  • Corrigido erro ao analisar a lista de colunas a partir de uma string, caso o tipo contivesse uma vírgula (esse problema afetava os armazenamentos File, URL, HDFS) #6217. #6209 (dimarub2000)

Correção de segurança

  • Esta versão também contém todas as correções de bugs de segurança das versões 19.13 e 19.11.
  • Foi corrigida a possibilidade de uma consulta maliciosamente construída derrubar o servidor devido a estouro de pilha no analisador SQL. Também foi corrigida a possibilidade de estouro de pilha em tabelas Merge e Distributed, visões materializadas e condições de segurança em nível de linha que envolvem subconsultas. #6433 (alexey-milovidov)

Melhoria

  • Implementação correta da lógica ternária em AND/OR. #6048 (Alexander Kazakov)
  • Agora, valores e linhas com TTL expirado serão removidos após a consulta OPTIMIZE ... FINAL, em partes antigas sem informações de TTL ou com informações de TTL desatualizadas, por exemplo, após a consulta ALTER ... MODIFY TTL. Foram adicionadas as consultas SYSTEM STOP/START TTL MERGES para impedir/permitir a atribuição de merges com TTL e filtrar valores expirados em todos os merges. #6274 (Anton Popov)
  • Possibilidade de alterar o local do arquivo de histórico do ClickHouse para o cliente por meio da variável de ambiente CLICKHOUSE_HISTORY_FILE. #6840 (filimonov)
  • Removida a flag dry_run de InterpreterSelectQuery. … #6375 (Nikolai Kochetov)
  • Suporte a ASOF JOIN com a cláusula ON. #6211 (Artem Zuikov)
  • Melhor suporte a skip indexes para mutações e replicação. Suporte à consulta MATERIALIZE/CLEAR INDEX ... IN PARTITION. UPDATE x = x recalcula todos os índices que usam a coluna x. #5053 (Nikita Vasilev)
  • Permite ATTACH de visualizações em tempo real (por exemplo, na inicialização do servidor) independentemente da configuração allow_experimental_live_view. #6754 (alexey-milovidov)
  • Para stack traces coletados pelo query profiler, não inclua os stack frames gerados pelo próprio query profiler. #6250 (alexey-milovidov)
  • Agora as funções de tabela values, file, url, hdfs oferecem suporte a colunas ALIAS. #6255 (alexey-milovidov)
  • Gerar uma exceção se o arquivo config.d não tiver o mesmo elemento raiz do arquivo de configuração. #6123 (dimarub2000)
  • Exibe informações extras na mensagem de exceção para no space left on device. #6182, #6252 #6352 (tavplubix)
  • Ao determinar os shards de uma tabela Distributed que devem ser considerados por uma consulta de leitura (para optimize_skip_unused_shards = 1), o ClickHouse agora verifica as condições das cláusulas prewhere e where da instrução SELECT. #6521 (Alexander Kazakov)
  • Ativado o SIMDJSON para máquinas sem AVX2, mas com SSE 4.2 e o conjunto de instruções PCLMUL. #6285 #6320 (alexey-milovidov)
  • ClickHouse pode funcionar em sistemas de arquivos sem suporte a O_DIRECT (como ZFS e BtrFS) sem necessidade de ajustes adicionais. #4449 #6730 (alexey-milovidov)
  • Adicionado suporte a pushdown de predicados para subconsulta FINAL. #6120 (TCeason) #6162 (alexey-milovidov)
  • Melhoria na extração de chaves de JOIN ON #6131 (Artem Zuikov)
  • Atualizado o SIMDJSON. #6285. #6306 (alexey-milovidov)
  • Otimiza a escolha da menor coluna na consulta SELECT count(). #6344 (Amos Bird)
  • Adicionado o parâmetro strict em windowFunnel(). Quando strict está definido, windowFunnel() aplica condições apenas a valores únicos. #6548 (achimbab)
  • Interface do mysqlxx::Pool mais segura. #6150 (avasiliev)
  • A largura das linhas de opções ao executar com a opção --help agora corresponde ao tamanho do terminal. #6590 (dimarub2000)
  • Desativa a otimização de “leitura em ordem” para agregação sem chaves. #6599 (Anton Popov)
  • O código de status HTTP para os códigos de erro INCORRECT_DATA e TYPE_MISMATCH foi alterado do padrão 500 Internal Server Error para 400 Bad Request. #6271 (Alexander Rodin)
  • Mova o objeto Join de ExpressionAction para AnalyzedJoin. ExpressionAnalyzer e ExpressionAction não têm mais conhecimento da classe Join. Sua lógica fica oculta por trás da interface AnalyzedJoin. #6801 (Artem Zuikov)
  • Corrigido um possível deadlock em consultas distribuídas quando um dos shards é localhost, mas a consulta é enviada por uma conexão de rede. #6759 (alexey-milovidov)
  • Alterada a semântica do RENAME de múltiplas tabelas para evitar possíveis deadlocks. #6757. #6756 (alexey-milovidov)
  • Servidor de compatibilidade com MySQL reescrito para evitar carregar o payload completo do pacote na memória. Reduzido o consumo de memória de cada conexão para aproximadamente 2 * DBMS_DEFAULT_BUFFER_SIZE (buffers de leitura/gravação). #5811 (Yuriy Baranov)
  • Extrair do parser a lógica de interpretação de alias da AST, já que ele não precisa saber nada sobre a semântica da consulta. #6108 (Artem Zuikov)
  • Parsing um pouco mais seguro de NamesAndTypesList. #6408. #6410 (alexey-milovidov)
  • clickhouse-copier: Permite usar where_condition da configuração com o alias partition_key na consulta para verificar a existência da partição (antes, isso era usado apenas em consultas de leitura de dados). #6577 (proller)
  • Adicionado um argumento de mensagem opcional em throwIf. (#5772) #6329 (Vdimir)
  • A exceção do servidor recebida durante o envio de dados de inserção agora também é processada pelo cliente. #5891 #6711 (dimarub2000)
  • Adicionada a métrica DistributedFilesToInsert, que mostra o número total de arquivos no sistema de arquivos selecionados para serem enviados a servidores remotos por tabelas Distributed. O número é somado considerando todos os shards. #6600 (alexey-milovidov)
  • Moveu a maior parte da lógica de preparação de junções de ExpressionAction/ExpressionAnalyzer para AnalyzedJoin. #6785 (Artem Zuikov)
  • Corrige o aviso ‘lock-order-inversion’ no TSan. #6740 (Vasily Nemkov)
  • Mensagens informativas mais claras sobre a ausência de capabilities do Linux. Registro de erros fatais com o nível “fatal”, o que facilitará sua localização em system.text_log. #6441 (alexey-milovidov)
  • Ao habilitar o armazenamento de dados temporários em disco para restringir o uso de memória durante GROUP BY e ORDER BY, o espaço livre em disco não era verificado. A correção adiciona uma nova configuração, min_free_disk_space; quando o espaço livre em disco for menor que o limite, a consulta será interrompida e lançará ErrorCodes::NOT_ENOUGH_SPACE. #6678 (Weiqing Xu) #6691 (alexey-milovidov)
  • Removido o rwlock recursivo por thread. Isso não faz sentido, porque as threads são reutilizadas entre consultas. Uma consulta SELECT pode adquirir um bloqueio em uma thread, manter um bloqueio de outra thread e sair pela primeira thread. Ao mesmo tempo, a primeira thread pode ser reutilizada por uma consulta DROP. Isso levará a mensagens falsas de “Tentativa de adquirir bloqueio exclusivo de forma recursiva”. #6771 (alexey-milovidov)
  • Separado ExpressionAnalyzer.appendJoin(). Preparado espaço em ExpressionAnalyzer para MergeJoin. #6524 (Artem Zuikov)
  • Adicionado o plugin de autenticação mysql_native_password ao servidor de compatibilidade com MySQL. #6194 (Yuriy Baranov)
  • Menos chamadas a clock_gettime; corrigida a compatibilidade de ABI entre debug/release em Allocator (problema insignificante). #6197 (alexey-milovidov)
  • Mova collectUsedColumns de ExpressionAnalyzer para SyntaxAnalyzer. SyntaxAnalyzer agora gera required_source_columns por conta própria. #6416 (Artem Zuikov)
  • Adicionada a configuração joined_subquery_requires_alias para exigir aliases para subconsultas e funções de tabela no FROM quando houver mais de uma tabela presente (ou seja, consultas com JOINs). #6733 (Artem Zuikov)
  • Classe GetAggregatesVisitor extraída de ExpressionAnalyzer. #6458 (Artem Zuikov)
  • system.query_log: alterado o tipo de dado da coluna type para Enum. #6265 (Nikita Mikhaylov)
  • Vinculação estática do plugin de autenticação sha256_password. #6512 (Yuriy Baranov)
  • Evite dependências extras para que a configuração compile funcione. Em versões anteriores, o usuário podia receber erros como cannot open crti.o, unable to find library -lc etc. #6309 (alexey-milovidov)
  • Validação adicional da entrada que pode vir de uma réplica maliciosa. #6303 (alexey-milovidov)
  • Agora, o arquivo clickhouse-obfuscator está disponível no pacote clickhouse-client. Nas versões anteriores, ele estava disponível como clickhouse obfuscator (com espaço). #5816 #6609 (dimarub2000)
  • Corrigido um deadlock que ocorria quando havia pelo menos duas consultas que liam pelo menos duas tabelas em ordem diferente e outra consulta que executava uma operação DDL em uma dessas tabelas. Corrigido outro deadlock muito raro. #6764 (alexey-milovidov)
  • Adicionada a coluna os_thread_ids a system.processes e system.query_log para facilitar a depuração. #6763 (alexey-milovidov)
  • Uma solução alternativa para bugs na extensão mysqlnd do PHP que ocorrem quando sha256_password é usado como plugin de autenticação padrão (descrito em #6031). #6113 (Yuriy Baranov)
  • Removido trecho desnecessário com colunas de nulabilidade alterada. #6693 (Artem Zuikov)
  • Definido o valor padrão de queue_max_wait_ms como zero, porque o valor atual (cinco segundos) não faz sentido. Em raras circunstâncias, essa configuração tem alguma utilidade. Adicionadas as configurações replace_running_query_max_wait_ms, kafka_max_wait_ms e connection_pool_max_wait_ms para evitar ambiguidades. #6692 (alexey-milovidov)
  • Separar SelectQueryExpressionAnalyzer de ExpressionAnalyzer. Manter este último para consultas que não sejam SELECT. #6499 (Artem Zuikov)
  • Removidos os formatos de entrada e saída duplicados. #6239 (Nikolai Kochetov)
  • Permitir ao usuário sobrescrever as configurações poll_interval e idle_connection_timeout na conexão. #6230 (alexey-milovidov)
  • MergeTree agora tem uma opção adicional, ttl_only_drop_parts (desabilitada por padrão), para evitar a poda parcial de partes, de modo que elas sejam removidas por completo quando todas as linhas de uma parte tiverem expirado. #6191 (Sergi Vladykin)
  • Verificações de tipo para funções de índice set. Lança uma exceção se a função receber um tipo incorreto. Isso corrige o teste de fuzzing com o UBSan. #6511 (Nikita Vasilev)

Melhoria de desempenho

  • Otimiza consultas com a cláusula ORDER BY expressions, em que expressions têm prefixo coincidente com a chave de ordenação em tabelas MergeTree. Essa otimização é controlada pela configuração optimize_read_in_order. #6054 #6629 (Anton Popov)
  • Permite o uso de múltiplas threads durante o carregamento e a remoção de partes. #6372 #6074 #6438 (alexey-milovidov)
  • Implementada a variante em lote da atualização de estados de funções de agregação. Isso pode trazer ganhos de desempenho. #6435 (alexey-milovidov)
  • Uso da biblioteca FastOps para as funções exp, log, sigmoid, tanh. A FastOps é uma biblioteca rápida de matemática vetorial de Michael Parakhin (CTO da Yandex). O desempenho das funções exp e log foi melhorado em mais de 6 vezes. As funções exp e log com argumento Float32 retornarão Float32 (em versões anteriores, sempre retornavam Float64). Agora exp(nan) pode retornar inf. O resultado das funções exp e log pode não ser o número representável pela máquina mais próximo do valor correto. #6254 (alexey-milovidov) Uso da variante de Danila Kutenin para fazer a FastOps funcionar #6317 (alexey-milovidov)
  • Desabilita a otimização de chave consecutiva para UInt8/16. #6298 #6701 (akuzm)
  • Melhora o desempenho da biblioteca simdjson ao eliminar a alocação dinâmica em ParsedJson::Iterator. #6479 (Vitaly Baranov)
  • Pré-carrega páginas ao alocar memória com mmap(). #6667 (akuzm)
  • Corrige um bug de desempenho na comparação de Decimal. #6380 (Artem Zuikov)

melhoria de Build/Testes/Empacotamento

  • Removido o Compiler (instanciação de Template em tempo de execução) porque já superamos seu desempenho. #6646 (alexey-milovidov)
  • Adicionado um teste de desempenho para mostrar de forma mais isolada a degradação de desempenho no gcc-9. #6302 (alexey-milovidov)
  • Adicionada a table function numbers_mt, que é a versão multithread de numbers. Foram atualizados os testes de desempenho com funções hash. #6554 (Nikolai Kochetov)
  • Modo de comparação no clickhouse-benchmark #6220 #6343 (dimarub2000)
  • Melhorias na impressão de stack traces. Também foi adicionado SIGPROF como sinal de depuração para imprimir o stack trace de uma thread em execução. #6529 (alexey-milovidov)
  • Cada função em um arquivo separado, parte 10. #6321 (alexey-milovidov)
  • Removida a declaração duplicada da constante TABLE_IS_READ_ONLY. #6566 (filimonov)
  • Alterações de formatação para a PR StringHashMap #5417. #6700 (akuzm)
  • Melhoria na subconsulta para criação de join no ExpressionAnalyzer. #6824 (Artem Zuikov)
  • Removida uma condição redundante (identificada pelo PVS Studio). #6775 (akuzm)
  • Separação da interface de tabela hash do ReverseIndex. #6672 (akuzm)
  • Refatoração das configurações. #6689 (alesapin)
  • Adicionados comentários para funções de índice set. #6319 (Nikita Vasilev)
  • Aumenta a pontuação de OOM na versão de depuração no Linux. #6152 (akuzm)
  • O HDFS HA agora funciona em compilação de depuração. #6650 (Weiqing Xu)
  • Adicionado um teste para transform_query_for_external_database. #6388 (alexey-milovidov)
  • Adicionado teste para múltiplas visões materializadas em tabela Kafka. #6509 (Ivan)
  • Melhorar o esquema de build. #6500 (Ivan)
  • Corrigida a integração test_external_dictionaries caso fosse executada por um usuário não root. #6507 (Nikolai Kochetov)
  • O bug pode ser reproduzido quando o tamanho total dos pacotes gravados excede DBMS_DEFAULT_BUFFER_SIZE. #6204 (Yuriy Baranov)
  • Adicionado um teste para a condição de corrida em RENAME de tabela #6752 (alexey-milovidov)
  • Evita condição de corrida nas configurações em KILL QUERY. #6753 (alexey-milovidov)
  • Adicionar teste de integração para lidar com erros em um Dicionário de cache. #6755 (Vitaly Baranov)
  • Desabilita o parsing de arquivos-objeto ELF no Mac OS, porque isso não faz sentido. #6578 (alexey-milovidov)
  • Tentativa de melhorar o gerador de changelog. #6327 (alexey-milovidov)
  • Adicionada a opção -Wshadow ao GCC. #6325 (kreuzerkrieg)
  • Removido o código obsoleto de suporte ao mimalloc. #6715 (alexey-milovidov)
  • zlib-ng determina as capacidades do x86 e salva essas informações em variáveis globais. Isso é feito na chamada defalteInit, que pode ser executada simultaneamente por diferentes threads. Para evitar gravações concorrentes por várias threads, faça isso na inicialização da biblioteca. #6141 (akuzm)
  • Teste de regressão para um bug no join que foi corrigido em #5192. #6147 (Bakhtiyor Ruziev)
  • Relatório do MSan corrigido. #6144 (alexey-milovidov)
  • Corrigido teste de TTL instável. #6782 (Anton Popov)
  • Corrigido um falso positivo de corrida de dados no campo MergeTreeDataPart::is_frozen. #6583 (alexey-milovidov)
  • Timeouts corrigidos em teste de fuzz. Na versão anterior, foi possível detectar um falso travamento na consulta SELECT * FROM numbers_mt(gccMurmurHash('')). #6582 (alexey-milovidov)
  • Adicionadas verificações de depuração no static_cast de colunas. #6581 (alexey-milovidov)
  • Suporte ao Oracle Linux em pacotes RPM oficiais. #6356 #6585 (alexey-milovidov)
  • Alterado o tipo dos testes de desempenho de JSON de once para loop. #6536 (Nikolai Kochetov)
  • odbc-bridge.cpp define main(), portanto não deve ser incluído em clickhouse-lib. #6538 (Orivej Desh)
  • Teste de travamento em FULL|RIGHT JOIN com valores NULL nas chaves da tabela à direita. #6362 (Artem Zuikov)
  • Adicionado um teste para o limite de expansão de aliases, só por garantia. #6442 (alexey-milovidov)
  • Substituição de boost::filesystem por std::filesystem, quando apropriado. #6253 #6385 (alexey-milovidov)
  • Pacotes RPM adicionados ao site. #6251 (alexey-milovidov)
  • Adicionado um teste para a exceção Unknown identifier, corrigida na seção IN. #6708 (Artem Zuikov)
  • Simplificar shared_ptr_helper, pois as pessoas têm dificuldade em entendê-lo. #6675 (alexey-milovidov)
  • Adicionados testes de desempenho para os codecs Gorilla e DoubleDelta fixos. #6179 (Vasily Nemkov)
  • O teste de integração test_dictionaries foi dividido em 4 testes distintos. #6776 (Vitaly Baranov)
  • Corrigido aviso do PVS-Studio em PipelineExecutor. #6777 (Nikolai Kochetov)
  • Permite o uso da fonte de dicionário library com ASan. #6482 (alexey-milovidov)
  • Adicionada a opção de gerar o changelog com base em uma lista de PRs. #6350 (alexey-milovidov)
  • Bloqueio do armazenamento TinyLog durante a leitura. #6226 (akuzm)
  • Verificação de links simbólicos quebrados na CI. #6634 (alexey-milovidov)
  • Aumento do timeout do teste “stack overflow”, pois ele pode demorar bastante em builds de depuração. #6637 (alexey-milovidov)
  • Adicionada uma verificação de espaços em branco duplicados. #6643 (alexey-milovidov)
  • Corrige o rastreamento de memória de new/delete ao compilar com sanitizers. O rastreamento é impreciso. Isso apenas evita exceções de limite de memória nos testes. #6450 (Artem Zuikov)
  • Reativada a verificação de símbolos indefinidos durante a linkedição. #6453 (Ivan)
  • Evite recompilar hyperscan todos os dias. #6307 (alexey-milovidov)
  • Corrigido um alerta do UBSan no ProtobufWriter. #6163 (alexey-milovidov)
  • Não permitir o uso do profiler de consulta com sanitizers, pois não é compatível. #6769 (alexey-milovidov)
  • Adicionado teste para recarregar um Dicionário após falha causada pelo temporizador. #6114 (Vitaly Baranov)
  • Corrigida a inconsistência no tipo de argumento de PipelineExecutor::prepareProcessor. #6494 (Nikolai Kochetov)
  • Adicionado um teste para URIs malformadas. #6493 (alexey-milovidov)
  • Foram adicionadas mais verificações à função CAST. Isso deve fornecer mais informações sobre a falha de segmentação no teste de fuzzing. #6346 (Nikolai Kochetov)
  • Adicionado suporte a gcc-9 no contêiner docker/builder, que compila a imagem localmente. #6333 (Gleb Novikov)
  • Teste de chave primária com LowCardinality(String). #5044 #6219 (dimarub2000)
  • Corrigidos os testes afetados pela lentidão na impressão de stack traces. #6315 (alexey-milovidov)
  • Adicionado um caso de teste para o travamento em groupUniqArray, corrigido em #6029. #4402 #6129 (akuzm)
  • Corrigidos os testes de mutações de índices. #6645 (Nikita Vasilev)
  • Em testes de desempenho, não ler o log de consultas para consultas que não foram executadas. #6427 (akuzm)
  • Agora, é possível criar uma visão materializada com quaisquer tipos de baixa cardinalidade, independentemente da configuração para tipos suspeitos de baixa cardinalidade. #6428 (Olga Khvostikova)
  • Atualizados os testes para a configuração send_logs_level. #6207 (Nikolai Kochetov)
  • Correção da compilação com gcc-8.2. #6196 (Max Akhmedov)
  • Corrigida a compilação com a libc++ interna. #6724 (Ivan)
  • Corrigida a compilação compartilhada com a biblioteca rdkafka #6101 (Ivan)
  • Correções para a build do Mac OS (incompleta). #6390 (alexey-milovidov) #6429 (alex-zaitsev)
  • Corrigido o build “splitted”. #6618 (alexey-milovidov)
  • Outras correções de compilação: #6186 (Amos Bird) #6486 #6348 (vxider) #6744 (Ivan) #6016 #6421 #6491 (proller)

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

  • Removidos a função de tabela catBoostPool e o armazenamento CatBoostPool, raramente usados. Se você usou essa função de tabela, envie um e-mail para feedback@clickhouse.com. Observe que a integração com o CatBoost permanece e continuará sendo suportada. #6279 (alexey-milovidov)
  • ANY RIGHT JOIN e ANY FULL JOIN desabilitados por padrão. Defina a configuração any_join_distinct_right_table_keys para habilitá-los. #5126 #6351 (Artem Zuikov)

Versão do ClickHouse 19.13

Versão do ClickHouse 19.13.6.51, 2019-10-02

Correção de bug

  • Esta versão também inclui todas as correções de bugs da versão 19.11.12.69.

Versão 19.13.5.44 do ClickHouse, 2019-09-20

Correção de bug

  • Esta versão também contém todas as correções de bugs da 19.14.6.12.
  • Corrigido um possível estado inconsistente da tabela ao executar a consulta DROP em uma tabela replicada quando o ZooKeeper não está acessível. #6045 #6413 (Nikita Mikhaylov)
  • Correção para uma condição de corrida em StorageMerge #6717 (alexey-milovidov)
  • Corrigido um bug introduzido no query profiler que levava a chamadas recv infinitas no socket. #6386 (alesapin)
  • Corrigido o uso excessivo de CPU ao executar a função JSONExtractRaw sobre um valor booleano. #6208 (Vitaly Baranov)
  • Corrigida a regressão ao enviar dados para a visão materializada. #6415 (Ivan)
  • A função de tabela url tinha uma vulnerabilidade que permitia a um invasor injetar cabeçalhos HTTP arbitrários na requisição. Esse problema foi encontrado por Nikita Tikhomirov. #6466 (alexey-milovidov)
  • Corrigida uma verificação inútil de AST no índice Set. #6510 #6651 (Nikita Vasilev)
  • Corrigido o parsing de valores AggregateFunction embutidos na consulta. #6575 #6773 (Zhichang Yu)
  • Corrigido o comportamento incorreto da família de funções trim. #6647 (alexey-milovidov)

Versão do ClickHouse 19.13.4.32, 2019-09-10

Correção de bug

  • Esta versão também contém todas as correções de bugs de segurança das versões 19.11.9.52 e 19.11.10.54.
  • Corrigida uma condição de corrida de dados na tabela system.parts e na consulta ALTER. #6245 #6513 (alexey-milovidov)
  • Corrigida incompatibilidade de cabeçalho em fluxos ao ler de uma tabela distribuída vazia com sample e prewhere. #6167 (Lixiang Qian) #6823 (Nikolai Kochetov)
  • Corrigida falha ao usar a cláusula IN com uma subconsulta contendo uma tupla. #6125 #6550 (tavplubix)
  • Corrigido o caso de nomes de coluna iguais na seção GLOBAL JOIN ON. #6181 (Artem Zuikov)
  • Corrigida falha ao converter para Decimal tipos que não oferecem suporte a isso. Agora, uma exceção é gerada em vez disso. #6297 (Artem Zuikov)
  • Corrigida falha na função extractAll(). #6644 (Artem Zuikov)
  • A transformação de consultas para as funções de tabela MySQL, ODBC e JDBC agora funciona corretamente para consultas SELECT ... WHERE com várias expressões AND. #6381 #6676 (dimarub2000)
  • Adicionadas verificações de declaração prévia para a integração com MySQL 8. #6569 (Rafael David Tinoco)

Correção de segurança

  • Corrigidas duas vulnerabilidades em codecs na fase de descompressão (um usuário mal-intencionado pode forjar dados comprimidos que causarão estouro de buffer durante a descompressão). #6670 (Artem Zuikov)

Versão do ClickHouse 19.13.3.26, 2019-08-22

Correção de bug

  • Corrigida a consulta ALTER TABLE ... UPDATE para tabelas com enable_mixed_granularity_parts=1. #6543 (alesapin)
  • Corrigido NPE ao usar a cláusula IN com uma subconsulta contendo uma tupla. #6125 #6550 (tavplubix)
  • Corrigido um problema em que, se uma réplica desatualizada voltar a ficar ativa, ela ainda poderá ter partes de dados removidas por DROP PARTITION. #6522 #6523 (tavplubix)
  • Corrigido um problema com a análise de CSV #6426 #6559 (tavplubix)
  • Corrigida uma condição de corrida na tabela system.parts e na consulta ALTER. Isso corrige #6245. #6513 (alexey-milovidov)
  • Corrigido código incorreto em mutações que pode levar à corrupção de memória. Corrigida uma falha de segmentação ao ler o endereço 0x14c0, que pode acontecer devido à execução concorrente de DROP TABLE e SELECT em system.parts ou system.parts_columns. Corrigida uma condição de corrida na preparação de consultas de mutação. Corrigido um deadlock causado por OPTIMIZE em tabelas Replicated e por operações de modificação concorrentes, como ALTERs. #6514 (alexey-milovidov)
  • Corrigida uma possível perda de dados após a consulta ALTER DELETE em tabela com índice de skipping. #6224 #6282 (Nikita Vasilev)

Correção de segurança

  • Se um invasor tiver acesso de gravação ao ZooKeeper e conseguir executar um servidor personalizado acessível na rede em que o ClickHouse está em execução, poderá criar um servidor malicioso sob medida que atuará como uma réplica do ClickHouse e registrá-lo no ZooKeeper. Quando outra réplica buscar uma data part da réplica maliciosa, ela poderá forçar o clickhouse-server a gravar em um caminho arbitrário no filesystem. Encontrado por Eldar Zaitov, da equipe de segurança da informação da Yandex. #6247 (alexey-milovidov)

Versão do ClickHouse 19.13.2.19, 2019-08-14

Novo recurso

  • Profiler por amostragem no nível da consulta. Exemplo. #4247 (laplab) #6124 (alexey-milovidov) #6250 #6283 #6386
  • Agora é possível especificar uma lista de colunas com a expressão COLUMNS('regexp'), que funciona como uma versão mais sofisticada do asterisco *. #5951 (mfridental), (alexey-milovidov)
  • CREATE TABLE AS table_function() agora é possível #6057 (dimarub2000)
  • O otimizador Adam para descida de gradiente estocástica é usado por padrão nas funções agregadas stochasticLinearRegression() e stochasticLogisticRegression(), porque oferece boa qualidade praticamente sem necessidade de ajuste. #6000 (Quid37)
  • Adicionadas funções para trabalhar com número de semana personalizado #5212 (Andy Yang)
  • As consultas RENAME agora funcionam com todos os mecanismos de armazenamento. #5953 (Ivan)
  • Agora o cliente recebe logs do servidor em qualquer nível desejado ao definir send_logs_level, independentemente do nível de log especificado nas configurações do servidor. #5964 (Nikita Mikhaylov)

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

  • A configuração input_format_defaults_for_omitted_fields está habilitada por padrão. Inserts em tabelas Distributed exigem que essa configuração seja a mesma em todo o cluster (é preciso defini-la antes de fazer a atualização rolling). Ela habilita o cálculo de expressões padrão complexas para campos omitidos nos formatos JSONEachRow e CSV*. Esse é o comportamento esperado, mas pode causar uma diferença de desempenho desprezível. #6043 (Artem Zuikov), #5625 (akuzm)

Recursos experimentais

  • Novo pipeline de processamento de consultas. Use a opção experimental_use_processors=1 para habilitá-lo. Use por sua conta e risco. #4914 (Nikolai Kochetov)

Correção de bug

  • A integração com o Kafka foi corrigida nesta versão.
  • Corrigida a codificação DoubleDelta de Int64 para valores altos de DoubleDelta; aprimorada a codificação DoubleDelta para dados aleatórios em Int32. #5998 (Vasily Nemkov)
  • Corrigida a superestimação de max_rows_to_read quando a configuração merge_tree_uniform_read_distribution é definida como 0. #6019 (alexey-milovidov)

Aprimoramento

  • Gera uma exceção se o arquivo config.d não tiver o mesmo elemento raiz do arquivo de configuração #6123 (dimarub2000)

Melhoria de desempenho

  • Otimizado o count(). Agora ele usa a menor coluna (se possível). #6028 (Amos Bird)

Melhoria de compilação/testes/empacotamento

  • Relatar o uso de memória em testes de desempenho. #5899 (akuzm)
  • Corrigir a compilação com libcxx externo #6010 (Ivan)
  • Corrigir a compilação compartilhada com a biblioteca rdkafka #6101 (Ivan)

Versão 19.11 do ClickHouse

Versão do ClickHouse 19.11.13.74, 2019-11-01

Correção de bug

  • Corrigido um travamento raro em ALTER MODIFY COLUMN e na mesclagem vertical quando uma das partes mescladas/alteradas está vazia (0 linhas). #6780 (alesapin)
  • Atualização manual do SIMDJSON. Isso corrige uma possível inundação dos arquivos stderr com mensagens falsas de diagnóstico de JSON. #7548 (Alexander Kazakov)
  • Corrigido um bug na extensão de arquivo mrk para mutações (alesapin)

Versão do ClickHouse 19.11.12.69, 2019-10-02

Correção de bug

  • Corrigida a degradação de desempenho da análise de índice em chaves complexas em tabelas grandes. Isso corrige #6924. #7075 (alexey-milovidov)
  • Evita um SIGSEGV raro ao enviar dados em tabelas com o engine Distributed (Failed to send batch: file with index XXXXX is absent). #7032 (Azat Khuzhin)
  • Corrige Unknown identifier em múltiplas junções. Isso corrige #5254. #7022 (Artem Zuikov)

Versão do ClickHouse 19.11.11.57, 2019-09-13

  • Corrige erro lógico que causava falhas de segmentação ao selecionar a partir de um tópico vazio do Kafka. #6902 #6909 (Ivan)
  • Correção da função АrrayEnumerateUniqRanked quando há arrays vazios nos parâmetros. #6928 (proller)

Versão do ClickHouse 19.11.10.54, 2019-09-10

Correção de bug

  • Armazena manualmente os offsets das mensagens do Kafka para permitir confirmá-los todos de uma só vez em todas as partições. Corrige uma possível duplicação no cenário de “um consumidor - muitas partições”. #6872 (Ivan)

Versão do ClickHouse 19.11.9.52, 2019-09-6

  • Melhoria no tratamento de erros em dicionários de cache. #6737 (Vitaly Baranov)
  • Corrigido bug na função arrayEnumerateUniqRanked. #6779 (proller)
  • Corrigida a função JSONExtract ao extrair uma Tuple de JSON. #6718 (Vitaly Baranov)
  • Corrigida possível perda de dados após a consulta ALTER DELETE em tabela com índice de skipping. #6224 #6282 (Nikita Vasilev)
  • Corrigido teste de desempenho. #6392 (alexey-milovidov)
  • Parquet: corrigida a leitura de colunas booleanas. #6579 (alexey-milovidov)
  • Corrigido o comportamento incorreto da função nullIf para argumentos constantes. #6518 (Guillaume Tassery) #6580 (alexey-milovidov)
  • Corrigido problema de duplicação de mensagens do Kafka durante uma reinicialização normal do servidor. #6597 (Ivan)
  • Corrigido um problema em que ALTER UPDATE ou ALTER DELETE longos podiam impedir a execução de merges regulares. Agora, mutações não são executadas se não houver threads livres suficientes. #6502 #6617 (tavplubix)
  • Corrigido erro no processamento de “timezone” no arquivo de configuração do servidor. #6709 (alexey-milovidov)
  • Corrigidos os testes do Kafka. #6805 (Ivan)

Correção de segurança

  • Se um invasor tiver acesso de escrita ao ZooKeeper e conseguir executar um servidor personalizado acessível na rede em que o ClickHouse está sendo executado, ele poderá criar um servidor malicioso sob medida que se passará por uma réplica do ClickHouse e registrá-lo no ZooKeeper. Quando outra réplica buscar uma data part da réplica maliciosa, ela poderá forçar o clickhouse-server a gravar em um path arbitrário no filesystem. Encontrado por Eldar Zaitov, da equipe de segurança da informação da Yandex. #6247 (alexey-milovidov)

Versão do ClickHouse 19.11.8.46, 2019-08-22

Correção de bug

  • Corrige a consulta ALTER TABLE ... UPDATE para tabelas com enable_mixed_granularity_parts=1. #6543 (alesapin)
  • Corrige NPE ao usar a cláusula IN com uma subconsulta que contém uma tupla. #6125 #6550 (tavplubix)
  • Corrige um problema em que, se uma réplica desatualizada voltar a ficar ativa, ela ainda poderá ter partes de dados removidas por DROP PARTITION. #6522 #6523 (tavplubix)
  • Corrige um problema na análise de CSV #6426 #6559 (tavplubix)
  • Corrige uma condição de corrida na tabela system.parts e na consulta ALTER. Isso corrige #6245. #6513 (alexey-milovidov)
  • Corrige código incorreto nas mutações que pode levar à corrupção de memória. Corrige segfault na leitura do endereço 0x14c0, que pode ocorrer devido à execução concorrente de DROP TABLE e SELECT em system.parts ou system.parts_columns. Corrige uma condição de corrida na preparação de consultas de mutação. Corrige deadlock causado por OPTIMIZE em tabelas Replicated e por operações de modificação concorrentes, como ALTERs. #6514 (alexey-milovidov)

Lançamento do ClickHouse 19.11.7.40, 2019-08-14

Correções de bugs

  • A integração com o Kafka foi corrigida nesta versão.
  • Corrige segfault ao usar arrayReduce com argumentos constantes. #6326 (alexey-milovidov)
  • Corrigida a monotonicidade de toFloat(). #6374 (dimarub2000)
  • Corrige segfault com optimize_skip_unused_shards habilitado e sem chave de sharding. #6384 (CurtizJ)
  • Corrigida a lógica da função arrayEnumerateUniqRanked. #6423 (alexey-milovidov)
  • Removido o logging excessivamente verboso do handler MySQL. #6389 (alexey-milovidov)
  • Corrige comportamento incorreto e possíveis segfaults nas funções agregadas topK e topKWeighted. #6404 (CurtizJ)
  • Não expõe colunas virtuais na tabela system.columns. Isso é necessário para compatibilidade com versões anteriores. #6406 (alexey-milovidov)
  • Corrige um bug na alocação de memória para campos string no dicionário de cache com chave complexa. #6447 (alesapin)
  • Corrige um bug ao habilitar a granularidade adaptativa ao criar uma nova réplica para a tabela Replicated*MergeTree. #6452 (alesapin)
  • Corrige loop infinito ao ler mensagens do Kafka. #6354 (abyss7)
  • Corrigida a possibilidade de uma consulta maliciosamente construída causar falha no servidor devido a stack overflow no parser SQL, bem como a possibilidade de stack overflow nas tabelas Merge e Distributed #6433 (alexey-milovidov)
  • Corrigido erro de codificação Gorilla em sequências curtas. #6444 (Enmk)

Melhoria

  • Permitir que o usuário sobrescreva as configurações poll_interval e idle_connection_timeout na conexão. #6230 (alexey-milovidov)

Lançamento do ClickHouse 19.11.5.28, 2019-08-05

Correções de bugs

  • Corrigida a possibilidade de consultas ficarem bloqueadas quando o servidor está sobrecarregado. #6301 (alexey-milovidov)
  • Corrigido o FPE na função yandexConsistentHash. Isso corrige #6304. #6126 (alexey-milovidov)
  • Corrigido um bug na conversão de tipos LowCardinality em AggregateFunctionFactory. Isso corrige #6257. #6281 (Nikolai Kochetov)
  • Corrigida a interpretação de configurações bool a partir das strings true e false em arquivos de configuração. #6278 (alesapin)
  • Corrigido um bug raro com cabeçalhos de stream incompatíveis em consultas à tabela Distributed sobre uma tabela MergeTree, quando parte de WHERE é movida para PREWHERE. #6236 (alesapin)
  • Corrigido overflow na divisão inteira de tipo com sinal para tipo sem sinal. Isso corrige #6214. #6233 (alexey-milovidov)

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

  • Kafka ainda está com problemas.

Lançamento do ClickHouse 19.11.4.24, 2019-08-01

Correções de bugs

  • Corrige um bug na gravação de marcas de índices secundários com granularidade adaptativa. #6126 (alesapin)
  • Corrige os modificadores WITH ROLLUP e WITH CUBE de GROUP BY com agregação em dois níveis. #6225 (Anton Popov)
  • Corrigido travamento na função JSONExtractRaw. Corrige #6195 #6198 (alexey-milovidov)
  • Corrige segfault em ExternalLoader::reloadOutdated(). #6082 (Vitaly Baranov)
  • Corrigido o caso em que o servidor pode fechar sockets de escuta sem encerrar e continuar atendendo às consultas restantes. Você pode acabar com dois processos clickhouse-server em execução. Às vezes, o servidor pode retornar um erro bad_function_call para as consultas restantes. #6231 (alexey-milovidov)
  • Corrigida uma condição inútil e incorreta no campo de atualização para o carregamento inicial de dicionários externos via ODBC, MySQL, ClickHouse e HTTP. Isso corrige #6069 #6083 (alexey-milovidov)
  • Corrigida uma exceção irrelevante na conversão de LowCardinality(Nullable) para uma coluna não Nullable, caso ela não contenha Nulls (por exemplo, em uma consulta como SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String). #6094 #6119 (Nikolai Kochetov)
  • Corrige resultado não determinístico da função de agregação “uniq” em casos extremamente raros. O bug estava presente em todas as versões do ClickHouse. #6058 (alexey-milovidov)
  • Segfault ao definir um CIDR um pouco alto demais na função IPv6CIDRToRange. #6068 (Guillaume Tassery)
  • Corrigido um pequeno vazamento de memória quando o servidor lança muitas exceções de muitos contextos diferentes. #6144 (alexey-milovidov)
  • Corrige a situação em que o consumer era pausado antes da subscription e não era retomado depois. #6075 (Ivan) Observe que o Kafka está quebrado nesta versão.
  • Limpeza do buffer de dados do Kafka da operação de leitura anterior concluída com erro #6026 (Nikolay) Observe que o Kafka está quebrado nesta versão.
  • Como StorageMergeTree::background_task_handle é inicializado em startup(), o MergeTreeBlockOutputStream::write() pode tentar usá-lo antes da inicialização. Basta verificar se ele está inicializado. #6080 (Ivan)

Melhorias em Build/Testes/Empacotamento

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

  • Kafka está quebrado nesta versão.

Lançamento do ClickHouse 19.11.3.11, 2019-07-18

Novo recurso

  • Adicionado suporte a prepared statements. #5331 (Alexander) #5630 (alexey-milovidov)
  • Codecs de coluna DoubleDelta e Gorilla #5600 (Vasily Nemkov)
  • Adicionado o setting os_thread_priority, que permite controlar o valor “nice” das threads de processamento de consultas, usado pelo SO para ajustar a prioridade dinâmica de escalonamento. É necessária a capability CAP_SYS_NICE para que funcione. Isso implementa #5858 #5909 (alexey-milovidov)
  • Implementadas as colunas _topic, _offset, _key para a engine Kafka #5382 (Ivan) Observe que o Kafka não funciona nesta versão.
  • Adicionado o combinador de função de agregação -Resample #5590 (hcz)
  • Adicionadas as funções de agregação groupArrayMovingSum(win_size)(x) e groupArrayMovingAvg(win_size)(x), que calculam soma/média móvel com ou sem limitação do tamanho da janela. #5595 (inv2004)
  • Adicionado o sinônimo arrayFlatten <-> flatten #5764 (hcz)
  • Integrada a função H3 geoToH3 da Uber. #4724 (Remen Ivan) #5805 (alexey-milovidov)

Correções de bugs

  • Implementado cache DNS com atualização assíncrona. Uma thread separada resolve todos os hosts e atualiza o cache DNS periodicamente (configuração dns_cache_update_period). Isso deve ajudar quando o IP dos hosts muda com frequência. #5857 (Anton Popov)
  • Corrige falha de segmentação no codec Delta, que afeta colunas com valores de tamanho inferior a 32 bits. O bug causava corrupção aleatória de memória. #5786 (alesapin)
  • Corrigida falha de segmentação em um merge de TTL com colunas não físicas no bloco. #5819 (Anton Popov)
  • Corrigido um bug raro na verificação de uma part com coluna LowCardinality. Antes, checkDataPart sempre falhava para part com coluna LowCardinality. #5832 (alesapin)
  • Evita conexões que ficam penduradas quando o pool de threads do servidor está cheio. Isso é importante para connections da table function remote ou connections para um shard sem réplicas quando o tempo limite de conexão é longo. Isso corrige #5878 #5881 (alexey-milovidov)
  • Suporte a argumentos constantes na função evalMLModel. Isso corrige #5817 #5820 (alexey-milovidov)
  • Corrigido o problema em que o ClickHouse identificava o fuso horário padrão como UCT em vez de UTC. Isso corrige #5804. #5828 (alexey-milovidov)
  • Corrigido o underflow de buffer em visitParamExtractRaw. Isso corrige #5901 #5902 (alexey-milovidov)
  • Agora, as consultas distribuídas DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER passarão a ser executadas diretamente na réplica líder. #5757 (alesapin)
  • Correção de coalesce em ColumnConst com ColumnNullable + alterações relacionadas. #5755 (Artem Zuikov)
  • Corrija o ReadBufferFromKafkaConsumer para que continue lendo novas mensagens após commit(), mesmo que tenha ficado travado antes #5852 (Ivan)
  • Corrigidos os resultados de FULL e RIGHT JOIN ao fazer join em chaves Nullable na tabela da direita. #5859 (Artem Zuikov)
  • Possível correção para o bloqueio indefinido de consultas de baixa prioridade. #5842 (alexey-milovidov)
  • Corrige uma condição de corrida que fazia com que algumas consultas não aparecessem no query_log após a consulta SYSTEM FLUSH LOGS. #5456 #5685 (Anton Popov)
  • Corrigido o aviso do ASan de heap-use-after-free no ClusterCopier, causado por um watch que tentava usar um objeto do copier já removido. #5871 (Nikolai Kochetov)
  • Corrigido o retorno de um ponteiro StringRef incorreto por algumas implementações de IColumn::deserializeAndInsertFromArena. Esse bug afetava apenas os testes unitários. #5973 (Nikolai Kochetov)
  • Evita que colunas de origem e colunas intermediárias de array join mascarem colunas com o mesmo nome. #5941 (Artem Zuikov)
  • Correção do insert e da consulta SELECT para o engine MySQL com aspas em identificadores no estilo MySQL. #5704 (Winter Zhang)
  • Agora a consulta CHECK TABLE funciona com a família de motores MergeTree. Ela retorna o status da verificação e, se houver, uma mensagem para cada parte (ou arquivo, no caso de motores mais simples). Além disso, corrige um bug ao buscar uma parte corrompida. #5865 (alesapin)
  • Corrigido o runtime do SPLIT_SHARED_LIBRARIES #5793 (Danila Kutenin)
  • Corrigida a inicialização do fuso horário quando /etc/localtime é um link simbólico relativo, como ../usr/share/zoneinfo/Asia/Istanbul #5922 (alexey-milovidov)
  • clickhouse-copier: Corrige use-after-free ao encerrar #5752 (proller)
  • simdjson atualizado. Corrigido o problema em que alguns JSONs inválidos com bytes nulos eram interpretados com sucesso. #5938 (alexey-milovidov)
  • Corrige o encerramento do SystemLogs #5802 (Anton Popov)
  • Corrigido travamento quando a condição em invalidate_query depende de um Dicionário. #6011 (Vitaly Baranov)

Melhoria

  • Permite endereços não resolvíveis na configuração do cluster. Eles serão considerados indisponíveis, e uma nova tentativa de resolução será feita a cada tentativa de conexão. Isso é especialmente útil no Kubernetes. Isso corrige #5714 #5924 (alexey-milovidov)
  • Fechar conexões TCP ociosas (com timeout de uma hora por padrão). Isso é especialmente importante para clusters grandes com várias tabelas distribuídas em cada servidor, porque cada servidor pode manter um pool de conexões com todos os outros servidores e, após o pico de concorrência de consultas, as conexões ficam ociosas. Isso corrige #5879 #5880 (alexey-milovidov)
  • Melhoria na qualidade da função topK. O comportamento do conjunto SavingSpace foi alterado para remover o último elemento se o novo elemento tiver um peso maior. #5833 #5850 (Guillaume Tassery)
  • As funções de URL para trabalhar com domínios agora também funcionam com URLs incompletas sem esquema #5725 (alesapin)
  • Somas de verificação adicionadas à tabela system.parts_columns. #5874 (Nikita Mikhaylov)
  • Adicionado o tipo de dados Enum como sinônimo de Enum8 ou Enum16. #5886 (dimarub2000)
  • Variante de transposição total de bits para o codec T64. Pode proporcionar melhor compressão com zstd. #5742 (Artem Zuikov)
  • Agora, condições com a função startsWith podem usar a chave primária. Isso corrige #5310 e #5882 #5919 (dimarub2000)
  • Permitir o uso do clickhouse-copier em uma topologia de cluster com replicação cruzada, permitindo nome de banco de dados vazio. #5745 (nvartolomei)
  • Usar UTC como fuso horário padrão em um sistema sem tzdata (por exemplo, um contêiner Docker simples). Antes deste patch, a mensagem de erro Could not determine local time zone era exibida, e o servidor ou cliente se recusava a iniciar. #5827 (alexey-milovidov)
  • Foi restaurado o suporte a argumento de ponto flutuante na função quantileTiming, para compatibilidade com versões anteriores. #5911 (alexey-milovidov)
  • Mostrar, nas mensagens de erro, qual tabela está sem a coluna. #5768 (Ivan)
  • Impedir a execução de consultas com o mesmo query_id por vários usuários #5430 (proller)
  • Código mais robusto para enviar métricas ao Graphite. Ele funcionará até mesmo durante uma operação prolongada com múltiplos RENAME TABLE. #5875 (alexey-milovidov)
  • Mensagens de erro mais detalhadas serão exibidas quando o ThreadPool não conseguir agendar uma tarefa para execução. Isso corrige #5305 #5801 (alexey-milovidov)
  • Inversão do ngramSearch para torná-lo mais intuitivo #5807 (Danila Kutenin)
  • Adicionar parsing de usuário ao construtor da engine HDFS #5946 (akonyaev90)
  • Atualizado o valor padrão do parâmetro max_ast_elements parameter #5933 (Artem Konovalov)
  • Foi introduzido o conceito de configurações obsoletas. A configuração obsoleta allow_experimental_low_cardinality_type pode ser usada sem efeito. 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov

Melhoria de desempenho

  • Aumentado o número de streams para SELECT na tabela Merge, para uma distribuição mais uniforme das threads. Adicionada a configuração max_streams_multiplier_for_merge_tables. Isso corrige #5797 #5915 (alexey-milovidov)

Melhorias de build/testes/empacotamento

  • Adicionado um teste de retrocompatibilidade para a interação cliente-servidor com diferentes versões do ClickHouse. #5868 (alesapin)
  • Informações sobre cobertura de testes em cada commit e pull request. #5896 (alesapin)
  • Integrar-se ao AddressSanitizer para oferecer suporte aos nossos alocadores personalizados (Arena e ArenaWithFreeLists), melhorando a depuração de erros de “use-after-free”. #5728 (akuzm)
  • Passa a usar a implementação LLVM libunwind para tratamento de exceções em C++ e para impressão de stack traces #4828 (Nikita Lapkov)
  • Adicionados mais dois avisos do -Weverything #5923 (alexey-milovidov)
  • Permite compilar o ClickHouse com Memory Sanitizer. #3949 (alexey-milovidov)
  • Corrigido o relatório do ubsan relacionado à função bitTest em teste de fuzz. #5943 (alexey-milovidov)
  • Docker: adicionada a possibilidade de inicializar uma instância do ClickHouse que exige autenticação. #5727 (Korviakov Andrey)
  • Atualizado o librdkafka para a versão 1.1.0 #5872 (Ivan)
  • Adiciona timeout global aos testes de integração e desabilita alguns deles no código dos testes. #5741 (alesapin)
  • Corrigidas algumas falhas do ThreadSanitizer. #5854 (akuzm)
  • A opção --no-undefined força o linker a verificar se todos os nomes externos existem durante a vinculação. Ela é muito útil para rastrear as dependências reais entre bibliotecas no modo de compilação dividido. #5855 (Ivan)
  • Adicionado um teste de desempenho para #5797 #5914 (alexey-milovidov)
  • Corrigida a compatibilidade com o gcc-7. #5840 (alexey-milovidov)
  • Adicionado suporte ao gcc-9. Isso corrige #5717 #5774 (alexey-milovidov)
  • Corrigido erro em que o libunwind podia ser vinculado incorretamente. #5948 (alexey-milovidov)
  • Corrigidos alguns avisos identificados pelo PVS-Studio. #5921 (alexey-milovidov)
  • Adicionado suporte inicial para o analisador estático clang-tidy. #5806 (alexey-milovidov)
  • Converta os macros de endianness do BSD/Linux( ‘be64toh’ e ‘htobe64’) para os equivalentes no Mac OS X #5785 (Fu Chen)
  • Guia aprimorado de testes de integração. #5796 (Vladimir Chebotarev)
  • Correção da compilação no macosx + gcc9 #5822 (filimonov)
  • Corrigido um erro de digitação difícil de perceber: aggreAGte -> aggregate. #5753 (akuzm)
  • Correção da compilação no FreeBSD #5760 (proller)
  • Adicionar link do canal experimental do YouTube ao site #5845 (Ivan Blinkov)
  • CMake: adiciona opção para flags de cobertura: WITH_COVERAGE #5776 (proller)
  • Corrigido o tamanho inicial de alguns PODArrays inline. #5787 (akuzm)
  • clickhouse-server.postinst: corrige a detecção do sistema operacional para centos 6 #5788 (proller)
  • Adicionada a geração de pacotes para Arch Linux. #5719 (Vladimir Chebotarev)
  • Separar Common/config.h por bibliotecas (dbms) #5715 (proller)
  • Correções na plataforma de compilação “Arcadia” #5795 (proller)
  • Correções para builds não convencionais (gcc9, sem submódulos) #5792 (proller)
  • Exigir um tipo explícito em unalignedStore, pois foi comprovado que isso era propenso a bugs #5791 (akuzm)
  • Corrige a build do macOS #5830 (filimonov)
  • Teste de desempenho do novo recurso JIT com um conjunto de dados maior, conforme solicitado aqui #5263 #5887 (Guillaume Tassery)
  • Executar testes stateful em teste de estresse 12693e568722f11e19859742f56428455501fd2a (alesapin)

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

  • Kafka não funciona nesta versão.
  • Ativa adaptive_index_granularity = 10MB por padrão para novas tabelas MergeTree. Se você criou novas tabelas MergeTree na versão 19.11+, será impossível fazer downgrade para versões anteriores à 19.6. #5628 (alesapin)
  • Removidos dicionários embutidos obsoletos e não documentados que eram usados pelo Yandex.Metrica. As funções OSIn, SEIn, OSToRoot, SEToRoot, OSHierarchy, SEHierarchy não estão mais disponíveis. Se você estiver usando essas funções, envie um e-mail para clickhouse-feedback@yandex-team.com. Observação: no último momento, decidimos manter essas funções por mais algum tempo. #5780 (alexey-milovidov)

Lançamento do ClickHouse 19.10

Lançamento do ClickHouse 19.10.1.5, 2019-07-12

Novo recurso

  • Adicionado novo codec de coluna: T64. Feito para colunas (U)IntX/EnumX/Data(Time)/DecimalX. É indicado para colunas com valores constantes ou de pequena faixa. O próprio codec permite ampliar ou reduzir o tipo de dado sem recompressão. #5557 (Artem Zuikov)
  • Adicionado o engine de banco de dados MySQL, que permite visualizar todas as tabelas em um servidor MySQL remoto #5599 (Winter Zhang)
  • Implementação de bitmapContains. É 2x mais rápida que bitmapHasAny se o segundo bitmap contiver um único elemento. #5535 (Zhichang Yu)
  • Suporte à função crc32 (com comportamento exatamente igual ao do MySQL ou PHP). Não a use se precisar de uma função hash. #5661 (Remen Ivan)
  • Implementadas as consultas SYSTEM START/STOP DISTRIBUTED SENDS para controlar inserções assíncronas em tabelas Distributed. #4935 (Winter Zhang)

Correções de bugs

  • Ignora os limites de execução de consultas e o tamanho máximo das partes nos limites de mesclagem durante a execução de mutações. #5659 (Anton Popov)
  • Corrige um bug que pode levar à desduplicação de blocos normais (extremamente raro) e à inserção de blocos duplicados (com mais frequência). #5549 (alesapin)
  • Corrige a função arrayEnumerateUniqRanked para argumentos com arrays vazios #5559 (proller)
  • Não se inscreve em tópicos do Kafka sem a intenção de consumir mensagens. #5698 (Ivan)
  • Faz com que a configuração join_use_nulls não tenha efeito para tipos que não podem estar dentro de Nullable #5700 (Olga Khvostikova)
  • Corrige erros Incorrect size of index granularity #5720 (coraxster)
  • Corrige estouro na conversão de Float para Decimal #5607 (coraxster)
  • Descarrega o buffer quando o destruidor de WriteBufferFromHDFS é chamado. Isso corrige a gravação em HDFS. #5684 (Xindong Peng)

Melhoria

  • Tratar células vazias em CSV como valores padrão quando a configuração input_format_defaults_for_omitted_fields estiver habilitada. #5625 (akuzm)
  • Carregamento não bloqueante de dicionários externos. #5567 (Vitaly Baranov)
  • Timeouts de rede podem ser alterados dinamicamente para conexões já estabelecidas, de acordo com as configurações. #4558 (Konstantin Podshumok)
  • Uso de “public_suffix_list” para as funções firstSignificantSubdomain, cutToFirstSignificantSubdomain. Ele usa uma tabela hash perfeita gerada por gperf com uma lista gerada a partir do arquivo: https://publicsuffix.org/list/public&#95;suffix&#95;list.dat. (por exemplo, agora reconhecemos o domínio ac.uk como não significativo). #5030 (Guillaume Tassery)
  • Adoção do tipo de dados IPv6 nas tabelas do sistema; colunas de informações do cliente unificadas em system.processes e system.query_log #5640 (alexey-milovidov)
  • Uso de sessões para conexões com o protocolo de compatibilidade com MySQL. #5476 #5646 (Yuriy Baranov)
  • Suporte a mais consultas ALTER ON CLUSTER. #5593 #5613 (sundyli)
  • Suporte à seção <logger> no arquivo de configuração do clickhouse-local. #5540 (proller)
  • Permite executar consulta com a função de tabela remote no clickhouse-local #5627 (proller)

Melhoria de desempenho

  • Adicionada a possibilidade de gravar a marca final ao final das colunas de MergeTree. Isso permite evitar leituras desnecessárias para chaves que estão fora do intervalo de dados da tabela. Isso só é ativado se a granularidade adaptativa do índice estiver em uso. #5624 (alesapin)
  • Melhorado o desempenho de tabelas MergeTree em sistemas de arquivos muito lentos, reduzindo o número de chamadas de sistema stat. #5648 (alexey-milovidov)
  • Corrigida a degradação de desempenho na leitura de tabelas MergeTree introduzida na versão 19.6. Corrige #5631. #5633 (alexey-milovidov)

Melhorias de Build/Testes/Empacotamento

  • Implementado o TestKeeper como uma implementação da interface do ZooKeeper usada para testes #5643 (alexey-milovidov) (levushkin aleksej)
  • A partir de agora, os testes .sql podem ser executados de forma isolada por servidor, em paralelo, com database aleatório. Isso permite executá-los mais rapidamente, adicionar novos testes com configurações personalizadas de servidor e garantir que testes diferentes não afetem uns aos outros. #5554 (Ivan)
  • Removidos <name> e <metrics> dos testes de desempenho #5672 (Olga Khvostikova)
  • Corrigido o teste de desempenho select_format para os formatos Pretty #5642 (alexey-milovidov)

Lançamento do ClickHouse 19.9

Lançamento do ClickHouse 19.9.3.31, 2019-07-05

Correções de bugs

  • Corrigida uma segfault no codec Delta que afeta colunas com valores menores que 32 bits. O bug causava corrupção aleatória de memória. #5786 (alesapin)
  • Corrigido um bug raro na verificação de uma parte com coluna LowCardinality. #5832 (alesapin)
  • Corrigida uma segfault em merge de TTL com colunas não físicas no bloco. #5819 (Anton Popov)
  • Corrigido um possível estado de espera infinita em consultas de baixa prioridade. #5842 (alexey-milovidov)
  • Corrigida a forma como o ClickHouse determina o fuso horário padrão como UCT, em vez de UTC. #5828 (alexey-milovidov)
  • Corrigido um bug na execução de consultas distribuídas DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER em uma réplica seguidora antes da réplica líder. Agora, elas serão executadas diretamente na réplica líder. #5757 (alesapin)
  • Corrigida uma condição de corrida que fazia com que algumas consultas não aparecessem imediatamente em query_log após a consulta SYSTEM FLUSH LOGS. #5685 (Anton Popov)
  • Adicionado suporte a argumentos constantes na função evalMLModel. #5820 (alexey-milovidov)

Versão do ClickHouse 19.9.2.4, 2019-06-24

Novo recurso

  • Exibe informações sobre partes congeladas na tabela system.parts. #5471 (proller)
  • Solicita a senha do cliente ao iniciar o clickhouse-client em um tty, caso ela não tenha sido definida nos argumentos #5092 (proller)
  • Implementa as funções dictGet e dictGetOrDefault para tipos Decimal. #5394 (Artem Zuikov)

Melhorias

  • Init do Debian: adicionado timeout para parada do serviço #5522 (proller)
  • Adicionada uma configuração, proibida por padrão, para criar tabela com tipos suspeitos para LowCardinality #5448 (Olga Khvostikova)
  • Funções de regressão retornam pesos do model quando não são usadas como State na função evalMLMethod. #5411 (Quid37)
  • Métodos de regressão renomeados e aprimorados. #5492 (Quid37)
  • Interfaces mais claras para buscadores de strings. #5586 (Danila Kutenin)

Correção de bugs

  • Corrigida uma possível perda de dados no Kafka #5445 (Ivan)
  • Corrige um possível loop infinito no formato PrettySpace quando chamado sem colunas #5560 (Olga Khvostikova)
  • Corrigido um bug de overflow de UInt32 em modelos lineares. Permitida a avaliação de modelo de ML com argumento de modelo não constante. #5516 (Nikolai Kochetov)
  • ALTER TABLE ... DROP INDEX IF EXISTS ... não deve lançar uma exceção caso o índice informado não exista #5524 (Gleb Novikov)
  • Corrigida falha de segmentação com bitmapHasAny em subconsulta escalar #5528 (Zhichang Yu)
  • Corrigido erro em que o pool de conexões de replicação não tentava novamente resolver o host, mesmo quando o cache DNS era limpo. #5534 (alesapin)
  • Corrigido o ALTER ... MODIFY TTL no ReplicatedMergeTree. #5539 (Anton Popov)
  • Correção de INSERT em tabela Distributed com coluna MATERIALIZED #5429 (Azat Khuzhin)
  • Corrigido erro bad alloc ao usar TRUNCATE no armazenamento Join #5437 (TCeason)
  • Nas versões recentes do pacote tzdata, alguns arquivos agora são links simbólicos. O mecanismo atual de detecção do fuso horário padrão acaba falhando e retorna nomes incorretos para alguns fusos horários. Agora, pelo menos, forçamos o nome do fuso horário a corresponder ao conteúdo de TZ, se ele for fornecido. #5443 (Ivan)
  • Corrige alguns casos extremamente raros no mecanismo de busca MultiVolnitsky quando, no total, as needles constantes têm pelo menos 16 KB de comprimento. O algoritmo ignorava ou sobrescrevia os resultados anteriores, o que pode levar a um resultado incorreto de multiSearchAny. #5588 (Danila Kutenin)
  • Corrige o problema em que as configurações de solicitações ExternalData não podiam usar configurações do ClickHouse. Além disso, por enquanto, as configurações date_time_input_format e low_cardinality_allow_in_native_format não podem ser usadas devido à ambiguidade dos nomes (em dados externos, isso pode ser interpretado como formato de tabela e, na consulta, como uma configuração). #5455 (Danila Kutenin)
  • Corrige um bug em que as partes eram removidas apenas do FS, sem serem removidas do Zookeeper. #5520 (alesapin)
  • Removido o logging de depuração do protocolo MySQL #5478 (alexey-milovidov)
  • Ignorar ZNONODE durante o processamento de consultas DDL #5489 (Azat Khuzhin)
  • Corrigido o tipo de coluna no resultado de UNION ALL misto. Havia casos com dados inconsistentes e tipos de coluna inconsistentes nas colunas resultantes. #5503 (Artem Zuikov)
  • Gerar uma exceção para inteiros inválidos nas funções dictGetT, em vez de causar uma falha. #5446 (Artem Zuikov)
  • Corrige element&#95;count e load&#95;factor incorretos de dicionário hash na tabela system.dictionaries. #5440 (Azat Khuzhin)

Melhoria de compilação/testes/empacotamento

  • Corrigida a compilação sem suporte à compressão HTTP Brotli (variável cmake ENABLE_BROTLI=OFF). #5521 (Anton Yuzhaninov)
  • Inclusão de roaring.h como roaring/roaring.h #5523 (Orivej Desh)
  • Corrigidos os avisos do gcc9 no hyperscan (a diretiva #line é maligna!) #5546 (Danila Kutenin)
  • Corrigidos todos os avisos ao compilar com gcc-9. Corrigidos alguns problemas em contrib. Corrigido o ICE do gcc9 e enviado para o bugzilla. #5498 (Danila Kutenin)
  • Corrigida a linkagem com lld #5477 (alexey-milovidov)
  • Removidas especializações não utilizadas em dicionários #5452 (Artem Zuikov)
  • Melhorados os testes de desempenho para formatação e parsing de tabelas para diferentes tipos de arquivo #5497 (Olga Khvostikova)
  • Correções para execução paralela de testes #5506 (proller)
  • Docker: usar configurações de clickhouse-test #5531 (proller)
  • Corrigida a compilação para FreeBSD #5447 (proller)
  • Atualizado o boost para 1.70 #5570 (proller)
  • Corrigida a compilação do clickhouse como submódulo #5574 (proller)
  • Melhorados os testes de desempenho do JSONExtract #5444 (Vitaly Baranov)

Versão do ClickHouse 19.8

Versão do ClickHouse 19.8.3.8, 2019-06-11

Novidades

  • Foram adicionadas funções para trabalhar com JSON #4686 (hcz) #5124. (Vitaly Baranov)
  • Adiciona a função basename, com comportamento semelhante ao da função basename, existente em várias linguagens (os.path.basename em Python, basename em PHP etc…). Funciona tanto com um caminho no estilo UNIX quanto com um caminho do Windows. #5136 (Guillaume Tassery)
  • Adicionada a sintaxe LIMIT n, m BY ou LIMIT m OFFSET n BY para definir um offset de n na cláusula LIMIT BY. #5138 (Anton Popov)
  • Adicionado o novo tipo de dado SimpleAggregateFunction, que permite ter colunas com agregação simples em um AggregatingMergeTree. Isso só pode ser usado com funções simples como any, anyLast, sum, min, max. #4629 (Boris Granveaud)
  • Adicionado suporte a argumentos não constantes na função ngramDistance #5198 (Danila Kutenin)
  • Adicionadas as funções skewPop, skewSamp, kurtPop e kurtSamp para calcular, respectivamente, a assimetria da série, a assimetria amostral, a curtose e a curtose amostral. #5200 (hcz)
  • Suporte à renomeação do armazenamento MaterializeView. #5209 (Guillaume Tassery)
  • Adicionado um servidor que permite conectar-se ao ClickHouse usando um cliente MySQL. #4715 (Yuriy Baranov)
  • Adicionadas as funções toDecimal*OrZero e toDecimal*OrNull. #5291 (Artem Zuikov)
  • Suporte a tipos Decimal em funções: quantile, quantiles, median, quantileExactWeighted, quantilesExactWeighted, medianExactWeighted. #5304 (Artem Zuikov)
  • Adicionada a função toValidUTF8, que substitui todos os caracteres UTF-8 inválidos pelo caractere de substituição � (U+FFFD). #5322 (Danila Kutenin)
  • Adicionada a função format. Formata um pattern constante (padrão de formato simplificado do Python) com as strings listadas nos argumentos. #5330 (Danila Kutenin)
  • Adicionada a tabela system.detached_parts, com informações sobre partes desanexadas de tabelas MergeTree. #5353 (akuzm)
  • Adicionada a função ngramSearch para calcular a diferença não simétrica entre needle e haystack. #5418#5422 (Danila Kutenin)
  • Implementação de métodos básicos de aprendizado de máquina (regressão linear estocástica e regressão logística) por meio da interface de funções de agregação. Conta com diferentes estratégias para atualizar os pesos do modelo (descida de gradiente simples, método de momentum, método de Nesterov). Também oferece suporte a minilotes de tamanho personalizado. #4943 (Quid37)
  • Implementação das funções geohashEncode e geohashDecode. #5003 (Vasily Nemkov)
  • Adicionada a função de agregação timeSeriesGroupSum, que pode agregar diferentes séries temporais cujos timestamps de amostragem não estejam alinhados. Ela usa interpolação linear entre dois timestamps de amostragem e, em seguida, soma as séries temporais. Adicionada a função de agregação timeSeriesGroupRateSum, que calcula a taxa das séries temporais e, em seguida, soma essas taxas. #4542 (Yangkuan Liu)
  • Adicionadas as funções IPv4CIDRtoIPv4Range e IPv6CIDRtoIPv6Range para calcular os limites inferior e superior de um IP na sub-rede com base em um CIDR. #5095 (Guillaume Tassery)
  • Adicionado o cabeçalho X-ClickHouse-Summary quando enviamos uma consulta via HTTP com a configuração send_progress_in_http_headers ativada. Retorna as informações usuais de X-ClickHouse-Progress, com informações adicionais, como quantas linhas e bytes foram inseridos na consulta. #5116 (Guillaume Tassery)

Melhorias

  • Adicionada a configuração max_parts_in_total para a família de tabelas MergeTree (padrão: 100 000), que evita a definição insegura da chave de partição #5166. #5171 (alexey-milovidov)
  • clickhouse-obfuscator: derivar a seed de colunas individuais combinando a seed inicial com o nome da coluna, e não com a posição da coluna. O objetivo é transformar conjuntos de dados com várias tabelas relacionadas, para que as tabelas continuem compatíveis com JOIN após a transformação. #5178 (alexey-milovidov)
  • Adicionadas as funções JSONExtractRaw, JSONExtractKeyAndValues. As funções jsonExtract<type> foram renomeadas para JSONExtract<type>. Quando algo dá errado, essas funções retornam os valores correspondentes, e não NULL. A função JSONExtract foi modificada; agora ela obtém o tipo de retorno a partir do último parâmetro e não injeta Nullable. Implementado fallback para RapidJSON caso as instruções AVX2 não estejam disponíveis. A biblioteca Simdjson foi atualizada para uma nova versão. #5235 (Vitaly Baranov)
  • Agora, as funções if e multiIf não dependem mais do Nullable da condição, mas sim dos ramos, para compatibilidade com SQL. #5238 (Jian Wu)
  • O predicado In agora gera resultado Null quando a entrada é Null, assim como a função Equal. #5152 (Jian Wu)
  • Verifique o limite de tempo a cada (flush_interval / poll_timeout) linhas lidas do Kafka. Isso permite interromper a leitura do consumidor do Kafka com mais frequência e verificar os limites de tempo dos fluxos de nível superior #5249 (Ivan)
  • Vincule o rdkafka com SASL integrado. Isso deve permitir o uso da autenticação SASL SCRAM #5253 (Ivan)
  • Versão em batch do RowRefList para TODAS AS JUNÇÕES. #5267 (Artem Zuikov)
  • clickhouse-server: mensagens de erro de listen mais informativas. #5268 (proller)
  • Suporte a Dictionaries no clickhouse-copier para funções em <sharding_key> #5270 (proller)
  • Adicionada a nova configuração kafka_commit_every_batch para controlar a política de commit do Kafka. Ela permite definir o modo de commit: após cada lote de mensagens ser processado, ou depois que o bloco inteiro é gravado no armazenamento. É um equilíbrio entre perder algumas mensagens ou lê-las duas vezes em situações extremas. #5308 (Ivan)
  • Permite que windowFunnel ofereça suporte a outros tipos de inteiros sem sinal. #5320 (sundyli)
  • Permitir sobrepor a coluna virtual _table no mecanismo Merge. #5325 (Ivan)
  • Adicionar suporte nas funções de agregação sequenceMatch a outros tipos Integer sem sinal #5339 (sundyli)
  • Mensagens de erro mais claras quando a incompatibilidade de checksum provavelmente for causada por falhas de hardware. #5355 (alexey-milovidov)
  • Verifique se as tabelas subjacentes oferecem suporte à amostragem para o StorageMerge #5366 (Ivan)
  • Fechar conexões MySQL após o uso em dicionários externos. Relacionado ao problema #893. #5395 (Clément Rodriguez)
  • Melhorias no MySQL Wire Protocol. O nome do formato foi alterado para MySQLWire. Uso de RAII para chamar RSA_free. SSL desativado se não for possível criar o contexto. #5419 (Yuriy Baranov)
  • clickhouse-client: permitir a execução com arquivo de histórico inacessível (somente leitura, sem espaço em disco, o arquivo é um diretório, …). #5431 (proller)
  • Respeita as configurações da consulta em INSERTs assíncronos em tabelas Distributed. #4936 (TCeason)
  • Funções leastSqr renomeadas para simpleLinearRegression, LinearRegression para linearRegression e LogisticRegression para logisticRegression. #5391 (Nikolai Kochetov)

Melhorias de desempenho

  • Paralelização do processamento de partes de tabelas MergeTree não replicadas na consulta ALTER MODIFY. #4639 (Ivan Kush)
  • Otimizações na extração com expressões regulares. #5193 #5191 (Danila Kutenin)
  • Não adicionar a coluna da chave direita do join ao resultado do join se ela for usada apenas na cláusula ON do join. #5260 (Artem Zuikov)
  • Congelamento do buffer do Kafka após a primeira resposta vazia. Isso evita várias invocações de ReadBuffer::next() para resultados vazios em alguns fluxos de parsing de linhas. #5283 (Ivan)
  • Otimização da função concat para vários argumentos. #5357 (Danila Kutenin)
  • Otimização de consulta. Permite push down da instrução IN ao reescrever join por vírgula/cross join como inner join. #5396 (Artem Zuikov)
  • Atualização da nossa implementação de LZ4 para a implementação de referência, a fim de obter uma descompressão mais rápida. #5070 (Danila Kutenin)
  • Implementação da ordenação radix MSD (baseada em kxsort) e de ordenação parcial. #5129 (Evgenii Pravda)

Correções de bugs

  • Corrige a exigência de colunas com join no push #5192 (Winter Zhang)
  • Corrigido um bug em que, quando o ClickHouse era executado pelo systemd, o comando sudo service clickhouse-server forcerestart não funcionava como esperado. #5204 (proller)
  • Corrige os códigos de erro HTTP em DataPartsExchange (o servidor HTTP interserver na porta 9009 sempre retornava o código 200, mesmo em caso de erro). #5216 (proller)
  • Corrige o SimpleAggregateFunction para String maior que MAX_SMALL_STRING_SIZE #5311 (Azat Khuzhin)
  • Corrige erro na conversão de Decimal para Nullable(Decimal) em IN. Adiciona suporte a outras conversões de Decimal para Decimal (incluindo diferentes escalas). #5350 (Artem Zuikov)
  • Corrigida a sobrescrita da FPU na biblioteca simdjson, que levava ao cálculo incorreto das funções agregadas uniqHLL e uniqCombined e de funções matemáticas como log. #5354 (alexey-milovidov)
  • Corrigido o tratamento de casos mistos const/nonconst em funções JSON. #5435 (Vitaly Baranov)
  • Corrige a função retention. Agora todas as condições satisfeitas em uma linha de dados são adicionadas ao estado dos dados. #5119 (小路)
  • Corrige o tipo de resultado de quantileExact com Decimals. #5304 (Artem Zuikov)

Documentação

  • Tradução da documentação do CollapsingMergeTree para o chinês. #5168 (张风啸)
  • Tradução de parte da documentação sobre motores de tabela para o chinês. #5134 #5328 (never lee)

Melhorias de Build/Testes/Empacotamento

  • Corrigidos alguns relatórios do sanitizer que indicavam provável use-after-free.#5139 #5143 #5393 (Ivan)
  • Os testes de desempenho foram removidos de diretórios separados por conveniência. #5158 (alexey-milovidov)
  • Corrigidos testes de desempenho incorretos. #5255 (alesapin)
  • Adicionada uma ferramenta para calcular checksums causados por inversões de bits e depurar problemas de hardware. #5334 (alexey-milovidov)
  • Tornado o script do runner mais prático de usar. #5340#5360 (filimonov)
  • Adicionada uma pequena instrução sobre como escrever testes de desempenho. #5408 (alesapin)
  • Adicionada a capacidade de fazer substituições em consultas create, fill e drop nos testes de desempenho #5367 (Olga Khvostikova)

Versão 19.7 do ClickHouse

Versão 19.7.5.29 do ClickHouse, 2019-07-05

Correção de bug

  • Corrige uma regressão de desempenho em algumas consultas com JOIN. #5192 (Winter Zhang)

Versão do ClickHouse 19.7.5.27, 2019-06-09

Novos recursos

  • Adicionadas as funções relacionadas a bitmap bitmapHasAny e bitmapHasAll, análogas às funções hasAny e hasAll para arrays. #5279 (Sergi Vladykin)

Correções de bugs

  • Corrige falha de segmentação em minmax INDEX com valor Null. #5246 (Nikita Vasilev)
  • Marca todas as colunas de entrada em LIMIT BY como saída obrigatória. Isso corrige o erro ‘Not found column’ em algumas consultas distribuídas. #5407 (Constantin S. Pan)
  • Corrige o erro “Column ‘0’ already exists” em SELECT .. PREWHERE em coluna com DEFAULT #5397 (proller)
  • Corrige a consulta ALTER MODIFY TTL em ReplicatedMergeTree. #5539 (Anton Popov)
  • Não derruba o servidor quando os consumers do Kafka falham ao iniciar. #5285 (Ivan)
  • Corrige funções de bitmap que produziam resultados incorretos. #5359 (Andy Yang)
  • Corrige element_count para Dicionário com hash (sem incluir duplicados) #5440 (Azat Khuzhin)
  • Usa o conteúdo da variável de ambiente TZ como nome do fuso horário. Isso ajuda a detectar corretamente o fuso horário padrão em alguns casos. #5443 (Ivan)
  • Não tenta converter inteiros nas funções dictGetT, porque isso não funciona corretamente. Em vez disso, lança uma exceção. #5446 (Artem Zuikov)
  • Corrige as configurações na requisição HTTP de ExternalData. #5455 (Danila Kutenin)
  • Corrige um bug em que as partes eram removidas apenas do FS, sem serem removidas do Zookeeper. #5520 (alesapin)
  • Corrige falha de segmentação na função bitmapHasAny. #5528 (Zhichang Yu)
  • Corrige erro em que o pool de conexões de replicação não tentava novamente resolver o host, mesmo quando o cache DNS era descartado. #5534 (alesapin)
  • Corrige a consulta DROP INDEX IF EXISTS. Agora, a consulta ALTER TABLE ... DROP INDEX IF EXISTS ... não lança exceção se o índice informado não existir. #5524 (Gleb Novikov)
  • Corrige a coluna de supertype em union all. Havia casos de inconsistência nos dados e nos tipos de coluna das colunas resultantes. #5503 (Artem Zuikov)
  • Ignora ZNONODE durante o processamento de consultas DDL. Antes, se outro nó removesse o znode da fila de tarefas, o nó que não o processou, mas já havia obtido a lista de filhos, encerraria a thread DDLWorker. #5489 (Azat Khuzhin)
  • Corrige INSERT em tabela Distributed() com coluna MATERIALIZED. #5429 (Azat Khuzhin)

Versão do ClickHouse 19.7.3.9, 2019-05-30

Novos Recursos

  • Permite limitar o intervalo de uma configuração que pode ser especificada pelo usuário. Essas restrições podem ser definidas no perfil de configurações do usuário. #4931 (Vitaly Baranov)
  • Adicionada uma segunda versão da função groupUniqArray, com um parâmetro opcional max_size que limita o tamanho do array resultante. Esse comportamento é semelhante ao da função groupArray(max_size)(x). #5026 (Guillaume Tassery)
  • Nos formatos de arquivo de entrada TSVWithNames/CSVWithNames, a ordem das colunas agora pode ser determinada a partir do cabeçalho do arquivo. Isso é controlado pelo parâmetro input_format_with_names_use_header. #5081 (Alexander)

Correções de bugs

  • Travamento com uncompressed_cache + JOIN durante a mesclagem (#5197) #5133 (Danila Kutenin)
  • Falha de segmentação em uma consulta do clickhouse-client às tabelas do sistema. #5066 #5127 (Ivan)
  • Perda de dados sob alta carga via KafkaEngine (#4736) #5080 (Ivan)
  • Corrigida uma condição de corrida muito rara que podia ocorrer ao executar uma consulta com UNION ALL envolvendo pelo menos dois SELECTs de system.columns, system.tables, system.parts, system.parts_tables ou tabelas da família Merge e realizar ALTER das colunas das tabelas relacionadas de forma concorrente. #5189 (alexey-milovidov)

Melhorias de desempenho

Documentação

Melhorias de compilação/testes/empacotamento

Versão do ClickHouse 19.6

Versão do ClickHouse 19.6.3.18, 2019-06-13

Correções de bugs

  • Corrigido o pushdown da condição IN para consultas de table functions mysql e odbc e dos motores de tabela correspondentes. Isso corrige #3540 e #2384. #5313 (alexey-milovidov)
  • Corrigido deadlock no Zookeeper. #5297 (github1youlc)
  • Passou a permitir decimais entre aspas em CSV. #5284 (Artem Zuikov
  • Passou a não permitir a conversão de Inf/NaN float para Decimals (lança exceção). #5282 (Artem Zuikov)
  • Corrigida condição de corrida na consulta de renomeação. #5247 (Winter Zhang)
  • LFAlloc foi desativado temporariamente. O uso de LFAlloc pode causar muitos MAP_FAILED ao alocar UncompressedCache e, como resultado, levar a falhas de consultas em servidores com alta carga. cfdba93(Danila Kutenin)

Versão do ClickHouse 19.6.2.11, 2019-05-13

Novos Recursos

  • Expressões TTL para colunas e tabelas. #4212 (Anton Popov)
  • Adicionado suporte à compressão brotli para respostas HTTP (Accept-Encoding: br) #4388 (Mikhail)
  • Adicionada a nova função isValidUTF8 para verificar se um conjunto de bytes está corretamente codificado em UTF-8. #4934 (Danila Kutenin)
  • Adicionada a nova política de balanceamento de carga first_or_random, que envia consultas para o primeiro host especificado e, se ele estiver inacessível, envia consultas para hosts aleatórios do shard. Útil para configurações com topologia de replicação cruzada. #5012 (nvartolomei)

Recursos experimentais

  • Adicionada a configuração index_granularity_bytes (granularidade adaptativa do índice) para a família de tabelas MergeTree*. #4826 (alesapin)

Melhorias

  • Adicionado suporte a argumentos de tamanho e comprimento não constantes e negativos para a função substringUTF8. #4989 (alexey-milovidov)
  • Desativado o push-down para a tabela da direita em left join, para a tabela da esquerda em right join e para ambas as tabelas em full join. Isso corrige resultados de JOIN incorretos em alguns casos. #4846 (Ivan)
  • clickhouse-copier: upload automático da configuração da tarefa a partir da opção --task-file #4876 (proller)
  • Adicionado tratamento para erros de digitação na factory de storage e na factory de funções de tabela. #4891 (Danila Kutenin)
  • Suporte a asteriscos e asteriscos qualificados para múltiplas junções sem subqueries #4898 (Artem Zuikov)
  • Mensagem de erro para coluna ausente mais amigável para o usuário. #4915 (Artem Zuikov)

Melhorias de desempenho

Alterações incompatíveis com versões anteriores

  • O cabeçalho HTTP Query-Id foi renomeado para X-ClickHouse-Query-Id por consistência. #4972 (Mikhail)

Correções de bugs

  • Corrigido um possível desreferenciamento de ponteiro nulo em clickhouse-copier. #4900 (proller)
  • Corrigido erro em consulta com JOIN + ARRAY JOIN #4938 (Artem Zuikov)
  • Corrigido travamento na inicialização do servidor quando um dicionário depende de outro dicionário por meio de um banco de dados com engine=Dictionary. #4962 (Vitaly Baranov)
  • Correção parcial de distributed_product_mode = local. Agora é possível permitir colunas de tabelas locais em where/having/order by/… por meio de aliases de tabela. Uma exceção é lançada se a tabela não tiver alias. Ainda não é possível acessar as colunas sem aliases de tabela. #4986 (Artem Zuikov)
  • Corrigido resultado potencialmente incorreto para SELECT DISTINCT com JOIN #5001 (Artem Zuikov)
  • Corrigida uma condição de corrida de dados muito rara que poderia ocorrer ao executar uma consulta com UNION ALL envolvendo pelo menos dois SELECTs de system.columns, system.tables, system.parts, system.parts_tables ou tabelas da família Merge, enquanto um ALTER de colunas das tabelas relacionadas é executado de forma concorrente. #5189 (alexey-milovidov)

Melhorias em Build/Testes/Empacotamento

  • Corrigidas falhas de teste ao executar clickhouse-server em um host diferente #4713 (Vasily Nemkov)
  • clickhouse-test: desabilita sequências de controle de cor em ambiente sem TTY. #4937 (alesapin)
  • clickhouse-test: permite usar qualquer banco de dados de teste (remove a qualificação test. onde for possível) #5008 (proller)
  • Corrige erros do UBSan #5037 (Vitaly Baranov)
  • O Yandex LFAlloc foi adicionado ao ClickHouse para alocar dados de MarkCache e UncompressedCache de formas diferentes, a fim de detectar segfaults com mais confiabilidade #4995 (Danila Kutenin)
  • Utilitário em Python para ajudar com backports e changelogs. #4949 (Ivan)

Versão 19.5 do ClickHouse

Versão 19.5.4.22 do ClickHouse, 2019-05-13

Correções de bugs

  • Corrigido um possível travamento nas funções bitmap* #5220 #5228 (Andy Yang)
  • Corrigida uma condição de corrida de dados muito rara, que poderia ocorrer ao executar uma consulta com UNION ALL envolvendo pelo menos dois SELECTs de system.columns, system.tables, system.parts, system.parts_tables ou tabelas da família Merge, enquanto um ALTER nas colunas das tabelas relacionadas era executado concorrentemente. #5189 (alexey-milovidov)
  • Corrigido o erro Set for IN is not created yet in case of using single LowCardinality column in the left part of IN. Esse erro ocorria se a coluna LowCardinality fizesse parte da chave primária. #5031 #5154 (Nikolai Kochetov)
  • Modificação na função retention: se uma linha satisfizer tanto a primeira quanto a N-ÉSIMA condição, apenas a primeira condição satisfeita será adicionada ao estado dos dados. Agora, todas as condições satisfeitas em uma linha de dados são adicionadas ao estado dos dados. #5119 (小路)

Versão do ClickHouse 19.5.3.8, 2019-04-18

Correções de bugs

Versão do ClickHouse 19.5.2.6, 2019-04-15

Novos recursos

  • Foi adicionada a correspondência de múltiplas expressões regulares com Hyperscan (funções multiMatchAny, multiMatchAnyIndex, multiFuzzyMatchAny, multiFuzzyMatchAnyIndex). #4780, #4841 (Danila Kutenin)
  • A função multiSearchFirstPosition foi adicionada. #4780 (Danila Kutenin)
  • Foi implementado o filtro de expressão predefinido por linha para tabelas. #4792 (Ivan)
  • Um novo tipo de data skipping indexes baseado em filtros de Bloom (pode ser usado com as funções equal, in e like). #4499 (Nikita Vasilev)
  • Foi adicionado o ASOF JOIN, que permite executar consultas que fazem junção com o valor conhecido mais recente. #4774 #4867 #4863 #4875 (Martijn Bakker, Artem Zuikov)
  • Múltiplos COMMA JOIN agora são reescritos como CROSS JOIN. Depois, são reescritos como INNER JOIN, se possível. #4661 (Artem Zuikov)

Melhoria

  • topK e topKWeighted agora oferecem suporte a loadFactor personalizado (corrige o problema #4252). #4634 (Kirill Danshin)
  • Permite usar parallel_replicas_count > 1 mesmo para tabelas sem sampling (a configuração é simplesmente ignorada para elas). Em versões anteriores, isso gerava uma exceção. #4637 (Alexey Elymanov)
  • Suporte a CREATE OR REPLACE VIEW. Permite criar uma view ou definir uma nova definição em uma única instrução. #4654 (Boris Granveaud)
  • O table engine Buffer agora oferece suporte a PREWHERE. #4671 (Yangkuan Liu)
  • Adicionada a capacidade de iniciar uma replicated table sem metadados no zookeeper no modo readonly. #4691 (alesapin)
  • Corrigida a oscilação da barra de progresso no clickhouse-client. O problema era mais perceptível ao usar FORMAT Null com Streaming Queries. #4811 (alexey-milovidov)
  • Permite desabilitar, por usuário, funções com a biblioteca hyperscan para limitar o uso de recursos potencialmente excessivo e descontrolado. #4816 (alexey-milovidov)
  • Adicionado logging do número da versão em todos os erros. #4824 (proller)
  • Adicionada uma restrição às funções multiMatch que exige que o tamanho da string caiba em unsigned int. Também foi adicionado um limite para o número de argumentos das funções multiSearch. #4834 (Danila Kutenin)
  • Melhorado o uso do espaço temporário de trabalho e o tratamento de erros no Hyperscan. #4866 (Danila Kutenin)
  • Preenche system.graphite_detentions a partir da configuração de tabela das tabelas com engine *GraphiteMergeTree. #4584 (Mikhail f. Shiryaev)
  • Renomeia a função trigramDistance para ngramDistance e adiciona mais funções com CaseInsensitive e UTF. #4602 (Danila Kutenin)
  • Melhorado o cálculo de índices de data skipping. #4640 (Nikita Vasilev)
  • Mantém colunas comuns, DEFAULT, MATERIALIZED e ALIAS em uma única lista (corrige o problema #2867). #4707 (Alex Zatelepin)

Correção de bugs

  • Evita std::terminate em caso de falha de alocação de memória. Agora, a exceção std::bad_alloc é lançada como esperado. #4665 (alexey-milovidov)
  • Corrige a leitura de capnproto a partir do buffer. Às vezes, os arquivos não eram carregados com sucesso via HTTP. #4674 (Vladislav)
  • Corrigido o erro Unknown log entry type: 0 após a consulta OPTIMIZE TABLE FINAL. #4683 (Amos Bird)
  • Argumentos incorretos para as funções hasAny ou hasAll podem causar falha de segmentação. #4698 (alexey-milovidov)
  • Pode haver deadlock durante a execução da consulta DROP DATABASE dictionary. #4701 (alexey-milovidov)
  • Corrigido comportamento indefinido nas funções median e quantile. #4702 (hcz)
  • Corrige a detecção do nível de compressão quando network_compression_method está em minúsculas. Quebrado na v19.1. #4706 (proller)
  • Corrigida a falha que ignorava a configuração <timezone>UTC</timezone> (corrige o problema #4658). #4718 (proller)
  • Corrigido o comportamento da função histogram com tabelas Distributed. #4741 (olegkv)
  • Corrigido o aviso do tsan destroy of a locked mutex. #4742 (alexey-milovidov)
  • Corrigido um alerta do TSan durante o encerramento devido a uma condição de corrida no uso dos logs do sistema. Corrigido um possível erro de uso após liberação durante o encerramento quando part_log está habilitado. #4758 (alexey-milovidov)
  • Correção na reverificação de partes em ReplicatedMergeTreeAlterThread em caso de erro. #4772 (Nikolai Kochetov)
  • As operações aritméticas sobre estados intermediários de funções de agregação não funcionavam com argumentos constantes (como resultados de subconsulta). #4776 (alexey-milovidov)
  • Sempre delimite os nomes de colunas com crases nos metadados. Caso contrário, é impossível criar uma tabela com uma coluna chamada index (o servidor não reiniciará devido a uma consulta ATTACH malformada nos metadados). #4782 (alexey-milovidov)
  • Corrigido travamento em ALTER ... MODIFY ORDER BY na tabela Distributed. #4790 (TCeason)
  • Correção de segfault em JOIN ON com enable_optimize_predicate_expression habilitado. #4794 (Winter Zhang)
  • Corrigido bug que adicionava uma linha extra após consumir uma mensagem protobuf do Kafka. #4808 (Vitaly Baranov)
  • Corrige falha de JOIN entre coluna não anulável e anulável. Corrige NULLs nas chaves do lado direito em ANY JOIN + join_use_nulls. #4815 (Artem Zuikov)
  • Correção de falha de segmentação no clickhouse-copier. #4835 (proller)
  • Corrigida uma condição de corrida em SELECT na system.tables caso a tabela seja renomeada ou alterada simultaneamente. #4836 (alexey-milovidov)
  • Corrigida uma condição de corrida ao buscar uma parte de dados que já estava obsoleta. #4839 (alexey-milovidov)
  • Corrigida uma rara condição de corrida que pode ocorrer durante RENAME de tabelas da família MergeTree. #4844 (alexey-milovidov)
  • Corrigida falha de segmentação na função arrayIntersect. A falha de segmentação podia ocorrer se a função fosse chamada com uma combinação de argumentos constantes e normais. #4847 (Lixiang Qian)
  • Foi corrigida a leitura da coluna Array(LowCardinality) no raro caso em que a coluna continha uma longa sequência de arrays vazios. #4850 (Nikolai Kochetov)
  • Corrige falha em FULL/RIGHT JOIN ao fazer join entre Nullable e não Nullable. #4855 (Artem Zuikov)
  • Corrigida a exceção No message received durante a busca de partes entre réplicas. #4856 (alesapin)
  • Corrigido um resultado incorreto da função arrayIntersect no caso de vários valores repetidos em um único array. #4871 (Nikolai Kochetov)
  • Corrige uma condição de corrida durante consultas ALTER COLUMN concorrentes que poderia levar ao travamento do servidor (corrige o problema #3421). #4592 (Alex Zatelepin)
  • Corrigido resultado incorreto em FULL/RIGHT JOIN com coluna constante. #4723 (Artem Zuikov)
  • Correção de duplicatas em GLOBAL JOIN com asterisco. #4705 (Artem Zuikov)
  • Corrigida a inferência de parâmetros em ALTER MODIFY da coluna CODEC quando o tipo da coluna não é especificado. #4883 (alesapin)
  • As funções cutQueryStringAndFragment() e queryStringAndFragment() agora funcionam corretamente quando a URL contém um fragmento e não tem query. #4894 (Vitaly Baranov)
  • Corrige um bug raro quando a configuração min_bytes_to_use_direct_io é maior que zero, que ocorre quando a thread precisa voltar a posição de leitura no arquivo da coluna. #4897 (alesapin)
  • Corrige tipos de argumentos incorretos em funções de agregação com argumentos LowCardinality (corrige o problema #4919). #4922 (Nikolai Kochetov)
  • Corrigida a qualificação incorreta de nomes em GLOBAL JOIN. #4969 (Artem Zuikov)
  • Corrigido o resultado da função toISOWeek para o ano de 1970. #4988 (alexey-milovidov)
  • Corrigida a duplicação das consultas DROP, TRUNCATE e OPTIMIZE ao serem executadas com ON CLUSTER para a família de tabelas ReplicatedMergeTree*. #4991 (alesapin)

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

  • A configuração insert_sample_with_metadata foi renomeada para input_format_defaults_for_omitted_fields. #4771 (Artem Zuikov)
  • Adicionada a configuração max_partitions_per_insert_block (com valor padrão de 100). Se o bloco inserido contiver um número maior de partições, uma exceção será lançada. Defina como 0 se quiser remover o limite (não recomendado). #4845 (alexey-milovidov)
  • As funções de multipesquisa foram renomeadas (multiPosition para multiSearchAllPositions, multiSearch para multiSearchAny, firstMatch para multiSearchFirstIndex). #4780 (Danila Kutenin)

Melhoria de desempenho

  • Otimiza o buscador Volnitsky por meio de inlining, proporcionando cerca de 5–10% de melhoria nas buscas para consultas com muitos padrões de busca ou muitos bigramas semelhantes. #4862 (Danila Kutenin)
  • Corrige um problema de desempenho quando a configuração use_uncompressed_cache é maior que zero, que ocorria quando todos os dados lidos estavam no cache. #4913 (alesapin)

Melhorias de Build/Testes/Empacotamento

  • Reforço da build de depuração: mapeamentos de memória mais granulares e ASLR; adição de proteção de memória para mark cache e índice. Isso permite encontrar mais bugs de sobrescrita de memória nos casos em que ASan e MSan não conseguem detectá-los. #4632 (alexey-milovidov)
  • Adicionado suporte às variáveis do cmake ENABLE_PROTOBUF, ENABLE_PARQUET e ENABLE_BROTLI, o que permite habilitar/desabilitar os recursos acima (assim como já podemos fazer para librdkafka, mysql etc.). #4669 (Silviu Caragea)
  • Adicionada a capacidade de imprimir a lista de processos e os stacktraces de todas as threads se algumas consultas ficarem travadas após a execução dos testes. #4675 (alesapin)
  • Adicionadas novas tentativas em caso do erro Connection loss no clickhouse-test. #4682 (alesapin)
  • Adicionadas a build do FreeBSD com Vagrant e a build com Thread Sanitizer ao script de empacotamento. #4712 #4748 (alesapin)
  • Agora, durante a instalação, é solicitada ao usuário a senha do usuário 'default'. #4725 (proller)
  • Suprimido um aviso na biblioteca rdkafka. #4740 (alexey-milovidov)
  • Permitida a compilação sem SSL. #4750 (proller)
  • Adicionada uma forma de iniciar a imagem do clickhouse-server como um usuário personalizado. #4753 (Mikhail f. Shiryaev)
  • Atualizado o Boost em contrib para 1.69. #4793 (proller)
  • Desabilitado o uso de mremap quando compilado com Thread Sanitizer. Surpreendentemente, o TSan não intercepta mremap (embora intercepte mmap, munmap), o que leva a falsos positivos. Corrigido o relatório do TSan em testes Stateful. #4859 (alexey-milovidov)
  • Adicionado um teste que verifica o uso de schema de format por meio da interface HTTP. #4864 (Vitaly Baranov)

Versão 19.4 do ClickHouse

Versão do ClickHouse 19.4.4.33, 2019-04-17

correção de bugs

  • Evita-se std::terminate em caso de falha na alocação de memória. Agora, a exceção std::bad_alloc é lançada como esperado. #4665 (alexey-milovidov)
  • Corrige a leitura de capnproto a partir do buffer. Às vezes, os arquivos não eram carregados com sucesso via HTTP. #4674 (Vladislav)
  • Corrigido o erro Unknown log entry type: 0 após a consulta OPTIMIZE TABLE FINAL. #4683 (Amos Bird)
  • Argumentos incorretos nas funções hasAny ou hasAll podem causar segfault. #4698 (alexey-milovidov)
  • Pode ocorrer um deadlock ao executar a consulta DROP DATABASE dictionary. #4701 (alexey-milovidov)
  • Corrigido o comportamento indefinido nas funções median e quantile. #4702 (hcz)
  • Corrige a detecção do nível de compressão quando network_compression_method está em minúsculas. Com problema desde a v19.1. #4706 (proller)
  • Corrigido o não reconhecimento da configuração <timezone>UTC</timezone> (corrige o problema #4658). #4718 (proller)
  • Corrigido o comportamento da função histogram em tabelas Distributed. #4741 (olegkv)
  • Corrigido o aviso do tsan destroy of a locked mutex. #4742 (alexey-milovidov)
  • Corrigido um relatório do TSan durante o desligamento devido a uma race condition no uso dos logs do sistema. Corrigido um possível use-after-free durante o desligamento quando part_log está habilitado. #4758 (alexey-milovidov)
  • Corrigida a reverificação das partes em ReplicatedMergeTreeAlterThread em caso de erro. #4772 (Nikolai Kochetov)
  • As operações aritméticas sobre estados intermediários de funções de agregação não estavam funcionando para argumentos constantes (como resultados de subconsulta). #4776 (alexey-milovidov)
  • Sempre coloque os nomes das colunas nos metadados entre crases. Caso contrário, é impossível criar uma tabela com uma coluna chamada index (o servidor não reinicia devido a uma consulta ATTACH malformada nos metadados). #4782 (alexey-milovidov)
  • Corrigido o travamento em ALTER ... MODIFY ORDER BY na tabela Distributed. #4790 (TCeason)
  • Corrige uma falha de segmentação em JOIN ON com enable_optimize_predicate_expression habilitado. #4794 (Winter Zhang)
  • Corrigido um erro que adicionava uma linha extra após consumir uma mensagem protobuf do Kafka. #4808 (Vitaly Baranov)
  • Corrigida uma falha de segmentação no clickhouse-copier. #4835 (proller)
  • Corrigida uma condição de corrida ao fazer SELECT em system.tables caso a tabela seja renomeada ou alterada simultaneamente. #4836 (alexey-milovidov)
  • Corrigida a condição de corrida ao buscar uma parte de dados já obsoleta. #4839 (alexey-milovidov)
  • Corrigida uma rara condição de corrida que pode ocorrer durante o RENAME de uma tabela da família MergeTree. #4844 (alexey-milovidov)
  • Corrigida falha de segmentação na função arrayIntersect. A falha de segmentação podia ocorrer se a função fosse chamada com uma combinação de argumentos constantes e não constantes. #4847 (Lixiang Qian)
  • Foi corrigida a leitura da coluna Array(LowCardinality) em um caso raro em que a coluna continha uma longa sequência de arrays vazios. #4850 (Nikolai Kochetov)
  • Corrigida a exceção No message received ao obter partes entre réplicas. #4856 (alesapin)
  • Corrigido o resultado incorreto da função arrayIntersect no caso de haver vários valores repetidos em um único array. #4871 (Nikolai Kochetov)
  • Corrige uma condição de corrida durante consultas ALTER COLUMN executadas concorrentemente que poderiam levar ao travamento do servidor (corrige o problema #3421). #4592 (Alex Zatelepin)
  • Corrigida a inferência de parâmetros no ALTER MODIFY da coluna CODEC quando o tipo da coluna não é especificado. #4883 (alesapin)
  • As funções cutQueryStringAndFragment() e queryStringAndFragment() agora funcionam corretamente quando a URL contém um fragmento e nenhuma consulta. #4894 (Vitaly Baranov)
  • Corrige um bug raro que ocorre quando a configuração min_bytes_to_use_direct_io é maior que zero e a thread precisa retroceder no arquivo da coluna. #4897 (alesapin)
  • Corrige tipos de argumentos incorretos para funções de agregação com argumentos LowCardinality (corrige o problema #4919). #4922 (Nikolai Kochetov)
  • Corrigido o resultado da função toISOWeek para o ano de 1970. #4988 (alexey-milovidov)
  • Corrige a duplicação das consultas DROP, TRUNCATE e OPTIMIZE quando executadas com ON CLUSTER na família de tabelas ReplicatedMergeTree*. #4991 (alesapin)

Melhorias

  • Manter colunas normais, DEFAULT, MATERIALIZED e ALIAS em uma única lista (corrige o problema #2867). #4707 (Alex Zatelepin)

Versão 19.4.3.11 do ClickHouse, 2019-04-02

Correções de bugs

  • Corrigida falha em FULL/RIGHT JOIN ao fazer JOIN entre Nullable e não Nullable. #4855 (Artem Zuikov)
  • Corrigida falha de segmentação em clickhouse-copier. #4835 (proller)

Melhoria em Build/Testes/Empacotamento

Versão 19.4.2.7 do ClickHouse, 2019-03-30

Correções de bugs

  • Corrigida a leitura da coluna Array(LowCardinality) no caso raro em que a coluna continha uma longa sequência de arrays vazios. #4850 (Nikolai Kochetov)

Versão do ClickHouse 19.4.1.3, 2019-03-19

Correções de bugs

  • Corrigidas consultas remotas que contêm LIMIT BY e LIMIT. Anteriormente, se LIMIT BY e LIMIT fossem usados em uma consulta remota, LIMIT podia ser aplicado antes de LIMIT BY, o que resultava em um resultado filtrado em excesso. #4708 (Constantin S. Pan)

Versão do ClickHouse 19.4.0.49, 2019-03-09

Novos recursos

  • Adicionado suporte completo ao formato Protobuf (entrada e saída, incluindo estruturas de dados aninhadas). #4174 #4493 (Vitaly Baranov)
  • Adicionadas funções de bitmap com Roaring Bitmaps. #4207 (Andy Yang) #4568 (Vitaly Baranov)
  • Suporte ao formato Parquet. #4448 (proller)
  • Adicionada a distância de n-gram para comparação aproximada de strings. É semelhante às métricas q-gram da linguagem R. #4466 (Danila Kutenin)
  • Combinação das regras de rollup do Graphite a partir de padrões dedicados de agregação e retenção. #4426 (Mikhail f. Shiryaev)
  • Adicionados max_execution_speed e max_execution_speed_bytes para limitar o uso de recursos. Adicionada a configuração min_execution_speed_bytes para complementar a min_execution_speed. #4430 (Winter Zhang)
  • Implementada a função flatten. #4555 #4409 (alexey-milovidov, kzon)
  • Adicionadas as funções arrayEnumerateDenseRanked e arrayEnumerateUniqRanked (é como arrayEnumerateUniq, mas permite ajustar com precisão a profundidade do array para inspecionar arrays multidimensionais). #4475 (proller) #4601 (alexey-milovidov)
  • Múltiplas junções com algumas restrições: sem asteriscos, sem aliases complexos em ON/WHERE/GROUP BY/… #4462 (Artem Zuikov)

Correções de bugs

  • Esta versão também inclui todas as correções de bugs das versões 19.3 e 19.1.
  • Corrigido um bug nos índices de salto de dados: a ordem dos grânulos após INSERT estava incorreta. #4407 (Nikita Vasilev)
  • Corrigido o índice set para colunas Nullable e LowCardinality. Antes dessa correção, o índice set com coluna Nullable ou LowCardinality levava ao erro Data type must be deserialized with multiple streams ao selecionar. #4594 (Nikolai Kochetov)
  • Definido corretamente update_time na atualização completa do Dicionário executable. #4551 (Tema Novikov)
  • Corrigida a barra de progresso quebrada na versão 19.3. #4627 (filimonov)
  • Corrigidos valores inconsistentes do MemoryTracker quando a região de memória foi reduzida, em certos casos. #4619 (alexey-milovidov)
  • Corrigido o comportamento indefinido no ThreadPool. #4612 (alexey-milovidov)
  • Corrigido um travamento muito raro com a mensagem mutex lock failed: Invalid argument que podia acontecer quando uma tabela MergeTree era removida ao mesmo tempo que um SELECT era executado. #4608 (Alex Zatelepin)
  • Compatibilidade do driver ODBC com o tipo de dados LowCardinality. #4381 (proller)
  • FreeBSD: Ajuste para o erro AIOcontextPool: Found io_event with unknown id 0. #4438 (urgordeadbeef)
  • A tabela system.part_log foi criada independentemente da configuração. #4483 (alexey-milovidov)
  • Corrigido comportamento indefinido na função dictIsIn para dicionários de cache. #4515 (alesapin)
  • Corrigido um deadlock quando uma consulta SELECT bloqueia a mesma tabela várias vezes (por exemplo, a partir de threads diferentes ou ao executar várias subconsultas) e há uma consulta DDL simultânea. #4535 (Alex Zatelepin)
  • Desativar compile_expressions por padrão até termos nosso próprio contrib llvm e podermos testá-lo com clang e asan. #4579 (alesapin)
  • Evita std::terminate quando invalidate_query para a source externa de Dicionário clickhouse retorna um conjunto de resultados incorreto (vazio, com mais de uma linha ou mais de uma coluna). Corrigido o problema em que a invalidate_query era executada a cada cinco segundos, independentemente do lifetime. #4583 (alexey-milovidov)
  • Evita deadlock quando a invalidate_query de um dicionário com origem clickhouse envolvia a tabela system.dictionaries ou o banco de dados Dictionaries (caso raro). #4599 (alexey-milovidov)
  • Correções no CROSS JOIN com WHERE vazio. #4598 (Artem Zuikov)
  • Corrigido o segfault na função “replicate” quando é passado um argumento constante. #4603 (alexey-milovidov)
  • Corrigida a função lambda no otimizador de predicados. #4408 (Winter Zhang)
  • Múltiplas junções, múltiplas correções. #4595 (Artem Zuikov)

Melhorias

  • Suporte a aliases na cláusula JOIN ON para colunas da tabela à direita. #4412 (Artem Zuikov)
  • O resultado de múltiplas junções precisa ter nomes corretos para uso em subconsultas. Substitui aliases simples por nomes de origem no resultado. #4474 (Artem Zuikov)
  • Aprimora a lógica de push-down em instruções com JOIN. #4387 (Ivan)

Melhorias de desempenho

  • Heurísticas aprimoradas da otimização “move to PREWHERE”. #4405 (alexey-milovidov)
  • Uso de tabelas de lookup adequadas que utilizam a API da HashTable para chaves de 8 e 16 bits. #4536 (Amos Bird)
  • Desempenho da comparação de strings aprimorado. #4564 (alexey-milovidov)
  • Limpeza da fila de DDL distribuído em uma thread separada, para não desacelerar o loop principal que processa tarefas de DDL distribuído. #4502 (Alex Zatelepin)
  • Quando min_bytes_to_use_direct_io é definido como 1, nem todo arquivo era aberto no modo O_DIRECT, porque o tamanho dos dados a serem lidos às vezes era subestimado em um bloco compactado. #4526 (alexey-milovidov)

Melhorias de compilação/testes/empacotamento

  • Adicionado suporte ao clang-9 #4604 (alexey-milovidov)
  • Corrigidas instruções __asm__ incorretas (de novo) #4621 (Konstantin Podshumok)
  • Adicionada a possibilidade de especificar configurações para clickhouse-performance-test pela linha de comando. #4437 (alesapin)
  • Adicionados testes de Dictionaries aos testes de integração. #4477 (alesapin)
  • Adicionadas aos testes de desempenho automatizados as consultas do benchmark no site. #4496 (alexey-milovidov)
  • xxhash.h não existe no lz4 externo porque é um detalhe de implementação, e seus símbolos usam o namespace da macro XXH_NAMESPACE. Quando o lz4 é externo, o xxHash também precisa ser externo, e seus dependentes precisam fazer link com ele. #4495 (Orivej Desh)
  • Corrigido um caso em que a função de agregação quantileTiming podia ser chamada com argumento negativo ou de ponto flutuante (isso corrige o teste de fuzz com o sanitizer de comportamento indefinido). #4506 (alexey-milovidov)
  • Correção de erro ortográfico. #4531 (sdk2)
  • Corrigida a compilação no Mac. #4371 (Vitaly Baranov)
  • Correções de compilação para FreeBSD e várias configurações de compilação incomuns. #4444 (proller)

Versão 19.3 do ClickHouse

Versão 19.3.9.1 do ClickHouse, 2019-04-02

Correções de bugs

  • Corrigida falha em FULL/RIGHT JOIN ao fazer JOIN entre Nullable e não Nullable. #4855 (Artem Zuikov)
  • Corrigida falha de segmentação em clickhouse-copier. #4835 (proller)
  • Corrigida a leitura da coluna Array(LowCardinality) no raro caso de a coluna conter uma longa sequência de arrays vazios. #4850 (Nikolai Kochetov)

Melhoria de compilação/testes/empacotamento

Versão do ClickHouse 19.3.7, 2019-03-12

Correções de bugs

  • Corrigido o erro em #3920. Esse erro se manifesta como corrupção aleatória do cache (mensagens Unknown codec family code, Cannot seek through file) e falhas de segmentação. Esse bug apareceu pela primeira vez na versão 19.1 e está presente nas versões até 19.1.10 e 19.3.6. #4623 (alexey-milovidov)

Versão do ClickHouse 19.3.6, 2019-03-02

Correções de bugs

  • Quando há mais de 1000 threads em um pool de threads, std::terminate pode ocorrer ao encerrar uma thread. Azat Khuzhin #4485 #4505 (alexey-milovidov)
  • Agora é possível criar tabelas ReplicatedMergeTree* com comentários em colunas sem valores padrão e tabelas com codecs de coluna sem comentários nem valores padrão. Também foi corrigida a comparação de codecs. #4523 (alesapin)
  • Corrigida falha em JOIN com array ou tuple. #4552 (Artem Zuikov)
  • Corrigida falha no clickhouse-copier com a mensagem ThreadStatus not created. #4540 (Artem Zuikov)
  • Corrigido travamento ao desligar o servidor se DDLs distribuídos tivessem sido usados. #4472 (Alex Zatelepin)
  • Números incorretos de colunas eram exibidos na mensagem de erro sobre parsing de formato de texto para colunas com número maior que 10. #4484 (alexey-milovidov)

Melhorias de compilação/testes/empacotamento

  • Corrigida a compilação com AVX habilitado. #4527 (alexey-milovidov)
  • Habilitada a contabilização estendida e a contabilização de E/S com base em uma versão reconhecidamente adequada, em vez do kernel no qual é compilado. #4541 (nvartolomei)
  • Permitido ignorar a definição de core_dump.size_limit, emitindo um aviso em vez de gerar uma exceção se a definição do limite falhar. #4473 (proller)
  • Removidas as tags inline de void readBinary(...) em Field.cpp. Também foram unificados blocos redundantes de namespace DB. #4530 (hcz)

Versão do ClickHouse 19.3.5, 2019-02-21

Correções de bugs

  • Corrigido um bug no processamento de consultas HTTP de insert de grande volume. #4454 (alesapin)
  • Corrigida a quebra de compatibilidade com versões anteriores devido à implementação incorreta da configuração send_logs_level. #4445 (alexey-milovidov)
  • Corrigida a quebra de compatibilidade com versões anteriores da função de tabela remote, introduzida com comentários de coluna. #4446 (alexey-milovidov)

Versão 19.3.4 do ClickHouse, 2019-02-16

Melhorias

  • O tamanho do índice da tabela não era contabilizado nos limites de memória ao executar a consulta ATTACH TABLE. Foi eliminada a possibilidade de uma tabela não poder ser anexada após ter sido desanexada. #4396 (alexey-milovidov)
  • O limite máximo para o tamanho de strings e arrays recebidos do ZooKeeper foi ligeiramente aumentado. Isso permite continuar trabalhando com um tamanho maior de CLIENT_JVMFLAGS=-Djute.maxbuffer=... no ZooKeeper. #4398 (alexey-milovidov)
  • Permite reparar uma réplica abandonada mesmo que ela já tenha um grande número de nós em sua fila. #4399 (alexey-milovidov)
  • Adiciona um argumento obrigatório ao índice SET (número máximo de linhas armazenadas). #4386 (Nikita Vasilev)

Correções de bugs

  • Corrigido o resultado de WITH ROLLUP ao agrupar por uma única chave LowCardinality. #4384 (Nikolai Kochetov)
  • Corrigido um bug no índice set (um grânulo era descartado se contivesse mais de max_rows linhas). #4386 (Nikita Vasilev)
  • Muitas correções de build para FreeBSD. #4397 (proller)
  • Corrigida a substituição de aliases em consultas com subconsulta contendo o mesmo alias (problema #4110). #4351 (Artem Zuikov)

Melhorias de compilação/testes/empacotamento

  • Adicionada a possibilidade de executar clickhouse-server para testes sem estado em uma imagem Docker. #4347 (Vasily Nemkov)

Versão 19.3.3 do ClickHouse, 2019-02-13

Novos recursos

  • Adicionada a instrução KILL MUTATION, que permite remover mutações que, por algum motivo, ficaram travadas. Adicionados os campos latest_failed_part, latest_fail_time e latest_fail_reason à tabela system.mutations para facilitar a solução de problemas. #4287 (Alex Zatelepin)
  • Adicionada a função de agregação entropy, que calcula a entropia de Shannon. #4238 (Quid37)
  • Adicionada a capacidade de enviar consultas INSERT INTO tbl VALUES (.... ao servidor sem dividi-las nas partes query e data. #4301 (alesapin)
  • Adicionada uma implementação genérica da função arrayWithConstant. #4322 (alexey-milovidov)
  • Implementado o operador de comparação NOT BETWEEN. #4228 (Dmitry Naumov)
  • Implementado sumMapFiltered para permitir limitar o número de chaves cujos valores serão somados por sumMap. #4129 (Léo Ercolanelli)
  • Adicionado suporte a tipos Nullable na função de tabela mysql. #4198 (Emmanuel Donin de Rosière)
  • Suporte a expressões constantes arbitrárias na cláusula LIMIT. #4246 (k3box)
  • Adicionada a função de agregação topKWeighted, que recebe um argumento adicional com peso (inteiro sem sinal). #4245 (Andrew Golman)
  • StorageJoin agora oferece suporte à configuração join_any_take_last_row, que permite sobrescrever valores existentes com a mesma chave. #3973 (Amos Bird
  • Adicionada a função toStartOfInterval. #4304 (Vitaly Baranov)
  • Adicionado o formato RowBinaryWithNamesAndTypes. #4200 (Oleg V. Kozlyuk)
  • Adicionados os tipos de dados IPv4 e IPv6. Implementações mais eficientes das funções IPv*. #3669 (Vasily Nemkov)
  • Adicionada a função toStartOfTenMinutes(). #4298 (Vitaly Baranov)
  • Adicionado o formato de saída Protobuf. #4005 #4158 (Vitaly Baranov)
  • Adicionado suporte a brotli na interface HTTP para importação de dados (INSERTs). #4235 (Mikhail)
  • Adicionadas dicas quando o usuário comete erros de digitação no nome de uma função ou tipo no cliente de linha de comando. #4239 (Danila Kutenin)
  • Adicionado Query-Id ao cabeçalho de resposta HTTP do servidor. #4231 (Mikhail)

Recursos experimentais

  • Adicionados índices de data skipping minmax e set para a família de motores de tabela MergeTree. #4143 (Nikita Vasilev)
  • Adicionada a conversão de CROSS JOIN para INNER JOIN, quando possível. #4221 #4266 (Artem Zuikov)

Correções de bugs

  • Corrigido o erro Not found column para colunas duplicadas na seção JOIN ON. #4279 (Artem Zuikov)
  • Faz com que o comando START REPLICATED SENDS passe a iniciar envios replicados. #4229 (nvartolomei)
  • Corrigida a execução de funções de agregação com argumentos Array(LowCardinality). #4055 (KochetovNicolai)
  • Corrigido o comportamento incorreto ao executar a consulta INSERT ... SELECT ... FROM file(...) quando o arquivo tem formato CSVWithNames ou TSVWIthNames e a primeira linha de dados está ausente. #4297 (alexey-milovidov)
  • Corrigida falha ao recarregar o dicionário caso ele não esteja disponível. Esse bug apareceu na versão 19.1.6. #4188 (proller)
  • Corrigido o ALL JOIN para casos com duplicatas na tabela da direita. #4184 (Artem Zuikov)
  • Corrigida falha de segmentação com use_uncompressed_cache=1 e exceção devido a tamanho descompactado incorreto. Esse bug apareceu na versão 19.1.6. #4186 (alesapin)
  • Corrigido o bug em compile_expressions na comparação de datas grandes (maiores que int16). #4341 (alesapin)
  • Corrigido loop infinito ao selecionar a partir da função de tabela numbers(0). #4280 (alexey-milovidov)
  • Desativada temporariamente a otimização de predicado para ORDER BY. #3890 (Winter Zhang)
  • Corrigido o erro Illegal instruction ao usar funções de base64 em CPUs antigas. Esse erro só foi reproduzido quando o ClickHouse foi compilado com gcc-8. #4275 (alexey-milovidov)
  • Corrigido o erro No message received ao interagir com o PostgreSQL ODBC Driver por uma conexão TLS. Também corrige falha de segmentação ao usar o MySQL ODBC Driver. #4170 (alexey-milovidov)
  • Corrigido resultado incorreto quando argumentos Date e DateTime são usados nas ramificações do operador condicional (função if). Adicionado um caso genérico para a função if. #4243 (alexey-milovidov)
  • Os dicionários do ClickHouse agora são carregados no processo clickhouse. #4166 (alexey-milovidov)
  • Corrigido deadlock ao repetir SELECT em uma tabela com engine File após o erro No such file or directory. #4161 (alexey-milovidov)
  • Corrigida a condição de corrida ao consultar system.tables, que podia gerar o erro table does not exist. #4313 (alexey-milovidov)
  • clickhouse-client pode apresentar falha de segmentação ao sair, enquanto carrega dados para sugestões na linha de comando, se tiver sido executado no modo interativo. #4317 (alexey-milovidov)
  • Foi corrigido um bug em que a execução de mutações com operadores IN produzia resultados incorretos. #4099 (Alex Zatelepin)
  • Corrigido o erro em que, se houvesse um banco de dados com o mecanismo Dictionary, todos os dicionários eram forçados a carregar na inicialização do servidor e, se houvesse um dicionário com origem ClickHouse em localhost, o dicionário não podia ser carregado. #4255 (alexey-milovidov)
  • Corrigido erro ao tentar criar novamente os logs do sistema durante o desligamento do servidor. #4254 (alexey-milovidov)
  • Retornar corretamente o tipo correto e tratar adequadamente os bloqueios na função joinGet. #4153 (Amos Bird)
  • Adicionada a função sumMapWithOverflow. #4151 (Léo Ercolanelli)
  • Corrigida uma falha de segmentação com allow_experimental_multiple_joins_emulation. 52de2c (Artem Zuikov)
  • Corrigido bug de comparação incorreta entre Date e DateTime. #4237 (valexey)
  • Corrigido o teste de fuzzing com o sanitizador de comportamento indefinido: adicionada a verificação do tipo de parâmetro para a família de funções quantile*Weighted. #4145 (alexey-milovidov)
  • Corrigida uma rara condição de corrida em que a remoção de partes de dados antigas podia falhar com o erro File not found. #4378 (alexey-milovidov)
  • Corrige o pacote de instalação em que faltava o arquivo /etc/clickhouse-server/config.xml. #4343 (proller)

Melhorias em compilação, testes e empacotamento

  • Pacote Debian: corrigido o link /etc/clickhouse-server/preprocessed de acordo com a configuração. #4205 (proller)
  • Várias correções de compilação para FreeBSD. #4225 (proller)
  • Adicionada a capacidade de criar, preencher e remover tabelas no perftest. #4220 (alesapin)
  • Adicionado um script para verificar inclusões duplicadas. #4326 (alexey-milovidov)
  • Adicionada a capacidade de executar consultas por índice no teste de desempenho. #4264 (alesapin)
  • Agora é sugerido instalar o pacote com símbolos de depuração. #4274 (alexey-milovidov)
  • Refatoração do performance-test. Melhor logging e tratamento de sinais. #4171 (alesapin)
  • Adicionada documentação aos conjuntos de dados anonimizados do Yandex.Metrica. #4164 (alesapin)
  • Adicionada uma ferramenta para converter uma parte antiga particionada por mês para o formato com particionamento personalizado. #4195 (Alex Zatelepin)
  • Adicionada documentação sobre dois conjuntos de dados no S3. #4144 (alesapin)
  • Adicionado um script que cria o changelog a partir da descrição de pull requests. #4169 #4173 (KochetovNicolai) (KochetovNicolai)
  • Adicionado um módulo puppet para o ClickHouse. #4182 (Maxim Fedotov)
  • Adicionada documentação para um grupo de funções ainda não documentadas. #4168 (Winter Zhang)
  • Correções de compilação para ARM. #4210#4306 #4291 (proller) (proller)
  • Os testes de Dicionário agora podem ser executados a partir do ctest. #4189 (proller)
  • Agora /etc/ssl é usado como diretório padrão para certificados SSL. #4167 (alexey-milovidov)
  • Adicionada a verificação das instruções SSE e AVX na inicialização. #4234 (Igr)
  • O script de inicialização aguardará o servidor iniciar. #4281 (proller)

Alterações incompatíveis com versões anteriores

  • Removida a configuração allow_experimental_low_cardinality_type. Os tipos de dados LowCardinality já estão prontos para produção. #4323 (alexey-milovidov)
  • Reduzidos os tamanhos do cache de marcas e do cache não compactado de acordo com a quantidade de memória disponível. #4240 (Lopatin Konstantin
  • Adicionada a palavra-chave INDEX à consulta CREATE TABLE. Uma coluna com o nome index deve ser delimitada por acentos graves ou aspas duplas: `index`. #4143 (Nikita Vasilev)
  • sumMap agora promove o tipo do resultado em vez de gerar overflow. O comportamento antigo de sumMap pode ser obtido usando a função sumMapWithOverflow. #4151 (Léo Ercolanelli)

Melhorias de desempenho

  • std::sort substituído por pdqsort para consultas sem LIMIT. #4236 (Evgenii Pravda)
  • Agora, o servidor reutiliza threads do pool global de threads. Isso afeta o desempenho em alguns casos específicos. #4150 (alexey-milovidov)

Melhorias

  • Implementado suporte a AIO no FreeBSD. #4305 (urgordeadbeef)
  • SELECT * FROM a JOIN b USING a, b agora retorna as colunas a e b apenas da tabela à esquerda. #4141 (Artem Zuikov)
  • A opção -C do cliente agora funciona como a opção -c. #4232 (syominsergey)
  • Agora, a opção --password, quando usada sem valor, solicita a senha via stdin. #4230 (BSD_Conqueror)
  • Adicionado destaque para metacaracteres sem escape em literais de string que contêm expressões LIKE ou regexps. #4327 (alexey-milovidov)
  • Adicionado cancelamento de consultas HTTP somente leitura se o socket do cliente for fechado. #4213 (nvartolomei)
  • Agora o servidor informa o progresso para manter as conexões do cliente ativas. #4215 (Ivan)
  • Mensagem ligeiramente melhor com o motivo de uma consulta OPTIMIZE com a configuração optimize_throw_if_noop habilitada. #4294 (alexey-milovidov)
  • Adicionado suporte à opção --version para o servidor ClickHouse. #4251 (Lopatin Konstantin)
  • Adicionada a opção --help/-h ao clickhouse-server. #4233 (Yuriy Baranov)
  • Adicionado suporte a subconsultas escalares com resultado de estado de função de agregação. #4348 (Nikolai Kochetov)
  • Melhorado o tempo de desligamento do servidor e o tempo de espera de ALTERs. #4372 (alexey-milovidov)
  • Adicionadas informações sobre a configuração replicated_can_become_leader a system.replicas e adicionado logging caso a réplica não tente se tornar líder. #4379 (Alex Zatelepin)

Lançamento do ClickHouse 19.1

Lançamento do ClickHouse 19.1.14, 2019-03-14

  • Corrigido o erro Column ... queried more than once, que pode ocorrer se a configuração asterisk_left_columns_only estiver definida como 1 ao usar GLOBAL JOIN com SELECT * (caso raro). O problema não existe na versão 19.3 nem nas mais recentes. 6bac7d8d (Artem Zuikov)

Lançamento do ClickHouse 19.1.13, 2019-03-12

Esta versão contém exatamente o mesmo conjunto de patches da versão 19.3.7.

Lançamento do ClickHouse 19.1.10, 2019-03-03

Esta versão contém exatamente o mesmo conjunto de correções da 19.3.6.

Lançamento do ClickHouse 19.1

Lançamento do ClickHouse 19.1.9, 2019-02-21

Correções de bugs

  • Corrigida a incompatibilidade com versões anteriores devido à implementação incorreta da configuração send_logs_level. #4445 (alexey-milovidov)
  • Corrigida a incompatibilidade com versões anteriores da função de tabela remote, introduzida com os comentários em colunas. #4446 (alexey-milovidov)

Lançamento do ClickHouse 19.1.8, 2019-02-16

Correções de bugs

  • Corrige o pacote de instalação quando falta o arquivo /etc/clickhouse-server/config.xml. #4343 (proller)

Lançamento do ClickHouse 19.1

Lançamento do ClickHouse 19.1.7, 2019-02-15

Correções de bugs

  • Retornar corretamente o tipo correto e lidar adequadamente com bloqueios na função joinGet. #4153 (Amos Bird)
  • Corrigido erro ao tentar recriar os logs do sistema durante o desligamento do servidor. #4254 (alexey-milovidov)
  • Corrigido erro: se houver um banco de dados com engine Dictionary, todos os dicionários serão forçados a carregar na inicialização do servidor e, se houver um dicionário com origem ClickHouse em localhost, ele não poderá ser carregado. #4255 (alexey-milovidov)
  • Corrigido um bug em que, ao executar mutações contendo operadores IN, eram produzidos resultados incorretos. #4099 (Alex Zatelepin)
  • clickhouse-client pode ter uma falha de segmentação ao sair enquanto carrega dados para sugestões de linha de comando, se tiver sido executado em modo interativo. #4317 (alexey-milovidov)
  • Corrigida uma condição de corrida em que selecionar de system.tables podia gerar o erro table does not exist. #4313 (alexey-milovidov)
  • Corrigido um deadlock ao repetir SELECT em uma tabela com mecanismo File após o erro No such file or directory. #4161 (alexey-milovidov)
  • Corrigido um problema: os dicionários locais do ClickHouse são carregados via TCP, mas deveriam ser carregados no próprio processo. #4166 (alexey-milovidov)
  • Corrigido o erro No message received ao usar o PostgreSQL ODBC Driver em uma conexão TLS. Também corrigida a falha de segmentação ao usar o MySQL ODBC Driver. #4170 (alexey-milovidov)
  • Desativada temporariamente a otimização de predicados para ORDER BY. #3890 (Winter Zhang)
  • Corrigido loop infinito ao selecionar a partir da função de tabela numbers(0). #4280 (alexey-milovidov)
  • Corrigido o bug de compile_expressions na comparação de datas grandes (maiores que o tipo int16). #4341 (alesapin)
  • Corrigida falha de segmentação com uncompressed_cache=1 e exceção devido a tamanho não compactado incorreto. #4186 (alesapin)
  • Corrigido ALL JOIN com duplicatas na tabela à direita. #4184 (Artem Zuikov)
  • Corrigido o comportamento incorreto ao executar a consulta INSERT ... SELECT ... FROM file(...) quando o arquivo está no formato CSVWithNames ou TSVWIthNames e a primeira linha de dados está ausente. #4297 (alexey-milovidov)
  • Corrigida a execução de funções agregadas com argumentos Array(LowCardinality). #4055 (KochetovNicolai)
  • Pacote Debian: corrigido o link /etc/clickhouse-server/preprocessed conforme a configuração. #4205 (proller)
  • Corrigido o teste de fuzz no sanitizador para comportamento indefinido: adicionada verificação do tipo do parâmetro para a família de funções quantile*Weighted. #4145 (alexey-milovidov)
  • Faz o comando START REPLICATED SENDS iniciar envios replicados. #4229 (nvartolomei)
  • Corrigido o erro Not found column para colunas duplicadas na seção JOIN ON. #4279 (Artem Zuikov)
  • Agora, /etc/ssl é usado como diretório padrão para certificados SSL. #4167 (alexey-milovidov)
  • Corrigido travamento na recarga do Dicionário caso o dicionário não esteja disponível. #4188 (proller)
  • Corrigido bug na comparação incorreta entre Date e DateTime. #4237 (valexey)
  • Corrigido o resultado incorreto quando argumentos Date e DateTime são usados nas ramificações do operador condicional (função if). Adicionado um caso genérico para a função if. #4243 (alexey-milovidov)

Lançamento do ClickHouse 19.1.6, 2019-01-24

Novos Recursos

  • Codecs de compressão personalizados por coluna para tabelas. #3899 #4111 (alesapin, Winter Zhang, Anatoly)
  • Adicionado o codec de compressão Delta. #4052 (alesapin)
  • Agora é possível usar ALTER em codecs de compressão. #4054 (alesapin)
  • Adicionadas as funções left, right, trim, ltrim, rtrim, timestampadd, timestampsub para compatibilidade com o padrão SQL. #3826 (Ivan Blinkov)
  • Suporte à gravação em tabelas HDFS e na função de tabela hdfs. #4084 (alesapin)
  • Adicionadas funções para pesquisar várias strings constantes em um grande haystack: multiPosition, multiSearch, firstMatch, também com variantes -UTF8, -CaseInsensitive e -CaseInsensitiveUTF8. #4053 (Danila Kutenin)
  • Pruning de shards não usados se a consulta SELECT filtrar pela chave de sharding (configuração optimize_skip_unused_shards). #3851 (Gleb Kanterov, Ivan)
  • O engine Kafka pode ignorar uma certa quantidade de parsing error por block. #4094 (Ivan)
  • Adicionado suporte à avaliação de modelos multiclasse do CatBoost. A função modelEvaluate retorna uma tupla com previsões brutas por classe para modelos multiclasse. libcatboostmodel.so deve ser compilado com #607. #3959 (KochetovNicolai)
  • Adicionadas as funções filesystemAvailable, filesystemFree, filesystemCapacity. #4097 (Boris Granveaud)
  • Adicionadas as funções de hash xxHash64 e xxHash32. #3905 (filimonov)
  • Adicionada a função de hash gccMurmurHash (hash Murmur no estilo do GCC), que usa a mesma seed de hash que o gcc #4000 (sundyli)
  • Adicionadas as funções de hash javaHash, hiveHash. #3811 (shangshujie365)
  • Adicionada a função de tabela remoteSecure. A função funciona como remote, mas usa uma connection segura. #4088 (proller)

Recursos experimentais

  • Adicionada a emulação de múltiplos JOINs (configuração allow_experimental_multiple_joins_emulation). #3946 (Artem Zuikov)

Correções de bugs

  • Limitou por padrão a configuração compiled_expression_cache_size para reduzir o consumo de memória. #4041 (alesapin)
  • Correção de um bug que causava travamentos nas threads que executam ALTERs em tabelas Replicated e na thread que atualiza a configuração a partir do ZooKeeper. #2947 #3891 #3934 (Alex Zatelepin)
  • Corrigida uma condição de corrida ao executar uma tarefa ALTER distribuída. Essa condição fazia com que mais de uma réplica tentasse executar a tarefa, e todas as réplicas, exceto uma, falhassem com um erro no ZooKeeper. #3904 (Alex Zatelepin)
  • Corrige um bug em que os elementos de configuração from_zk não eram atualizados após uma solicitação ao ZooKeeper atingir o tempo limite. #2947 #3947 (Alex Zatelepin)
  • Corrigido bug de prefixo incorreto em máscaras de sub-rede IPv4. #3945 (alesapin)
  • Corrigido travamento (std::terminate) em casos raros, quando não é possível criar uma nova thread por esgotamento de recursos. #3956 (alexey-milovidov)
  • Corrigido um bug na execução da função de tabela remote quando restrições incorretas eram usadas em getStructureOfRemoteTable. #4009 (alesapin)
  • Corrigido um vazamento de sockets do netlink. Eles foram colocados em um pool do qual nunca eram removidos, e novos sockets eram criados ao iniciar uma nova thread quando todos os sockets atuais estavam em uso. #4017 (Alex Zatelepin)
  • Corrigido um bug ao fechar o diretório /proc/self/fd antes de todos os fds de /proc serem lidos após fazer fork do subprocesso odbc-bridge. #4120 (alesapin)
  • Corrigida a conversão monotônica de Fixed String para UInt no caso de uso de String na chave primária. #3870 (Winter Zhang)
  • Corrigido erro no cálculo da monotonicidade da função de conversão de inteiros. #3921 (alexey-milovidov)
  • Corrigida uma falha de segmentação nas funções arrayEnumerateUniq e arrayEnumerateDense em caso de alguns argumentos inválidos. #3909 (alexey-milovidov)
  • Corrige UB em StorageMerge. #3910 (Amos Bird)
  • Corrigida falha de segmentação nas funções addDays, subtractDays. #3913 (alexey-milovidov)
  • Erro corrigido: as funções round, floor, trunc, ceil podem retornar um resultado incorreto quando executadas com um argumento inteiro e uma escala negativa muito grande. #3914 (alexey-milovidov)
  • Corrigido um bug causado por ‘kill query sync’ que causava um core dump. #3916 (muVulDeePecker)
  • Correção de bug de atraso excessivo após esvaziamento da fila de replicação. #3928 #3932 (alesapin)
  • Corrigido o uso excessivo de memória ao inserir em tabela com chave primária LowCardinality. #3955 (KochetovNicolai)
  • Corrigida a serialização de LowCardinality no formato Native em caso de arrays vazios. #3907 #4011 (KochetovNicolai)
  • Corrigido resultado incorreto ao usar distinct com uma única coluna numérica LowCardinality. #3895 #4012 (KochetovNicolai)
  • Corrigida a agregação especializada com chave LowCardinality (no caso em que a configuração compile está habilitada). #3886 (KochetovNicolai)
  • Corrigido o encaminhamento de usuário e senha em consultas a tabelas replicadas. #3957 (alesapin) (小路)
  • Corrigida uma condição de corrida muito rara que pode ocorrer ao listar tabelas no banco de dados Dictionary durante a recarga dos dicionários. #3970 (alexey-milovidov)
  • Corrigido resultado incorreto ao usar HAVING com ROLLUP ou CUBE. #3756 #3837 (Sam Chou)
  • Corrigidos aliases de colunas em consultas com sintaxe JOIN ON e tabelas distribuídas. #3980 (Winter Zhang)
  • Corrigido um erro na implementação interna de quantileTDigest (encontrado por Artem Vakhrushev). Esse erro nunca ocorre no ClickHouse e era relevante apenas para quem usa diretamente a base de código do ClickHouse como biblioteca. #3935 (alexey-milovidov)

Melhorias

  • Suporte a IF NOT EXISTS em instruções ALTER TABLE ADD COLUMN, juntamente com IF EXISTS em DROP/MODIFY/CLEAR/COMMENT COLUMN. #3900 (Boris Granveaud)
  • Função parseDateTimeBestEffort: suporte aos formatos DD.MM.YYYY, DD.MM.YY, DD-MM-YYYY, DD-Mon-YYYY, DD/Month/YYYY e semelhantes. #3922 (alexey-milovidov)
  • CapnProtoInputStream agora oferece suporte a estruturas irregulares. #4063 (Odin Hultgren Van Der Horst)
  • Melhoria de usabilidade: adicionada uma verificação para garantir que o processo do servidor seja iniciado pelo proprietário do diretório de dados. Não é permitido iniciar o servidor como root se os dados pertencerem a um usuário que não seja root. #3785 (sergey-v-galtsev)
  • Lógica aprimorada na verificação de colunas obrigatórias durante a análise de consultas com junções. #3930 (Artem Zuikov)
  • Reduzido o número de conexões no caso de um grande número de tabelas Distributed em um único servidor. #3726 (Winter Zhang)
  • Adicionado suporte à linha de totais para a consulta WITH TOTALS no ODBC driver. #3836 (Maksim Koritckiy)
  • Permitido o uso de Enums como inteiros dentro da função if. #3875 (Ivan)
  • Adicionada a configuração low_cardinality_allow_in_native_format. Se desabilitada, o tipo LowCadrinality não será usado no formato Native. #3879 (KochetovNicolai)
  • Removidos alguns objetos redundantes do cache de expressões compiladas para reduzir o uso de memória. #4042 (alesapin)
  • Adicionada uma verificação para que a consulta SET send_logs_level = 'value' aceite um valor válido. #3873 (Sabyanin Maxim)
  • Corrigida a verificação do tipo de dados nas funções de conversão de tipo. #3896 (Winter Zhang)

Melhorias de desempenho

  • Adicionada uma configuração do MergeTree use_minimalistic_part_header_in_zookeeper. Se habilitada, as tabelas Replicated armazenarão os metadados de partes compactas em um único znode da parte. Isso pode reduzir drasticamente o tamanho do snapshot do ZooKeeper (especialmente se as tabelas tiverem muitas colunas). Observe que, após habilitar essa configuração, você não poderá fazer downgrade para uma versão que não a suporte. #3960 (Alex Zatelepin)
  • Adicionada uma implementação baseada em DFA para as funções sequenceMatch e sequenceCount quando o padrão não contiver tempo. #4004 (Léo Ercolanelli)
  • Melhoria de desempenho na serialização de números inteiros. #3968 (Amos Bird)
  • Adicionado preenchimento com zeros à esquerda ao PODArray para que o elemento -1 seja sempre válido e preenchido com zero. Isso é usado para o cálculo de offsets sem desvios condicionais. #3920 (Amos Bird)
  • Foi revertida a versão do jemalloc que levava à degradação de desempenho. #4018 (alexey-milovidov)

Alterações incompatíveis com versões anteriores

  • O recurso não documentado ALTER MODIFY PRIMARY KEY foi removido porque foi substituído pelo comando ALTER MODIFY ORDER BY. #3887 (Alex Zatelepin)
  • A função shardByHash foi removida. #3833 (alexey-milovidov)
  • Proibido o uso de subconsultas escalares com resultado do tipo AggregateFunction. #3865 (Ivan)

Melhorias em compilação, testes e empacotamento

  • Adicionado suporte para a build PowerPC (ppc64le). #4132 (Danila Kutenin)
  • Testes funcionais com persistência de estado são executados em um conjunto de dados disponível publicamente. #3969 (alexey-milovidov)
  • Corrigido erro em que o servidor não conseguia iniciar e exibia a mensagem bash: /usr/bin/clickhouse-extract-from-config: Operation not permitted no Docker ou no systemd-nspawn. #4136 (alexey-milovidov)
  • Biblioteca rdkafka atualizada para v1.0.0-RC5. Foi usado o cppkafka em vez da interface C de baixo nível. #4025 (Ivan)
  • Atualizada a biblioteca mariadb-client. Corrigido um dos problemas encontrados pelo UBSan. #3924 (alexey-milovidov)
  • Algumas correções para as compilações do UBSan. #3926 #3021 #3948 (alexey-milovidov)
  • Adicionadas execuções de testes a cada commit com build UBSan.
  • Adicionadas execuções do analisador estático PVS-Studio a cada commit.
  • Corrigidos os bugs encontrados pelo PVS-Studio. #4013 (alexey-milovidov)
  • Corrigidos problemas de compatibilidade da glibc. #4100 (alexey-milovidov)
  • Mover as imagens Docker para 18.10 e adicionar arquivo de compatibilidade para glibc >= 2.28 #3965 (alesapin)
  • Adiciona uma variável de ambiente caso o usuário não queira usar chown nos diretórios da imagem Docker do servidor. #3967 (alesapin)
  • Habilitada a maior parte dos avisos de -Weverything no clang. Habilitado -Wpedantic. #3986 (alexey-milovidov)
  • Adicionados mais alguns avisos disponíveis apenas no clang 8. #3993 (alexey-milovidov)
  • Vincule a libLLVM, em vez de vincular a bibliotecas LLVM individuais, ao usar vinculação dinâmica. #3989 (Orivej Desh)
  • Adicionadas variáveis do sanitizer para imagens de teste. #4072 (alesapin)
  • O pacote Debian clickhouse-server passará a recomendar o pacote libcap2-bin para usar a ferramenta setcap para definir capacidades. Isso é opcional. #4093 (alexey-milovidov)
  • Tempo de compilação aprimorado, includes corrigidos. #3898 (proller)
  • Adicionados testes de desempenho para funções de hash. #3918 (filimonov)
  • Corrigidas dependências cíclicas entre bibliotecas. #3958 (proller)
  • Melhoria na compilação com pouca memória disponível. #4030 (proller)
  • Adicionado um script de teste para reproduzir a degradação de desempenho no jemalloc. #4036 (alexey-milovidov)
  • Corrigidos erros de ortografia em comentários e literais de string no dbms. #4122 (maiha)
  • Correção de erros de digitação em comentários. #4089 (Evgenii Pravda)
Última modificação em 10 de junho de 2026