Changement incompatible avec les versions précédentes
- Modification de la sérialisation binaire du type de données Variant : ajout d’un mode compact pour éviter d’écrire plusieurs fois le même discriminateur pour les granules ne contenant qu’une seule variante ou uniquement des valeurs NULL. Ajout du paramètre MergeTree use_compact_variant_discriminators_serialization, activé par défaut. Notez que le type Variant est toujours expérimental et que cette modification non rétrocompatible de la sérialisation ne devrait pas vous affecter, sauf si vous avez travaillé avec le support pour activer cette fonctionnalité plus tôt. #62774 (Kruglov Pavel).
- Interdire CREATE MATERIALIZED VIEW … ENGINE Replicated*MergeTree POPULATE AS SELECT … avec les bases de données Replicated. Cette PR spécifique ne s’applique qu’aux utilisateurs qui utilisent encore ReplicatedMergeTree. #63963 (vdimir).
- La métrique KeeperOutstandingRequets a été renommée en KeeperOutstandingRequests. Cela corrige une faute de frappe signalée dans #66179. #66206 (Robert Schulze).
- clickhouse-client et clickhouse-local utilisent désormais par défaut le mode multi-requêtes (au lieu du mode requête unique). Par exemple, clickhouse-client -q “SELECT 1; SELECT 2” fonctionne désormais, alors qu’auparavant, les utilisateurs devaient ajouter —multiquery (ou -n). L’option —multiquery/-n est devenue obsolète. Les requêtes INSERT dans des instructions multi-requêtes sont traitées différemment selon leur clause FORMAT : si le FORMAT est VALUES (le cas le plus courant), la fin de l’instruction INSERT est marquée par un point-virgule ; à la fin de la requête. Pour tous les autres FORMATs (par ex. CSV ou JSONEachRow), la fin de l’instruction INSERT est marquée par deux sauts de ligne \n\n à la fin de la requête. #63898 (wxybear).
- Dans les versions précédentes, il était possible d’utiliser une syntaxe alternative pour les types de données LowCardinality en ajoutant WithDictionary au nom du type de données. Il s’agissait d’une implémentation initiale fonctionnelle, qui n’a jamais été documentée ni exposée publiquement. Désormais, elle est dépréciée. Si vous avez utilisé cette syntaxe, vous devez ALTER vos tables et renommer les types de données en LowCardinality. #66842(Alexey Milovidov).
- Correction d’erreurs logiques avec le moteur Buffer utilisé avec une table de destination Distributed. Il s’agit d’un changement non rétrocompatible : les requêtes utilisant Buffer avec une table de destination Distributed peuvent cesser de fonctionner si la table apparaît plus d’une fois dans la requête (par ex. dans une self-join). #67015 (vdimir).
- Dans les versions précédentes, l’appel de fonctions de distributions aléatoires basées sur la fonction gamma (comme Chi-Squared, Student, Fisher) avec des arguments négatifs proches de zéro entraînait un calcul long ou une boucle infinie. Dans la nouvelle version, l’appel de ces fonctions avec des arguments nuls ou négatifs produira une exception. Cela résout #67297. #67326 (Alexey Milovidov).
- Dans les versions précédentes, arrayWithConstant pouvait être lent lorsqu’on lui demandait de générer de très grands tableaux. Dans la nouvelle version, il est limité à 1 Go par tableau. Cela résout #32754. #67741 (Alexey Milovidov).
- Correction du formatage du modificateur REPLACE (interdiction d’omettre les parenthèses). #67774 (Azat Khuzhin).
Nouvelle fonctionnalité
- Étend la fonction tuple pour construire des tuples nommés dans une requête. Introduit la fonction tupleNames pour extraire les noms des tuples. #54881 (Amos Bird).
- Prise en charge de ASOF JOIN pour l’algorithme full_sorting_join. Clôture #54493. #55051 (vdimir).
- Une nouvelle fonction de table, fuzzQuery, a été ajoutée. Cette fonction vous permet de modifier une chaîne de requête donnée avec des variations aléatoires. Exemple : SELECT query FROM fuzzQuery(‘SELECT 1’);. #62103 (pufit).
- Ajoute la nouvelle fonction de fenêtre percent_rank. #62747 (lgbo).
- Prise en charge de l’authentification JWT dans clickhouse-client. #62829 (Konstantin Bogdanov).
- Ajoute les fonctions SQL changeYear, changeMonth, changeDay, changeHour, changeMinute, changeSecond. Par exemple, SELECT changeMonth(toDate(‘2024-06-14’), 7) renvoie la date 2024-07-14. #63186 (cucumber95).
- Ajoute system.error_log, qui contient l’historique des valeurs d’erreur de la table system.errors, périodiquement écrites sur disque. #65381 (Pablo Marcos).
- Ajoute la fonction d’agrégation groupConcat. Elle est à peu près équivalente à arrayStringConcat( groupArray(column), ’,’). Elle peut recevoir 2 paramètres : un délimiteur de chaîne et le nombre d’éléments à traiter. #65451 (Yarik Briukhovetskyi).
- Ajoute le stockage AzureQueue. #65458 (Kseniia Sumarokova).
- Ajoute un nouveau paramètre pour désactiver/activer l’écriture de l’index de page dans les fichiers Parquet. #65475 (lgbo).
- Ajoute automatiquement un caractère générique * à la fin d’un chemin de répertoire avec la fonction de table file. #66019 (Zhidong (David) Guo).
- Ajoute l’option —memory-usage au client en mode non interactif. #66393 (vdimir).
- Ajoute la colonne virtuelle _etag pour le moteur de table S3. Corrige #65312. #65386 (skyoct)
- Cette pull request introduit le partitionnement de type Hive pour différents moteurs (File, URL, S3, AzureBlobStorage, HDFS). Le partitionnement de type Hive organise les données en sous-répertoires partitionnés, ce qui rend plus efficaces les requêtes et la gestion de grands jeux de données. Actuellement, cela crée uniquement des colonnes virtuelles avec le nom et les données appropriés. La PR suivante introduira le filtrage de données approprié (gain de performances). #65997 (Yarik Briukhovetskyi).
- Ajoute la fonction printf pour la compatibilité avec Spark. #66257 (李扬).
- Ajout de la prise en charge de la lecture de la géométrie MULTILINESTRING au format WKT à l’aide de la fonction readWKTLineString. #67647 (Jacob Reckhard).
- Ajout d’un mécanisme de balisage (namespace) pour le cache de requêtes. Les mêmes requêtes avec des tags différents sont considérées comme différentes par le cache de requêtes. Exemple : SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = ‘abc’ et SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = ‘def’ créent désormais des entrées de cache différentes dans le cache de requêtes. #68235(sakulali).