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
VIEWdo ClickHouse; agora, a leitura desses dicionários não causa mais o erroThere is no query. #8351 (Nikolai Kochetov) - Corrigida a verificação de se um host cliente é permitido pela
host_regexpespecificada em users.xml. #8241, #8342 (Vitaly Baranov) RENAME TABLEpara 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 sucessivastableA->tableB,tableC->tableA. #8306 (tavplubix)- Os dicionários externos
range_hashedcriados 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
segfaultemINSERT 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
EXISTSera usada sem o qualificadorTABLEouDICTIONARY, como emEXISTS t. #8213 (alexey-milovidov) - Corrigido o tipo de retorno das funções
randerandConstantno caso de argumento do tipoNullable. Agora, as funções sempre retornamUInt32e nuncaNullable(UInt32). #8204 (Nikolai Kochetov) - Corrigido o
DROP DICTIONARY IF EXISTS db.dict; agora ele não lança exceção sedbnã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 partexecutado 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-copierdevido 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
StorageFileeStorageHDFSagora é limitado para evitar exceder o limite de memória. #7981 (alesapin) - Corrigida a consulta
CHECK TABLEpara tabelas*MergeTreesem 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_optimizationfoi 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_filtercompatível comLowCardinalityeNullable#7363 #7561 (Nikolai Kochetov) - Adicionada a função
isValidJSONpara verificar se a string fornecida é um JSON válido. #5910 #7293 (Vdimir) - Implementada a função
arrayCompact#7328 (Memo) - Criada a função
hexpara números do tipo Decimal. Ela funciona comohex(reinterpretAsString()), mas não remove os bytes zero finais. #7355 (Mikhail Korotov) - Adicionadas as funções
arrayFillearrayReverseFill, 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_numpara 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)))noIN. Corrige #7364 #7366 (achimbab) - Adicionado suporte a
SQL_TINYINTeSQL_BIGINT, e corrigido o tratamento dos tiposSQL_FLOATno ODBC Bridge. #7491 (Denis Glazachev) - Corrigida a agregação (
avge quantis) em colunas decimais vazias #7431 (Andrey Konyaev) - Corrigido o
INSERTem Distributed com colunasMATERIALIZED#7377 (Azat Khuzhin) - Faz com que
MOVE PARTITIONfuncione 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
ReplicatedMergeTreeem 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_rationão era lido da configuração de discos #7645 (Vladimir Chebotarev) - Corrige erro em tabelas que contêm apenas colunas
Tupleou 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
MergeTreeordenadas portuple(). Em casos raros, isso podia levar ao erroCan't adjust last granuledurante umSELECT. #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/eshadow/#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 blockao 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
concatquando todos os argumentos eramFixedStringdo 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
Nullablereconhecidas 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_sizeaMergeTreeSettings#7412 (Artem Zuikov) - Consultas com
HAVINGe semGROUP BYassumem agrupamento por constante. Assim,SELECT 1 HAVING 1agora 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
rangeficou quase igual ao do Python. #7518 (sundyli) - Adicionadas colunas
constraintsà tabelasystem.settings#7553 (Vitaly Baranov) - Melhor formato Null para o TCP handler, permitindo usar
select ignore(<expression>) from table format Nullpara 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 aoaddBatchdo 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_globsaprimorado 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
- Adicionada a gramática ANTLR4 para o dialeto SQL do ClickHouse #7595 #7596 (alexey-milovidov)
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 emClickHouseDictionarySource. #9262 (tabplubix) - Agora, os merges em segundo plano na família de motores de tabela
*MergeTreepreservam a ordem dos volumes da política de armazenamento com mais precisão. #8549 (Vladimir Chebotarev) - Evita perda de dados no
Kafkaem casos raros, quando ocorre uma exceção após a leitura do sufixo, mas antes do commit. Corrige #9378. Relacionado: #7175 #9507 (filimonov) - Corrige um bug que levava ao encerramento do servidor ao tentar usar / excluir uma tabela
Kafkacriada com parâmetros incorretos. Corrige #9494. Incorpora #9507. #9513 (filimonov) - Permite usar
MaterializedViewcom subconsultas sobre tabelasKafka. #8197 (filimonov)
Novo recurso
- Adicionada a opção
deduplicate_blocks_in_dependent_materialized_viewspara 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:
credentialsehttp-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
arraySplitearrayReverseSplit, 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 ...)eoptimize_read_in_orderfor 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çõesnow(),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_msna tabelasystem.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_sizepassou 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 exceededno servidor, que causava a exceçãoAttempt to read after eofno 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-optionaoclickhouse-testpara 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_cleannã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
mallocda 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
ParserCreateQueryem 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()eemplace()de tabelas hash. #7026 (Alexander Kuzmenkov) - Correção de
getMultipleValuesFromConfigno 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. RenomearThreadPool::schedule(...)paraThreadPool::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_variantem 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
inputpara ler dados de entrada na consultaINSERT SELECT. #5450 (palasonic1) #6832 (Anton Popov) - Adiciona o layout de dicionário
sparse_hashed, funcionalmente equivalente ao layouthashed, 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à consultaSHOW. #6944 (Philipp Malkovsky) - Adiciona a função
bitmapSubsetLimit(bitmap, range_start, limit), que retorna o subconjunto dos menoreslimitvalores no conjunto que não sejam menores querange_start. #6957 (Zhichang Yu) - Adiciona as funções
bitmapMinebitmapMax. #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 = 1para usar esta funcionalidade. O Merge Join ainda está em desenvolvimento. #6940 (Artem Zuikov) - Adiciona a engine
S3e 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>noconfig.xmldo servidor. #6969 (Azat Khuzhin) - Adiciona a conversão automática do tipo
TparaLowCardinality(T)ao inserir dados em uma coluna do tipoLowCardinality(T)no formato Native via HTTP. #6891 (Nikolai Kochetov) - Adiciona a capacidade de usar a função
hexsem precisar dereinterpretAsStringparaFloat32,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 = 1para 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
libsparsehashporsparsehash-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 selectem caso de bloco vazio no fluxo de entrada. #6834 #6862 #6911 (Nikolai Kochetov) - Correção da função
АrrayEnumerateUniqRankedpara arrays vazios nos parâmetros #6928 (proller) - Corrigidas consultas complexas com array joins e subconsultas globais. #6934 (Ivan)
- Corrigido o erro
Unknown identifierem ORDER BY e GROUP BY com múltiplos JOINs #7022 (Artem Zuikov) - Corrigido aviso do
MSanao executar função com argumentoLowCardinality. #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
АrrayEnumerateUniqRankedcom arrays vazios nos parâmetros. #6928 (proller) - Corrigido o nome da subconsulta em consultas com
ARRAY JOINeGLOBAL IN subquerycom 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
groupUniqArraycom argumento de array vazio. Ela era causada pela inserção de umPaddedPODArrayvazio 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 FILLparaORDER BY. (continuação de #5069) #6610 (Anton Popov) - Modificador
WITH TIESparaLIMIT. (continuação de #5069) #6610 (Anton Popov) - Analisar o literal
NULLsem aspas como NULL (se a configuraçãoformat_csv_unquoted_null_literal_as_null=1estiver habilitada). Inicializar campos nulos com valores padrão se o tipo de dado desse campo não for Nullable (se a configuraçãoinput_format_null_as_default=1estiver habilitada). #5990 #6055 (tavplubix) - Suporte a curingas em caminhos de table functions
fileehdfs. 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}')eselect * 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 desystem.eventsesystem.metricscom 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:
demangleeaddressToLine. A funçãosymbolizeAddressfoi renomeada paraaddressToSymbolpor consistência. A funçãoaddressToSymbolretornará o nome com mangling por motivos de desempenho, e será necessário aplicardemangle. Foi adicionada a configuraçãoallow_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 listaVALUESproposta 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:
sigmoidetanh(ú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á emhaystack. Um token é uma substring de comprimento máximo entre dois caracteres ASCII não alfanuméricos (ou os limites dehaystack). 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 aliasuser()para compatibilidade com o MySQL. #6470 (Alex Krash) - Novas funções de agregação
quantilesExactInclusiveequantilesExactExclusive, propostas em #5885. #6477 (dimarub2000) - Função
bitmapRange(bitmap, range_begin, range_end)que retorna um novo conjunto com o intervalo especificado (sem incluirrange_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
_partitione_timestampao 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 recursoLIVE VIEWpode 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 typesna funçãobitmapContains. #6136 #6146 #6156 (dimarub2000) - Corrigida falha de segmentação quando
optimize_skip_unused_shardsestá 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 aDROP TABLEeSELECTconcorrentes emsystem.partsousystem.parts_columns. Corrigida condição de corrida na preparação de consultas de mutação. Corrigido deadlock causado porOPTIMIZEem 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
quantileemediancomNullable(Decimal128). #6378 (Artem Zuikov) - Corrigido um possível resultado incompleto retornado por uma consulta
SELECTcom condiçãoWHEREna chave primária que continha conversão para o tipo Float. Isso era causado por uma verificação incorreta de monotonicidade na funçãotoFloat. #6248 #6374 (dimarub2000) - Verificada a configuração
max_expanded_ast_elementspara mutações. Limpadas as mutações apósTRUNCATE 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 COLUMNe na mesclagem vertical quando uma das partes mescladas/alteradas está vazia (0 linhas) #6746 #6780 (alesapin) - Corrigido bug na conversão de tipos
LowCardinalityemAggregateFunctionFactory. Isso corrige #6257. #6281 (Nikolai Kochetov) - Corrige comportamento incorreto e possíveis falhas de segmentação nas funções agregadas
topKetopKWeighted. #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
nullIfao enviarNULLcomo 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_nullshabilitado. #6705 (Artem Zuikov) - Desabilita as substituições de
Poco::AbstractConfigurationem consultas noclickhouse-client. #6706 (alexey-milovidov) - Evita deadlock em
REPLACE PARTITION. #6677 (alexey-milovidov) - O uso de
arrayReducecom 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 ROLLUPeWITH CUBEdeGROUP BYcom 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 emstartup(),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
libunwindao acessar a estruturaThreadStatusnã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 comoSELECT 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
TRUNCATEem tabela Replicated. #6695 (alexey-milovidov) - Corrigida a leitura seguindo a ordem da chave de ordenação. #6189 (Anton Popov)
- Corrigida a consulta
ALTER TABLE ... UPDATEpara tabelas comenable_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_speedoumax_execution_speed_bytesestá definido. Corrigidos falsos erros comoEstimated query execution time (inf seconds) is too long. #5547 #6232 (alexey-milovidov) - Corrigidos problemas no uso de colunas
MATERIALIZEDe aliases emMaterializedView. #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov) - Corrigido o comportamento do
FormatFactorypara 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 consultaALTER ... MODIFY TTL. Foram adicionadas as consultasSYSTEM STOP/START TTL MERGESpara 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_rundeInterpreterSelectQuery. … #6375 (Nikolai Kochetov) - Suporte a
ASOF JOINcom a cláusulaON. #6211 (Artem Zuikov) - Melhor suporte a skip indexes para mutações e replicação. Suporte à consulta
MATERIALIZE/CLEAR INDEX ... IN PARTITION.UPDATE x = xrecalcula todos os índices que usam a colunax. #5053 (Nikita Vasilev) - Permite
ATTACHde visualizações em tempo real (por exemplo, na inicialização do servidor) independentemente da configuraçãoallow_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,hdfsoferecem suporte a colunas ALIAS. #6255 (alexey-milovidov) - Gerar uma exceção se o arquivo
config.dnã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
Distributedque devem ser considerados por uma consulta de leitura (paraoptimize_skip_unused_shards= 1), o ClickHouse agora verifica as condições das cláusulasprewhereewhereda instrução SELECT. #6521 (Alexander Kazakov) - Ativado o
SIMDJSONpara 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
strictemwindowFunnel(). Quandostrictestá definido,windowFunnel()aplica condições apenas a valores únicos. #6548 (achimbab) - Interface do
mysqlxx::Poolmais segura. #6150 (avasiliev) - A largura das linhas de opções ao executar com a opção
--helpagora 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_DATAeTYPE_MISMATCHfoi alterado do padrão500 Internal Server Errorpara400 Bad Request. #6271 (Alexander Rodin) - Mova o objeto Join de
ExpressionActionparaAnalyzedJoin.ExpressionAnalyzereExpressionActionnão têm mais conhecimento da classeJoin. Sua lógica fica oculta por trás da interfaceAnalyzedJoin. #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
RENAMEde 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 usarwhere_conditionda configuração com o aliaspartition_keyna 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/ExpressionAnalyzerparaAnalyzedJoin. #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 BYeORDER 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
SELECTpode 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 consultaDROP. Isso levará a mensagens falsas de “Tentativa de adquirir bloqueio exclusivo de forma recursiva”. #6771 (alexey-milovidov) - Separado
ExpressionAnalyzer.appendJoin(). Preparado espaço emExpressionAnalyzerparaMergeJoin. #6524 (Artem Zuikov) - Adicionado o plugin de autenticação
mysql_native_passwordao servidor de compatibilidade com MySQL. #6194 (Yuriy Baranov) - Menos chamadas a
clock_gettime; corrigida a compatibilidade de ABI entre debug/release emAllocator(problema insignificante). #6197 (alexey-milovidov) - Mova
collectUsedColumnsdeExpressionAnalyzerparaSyntaxAnalyzer.SyntaxAnalyzeragora gerarequired_source_columnspor conta própria. #6416 (Artem Zuikov) - Adicionada a configuração
joined_subquery_requires_aliaspara exigir aliases para subconsultas e funções de tabela noFROMquando houver mais de uma tabela presente (ou seja, consultas com JOINs). #6733 (Artem Zuikov) - Classe
GetAggregatesVisitorextraída deExpressionAnalyzer. #6458 (Artem Zuikov) system.query_log: alterado o tipo de dado da colunatypeparaEnum. #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
compilefuncione. Em versões anteriores, o usuário podia receber erros comocannot open crti.o,unable to find library -lcetc. #6309 (alexey-milovidov) - Validação adicional da entrada que pode vir de uma réplica maliciosa. #6303 (alexey-milovidov)
- Agora, o arquivo
clickhouse-obfuscatorestá disponível no pacoteclickhouse-client. Nas versões anteriores, ele estava disponível comoclickhouse 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_idsasystem.processesesystem.query_logpara 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_mscomo zero, porque o valor atual (cinco segundos) não faz sentido. Em raras circunstâncias, essa configuração tem alguma utilidade. Adicionadas as configuraçõesreplace_running_query_max_wait_ms,kafka_max_wait_mseconnection_pool_max_wait_mspara evitar ambiguidades. #6692 (alexey-milovidov) - Separar
SelectQueryExpressionAnalyzerdeExpressionAnalyzer. Manter este último para consultas que não sejamSELECT. #6499 (Artem Zuikov) - Removidos os formatos de entrada e saída duplicados. #6239 (Nikolai Kochetov)
- Permitir ao usuário sobrescrever as configurações
poll_intervaleidle_connection_timeoutna conexão. #6230 (alexey-milovidov) MergeTreeagora 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 queexpressionstêm prefixo coincidente com a chave de ordenação em tabelasMergeTree. Essa otimização é controlada pela configuraçãooptimize_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
FastOpspara as funçõesexp,log,sigmoid,tanh. A FastOps é uma biblioteca rápida de matemática vetorial de Michael Parakhin (CTO da Yandex). O desempenho das funçõesexpelogfoi melhorado em mais de 6 vezes. As funçõesexpelogcom argumentoFloat32retornarãoFloat32(em versões anteriores, sempre retornavamFloat64). Agoraexp(nan)pode retornarinf. O resultado das funçõesexpelogpode 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
simdjsonao eliminar a alocação dinâmica emParsedJson::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 denumbers. 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
SIGPROFcomo 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_dictionariescaso 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
RENAMEde 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
-Wshadowao GCC. #6325 (kreuzerkrieg) - Removido o código obsoleto de suporte ao
mimalloc. #6715 (alexey-milovidov) zlib-ngdetermina as capacidades do x86 e salva essas informações em variáveis globais. Isso é feito na chamadadefalteInit, 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_castde 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
onceparaloop. #6536 (Nikolai Kochetov) odbc-bridge.cppdefinemain(), portanto não deve ser incluído emclickhouse-lib. #6538 (Orivej Desh)- Teste de travamento em
FULL|RIGHT JOINcom 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::filesystemporstd::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çãoIN. #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_dictionariesfoi 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
librarycom 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
TinyLogdurante 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/deleteao 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
hyperscantodos 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-9no contêinerdocker/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
catBoostPoole o armazenamentoCatBoostPool, raramente usados. Se você usou essa função de tabela, envie um e-mail parafeedback@clickhouse.com. Observe que a integração com o CatBoost permanece e continuará sendo suportada. #6279 (alexey-milovidov) ANY RIGHT JOINeANY FULL JOINdesabilitados por padrão. Defina a configuraçãoany_join_distinct_right_table_keyspara 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
DROPem 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
recvinfinitas no socket. #6386 (alesapin) - Corrigido o uso excessivo de CPU ao executar a função
JSONExtractRawsobre 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
urltinha 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
ASTno índice Set. #6510 #6651 (Nikita Vasilev) - Corrigido o parsing de valores
AggregateFunctionembutidos 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.partse na consultaALTER. #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
INcom 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
Decimaltipos 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,ODBCeJDBCagora funciona corretamente para consultasSELECT ... WHEREcom várias expressõesAND. #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 ... UPDATEpara tabelas comenable_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 deDROP TABLEeSELECTemsystem.partsousystem.parts_columns. Corrigida uma condição de corrida na preparação de consultas de mutação. Corrigido um deadlock causado porOPTIMIZEem 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 DELETEem 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()estochasticLogisticRegression(), 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
RENAMEagora 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_fieldsestá 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 formatosJSONEachRoweCSV*. 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=1para 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
DoubleDeltadeInt64para valores altos deDoubleDelta; aprimorada a codificaçãoDoubleDeltapara dados aleatórios emInt32. #5998 (Vasily Nemkov) - Corrigida a superestimação de
max_rows_to_readquando a configuraçãomerge_tree_uniform_read_distributioné definida como 0. #6019 (alexey-milovidov)
Aprimoramento
- Gera uma exceção se o arquivo
config.dnão tiver o mesmo elemento raiz do arquivo de configuração #6123 (dimarub2000)
Melhoria de desempenho
Melhoria de compilação/testes/empacotamento
- Relatar o uso de memória em testes de desempenho. #5899 (akuzm)
- Corrigir a compilação com
libcxxexterno #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 COLUMNe 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
mrkpara 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 identifierem 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
АrrayEnumerateUniqRankedquando 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
JSONExtractao extrair umaTuplede JSON. #6718 (Vitaly Baranov) - Corrigida possível perda de dados após a consulta
ALTER DELETEem 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
nullIfpara 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 UPDATEouALTER DELETElongos 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 ... UPDATEpara tabelas comenable_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 deDROP TABLEeSELECTemsystem.partsousystem.parts_columns. Corrige uma condição de corrida na preparação de consultas de mutação. Corrige deadlock causado porOPTIMIZEem 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
arrayReducecom argumentos constantes. #6326 (alexey-milovidov) - Corrigida a monotonicidade de
toFloat(). #6374 (dimarub2000) - Corrige segfault com
optimize_skip_unused_shardshabilitado 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
topKetopKWeighted. #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
MergeeDistributed#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_intervaleidle_connection_timeoutna 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
LowCardinalityemAggregateFunctionFactory. Isso corrige #6257. #6281 (Nikolai Kochetov) - Corrigida a interpretação de configurações
boola partir das stringstrueefalseem arquivos de configuração. #6278 (alesapin) - Corrigido um bug raro com cabeçalhos de stream incompatíveis em consultas à tabela
Distributedsobre uma tabelaMergeTree, quando parte deWHEREé movida paraPREWHERE. #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
Kafkaainda 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 ROLLUPeWITH CUBEdeGROUP BYcom 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_callpara 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ãoNullable, caso ela não contenha Nulls (por exemplo, em uma consulta comoSELECT 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 emstartup(), oMergeTreeBlockOutputStream::write()pode tentar usá-lo antes da inicialização. Basta verificar se ele está inicializado. #6080 (Ivan)
Melhorias em Build/Testes/Empacotamento
- Adicionados pacotes oficiais
rpm. #5740 (proller) (alesapin) - Adicionada a possibilidade de gerar pacotes
.rpme.tgzcom o scriptpackager. #5769 (alesapin) - Correções no sistema de build “Arcadia”. #6223 (proller)
Alteração incompatível com versões anteriores
Kafkaestá 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
DoubleDeltaeGorilla#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 capabilityCAP_SYS_NICEpara que funcione. Isso implementa #5858 #5909 (alexey-milovidov) - Implementadas as colunas
_topic,_offset,_keypara 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)egroupArrayMovingAvg(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
geoToH3da 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,checkDataPartsempre falhava para part com colunaLowCardinality. #5832 (alesapin) - Evita conexões que ficam penduradas quando o pool de threads do servidor está cheio. Isso é importante para connections da table function
remoteou 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
UCTem vez deUTC. 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 CLUSTERpassarão a ser executadas diretamente na réplica líder. #5757 (alesapin) - Correção de
coalesceemColumnConstcomColumnNullable+ alterações relacionadas. #5755 (Artem Zuikov) - Corrija o
ReadBufferFromKafkaConsumerpara que continue lendo novas mensagens apóscommit(), mesmo que tenha ficado travado antes #5852 (Ivan) - Corrigidos os resultados de
FULLeRIGHTJOIN ao fazer join em chavesNullablena 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-freeno ClusterCopier, causado por um watch que tentava usar um objeto do copier já removido. #5871 (Nikolai Kochetov) - Corrigido o retorno de um ponteiro
StringRefincorreto por algumas implementações deIColumn::deserializeAndInsertFromArena. Esse bug afetava apenas os testes unitários. #5973 (Nikolai Kochetov) - Evita que colunas de origem e colunas intermediárias de
array joinmascarem 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 TABLEfunciona 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)
simdjsonatualizado. 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
Enumcomo sinônimo deEnum8ouEnum16. #5886 (dimarub2000) - Variante de transposição total de bits para o codec
T64. Pode proporcionar melhor compressão comzstd. #5742 (Artem Zuikov) - Agora, condições com a função
startsWithpodem usar a chave primária. Isso corrige #5310 e #5882 #5919 (dimarub2000) - Permitir o uso do
clickhouse-copierem uma topologia de cluster com replicação cruzada, permitindo nome de banco de dados vazio. #5745 (nvartolomei) - Usar
UTCcomo fuso horário padrão em um sistema semtzdata(por exemplo, um contêiner Docker simples). Antes deste patch, a mensagem de erroCould not determine local time zoneera 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_typepode ser usada sem efeito. 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov
Melhoria de desempenho
- Aumentado o número de streams para
SELECTna tabela Merge, para uma distribuição mais uniforme das threads. Adicionada a configuraçãomax_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 (
ArenaeArenaWithFreeLists), 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
bitTestem 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-undefinedforç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
Kafkanão funciona nesta versão.- Ativa
adaptive_index_granularity= 10MB por padrão para novas tabelasMergeTree. 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,SEHierarchynã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 quebitmapHasAnyse 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 SENDSpara controlar inserções assíncronas em tabelasDistributed. #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
arrayEnumerateUniqRankedpara 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_nullsnã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 emHDFS. #5684 (Xindong Peng)
Melhoria
- Tratar células vazias em
CSVcomo valores padrão quando a configuraçãoinput_format_defaults_for_omitted_fieldsestiver 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 porgperfcom uma lista gerada a partir do arquivo: https://publicsuffix.org/list/public_suffix_list.dat. (por exemplo, agora reconhecemos o domínioac.ukcomo não significativo). #5030 (Guillaume Tassery) - Adoção do tipo de dados
IPv6nas tabelas do sistema; colunas de informações do cliente unificadas emsystem.processesesystem.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
ALTERON CLUSTER. #5593 #5613 (sundyli) - Suporte à seção
<logger>no arquivo de configuração doclickhouse-local. #5540 (proller) - Permite executar consulta com a função de tabela
remotenoclickhouse-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
TestKeepercomo uma implementação da interface do ZooKeeper usada para testes #5643 (alexey-milovidov) (levushkin aleksej) - A partir de agora, os testes
.sqlpodem 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_formatpara os formatosPretty#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-clientem um tty, caso ela não tenha sido definida nos argumentos #5092 (proller) - Implementa as funções
dictGetedictGetOrDefaultpara 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
PrettySpacequando 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
bitmapHasAnyem 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 TTLno 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
needlesconstantes têm pelo menos 16 KB de comprimento. O algoritmo ignorava ou sobrescrevia os resultados anteriores, o que pode levar a um resultado incorreto demultiSearchAny. #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_formatelow_cardinality_allow_in_native_formatnã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 ALLmisto. 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_counteload_factorincorretos de dicionário hash na tabelasystem.dictionaries. #5440 (Azat Khuzhin)
Melhoria de compilação/testes/empacotamento
- Corrigida a compilação sem suporte à compressão HTTP
Brotli(variável cmakeENABLE_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.basenameem Python,basenameem 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 BYouLIMIT m OFFSET n BYpara 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 umAggregatingMergeTree. Isso só pode ser usado com funções simples comoany,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,kurtPopekurtSamppara 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*OrZeroetoDecimal*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 umpatternconstante (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 tabelasMergeTree. #5353 (akuzm) - Adicionada a função
ngramSearchpara 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
geohashEncodeegeohashDecode. #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çãotimeSeriesGroupRateSum, que calcula a taxa das séries temporais e, em seguida, soma essas taxas. #4542 (Yangkuan Liu) - Adicionadas as funções
IPv4CIDRtoIPv4RangeeIPv6CIDRtoIPv6Rangepara 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_headersativada. 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_totalpara 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çõesjsonExtract<type>foram renomeadas paraJSONExtract<type>. Quando algo dá errado, essas funções retornam os valores correspondentes, e nãoNULL. A funçãoJSONExtractfoi modificada; agora ela obtém o tipo de retorno a partir do último parâmetro e não injetaNullable. 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
ifemultiIfnão dependem mais doNullableda condição, mas sim dos ramos, para compatibilidade com SQL. #5238 (Jian Wu) - O predicado
Inagora gera resultadoNullquando a entrada éNull, assim como a funçãoEqual. #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_batchpara 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
windowFunnelofereça suporte a outros tipos de inteiros sem sinal. #5320 (sundyli) - Permitir sobrepor a coluna virtual
_tableno mecanismo Merge. #5325 (Ivan) - Adicionar suporte nas funções de agregação
sequenceMatcha 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
leastSqrrenomeadas parasimpleLinearRegression,LinearRegressionparalinearRegressioneLogisticRegressionparalogisticRegression. #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
concatpara 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 forcerestartnã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
DecimalparaNullable(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
uniqHLLeuniqCombinede de funções matemáticas comolog. #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
quantileExactcom Decimals. #5304 (Artem Zuikov)
Documentação
- Tradução da documentação do
CollapsingMergeTreepara 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
bitmapHasAnyebitmapHasAll, análogas às funçõeshasAnyehasAllpara arrays. #5279 (Sergi Vladykin)
Correções de bugs
- Corrige falha de segmentação em
minmaxINDEX 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 .. PREWHEREem coluna com DEFAULT #5397 (proller) - Corrige a consulta
ALTER MODIFY TTLemReplicatedMergeTree. #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_countpara 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 consultaALTER 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
INSERTem 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 opcionalmax_sizeque limita o tamanho do array resultante. Esse comportamento é semelhante ao da funçãogroupArray(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
- Use a ordenação radix para classificar por uma única coluna numérica em
ORDER BYsemLIMIT. #5106, #4439 (Evgenii Pravda, alexey-milovidov)
Documentação
- Tradução da documentação de alguns motores de tabela para o chinês. #5107, #5094, #5087 (张风啸), #5068 (never lee)
Melhorias de compilação/testes/empacotamento
- Impressão correta de caracteres UTF-8 no
clickhouse-test. #5084 (alexey-milovidov) - Adicionado um parâmetro de linha de comando ao clickhouse-client para sempre carregar dados de sugestão. #5102 (alexey-milovidov)
- Correção de alguns avisos do PVS-Studio. #5082 (alexey-milovidov)
- Atualização do LZ4 #5040 (Danila Kutenin)
- Adicionado gperf aos requisitos de compilação para o próximo pull request #5030. #5110 (proller)
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
mysqleodbce 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
brotlipara respostas HTTP (Accept-Encoding: br) #4388 (Mikhail) - Adicionada a nova função
isValidUTF8para 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
- Aceleração significativa do ASOF JOIN #4924 (Martijn Bakker)
Alterações incompatíveis com versões anteriores
- O cabeçalho HTTP
Query-Idfoi renomeado paraX-ClickHouse-Query-Idpor 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 DISTINCTcomJOIN#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-serverem 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çãotest.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
- Corrigido o tipo da configuração
max_partitions_per_insert_block, de booleano para UInt64. #5028 (Mohammad Hossein Sekhavat)
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
multiSearchFirstPositionfoi 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,inelike). #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 JOINagora são reescritos comoCROSS JOIN. Depois, são reescritos comoINNER JOIN, se possível. #4661 (Artem Zuikov)
Melhoria
topKetopKWeightedagora oferecem suporte aloadFactorpersonalizado (corrige o problema #4252). #4634 (Kirill Danshin)- Permite usar
parallel_replicas_count > 1mesmo 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
Bufferagora oferece suporte aPREWHERE. #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 Nullcom Streaming Queries. #4811 (alexey-milovidov) - Permite desabilitar, por usuário, funções com a biblioteca
hyperscanpara 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
multiMatchque exige que o tamanho da string caiba emunsigned int. Também foi adicionado um limite para o número de argumentos das funçõesmultiSearch. #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_detentionsa partir da configuração de tabela das tabelas com engine*GraphiteMergeTree. #4584 (Mikhail f. Shiryaev) - Renomeia a função
trigramDistanceparangramDistancee adiciona mais funções comCaseInsensitiveeUTF. #4602 (Danila Kutenin) - Melhorado o cálculo de índices de data skipping. #4640 (Nikita Vasilev)
- Mantém colunas comuns,
DEFAULT,MATERIALIZEDeALIASem uma única lista (corrige o problema #2867). #4707 (Alex Zatelepin)
Correção de bugs
- Evita
std::terminateem caso de falha de alocação de memória. Agora, a exceçãostd::bad_allocé lançada como esperado. #4665 (alexey-milovidov) - Corrige a leitura de
capnprotoa partir do buffer. Às vezes, os arquivos não eram carregados com sucesso via HTTP. #4674 (Vladislav) - Corrigido o erro
Unknown log entry type: 0após a consultaOPTIMIZE TABLE FINAL. #4683 (Amos Bird) - Argumentos incorretos para as funções
hasAnyouhasAllpodem 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
medianequantile. #4702 (hcz) - Corrige a detecção do nível de compressão quando
network_compression_methodestá 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
histogramcom tabelasDistributed. #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
ReplicatedMergeTreeAlterThreadem 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 consultaATTACHmalformada nos metadados). #4782 (alexey-milovidov) - Corrigido travamento em
ALTER ... MODIFY ORDER BYna tabelaDistributed. #4790 (TCeason) - Correção de segfault em
JOIN ONcomenable_optimize_predicate_expressionhabilitado. #4794 (Winter Zhang) - Corrigido bug que adicionava uma linha extra após consumir uma mensagem protobuf do Kafka. #4808 (Vitaly Baranov)
- Corrige falha de
JOINentre coluna não anulável e anulável. CorrigeNULLsnas chaves do lado direito emANY 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
SELECTnasystem.tablescaso 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
RENAMEde 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 JOINao fazer join entre Nullable e não Nullable. #4855 (Artem Zuikov) - Corrigida a exceção
No message receiveddurante a busca de partes entre réplicas. #4856 (alesapin) - Corrigido um resultado incorreto da função
arrayIntersectno caso de vários valores repetidos em um único array. #4871 (Nikolai Kochetov) - Corrige uma condição de corrida durante consultas
ALTER COLUMNconcorrentes que poderia levar ao travamento do servidor (corrige o problema #3421). #4592 (Alex Zatelepin) - Corrigido resultado incorreto em
FULL/RIGHT JOINcom coluna constante. #4723 (Artem Zuikov) - Correção de duplicatas em
GLOBAL JOINcom asterisco. #4705 (Artem Zuikov) - Corrigida a inferência de parâmetros em
ALTER MODIFYda colunaCODECquando o tipo da coluna não é especificado. #4883 (alesapin) - As funções
cutQueryStringAndFragment()equeryStringAndFragment()agora funcionam corretamente quando aURLconté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
toISOWeekpara o ano de 1970. #4988 (alexey-milovidov) - Corrigida a duplicação das consultas
DROP,TRUNCATEeOPTIMIZEao serem executadas comON CLUSTERpara a família de tabelasReplicatedMergeTree*. #4991 (alesapin)
Alteração incompatível com versões anteriores
- A configuração
insert_sample_with_metadatafoi renomeada parainput_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 (
multiPositionparamultiSearchAllPositions,multiSearchparamultiSearchAny,firstMatchparamultiSearchFirstIndex). #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_PARQUETeENABLE_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 lossnoclickhouse-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
mremapquando compilado com Thread Sanitizer. Surpreendentemente, o TSan não interceptamremap(embora interceptemmap,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::terminateem caso de falha na alocação de memória. Agora, a exceçãostd::bad_allocé lançada como esperado. #4665 (alexey-milovidov) - Corrige a leitura de
capnprotoa partir do buffer. Às vezes, os arquivos não eram carregados com sucesso via HTTP. #4674 (Vladislav) - Corrigido o erro
Unknown log entry type: 0após a consultaOPTIMIZE TABLE FINAL. #4683 (Amos Bird) - Argumentos incorretos nas funções
hasAnyouhasAllpodem 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
medianequantile. #4702 (hcz) - Corrige a detecção do nível de compressão quando
network_compression_methodestá 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
histogramem tabelasDistributed. #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
ReplicatedMergeTreeAlterThreadem 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 consultaATTACHmalformada nos metadados). #4782 (alexey-milovidov) - Corrigido o travamento em
ALTER ... MODIFY ORDER BYna tabelaDistributed. #4790 (TCeason) - Corrige uma falha de segmentação em
JOIN ONcomenable_optimize_predicate_expressionhabilitado. #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
SELECTemsystem.tablescaso 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
RENAMEde 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 receivedao obter partes entre réplicas. #4856 (alesapin) - Corrigido o resultado incorreto da função
arrayIntersectno caso de haver vários valores repetidos em um único array. #4871 (Nikolai Kochetov) - Corrige uma condição de corrida durante consultas
ALTER COLUMNexecutadas concorrentemente que poderiam levar ao travamento do servidor (corrige o problema #3421). #4592 (Alex Zatelepin) - Corrigida a inferência de parâmetros no
ALTER MODIFYda colunaCODECquando o tipo da coluna não é especificado. #4883 (alesapin) - As funções
cutQueryStringAndFragment()equeryStringAndFragment()agora funcionam corretamente quando aURLconté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
toISOWeekpara o ano de 1970. #4988 (alexey-milovidov) - Corrige a duplicação das consultas
DROP,TRUNCATEeOPTIMIZEquando executadas comON CLUSTERna família de tabelasReplicatedMergeTree*. #4991 (alesapin)
Melhorias
- Manter colunas normais,
DEFAULT,MATERIALIZEDeALIASem 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 JOINao 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
- Adicionada uma forma de iniciar a imagem do clickhouse-server com um usuário personalizado. #4753 (Mikhail f. Shiryaev)
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 BYeLIMIT. Anteriormente, seLIMIT BYeLIMITfossem usados em uma consulta remota,LIMITpodia ser aplicado antes deLIMIT 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_speedemax_execution_speed_bytespara limitar o uso de recursos. Adicionada a configuraçãomin_execution_speed_bytespara complementar amin_execution_speed. #4430 (Winter Zhang) - Implementada a função
flatten. #4555 #4409 (alexey-milovidov, kzon) - Adicionadas as funções
arrayEnumerateDenseRankedearrayEnumerateUniqRanked(é comoarrayEnumerateUniq, 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
setpara colunasNullableeLowCardinality. Antes dessa correção, o índicesetcom colunaNullableouLowCardinalitylevava ao erroData type must be deserialized with multiple streamsao 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 argumentque 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_logfoi criada independentemente da configuração. #4483 (alexey-milovidov) - Corrigido comportamento indefinido na função
dictIsInpara 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
llvme podermos testá-lo comclangeasan. #4579 (alesapin) - Evita
std::terminatequandoinvalidate_querypara a source externa de Dicionárioclickhouseretorna um conjunto de resultados incorreto (vazio, com mais de uma linha ou mais de uma coluna). Corrigido o problema em que ainvalidate_queryera executada a cada cinco segundos, independentemente dolifetime. #4583 (alexey-milovidov) - Evita deadlock quando a
invalidate_queryde um dicionário com origemclickhouseenvolvia a tabelasystem.dictionariesou o banco de dadosDictionaries(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-testpela 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.hnão existe no lz4 externo porque é um detalhe de implementação, e seus símbolos usam o namespace da macroXXH_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
quantileTimingpodia 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 JOINao fazerJOINentre 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
- Adicionada uma forma de iniciar a imagem do clickhouse-server com um usuário personalizado #4753 (Mikhail f. Shiryaev)
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::terminatepode 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
inlinedevoid readBinary(...)emField.cpp. Também foram unificados blocos redundantes denamespace 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 ROLLUPao agrupar por uma única chaveLowCardinality. #4384 (Nikolai Kochetov) - Corrigido um bug no índice set (um grânulo era descartado se contivesse mais de
max_rowslinhas). #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-serverpara 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 camposlatest_failed_part,latest_fail_timeelatest_fail_reasonà tabelasystem.mutationspara 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 partesqueryedata. #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
sumMapFilteredpara permitir limitar o número de chaves cujos valores serão somados porsumMap. #4129 (Léo Ercolanelli) - Adicionado suporte a tipos
Nullablena função de tabelamysql. #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) StorageJoinagora oferece suporte à configuraçãojoin_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
IPv4eIPv6. Implementações mais eficientes das funçõesIPv*. #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-Idao cabeçalho de resposta HTTP do servidor. #4231 (Mikhail)
Recursos experimentais
- Adicionados índices de data skipping
minmaxesetpara a família de motores de tabela MergeTree. #4143 (Nikita Vasilev) - Adicionada a conversão de
CROSS JOINparaINNER JOIN, quando possível. #4221 #4266 (Artem Zuikov)
Correções de bugs
- Corrigido o erro
Not found columnpara colunas duplicadas na seçãoJOIN ON. #4279 (Artem Zuikov) - Faz com que o comando
START REPLICATED SENDSpasse 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 formatoCSVWithNamesouTSVWIthNamese 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 JOINpara casos com duplicatas na tabela da direita. #4184 (Artem Zuikov) - Corrigida falha de segmentação com
use_uncompressed_cache=1e exceção devido a tamanho descompactado incorreto. Esse bug apareceu na versão 19.1.6. #4186 (alesapin) - Corrigido o bug em
compile_expressionsna 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 instructionao 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 receivedao 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
DateeDateTimesão usados nas ramificações do operador condicional (funçãoif). Adicionado um caso genérico para a funçãoif. #4243 (alexey-milovidov) - Os dicionários do ClickHouse agora são carregados no processo
clickhouse. #4166 (alexey-milovidov) - Corrigido deadlock ao repetir
SELECTem uma tabela com engineFileapós o erroNo such file or directory. #4161 (alexey-milovidov) - Corrigida a condição de corrida ao consultar
system.tables, que podia gerar o errotable does not exist. #4313 (alexey-milovidov) clickhouse-clientpode 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
INproduzia 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
DateeDateTime. #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 dadosLowCardinalityjá 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à consultaCREATE TABLE. Uma coluna com o nomeindexdeve ser delimitada por acentos graves ou aspas duplas:`index`. #4143 (Nikita Vasilev) sumMapagora promove o tipo do resultado em vez de gerar overflow. O comportamento antigo desumMappode ser obtido usando a funçãosumMapWithOverflow. #4151 (Léo Ercolanelli)
Melhorias de desempenho
std::sortsubstituído porpdqsortpara consultas semLIMIT. #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, bagora retorna as colunasaebapenas da tabela à esquerda. #4141 (Artem Zuikov)- A opção
-Cdo 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
LIKEou 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_noophabilitada. #4294 (alexey-milovidov) - Adicionado suporte à opção
--versionpara o servidor ClickHouse. #4251 (Lopatin Konstantin) - Adicionada a opção
--help/-haoclickhouse-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çãoasterisk_left_columns_onlyestiver definida como 1 ao usarGLOBAL JOINcomSELECT *(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
Lançamento do ClickHouse 19.1.10, 2019-03-03
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-clientpode 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.tablespodia gerar o errotable does not exist. #4313 (alexey-milovidov) - Corrigido um deadlock ao repetir
SELECTem uma tabela com mecanismoFileapós o erroNo 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 receivedao 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_expressionsna comparação de datas grandes (maiores que o tipo int16). #4341 (alesapin) - Corrigida falha de segmentação com
uncompressed_cache=1e exceção devido a tamanho não compactado incorreto. #4186 (alesapin) - Corrigido
ALL JOINcom duplicatas na tabela à direita. #4184 (Artem Zuikov) - Corrigido o comportamento incorreto ao executar a consulta
INSERT ... SELECT ... FROM file(...)quando o arquivo está no formatoCSVWithNamesouTSVWIthNamese 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 SENDSiniciar envios replicados. #4229 (nvartolomei) - Corrigido o erro
Not found columnpara 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
DateeDateTime. #4237 (valexey) - Corrigido o resultado incorreto quando argumentos
DateeDateTimesão usados nas ramificações do operador condicional (funçãoif). Adicionado um caso genérico para a funçãoif. #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
ALTERem codecs de compressão. #4054 (alesapin) - Adicionadas as funções
left,right,trim,ltrim,rtrim,timestampadd,timestampsubpara compatibilidade com o padrão SQL. #3826 (Ivan Blinkov) - Suporte à gravação em tabelas
HDFSe na função de tabelahdfs. #4084 (alesapin) - Adicionadas funções para pesquisar várias strings constantes em um grande haystack:
multiPosition,multiSearch,firstMatch, também com variantes-UTF8,-CaseInsensitivee-CaseInsensitiveUTF8. #4053 (Danila Kutenin) - Pruning de shards não usados se a consulta
SELECTfiltrar pela chave de sharding (configuraçãooptimize_skip_unused_shards). #3851 (Gleb Kanterov, Ivan) - O engine
Kafkapode ignorar uma certa quantidade de parsing error por block. #4094 (Ivan) - Adicionado suporte à avaliação de modelos multiclasse do
CatBoost. A funçãomodelEvaluateretorna uma tupla com previsões brutas por classe para modelos multiclasse.libcatboostmodel.sodeve ser compilado com #607. #3959 (KochetovNicolai) - Adicionadas as funções
filesystemAvailable,filesystemFree,filesystemCapacity. #4097 (Boris Granveaud) - Adicionadas as funções de hash
xxHash64exxHash32. #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 comoremote, 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_sizepara 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_zknã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
remotequando restrições incorretas eram usadas emgetStructureOfRemoteTable. #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/fdantes de todos os fds de/procserem lidos após fazer fork do subprocessoodbc-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
arrayEnumerateUniqearrayEnumerateDenseem 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,ceilpodem 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
LowCardinalityno formatoNativeem 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
compileestá 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 ONe 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 EXISTSem instruçõesALTER TABLE ADD COLUMN, juntamente comIF EXISTSemDROP/MODIFY/CLEAR/COMMENT COLUMN. #3900 (Boris Granveaud) - Função
parseDateTimeBestEffort: suporte aos formatosDD.MM.YYYY,DD.MM.YY,DD-MM-YYYY,DD-Mon-YYYY,DD/Month/YYYYe semelhantes. #3922 (alexey-milovidov) CapnProtoInputStreamagora 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 TOTALSno ODBC driver. #3836 (Maksim Koritckiy) - Permitido o uso de
Enums como inteiros dentro da funçãoif. #3875 (Ivan) - Adicionada a configuração
low_cardinality_allow_in_native_format. Se desabilitada, o tipoLowCadrinalitynão será usado no formatoNative. #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
sequenceMatchesequenceCountquando 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
jemallocque levava à degradação de desempenho. #4018 (alexey-milovidov)
Alterações incompatíveis com versões anteriores
- O recurso não documentado
ALTER MODIFY PRIMARY KEYfoi removido porque foi substituído pelo comandoALTER MODIFY ORDER BY. #3887 (Alex Zatelepin) - A função
shardByHashfoi 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 permittedno Docker ou no systemd-nspawn. #4136 (alexey-milovidov) - Biblioteca
rdkafkaatualizada 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
chownnos diretórios da imagem Docker do servidor. #3967 (alesapin) - Habilitada a maior parte dos avisos de
-Weverythingno 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-serverpassará a recomendar o pacotelibcap2-binpara usar a ferramentasetcappara 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)