Alteração incompatível com versões anteriores
- Altera a serialização binária do tipo de dados Variant: adiciona o modo compacto para evitar gravar o mesmo discriminador várias vezes em grânulos com uma única variante ou apenas com valores NULL. Adiciona a configuração do MergeTree use_compact_variant_discriminators_serialization, habilitada por padrão. Observe que o tipo Variant ainda é experimental, e essa alteração incompatível com versões anteriores na serialização não deve afetar você, a menos que tenha trabalhado com o suporte para habilitar esse recurso anteriormente. #62774 (Kruglov Pavel).
- Proíbe CREATE MATERIALIZED VIEW … ENGINE Replicated*MergeTree POPULATE AS SELECT … com bancos de dados Replicated. Este PR específico se aplica apenas a usuários que ainda usam ReplicatedMergeTree. #63963 (vdimir).
- A métrica KeeperOutstandingRequets foi renomeada para KeeperOutstandingRequests. Isso corrige um erro de digitação relatado em #66179. #66206 (Robert Schulze).
- clickhouse-client e clickhouse-local agora usam o modo multi-query por padrão (em vez do modo single-query). Por exemplo, clickhouse-client -q “SELECT 1; SELECT 2” agora funciona, enquanto antes os usuários precisavam adicionar —multiquery (ou -n). A opção —multiquery/-n tornou-se obsoleta. Consultas INSERT em instruções multi-query recebem tratamento especial com base em sua cláusula FORMAT: se o FORMAT for VALUES (o caso mais comum), o fim da instrução INSERT é representado por um ponto e vírgula ; ao final da consulta. Para todos os outros FORMATs (por exemplo, CSV ou JSONEachRow), o fim da instrução INSERT é representado por duas quebras de linha \n\n ao final da consulta. #63898 (wxybear).
- Em versões anteriores, era possível usar uma sintaxe alternativa para tipos de dados LowCardinality acrescentando WithDictionary ao nome do tipo de dados. Era uma implementação inicial funcional e nunca foi documentada nem exposta publicamente. Agora, ela está obsoleta. Se você usou essa sintaxe, precisa executar ALTER em suas tabelas e renomear os tipos de dados para LowCardinality. #66842(Alexey Milovidov).
- Corrige erros lógicos no Buffer usado com uma tabela de destino Distributed. Esta é uma alteração incompatível com versões anteriores: consultas que usam Buffer com uma tabela de destino Distributed podem parar de funcionar se a tabela aparecer mais de uma vez na consulta (por exemplo, em uma autorjunção). #67015 (vdimir).
- Em versões anteriores, chamar funções para distribuições aleatórias baseadas na função gama (como Chi-Squared, Student, Fisher) com argumentos negativos próximos de zero levava a um tempo de computação muito longo ou a um loop infinito. Na nova versão, chamar essas funções com argumentos zero ou negativos produzirá uma exceção. Isso encerra #67297. #67326 (Alexey Milovidov).
- Em versões anteriores, arrayWithConstant podia ser lento quando solicitado a gerar arrays muito grandes. Na nova versão, ele está limitado a 1 GB por array. Isso encerra #32754. #67741 (Alexey Milovidov).
- Corrige a formatação do modificador REPLACE (proíbe omitir parênteses). #67774 (Azat Khuzhin).
Novo recurso
- Estende a função tuple para construir tuplas nomeadas na consulta. Introduz a função tupleNames para extrair nomes de tuplas. #54881 (Amos Bird).
- Suporte a ASOF JOIN para o algoritmo full_sorting_join. Fecha #54493. #55051 (vdimir).
- Foi adicionada uma nova função de tabela, fuzzQuery. Essa função permite modificar uma string de consulta fornecida com variações aleatórias. Exemplo: SELECT query FROM fuzzQuery(‘SELECT 1’);. #62103 (pufit).
- Adiciona a nova função de janela percent_rank. #62747 (lgbo).
- Suporte à autenticação JWT no clickhouse-client. #62829 (Konstantin Bogdanov).
- Adiciona as funções SQL changeYear, changeMonth, changeDay, changeHour, changeMinute, changeSecond. Por exemplo, SELECT changeMonth(toDate(‘2024-06-14’), 7) retorna a data 2024-07-14. #63186 (cucumber95).
- Adiciona system.error_log, que contém o histórico de valores de erro da tabela system.errors, gravados periodicamente em disco. #65381 (Pablo Marcos).
- Adiciona a função de agregação groupConcat. É praticamente o mesmo que arrayStringConcat( groupArray(column), ’,’). Pode receber 2 parâmetros: um delimitador de string e o número de elementos a serem processados. #65451 (Yarik Briukhovetskyi).
- Adiciona o armazenamento AzureQueue. #65458 (Kseniia Sumarokova).
- Adiciona uma nova configuração para desabilitar/habilitar a gravação do índice de páginas em arquivos Parquet. #65475 (lgbo).
- Acrescenta automaticamente um caractere curinga * ao final de um caminho de diretório com a função de tabela file. #66019 (Zhidong (David) Guo).
- Adiciona a opção —memory-usage ao cliente em modo não interativo. #66393 (vdimir).
- Adiciona a coluna virtual _etag para o motor de tabela S3. Corrige #65312. #65386 (skyoct)
- Este pull request introduz o particionamento no estilo Hive para diferentes motores (File, URL, S3, AzureBlobStorage, HDFS). O particionamento no estilo Hive organiza os dados em subdiretórios particionados, tornando mais eficientes a consulta e o gerenciamento de grandes conjuntos de dados. Atualmente, ele cria apenas colunas virtuais com o nome e os dados apropriados. O próximo PR introduzirá a filtragem de dados apropriada (ganho de desempenho). #65997 (Yarik Briukhovetskyi).
- Adiciona a função printf para compatibilidade com Spark. #66257 (李扬).
- Adicionado suporte para leitura da geometria MULTILINESTRING no formato WKT usando a função readWKTLineString. #67647 (Jacob Reckhard).
- Adicionado um mecanismo de marcação (espaço de nomes) para o cache de consultas. As mesmas consultas com tags diferentes são consideradas diferentes pelo cache de consultas. Exemplo: SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = ‘abc’ and SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = ‘def’ agora criam entradas diferentes no cache de consultas. #68235(sakulali).