> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# changelog de la v24.10 pour Cloud

> changelog de la Fast release v24.10

Changements pertinents pour les services ClickHouse Cloud de la release v24.10.

<div id="backward-incompatible-change">
  ## Changement non rétrocompatible
</div>

* Autorise l’écriture de `SETTINGS` avant `FORMAT` dans une chaîne de requêtes avec `UNION` lorsque les sous-requêtes sont entre parenthèses. Cela clôt [#39712](https://github.com/ClickHouse/ClickHouse/issues/39712). Modifie le comportement lorsqu’une requête comporte deux fois la clause SETTINGS dans une séquence. La clause SETTINGS la plus proche aura la priorité pour la sous-requête correspondante. Dans les versions précédentes, la clause SETTINGS la plus externe pouvait avoir la priorité sur la clause interne. [#60197](https://github.com/ClickHouse/ClickHouse/pull/60197)[#68614](https://github.com/ClickHouse/ClickHouse/pull/68614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Réimplémente le type Dynamic. Désormais, lorsque la limite des types de données dynamiques est atteinte, les nouveaux types ne sont plus convertis en String, mais stockés dans une structure de données spéciale au format binaire avec un type de données encodé en binaire. Désormais, tout type inséré dans une colonne Dynamic peut y être lu comme sous-colonne. [#68132](https://github.com/ClickHouse/ClickHouse/pull/68132) ([Pavel Kruglov](https://github.com/Avogar)).
* Les expressions comme `a[b].c` sont prises en charge pour les tuples nommés, ainsi que les indices nommés à partir d’expressions arbitraires, par exemple `expr().name`. C’est utile pour le traitement du JSON. Cela clôt [#54965](https://github.com/ClickHouse/ClickHouse/issues/54965). Dans les versions précédentes, une expression de la forme `expr().name` était analysée comme `tupleElement(expr(), name)`, et l’analyseur de requêtes recherchait une colonne `name` plutôt que l’élément de tuple correspondant ; dans la nouvelle version, cela devient `tupleElement(expr(), 'name')`. Dans la plupart des cas, l’ancienne version ne fonctionnait pas, mais on peut imaginer un scénario très inhabituel dans lequel ce changement pourrait entraîner une incompatibilité : si vous stockiez des noms d’éléments de tuple dans une colonne ou un alias portant un nom différent de celui de l’élément de tuple : `SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a`. Il est très peu probable que vous utilisiez de telles requêtes, mais nous devons tout de même marquer ce changement comme potentiellement non rétrocompatible. [#68435](https://github.com/ClickHouse/ClickHouse/pull/68435) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Lorsque le paramètre `print_pretty_type_names` est activé, il affichera le type de données `Tuple` sous une forme Pretty dans les instructions `SHOW CREATE TABLE`, la fonction `formatQuery` et en mode interactif dans `clickhouse-client` et `clickhouse-local`. Dans les versions précédentes, ce paramètre s’appliquait uniquement aux requêtes `DESCRIBE` et à `toTypeName`. Cela clôt [#65753](https://github.com/ClickHouse/ClickHouse/issues/65753). [#68492](https://github.com/ClickHouse/ClickHouse/pull/68492) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La réorganisation des conditions de filtre de la clause `[PRE]WHERE` est désormais autorisée par défaut. Elle peut être désactivée en définissant `allow_reorder_prewhere_conditions` sur `false`. [#70657](https://github.com/ClickHouse/ClickHouse/pull/70657) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige l’optimisation `optimize_functions_to_subcolumns` (qui pouvait auparavant entraîner l’erreur `Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String)`), en préservant le type `LowCardinality` dans `mapKeys`/`mapValues`. [#70716](https://github.com/ClickHouse/ClickHouse/pull/70716) ([Azat Khuzhin](https://github.com/azat)).

<div id="new-feature">
  ## Nouvelle fonctionnalité
</div>

* Les vues matérialisées actualisables sont prêtes pour la production. [#70550](https://github.com/ClickHouse/ClickHouse/pull/70550) ([Michael Kolupaev](https://github.com/al13n321)). Les vues matérialisées actualisables sont désormais prises en charge dans les bases de données Replicated. [#60669](https://github.com/ClickHouse/ClickHouse/pull/60669) ([Michael Kolupaev](https://github.com/al13n321)).
* La fonction `toStartOfInterval()` dispose désormais d'une nouvelle surcharge qui émule la fonction `time_bucket()` de TimescaleDB ou, de manière équivalente, la fonction `date_bin()` de PostgreSQL. ([#55619](https://github.com/ClickHouse/ClickHouse/issues/55619)). Elle permet d'aligner des valeurs de date ou de timestamp sur des multiples d'un intervalle donné à partir d'une origine *arbitraire* (au lieu de 0000-01-01 00:00:00.000 comme origine *fixe*). Par exemple, `SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'));` renvoie `2023-01-01 14:44:30`, soit un multiple d'intervalles d'une minute à partir de l'origine `2023-01-01 14:35:30`. [#56738](https://github.com/ClickHouse/ClickHouse/pull/56738) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Intégration MongoDB remaniée : migration vers le nouveau driver mongocxx depuis Poco::MongoDB obsolète, suppression de la prise en charge de l'ancien protocole obsolète, prise en charge de la connexion par URI, prise en charge de tous les types MongoDB, prise en charge des instructions WHERE et ORDER BY côté MongoDB, restriction des expressions non prises en charge par MongoDB. [#63279](https://github.com/ClickHouse/ClickHouse/pull/63279) ([Kirill Nikiforov](https://github.com/allmazz)).
* Une nouvelle option `--progress-table` dans clickhouse-client affiche une table avec des métriques évoluant pendant l'exécution de la requête ; une nouvelle option `--enable-progress-table-toggle` est associée à l'option `--progress-table` et permet d'activer ou de désactiver l'affichage de la table de progression en appuyant sur la touche de contrôle (Espace). [#63689](https://github.com/ClickHouse/ClickHouse/pull/63689) ([Maria Khristenko](https://github.com/mariaKhr)).
* Cela permet d'accorder l'accès aux préfixes génériques. `GRANT SELECT ON db.table_pefix_* TO user`. [#65311](https://github.com/ClickHouse/ClickHouse/pull/65311) ([pufit](https://github.com/pufit)).
* Introduction du format JSONCompactWithProgress, dans lequel ClickHouse produit chaque ligne sous la forme d'un objet JSON délimité par des sauts de ligne, incluant les métadonnées, les données, la progression, les totaux et les statistiques. [#66205](https://github.com/ClickHouse/ClickHouse/pull/66205) ([Alexey Korepanov](https://github.com/alexkorep)).
* Ajout de system.query\_metric\_log, qui contient l'historique de la mémoire et des valeurs de métriques de la table system.events pour des requêtes individuelles, périodiquement écrites sur disque. [#66532](https://github.com/ClickHouse/ClickHouse/pull/66532) ([Pablo Marcos](https://github.com/pamarcos)).
* Ajout du paramètre `input_format_json_empty_as_default` qui, lorsqu'il est activé, traite les champs vides dans les entrées JSON comme des valeurs par défaut. Clôture de [#59339](https://github.com/ClickHouse/ClickHouse/issues/59339). [#66782](https://github.com/ClickHouse/ClickHouse/pull/66782) ([Alexis Arnaud](https://github.com/a-a-f)).
* Ajout des fonctions `overlay` et `overlayUTF8`, qui remplacent des parties d'une chaîne par une autre chaîne. Exemple : `SELECT overlay('Hello New York', 'Jersey', 11)` renvoie `Hello New Jersey`. [#66933](https://github.com/ClickHouse/ClickHouse/pull/66933) ([李扬](https://github.com/taiyang-li)).
* Ajout d'une nouvelle commande, Lightweight Delete In Partition `DELETE FROM [db.]table [ON CLUSTER cluster] [IN PARTITION partition_expr] WHERE expr;` \`\`\` VM-114-29-tos :) select \* from ads\_app\_poster\_ip\_source\_channel\_di\_replicated\_local;. [#67805](https://github.com/ClickHouse/ClickHouse/pull/67805) ([sunny](https://github.com/sunny19930321)).
* Comparaison implémentée pour les valeurs du type de données `Interval`, qui sont désormais converties vers le plus petit supertype commun. [#68057](https://github.com/ClickHouse/ClickHouse/pull/68057) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajout du paramètre create\_if\_not\_exists pour adopter par défaut le comportement IF NOT EXISTS dans les instructions CREATE. [#68164](https://github.com/ClickHouse/ClickHouse/pull/68164) ([Peter Nguyen](https://github.com/petern48)).
* Permet désormais de lire des tables Iceberg dans Azure et en local. [#68210](https://github.com/ClickHouse/ClickHouse/pull/68210) ([Daniil Ivanik](https://github.com/divanik)).
* Ajout des fonctions d'agrégation distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes pour une meilleure introspection du contenu des colonnes de type JSON. [#68463](https://github.com/ClickHouse/ClickHouse/pull/68463) ([Pavel Kruglov](https://github.com/Avogar)).
* Les entrées du cache de requêtes peuvent désormais être supprimées par tag. Par exemple, l'entrée du cache de requêtes créée par `SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc'` peut maintenant être supprimée avec `SYSTEM DROP QUERY CACHE TAG 'abc'` (ou, bien sûr, simplement avec `SYSTEM DROP QUERY CACHE`, ce qui videra l'intégralité du cache de requêtes). [#68477](https://github.com/ClickHouse/ClickHouse/pull/68477) ([Michał Tabaszewski](https://github.com/pinsvin00)).
* Une simple requête SELECT peut être écrite avec un SELECT implicite afin de permettre des expressions de type calculatrice, par ex. `ch "1 + 2"`. Ce comportement est contrôlé par un nouveau paramètre, `implicit_select`. [#68502](https://github.com/ClickHouse/ClickHouse/pull/68502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge du mode --copy pour clickhouse local comme raccourci de conversion de format [#68503](https://github.com/ClickHouse/ClickHouse/issues/68503). [#68583](https://github.com/ClickHouse/ClickHouse/pull/68583) ([Denis Hananein](https://github.com/denis-hananein)).
* Ajout de la fonction `ripeMD160`, qui calcule le hachage cryptographique RIPEMD-160 d'une chaîne. Exemple : `SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))` renvoie `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#68639](https://github.com/ClickHouse/ClickHouse/pull/68639) ([Dergousov Maxim](https://github.com/m7kss1)).
* Ajout de la colonne virtuelle \_headers pour le moteur de table URL. Clôture [#65026](https://github.com/ClickHouse/ClickHouse/issues/65026). [#68867](https://github.com/ClickHouse/ClickHouse/pull/68867) ([flynn](https://github.com/ucasfl)).
* Ajout de la table `system.projections` pour suivre les projections disponibles. [#68901](https://github.com/ClickHouse/ClickHouse/pull/68901) ([Jordi Villar](https://github.com/jrdi)).
* Ajout de la prise en charge de la fonction `arrayUnion`. [#68989](https://github.com/ClickHouse/ClickHouse/pull/68989) ([Peter Nguyen](https://github.com/petern48)).
* Ajout de la nouvelle fonction `arrayZipUnaligned` pour la compatibilité avec Spark (arrays\_zip), permettant de gérer des tableaux non alignés sur la base de `arrayZip`. \`\`\` sql SELECT arrayZipUnaligned(\[1], \[1, 2, 3]). [#69030](https://github.com/ClickHouse/ClickHouse/pull/69030) ([李扬](https://github.com/taiyang-li)).
* Prise en charge de la fonction d'agrégation `quantileExactWeightedInterpolated`, qui est une version interpolée basée sur quantileExactWeighted. Certains pourraient se demander pourquoi une nouvelle fonction `quantileExactWeightedInterpolated` est nécessaire alors que `quantileExactInterpolatedWeighted` existe déjà. La raison est que la nouvelle est plus précise que l'ancienne. Elle sert par ailleurs à la compatibilité avec Spark dans Apache Gluten. [#69619](https://github.com/ClickHouse/ClickHouse/pull/69619) ([李扬](https://github.com/taiyang-li)).
* Prise en charge de la fonction arrayElementOrNull. Elle renvoie `null` si l’index du tableau est hors limites ou si la clé de map est introuvable. [#69646](https://github.com/ClickHouse/ClickHouse/pull/69646) ([李扬](https://github.com/taiyang-li)).
* Prise en charge du type Dynamic dans la plupart des fonctions, en les exécutant sur les types internes de Dynamic. [#69691](https://github.com/ClickHouse/ClickHouse/pull/69691) ([Pavel Kruglov](https://github.com/Avogar)).
* Ajoute l’argument `scale` (par défaut : `true`) à la fonction `arrayAUC`, ce qui permet d’ignorer l’étape de normalisation (ticket [#69609](https://github.com/ClickHouse/ClickHouse/issues/69609)). [#69717](https://github.com/ClickHouse/ClickHouse/pull/69717) ([gabrielmcg44](https://github.com/gabrielmcg44)).
* La fonction `RIPEMD160` a été réintroduite ; elle calcule le hachage cryptographique RIPEMD-160 d’une chaîne. Exemple : `SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))` renvoie `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#70087](https://github.com/ClickHouse/ClickHouse/pull/70087) ([Dergousov Maxim](https://github.com/m7kss1)).
* Permet de mettre en cache les fichiers lus pour les table engines de stockage objet et les data lakes, en utilisant le hachage de ETag + chemin de fichier comme clé de cache. [#70135](https://github.com/ClickHouse/ClickHouse/pull/70135) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Prise en charge de la lecture des tables Iceberg sur HDFS. [#70268](https://github.com/ClickHouse/ClickHouse/pull/70268) ([flynn](https://github.com/ucasfl)).
* Permet de lire/écrire le type JSON sous forme de chaîne binaire au format RowBinary avec les paramètres `input_format_binary_read_json_as_string/output_format_binary_write_json_as_string`. [#70288](https://github.com/ClickHouse/ClickHouse/pull/70288) ([Pavel Kruglov](https://github.com/Avogar)).
* Permet de sérialiser/désérialiser une colonne JSON comme une seule colonne String au format Native. Pour la sortie, utilisez le paramètre `output_format_native_write_json_as_string`. En entrée, utilisez la version de sérialisation `1` avant les données de la colonne. [#70312](https://github.com/ClickHouse/ClickHouse/pull/70312) ([Pavel Kruglov](https://github.com/Avogar)).
* Prise en charge de la CTE standard `with insert`, alors qu’auparavant seule la forme `insert ... with ...` était prise en charge. [#70593](https://github.com/ClickHouse/ClickHouse/pull/70593) ([Shichao Jin](https://github.com/jsc0218)).
