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

> Historique des modifications pour 2026

# Historique des modifications 2026

<div id="267">
  ### Version 26.7 de ClickHouse, 2026-07-22. [Présentation](https://presentations.clickhouse.com/2026-release-26.7/), [Vidéo](https://www.youtube.com/watch?v=mKBNLaFOVDA)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* L’accès à S3 depuis le SQL utilisateur ne résout plus par défaut les propres informations d’authentification cloud du serveur (environnement, IMDS/IRSA, profil d’instance, fichiers de config AWS, STS basé sur `role_arn`, métadonnées OAuth GCP) ; une telle requête doit utiliser des informations d’authentification explicites ou `NOSIGN`. Les collections nommées définissent désormais par défaut `use_environment_credentials` sur `0`. Le comportement précédent peut être rétabli requête par requête avec `use_environment_credentials = 1` (ou globalement via la config `<s3>`) en combinaison avec le nouveau paramètre serveur `s3_allow_server_credentials_in_user_queries` (désactivé par défaut). Les informations d’authentification de config fournies explicitement et provisionnées par l’opérateur ne sont pas affectées. Au démarrage du serveur ou lors de `RESTORE`, une table persistante `S3`/`S3Queue`, un disque S3 dynamique ou un `DataLakeCatalog` dont la définition résout de telles informations d’authentification est chargé anonymement (inaccessible jusqu’à ce que de nouvelles informations d’authentification soient fournies) au lieu d’interrompre le démarrage ; ce comportement est contrôlé par le nouveau paramètre serveur `s3_load_table_anonymously_if_credentials_restricted` (activé par défaut). [#106855](https://github.com/ClickHouse/ClickHouse/pull/106855) ([Raúl Marín](https://github.com/Algunenano)).
* Le glob `**/` (n’importe quel nombre de répertoires) correspond désormais aussi au même répertoire. Auparavant, `**/` dans les motifs glob n’était pas traité comme un cas particulier, donc `data/**/file.txt` ne correspondait pas à `data/file.txt` (zéro niveau de répertoire). [#97676](https://github.com/ClickHouse/ClickHouse/pull/97676) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le format d’archive de sauvegarde `zip`/`zipx` est désormais refusé pour les sauvegardes stockées sur un stockage objet — destinations directes `S3(...)`/`AzureBlobStorage(...)` et destinations `Disk(...)` reposant sur S3 ou Azure — aussi bien pour `BACKUP` que pour `RESTORE`. Zip nécessite un accès aléatoire pour lire son répertoire central, ce qui est très lent sur un stockage objet. Utilisez plutôt un format basé sur tar, comme `tar.gz`. [#101770](https://github.com/ClickHouse/ClickHouse/pull/101770) ([Yash ](https://github.com/Onyx2406)).
* Étend la plage prise en charge de `DateTime64` de `[1900-01-01, 2299-12-31]` à `[0000-01-01, 9999-12-31]`. Les valeurs en dehors de l’ancienne plage sont désormais calculées correctement (via cctz) au lieu d’être ramenées à la borne la plus proche. Avec une précision de 8 ou 9, la plage reste plus étroite, car les ticks sont stockés en `Int64` (avec une précision à la nanoseconde, le maximum reste `2262-04-11`). Compatibilité descendante : si vous utilisiez auparavant des dates/heures hors plage, mais que vous vous appuyiez sur les règles de saturation très spécifiques à l’intérieur de l’ancienne plage, gardez à l’esprit que les résultats changent désormais pour être plus corrects. [#107907](https://github.com/ClickHouse/ClickHouse/pull/107907) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `AggregatingMergeTree` rejette désormais, au moment de la création de la table, les schémas dans lesquels une colonne ne fait partie ni de la clé de tri ni d’une mesure d’état d’agrégation (`AggregateFunction`/`SimpleAggregateFunction`). De telles colonnes sont silencieusement réduites à une valeur arbitraire lors des fusions en arrière-plan, ce qui produit des résultats erronés pour les requêtes qui font un `GROUP BY` dessus ou les utilisent dans un filtre. Définissez `allow_dimensions_outside_sorting_key = 1` pour rétablir le comportement précédent. Closes [#751](https://github.com/ClickHouse/ClickHouse/issues/751). [#108087](https://github.com/ClickHouse/ClickHouse/pull/108087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Supprime la configuration de l’ordonnancement des workloads basée sur la config (les sections de config serveur `resources` et `workload_classifiers`). Utilisez plutôt les requêtes `CREATE RESOURCE` et `CREATE WORKLOAD`. Les sections de config obsolètes sont ignorées avec un avertissement. [#108286](https://github.com/ClickHouse/ClickHouse/pull/108286) ([Sergei Trifonov](https://github.com/serxa)).
* ClickHouse utilise désormais systématiquement le hachage unifié de déduplication des insertions, aussi bien pour les insertions synchrones que pour les insertions asynchrones ; les anciens comportements de déduplication par insertion ont été supprimés. Le paramètre serveur `insert_deduplication_version` est conservé comme garde-fou de migration : le serveur refuse de démarrer s’il est défini sur une valeur legacy (`old_separate_hashes` ou `compatible_double_hashes`). Pour effectuer une mise à niveau depuis une version qui utilisait une valeur legacy, exécutez d’abord une version qui prend en charge `compatible_double_hashes` (qui écrit à la fois les hachages legacy et le hachage unifié). Pour les tables répliquées, exécutez-la pendant au moins `replicated_deduplication_window_seconds` (une heure par défaut ; les fenêtres par défaut conservent les hachages unifiés de toutes les insertions sur cette durée, ce qui est considéré comme suffisant pour une boucle de nouvelle tentative d’insertion). Pour les tables non répliquées avec `non_replicated_deduplication_window` > 0, cette fenêtre est basée sur le nombre d’insertions plutôt que sur le temps ; exécutez donc `compatible_double_hashes` pendant au moins ce nombre d’insertions. Supprimez ensuite le paramètre (ou définissez-le sur `new_unified_hash`) avant de passer à cette version. [#108361](https://github.com/ClickHouse/ClickHouse/pull/108361) ([Sema Checherinda](https://github.com/CheSema)). Si vous n’avez jamais défini `insert_deduplication_version`, vous pouvez ignorer ce point.
* Suppression des fonctions obsolètes depuis longtemps `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake` et `dateTime64ToSnowflake`. Elles ont été dépréciées dès la v24.6 au profit de `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID` et `dateTime64ToSnowflakeID`, qu’il faut désormais utiliser à la place. Le paramètre `allow_deprecated_snowflake_conversion_functions` (qui permettait auparavant de les réactiver) est désormais obsolète et n’a plus aucun effet. [#108711](https://github.com/ClickHouse/ClickHouse/pull/108711) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le paramètre `use_legacy_to_time` vaut désormais `0` par défaut ; `toTime` convertit donc les valeurs vers le type de données `Time` au lieu de convertir une valeur date-heure en date fixe. Le comportement legacy reste disponible via la fonction `toTimeWithFixedDate` ou en définissant `use_legacy_to_time = 1`. [#108729](https://github.com/ClickHouse/ClickHouse/pull/108729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les modèles Naive Bayes (utilisés par `naiveBayesClassifier`) sont désormais configurés sous forme de dictionnaire avec le layout `NAIVE_BAYES`, construit au chargement à partir d’une table de comptes de n-grammes pré-agrégés par classe, au lieu de l’ancienne configuration côté serveur (un fichier de configuration XML référençant des fichiers de modèle `.bin` sérialisés), qui n’est plus prise en charge — les modèles existants doivent être recréés sous forme de dictionnaires. Trois nouvelles fonctions s’ajoutent à `naiveBayesClassifier` : `naiveBayesClassifierWithProb` renvoie la classe prédite avec sa probabilité, `naiveBayesClassifierWithAllProbs` renvoie chaque classe avec sa probabilité, et `naiveBayesNgrams` segmente le texte en n-grammes de la même façon que le dictionnaire, afin de construire les données d’entraînement à partir de texte brut étiqueté. En outre, plusieurs optimisations de performances ont été appliquées : sur un modèle de langue à trigrammes de points de code de 9.7 MiB, il utilise \~49× moins de mémoire (de 1.84 GiB à 38 MiB), se charge \~11× plus vite et classe \~11× plus vite. [#108773](https://github.com/ClickHouse/ClickHouse/pull/108773) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* La fonction `hasColumnInTable` n’accepte plus les arguments optionnels `hostname`, `username` et `password` pour vérifier une colonne sur un serveur distant arbitraire ; seule la forme `hasColumnInTable(database, table, column)` reste disponible. Le mode distant supprimé posait un problème de sécurité : il permettait à n’importe quel utilisateur de déclencher des connexions sortantes vers des hôtes arbitraires et exposait des identifiants dans les journaux de requêtes, sans être protégé par le moindre privilège. [#110881](https://github.com/ClickHouse/ClickHouse/pull/110881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* Ajout de `EXPLAIN ANALYZE` pour analyser les performances des requêtes : la requête est exécutée et les métriques d'exécution réelles sont affichées dans le format habituel du plan de requête. [#106586](https://github.com/ClickHouse/ClickHouse/pull/106586) ([Kirill Kopnev](https://github.com/Fgrtue)). [#110668](https://github.com/ClickHouse/ClickHouse/pull/110668) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Ajout de la prise en charge des clauses `WHERE` dans les définitions de projections. Les projections avec `WHERE` ne matérialisent que les lignes correspondant au prédicat, et l'optimiseur peut les utiliser (en fonction du coût) lorsque le `WHERE` de la requête implique le `WHERE` de la projection. [#102347](https://github.com/ClickHouse/ClickHouse/pull/102347) ([S Bala Vignesh](https://github.com/SBALAVIGNESH123)).
* Ajout du paramètre `skip_unavailable_shards_mode` (également disponible comme paramètre du moteur `Distributed`) pour contrôler quelles exceptions provenant d'un shard distant sont ignorées silencieusement lorsque `skip_unavailable_shards` est activé. [#79091](https://github.com/ClickHouse/ClickHouse/pull/79091) ([cjw](https://github.com/byte-sourcerer)).
* Ajout de la fonction d'agrégation `groupFormat`, qui met en forme les lignes de chaque groupe à l'aide d'un format de sortie spécifié et renvoie le résultat sous forme de chaîne. [#93201](https://github.com/ClickHouse/ClickHouse/pull/93201) ([Yang Hu](https://github.com/wandersofb)).
* Ajout de `AWS_MSK_IAM` comme valeur prise en charge pour `kafka_sasl_mechanism`, permettant à ClickHouse de s'authentifier auprès d'Amazon MSK à l'aide de rôles IAM sans avoir à gérer les identifiants SASL/SCRAM. [#96100](https://github.com/ClickHouse/ClickHouse/pull/96100) ([kalavt](https://github.com/kalavt)).
* Ajout du combinator de fonction d'agrégation `-Tuple`, qui applique indépendamment la fonction d'agrégation sous-jacente à chaque élément d'une colonne `Tuple` et renvoie un `Tuple` des résultats, en préservant les noms des éléments : `sumTuple(t)` pour `t = (a, b)` renvoie `(sum(a), sum(b))`. Les fonctions d'agrégation avec plusieurs arguments prennent un tuple par argument, apparié par position : `corrTuple((a1, a2), (b1, b2))` renvoie `(corr(a1, b1), corr(a2, b2))`. Contrairement à `-ForEach` sur des `Array`, les éléments peuvent avoir des types différents, et les types de résultat ainsi que les noms sont préservés pour chaque élément. [#98190](https://github.com/ClickHouse/ClickHouse/pull/98190) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Les index de texte prennent désormais en charge un argument `postprocessor` — une expression arbitraire qui transforme chaque jeton après la tokenisation (par exemple, `lower`). [#98939](https://github.com/ClickHouse/ClickHouse/pull/98939) ([Jimmy Aguilar Mena](https://github.com/Ergus)). [#108606](https://github.com/ClickHouse/ClickHouse/pull/108606) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Ajout de la table système `system.stemmers`, qui répertorie toutes les langues pouvant être spécifiées pour la fonction `stem`. [#100611](https://github.com/ClickHouse/ClickHouse/pull/100611) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Ajout de la prise en charge de `WITH TIES` pour `LIMIT` négatif. [#100930](https://github.com/ClickHouse/ClickHouse/pull/100930) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout de la prise en charge des opérateurs postfixes SQL standard `AT TIME ZONE` et `AT LOCAL` comme sucre syntaxique pour `toTimeZone`. L'expression `expr AT TIME ZONE zone` est désormais équivalente à `toTimeZone(expr, zone)`, et `expr AT LOCAL` est équivalente à `toTimeZone(expr, timeZone())`. [#106092](https://github.com/ClickHouse/ClickHouse/pull/106092) ([lizepeng](https://github.com/lvzhipin03)).
* Le table engine `URL` et la table function `url` aiguillent désormais vers le backend approprié en fonction du schéma de l’URL : `file://` est pris en charge par le moteur `File`, `s3://`/`gs://`/`gcs://`/`oss://` par `S3`, `az://`/`azure://`/`abfss://`/`abfs://` par `AzureBlobStorage`, `hdfs://` par `HDFS`, et `http(s)://` par le moteur `URL` comme auparavant. Le paramètre `url_base` est appliqué avant l’aiguillage selon le schéma. Seuls les schémas S3 résolus par les `url_scheme_mappers` par défaut sont aiguillés ; les autres schémas de fournisseurs S3-compatible (`cos`, `obs`, ...) ne le sont pas et nécessitent d’utiliser directement le moteur ou la fonction `s3`. [#106093](https://github.com/ClickHouse/ClickHouse/pull/106093) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des table engines `Remote` et `RemoteSecure`, équivalents persistants des table functions `remote` et `remoteSecure`. `CREATE TABLE ... ENGINE = Remote('addresses', db, table, ...)` fonctionne désormais en plus de `CREATE TABLE ... AS remote(...)`. [#106189](https://github.com/ClickHouse/ClickHouse/pull/106189) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des commandes indépendantes du moteur `SYSTEM STOP`, `SYSTEM START`, `SYSTEM PAUSE`, `SYSTEM CANCEL` et `SYSTEM REFRESH`, ainsi que de leurs variantes globales `... ALL BACKGROUND` à l’échelle du serveur, pour contrôler l’activité en arrière-plan des tables `Kafka`, `RabbitMQ`, `NATS`, `S3Queue`/`AzureQueue` et des vues matérialisées actualisables via une interface unifiée. Pour les vues matérialisées actualisables, elles servent d’alias aux commandes existantes `SYSTEM ... VIEW`. Dans le cadre de la prise en charge de ces contrôles pour NATS, les tables JetStream n’acquittent désormais les messages qu’après un insert réussi (au moins une fois ; auparavant, les messages étaient acquittés automatiquement à la livraison et pouvaient être perdus si l’insert échouait). Un nouveau paramètre `nats_wait_for_flush_interval` (par défaut `false`, ce qui préserve le comportement précédent à faible latence) permet, en option, de garder un cycle de consumption ouvert pendant tout l’intervalle de flush au lieu d’effectuer un flush dès que la queue est vide. Un nouveau paramètre `nats_commit_on_select` fait qu’un `SELECT` direct sur une table JetStream consomme (acquitte) les messages qu’il lit. [#107476](https://github.com/ClickHouse/ClickHouse/pull/107476) ([Samuel Krempaský](https://github.com/NIKTONIKTO717)).
* Ajout de la prise en charge, dans les table functions et table engines `mysql`, `postgresql` et `sqlite`, d’une query fournie par l’utilisateur (au lieu d’un nom de table) et transmise telle quelle à la base de données externe, soit sous forme de sous-requête `(SELECT ...)`, soit sous la forme `query('SELECT ...')`. La structure de la table résultante est déduite du résultat de la requête, et une telle table est en lecture seule. Closes [#46758](https://github.com/ClickHouse/ClickHouse/issues/46758). Basé sur l’implémentation initiale de [Denis Vidiaev](https://github.com/the-devid) ([#79652](https://github.com/ClickHouse/ClickHouse/pull/79652)). [#107740](https://github.com/ClickHouse/ClickHouse/pull/107740) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’onglets dans l’UI Web de ClickHouse (Play) pour travailler avec plusieurs requêtes à la fois. Les onglets, leurs titres, paramètres, état actif et petits snapshots de résultats sont conservés entre les rechargements (les résultats volumineux et les images ne sont pas restaurés), s’intègrent à l’historique du navigateur et à l’URL, et peuvent être changés avec la molette de la souris. [#107826](https://github.com/ClickHouse/ClickHouse/pull/107826) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Introduction du table engine `QueryRunner`. Les enregistrements insérés dans une table `QueryRunner` représentent des requêtes que le moteur exécute. Le moteur peut être utilisé pour l’exécution asynchrone de requêtes, l’exécution par lots de requêtes générées, l’acheminement de requêtes vers des clusters distants, des benchmarks, du fuzzing et des tests avec trafic fantôme. [#107888](https://github.com/ClickHouse/ClickHouse/pull/107888) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajout du format de sortie `GeoJSON` pour écrire des documents `FeatureCollection` [GeoJSON](https://geojson.org/), en produisant une entité par ligne. L’unique colonne de type géométrique (`Point`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Ring` ou `Geometry`) devient la `geometry` de chaque entité ; une colonne nommée `id` devient l’`id` de l’entité ; et toutes les autres colonnes deviennent les `properties` de l’entité, sachant qu’une unique colonne de type objet nommée `properties` (un `JSON`, `Map` ou `Tuple` nommé) est écrite directement comme objet `properties`. Un `Ring` est écrit comme un `Polygon` à un seul anneau. Le nouveau paramètre `format_geojson_validate_geometry` (activé par défaut) contrôle si les géométries qui ne constituent pas des formes GeoJSON valides — comme un `Polygon` avec moins de quatre points ou un anneau de `Polygon` non fermé — sont rejetées à la lecture et à l’écriture. De plus, le format d’entrée `GeoJSON` déduit désormais la colonne `id` comme `Nullable(String)` au lieu de `String`, de sorte qu’une entité dont le membre `"id"` est absent ou explicitement défini à `null` est lue comme `NULL` et reste distincte d’une chaîne vide `""`. Basé sur l’implémentation initiale de [Mark Needham](https://github.com/mneedham) ([#98124](https://github.com/ClickHouse/ClickHouse/pull/98124)). [#108065](https://github.com/ClickHouse/ClickHouse/pull/108065) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout de la fonction `dotProductTransposed` (alias `scalarProductTransposed`) qui calcule le produit scalaire approximatif entre une colonne `QBit` et un vecteur de référence, en complément des fonctions existantes `L2DistanceTransposed` et `cosineDistanceTransposed`. [#108100](https://github.com/ClickHouse/ClickHouse/pull/108100) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Ajout des fonctions de distance transposée quantifiée `cosineDistanceTransposedQuantized`, `L2DistanceTransposedQuantized` et `dotProductTransposedQuantized`, qui opèrent sur un `QBit(Int8)` de codes Lloyd-Max `quantizeBFloat16ToInt8`, en déquantifiant les codes stockés à la volée. Un vecteur de référence en virgule flottante constitue la requête en pleine précision, comparée avec une précision `Float32` (une requête `Float64` est ramenée à cette précision) ; une référence `Array(Int8)` est elle-même déquantifiée, pour une distance quantifiée symétrique de type quantized-vs-quantized. [#109405](https://github.com/ClickHouse/ClickHouse/pull/109405) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’un paramètre `stride` optionnel au type de données `QBit` (`QBit(T, dimension, stride)`), qui stocke les groupes de dimensions dans des flux séparés, afin qu’une recherche vectorielle puisse lire efficacement uniquement les premières dimensions (par exemple pour les Matryoshka embeddings). Les fonctions de distance transposée acceptent un quatrième argument optionnel `used_dims` pour lire un nombre réduit de dimensions. [#108103](https://github.com/ClickHouse/ClickHouse/pull/108103) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la prise en charge du type d’élément `Int8` dans le type de données `QBit`, permettant le stockage et la recherche vectorielle par distance transposée (`L2DistanceTransposed`, `cosineDistanceTransposed`) sur des vecteurs d’entiers 8 bits quantifiés. [#108105](https://github.com/ClickHouse/ClickHouse/pull/108105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nouvelle fonction `randomHadamardTransform(vector[, seed[, output_dims]])` : une transformée de Hadamard aléatoire déterministe d’un vecteur flottant — une rotation orthogonale qui préserve la norme, utile pour le prétraitement des embeddings avant la quantification et, lorsqu’elle est tronquée, comme projection aléatoire de Johnson–Lindenstrauss / Hadamard aléatoire sous-échantillonnée. [#108227](https://github.com/ClickHouse/ClickHouse/pull/108227) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de la configuration du chargement différé des dictionnaires au cas par cas avec le paramètre `dictionary_lazy_load` dans la définition du dictionnaire, remplaçant le paramètre serveur global `dictionaries_lazy_load`, afin que certains dictionnaires puissent être chargés de façon différée tandis que d’autres sont chargés immédiatement. [#108314](https://github.com/ClickHouse/ClickHouse/pull/108314) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajout d'une page de recherche intégrée à la documentation, disponible à l'emplacement `/docs` de l'interface HTTP, qui fournit une recherche instantanée dans la table `system.documentation` et affiche la documentation de Reference (avec coloration syntaxique, formules mathématiques et liens croisés). [#108345](https://github.com/ClickHouse/ClickHouse/pull/108345) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la fonction `xxHash64Spark`, qui calcule des valeurs `xxHash64` compatibles avec Spark pour les entrées `String` et `NULL` à l'aide de la graine `42` et renvoie `Int64`. [#108436](https://github.com/ClickHouse/ClickHouse/pull/108436) ([Lalit Yadav](https://github.com/lalitium)).
* `ALTER USER`, `ALTER ROLE` et `ALTER SETTINGS PROFILE` acceptent désormais `SET name = value` comme alias de `MODIFY SETTING name = value`. Cela modifie les paramètres individuellement, sans toucher aux autres, contrairement à la clause `SETTINGS` seule, qui remplace l'intégralité de la liste des paramètres. Cela réduit le risque d'effacer accidentellement d'autres paramètres d'un utilisateur. [#108722](https://github.com/ClickHouse/ClickHouse/pull/108722) ([Groene AI](https://github.com/groeneai)).
* Prise en charge de `ALTER TABLE ... MODIFY CONSTRAINT [IF EXISTS] name CHECK expr` pour modifier sur place l'expression d'une contrainte existante. [#108768](https://github.com/ClickHouse/ClickHouse/pull/108768) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : ajout d'un commutateur de codage couleur par colonne (l'icône 🌈 dans l'en-tête d'une colonne) pour basculer entre barres, heatmap, catégoriel et aucune visualization. Les modes sélectionnés sont mémorisés dans l'URL et l'historique du navigateur. [#108873](https://github.com/ClickHouse/ClickHouse/pull/108873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Keeper` gère désormais correctement l'opcode `CreateContainer` (19) de `ZooKeeper`, derrière un nouveau flag de feature `create_container` à activer explicitement (désactivé par défaut, comme `create_ttl`). Une fois activé après une mise à niveau complète de l'ensemble, les clients `ZooKeeper` externes (par ex. Java `ZooKeeper` 3.9+) peuvent créer des nœuds conteneurs sur `Keeper` au lieu de recevoir `ConnectionLoss` ; les nœuds conteneurs renvoient la valeur sentinelle `ephemeralOwner` attendue, et un thread de GC en arrière-plan sur le leader supprime automatiquement les conteneurs sans enfants. Une requête `Create` simple portant le flag de mode de création `CONTAINER` sans opcode 19 continue d'être rejetée (`ZBADARGUMENTS`) : aucun client `ZooKeeper` connu n'émet cette combinaison. Il s'agit uniquement d'une compatibilité de protocole côté serveur : le client `ZooKeeper` propre à ClickHouse (`zkutil`) reste inchangé et ne dispose d'aucune API pour créer lui-même des nœuds conteneurs. [#108908](https://github.com/ClickHouse/ClickHouse/pull/108908) ([unintended](https://github.com/unintended)).
* Ajout des fonctions `geoToUTM`, `UTMToGeo`, `geoToMGRS` et `MGRSToGeo` pour convertir entre les coordonnées géographiques WGS84 et les systèmes de coordonnées UTM et MGRS. [#108939](https://github.com/ClickHouse/ClickHouse/pull/108939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la fonction `digits(n, offset[, length])`, qui renvoie les chiffres de `n` à partir de l'`offset` indexé à partir de 1 sur `length` chiffres, ou jusqu'à la fin du nombre si `length` est omis. [#109012](https://github.com/ClickHouse/ClickHouse/pull/109012) ([Umang Agrawal](https://github.com/1000ms)).
* Ajout de la fonction arithmétique `sqr` pour calculer le carré d'un nombre. [#109061](https://github.com/ClickHouse/ClickHouse/pull/109061) ([Lalit Yadav](https://github.com/lalitium)).
* Ajout d'une nouvelle fonction `dictGetRoot`, qui renvoie l'ancêtre le plus haut (la racine) d'une clé dans un dictionnaire hiérarchique. Il s'agit d'un équivalent pratique de `dictGetHierarchy(dict_name, key)[-1]`. [#109459](https://github.com/ClickHouse/ClickHouse/pull/109459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des commandes `SYSTEM UNLOAD DICTIONARY` et `SYSTEM UNLOAD DICTIONARIES` pour libérer la mémoire des dictionnaires sans supprimer leur définition. Les dictionnaires seront rechargés de manière différée lors du prochain accès. [#109639](https://github.com/ClickHouse/ClickHouse/pull/109639) ([Matheus Nerone](https://github.com/Manerone)).
* Ajout des fonctions `geometryIntersectCartesian` et `geometryIntersectSpherical`, qui indiquent si deux géométries s'intersectent. Contrairement à `polygonsIntersectCartesian`/`polygonsIntersectSpherical`, elles acceptent n'importe quel type de données géométriques (`Point`, `LineString`, `MultiLineString`, `Ring`, `Polygon`, `MultiPolygon`), y compris le type commun `Geometry`, et les deux arguments peuvent être de types différents. [#110062](https://github.com/ClickHouse/ClickHouse/pull/110062) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les paramètres de requête (substitutions `{name:Type}`) peuvent désormais être utilisés comme valeurs de paramètre, à la fois dans la clause `SETTINGS` d'une requête (telle que `SELECT` ou `INSERT`) et dans des requêtes `SET` autonomes, par exemple `SELECT ... SETTINGS max_threads = {threads:UInt64}` et `SET max_threads = {threads:UInt64}`. [#108760](https://github.com/ClickHouse/ClickHouse/pull/108760) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* Expansion des caractères génériques pour la fonction de table `url` et le moteur de table `URL` : les caractères génériques dans le chemin de l’URL sont développés en listant les pages d’index HTTP (listes de répertoires HTML ou en texte brut) et en extrayant les URL correspondantes, avec des limites sur la taille de la page d’index et le nombre de répertoires lus. Activé par le paramètre `allow_experimental_url_wildcard_from_index_pages`. [#95181](https://github.com/ClickHouse/ClickHouse/pull/95181) ([Yue Ni](https://github.com/niyue)).
* Les index de texte peuvent désormais stocker les positions des jetons (l’argument d’index `support_phrase_search`) pour permettre une correspondance exacte des expressions avec des lectures directes pour la fonction `hasPhrase`. Nécessite d’activer le paramètre `MergeTree` `allow_experimental_text_index_phrase_search`. [#103172](https://github.com/ClickHouse/ClickHouse/pull/103172) ([Elmi Ahmadov](https://github.com/ahmadov)). L’argument a d’abord été introduit sous le nom `positions`. [#109900](https://github.com/ClickHouse/ClickHouse/pull/109900) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Prise en charge de la compaction des fichiers manifestes pour les tables `Iceberg` via `OPTIMIZE TABLE ... MANIFEST` (protégée par le paramètre `allow_experimental_iceberg_compaction`). Résout [#95174](https://github.com/ClickHouse/ClickHouse/issues/95174). [#98178](https://github.com/ClickHouse/ClickHouse/pull/98178) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)). Correction de `OPTIMIZE TABLE ... MANIFEST` pour les tables `Iceberg` lorsque les tuples de partition du manifeste ne correspondent pas à leur spécification de partition. [#111368](https://github.com/ClickHouse/ClickHouse/pull/111368) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Ajout d’une variante Real Doubles (RD) et d’un argument facultatif `ALP(AUTO|STD|RD)` au codec expérimental `ALP`. `ALP` seul sélectionne désormais automatiquement entre le schéma `STD` existant et `RD`, au lieu d’utiliser systématiquement `STD`. [#99654](https://github.com/ClickHouse/ClickHouse/pull/99654) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Ajout d’un cache SLRU en mémoire pour les fichiers de métadonnées `Paimon` désérialisés (manifest lists et manifestes). Lorsqu’il est activé via le paramètre `use_paimon_metadata_files_cache`, les requêtes répétées sur la même table `Paimon` évitent de retélécharger et de réanalyser les métadonnées depuis l’object storage. [#104657](https://github.com/ClickHouse/ClickHouse/pull/104657) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Ajout de « drivers » pour les fonctions définies par l’utilisateur exécutables. Un driver déclaré dans `<user_defined_executable_function_drivers_config>` peut être utilisé dans `CREATE FUNCTION name ARGUMENTS (...) RETURNS T ENGINE = DriverName(...) AS '...code...'` pour compiler ou autrement traiter un extrait de code utilisateur au moment de la création de la fonction, et produire une UDF exécutable. La configuration résultante est stockée dans `<dynamic_user_defined_executable_functions_path>`, et la requête d’origine est conservée sous la forme `ATTACH FUNCTION` afin que la fonction survive aux redémarrages du serveur. Un driver `c_function_body` de preuve de concept compile et exécute des corps de fonctions C dans des conteneurs Docker isolés en mode `executable_pool`. Basé sur l’implémentation initiale de [Daniil Timižev](https://github.com/dahbka-lis) ([#77128](https://github.com/ClickHouse/ClickHouse/pull/77128)). [#105131](https://github.com/ClickHouse/ClickHouse/pull/105131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Exécute `SELECT count(*) FROM t WHERE col <op> default(col)` à partir des statistiques de parcimonie par colonne dans `serialization.json`, sans aucune analyse des données, lorsque le prédicat partitionne exactement la colonne entre valeurs par défaut et non par défaut (avec le nouveau paramètre expérimental `optimize_trivial_count_with_sparsity_filter`, désactivé par défaut). [#105890](https://github.com/ClickHouse/ClickHouse/pull/105890) ([Raúl Marín](https://github.com/Algunenano)).
* Les requêtes d’API de la Query API Prometheus vers `/api/v1/query` et `/api/v1/query_range` sont désormais enregistrées dans `system.query_log` avec les métriques `read_rows` et `read_bytes`. [#106611](https://github.com/ClickHouse/ClickHouse/pull/106611) ([James Cunningham](https://github.com/JTCunning)).
* Le chemin de lecture expérimental `ReaderExecutor` (`use_reader_executor`, désactivé par défaut) peut désormais maintenir ouverte une connexion à une source distante et la réutiliser pour des lectures séquentielles, réduisant ainsi le nombre de requêtes vers l’object storage lors des parcours. [#107735](https://github.com/ClickHouse/ClickHouse/pull/107735) ([Sema Checherinda](https://github.com/CheSema)). Il prend également désormais en charge la lecture de fichiers chiffrés, avec un cache global des en-têtes de chiffrement configuré par le paramètre serveur `encryption_header_cache_size` et vidé par `SYSTEM DROP ENCRYPTION HEADERS CACHE`. [#109702](https://github.com/ClickHouse/ClickHouse/pull/109702) ([Sema Checherinda](https://github.com/CheSema)).
* Prise en charge des lectures basées sur un plan de requête distribué pour `SELECT ... FINAL` sur les tables de la famille `MergeTree` lorsque `make_distributed_plan` est activé. [#108148](https://github.com/ClickHouse/ClickHouse/pull/108148) ([Alexander Gololobov](https://github.com/davenger)).
* Ajout d’une exécution expérimentale des répliques parallèles basée sur le plan pour les requêtes `MergeTree`. [#108504](https://github.com/ClickHouse/ClickHouse/pull/108504) ([Igor Nikonov](https://github.com/devcrafter)).
* Ajout de la famille expérimentale de codecs vectoriels `Quantize` et d’une réécriture optionnelle de recherche vectorielle approximative en deux étapes sur des flux compagnons quantifiés. [#108565](https://github.com/ClickHouse/ClickHouse/pull/108565) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Réactivation du codec de compression avec perte à erreur bornée expérimental `SZ3` pour les colonnes `Float32`/`Float64` (et leurs tableaux), initialement implémenté par [Konstantin Vedernikov](https://github.com/scanhex12) ([#83088](https://github.com/ClickHouse/ClickHouse/pull/83088)). Il nécessite `allow_experimental_codecs`. [#108788](https://github.com/ClickHouse/ClickHouse/pull/108788) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Correction de la lecture des données compressées avec `SZ3('ALGO_LORENZO_REG', ...)`, qui échouait auparavant avec `CORRUPTED_DATA`, et suppression d’un comportement indéfini lors de la compression de valeurs en virgule flottante non finies (`NaN` et infinis). [#110762](https://github.com/ClickHouse/ClickHouse/pull/110762) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du codec expérimental `ZXC` — un codec LZ asymétrique avec une compression lente et une décompression très rapide, offrant un taux de compression compris entre `LZ4` et `ZSTD`. Il nécessite `allow_experimental_codecs = 1`, et `system.compression_codecs` le signale comme expérimental. [#110620](https://github.com/ClickHouse/ClickHouse/pull/110620) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#111007](https://github.com/ClickHouse/ClickHouse/pull/111007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Vous pouvez désormais vous authentifier auprès de OneLake à l’aide d’un bearer token obtenu au préalable via le paramètre `onelake_bearer_token`, au lieu de `onelake_client_id` et `onelake_client_secret`. Cela évite de partager un secret client de longue durée. Le token n’est pas renouvelé ; la base de données doit donc être recréée une fois qu’il expire. [#109104](https://github.com/ClickHouse/ClickHouse/pull/109104) ([Asya Shneerson](https://github.com/asya-ch)).
* Les AI functions ne prennent plus la named collection comme premier argument positionnel. Les informations d’authentification proviennent des paramètres `ai_function_text_default_credentials` / `ai_function_embedding_default_credentials` ou d’une clé `credentials` dans un argument final facultatif `Map(String, String)`, qui transporte également les paramètres ajustables (`model`, `max_tokens`, `temperature`, `system_prompt`, `instructions`, `dimensions`). [#109232](https://github.com/ClickHouse/ClickHouse/pull/109232) ([George Larionov](https://github.com/george-larionov)). La fonction `aiEmbed` prend désormais `model` comme argument positionnel obligatoire (`aiEmbed(text, model[, params])`) au lieu de le lire depuis la named collection, ce qui garantit la reproductibilité des embeddings. [#110619](https://github.com/ClickHouse/ClickHouse/pull/110619) ([George Larionov](https://github.com/george-larionov)).
* Correction de `data_uncompressed_bytes` pour les index de saut empaquetés dans `skp_idx.packed` (via `packed_skip_index_max_bytes`) : la taille non compressée signalée correspondait en réalité à la taille compressée, ce qui pouvait également empêcher l’activation de `distributed_index_analysis`. [#109272](https://github.com/ClickHouse/ClickHouse/pull/109272) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout d’un stockage expérimental de data part empaquetées pour les tables `MergeTree`, qui regroupe la plupart des fichiers d’une part dans une archive unique `data.packed` au lieu d’un fichier par flux (les projections et quelques fichiers de service, tels que `txn_version.txt`, sont toujours écrits séparément). Il est contrôlé par les paramètres `min_bytes_for_full_part_storage`, `min_rows_for_full_part_storage` et `min_level_for_full_part_storage`, et est désactivé par défaut. Une fois qu’une table écrit des parts empaquetées, les anciennes versions du serveur ne peuvent plus les lire ; l’activation de ce format empêche donc de revenir à une version antérieure du serveur. [#108118](https://github.com/ClickHouse/ClickHouse/pull/108118) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout d’une table function expérimentale `eval`, qui évalue une expression constante en query string et exécute l’unique requête `SELECT` ainsi obtenue. La fonctionnalité est désactivée par défaut et peut être activée avec le paramètre `allow_experimental_eval_table_function`. Auteur : [Yue Ni](https://github.com/niyue). [#110132](https://github.com/ClickHouse/ClickHouse/pull/110132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la prise en charge de la compression `zstd` au handler HTTP expérimental Prometheus remote-write v1. [#110907](https://github.com/ClickHouse/ClickHouse/pull/110907) ([James Cunningham](https://github.com/JTCunning)).
* L’écriture dans les tables `DeltaLake` (paramètre `allow_experimental_delta_lake_writes`) est passée en bêta. [#107034](https://github.com/ClickHouse/ClickHouse/pull/107034) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ajout des `ProfileEvents` `DistributedPlanRemoteTasks`, `DistributedPlanLocalExecution` et `DistributedPlanHostsUsed` pour observer l’exécution des plans de requête distribués expérimentaux (`make_distributed_plan`). [#107985](https://github.com/ClickHouse/ClickHouse/pull/107985) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Suppression du stockage expérimental basé sur RocksDB dans Keeper (`experimental_use_rocksdb`). Un nouveau stockage sur disque plus performant arrive bientôt. [#108000](https://github.com/ClickHouse/ClickHouse/pull/108000) ([Michael Kolupaev](https://github.com/al13n321)).
* L’analyse d’index distribuée (fonctionnalité expérimentale contrôlée par le paramètre `distributed_index_analysis`) envoie désormais les longues listes de noms de data part aux serveurs distants sous forme de scalaires, au lieu de les intégrer au query text. Cela évite d’éventuels échecs dus aux limites `max_ast_elements` / `max_query_size` et supprime le surcoût lié au parsing de l’AST. [#110419](https://github.com/ClickHouse/ClickHouse/pull/110419) ([Azat Khuzhin](https://github.com/azat)).
* Optimisation des fonctions d’aggregation expérimentales `timeSeries*ToGrid` : les buckets sont désormais alignés à la fois sur le step et sur la window, et l’aggregation finale est nettement plus rapide lorsque la window est beaucoup plus grande que le step. Le format de serialization de l’aggregation state a été modifié de manière incompatible (ces fonctions sont expérimentales). [#106724](https://github.com/ClickHouse/ClickHouse/pull/106724) ([Vitaly Baranov](https://github.com/vitlibar)).
* Les target tables externes d’une table `TimeSeries` sont désormais enregistrées comme dépendances référentielles : comme pour les materialized views, cela empêche de supprimer une target table externe avant la table `TimeSeries` qui la référence (si `check_referential_table_dependencies` est activé). [#108388](https://github.com/ClickHouse/ClickHouse/pull/108388) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ajout de la fonction PromQL `increase`. [#111023](https://github.com/ClickHouse/ClickHouse/pull/111023) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* Les `JOIN` peuvent désormais utiliser l’index de clé primaire ou les skip indexes de la table de gauche pour écarter des granules. Contrôlé par le paramètre `enable_join_runtime_filters_index_analysis`. [#109085](https://github.com/ClickHouse/ClickHouse/pull/109085) ([Shankar Iyer](https://github.com/shankar-iyer)).
* La sérialisation et la désérialisation de vecteurs de types trivialement sérialisables utilisent désormais un seul appel d’E/S sur le tampon au lieu de traiter les éléments un par un. [#89842](https://github.com/ClickHouse/ClickHouse/pull/89842) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Optimisation des recherches inverses dans les dictionnaires : un prédicat d’égalité constant tel que `WHERE dictGet(dict, attr, key_expr) = value` est désormais directement replié en constante en un filtre sur la clé (`key_expr = const`, `key_expr IN [...]` ou `WHERE 0`) au lieu d’être réécrit en sous-requête `IN (SELECT ... FROM dictionary(...))`, et le chemin constant de `dictGetKeys` s’exécute désormais en parallèle. [#91164](https://github.com/ClickHouse/ClickHouse/pull/91164) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout d’un nouveau paramètre `merge_tree_generic_exclusion_search_max_steps` qui limite le nombre d’étapes que l’algorithme de recherche par exclusion générique consacre à l’analyse de l’index de clé primaire de chaque part de données. Le budget est d’abord consommé sur les plus grandes plages de clés restantes, de sorte que même un petit budget permet d’écarter l’essentiel des données ; les plages qui n’ont pas été entièrement analysées sont lues en entier, de sorte que le résultat de la requête reste correct mais que davantage de granules peuvent être lus. La limite est appliquée de manière souple : elle peut être dépassée d’au plus `merge_tree_coarse_index_granularity` étapes, plus une étape pour chaque plage en laquelle la part est déjà divisée (par exemple, par le cache des conditions de requête). La valeur par défaut 0 signifie que le nombre d’étapes est illimité. [#92779](https://github.com/ClickHouse/ClickHouse/pull/92779) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Les requêtes avec `ORDER BY` et `LIMIT` sur des vues au-dessus de tables `Distributed` utilisent désormais l’optimisation de fusion de flux triés : le `ORDER BY`/`LIMIT` externe est poussé dans la requête interne d’une vue simple, de sorte que chaque shard trie ses données localement et que le coordinateur fusionne des flux prétriés au lieu d’effectuer un tri complet. [#94102](https://github.com/ClickHouse/ClickHouse/pull/94102) ([matanper](https://github.com/matanper)).
* `optimize_or_like_chain` est désormais activé par défaut. Clôt [#87779](https://github.com/ClickHouse/ClickHouse/issues/87779). [#94517](https://github.com/ClickHouse/ClickHouse/pull/94517) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Marque les tables de logs système `MergeTree` non répliquées avec rotation et sans TTL comme `table_readonly` afin d’éviter des opérations en arrière-plan inutiles. Le paramètre `MergeTree` `table_readonly` supprime désormais également toute activité en arrière-plan sur une table `MergeTree` simple — fusions ordinaires, TTL (`DELETE`/`MOVE`/recompression) et de recompression, mutations en arrière-plan et déplacements de parts en arrière-plan — et rejette les commandes de partition modifiantes (`ATTACH`/`MOVE`/`DROP`/`DROP DETACHED`/`FETCH`/`REPLACE PARTITION` ainsi que `MOVE PARTITION ... TO TABLE` vers la table), en plus des insertions, mutations et `OPTIMIZE` qu’il rejetait déjà. Par conséquent, une table `table_readonly` avec un TTL ne supprime plus ses données expirées tant que le paramètre est activé. [#95079](https://github.com/ClickHouse/ClickHouse/pull/95079) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* Améliore les performances de récupération d’un seul enregistrement utilisateur dans `system.users` lorsque le serveur compte de nombreux utilisateurs. [#96699](https://github.com/ClickHouse/ClickHouse/pull/96699) ([Alistair Evans](https://github.com/alistairjevans)).
* La lecture ordonnée avec des replicas parallèles utilise désormais la même logique que la lecture locale pour diviser la table en `max_threads` parts, afin d’améliorer le parallélisme. [#101434](https://github.com/ClickHouse/ClickHouse/pull/101434) ([Nikita Taranov](https://github.com/nickitat)).
* Utilise les bornes de l’index minmax de partition pour élaguer davantage de granules lors de l’analyse de la clé primaire des tables `MergeTree`, lorsqu’une colonne de la clé primaire est aussi une colonne d’entrée de la clé de partition. Par exemple, dans une table `MergeTree` avec `ORDER BY (id, event_time)` et `PARTITION BY toYYYYMM(event_time)`, ClickHouse utilisera l’index minmax de partition sur `event_time` pendant l’analyse de l’index de clé primaire afin de prendre des décisions d’élagage des granules plus pertinentes. Contrôlé par le nouveau paramètre `use_partition_minmax_for_primary_key_pruning` (activé par défaut). [#103480](https://github.com/ClickHouse/ClickHouse/pull/103480) ([UnamedRus](https://github.com/UnamedRus)).
* Active le cache des conditions de requête pour les requêtes qui utilisent le filtrage dynamique Top-K (`ORDER BY ... LIMIT n`). L’entrée du cache est partitionnée selon les paramètres du plan Top-K, de sorte qu’une même requête réutilise les résultats mis en cache du filtre `WHERE`, tandis qu’un `LIMIT`, une colonne de tri ou un ordre de tri différent produit une nouvelle entrée. [#104478](https://github.com/ClickHouse/ClickHouse/pull/104478) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du paramètre `use_constant_folding_in_index_analysis` (désactivé par défaut). Lorsqu’il est activé, l’analyse de la clé primaire `MergeTree`, de `MinMax` et des index de saut replie, séparément pour chaque part, les constantes au niveau de la partition dans le prédicat de filtre, ce qui améliore l’élagage pour les filtres dont les branches dépendent des valeurs de partition, par ex. `(a = 1 AND b >= 1) OR (a = 2 AND b > 10)` avec `PARTITION BY a`. [#104582](https://github.com/ClickHouse/ClickHouse/pull/104582) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Pousse `LIMIT` dans aggregation-in-order pour permettre un arrêt anticipé lorsque la clé `GROUP BY` correspond à la clé `ORDER BY` et à la clé de tri de la table, réduisant significativement le nombre de lignes lues. [#104859](https://github.com/ClickHouse/ClickHouse/pull/104859) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* La mise à jour des profile events est désormais jusqu’à 30 fois plus rapide, grâce à l’utilisation d’opérations atomiques par CPU pour les compteurs globaux du serveur et par utilisateur. Contrôlé par le paramètre serveur `user_profile_events_per_cpu` (il utilise environ 640 KiB par utilisateur sur 64 cœurs, donc avec un très grand nombre d’utilisateurs, il peut être judicieux de le laisser désactivé). [#105056](https://github.com/ClickHouse/ClickHouse/pull/105056) ([Azat Khuzhin](https://github.com/azat)).
* Active `allow_aggregate_partitions_independently` par défaut. Lorsqu’une clé `GROUP BY` est adaptée à la clé de partition, ClickHouse peut agréger chaque partition indépendamment et ignorer l’étape de fusion globale. Des heuristiques d’exécution ignorent automatiquement l’optimisation lorsque la disposition des partitions la rend défavorable (trop peu de partitions, trop de partitions ou tailles de partitions fortement déséquilibrées). [#105128](https://github.com/ClickHouse/ClickHouse/pull/105128) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les requêtes de vector search avec rescoring (`vector_search_with_rescoring = 1`) calculent désormais la distance exacte uniquement pour les lignes renvoyées par le vector index, en appliquant un filtre exact sur la position des lignes au lieu d’un rescoring en brute-force des lignes voisines du même granule `MergeTree`. [#105591](https://github.com/ClickHouse/ClickHouse/pull/105591) ([Sergey Kuznetsov](https://github.com/skuznetsov)). [#108846](https://github.com/ClickHouse/ClickHouse/pull/108846) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Améliore les performances de l’algorithme de jointure `partial_merge` sur les clés `FixedString` en comparant des séries de valeurs d’un seul coup au lieu d’un appel de comparaison par valeur. [#105737](https://github.com/ClickHouse/ClickHouse/pull/105737) ([Artem Zuikov](https://github.com/4ertus2)).
* `SHOW TABLES` et `system.tables` sur les catalogues de data lake (Iceberg REST, Glue, Unity, Hive, Paimon) transmettent désormais au catalog les prédicats liés à l’espace de noms, évitant ainsi un balayage complet du catalog. Résout [#105022](https://github.com/ClickHouse/ClickHouse/issues/105022). [#106029](https://github.com/ClickHouse/ClickHouse/pull/106029) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Limiter la mémoire non suivie par CPU afin d’éviter le surengagement de mémoire et les erreurs de mémoire insuffisante (les limites sont configurées avec les paramètres serveur `max_per_cpu_untracked_memory` et `per_cpu_untracked_memory_thread_buffer`). [#106055](https://github.com/ClickHouse/ClickHouse/pull/106055) ([Azat Khuzhin](https://github.com/azat)).
* Accélérer les opérateurs qui parcourent un flux trié pour repérer des séquences de valeurs de clé identiques — `DISTINCT` in order, `LIMIT BY` in order, negative `LIMIT BY` in order, les joins `full_sorting_merge` et `partial_merge`. [#106502](https://github.com/ClickHouse/ClickHouse/pull/106502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Implémentation d’un lecteur et d’un writer natifs pour les formats `Arrow` et `ArrowStream`, sans utiliser la bibliothèque Apache Arrow, ce qui évite des copies et conversions de données supplémentaires. Il s’agit désormais du comportement par défaut (paramètres `input_format_arrow_use_native_reader` et `output_format_arrow_use_native_writer`) et il est plus rapide, aussi bien en lecture qu’en écriture. [#106522](https://github.com/ClickHouse/ClickHouse/pull/106522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Réactiver LTO pour jemalloc après correction d’une corruption du cache de thread apparue avec LTO, ce qui améliore les performances. [#106898](https://github.com/ClickHouse/ClickHouse/pull/106898) ([Azat Khuzhin](https://github.com/azat)).
* Réduction de l’utilisation mémoire et amélioration des performances des `JOIN`. Le côté droit d’un hash join utilise désormais une référence de ligne compacte de 8 octets basée sur un index, de sorte que les entrées de la table de hachage des joins `ALL` sont aussi petites que celles des joins `ANY`, quel que soit le type de clé. Mesuré sur de grosses requêtes de join `parallel_hash` — joins `INNER` et `ANY` sur des tables de 100 à 300 millions de lignes avec des clés `UInt64` et `String`, avec des clés à la fois uniques et dupliquées : la requête médiane est devenue environ 12 % plus rapide et a utilisé environ 15 % de mémoire de pointe en moins, sans qu’aucune requête ne devienne plus lente. Les joins `INNER` sur des clés `UInt64` ont le plus progressé (médiane d’environ 21 % plus rapide avec 38 % de mémoire en moins). [#107189](https://github.com/ClickHouse/ClickHouse/pull/107189) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Les clés de jointure `LowCardinality(String)` non-Nullable à une seule colonne sont désormais prises en charge nativement dans le hash join. [#107264](https://github.com/ClickHouse/ClickHouse/pull/107264) ([Nikita Taranov](https://github.com/nickitat)).
* Ajout de l’algorithme d’énumération de l’ordre des joins `dpsub` (programmation dynamique sur des sous-ensembles), qui fournit des plans de join optimaux avec moins de surcoût d’optimisation que `dpsize` et prend en charge les joins non internes. [#107351](https://github.com/ClickHouse/ClickHouse/pull/107351) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Accélérer le chargement du cache du système de fichiers au démarrage en encodant la taille de chaque fichier de cache dans son nom (`<offset>_<size>`), ce qui évite un `stat` par fichier. Le chargement des fichiers de cache écrits par des versions plus anciennes reste pris en charge. [#107415](https://github.com/ClickHouse/ClickHouse/pull/107415) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des performances de `arrayElement` sur `Array(LowCardinality(String))` et des fonctions `LIKE` de map sur des `Map` avec des clés ou des valeurs `LowCardinality(String)`, en évitant la matérialisation inutile des chaînes. [#107450](https://github.com/ClickHouse/ClickHouse/pull/107450) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Éviter de convertir une aggregation à un niveau en aggregation à deux niveaux lorsque l’utilisation mémoire est faible, en suivant la mémoire de l’état d’aggregation lui-même plutôt que celle de l’ensemble de la requête. [#107490](https://github.com/ClickHouse/ClickHouse/pull/107490) ([Hechem Selmi](https://github.com/m-selmi)).
* Accélérer l’analyse des requêtes d’aggregation : la clé de cache des statistiques de taille de la table de hachage d’aggregation est désormais calculée à partir du plan de requête, au lieu de construire l’AST complet de la requête. [#107643](https://github.com/ClickHouse/ClickHouse/pull/107643) ([Dmitry Novik](https://github.com/novikd)).
* Améliore considérablement les performances de `INTERSECT ALL` et `EXCEPT ALL` (le mode par défaut de `INTERSECT` et `EXCEPT`) en indexant le multiensemble sur la valeur de la ligne au lieu de hacher chaque ligne avec SipHash. [#107649](https://github.com/ClickHouse/ClickHouse/pull/107649) ([Raúl Marín](https://github.com/Algunenano)).
* Reconstruit les filtres de ROW POLICY sans conserver le verrou du cache, ce qui améliore la scalabilité des requêtes lors d'opérations concurrentes `CREATE ROW POLICY` et `DROP ROW POLICY`. [#107917](https://github.com/ClickHouse/ClickHouse/pull/107917) ([Azat Khuzhin](https://github.com/azat)).
* Accélère les fonctions `match`, `extract`, `extractAll`, `replaceRegexpOne` et `replaceRegexpAll` pour les expressions régulières simples en les compilant en code natif avec LLVM. Contrôlé par le nouveau paramètre `compile_regular_expressions` (activé par défaut) ; les motifs en dehors du sous-ensemble pris en charge reviennent automatiquement au moteur RE2. [#108004](https://github.com/ClickHouse/ClickHouse/pull/108004) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accélère la décompression ZSTD sur AArch64 (ARM) pour les colonnes avec de petits offsets de correspondance, comme les colonnes d'entiers à largeur fixe, en vectorisant avec NEON les copies chevauchantes à offset court. Par exemple, la décompression d'une colonne `UInt64` est jusqu'à \~2,3× plus rapide sur AWS Graviton 4. [#108049](https://github.com/ClickHouse/ClickHouse/pull/108049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Utilise la bibliothèque `libdeflate` pour la compression et la décompression gzip/zlib/deflate, ce qui les accélère (compression \~1,15× avec un meilleur ratio, décompression \~1,4–1,5×) pour les données `.gz`/HTTP/`url`/`s3` et le codec GZIP de Parquet. [#108074](https://github.com/ClickHouse/ClickHouse/pull/108074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Améliore les performances des requêtes de recherche textuelle combinées à un filtre sur la primary key. [#108114](https://github.com/ClickHouse/ClickHouse/pull/108114) ([Anton Popov](https://github.com/CurtizJ)).
* Utilise les statistiques d'exécution collectées lors de la première exécution d'une requête pour optimiser les exécutions suivantes : l'algorithme de join `hash` peut automatiquement basculer vers `parallel_hash` en fonction des statistiques collectées. [#108125](https://github.com/ClickHouse/ClickHouse/pull/108125) ([Hechem Selmi](https://github.com/m-selmi)). La taille des JOIN runtime filters est optimisée à l'aide de la taille de la hash table issue des statistiques d'exécution du join, contrôlée par le nouveau paramètre `join_runtime_filter_size_from_hash_table_stats`. [#108313](https://github.com/ClickHouse/ClickHouse/pull/108313) ([Hechem Selmi](https://github.com/m-selmi)).
* Améliore la vitesse de décompression LZ4 pour les colonnes de taille fixe à faible cardinalité. [#108175](https://github.com/ClickHouse/ClickHouse/pull/108175) ([Nikita Taranov](https://github.com/nickitat)).
* Accélère les fonctions `trimLeft`/`trimRight`/`trimBoth` utilisant les espaces par défaut (ainsi que leurs alias `ltrim`/`rtrim`/`trim`) : les lignes consécutives ne nécessitant aucun trimming sont copiées en un seul batch, et l'analyse des espaces ligne par ligne n'est effectuée que pour les lignes qui ont réellement un espace au début ou à la fin. [#108177](https://github.com/ClickHouse/ClickHouse/pull/108177) ([Groene AI](https://github.com/groeneai)).
* Améliore les performances de `replaceAll` et `replaceRegexpAll` lorsque le motif est un seul caractère et que le remplacement est lui aussi un seul caractère (par exemple `replaceRegexpAll(s, ' ', '_')`). Ces remplacements ne modifient plus la structure de la chaîne : la colonne est donc désormais copiée une seule fois, et les octets correspondants sont réécrits sur place au lieu d'exécuter une boucle de recherche pour chaque correspondance. [#108178](https://github.com/ClickHouse/ClickHouse/pull/108178) ([Groene AI](https://github.com/groeneai)).
* Améliore les performances de la fonction `pointInPolygon` avec un polygone constant. Le cache des polygones prétraités est désormais indexé sur les arguments constants bruts, de sorte qu’un polygone constant n’est analysé qu’une seule fois (en cas de cache miss) au lieu de l’être à nouveau pour chaque bloc d’entrée. [#108184](https://github.com/ClickHouse/ClickHouse/pull/108184) ([Groene AI](https://github.com/groeneai)).
* Accélère l’analyse de la représentation canonique de date-heure `YYYY-MM-DD hh:mm:ss` en mode best-effort (`date_time_input_format = 'best_effort'`, `cast_string_to_date_time_mode = 'best_effort'`), qui est le mode par défaut. Cela corrige une régression des performances d’analyse introduite lorsque ces valeurs par défaut sont passées de `basic` à `best_effort`. [#108187](https://github.com/ClickHouse/ClickHouse/pull/108187) ([Groene AI](https://github.com/groeneai)).
* Évite de maintenir les compteurs de sélectivité de `system.predicate_statistics_log` sur le chemin de lecture `MergeTree` lorsque la fonctionnalité est désactivée (`predicate_statistics_sample_rate = 0`, valeur par défaut). Cela supprime une mise à jour atomique par granule et un `popcount` de filtre en `O(rows)` à chaque lecture, corrigeant une régression de performances particulièrement visible sur AArch64. [#108190](https://github.com/ClickHouse/ClickHouse/pull/108190) ([Groene AI](https://github.com/groeneai)).
* Accélère l’analyse des nombres à virgule flottante à partir de texte avec `precise_float_parsing = 1`, au point de la rendre aussi rapide, voire plus rapide, que l’analyseur par défaut sur presque toutes les entrées. Met également à jour la bibliothèque `fast_float` intégrée vers la version v8.2.10. [#108205](https://github.com/ClickHouse/ClickHouse/pull/108205) ([Raúl Marín](https://github.com/Algunenano)).
* Utilise la bibliothèque `simdutf` pour les fonctions d’encodage et de décodage base64, ce qui améliore leurs performances. [#108333](https://github.com/ClickHouse/ClickHouse/pull/108333) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Optimise `DISTINCT` pour les clés coûteuses à forte cardinalité. [#108366](https://github.com/ClickHouse/ClickHouse/pull/108366) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Dans les builds non Linux (macOS et FreeBSD), jemalloc ne purge plus les pages sales de manière agressive (un appel système `madvise` par `free`) ; il utilise désormais un thread de purge en arrière-plan avec un `dirty_decay_ms` fini, comme sur Linux. Cela accélère considérablement les charges de travail à forte rotation d’allocations, comme les CTE récursives (\~2x sur un benchmark de CTE récursive sur macOS), avec un impact RSS négligeable. [#108430](https://github.com/ClickHouse/ClickHouse/pull/108430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accélère la planification des requêtes par l’analyseur pour les expressions qui référencent le même alias `WITH` ou répètent de nombreuses fois la même sous-expression (par exemple, des chaînes `if`/`multiIf` profondément imbriquées), en évitant de reconstruire les sous-expressions partagées lors de la construction du DAG d’actions. [#108523](https://github.com/ClickHouse/ClickHouse/pull/108523) ([Dmitry Novik](https://github.com/novikd)).
* Les Runtime Filters sont désormais construits sur les clés d’égalité même lorsque la clause `ON` contient aussi des prédicats de non-égalité, ce qui réduit le nombre de lignes entrant dans la jointure par hachage pour les jointures combinant des conditions d’égalité et de non-égalité. `LEFT ANTI JOIN` n’est pas affecté. [#108579](https://github.com/ClickHouse/ClickHouse/pull/108579) ([Antonio Álvarez Caballero](https://github.com/29antonioac)).
* Active `-fno-math-errno` globalement dans toute la base de code, ce qui permet au compilateur de mieux optimiser les fonctions mathématiques. [#108628](https://github.com/ClickHouse/ClickHouse/pull/108628) ([Nikita Taranov](https://github.com/nickitat)).
* Abaisse le seuil de préchargement logiciel pour les tables de hachage utilisées pour l’aggregation et les jointures, de `4 * L2 cache size` à `L2 cache size`, de sorte que le préchargement soit activé dès que la table de hachage ne tient plus dans le cache L2. Cela corrige une régression sur `GROUP BY` et `JOIN` avec des tables de hachage de taille moyenne (\~1-8 MiB) sur les plateformes dont le cache L2 déclaré est grand (par ex. AArch64 avec un cache L2 de 2 MiB). [#108655](https://github.com/ClickHouse/ClickHouse/pull/108655) ([Groene AI](https://github.com/groeneai)).
* Amélioration des performances des fonctions de fenêtre. Les requêtes de fenêtre sur des tables larges incluant `SELECT *` utilisent désormais nettement moins de mémoire et s’exécutent plus rapidement. Les agrégats de fenêtre, notamment `quantile*`, `uniq*` et `groupArray`, sont plus rapides avec `OVER ()` et `OVER (ORDER BY ... RANGE ...)`. La fonction `cume_dist` est également plus rapide, et les fenêtres utilisant `PARTITION BY` ou `ORDER BY` offrent désormais de meilleures performances sur les colonnes comportant de nombreuses valeurs répétées. [#108688](https://github.com/ClickHouse/ClickHouse/pull/108688) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Analyse des requêtes accélérée pour les requêtes comportant de nombreuses chaînes `AND` de comparaisons, ou de très longues chaînes `AND` de comparaisons : l’optimisation `optimize_and_compare_chain` est désormais limitée par un budget de travail (nouveau paramètre `optimize_and_compare_chain_max_hash_work`) au lieu de hacher une grande partie de l’arbre de requête, et la résolution des lambdas ne recalcule plus les hachages du corps des lambdas pour son garde-fou de récursion. [#108757](https://github.com/ClickHouse/ClickHouse/pull/108757) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une régression de performances lors de la lecture de colonnes `JSON`/`Dynamic` avec plusieurs threads : une recherche par valeur du paramètre `input_format_binary_max_type_complexity` provoquait une contention sur le comptage de références dans le contexte de requête partagé, sérialisant les lectures parallèles ; la valeur du paramètre est désormais mise en cache par thread. [#108797](https://github.com/ClickHouse/ClickHouse/pull/108797) ([Seva Potapov](https://github.com/seva-potapov)).
* Correction d’une régression de performances (introduite dans [#71781](https://github.com/ClickHouse/ClickHouse/issues/71781)) où la lecture de nombreux petits fichiers depuis l’object storage via `s3` et d’autres fonctions de table ne faisait plus de prefetching et revenait à des lectures synchrones, ralentissant considérablement les lectures mono-thread et à faible concurrence de très nombreux petits fichiers. [#108872](https://github.com/ClickHouse/ClickHouse/pull/108872) ([Nikita Fomichev](https://github.com/fm4v)). Le prefetch initial des petits objets est désormais également lancé lorsque les lectures depuis l’object storage passent par le cache du système de fichiers (`filesystem_cache_name`), de sorte que les lectures de nombreux petits fichiers (par ex. l’ingestion `S3Queue`) avec le cache activé ne sont plus synchrones ni limitées par la latence. [#109478](https://github.com/ClickHouse/ClickHouse/pull/109478) ([Nikita Fomichev](https://github.com/fm4v)).
* Analyse des littéraux de tableaux et de tuples profondément imbriqués en temps linéaire plutôt qu’en temps quadratique. [#108892](https://github.com/ClickHouse/ClickHouse/pull/108892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Réduction de la surcharge due à la contention sur les verrous dans l’algorithme de jointure `parallel_hash`. [#108938](https://github.com/ClickHouse/ClickHouse/pull/108938) ([Hechem Selmi](https://github.com/m-selmi)).
* Accélération de `estimateCompressionRatio` pour les colonnes encodées en `T64` en calculant analytiquement la taille compressée au lieu de compresser. [#109054](https://github.com/ClickHouse/ClickHouse/pull/109054) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Suppression d’un goulot d’étranglement mono-thread à l’étape de redistribution des plans de requête distribués : chaque flux amont répartit désormais ses lignes indépendamment par compartiment de destination au lieu de faire transiter l’ensemble du flux de données par une seule transformation. [#109206](https://github.com/ClickHouse/ClickHouse/pull/109206) ([Alexander Gololobov](https://github.com/davenger)).
* Réduction de l’utilisation du CPU au repos du serveur Keeper. [#109255](https://github.com/ClickHouse/ClickHouse/pull/109255) ([Michael Kolupaev](https://github.com/al13n321)).
* Accélération de la sérialisation et des fusions de colonnes `JSON` dont les données partagées contiennent de nombreux chemins clairsemés : lors de l’aplatissement des données partagées en colonnes par chemin, le parcours, pour chaque ligne, de toutes les colonnes de chemin accumulées est supprimé, et les lacunes sont remplies en bloc au lieu d’insérer des valeurs par défaut cellule par cellule. [#109341](https://github.com/ClickHouse/ClickHouse/pull/109341) ([Groene AI](https://github.com/groeneai)).
* Réduction de la surcharge CPU liée à l’évaluation des expressions pour les requêtes comportant un grand nombre de colonnes (par exemple, une recherche vectorielle sur une colonne `QBit` avec un petit stride, où chaque vecteur est développé en centaines de sous-colonnes de plans de bits, toutes passées à un unique appel `*DistanceTransposed`). [#109380](https://github.com/ClickHouse/ClickHouse/pull/109380) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des performances des fonctions Geo H3 (`h3ToGeoBoundary`, `h3ToGeo`, `h3CellAreaM2`/`h3CellAreaRads2`, `geoToH3`) en calculant les paires sinus/cosinus conjointement et en supprimant les appels trigonométriques redondants dans les transformations de coordonnées. Les résultats restent inchangés (strictement identiques bit pour bit). [#109399](https://github.com/ClickHouse/ClickHouse/pull/109399) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des performances, jusqu’à 7 fois, des comparaisons (`<`, `>`, `<=`, `>=`) sur les types entiers larges (`Int128`, `UInt128`, `Int256`, `UInt256` et les types qui en dérivent, comme `Decimal128`), ainsi que de la conversion d’entiers signés en `Int256` (jusqu’à 7 fois sur des données de signes mixtes), en rendant le code de comparaison et d’extension de signe sans branchement. [#109474](https://github.com/ClickHouse/ClickHouse/pull/109474) ([Manuel](https://github.com/raimannma)).
* Optimisation de `uniqCombined` (y compris dans le cas d’une aggregation sans clés) et de `uniqHLL12`. [#109794](https://github.com/ClickHouse/ClickHouse/pull/109794) ([Anton Popov](https://github.com/CurtizJ)). [#109831](https://github.com/ClickHouse/ClickHouse/pull/109831) ([Anton Popov](https://github.com/CurtizJ)).
* Les fonctions `arraySort` et `arrayReverseSort` sont plusieurs fois plus rapides sur des Array numériques (y compris `Decimal` et `DateTime64`) lorsqu’elles sont appelées sans lambda. [#109832](https://github.com/ClickHouse/ClickHouse/pull/109832) ([Manuel](https://github.com/raimannma)).
* Accélération de `addDays`, `addWeeks`, `subtractDays` et `subtractWeeks` sur les valeurs `DateTime` et `DateTime64` dans les fuseaux horaires à décalage fixe (comme UTC) grâce à un chemin rapide arithmétique. [#109836](https://github.com/ClickHouse/ClickHouse/pull/109836) ([Manuel](https://github.com/raimannma)).
* Optimisation de l’analyse de l’index textuel. [#109886](https://github.com/ClickHouse/ClickHouse/pull/109886) ([Anton Popov](https://github.com/CurtizJ)).
* Parallélisation du traitement des lignes non appariées dans l’algorithme de join `parallel_hash` dans deux cas supplémentaires : en présence d’un filtre résiduel, et dans le cas de petites join keys (table de hachage à un seul niveau). [#110008](https://github.com/ClickHouse/ClickHouse/pull/110008) ([Hechem Selmi](https://github.com/m-selmi)).
* Les réponses intégrées de l’interface web (l’interface Play, les tableaux de bord et les handlers de fichiers statiques) sont désormais compressées selon l’en-tête `Accept-Encoding` du client, à l’aide de zstd, gzip, deflate, brotli, lz4, xz, snappy ou bzip2. Par exemple, la page `/play` passe d’environ 350 KB non compressés à moins de 120 KB avec zstd, ce qui réduit les temps de chargement sur les connexions lentes. Les réponses déjà compressées ne sont pas modifiées, et `Vary: Accept-Encoding` est émis pour un partitionnement correct du CDN et du cache. [#110108](https://github.com/ClickHouse/ClickHouse/pull/110108) ([Sayantanu Dey](https://github.com/sayantanu-dey)).
* Place un filtre sous une window function ou sous `LIMIT BY` lorsque c’est sans risque : un prédicat écrit au-dessus (un `WHERE` externe autour de la subquery, ou une conjonction dans `QUALIFY`) qui ne référence que les colonnes `PARTITION BY` de la window, ou uniquement les key columns de `LIMIT BY` (pour `LIMIT n BY` avec `n >= 1` et sans `OFFSET`), atteint désormais le stockage et active le pruning par primary key et par partition, les skip indexes et les projections. Par exemple, `SELECT ... row_number() OVER (PARTITION BY key ORDER BY ts) AS rn ... QUALIFY rn = 1 AND key = 'x'` ne lit plus toute la table et n’applique plus la window à l’ensemble des données. [#110114](https://github.com/ClickHouse/ClickHouse/pull/110114) ([Groene AI](https://github.com/groeneai)). [#110116](https://github.com/ClickHouse/ClickHouse/pull/110116) ([Groene AI](https://github.com/groeneai)).
* Avec `join_use_nulls = 1`, un `WHERE` qui rejette les nulls et référence des colonnes des deux côtés d’un OUTER JOIN (par ex. `WHERE l.k = 42 AND r.k = 42`) convertit désormais la jointure en `INNER` (ou `LEFT`/`RIGHT`) et permet le pruning par primary key, comme avec `join_use_nulls = 0`. Auparavant, cette conversion était ignorée dans ce cas et les deux tables étaient lues intégralement. [#110121](https://github.com/ClickHouse/ClickHouse/pull/110121) ([Groene AI](https://github.com/groeneai)).
* Les fonctions avec un seul argument `Nullable` non constant partagent désormais la null map de l’argument avec le résultat, au lieu d’en allouer une nouvelle et de la fusionner. [#110151](https://github.com/ClickHouse/ClickHouse/pull/110151) ([Manuel](https://github.com/raimannma)).
* Évite une allocation sur le tas à chaque vérification d’hyperrectangle lors de l’analyse de l’index de primary key, ce qui accélère le filtrage des marques de 5 à 26 % selon la forme de la query. [#110153](https://github.com/ClickHouse/ClickHouse/pull/110153) ([Manuel](https://github.com/raimannma)).
* Améliore les performances des fonctions `arrayMin` et `arrayMax` sur des Array numériques d’environ 1,3 à 1,5x grâce à une réduction vectorisée au lieu d’une boucle de comparaison élément par élément. [#110163](https://github.com/ClickHouse/ClickHouse/pull/110163) ([Manuel](https://github.com/raimannma)).
* Vectorise la décompression du codec `Delta`. Le décodage est désormais 1,5 à 5 fois plus rapide pour les types de données 8/16/32 bits, ce qui rend les scans de colonnes compressées avec `Delta` jusqu’à 20 % plus rapides. [#110189](https://github.com/ClickHouse/ClickHouse/pull/110189) ([Manuel](https://github.com/raimannma)).
* Accélère les fonctions de recherche de chaînes (`like`, `position`, `match`, `countSubstrings`, `hasToken`, etc.) sur des colonnes `Enum` avec une aiguille constante en ne recherchant que les noms d’enum distincts, puis en réappliquant les résultats à chaque row, au lieu d’effectuer la recherche sur chaque row. [#110325](https://github.com/ClickHouse/ClickHouse/pull/110325) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accélère les fonctions d’agrégation `groupBitOr`/`groupBitAnd`/`groupBitXor` et la family des variances (`varPop`, `varSamp`, `stddevPop`, `stddevSamp`, `skewPop`, `skewSamp`, `kurtPop`, `kurtSamp`, `covarPop`, `covarSamp`, `corr`) grâce à un traitement vectorisé par lots : jusqu’à 4x plus rapide avec le combinator `-If` sur des conditions imprévisibles, et jusqu’à 3x plus rapide pour la family des variances sans celui-ci. [#110461](https://github.com/ClickHouse/ClickHouse/pull/110461) ([Manuel](https://github.com/raimannma)).
* Accélère l’analyse du text index (l’étape qui détermine quels granules lire) : utilise une recherche par exclusion au lieu d’itérer sur tous les granules, et évite de créer un bitmap temporaire pour chaque vérification de plage. [#110530](https://github.com/ClickHouse/ClickHouse/pull/110530) ([Anton Popov](https://github.com/CurtizJ)).
* Prendre en compte la taille sur disque des sous-colonnes `Map` dans l’optimisation automatique de `PREWHERE`. Cela corrige une régression de performances de `PREWHERE` introduite dans [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). Fait partie de [#110462](https://github.com/ClickHouse/ClickHouse/issues/110462). [#110623](https://github.com/ClickHouse/ClickHouse/pull/110623) ([Pavel Kruglov](https://github.com/Avogar)).
* Accélérer l’analyse syntaxique des valeurs `UUID` à partir de texte (par ex. `JSONExtract` vers `LowCardinality(UUID)`, `toUUID`, `CAST AS UUID`) en validant et en convertissant les chiffres hexadécimaux en un seul passage au lieu de deux. [#110625](https://github.com/ClickHouse/ClickHouse/pull/110625) ([Groene AI](https://github.com/groeneai)).
* Améliorer significativement les performances des fonctions d’agrégation `timeSeries*ToGrid` grâce à des implémentations plus rapides du tri et des tables de hachage. [#110875](https://github.com/ClickHouse/ClickHouse/pull/110875) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Les requêtes comme `SELECT * FROM t WHERE id` utilisent désormais l’index pour ignorer des blocs de données sur la colonne `id`. Corrige [#89222](https://github.com/ClickHouse/ClickHouse/issues/89222). [#89603](https://github.com/ClickHouse/ClickHouse/pull/89603) ([Aditya Chopra](https://github.com/adityachopra29)).
* Ajout du paramètre `query_plan_merge_expression_into_join` (activé par défaut) pour permettre la fusion d’étapes d’expression dans des étapes `JOIN` lors de l’optimisation du réordonnancement des jointures. Cela permet de réordonner les jointures à travers des sous-requêtes qui encapsulent des jointures (par ex., lorsqu’un `JOIN` se trouve dans une sous-requête avec des colonnes calculées), ce qui améliore l’optimisation des arbres de jointures complexes. [#98533](https://github.com/ClickHouse/ClickHouse/pull/98533) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Optimiser les chaînes `AND` avec plusieurs conditions de comparaison sur la même expression : détecter les contradictions (par ex. `a < 3 AND a > 5` → `false`) et supprimer les conditions redondantes (par ex. `a = 3 AND a < 5` → `a = 3`). [#99736](https://github.com/ClickHouse/ClickHouse/pull/99736) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Les CTE matérialisées référencées depuis plusieurs branches d’une requête `UNION` sont désormais matérialisées une seule fois et partagées entre toutes les branches. Auparavant, chaque branche recevait sa propre copie de la CTE, qui était intégrée directement puis évaluée séparément. [#102107](https://github.com/ClickHouse/ClickHouse/pull/102107) ([Dmitry Novik](https://github.com/novikd)).
* Les threads de `BackgroundSchedulePool` sont désormais créés à la demande plutôt que tous en une seule fois au démarrage du serveur. Un nouveau paramètre du serveur, `background_schedule_pool_initial_size` (par défaut `16`), contrôle le nombre de workers pré-lancés ; le pool s’agrandit jusqu’à `background_schedule_pool_size` si nécessaire. Cela réduit le nombre de threads inactifs sur les serveurs peu chargés. Corrige [#85265](https://github.com/ClickHouse/ClickHouse/issues/85265). [#105066](https://github.com/ClickHouse/ClickHouse/pull/105066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ignorer les chargements inutiles de mark files pour la sérialisation avancée des données partagées du type `JSON`. [#107051](https://github.com/ClickHouse/ClickHouse/pull/107051) ([Pavel Kruglov](https://github.com/Avogar)).
* Le cache des polygones constants prétraités pour la fonction `pointInPolygon` est désormais partagé entre les requêtes et les threads, et sa taille est limitée par le nouveau paramètre serveur `point_in_polygon_cache_size` (256 MiB par défaut, `0` désactive le cache, modifiable à l’exécution). Auparavant, le cache conservait jusqu’à `max_threads` copies de chaque polygone prétraité, grossissait sans limite avec des polygones distincts et n’était jamais libéré avant le redémarrage du serveur. Il peut être vidé avec `SYSTEM DROP POINT IN POLYGON CACHE`, et son utilisation actuelle est exposée dans `system.metrics` sous les noms `PointInPolygonCacheBytes`, `PointInPolygonCacheCells` et `PointInPolygonCacheSizeLimit`. Clôture [#106393](https://github.com/ClickHouse/ClickHouse/issues/106393). [#107247](https://github.com/ClickHouse/ClickHouse/pull/107247) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Keeper ne conserve plus son verrou interne sur les snapshots pendant la sérialisation et l’écriture d’un snapshot sur disque, ni lors du déplacement de snapshots entre disques. Ainsi, les transferts de snapshots vers d’autres nœuds et le traitement Raft ne sont plus bloqués par la création locale de snapshots. [#107595](https://github.com/ClickHouse/ClickHouse/pull/107595) ([Antonio Andelic](https://github.com/antonio2368)).
* Parallélisation de l’éviction en arrière-plan du cache du système de fichiers (contrôlée par les paramètres `keep_free_space_ratio`). Ajout d’un nouveau paramètre `keep_free_space_eviction_threads` pour contrôler le parallélisme, et augmentation de la valeur par défaut de `keep_free_space_remove_batch` de `100` à `250`. [#108147](https://github.com/ClickHouse/ClickHouse/pull/108147) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Limitation du nombre de parts préparées simultanément dans la copie Azure Blob Storage en lecture puis écriture (utilisée par les backups lorsqu’une copie native n’est pas disponible) à `max_inflight_parts_for_one_file`, afin d’éviter une utilisation excessive de la mémoire lorsque de nombreux fichiers volumineux sont copiés en parallèle. [#108232](https://github.com/ClickHouse/ClickHouse/pull/108232) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Activation globale des trois caches de l’index de texte — auparavant, ils n’étaient activés qu’au sein des requêtes. De plus, la taille du cache des posting lists est désormais nulle, ce qui le désactive de fait à nouveau, car les posting lists sont volumineuses et leur mise en cache est trop coûteuse. [#108274](https://github.com/ClickHouse/ClickHouse/pull/108274) ([Robert Schulze](https://github.com/rschu1ze)).
* Ajout d’une compression en flux des marks en mémoire pendant leur chargement afin de réduire le pic d’utilisation mémoire. Clôture [#108285](https://github.com/ClickHouse/ClickHouse/issues/108285). [#108325](https://github.com/ClickHouse/ClickHouse/pull/108325) ([Pavel Kruglov](https://github.com/Avogar)).
* Le nouveau paramètre du cache du système de fichiers `reserve_granularity` (4 MiB par défaut) réserve de l’espace à l’avance dans des granules plus grossiers, ce qui réduit la contention sur les verrous dans le chemin critique de réservation d’espace du cache du système de fichiers. [#108369](https://github.com/ClickHouse/ClickHouse/pull/108369) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Réduction de la quantité de mémoire utilisée par les métadonnées du cache du système de fichiers (par file segment et par clé). [#108477](https://github.com/ClickHouse/ClickHouse/pull/108477) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Les requêtes vers `system.iceberg_history` avec des filtres `WHERE` sur les colonnes `database` et `table` n’accèdent désormais qu’aux bases de données correspondantes, ce qui peut faire gagner du temps si vous avez de nombreuses bases de données distantes sans rapport sur le serveur. [#108492](https://github.com/ClickHouse/ClickHouse/pull/108492) ([Den Kalantaevskii](https://github.com/Diskein)).
* Suppression de verrous inutiles dans le cache du système de fichiers afin de réduire la contention sur les verrous. [#108932](https://github.com/ClickHouse/ClickHouse/pull/108932) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Réduction de l’utilisation mémoire lors du traitement des métadonnées de `BACKUP` et `RESTORE`. L’ouverture d’une sauvegarde (pour `RESTORE` ou comme base d’un `BACKUP` incrémental) analyse désormais les métadonnées `.backup` sous forme de flux au lieu de les charger dans un arbre de document XML en mémoire, ce qui évite, pour les sauvegardes volumineuses (en particulier incrémentales), d’allouer un arbre DOM de plusieurs gigaoctets. [#109107](https://github.com/ClickHouse/ClickHouse/pull/109107) ([Julia Kartseva](https://github.com/jkartseva)). La finalisation d’un `BACKUP` ne copie plus non plus les informations sur tous les fichiers dans un vecteur temporaire, ce qui, pour des sauvegardes portant sur des millions de fichiers, consommait temporairement plusieurs gigaoctets. [#109861](https://github.com/ClickHouse/ClickHouse/pull/109861) ([Julia Kartseva](https://github.com/jkartseva)). L’écriture des entrées de sauvegarde ne copie plus non plus la liste des informations de fichiers de l’hôte actuel. [#111162](https://github.com/ClickHouse/ClickHouse/pull/111162) ([Julia Kartseva](https://github.com/jkartseva)).
* Réduction de la consommation mémoire dans l’agrégateur. [#109224](https://github.com/ClickHouse/ClickHouse/pull/109224) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Prise en charge du cache des conditions de requête pour les fichiers `Parquet` locaux lus via le moteur de table `File` (auparavant pris en charge uniquement pour l’object storage et les lacs de données). [#109247](https://github.com/ClickHouse/ClickHouse/pull/109247) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Réduction de l’utilisation mémoire du cache d’en-têtes d’index textuel d’un facteur de 2 à 2,5. Davantage d’en-têtes de parties de données tiennent dans le cache (paramètre `text_index_header_cache_size`), ce qui réduit les lectures disque pour les requêtes de recherche textuelle. [#109332](https://github.com/ClickHouse/ClickHouse/pull/109332) ([Anton Popov](https://github.com/CurtizJ)).
* Les fonctions de distance vectorielle transposées `L2DistanceTransposed`, `cosineDistanceTransposed` et `dotProductTransposed` appliquent désormais l’optimisation de lecture partielle par bit plane aux colonnes `Nullable(QBit)`, en ne lisant que les bit planes demandés au lieu de la colonne entière. [#109358](https://github.com/ClickHouse/ClickHouse/pull/109358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `IS NOT DISTINCT FROM` et `IS TRUE` utilisent désormais la clé primaire et les index MinMax pour élaguer les granules, comme `=`. Auparavant, `k IS NOT DISTINCT FROM 42` et `(k = 42) IS TRUE` effectuaient un parcours de tous les granules. [#110006](https://github.com/ClickHouse/ClickHouse/pull/110006) ([Groene AI](https://github.com/groeneai)).
* Les connexions mutualisées ne sont plus pingées avant chaque utilisation. Cela supprime un aller-retour `Ping`-`Pong` qui était ajouté à chaque connexion réutilisée, réduisant ainsi la latence des distributed queries et de `clickhouse-benchmark`. Une connexion mutualisée obsolète est détectée au moyen d’un `poll` avec délai nul (une vérification non bloquante qui n’ajoute aucun aller-retour) puis rétablie par reconnexion. [#110068](https://github.com/ClickHouse/ClickHouse/pull/110068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de reconnexions intempestives de connexions HTTP keep-alive mutualisées via TLS (HTTPS, S3). La vérification d’obsolescence de la connexion utilisait `poll` sur le socket, ce qui signalait à tort comme fermée une connexion sécurisée active transportant un enregistrement TLS post-handshake non lu (un ticket de session ou `KeyUpdate`) ; elle utilise désormais un `MSG_PEEK` non bloquant sur les sockets simples et `SSL_peek`/`SSL_has_pending` sur les sockets TLS, ce qui détecte aussi correctement un arrêt TLS ordonné et un enregistrement TLS arrivé seulement partiellement. [#110402](https://github.com/ClickHouse/ClickHouse/pull/110402) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les requêtes accélérées par le filtrage dynamique TopK (`ORDER BY ... LIMIT k`) exploitent désormais plus pleinement le cache des conditions de requête : le cache est alimenté même lorsque la lazy materialization est appliquée à la requête, et ces requêtes peuvent réutiliser des entrées précédemment écrites par une requête ordinaire ayant le même prédicat `WHERE`. [#110507](https://github.com/ClickHouse/ClickHouse/pull/110507) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Un motif `LIKE`/`NOT LIKE` sans jokers (`%`, `_`) utilise désormais une plage exacte de clé primaire ; il lit donc le même nombre de granules que le prédicat `=`/`!=` équivalent, au lieu d’une plage de préfixe plus large. [#107077](https://github.com/ClickHouse/ClickHouse/pull/107077) ([Groene AI](https://github.com/groeneai)).
* Correction d’une contention redondante sur le verrou d’un segment de fichier (une régression de performances introduite en 26.1) lors de la lecture des données via le cache du système de fichiers. [#109577](https://github.com/ClickHouse/ClickHouse/pull/109577) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction d’un problème où les skip indexes définis sur des sous-colonnes `Tuple` n’étaient pas utilisés lorsque le champ était accédé via `tupleElement(t, 'name')`, `tupleElement(t, N)` ou `t.N`, alors que le tuple complet était également lu dans la même requête (par ex. `SELECT *`). Toutes ces formes élaguent désormais les granules de la même manière que l’accès à la sous-colonne nommée `t.name`. [#110056](https://github.com/ClickHouse/ClickHouse/pull/110056) ([Groene AI](https://github.com/groeneai)).
* Correction des requêtes lentes `ORDER BY ... LIMIT` sur les tables `Distributed` lorsque `prefer_localhost_replica` sélectionne une replica locale : la limite préliminaire a été supprimée du plan du shard local, ce qui empêchait la lazy materialization et le filtrage top-K dynamique. [#110136](https://github.com/ClickHouse/ClickHouse/pull/110136) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Correction d’un problème où le text index n’était pas utilisé pour l’opérateur `ILIKE` lorsque l’index était défini sur une expression plutôt que sur une simple colonne (par exemple `assumeNotNull(col)` avec un preprocessor `lower(...)`) : de telles requêtes lisaient tous les granules au lieu d’utiliser l’index. Cela résout [#110350](https://github.com/ClickHouse/ClickHouse/issues/110350). [#110595](https://github.com/ClickHouse/ClickHouse/pull/110595) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Réduction de la contention sur les verrous dans le cache du système de fichiers : les requêtes lisant depuis le cache ne se bloquent plus sur le verrou de la file de priorité lors de la mise à jour de la priorité LRU d’une entrée. [#109065](https://github.com/ClickHouse/ClickHouse/pull/109065) ([Antonio Andelic](https://github.com/antonio2368)).
* Les text index queries qui utilisent une expression `postprocessor` servant uniquement de filtre (par exemple `if(..., '', token)`) écartent désormais les tokens vides d’emblée au lieu de les matérialiser ligne par ligne, ce qui améliore les performances. [#109049](https://github.com/ClickHouse/ClickHouse/pull/109049) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Réduction de la contention sur les verrous dans les files des journaux système, ce qui réduit la tail latency des requêtes sur les clusters chargés. [#110539](https://github.com/ClickHouse/ClickHouse/pull/110539) ([Sean Haynes](https://github.com/seandhaynes)).
* Amélioration des performances des fonctions de recherche de sous-chaînes (`position`, `countSubstrings`, `multiSearch*`, `replaceAll`, `replaceOne`, ainsi que leurs variantes insensibles à la casse et UTF-8) avec une aiguille non constante, jusqu’à 1,5x, grâce à l’utilisation de chercheurs de chaînes basés sur SIMD sur le chemin par ligne au lieu d’une implémentation naïve. [#110580](https://github.com/ClickHouse/ClickHouse/pull/110580) ([Raúl Marín](https://github.com/Algunenano)).
* La lazy materialization s’applique désormais aux requêtes `ReplacingMergeTree` avec `FINAL`, un filtre et un petit `LIMIT`, même sans `ORDER BY`. Les colonnes non nécessaires au filtre et à la fusion `FINAL` ne sont récupérées que pour les lignes restantes après la limite, ce qui accélère fortement ces requêtes lorsqu’elles sélectionnent des colonnes larges avec un filtre sélectif. Contrôlé par `query_plan_optimize_lazy_materialization` et `query_plan_max_limit_for_lazy_materialization`. [#110722](https://github.com/ClickHouse/ClickHouse/pull/110722) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Amélioration des performances d’async insert lorsque la déduplication est activée et qu’un flush est réparti sur plusieurs partitions : ClickHouse réutilise désormais les hachages de déduplication calculés d’une partition à l’autre au lieu de les recalculer pour chacune d’elles. [#111150](https://github.com/ClickHouse/ClickHouse/pull/111150) ([Valery Petrov](https://github.com/valerypetrov)).

<div id="267-improvement">
  #### Amélioration
</div>

* Ajout d'un paramètre `input_format_csv_missing_nullable_as_empty_string` (désactivé par défaut). Lorsqu'il est activé, une valeur manquante dans une colonne `Nullable(String)` d'une entrée CSV est lue comme une `String` vide au lieu de `NULL`, indépendamment de `input_format_csv_empty_as_default`. [#58225](https://github.com/ClickHouse/ClickHouse/pull/58225) ([kevinyhzou](https://github.com/KevinyhZou)). [#107577](https://github.com/ClickHouse/ClickHouse/pull/107577) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les fonctions `toDateOrNull`, `toDateTimeOrNull` et `toDateTime64OrNull` acceptent désormais des arguments entiers de tous les types entiers natifs (interprétés de la même manière que par `toDate`, `toDateTime` et `toDateTime64`, avec un argument de fuseau horaire facultatif) et renvoient `NULL` pour les valeurs hors plage du type de résultat. Par exemple, `toDateTimeOrNull(1583851242, 'Asia/Shanghai')` renvoie `2020-03-10 22:40:42` et `toDateTimeOrNull(4294967296)` renvoie `NULL`. [#79791](https://github.com/ClickHouse/ClickHouse/pull/79791) ([Jitendra](https://github.com/jitendra1411)).
* Ajout d'une colonne `is_wildcard` à la table `system.grants` pour indiquer si un privilège utilise une correspondance par préfixe avec caractère générique (par ex. `GRANT SELECT ON db*.*`). Auparavant, les privilèges avec joker et les privilèges exacts portant sur le même nom étaient indiscernables dans `system.grants`. Résout [#92835](https://github.com/ClickHouse/ClickHouse/issues/92835). [#98577](https://github.com/ClickHouse/ClickHouse/pull/98577) ([DQ](https://github.com/il9ue)).
* Autorise la compression Snappy dans l'interface HTTP (`Accept-Encoding: snappy`) et ajoute le paramètre `snappy_mode` pour choisir entre le format de blocs Hadoop Snappy et le format de tramage Snappy pour les E/S Snappy génériques `file`/`url`. [#100752](https://github.com/ClickHouse/ClickHouse/pull/100752) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la compatibilité avec l'ancien analyseur via le paramètre `analyzer_compatibility_allow_non_aggregate_in_having`. S'il est activé, les conditions non agrégées sont déplacées de `HAVING` vers `WHERE`. [#104232](https://github.com/ClickHouse/ClickHouse/pull/104232) ([Dmitry Novik](https://github.com/novikd)).
* Ajout d'un nouveau paramètre serveur `memory_worker_rss_speculative_reserve_ratio` (valeur par défaut : `1.0`) qui amène le memory tracker global à réserver spéculativement de la mémoire au-delà du RSS observé lorsque la croissance du RSS dépasse la comptabilisation du tracker entre deux échantillons. Ainsi, les allocations obtiennent `MEMORY_LIMIT_EXCEEDED` plus tôt et le kernel OOM-killer a moins de chances de se déclencher en premier. Définissez le ratio sur `0` pour désactiver cette réservation spéculative. [#104976](https://github.com/ClickHouse/ClickHouse/pull/104976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de métriques Prometheus optionnelles pour l'activité d'éviction du cache du système de fichiers (`filesystem_cache_evictions_total`, `filesystem_cache_evicted_bytes_total`, `filesystem_cache_evicted_segment_hits`, `filesystem_cache_evicted_segment_size_bytes`, ainsi que leurs variantes par utilisateur étiquetées avec `user_id`), exposées par cache via `system.dimensional_metrics`, `system.histogram_metrics` et l'endpoint Prometheus. Elles sont contrôlées par les paramètres de configuration du cache disk `expose_prometheus_eviction_metrics` et `expose_prometheus_eviction_metrics_per_user` (tous deux désactivés par défaut), qui peuvent être activés ou désactivés à l'exécution via `SYSTEM RELOAD CONFIG`. [#105020](https://github.com/ClickHouse/ClickHouse/pull/105020) ([Sacheendra Talluri](https://github.com/sacheendra)).
* Fait de `EXPLAIN [PLAN] actions=1, compact=1, pretty=1` la valeur par défaut. [#105036](https://github.com/ClickHouse/ClickHouse/pull/105036) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Met à niveau `delta-kernel-rs` (la bibliothèque derrière l'intégration `DeltaLake`) vers la version v0.23.0. [#105861](https://github.com/ClickHouse/ClickHouse/pull/105861) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Ajout des commandes `du` et `wc` à `clickhouse-disks`. Elles affichent respectivement la taille totale en octets d’un fichier ou répertoire donné, ainsi que le nombre d’octets, de lignes et de mots dans un fichier. [#106268](https://github.com/ClickHouse/ClickHouse/pull/106268) ([Asya Shneerson](https://github.com/asya-ch)).
* Ajout d’une nouvelle métrique asynchrone `UntrackedMemory` (visible dans `system.asynchronous_metrics`) qui signale la mémoire déjà allouée par les threads mais pas encore comptabilisée dans le compteur global de suivi de la mémoire : chaque thread accumule localement de petites allocations et les signale par lots. Cela aide à expliquer les écarts entre `MemoryTracking` et l’utilisation mémoire réelle du processus. Les messages d’erreur `MEMORY_LIMIT_EXCEEDED` incluent désormais aussi la quantité de mémoire non suivie, ce qui permet de mieux comprendre pourquoi une requête ou le serveur a atteint sa limite mémoire. [#106386](https://github.com/ClickHouse/ClickHouse/pull/106386) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Mise à niveau de ClickStack (l’interface utilisateur d'observability) vers la version 2.28.0. [#106406](https://github.com/ClickHouse/ClickHouse/pull/106406) ([Aaron Knudtson](https://github.com/knudtty)).
* Ajout de la prise en charge de `BFloat16` dans `dotProduct` et amélioration de ses performances grâce au batching du chemin SIMD. [#106569](https://github.com/ClickHouse/ClickHouse/pull/106569) ([Nikita Taranov](https://github.com/nickitat)).
* Les paramètres `max_named_collection_num_to_throw`, `max_table_num_to_throw`, `max_replicated_table_num_to_throw`, `max_view_num_to_throw`, `max_dictionary_num_to_throw` et `max_database_num_to_throw` peuvent désormais être modifiés sans redémarrage du serveur. [#106821](https://github.com/ClickHouse/ClickHouse/pull/106821) ([Maxim Orlovsky](https://github.com/UberDever)).
* Prise en charge des valeurs `REDUCED_REDUNDANCY`, `STANDARD_IA`, `ONEZONE_IA`, `GLACIER_IR` et `EXPRESS_ONEZONE` (en plus de `STANDARD` et `INTELLIGENT_TIERING`) pour le paramètre `s3_storage_class_name`. [#107251](https://github.com/ClickHouse/ClickHouse/pull/107251) ([Aditya Kumar](https://github.com/adityaksolves)).
* Ajout du paramètre de création `materialized_postgresql_use_extended_date_and_time_types` pour le moteur de base de données `MaterializedPostgreSQL`. Par défaut (activé), les colonnes PostgreSQL `date`/`timestamp` sont inférées comme `Date32`/`DateTime64` ; le définir à `0` lors du `CREATE DATABASE` infère à la place les types plus étroits `Date`/`DateTime`. Ce paramètre ne s’applique pas au moteur de table `MaterializedPostgreSQL`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le quantificateur de tableau `SOME` / `ALL` (`expr OP SOME(array)` / `expr OP ALL(array)`) prend désormais aussi en charge les prédicats de comparaison par mot-clé `IS DISTINCT FROM` et `IS NOT DISTINCT FROM`, ainsi que les prédicats de recherche de chaînes `LIKE`, `ILIKE`, `NOT LIKE`, `NOT ILIKE` et `REGEXP`, réécrits en `arrayExists` / `arrayAll`. [#107454](https://github.com/ClickHouse/ClickHouse/pull/107454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une fuite mémoire qui se produisait lors de l’échec de l’ouverture d’une base de données SQLite (par exemple, lorsque la table function `sqlite` ou le moteur de base de données `SQLite` reçoit un chemin qui ne peut pas être ouvert). [#107807](https://github.com/ClickHouse/ClickHouse/pull/107807) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans l’interface Web (`play.html`), l’indication du raccourci d’exécution affiche désormais `Cmd+Enter` sur Mac et `Ctrl+Enter` sur les autres plateformes, au lieu de toujours afficher `Ctrl/Cmd+Enter`, et la partie `, +Shift to run all` n’est affichée que lorsqu’il y a plusieurs requêtes. [#107817](https://github.com/ClickHouse/ClickHouse/pull/107817) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#108957](https://github.com/ClickHouse/ClickHouse/pull/108957) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le moteur de table `Alias` prend désormais en charge la lecture avec des répliques parallèles lorsque la table cible appartient à la famille `MergeTree`. [#107830](https://github.com/ClickHouse/ClickHouse/pull/107830) ([Kai Zhu](https://github.com/nauu)).
* Ajout du type de statistiques de colonne `uniq_v2` — une alternative légère aux statistiques `uniq`, basée sur le sketch `uniqCombined64`. [#107863](https://github.com/ClickHouse/ClickHouse/pull/107863) ([Han Fei](https://github.com/hanfei1991)). Le type de statistiques de colonne `minmax` est désormais obsolète et la valeur par défaut de `auto_statistics_types` a été modifiée en `basic, uniq_v2`. [#108680](https://github.com/ClickHouse/ClickHouse/pull/108680) ([Han Fei](https://github.com/hanfei1991)).
* Les fonctions d’IA (`aiGenerate`, `aiEmbed`, `aiClassify`, `aiExtract`, `aiTranslate`) réessaient désormais les défaillances réseau transitoires (réinitialisations de connexion, échecs de connexion TLS, dépassements de délai, adresses inaccessibles) lorsque `ai_function_max_retries` est défini, conformément au comportement de nouvelle tentative de la fonction de table `url`. Auparavant, seules les réponses d’erreur HTTP côté fournisseur faisaient l’objet d’une nouvelle tentative. [#107927](https://github.com/ClickHouse/ClickHouse/pull/107927) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `INSERT` dans une table `MergeTree` respecte désormais l’annulation de requête et `max_execution_time` lors de l’écriture d’un grand nombre de parts, au lieu de risquer de continuer à s’exécuter longtemps après avoir été interrompu. [#107929](https://github.com/ClickHouse/ClickHouse/pull/107929) ([Michael Kolupaev](https://github.com/al13n321)).
* Dans l’interface Web (`play.html`), l’icône du terminal Web peut désormais être ouverte dans un nouvel onglet du navigateur par un clic de molette ou avec Ctrl/Cmd/Shift+clic. [#108006](https://github.com/ClickHouse/ClickHouse/pull/108006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La génération SQL par IA dans le client n’envoie plus le paramètre `temperature`, sauf s’il est explicitement défini via `ai.temperature` dans la configuration. Cela corrige la génération SQL par IA pour les modèles qui rejettent le paramètre `temperature`. [#108014](https://github.com/ClickHouse/ClickHouse/pull/108014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la table `system.masking_policies` et de l’introspection `SHOW MASKING POLICIES` aux builds open source. Les politiques de masquage elles-mêmes restent une fonctionnalité de ClickHouse Cloud ; la table est donc vide dans les builds open source, mais les requêtes d’introspection n’échouent plus avec une erreur. [#108030](https://github.com/ClickHouse/ClickHouse/pull/108030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le consumer Kafka basé sur Keeper randomise désormais l’ordre dans lequel il acquiert des verrous temporaires de partition entre les répliques, ce qui améliore l’équité de la distribution des partitions et réduit la contention sur les verrous. Auparavant, le mélange prévu n’avait aucun effet. [#108033](https://github.com/ClickHouse/ClickHouse/pull/108033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de l’autocomplétion dans l’interface Web (`play.html`), basée sur `system.completions` et l’analyseur lexical SQL basé sur WASM. [#108059](https://github.com/ClickHouse/ClickHouse/pull/108059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` et `clickhouse-local` affichent désormais, à mesure de la saisie, des indications d’autocomplétion (texte « fantôme » en ligne) pour la suggestion la plus pertinente lorsque le curseur se trouve à la fin de la saisie. Les suggestions les plus pertinentes (utilisées récemment et identifiants déjà présents dans la requête) sont classées en tête. Naviguez avec Haut/Bas (ou Ctrl-Haut/Ctrl-Bas) ; acceptez une indication unique ou sélectionnée avec Tab ou Flèche droite, et une indication sélectionnée avec Entrée ; Tab ouvre aussi la liste de complétion classique. Ce comportement est contrôlé par la nouvelle option `--hints` (activée par défaut ; nécessite `--highlight`). [#108070](https://github.com/ClickHouse/ClickHouse/pull/108070) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de la fonction `length` pour le type de données `QBit` — elle renvoie la dimension du vecteur sous forme de constante. [#108071](https://github.com/ClickHouse/ClickHouse/pull/108071) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Prise en charge de `CAST` d’un `QBit` vers un `Array`, avec reconstruction du vecteur d’origine — l’inverse de la conversion existante de `Array` vers `QBit`. [#108072](https://github.com/ClickHouse/ClickHouse/pull/108072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les requêtes adressées aux catalogs REST de data lakes (comme OneLake) incluent désormais un en-tête ClickHouse `User-Agent`. [#108117](https://github.com/ClickHouse/ClickHouse/pull/108117) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* `arrayFold` respecte désormais l’annulation de requête et `max_execution_time`. Auparavant, un fold sur un array très long s’exécutait entièrement dans un seul appel de fonction et ne pouvait pas être interrompu ; `KILL QUERY` et les limites de temps étaient donc ignorés jusqu’à la fin du fold. [#108192](https://github.com/ClickHouse/ClickHouse/pull/108192) ([Groene AI](https://github.com/groeneai)).
* `MVTEncodeGeom` aligne désormais la géométrie sur la grille de pixels entiers avant le découpage et découpe les polygones avec la bibliothèque `wagyu`, de sorte que la sortie découpée soit valide (les anneaux auto-intersectants sont réparés) et alignée sur les bords, comme dans PostGIS `ST_AsMVTGeom`. [#108248](https://github.com/ClickHouse/ClickHouse/pull/108248) ([Saarthak Gupta](https://github.com/saarthak2002)).
* Ajout de `ProfileEvents` de pré-exécution de requête par phase : `QueryParseMicroseconds`, `QueryAnalysisMicroseconds`, `QueryPlanBuildMicroseconds` et `QueryPipelineBuildMicroseconds`. Ils indiquent où le temps est passé avant l’exécution de la requête (parsing, analyse, construction du plan de requête, construction du pipeline) et sont disponibles dans `system.query_log` et `system.events`. [#108282](https://github.com/ClickHouse/ClickHouse/pull/108282) ([Jordi Villar](https://github.com/jrdi)).
* Les opérations `ALTER TABLE` qui produiraient des métadonnées de table dépassant `max_query_size` sont désormais rejetées à l’avance, ce qui évite que des tables deviennent impossibles à charger pour des composants tels que la distribution DDL et la récupération de répliques. [#108283](https://github.com/ClickHouse/ClickHouse/pull/108283) ([Andrew Kravchuk](https://github.com/lockie)).
* Ajout des colonnes `settings` et `engine_settings` à `system.backups` et `system.backup_log`. `settings` expose les réglages spécifiques de backup/restore demandés pour une opération (par ex. `allow_s3_native_copy`, `deduplicate_files`, `structure_only`), et `engine_settings` expose les réglages effectivement utilisés par le lecteur et le rédacteur du moteur de backup (par ex. les réglages de requête S3 tels que `allow_native_copy`, qui peuvent différer de ceux demandés après fusion de la configuration de l’endpoint). Cela permet de voir avec quels réglages une opération `BACKUP`/`RESTORE` a réellement été exécutée. [#108334](https://github.com/ClickHouse/ClickHouse/pull/108334) ([Julia Kartseva](https://github.com/jkartseva)).
* Ajout d’une colonne `source` à `system.documentation` contenant le chemin du fichier source dans lequel la documentation de chaque entité est définie. La table documente désormais également les codecs de compression, les profile events, les métriques courantes, les métriques asynchrones, ainsi que les system tables elles-mêmes (avec leurs colonnes), et la documentation des settings inclut maintenant leur type et leur valeur par défaut. [#108346](https://github.com/ClickHouse/ClickHouse/pull/108346) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Une valeur par défaut vide pour un setting est désormais affichée comme *chaîne vide* au lieu de backticks vides. [#108708](https://github.com/ClickHouse/ClickHouse/pull/108708) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge des lectures asynchrones depuis des réplicas distants (`async_socket_for_remote`) sur macOS grâce à l’implémentation des primitives de sondage basées sur epoll par-dessus `kqueue`. Cela permet aux distributed queries de lire les shards en parallèle sur macOS au lieu de le faire en série. [#108403](https://github.com/ClickHouse/ClickHouse/pull/108403) ([Raúl Marín](https://github.com/Algunenano)).
* Prise en charge de `BFloat16` dans les fonctions mathématiques binaires. [#108442](https://github.com/ClickHouse/ClickHouse/pull/108442) ([Zhang Yifan](https://github.com/zhangyifan27)).
* `MergeTree` peut désormais lire un flux compressé dont les blocs utilisent différents codecs. Il s’agit du prérequis côté lecture pour la sélection adaptative des codecs ([#105404](https://github.com/ClickHouse/ClickHouse/issues/105404)). [#108592](https://github.com/ClickHouse/ClickHouse/pull/108592) ([Raufs Dunamalijevs](https://github.com/rienath)).
* La valeur automatique de `max_threads` et de settings similaires est désormais affichée dans `system.settings` sous la forme `auto(8)` au lieu de `'auto(8)'` ; les apostrophes qui l’entouraient étaient un artifact de longue date intégré à la valeur. La compatibilité entre versions est préservée : l’ancienne forme entre guillemets reste acceptée lors de l’analyse des settings reçus de serveurs plus anciens. [#108657](https://github.com/ClickHouse/ClickHouse/pull/108657) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Plusieurs améliorations d’ergonomie pour la Web UI `/schema` : chargement du schéma avec Entrée, barres de défilement adaptées au thème, noms de table lisibles, regroupement cohérent par database des tables indépendantes, absence de sélection de texte pendant le glisser-déposer, et formulaire d’authentication de style `play` (Credential Management API, credentials fournies via l’URL avec suppression du mot de passe, et validation des credentials en direct). [#108724](https://github.com/ClickHouse/ClickHouse/pull/108724) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le mode d’application lazy de la posting-list du text index n’est plus expérimental et peut être sélectionné avec `text_index_posting_list_apply_mode = 'lazy'` sans `allow_experimental_text_index_lazy_apply`. Le setting de seuil de densité a été renommé de `text_index_density_threshold` en `text_index_lazy_intersection_density_threshold`. [#108814](https://github.com/ClickHouse/ClickHouse/pull/108814) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout d’un type de catalog `delta_sharing` à `DataLakeCatalog` pour le REST endpoint Iceberg de Databricks Delta Sharing, dont les namespaces sont plats et qui ignore le filtre d’énumération `parent`. Utilisez-le à la place de `catalog_type = 'rest'` pour de tels endpoints, sans quoi `SHOW TABLES` risquerait de se bloquer. [#108865](https://github.com/ClickHouse/ClickHouse/pull/108865) ([Seva Potapov](https://github.com/seva-potapov)).
* Ajout d’une nouvelle option `clickhouse-client`/`clickhouse-local` `--echo-query-separator` qui affiche un séparateur personnalisé avant la query formatée affichée en écho, ce qui permet de distinguer plus facilement la query saisie de sa version reformatée affichée en écho. Désactivée par défaut. [#108888](https://github.com/ClickHouse/ClickHouse/pull/108888) ([David Meng](https://github.com/davidmenggx)).
* Améliorations du panneau des bases de données de la Web UI : le nombre de tables est désormais affiché entre parenthèses à côté du nom d’une base de données lorsqu’elle est dépliée. [#108891](https://github.com/ClickHouse/ClickHouse/pull/108891) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Un bouton d’actualisation à côté d’une base de données dépliée recharge sa liste de tables. [#108958](https://github.com/ClickHouse/ClickHouse/pull/108958) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Lorsque le panneau est rouvert, les bases de données précédemment dépliées sont restaurées. [#108964](https://github.com/ClickHouse/ClickHouse/pull/108964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permet de calculer le bénéfice combiné des skip indexes dans `EXPLAIN WHATIF` : il affiche le ratio de données correspondant à l’intersection de tous les index hypothétiques existants qui conviennent. [#108934](https://github.com/ClickHouse/ClickHouse/pull/108934) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de la réinitialisation de la position de défilement horizontal de la table de résultats dans la Web UI après avoir cliqué sur un lien dans une cellule puis être revenu à la page. [#108941](https://github.com/ClickHouse/ClickHouse/pull/108941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le database engine `MySQL`, le table engine et la table function associent désormais les column types spatiaux de MySQL (`LINESTRING`, `POLYGON`, `MULTILINESTRING`, `MULTIPOLYGON` et le type générique `GEOMETRY`) aux types géométriques ClickHouse correspondants au lieu de `String`. Ce comportement est contrôlé par le nouveau drapeau `geometry` du paramètre `mysql_datatypes_support_level`, activé par défaut. `POINT` continue d’être toujours converti en `Point`. La colonne générique `GEOMETRY` est associée au type générique `Geometry` ; la lecture d’une valeur dont le sous-type n’a pas d’équivalent dans ClickHouse (`MULTIPOINT`, `GEOMETRYCOLLECTION`) lève une exception au moment de la lecture. [#108944](https://github.com/ClickHouse/ClickHouse/pull/108944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI (`play.html`) : navigation complète au clavier — navigation avec les touches fléchées dans le panneau des bases de données et la table de résultats, accès au clavier aux boutons de la barre d’outils, au sélecteur de thème et au menu de téléchargement, ainsi que contours de focus visibles. [#108972](https://github.com/ClickHouse/ClickHouse/pull/108972) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* HTTP interface : lorsque des credentials sont fournis à la fois via des paramètres d’URL (`user`/`password`) et un en-tête `Authorization`, les paramètres d’URL ont désormais la priorité au lieu que la requête soit rejetée. Cela corrige l’échec du téléchargement des résultats depuis la Web UI (`play.html`) avec `AUTHENTICATION_FAILED` (erreur 516) lorsque le navigateur a mémorisé des identifiants Basic. [#108980](https://github.com/ClickHouse/ClickHouse/pull/108980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Restaure `show_data_lake_catalogs_in_system_tables` comme paramètre ne contrôlant que la visibilité de `DataLakeCatalog` dans `system.tables`, `system.columns` et `system.completions`. Ajout de `show_remote_databases_in_system_tables`, activé par défaut, pour permettre aux utilisateurs de masquer séparément les bases de données `MySQL` et `PostgreSQL` dans ces tables système. [#109082](https://github.com/ClickHouse/ClickHouse/pull/109082) ([Pablo Marcos](https://github.com/pamarcos)).
* Utilise par défaut l’algorithme précis d’analyse des flottants (valeur représentable la plus proche) et applique le paramètre `precise_float_parsing` aux input formats (`CSV`, `TSV`, `JSON`, `VALUES`, ...) ainsi qu’aux littéraux numériques, et pas seulement à `toFloat*`/`CAST`. Définissez `precise_float_parsing = 0` pour retrouver le comportement précédent, plus rapide dans certains cas mais moins précis. Ferme [#60146](https://github.com/ClickHouse/ClickHouse/issues/60146). Ferme [#74647](https://github.com/ClickHouse/ClickHouse/issues/74647). Ferme [#68914](https://github.com/ClickHouse/ClickHouse/issues/68914). [#109086](https://github.com/ClickHouse/ClickHouse/pull/109086) ([Raúl Marín](https://github.com/Algunenano)).
* Une requête avec un seul CTE est désormais formatée avec les mêmes retours à la ligne et la même indentation qu’une requête avec plusieurs CTE. Auparavant, `WITH a AS (...)` gardait le CTE sur la même ligne que `WITH`, tandis qu’avec deux CTE ou plus, `WITH` était placé sur sa propre ligne et chaque CTE était indenté. [#109092](https://github.com/ClickHouse/ClickHouse/pull/109092) ([Groene AI](https://github.com/groeneai)).
* Web UI : lorsque la complétion en surbrillance est identique au mot déjà saisi, ou au même mot avec une casse différente (par ex. `HASH` proposé pour `hash`), appuyer sur Flèche droite/Tab/Entrée ne réécrit plus le mot et n’est plus absorbé par l’autocomplétion — la touche déplace le curseur ou insère un saut de ligne comme prévu. [#109106](https://github.com/ClickHouse/ClickHouse/pull/109106) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#109384](https://github.com/ClickHouse/ClickHouse/pull/109384) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout dans la Web UI (`play.html`) de la mise en surbrillance des parenthèses arc-en-ciel, des crochets correspondants, des identifiants correspondants et des groupes de chiffres, comme dans `clickhouse-client`. [#109108](https://github.com/ClickHouse/ClickHouse/pull/109108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans la Web UI, `Tab` et `Shift+Tab` ajoutent et retirent désormais une indentation de 4 espaces aux lignes sélectionnées. [#109110](https://github.com/ClickHouse/ClickHouse/pull/109110) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : la position d’une erreur de syntaxe dans l’éditeur de requête est mise en surbrillance avec un fond rouge. La surbrillance disparaît dès que l’utilisateur redonne le focus à l’éditeur. [#109112](https://github.com/ClickHouse/ClickHouse/pull/109112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-compressor --stat` et la détection du codec par défaut pour les anciennes parts signalent désormais les en-têtes de block corrompus comme une corruption, au lieu d’une erreur de fin de fichier trompeuse. [#109157](https://github.com/ClickHouse/ClickHouse/pull/109157) ([Raufs Dunamalijevs](https://github.com/rienath)).
* ClickHouse Keeper respecte désormais le paramètre `os_collect_psi_metrics` et n’effectue pas la collecte des métriques PSI lorsqu’il est désactivé. [#109179](https://github.com/ClickHouse/ClickHouse/pull/109179) ([Maxim Orlovsky](https://github.com/UberDever)).
* Dans la Web UI, lorsque les onglets de requête sont affichés, les paramètres de connexion (hôte, utilisateur, mot de passe) sont masqués derrière un bouton en forme de clé dans l’angle supérieur droit et affichés dans un menu déroulant à la demande. [#109243](https://github.com/ClickHouse/ClickHouse/pull/109243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : afficher un résultat à valeur unique (une ligne, une colonne, par ex. `SHOW CREATE TABLE`) sur toute la hauteur au lieu de le limiter à trois lignes. [#109245](https://github.com/ClickHouse/ClickHouse/pull/109245) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans la Web UI, cliquer sur une table dans le panneau des bases de données avec le bouton central de la souris, avec Shift, ou avec le modificateur d’ouverture dans un nouvel onglet propre à la plateforme (Cmd sur macOS, Ctrl ailleurs) ouvre désormais sa requête dans un nouvel onglet de la Web UI. [#109246](https://github.com/ClickHouse/ClickHouse/pull/109246) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le cache des conditions de requête pour les fichiers `Parquet` distants (stockage objet) utilise désormais l’ETag en plus du chemin, afin que l’écrasement d’un objet sur place ne serve plus de résultats obsolètes depuis le cache. [#109310](https://github.com/ClickHouse/ClickHouse/pull/109310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans la Web UI, les chaînes vides et les NULL ne sont plus colorés dans le mode de coloration catégorielle. [#109342](https://github.com/ClickHouse/ClickHouse/pull/109342) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : en cliquant sur l’icône d’une table dans le panneau des bases de données, on affiche désormais la liste de ses colonnes, avec des icônes de type, une barre de taille proportionnelle à la taille compressée, et une infobulle indiquant les tailles compressée et non compressée ainsi que le taux de compression. [#109346](https://github.com/ClickHouse/ClickHouse/pull/109346) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : afficher le titre complet de l’onglet dans une infobulle au survol lorsqu’il est tronqué. [#109354](https://github.com/ClickHouse/ClickHouse/pull/109354) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans la Web UI, un clic molette sur le titre d’un onglet (ou un Ctrl/Shift/Cmd+clic) duplique désormais l’onglet. [#109357](https://github.com/ClickHouse/ClickHouse/pull/109357) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : redimensionner uniformément les zones de progression finale et de statistiques de requête afin d’éviter des retours à la ligne maladroits lorsque la fenêtre du navigateur est étroite. [#109363](https://github.com/ClickHouse/ClickHouse/pull/109363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : sélectionner une base de données dans le panneau des bases de données l’utilise désormais comme base de données par défaut pour les requêtes exécutées depuis l’éditeur. [#109372](https://github.com/ClickHouse/ClickHouse/pull/109372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de `reinterpret` d’un `Array` d’éléments de taille fixe vers un `String`, l’inverse du `reinterpret` existant d’un `String`/`FixedString` vers un `Array`. [#109383](https://github.com/ClickHouse/ClickHouse/pull/109383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans la Web UI, ne pas afficher les bascules de code couleur par colonne lorsque le résultat ne contient qu’une seule ligne au maximum. [#109385](https://github.com/ClickHouse/ClickHouse/pull/109385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Autoriser `CAST` entre des types `QBit` qui diffèrent par le type d’élément et/ou le stride, tant que la dimension reste identique (par exemple `CAST(x AS QBit(Float64, N))` à partir d’un `QBit(Float32, N)`). Les changements portant uniquement sur le stride sont sans perte ; les changements de type d’élément suivent la sémantique de conversion correspondante d’`Array` (par exemple, `Float32` vers `BFloat16` peut entraîner une perte de précision, et `accurateCast` / `accurateCastOrNull` rejettent les lignes qui ne sont pas représentables exactement). [#109387](https://github.com/ClickHouse/ClickHouse/pull/109387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les fonctions `quantizeBFloat16ToInt8` et `dequantizeInt8ToBFloat16` acceptent désormais aussi des arguments `Array` et `QBit`, en appliquant le codec Lloyd-Max à l’ensemble du vecteur (et en renvoyant un `Array`/`QBit` du type d’élément correspondant), en plus des surcharges scalaires existantes. [#109398](https://github.com/ClickHouse/ClickHouse/pull/109398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : le lien Documentation inclut désormais le nom de l’utilisateur courant dans l’URL. [#109419](https://github.com/ClickHouse/ClickHouse/pull/109419) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de `arraySum`, `arrayAvg` et `arrayProduct` pour les `Array` de `BFloat16`. [#109420](https://github.com/ClickHouse/ClickHouse/pull/109420) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le spécificateur de format `%f`, de style MySQL, dans `parseDateTime` / `parseDateTime64` (et leurs variantes `OrZero` / `OrNull`) accepte désormais entre 1 et 6 chiffres fractionnaires, interprétés comme des microsecondes alignées à gauche comme dans `STR_TO_DATE` de MySQL, au lieu d’exiger exactement 6 chiffres. Correction également du mauvais alignement des tables `PrettyCompact` dans les exemples de documentation des fonctions intégrées. [#109421](https://github.com/ClickHouse/ClickHouse/pull/109421) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : les onglets de requête sont désormais persistants : chaque onglet conserve son résultat affiché (y compris les images et les graphiques) ainsi que sa requête en cours d’exécution lorsque vous changez d’onglet puis y revenez, et les requêtes longues continuent de s’exécuter en arrière-plan. Les titres des onglets affichent une icône de chargement, une barre de progression et une coche de validation pour leur requête. [#109425](https://github.com/ClickHouse/ClickHouse/pull/109425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : affiche correctement une erreur lorsqu’une requête échoue après qu’une partie de son résultat a déjà été transmise en flux, au lieu d’afficher une `SyntaxError: Unexpected end of JSON input` côté client (ou, avec `http_write_exception_in_output_format`, de marquer à tort la requête en échec comme réussie). [#109430](https://github.com/ClickHouse/ClickHouse/pull/109430) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de colonnes épinglées dans la Web UI : une colonne peut être épinglée depuis son en-tête afin de rester visible (fixée sur le bord) pendant le défilement horizontal de la table de résultats. [#109439](https://github.com/ClickHouse/ClickHouse/pull/109439) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans le tableau de bord avancé (`/dashboard`), les graphiques de métriques spécifiques peuvent désormais être ajoutés directement à partir du nom de la métrique tel qu’il apparaît dans le code source ou la documentation, ce qui facilite l’ajout de plusieurs métriques lors des sessions de débogage. [#109449](https://github.com/ClickHouse/ClickHouse/pull/109449) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Web UI : correction d’un problème de fermeture de la liste déroulante des paramètres de connexion lors de la sélection de texte à la souris, puis d’un glissement au-delà de sa bordure. [#109451](https://github.com/ClickHouse/ClickHouse/pull/109451) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Web UI : le survol de l’en-tête d’une colonne de la table de résultats affiche désormais le nom complet de la colonne et son type dans une infobulle, afin que les en-têtes tronqués puissent être lus en entier. [#109463](https://github.com/ClickHouse/ClickHouse/pull/109463) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Correction également du tronquage avec des points de suspension des titres d’en-tête de colonne, même lorsque la colonne était suffisamment large pour afficher le titre complet. [#110397](https://github.com/ClickHouse/ClickHouse/pull/110397) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge, dans les builds macOS, des dictionnaires de cache SSD (layout `SSD_CACHE`) et du moteur de table `FileLog`. [#109493](https://github.com/ClickHouse/ClickHouse/pull/109493) ([Raúl Marín](https://github.com/Algunenano)).
* Web UI : ne restaure pas les onglets contenant des requêtes vides à l’ouverture de la page. [#109529](https://github.com/ClickHouse/ClickHouse/pull/109529) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des suggestions d’autocomplétion illisibles à la saisie et des couleurs vives dans le client interactif sur les terminaux dont `TERM` ne contient pas `256` (par exemple Ghostty, kitty, Alacritty, foot) : les couleurs vives sont désormais systématiquement émises sous forme de codes de couleur aixterm, au lieu de revenir à gras + couleur sombre, que les terminaux modernes affichent comme une couleur sombre difficile à lire sur fond sombre. [#109622](https://github.com/ClickHouse/ClickHouse/pull/109622) ([Alasdair Brown](https://github.com/sdairs)).
* Activation des arènes jemalloc par CPU et du profilage des allocations dans les builds macOS. [#109684](https://github.com/ClickHouse/ClickHouse/pull/109684) ([Raúl Marín](https://github.com/Algunenano)).
* Autorise la modification de certains paramètres d’authentification d’une base de données de catalogue de data lake `OneLake` avec `ALTER DATABASE ... MODIFY SETTING`. [#110019](https://github.com/ClickHouse/ClickHouse/pull/110019) ([alesapin](https://github.com/alesapin)).
* Le moteur `Hive` lit désormais les métadonnées des fichiers `ORC` (index min/max, nombres de lignes) avec le lecteur `ORC` natif de ClickHouse au lieu de l’adaptateur `ORC` Apache Arrow. [#110086](https://github.com/ClickHouse/ClickHouse/pull/110086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Taille du binaire réduite d’environ 10,5 Mo en exécutant les opérations de comparaison et arithmétiques sur des paires de types mixtes rarement utilisées (`Decimal` par rapport à un entier d’une largeur différente, ainsi que les paires impliquant `Int128`/`UInt128`/`Int256`/`UInt256`) via une conversion vers un type commun au lieu d’un kernel compilé dédié à chaque combinaison de types. Les paires de même type, les paires courantes, ainsi que `plus`/`minus`/`multiply`, limitées par la mémoire, conservent leurs kernels dédiés ; les résultats, les types de résultat et les cas exceptionnels restent inchangés. [#110131](https://github.com/ClickHouse/ClickHouse/pull/110131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Une sous-requête à droite de `IN` dont l’unique colonne est un tableau avec une dimension de plus que l’argument de gauche est désormais interprétée comme l’ensemble des éléments du tableau (comme un littéral de tableau ou une fonction renvoyant un tableau), au lieu d’échouer avec une erreur déroutante d’incompatibilité de types. Par exemple, `x IN (SELECT groupArray(x) FROM ...)` fonctionne désormais. [#110169](https://github.com/ClickHouse/ClickHouse/pull/110169) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La lecture depuis un moteur de table `SQLite` ou une fonction de table `sqlite` ne monopolise plus inutilement un cœur de CPU entier lorsque la base de données SQLite est verrouillée par une autre connexion. La lecture reste désormais inactive en attendant le verrou et peut toujours être annulée. [#110248](https://github.com/ClickHouse/ClickHouse/pull/110248) ([Groene AI](https://github.com/groeneai)).
* Arrondit à trois chiffres les valeurs de temps écoulé, de débit et de ratio dans les messages de journalisation et d’exception, afin que des nombres comme `1.345844286 sec.` ne soient plus affichés avec leur précision complète. [#110277](https://github.com/ClickHouse/ClickHouse/pull/110277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans la Web UI (Play), `BFloat16` est désormais reconnu comme un nombre à virgule flottante et ses colonnes sont alignées à droite et colorées en conséquence. [#110433](https://github.com/ClickHouse/ClickHouse/pull/110433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de la clause `SETTINGS` pour le moteur de table `PostgreSQL` et la fonction de table `postgresql` (par exemple `SETTINGS postgresql_connection_pool_size = 50`), ce qui assure une parité fonctionnelle avec le moteur `MySQL`. [#110614](https://github.com/ClickHouse/ClickHouse/pull/110614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SHOW CREATE TABLE` (ainsi que `SHOW CREATE VIEW` / `SHOW CREATE DICTIONARY`) suggère désormais, dans le message d’erreur, une table au nom similaire lorsque la table demandée n’existe pas, comme le font déjà les requêtes `SELECT`. [#110633](https://github.com/ClickHouse/ClickHouse/pull/110633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Active par défaut le paramètre `merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once` : le merge selector réduit désormais automatiquement le nombre maximal de parts à fusionner en une seule fois en fonction du niveau de remplissage de la partition. Voir [#91163](https://github.com/ClickHouse/ClickHouse/pull/91163). [#110726](https://github.com/ClickHouse/ClickHouse/pull/110726) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Accepte les commandes de nettoyage PostgreSQL `RESET`, `UNLISTEN` et `DISCARD` comme des opérations sans effet dans le PostgreSQL wire protocol au lieu d’échouer avec une erreur de syntaxe. Cela améliore la compatibilité avec des drivers tels que Skunk, qui envoient `RESET ALL` et `UNLISTEN *` lors de l’établissement et du nettoyage de la connexion. [#110780](https://github.com/ClickHouse/ClickHouse/pull/110780) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Modifie la valeur par défaut du paramètre `auto_statistics_types` de `basic, uniq` à `basic, uniq_v2`. [#110878](https://github.com/ClickHouse/ClickHouse/pull/110878) ([Han Fei](https://github.com/hanfei1991)).
* `randomHadamardTransform` calcule désormais une transformée exacte préservant la longueur pour toute longueur de vecteur dont le plus grand facteur impair est au plus égal à 64 (par exemple `3584 = 512 * 7`, courant dans les modèles d'embedding), étendant ainsi les familles précédentes `2^N`, `2^k * {12, 20}` et `2^k * 9`. Une transformée complète d'une longueur qui ne peut pas être représentée exactement lève désormais une exception au lieu de compléter silencieusement avec des zéros jusqu'à un vecteur plus long ; passez `output_dims` pour calculer une projection tronquée d'une longueur arbitraire. [#111006](https://github.com/ClickHouse/ClickHouse/pull/111006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une exception `LOGICAL_ERROR` lors de la sauvegarde d'une base de données `Replicated` en cours de suppression et de recréation simultanées ; ces sauvegardes échouent désormais proprement avec `CANNOT_GET_REPLICATED_DATABASE_SNAPSHOT`. [#100651](https://github.com/ClickHouse/ClickHouse/pull/100651) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Affiche désormais l'erreur réelle sous-jacente lorsqu'une archive zip ne peut pas être extraite (par exemple, lorsque l'archive est lue depuis S3 et que le read buffer refuse un seek). Auparavant, l'erreur réelle était masquée par le message générique `Couldn't unpack zip archive: Code = -100` / `Couldn't open zip archive`. [#105103](https://github.com/ClickHouse/ClickHouse/pull/105103) ([Groene AI](https://github.com/groeneai)).
* Correction d'un message trompeur "Maybe you meant X?" après un redémarrage du serveur (ou `DETACH DATABASE`/`ATTACH DATABASE`) : la suppression d'une table déjà supprimée pouvait suggérer comme alternative le nom qui venait d'être supprimé. [#106238](https://github.com/ClickHouse/ClickHouse/pull/106238) ([Groene AI](https://github.com/groeneai)).
* Correction d'une logical error (`Logical error: 'removed'`, provoquant l'arrêt du serveur dans les builds de débogage) dans la queue de suppression des tables en arrière-plan, déclenchée lorsque le même UUID explicite est réutilisé dans plusieurs query `CREATE OR REPLACE TABLE`, ce qui place dans la queue plusieurs tables supprimées partageant cet UUID. [#107031](https://github.com/ClickHouse/ClickHouse/pull/107031) ([Groene AI](https://github.com/groeneai)).
* Correction d'une logical error `Inconsistent AST formatting` qui pouvait arrêter le serveur dans les builds de débogage et avec sanitizer lorsqu'une lambda avec alias était utilisée comme opérande d'un operator d'accès (élément de tuple `.N` ou élément de tableau `[]`) à une position autre que la première dans une liste d'expressions, par ex. `SELECT 1, ((p0, p1) -> p0 AS a7).4[3] FROM t`. [#107092](https://github.com/ClickHouse/ClickHouse/pull/107092) ([Groene AI](https://github.com/groeneai)).
* Une cluster table function (`urlCluster`, `fileCluster`, `s3Cluster`, ...) imbriquée dans une autre distributed query, telle que `clusterAllReplicas(..., urlCluster(...))`, est désormais rejetée avec une erreur `BAD_ARGUMENTS` au lieu d'échouer avec une logical error (`Distributed task iterator is not initialized`). [#107107](https://github.com/ClickHouse/ClickHouse/pull/107107) ([Groene AI](https://github.com/groeneai)).
* `OPTIMIZE ... DRY RUN` interrompu par un timeout de query (`max_execution_time` avec `timeout_overflow_mode = 'break'`) renvoie désormais `TIMEOUT_EXCEEDED` au lieu d'une logical error liée à `rows_sources` (qui arrêtait le serveur dans les builds de débogage/avec sanitizer). [#107114](https://github.com/ClickHouse/ClickHouse/pull/107114) ([Groene AI](https://github.com/groeneai)).
* Fin de la journalisation d'une erreur bénigne `Net Exception: Socket is not connected` pendant la finalisation d'une session `ZooKeeper` sur macOS. `clickhouse keeper-client` n'affiche plus cette erreur parasite sur stderr à la fermeture. [#107438](https://github.com/ClickHouse/ClickHouse/pull/107438) ([Groene AI](https://github.com/groeneai)).
* Correction d'un overflow d'entier signé lorsqu'une refreshable materialized view retente un refresh ayant échoué avec `refresh_retries` défini sur une très grande valeur (proche du maximum de `Int64`). L'overflow pouvait arrêter le serveur dans les builds avec le sanitizer de comportement indéfini. [#108005](https://github.com/ClickHouse/ClickHouse/pull/108005) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (arrêt du serveur dans les builds de débogage/sanitizer) lorsqu’un `JOIN` utilise l’opérateur de comparaison null-safe (`<=>` / `IS NOT DISTINCT FROM`) et que l’une des clés est une scalar subquery, par ex. `... JOIN t2 ON (SELECT x FROM t1) <=> t2.k`, avec l’ancien analyzer (`enable_analyzer = 0`). Une telle query renvoie désormais une erreur `NOT_FOUND_COLUMN_IN_BLOCK` normale au lieu d’une erreur logique. [#108123](https://github.com/ClickHouse/ClickHouse/pull/108123) ([Groene AI](https://github.com/groeneai)).
* Les queries de vector search qui sélectionnent la colonne `_distance` renvoient désormais une erreur appropriée au lieu d’échouer avec une erreur logique. [#108423](https://github.com/ClickHouse/ClickHouse/pull/108423) ([Robert Schulze](https://github.com/rschu1ze)).
* Corrige un `std::future_error` (`The associated promise has been destructed prior to the associated state becoming ready`) qui pouvait survenir et provoquer l’arrêt du serveur dans les builds de débogage et sanitizer lorsque la planification de la tâche asynchrone finale de finalisation du téléversement multipart S3/Azure échouait (par exemple en cas d’épuisement du pool de threads). La véritable erreur de planification est désormais signalée à la place. [#108730](https://github.com/ClickHouse/ClickHouse/pull/108730) ([Groene AI](https://github.com/groeneai)).
* Évite une sortie excessive du server log ainsi qu’un message d’erreur démesuré lors de la compilation d’une très grande regular expression (par exemple un pattern `LIKE` ou `match` avec des centaines de milliers de wildcards) ; ces patterns échouent désormais avec une erreur `CANNOT_COMPILE_REGEXP` claire. [#108821](https://github.com/ClickHouse/ClickHouse/pull/108821) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un comportement indéfini lors de la conversion en chaîne d’un packet type de protocol hors plage (par ex. dans les messages d’erreur `Unexpected packet from server` / `Received ... packet`) pour une connection désynchronisée ou fuzzée. [#108885](https://github.com/ClickHouse/ClickHouse/pull/108885) ([Groene AI](https://github.com/groeneai)).
* Corrige une erreur interne trompeuse (`Method getResultType is not supported for TABLE query tree node`) lorsqu’une expression de table était utilisée comme argument de gauche de l’opérateur `IN` ; ces queries produisent désormais un message d’erreur clair. [#109412](https://github.com/ClickHouse/ClickHouse/pull/109412) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la lecture d’une Iceberg table avec un metadata file dont le numéro de version ne contient que des chiffres mais dépasse la plage des entiers 32 bits (par exemple `v99999999999999999999.metadata.json`). Un tel nom produisait auparavant un `std::out_of_range` (`STD_EXCEPTION`) opaque au lieu d’une erreur `BAD_ARGUMENTS` claire. [#109619](https://github.com/ClickHouse/ClickHouse/pull/109619) ([Groene AI](https://github.com/groeneai)).
* Corrige une possible `Logical error: 'ReadBuffer is canceled. Can't read from it.'` lorsqu’un input format basé sur des lignes (par ex. `TSV`/`CSV`) ne parvenait pas à parse l’entrée et que la lecture sous-jacente avait déjà été annulée (par exemple un chunk HTTP malformé ou un corps tronqué). La construction des diagnostics de parsing verbose ne lit plus depuis un buffer annulé. [#109708](https://github.com/ClickHouse/ClickHouse/pull/109708) ([Groene AI](https://github.com/groeneai)).
* Les filter expressions de ROW POLICY utilisant `arrayJoin` (ou son alias `unnest`) sont désormais rejetées avec une erreur claire ; auparavant, de telles policies provoquaient une erreur logique `column->size() == num_rows` au query time. [#109753](https://github.com/ClickHouse/ClickHouse/pull/109753) ([Raúl Marín](https://github.com/Algunenano)). [#109973](https://github.com/ClickHouse/ClickHouse/pull/109973) ([Raúl Marín](https://github.com/Algunenano)).
* La lecture d’une Paimon table dont le schéma contient un Nested type non pris en charge (par exemple un champ `ROW`) signale désormais une erreur `BAD_ARGUMENTS` claire indiquant le type non pris en charge, au lieu d’un simple `DB::Exception. (OK)` avec le code d’erreur 0 et aucun message. [#109762](https://github.com/ClickHouse/ClickHouse/pull/109762) ([Groene AI](https://github.com/groeneai)).
* Correction d’un `LOGICAL_ERROR` (`std::length_error`) lorsqu’une requête avec le paramètre expérimental `make_distributed_plan = 1` utilisait une valeur très élevée pour `distributed_plan_default_reader_bucket_count` ou `distributed_plan_default_shuffle_join_bucket_count`. Ces valeurs sont désormais rejetées avec `INVALID_SETTING_VALUE`. [#109770](https://github.com/ClickHouse/ClickHouse/pull/109770) ([Groene AI](https://github.com/groeneai)).
* Correction d’un `LOGICAL_ERROR` (`query tree node does not have valid source node`) lorsqu’une CTE récursive résolvait un identifiant d’une portée externe comme colonne corrélée (avec `allow_experimental_correlated_subqueries = 1`). Ces requêtes renvoient désormais une erreur `UNSUPPORTED_METHOD` explicite. [#109863](https://github.com/ClickHouse/ClickHouse/pull/109863) ([Groene AI](https://github.com/groeneai)).
* Correction d’un overflow d’entier signé lorsque `ORDER BY ... WITH FILL` saute un très grand intervalle sur une colonne `Int64`/`UInt64` (par exemple, un pas de 2 sur un intervalle proche de 2^63). L’overflow avait un comportement indéfini sous les sanitizers et rebouclait silencieusement dans les builds de production. [#109937](https://github.com/ClickHouse/ClickHouse/pull/109937) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique `Bad cast from type DB::FunctionNode to DB::ConstantNode` (arrêt du serveur dans les builds de débogage/sanitizer) lors de l’exécution de `SELECT ... ORDER BY ... WITH FILL` sur une table `Distributed` avec une faible valeur de `optimize_const_name_size`. [#109938](https://github.com/ClickHouse/ClickHouse/pull/109938) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique `Invalid number of rows in Chunk` lorsqu’une cible `INTERPOLATE` est un alias d’une colonne `WITH FILL` avec l’ancien analyseur (`enable_analyzer = 0`). Ces requêtes sont désormais rejetées avec une erreur `INVALID_WITH_FILL_EXPRESSION` explicite. [#110103](https://github.com/ClickHouse/ClickHouse/pull/110103) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique (arrêt du serveur dans les builds de débogage/sanitizer) lorsque les fonctions `indexHint`/`ignore`/`isZeroOrNull` reçoivent un argument dont le type est résolu en `Nothing`, par exemple dans des expressions comme `indexHint(assumeNotNull(materialize(NULL)))`. [#110192](https://github.com/ClickHouse/ClickHouse/pull/110192) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique `Too large size (...) passed to allocator` qui pouvait se produire lorsqu’une valeur hors plage était définie pour un paramètre de taille de read buffer tel que `max_read_buffer_size` ou `max_read_buffer_size_local_fs`. Ces valeurs sont désormais plafonnées à 256 MiB par la vérification de cohérence des paramètres, ainsi qu’au point de consommation pour `INSERT ... FROM INFILE`, qui lit les fichiers dans `clickhouse-client`, où cette vérification ne s’applique pas. [#110207](https://github.com/ClickHouse/ClickHouse/pull/110207) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `CHECK TABLE` signale désormais la corruption réelle pour une projection part dont les métadonnées n’ont pas pu être chargées, au lieu de l’erreur trompeuse `Columns doesn't match ... Expected: 0 columns`. [#110262](https://github.com/ClickHouse/ClickHouse/pull/110262) ([Raúl Marín](https://github.com/Algunenano)).
* Une incompatibilité de type lorsqu’une valeur lue depuis une source PostgreSQL (par exemple la table function `postgresql` ou le table engine `PostgreSQL`) ne peut pas être analysée dans le type de colonne déclaré (par exemple une colonne `text` déclarée en `Int32`) est désormais signalée comme une véritable erreur de requête ; auparavant, cela interrompait le serveur dans les builds de débogage et sanitizer. [#110264](https://github.com/ClickHouse/ClickHouse/pull/110264) ([Groene AI](https://github.com/groeneai)).
* Prise en charge du query profiler, des profileurs mémoire et de trace, ainsi que de la symbolisation de `system.trace_log` sur macOS. [#109825](https://github.com/ClickHouse/ClickHouse/pull/109825) ([Raúl Marín](https://github.com/Algunenano)).
* Mise à jour de `chdig` vers la [v26.7.1](https://github.com/azat/chdig/releases/tag/v26.7.1) : traces de pile compressées pour le partage, motifs de requête, prise en charge de la mémoire à arènes séparées, améliorations de Perfetto et correctifs de compatibilité. [#110938](https://github.com/ClickHouse/ClickHouse/pull/110938) ([Azat Khuzhin](https://github.com/azat)).
* Correction d'une inférence de monotonie incorrecte pour `intDiv` sur une clé non signée divisée par une constante signée, ce qui pouvait désactiver l'élagage de l'index de clé primaire pour les prédicats `IN`/`NOT IN` qui franchissent la limite signée du type de résultat ; les builds de Débogage pouvaient également déclencher une `LOGICAL_ERROR` `Invalid binary search result in MergeTreeSetIndex`. [#107586](https://github.com/ClickHouse/ClickHouse/pull/107586) ([Groene AI](https://github.com/groeneai)).
* Ajout du paramètre `allow_lossy_numeric_supertype` (désactivé par défaut). Lorsqu'il est activé, `if`, `multiIf`, `coalesce`, `ifNull`, `array` et `map`, appliqués à des arguments numériques qui n'ont pas de type commun sans perte (par exemple `Decimal` et `Float64`, ou `Int64` et `Float64`), renvoient `Float64` au lieu de `Variant`, afin que le résultat puisse être utilisé avec des fonctions d'agrégation telles que `sum`, `avg`, `min` et `max`. Les messages d'erreur pertinents des fonctions d'agrégation mentionnent désormais le paramètre par son nom. Clôt [#106707](https://github.com/ClickHouse/ClickHouse/issues/106707). [#107236](https://github.com/ClickHouse/ClickHouse/pull/107236) ([Groene AI](https://github.com/groeneai)).
* Démarrage du point de terminaison Prometheus (pour les configurations avec métriques uniquement) et de la collecte asynchrone des métriques avant le chargement des tables, afin que les métriques soient visibles pendant la phase de chargement des métadonnées, qui peut être longue. [#108402](https://github.com/ClickHouse/ClickHouse/pull/108402) ([Christoph Wurm](https://github.com/cwurm)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Correction de l'échec de `TRUNCATE TABLE` et de `DROP PARTITION` sur les tables comportant de nombreux blocs de déduplication, lorsque leur suppression en une seule requête ZooKeeper pouvait dépasser la limite par défaut de 1 MB de `jute.maxbuffer`. [#105991](https://github.com/ClickHouse/ClickHouse/pull/105991) ([Clayton McClure](https://github.com/cmcclure-twilio)). Cela ne vous concerne que si vous utilisez Apache ZooKeeper (non recommandé) au lieu de ClickHouse Keeper.
* Correction de l'utilisation de noms de colonnes qualifiés (`database.table.column`) dans la clause `WHERE` des mutations, comme `DELETE FROM` et `ALTER TABLE ... UPDATE/DELETE`, sur les tables de la famille `MergeTree` ; auparavant, ces requêtes échouaient avec une erreur de colonnes manquantes. Closes [#71760](https://github.com/ClickHouse/ClickHouse/issues/71760). [#109491](https://github.com/ClickHouse/ClickHouse/pull/109491) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Correction du cache des résultats de requête pour les requêtes PromQL. Le dialecte `promql` contournait la vérification des fonctions non déterministes et pouvait renvoyer des résultats obsolètes ancrés sur `now()` ; l'API HTTP Prometheus (`/api/v1/query`, `/api/v1/query_range`) ne stockait quant à elle jamais d'entrées de cache. [#110887](https://github.com/ClickHouse/ClickHouse/pull/110887) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Correction de l'échec du démarrage du serveur lorsque la variable d'environnement `TZ` est vide. Closes [#68920](https://github.com/ClickHouse/ClickHouse/issues/68920). [#68921](https://github.com/ClickHouse/ClickHouse/pull/68921) ([Ardenwick](https://github.com/ardenwick)).
* Correction de l'échec du démarrage du serveur lorsqu'un database engine `Backup` fait référence à une sauvegarde devenue indisponible (par exemple, lorsque ses fichiers ont été supprimés ou que le stockage sous-jacent est inaccessible). La base de données est désormais chargée sans tables au lieu d'empêcher le démarrage de l'ensemble du serveur. [#83188](https://github.com/ClickHouse/ClickHouse/pull/83188) ([Vitaly Orlov](https://github.com/orloffv)).
* Lors de l'utilisation d'insertions en arrière-plan dans des tables avec l'engine `Distributed`, les délais causés par des erreurs répétées lors de l'envoi de données vers des shards distants diminuent désormais une fois les erreurs résolues. Auparavant, le délai ne faisait qu'augmenter et n'était jamais réinitialisé. [#87378](https://github.com/ClickHouse/ClickHouse/pull/87378) ([Andrei Kochemirovskii](https://github.com/Blackmorse)).
* Correction de `broken_data_files` dans `system.distribution_queue` et de la métrique `BrokenDistributedFilesToInsert`, qui indiquaient toujours `0` pour les fichiers corrompus détectés lors de l'analyse de la queue async-insert `Distributed` au démarrage. [#92124](https://github.com/ClickHouse/ClickHouse/pull/92124) ([KG.Xu](https://github.com/squalfof)).
* Correction de la récupération de la journalisation après une erreur de disque plein. Auparavant, lorsque le disque de logs était plein, ClickHouse entrait dans un état d'échec et inondait continuellement syslog de messages d'erreur (avec potentiellement plus de 100 GB/heure écrits), sans jamais récupérer même après la libération d'espace disque. Désormais, le système de journalisation récupère automatiquement dès que de l'espace disque redevient disponible, sans nécessiter de redémarrage du serveur. [#93127](https://github.com/ClickHouse/ClickHouse/pull/93127) ([jaehanbyun](https://github.com/jaehanbyun)).
* Transmission des identifiants statiques S3 aux lectures de tables Unity `DataLakeCatalog` lorsque `vended_credentials` est désactivé, évitant ainsi les échecs d'accès anonyme au stockage objet. [#96910](https://github.com/ClickHouse/ClickHouse/pull/96910) ([kgeg401](https://github.com/kgeg401)).
* Correction d'un crash dans le code d'analyse du schéma du table engine `DeltaLake`. [#97112](https://github.com/ClickHouse/ClickHouse/pull/97112) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction d'un problème de sécurité où un client TCP non authentifié pouvait sonder l'existence de tables et l'état de la réplication via le port interserveur. [#99854](https://github.com/ClickHouse/ClickHouse/pull/99854) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige une erreur de syntaxe lorsqu’un alias suit une sous-requête dans `DESCRIBE TABLE`. Corrige [#100031](https://github.com/ClickHouse/ClickHouse/issues/100031). [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige une exception dans les sous-requêtes corrélées lorsque les colonnes externes deviennent `Nullable` avec `group_by_use_nulls` et `ROLLUP`/`CUBE`. [#100365](https://github.com/ClickHouse/ClickHouse/pull/100365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un arrêt brutal du serveur (dans les builds avec sanitizer) et une perte silencieuse de données au démarrage de la table lorsqu’une part `MergeTree` transactionnelle annulée intersecte une part validée. [#100992](https://github.com/ClickHouse/ClickHouse/pull/100992) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Corrige `indexOfAssumeSorted`, qui renvoyait des résultats incorrects pour les colonnes `Array(LowCardinality(String))` dans les tables `MergeTree`. [#101771](https://github.com/ClickHouse/ClickHouse/pull/101771) ([Yash ](https://github.com/Onyx2406)).
* Corrige un élagage incorrect de la clé primaire lorsque la clé de tri d’une table enveloppe une colonne `Date` dans `toDateTime` (par exemple, `ORDER BY toDateTime(date_column)`) et qu’une requête filtre sur la colonne d’origine avec une comparaison comme `WHERE date_column >= '...'`. `toDateTime(Date)` déborde pour les valeurs `Date` au-delà de la plage de `DateTime` (après `2106-02-07`), de sorte que la clé stockée n’est pas monotone ; ClickHouse n’utilise donc plus l’élagage par clé primaire pour cette combinaison clé/prédicat, car cela pourrait sinon exclure des granules contenant des lignes correspondantes. Clôt [#101744](https://github.com/ClickHouse/ClickHouse/issues/101744). [#101814](https://github.com/ClickHouse/ClickHouse/pull/101814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige `intDivOrNull`, `moduloOrNull` et `positiveModuloOrNull`, qui renvoyaient `0` au lieu de `NULL`, ainsi que `intDivOrNull` et `intDivOrZero`, qui levaient une exception au lieu de renvoyer `NULL` / `0`, lorsque la division entraînait une exception en virgule flottante (division par zéro ou `INT_MIN / -1`), y compris pour des arguments mixtes signés/non signés. [#101976](https://github.com/ClickHouse/ClickHouse/pull/101976) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige des exceptions `LOGICAL_ERROR` lors de la lecture de tables `Iceberg` ou `DeltaLake` dans des cas limites, tels que des mises à jour concurrentes des métadonnées `Iceberg` ou des lectures via la fonction de table `merge` sur des tables `DeltaLake`. [#102033](https://github.com/ClickHouse/ClickHouse/pull/102033) ([Groene AI](https://github.com/groeneai)).
* Corrige les requêtes HTTP sortantes (par ex. la fonction `aiGenerate`, la fonction de table `url`, S3) qui échouaient avec `No route to host` sur des hôtes annonçant à la fois des adresses IPv4 et IPv6 lorsqu’une seule famille d’adresses était routable. Le pool de connexions HTTP bascule désormais vers l’adresse résolue suivante lorsque la première échoue avec une erreur réseau, au lieu de propager l’erreur dès la toute première requête. [#103786](https://github.com/ClickHouse/ClickHouse/pull/103786) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un arrêt brutal du serveur pendant `RESTORE` de sauvegardes contenant des tables avec des dépendances cycliques. [#103824](https://github.com/ClickHouse/ClickHouse/pull/103824) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* L’inférence de schéma pour les colonnes Arrow `time32`/`time64` (par ex. `SELECT * FROM file(..., 'Arrow')`) infère désormais `Time64` au lieu de `DateTime64` ; tout ce qui, en aval, s’appuie sur l’ancien type inféré verra le nouveau type après une mise à niveau. De plus, les valeurs `Time`/`Time64` peuvent désormais être exportées vers Arrow avec le type temporel Apache Arrow approprié, sélectionné selon la précision. Corrige [#104038](https://github.com/ClickHouse/ClickHouse/issues/104038). [#104316](https://github.com/ClickHouse/ClickHouse/pull/104316) ([/bin/cat](https://github.com/Maoyao233)).
* Correction d'une condition de concurrence entre `ALTER TABLE ... RENAME COLUMN` et un `OPTIMIZE TABLE ... FINAL` concurrent (ou toute fusion en arrière-plan) dans `MergeTree`, qui pouvait remplacer silencieusement par des valeurs par défaut les données de la colonne renommée. [#104822](https://github.com/ClickHouse/ClickHouse/pull/104822) ([Groene AI](https://github.com/groeneai)).
* Correction d'une erreur logique `Block structure mismatch` lors d'un `INSERT` concurrent alors qu'un `ALTER TABLE ... RENAME COLUMN` est en cours, dans une base de données `Atomic` avec `lazy_load_tables = 1` après `DETACH DATABASE`/`ATTACH DATABASE`. [#104852](https://github.com/ClickHouse/ClickHouse/pull/104852) ([Groene AI](https://github.com/groeneai)).
* Correction de `groupConcat` lorsque les syntaxes paramétrique et à deux arguments sont mélangées, par ex. `groupConcat(',', 2)(x, '/')` : le paramètre de limite de lignes était silencieusement ignoré, si bien que toutes les lignes étaient renvoyées au lieu du nombre demandé ; le délimiteur du second argument remplace désormais correctement celui du paramètre. [#104882](https://github.com/ClickHouse/ClickHouse/pull/104882) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d'une `LOGICAL_ERROR` (`Expected one block from input stream`) levée par `KILL QUERY`/`KILL MUTATION`/`KILL PART_MOVE_TO_SHARD`/`KILL TRANSACTION` lorsque leur clause `WHERE` contient une sous-requête évaluée pour chaque ligne, ou lorsque `max_block_size` est suffisamment petit pour que le `SELECT` interne sur la table `system.*` concernée produise plus d'un bloc. [#104927](https://github.com/ClickHouse/ClickHouse/pull/104927) ([Groene AI](https://github.com/groeneai)).
* Correction de `CAST` d'unités d'intervalle plus petites vers des unités plus grandes, qui renvoyait des résultats incorrects (par exemple, `CAST(toIntervalSecond(60) AS IntervalMinute)` renvoyait `0` au lieu de `1`). Clôt [#104986](https://github.com/ClickHouse/ClickHouse/issues/104986). [#105058](https://github.com/ClickHouse/ClickHouse/pull/105058) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d'une erreur logique (`Assertion 'row < chunk.getNumRows()' failed`) dans les requêtes `LIMIT ... WITH TIES` exécutées avec le pipeline de lecture dans l'ordre (`optimize_read_in_order = 1` et `read_in_order_use_virtual_row_per_block = 1`). [#105102](https://github.com/ClickHouse/ClickHouse/pull/105102) ([Groene AI](https://github.com/groeneai)).
* Correction d'une fuite dans les vues matérialisées actualisables (`MATERIALIZED VIEW ... REFRESH ...`) : la table interne temporaire qu'une actualisation écartait via `EXCHANGE TABLES` ne pouvait pas être supprimée si elle dépassait `max_table_size_to_drop`, si bien que chaque actualisation suivante créait encore une nouvelle table interne temporaire, faisant grossir le répertoire de données de la vue jusqu'à épuiser le disque. La suppression interne de la tâche d'actualisation contourne désormais `max_table_size_to_drop` et `max_partition_size_to_drop` ; ces garde-fous s'appliquent toujours à un `DROP TABLE` de la vue elle-même lancé par l'utilisateur. Clôt [#104900](https://github.com/ClickHouse/ClickHouse/issues/104900). [#105106](https://github.com/ClickHouse/ClickHouse/pull/105106) ([Groene AI](https://github.com/groeneai)).
* Correction d'une erreur inattendue `DATA_TYPE_CANNOT_BE_USED_IN_KEY` sur des requêtes `ALTER` qui ne modifient pas la clé de tri (modification de paramètres, de commentaires, de codecs, ajout d'une colonne hors clé, etc.) pour les tables `MergeTree` dont la clé de tri contient un `SimpleAggregateFunction` (ou un autre type autorisé uniquement avec `allow_suspicious_primary_key = 1`). [#105111](https://github.com/ClickHouse/ClickHouse/pull/105111) ([Groene AI](https://github.com/groeneai)).
* Correction d’un use-after-free lors de l’interrogation des colonnes d’état des répliques de `system.clusters` (telles que `is_active`, `unsynced_after_recovery`, `recovery_time`) pendant la suppression ou le détachement d’une base de données `Replicated`. De plus, les exceptions Keeper bénignes ignorées dans ce chemin de code (la base de données affectée est traitée comme temporairement indisponible et ignorée) sont désormais journalisées au niveau `Information` au lieu de `Error` ; elles ne sont donc plus transmises aux clients avec la valeur par défaut `send_logs_level = 'warning'`. [#105149](https://github.com/ClickHouse/ClickHouse/pull/105149) ([Groene AI](https://github.com/groeneai)).
* Correction d’un problème où l’exécution de plusieurs instructions dans `clickhouse-local --ignore-error` réaffichait chaque instruction suivante dans le message d’erreur pour chaque erreur lexicale ou de parenthèses non appariées. [#105480](https://github.com/ClickHouse/ClickHouse/pull/105480) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage rare du serveur lorsque des vues matérialisées actualisables sont supprimées ou remplacées en parallèle de la planification de leur rafraîchissement. [#105588](https://github.com/ClickHouse/ClickHouse/pull/105588) ([Groene AI](https://github.com/groeneai)).
* Rejet de `ALTER TABLE ... DELETE` et `ALTER TABLE ... UPDATE` sur les tables `Iceberg` dont le format des fichiers de données n’est pas `Parquet`, avec une erreur `NOT_IMPLEMENTED` explicite au lieu de faire planter le serveur ou de corrompre silencieusement la table. [#105893](https://github.com/ClickHouse/ClickHouse/pull/105893) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats erronés provenant d’une vue définie avec `EXCEPT` ou `INTERSECT` dont l’opérande est une chaîne `UNION`, après `DETACH`/`ATTACH` ou un redémarrage du serveur. Le formateur n’ajoutait pas de parenthèses autour des enfants `UNION` de `INTERSECT`/`EXCEPT`, si bien que le SQL stocké était réanalysé avec une préséance inversée. [#105935](https://github.com/ClickHouse/ClickHouse/pull/105935) ([Groene AI](https://github.com/groeneai)).
* Correction d’une mauvaise détection de données `JSON` comme `TSKV` lors de l’auto-détection du format. Clôt [#100797](https://github.com/ClickHouse/ClickHouse/issues/100797). [#106009](https://github.com/ClickHouse/ClickHouse/pull/106009) ([Pavel Kruglov](https://github.com/Avogar)).
* Interdiction de créer directement un index de saut `minmax` sur des colonnes `JSON` — cela pouvait ensuite faire échouer des insertions avec une exception `NO_COMMON_TYPE` lorsque des tableaux de types mixtes étaient insérés. Créez plutôt l’index sur des sous-colonnes typées (par ex. `INDEX idx json.field TYPE minmax`). [#106094](https://github.com/ClickHouse/ClickHouse/pull/106094) ([linhaojie](https://github.com/linhaojie)).
* Correction d’une erreur logique (`Parsed partition value ... doesn't match partition value for an existing part with the same partition ID`) déclenchée par `OPTIMIZE TABLE ... PARTITION ...` et d’autres requêtes qui déterminent une valeur de partition, sur des tables avec une clé de partition de type `Time`. [#106202](https://github.com/ClickHouse/ClickHouse/pull/106202) ([Groene AI](https://github.com/groeneai)).
* Correction d’une partie de données incorrectement marquée comme ayant une projection cassée après qu’un lightweight delete n’a laissé aucune partie de projection — soit lorsque la projection est reconstruite avec zéro ligne en sortie, soit lorsqu’elle est supprimée (`lightweight_mutation_projection_mode = 'rebuild'`/`'drop'`). Cet état cassé désactivait auparavant l’optimisation des projections pour les requêtes sur cette partie. [#106273](https://github.com/ClickHouse/ClickHouse/pull/106273) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction de `removeDirectory` sur les disques de stockage objet `plain` (tels que `s3_plain`) qui supprimait tous les fichiers d’un répertoire non vide comme si la suppression était récursive ; la suppression d’un répertoire non vide échoue désormais avec `CANNOT_RMDIR`, et la suppression récursive traite explicitement son contenu. [#106281](https://github.com/ClickHouse/ClickHouse/pull/106281) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Correction d’une erreur logique (`Part ... doesn't exist`) qui pouvait faire arrêter le serveur pendant la récupération d’un `INSERT` avec quorum à la suite d’une erreur matérielle Keeper lorsque le quorum était simultanément marqué comme ayant échoué. [#106424](https://github.com/ClickHouse/ClickHouse/pull/106424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception `LOGICAL_ERROR` liée à des noms de colonnes dupliqués lors de l’application de row policies. [#106438](https://github.com/ClickHouse/ClickHouse/pull/106438) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige un problème où `CREATE OR REPLACE TABLE` et `REPLACE TABLE` laissaient une table `_tmp_replace_*` orpheline sur le disque et remplaçaient la table d’origine par une table vide lorsque la table cible existante dépassait `max_table_size_to_drop`. La vérification de taille s’effectue désormais avant l’échange, de sorte qu’un dépassement interrompt proprement l’opération avec le nom de table visible par l’utilisateur dans l’erreur. [#106782](https://github.com/ClickHouse/ClickHouse/pull/106782) ([Groene AI](https://github.com/groeneai)).
* Corrige le fait que `JSON_QUERY`/`JSON_VALUE`/`JSON_EXISTS` renvoyaient `Dynamic` au lieu de `String`/`UInt8` pour des arguments `Dynamic`. Clôt [#106461](https://github.com/ClickHouse/ClickHouse/issues/106461). [#106877](https://github.com/ClickHouse/ClickHouse/pull/106877) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige des résultats erronés lors de l’exécution d’une query sur une table `ReplacingMergeTree` avec `FINAL` et un filtre sur un text index lorsque `query_plan_optimize_lazy_final` était activé. L’optimization lazy de `FINAL` construisait des étapes de lecture qui ne reproduisaient pas le direct read depuis le text index, si bien que le filtre éliminait toutes les lignes correspondantes. [#106894](https://github.com/ClickHouse/ClickHouse/pull/106894) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Applique `query_masking_rules` aux messages ajoutés aux exceptions, afin que les identifiants encodés dans l’URL dans les suffixes `(in file/uri ...)` des erreurs provenant des table functions `jdbc`/`odbc` ne soient pas divulgués lorsque des masking rules sont configurées. [#106916](https://github.com/ClickHouse/ClickHouse/pull/106916) ([Gaurav Dubey](https://github.com/gaurav0107)).
* Corrige le marquage de parts comme cassées et détachées lors de tout rechargement de part (redémarrage du server, `DETACH`/`ATTACH`) pour les tables ayant une colonne `LowCardinality(Nullable(...))` dans la partition key. Depuis la version 26.5, le fichier d’index minmax par part n’était pas écrit lorsque le minimum et le maximum d’une telle colonne étaient `NULL`, alors que la vérification de cohérence de la part exigeait toujours ce fichier. Les parts écrites par les versions affectées ne disposent pas du fichier d’index minmax et doivent toujours être rattachées manuellement. Clôt [#106837](https://github.com/ClickHouse/ClickHouse/issues/106837). [#106945](https://github.com/ClickHouse/ClickHouse/pull/106945) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige une `LOGICAL_ERROR` (`Unexpected expression in JOIN ON section. Expected boolean (UInt8), got 'Nothing'`) lorsqu’un prédicat non-équi `JOIN ... ON` fait référence à une colonne de type `Nothing`, par exemple une colonne produite par `ARRAY JOIN []`. [#106981](https://github.com/ClickHouse/ClickHouse/pull/106981) ([Groene AI](https://github.com/groeneai)).
* Corrige une `LOGICAL_ERROR` rare (`Attempt to release query context that does not exist`) ainsi que le crash du server associé lors de la lecture de tables `MergeTree` via un cache disk de filesystem créé avec `enable_filesystem_query_cache_limit = 1`. [#107028](https://github.com/ClickHouse/ClickHouse/pull/107028) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du server lors du déplacement d’une part vide vers un disk `plain_rewritable` (par exemple, avec `ALTER TABLE ... MOVE PARTITION ... TO DISK` pour une part vide conservée par `remove_empty_parts = 0`). [#107040](https://github.com/ClickHouse/ClickHouse/pull/107040) ([Groene AI](https://github.com/groeneai)).
* Corrige un ordre des lignes incorrect dans les queries `ORDER BY` sur `UNION ALL` avec `optimize_read_in_order` et `read_in_order_use_virtual_row` activés. Clôt [#106879](https://github.com/ClickHouse/ClickHouse/issues/106879). [#107053](https://github.com/ClickHouse/ClickHouse/pull/107053) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d'une `LOGICAL_ERROR` (`Unsupported argument types`) dans la fonction `geohashesInBox` lorsque ses arguments de coordonnées mélangeaient des valeurs constantes et non constantes, ou lorsqu'une coordonnée était de type `BFloat16`. Les arguments `Float32` mixtes const/non-const fonctionnent désormais, et les arguments `BFloat16` sont rejetés avec un message d'erreur explicite. [#107063](https://github.com/ClickHouse/ClickHouse/pull/107063) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats erronés (lignes dupliquées) pour `SELECT DISTINCT` sur un `GROUP BY` avec `WITH CUBE`, `WITH ROLLUP` ou `GROUPING SETS` sur les mêmes clés. L'optimisation `query_plan_remove_redundant_distinct` ne supprime plus `DISTINCT` dans ces cas, car les modificateurs de regroupement produisent des lignes supplémentaires dont les colonnes clés prennent leurs valeurs par défaut, ce qui peut entrer en collision avec de vraies valeurs de groupe. [#107072](https://github.com/ClickHouse/ClickHouse/pull/107072) ([Groene AI](https://github.com/groeneai)).
* Correction d'un résultat erroné dans un `OUTER JOIN` lorsque le filtre `WHERE` est une conjonction contenant un terme constant (par exemple `p AND 1`, ou `WHERE p QUALIFY NULL` lorsque `QUALIFY NULL` est fusionné dans `WHERE`). Le terme constant pouvait être poussé du côté non préservé de la jointure puis supprimé du filtre post-jointure, si bien que la jointure produisait des lignes sans correspondance dont les colonnes du côté concerné prenaient leurs valeurs par défaut, et ces lignes passaient alors incorrectement le filtre. [#107084](https://github.com/ClickHouse/ClickHouse/pull/107084) ([Groene AI](https://github.com/groeneai)).
* Correction d'un problème où les fonctions définies par l'utilisateur `executable_pool` configurées avec `<lifetime>` ne prenaient pas en compte les modifications du script sous-jacent. Auparavant, seul `SYSTEM RELOAD FUNCTIONS` relisait un script modifié ; les rechargements périodiques via `<lifetime>` continuaient d'exécuter l'ancienne version. [#107087](https://github.com/ClickHouse/ClickHouse/pull/107087) ([Groene AI](https://github.com/groeneai)).
* Correction d'une exception `LOGICAL_ERROR` (`Cannot find input column ... on its position in inputs of expression actions DAG`) pour une sous-requête scalaire corrélée sur une source projetant deux fois le même identifiant de colonne (par ex. `SELECT number, *`) lorsque `correlated_subqueries_default_join_kind = 'left'`. [#107112](https://github.com/ClickHouse/ClickHouse/pull/107112) ([Groene AI](https://github.com/groeneai)).
* Correction d'une situation de concurrence sur le collecteur de traces global du serveur entre le démarrage du profileur par un thread de travail et l'arrêt du serveur. [#107307](https://github.com/ClickHouse/ClickHouse/pull/107307) ([Groene AI](https://github.com/groeneai)).
* Les sauvegardes incrémentielles ne stockent plus les identifiants `S3` dans le localisateur `<base_backup>` du fichier de métadonnées `.backup`. Les sauvegardes créées avec `use_same_s3_credentials_for_base_backup = 1`, ou avec des identifiants explicites de sauvegarde de base correspondant à ce localisateur, stockent désormais un marqueur non secret et sont restaurées sans paramètres supplémentaires au moment de la restauration ; pour les sauvegardes créées avec des identifiants explicites de sauvegarde de base différents ou des arguments supplémentaires d'authentification de base, transmettez-les à `RESTORE` avec le paramètre `base_backup`. Les sauvegardes créées par d'anciennes versions avec des identifiants intégrés restent restaurables. [#107357](https://github.com/ClickHouse/ClickHouse/pull/107357) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction d'un problème où l'en-tête `CSVWithNames` et `CSVWithNamesAndTypes` comportait moins de colonnes que les données lorsque `output_format_csv_serialize_tuple_into_separate_columns` est activé (par défaut). L'en-tête (et la ligne des types) aplatit désormais les colonnes `Tuple` en champs feuille avec des noms en notation pointée (par ex. `t.a`, `t.b`), afin que le nombre de colonnes de l'en-tête corresponde à celui des données. Un nouveau paramètre `output_format_csv_header_serialize_tuple_into_separate_columns` (par défaut `1`) contrôle ce comportement et peut être défini sur `0` pour rétablir l'ancien en-tête à nom unique. [#107371](https://github.com/ClickHouse/ClickHouse/pull/107371) ([Groene AI](https://github.com/groeneai)).
* Correction de la lecture des tables `Iceberg` v3 dont les data files `Parquet` contiennent des colonnes réservées de lignage des lignes (telles que `_row_id`) ; le lecteur `Parquet` natif ne lève plus `ICEBERG_SPECIFICATION_VIOLATION` pour les ID de champ réservés qui ne font pas partie du schéma de table. [#107377](https://github.com/ClickHouse/ClickHouse/pull/107377) ([Greg Maher](https://github.com/gregakinman)).
* Correction d’un rare arrêt brutal du server pendant l’extinction (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`), causé par le retrait d’une tâche planifiée de la file d’attente d’un thread pool avant son exécution. [#107383](https://github.com/ClickHouse/ClickHouse/pull/107383) ([Groene AI](https://github.com/groeneai)).
* Correction des engines de table et de database `MaterializedPostgreSQL` afin qu’une table ou une database unique puisse être répliquée à partir d’un schéma PostgreSQL autre que celui par défaut (`materialized_postgresql_schema`), y compris lorsque des tables portant le même nom existent dans plusieurs schémas d’une même database (auparavant, elles partageaient une publication et un replication slot, ce qui provoquait des interférences). [#107425](https://github.com/ClickHouse/ClickHouse/pull/107425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un problème où `MaterializedPostgreSQL` arrêtait la replication d’une database entière (avec `LOGICAL_ERROR: Columns number mismatch`) lorsqu’une seule table répliquée avait vu sa structure changer pendant que le server était arrêté. Désormais, seule la table concernée est ignorée et peut être récupérée avec `DETACH`/`ATTACH`. [#107427](https://github.com/ClickHouse/ClickHouse/pull/107427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le `BACKUP` d’une database `MaterializedPostgreSQL` ne reste plus bloqué indéfiniment avec `Table ... were created or changed its definition during scanning`, et sauvegarde désormais effectivement les données de la table (via le `ReplacingMergeTree` sous-jacent), qui peuvent être restaurées sous forme de `ReplacingMergeTree` standalone. [#107433](https://github.com/ClickHouse/ClickHouse/pull/107433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une régression où le paramètre `compatibility = '26.6'` (qui active implicitement la partition strategy `hive`) acceptait silencieusement `{_partition_id}` dans les chemins de table S3/object storage au lieu de lever `BAD_ARGUMENTS`. [#107437](https://github.com/ClickHouse/ClickHouse/pull/107437) ([Lefteris](https://github.com/LefterisXefteris)).
* Correction d’une fuite mémoire dans le `mongo-c-driver` fourni, qui pouvait se produire lors de la lecture depuis MongoDB (par exemple via un Dictionary MongoDB ou la table function `mongodb`) si une erreur de lecture pouvant donner lieu à un réessai était suivie de l’échec de la nouvelle sélection du server lors du réessai. [#107448](https://github.com/ClickHouse/ClickHouse/pull/107448) ([Groene AI](https://github.com/groeneai)).
* Correction d’une exception lors de l’insertion dans une table `Iceberg` dont les metadata avaient été créées par un external engine et omettaient les tableaux optionnels `snapshots`, `metadata-log` ou `snapshot-log`. Ces insertions réussissent désormais au lieu d’échouer. [#107473](https://github.com/ClickHouse/ClickHouse/pull/107473) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction de `DELETE FROM` (lightweight delete), qui exigeait le privilege `ALTER UPDATE` en plus de `ALTER DELETE`. Un utilisateur disposant uniquement de `ALTER DELETE` peut désormais exécuter `DELETE FROM`, conformément à la documentation. [#107491](https://github.com/ClickHouse/ClickHouse/pull/107491) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction de `NOT_FOUND_COLUMN_IN_BLOCK` lors de la lecture de fichiers partitionnés Hive avec `use_hive_partitioning = 1` et une clause `WHERE`/`PREWHERE` qui filtre un column réel (non virtuel) alors qu’un column de partition Hive est également sélectionné. [#107505](https://github.com/ClickHouse/ClickHouse/pull/107505) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` (`Different order of columns in UNION subquery`) lorsque l’ancien analyzer (`enable_analyzer = 0`) lit un sous-ensemble de columns à partir d’une subquery dont les branches `UNION` sont des set operations `INTERSECT`/`EXCEPT`. [#107511](https://github.com/ClickHouse/ClickHouse/pull/107511) ([Groene AI](https://github.com/groeneai)).
* Correction d’un problème où les valeurs `NULL` étaient silencieusement converties en chaînes vides lors de l’insertion de données `Arrow`/`ORC` dans une column `LowCardinality(Nullable(...))`. Il s’agissait d’une régression introduite en version 26.5. [#107532](https://github.com/ClickHouse/ClickHouse/pull/107532) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige une erreur logique (`Stream ... variant_discr ... is not found`) qui pouvait survenir lors de la fusion ou de la lecture d’une part `MergeTree` produite par une mutation sur une table avec une colonne `Dynamic`. [#107562](https://github.com/ClickHouse/ClickHouse/pull/107562) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une erreur logique (`WhichDataType(const_type).isArray()`) lors de l’analyse de la clé primaire lorsque `pointInPolygon` est appelé avec un argument de polygone constant d’un type conteneur tel que `Variant` ou `Dynamic` (par exemple, `pointInPolygon((x, y), if(c, [(0, 0), ...], NULL))`). [#107589](https://github.com/ClickHouse/ClickHouse/pull/107589) ([Groene AI](https://github.com/groeneai)).
* Corrige une erreur logique (`Last stored last_written_position in meta file ... is bigger than current last_written_pos`) dans le moteur `FileLog` qui pouvait se produire lorsqu’un fichier surveillé était supprimé puis recréé en réutilisant le même inode. [#107617](https://github.com/ClickHouse/ClickHouse/pull/107617) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt rare du serveur (`std::future_error`: `The associated promise has been destructed prior to the associated state becoming ready`) pendant le traitement des requêtes du client ZooKeeper, lorsqu’une requête Keeper asynchrone était abandonnée lors de son envoi, par exemple en cas de pression mémoire. [#107647](https://github.com/ClickHouse/ClickHouse/pull/107647) ([Groene AI](https://github.com/groeneai)).
* Corrige `RESTORE` pour les tables `ReplicatedMergeTree` afin que les parts au contenu dupliqué issues d’une sauvegarde soient conservées au lieu d’être dédupliquées silencieusement. [#107652](https://github.com/ClickHouse/ClickHouse/pull/107652) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige le filtre de jointure à l’exécution qui produisait des résultats incorrects pour les colonnes `JSON`. Closes [#107646](https://github.com/ClickHouse/ClickHouse/issues/107646). [#107663](https://github.com/ClickHouse/ClickHouse/pull/107663) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige des résultats incorrects pour des requêtes distribuées sélectionnant des colonnes `ALIAS` partageant une sous-expression commune : les colonnes pouvaient être mal alignées et les valeurs renvoyées sous la mauvaise colonne. [#107675](https://github.com/ClickHouse/ClickHouse/pull/107675) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Les quotas indexés par `normalized_query_hash` comptabilisent désormais toutes les ressources (`read_rows`, `read_bytes`, `result_rows`, `result_bytes`, `execution_time`, `written_bytes`, `errors`) par modèle de requête, comme les compteurs du nombre de requêtes, au lieu de les imputer à un compartiment unique partagé par utilisateur. [#107681](https://github.com/ClickHouse/ClickHouse/pull/107681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une erreur logique `Block structure mismatch in UnionStep stream` (arrêt du serveur sur les builds de débogage/avec sanitizer, `Code: 49` sur les builds de release) qui se produisait lorsque des branches sœurs d’un `UNION`/`INTERSECT`/`EXCEPT` ne différaient que par leur prédicat `WHERE` et que le prédicat d’une branche était réduit à une colonne `Const`. [#107719](https://github.com/ClickHouse/ClickHouse/pull/107719) ([Groene AI](https://github.com/groeneai)).
* Corrige des erreurs logiques (`Bad cast`) causées par une suppression incohérente de `LowCardinality` imbriqué dans des colonnes `Variant` et `Dynamic`, par exemple dans `concat`, `format` et l’analyse de la clé primaire. Closes [#107598](https://github.com/ClickHouse/ClickHouse/issues/107598). [#107773](https://github.com/ClickHouse/ClickHouse/pull/107773) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un fort déséquilibre dans la répartition du travail avec les répliques parallèles lorsque le cluster contient des répliques inactives (par exemple, des entrées obsolètes laissées après l’autoscaling). Ces répliques ne sont désormais plus prises en compte par le coordinateur de lecture, de sorte que le travail est réparti entre les répliques en ligne au lieu de s’accumuler sur une seule. [#107805](https://github.com/ClickHouse/ClickHouse/pull/107805) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'exception `Not-ready Set is passed as the second argument` qui pouvait se produire lorsque la construction d'un ensemble pour une sous-requête `IN` échouait silencieusement pendant l'analyse de la clé primaire (par exemple, en cas de timeout de sous-requête avec `overflow_mode = 'break'`), laissant cet ensemble définitivement non construit dans le pipeline de requête. [#107924](https://github.com/ClickHouse/ClickHouse/pull/107924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un plantage du serveur dans le pushdown de prédicat (`enable_optimize_predicate_expression`, ancien analyseur) lorsqu'une sous-requête `UNION` apparaît dans une condition `JOIN ... ON`. [#107930](https://github.com/ClickHouse/ClickHouse/pull/107930) ([Groene AI](https://github.com/groeneai)).
* Corrige des erreurs intempestives `CHECKSUM_DOESNT_MATCH` et de lecture `Parquet` (et, pour certains formats, des résultats silencieusement erronés) lorsqu'un objet S3 ou S3-compatible (par ex. GCS) est remplacé sur place pendant sa lecture. Ces lectures échouent désormais avec une erreur claire, pouvant donner lieu à un réessai, au lieu de renvoyer des données reconstituées à partir de deux versions de l'objet ; ce comportement est contrôlé par le nouveau paramètre `s3_validate_etag_on_read` (activé par défaut). [#107934](https://github.com/ClickHouse/ClickHouse/pull/107934) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige un échec de `SELECT` avec `NOT_FOUND_COLUMN_IN_BLOCK` sur une table dotée d'un index de skipping de données `set` lorsqu'une ROW POLICY la filtre à l'aide d'une condition toujours vraie combinée à une vérification sur une colonne non indexée. [#107971](https://github.com/ClickHouse/ClickHouse/pull/107971) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige l'analyse des paramètres de commande des fonctions définies par l'utilisateur exécutables afin que les placeholders dont le nom est vide ou invalide ne soient pas acceptés comme paramètres. [#107983](https://github.com/ClickHouse/ClickHouse/pull/107983) ([Goutam Adwant](https://github.com/goutamadwant)).
* Corrige une régression de performances pour les sous-colonnes `Map` avec `PREWHERE`. Clôt [#107912](https://github.com/ClickHouse/ClickHouse/issues/107912). Causée par [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200). [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige une écriture hors limites lors de la lecture d'une colonne `Variant` à partir d'un bloc `Native` mal formé dont les discriminateurs référencent un index de variante inexistant. [#107991](https://github.com/ClickHouse/ClickHouse/pull/107991) ([uwezkhan](https://github.com/uwezkhan)).
* Corrige des résultats de requête erronés dus à un élagage incorrect de la clé primaire et des partitions lorsque `toStartOfDay`, `toStartOfISOYear`, `toDaysSinceYearZero`, `toRelativeSecondNum`, `toRelativeMinuteNum`, `toRelativeHourNum`, `toRelativeWeekNum`, `toRelativeDayNum`, `toMonthNumSinceEpoch` ou `toYearNumSinceEpoch` est appliqué à une colonne clé `Date32` contenant des dates en dehors de la plage que la fonction peut représenter (en particulier les dates antérieures à `1970-01-01`). Ces fonctions se déclarent monotones auprès de l'index primaire, mais auparavant elles bouclaient pour de tels arguments, de sorte que l'index pouvait élaguer des granules qui contenaient en réalité des lignes correspondantes ; elles saturent désormais aux limites de leur type de résultat et restent monotones sur toute la plage `Date32`. [#108018](https://github.com/ClickHouse/ClickHouse/pull/108018) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de `accurateCastOrNull` pour un `Tuple` dont l'élément est `Dynamic`/`Variant` : un véritable `NULL` source était traité comme un échec de conversion. Pour un élément cible `Nullable`, un `NULL` source reste désormais un élément `NULL` (comme avec une source simple `Tuple(Nullable(...))`) ; pour un élément cible non `Nullable`, un `NULL` source met désormais l'ensemble du tuple à null au lieu de produire la valeur par défaut de l'élément ; les échecs d'analyse/de dépassement de capacité mettent toujours l'ensemble du tuple à null. [#108023](https://github.com/ClickHouse/ClickHouse/pull/108023) ([Groene AI](https://github.com/groeneai)). Correction également d'une erreur logique lors du cast d'une colonne `Dynamic` ou `Variant` imbriquée dans un `Tuple` vers un type d'élément non `Nullable` avec `accurateCastOrNull` ou `accurateCastOrDefault`. [#108061](https://github.com/ClickHouse/ClickHouse/pull/108061) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `numericIndexedVectorPointwiseMultiply`, qui renvoyait un résultat vide lors d'une multiplication par un vecteur composé uniquement de `1` avec une configuration BSI (bit-sliced index) différente. [#108027](https://github.com/ClickHouse/ClickHouse/pull/108027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `toTime64` et de `CAST(... AS Time64)`, qui ne bornaient pas les valeurs hors plage à la plage `Time64` dans les modes de dépassement de capacité `saturate` et `ignore`, ce qui pouvait produire des valeurs s'affichant de manière identique mais comparées comme différentes. [#108028](https://github.com/ClickHouse/ClickHouse/pull/108028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `getClientHTTPHeader` est désormais correctement traité comme non déterministe, de sorte que son résultat n'est plus réutilisé à tort par le cache de résultats de requête. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client --port 9440` active de nouveau automatiquement une connexion sécurisée (TLS) ; ce comportement avait été cassé par une refactorisation qui ne transmettait plus le port à la vérification de la connexion sécurisée. [#108032](https://github.com/ClickHouse/ClickHouse/pull/108032) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Une erreur transitoire lors de l'actualisation des data parts d'une table en lecture seule n'arrête plus définitivement la tâche d'actualisation en arrière-plan. [#108034](https://github.com/ClickHouse/ClickHouse/pull/108034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des avertissements de surcharge mémoire/CPU/mutation dans `system.warnings`, qui avaient un cycle de métriques asynchrones de retard (et étaient absents au premier cycle). [#108035](https://github.com/ClickHouse/ClickHouse/pull/108035) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La table function `mongodb` accepte désormais `oid_columns` lorsqu'il est passé comme argument nommé (par ex. `oid_columns='_id'`), au lieu de le rejeter avec `BAD_ARGUMENTS`. [#108039](https://github.com/ClickHouse/ClickHouse/pull/108039) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une exception `Bad cast from type DB::ColumnNullable to DB::ColumnVector<...>` (erreur logique) lorsqu'un astérisque qualifié (`t.*`) sélectionne une clé `JOIN USING` et que ce join est imbriqué sous un join `PASTE`/`CROSS`/par virgule ou un join externe `ON`, avec `join_use_nulls = 0`. [#108043](https://github.com/ClickHouse/ClickHouse/pull/108043) ([Groene AI](https://github.com/groeneai)).
* Correction de la gestion incorrecte des assertions de largeur nulle (`\b`, `^`, `$`) dans les fonctions regexp « match all » `extractAll`, `extractAllGroupsVertical`, `extractAllGroupsHorizontal`, `countMatches` et `splitByRegexp`. Par exemple, `extractAll('new york is the greatest', '\b(\w)')` renvoie désormais correctement la première lettre de chaque mot au lieu de toutes les lettres. [#108047](https://github.com/ClickHouse/ClickHouse/pull/108047) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `CREATE TABLE ... AS SELECT` sur les bases de données `Atomic`, qui laissait une table vide lorsque la requête échouait — par exemple lorsque l’utilisateur n’a pas accès à une table référencée dans une sous-requête. Auparavant, une nouvelle tentative indiquait que la table existait déjà au lieu de renvoyer l’erreur d’origine. La table est désormais créée via une table temporaire et ne devient visible qu’une fois entièrement remplie. [#108048](https://github.com/ClickHouse/ClickHouse/pull/108048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Autorise les requêtes sur un dictionnaire `range_hashed` ou `complex_key_range_hashed` utilisant une plage `DateTime64`, `Decimal` ou en virgule flottante avec un argument correspondant pour `dictGet`/`dictHas`. Auparavant, ces requêtes échouaient avec `must be convertible to Int64`, et les intervalles ouverts des plages `Decimal`/`DateTime64` renvoyaient incorrectement la valeur par défaut. [#108052](https://github.com/ClickHouse/ClickHouse/pull/108052) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception (`CANNOT_PARSE_TEXT`) lors du chargement d’un dictionnaire avec une clé composite dont les colonnes de clé ne sont pas les premières colonnes dans la définition du dictionnaire, avec une source `ClickHouse` locale utilisant une requête explicite. Les colonnes source sont désormais mises en correspondance avec la structure du dictionnaire par nom plutôt que par position. [#108053](https://github.com/ClickHouse/ClickHouse/pull/108053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’échec de la fonction de table `values` avec `ARGUMENT_OUT_OF_BOUND` lorsqu’un littéral décimal qui n’est pas exactement représentable dans une colonne flottante étroite (comme `0.1` pour une colonne `Float32`) est utilisé, par ex. `SELECT * FROM values('x Float32', 0.1)`. Ces valeurs sont désormais acceptées et converties vers la valeur représentable la plus proche, conformément à `CAST` et `INSERT ... VALUES`. [#108055](https://github.com/ClickHouse/ClickHouse/pull/108055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une `LOGICAL_ERROR` (`No available columns`) lors de l’exécution de `SELECT count()` (ou d’autres requêtes triviales) sur une table pour laquelle l’utilisateur ne dispose d’un accès `SELECT` que sur une colonne `ALIAS`. [#108056](https://github.com/ClickHouse/ClickHouse/pull/108056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `mapFilter`, `mapSort` (et ses variantes) et `mapConcat`, qui supprimaient `LowCardinality` des types de clé et de valeur d’un `Map`. Auparavant, `mapFilter` sur une colonne `Map(LowCardinality(String), String)` renvoyait `Map(String, String)`, ce qui pouvait corrompre les métadonnées d’une table créée via `CREATE TABLE ... AS SELECT` et faire échouer `CHECK TABLE`. [#108057](https://github.com/ClickHouse/ClickHouse/pull/108057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de résultats incorrects lors de l’utilisation de `hasToken` sur des index de texte avec un tokenizer autre que `splitByNonAlpha`. [#108066](https://github.com/ClickHouse/ClickHouse/pull/108066) ([Robert Schulze](https://github.com/rschu1ze)).
* Correction d’un blocage de `SYSTEM RELOAD DICTIONARIES` (et `RELOAD DICTIONARY`) lorsque de nombreux dictionnaires MySQL définis en XML partageaient un même pool de connexions via `share_connection`. Ces pools respectent désormais `connection_pool_size` et `connection_wait_timeout` (5 secondes par défaut) définis dans la configuration, comme les dictionnaires définis via des named collections. [#108083](https://github.com/ClickHouse/ClickHouse/pull/108083) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Autorise `EXISTS <dictionary>` pour un utilisateur qui ne possède que le privilège `SHOW DICTIONARIES` sur le dictionnaire (auparavant, `SHOW TABLES` était requis). [#108084](https://github.com/ClickHouse/ClickHouse/pull/108084) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `CREATE TABLE dst AS src SETTINGS ...` (et de variantes similaires avec `ORDER BY`/`PARTITION BY` mais sans `ENGINE` explicite), qui omettait silencieusement le moteur, les clauses de stockage de la table source (comme le `TTL` de la table et les clés) ainsi que les paramètres. Le moteur et les clauses de stockage non redéfinies sont désormais hérités de la table source, et les paramètres spécifiés sont fusionnés par-dessus ceux de la table source. [#108085](https://github.com/ClickHouse/ClickHouse/pull/108085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un échec de `INSERT` dans des tables `MergeTree` avec `filesystem error: in rename: Permission denied` sur des systèmes de fichiers basés sur Windows (WSL, CIFS/SMB, montages bind Docker Desktop), causé par le rédacteur de part qui laissait des descripteurs de fichier ouverts lors du renommage du répertoire de part. [#108089](https://github.com/ClickHouse/ClickHouse/pull/108089) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un crash (déréférencement de pointeur nul) lors d’une requête sur une table `Hive` sans clause `WHERE`, par ex. `SELECT * FROM hive_table`. [#108094](https://github.com/ClickHouse/ClickHouse/pull/108094) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un `LOGICAL_ERROR` ("Unexpected return type from if") lors de la lecture d’une colonne avec `apply_mutations_on_fly = 1` après un `ALTER UPDATE col = ... WHERE <cond>` avec une condition non constante ou fausse, suivi de `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* Correction de `toStartOfInterval` et `dateTrunc`, qui renvoyaient une valeur arrondie au lieu du début de l’intervalle contenant la valeur lorsque l’entrée avait une précision plus fine que l’unité d’intervalle ; par ex. `toStartOfInterval(toDateTime64('2023-10-09 10:11:12.000999', 6), INTERVAL 1 millisecond)` renvoyait `10:11:12.001` au lieu de `10:11:12.000`. La surcharge avec une origine explicite était également affectée. Ferme [#103535](https://github.com/ClickHouse/ClickHouse/issues/103535). [#108186](https://github.com/ClickHouse/ClickHouse/pull/108186) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Masquage des informations sensibles dans la colonne `view_query` de `system.query_views_log`. [#108214](https://github.com/ClickHouse/ClickHouse/pull/108214) ([Valerii Mordovskii](https://github.com/Fidelaggio)).
* Correction d’un blocage sur une table `MergeTree` attachée avec un skip index `hypothesis` hérité (un type d’index supprimé conservé uniquement pour la compatibilité avec `ATTACH`). Auparavant, un `DELETE` lightweight, `OPTIMIZE`, un `INSERT` simple ou un `SELECT` filtré sur une telle table échouait avec `ILLEGAL_INDEX` ("Index of type 'hypothesis' is no longer supported"), et la mutation `DELETE` était relancée indéfiniment. L’index obsolète est désormais traité comme inerte : il est conservé tel quel lors des merge/mutation, ignoré à l’insert et lors de la planification des requêtes, et peut toujours être supprimé avec `ALTER TABLE ... DROP INDEX`. [#108217](https://github.com/ClickHouse/ClickHouse/pull/108217) ([Groene AI](https://github.com/groeneai)).
* Correction du paramètre `type_json_allow_duplicated_key_with_literal_and_nested_object`, qui ne fonctionnait pas avec des chemins typés dans `JSON`. [#108218](https://github.com/ClickHouse/ClickHouse/pull/108218) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un `LOGICAL_ERROR` (`Different list of shards in child plans`) lors de l’exécution d’une requête avec `make_distributed_plan = 1` sur une table `MergeTree` ayant une projection normale/agrégée. [#108256](https://github.com/ClickHouse/ClickHouse/pull/108256) ([Groene AI](https://github.com/groeneai)).
* Correction de `replaceRegexpOne` et `replaceRegexpAll` afin que `.` corresponde par défaut aux caractères de nouvelle ligne, conformément aux autres fonctions d’expressions régulières. [#108265](https://github.com/ClickHouse/ClickHouse/pull/108265) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* Correction d'une erreur logique lors du cast d'un `Array(Dynamic)` ou d'un `Array(Variant)` en `QBit` avec `accurateCastOrNull`, p. ex. `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* `index_granularity_bytes` est désormais respecté pour les colonnes d'état `AggregateFunction`. Auparavant, la limite en octets des granules était ignorée pour ces colonnes (par exemple les états `uniqExact` dans les tables `AggregatingMergeTree` et les projections d'agrégation), ce qui produisait des granules bien plus volumineux que la limite configurée et augmentait l'amplification de lecture ainsi que la mémoire utilisée à l'exécution de la requête. [#108297](https://github.com/ClickHouse/ClickHouse/pull/108297) ([Groene AI](https://github.com/groeneai)).
* Correction du fait que les conditions des `UPDATE`/`DELETE` lightweight étaient évaluées deux fois, ce qui pouvait entraîner un comportement incorrect pour les conditions non déterministes et du travail supplémentaire pour les conditions déterministes. Clôt [#86032](https://github.com/ClickHouse/ClickHouse/issues/86032). [#108323](https://github.com/ClickHouse/ClickHouse/pull/108323) ([ofeliacode](https://github.com/ofeliacode)).
* Correction d'une exception dans un gestionnaire HTTP prédéfini lorsqu'un en-tête dont l'expression régulière `headers_regexp` autorise une valeur vide est absent de la requête. [#108324](https://github.com/ClickHouse/ClickHouse/pull/108324) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction de `arrayPartialSort` avec un argument de limite non constant. [#108327](https://github.com/ClickHouse/ClickHouse/pull/108327) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction d'un `INSERT` annulé ou `KILL`é qui continuait à s'exécuter longtemps pendant la construction d'un index de saut (par exemple un index `set(0)` non borné sur une colonne à forte cardinalité). La construction de l'index s'arrête désormais rapidement lorsque la requête est annulée. [#108351](https://github.com/ClickHouse/ClickHouse/pull/108351) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d'un `SELECT` depuis la fonction de table `primes` qui ne répondait pas à l'annulation : avec un `step` (ou une `limit`) important, la requête pouvait continuer à s'exécuter longtemps après `KILL QUERY` ou un délai d'expiration. Elle s'arrête désormais rapidement. [#108353](https://github.com/ClickHouse/ClickHouse/pull/108353) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction de l'analyse des noms de type dont le nom contient la sous-chaîne `INT` (par exemple un nom de type de style fonction, comme `quantileInterpolatedWeighted`, utilisé à la place d'un type de données). Ces noms étaient confondus avec des types entiers MySQL et leur premier groupe d'arguments `(...)` était silencieusement interprété comme un modificateur de largeur d'affichage, ce qui pouvait casser l'aller-retour du formatage de la requête. [#108354](https://github.com/ClickHouse/ClickHouse/pull/108354) ([Groene AI](https://github.com/groeneai)).
* Correction d'une incohérence où un `ARRAY JOIN` mal formé suivi d'une virgule et d'une liste de tables entre parenthèses était analysé à tort comme un CROSS JOIN au lieu d'être rejeté. [#108365](https://github.com/ClickHouse/ClickHouse/pull/108365) ([Raúl Marín](https://github.com/Algunenano)).
* Masquage des arguments secrets de fonctions telles que `encrypt`, `decrypt` et `HMAC` dans la sortie de `EXPLAIN actions`, `EXPLAIN header` et `EXPLAIN PIPELINE` lorsque `format_display_secrets_in_show_and_select` est désactivé (par défaut). [#108386](https://github.com/ClickHouse/ClickHouse/pull/108386) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de `CREATE OR REPLACE` d'une vue matérialisée actualisable avec une cible `TO` : elle était rejetée à tort parce que la table cible appartient déjà à la vue en cours de remplacement. [#108392](https://github.com/ClickHouse/ClickHouse/pull/108392) ([Nikolay Degterinsky](https://github.com/evillique)).
* Correction d’un plantage du serveur (`Received signal 4`, instruction illégale) pouvant être déclenché par un flux du protocole TCP natif malformé ou désynchronisé. L’adresse initiale fournie par le client est désormais validée pour s’assurer qu’il s’agit bien d’un `host:port` numérique avant d’être analysée, au lieu de laisser un port non numérique atteindre la fonction libc piégée `getservbyname`. [#108410](https://github.com/ClickHouse/ClickHouse/pull/108410) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage du serveur pendant l’arrêt lorsqu’une base de données qui s’arrête lève une exception (par exemple lorsqu’un flush de table rencontre un délai d’expiration ZooKeeper). Le reste de la séquence d’arrêt n’est désormais plus ignoré, de sorte que les logs système sont vidés et leurs threads rejoints avant la sortie du serveur. [#108417](https://github.com/ClickHouse/ClickHouse/pull/108417) ([Groene AI](https://github.com/groeneai)).
* Correction de fonctions d’expression régulière (`match`, `extract`, `extractAll`, `replaceRegexpOne`, `replaceRegexpAll`, etc.) qui renvoyaient silencieusement des résultats erronés lorsque le motif contenait un octet NUL (`\0`). Le NUL est désormais traité comme un octet littéral ordinaire, conformément à RE2. [#108427](https://github.com/ClickHouse/ClickHouse/pull/108427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `clickhouse-local`, qui renvoyait une réponse vide aux requêtes HTTP `OPTIONS` lorsqu’aucun `http_options_response` n’était configuré, ce qui amenait l’UI web (`/play`) à afficher la connexion comme rompue alors même que les requêtes fonctionnaient. [#108428](https://github.com/ClickHouse/ClickHouse/pull/108428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception `LOGICAL_ERROR` ("Invalid action query tree node ...") lorsqu’une requête distribuée dédupliquait à la fois des colonnes `ALIAS` dupliquées et structurellement identiques, et référençait une fonction de table avec un argument de collection nommée `key = value` (par exemple `oss(s3_conn, filename = '...')`). [#108435](https://github.com/ClickHouse/ClickHouse/pull/108435) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage du serveur (`LOGICAL_ERROR: 'Unexpected exception in refresh scheduling'`) pouvant se produire au démarrage lorsqu’une vue matérialisée actualisable coordonnée dans une base de données `Replicated` était attachée à un Keeper ne prenant pas en charge l’indicateur de fonctionnalité `MULTI_READ` (par exemple après une rétrogradation de Keeper). La vue est désormais arrêtée proprement au lieu d’entraîner l’arrêt brutal du serveur. [#108441](https://github.com/ClickHouse/ClickHouse/pull/108441) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `NOT_FOUND_COLUMN_IN_BLOCK` (par ex. `Column _part not found`) lors de la sélection de colonnes virtuelles dans une table `MergeTree` avec des réplicas parallèles, y compris via `SELECT *` avec `asterisk_include_virtual_columns = 1`. [#108451](https://github.com/ClickHouse/ClickHouse/pull/108451) ([Groene AI](https://github.com/groeneai)).
* `SYSTEM RESET DDL WORKER` requiert désormais le nouveau privilège `SYSTEM RESET DDL WORKER`. Auparavant, tout utilisateur authentifié (y compris les utilisateurs `readonly`) pouvait l’exécuter et réinitialiser de manière répétée l’état du worker DDL, bloquant ainsi le DDL `ON CLUSTER`. [#108460](https://github.com/ClickHouse/ClickHouse/pull/108460) ([Groene AI](https://github.com/groeneai)).
* Restriction du chemin du modèle de `catboostEvaluate` au répertoire `user_files`, comme pour la fonction de table `file` et les sources de dictionnaire. Auparavant, la fonction acceptait un chemin arbitraire dans le système de fichiers sans vérification de confinement, ce qui permettait de sonder l’existence de fichiers en dehors de `user_files` et d’en déclencher la lecture. Les modèles doivent désormais se trouver dans `user_files`. [#108463](https://github.com/ClickHouse/ClickHouse/pull/108463) ([Groene AI](https://github.com/groeneai)).
* La fonction `hasColumnInTable` requiert désormais le privilège `SHOW COLUMNS` sur la table cible, le même droit requis par `DESCRIBE` et `SHOW CREATE TABLE`. Auparavant, tout utilisateur pouvait appeler `hasColumnInTable` pour sonder les noms de colonnes et tester l’existence de la table et de la base de données sans aucun contrôle d’accès. [#108464](https://github.com/ClickHouse/ClickHouse/pull/108464) ([Groene AI](https://github.com/groeneai)).
* Correction d’une allocation mémoire excessive lors de la désérialisation d’états malveillants de fonctions d’agrégation pour `mannWhitneyUTest`, `rankCorr`, `largestTriangleThreeBuckets`, `quantileGK`, `sequenceMatch`/`sequenceCount` et `groupArrayIntersect`. Un état mal formé pouvait déclarer un nombre d’éléments énorme et amener le serveur à tenter d’allouer des dizaines de gigaoctets à partir de quelques octets d’entrée ; ces états sont désormais rejetés avec `TOO_LARGE_ARRAY_SIZE`. [#108465](https://github.com/ClickHouse/ClickHouse/pull/108465) ([Groene AI](https://github.com/groeneai)).
* Validation de la cible de redirection d’une réponse S3 `301 Moved Permanently` par rapport à `remote_url_allow_hosts` (`RemoteHostFilter`). Auparavant, la gestion des 301 par le SDK AWS suivait l’endpoint fourni par l’attaquant dans la réponse (en-tête `Location` ou élément `<Endpoint>`) sans vérification de l’hôte, si bien qu’un serveur S3-compatible malveillant ou compromis pouvait rediriger ClickHouse vers un hôte arbitraire (SSRF). Le chemin de redirection 307 effectuait déjà cette vérification ; les deux chemins ont désormais un comportement cohérent. [#108466](https://github.com/ClickHouse/ClickHouse/pull/108466) ([Groene AI](https://github.com/groeneai)).
* Correction d’une fuite d’identifiants : les anciens réglages `storage_aws_access_key_id`, `storage_aws_secret_access_key`, `storage_catalog_credential` et `storage_auth_header` du moteur de base de données `DataLakeCatalog` s’affichaient en plaintext dans `system.databases.engine_full` et `SHOW CREATE DATABASE`. Ils sont désormais masqués sous la forme `[HIDDEN]`. [#108470](https://github.com/ClickHouse/ClickHouse/pull/108470) ([Groene AI](https://github.com/groeneai)).
* Correction de l’identification des utilisateurs `ssl_certificate` afin qu’un unique joker `*` corresponde exactement à un seul composant de nom (RFC 6125 6.4.3). Auparavant, un joker dans un sujet SAN `CN` ou `DNS:` (par exemple `*.corp.example.com`) correspondait aussi à des noms comportant plusieurs libellés, tels que `evil.deep.corp.example.com`, permettant au détenteur d’un certificat pour un sous-domaine plus profond de s’authentifier comme l’utilisateur joker. La correspondance `URI:` SAN reste inchangée. [#108472](https://github.com/ClickHouse/ClickHouse/pull/108472) ([Groene AI](https://github.com/groeneai)).
* Correction d’une injection SQL dans le MySQL wire protocol : l’argument `SHOW TABLE STATUS LIKE` et la valeur `SET <mysql_setting>` envoyés via la MySQL interface (port 9004) sont désormais analysés puis à nouveau placés entre guillemets, au lieu d’être concaténés tels quels dans la query réécrite. Correction également de `KILL QUERY <id>` via la MySQL interface, qui ignorait silencieusement les identifiants de connexion à plusieurs chiffres. [#108474](https://github.com/ClickHouse/ClickHouse/pull/108474) ([Groene AI](https://github.com/groeneai)).
* Les valeurs sensibles transmises comme paramètres de chaîne de requête HTTP (par exemple la liaison de paramètre de query `param_*`, telle que `param_secret_key`/`param_aws_secret_access_key`, le paramètre `password` ou les paramètres `signature` de type S3) ne sont plus écrites telles quelles dans `system.text_log` ou les OpenTelemetry spans. La ligne de journal `Request URI` masque désormais les valeurs des paramètres dont les noms semblent sensibles, en les remplaçant par `[HIDDEN]`. [#108475](https://github.com/ClickHouse/ClickHouse/pull/108475) ([Groene AI](https://github.com/groeneai)).
* Application de la configuration `http_forbid_headers` pendant l’inférence de schéma pour la fonction de table `url` et le moteur de stockage `URL`. Auparavant, un en-tête interdit était quand même envoyé sur le réseau pendant l’inférence du schéma (par exemple avec le format `Regexp` ou `DESCRIBE`), et son response body pouvait être répercuté dans une erreur d’analyse, divulguant des secrets. Le filtre d’en-tête est désormais vérifié avant tout accès réseau sur ce chemin d’inférence, conformément au comportement existant de `urlCluster`. [#108476](https://github.com/ClickHouse/ClickHouse/pull/108476) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats erronés lors de l’utilisation de `SELECT ... SAMPLE ...` avec le query condition cache (réglage `use_query_condition_cache`, activé par défaut). [#108488](https://github.com/ClickHouse/ClickHouse/pull/108488) ([Groene AI](https://github.com/groeneai)).
* Correction d’un crash du serveur (dépassement de pile) provoqué par des expressions profondément imbriquées telles que `[[[ ... ]]]` ou `array(array( ... ))` lorsque `max_parser_depth` est défini sur une valeur élevée. [#108493](https://github.com/ClickHouse/ClickHouse/pull/108493) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un blocage indéfini du moteur de table `RabbitMQ` lors d’un `DROP TABLE` ou de l’arrêt du serveur lorsque le broker fermait la connexion AMQP en raison de heartbeats manqués, sans envoyer de TCP RST. Tous les appels bloquants de la boucle d’événements ont désormais un délai d’expiration de 30 secondes, de sorte que l’arrêt se termine toujours. [#108497](https://github.com/ClickHouse/ClickHouse/pull/108497) ([Aly Ayman](https://github.com/alyelmorsy-dataengineer)).
* Les requêtes secondaires exécutées dans le cadre de requêtes internes seront désormais journalisées comme des requêtes internes. [#108506](https://github.com/ClickHouse/ClickHouse/pull/108506) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Le moteur de table `ArrowFlight` et la fonction de table `arrowFlight` respectent désormais la liste d’autorisation `<remote_url_allow_hosts>`. Auparavant, l’hôte et le port de la connexion n’étaient pas validés, de sorte qu’une requête pouvait atteindre des hôtes ne figurant pas dans la liste d’autorisation. [#108507](https://github.com/ClickHouse/ClickHouse/pull/108507) ([Groene AI](https://github.com/groeneai)).
* Les commandes du MySQL wire protocol `COM_FIELD_LIST` (`mysql_list_fields`) et `COM_INIT_DB` (`USE database`) appliquent désormais le même contrôle d’accès que leurs équivalents SQL (`SHOW COLUMNS`/`DESCRIBE` et `USE`). Auparavant, elles pouvaient divulguer les noms de colonnes de tables pour lesquelles l’utilisateur ne disposait que d’autorisations partielles sur les colonnes, et changer la base de données courante sans le privilège `SHOW DATABASES`. [#108508](https://github.com/ClickHouse/ClickHouse/pull/108508) ([Groene AI](https://github.com/groeneai)).
* `http_forbid_headers` est désormais évalué sans tenir compte de la casse. Les noms d’en-tête HTTP ne sont pas sensibles à la casse, donc l’interdiction de `Authorization` bloque désormais aussi `authorization`, `AUTHORIZATION` et les autres variantes de casse. Les motifs `header_regexp` configurés sont désormais mis en correspondance sans tenir compte de la casse, sans nécessiter de drapeau `(?i)` explicite. [#108509](https://github.com/ClickHouse/ClickHouse/pull/108509) ([Groene AI](https://github.com/groeneai)).
* Correction d’un crash du serveur (faute de segmentation) pouvant se produire lorsqu’une requête distribuée référençait une CTE `MATERIALIZED` pas encore matérialisée comme table externe et que la source distante était créée de manière paresseuse. [#108547](https://github.com/ClickHouse/ClickHouse/pull/108547) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats erronés lorsque le cache des conditions de requête (`use_query_condition_cache = 1`) réutilisait une exclusion de marques dérivée d’un skip index pour une requête qui exécutait un ensemble différent de skip indexes, par exemple avec `use_skip_indexes = 0`, `ignore_data_skipping_indices` ou un mode `use_skip_indexes_for_disjunctions` différent. Les entrées de cache dérivées de skip indexes sont désormais indexées par l’ensemble effectif des skip indexes exécutés. [#108548](https://github.com/ClickHouse/ClickHouse/pull/108548) ([Groene AI](https://github.com/groeneai)).
* Correction de plusieurs bugs dans `changeYear`, `changeMonth`, `changeDay`, `changeHour`, `changeMinute` et `changeSecond` avec des arguments `DateTime64` : la colonne de résultat était créée avec l’échelle par défaut, codée en dur à 3, au lieu de l’échelle de l’argument, ce qui entraînait une `LOGICAL_ERROR` (`writeSlice expects same column types`) lorsque le résultat était passé à `arrayPushBack`/`arrayPushFront`/`arrayConcat` ; les entrées avec une précision à la nanoseconde (échelle 9) déclenchaient `DECIMAL_OVERFLOW` ; et les entrées sous-seconde antérieures à l’époque Unix renvoyaient une seconde calendaire incorrecte. Correction également de `timeSlots` sur `DateTime64`, qui ignorait l’échelle de l’argument optionnel `Size` dans son type de retour déclaré et renvoyait des timestamps incorrects pour l’échelle la plus élevée dans `Size`. [#108551](https://github.com/ClickHouse/ClickHouse/pull/108551) ([Groene AI](https://github.com/groeneai)). [#108681](https://github.com/ClickHouse/ClickHouse/pull/108681) ([Takumi Hara](https://github.com/takumihara)). [#108994](https://github.com/ClickHouse/ClickHouse/pull/108994) ([Groene AI](https://github.com/groeneai)).
* Corrige l’erreur `NOT_FOUND_COLUMN_IN_BLOCK` lorsqu’un prédicat composé reçoit un alias dans `GROUP BY` puis est référencé à nouveau, avec `enable_identifier_resolve_cache` activé (par défaut). [#108553](https://github.com/ClickHouse/ClickHouse/pull/108553) ([Groene AI](https://github.com/groeneai)).
* Corrige une erreur logique (`Equal values are not contiguous within the range assumed to be sorted`) lors de l’exécution de `DISTINCT` sur une lecture `STREAM` (`SELECT DISTINCT ... FROM table STREAM`). Les optimisations de lecture ordonnée ne sont plus appliquées aux lectures `STREAM`, qui produisent les lignes dans l’ordre de commit plutôt que dans l’ordre de la clé de tri. [#108568](https://github.com/ClickHouse/ClickHouse/pull/108568) ([Groene AI](https://github.com/groeneai)).
* Corrige les projections qui renvoyaient la valeur par défaut du type d’une colonne (par ex. `0`) au lieu de sa valeur `DEFAULT` déclarée (par ex. `-1`) dans deux cas : lors de la lecture d’une colonne ajoutée avec `ALTER TABLE ... ADD COLUMN ... DEFAULT` après la création de la projection (les lectures depuis la table de base étaient déjà correctes), et après expiration du `TTL` de la colonne sur une Wide part. [#108569](https://github.com/ClickHouse/ClickHouse/pull/108569) ([Shaohua Wang](https://github.com/tiandiwonder)). [#109013](https://github.com/ClickHouse/ClickHouse/pull/109013) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige une erreur `ReadBuffer is canceled. Can't read from it.` qui pouvait survenir lorsqu’un envoi vers S3 (par exemple une sauvegarde) était retenté après une erreur de lecture passagère. [#108573](https://github.com/ClickHouse/ClickHouse/pull/108573) ([Groene AI](https://github.com/groeneai)).
* Corrige `ATTACH PARTITION ... FROM`, qui rejetait les tables dont les clés primaires sont équivalentes mais déclarées différemment (l’une avec `PRIMARY KEY` explicite, l’autre implicite via `ORDER BY`). [#108590](https://github.com/ClickHouse/ClickHouse/pull/108590) ([Jordi Orihuela](https://github.com/jordiori)).
* Corrige l’échec de la lecture directe depuis l’index de texte lorsque plusieurs index de texte sont partiellement matérialisés. Corrige [#108530](https://github.com/ClickHouse/ClickHouse/issues/108530). [#108607](https://github.com/ClickHouse/ClickHouse/pull/108607) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige une fuite de métadonnées où `DESCRIBE loop('db', 'table')` et `DESCRIBE loop(<inner table function>)` contournaient la vérification d’accès `SHOW COLUMNS` / à la source, permettant à un utilisateur non privilégié de lire le schéma des colonnes d’une table. [#108624](https://github.com/ClickHouse/ClickHouse/pull/108624) ([Groene AI](https://github.com/groeneai)).
* Corrige la colonne virtuelle `_etag` pour les moteurs de table `S3Queue` et `AzureQueue` : elle était déclarée mais jamais renseignée, donc `SELECT _etag` renvoyait toujours une chaîne vide. Elle renvoie désormais l’ETag de l’objet, comme le moteur `S3` et la fonction de table `s3`. [#108625](https://github.com/ClickHouse/ClickHouse/pull/108625) ([Groene AI](https://github.com/groeneai)).
* Corrige la lecture des fichiers `Arrow`, `ArrowStream` et `ORC` basés sur Arrow dont la colonne timestamp utilise un décalage UTC numérique fixe (par ex. `+05:30`, `-08:00`, `00:00`) ou le marqueur non IANA `fixed` comme fuseau horaire, ce qui échouait auparavant avec `Cannot load time zone ...` (`BAD_ARGUMENTS`). [#108633](https://github.com/ClickHouse/ClickHouse/pull/108633) ([Groene AI](https://github.com/groeneai)).
* Corrige une exception (`LOGICAL_ERROR: Join is supported only for pipelines with one output port` ou `NOT_IMPLEMENTED: MergeJoinAlgorithm is not implemented for strictness Semi`) lorsque `join_algorithm = 'full_sorting_merge'` était utilisé pour une jointure `SEMI`/`ANTI`, y compris les jointures produites par la décorrélation d’une sous-requête corrélée `EXISTS`. `full_sorting_merge` refuse désormais les combinaisons de strictness/kind qu’il ne peut pas exécuter, afin que le planificateur se rabatte sur un autre algorithme activé ou indique que la jointure ne peut pas être exécutée. [#108658](https://github.com/ClickHouse/ClickHouse/pull/108658) ([Groene AI](https://github.com/groeneai)).
* Correction d’un heap buffer overflow lors de la construction d’un text index avec `positions = 1` sur un grand nombre de jetons courts distincts. [#108659](https://github.com/ClickHouse/ClickHouse/pull/108659) ([Groene AI](https://github.com/groeneai)).
* Une query qui lit depuis S3 ou écrit vers S3 et qui est annulée (par ex. par `KILL QUERY`) alors qu’une requête S3 est en cours est désormais signalée comme annulée au lieu de renvoyer une erreur réseau/S3 trompeuse. En particulier, un backup ou un restore vers S3 annulé signale désormais `BACKUP_CANCELLED`/`RESTORE_CANCELLED` dans `system.backups`. [#108673](https://github.com/ClickHouse/ClickHouse/pull/108673) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction d’un échec au démarrage : une base de données `DataLakeCatalog` créée par une ancienne version (25.12 ou antérieure) avec un `auth_header` mal formé ne pouvait pas être attachée après une mise à niveau vers 26.2 ou une version ultérieure, ce qui empêchait le serveur de démarrer. `auth_header` n’est désormais validé que lors de `CREATE`, et lors de `ATTACH`, le catalog est construit de manière différée à la première utilisation au lieu de l’être au démarrage ; ainsi, une seule base de données catalog mal configurée ou inaccessible ne bloque plus le démarrage du serveur. [#108674](https://github.com/ClickHouse/ClickHouse/pull/108674) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique (`Sort order of blocks violated`) lors d’une fusion, ainsi que de lectures incorrectes, lorsqu’un élément `LowCardinality` non nullable d’une colonne `Nullable(Tuple(...))` est utilisé comme sous-colonne (par exemple comme clé de tri). [#108679](https://github.com/ClickHouse/ClickHouse/pull/108679) ([Groene AI](https://github.com/groeneai)).
* Correction d’un possible crash (use-after-free) lorsque `SYSTEM FLUSH DISTRIBUTED` s’exécute en même temps qu’un `DROP TABLE` sur la même table `Distributed`. [#108684](https://github.com/ClickHouse/ClickHouse/pull/108684) ([Groene AI](https://github.com/groeneai)).
* Correction d’un crash dans le décodage Base64 de la clé de compte Azure, via `azureBlobStorage` (ainsi que les table functions et stockages Azure associés), lorsque la clé n’est pas un Base64 valide : un octet `>= 0x80` provoquait une lecture hors limites, et tout octet invalide entraînait un comportement indéfini. Les clés invalides sont désormais rejetées proprement. [#108716](https://github.com/ClickHouse/ClickHouse/pull/108716) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `NUMBER_OF_COLUMNS_DOESNT_MATCH` lorsqu’une subquery sur une table `Distributed` lit deux colonnes `ALIAS` ou plus qui se développent en une même expression (par exemple `a1 String ALIAS toString(x), a2 String ALIAS toString(x)`) et que la subquery alimente une query externe, par ex. `SELECT count() FROM (SELECT a1, a2 FROM dist GROUP BY a1, a2)`. [#108725](https://github.com/ClickHouse/ClickHouse/pull/108725) ([Groene AI](https://github.com/groeneai)).
* Correction de `CREATE OR REPLACE MATERIALIZED VIEW ... POPULATE`, qui laissait la nouvelle vue désabonnée de sa table source, ce qui ignorait silencieusement chaque ligne insérée après le remplacement. [#108728](https://github.com/ClickHouse/ClickHouse/pull/108728) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception (`Cannot find sharding key column`, et dans les builds de débogage et avec sanitizer, un arrêt du serveur) lorsque la clé de sharding d’une table `Distributed` est une expression que l’analyzer réduit à une constante, par exemple `if(1, toInt32(id), toInt32(id) + 1)`, avec `optimize_skip_unused_shards = 1`. [#108737](https://github.com/ClickHouse/ClickHouse/pull/108737) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique (`Bad cast from type DB::ColumnNullable to DB::ColumnString`) et de résultats potentiellement erronés lors de l’utilisation de `group_by_use_nulls` avec une clé de groupement constante `LowCardinality` dans `GROUPING SETS`/`ROLLUP`/`CUBE`. [#108771](https://github.com/ClickHouse/ClickHouse/pull/108771) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’élagage des partitions et de la clé primaire, qui se désactivait silencieusement lorsqu’une colonne de clé `LowCardinality(FixedString)` (ou `LowCardinality(Nullable(FixedString))`) était enveloppée dans une fonction de clé, par exemple `PARTITION BY sipHash64(k) % N` avec `WHERE k = 'literal'`. Ces requêtes analysaient alors toutes les partitions au lieu de les élaguer. [#108777](https://github.com/ClickHouse/ClickHouse/pull/108777) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique (arrêt du server dans les builds de débogage et avec sanitizer) lorsqu’un `INSERT ... SELECT` via une table `Alias`, ou vers une table `TimeSeries`, était annulé sans exception, par exemple avec `timeout_overflow_mode = 'break'`. [#108783](https://github.com/ClickHouse/ClickHouse/pull/108783) ([Groene AI](https://github.com/groeneai)). [#108796](https://github.com/ClickHouse/ClickHouse/pull/108796) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d’une erreur logique `Bad cast from type DB::ColumnSparse to DB::ColumnString` (arrêt du server dans les builds de débogage et avec sanitizer) lorsque `groupConcat` est appliqué à un `Tuple` dont l’élément `String` est stocké de façon sparse. [#108790](https://github.com/ClickHouse/ClickHouse/pull/108790) ([Groene AI](https://github.com/groeneai)).
* Correction de `TYPE_MISMATCH` dans `mapFilter`, `mapSort`, `mapReverseSort`, `mapPartialSort` et `mapConcat` lorsqu’une valeur `Map` contient une `Map` imbriquée avec `LowCardinality`, par ex. `mapFilter((k, v) -> 1, map('a'::LowCardinality(String), map('x'::LowCardinality(String), 'y')))`. [#108798](https://github.com/ClickHouse/ClickHouse/pull/108798) ([Groene AI](https://github.com/groeneai)).
* Correction du fait que `insert_quorum = 'auto'` ne rejetait pas immédiatement les inserts lorsque moins de la majorité des répliques étaient en vie. Ces inserts échouent désormais immédiatement avec `TOO_FEW_LIVE_REPLICAS` au lieu d’écrire une part locale puis d’expirer plus tard avec `UNKNOWN_STATUS_OF_INSERT`. [#108800](https://github.com/ClickHouse/ClickHouse/pull/108800) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Correction d’un bogue où la ligne `WITH TOTALS` d’un `JOIN` pouvait contenir des valeurs par défaut (telles que `0`) au lieu des valeurs constantes provenant d’une sous-requête constante sur un côté de la jointure. Le résultat incorrect n’apparaissait que pour certains ordres de jointure ou avec le paramètre `query_plan_join_swap_table`. [#108807](https://github.com/ClickHouse/ClickHouse/pull/108807) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’une faute de segmentation (déréférencement de pointeur nul) pouvant se produire lorsque l’arrêt du server s’exécutait en parallèle de l’arrêt d’une table `S3Queue`/`AzureQueue`. [#108810](https://github.com/ClickHouse/ClickHouse/pull/108810) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction d’un arrêt au démarrage (`Cannot allocate ThreadStack`, `EINVAL`) sur des builds glibc exécutés sur des CPU avec une grande taille de pile de signaux (par exemple Intel Sapphire Rapids / Granite Rapids avec un noyau compatible AMX), où la taille de la pile alternative de signaux n’était pas arrondie à un multiple de la taille de page. [#108813](https://github.com/ClickHouse/ClickHouse/pull/108813) ([Groene AI](https://github.com/groeneai)).
* Correction de l’échec occasionnel des requêtes distribuées avec `UNEXPECTED_PACKET_FROM_SERVER` (`expected TablesStatusResponse, got ProfileInfo`) lorsqu’une connexion laissée désynchronisée par une requête précédemment annulée était réutilisée depuis le pool. [#108854](https://github.com/ClickHouse/ClickHouse/pull/108854) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur logique (une exception dans les builds de release, un arrêt du serveur dans les builds de débogage et avec sanitizer) qui pouvait se produire lors d’un appel de fonction avec plus d’un argument `LowCardinality` sur une table distribuée, par exemple `concatAssumeInjective((SELECT toLowCardinality('p')), s)` utilisée comme clé `GROUP BY` avec la table function `remote`. Les messages étaient `Default functions implementation for LowCardinality is supported only with a single LowCardinality argument` ou `Expected the argument ... to have N rows, but it has M`. [#108871](https://github.com/ClickHouse/ClickHouse/pull/108871) ([Groene AI](https://github.com/groeneai)).
* Correction de `reinterpret(x, 'Decimal128(scale)')` (ainsi que des cibles `Decimal32`/`Decimal64`/`Decimal256`/`DateTime64`) qui produisait une colonne de résultat dont l’échelle interne était celle de la source au lieu de l’échelle cible demandée lorsque la source et la cible avaient le même type physique. Les valeurs étaient correctes, mais l’objet colonne était structurellement incohérent avec son type déclaré. [#108878](https://github.com/ClickHouse/ClickHouse/pull/108878) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` (`New empty part is about to materialize but the directory already exist`) qui pouvait provoquer l’arrêt du serveur dans les builds de débogage et avec sanitizer lorsqu’une opération `DROP`/`DETACH`/`MOVE`/`REPLACE PARTITION` sur une table `MergeTree` s’exécutait après qu’une précédente opération du même type avait été interrompue (par exemple à la suite d’une transaction annulée ou d’un crash) et avait laissé derrière elle un répertoire `tmp_empty_<part>` obsolète. Le répertoire obsolète est désormais récupéré au lieu de provoquer un échec. [#108879](https://github.com/ClickHouse/ClickHouse/pull/108879) ([Groene AI](https://github.com/groeneai)).
* Correction de ClickHouse Keeper, qui renvoyait un `dataLength = 0` incorrect dans le `Stat` des réponses `Create2`, ainsi que du client ClickHouse ZooKeeper, qui ne désérialisait pas le `Stat` des réponses `Create2`. [#108909](https://github.com/ClickHouse/ClickHouse/pull/108909) ([unintended](https://github.com/unintended)).
* Correction de `clickhouse-local`, qui rejetait une valeur d’option vide écrite juste après `=` (par exemple `--format_csv_null_representation=''`) ; il se comporte désormais comme `--format_csv_null_representation ""` et `SET format_csv_null_representation = ''`. [#108910](https://github.com/ClickHouse/ClickHouse/pull/108910) ([Vismay](https://github.com/vismaytiwari)).
* Correction d’une `LOGICAL_ERROR` (`Inconsistent AST formatting`) qui provoquait l’arrêt du serveur dans les builds de débogage et avec sanitizer lors du formatage d’un type de données `Tuple` mélangeant des éléments nommés et non nommés (par exemple `Tuple(a UInt8, UInt16)`). [#108915](https://github.com/ClickHouse/ClickHouse/pull/108915) ([Groene AI](https://github.com/groeneai)).
* Correction d’un défaut de segmentation lors de la fusion d’états d’agrégation `uniqExact` avec `GROUPING SETS`, `ROLLUP` ou `CUBE` et `max_threads > 1`. [#108928](https://github.com/ClickHouse/ClickHouse/pull/108928) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de résultats potentiellement erronés ou de lectures hors limites lorsqu’un `INSERT` est annulé après une erreur au milieu d’un lot (par exemple dans les tables `Buffer`, les insertions asynchrones ou les moteurs `Kafka`/`RabbitMQ`/`FileLog`) alors que la réplication paresseuse des colonnes (`enable_lazy_columns_replication`) est activée. [#108935](https://github.com/ClickHouse/ClickHouse/pull/108935) ([Groene AI](https://github.com/groeneai)).
* `join_any_take_last_row` est désormais respecté par tous les chemins de jointure basés sur le hachage pris en charge, y compris les jointures qui utilisent automatiquement le spilling to disk. [#108936](https://github.com/ClickHouse/ClickHouse/pull/108936) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction d’un bogue dans l’analyseur où `FINAL` sur une table d’un `JOIN` (par ex. `FROM t1 FINAL JOIN t2`) était incorrectement appliqué également aux autres tables jointes, ce qui pouvait ralentir ce type de requêtes. [#108979](https://github.com/ClickHouse/ClickHouse/pull/108979) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un `LOGICAL_ERROR` ("Impossible de trouver la colonne `__grouping_set` dans l'en-tête de MergingAggregatedTransform avec grouping sets", ou "Les informations de chunk n'étaient pas définies pour le chunk dans MergingAggregatedTransform") qui pouvait se produire, avec l'analyseur désactivé, pour un `UNION ALL`/`INTERSECT`/`EXCEPT` où une branche utilise `GROUP BY GROUPING SETS` avec des répliques parallèles et une autre branche utilise `FINAL`. [#109003](https://github.com/ClickHouse/ClickHouse/pull/109003) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` dans le planificateur automatique des répliques parallèles qui pouvait se produire lorsque `automatic_parallel_replicas_mode` est activé en même temps que `parallel_replicas_min_number_of_rows_per_replica` est supérieur à 0. [#109011](https://github.com/ClickHouse/ClickHouse/pull/109011) ([Groene AI](https://github.com/groeneai)).
* Corrige une allocation mémoire excessive lors de l'inférence de schéma du format `MsgPack` : une entrée corrompue dont l'en-tête de tableau/map/chaîne/binaire déclare un très grand nombre d'éléments ne provoque plus une allocation unique de plusieurs gigaoctets et est rejetée comme entrée malformée. Cela corrige une situation de mémoire insuffisante dans les builds de release (ainsi qu'un arrêt `allocation-size-too-big` avec les sanitizers). [#109019](https://github.com/ClickHouse/ClickHouse/pull/109019) ([Groene AI](https://github.com/groeneai)).
* Corrige le fait que `use_client_time_zone` était ignoré pour les littéraux de chaîne `DateTime`/`DateTime64` interprétés côté serveur (`INSERT` asynchrone, littéraux `SELECT`). Le client propage désormais son fuseau horaire local sous la forme de `session_timezone` lorsque `use_client_time_zone` est activé, afin que l'analyse côté serveur corresponde au chemin `INSERT` synchrone. [#109051](https://github.com/ClickHouse/ClickHouse/pull/109051) ([Groene AI](https://github.com/groeneai)).
* Corrige l'erreur `NOT_FOUND_COLUMN_IN_BLOCK` lorsque `query_plan_optimize_lazy_final` est activé en même temps qu'un filtre `WHERE` partiellement déplacé vers `PREWHERE` (via `optimize_move_to_prewhere_if_final`). [#109073](https://github.com/ClickHouse/ClickHouse/pull/109073) ([Groene AI](https://github.com/groeneai)).
* Corrige une erreur lors de l'utilisation d'un astérisque qualifié comme `b.*` dans une requête où `b` est un alias de table (ou de sous-requête/CTE) qui partage son nom avec une colonne non composite d'une autre table. Ces requêtes n'échouent plus et sélectionnent correctement toutes les colonnes de `b`. [#109078](https://github.com/ClickHouse/ClickHouse/pull/109078) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige une erreur logique `Block structure mismatch in JoinStep` (un arrêt du serveur dans les builds de débogage et avec sanitizer) lorsqu'une sous-requête corrélée est décorrélée en jointure et que la relation source porte plusieurs fois le même nom de colonne, par exemple `WITH t AS (SELECT number, * FROM numbers(3)) SELECT *, (SELECT t.number WHERE t.number >= 0) FROM t` avec `correlated_subqueries_default_join_kind = 'right'`. [#109114](https://github.com/ClickHouse/ClickHouse/pull/109114) ([Groene AI](https://github.com/groeneai)).
* Corrige un blocage où une requête lisant via le filesystem cache pouvait continuer à attendre un téléchargement en cours après avoir été annulée avec `KILL QUERY`, et où la suppression d'une refreshable materialized view — ou l'exécution de `SYSTEM STOP VIEW` sur celle-ci — dont le rafraîchissement était bloqué dans une telle attente pouvait elle aussi se bloquer. [#109116](https://github.com/ClickHouse/ClickHouse/pull/109116) ([Murphy](https://github.com/murphy-4o)).
* Corrige le fait que le paramètre `parallel_view_processing` était ignoré lors de l'insertion dans une table avec des materialized views — depuis la version 25.10, les vues s'exécutaient toujours en parallèle, quel que soit ce paramètre. [#109170](https://github.com/ClickHouse/ClickHouse/pull/109170) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige une incohérence du parseur où une liste de colonnes `INSERT` acceptait un sélecteur de colonnes qualifié écrit sous la forme `t.* LIKE '<pattern>'` / `t.* ILIKE '<pattern>'` mais rejetait sa forme canonique `t.COLUMNS('<regexp>')`, rompant l'aller-retour du format de requête (et provoquant un arrêt du serveur dans les builds de débogage et avec sanitizer). [#109176](https://github.com/ClickHouse/ClickHouse/pull/109176) ([Groene AI](https://github.com/groeneai)).
* Correction des incréments non monotones de `ProfileEvents` : les compteurs `NetworkReceiveBytes` et `AIOWriteBytes` pouvaient être incrémentés d'une valeur négative (avec bouclage vers une valeur énorme) en cas de délai d'attente sur socket ou d'échec AIO, et `MemoryOvercommitWaitTimeMicroseconds` était mesuré avec une horloge non monotone. [#109180](https://github.com/ClickHouse/ClickHouse/pull/109180) ([Azat Khuzhin](https://github.com/azat)).
* Correction de l'inférence de schéma pour les formats `Arrow`, `ArrowStream`, `Avro` ainsi que pour les lecteurs hérités `ORC` et `Parquet`, qui renvoyaient `Nullable(Tuple)` pour des colonnes de structure nullables alors que le type `Nullable(Tuple)` n'est pas autorisé (`allow_experimental_nullable_tuple_type` est désactivé). `DESCRIBE` renvoyait un type que `CREATE TABLE` rejetait, si bien que la création d'une table ou l'insertion de données à l'aide du schéma inféré échouait avec l'erreur `Nullable Tuple type is not allowed`. [#109185](https://github.com/ClickHouse/ClickHouse/pull/109185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d'un résultat incorrect pour les sous-requêtes corrélées `EXISTS` et les sous-requêtes scalaires lorsque la corrélation apparaissait uniquement dans la projection de la sous-requête, avec une clause `WHERE` non corrélée (la sous-requête pouvait s'évaluer à false / `NULL` pour chaque ligne). Corrige [#105760](https://github.com/ClickHouse/ClickHouse/issues/105760). [#109186](https://github.com/ClickHouse/ClickHouse/pull/109186) ([Dmitry Novik](https://github.com/novikd)).
* Correction de `CREATE USER ... HOST LIKE 'a', 'b'` (et de l'équivalent `ALTER USER`), qui ne conservait silencieusement que le premier motif. Tous les motifs `HOST LIKE` spécifiés sont désormais stockés dans la liste d'autorisation des hôtes de l'utilisateur. [#109187](https://github.com/ClickHouse/ClickHouse/pull/109187) ([Groene AI](https://github.com/groeneai)).
* Correction d'un index de texte défini sur `mapValues(map)` ou `mapKeys(map)` qui n'était silencieusement pas utilisé lorsqu'une table était interrogée via une table utilisant le moteur `Distributed` avec l'analyseur. L'index était utilisé pour la table locale et via les fonctions de table `cluster`/`remote`, mais une requête passant par une table utilisant le moteur `Distributed` l'ignorait (et échouait avec `INDEX_NOT_USED` sous `force_data_skipping_indices`). [#109188](https://github.com/ClickHouse/ClickHouse/pull/109188) ([Groene AI](https://github.com/groeneai)).
* Correction d'une fausse `LOGICAL_ERROR` (`There was an error on <host>: Cannot obtain error message (probably it's a bug)`) qui pouvait arrêter le serveur dans les builds de débogage et avec sanitizer lors de l'exécution d'une requête DDL sur une base de données `Replicated`, alors que son nœud d'état `finished` par hôte dans Keeper avait déjà été nettoyé. [#109192](https://github.com/ClickHouse/ClickHouse/pull/109192) ([Groene AI](https://github.com/groeneai)).
* Correction des ratios `SAMPLE` avec un exposant dont la magnitude déborde `Int32` (par ex. `SAMPLE 1e-3000000000`), qui étaient silencieusement traités comme `SAMPLE 1`. [#109197](https://github.com/ClickHouse/ClickHouse/pull/109197) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de la vérification d'accès pour `SYSTEM PREWARM PRIMARY INDEX CACHE ... ON CLUSTER`, qui exigeait à tort le privilège `SYSTEM PREWARM MARK CACHE` au lieu de `SYSTEM PREWARM PRIMARY INDEX CACHE`. [#109198](https://github.com/ClickHouse/ClickHouse/pull/109198) ([Raúl Marín](https://github.com/Algunenano)).
* Correction des requêtes `ALTER` qui échouaient pour les tables `MergeTree` créées avec un paramètre `disk` personnalisé (`SETTINGS disk = disk(...)`). Corrige [#63019](https://github.com/ClickHouse/ClickHouse/issues/63019). [#109199](https://github.com/ClickHouse/ClickHouse/pull/109199) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Correction d’un crash du serveur lorsque des états des fonctions d’agrégation `cramersV`, `cramersVBiasCorrected`, `contingency` ou `theilsU` issus d’un contexte de fenêtre (`OVER ()`) et d’une agrégation simple sont combinés via des opérations ensemblistes chaînées (`EXCEPT`, `INTERSECT`) ou des `UNION ALL` imbriqués, puis lus, par exemple via le combinateur `-Merge`. [#109200](https://github.com/ClickHouse/ClickHouse/pull/109200) ([Groene AI](https://github.com/groeneai)).
* Correction d’un résultat erroné pour `ANY JOIN` avec une condition `ON` constante (p. ex. `t1 ANY INNER JOIN t2 ON 1`) : la requête renvoyait le produit cartésien complet au lieu du résultat de `ANY JOIN`. [#109207](https://github.com/ClickHouse/ClickHouse/pull/109207) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’un crash du serveur lors d’un insert asynchrone avec déduplication lorsque `optimize_on_insert` vide le bloc inséré (par exemple, des lignes dont la somme est nulle dans `SummingMergeTree`). [#109229](https://github.com/ClickHouse/ClickHouse/pull/109229) ([Den Kalantaevskii](https://github.com/Diskein)).
* Correction de `SYSTEM DROP REPLICA` et `SYSTEM DROP DATABASE REPLICA ... FROM ZKPATH` afin qu’ils rejettent les chemins ZooKeeper vides ou limités à la racine au moment de l’analyse avec `BAD_ARGUMENTS`, acheminent les chemins Keeper auxiliaires vers le Keeper nommé et normalisent les chemins Keeper afin que les vérifications locales d’autoprotection ne puissent pas viser la mauvaise réplique ni contourner la protection prévue. [#109230](https://github.com/ClickHouse/ClickHouse/pull/109230) ([Groene AI](https://github.com/groeneai)).
* Correction de la priorité des paramètres S3 afin qu’un bloc de point de terminaison `<s3>` à portée d’URL prenne le pas sur les valeurs par défaut `<s3>` de niveau supérieur. [#109251](https://github.com/ClickHouse/ClickHouse/pull/109251) ([Bharat Nallan](https://github.com/bharatnc)).
* Correction d’un bogue où les valeurs `DEFAULT` des colonnes n’étaient pas appliquées pour `INSERT INTO TABLE FUNCTION` (par exemple `remote` ou `file`) avec des données `VALUES` intégrées lorsque le serveur analyse lui-même ces données intégrées (`send_table_structure_on_insert_with_inline_data = 0`). Un `NULL` explicite inséré dans une colonne non `Nullable` avec un `DEFAULT` devenait `0` au lieu de la valeur par défaut déclarée. Le comportement est désormais identique à celui d’un `INSERT` dans une table simple et du protocole HTTP. [#109258](https://github.com/ClickHouse/ClickHouse/pull/109258) ([Groene AI](https://github.com/groeneai)).
* Correction de l’échec de `CREATE TABLE ... AS SELECT` depuis `s3Cluster` (et d’autres fonctions de table de cluster comme `fileCluster`/`urlCluster`) avec `NOT_FOUND_COLUMN_IN_BLOCK` dans une base de données `Replicated`. [#109266](https://github.com/ClickHouse/ClickHouse/pull/109266) ([Groene AI](https://github.com/groeneai)).
* Correction de `SHOW TABLES` et `SELECT ... FROM system.tables`, qui renvoyaient des résultats différents pour les bases de données de catalogue de data lake : les tables que ClickHouse ne peut pas lire sont désormais masquées de manière cohérente dans les deux cas. [#109273](https://github.com/ClickHouse/ClickHouse/pull/109273) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Correction d’un bogue où la fusion d’une table `MergeTree` avec des projections alors que le paramètre `enable_block_number_column` ou `enable_block_offset_column` est activé produisait des parties de projection contenant une colonne parasite `_block_number`/`_block_offset`. La partie de projection fusionnée ne correspondait alors plus à la définition de la projection ni aux parties de projection produites par insert, de sorte que `CHECK TABLE` et `OPTIMIZE ... DRY RUN` la signalaient comme corrompue (`CORRUPTED_DATA`). [#109284](https://github.com/ClickHouse/ClickHouse/pull/109284) ([Groene AI](https://github.com/groeneai)).
* Autorise la lecture d’un `array` Avro d’enregistrements `{key, value}` à deux champs dans une colonne `Map` de ClickHouse. Il s’agit de l’encodage produit par Iceberg et Spark pour un `MAP<K, V>` avec une clé non chaîne (les maps natives d’Avro ne prennent en charge que les clés de type chaîne). Auparavant, un tel fichier pouvait être lu comme `Array(Tuple(key, value))`, mais pas comme `Map(K, V)`, ce qui échouait avec `Type Map(...) is not compatible with Avro array`. [#109289](https://github.com/ClickHouse/ClickHouse/pull/109289) ([Groene AI](https://github.com/groeneai)).
* Correction d’un crash du serveur sur `CREATE HYPOTHETICAL INDEX ... TYPE set` (et `ngrambf_v1`/`tokenbf_v1`) lorsque l’argument d’index requis était omis. Ces instructions sont désormais rejetées avec une erreur explicite. [#109294](https://github.com/ClickHouse/ClickHouse/pull/109294) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` (`Current component is empty`) qui pouvait être déclenchée par des opérations de mutation telles que `KILL MUTATION` sur une table `MergeTree` stockant ses métadonnées dans Keeper, lorsque le paramètre serveur `enforce_keeper_component_tracking` est activé. [#109297](https://github.com/ClickHouse/ClickHouse/pull/109297) ([Groene AI](https://github.com/groeneai)).
* Correction de la lecture de timestamps `ORC` au-delà d’environ l’année 2262 dans une colonne `DateTime64` avec une échelle inférieure à 9. Le lecteur `ORC` natif convertissait auparavant chaque timestamp via un intermédiaire fixe `DateTime64(9)`, ce qui entraînait un dépassement de capacité de `Int64` à l’échelle de la nanoseconde et rejetait ces valeurs avec `VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE`, même lorsque l’échelle `DateTime64` demandée (par exemple `DateTime64(6)`, telle que produite par Iceberg) peut représenter la valeur. Les timestamps sont désormais lus directement à l’échelle demandée, et `date_time_overflow_behavior` est respecté même lorsque l’échelle cible ne peut pas contenir la valeur. [#109302](https://github.com/ClickHouse/ClickHouse/pull/109302) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-local`, lorsqu’il agit comme serveur (après `SYSTEM START LISTEN HTTP`), utilise désormais le format de sortie par défaut `TabSeparated` pour les connexions HTTP, comme `clickhouse-server`, au lieu de la valeur par défaut interactive `PrettyCompact`. Cela corrige la connexion à `clickhouse-local` via HTTP avec des pilotes tels que `clickhouse-connect`. La session interactive dans le terminal continue d’afficher les résultats en `PrettyCompact`. [#109362](https://github.com/ClickHouse/ClickHouse/pull/109362) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un échec transitoire `Code: 499 ... InvalidPart` (`S3_ERROR`) lors des téléversements multipart vers S3. MinIO peut brièvement signaler comme manquante une part qui vient d’être téléversée lors de `CompleteMultipartUpload` ; cette erreur fait désormais l’objet de nouvelles tentatives, comme le `NoSuchKey` déjà géré, dans les limites de `s3_max_unexpected_write_error_retries`. [#109364](https://github.com/ClickHouse/ClickHouse/pull/109364) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `UNKNOWN_IDENTIFIER` sur `ALTER TABLE ... DROP COLUMN` lorsqu’une autre colonne possède une expression `DEFAULT` ou `MATERIALIZED` qui définit et référence un alias inline. [#109374](https://github.com/ClickHouse/ClickHouse/pull/109374) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une data race (et du rare crash qui en résultait) dans la fusion parallèle des aggregate states `uniqExact` avec des sets à deux niveaux, qui pouvait se produire avec `GROUPING SETS`, `ROLLUP` et `CUBE`. [#109389](https://github.com/ClickHouse/ClickHouse/pull/109389) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur (`NOT_FOUND_COLUMN_IN_BLOCK`, ou `std::bad_function_call` dans les versions plus anciennes) lors de l’exécution de `CREATE TABLE ... ON CLUSTER ... AS SELECT` lisant une table `Distributed` sur un cluster comportant au moins deux shards. [#109407](https://github.com/ClickHouse/ClickHouse/pull/109407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des fusions pour les tables avec `TTL ... GROUP BY` (rollup) : les parts déjà entièrement agrégées pouvaient être replanifiées pour fusion indéfiniment, et les tables avec des colonnes `MATERIALIZED` ou des colonnes virtuelles persistantes activées étaient traitées incorrectement — ces colonnes sont désormais agrégées avec `any`. Clôt [#105647](https://github.com/ClickHouse/ClickHouse/issues/105647). [#109410](https://github.com/ClickHouse/ClickHouse/pull/109410) ([Mikhail Artemenko](https://github.com/Michicosun)). [#109532](https://github.com/ClickHouse/ClickHouse/pull/109532) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Correction de `IN` avec une simple colonne de type Array comme argument de droite, qui renvoyait silencieusement un résultat incorrect (toujours faux) ou levait une exception, afin que `x IN arr` se comporte comme `has(arr, x)`. [#109416](https://github.com/ClickHouse/ClickHouse/pull/109416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des erreurs `UNKNOWN_IDENTIFIER` sur les opérations `ALTER TABLE` (`RENAME`/`ADD`/`MODIFY COLUMN`, ainsi que `MATERIALIZE INDEX` sur une table avec des parts récemment insérées) pour les tables `MergeTree` avec un index min-max implicite sur les colonnes virtuelles persistantes `_block_number`/`_block_offset` (activé par `add_minmax_index_for_block_number_column`/`add_minmax_index_for_block_offset_column`). [#109428](https://github.com/ClickHouse/ClickHouse/pull/109428) ([Groene AI](https://github.com/groeneai)). [#110236](https://github.com/ClickHouse/ClickHouse/pull/110236) ([Groene AI](https://github.com/groeneai)).
* Correction d'une `LOGICAL_ERROR` dans `arrayFold` sur un argument `Array(LowCardinality(T))` non constant (par exemple `arrayFold((acc, x) -> acc + x, materialize([1, 2, 3]::Array(LowCardinality(Int64))), toInt64(0))`), qui échouait avec `Arguments of 'plus' have incorrect data types` (provoquant un arrêt du serveur dans les builds debug et avec sanitizer). [#109462](https://github.com/ClickHouse/ClickHouse/pull/109462) ([Groene AI](https://github.com/groeneai)).
* Correction de `CHECK TABLE` sur une table `ReplicatedMergeTree` qui signalait une part saine comme corrompue lorsqu'une erreur ZooKeeper transitoire pouvant donner lieu à un réessai (par exemple une perte de connexion) survenait pendant la vérification ; ces erreurs sont désormais remontées comme des erreurs de requête pouvant donner lieu à un réessai. [#109465](https://github.com/ClickHouse/ClickHouse/pull/109465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de segfaults dans `groupArrayLastMerge` et la fonction d'agrégation `largestTriangleThreeBuckets` : la désérialisation des états de fonctions d'agrégation est désormais validée, de sorte qu'un état corrompu ne provoque pas d'accès mémoire hors limites. [#109485](https://github.com/ClickHouse/ClickHouse/pull/109485) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). [#109492](https://github.com/ClickHouse/ClickHouse/pull/109492) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de la non-application de la limite globale `max_rows_in_join` / `max_bytes_in_join` pour l'algorithme de jointure `parallel_hash`, où une requête avec `join_overflow_mode = 'throw'` pouvait réussir silencieusement au lieu de lever `SET_SIZE_LIMIT_EXCEEDED`. [#109488](https://github.com/ClickHouse/ClickHouse/pull/109488) ([Hechem Selmi](https://github.com/m-selmi)).
* Correction de la lecture de tables Paimon partitionnées par une colonne `BIGINT` dont la valeur ne tenait pas dans `Int32`. Ces valeurs de partition étaient tronquées (par exemple `9223372036854775807` devenait `-1`), ce qui produisait un chemin de partition incorrect et échouait avec une erreur de système de fichiers. [#109510](https://github.com/ClickHouse/ClickHouse/pull/109510) ([Groene AI](https://github.com/groeneai)).
* Correction d'un crash lors de la lecture de tables Iceberg avec des fichiers de suppression par égalité. Si une colonne était Nullable dans le fichier de suppression par égalité mais non Nullable dans le schéma de table (ou inversement), les valeurs lues depuis le fichier de suppression étaient insérées dans une colonne d'un type différent via un cast non vérifié (confusion de type de colonne), ce qui corrompait la colonne et faisait planter le serveur. [#109551](https://github.com/ClickHouse/ClickHouse/pull/109551) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction du fait que `connect_timeout` ainsi que les timeouts de lecture et d'écriture MySQL n'étaient pas pris en compte : une tentative de connexion à un serveur MySQL qui ne répondait pas pouvait rester bloquée plus de deux minutes même avec `connect_timeout = 1`, car les signaux périodiques du Sampling query profiler réinitialisaient en permanence l'échéance interne du poll du client MySQL. [#109592](https://github.com/ClickHouse/ClickHouse/pull/109592) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d’un `LOGICAL_ERROR` (`creation_csn is not set while removal_csn is set to 1`) qui pouvait être levé lorsqu’un `TRUNCATE` non transactionnel s’exécutait en parallèle d’une transaction non validée ayant inséré dans la même table. Un tel `TRUNCATE` ne supprime désormais plus les parts créées par des transactions pas encore validées. [#109598](https://github.com/ClickHouse/ClickHouse/pull/109598) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Correction des erreurs `TYPE_MISMATCH` lors de la lecture de colonnes `Parquet` de type struct dont la nullabilité physique diffère du type ClickHouse demandé : un groupe `Parquet` non nullable peut désormais être lu comme `Nullable(Tuple(...))`, et le lecteur `Parquet` natif peut lire une struct physiquement nullable (un groupe `Parquet` `OPTIONAL`) comme `Nullable(Tuple(...))`. [#109615](https://github.com/ClickHouse/ClickHouse/pull/109615) ([Groene AI](https://github.com/groeneai)). [#109898](https://github.com/ClickHouse/ClickHouse/pull/109898) ([Groene AI](https://github.com/groeneai)).
* Correction d’une perte silencieuse de données lorsqu’un `INSERT ... VALUES` dans un flux multi-requêtes est suivi d’un commentaire SQL final (par exemple `VALUES (1) -- comment`) dans le chemin d’analyse des insertions intégrées côté serveur (`send_table_structure_on_insert_with_inline_data = 0`). Le commentaire final était interprété comme des données de ligne au-delà du `;` final, ce qui faisait que les requêtes suivantes du flux étaient ignorées silencieusement. [#109643](https://github.com/ClickHouse/ClickHouse/pull/109643) ([Groene AI](https://github.com/groeneai)).
* Correction d’un segfault lorsqu’une requête arrive dans un court intervalle pendant l’arrêt du serveur après une erreur au démarrage. [#109675](https://github.com/ClickHouse/ClickHouse/pull/109675) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction d’index de skipping obsolètes (`text`, `bloom_filter`, etc.) et de projections après la matérialisation de lightweight updates avec `ALTER TABLE ... APPLY PATCHES`. Auparavant, les fichiers d’index et de projection qui dépendent d’une colonne mise à jour par patch restaient inchangés, de sorte que les requêtes qui les utilisaient pouvaient renvoyer des résultats erronés (par ex. `hasToken` omettant une ligne mise à jour, ou une projection renvoyant des agrégats obsolètes une fois la patch part consommée supprimée). [#109709](https://github.com/ClickHouse/ClickHouse/pull/109709) ([Groene AI](https://github.com/groeneai)).
* Correction de `system.tables`, qui ignorait silencieusement certaines bases de données pour les utilisateurs disposant d’autorisations par base lorsque la requête ne lisait que les colonnes `name`/`database`. Introduit dans la version 26.2. [#109723](https://github.com/ClickHouse/ClickHouse/pull/109723) ([Samay Sharma](https://github.com/samay-sharma)).
* Correction d’un `LOGICAL_ERROR` lors de l’écriture d’une colonne `LowCardinality(Time)` au format `Arrow` avec `output_format_arrow_low_cardinality_as_dictionary = 1`. [#109730](https://github.com/ClickHouse/ClickHouse/pull/109730) ([Groene AI](https://github.com/groeneai)).
* Correction de `ObjectStorageQueue`/`AzureQueue` (et de la table function `azureBlobStorage`) qui ignoraient silencieusement des objets lorsque l’object storage renvoyait une page de listing vide accompagnée d’un token de continuation. Azure Blob Storage se comporte ainsi (par ex. lorsqu’un listing franchit une limite de partition interne), et l’itérateur de liste asynchrone traitait la page vide comme la fin du listing et abandonnait le token. Il suit désormais le token de continuation. [#109761](https://github.com/ClickHouse/ClickHouse/pull/109761) ([Gal Ben Moshe](https://github.com/GalBenMoshe)).
* Correction du partition pruning qui ne renvoyait aucune ligne pour les Iceberg tables partitionnées par une colonne d’horodatage (`DateTime64`). [#109764](https://github.com/ClickHouse/ClickHouse/pull/109764) ([Den Kalantaevskii](https://github.com/Diskein)).
* Correction d’une exception `ILLEGAL_COLUMN` dans la fonction `conv` pour les arguments `FixedString` ; ils sont désormais correctement convertis en `String`. Closes [#109670](https://github.com/ClickHouse/ClickHouse/issues/109670). [#109771](https://github.com/ClickHouse/ClickHouse/pull/109771) ([hp](https://github.com/hp77-creator)).
* La fonction `getClientHTTPHeader` traite désormais les noms d’en-tête comme insensibles à la casse, conformément à la [RFC 9110](https://www.rfc-editor.org/info/rfc9110/#section-5.1) ; en particulier, l’en-tête `authorization` est désormais filtré quelle que soit la casse. Clôt [#103957](https://github.com/ClickHouse/ClickHouse/issues/103957). [#109791](https://github.com/ClickHouse/ClickHouse/pull/109791) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Correction de `max_execution_time` (avec `timeout_overflow_mode = 'throw'`) qui, dans certains cas, n’annulait jamais une requête : lorsque le surveillant interne des délais d’expiration attendait déjà une requête avec une échéance plus lointaine, une requête avec une échéance plus proche enregistrée ensuite pouvait être entièrement ignorée, ce qui lui permettait de s’exécuter bien au-delà de sa limite de temps. [#109792](https://github.com/ClickHouse/ClickHouse/pull/109792) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction du nom de fichier des fichiers de métadonnées Iceberg compressés avec gzip. ClickHouse les écrivait sous la forme `v{N}.gzip.metadata.json` (le jeton HTTP `Content-Encoding`), alors que la spécification Iceberg attend l’extension `gz`, soit `v{N}.gz.metadata.json`. En conséquence, Spark et les autres lecteurs du catalogue Hadoop ne pouvaient pas trouver les métadonnées écrites par ClickHouse. ClickHouse écrit désormais `v{N}.gz.metadata.json` et continue à lire l’ancien nom `gzip` pour assurer la rétrocompatibilité. [#109812](https://github.com/ClickHouse/ClickHouse/pull/109812) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `NOT_IMPLEMENTED` ("Method getDataAt is not supported for Nullable(String)") qui pouvait être levée par une jointure avec `enable_join_runtime_filters = 1` (activé par défaut depuis la version 26.2) lorsque la clé de jointure côté build était `LowCardinality(Nullable(...))` avec des valeurs `NULL` et que le filtre d’exécution se rabattait sur son bloom filter. [#109824](https://github.com/ClickHouse/ClickHouse/pull/109824) ([Groene AI](https://github.com/groeneai)).
* Les moteurs de base de données externes (par ex. `PostgreSQL`) ne poussent plus les comparaisons de plage (`>=`, `>`, `<=`, `<`) sur les colonnes `UUID`. ClickHouse et les bases de données externes ordonnent les UUID différemment, de sorte que ce pushdown supprimait silencieusement des lignes du résultat ; ces prédicats sont désormais évalués par ClickHouse à la place. [#109833](https://github.com/ClickHouse/ClickHouse/pull/109833) ([Vismay](https://github.com/vismaytiwari)).
* Correction d’un crash du serveur lorsqu’une expression lambda était passée là où une fonction d’ordre supérieur attend une valeur concrète (par exemple l’accumulateur de `arrayFold`, comme dans `arrayFold(lambda, arr, another_lambda)`). Ces requêtes sont désormais rejetées avec `ILLEGAL_TYPE_OF_ARGUMENT` au lieu de provoquer un crash lorsque `enable_analyzer = 0`. [#109840](https://github.com/ClickHouse/ClickHouse/pull/109840) ([Groene AI](https://github.com/groeneai)).
* Correction de la fonction de table `icebergLocal` et du moteur `IcebergLocal`, qui déclaraient `azure` au lieu de `local` comme type de stockage objet, ce qui les faisait échouer à la vérification du type de disque (`Disk type doesn't match`) lorsqu’ils étaient utilisés avec un disque local via `SETTINGS disk = '...'`. [#109872](https://github.com/ClickHouse/ClickHouse/pull/109872) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Correction de la lecture des tables Iceberg partitionnées plusieurs fois par la même colonne source (par exemple `PARTITIONED BY (hours(ts), ts)`). Ces tables échouaient auparavant avec `Cannot add column ...: column with this name already exists (ILLEGAL_COLUMN)`. [#109895](https://github.com/ClickHouse/ClickHouse/pull/109895) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats de requête erronés causés par l’index de clé primaire, qui élaguait incorrectement des granules pour les tables avec une colonne clé inversée (`DESC`) lorsque les parts n’avaient pas de marque finale (granularité non adaptative, `index_granularity_bytes = 0`). [#109901](https://github.com/ClickHouse/ClickHouse/pull/109901) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de `generateRandomStructure`, qui produisait occasionnellement une chaîne de structure invalide avec deux types de données concaténés (par exemple `Decimal32(7)IPv4`) lorsque l'imbrication des types dépassait la limite interne de profondeur, ce qui rendait le résultat impossible à parser. [#109928](https://github.com/ClickHouse/ClickHouse/pull/109928) ([Groene AI](https://github.com/groeneai)).
* Correction de l'erreur `NOT_IMPLEMENTED` (`Method getDataAt is not supported for Nullable(String) in case if value is NULL`) lorsqu'un index `text` est construit sur `Array(LowCardinality(Nullable(String)))` (y compris les champs `Nested` stockés ainsi) et qu'un tableau indexé contient un élément `NULL`. Les éléments `NULL` du tableau sont désormais ignorés lors de la construction de l'index, comme pour `Array(Nullable(String))`. [#110055](https://github.com/ClickHouse/ClickHouse/pull/110055) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats erronés lorsqu'un skip index `minmax` est construit sur une colonne `LowCardinality(Nullable(...))` : les prédicats `WHERE`/`PREWHERE`/`HAVING ... IS NULL` poussés vers le stockage éliminaient auparavant tous les granules et renvoyaient 0 ligne, alors même que la colonne contenait des valeurs `NULL`. [#110061](https://github.com/ClickHouse/ClickHouse/pull/110061) ([Groene AI](https://github.com/groeneai)).
* Correction de `distinct_overflow_mode = 'break'` : `DISTINCT` renvoie désormais le résultat partiel accumulé jusqu'à la limite et cesse de lire la source, comme indiqué dans la documentation. Auparavant, le chunk qui dépassait `max_rows_in_distinct` / `max_bytes_in_distinct` était ignoré (résultats tronqués ou vides) et la requête continuait à lire et à insérer dans l'ensemble de hachage jusqu'à la fin de l'entrée, ce qui pouvait aboutir à `MEMORY_LIMIT_EXCEEDED`. [#110075](https://github.com/ClickHouse/ClickHouse/pull/110075) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Correction d'une logical error `ChunkInfoRowNumbers does not exist` sur `OPTIMIZE TABLE` d'une Iceberg table contenant un fichier de données dans un format autre que Parquet (par ex. `ORC`) plus récent que tous les position delete files. [#110107](https://github.com/ClickHouse/ClickHouse/pull/110107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `max_bytes_in_distinct` et `max_bytes_in_set` : les clés de type chaîne sont stockées dans une arena qui n'était pas prise en compte par les contrôles de limite, si bien que `DISTINCT` / `IN` sur des clés de chaîne pouvaient utiliser une quantité de mémoire dépassant la limite en octets de l'intégralité du payload des clés (sans borne sur leur longueur). Les limites tiennent désormais compte de l'arena, conformément à la documentation ; les queries sur des clés de chaîne proches de la limite en octets peuvent maintenant l'atteindre plus tôt (à juste titre). [#110120](https://github.com/ClickHouse/ClickHouse/pull/110120) ([Sergey Kuznetsov](https://github.com/skuznetsov-clickhouse)).
* Correction d'une `LOGICAL_ERROR` (`Bad cast from type ColumnLowCardinality to ColumnString`) lorsque `identity` (ou le résultat d'une scalar subquery) encapsule une valeur contenant un `LowCardinality` imbriqué et que la requête utilise `WITH TOTALS`/`WITH ROLLUP`. [#110138](https://github.com/ClickHouse/ClickHouse/pull/110138) ([Groene AI](https://github.com/groeneai)).
* Correction de la lecture des fichiers `Npy` avec des dimensions internes de taille nulle : le nombre de lignes matérialisées et les résultats de `count`, optimisés ou non, sont désormais cohérents. [#110146](https://github.com/ClickHouse/ClickHouse/pull/110146) ([Yanjun Qiu](https://github.com/qiuyanjun888)).
* Correction d'une explosion quadratique du temps d'exécution (et d'une absence de prise en compte de `max_execution_time`) dans aggregation in order lors d'un regroupement sur plusieurs clés dont le sort order n'est qu'un préfixe de la grouping key. [#110159](https://github.com/ClickHouse/ClickHouse/pull/110159) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une logical error (`Unexpected number of columns in result sample block`) lorsqu'un filtre contenant une correlated subquery (par exemple `exists((SELECT ...))`) est optimisé avec `convert_query_to_cnf` ou `optimize_and_compare_chain`. [#110187](https://github.com/ClickHouse/ClickHouse/pull/110187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une exception (`UNION mode UNION_DEFAULT must be normalized`) lorsqu'une mutation `DELETE` ou `ALTER UPDATE` utilisait une opération ensembliste (`UNION`/`UNION ALL`/`UNION DISTINCT`/`EXCEPT`/`INTERSECT`) à l'intérieur d'une sous-requête dans sa condition `WHERE` ou dans une attribution `UPDATE`. [#110196](https://github.com/ClickHouse/ClickHouse/pull/110196) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur logique `ReadBuffer is canceled. Can't read from it.` (arrêt du serveur dans les builds debug/sanitizer) qui pouvait se produire lors de la lecture d'une archive zip (par ex. pendant `RESTORE` depuis une sauvegarde zip) après l'échec en cours de flux d'une lecture précédente de la même archive. [#110197](https://github.com/ClickHouse/ClickHouse/pull/110197) ([Groene AI](https://github.com/groeneai)).
* Correction d'un arrêt lent du serveur et d'un `KILL MUTATION` qui ne répondait pas lorsqu'une mutation avec `x IN (subquery)` construisait le Set de la sous-requête pendant l'analyse de la clé primaire ; la construction du Set est désormais annulée rapidement. [#110198](https://github.com/ClickHouse/ClickHouse/pull/110198) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Keeper rejette désormais les paramètres de coordination `max_requests_batch_size` et `max_requests_append_size` lorsqu'ils sont définis à `0`, au lieu de rester bloqué dans une boucle infinie d'append-entries dans une configuration multi-nœuds. [#110200](https://github.com/ClickHouse/ClickHouse/pull/110200) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur `NOT_FOUND_COLUMN_IN_BLOCK` lors de l'utilisation de `GROUP BY ALL` sur une expression tuple avec `ORDER BY`. [#110206](https://github.com/ClickHouse/ClickHouse/pull/110206) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur `NOT_FOUND_COLUMN_IN_BLOCK` sur `INSERT` dans une table ayant une contrainte `CHECK` qui référence une sous-colonne (telle que `x.null` d'une colonne `Nullable` ou `arr.size0` d'un `Array`). [#110208](https://github.com/ClickHouse/ClickHouse/pull/110208) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la lecture des tables Iceberg dont l'ordre de tri par défaut référence une colonne nécessitant des guillemets (par ex. `@timestamp`). Ces tables étaient illisibles, car le `ORDER BY` de stockage synthétisé était construit à partir du nom brut de la colonne et échouait à l'analyse avec `SYNTAX_ERROR`. [#110233](https://github.com/ClickHouse/ClickHouse/pull/110233) ([Groene AI](https://github.com/groeneai)).
* Correction de `system.tables` pour une base de données `DataLakeCatalog` (Iceberg/Glue), qui interrompait toute la requête, ou omettait silencieusement des tables, lorsque les métadonnées d'une seule table ne pouvaient pas être résolues. Une telle table reste désormais listée par nom avec des valeurs par défaut/`NULL` pour les colonnes nécessitant l'objet de stockage ouvert (`engine`, `total_rows`, etc.), quelle que soit la valeur de `database_datalake_require_metadata_access`. L'accès direct à la table défectueuse signale toujours l'erreur. [#110242](https://github.com/ClickHouse/ClickHouse/pull/110242) ([Groene AI](https://github.com/groeneai)).
* Correction d'un possible plantage (heap-buffer-overflow) lorsqu'une colonne d'état de fonction d'agrégation de la famille `quantileTDigest` était utilisée comme clé `GROUP BY` et sérialisée de manière concurrente par plusieurs threads. [#110263](https://github.com/ClickHouse/ClickHouse/pull/110263) ([Groene AI](https://github.com/groeneai)).
* Correction de l'échec de `INSERT` dans une table Microsoft Fabric / OneLake `DataLakeCatalog` avec `IncorrectEndpointError` (HTTP 400) en dirigeant les écritures ADLS Gen2 (DFS) vers l'hôte de l'endpoint `.dfs` plutôt que vers l'hôte `.blob`. Remarque : avec `remote_url_allow_hosts`, les deux hôtes Fabric `.blob` (lecture) et `.dfs` (écriture) doivent être autorisés pour `INSERT`. [#110290](https://github.com/ClickHouse/ClickHouse/pull/110290) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Correction d’un arrêt du serveur lors de l’analyse de certaines requêtes PRQL (`SET dialect = 'prql'`). Une panique dans le compilateur `prqlc` interrompait le processus au lieu d’être signalée comme une erreur de requête. [#110316](https://github.com/ClickHouse/ClickHouse/pull/110316) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats de requête silencieusement erronés lorsqu’une projection part écrite avant la modification de l’ensemble des colonnes de la projection (par exemple après une mise à niveau entre des versions qui matérialisent différemment la source d’une colonne `ALIAS`, ou après qu’un `ALTER TABLE ... MODIFY COLUMN` a redéfini une colonne `ALIAS` utilisée par une projection) était lue via la projection ou fusionnée : la colonne manquante était remplie avec des valeurs par défaut au lieu des données réelles. Ces parts sont désormais lues depuis la table de base, et les fusions reconstruisent la projection à partir des données de base. [#110328](https://github.com/ClickHouse/ClickHouse/pull/110328) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction du non-respect de `max_execution_time` par `ORDER BY ... WITH FILL` et de sa lenteur à s’annuler lors de la génération d’une grande plage de remplissage (en particulier avec `INTERPOLATE`). [#110332](https://github.com/ClickHouse/ClickHouse/pull/110332) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur logique (un arrêt du serveur dans les builds debug/sanitizer) lorsqu’un `ALTER` à plusieurs commandes, tel que `UPDATE ..., DELETE ...`, était exécuté sur une table Iceberg. De telles mutations sont désormais rejetées avec une erreur `NOT_IMPLEMENTED` explicite. [#110347](https://github.com/ClickHouse/ClickHouse/pull/110347) ([Groene AI](https://github.com/groeneai)).
* Correction d’un bogue du parser où `COMMENT` était interprété à tort comme un alias implicite lorsqu’une requête `SELECT` se terminait directement après un simple identifiant de table (par ex. `... FROM t COMMENT 'x'`), provoquant une erreur de syntaxe trompeuse au lieu d’appliquer le commentaire à la vue ou à la table. [#110372](https://github.com/ClickHouse/ClickHouse/pull/110372) ([Aditya Kumar](https://github.com/adityaksolves)).
* Correction d’un plantage du serveur (débordement natif de pile) lors de la copie ou de la destruction d’un littéral `Array`/`Tuple`/`Map`/`Object` profondément imbriqué, par exemple dans une requête contenant un littéral très profondément imbriqué avec une valeur élevée de `max_parser_depth`. [#110393](https://github.com/ClickHouse/ClickHouse/pull/110393) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de deux cas où la vector search pouvait renvoyer moins de lignes que prévu : des valeurs de `vector_search_index_fetch_multiplier` inférieures à 1.0 pouvaient tronquer à zéro le nombre de fetch calculé et produire un résultat vide (ces valeurs sont désormais rejetées), et l’optimisation de vector search est désormais ignorée pour les requêtes `LIMIT ... WITH TIES`, car elle limitait la recherche à exactement N candidats et supprimait les lignes à égalité avec la N-ième ligne. [#110452](https://github.com/ClickHouse/ClickHouse/pull/110452) ([Tamish Mhatre](https://github.com/tamish560)). [#110453](https://github.com/ClickHouse/ClickHouse/pull/110453) ([Tamish Mhatre](https://github.com/tamish560)).
* Correction de l’erreur logique `Expected CommonSubplanReferenceStep to reference CommonSubplanStep`, de l’erreur `Subplan cannot be used to build pipeline` et de l’erreur logique `Trying to extract chunk from ChunkBuffer before all inputs are finished` pour `IN (subquery)` lorsque la sous-requête contient une sous-requête corrélée et que le Set est construit pendant l’analyse d’index. [#110491](https://github.com/ClickHouse/ClickHouse/pull/110491) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la substitution des query parameters dans les définitions d’une clause `WINDOW` nommée. Auparavant, les paramètres à cet endroit restaient silencieusement non substitués, et un paramètre `Identifier` non défini pouvait entraîner l’exception `Logical error: '!part.empty()'` pendant `EXPLAIN SYNTAX`. [#110506](https://github.com/ClickHouse/ClickHouse/pull/110506) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’échec du démarrage du serveur pour les tables `MergeTree` sur des object storage disks lorsqu’un fichier résiduel `txn_version.txt.tmp` avait corrompu les métadonnées au niveau du disk. [#110519](https://github.com/ClickHouse/ClickHouse/pull/110519) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur logique dans le filesystem cache (`Expected file ... not to exist`) qui pouvait se produire lorsqu’un téléchargement du cache en arrière-plan échouait avec une erreur sans rapport avec le système de fichiers (par exemple lors de l’exécution de `OPTIMIZE` sur une table Iceberg), laissant derrière lui un fichier de cache orphelin vide. [#110549](https://github.com/ClickHouse/ClickHouse/pull/110549) ([Groene AI](https://github.com/groeneai)).
* Correction de la lecture d’un flux au format `Native` corrompu dont le nombre de types `Dynamic` ou le nombre de chemins `JSON`/`Object` est proche de `SIZE_MAX` : ces entrées malformées sont désormais rejetées avec une erreur `INCORRECT_DATA` explicite au lieu d’un `std::length_error` non intercepté. [#110590](https://github.com/ClickHouse/ClickHouse/pull/110590) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un plantage du serveur dans le database engine `MaterializedPostgreSQL` qui pouvait se produire lorsqu’une table était detached (ou que sa structure était modifiée) alors qu’elle était encore en file d’attente pour la synchronisation. [#110596](https://github.com/ClickHouse/ClickHouse/pull/110596) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du mauvais fonctionnement de `SET param_<name>` dans le client (et des options `--param_<name>`) lorsque le nom du paramètre correspond à un setting name intégré tel que `limit`, `offset`, `max_threads` ou `log_comment`. Selon le setting en conflit, la query échouait avec `CANNOT_PARSE_QUOTED_STRING`, la valeur était normalisée silencieusement (par ex. `max_threads=0` devenait `auto(N)`), ou un alias de setting était perdu. Un tel paramètre cassait également tous les `SET param_*` suivants dans la même session. [#110597](https://github.com/ClickHouse/ClickHouse/pull/110597) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de la lecture des subcolumns d’une column ayant une expression `DEFAULT` et non matérialisée dans une part (par ex. après `ALTER TABLE ADD COLUMN` ou pendant `ALTER TABLE MATERIALIZE COLUMN`) : la subcolumn était remplie avec les valeurs par défaut du type au lieu de l’expression `DEFAULT` évaluée, et les fonctions de distance vectorielle transposées (`cosineDistanceTransposed` et autres) sur de telles columns `QBit` échouaient avec l’erreur `SIZES_OF_ARRAYS_DONT_MATCH`. Cela clôt [#110634](https://github.com/ClickHouse/ClickHouse/issues/110634). [#110636](https://github.com/ClickHouse/ClickHouse/pull/110636) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur `LOGICAL_ERROR` `Invalid partition key size: 0` qui pouvait faire échouer un `INSERT` dans une table `MergeTree` partitionnée avec `non_replicated_deduplication_window` activé, lorsqu’un lot d’async insert n’était dédupliqué que partiellement (certaines valeurs `insert_deduplication_token` étaient des doublons et d’autres étaient nouvelles). [#110651](https://github.com/ClickHouse/ClickHouse/pull/110651) ([Groene AI](https://github.com/groeneai)).
* Un flush d’asynchronous insert en arrière-plan s’interrompt désormais rapidement lorsqu’il est tué avec `KILL QUERY` ; auparavant, le flush d’une charge utile volumineuse mise en tampon continuait son analyse jusqu’au bout et ignorait l’annulation. [#110652](https://github.com/ClickHouse/ClickHouse/pull/110652) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction de résultats erronés avec `GROUP BY` et `optimize_aggregation_in_order`, ainsi qu’avec `DISTINCT` et `optimize_distinct_in_order`, au-dessus d’un JOIN `partial_merge`. L’optimisation de lecture dans l’ordre était propagée à travers le partial-merge join, qui retrie son entrée de gauche selon la clé de jointure et ne préserve donc pas l’ordre d’origine du flux de gauche ; les lignes étaient donc regroupées incorrectement. [#110671](https://github.com/ClickHouse/ClickHouse/pull/110671) ([Groene AI](https://github.com/groeneai)).
* Correction d’un overflow d’entier signé dans `toStartOfInterval` avec un nombre d’intervalles `MONTH`, `WEEK` ou `DAY` extrême sur des valeurs `Date`/`Date32`/`DateTime64`. [#110688](https://github.com/ClickHouse/ClickHouse/pull/110688) ([Groene AI](https://github.com/groeneai)).
* Corrige l’erreur `NOT_FOUND_COLUMN_IN_BLOCK` pour les requêtes avec une sous-requête dans `FROM` lorsque des parallel replicas s’exécutent en mode `custom_key_sampling` / `custom_key_range`. De telles requêtes (par ex. `SELECT * FROM (SELECT id, k, v FROM t WHERE id < 20) ORDER BY k`) échouaient auparavant avec `Not found column __table2.id in block ...`. [#110690](https://github.com/ClickHouse/ClickHouse/pull/110690) ([Groene AI](https://github.com/groeneai)).
* Corrige le rejet par `readWKT` des chaînes WKT précédées d’espaces (par ex. `readWKT(' POINT(1 2)')`), alors qu’elles sont acceptées par les lecteurs typés `readWKTPoint`/`readWKTPolygon`/... ainsi que par la grammaire WKT. [#110706](https://github.com/ClickHouse/ClickHouse/pull/110706) ([Groene AI](https://github.com/groeneai)).
* Corrige une logical error (`Column ... already added for reading`, un arrêt du server dans les builds de Débogage/sanitizer) lorsque le même prédicat d’index texte est utilisé à la fois dans `PREWHERE` et `WHERE` d’une requête sur une table `Merge` reposant sur une table `Distributed`. [#110710](https://github.com/ClickHouse/ClickHouse/pull/110710) ([Groene AI](https://github.com/groeneai)).
* Corrige l’erreur `NOT_FOUND_COLUMN_IN_BLOCK` pour les fonctions de distance transposées sur des colonnes `QBit` (telles que `cosineDistanceTransposed`) appelées avec une sous-requête scalaire ou un Reference vector constant lorsque les parallel replicas sont activées. Cela clôt [#110719](https://github.com/ClickHouse/ClickHouse/issues/110719). [#110729](https://github.com/ClickHouse/ClickHouse/pull/110729) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une `LOGICAL_ERROR` rare (`Unexpected number of parts to remove from parts_queue` ; un arrêt du server dans les builds de Débogage/sanitizer) sur `ReplicatedMergeTree` lorsque deux opérations de partition (par exemple deux requêtes `MOVE PARTITION`/`REPLACE PARTITION`, ou l’une d’elles en concurrence avec un `DROP_RANGE` en arrière-plan) annulaient en même temps la vérification en arrière-plan des parts sur des plages qui se chevauchent. [#110738](https://github.com/ClickHouse/ClickHouse/pull/110738) ([Groene AI](https://github.com/groeneai)).
* Corrige une logical error `Hash is not set for serialization` qui pouvait se produire lorsqu’une colonne avec un codec `Quantized(...)` était encapsulée dans une autre serialization, par exemple dans une table `Merge` sur des sources dont la colonne de même nom a des types différents (fusionnés dans un `Variant`). [#110776](https://github.com/ClickHouse/ClickHouse/pull/110776) ([Groene AI](https://github.com/groeneai)).
* Corrige un blocage du server lors de la multiplication de l’état d’une aggregate function `median`/`quantile` par une constante entière énorme (par ex. `medianState(x) * 18446744073709551615`). La requête ne répondait plus à l’annulation et pouvait s’exécuter indéfiniment. [#110779](https://github.com/ClickHouse/ClickHouse/pull/110779) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du server (division entière par zéro) lorsqu’un quota avec un intervalle de longueur nulle (par exemple `CREATE QUOTA q FOR INTERVAL 0 SECOND MAX queries = 1000`) était consommé. Une durée d’intervalle de quota non positive est désormais rejetée lors de la création du quota. [#110846](https://github.com/ClickHouse/ClickHouse/pull/110846) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige le fait que `throwIf(notLike(col, pattern))` (et d’autres `throwIf` appliqués à une fonction) lançait systématiquement une exception lorsque `col` est `LowCardinality`. L’implémentation `LowCardinality` par défaut exécutait `throwIf` sur le Dictionary entier, qui contient toujours la default value réservée même lorsqu’aucune ligne n’y fait référence ; ainsi, une valeur non nulle dans cet emplacement inutilisé faisait lever une exception par `throwIf` pour des données qui ne satisfont pas la condition. [#110864](https://github.com/ClickHouse/ClickHouse/pull/110864) ([Groene AI](https://github.com/groeneai)).
* Propage les rôles actifs d’une requête (`SET ROLE` ou le paramètre `role`) aux nœuds distants lors des lectures sur répliques parallèles et des lectures `Distributed` sur un cluster sécurisé par un secret interserveur ; auparavant, les nœuds distants revenaient aux rôles par défaut de l’utilisateur, ce qui évaluait les politiques de lignes de manière incohérente par rapport à l’initiateur. [#110867](https://github.com/ClickHouse/ClickHouse/pull/110867) ([Nikolay Degterinsky](https://github.com/evillique)).
* Correction d’un problème dans les tables Iceberg qui produisaient des ID de champ dupliqués après `ALTER TABLE ... ADD COLUMN` lorsque le schéma initial contient des champs imbriqués (`Tuple`/`Array`/`Map`). `last-column-id` enregistre désormais l’ID de champ maximal attribué, y compris aux enfants imbriqués, de sorte qu’une colonne ajoutée ultérieurement ne réutilise plus l’ID d’un champ imbriqué et que les lectures n’échouent plus avec `ICEBERG_SPECIFICATION_VIOLATION` (`Duplicate field id`). [#110884](https://github.com/ClickHouse/ClickHouse/pull/110884) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage dans les builds FIPS lors de l’utilisation d’une clé SSH Ed25519 (`CREATE USER ... IDENTIFIED WITH ssh_key ... TYPE 'ssh-ed25519'`, ou d’une telle clé dans `users.xml`). Ed25519 n’est pas approuvé par FIPS ; ces clés sont désormais rejetées avec une erreur `LIBSSH_ERROR` explicite. [#110891](https://github.com/ClickHouse/ClickHouse/pull/110891) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige les résultats en précision réduite des fonctions de distance transposées sur les colonnes `QBit` (`cosineDistanceTransposed`, `L2DistanceTransposed`, `dotProductTransposed`). Les valeurs tronquées à `precision` plans de bits étaient reconstruites en complétant les bits supprimés par des zéros, ce qui biaisait chaque valeur reconstruite vers zéro et devenait pathologique à faible précision : pour `QBit(BFloat16)` avec une précision de 1, seul le bit de signe subsistait, de sorte que chaque valeur était reconstruite en `±0.0` et que la distance devenait la même constante pour chaque ligne, sans aucune information de classement. Les valeurs tronquées sont désormais reconstruites vers le point médian borné de la cellule de précision restante (codes `Int8` bruts vers le centre de leur cellule ; les zéros exacts et les infinis sont préservés), de sorte qu’une `precision` plus faible échange de la précision contre de la vitesse sans produire de résultats fortement biaisés. Les résultats en pleine précision restent inchangés. Cela clôt [#110898](https://github.com/ClickHouse/ClickHouse/issues/110898). [#110911](https://github.com/ClickHouse/ClickHouse/pull/110911) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un plantage du serveur (use-after-free) lors d’un arrêt propre après l’exécution de requêtes sur des tables Iceberg depuis des sessions qui utilisaient également des tables temporaires. [#110914](https://github.com/ClickHouse/ClickHouse/pull/110914) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de `LOGICAL_ERROR: Cannot sum Bools` (arrêt du serveur dans les builds debug/sanitizer) lors de la fusion d’aggregate states `sumMap`/`sumMapWithOverflow`/`sumMapFiltered` avec des valeurs `Bool` qui avaient été sérialisées dans l’ancien format d’état (version 0). Le même correctif corrige également deux cas silencieux de résultats erronés avec des états `Bool` version 0 : les clés de map de type `Bool` n’étaient pas dédupliquées entre les états, et la compaction des valeurs nulles supprimait les mauvaises entrées. [#110922](https://github.com/ClickHouse/ClickHouse/pull/110922) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage lorsqu’une aggregate function avec le combinator `-Tuple` était utilisée avec `RESPECT NULLS` et produisait un état intermédiaire (`-State`, agrégation distribuée, `WITH ROLLUP`/`WITH CUBE`). La fonction combinée portait le nom de la mauvaise variante d’état, de sorte que son type `AggregateFunction` sérialisé était résolu à nouveau vers une disposition mémoire incompatible lors d’un aller-retour. [#110930](https://github.com/ClickHouse/ClickHouse/pull/110930) ([Groene AI](https://github.com/groeneai)).
* Corrige le cas où `PREWHERE` (et les politiques au niveau des lignes) sur une colonne Iceberg renommée par schema evolution renvoyait silencieusement `0` ligne pour d’anciens data files. Ces requêtes renvoient désormais les lignes correctes, comme avec `WHERE`. [#110941](https://github.com/ClickHouse/ClickHouse/pull/110941) ([Groene AI](https://github.com/groeneai)).
* Corrige une `LOGICAL_ERROR` (`LazyMaterializingTransform: Number of rows in lazy chunk N does not match number of offsets M`) qui pouvait se produire pour les requêtes de vector search avec `vector_search_with_rescoring = 1`, combiné à la lazy materialization, lorsque plusieurs distances étaient ex æquo. [#111003](https://github.com/ClickHouse/ClickHouse/pull/111003) ([Groene AI](https://github.com/groeneai)).
* Corrige la lecture des données `Arrow`/`ArrowStream` avec des colonnes imbriquées `Array`/`Map` vides produites par Apache Arrow Java \< 19.0.0 (fourni avec Apache Spark), auparavant rejetées avec une erreur `INCORRECT_DATA` indiquant que le tampon d'offsets était trop petit. [#111101](https://github.com/ClickHouse/ClickHouse/pull/111101) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige des lectures obsolètes sur les disks `plain_rewritable` lorsque le page cache est activé. [#111105](https://github.com/ClickHouse/ClickHouse/pull/111105) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige l'erreur `CANNOT_CONVERT_TYPE` pour les constantes de type `Variant` (y compris `Geometry`) dans les distributed queries et les requêtes avec parallel replicas. [#111136](https://github.com/ClickHouse/ClickHouse/pull/111136) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige un bug où la lecture de fichiers volumineux depuis HDFS pouvait échouer ou être incorrecte lorsqu'une seule read request dépassait la limite de taille 32 bits de `hdfsPread` (`INT_MAX`). [#98470](https://github.com/ClickHouse/ClickHouse/pull/98470) ([Arup Chauhan](https://github.com/arup-chauhan)).
* Corrige l'utilisation incorrecte du text index pour les comparaisons d'égalité avec une aiguille vide. [#108340](https://github.com/ClickHouse/ClickHouse/pull/108340) ([Robert Schulze](https://github.com/rschu1ze)).
* Corrige un blocage dans `SYSTEM SYNC MERGES` avec le merge selector `Manual` lorsqu'une fusion planifiée ne pouvait pas être placée dans un background pool saturé. [#108770](https://github.com/ClickHouse/ClickHouse/pull/108770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `ATTACH TABLE ... AS REPLICATED`, qui écartait des données committed et ressuscitait des rows antérieures à la mutation lorsqu'un fichier `txn_version.txt.tmp` stale était laissé dans une data part. [#108772](https://github.com/ClickHouse/ClickHouse/pull/108772) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une possible race condition dans `ALTER TABLE ... MOVE PARTITION TO TABLE` avec des tables `MergeTree` non répliquées, qui pouvait produire des data parts intersecting, car le commit des parts déplacées et l'allocation du numéro de bloc n'étaient pas sous le même lock. [#108922](https://github.com/ClickHouse/ClickHouse/pull/108922) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige la lecture des tables `Iceberg` écrites par Databricks UniForm, qui écrit un schéma placeholder dégénéré (avec une liste de champs vide) dans les manifest files. [#108945](https://github.com/ClickHouse/ClickHouse/pull/108945) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un use-after-free lors de la lecture d'une table `Hive` non partitionnée avec plusieurs threads. [#109164](https://github.com/ClickHouse/ClickHouse/pull/109164) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le fait que le log level de la console n'était pas rétabli après le démarrage du server lorsque `logger.startup_console_log_level` est défini : le niveau était récupéré depuis la mauvaise clé de configuration, si bien que la console restait au Startup level élevé pendant toute la lifetime du server. Corrige [#103472](https://github.com/ClickHouse/ClickHouse/issues/103472). [#109858](https://github.com/ClickHouse/ClickHouse/pull/109858) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* Corrige des anomalies d'isolation des snapshots dans les transactions de metadata du disk `plain_rewritable`. Corrige [#92055](https://github.com/ClickHouse/ClickHouse/issues/92055). [#110948](https://github.com/ClickHouse/ClickHouse/pull/110948) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige un plantage (`front() called on an empty vector`) dans `clickhouse-client --login` lorsque l’hôte n’était pas fourni explicitement via l’argument `--host`, par exemple s’il provenait de `--connection`, du fichier de configuration ou de la variable d’environnement `CLICKHOUSE_HOST`. Closes [#103603](https://github.com/ClickHouse/ClickHouse/issues/103603). [#110279](https://github.com/ClickHouse/ClickHouse/pull/110279) ([Christoph Wurm](https://github.com/cwurm)).
* Corrige une erreur logique (`!part.empty()`) lorsqu’un argument lambda est un identifiant entre accents graves dont le nom contient un point (par exemple `__table1.`). Une telle requête produisait auparavant une exception gérée dans les builds de release et faisait avorter le serveur dans les builds de débogage et avec sanitizer lors du formatage d’un message d’erreur. [#108735](https://github.com/ClickHouse/ClickHouse/pull/108735) ([Groene AI](https://github.com/groeneai)).
* Corrige un `LOGICAL_ERROR` (`No set is registered for key`) dans `ALTER TABLE ... DROP COLUMN`, les mutations `ALTER TABLE ... DELETE`/`UPDATE` et les `DELETE FROM` légers, sur des tables ayant une colonne `ALIAS` dont l’expression utilise l’opérateur `IN` (y compris via une autre colonne `ALIAS`). [#111039](https://github.com/ClickHouse/ClickHouse/pull/111039) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige une perte de données silencieuse avec les insertions asynchrones et la déduplication (`async_insert=1`, `async_insert_deduplicate=1`). Lorsque plusieurs entrées async-insert avec des valeurs `insert_deduplication_token` distinctes étaient regroupées dans un seul flush écrivant dans des partitions disjointes, chaque token était enregistré dans le journal de déduplication de chaque partition touchée par le flush, et non pas uniquement dans la partition où aboutissaient ses propres lignes. Une insertion ultérieure réutilisant l’un de ces tokens dans une partition dans laquelle elle n’avait jamais écrit était alors silencieusement dédupliquée. Les tokens ne sont désormais enregistrés que pour la partition où leurs lignes ont effectivement été écrites. Closes [#111031](https://github.com/ClickHouse/ClickHouse/issues/111031). [#111049](https://github.com/ClickHouse/ClickHouse/pull/111049) ([Groene AI](https://github.com/groeneai)).
* Corrige une exception `LOGICAL_ERROR` (`ScatterExchangeStep should have one source shard, got 8`) et des lignes dupliquées lors de requêtes sur une table `Merge` reposant sur des tables ou vues `Distributed`, avec le paramètre expérimental `make_distributed_plan = 1`. Closes [#107946](https://github.com/ClickHouse/ClickHouse/issues/107946). [#108401](https://github.com/ClickHouse/ClickHouse/pull/108401) ([Groene AI](https://github.com/groeneai)).
* Sérialise une colonne `Nullable(Tuple(...))` comme un seul champ `CSV` au lieu de l’aplatir en colonnes distinctes. Auparavant, une valeur non nulle était écrite sous forme de plusieurs champs `CSV`, tandis que `NULL` correspondait à un unique `\N`, ce qui produisait un nombre de colonnes dépendant de la ligne et cassait les en-têtes `CSVWithNames`/`CSVWithNamesAndTypes` ainsi que les allers-retours. [#108959](https://github.com/ClickHouse/ClickHouse/pull/108959) ([Groene AI](https://github.com/groeneai)).
* Corrige une erreur logique (`KeyCondition uses PREWHERE output`) dans le lecteur `Parquet` v3 lorsqu’une condition de clé au niveau du format fait référence à une colonne qui n’est pas lue depuis le fichier `Parquet`. [#109267](https://github.com/ClickHouse/ClickHouse/pull/109267) ([Groene AI](https://github.com/groeneai)).
* Corrige des résultats incorrects pour les lectures via des fonctions de table avec `FINAL` ou `SAMPLE` sous `serialize_query_plan = 1`. Corrige également la clé de cache des statistiques de table de hachage d’agrégation pour les fonctions de table afin que différentes fonctions de table ne partagent plus la même entrée de préallocation. [#109847](https://github.com/ClickHouse/ClickHouse/pull/109847) ([Azat Khuzhin](https://github.com/azat)).
* Corrige le nettoyage d’un `BACKUP ... TO Memory(...)` qui échoue avant la finalisation : la sauvegarde en échec restait enregistrée, empêchant ainsi la réutilisation de son nom. [#109947](https://github.com/ClickHouse/ClickHouse/pull/109947) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction de l’arithmétique sur des intervalles extrêmes pour `WITH FILL STEP` et les fonctions d’intervalle date/heure `add*` / `subtract*` : les deltas hors plage ne reposent plus sur un dépassement de capacité signé, et `WITH FILL` avec un pas `YEAR` énorme ne se bloque plus en faisant reculer le calendrier. [#110158](https://github.com/ClickHouse/ClickHouse/pull/110158) ([Groene AI](https://github.com/groeneai)).
* Correction des erreurs `411 Length Required` provenant des services Azure : le transport HTTP Azure basé sur Poco définit désormais `Content-Length` à partir du corps de la requête pour les clients SDK qui ne le définissent pas eux-mêmes, comme Azure Key Vault. [#110299](https://github.com/ClickHouse/ClickHouse/pull/110299) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* L’optimisation lazy de `FINAL` (`query_plan_optimize_lazy_final`, désactivée par défaut) n’est plus appliquée lorsque la requête lit dans l’ordre de la clé de tri, car son plan de remplacement ne préserve pas cet ordre et pouvait renvoyer des résultats mal ordonnés. Elle n’est pas non plus appliquée lorsqu’un `LIMIT` inférieur au nombre de lignes à lire s’applique directement à l’étape de lecture, où le passage obligatoire de construction de l’ensemble empêche l’arrêt anticipé. [#110576](https://github.com/ClickHouse/ClickHouse/pull/110576) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction de `readWKT` et `readWKTPoint`, qui renvoyaient des coordonnées non initialisées (scalaire) ou reprises de la ligne précédente (vectorisé) pour `POINT EMPTY`. `POINT EMPTY` est désormais rejeté avec `CANNOT_PARSE_TEXT`, car le `Point` de ClickHouse est un `Tuple(Float64, Float64)` fixe sans représentation vide. [#110692](https://github.com/ClickHouse/ClickHouse/pull/110692) ([Groene AI](https://github.com/groeneai)).
* Correction d’une mauvaise gestion du fuseau horaire lors de la matérialisation des colonnes du côté droit dans les hash joins. Corrige [#111033](https://github.com/ClickHouse/ClickHouse/issues/111033). [#111074](https://github.com/ClickHouse/ClickHouse/pull/111074) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de résultats `count()` erronés et de lignes ignorées lorsqu’une clé `String` (ou `FixedString` plus étroit) ou un skip index minmax est filtré par une comparaison avec une constante `FixedString` plus large, par exemple `toFixedString('abc', 257) = string_col`. L’élagage sur clé primaire et minmax construisait la plage à partir de la constante complétée par des NUL et sautait à tort des granules correspondants. [#111106](https://github.com/ClickHouse/ClickHouse/pull/111106) ([Groene AI](https://github.com/groeneai)).
* Correction des inserts asynchrones au format `Native` afin qu’une entrée mise en tampon devenant incompatible après `ALTER ... MODIFY COLUMN` ne fasse plus échouer tout le lot. Corrige [#111064](https://github.com/ClickHouse/ClickHouse/issues/111064). [#111108](https://github.com/ClickHouse/ClickHouse/pull/111108) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Correction de `CREATE OR REPLACE` d’un Dictionary avec un objet d’un autre type : l’opération échouait avec `CANNOT_DETACH_DICTIONARY_AS_TABLE` alors que le remplacement avait déjà été validé, laissant une table orpheline `_tmp_replace_*`. [#111142](https://github.com/ClickHouse/ClickHouse/pull/111142) ([Nikolay Degterinsky](https://github.com/evillique)).
* Correction de `INCOMPATIBLE_TYPE_OF_JOIN` pour un join `ANY` sur une table utilisant le engine `Join` lorsqu’un filtre `WHERE` sur une colonne du côté droit permettait au planner de requête de réécrire le join en `SEMI` ou `ANTI`. Une table utilisant le engine `Join` a une strictness déclarée fixe qui ne peut pas être modifiée ; cette conversion est donc désormais refusée pour de telles tables. [#111362](https://github.com/ClickHouse/ClickHouse/pull/111362) ([Groene AI](https://github.com/groeneai)).
* Correction de la table function `format`, qui ne renvoyait aucune colonne lorsque les données d’entrée étaient analysées en zéro ligne (par exemple un document JSON vide ou une `FeatureCollection` GeoJSON sans features). Elle renvoie désormais un résultat vide avec les bonnes colonnes au lieu de lever `NOT_FOUND_COLUMN_IN_BLOCK`. Corrige [#111390](https://github.com/ClickHouse/ClickHouse/issues/111390). [#111428](https://github.com/ClickHouse/ClickHouse/pull/111428) ([Groene AI](https://github.com/groeneai)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* Les builds avec sanitizer capturent désormais le rapport du sanitizer dans le buffer global `sanitizer_report`, afin que l'analyzer de core dumps puisse le lire depuis le core dump. [#109333](https://github.com/ClickHouse/ClickHouse/pull/109333) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Compiler `musl` à partir du code source au lieu d'utiliser des binaires intégrés. [#97452](https://github.com/ClickHouse/ClickHouse/pull/97452) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilisation des implémentations SIMD de `memcmp`/`memcpy`/`memmove`/`memset`/`bcmp`/`memmem` fournies par LLVM-libc. [#107566](https://github.com/ClickHouse/ClickHouse/pull/107566) ([Konstantin Bogdanov](https://github.com/thevar1able)). Correction d'une corruption silencieuse de `memmove` dans les builds de débogage `-O0` (`-DDEBUG_O_LEVEL=0`) sur les machines avec AVX-512. [#110904](https://github.com/ClickHouse/ClickHouse/pull/110904) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Suppression des usages de la bibliothèque `curl` dans l'ensemble du codebase et des bibliothèques tierces intégrées. [#108296](https://github.com/ClickHouse/ClickHouse/pull/108296) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mise à jour de `mariadb-connector-c` vers la version 3.4.9. [#108328](https://github.com/ClickHouse/ClickHouse/pull/108328) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mise à jour de `libssh` vers la version 0.12.0. [#108329](https://github.com/ClickHouse/ClickHouse/pull/108329) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Correction d'un blocage lors du `COMMIT` d'une transaction sous macOS. [#108375](https://github.com/ClickHouse/ClickHouse/pull/108375) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout d'une option CMake `COMPRESS_DEBUG_SECTIONS` qui compresse les sections de débogage DWARF dans les fichiers objets (`-gz`), activée automatiquement lorsque le compilateur le prend en charge, afin de réduire la taille des répertoires de builds de débogage ; les binaires finaux restent non compressés, donc la symbolisation des stack traces à l'exécution n'est pas affectée. [#109306](https://github.com/ClickHouse/ClickHouse/pull/109306) ([Murphy](https://github.com/murphy-4o)). La toolchain LLVM intégrée est désormais compilée avec zlib, de sorte que son clang prend en charge `-gz=zlib`, et le lien symbolique `clang++-21` manquant a été ajouté. [#109596](https://github.com/ClickHouse/ClickHouse/pull/109596) ([Murphy](https://github.com/murphy-4o)).
* Les builds de débogage compilent désormais les crates Rust intégrées avec des informations de débogage réduites (`debug = 1`, niveau `limited` de cargo) et sans cache incrémental (`REDUCE_RUST_DEBUG_INFO`, activé par défaut), ce qui réduit la taille des artéfacts de build Rust (\~12 → \~7 GB à partir de zéro) et empêche la croissance non bornée du cache cargo entre les recompilations. Définissez `-DREDUCE_RUST_DEBUG_INFO=OFF` pour restaurer les informations DWARF complètes et la compilation incrémentale. [#109471](https://github.com/ClickHouse/ClickHouse/pull/109471) ([Murphy](https://github.com/murphy-4o)).
* Prise en charge de l'exchange de distributed query en streaming et des lectures `STREAM` sous macOS. [#109769](https://github.com/ClickHouse/ClickHouse/pull/109769) ([Raúl Marín](https://github.com/Algunenano)).
* Passage de `libarchive` de la version 3.8.7 à la version 3.8.8. [#109874](https://github.com/ClickHouse/ClickHouse/pull/109874) ([Robert Schulze](https://github.com/rschu1ze)).
* Passage de `c-ares` de la version 1.34.6 à la version 1.34.8. [#109905](https://github.com/ClickHouse/ClickHouse/pull/109905) ([Robert Schulze](https://github.com/rschu1ze)).
* Mise à jour de `krb5` pour corriger CVE-2026-40355 et CVE-2026-40356. [#109910](https://github.com/ClickHouse/ClickHouse/pull/109910) ([Robert Schulze](https://github.com/rschu1ze)).
* Suppression de la dépendance tierce `libpng`. `FORMAT PNG` utilise désormais un petit encodeur PNG intégré (s'appuyant sur le zlib fourni) à la place. [#110051](https://github.com/ClickHouse/ClickHouse/pull/110051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suivi des allocations C brutes (ne passant pas par `operator new`) dans le memory tracker sur macOS en encapsulant la zone malloc de jemalloc, afin que les limites mémoire leur soient bien appliquées. [#110370](https://github.com/ClickHouse/ClickHouse/pull/110370) ([Raúl Marín](https://github.com/Algunenano)).
* Les Docker images `-distroless` pour `clickhouse-server` et `clickhouse-keeper` sont désormais construites à partir de l'étape de production sans shell ; auparavant, elles étaient construites à partir de l'étape de débogage et incluaient `/busybox/sh`. Clôt [#105677](https://github.com/ClickHouse/ClickHouse/issues/105677). [#105678](https://github.com/ClickHouse/ClickHouse/pull/105678) ([ashishch432](https://github.com/ashishch432)).
* Mise à jour de `abseil-cpp` vers la version LTS `20260526.0`. [#108991](https://github.com/ClickHouse/ClickHouse/pull/108991) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="266">
  ### Version de ClickHouse 26.6, 2026-06-25. [Présentation](https://presentations.clickhouse.com/2026-release-26.6/), [Vidéo](https://www.youtube.com/watch?v=-NmqMH9y4EY)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* Cette modification supprime la fonctionnalité `allow_experimental_query_deduplication`. Cette fonctionnalité était expérimentale depuis longtemps, n’avait pas de tests et ne sera pas prise en charge (les tests initiaux étaient instables et ont été supprimés dans [#49579](https://github.com/ClickHouse/ClickHouse/pull/49579)). [#99398](https://github.com/ClickHouse/ClickHouse/pull/99398) ([Igor Nikonov](https://github.com/devcrafter)).
* La fonctionnalité `SYSTEM INSTRUMENT` basée sur XRay utilise désormais `arguments` au lieu de `parameters` : la colonne `system.instrumentation.parameters` a été renommée en `arguments`, et la syntaxe `SYSTEM INSTRUMENT ADD ... HANDLER PARAMETERS ...` a été renommée en `SYSTEM INSTRUMENT ADD ... HANDLER ARGUMENTS ...`. Les requêtes ou automatisations qui utilisent l’ancienne colonne ou l’ancienne syntaxe doivent être mises à jour pour utiliser les nouveaux noms ; les anciens ne sont plus pris en charge. [#103854](https://github.com/ClickHouse/ClickHouse/pull/103854) ([Pablo Marcos](https://github.com/pamarcos)).
* Le paramètre `show_data_lake_catalogs_in_system_tables` a été renommé en `show_remote_databases_in_system_tables` et son périmètre a été élargi : lorsque sa valeur est 0 (valeur par défaut), les bases de données `MySQL` et `PostgreSQL` sont elles aussi masquées dans `system.tables`, `system.columns` et `system.completions`, en plus des catalogues de data lake. L’ancien nom du paramètre est conservé comme alias. [#104416](https://github.com/ClickHouse/ClickHouse/pull/104416) ([Pablo Marcos](https://github.com/pamarcos)).
* La build x86 par défaut cible désormais x86-64-v3 (AVX2) au lieu de x86-64-v2 (SSE4.2). Cela nécessite un CPU prenant en charge AVX2 (Intel Haswell ou plus récent, AMD Excavator ou plus récent). Si votre CPU ne prend pas en charge AVX2, utilisez la build `amd64compat`, qui cible le x86-64 standard. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* Rejette les `Dynamic`/`Variant` imbriqués dans les agrégats `min`/`max` et les indexes `minmax`. Auparavant, seuls les `Dynamic`/`Variant` de niveau supérieur étaient vérifiés. Closes [#104747](https://github.com/ClickHouse/ClickHouse/issues/104747). [#105468](https://github.com/ClickHouse/ClickHouse/pull/105468) ([Pavel Kruglov](https://github.com/Avogar)).
* `icebergHash` et `icebergBucket` rejettent désormais les arguments `Int128`, `UInt128`, `Int256`, `UInt256` et `Decimal256` avec une erreur explicite. Auparavant, ils tronquaient silencieusement les valeurs de plus grande taille et produisaient des hash en collision. La spec Iceberg ne définit le hachage que pour les entiers sur 32 ou 64 bits et les décimaux avec une précision allant jusqu’à 38 ; convertissez en `Int64` ou `Decimal128` pour conserver le comportement précédent pour les valeurs compatibles. [#105866](https://github.com/ClickHouse/ClickHouse/pull/105866) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout d’un contrôle granulaire de l’écho des requêtes dans la CLI. L’option `--echo` accepte désormais une valeur booléenne facultative et fonctionne à la fois en mode interactif et en batch mode. Les nouvelles options `--echo-formatted` et `--echo-query-id` contrôlent respectivement si les requêtes affichées en écho sont formatées et si le `query_id` est imprimé. L’option `--hilite`/`--highlight` contrôle désormais aussi la mise en surbrillance des requêtes affichées en écho. En conséquence, `--echo` est maintenant une option à valeur booléenne ; une requête positionnelle placée juste après `--echo` sans valeur explicite est donc interprétée comme sa valeur. Utilisez plutôt `--echo --query "..."` ou `--echo=false`. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suppression des fonctions KQL (Kusto) expérimentales `array_sort_asc` et `array_sort_desc`, ainsi que de leurs backends SQL `kql_array_sort_asc` et `kql_array_sort_desc`. Ces fonctions étaient expérimentales, de qualité médiocre, et à l’origine de bugs de correction et d’analyse syntaxique. Les requêtes qui utilisent ces noms renvoient désormais `UNKNOWN_FUNCTION`. [#108101](https://github.com/ClickHouse/ClickHouse/pull/108101) ([Groene AI](https://github.com/groeneai)).
* `ALTER TABLE ... REPLACE PARTITION ... FROM ...` ne supprime plus silencieusement les données de la partition de destination lorsque la table source ne contient aucune part dans la partition demandée. Auparavant, une telle requête supprimait la partition de destination sans rien écrire à la place — un piège pouvant entraîner une perte de données. Elle est désormais rejetée avec `BAD_ARGUMENTS` par défaut. Pour rétablir l’ancien comportement d’effacement silencieux, définissez le nouveau paramètre `allow_replace_partition_from_empty_source = 1`, ou définissez `compatibility` sur `26.5` ou une version antérieure ; pour supprimer explicitement les données de destination, utilisez `ALTER TABLE ... DROP PARTITION`. [#104939](https://github.com/ClickHouse/ClickHouse/pull/104939) ([Groene AI](https://github.com/groeneai)).
* La valeur par défaut du paramètre serveur `insert_deduplication_version` passe de `compatible_double_hashes` à `new_unified_hash`. La déduplication des insertions s’applique désormais à l’ensemble du bloc inséré (par insert) plutôt qu’à chaque part/partition : une nouvelle tentative du même insert est toujours dédupliquée, mais deux inserts différents qui produisent une part identique ne sont plus dédupliqués entre eux, et des inserts des mêmes lignes dans un ordre différent ne sont plus dédupliqués. Définissez `insert_deduplication_version = compatible_double_hashes` pour rétablir le comportement précédent. Les instances mises à niveau directement depuis une version dont la valeur par défaut était `old_separate_hashes` doivent d’abord fonctionner avec `compatible_double_hashes` jusqu’à ce que la plus longue fenêtre de déduplication pertinente soit écoulée avant de s’appuyer sur `new_unified_hash`. [#107886](https://github.com/ClickHouse/ClickHouse/pull/107886) ([Sema Checherinda](https://github.com/CheSema)).

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

* Ajout de la prise en charge des requêtes continues sur les tables `MergeTree`, mises en œuvre via une série de lectures d’instantanés. Il s’agit d’une première étape vers une prise en charge générale des requêtes en continu. [#105114](https://github.com/ClickHouse/ClickHouse/pull/105114) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Ajout d’index de saut hypothétiques (what-if). Utilisez `CREATE HYPOTHETICAL INDEX ... ON t (expr) TYPE ...` pour définir un index de saut virtuel limité à la session, puis `EXPLAIN WHATIF SELECT ...` pour estimer son taux de saut et son coût sans le matérialiser. Les index définis sont visibles dans la nouvelle table `system.hypothetical_indexes`. [#104608](https://github.com/ClickHouse/ClickHouse/pull/104608) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajout d’une interface web intégrée `/schema` à `clickhouse-server` qui visualise le graphe de dépendances entre les tables, les vues matérialisées, les vues matérialisées actualisables, les dictionnaires, les tables distribuées et les vues. [#105276](https://github.com/ClickHouse/ClickHouse/pull/105276) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Ajout de la prise en charge du format de sortie `PNG`, permettant de restituer directement les résultats d’une requête sous forme d’images PNG. [#74691](https://github.com/ClickHouse/ClickHouse/pull/74691) ([Maksim Dergousov](https://github.com/m7kss1)).
* Ajout de la détection de l’agent IA de développement (Claude Code, Cursor, Codex, Gemini CLI, Goose, etc.) ayant invoqué `clickhouse-client` ou `clickhouse-local`, sur la base des variables d’environnement. L’agent détecté est signalé dans la nouvelle colonne `client_agent` de `system.query_log`, `system.query_thread_log` et `system.processes`. [#106619](https://github.com/ClickHouse/ClickHouse/pull/106619) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’une nouvelle table système `system.documentation` qui regroupe dans une seule table la documentation de référence intégrée des composants uniformes du système (fonctions, moteurs de table, types de données, paramètres, formats et autres), la documentation étant rendue en Markdown. [#107463](https://github.com/ClickHouse/ClickHouse/pull/107463) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du format d’entrée `GeoJSON` pour lire des documents `FeatureCollection` [GeoJSON](https://geojson.org/), en produisant une ligne par entité avec les colonnes `id` (`String`), `geometry` (`Geometry`) et `properties` (`Nullable(JSON)`). Les géométries `Point`, `LineString`, `MultiLineString`, `Polygon` et `MultiPolygon` sont lues dans le type natif `Geometry` de ClickHouse. `GeometryCollection` et `MultiPoint`, que le type `Geometry` ne peut pas représenter, lèvent une exception par défaut, ou peuvent être stockés sous forme de `NULL` via le paramètre `input_format_geojson_unsupported_geometry_handling`. Contribue à [#91533](https://github.com/ClickHouse/ClickHouse/issues/91533). [#98124](https://github.com/ClickHouse/ClickHouse/pull/98124) ([Mark Needham](https://github.com/mneedham)).
* Ajout de fonctions pour servir directement des Mapbox Vector Tiles depuis SQL : `MVTEncodeGeom` projette une géométrie dans l’espace pixel d’une tuile de carte et la découpe, `MVTEncode` agrège les géométries projetées d’un groupe dans les octets binaires d’une tuile monocouche, et `MVTBoundingBox` / `MVTBoundingBoxMercator` renvoient la boîte englobante d’une tuile afin d’y restreindre les lignes. Les géométries de type point, ligne et polygone sont prises en charge. Également disponible sous les alias PostGIS `ST_AsMVTGeom` et `ST_AsMVT`. [#106107](https://github.com/ClickHouse/ClickHouse/pull/106107) ([Saarthak Gupta](https://github.com/saarthak2002)).
* `clickhouse-local` prend désormais en charge les requêtes `SYSTEM START LISTEN` et `SYSTEM STOP LISTEN`, ce qui permet de le transformer en serveur acceptant des connexions TCP et HTTP. [#101143](https://github.com/ClickHouse/ClickHouse/pull/101143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’une commande interactive `help` à `clickhouse-client` et `clickhouse-local`. La saisie de `help <name>` (ou `/help`, `man`, `/man`) affiche dans le terminal la documentation d’une fonction, d’un moteur de table, d’un type de données, d’un format, d’un paramètre ou d’un autre composant, rendue à partir de Markdown avec coloration syntaxique SQL. Lorsque le terme est ambigu, toutes les correspondances sont affichées ; s’il est introuvable, des noms similaires sont suggérés. [#108042](https://github.com/ClickHouse/ClickHouse/pull/108042) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de l’écriture dans Azure Data Lake Storage Gen2. [#105406](https://github.com/ClickHouse/ClickHouse/pull/105406) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout du format `RowBinaryWithNamesAndTypesAndDefaults` pour une meilleure prise en charge de l’évolution du schéma. [#105736](https://github.com/ClickHouse/ClickHouse/pull/105736) ([Mark Zitnik](https://github.com/mzitnik)).
* Implémentation de `ADD ENUM VALUES` dans les requêtes `ALTER TABLE` afin de simplifier l’ajout de nouvelles valeurs à un type `Enum` existant, sans devoir redéfinir toutes les valeurs `Enum` actuelles. [#93830](https://github.com/ClickHouse/ClickHouse/pull/93830) ([Ilya Golshtein](https://github.com/ilejn)).
* La vue matérialisée actualisable prend désormais en charge `REFRESH DEPENDS ON`, afin de déclencher des actualisations en fonction des actualisations d’une autre RMV plutôt que selon une planification temporelle. (`REFRESH EVERY ... DEPENDS ON` existait déjà, mais ne pouvait pas être utilisé de manière fiable pour ce cas d’usage.) Voir la documentation de `CREATE MATERIALIZED VIEW`. [#104440](https://github.com/ClickHouse/ClickHouse/pull/104440) ([Michael Kolupaev](https://github.com/al13n321)).
* Ajout de la prise en charge de la sélection de colonnes par motif de nom avec `* LIKE '<pattern>'` et `* ILIKE '<pattern>'`, y compris les formes qualifiées telles que `table.* LIKE '<pattern>'` et `table.* ILIKE '<pattern>'`. `LIKE` fait correspondre les noms de colonnes en respectant la casse, `ILIKE` sans tenir compte de la casse. [#104569](https://github.com/ClickHouse/ClickHouse/pull/104569) ([Yue Ni](https://github.com/niyue)).
* Ajout de la syntaxe `ESCAPE`, qui définit un caractère d’échappement personnalisé dans un motif `LIKE`, afin de traiter `%` et `_` comme des caractères littéraux plutôt que comme des caractères génériques. [#99774](https://github.com/ClickHouse/ClickHouse/pull/99774) ([Ilya Yatsishin](https://github.com/qoega)).
* Ajout des paramètres de table `MergeTree` `materialize_projections_on_insert` et `materialize_projections_on_merge`. Lorsque `materialize_projections_on_insert = 0`, les `INSERT` n’effectuent pas la construction des projection parts, ce qui améliore le débit d’insertion pour les tables comportant de nombreuses projections. Lorsque `materialize_projections_on_merge = 1`, une fusion reconstruit une projection absente de toutes ses parts sources, de sorte que les projections peuvent être construites lors des fusions plutôt qu’à l’insertion. Les fusions continuent de ne combiner que les parts qui partagent le même ensemble de projections. [#100993](https://github.com/ClickHouse/ClickHouse/pull/100993) ([Christoph Wurm](https://github.com/cwurm)).
* Ajout d’un nouveau paramètre `MergeTree` immuable, `allow_tuple_element_aggregation`, désactivé par défaut. Lorsqu’il est activé, `SummingMergeTree`, `AggregatingMergeTree` et `CoalescingMergeTree` aplatissent récursivement les colonnes `Tuple` et agrègent chaque élément feuille indépendamment pendant les fusions, exactement comme s’il s’agissait d’une colonne de premier niveau : `SummingMergeTree` en fait la somme, `AggregatingMergeTree` fusionne son état de fonction d’agrégation, et `CoalescingMergeTree` conserve sa dernière valeur non-NULL. Le paramètre doit être spécifié au moment de la création de la table et est ignoré silencieusement par les engines qui ne le prennent pas en charge. [#98039](https://github.com/ClickHouse/ClickHouse/pull/98039) ([johnjing](https://github.com/JingYanchao)).
* Nouvelles fonctions `quantizeBFloat16ToInt8` et `dequantizeInt8ToBFloat16` : un codec scalaire qui compresse les composantes d’embedding en 8 bits à l’aide d’un quantificateur gaussien de Lloyd-Max à 256 niveaux, à partir duquel des codes Int4/Int2/binary peuvent être extraits par troncature de bits. [#108102](https://github.com/ClickHouse/ClickHouse/pull/108102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des fonctions `arrayTopK` et `arrayBottomK` : - `arrayTopK(k, array)` renvoie les K plus grands éléments par ordre décroissant - `arrayBottomK(k, array)` renvoie les K plus petits éléments par ordre croissant. [#104563](https://github.com/ClickHouse/ClickHouse/pull/104563) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ajout d’une nouvelle table système `system.iceberg_files` exposant les métadonnées par fichier des tables `Iceberg`, avec une ligne par fichier de données ou de suppression dans le snapshot courant de chaque table. Cela clôt [#98777](https://github.com/ClickHouse/ClickHouse/issues/98777). [#104415](https://github.com/ClickHouse/ClickHouse/pull/104415) ([Asya Shneerson](https://github.com/asya-ch)).
* Ajout de la table `system.constraints`, qui fournit des informations sur toutes les contraintes `CHECK` et `ASSUME` de l’ensemble des tables, y compris le nom, le type et l’expression de la contrainte. [#105337](https://github.com/ClickHouse/ClickHouse/pull/105337) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Ajout d’une nouvelle table `system.dictionary_layouts` qui répertorie les layouts de dictionnaire disponibles, ainsi que leur documentation intégrée (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106182](https://github.com/ClickHouse/ClickHouse/pull/106182) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’une nouvelle table `system.dictionary_sources` qui répertorie les sources de dictionnaire disponibles, ainsi que leur documentation intégrée (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106184](https://github.com/ClickHouse/ClickHouse/pull/106184) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’une nouvelle table `system.data_skipping_index_types` qui répertorie les types d’index de saut de données disponibles, ainsi que leur documentation intégrée (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106186](https://github.com/ClickHouse/ClickHouse/pull/106186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’une nouvelle table `system.disk_types` qui répertorie les types de disque disponibles, ainsi que leur documentation intégrée (`description`, `syntax`, `examples`, `introduced_in`, `related`). [#106187](https://github.com/ClickHouse/ClickHouse/pull/106187) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Implémentation de `SYSTEM RESTART DISK <name>` : cette commande recharge désormais les métadonnées en mémoire d’un disque et réanalyse les data parts des tables readonly-replica qui s’y trouvent. Cela permet à une replica readonly d’une table sur un stockage partagé `plain_rewritable` de voir à la demande les données écrites par un autre serveur, sans attendre `refresh_parts_interval` ni redémarrer le serveur. [#106645](https://github.com/ClickHouse/ClickHouse/pull/106645) ([Jordi Villar](https://github.com/jrdi)).
* La syntaxe de style PostgreSQL `expr OP SOME(array)` / `expr OP ALL(array)` (avec un côté droit qui n’est pas une sous-requête) est désormais prise en charge et réécrite en `has` / `NOT has` pour `=`/`<>`, ou en lambdas `arrayExists` / `arrayAll` pour les autres opérateurs de comparaison. `ANY` n’est pas accepté pour la forme tableau, car `any` est aussi une fonction d’agrégation ; utilisez `SOME` à la place. La forme sous-requête de `ANY`/`SOME`/`ALL` continue d’être abaissée en `IN` / `NOT IN`. [#105129](https://github.com/ClickHouse/ClickHouse/pull/105129) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de deux nouvelles stratégies `load_balancing`, `hostname_longest_common_prefix` et `hostname_longest_common_suffix`, qui privilégient la replica dont le hostname partage le plus long préfixe commun (respectivement suffixe commun) avec le hostname de l’initiateur. Elles sont utiles lorsque le centre de données est encodé sous forme de préfixe ou de suffixe dans des hostnames dont les segments numériques ont une longueur variable, et que les stratégies existantes `nearest_hostname` et `hostname_levenshtein_distance` sélectionnent la mauvaise replica. [#107360](https://github.com/ClickHouse/ClickHouse/pull/107360) ([Denny \[DBA at Innervate\]](https://github.com/den-crane)).
* Ajout des informations sur le certificat client TLS (subjects, numéro de série, issuer et période de validité) dans la table `system.session_log` afin d’améliorer l’observabilité de l’authentification par certificat. [#107679](https://github.com/ClickHouse/ClickHouse/pull/107679) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’un identifiant facultatif `external_id` pour l’accès S3 basé sur les rôles. [#106941](https://github.com/ClickHouse/ClickHouse/pull/106941) ([Elian Gidoni](https://github.com/eliangidoni)).
* Ajout d’un nouveau setting `S3Queue`, `after_processing_move_preserve_path`. Lorsqu’il est activé avec `after_processing='move'` et `after_processing_move_prefix`, les objets traités sont déplacés en conservant l’intégralité de leur path source sous le préfixe de destination, au lieu d’être aplatis pour ne conserver que le nom du fichier. [#105354](https://github.com/ClickHouse/ClickHouse/pull/105354) ([Asya Shneerson](https://github.com/asya-ch)).
* Ajout du server setting `message_queue_disable_insertion` pour désactiver l’insertion depuis les engines de file de messages (`Kafka`, `RabbitMQ`, `NATS`) vers les materialized views attachées. Utile dans les scénarios de replica en lecture seule. [#104911](https://github.com/ClickHouse/ClickHouse/pull/104911) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Ajout de `LOCALTIME` et `LOCALTIMESTAMP` (syntaxe SQL standard / PostgreSQL). `LOCALTIMESTAMP` est un alias de `now()` (renvoie `DateTime`) ; `LOCALTIME` renvoie l’heure courante sous forme de valeur `Time`. [#106139](https://github.com/ClickHouse/ClickHouse/pull/106139) ([Thomas Cabral](https://github.com/thomas-cabral)).
* Ajout de `date_part('unit', expr)` comme sucre syntaxique pour `EXTRACT(unit FROM expr)`. Les unités d’Interval standard ainsi que les extensions PostgreSQL (`epoch`, `dow`, `doy`, `isodow`, `isoyear`, `century`, `decade`, `millennium`) sont toutes prises en charge. [#105127](https://github.com/ClickHouse/ClickHouse/pull/105127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de `EXTRACT(TIMEZONE_HOUR FROM dt)` et `EXTRACT(TIMEZONE_MINUTE FROM dt)`, compatibles avec PostgreSQL, pour extraire les composantes heure et minute d’un décalage de timezone, ainsi que de `EXTRACT(<unit> FROM INTERVAL n <unit>)` / `date_part('<unit>', INTERVAL n <unit>)` pour extraire la valeur d’un interval. [#106227](https://github.com/ClickHouse/ClickHouse/pull/106227) ([Vinayak Joshi](https://github.com/vinayakj592)).
* Ajout des alias d’agrégation `min_by` et `max_by` pour `argMin` et `argMax`. [#105712](https://github.com/ClickHouse/ClickHouse/pull/105712) ([Joey Yu](https://github.com/itsjoeoui)). Ces alias sont stupides, les vrais ingénieurs utilisent les noms d’origine de ClickHouse.
* Ajout de `REGEXP_SUBSTR` comme alias insensible à la casse de `regexpExtract` pour la compatibilité avec Oracle/MySQL/Snowflake. [#105122](https://github.com/ClickHouse/ClickHouse/pull/105122) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de `SESSION_USER` comme alias insensible à la casse de `currentUser()` pour la compatibilité PostgreSQL / SQL standard. [#106081](https://github.com/ClickHouse/ClickHouse/pull/106081) ([Takumi Hara](https://github.com/takumihara)).
* Prise en charge d’un modificateur final `NULL` / `NOT NULL` dans `ALTER TABLE ... ADD/MODIFY COLUMN`, à l’image de `CREATE TABLE`. [#106150](https://github.com/ClickHouse/ClickHouse/pull/106150) ([Takumi Hara](https://github.com/takumihara)).
* Vous pouvez désormais utiliser la fonction `h3PolygonToCellsWithContainment` de h3 pour bénéficier de son nouvel algorithme, qui prend en charge les modes de containment basés sur le centre, entièrement contenus et avec chevauchement. [#104455](https://github.com/ClickHouse/ClickHouse/pull/104455) ([Youssef Kadry](https://github.com/yousefQadry)).
* Ajoute les flags `IPV4_PREFIX_BITS and IPV6_PREFIX_BITS` lorsque le keying est effectué à partir de `IP_ADDRESS` ou `FORWARDED_IP_ADDRESS`. [#89270](https://github.com/ClickHouse/ClickHouse/pull/89270) ([Aditya Chopra](https://github.com/adityachopra29)).
* `formatReadableTimeDelta` accepte désormais en entrée une expression `INTERVAL` d'un type autre que `Month` et `Year`. [#64315](https://github.com/ClickHouse/ClickHouse/pull/64315) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* L'utilisateur peut désormais spécifier un argument de précision facultatif pour les fonctions `formatReadableSize`, `formatReadableDecimalSize` et `formatReadableQuantity`, afin de contrôler le nombre de chiffres après la virgule. La valeur par défaut est 2, ce qui préserve le comportement antérieur. [#104648](https://github.com/ClickHouse/ClickHouse/pull/104648) ([Antonio Filipovic](https://github.com/antoniofilipovic)).
* Ajoute le paramètre `output_format_float_precision` pour contrôler le nombre de chiffres décimaux dans la sortie texte des nombres à virgule flottante. [#99721](https://github.com/ClickHouse/ClickHouse/pull/99721) ([phulv94](https://github.com/phulv94)).
* Ajout du paramètre `output_format_always_write_decimal_point_in_float_and_decimal` pour toujours afficher un point décimal pour les nombres à virgule flottante et les nombres `Decimal` dans les formats texte, même lorsque la valeur est un nombre entier. Par exemple, produit `1.` au lieu de `1`. Désactivé par défaut. [#62614](https://github.com/ClickHouse/ClickHouse/pull/62614) ([Ilya Yatsishin](https://github.com/qoega)).
* Ajoute la prise en charge de nouveaux éléments de configuration de handler HTTP `<url_prefix>` et `<full_url_prefix>` (correspondent à tous les paths sous un path de base, utile par exemple pour les handlers Prometheus), ainsi que de `<url_regexp>`, `<full_url_regexp>` et `<headers_regexp>`. L'ancienne forme `<url>regex:...</url>` est désormais obsolète. [#107492](https://github.com/ClickHouse/ClickHouse/pull/107492) ([Vitaly Baranov](https://github.com/vitlibar)).
* Prend en charge les statistiques `basic`, une statistique compacte par colonne qui stocke les min/max numériques, la longueur moyenne des chaînes et le nombre de valeurs NULL lorsque cela s'applique. [#106048](https://github.com/ClickHouse/ClickHouse/pull/106048) ([Han Fei](https://github.com/hanfei1991)).
* Prend en charge les nœuds TTL dans ClickHouse Keeper, activables via le flag de feature `create_ttl`. [#100397](https://github.com/ClickHouse/ClickHouse/pull/100397) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Introduit une fonctionnalité de réservation de mémoire pour les workloads. Consultez la documentation sur la [planification des workloads](https://clickhouse.com/docs/operations/workload-scheduling). [#82414](https://github.com/ClickHouse/ClickHouse/pull/82414) ([Sergei Trifonov](https://github.com/serxa)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* Exécution distribuée des requêtes en plusieurs étapes : le planificateur divise le plan de requête en étapes reliées par des échanges scatter / broadcast / gather / shuffle et envoie les fragments du plan aux nœuds worker. Les données entre les étapes sont transmises en flux via TCP ou via des fichiers temporaires dans un stockage objet partagé ; ce mécanisme prend en charge les hash joins distribués en mode shuffle et broadcast, l’agrégation shuffle et le tri distribué. Cette fonctionnalité est expérimentale et désactivée par défaut. [#106020](https://github.com/ClickHouse/ClickHouse/pull/106020) ([Alexander Gololobov](https://github.com/davenger)). Le moteur expérimental de plan de requête distribué (`make_distributed_plan`) peut désormais utiliser, pour chaque worker, un port distinct pour la répartition des tâches et les échanges en streaming, configuré par réplique dans `<remote_servers>` avec `stateless_worker_port` et `streaming_exchange_port`. Lorsqu’ils ne sont pas définis, les anciens ports au niveau du serveur (`stateless_worker_client.port` et `distributed_query.streaming_exchange_port`) sont utilisés. Cela permet d’exécuter plusieurs workers sur un même hôte. [#107885](https://github.com/ClickHouse/ClickHouse/pull/107885) ([Alexander Gololobov](https://github.com/davenger)).
* Ajout de l’algorithme expérimental de réordonnancement des join `dphyp` pour les inner joins comme option du paramètre `query_plan_optimize_join_order_algorithm`, ainsi que du paramètre `query_plan_optimize_join_order_max_searched_plans`, qui borne la recherche de l’ordre des join et bascule vers l’algorithme suivant de la chaîne lorsque cette limite est dépassée ; définissez-le sur `0` pour conserver le comportement précédent de recherche non bornée. [#98798](https://github.com/ClickHouse/ClickHouse/pull/98798) ([Alexander Gololobov](https://github.com/davenger)).
* Ajout de la fonction `aiEmbed` pour utiliser des API de LLM afin de générer des embeddings directement depuis ClickHouse. [#102922](https://github.com/ClickHouse/ClickHouse/pull/102922) ([George Larionov](https://github.com/george-larionov)).
* Ajout d’un canary OOM Linux expérimental : un processus enfant sacrificiel que le Linux OOM killer cible avant le processus principal du serveur. Lorsqu’il est activé avec `oom_canary_enable`, il réduit la pression mémoire en purgeant les caches de l’allocateur, en annulant les requêtes, en annulant les fusions et en enregistrant un événement dans `system.crash_log`. La réponse à l’OOM nécessite une preuve d’OOM-kill dans `memory.events` de cgroup v2. [#101942](https://github.com/ClickHouse/ClickHouse/pull/101942) ([Peng](https://github.com/fastio)).
* L’interface de terminal web à l’adresse `/webterminal` est désormais une fonctionnalité de production et elle est activée par défaut. Elle est contrôlée par le nouveau paramètre serveur `enable_webterminal` ; l’ancien paramètre `allow_experimental_webterminal` est obsolète, mais reste pris en charge pour assurer la backward compatibility. Pour désactiver le endpoint, définissez `enable_webterminal` sur `false`. [#106255](https://github.com/ClickHouse/ClickHouse/pull/106255) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les endpoints HTTP PromQL permettent désormais de spécifier la base de données et la table via des query parameters d’URL (`database=`, `table=`, ou `table=db.table`). Le repli implicite précédent vers la table `default.prometheus` est supprimé : si ni la config du handler ni l’URL ne spécifient de table, le handler renvoie désormais `The time series table name is not set`. Pour conserver l’ancien comportement, configurez `<table>default.prometheus</table>` ou passez `table=...` dans l’URL. [#107553](https://github.com/ClickHouse/ClickHouse/pull/107553) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ajout de la prise en charge de la fonction PromQL `histogram_quantile` dans les fonctions de table `prometheusQuery` et `prometheusQueryRange`. Cela permet de calculer des quantiles sur les buckets d’histogrammes Prometheus classiques identifiés par le label `le`. [#103477](https://github.com/ClickHouse/ClickHouse/pull/103477) ([Joe Smith](https://github.com/Yasumoto)).
* Ajout du mode d’application lazy des posting lists pour le text index. Lorsqu’il est activé via `SET allow_experimental_text_index_lazy_apply = 1` et `SET text_index_posting_list_apply_mode = 'lazy'`, les posting lists sont décodées à la demande à la granularité des blocs compressés à l’aide d’une approche basée sur un curseur, au lieu d’être entièrement matérialisées en Roaring Bitmaps, ce qui réduit l’utilisation mémoire et le temps CPU pour les text index queries sélectives. [#100035](https://github.com/ClickHouse/ClickHouse/pull/100035) ([Peng](https://github.com/fastio)).
* Ajout de la prise en charge de l’ABI [AssemblyScript](https://www.assemblyscript.org) pour les UDF WebAssembly. Vous pouvez essayer l’ABI AssemblyScript sans installer la toolchain localement en utilisant le [playground](https://pastila.nl/?0009878e/b9768c4e2144d0c2f3dd512e7a1aaf69.html) dans le navigateur, qui compile le code AssemblyScript et charge le module WebAssembly obtenu dans une instance locale de ClickHouse. [#104606](https://github.com/ClickHouse/ClickHouse/pull/104606) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Possibilité d’attacher des handlers Prometheus au port HTTP principal avec un préfixe facultatif. [#104975](https://github.com/ClickHouse/ClickHouse/pull/104975) ([James Cunningham](https://github.com/JTCunning)).
* Ajout du setting expérimental `MergeTree` `packed_skip_index_max_bytes`, qui regroupe les petits substreams d’indices de saut dans une archive unique `skp_idx.packed` par part, ce qui réduit la pression sur les inodes lorsque de nombreux indices de saut sont définis sur une table. La décision est prise par substream au moment de l’écriture : les substreams dont la taille sérialisée reste sous le threshold sont placés dans l’archive, tandis que les plus gros conservent le layout standalone `skp_idx_<name>.idx2` / `.mrk2`. Une même part peut mélanger les layouts. Les indices full-text ne sont pas pris en charge et restent toujours stockés fichier par fichier. La valeur par défaut est 0 (packing désactivé). [#105321](https://github.com/ClickHouse/ClickHouse/pull/105321) ([Raúl Marín](https://github.com/Algunenano)).
* Prise en charge de la sérialisation `Buffers` pour les UDF WebAssembly avec `ABI BUFFERED_V1`, et ajout de `webassembly_udf_enable_fuel` comme setting persisted de fonction UDF WASM. [#105574](https://github.com/ClickHouse/ClickHouse/pull/105574) ([Antonio Andelic](https://github.com/antonio2368)).
* Ajout d’un setting expérimental `use_reader_executor` (désactivé par défaut) qui fait passer les reads par un nouveau `ReaderExecutor` basé sur un pipeline, au lieu de la chaîne legacy de read buffers. [#106570](https://github.com/ClickHouse/ClickHouse/pull/106570) ([Sema Checherinda](https://github.com/CheSema)). Ajout de metrics d’observabilité pour le chemin de lecture expérimental `use_reader_executor`, y compris un KPI modélisé de coût de lecture (`ReaderExecutorModeledCostMsPerRequestedMiB`). [#106968](https://github.com/ClickHouse/ClickHouse/pull/106968) ([Sema Checherinda](https://github.com/CheSema)). Introduction du buffer `ChainedBuffers` derrière le chemin de lecture expérimental `use_reader_executor`, avec une metric `ReaderExecutorChainedBufferBytes`. [#107210](https://github.com/ClickHouse/ClickHouse/pull/107210) ([Sema Checherinda](https://github.com/CheSema)).
* L’ordre de tri décroissant dans les sorting keys `MergeTree` (par ex. `ORDER BY (time DESC, key)`) est désormais toujours pris en charge et ne nécessite plus le setting expérimental `allow_experimental_reverse_key`, désormais Obsolete. [#106440](https://github.com/ClickHouse/ClickHouse/pull/106440) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `Nullable(Tuple(...))` est désormais Beta. Désactivé par défaut ; définissez `enable_nullable_tuple_type = 1` pour l’utiliser. [#107754](https://github.com/ClickHouse/ClickHouse/pull/107754) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* Divers changements apportés à Keeper le rendent globalement environ 2x plus rapide (meilleur traitement par lots, mise en pipeline des messages vers le leader, mise en pipeline des ajouts au journal). [#101757](https://github.com/ClickHouse/ClickHouse/pull/101757) ([Michael Kolupaev](https://github.com/al13n321)).
* Réduit le surcoût par query pour les requêtes `SELECT` simples (parsing, analyse et planification). Par exemple, `SELECT count() FROM hits` sur une seule connection est environ 50 % plus rapide. [#104513](https://github.com/ClickHouse/ClickHouse/pull/104513) ([Raúl Marín](https://github.com/Algunenano)).
* Optimise l’analyse de l’index de clé primaire pour les clés primaires longues et à forte cardinalité. Pour une clé primaire longue, le temps d’exécution de l’analyse d’index dépend désormais principalement de la complexité du filter de la query (les key columns qu’elle utilise réellement), et non de la longueur de la clé primaire — ainsi, étendre la sorting key n’ajoute qu’un surcoût négligeable à l’analyse d’index pour les queries qui ne filtrent que sur quelques-unes de ses columns. Pour une clé primaire à forte cardinalité, lorsque ClickHouse ne conserve en mémoire qu’un préfixe sélectif des key columns et ne charge pas les suivantes, l’analyse d’index fonctionne désormais uniquement sur ce préfixe in-memory au lieu de la clé entière. L’optimization est activée par défaut et peut être désactivée avec le nouveau setting `use_lightweight_primary_key_index_analysis`. Closes [#65103](https://github.com/ClickHouse/ClickHouse/issues/65103). [#91836](https://github.com/ClickHouse/ClickHouse/pull/91836) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* La build x86 par défaut cible désormais x86-64-v3 (AVX2) au lieu de x86-64-v2 (SSE4.2). Cela nécessite un CPU prenant en charge AVX2 (Intel Haswell ou version ultérieure, AMD Excavator ou version ultérieure). Si votre CPU ne prend pas en charge AVX2, utilisez la build `amd64compat`, qui cible le x86-64 standard. [#105019](https://github.com/ClickHouse/ClickHouse/pull/105019) ([Raúl Marín](https://github.com/Algunenano)).
* Utilise `ipnsort` et `driftsort` (tri stable) — des ports C++ des implémentations de tri de la bibliothèque standard de Rust — pour les tris par comparaison à usage général. Accélère `ORDER BY` sur les columns non numériques et les tris stables, et élimine un cas défavorable sur des entrées triées dans l’ordre inverse. [#106650](https://github.com/ClickHouse/ClickHouse/pull/106650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nouvelle optimization de `GROUP BY` pour les clés à forte cardinalité réparties uniformément, qui répartit les lignes entre les threads en hachant la grouping key, de sorte que chaque thread agrège un sous-ensemble disjoint de clés sans phase de merge. Définissez `enable_sharding_aggregator = 1` pour l’activer. [#104233](https://github.com/ClickHouse/ClickHouse/pull/104233) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Active le prefetching de la hash table pour les queries `GROUP BY` avec clé de type chaîne, améliorant d’environ 8 % les performances d’aggregation sur des chaînes à forte cardinalité. [#101007](https://github.com/ClickHouse/ClickHouse/pull/101007) ([Le Zhang](https://github.com/damahua)).
* Réduit le pic d’utilisation mémoire lors du merge de résultats partiels d’aggregation à deux niveaux avec de grands aggregate states (par ex. `groupArray`), en libérant progressivement les états source de chaque bucket pendant le merge au lieu de tous les conserver jusqu’à la fin. [#102330](https://github.com/ClickHouse/ClickHouse/pull/102330) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* La représentation en mémoire de `Enum` `DataType` a été optimisée. L’empreinte mémoire des tables contenant le type `Enum` peut être réduite jusqu’à un facteur 10 pour le composant `Enum`. Le temps nécessaire pour retrouver le nom à partir de la valeur (nombre) est similaire ou plus rapide. La recherche par nom est légèrement plus lente, mais ce mode d’accès est moins courant. [#95668](https://github.com/ClickHouse/ClickHouse/pull/95668) ([Ilya Yatsishin](https://github.com/qoega)).
* Ajoute un cache de résolution d’identifiants afin d’éviter les résolutions d’identifiants redondantes pendant la query analysis. [#88043](https://github.com/ClickHouse/ClickHouse/pull/88043) ([Max Justus Spransy](https://github.com/maxjustus)).
* Amélioration des performances de l’analyse des requêtes sur des tables comportant de nombreuses colonnes : évite de calculer les hachages des nœuds de colonne (qui incluent l’expression complète de la table source) lorsque ce n’est pas nécessaire. L’analyse de sous-requêtes `SELECT *` imbriquées sur une table avec \~1200 colonnes est désormais environ 50 fois plus rapide. [#106957](https://github.com/ClickHouse/ClickHouse/pull/106957) ([Dmitry Novik](https://github.com/novikd)).
* Accélération de l’analyse des requêtes comportant de nombreux appels de fonction, ou des appels de fonction profondément imbriqués, grâce à la suppression d’un hachage redondant de l’arbre de requête du cache de résolution des fonctions. [#107516](https://github.com/ClickHouse/ClickHouse/pull/107516) ([Dmitry Novik](https://github.com/novikd)).
* Correction des longs blocages à la connexion et au démarrage des requêtes avec le stockage d’accès répliqué lorsque de nombreuses entités d’accès (row policies, rôles, quotas, settings profiles) changent en même temps. Chaque cache par entité est désormais recalculé une seule fois par lot de notifications au lieu d’une fois par entité modifiée, supprimant ainsi un travail quadratique qui pouvait maintenir le verrou d’accès pendant plusieurs minutes. [#107672](https://github.com/ClickHouse/ClickHouse/pull/107672) ([Azat Khuzhin](https://github.com/azat)).
* Partage du `FixedHashMap` du hash join comme JOIN runtime filter du côté probe. Lorsque la hash table du côté build est (ou peut être convertie en) `FixedHashMap`, elle est publiée comme runtime filter et remplace le `Set`/`BloomFilter` que `BuildRuntimeFilterStep` installerait autrement. Contrôlé par le nouveau paramètre `join_runtime_filter_from_fixed_hash_table` (valeur par défaut : `true`). [#105640](https://github.com/ClickHouse/ClickHouse/pull/105640) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Application lazy des index de selector et de replication dans le cas d’un `JOIN` suivi d’un `LIMIT` sélectif, d’un `TopN` ou d’un autre `JOIN`. Pour contrôler le nombre de colonnes de charge utile permettant d’activer l’indexation lazy du selector, utilisez le paramètre `query_plan_min_columns_for_join_lazy_indexing` (0 signifie que l’optimization est désactivée). Pour contrôler le `LIMIT` auquel l’optimization s’applique, utilisez le paramètre `query_plan_max_limit_for_join_lazy_indexing`. [#106566](https://github.com/ClickHouse/ClickHouse/pull/106566) ([Hechem Selmi](https://github.com/m-selmi)).
* Le réordonnancement des JOIN par DP (programmation dynamique) est désormais autorisé avec les parallel replicas. [#105889](https://github.com/ClickHouse/ClickHouse/pull/105889) ([Nikita Taranov](https://github.com/nickitat)).
* Amélioration du query plan lorsque JOIN utilise des Runtime Filters (`enable_join_runtime_filters` activé par défaut) : le modèle de coût de réordonnancement des jointures voit désormais au-delà de `WindowTransform` (et des autres plan steps qui préservent les rows) dans le sous-arbre droit et utilise le nombre de rows sous-jacent ainsi que le NDV par column au lieu de se rabattre sur l’absence de STATISTICS. [#107229](https://github.com/ClickHouse/ClickHouse/pull/107229) ([UnamedRus](https://github.com/UnamedRus)).
* Dévirtualisation de l’émission des rows non jointes dans les jointures RIGHT et FULL en les regroupant par lots. [#105679](https://github.com/ClickHouse/ClickHouse/pull/105679) ([Hechem Selmi](https://github.com/m-selmi)).
* Prise en charge des méthodes compactes `keys32` et `keys64` dans `HashJoin`. [#107202](https://github.com/ClickHouse/ClickHouse/pull/107202) ([Nikita Taranov](https://github.com/nickitat)).
* Prise en charge des méthodes compactes `keys32` et `keys64` dans `Set`. [#107564](https://github.com/ClickHouse/ClickHouse/pull/107564) ([Nikita Taranov](https://github.com/nickitat)).
* Gestion plus optimale des nullable columns dans l’aggregation. [#106015](https://github.com/ClickHouse/ClickHouse/pull/106015) ([Nikita Taranov](https://github.com/nickitat)).
* Amélioration des performances des requêtes `LIMIT BY`. [#103349](https://github.com/ClickHouse/ClickHouse/pull/103349) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Accélère les requêtes `ORDER BY ... LIMIT BY` en exécutant `LIMIT BY` dans chaque flux trié parallèle pendant `Sort` lorsque les colonnes de `LIMIT BY` forment un préfixe de `ORDER BY`. Cela réduit le nombre de lignes passant par la fusion de tri finale et par les étapes de pipeline en aval. Cette optimisation est contrôlée par le nouveau paramètre `query_plan_push_limit_by_into_sort` (activé par défaut). [#104000](https://github.com/ClickHouse/ClickHouse/pull/104000) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Accélère les requêtes `SELECT ... LIMIT N BY <cols>` lorsque `<cols>` sont un préfixe de la clé de tri de la table, ou le deviennent après que `WHERE col = const` a fixé les colonnes de tête. Lorsque cette option est activée, `MergeTree` lit les données dans l’ordre de la clé primaire et `LIMIT BY` filtre d’abord en mode streaming avec une mémoire en O(1) par flux trié, ce qui élimine l’essentiel des données, puis exécute finalement un `LIMIT BY` ordinaire sur les données réduites pour obtenir le résultat final. Contrôlé par le nouveau paramètre `optimize_limit_by_in_order` (activé par défaut). [#105135](https://github.com/ClickHouse/ClickHouse/pull/105135) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Accélère les requêtes `LIMIT BY` sur les tables `MergeTree` partitionnées en exécutant `LIMIT BY` dans le flux de chaque partition en parallèle, au lieu de fusionner tous les flux en un seul avant d’appliquer la limite. Cela s’applique lorsque l’expression de partition est une fonction déterministe des colonnes de `LIMIT BY`, de sorte qu’aucun groupe `LIMIT BY` ne puisse s’étendre sur deux partitions. Contrôlé par le nouveau paramètre `allow_limit_by_partitions_independently` (activé par défaut). [#105126](https://github.com/ClickHouse/ClickHouse/pull/105126) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Accélère les requêtes `LIMIT BY` en supprimant les expressions de clé redondantes : une clé qui est une fonction déterministe des autres clés est supprimée (par ex. `LIMIT 5 BY x, f(x)` devient `LIMIT 5 BY x`), et une fonction injective d’une clé est remplacée par son argument (par ex. `LIMIT 5 BY toString(x)` devient `LIMIT 5 BY x`). Cela permet d’évaluer moins d’expressions, et à moindre coût, par ligne. Contrôlé par les nouveaux paramètres `optimize_limit_by_function_keys` et `optimize_injective_functions_in_limit_by`, tous deux activés par défaut. [#106818](https://github.com/ClickHouse/ClickHouse/pull/106818) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Accélère l’agrégation distribuée, la répartition en buckets des jointures `grace_hash` et le partitionnement parallèle des fenêtres en remplaçant le hachage des colonnes par chunk par un kernel utilisant le CRC32C matériel. [#106538](https://github.com/ClickHouse/ClickHouse/pull/106538) ([Harikrishnan Prabakaran](https://github.com/harikrishnan94)).
* Optimise `L1Distance`, `L2Distance`, `L2SquaredDistance`, `LinfDistance` et `cosineDistance` pour les arguments de type Array grâce à une auto-vectorisation multi-cible sur x86-64-v4/v3. Pour les arguments Array non constants, toutes sauf `LpDistance`, qui utilise `std::pow` avec un exposant déterminé à l’exécution, peuvent désormais utiliser des kernels vectorisés par le compilateur. Les chemins rapides existants AVX-512 et Sapphire Rapids `BFloat16` à arguments constants pour `L2Distance` et `cosineDistance` sont conservés. [#101310](https://github.com/ClickHouse/ClickHouse/pull/101310) ([Peng](https://github.com/fastio)).
* Amélioration des performances des fonctions `{Norm}Distance` et `dotProduct`. [#106007](https://github.com/ClickHouse/ClickHouse/pull/106007) ([Nikita Taranov](https://github.com/nickitat)).
* Amélioration des performances de la fonction `arrayNorm`. [#106211](https://github.com/ClickHouse/ClickHouse/pull/106211) ([Nikita Taranov](https://github.com/nickitat)).
* Les performances de `dotProduct` ont été améliorées dans certains cas. [#106210](https://github.com/ClickHouse/ClickHouse/pull/106210) ([Nikita Taranov](https://github.com/nickitat)).
* Amélioration des performances des chemins AVX-512 const-left pour `L2Distance` et `cosineDistance` sur `Array(Float32)`, `Array(Float64)` et `Array(BFloat16)` lorsque la longueur du tableau est un multiple exact de la largeur de traitement vectoriel. [#104625](https://github.com/ClickHouse/ClickHouse/pull/104625) ([Sergey Kuznetsov](https://github.com/skuznetsov)).
* Activation de la génération de code AVX-512 pour AMD et amélioration de la génération de code pour `arrayDistance`. [#106505](https://github.com/ClickHouse/ClickHouse/pull/106505) ([Nikita Taranov](https://github.com/nickitat)).
* Amélioration des performances des fonctions `L2DistanceTransposed` et `cosineDistanceTransposed` pour le type de données `QBit`. [#106701](https://github.com/ClickHouse/ClickHouse/pull/106701) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Amélioration des performances des fonctions `encrypt`, `decrypt`, `tryDecrypt`, `aes_encrypt_mysql` et `aes_decrypt_mysql` jusqu’à un facteur de 10, en récupérant les performances perdues lors de la migration de BoringSSL vers OpenSSL 3.x (24.4). [#107339](https://github.com/ClickHouse/ClickHouse/pull/107339) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Amélioration des performances des fonctions `encrypt`, `decrypt` et `halfMD5` en évitant les recherches implicites du provider OpenSSL pour chaque ligne dans OpenSSL 3.x. [#99105](https://github.com/ClickHouse/ClickHouse/pull/99105) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Ajout d’une implémentation SIMD de `SHA1` qui calcule le hachage de plusieurs entrées en parallèle à l’aide d’AVX-512, augmentant ainsi le débit. [#105459](https://github.com/ClickHouse/ClickHouse/pull/105459) ([Joanna Hulboj](https://github.com/jh0x)).
* Ajout d’un backend AArch64 ASIMD/NEON pour l’implémentation multi-buffer de `MD5`. [#105563](https://github.com/ClickHouse/ClickHouse/pull/105563) ([Venkata  Vineel ](https://github.com/vyalamar)).
* Regroupement des blocks source avant le calcul de la projection pendant `MATERIALIZE PROJECTION` afin de réduire le nombre de projection parts temporaires et le surcoût des fusions. Accélération d’environ 3,4x sur une table de 50 M de lignes. [#100047](https://github.com/ClickHouse/ClickHouse/pull/100047) ([Amos Bird](https://github.com/amosbird)).
* Réduction de la latence de `INSERT` pour les tables `MergeTree` avec des index de saut sur les colonnes `ORDER BY` en évitant les permutations redondantes de colonnes lors de l’écriture des parts (\~17 % sur des workloads de type traces). [#101101](https://github.com/ClickHouse/ClickHouse/pull/101101) ([Amos Bird](https://github.com/amosbird)).
* Activation des chemins de code SIMD d’Arrow (NEON sur ARM, SSE4.2/AVX2/AVX512 sur x86) et utilisation de ceux-ci pour accélérer le décodage des colonnes Parquet `FLOAT`/`DOUBLE` encodées en `BYTE_STREAM_SPLIT`. [#106376](https://github.com/ClickHouse/ClickHouse/pull/106376) ([Raúl Marín](https://github.com/Algunenano)).
* Amélioration des performances d’insertion pour les colonnes `LowCardinality` avec des index `bloom_filter`. [#106410](https://github.com/ClickHouse/ClickHouse/pull/106410) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Parallélisation des copies de blobs dans `DiskObjectStorageTransaction::copyFile` à l’aide d’un thread pool par disk. [#105089](https://github.com/ClickHouse/ClickHouse/pull/105089) ([Asya Shneerson](https://github.com/asya-ch)).
* Évite la lecture du contenu des fichiers lors de l’utilisation du input format `One` avec des table functions de type fichier comme `file` et `s3`. [#105157](https://github.com/ClickHouse/ClickHouse/pull/105157) ([Yue Ni](https://github.com/niyue)).
* Accélération d’environ 3x du démarrage de `clickhouse` sur macOS en n’exportant pas les symboles dynamiques, que l’éditeur de liens dynamique traiterait sinon à chaque lancement. [#107768](https://github.com/ClickHouse/ClickHouse/pull/107768) ([Raúl Marín](https://github.com/Algunenano)).
* Accélération du chargement du filesystem cache au démarrage en évitant une ouverture de répertoire redondante pour chaque clé de cache. [#107414](https://github.com/ClickHouse/ClickHouse/pull/107414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accélération du chargement du filesystem cache au démarrage en permettant aux threads chargés du listage des répertoires d'aider au chargement des métadonnées du cache une fois le listage terminé, au lieu de laisser la moitié des threads inactifs. [#107416](https://github.com/ClickHouse/ClickHouse/pull/107416) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Réduction du surcoût au démarrage du processus `clickhouse` grâce à la mise à jour de la bibliothèque WasmEdge intégrée, qui ne génère plus de secret de hash aléatoire dans un initialiseur global à chaque démarrage. [#107869](https://github.com/ClickHouse/ClickHouse/pull/107869) ([Raúl Marín](https://github.com/Algunenano)).
* La primary key de `MergeTree` et les skip indexes peuvent désormais éliminer des granules pour les filters où `ifNull` ou `coalesce` encapsule une condition, comme `ifNull(key = 0, 0)` ou `coalesce(key = 0, 0)`. De tels prédicats — souvent générés par des générateurs de query pour transformer une comparaison potentiellement `NULL` en booléen déterminé — étaient auparavant opaques pour l'index analysis et ne permettaient pas d'ignorer des granules. Cela étend le paramètre existant `allow_key_condition_coalesce_rewrite` (activé par défaut). Corrige [#106264](https://github.com/ClickHouse/ClickHouse/issues/106264). [#106272](https://github.com/ClickHouse/ClickHouse/pull/106272) ([Andy Zhao](https://github.com/andyzzhao)).
* L'évaluation des skip indexes sur les types `DateTime64` devrait consommer moins de CPU en 26.6. [#107707](https://github.com/ClickHouse/ClickHouse/pull/107707) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Amélioration des performances de l'analyse du text index dans les recherches multi-token grâce à l'optimisation du traitement des tokens rares. [#98226](https://github.com/ClickHouse/ClickHouse/pull/98226) ([Anton Popov](https://github.com/CurtizJ)).
* Utilisation d'un cache pour les segments compressés des listes de publication du text index. [#106299](https://github.com/ClickHouse/ClickHouse/pull/106299) ([Anton Popov](https://github.com/CurtizJ)).
* Amélioration des performances de la generic exclusion search pour les queries qui sélectionnent de grandes plages consécutives de la table. [#93813](https://github.com/ClickHouse/ClickHouse/pull/93813) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Les clients `S3` ayant le même endpoint et le même bucket partagent un cache, ce qui évite les découvertes de région en double. Corrige [#92482](https://github.com/ClickHouse/ClickHouse/issues/92482). [#96802](https://github.com/ClickHouse/ClickHouse/pull/96802) ([Andrey Zvonov](https://github.com/zvonand)).
* Si une query contient `has(<constant array>, <expr>)`, l'analyzer transformera le nœud pour utiliser une implémentation `in` plus rapide lorsque c'est possible. [#97341](https://github.com/ClickHouse/ClickHouse/pull/97341) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Lorsqu'un nouveau job est planifié dans `ThreadPool`, le worker thread devenu idle le plus récemment (LIFO) est réveillé plutôt qu'un thread arbitraire. Cela réduit la fragmentation mémoire due aux caches d'allocator par thread. L'ordre de traitement des jobs reste inchangé. [#100177](https://github.com/ClickHouse/ClickHouse/pull/100177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des performances des runtime filters approximatifs et des Bloom filter indexes. [#100201](https://github.com/ClickHouse/ClickHouse/pull/100201) ([Christoph Viebig](https://github.com/cv4g)).
* `ASOF JOIN` peut désormais utiliser l'algorithme de join `parallel_hash`, en parallélisant la phase de construction sur des valeurs distinctes de clé d'égalité. Auparavant, `ASOF` était systématiquement exclu de `parallel_hash`. [#105375](https://github.com/ClickHouse/ClickHouse/pull/105375) ([Greg Maher](https://github.com/gregakinman)).
* Évite de lire des entrées non bornées pour les queries `INTERSECT` et `EXCEPT` lorsqu'une entrée vide permet de savoir que le résultat sera vide. [#105393](https://github.com/ClickHouse/ClickHouse/pull/105393) ([Yue Ni](https://github.com/niyue)).
* Ajout de `constinit` pour divers bloqueurs de `MemoryTracker`. [#105490](https://github.com/ClickHouse/ClickHouse/pull/105490) ([Azat Khuzhin](https://github.com/azat)).
* Amélioration des performances de `bitmapContains` pour les états `groupBitmap` autres que `UInt64`, en évitant les appels répétés à `rb_max` lors des vérifications de plage. [#105960](https://github.com/ClickHouse/ClickHouse/pull/105960) ([Yue Ni](https://github.com/niyue)).
* Accélération des requêtes discontinues sur les colonnes `LowCardinality` reposant sur un dictionnaire unique. [#103662](https://github.com/ClickHouse/ClickHouse/pull/103662) ([Ivan Babrou](https://github.com/bobrik)).
* Ajout d'un chemin rapide pour la phase de probe de `HashJoin` lorsque le block ne contient qu'une seule ligne. [#106008](https://github.com/ClickHouse/ClickHouse/pull/106008) ([Nikita Taranov](https://github.com/nickitat)).
* Les prédicats de requêtes telles que `SELECT ... FROM view(SELECT ... FROM remote(...)) WHERE ... ` sont désormais propagés à la query envoyée au shard distant. L'optimization `allow_push_predicate_ast_for_distributed_subqueries` ne couvrait pas le cas des table functions. [#105986](https://github.com/ClickHouse/ClickHouse/pull/105986) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Activation par défaut de `enable_join_transitive_predicates`. [#103724](https://github.com/ClickHouse/ClickHouse/pull/103724) ([Alexander Gololobov](https://github.com/davenger)).
* Ajout de la prise en charge des fonctions `multiSearchAny`, `multiSearchAnyUTF8` et `multiMatchAny` dans les text indexes. Amélioration également de l'analyse des text indexes pour la fonction `match` : les Patterns comportant des groupes alternatifs permettent désormais d'ignorer davantage de granules. [#106279](https://github.com/ClickHouse/ClickHouse/pull/106279) ([Anton Popov](https://github.com/CurtizJ)).
* Autorise la fusion dans le PREWHERE existant, lors d'un second passage de l'optimiseur, des filters introduits après la sélection PREWHERE initiale (predicate pushdown, runtime filters, ou PREWHERE explicite plus un WHERE défini par le planificateur), au lieu de les conserver comme une étape Filter distincte au-dessus de la lecture `MergeTree`. [#105445](https://github.com/ClickHouse/ClickHouse/pull/105445) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Le `QueryConditionCache` enregistre désormais individuellement les granules filtrés, y compris dans les lots de lecture qui ne passent que partiellement PREWHERE, ce qui réduit le nombre de marks relus par les queries suivantes avec la même condition. [#105335](https://github.com/ClickHouse/ClickHouse/pull/105335) ([Han Fei](https://github.com/hanfei1991)).
* Ajout du paramètre Keeper `nuraft_use_bg_thread_for_snapshot_io`, activé par défaut, afin que `NuRaft` lise les objets snapshot depuis un background thread plutôt que depuis les worker threads de Raft. [#106285](https://github.com/ClickHouse/ClickHouse/pull/106285) ([Antonio Andelic](https://github.com/antonio2368)).
* Réduction du pic d'utilisation mémoire lors de l'application des snapshots reçus dans ClickHouse Keeper avec `KeeperMemoryStorage`. [#105851](https://github.com/ClickHouse/ClickHouse/pull/105851) ([Antonio Andelic](https://github.com/antonio2368)).
* Redirige les allocations LLVM/JIT vers une Arena jemalloc dédiée. Réduit la fragmentation RSS causée par l'entrelacement des structures de suivi JIT de longue durée avec les allocations de query de courte durée. Ajoute de nouvelles métriques asynchrones `jemalloc.jit_arena.active_bytes`, `jemalloc.jit_arena.dirty_bytes`, `CompiledExpressionCacheBytesMax` et `CompiledExpressionCacheCountMax` pour l'observabilité. `SYSTEM DROP COMPILED EXPRESSION CACHE` supprime désormais également les instances CHJIT sous-jacentes et purge l'Arena JIT. [#104113](https://github.com/ClickHouse/ClickHouse/pull/104113) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d'une memory reservation excessive lors de la lecture de colonnes `Nullable(String)` encodées par dictionnaire sparse depuis `Parquet` avec le lecteur native V3. [#102805](https://github.com/ClickHouse/ClickHouse/pull/102805) ([Francisco](https://github.com/Milias)).
* Correction de `CREATE TABLE ... CLONE AS (and REPLACE / ATTACH PARTITION ... FROM)` sur les disques chiffrés, qui copiait les données au lieu de créer des liens physiques. [#106731](https://github.com/ClickHouse/ClickHouse/pull/106731) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Amélioration de l’estimation de la cardinalité dans l’optimiseur du plan de requête : une colonne produite par une fonction déterministe à un seul argument (par ex. `toYear(date)`) hérite désormais du nombre de valeurs distinctes de son argument comme borne supérieure, au lieu d’être laissée sans statistiques, ce qui permet un réordonnancement des jointures plus précis. [#107757](https://github.com/ClickHouse/ClickHouse/pull/107757) ([Alexander Gololobov](https://github.com/davenger)).
* Réduction de la surcharge CPU de la journalisation asynchrone à des débits de logs élevés en ne notifiant le consommateur de logs qu’au passage d’une file d’attente vide à non vide, au lieu de le faire à chaque message. [#107352](https://github.com/ClickHouse/ClickHouse/pull/107352) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Suppression des calculs redondants pendant l’exécution des requêtes dans davantage de scénarios. [#106113](https://github.com/ClickHouse/ClickHouse/pull/106113) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Parallélisation du traitement du résultat d’une CTE récursive : un `GROUP BY` ou toute autre opération sur un grand résultat `WITH RECURSIVE` n’est désormais plus limité à un seul thread. [#107694](https://github.com/ClickHouse/ClickHouse/pull/107694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des performances de la recherche de sous-chaîne insensible à la casse (`positionCaseInsensitiveUTF8`, `ILIKE`, `multiSearchAnyCaseInsensitiveUTF8` et fonctions associées) grâce à l’ajout d’un chemin SIMD NEON sur ARM et d’un kernel AVX2 plus large sur x86. [#107882](https://github.com/ClickHouse/ClickHouse/pull/107882) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une régression d’environ 16 % du débit du codec à virgule flottante `FPC` sur ARM, introduite lorsque ses tables de prédiction ont commencé à utiliser `VectorWithMemoryTracking`. [#108182](https://github.com/ClickHouse/ClickHouse/pull/108182) ([Groene AI](https://github.com/groeneai)).

<div id="267-improvement">
  #### Amélioration
</div>

* Le `MemoryWorker` d’arrière-plan met désormais à jour périodiquement la hard memory limit du serveur en fonction de la memory usage actuelle et de la quantité de mémoire que le noyau signale comme disponible, afin que ClickHouse laisse de la place aux autres processus exécutés sur le même hôte. La formule est `(resident memory + system MemAvailable) * max_server_memory_usage_to_ram_ratio`. Le même server setting `max_server_memory_usage_to_ram_ratio` contrôle à la fois la limite au démarrage et l’ajustement dynamique ; définissez-le sur `0` pour désactiver les deux. Pour ne conserver que la limite statique au démarrage/rechargement (le comportement des versions précédentes), définissez le nouveau server setting `memory_worker_dynamic_hard_limit` sur `0`. [#104964](https://github.com/ClickHouse/ClickHouse/pull/104964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge du client PostgreSQL C# dans le protocole `PostgreSQL`. Cela clôt [#18611](https://github.com/ClickHouse/ClickHouse/issues/18611). [#80785](https://github.com/ClickHouse/ClickHouse/pull/80785) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Les mutations utilisent désormais l’analyseur. [#98884](https://github.com/ClickHouse/ClickHouse/pull/98884) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Ajout d’un contrôle granulaire de l’affichage des queries en écho dans la CLI. L’option `--echo` accepte désormais une valeur booléenne facultative et fonctionne à la fois en mode interactif et en batch mode. Les nouvelles options `--echo-formatted` et `--echo-query-id` contrôlent respectivement le formatage des queries affichées en écho et l’affichage du `query_id`. L’option `--hilite`/`--highlight` contrôle désormais également la mise en évidence des queries affichées en écho. Effet secondaire : `--echo` est maintenant une option à valeur booléenne ; une query positionnelle placée directement après un `--echo` seul est donc traitée comme sa valeur. Utilisez plutôt `--echo --query "..."` ou `--echo=false`. [#106191](https://github.com/ClickHouse/ClickHouse/pull/106191) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de la schema evolution avec des vérifications de cohérence concurrentes pour les catalogs de data lake. [#106102](https://github.com/ClickHouse/ClickHouse/pull/106102) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Prise en charge du cache disk pour les table engines Data Lake. [#102017](https://github.com/ClickHouse/ClickHouse/pull/102017) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Correction de la lecture des données de table pour les databases `DataLakeCatalog` avec `catalog_type = 'onelake'`, via l’utilisation par défaut de l’endpoint Blob OneLake (`.blob.fabric.microsoft.com`). Définissez `onelake_use_blob_endpoint = false` pour conserver le comportement précédent avec l’endpoint DFS (`.dfs.fabric.microsoft.com`). [#106843](https://github.com/ClickHouse/ClickHouse/pull/106843) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Mise à jour de la valeur par défaut du setting `persistent_processing_node_ttl_seconds` de `S3(Azure)Queue`, de `1 hour` à `6 hours` (ce qui correspond au délai de nettoyage après un redémarrage non propre du service, etc.). La valeur par défaut précédente convenait pour le ttl des processing nodes, mais elle est également utilisée pour le ttl du verrou de bucket, qui peut être conservé plus longtemps ; par conséquent, 1 heure n’était pas suffisant. [#106838](https://github.com/ClickHouse/ClickHouse/pull/106838) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Réduction de la taille par défaut du metadata cache `Iceberg`, de 1 Go à 128 Mo. [#106492](https://github.com/ClickHouse/ClickHouse/pull/106492) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Propagation du `query_id` de la tâche streaming `S3Queue` aux inserts des tables dépendantes. [#106494](https://github.com/ClickHouse/ClickHouse/pull/106494) ([Christoph Wurm](https://github.com/cwurm)).
* Renseigne `used_storages` dans `system.query_log` avec le nom du storage engine lors de l’exécution de queries sur des tables via `DataLakeCatalog`. [#100706](https://github.com/ClickHouse/ClickHouse/pull/100706) ([Melvyn Peignon](https://github.com/melvynator)).
* Vous pouvez vérifier quelles valeurs de 'operation' et de 'summary' possèdent les snapshots d’Iceberg. Utile pour les tests et le débogage. [#106246](https://github.com/ClickHouse/ClickHouse/pull/106246) ([Den Kalantaevskii](https://github.com/Diskein)).
* Finalise la requête finale de téléversement multipart `S3` de manière asynchrone via le gestionnaire de tâches, afin qu’elle puisse se chevaucher avec le téléversement de la dernière part au lieu de s’exécuter en série pendant la finalisation. [#105487](https://github.com/ClickHouse/ClickHouse/pull/105487) ([Asya Shneerson](https://github.com/asya-ch)).
* Ajout de quatre nouveaux paramètres de table `MergeTree` pour contrôler les paramètres par défaut des index de texte : `text_index_dictionary_block_size`, `text_index_dictionary_block_frontcoding_compression`, `text_index_posting_list_block_size` et `text_index_posting_list_codec`. Ces paramètres permettent d’ajuster le comportement des index de texte au niveau de la table sans devoir spécifier de paramètres dans chaque définition d’index. Les arguments explicites définis par index gardent la préséance. [#100626](https://github.com/ClickHouse/ClickHouse/pull/100626) ([Anton Popov](https://github.com/CurtizJ)).
* Autorise les projections à surcharger d’autres paramètres `MergeTree` (compression, format des parts, sérialisation) au-delà de `index_granularity`, avec une liste blanche des paramètres autorisés et une validation. [#101170](https://github.com/ClickHouse/ClickHouse/pull/101170) ([Amos Bird](https://github.com/amosbird)).
* Ajout des colonnes `current_projection`, `current_projection_progress`, `projections_completed` et `projections_remaining` à `system.merges` pour exposer la progression des fusions de projections. [#102611](https://github.com/ClickHouse/ClickHouse/pull/102611) ([Amos Bird](https://github.com/amosbird)).
* Correction de `PREWHERE` avec une sous-requête `IN` sur les colonnes de clé primaire qui n’utilisait pas l’index de clé primaire pour l’élagage des granules, provoquant des parcours complets de la table au lieu de lire uniquement les granules pertinentes. [#102570](https://github.com/ClickHouse/ClickHouse/pull/102570) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* La fonction `h3PolygonToCells` applique désormais la taille maximale du tableau à tous les polygones d’un `MultiPolygon`, valide les codes de retour de la bibliothèque H3 sous-jacente et rejette les arguments `MultiLineString` au lieu de renvoyer silencieusement un résultat vide. [#106399](https://github.com/ClickHouse/ClickHouse/pull/106399) ([Raúl Marín](https://github.com/Algunenano)).
* Ajoute une nouvelle table `system.keeper_snapshots`, réservée à Keeper, contenant des informations sur les snapshots locaux de ClickHouse Keeper. [#105571](https://github.com/ClickHouse/ClickHouse/pull/105571) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajoute une nouvelle table `system.keeper_changelogs`, réservée à Keeper, contenant des informations sur les fichiers de changelog locaux de ClickHouse Keeper (journal Raft). [#105617](https://github.com/ClickHouse/ClickHouse/pull/105617) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajoute une table `system.keeper_cluster`, réservée à Keeper. Elle contient une ligne par membre du cluster Raft tel qu’il est vu par le Keeper actuel. [#105646](https://github.com/ClickHouse/ClickHouse/pull/105646) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajoute davantage d’événements de profil Keeper (server-side + client-side) pour les watches. Clôt [#97703](https://github.com/ClickHouse/ClickHouse/issues/97703). [#105336](https://github.com/ClickHouse/ClickHouse/pull/105336) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout de `coordination_settings` pour Keeper afin de limiter l’admission des log entries non validées de `NuRaft` et le throttling des sondes arrière append-entries. [#106108](https://github.com/ClickHouse/ClickHouse/pull/106108) ([Antonio Andelic](https://github.com/antonio2368)).
* Ajoute le paramètre `enable_compression` pour la fonction de table `mysql`, le moteur de table `MySQL`, le moteur de base de données `MySQL`, le dictionnaire `SOURCE(MYSQL)` et les named collections. Lorsqu’il est activé, ClickHouse négocie la compression au niveau du protocole MySQL pour toutes les données transférées via la connexion. [#103229](https://github.com/ClickHouse/ClickHouse/pull/103229) ([Bernard Lim](https://github.com/bernardlim)).
* Réduction de la latence d'annulation des query exécutées via le PostgreSQL wire protocol : `KILL QUERY` interrompt désormais la sérialisation de la sortie au sein d'un seul chunk au lieu d'attendre que le chunk entier soit envoyé au client. [#106535](https://github.com/ClickHouse/ClickHouse/pull/106535) ([Roman Vasin](https://github.com/rvasin)).
* Réduction de la latence d'annulation des query exécutées via le MySQL wire protocol : `KILL QUERY` interrompt désormais la sérialisation de la sortie au sein d'un seul chunk au lieu d'attendre que le chunk entier soit envoyé au client. [#107228](https://github.com/ClickHouse/ClickHouse/pull/107228) ([Roman Vasin](https://github.com/rvasin)).
* Correction de la lecture de la longueur de `auth_response` lors du handshake MySQL, où un octet de longueur `>= 128` était interprété comme une valeur de plusieurs gigaoctets parce qu'il était lu comme un `char` signé. [#107384](https://github.com/ClickHouse/ClickHouse/pull/107384) ([uwezkhan](https://github.com/uwezkhan)).
* `MaterializedPostgreSQL` mappe désormais les colonnes PostgreSQL `numeric(p, 0)` avec une précision supérieure à 76 (par ex. `numeric(78, 0)`, utilisé pour des entiers 256 bits) vers `Int256` dans ClickHouse au lieu d'échouer avec "Precision too big". Les valeurs qui ne tiennent pas dans `Int256` sont rejetées avec une erreur explicite. [#107431](https://github.com/ClickHouse/ClickHouse/pull/107431) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Envoie une exception au client lorsque l'établissement de la TCP connection échoue. [#107317](https://github.com/ClickHouse/ClickHouse/pull/107317) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Les utilisateurs peuvent désormais insert des champs `Fixed` `Avro` pour les variantes d'entiers 8 bits/16 bits/32 bits/64 bits. [#98139](https://github.com/ClickHouse/ClickHouse/pull/98139) ([Patrick Pichler](https://github.com/patrickpichler)).
* Le format `AvroConfluent` effectue désormais des retries via le Confluent Schema Registry HTTP client en cas d'échecs transitoires (timeouts de transport, connexion refusée, erreurs DNS, HTTP `5xx`/`408`/`429`) avec un backoff exponentiel, au lieu d'abandonner l'INSERT dès le premier incident réseau. Les nouveaux settings `format_avro_schema_registry_max_retries` (par défaut `5`) et `format_avro_schema_registry_retry_initial_backoff_ms` (par défaut `100`) contrôlent cette politique. Les erreurs de validation de schéma (HTTP `409`, JSON Avro mal formé) restent fatales. [#106661](https://github.com/ClickHouse/ClickHouse/pull/106661) ([Groene AI](https://github.com/groeneai)).
* Enregistre les privileges dans `system.query_log.used_privileges` pour tous les contrôles d'accès granted, y compris ceux qui passent par le chemin non bloquant `isGranted` (`checkAccessWithFilter`). Auparavant, seuls les privileges vérifiés via des points d'entrée bloquants (`checkAccess` / `checkGrantOption`) étaient enregistrés, ce qui rendait `READ ON FILE` / `READ ON S3` / `READ ON AZURE` / `READ ON URL` invisibles dans le journal d'audit pour `DESCRIBE`, `CREATE TABLE AS` et les query similaires qui utilisent les table functions `file` / `s3` / `azure` / `url`. L'application des contrôles d'accès ne change pas. [#104693](https://github.com/ClickHouse/ClickHouse/pull/104693) ([Alexey Bakharew](https://github.com/alexbakharew)).
* Ajout des métriques asynchrones `TotalUncompressedBytesOfMergeTreeTables` et `TotalUncompressedBytesOfMergeTreeTablesSystem`, qui indiquent la taille totale non compressée des données stockées dans les tables de la famille MergeTree. [#106364](https://github.com/ClickHouse/ClickHouse/pull/106364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute l'événement de profil `GlobalMemoryLimitExceeded` afin que les operators puissent surveiller quand la memory limit globale du serveur est atteinte. [#106466](https://github.com/ClickHouse/ClickHouse/pull/106466) ([Sacheendra Talluri](https://github.com/sacheendra)).
* Renseigne les compteurs `ProfileEvents` `ExecutableUserDefinedFunction*` pour les UDF `executable_pool`. Le nombre d’invocations par appel, le temps écoulé et le temps d’attente dans le pool, l’utilisation CPU et le pic de mémoire des processus enfants, ainsi que les octets stdin/stdout sont désormais visibles dans `system.query_log.ProfileEvents`. [#105010](https://github.com/ClickHouse/ClickHouse/pull/105010) ([Xu Jia](https://github.com/XuJia0210)) [#105618](https://github.com/ClickHouse/ClickHouse/pull/105618) ([Ilya Andreev](https://github.com/andreev-io)).
* Ajout des métriques asynchrones `ExecutableUserDefinedFunctionMemoryResidentBytes` et `ExecutableUserDefinedFunctionProcesses`, qui indiquent la mémoire résidente (`VmRSS`) et le nombre de processus actifs des fonctions définies par l’utilisateur `executable` et `executable_pool`, y compris les processus descendants et les workers inactifs du pool. [#107300](https://github.com/ClickHouse/ClickHouse/pull/107300) ([Hanzi Jiang](https://github.com/HanziJiang)).
* Ajout de trois métriques async disponibles uniquement sous Linux — `MemoryThreadStacksCount`, `MemoryThreadStacksVirtual` et `MemoryThreadStacksResident` — qui distinguent la mémoire de pile pthread du reste de la mémoire anonyme. Activées via `asynchronous_metrics_enable_heavy_metrics`. Nécessite Linux 5.17+ (`prctl(PR_SET_VMA_ANON_NAME)`) ainsi qu’un `/proc/self/smaps` lisible ; sinon, les métriques sont absentes et la limitation est signalée dans `system.warnings`. [#106230](https://github.com/ClickHouse/ClickHouse/pull/106230) ([Raúl Marín](https://github.com/Algunenano)).
* Expose les métriques asynchrones `MemoryThreadStacks*` (taille résidente/virtuelle et nombre de piles de threads) sur macOS. [#107752](https://github.com/ClickHouse/ClickHouse/pull/107752) ([Raúl Marín](https://github.com/Algunenano)).
* Les moteurs de table disposent désormais d’une documentation intégrée, consultable via les nouvelles colonnes `description`, `syntax`, `examples`, `introduced_in` et `related` de la table `system.table_engines`. [#106177](https://github.com/ClickHouse/ClickHouse/pull/106177) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les moteurs de base de données disposent désormais d’une documentation intégrée, consultable via les nouvelles colonnes `description`, `syntax`, `examples`, `introduced_in` et `related` de la table `system.database_engines`. [#106178](https://github.com/ClickHouse/ClickHouse/pull/106178) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les types de données disposent désormais d’une documentation intégrée, consultable via les nouvelles colonnes `description`, `syntax`, `examples`, `introduced_in` et `related` de la table `system.data_type_families`. [#106180](https://github.com/ClickHouse/ClickHouse/pull/106180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les formats d’entrée/sortie disposent désormais d’une documentation intégrée, consultable via les nouvelles colonnes `description`, `examples`, `introduced_in` et `related` de la table `system.formats`. [#106181](https://github.com/ClickHouse/ClickHouse/pull/106181) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les combinateurs de fonctions d’agrégation disposent désormais d’une documentation intégrée, consultable via les nouvelles colonnes `description`, `syntax`, `examples`, `introduced_in` et `related` de la table `system.aggregate_function_combinators`. [#106185](https://github.com/ClickHouse/ClickHouse/pull/106185) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de l’option en ligne de commande `--chime` à `clickhouse-client`, `clickhouse-local` et au client intégré. Lorsqu’une requête se termine (avec succès ou avec erreur) après avoir duré au moins N secondes, le client écrit le caractère de contrôle ASCII `BEL` (`\x07`) sur stderr. Selon les préférences de l’utilisateur, le terminal peut alors émettre un son ou afficher un flash visuel. Activée par défaut avec un seuil de 5 secondes ; passez `--chime N` pour définir un seuil personnalisé ou `--chime 0` pour la désactiver. Résout [#92718](https://github.com/ClickHouse/ClickHouse/issues/92718). [#104545](https://github.com/ClickHouse/ClickHouse/pull/104545) ([Groene AI](https://github.com/groeneai)).
* Dans `clickhouse-client`, lorsque le terminal ne prend pas en charge le collage entre crochets, les sauts de ligne d’une requête multiligne collée sont désormais intégrés au même tampon d’édition au lieu de faire passer à l’invite de continuation pour chaque ligne. La requête collée reste sous une seule invite, et les touches fléchées permettent de naviguer d’une ligne à l’autre. Il s’agit d’une amélioration au mieux, qui repose sur le comportement habituel du collage avec tampon TTY. [#104299](https://github.com/ClickHouse/ClickHouse/pull/104299) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Fonctionne désormais aussi lorsque la coloration syntaxique est désactivée (`--highlight 0`). [#106665](https://github.com/ClickHouse/ClickHouse/pull/106665) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute un contrôle du pager à l’exécution, de type MySQL, pour `clickhouse-client`/`clickhouse-local`. [#105706](https://github.com/ClickHouse/ClickHouse/pull/105706) ([Azat Khuzhin](https://github.com/azat)).
* `clickhouse-client` respecte désormais les terminaux non UTF-8 : lorsque l’encodage des caractères du terminal n’est pas UTF-8 (par exemple avec `LANG=C`), les formats `Pretty` reviennent à des bordures de grille ASCII au lieu d’afficher des caractères Unicode de tracé de boîtes qui corrompraient le terminal. [#106213](https://github.com/ClickHouse/ClickHouse/pull/106213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Assainit les chaînes d’affichage fournies par le serveur dans le traitement du paquet `Hello` de `clickhouse-client` (nom du serveur, fuseau horaire, nom d’affichage, patterns et messages des règles de mot de passe) afin qu’un serveur malveillant ne puisse pas injecter des octets que le client afficherait tels quels, et limite leur taille pour se prémunir contre des allocations non bornées. [#105243](https://github.com/ClickHouse/ClickHouse/pull/105243) ([Raúl Marín](https://github.com/Algunenano)).
* L’interface Web affiche désormais le résultat sous forme d’image lorsqu’une requête utilise un format de sortie d’image tel que `FORMAT PNG`, au lieu d’afficher les octets bruts sous forme de table. [#107638](https://github.com/ClickHouse/ClickHouse/pull/107638) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute le paramètre `output_format_pretty_use_nbsp_for_padding` pour rendre les caractères de remplissage de mise en page dans les formats `Pretty` de type tableau sous forme de `U+00A0` NO-BREAK SPACE lorsque `output_format_pretty_grid_charset` vaut `UTF-8`. Cela permet à une sortie `Pretty` copiée de conserver l’alignement du tableau dans les outils qui compressent les espaces ordinaires. Le paramètre est désactivé par défaut, et la sortie avec le jeu de caractères `ASCII` conserve les espaces ordinaires. [#103559](https://github.com/ClickHouse/ClickHouse/pull/103559) ([Ashrith Bandla](https://github.com/ashrithb)).
* Le script d’installation universel installe désormais aussi `clickhousectl` dans `~/.local/bin` sur Linux et macOS, avec un lien symbolique `chctl`. Définissez `CLICKHOUSE_ONLY=1` pour l’ignorer. [#105399](https://github.com/ClickHouse/ClickHouse/pull/105399) ([Alasdair Brown](https://github.com/sdairs)).
* Correction d’une erreur parasite `Syntax error: Unterminated quoted string` qui pouvait se produire de manière intermittente lors de l’installation de ClickHouse via `curl https://clickhouse.com/ | sh` alors qu’un binaire `clickhouse` existait déjà dans le répertoire courant. [#106417](https://github.com/ClickHouse/ClickHouse/pull/106417) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la hauteur du panneau de gauche sur la page `play.html` lorsque le terminal web est ouvert, afin que le bouton de bascule du terminal en bas reste visible. [#105087](https://github.com/ClickHouse/ClickHouse/pull/105087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Évite de sélectionner l’unique requête dans l’interface Web après son exécution. [#105711](https://github.com/ClickHouse/ClickHouse/pull/105711) ([Joey Yu](https://github.com/itsjoeoui)).
* L’interface SQL Web agrandit désormais l’éditeur de requêtes lorsqu’une requête dépasse d’au plus 30 % la hauteur actuelle de l’éditeur. [#105713](https://github.com/ClickHouse/ClickHouse/pull/105713) ([Joey Yu](https://github.com/itsjoeoui)).
* Dans l’interface web, disposer horizontalement les icônes du menu inférieur (Terminal web et GitHub) lorsque le panneau de gauche est déployé, afin de laisser plus d’espace vertical à la liste des bases de données et des tables. [#106427](https://github.com/ClickHouse/ClickHouse/pull/106427) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans l’interface web (`play.html`), la touche `Escape` désactive désormais la cellule actuellement sélectionnée dans le tableau de résultats. [#107777](https://github.com/ClickHouse/ClickHouse/pull/107777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Améliorations du panneau des bases de données dans l’interface SQL web (Play) : une infobulle sur l’icône de la base de données, un bouton pour masquer le panneau, des noms de bases de données et de tables cliquables sur toute leur largeur, et une correction du décalage de largeur du panneau lors de l’apparition de la barre de défilement. [#108013](https://github.com/ClickHouse/ClickHouse/pull/108013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’un paramètre serveur (`min_allocation_size_to_throw_on_memory_limit`) pour permettre à toute allocation de lever `MEMORY_LIMIT_EXCEEDED` ; cela devrait aider à éviter les OOM. [#105265](https://github.com/ClickHouse/ClickHouse/pull/105265) ([Azat Khuzhin](https://github.com/azat)).
* Autoriser l’authentification `NONE` pour SSH (ce qui évite de demander un mot de passe aux utilisateurs `no_password`). [#105476](https://github.com/ClickHouse/ClickHouse/pull/105476) ([Azat Khuzhin](https://github.com/azat)).
* Réinitialiser la liste des groupes supplémentaires dans `clickhouse su` avant l’abandon des privilèges, afin d’aligner le comportement sur celui de `/bin/su` et `sudo`. Auparavant, le processus après abandon des privilèges héritait des groupes supplémentaires de l’utilisateur appelant. [#105247](https://github.com/ClickHouse/ClickHouse/pull/105247) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout de la prise en charge de `BFloat16` pour les fonctions de prédicat numériques (`isFinite`, `isNaN`). [#105391](https://github.com/ClickHouse/ClickHouse/pull/105391) ([Mohamed Hussain S](https://github.com/mohhddhassan)).
* Réduire la consommation mémoire des dictionnaires polygonaux (`polygon_index_cell`, `polygon_index_each`) et faire en sorte que `system.dictionaries.bytes_allocated` reflète correctement l’index de recherche qu’ils construisent. [#105431](https://github.com/ClickHouse/ClickHouse/pull/105431) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige les consumers du Kafka table engine qui continuaient à utiliser un poll interval court après l’attribution des partitions, afin qu’ils reviennent à la valeur configurée de `kafka_poll_timeout_ms` et évitent des polls à vide excessifs, des parts insérées plus petites et une surcharge de merge supplémentaire après les rééquilibrages. [#100431](https://github.com/ClickHouse/ClickHouse/pull/100431) ([sugaf1204](https://github.com/sugaf1204)).
* Identifier les colonnes par leur position (plutôt que par leur nom) lors de la suppression des colonnes inutilisées dans le query plan. Cela permet de supprimer les colonnes inutilisées même en présence de noms de colonnes dupliqués. [#100586](https://github.com/ClickHouse/ClickHouse/pull/100586) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* ClickHouse lève désormais une exception appropriée lorsqu’on tente d’utiliser `table_readonly` avec des engines répliqués, avec une meilleure gestion des exceptions pour les DDL queries (et `DatabaseReplicated`) liées à ce paramètre. [#100950](https://github.com/ClickHouse/ClickHouse/pull/100950) ([alesapin](https://github.com/alesapin)). `OPTIMIZE TABLE ... ON CLUSTER` et les autres DDL ne se bloquent plus lorsque la target table a `table_readonly = 1`. Le paramètre lève désormais un nouveau code d’erreur dédié, `TABLE_IS_PERMANENTLY_READ_ONLY`, que `DDLWorker` traite comme non réessayable (contrairement à `TABLE_IS_READ_ONLY`, transitoire, qui survient lors de déconnexions temporaires de ZooKeeper pour `ReplicatedMergeTree`). Le paramètre `table_readonly` est également désormais explicitement rejeté pour `ReplicatedMergeTree`, à la fois lors de la création et via `ALTER MODIFY SETTING`. Suite de [#97652](https://github.com/ClickHouse/ClickHouse/issues/97652). [#105109](https://github.com/ClickHouse/ClickHouse/pull/105109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des actualisations de vues matérialisées actualisables qui pouvaient échouer avec `UNKNOWN_TABLE` après le remplacement de la table cible (par exemple via `EXCHANGE TABLES` ou une suppression suivie d’une recréation) : l’actualisation résout désormais la table cible par son nom au lieu de s’appuyer sur un UUID obsolète. [#102724](https://github.com/ClickHouse/ClickHouse/pull/102724) ([Seva Potapov](https://github.com/seva-potapov)).
* Ajout d’un paramètre `wait_for_part_commit_in_dependent_materialized_views` (par défaut `false`). Lorsqu’un `SELECT` de vue matérialisée relit sa propre table source (par exemple via un `INNER JOIN` sur la source), la cascade pouvait manquer la ligne en cours d’insertion, car la part insérée n’est validée qu’après l’exécution des vues dépendantes. L’activation de ce paramètre valide la part avant le déclenchement des vues dépendantes, afin qu’elles voient la ligne en cours d’insertion, au prix d’un parallélisme d’insertion moindre. [#105943](https://github.com/ClickHouse/ClickHouse/pull/105943) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Ne plus masquer les erreurs fatales (par ex. `MEMORY_LIMIT_EXCEEDED`) dans `tryDeserialize`. [#106808](https://github.com/ClickHouse/ClickHouse/pull/106808) ([Azat Khuzhin](https://github.com/azat)).
* Vérification différée du droit `CREATE TEMPORARY TABLE` dans `InverseDictionaryLookupPass`. [#107098](https://github.com/ClickHouse/ClickHouse/pull/107098) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’une erreur `ILLEGAL_TYPE_OF_ARGUMENT` pour les requêtes distribuées avec `serialize_query_plan = 1` contenant une lambda avec un argument constant (par ex. `arrayMap(t -> t.2, ...)`). Les colonnes constantes des nœuds `INPUT` d’`ActionsDAG` sont désormais préservées lors de la sérialisation du plan de requête. [#107124](https://github.com/ClickHouse/ClickHouse/pull/107124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La désérialisation des états des fonctions d’agrégation `contingency`, `cramersV`, `cramersVBiasCorrected` et `theilsU` vérifie désormais que les décomptes stockés forment une table de contingence cohérente et lève une exception `CORRUPTED_DATA` dans le cas contraire. Ferme [#106899](https://github.com/ClickHouse/ClickHouse/issues/106899). [#107185](https://github.com/ClickHouse/ClickHouse/pull/107185) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Préservation des codes d’erreur d’origine pour les exceptions encapsulées dans `arrow::Status`. [#107267](https://github.com/ClickHouse/ClickHouse/pull/107267) ([Azat Khuzhin](https://github.com/azat)).
* Prise en charge de `keyed_by_normalized_query_hash` pour les quotas définis dans la configuration serveur statique (`users.xml`), en cohérence avec la syntaxe DDL existante `CREATE QUOTA ... KEYED BY normalized_query_hash`. [#107654](https://github.com/ClickHouse/ClickHouse/pull/107654) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le paramètre de compatibilité n’applique plus les paramètres obsolètes ; ils ne sont donc plus marqués comme modifiés et ne génèrent plus d’avertissements d’obsolescence. [#107737](https://github.com/ClickHouse/ClickHouse/pull/107737) ([Maxim Orlovsky](https://github.com/UberDever)).
* Les insertions asynchrones n’enregistrent plus la liste complète des `query_id` au niveau `trace`/`debug`, ce qui, depuis la version 26.2, pouvait faire exploser `text_log` sur les services avec un trafic important d’insertions asynchrones. Les lignes détaillées sont désormais consignées au niveau `test`. [#107852](https://github.com/ClickHouse/ClickHouse/pull/107852) ([Sema Checherinda](https://github.com/CheSema)).
* Amélioration du cache du système de fichiers : les entrées de priorité invalidées n’épinglent plus `KeyMetadata`. Suite de [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387). [#107903](https://github.com/ClickHouse/ClickHouse/pull/107903) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Amélioration des métriques de `FileCache`. [#106116](https://github.com/ClickHouse/ClickHouse/pull/106116) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ne plus afficher le préambule "Stack trace (when copying this message, always include the lines below):" dans les messages d’exception lorsque la trace de pile est en réalité vide. [#106524](https://github.com/ClickHouse/ClickHouse/pull/106524) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un possible débordement dans `roundUpToMultiple` lors du calcul de l’alignement des limites du cache du système de fichiers pour de très grands offsets. [#92579](https://github.com/ClickHouse/ClickHouse/pull/92579) ([Bharat Nallan](https://github.com/bharatnc)).
* `EXPLAIN SYNTAX` formate désormais systématiquement les opérateurs comme des appels de fonction dans la sortie d’explication (par exemple `plus(1, 2)` au lieu de `1 + 2`). [#94681](https://github.com/ClickHouse/ClickHouse/pull/94681) ([Mohamed Abdelhalim ](https://github.com/1abdelhalim)).
* Amélioration des suggestions de noms de table dans les messages d’erreur : le nom exact n’est plus proposé, et le nom de la base de données est désormais inclus dans la suggestion (par ex. "Maybe you meant `other_db.my_table`?"). [#95116](https://github.com/ClickHouse/ClickHouse/pull/95116) ([Mathuranath Metivier](https://github.com/matt-metivier)).
* Amélioration du message d’erreur pour les identifiants non résolus dans les requêtes sans clause `FROM`, avec une suggestion d’en ajouter une. [#101769](https://github.com/ClickHouse/ClickHouse/pull/101769) ([Yash ](https://github.com/Onyx2406)).
* Ajout d’une option `EXPLAIN PIPELINE` pour compacter les chaînes de processeurs répétées. [#104662](https://github.com/ClickHouse/ClickHouse/pull/104662) ([Yue Ni](https://github.com/niyue)).
* Correction d’une lecture avec dépassement de tampon du tas lors de la construction d’un message d’erreur de syntaxe (`UTF8::computeWidthImpl` via `parseQuery.cpp`), qui se produisait lorsque le parseur revenait en arrière au-delà du premier point-virgule / jeton de fin de flux ; les builds de release assemblaient alors des octets provenant de la mémoire voisine du tas dans l’erreur affichée, tandis que les builds ASan s’arrêtaient. [#105086](https://github.com/ClickHouse/ClickHouse/pull/105086) ([Groene AI](https://github.com/groeneai)).
* La stratégie de partitionnement Hive devient la valeur par défaut via le paramètre de compatibilité `file_like_engine_default_partition_strategy`. [#86746](https://github.com/ClickHouse/ClickHouse/pull/86746) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Utilisation d’une pile de thread plus grande (8 MiB) sur macOS pour s’aligner sur la valeur par défaut de Linux, ce qui corrige de rares plantages du serveur dus à un débordement de pile pendant la compilation JIT. [#107033](https://github.com/ClickHouse/ClickHouse/pull/107033) ([Raúl Marín](https://github.com/Algunenano)).
* La limite de taille du stockage temporaire de `clickhouse-local` n’est plus codée en dur à 1 GiB. La valeur par défaut passe à 1 TiB et peut être configurée avec le paramètre serveur `max_temporary_data_on_disk_size`. [#106689](https://github.com/ClickHouse/ClickHouse/pull/106689) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la commande `read-checksums` à `clickhouse-disks`. Elle lit le fichier `checksums.txt` d’un `MergeTreeDataPart` et l’affiche sous forme de table lisible, séparée par des tabulations. [#106901](https://github.com/ClickHouse/ClickHouse/pull/106901) ([Asya Shneerson](https://github.com/asya-ch)).
* Ajout d’une commande `read-bitmap` à `clickhouse-disks`. [#107834](https://github.com/ClickHouse/ClickHouse/pull/107834) ([murphy-4o](https://github.com/murphy-4o)).
* Chdig : activation de TLS pour les connexions sécurisées (auparavant, cela entraînait soit "unknown setting `skip_verify`", soit "connection reset by peer"). [#105864](https://github.com/ClickHouse/ClickHouse/pull/105864) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.5.1](https://github.com/azat/chdig/releases/tag/v26.5.1). [#105918](https://github.com/ClickHouse/ClickHouse/pull/105918) ([Azat Khuzhin](https://github.com/azat)).
* [`chdig` v26.6.1](https://github.com/azat/chdig/releases/v26.6.1) - `{asynchronous_,}metric_log`, formes de requêtes, cartes de chaleur, logs/traces stockés sur disque (auparavant, cela pouvait utiliser >40GiB pour 1 heure de traces). [#107678](https://github.com/ClickHouse/ClickHouse/pull/107678) ([Azat Khuzhin](https://github.com/azat)).
* La configuration du serveur (`programs/server/config.xml`) définit désormais `keep_alive_timeout` à 30 (au lieu de 10), en l'alignant sur la valeur par défaut effectivement documentée et implémentée. [#107779](https://github.com/ClickHouse/ClickHouse/pull/107779) ([Dan Checkoway](https://github.com/dcheckoway)).
* La valeur par défaut du paramètre serveur `disk_connections_rcvbuf` est passée de `0` (autotuning TCP du kernel) à `204800` (200 KB), ce qui plafonne le tampon de réception TCP par socket pour les connexions disque de stockage objet (`S3`/`Azure`/`GCS`). [#107859](https://github.com/ClickHouse/ClickHouse/pull/107859) ([Sema Checherinda](https://github.com/CheSema)).
* L'optimiseur `PREWHERE` regroupe désormais les conjoncts qui font référence au même ensemble de colonnes avant d'estimer la sélectivité, afin que des conditions comme `a > 2500 AND a < 2502` soient évaluées ensemble comme une plage combinée plutôt que comme deux prédicats indépendants, ce qui produit une estimation de sélectivité plus précise. [#106337](https://github.com/ClickHouse/ClickHouse/pull/106337) ([Han Fei](https://github.com/hanfei1991)).
* Ajout d'implémentations de sockets sécurisés et non sécurisés compatibles avec silk fiber. [#107680](https://github.com/ClickHouse/ClickHouse/pull/107680) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction d'un message d'erreur illisible (arguments inversés) et d'une faute de frappe dans la fonction `nested`. [#108031](https://github.com/ClickHouse/ClickHouse/pull/108031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d'une commande `sed` à `clickhouse-disks` qui applique une expression sed à un chemin donné, sur place. [#107131](https://github.com/ClickHouse/ClickHouse/pull/107131) ([Asya Shneerson](https://github.com/asya-ch)).
* Ajout du paramètre `materialized_postgresql_use_extended_date_and_time_types`, défini au moment de la création, pour le moteur de base de données `MaterializedPostgreSQL`. Par défaut (activé), les colonnes PostgreSQL `date`/`timestamp` sont inférées comme `Date32`/`DateTime64` ; le définir à `0` au moment du `CREATE DATABASE` infère les types plus étroits `Date`/`DateTime`. [#107428](https://github.com/ClickHouse/ClickHouse/pull/107428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Rend possible la suppression des detached parts avec le suffixe `tryN`. [#58957](https://github.com/ClickHouse/ClickHouse/pull/58957) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige une exception `MULTIPLE_EXPRESSIONS_FOR_ALIAS` pour les requêtes avec des alias de projection dupliqués (par exemple `SELECT *, day + 365 AS day`) dans des sous-requêtes imbriquées lors de l’exécution avec des répliques parallèles. [#80310](https://github.com/ClickHouse/ClickHouse/pull/80310) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un bug où `splitMultipartQuery` renvoyait une erreur "Empty query" pour les requêtes se terminant par un commentaire après un point-virgule. [#85491](https://github.com/ClickHouse/ClickHouse/pull/85491) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige une exception avec les `ARRAY JOIN` : `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink`, qui se produit lorsque des types numériques `LowCardinality` sont utilisés (issue [#57243](https://github.com/ClickHouse/ClickHouse/issues/57243)). [#91784](https://github.com/ClickHouse/ClickHouse/pull/91784) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige l’exception `NOT_FOUND_COLUMN_IN_BLOCK` lors de l’utilisation de `LIMIT BY` avec des colonnes constantes en combinaison avec `DISTINCT` et `ORDER BY`, avec le nouvel analyzer. [#93195](https://github.com/ClickHouse/ClickHouse/pull/93195) ([Ashrith Bandla](https://github.com/ashrithb)).
* Corrige la création silencieuse de colonnes `NOT NULL` en `Nullable` lorsque `data_type_default_nullable = 1` et que la table est créée dans une base de données `Replicated` ou via `ON CLUSTER`. [#97572](https://github.com/ClickHouse/ClickHouse/pull/97572) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Corrige la stabilité de la connexion HiveCatalog en ajoutant un mécanisme de nouvelle tentative automatique et une logique de reconnexion pour gérer les erreurs TTransportException lors de la communication avec Hive Metastore. [#98471](https://github.com/ClickHouse/ClickHouse/pull/98471) ([Dmitriy Borisenko](https://github.com/otselnik)).
* Corrige la fonction `nested` (utilisée en interne par `ARRAY JOIN`) qui supprimait `LowCardinality` des types de colonnes, ce qui faisait que `Array(LowCardinality(String))` devenait `Array(String)` en sortie. Clôt [#95582](https://github.com/ClickHouse/ClickHouse/issues/95582). [#98974](https://github.com/ClickHouse/ClickHouse/pull/98974) ([Yash ](https://github.com/Onyx2406)).
* Corrige l’exception "Distributed task iterator is not initialized" lors de l’utilisation de `url`, `s3` ou de table functions similaires dans des requêtes avec répliques parallèles activées. [#100146](https://github.com/ClickHouse/ClickHouse/pull/100146) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception de logical error lors de la lecture d’Iceberg tables dont la version du format a été mise à niveau par un outil externe (par ex. Spark). [#100407](https://github.com/ClickHouse/ClickHouse/pull/100407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les functions `like`, `ilike`, `notLike`, `notILike` et `match` prennent désormais en charge un haystack constant avec une needle non constante (par ex. `'foo' LIKE pattern_column`), ce qui provoquait auparavant `ILLEGAL_COLUMN`. [#100479](https://github.com/ClickHouse/ClickHouse/pull/100479) ([Yash ](https://github.com/Onyx2406)).
* Corrige un nombre de lignes erroné renvoyé par une requête `MaterializedView` avec `query_plan_enable_optimizations = 0` lorsque la vue mappe une colonne entière vers une colonne `Bool`. [#100692](https://github.com/ClickHouse/ClickHouse/pull/100692) ([Maksim Moisiuk](https://github.com/Maximus5)).
* Corrige une exception (`LOGICAL_ERROR: 'PREWHERE passed to format that doesn't support it'`) lors de la lecture d’Iceberg tables contenant des fichiers de données ORC avec la PREWHERE optimization activée. [#101206](https://github.com/ClickHouse/ClickHouse/pull/101206) ([Groene AI](https://github.com/groeneai)).
* Correction d'une condition de concurrence dans RestCatalog. [#101216](https://github.com/ClickHouse/ClickHouse/pull/101216) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Correction de l'erreur `NOT_FOUND_COLUMN_IN_BLOCK` lors d'une sélection depuis une VIEW sur une table avec une projection normale. [#101218](https://github.com/ClickHouse/ClickHouse/pull/101218) ([Amos Bird](https://github.com/amosbird)).
* Correction de métadonnées obsolètes dans FileLog lorsqu'un fichier est supprimé puis recréé. [#101408](https://github.com/ClickHouse/ClickHouse/pull/101408) ([Azat Khuzhin](https://github.com/azat)).
* Correction d'une réorganisation des jointures qui supprimait silencieusement les lignes non appariées d'un `RIGHT`/`LEFT JOIN` lorsqu'il était joint par virgule (produit cartésien) à une autre table, par ex. `t1 RIGHT JOIN t2 ON t1.c = t2.c, t3`. La requête renvoyait auparavant le résultat d'une jointure interne au lieu de celui d'une jointure externe. [#101684](https://github.com/ClickHouse/ClickHouse/pull/101684) ([Groene AI](https://github.com/groeneai)).
* Correction du fait que la clause `FORMAT` était consommée par `INSERT` au lieu de s'appliquer à la sortie de `EXPLAIN` dans `EXPLAIN INSERT INTO ... SELECT ... FORMAT ...`. [#101772](https://github.com/ClickHouse/ClickHouse/pull/101772) ([Yash ](https://github.com/Onyx2406)).
* Correction d'une sélection incorrecte du codec de compression pour les parts `MergeTree` lorsque le paramètre `default_compression_codec` au niveau de la table était explicitement configuré. Les parts écrites à l'insert, lors des merges et pour les projections utilisaient le codec par défaut global du server au lieu du paramètre défini au niveau de la table (la part vide produite par une mutation supprimant entièrement les données est désormais également couverte). [#101784](https://github.com/ClickHouse/ClickHouse/pull/101784) ([Yash ](https://github.com/Onyx2406)).
* Rejet des valeurs `Float64` négatives (par ex. `-100.5`) dans les workload settings comme `max_bytes_per_second`, `max_cpus`, etc. Auparavant, seuls les entiers négatifs étaient validés, ce qui permettait à des flottants négatifs de créer silencieusement des nœuds de scheduler défectueux. Résout [#101825](https://github.com/ClickHouse/ClickHouse/issues/101825). [#101842](https://github.com/ClickHouse/ClickHouse/pull/101842) ([Groene AI](https://github.com/groeneai)).
* Correction d'une `LOGICAL_ERROR` ("Port is not connected", code 49) qui pouvait survenir lors de l'exécution de requêtes impliquant une VIEW avec agrégation dans un JOIN. [#102574](https://github.com/ClickHouse/ClickHouse/pull/102574) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Correction de métadonnées de part incohérentes après des mutations sur des colonnes avec des serializations non par défaut. [#102817](https://github.com/ClickHouse/ClickHouse/pull/102817) ([Eduard Karacharov](https://github.com/korowa)).
* Correction d'un problème où la mise à jour des métadonnées avant l'exécution d'une mutation permet de résoudre [#96806](https://github.com/ClickHouse/ClickHouse/issues/96806). [#102882](https://github.com/ClickHouse/ClickHouse/pull/102882) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Correction d'un problème où les requêtes SELECT étaient nettement plus lentes lorsque des `INSERT` concurrents étaient en cours d'exécution. Auparavant, un pipeline `INSERT` réservait des CPU slots jusqu'à `max_threads` au démarrage de la requête, même lorsque la plupart des slots n'étaient jamais utilisés, ce qui privait de ressources les SELECT concurrents. L'allocation des CPU slots est désormais pilotée par la demande : le pipeline ne demande des slots qu'au moment où il exécute réellement du travail parallélisable. Cela s'applique à la fois au contrôle de la concurrence et au scheduler CPU préemptif pour les workloads. Le nouveau server setting `concurrent_threads_lazy_allocation` (par défaut `true`) sert de mécanisme de rollback. [#102928](https://github.com/ClickHouse/ClickHouse/pull/102928) ([Seva Potapov](https://github.com/seva-potapov)).
* Correction de la propagation de `NULL` lors de la lecture de sous-colonnes extraites de colonnes `Nullable(Tuple(...))`. Par exemple, pour `tup Nullable(Tuple(s Nullable(String)))`, `SELECT tup.s` renvoie désormais correctement `NULL` dans les lignes où le tuple externe est `NULL`, au lieu de valeurs parasites. Cela couvre tous les types d’élément pouvant représenter `NULL` : `Nullable`, `Dynamic`, `Variant` et `LowCardinality(Nullable(...))`. Clôture [#105356](https://github.com/ClickHouse/ClickHouse/issues/105356). [#102942](https://github.com/ClickHouse/ClickHouse/pull/102942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Renvoie désormais `INCORRECT_DATA` au lieu de `LOGICAL_ERROR` lorsque les données fournies par le client au format Native sont tronquées ou mal formées. [#102975](https://github.com/ClickHouse/ClickHouse/pull/102975) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Ajout d’une vérification d’annulation à l’opération de lecture d’ObjectStorage. Clôture [#98165](https://github.com/ClickHouse/ClickHouse/issues/98165). [#103016](https://github.com/ClickHouse/ClickHouse/pull/103016) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Prise en compte de `input_format_binary_max_type_complexity` lors du décodage des paramètres de fonctions d’agrégation. Clôture [#102903](https://github.com/ClickHouse/ClickHouse/issues/102903). [#103026](https://github.com/ClickHouse/ClickHouse/pull/103026) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l’inférence de nullabilité pour les colonnes geo dans le lecteur Parquet basé sur Arrow. Clôture [#101845](https://github.com/ClickHouse/ClickHouse/issues/101845). [#103032](https://github.com/ClickHouse/ClickHouse/pull/103032) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `recursiveRemoveLowCardinality`, qui effaçait les noms personnalisés des types geometry (par ex. `LineString` vs `Ring`, `MultiLineString` vs `Polygon`), ce qui entraînait une mauvaise interprétation du type geometry. Clôture [#103207](https://github.com/ClickHouse/ClickHouse/issues/103207). [#103041](https://github.com/ClickHouse/ClickHouse/pull/103041) ([Joanna Hulboj](https://github.com/jh0x)).
* Correction d’un problème où `input_format_max_block_size_bytes` était silencieusement ignoré lors de l’analyse de `INSERT` lorsque `max_insert_block_size_bytes` vaut `0` (valeur par défaut). Ce paramètre limite désormais correctement la taille des blocs produits par les formats d’entrée orientés lignes. [#103068](https://github.com/ClickHouse/ClickHouse/pull/103068) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Correction d’un problème où ClickHouse produisait parfois des tokens GSSAPI invalides en raison d’une suppression incorrecte des octets nuls de fin. [#103114](https://github.com/ClickHouse/ClickHouse/pull/103114) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Correction du repliement de constantes au niveau de l’analyseur pour les fonctions à court-circuit (`if`, `multiIf`, `and`, `or`, etc.), afin que les branches statiquement inatteignables ne lèvent plus d’exceptions au moment de l’analyse. Par exemple, `WITH 0 AS n SELECT multiIf(n = 0, 0, intDiv(100, n))` renvoie désormais correctement `0` au lieu d’échouer avec une erreur de division par zéro. [#103157](https://github.com/ClickHouse/ClickHouse/pull/103157) ([Peng](https://github.com/fastio)).
* `EXPLAIN SYNTAX` développe les vues paramétrées. [#103263](https://github.com/ClickHouse/ClickHouse/pull/103263) ([Jordi Villar](https://github.com/jrdi)).
* Correction d’une corruption de données lors de l’écriture de fichiers Parquet (et d’autres formats avec pied de page, comme ORC et Arrow) vers HDFS via `INSERT INTO FUNCTION hdfs(...)`. Depuis la version 26.1, `WriteBufferFromHDFS` ne vidait pas son tampon de travail lors de `finalize()`, si bien que jusqu’aux `DBMS_DEFAULT_BUFFER_SIZE` derniers octets de chaque fichier étaient silencieusement perdus, y compris le pied de page `PAR1` de Parquet. La lecture de tels fichiers renvoyait `Not a Parquet file (wrong magic bytes at the end of file)`. [#103268](https://github.com/ClickHouse/ClickHouse/pull/103268) ([Groene AI](https://github.com/groeneai)).
* Corrige des résultats erronés et une possible erreur logique pour les sous-requêtes corrélées lorsqu’une limite de taille de jointure (`max_rows_in_join` / `max_bytes_in_join`) est définie avec `join_overflow_mode = 'break'`. La jointure créée en interne pour évaluer une sous-requête corrélée ignore désormais ces limites utilisateur, et ne peut donc plus s’arrêter prématurément ni supprimer des lignes. [#103322](https://github.com/ClickHouse/ClickHouse/pull/103322) ([Groene AI](https://github.com/groeneai)).
* Corrige un bogue où `ALTER TABLE ... MODIFY SETTING` sur une table `EmbeddedRocksDB` pouvait enregistrer une valeur de paramètre invalide dans le fichier de métadonnées de la table, même lorsque le serveur rejetait la requête. Au redémarrage suivant du serveur, la table ne pouvait plus être attachée à cause de `CANNOT_PARSE_BOOL` (ou d’une erreur d’analyse similaire) et, dans les bases de données où les échecs de chargement sont fatals, le serveur refusait de démarrer. Les valeurs de paramètre invalides sont désormais rejetées avant toute écriture des métadonnées. [#103417](https://github.com/ClickHouse/ClickHouse/pull/103417) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt brutal du serveur lors de la création d’une table avec un moteur de stockage sur object storage (`AzureBlobStorage`, `DeltaLakeAzure`, `S3`, `HDFS`) utilisant un nombre d’arguments non pris en charge. Le serveur renvoie désormais une erreur `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` explicite au lieu de s’interrompre dans les builds debug/sanitizer. [#103544](https://github.com/ClickHouse/ClickHouse/pull/103544) ([Groene AI](https://github.com/groeneai)).
* Corrige un plantage du serveur lors de l’analyse des paramètres des types de données `JSON` et `Dynamic` lorsque l’arbre syntaxique abstrait (AST) était structurellement mal formé (par exemple produit par l’AST fuzzer) : l’expression de paramètre `equals(name, value)` pouvait se retrouver avec moins de deux enfants, que `DataTypeObject` et `DataTypeDynamic` déréférençaient alors sans vérification des limites. [#103545](https://github.com/ClickHouse/ClickHouse/pull/103545) ([Groene AI](https://github.com/groeneai)).
* Corrige des erreurs logiques dans l’analyzer en cas de collision de noms de colonnes dans une lambda utilisée dans `PREWHERE`. Clôt [#103584](https://github.com/ClickHouse/ClickHouse/issues/103584). [#103627](https://github.com/ClickHouse/ClickHouse/pull/103627) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l’erreur sporadique `Logical error: 'Database <name> not found'` provenant de `DataLakeConfiguration::getCatalog` lorsqu’une table avec moteur `Iceberg` est chargée dans une base de données classique pendant le chargement asynchrone des métadonnées. [#103775](https://github.com/ClickHouse/ClickHouse/pull/103775) ([Groene AI](https://github.com/groeneai)).
* Corrige les erreurs `MULTIPLE_EXPRESSIONS_FOR_ALIAS` renvoyées par des répliques distantes lors de l’exécution de requêtes qui référencent des alias de projection dans `PREWHERE` / `WHERE` / `HAVING` / `QUALIFY` (par ex. `SELECT x AS a, y AS b, (a AND b) AS c FROM t PREWHERE c`) ou de requêtes `SELECT *` sur des auto-jointures avec des noms de colonnes en conflit, avec des répliques parallèles et `parallel_replicas_local_plan = 0`. Clôt [#74324](https://github.com/ClickHouse/ClickHouse/issues/74324). [#103806](https://github.com/ClickHouse/ClickHouse/pull/103806) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt brutal du serveur lorsqu’une requête utilise des comparaisons imbriquées `coalesce`/`ifNull` (par ex. `WHERE coalesce(a, b, coalesce(c, d), e) = const`) sur une table `MergeTree` avec plusieurs skip indexes `minmax` et `use_skip_indexes_for_disjunctions = 1`. La réécriture par skip index de `<op>(coalesce(...), const)` est désormais appliquée récursivement aux arguments internes de `coalesce`, de sorte que la RPN `KeyCondition` de chaque index corresponde à celle du modèle, comme le suppose déjà le code de suivi des disjonctions. [#103929](https://github.com/ClickHouse/ClickHouse/pull/103929) ([Groene AI](https://github.com/groeneai)).
* Correction d’un problème où `max_rows_to_transfer` et `max_bytes_to_transfer` étaient silencieusement ignorés pour les requêtes `GLOBAL IN` et `GLOBAL JOIN` avec le nouvel analyseur. Les paramètres lèvent désormais `SET_SIZE_LIMIT_EXCEEDED` (ou interrompent l’exécution, selon `transfer_overflow_mode`) lorsque la table externe matérialisée dépasse la limite configurée, conformément au comportement de l’ancien analyseur. Clôt [#103333](https://github.com/ClickHouse/ClickHouse/issues/103333). [#104119](https://github.com/ClickHouse/ClickHouse/pull/104119) ([Groene AI](https://github.com/groeneai)).
* Correction de lectures excessives de métadonnées de catalogue/S3 lorsqu’une instruction `INSERT` ou DDL référence une table inexistante dans une base de données de catalogue DataLake avec `show_data_lake_catalogs_in_system_tables` activé. Le mécanisme de suggestion en cas de faute de frappe chargeait l’intégralité des métadonnées Iceberg de chaque table pour tout le catalogue, ce qui pouvait épuiser la mémoire sur les grands catalogues. [#104124](https://github.com/ClickHouse/ClickHouse/pull/104124) ([DQ](https://github.com/il9ue)).
* Correction d’un plantage (`LOGICAL_ERROR` "Columns are assumed to be of identical types, but they are different in Nullable" dans les builds de débogage, un SIGSEGV dû à un pointeur nul dans `ColumnString::compareAt` dans les builds de release) et d’un résultat erroné pouvant se produire dans des requêtes utilisant `direct` `join_algorithm` avec une table `MergeTree` à droite, lorsque le plan de requête réordonnait les colonnes pendant l’optimisation. Les colonnes du côté droit pouvaient se retrouver dans des emplacements associés à de mauvais noms, de sorte qu’un filtre ou une comparaison sur la clé de jointure voyait une colonne du mauvais type. Problème révélé par AST fuzzer sous l’identifiant STID 2139-5111 et signalé dans [#107272](https://github.com/ClickHouse/ClickHouse/issues/107272). [#104174](https://github.com/ClickHouse/ClickHouse/pull/104174) ([Groene AI](https://github.com/groeneai)).
* Rejet d’un identifiant de partition entier hors plage pour `Date`, au lieu d’un overflow silencieux ou d’une `LOGICAL_ERROR` lors de `ALTER`. [#104250](https://github.com/ClickHouse/ClickHouse/pull/104250) ([Azat Khuzhin](https://github.com/azat)).
* Désactivation de `additional_table_filters` avec les répliques parallèles et l’analyseur, en l’absence de sérialisation du plan de requête. Auparavant, cela pouvait conduire à des résultats incorrects. [#104296](https://github.com/ClickHouse/ClickHouse/pull/104296) ([Azat Khuzhin](https://github.com/azat)).
* Correction de `dictGetOrNull`, qui écrasait silencieusement les autres colonnes de la projection `SELECT` avec `NULL` lorsqu’il était appelé avec une colonne de clé `Nullable` dont les valeurs sont absentes du dictionnaire. La fonction modifiait sur place une null map aliasée en entrée ; elle effectue désormais un clonage profond de la colonne de résultat avant la mutation. Clôt [#73633](https://github.com/ClickHouse/ClickHouse/issues/73633). [#104327](https://github.com/ClickHouse/ClickHouse/pull/104327) ([Groene AI](https://github.com/groeneai)).
* Correction d’une patch part corrompue après `ALTER TABLE ... DROP PARTITION ID 'patch-...'`, suivi de `DETACH`/`ATTACH TABLE`. Auparavant, la part de couverture vide était écrite sans `partition.dat` ni `source_parts.dat`, ce qui entraînait une entrée `broken-on-start_patch-...` dans `system.detached_parts` après l’attachement suivant ou le redémarrage du serveur. Clôt [#93132](https://github.com/ClickHouse/ClickHouse/issues/93132). Clôt [#102103](https://github.com/ClickHouse/ClickHouse/issues/102103). [#104353](https://github.com/ClickHouse/ClickHouse/pull/104353) ([Groene AI](https://github.com/groeneai)).
* Correction de `INSERT` en streaming avec `input_format_max_block_wait_ms` pour l’interface `HTTP` et pour `INSERT SELECT FROM input`, afin que les blocs d’entrée partiels soient vidés avant la fin de la requête. [#104534](https://github.com/ClickHouse/ClickHouse/pull/104534) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un bug où des requêtes combinant `arrayJoin` avec `ORDER BY ... LIMIT` après un `JOIN` pouvaient renvoyer silencieusement zéro ligne. L’optimisation du query plan qui remonte l’évaluation d’une fonction au-dessus de `SortingStep` ne s’applique plus lorsque l’expression remontée contient `arrayJoin`, car `arrayJoin` peut modifier le nombre de lignes. Clôture [#82279](https://github.com/ClickHouse/ClickHouse/issues/82279). [#104558](https://github.com/ClickHouse/ClickHouse/pull/104558) ([Groene AI](https://github.com/groeneai)).
* Correction d’un arrêt brutal rare du server lors de la destruction d’une table de la famille `MergeTree`. L’arrêt pouvait se produire lorsque `shutdown` levait une exception avant que le scheduler de tâches en arrière-plan ne soit complètement arrêté : une tâche en arrière-plan se déclenchant dans cet intervalle très bref pouvait dispatcher un appel `virtual` via un objet de stockage partiellement détruit et déclencher `__cxa_pure_virtual`. [#104561](https://github.com/ClickHouse/ClickHouse/pull/104561) ([Groene AI](https://github.com/groeneai)).
* Correction d’un résultat incohérent dans une subcolumn combinée `JSON` avec un type hint contenant une valeur nulle. [#104584](https://github.com/ClickHouse/ClickHouse/pull/104584) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de résultats erronés ou d’une projection non utilisée lorsqu’une projection agrégée contient plusieurs agrégats `sumIf` avec des conditions `IN (...)` différentes. [#104765](https://github.com/ClickHouse/ClickHouse/pull/104765) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Correction d’un nombre de lignes erroné provenant de `arrayJoin()` utilisé dans `JOIN ON` : le résultat était multiplié une fois de trop par la longueur du tableau. [#104785](https://github.com/ClickHouse/ClickHouse/pull/104785) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction de `deltaSumTimestamp`, qui renvoyait des résultats erronés pour des types entiers signés passant par zéro. Résout [#104750](https://github.com/ClickHouse/ClickHouse/issues/104750). [#104830](https://github.com/ClickHouse/ClickHouse/pull/104830) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Correction d’une incompatibilité de structure de bloc dans UnionStep après une descente de filtre avec des constantes NULL. Clôture [#104821](https://github.com/ClickHouse/ClickHouse/issues/104821). [#104853](https://github.com/ClickHouse/ClickHouse/pull/104853) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `Logical error: 'Metadata is not initialized'` levée par `DELETE FROM` sur une table `Iceberg`, `DeltaLake` ou `Hudi` fraîchement attachée dont le metadata file est corrompu ou impossible à charger. Une exception standard visible par l’utilisateur est désormais renvoyée à la place, et le server continue de fonctionner. Clôture [#104891](https://github.com/ClickHouse/ClickHouse/issues/104891). [#104917](https://github.com/ClickHouse/ClickHouse/pull/104917) ([Groene AI](https://github.com/groeneai)).
* Correction du fait que `max_memory_usage_soft_limit` n’était pas mis à jour on-the-fly lorsque la configuration changeait. La soft memory limit était calculée une seule fois au démarrage puis mise en cache, si bien que les rechargements ultérieurs de la config n’avaient aucun effet. Après cette correction, la limite est recalculée et appliquée immédiatement à chaque rechargement de config, sans nécessiter de redémarrage de Keeper. [#104940](https://github.com/ClickHouse/ClickHouse/pull/104940) ([Kai Zhu](https://github.com/nauu)).
* Correction de la résolution des symboles JIT sur macOS afin que la compilation JIT de sort, expression et aggregate n’échoue plus avec `CANNOT_COMPILE_CODE: Could not find symbol _<name>`. [#104946](https://github.com/ClickHouse/ClickHouse/pull/104946) ([Alexei Fedotov](https://github.com/leshikus)).
* Correction d’une exception (`Received signal 6 (abort)` dans le durcissement des vecteurs, observable sous la forme de `Tuple::back()` sur un vecteur vide) lors de l’exécution d’une query de la forme `SELECT ... FROM <Distributed table> WHERE/HAVING/GROUP BY ... (sharding_key_column IN tuple())` avec `optimize_skip_unused_shards_rewrite_in` activé sous le nouvel analyzer. [#104966](https://github.com/ClickHouse/ClickHouse/pull/104966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un arrêt du serveur `Logical error: 'Inconsistent AST formatting'` (STID 1941-1bfa) sur des requêtes comme `CREATE TABLE t (c0 Int CODEC(not((not(materialize(1), materialize(2)))), ZSTD)) ENGINE = Memory` dans les builds de débogage / avec sanitizers. Le formateur n’émet plus de parenthèses externes redondantes autour d’un appel à la fonction `tuple(...)` à plusieurs arguments apparaissant dans les listes d’arguments de `CODEC` / `STATISTICS` / `BACKUP_NAME` (où la forme opérateur `(a, b)` est désactivée), ce qui préserve la stabilité de l’aller-retour format-analyse-format. [#104991](https://github.com/ClickHouse/ClickHouse/pull/104991) ([Groene AI](https://github.com/groeneai)).
* Correction de `NOT_FOUND_COLUMN_IN_BLOCK` levée par `ALTER TABLE ... MATERIALIZE INDEX` sur des parts créées en 25.8 et contenant un skip index sur une colonne ajoutée via un `ALTER TABLE ... ADD COLUMN` distinct. La mutation lit désormais correctement toutes les colonnes requises par chaque skip index et projection préexistants sur la part lors du recalcul forcé. Clôt [#104872](https://github.com/ClickHouse/ClickHouse/issues/104872). [#105039](https://github.com/ClickHouse/ClickHouse/pull/105039) ([Groene AI](https://github.com/groeneai)).
* Correction de deux cas de `LOGICAL_ERROR: Reading from materialized CTE 'X' before it has been materialized` levés par des requêtes avec `enable_materialized_cte` : (1) un materialized CTE réutilisé filtré par `IN (subquery)` sur un autre materialized CTE, et (2) un materialized CTE référencé à la fois directement et dans un filtre `WHERE ... IN (...)` qui atteint une primary key MergeTree via une sous-requête `IN` imbriquée. `EXPLAIN` sur les mêmes requêtes était également affecté, car les bogues se déclenchaient pendant l’optimisation du plan. Clôt [#101940](https://github.com/ClickHouse/ClickHouse/issues/101940), clôt [#102320](https://github.com/ClickHouse/ClickHouse/issues/102320). [#105041](https://github.com/ClickHouse/ClickHouse/pull/105041) ([Dmitry Novik](https://github.com/novikd)).
* Correction de l’estimation de la sélectivité `PREWHERE` des statistiques `countmin` pour les colonnes `Float32`. Deux bogues faisaient que les statistiques `countmin` produisaient silencieusement des estimations erronées pour les colonnes `Float32` : `ConditionSelectivityEstimator` ignorait complètement les statistiques lorsque le type de la colonne (`Float32`) était plus étroit que le type du littéral (`Float64`), revenant à la sélectivité par défaut et ignorant le sketch ; et `StatisticsCountMinSketch::estimateEqual` hachait les N premiers octets d’un objet `Field`, mais `Field` stocke `Float32` comme `Float64` (`NearestFieldType<Float32>` = `Float64`), de sorte que le motif d’octets utilisé au moment de la requête différait des octets `Float32` réellement stockés lors du build. [#105047](https://github.com/ClickHouse/ClickHouse/pull/105047) ([Han Fei](https://github.com/hanfei1991)).
* Les requêtes `ATTACH TABLE name <clauses>;` qui fournissent des clauses de stockage (`ORDER BY`, `PARTITION BY`, `PRIMARY KEY`, `SAMPLE BY`, `TTL`, `UNIQUE KEY` ou les `SETTINGS` de l’engine) sans `ENGINE` lèvent désormais `BAD_ARGUMENTS` au lieu de rattacher silencieusement la table avec sa définition stockée et d’ignorer les clauses fournies par l’utilisateur. Les `SETTINGS` de session au niveau de la requête (comme `log_comment`) sont toujours appliqués. Utilisez `ATTACH TABLE t;` pour rattacher la table avec les métadonnées stockées, ou `ALTER TABLE t MODIFY SETTING ...` après `ATTACH` pour modifier les settings. [#105068](https://github.com/ClickHouse/ClickHouse/pull/105068) ([Groene AI](https://github.com/groeneai)).
* Correction d’un use-after-free dans `runningAccumulate` lorsqu’il est appelé sur une colonne dont la fonction d’agrégation renvoie son propre état (par ex. `uniqStateOrDefaultState`, `sumStateOrDefaultState`, `uniqStateForEachState`). [#105085](https://github.com/ClickHouse/ClickHouse/pull/105085) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction d’un bogue dans l’UI Web (`play.html`) : l’exécution d’une requête alors que le curseur se trouvait après l’unique `;` final signalait "empty query" au lieu d’exécuter la requête. [#105107](https://github.com/ClickHouse/ClickHouse/pull/105107) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `LOGICAL_ERROR: 'No user in current context, it's a bug'` lorsqu’un `CREATE TABLE ... AS SELECT` à l’intérieur d’une base de données `Replicated` lit depuis `system.current_roles` ou `system.enabled_roles`. La requête aboutit désormais et renvoie un ensemble de résultats vide dans ce contexte interne de worker DDL. [#105150](https://github.com/ClickHouse/ClickHouse/pull/105150) ([Groene AI](https://github.com/groeneai)).
* Correction de `ILLEGAL_TYPE_OF_ARGUMENT` lors de la fusion des états d’agrégation `quantileExactWeightedInterpolated`, `quantileDD` ou `quantilePrometheusHistogram` avec leurs équivalents au pluriel `quantilesXxxMerge` (et inversement). Les variantes au singulier et au pluriel de ces trois familles de quantiles partagent le même état d’agrégation interne, mais n’étaient pas répertoriées dans la table interne de correspondance des noms. La fusion d’états entre fonctions — ainsi que l’optimisation de fusion de fonctions pour ces familles — était donc rejetée. [#105189](https://github.com/ClickHouse/ClickHouse/pull/105189) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats incorrects de `toStartOfWeek`, `toLastDayOfWeek`, `toMonday`, `toStartOfMonth`, `toLastDayOfMonth`, `toStartOfQuarter` et `toStartOfYear` pour des arguments `Date32` et `DateTime64` dont le résultat sort de la plage `Date` : au lieu de déborder vers des dates arbitraires, les résultats antérieurs à `1970-01-01` sont désormais limités à `1970-01-01`, et les résultats postérieurs à `2149-06-06` à `2149-06-06`. Cela corrige également des résultats de requête erronés (parts et granules incorrectement élaguées) lorsque de telles fonctions étaient utilisées dans `WHERE` sur une clé `Date32` ou `DateTime64` contenant des valeurs hors plage. [#105244](https://github.com/ClickHouse/ClickHouse/pull/105244) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d’une erreur logique dans `arrayRemove` lorsque le premier argument est un tableau de `Variant` dont les alternatives sont toutes incompatibles avec le type du second argument et que `variant_throw_on_type_mismatch` est désactivé. La fonction traite désormais la comparaison comme "jamais égale" et renvoie le tableau inchangé au lieu de déclencher un échec de `assertTypeEquality` côté serveur. [#105248](https://github.com/ClickHouse/ClickHouse/pull/105248) ([Groene AI](https://github.com/groeneai)).
* La requête peut désormais s’exécuter avec succès même si `FileCache` ne parvient pas à créer certains répertoires sur le disque pour la mise en cache. [#105250](https://github.com/ClickHouse/ClickHouse/pull/105250) ([Den Kalantaevskii](https://github.com/Diskein)).
* Correction d’un arrêt du serveur avec `Assertion 'px != 0' failed` dans `ExtremesTransform` lorsqu’une requête avec `extremes = 1` rencontre une exception (par exemple `MEMORY_LIMIT_EXCEEDED`) alors que la transformation construit ses colonnes d’extrêmes à partir du premier bloc. Le client reçoit désormais l’exception d’origine au lieu de faire planter le serveur. [#105264](https://github.com/ClickHouse/ClickHouse/pull/105264) ([Groene AI](https://github.com/groeneai)).
* `LEFT ANTI JOIN` renvoie désormais correctement la colonne de clé de jointure du côté droit avec des valeurs par défaut pour les lignes sans correspondance, au lieu de dupliquer la valeur de clé de gauche. Auparavant, `SELECT a.x AS l, b.x AS r FROM a LEFT ANTI JOIN b ON a.x = b.x` pouvait renvoyer `r = a.x` pour les lignes sans correspondance alors qu’il devait renvoyer la valeur par défaut (`0` pour `Int32`, `''` pour `String`, `NULL` pour `Nullable`). Seule la colonne de clé de jointure était affectée ; les colonnes non clés du côté droit recevaient déjà correctement leurs valeurs par défaut. Le même bogue apparaissait dans `RIGHT ANTI JOIN` chaque fois que l’optimiseur inversait les côtés. Clôt [#99959](https://github.com/ClickHouse/ClickHouse/issues/99959). [#105278](https://github.com/ClickHouse/ClickHouse/pull/105278) ([Groene AI](https://github.com/groeneai)).
* Corrige une perte de données dans `clickhouse-local` lorsqu'il est redémarré à plusieurs reprises avec un `--default_database` autre que `default` (par exemple `clickhouse-local --path X -- --default_database=mydb`) : la recherche de l'UUID persisté de la base de données était codée en dur sur `metadata/default`, si bien qu'un nouvel UUID était généré à chaque redémarrage et que les tables de l'exécution précédente devenaient invisibles. Clôt [#101831](https://github.com/ClickHouse/ClickHouse/issues/101831). [#105284](https://github.com/ClickHouse/ClickHouse/pull/105284) ([Groene AI](https://github.com/groeneai)).
* Corrige une erreur logique `Mutation of `Memory` table produced incomplete output` déclenchée lors de l'exécution de `ALTER TABLE <memory_table> APPLY PATCHES` ou `ALTER TABLE <memory_table> APPLY DELETED MASK`. Les tables `Memory` ne possèdent ni patch parts ni masques de suppression ; ces deux commandes sont donc désormais correctement traitées comme des opérations sans effet. [#105286](https://github.com/ClickHouse/ClickHouse/pull/105286) ([Groene AI](https://github.com/groeneai)).
* Corrige les requêtes longues avec Unity Catalog en transmettant un paramètre `table_id` dans la requête. [#105303](https://github.com/ClickHouse/ClickHouse/pull/105303) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige `CANNOT_CONVERT_TYPE` pour `Merge` sur `Merge` sur `Distributed` avec `distributed_group_by_no_merge=1`. [#105330](https://github.com/ClickHouse/ClickHouse/pull/105330) ([Azat Khuzhin](https://github.com/azat)).
* Corrige le fait que `clickhouse local` et `clickhouse client` ignoraient silencieusement `--query`/`-q` lorsqu'un argument de fichier positionnel était également fourni. Les deux formes produisent désormais `BAD_ARGUMENTS` de manière cohérente. [#105334](https://github.com/ClickHouse/ClickHouse/pull/105334) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige le fait que `REPLACE TEMPORARY TABLE` créait silencieusement une nouvelle table lorsque la cible n'existait pas. L'instruction génère désormais `UNKNOWN_TABLE`, conformément à la sémantique de `REPLACE TABLE`. Utilisez `CREATE OR REPLACE TEMPORARY TABLE` pour conserver le comportement create-or-replace. [#105373](https://github.com/ClickHouse/ClickHouse/pull/105373) ([Groene AI](https://github.com/groeneai)).
* Corrige l'échec de lectures longues (par ex. `INSERT ... SELECT`) depuis une base de données `DataLakeCatalog` avec `catalog_type = 'glue'`, avec une erreur `ExpiredToken` une fois les credentials de session AWS STS capturés au chargement des métadonnées de la table arrivés à expiration. Les credentials AWS STS sont désormais actualisés en cours de requête, de sorte que ces lectures se poursuivent après l'expiration du token. [#105381](https://github.com/ClickHouse/ClickHouse/pull/105381) ([Pratima Patel](https://github.com/pratimapatel2008)).
* Corrige une erreur logique avec `LIMIT BY` négatif dans certains cas lorsqu'il est utilisé avec `ARRAY JOIN`. [#105403](https://github.com/ClickHouse/ClickHouse/pull/105403) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige la surévaluation de `read_bytes` (ainsi que des octets/s dérivés affichés dans `system.query_log`, la barre de progression, etc.) lors de la lecture de Parquet files. L'implémentation précédente signalait la taille compressée totale du row group à chaque bloc, si bien que la lecture de K colonnes sur N était surcomptée d'un facteur `N / K`. Le total est désormais calculé uniquement sur les colonnes sélectionnées. Corrige également le suivi de progression au niveau du fichier pour les Iceberg tables, qui auparavant ne signalait jamais la taille du fichier de données. [#105413](https://github.com/ClickHouse/ClickHouse/pull/105413) ([Groene AI](https://github.com/groeneai)).
* Corrige un segfault possible du serveur dans les cluster table functions (`s3Cluster`, `urlCluster`, `fileCluster`, ...) lorsque le planificateur produit un `SELECT` avec l'indicateur `recursive_with` activé mais sans expression `WITH`. Clôt [#105370](https://github.com/ClickHouse/ClickHouse/issues/105370). [#105433](https://github.com/ClickHouse/ClickHouse/pull/105433) ([Groene AI](https://github.com/groeneai)).
* Corrige un résultat incorrect de `countDistinct` / `uniqExact` sur des colonnes `Nullable` lorsque `count_distinct_optimization = 1` (le groupe NULL était compté à tort). [#105439](https://github.com/ClickHouse/ClickHouse/pull/105439) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un heap-buffer-overflow lors de la lecture de fichiers Arrow ou ArrowStream avec des offsets intermédiaires corrompus dans une colonne binaire ou de type chaîne, ainsi que d’un déréférencement de pointeur nul lors de la lecture de colonnes Arrow géolocalisées. [#105449](https://github.com/ClickHouse/ClickHouse/pull/105449) ([Raúl Marín](https://github.com/Algunenano)).
* Validation des types `Dynamic`/`Variant` dans la window `PARTITION BY` ; cela n’était auparavant pas vérifié lorsque `allow_suspicious_types_in_group_by` est désactivé. Clôture [#105028](https://github.com/ClickHouse/ClickHouse/issues/105028). [#105450](https://github.com/ClickHouse/ClickHouse/pull/105450) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction du non-fonctionnement de `input_format_json_empty_as_default` dans les formats JSONStrings\*. Clôture [#104913](https://github.com/ClickHouse/ClickHouse/issues/104913). [#105453](https://github.com/ClickHouse/ClickHouse/pull/105453) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l’insert de `NULL` dans une colonne `Variant` via le format `VALUES` lors de l’analyse des expressions. Clôture [#104909](https://github.com/ClickHouse/ClickHouse/issues/104909). [#105455](https://github.com/ClickHouse/ClickHouse/pull/105455) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `dictGetOrDefault`, qui levait `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN` lorsque l’argument par défaut est une expression `Nullable` et que `short_circuit_function_evaluation` est activé, avec un mélange de clés de dictionnaire trouvées et introuvables. [#105461](https://github.com/ClickHouse/ClickHouse/pull/105461) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de la troncature silencieuse de valeurs dans les colonnes `Dynamic` lorsque le reader de texte `Quoted` (Values) bascule vers `String` pour des types inférés incomplets comme `Map(Array(Nothing), ...)`. Auparavant, ce mécanisme de repli entourait le field brut par une concaténation naïve de `'...'`, si bien qu’une apostrophe interne (toujours présente dans ce type de repli) fermait prématurément la chaîne entre guillemets et faisait perdre le reste de la valeur. [#105463](https://github.com/ClickHouse/ClickHouse/pull/105463) ([Groene AI](https://github.com/groeneai)).
* Correction d’un SIGSEGV lors de la lecture de subcolumns `Dynamic` depuis une table `Memory` compressée après `ALTER`. Clôture [#104901](https://github.com/ClickHouse/ClickHouse/issues/104901). [#105464](https://github.com/ClickHouse/ClickHouse/pull/105464) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `toFloat64`/`toUInt32`/`toString`/etc. sur `Dynamic`, qui ignorait `cast_keep_nullable`. Clôture [#104789](https://github.com/ClickHouse/ClickHouse/issues/104789). [#105467](https://github.com/ClickHouse/ClickHouse/pull/105467) ([Pavel Kruglov](https://github.com/Avogar)).
* Ajout de `skip_first_lines` à la clé de cache du schéma pour les formats `WithNames`. Clôture [#104527](https://github.com/ClickHouse/ClickHouse/issues/104527). [#105469](https://github.com/ClickHouse/ClickHouse/pull/105469) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un segfault du server dans `uniqStateOrNull` / `uniqStateOrDefault` / `uniqOrNullState` (et des chaînes de combinators similaires sur `uniq`) lorsqu’ils sont utilisés avec `GROUP BY ... WITH ROLLUP`, `WITH CUBE` ou `WITH TOTALS` et un argument `Nullable`. [#105470](https://github.com/ClickHouse/ClickHouse/pull/105470) ([Groene AI](https://github.com/groeneai)).
* Correction de l’exception `NOT_FOUND_COLUMN_IN_BLOCK` lors de l’utilisation combinée de `ORDER BY ... WITH FILL INTERPOLATE` et `LIMIT N BY` avec l’analyseur activé. Clôture [#103474](https://github.com/ClickHouse/ClickHouse/issues/103474). [#105481](https://github.com/ClickHouse/ClickHouse/pull/105481) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Correction de `toStartOfMillisecond` et `toStartOfMicrosecond`, qui renvoyaient un résultat décalé de près d’une seconde pour les valeurs `DateTime64` négatives (antérieures à l’époque Unix), ainsi que du signed-integer-overflow signalé par `UndefinedBehaviorSanitizer` dans `toStartOfSecond`, `toStartOfMillisecond` et `toStartOfMicrosecond` pour des entrées `DateTime64` proches de `INT64_MIN`. [#105482](https://github.com/ClickHouse/ClickHouse/pull/105482) ([Groene AI](https://github.com/groeneai)).
* Ajout d’un nouveau paramètre de compatibilité `analyzer_compatibility_prefer_alias_over_subcolumn` (désactivé par défaut). Lorsqu’il est activé, le nouvel analyseur privilégie l’interprétation par préfixe d’alias plutôt que les correspondances avec des sous-colonnes `Tuple` / des colonnes à notation pointée pour les identifiants en plusieurs parties, rétablissant ainsi le comportement de l’interpréteur précédent. Cela évite les erreurs `AMBIGUOUS_IDENTIFIER` (et apparentées) lorsqu’une requête joint une table dont le nom correspond à une table interne d’une CTE/sous-requête utilisant `SELECT *` sur une jointure, où des colonnes renommées via l’astérisque (par ex. `b.id`) feraient sinon fuiter les identifiants de la table interne dans la portée externe. [#105491](https://github.com/ClickHouse/ClickHouse/pull/105491) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Une requête de recherche vectorielle exécutée avec l’optimisation *index only* renvoie désormais la valeur correcte pour `L2Distance()` si elle figure dans la liste `SELECT`. La fonction renvoyait à tort la valeur de distance *L2-squared*. Notez que la requête de recherche vectorielle renvoyait bien les résultats dans le bon ordre ; seules les applications **récupérant et interprétant explicitement** la valeur `L2Distance()` voyaient la valeur au carré. [#105495](https://github.com/ClickHouse/ClickHouse/pull/105495) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Correction d’un problème rare dans le nouveau moteur de table Kafka, où les messages pouvaient être traités incorrectement lors de la réattribution des partitions d’un topic, ce qui pouvait entraîner des messages ignorés après un rollback d’offset. [#105500](https://github.com/ClickHouse/ClickHouse/pull/105500) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction d’une exception (`Trying to execute PLACEHOLDER action` erreur logique) lorsqu’une CTE `MATERIALIZED` dont le corps est une sous-requête corrélée est utilisée comme opérande droit de `IN`. Une telle CTE est désormais rejetée au moment de l’analyse, de façon cohérente avec le fait que le même motif est déjà rejeté lorsque la CTE est référencée directement dans `FROM`. [#105518](https://github.com/ClickHouse/ClickHouse/pull/105518) ([Groene AI](https://github.com/groeneai)).
* Correction de la compression stdout/stdin qui n’était pas appliquée lorsque le format était explicitement spécifié. Closes [#104441](https://github.com/ClickHouse/ClickHouse/issues/104441). [#105528](https://github.com/ClickHouse/ClickHouse/pull/105528) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un segfault dans la désérialisation de `singleValueOrNull` pour le type `JSON`. Closes [#103630](https://github.com/ClickHouse/ClickHouse/issues/103630). [#105535](https://github.com/ClickHouse/ClickHouse/pull/105535) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `clickhouse-format --backslash`, qui supprimait silencieusement les données `INSERT` `VALUES`. Closes [#103533](https://github.com/ClickHouse/ClickHouse/issues/103533). [#105536](https://github.com/ClickHouse/ClickHouse/pull/105536) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `variant_throw_on_type_mismatch/dynamic_throw_on_type_mismatch=false`, qui n’interceptait pas les exceptions pendant l’exécution de la fonction. Closes [#103484](https://github.com/ClickHouse/ClickHouse/issues/103484). [#105543](https://github.com/ClickHouse/ClickHouse/pull/105543) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction du fait que `input_format_try_infer_datetimes` était ignoré lors de l’insertion dans des données partagées en `JSON`. Closes [#103221](https://github.com/ClickHouse/ClickHouse/issues/103221). [#105544](https://github.com/ClickHouse/ClickHouse/pull/105544) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `histogram`, qui produisait des résultats incorrects pour de petites entrées non triées. Closes [#103109](https://github.com/ClickHouse/ClickHouse/issues/103109). [#105548](https://github.com/ClickHouse/ClickHouse/pull/105548) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction du retour circulaire de `DateTime` pour les valeurs hors plage dans `JSONExtract` et lors des désérialisations de texte. Closes [#103094](https://github.com/ClickHouse/ClickHouse/issues/103094). [#105551](https://github.com/ClickHouse/ClickHouse/pull/105551) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l'utilisation de la table d'insertion dans les fonctions de table lorsque `optimize_trivial_insert_select` est activé. Closes [#103083](https://github.com/ClickHouse/ClickHouse/issues/103083). [#105555](https://github.com/ClickHouse/ClickHouse/pull/105555) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l'expression `CASE`, qui renvoyait la branche `ELSE` au lieu du `THEN` correspondant lorsque l'expression et une valeur `WHEN` étaient toutes deux `NULL`. [#105556](https://github.com/ClickHouse/ClickHouse/pull/105556) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d'un crash dans `replxx` provoqué par l'atteinte de la limite `FD_SETSIZE` de `select` (désormais remplacé par `poll`). Auparavant, avec SSH ou le terminal Web activé, cela pouvait faire planter le serveur. [#105559](https://github.com/ClickHouse/ClickHouse/pull/105559) ([Azat Khuzhin](https://github.com/azat)).
* Matérialisation des sous-colonnes dans `executePartitionByExpression` avant l'exécution de l'expression. Closes [#103057](https://github.com/ClickHouse/ClickHouse/issues/103057). [#105573](https://github.com/ClickHouse/ClickHouse/pull/105573) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l'exception `NOT_FOUND_COLUMN_IN_BLOCK` lorsqu'une expression `TTL` fait référence à une sous-colonne. [#105578](https://github.com/ClickHouse/ClickHouse/pull/105578) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d'un crash du serveur (SIGSEGV), exploitable par tout utilisateur disposant des droits `CREATE TABLE`, lors de l'envoi de `CREATE TABLE ... TO INNER UUID '...'` sans clause `ENGINE` via HTTP ou le protocole natif. Le même bug faisait également planter le client. Le parser signale désormais une erreur `BAD_ARGUMENTS` appropriée au lieu de déréférencer un pointeur nul. [#105579](https://github.com/ClickHouse/ClickHouse/pull/105579) ([Groene AI](https://github.com/groeneai)).
* Correction de la perte des données accumulées entre les lignes par la fonction de fenêtre `estimateCompressionRatio`. Closes [#101738](https://github.com/ClickHouse/ClickHouse/issues/101738). [#105581](https://github.com/ClickHouse/ClickHouse/pull/105581) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d'un crash lors de l'insertion de tuples de tailles différentes dans la même clause VALUES dans une colonne `String`. Closes [#101727](https://github.com/ClickHouse/ClickHouse/issues/101727). [#105582](https://github.com/ClickHouse/ClickHouse/pull/105582) ([Pavel Kruglov](https://github.com/Avogar)).
* L'extraction des valeurs de partition Hive respecte désormais le paramètre `cast_string_to_date_time_mode` et accepte par défaut les timestamps ISO 8601 avec suffixes de fuseau horaire (p. ex. `+0000`, `+00:00`, `Z`) dans les clés de partition. [#105584](https://github.com/ClickHouse/ClickHouse/pull/105584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'erreur `NOT_IMPLEMENTED` sur `toString` à partir de `DateTime` avec un Timezone contenant une valeur `NULL`. Closes [#103712](https://github.com/ClickHouse/ClickHouse/issues/103712). [#105587](https://github.com/ClickHouse/ClickHouse/pull/105587) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d'une lecture hors limites lors de la désérialisation Native d'une colonne `Dynamic` aplatie. [#105666](https://github.com/ClickHouse/ClickHouse/pull/105666) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un `LOGICAL_ERROR` (`Unexpected return type from if`) déclenché pendant la planification de la requête pour des expressions `if` dont le type de résultat est `Variant` et dont la deuxième ou la troisième branche est un `if` à condition constante sur un littéral `UInt64` pouvant tenir dans un `Int64`. Clôt [#105649](https://github.com/ClickHouse/ClickHouse/issues/105649). [#105680](https://github.com/ClickHouse/ClickHouse/pull/105680) ([Groene AI](https://github.com/groeneai)).
* Corrige des résultats erronés lors de la lecture d’une table Iceberg avec `iceberg_use_version_hint = 1` après qu’un autre writer (comme la table function `icebergLocal`/`icebergS3`), sans ce paramètre, a fait avancer la table. `version-hint.text` est désormais maintenu synchronisé par chaque writer dès lors que le fichier existe, de sorte que les lecteurs suivants utilisant l’indice voient le dernier snapshot. [#105682](https://github.com/ClickHouse/ClickHouse/pull/105682) ([Groene AI](https://github.com/groeneai)).
* Corrige un sous-comptage silencieux dans les requêtes `SELECT` lorsque `use_query_condition_cache = 1` (par défaut). Une requête de la forme `PREWHERE pk_prefix = X WHERE non_pk IN (...)` sur une colonne avec un bloom-filter skip index empoisonnait le `QueryConditionCache` pour le prédicat `pk_prefix = X`, de sorte qu’une requête bénigne ultérieure `SELECT count() ... WHERE pk_prefix = X` renvoyait un résultat incorrect, sous-compté. Affectait toutes les releases 26.x. [#104781](https://github.com/ClickHouse/ClickHouse/issues/104781). [#105686](https://github.com/ClickHouse/ClickHouse/pull/105686) ([Groene AI](https://github.com/groeneai)).
* Corrige `singleValueOrNullMerge`, qui renvoyait une valeur concrète au lieu de `NULL` lors de la fusion d’un état ayant déjà observé plusieurs valeurs distinctes. [#105734](https://github.com/ClickHouse/ClickHouse/pull/105734) ([Minh Vu](https://github.com/fallintoplace)).
* Corrige la récupération après erreur du input format `Template` après des lignes malformées. [#105735](https://github.com/ClickHouse/ClickHouse/pull/105735) ([Yue Ni](https://github.com/niyue)).
* Corrige un plantage dans la table function `mongodb`, le stockage MongoDB et la dictionary source MongoDB lorsque le nom de la collection est vide ou contient des octets NUL. [#105776](https://github.com/ClickHouse/ClickHouse/pull/105776) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige le nettoyage des snapshots `Keeper` après des writes échouées afin que les snapshots partiels soient nettoyés en toute sécurité et que les writes échouées puissent être retentées sans faire avancer `latest_snapshot_meta`. [#105779](https://github.com/ClickHouse/ClickHouse/pull/105779) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige le rejet de `ALTER TABLE ... CLEAR COLUMN` pour les colonnes `columns_to_sum` explicites de `SummingMergeTree` et `CoalescingMergeTree`. [#105785](https://github.com/ClickHouse/ClickHouse/pull/105785) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige une assertion dans `DatabaseCatalog::tryGetDatabase` (et l’erreur `UNKNOWN_DATABASE` qui en résultait dans les builds de release) lors de la création d’une parameterized view dont le nom de la database est fourni via un query parameter, par exemple `CREATE VIEW {db:Identifier}.v AS SELECT {p:UInt64}`. Les Parameters dans les parties DDL de l’instruction `CREATE` sont désormais substitués au moment de la création, tandis que les paramètres dans le corps du `SELECT` restent disponibles pour substitution au moment de l’appel de la vue. [#105799](https://github.com/ClickHouse/ClickHouse/pull/105799) ([Groene AI](https://github.com/groeneai)).
* Corrige `Bad get: has Decimal32, requested Decimal128` dans `sumMap` et `sumMapWithOverflow` sur une colonne `Nested(... Nullable(Decimal(P, S)))` lorsque l’aggregate state est sérialisé (par ex. parallel replicas, `sumMapState` via un formatter d’état binaire, external aggregation). [#105816](https://github.com/ClickHouse/ClickHouse/pull/105816) ([Groene AI](https://github.com/groeneai)).
* Correction des erreurs `Expected ColumnLowCardinality, got String` / `Bad cast from type DB::ColumnString to DB::ColumnLowCardinality` lorsque `apply_mutations_on_fly = 1` est utilisé sur une table avec des mutations `UPDATE`/`DELETE` à la volée en attente, mises en file avant une mutation `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#105847](https://github.com/ClickHouse/ClickHouse/pull/105847) ([Raúl Marín](https://github.com/Algunenano)).
* Les écritures Iceberg préservent désormais les valeurs NULL dans les colonnes de partition `Nullable(T)`. Auparavant, un NULL écrit par ClickHouse apparaissait comme la valeur par défaut du type interne (`0` pour `int`) lorsqu’il était relu par Spark ou d’autres lecteurs Iceberg. Résout [#105852](https://github.com/ClickHouse/ClickHouse/issues/105852). [#105862](https://github.com/ClickHouse/ClickHouse/pull/105862) ([Groene AI](https://github.com/groeneai)).
* Correction du pushdown des filtres `Parquet` et `ORC` pour les prédicats `IN (subquery)`, ce qui permet à l’élagage des groupes de lignes, des pages et des filtres Bloom de fonctionner pour les lectures `file`, `url`, `s3` et depuis le stockage objet. [#105863](https://github.com/ClickHouse/ClickHouse/pull/105863) ([Arsen Muk](https://github.com/arsenmuk)).
* Correction de la lecture ordonnée pour les tables `Merge` (avec le nouvel analyseur). [#105867](https://github.com/ClickHouse/ClickHouse/pull/105867) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction d’Iceberg v2 merge-on-read : les suppressions par position pouvaient renvoyer des lignes incorrectes lorsqu’un seul fichier de suppression référençait plusieurs fichiers de données et que plusieurs de ces fichiers de suppression s’appliquaient au même fichier de données. Le lecteur en streaming (`use_roaring_bitmap_iceberg_positional_deletes = 0`) filtre désormais les lignes du fichier de suppression par `file_path` en C++ au lieu de s’appuyer sur l’élagage des groupes de lignes Parquet, ce qui rétablit l’invariant des positions croissantes. [#105888](https://github.com/ClickHouse/ClickHouse/pull/105888) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `Cannot find column` pour les requêtes distribuées avec un filtre `IN Array(...)` dans le nouvel analyseur. [#105894](https://github.com/ClickHouse/ClickHouse/pull/105894) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction d’un SIGSEGV dans `ALTER TABLE ... MODIFY COLUMN ... Nullable(...)` sur les tables `MergeTree` lorsqu’une colonne avec `STATISTICS` est supprimée simultanément par un autre `ALTER`. Résout [#105912](https://github.com/ClickHouse/ClickHouse/issues/105912). [#105917](https://github.com/ClickHouse/ClickHouse/pull/105917) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage du serveur qui pouvait se produire lorsqu’une requête lisant depuis PostgreSQL — via la table function postgresql, le PostgreSQL table engine, ou un dictionnaire avec une source PostgreSQL — était annulée (par exemple avec KILL QUERY) et que l’annulation de la requête PostgreSQL distante échouait. [#105949](https://github.com/ClickHouse/ClickHouse/pull/105949) ([Rory Shanks](https://github.com/rorylshanks)).
* Correction de la mise en forme de `SYSTEM INSTRUMENT ADD` afin que les arguments du gestionnaire soient séparés par un seul espace, et rejet des listes d’arguments d’instrumentation `SLEEP` invalides comportant plus de deux valeurs ou une plage dans laquelle le minimum est supérieur au maximum. [#105984](https://github.com/ClickHouse/ClickHouse/pull/105984) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction de résultats potentiellement erronés pour les requêtes qui combinent un OUTER JOIN avec un INNER JOIN ultérieur faisant référence au côté de l’outer join qui fournit les NULL. Le réordonnancement des jointures pouvait choisir un plan qui déplaçait les conditions de l’inner join dans la clause ON de l’outer join. [#105992](https://github.com/ClickHouse/ClickHouse/pull/105992) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’un plantage possible dû à un littéral de chaîne trop volumineux envoyé dans la requête. [#105996](https://github.com/ClickHouse/ClickHouse/pull/105996) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige l'exception `INVALID_WITH_FILL_EXPRESSION` lors de l'utilisation de `INTERPOLATE ()` (vide) avec un préfixe de tri dans `ORDER BY` et `use_with_fill_by_sorting_prefix` activé. Les colonnes du préfixe de tri sont désormais correctement exclues de l'ensemble d'interpolation implicite, conformément au comportement de `INTERPOLATE (col)` lorsqu'une colonne est explicitement nommée. [#106001](https://github.com/ClickHouse/ClickHouse/pull/106001) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige l'échec silencieux des opérations de partition `ALTER TABLE` pour les clés de partition `Bool`. Clôt [#101722](https://github.com/ClickHouse/ClickHouse/issues/101722). [#106004](https://github.com/ClickHouse/ClickHouse/pull/106004) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige `JSONExtractRaw` et `JSONHas` pour les chemins `JSON` typés avec des valeurs par défaut. Clôt [#101721](https://github.com/ClickHouse/ClickHouse/issues/101721). [#106005](https://github.com/ClickHouse/ClickHouse/pull/106005) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l'ajout incorrect d'un préfixe '/' sur des chemins de base vides dans les configurations de data lake. Clôt [#105989](https://github.com/ClickHouse/ClickHouse/issues/105989). [#106013](https://github.com/ClickHouse/ClickHouse/pull/106013) ([thewisenerd](https://github.com/thewisenerd)).
* Corrige le fait que le moteur de table `IcebergLocal` devienne en lecture seule après un cycle `DETACH` + `ATTACH` ou un redémarrage du serveur, ce qui faisait échouer tous les `INSERT` suivants avec `Local object storage Local is readonly. (READONLY)`. [#106016](https://github.com/ClickHouse/ClickHouse/pull/106016) ([Groene AI](https://github.com/groeneai)).
* Corrige les défaillances de `Keeper` pendant le rattrapage d'un follower lorsque la nouvelle file de réponses du répartiteur de requêtes pouvait se remplir avant le démarrage du thread de réponse. [#106049](https://github.com/ClickHouse/ClickHouse/pull/106049) ([Antonio Andelic](https://github.com/antonio2368)).
* Meilleure compatibilité avec l'ancien analyzer. Si la table contient des colonnes comme `x.a Array, x.b Array, x String`, les arrays sont désormais privilégiés pour `ARRAY JOIN x`. [#106069](https://github.com/ClickHouse/ClickHouse/pull/106069) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Corrige la désactivation silencieuse du cache du système de fichiers pour Azure Blob Storage (par ex. des tables Delta Lake sur Azure), car les métadonnées de l'objet n'incluaient pas l'ETag du blob. [#106091](https://github.com/ClickHouse/ClickHouse/pull/106091) ([thewisenerd](https://github.com/thewisenerd)).
* Corrige `system.dictionaries`, qui renvoyait 0 ligne en cas de révocation partielle de `SHOW DICTIONARIES`. [#106105](https://github.com/ClickHouse/ClickHouse/pull/106105) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un plantage du serveur lors de l'exécution de requêtes sur des tables DeltaLake avec `allow_experimental_delta_kernel_rs` activé et un identifiant ou une option contenant des octets invalides (la FFI Rust paniquait au-delà de la frontière `extern "C"`). [#106109](https://github.com/ClickHouse/ClickHouse/pull/106109) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige des résultats incorrects pour les requêtes sur des tables dont le `ORDER BY` contient une fonction monotone décroissante telle que `(c0 / -42)` ou `intDiv(c0, -42)`. Les prédicats sur la colonne sous-jacente (par exemple `c0 < 0`) pouvaient à tort élaguer des granules contenant des lignes correspondantes, produisant des résultats manquants. Clôt [#106084](https://github.com/ClickHouse/ClickHouse/issues/106084). Clôt [#106124](https://github.com/ClickHouse/ClickHouse/issues/106124). Clôt [#106080](https://github.com/ClickHouse/ClickHouse/issues/106080). [#106136](https://github.com/ClickHouse/ClickHouse/pull/106136) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige la prise en charge de l'utilisation des UDF SQL `WASM` dans les définitions de `MATERIALIZED VIEW`. [#106161](https://github.com/ClickHouse/ClickHouse/pull/106161) ([Yue Ni](https://github.com/niyue)).
* L’Iceberg partition pruning gère désormais correctement les filtres `WHERE partition_col = (SELECT ... FROM ...)` lorsque l’analyzer encapsule le résultat de la sous-requête scalaire dans un `_CAST(Const, 'TargetType')` interne avec des types source et cible identiques. Auparavant, ces filtres désactivaient l’élagage des partitions et déclenchaient un parcours complet de la table. [#106204](https://github.com/ClickHouse/ClickHouse/pull/106204) ([Groene AI](https://github.com/groeneai)).
* Correction du paramètre `--query_id` de clickhouse local pour permettre de spécifier un Query id personnalisé. [#106205](https://github.com/ClickHouse/ClickHouse/pull/106205) ([Yue Ni](https://github.com/niyue)).
* Correction d’un problème où la classe de stockage S3 (`s3_storage_class` / `s3_storage_class_name`) était ignorée pour les objets écrits via multipart upload sur les disques `S3` et le stockage objet, ce qui entraînait la création des objets volumineux avec la classe `STANDARD` par défaut. Le nom de l’option est désormais accepté aussi bien sous la forme `s3_storage_class` que `s3_storage_class_name` pour les disques, le stockage objet et les sauvegardes. [#106214](https://github.com/ClickHouse/ClickHouse/pull/106214) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un problème où Keeper se bloquait parfois au démarrage lorsque le paramètre `nuraft_max_log_gap_in_stream` était défini sur une valeur autre que celle par défaut (la valeur par défaut est 0, c.-à-d. que le pipelining des requêtes `append_entries` est désactivé). [#106220](https://github.com/ClickHouse/ClickHouse/pull/106220) ([Michael Kolupaev](https://github.com/al13n321)).
* Validation de l’état corrompu de la fonction d’agrégation `DDSketch` (clés de bin) à l’insertion au lieu d’accepter des données malformées. [#106236](https://github.com/ClickHouse/ClickHouse/pull/106236) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d’une incohérence du mode du coordinateur lorsque des sous-requêtes redéfinissent les paramètres in-order. [#106243](https://github.com/ClickHouse/ClickHouse/pull/106243) ([Nikita Taranov](https://github.com/nickitat)).
* Correction d’un problème où `optimize_skip_unused_shards` ne s’appliquait pas (et où `force_optimize_skip_unused_shards` échouait à tort) lorsqu’une table `Distributed` était interrogée via une table `Merge` ou la fonction de table `merge`, avec le prédicat appliqué à un niveau supérieur. [#106250](https://github.com/ClickHouse/ClickHouse/pull/106250) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction de `INTERPOLATE ()`, qui renvoyait `INVALID_WITH_FILL_EXPRESSION` lorsque des colonnes `ORDER BY` étaient aliasées dans la liste `SELECT` avec l’ancien analyzer. Ferme [#106248](https://github.com/ClickHouse/ClickHouse/issues/106248). [#106252](https://github.com/ClickHouse/ClickHouse/pull/106252) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Correction d’un arrêt brutal lors de la désérialisation d’un état `AggregateFunction(uniqTheta, ...)` malformé depuis une entrée `RowBinary` ou un query parameter. L’entrée invalide est désormais rejetée avec `CORRUPTED_DATA` au lieu de remonter sous la forme d’une `std::exception` et d’interrompre le processus via `abortOnFailedAssertion`. [#106260](https://github.com/ClickHouse/ClickHouse/pull/106260) ([Groene AI](https://github.com/groeneai)).
* Rejette désormais les octets `IntervalKind` hors plage lors du décodage du type `RowBinaryWithNamesAndTypes` (`input_format_binary_decode_types_in_binary_format = 1`) avec une erreur `INCORRECT_DATA` explicite, au lieu de construire un `DataTypeInterval` avec un type invalide susceptible de provoquer ensuite un comportement indéfini dans les chemins de hachage. [#106261](https://github.com/ClickHouse/ClickHouse/pull/106261) ([Groene AI](https://github.com/groeneai)).
* Correction d’un problème de rollback en cas d’échec de downgrade de `SLRU` dans `26.1+`. Correction de la priorité de séparation du cache `System`/`Data` avec la fonctionnalité `keep_free_space_ratio`. [#106286](https://github.com/ClickHouse/ClickHouse/pull/106286) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Lire la sous-colonne `null` comme un chemin `JSON` dans `Nullable(JSON)` au lieu de la null-map. Clôt [#106085](https://github.com/ClickHouse/ClickHouse/issues/106085). [#106295](https://github.com/ClickHouse/ClickHouse/pull/106295) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `RestCatalog::empty`, qui renvoyait un résultat incorrect lorsqu’un REST catalog Iceberg contenait des tables. [#106301](https://github.com/ClickHouse/ClickHouse/pull/106301) ([Lefteris](https://github.com/LefterisXefteris)).
* Correction d’une exception pour les requêtes `INNER JOIN` avec une table `MergeTree` de gauche vide lorsque `enable_parallel_replicas`, `query_plan_use_new_logical_join_step` et `query_plan_optimize_join_order_algorithm = 'greedy'` sont activés. [#106338](https://github.com/ClickHouse/ClickHouse/pull/106338) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction d’une conversion incorrecte de valeurs `Float16` subnormales en `Float32` (par ex. lors de leur lecture depuis des fichiers Numpy `.npy`), causée par un décalage de mantisse d’un bit. [#106343](https://github.com/ClickHouse/ClickHouse/pull/106343) ([Joanna Hulboj](https://github.com/jh0x)).
* Correction d’un plantage et d’une possible erreur `NOT_FOUND_COLUMN_IN_BLOCK` lorsque l’optimisation basée sur les contraintes (`optimize_using_constraints`) est utilisée avec des sous-requêtes corrélées. [#106349](https://github.com/ClickHouse/ClickHouse/pull/106349) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une lecture hors limites dans `sipHash64Keyed`, `sipHash128Keyed` et `sipHash128ReferenceKeyed` lors du hachage d’une colonne dont tous les tableaux sont vides et dont la clé n’est pas constante. [#106355](https://github.com/ClickHouse/ClickHouse/pull/106355) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de `SYSTEM RELOAD CONFIG`, qui supprimait les paramètres Azure Blob Storage propres à chaque endpoint (comme `use_native_copy`), ce qui faisait ignorer les paramètres configurés d’un disque pour `BACKUP`/`RESTORE` jusqu’au redémarrage du serveur. [#106357](https://github.com/ClickHouse/ClickHouse/pull/106357) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction de `regexpExtract(haystack, pattern)` afin que les patterns sans groupe de capture renvoient la correspondance complète au lieu de lever `INDEX_OF_POSITIONAL_ARGUMENT_IS_OUT_OF_RANGE`. [#106374](https://github.com/ClickHouse/ClickHouse/pull/106374) ([Groene AI](https://github.com/groeneai)).
* Correction de l’exception `LOGICAL_ERROR` lors du prétéléchargement du cache lorsqu’un objet S3 distant est remplacé par un contenu plus court entre son énumération et sa lecture. [#106375](https://github.com/ClickHouse/ClickHouse/pull/106375) ([Nikita Fomichev](https://github.com/fm4v)).
* Correction de l’augmentation de l’utilisation mémoire dans le cache du système de fichiers. [#106387](https://github.com/ClickHouse/ClickHouse/pull/106387) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction de plusieurs lectures hors limites du tas dans le lecteur du format Arrow IPC (`ArrowColumnToCHColumn`). Un fichier Arrow malformé pouvait déclarer plus de lignes que ses buffers n’en contiennent, déclarer des longueurs d’éléments enfants list/struct/map incohérentes avec leur parent, fournir des offsets de liste non monotones ou tronquer un bitmap de validité enfant, provoquant ainsi des lectures au-delà de la fin des allocations du tas. Cela pouvait être exploité par tout utilisateur disposant du privilège `SELECT` via `file()`, `format()`, les fonctions de table ou des entrées ArrowFlight. Tous les buffers de données, offsets, view-struct et validity-bitmap sont désormais validés avant tout accès brut par pointeur, et la cohérence des formes et offsets list/struct/map est vérifiée. [#106395](https://github.com/ClickHouse/ClickHouse/pull/106395) ([Raúl Marín](https://github.com/Algunenano)).
* Correction des sauvegardes échouant avec `FILE_DOESNT_EXIST` lorsque la cible REPLACE d’une vue matérialisée actualisable est collectée sur une base de données Replicated ou Shared dont la vue matérialisée n’est pas encore instanciée sur la réplique qui lance la sauvegarde. [#106411](https://github.com/ClickHouse/ClickHouse/pull/106411) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction d'une erreur logique `Column identifier ... is already registered` lorsqu'un prédicat de mutation (`DELETE`/`UPDATE`) contient une sous-requête `IN`/`EXISTS` qui lit à partir d'une expression de table par défaut imbriquée dans une autre sous-requête. [#106414](https://github.com/ClickHouse/ClickHouse/pull/106414) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur logique (`Left and right columns have same names`) dans l'optimiseur de l'ordre des jointures, qui pouvait survenir pour des jointures exécutées avec des répliques parallèles lorsque deux relations du graphe de jointure partagent des noms de colonnes. [#106418](https://github.com/ClickHouse/ClickHouse/pull/106418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur logique lors de la construction d'un dictionnaire polygonal à partir de données source contenant des coordonnées de points `NaN` ou infinies. Ces coordonnées sont désormais rejetées avec un message d'erreur explicite. [#106423](https://github.com/ClickHouse/ClickHouse/pull/106423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'un bug où les colonnes `used_privileges` et `missing_privileges` de `system.query_log` pouvaient contenir des chaînes de privilèges issues, par fuite, de requêtes antérieures sans rapport, exécutées par un autre utilisateur, sur une autre base de données ou dans une autre session. [#106425](https://github.com/ClickHouse/ClickHouse/pull/106425) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les fonctions `base58Encode`, `base58Decode` et `tryBase58Decode` respectent désormais `max_execution_time` et l'annulation de requête sur les entrées volumineuses, et rejettent les entrées de plus de 10 KB au lieu de s'exécuter pendant très longtemps. La limite est configurable via le nouveau paramètre `function_base58_max_input_size` (`0` la désactive). [#106428](https://github.com/ClickHouse/ClickHouse/pull/106428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de résultats sporadiquement incorrects pour les requêtes `ORDER BY ... DESC` lors de la lecture de wide parts en ordre inverse avec `read_in_order_use_virtual_row_per_block = 1` et un `max_block_size` faible. [#106429](https://github.com/ClickHouse/ClickHouse/pull/106429) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d'une exception `NOT_FOUND_COLUMN_IN_BLOCK` lors de l'interrogation d'une table Iceberg ou S3 avec un `WHERE` composé contenant `IS NOT NULL` sur une colonne absente de la liste `SELECT`, avec le Native reader Parquet V3. [#106443](https://github.com/ClickHouse/ClickHouse/pull/106443) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Permet à l'utilisateur de spécifier des en-têtes pour `HTTPDictionary` à l'aide de named collections. [#106459](https://github.com/ClickHouse/ClickHouse/pull/106459) ([Jan Rada](https://github.com/ZelvaMan)).
* Correction d'un cas où un worker thread pouvait rester attaché à un groupe de threads obsolète après l'échec partiel de `CurrentThread::attachToGroup`, ce qui entraînait ensuite l'échec de tâches sur le même thread avec `Thread is already attached to a group`. [#106462](https://github.com/ClickHouse/ClickHouse/pull/106462) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Correction d'une exception lorsqu'une requête de vector search utilise un vector index ainsi qu'un autre skip index comme `minmax`, avec `use_skip_indexes_on_data_read = 1`. [#106473](https://github.com/ClickHouse/ClickHouse/pull/106473) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Les valeurs d'énumération `Avro` mal formées sont désormais validées et rejetées avec une erreur, au lieu de provoquer une lecture hors limites et un arrêt lors de la désérialisation de données `Avro` corrompues. [#106476](https://github.com/ClickHouse/ClickHouse/pull/106476) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction d'une progression surestimée lors de la lecture de tables Iceberg avec des filtres `_file` ou `_path`. Auparavant, l'indicateur de progression `total_bytes_to_read` incluait tous les fichiers du manifest, indépendamment du filtrage. [#106491](https://github.com/ClickHouse/ClickHouse/pull/106491) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Correction d’une `Bad cast exception` pour les dictionnaires Redis qui utilisent `STORAGE_TYPE 'simple'` avec un layout `cache`/`direct` et une clé chaîne unique (complexe) ; ces dictionnaires fonctionnent désormais, et les clés composites sur un stockage `simple` signalent maintenant une erreur explicite. [#106501](https://github.com/ClickHouse/ClickHouse/pull/106501) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’un bogue de résultats incorrects où `WHERE c0 = const` ne renvoyait aucune ligne pour les tables avec `ORDER BY f(c0)` lorsque `f(const)` s’évalue à NaN, par exemple `ORDER BY sqrt(c0)` avec une constante négative. L’analyse de la clé primaire élaguait à tort chaque granule et empoisonnait le cache des conditions de requête pour les requêtes suivantes. [#106507](https://github.com/ClickHouse/ClickHouse/pull/106507) ([Groene AI](https://github.com/groeneai)).
* Correction du fait que `LIMIT WITH TIES` et `LIMIT WITH TIES` fractionnaire ne respectaient pas la collation de `ORDER BY ... COLLATE` lors de la détermination des ex æquo. Les lignes égales selon la collation (par exemple `'1'` et `'01'` avec une collation numérique) étaient comparées octet par octet, si bien que certaines lignes ex æquo étaient exclues à tort du résultat. [#106539](https://github.com/ClickHouse/ClickHouse/pull/106539) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction des optimisations `DISTINCT` in order et `LIMIT BY` in order (y compris `LIMIT BY` négatif) qui renvoyaient des résultats incorrects lorsque l’entrée était triée avec une collation (`ORDER BY ... COLLATE`). Les lignes égales selon la collation (par exemple `'a'` et `'A'` avec une collation insensible à la casse) sont ordonnées par clé de collation et ne sont pas adjacentes par valeur ; l’optimisation in order est donc désormais ignorée lorsqu’un collateur est utilisé. [#106564](https://github.com/ClickHouse/ClickHouse/pull/106564) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de résultats incorrects pour `SELECT c, count() FROM t WHERE c GROUP BY c` sur des tables avec la projection implicite `_minmax_count_projection`, une projection d’agrégation explicite ou une projection normale : auparavant, chaque groupe se réduisait à une seule ligne avec une clé constante et le nombre total de lignes. [#106590](https://github.com/ClickHouse/ClickHouse/pull/106590) ([Groene AI](https://github.com/groeneai)).
* Correction d’un bogue empêchant les utilisateurs d’utiliser des sous-requêtes scalaires dans le premier argument de `IN` lorsque le second argument est un tuple non constant. [#106610](https://github.com/ClickHouse/ClickHouse/pull/106610) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de l’exception `Mutation of `Memory` table produced incomplete output` levée lors de l’exécution de commandes `ALTER TABLE <memory_table>` sans effet sur les données ligne par ligne sur un moteur `Memory`, à savoir `APPLY PATCHES`, `APPLY DELETED MASK`, `MATERIALIZE STATISTICS`, `MATERIALIZE INDEX`, `MATERIALIZE PROJECTION` et `REWRITE PARTS`. Les tables `Memory` ne possèdent pas ces structures ; ces commandes sont donc désormais traitées comme des no-op. [#106621](https://github.com/ClickHouse/ClickHouse/pull/106621) ([Groene AI](https://github.com/groeneai)).
* Correction du fait que `session_timezone` était ignoré lors de la sérialisation des colonnes `LowCardinality(DateTime)` vers des formats texte (CSV, TSV, JSONEachRow, etc.). Auparavant, après la première écriture d’une colonne `LowCardinality(DateTime)` sur un serveur, chaque requête ultérieure écrivant une telle colonne affichait la chaîne d’heure locale dans le premier fuseau horaire rencontré, indépendamment de `session_timezone`. [#106634](https://github.com/ClickHouse/ClickHouse/pull/106634) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` "Trying to get name of not a column: `ExpressionList`" levée par des requêtes qui passent un astérisque dans `multiIf` à un argument de fonction de table, par exemple `numbers(multiIf(*, ...), 2)`. La requête rejette désormais ce sélecteur impossible à résoudre avec `UNSUPPORTED_METHOD`. [#106647](https://github.com/ClickHouse/ClickHouse/pull/106647) ([Groene AI](https://github.com/groeneai)).
* Corrige un problème empêchant le server de démarrer avec `Too many marks in file ...skp_idx_idx.cmrk4, marks expected 0 (bytes size 0)` lorsqu'une table `MergeTree` comporte une part d'index de saut avec zéro granule et un fichier de marks non vide sur le disque. [#106675](https://github.com/ClickHouse/ClickHouse/pull/106675) ([Groene AI](https://github.com/groeneai)).
* Rejette les glob patterns `file` pathologiques qui entraîneraient une récursion non bornée lors du listage des répertoires. Une profondeur de récursion maximale de 1000 est désormais imposée ; les query qui la dépassent lèvent `TOO_DEEP_RECURSION` au lieu de faire planter le server par débordement de pile. [#106676](https://github.com/ClickHouse/ClickHouse/pull/106676) ([Groene AI](https://github.com/groeneai)).
* Corrige l'arrêt du server avec `Bad cast from type DB::ColumnNothing to DB::ColumnVector<char8_t>` dans `FunctionIf::executeForConstAndNullableCondition` lorsque la condition `if`/`multiIf` est réduite par évaluation constante à `Const(Nullable(Nothing))` (par exemple, un indice hors limites sur un tableau vide, comme `arraySort(x -> x, [])[toNullable(1)]`). [#106678](https://github.com/ClickHouse/ClickHouse/pull/106678) ([Groene AI](https://github.com/groeneai)).
* Corrige l'exception `'Trying to read from input() twice.'` levée lorsque la table function `input` est encapsulée dans une CTE non matérialisée référencée à plus d'un endroit dans la query. La query est désormais rejetée avec une erreur explicite `INVALID_USAGE_OF_INPUT` au moment de la planification. `input` est un flux client à usage unique et ne peut être consommé que par une seule source dans le query plan. [#106682](https://github.com/ClickHouse/ClickHouse/pull/106682) ([Groene AI](https://github.com/groeneai)).
* Fait en sorte que `FORMAT` s'applique aussi à la sortie de `EXPLAIN` dans `EXPLAIN ... INSERT ... SELECT ... FORMAT ...`, y compris lorsque `SETTINGS` précède `FORMAT` ou lorsque le output format est `Values`. Suite de [#101772](https://github.com/ClickHouse/ClickHouse/issues/101772). [#106686](https://github.com/ClickHouse/ClickHouse/pull/106686) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une rare erreur parasite `RESOURCE_ACCESS_DENIED` ("Scheduler queue with resource request is about to be destructed") pour une query qui avait en réalité obtenu l'accès à une ressource de workload, causée par la réutilisation d'un objet request thread-local qui conservait l'échec d'une request précédente. [#106690](https://github.com/ClickHouse/ClickHouse/pull/106690) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une condition de concurrence entre la destruction d'objets `INATSConsumer` et les appels à `INATSConsumer::onMsg` sur ces objets via des callbacks dans la bibliothèque NATS. [#106692](https://github.com/ClickHouse/ClickHouse/pull/106692) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige `match`, `extract`, `extractAll` et `countMatches`, qui renvoyaient des résultats incorrects pour des regular expressions contenant des séquences d'échappement hexadécimales ou octales. [#106709](https://github.com/ClickHouse/ClickHouse/pull/106709) ([ofeliacode](https://github.com/ofeliacode)).
* Le TLS Raft interne de Keeper respecte désormais le paramètre `openSSL.client.verificationMode`. Auparavant, la vérification du certificat du pair était toujours activée pour la communication Raft inter-Keeper, indépendamment de ce paramètre ; `none` était donc ignoré silencieusement. Désormais, `none` désactive explicitement la vérification du certificat du pair Raft, tandis que l'absence de paramètre conserve le comportement précédent, sécurisé par défaut. Les configurations qui définissent explicitement `none` cesseront de vérifier les certificats des pairs Raft après upgrade, conformément à l'intention de la configuration. [#106726](https://github.com/ClickHouse/ClickHouse/pull/106726) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige une logical error dans les scripts de démarrage de `SYSTEM RELOAD CONFIG`. De plus, charge les scripts de démarrage lors de `SYSTEM RELOAD CONFIG` (fonctionnalité actuellement réservée à un usage interne). [#106727](https://github.com/ClickHouse/ClickHouse/pull/106727) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Annule une modification qui faisait que `sumMap` / le combinator `-Map` rejetait les types de valeurs numériques portant des noms personnalisés (tels que `SimpleAggregateFunction(sum, T)` et `Bool`) avec l’erreur `ILLEGAL_TYPE_OF_ARGUMENT: Values for -Map cannot be summed`, ce qui cassait des agrégations qui fonctionnaient auparavant. [#106729](https://github.com/ClickHouse/ClickHouse/pull/106729) ([Nikita Fomichev](https://github.com/fm4v)).
* Correction de plusieurs problèmes de sécurité mémoire et d’épuisement des ressources dans des readers de format accessibles à partir d’entrées non fiables : une lecture hors limites sur le heap dans le traitement de la longueur des niveaux de définition/répétition de `DataPageV2` par le Parquet reader natif, un dépassement de pile sur des Parquet files avec des schémas profondément imbriqués, ainsi que des allocations qui ignoraient `max_memory_usage` lors du parsing de géométries WKB/WKT GeoParquet et de chaînes/octets Avro. [#106739](https://github.com/ClickHouse/ClickHouse/pull/106739) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un heap buffer overflow (crash du server) dans `decodeHTMLComponent` lors du décodage de chaînes contenant les entités HTML expansives `&nGt;` ou `&nLt;`, exploitable par n’importe quel utilisateur avec un simple `SELECT`. [#106741](https://github.com/ClickHouse/ClickHouse/pull/106741) ([Raúl Marín](https://github.com/Algunenano)).
* Rejette `CREATE TABLE`, `ALTER TABLE ADD INDEX` et `CREATE INDEX` avec `GRANULARITY 0` pour les skipping indexes avec une erreur `BAD_ARGUMENTS` explicite. Auparavant, cela déclenchait une exception `Inconsistent AST formatting` dans les builds de débogage. [#106783](https://github.com/ClickHouse/ClickHouse/pull/106783) ([Groene AI](https://github.com/groeneai)).
* Correction d’Azure BACKUP/RESTORE, qui ignorait les paramètres d’endpoint pour les disques `azure_blob_storage` au format hérité. [#106784](https://github.com/ClickHouse/ClickHouse/pull/106784) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction d’une exception `Bad cast` lors de l’élagage des parties à l’aide des statistiques `MinMax` lorsqu’une Key column est `LowCardinality` et que la constante du predicate est `LowCardinality(Nullable(...))`. [#106793](https://github.com/ClickHouse/ClickHouse/pull/106793) ([Groene AI](https://github.com/groeneai)).
* Correction de colonnes incohérentes (menant ensuite à `LOGICAL_ERROR`) en cas d’exception (par ex. `MEMORY_LIMIT_EXCEEDED`) pendant le parsing. [#106802](https://github.com/ClickHouse/ClickHouse/pull/106802) ([Azat Khuzhin](https://github.com/azat)).
* Correction du cas où, après configuration de `keeper_server.http_control.secure_port`, le server renvoyait une réponse HTTP à des clients HTTPS. [#106822](https://github.com/ClickHouse/ClickHouse/pull/106822) ([linjiayu1025-collab](https://github.com/linjiayu1025-collab)).
* Correction d’une logical error dans `parseDateTime` avec des octets d’entrée non ASCII. [#106856](https://github.com/ClickHouse/ClickHouse/pull/106856) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `SHOW CREATE ROW POLICY`, qui produisait `restrictive`/`permissive` en minuscules au lieu de majuscules, contrairement aux autres mots-clés. [#106865](https://github.com/ClickHouse/ClickHouse/pull/106865) ([Valery Petrov](https://github.com/valerypetrov)).
* Correction du cas où les parallel replicas n’étaient pas appliquées à une vue avec `UNION` en raison d’une table vide dans le `UNION`. [#106900](https://github.com/ClickHouse/ClickHouse/pull/106900) ([Igor Nikonov](https://github.com/devcrafter)).
* Correction d’un crash du server (SIGSEGV) lors de la lecture de données `Protobuf` tronquées avec `input_format_allow_errors_num > 0`. [#106905](https://github.com/ClickHouse/ClickHouse/pull/106905) ([Andrey Tsarevskiy | Андрей Царевский ](https://github.com/atsarevskiy)).
* Correction de l’exception `THERE_IS_NO_COLUMN` pour les distributed queries impliquant l’optimization `optimize_rewrite_aggregate_function_with_if` lorsque le function argument de l’aggregate function nécessite un cast vers le type `Nullable`. [#106908](https://github.com/ClickHouse/ClickHouse/pull/106908) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige une exception (`LOGICAL_ERROR`) dans le JOIN runtime filter lorsque la clé de jointure contient un type `Variant` ou `Dynamic` imbriqué dans un `Tuple`, un `Array` ou un `Map`, et que le côté droit de la jointure ne comporte qu’une seule valeur distincte. [#106931](https://github.com/ClickHouse/ClickHouse/pull/106931) ([Groene AI](https://github.com/groeneai)).
* Corrige un dépassement d’entier signé (comportement indéfini) dans `arrayLevenshteinDistanceWeighted` et `arraySimilarity` lorsque les tableaux de poids contiennent de grandes valeurs entières. La distance pondérée est désormais accumulée dans un entier large pour les poids entiers, de sorte que les grandes pondérations entières ne débordent plus et restent exactes. [#106934](https://github.com/ClickHouse/ClickHouse/pull/106934) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur (déréférencement de pointeur nul) lors de l’exécution de `TRUNCATE` ou `DROP` sur une table `EmbeddedRocksDB` dont le handle RocksDB avait été libéré, par exemple une table `read_only` dont le répertoire de données avait été vidé par un `TRUNCATE` précédent. [#106940](https://github.com/ClickHouse/ClickHouse/pull/106940) ([Groene AI](https://github.com/groeneai)).
* Corrige une exception (`std::length_error` signalée comme un `LOGICAL_ERROR`) lors de la lecture à partir d’une table function `*Cluster` telle que `urlCluster`, avec un paramètre `max_streams_for_files_processing_in_cluster_functions` très élevé. Le nombre de streams est désormais limité à une valeur raisonnable. [#106946](https://github.com/ClickHouse/ClickHouse/pull/106946) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur (déréférencement de pointeur nul de `DB::IConnections`) dans `RemoteQueryExecutor` lorsqu’une distributed query est annulée juste avant d’être envoyée à un shard. [#106950](https://github.com/ClickHouse/ClickHouse/pull/106950) ([Groene AI](https://github.com/groeneai)).
* Corrige le fait que `elapsed_us` soit toujours égal à zéro, ainsi que le sous-comptage de `read_rows`/`read_bytes`, dans `system.processors_profile_log` et `system.query_log` pour les requêtes de flush d’asynchronous insert (`AsyncInsertFlush`). [#106982](https://github.com/ClickHouse/ClickHouse/pull/106982) ([Christoph Wurm](https://github.com/cwurm)).
* Corrige un crash (`Source column is not Map` / `SIGSEGV`) lors de la fusion de blocks triés contenant une column `Variant` avec une variante `Map` dont l’ordre de stockage local diffère de l’ordre global. [#107011](https://github.com/ClickHouse/ClickHouse/pull/107011) ([Groene AI](https://github.com/groeneai)).
* Corrige une logical error `conflicted_part_name.has_value()` levée lors d’un insert synchrone dans une table `ReplicatedMergeTree` lorsque l’inserted block avait été entièrement deduplicated et que le nœud de déduplication de la part en conflit avait déjà été supprimé (par exemple par un `DROP PARTITION` concurrent). [#107026](https://github.com/ClickHouse/ClickHouse/pull/107026) ([Groene AI](https://github.com/groeneai)).
* Corrige une exception (logical error `this->visited_views == right->visited_views`) sur `INSERT` lorsque deux materialized views sur la même source table écrivent dans la même target table et qu’une vue dépendante lit cette table cible, avec `materialized_views_squash_parallel_inserts` activé. [#107027](https://github.com/ClickHouse/ClickHouse/pull/107027) ([Groene AI](https://github.com/groeneai)).
* Corrige une logical error `Block structure mismatch in UnionStep stream` (arrêt du serveur sur les builds debug/sanitizer, `Code: 49` sur les builds de release) qui se produisait lorsqu’une branche d’un `UNION`/`INTERSECT`/`EXCEPT` lisait une column sérialisée en `Sparse`, tandis que la branche sœur lisait cette même column comme une column complète (par exemple lors de l’alimentation d’une materialized view). [#107041](https://github.com/ClickHouse/ClickHouse/pull/107041) ([Groene AI](https://github.com/groeneai)).
* Correction d’une exception `LOGICAL_ERROR` lors d’un insert dans une table DeltaLake avec des colonnes qui ne correspondent pas à son schéma d’écriture (par exemple, une colonne `Nested` aplatie en subcolumns, ou une table function avec un sous-ensemble explicite de colonnes). Ces inserts échouent désormais avec une erreur `INCOMPATIBLE_COLUMNS` visible par l’utilisateur. Clôture [#87402](https://github.com/ClickHouse/ClickHouse/issues/87402). [#107058](https://github.com/ClickHouse/ClickHouse/pull/107058) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `TYPE_MISMATCH` ("Impossible de convertir la chaîne ... en type ...") pour les queries `ORDER BY <numeric column> ... LIMIT n` lorsque la lazy materialization plaçait une autre colonne avant la colonne de tri. Le seuil top-K est désormais lu à partir de la bonne colonne de tri. [#107060](https://github.com/ClickHouse/ClickHouse/pull/107060) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur de syntaxe lorsqu’une clause `FORMAT`, `SETTINGS` ou `INTO OUTFILE` suit `SHOW ROW POLICIES` ou `SHOW MASKING POLICIES` (par ex. `SHOW ROW POLICIES FORMAT TabSeparated`). [#107061](https://github.com/ClickHouse/ClickHouse/pull/107061) ([Groene AI](https://github.com/groeneai)).
* Correction d’un `ALTER TABLE ... RENAME COLUMN a TO b, RENAME COLUMN c TO a` composé qui réutilise un nom de colonne libéré (un "échange") entre des colonnes de types différents. La part materialized enregistrait le mauvais column type, ce qui faisait ensuite échouer un `SELECT` avec `Conversion between numeric types and IPv6 is not supported` (ou provoquait un arrêt au chargement de la part dans les builds de Débogage). [#107064](https://github.com/ClickHouse/ClickHouse/pull/107064) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats non déterministes de la fonction `roundDown` lorsque le tableau de boundaries contient `NaN`. La même valeur d’entrée pouvait renvoyer une boundary finie ou `NaN` selon les rows voisines dans un lot. Les boundaries `NaN` sont désormais ignorées, de sorte que le résultat dépend uniquement des boundaries finies. [#107065](https://github.com/ClickHouse/ClickHouse/pull/107065) ([Groene AI](https://github.com/groeneai)).
* Correction de `quantileTDigest` et `quantileTDigestWeighted`, qui lançaient `DECIMAL_OVERFLOW` pour des arguments `Date` et `DateTime` lorsque le quantile interpolé était fractionnaire mais restait dans la plage (par exemple `quantileTDigestWeighted(date, weight)` sur des valeurs qui tiennent toutes dans le type). Le résultat fractionnaire est désormais tronqué au type de résultat, conformément à `quantilesTDigestWeighted` ; les véritables valeurs hors plage lèvent toujours une erreur. Clôture : [#106722](https://github.com/ClickHouse/ClickHouse/issues/106722). [#107066](https://github.com/ClickHouse/ClickHouse/pull/107066) ([Groene AI](https://github.com/groeneai)).
* Correction de `trimLeft`, `trimRight` et `trimBoth` (ainsi que de leurs alias `ltrim`, `rtrim`, `trim`), qui lançaient `TOO_LARGE_STRING_SIZE` lorsque le character set de trim personnalisé dépassait 16 caractères. Les ensembles de trim de toute longueur sont désormais de nouveau pris en charge. [#107071](https://github.com/ClickHouse/ClickHouse/pull/107071) ([Nikita Fomichev](https://github.com/fm4v)).
* Correction de la troncature silencieuse de valeurs entières hors plage dans les définitions de type `Enum8`/`Enum16`. `Enum8('a' = 200)` lève désormais `ARGUMENT_OUT_OF_BOUND` au lieu de créer silencieusement `Enum8('a' = -56)`. [#107081](https://github.com/ClickHouse/ClickHouse/pull/107081) ([Groene AI](https://github.com/groeneai)).
* Correction d’un ordre de rows incorrect (et d’une `LOGICAL_ERROR` "Rows are not sorted with permutation" dans les builds de Débogage) pour les queries multi-colonnes `ORDER BY ... LIMIT` qui trient sur des colonnes `Nullable` lorsque plusieurs rows sont à égalité sur les premières colonnes. [#107094](https://github.com/ClickHouse/ClickHouse/pull/107094) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` (`Expected the argument N to have X rows, but it has Y`) lors de l’exécution d’une fonction sur une colonne `Dynamic` produite par un JOIN sur `Dynamic` (par exemple les lignes non appariées d’un `RIGHT`/`FULL JOIN`, ou une sous-requête `EXISTS` corrélée décorrélée en jointure). [#107095](https://github.com/ClickHouse/ClickHouse/pull/107095) ([Groene AI](https://github.com/groeneai)).
* Correction d’une recréation intempestive de session ZooKeeper lors du rechargement de la configuration. [#107096](https://github.com/ClickHouse/ClickHouse/pull/107096) ([Azat Khuzhin](https://github.com/azat)).
* Le mutex n’est plus conservé pendant les lectures ZooKeeper lors de l’actualisation des entités d’accès. [#107097](https://github.com/ClickHouse/ClickHouse/pull/107097) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’une exception `Logical error: Too large size passed to allocator` lors d’un `INSERT` dans une table `MergeTree` lorsque `adaptive_write_buffer_initial_size` est défini sur une valeur extrêmement élevée. La taille initiale adaptative du tampon d’écriture est désormais plafonnée à la taille maximale du tampon. [#107104](https://github.com/ClickHouse/ClickHouse/pull/107104) ([Groene AI](https://github.com/groeneai)).
* Correction de `LOGICAL ERROR` (`Bad cast from type DB::ColumnString to DB::ColumnLowCardinality`) lorsqu’une constante `Variant` contenant un membre `LowCardinality` est comparée à une colonne clé dont l’expression de clé est une fonction déterministe non monotone (par exemple un skip index `minmax` sur `sipHash64(col)`). [#107111](https://github.com/ClickHouse/ClickHouse/pull/107111) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique `Bad cast from type DB::IColumn const* to DB::ColumnNullable const*` lorsqu’un astérisque qualifié (`t.*`) sur une clé `JOIN ... USING` est passé à une aggregate function et que l’autre côté d’un OUTER JOIN a une clé `Nullable` (avec `join_use_nulls = 0`). [#107129](https://github.com/ClickHouse/ClickHouse/pull/107129) ([Groene AI](https://github.com/groeneai)).
* Correction des lots `ALTER TABLE ... ON CLUSTER` qui mélangent `MODIFY SETTING`/`RESET SETTING` avec une modification de commentaire (par exemple `MODIFY COMMENT 'x', MODIFY SETTING old_parts_lifetime = 123`) et qui n’étaient appliqués que sur la réplique leader, laissant les autres répliques diverger. Correction également d’un `MODIFY COLUMN ... COMMENT` positionnel ou avec `SETTINGS` par colonne, incorrectement classé comme simple modification locale des métadonnées de commentaire, ce qui excluait la réorganisation des colonnes des métadonnées répliquées et pouvait provoquer `INCOMPATIBLE_COLUMNS` au redémarrage d’une réplique. [#107142](https://github.com/ClickHouse/ClickHouse/pull/107142) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` ("Table expression ... data must be initialized") déclenchée lorsqu’un sélecteur d’astérisque qualifié (par exemple `x.*`) référençait un CTE récursif par son nom dans son propre terme récursif. Ces sélecteurs développent désormais les colonnes de la table récursive, de la même manière qu’une colonne qualifiée (`x.a`) ou un sélecteur non qualifié (`*`) le fait déjà à cette position. [#107144](https://github.com/ClickHouse/ClickHouse/pull/107144) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats de la requête erronés causés par le query condition cache lorsque des mutations à la volée (`apply_mutations_on_fly`) ou des patch parts filtraient des lignes avant `PREWHERE`. Une requête lue avec `apply_mutations_on_fly = 1` pouvait contaminer le cache, de sorte qu’une requête ultérieure avec `apply_mutations_on_fly = 0` et le même prédicat sautait des marques qu’elle aurait dû lire et renvoyait trop peu de lignes. La même correction couvre également les politiques de sécurité au niveau des lignes, qui sont ajoutées comme filtre avant `PREWHERE` : une requête exécutée sous une row policy restrictive pouvait contaminer le cache pour une requête ultérieure utilisant le même prédicat sans cette policy. [#107145](https://github.com/ClickHouse/ClickHouse/pull/107145) ([Groene AI](https://github.com/groeneai)).
* Correction de `BACKUP` vers `AzureBlobStorage` : la copie d’un fichier de données à l’intérieur d’une sauvegarde écrivait l’objet de destination en dehors du répertoire de sauvegarde. Les vérifications de l’existence des objets de sauvegarde sur les destinations `S3` utilisent désormais des requêtes `HeadObject` exactes au lieu d’un listage par préfixe, ce qui évite les faux positifs avec des clés ayant des préfixes similaires. [#107153](https://github.com/ClickHouse/ClickHouse/pull/107153) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction d’un dépassement d’entier signé dans `quantileExactExclusive`, `quantilesExactExclusive`, `quantileExactInclusive` et `quantilesExactInclusive`, qui pouvait produire un résultat erroné pour des entrées `Int64` couvrant une grande plage de valeurs. [#107154](https://github.com/ClickHouse/ClickHouse/pull/107154) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` ("Unexpected exception in refresh scheduling") qui pouvait placer le serveur dans une boucle de plantage au redémarrage lorsqu’une vue matérialisée actualisable a une dépendance `REFRESH ... DEPENDS ON <name>` dont le nom non qualifié correspond à celui d’une table temporaire ou d’une CTE. [#107156](https://github.com/ClickHouse/ClickHouse/pull/107156) ([Groene AI](https://github.com/groeneai)).
* S’assurer que les scripts de démarrage ne sont pas exécutés lors du rechargement de la configuration, car cela est sémantiquement incorrect, inattendu pour les utilisateurs et connu pour être source d’erreurs. [#107187](https://github.com/ClickHouse/ClickHouse/pull/107187) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Plafonnement de la valeur maximale de `queue_size` pour la pré-réservation. [#107205](https://github.com/ClickHouse/ClickHouse/pull/107205) ([Elian Gidoni](https://github.com/eliangidoni)).
* Correction de l’erreur `Argument ... of GROUPING function is not a part of GROUP BY clause` pour les requêtes qui utilisent la fonction `grouping` avec le paramètre `group_by_use_nulls` activé. [#107206](https://github.com/ClickHouse/ClickHouse/pull/107206) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction de l’ordre incorrect des résultats pour `ORDER BY` sur `UNION ALL` avec `optimize_read_in_order` activé lorsque le pipeline d’union était réduit en raison du paramètre `max_streams_for_union_step` ; cette réduction est désormais ignorée lorsque le plan s’appuie sur des output streams `UNION` triés. Corrige [#106880](https://github.com/ClickHouse/ClickHouse/issues/106880). [#107208](https://github.com/ClickHouse/ClickHouse/pull/107208) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’un possible déréférencement de pointeur nul lors de la résolution de la configuration du proxy pendant la phase tardive d’arrêt du serveur. [#107231](https://github.com/ClickHouse/ClickHouse/pull/107231) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Correction des requêtes lightweight `UPDATE` avec les parallel replicas héritées activées pour les tables `MergeTree` non répliquées. [#107246](https://github.com/ClickHouse/ClickHouse/pull/107246) ([Groene AI](https://github.com/groeneai)).
* Correction d’un arrêt brutal du serveur (erreur logique `std::out_of_range`) lors d’un insert dans une table `Iceberg` dont les noms de colonnes du bloc d’écriture ne correspondent pas aux identifiants de champ du schéma le plus récent (par exemple après qu’un processus d’écriture concurrent renomme une colonne dans la fenêtre `iceberg_metadata_staleness_ms`). L’insert échoue désormais avec une erreur de requête claire au lieu de faire planter le serveur. [#107279](https://github.com/ClickHouse/ClickHouse/pull/107279) ([Groene AI](https://github.com/groeneai)).
* Correction du blocage à l’arrêt sur le serveur et en local, dû au fait que des thread pools statiques conservaient des idle threads indéfiniment si `max_*_thread_pool_free_size > 0`. [#107291](https://github.com/ClickHouse/ClickHouse/pull/107291) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction du fait que la table function `s3` ignorait silencieusement une valeur positionnelle `partition_strategy` en minuscules (par ex. `hive`). [#107297](https://github.com/ClickHouse/ClickHouse/pull/107297) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction de la gestion de `low_cardinality_allow_in_native_format=0` dans la sérialisation parallèle des blocs. [#107319](https://github.com/ClickHouse/ClickHouse/pull/107319) ([Azat Khuzhin](https://github.com/azat)).
* Corrige des résultats erronés (souvent vides) de `ORDER BY <col> LIMIT n` lorsque l’optimisation `use_skip_indexes_for_top_k` est active et qu’une part avec un skip index `minmax` sur la colonne de tri a eu des lignes supprimées par un lightweight `DELETE`. L’optimisation ne classe plus le `minmax` obsolète des parts affectées par un lightweight `DELETE` avant les parts qui contiennent les premières lignes encore actives. [#107320](https://github.com/ClickHouse/ClickHouse/pull/107320) ([Groene AI](https://github.com/groeneai)).
* Correction d’un bogue dans ClickHouse Keeper où les métadonnées du snapshot signalées via `last_snapshot` (et `zk_latest_snapshot_size` dans `mntr`) pouvaient revenir en arrière après l’installation d’un snapshot obsolète ou dupliqué, ce qui pouvait aussi permettre à un snapshot local avec le même index d’écraser sur place un fichier snapshot enregistré alors qu’il était encore en cours de diffusion vers un pair ou de téléversement vers S3. [#107321](https://github.com/ClickHouse/ClickHouse/pull/107321) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’un possible dépassement de pile du serveur (crash) lors de la lecture d’un schéma ou d’une valeur profondément imbriqués dans les formats `MsgPack`, `BSON`, `ORC`, `Parquet`, `JSON`, `DeltaLake`, `Iceberg` et `Paimon`. De telles entrées profondément imbriquées sont désormais rejetées avec une exception. [#107341](https://github.com/ClickHouse/ClickHouse/pull/107341) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une possible logical error dans `SYSTEM SYNC DATABASE REPLICA ... STRICT` et fait en sorte que le modificateur `STRICT` prenne réellement effet pour les répliques de base de données. [#107344](https://github.com/ClickHouse/ClickHouse/pull/107344) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige un arrêt du serveur dans les builds de débogage/sanitizer lors de la lecture d’une table `DeltaLake` dont le schéma ClickHouse nomme une colonne absente du mapping de colonnes Delta, par exemple après le renommage ou la suppression d’une colonne dans le journal Delta. La query échoue désormais avec une erreur `INCORRECT_DATA` interceptable à la place. [#107347](https://github.com/ClickHouse/ClickHouse/pull/107347) ([Groene AI](https://github.com/groeneai)).
* Corrige `ORDER BY ... WITH FILL`, qui produisait des lignes supplémentaires lorsqu’une colonne `ORDER BY` située avant la colonne de remplissage utilisait une collation `COLLATE`. Les lignes sont désormais groupées selon le préfixe de tri avec cette collation, conformément à l’ordre de tri. [#107365](https://github.com/ClickHouse/ClickHouse/pull/107365) ([Groene AI](https://github.com/groeneai)).
* Correction d’un crash (`LOGICAL_ERROR` dans les builds de débogage) et d’un bogue silencieux produisant des résultats erronés (dans les builds de release) lors de la lecture d’une table Iceberg dont les métadonnées réassocient un `schema-id` existant à un schéma différent selon les versions de métadonnées. De telles métadonnées sont désormais rejetées avec `ICEBERG_SPECIFICATION_VIOLATION`. [#107370](https://github.com/ClickHouse/ClickHouse/pull/107370) ([Groene AI](https://github.com/groeneai)).
* Corrige une `LOGICAL_ERROR` (`Variant N (T) has size X, but expected Y`) lorsqu’une fonction telle que `toString` ou `concat` est appliquée à une colonne `Variant` ou `Dynamic` qui contient une seule variante non vide ainsi que des NULL, et que la fonction renvoie sa colonne d’entrée inchangée. [#107374](https://github.com/ClickHouse/ClickHouse/pull/107374) ([Groene AI](https://github.com/groeneai)).
* Corrige `Logical error: 'Duplicate announcement received for replica number N'`, qui pouvait se produire avec des replicas parallèles lorsqu’une scalar subquery contenait des sous-requêtes imbriquées lisant la même table. [#107381](https://github.com/ClickHouse/ClickHouse/pull/107381) ([Groene AI](https://github.com/groeneai)).
* Corrige `getServerSetting` afin de renvoyer la valeur effective courante des server settings modifiables à l’exécution (tels que `max_server_memory_usage`, `mark_cache_size`, `max_concurrent_queries`, les tailles de thread pool, etc.), conformément à ce qui est signalé par `system.server_settings`. [#107388](https://github.com/ClickHouse/ClickHouse/pull/107388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `arrayResize` avec un argument de taille `Decimal` : la taille est désormais interprétée selon sa valeur réelle (par ex. `arrayResize([1, 2, 3], 1.5::Decimal(2, 1))` renvoie un élément) au lieu de la représentation brute non mise à l’échelle. [#107389](https://github.com/ClickHouse/ClickHouse/pull/107389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un `LOGICAL_ERROR` (`block.rows() == getRows()`) déclenché lors d’un `INSERT` asynchrone dans une table `Alias` lorsque `use_strict_insert_block_limits` était activé. [#107400](https://github.com/ClickHouse/ClickHouse/pull/107400) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur logique (`Unexpected return type from equals. Expected Nullable(UInt8). Got UInt8`) lorsque l’optimisation de descente de disjonction (prédicat partiel) pousse une condition sur une clé `USING` dont le type est élargi par le JOIN. Correction également d’un crash du serveur (segmentation fault) dans l’analyseur lors de la résolution des identifiants dans des requêtes `JOIN ... USING` contenant des branches `if`/`multiIf` constantes faisant référence à des identifiants inconnus. [#107407](https://github.com/ClickHouse/ClickHouse/pull/107407) ([Groene AI](https://github.com/groeneai)).
* Correction d’un heap buffer overflow (crash du serveur) dans `windowFunnel` lors de la finalisation d’un état de fonction d’agrégation forgé avec un type d’événement hors plage, exploitable par n’importe quel utilisateur avec un simple `SELECT`. [#107412](https://github.com/ClickHouse/ClickHouse/pull/107412) ([uwezkhan](https://github.com/uwezkhan)).
* Correction d’un comportement indéfini lorsqu’une valeur en virgule flottante non finie (telle que `nan` ou `inf`) est passée comme argument d’horodatage/de durée des fonctions de table `prometheusQuery` / `prometheusQueryRange`. Un tel argument lève désormais `BAD_ARGUMENTS` au lieu de produire un horodatage erroné. [#107417](https://github.com/ClickHouse/ClickHouse/pull/107417) ([Groene AI](https://github.com/groeneai)).
* Correction de l’arrêt silencieux de la réplication des modifications par `MaterializedPostgreSQL` lorsque le nom de la base de données ou de la table PostgreSQL contient des lettres majuscules (le consommateur `pgoutput` demandait un nom de publication non cité et converti en minuscules, qui ne correspondait pas à la publication préservant la casse). [#107423](https://github.com/ClickHouse/ClickHouse/pull/107423) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception (`Logical error: Not-ready Set is passed as the second argument for function 'in'`) lorsqu’une expression de clé (`ORDER BY`, `PRIMARY KEY`, `PARTITION BY` ou un `INDEX` de saut) contenait un opérateur `IN` avec une table à droite, par ex. `ORDER BY (x IN some_table)`. De telles expressions de clé sont désormais rejetées lors de la création de la table. [#107424](https://github.com/ClickHouse/ClickHouse/pull/107424) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats incorrects produits par l’optimisation `optimize_rewrite_aggregate_function_with_if` pour les fonctions d’agrégation qui préservent les valeurs de charge utile `NULL` (la famille `*_respect_nulls` : `anyRespectNulls`, `first_value_respect_nulls`, `anyLast_respect_nulls`, `last_value_respect_nulls`). L’optimisation ne réécrit plus `f(if(cond, x, NULL))` sous la forme `-If` pour ces fonctions. [#107430](https://github.com/ClickHouse/ClickHouse/pull/107430) ([Groene AI](https://github.com/groeneai)).
* Correction d’une exception parasite `filesystem error: in last_write_time: No such file or directory` lors du listage d’un répertoire d’object storage sur disque local (par ex. une table Iceberg sur un disque `local`) pendant que des fichiers sont remplacés de manière concurrente. Une entrée supprimée en parallèle est désormais omise du listage au lieu de l’interrompre. [#107432](https://github.com/ClickHouse/ClickHouse/pull/107432) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `THERE_IS_NO_COLUMN` lorsque `optimize_if_transform_strings_to_enum = 1` et que l’expression `if`/`transform` optimisée sur des littéraux de chaîne est une clé `GROUP BY` ou `ORDER BY` sur une table Distributed ou avec des parallel replicas. [#107455](https://github.com/ClickHouse/ClickHouse/pull/107455) ([Groene AI](https://github.com/groeneai)).
* Correction d’un rare plantage du serveur lors du traitement de `DISTINCT`, qui pouvait se produire lorsqu’une allocation échouait (par exemple en cas d’atteinte d’une limite mémoire) pendant l’initialisation de l’ensemble des clés distinctes. [#107467](https://github.com/ClickHouse/ClickHouse/pull/107467) ([Groene AI](https://github.com/groeneai)).
* Correction de `LOGICAL_ERROR: Unexpected return type from materialize` (et d’erreurs similaires d’incompatibilité de type) lorsque `apply_mutations_on_fly = 1` est utilisé sur une table avec un `UPDATE` on-fly en attente, dont la colonne cible est également lue comme entrée d’une fonction par un `UPDATE` on-fly antérieur, avant une mutation `ALTER MODIFY COLUMN ... LowCardinality(...)`. [#107475](https://github.com/ClickHouse/ClickHouse/pull/107475) ([Groene AI](https://github.com/groeneai)).
* Correction d’identifiants AWS STS obsolètes lors de la lecture de tables `DeltaLake` via `S3` : le moteur conserve désormais le client `S3` muni d’identifiants fraîchement renouvelés lors de l’actualisation de son instantané, de sorte que les lectures de longue durée n’échouent plus après l’expiration du TTL du jeton STS. Le fournisseur d’identifiants STS assume-role prend désormais lui aussi en charge le rafraîchissement des identifiants pour tout accès à `S3` utilisant STS. [#107480](https://github.com/ClickHouse/ClickHouse/pull/107480) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Correction de `SELECT ... FINAL` et `OPTIMIZE TABLE ... FINAL`, qui renvoyaient des lignes dupliquées après que `CREATE TABLE ... CLONE AS`, `ATTACH PARTITION ... FROM` ou `MOVE PARTITION ... TO TABLE` avaient adopté des parts d’un `MergeTree` simple dans un `ReplacingMergeTree`, `SummingMergeTree` ou `AggregatingMergeTree`. Le merge level de la part adoptée est désormais réinitialisé à 0 lorsque les engines source et destination diffèrent, afin que la destination la déduplique lors de la fusion suivante. [#107481](https://github.com/ClickHouse/ClickHouse/pull/107481) ([Groene AI](https://github.com/groeneai)).
* Correction d’un underflow d’entier dans le parser du PostgreSQL wire protocol, où un message avec un champ de longueur inférieur à 4 provoquait un bouclage de `size - 4` et un `resize`/`ignore` surdimensionné. [#107485](https://github.com/ClickHouse/ClickHouse/pull/107485) ([uwezkhan](https://github.com/uwezkhan)).
* Le suivi de l’annulation de query est désormais meilleur pendant l’attente du quorum dans ReplicatedMergeTree. [#107513](https://github.com/ClickHouse/ClickHouse/pull/107513) ([Nikita Taranov](https://github.com/nickitat)).
* Correction de `Not-ready Set is passed as the second argument for function 'in'` (`LOGICAL_ERROR`) lors de l’interrogation d’une table avec une clé `PARTITION BY` et une sous-requête `IN`/`NOT IN` incluse dans une expression plus large, par exemple `WHERE (c0 IN (SELECT ...)) != 0`. [#107515](https://github.com/ClickHouse/ClickHouse/pull/107515) ([Groene AI](https://github.com/groeneai)).
* Correction de `currentUser()`, `user()`, `SESSION_USER` et `authenticatedUser()`, qui s’évaluaient en chaîne vide lors de la phase de vidage des asynchronous insert (avec `async_insert = 1`). Cela affectait les expressions de colonne `DEFAULT`/`MATERIALIZED` ainsi que les materialized views qui référencent ces fonctions, lesquelles stockaient silencieusement une chaîne vide au lieu de l’utilisateur effectuant l’insert. [#107541](https://github.com/ClickHouse/ClickHouse/pull/107541) ([Groene AI](https://github.com/groeneai)).
* Avec `enable_analyzer = 1` (par défaut), interroger une table par son seul nom lorsqu’elle n’existe que dans une autre base de données suggère désormais la bonne table ; par exemple, `SELECT * FROM functions` renvoie `Maybe you meant system.functions?`. Auparavant, le nouvel analyseur renvoyait l’erreur `Unknown table expression identifier` sans suggestion, tandis que l’ancien analyseur fournissait déjà cette indication utile. [#107550](https://github.com/ClickHouse/ClickHouse/pull/107550) ([Groene AI](https://github.com/groeneai)).
* La mémoire utilisée par la bibliothèque rapidjson (dans `prettyPrintJSON`, `JSONMergePatch` et le parser JSON rapidjson) est désormais comptabilisée par le memory tracker, de sorte que les entrées pathologiques sont rejetées avec `MEMORY_LIMIT_EXCEEDED` au lieu d’allouer de la mémoire sans limite. [#107555](https://github.com/ClickHouse/ClickHouse/pull/107555) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une `LOGICAL_ERROR` (`updateFormatPrewhereInfo called more than once`) déclenchée lors de l'interrogation d'une source `file()`, `url()` ou de stockage objet avec à la fois un `PREWHERE` explicite et un `WHERE`, lorsque `optimize_prewhere_after_pushdown` était activé. [#107568](https://github.com/ClickHouse/ClickHouse/pull/107568) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash (déréférencement de pointeur nul) pouvant se produire lorsqu'un plan de requête distribué était exécuté localement (`make_distributed_plan` + `distributed_plan_execute_locally`) avec `log_formatted_queries = 1`. [#107570](https://github.com/ClickHouse/ClickHouse/pull/107570) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt du serveur (`std::terminate`, signal 6) pendant le démontage d'une requête avec plan distribué (`make_distributed_plan = 1`) lorsqu'une vérification d'état d'un worker ne parvenait pas à reprogrammer la vérification suivante (par exemple `CANNOT_SCHEDULE_TASK` à l'arrêt ou `MEMORY_LIMIT_EXCEEDED`). La requête échoue désormais proprement et le serveur continue de fonctionner. [#107575](https://github.com/ClickHouse/ClickHouse/pull/107575) ([Groene AI](https://github.com/groeneai)).
* Ajout de vérifications de limites manquantes lors de l'analyse d'Elf et de DWARF. [#107579](https://github.com/ClickHouse/ClickHouse/pull/107579) ([Michael Kolupaev](https://github.com/al13n321)).
* Ajout de vérifications de limites manquantes dans le lecteur ORC. [#107580](https://github.com/ClickHouse/ClickHouse/pull/107580) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige une exception (`Digest does not match` logical error) pouvant se produire avec `RENAME TABLE`, `RENAME DATABASE` ou `CREATE OR REPLACE TABLE` impliquant une table `TimeSeries` dans une base de données `Replicated`. Le renommage d'une table `TimeSeries` est désormais pris en charge. [#107583](https://github.com/ClickHouse/ClickHouse/pull/107583) ([Groene AI](https://github.com/groeneai)).
* Corrige un déni de service non authentifié par épuisement de la mémoire sur le port du protocole MySQL. [#107599](https://github.com/ClickHouse/ClickHouse/pull/107599) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige `DROP TABLE` sur une table `TimeSeries` dans une base de données `Replicated`, qui laissait auparavant fuir les tables internes et faisait réessayer indéfiniment la tâche de suppression en arrière-plan (`DROP TABLE ... SYNC` restait bloqué). [#107604](https://github.com/ClickHouse/ClickHouse/pull/107604) ([Groene AI](https://github.com/groeneai)).
* Corrige deux problèmes de traversée de chemin dans le protocole de récupération de part répliquée, qui pouvaient permettre à une réplique malveillante d'écrire des fichiers en dehors du répertoire de la part. [#107606](https://github.com/ClickHouse/ClickHouse/pull/107606) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige l'erreur 'Account must be specified error' lors de la lecture d'une table Delta Lake via Azure. [#107620](https://github.com/ClickHouse/ClickHouse/pull/107620) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Corrige le cas où `ALTER TABLE ... REPLACE PARTITION` sur une table `MergeTree` simple ressuscitait les parts remplacées après un redémarrage du serveur, ce qui amenait la table à renvoyer à la fois les lignes de remplacement et les anciennes lignes remplacées. [#107623](https://github.com/ClickHouse/ClickHouse/pull/107623) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur lors de la lecture d'une vue matérialisée dont la cible est une table `Distributed` alors que la requête s'exécute avec `enable_analyzer = 0`. [#107653](https://github.com/ClickHouse/ClickHouse/pull/107653) ([Groene AI](https://github.com/groeneai)).
* Lorsque plusieurs quotas sont attribués au même utilisateur ou rôle, ils sont désormais tous appliqués conjointement (une requête est rejetée si l'un d'eux est dépassé), au lieu qu'un seul quota soit appliqué et choisi de manière non déterministe. `SHOW QUOTA` et `system.quota_usage` affichent désormais tous les quotas appliqués à l'utilisateur courant. [#107664](https://github.com/ClickHouse/ClickHouse/pull/107664) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `s3` et des autres table functions de l’object storage qui renvoyaient `LOGICAL_ERROR` au lieu de `BAD_ARGUMENTS` lorsqu’un argument key-value était dupliqué, par exemple `s3('http://...', format = 'CSV', format = 'TSV')`. [#107670](https://github.com/ClickHouse/ClickHouse/pull/107670) ([Groene AI](https://github.com/groeneai)).
* Correction de l’interface MySQL, qui était inutilisable avec `MySQL Connector/J` 8.2.0 et les versions ultérieures (y compris 9.x). Le champ `info` du paquet `OK` est désormais encodé avec sa longueur, comme sur le MySQL server, ce qui permet au JDBC driver de se connecter. [#107693](https://github.com/ClickHouse/ClickHouse/pull/107693) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une `LOGICAL_ERROR` ("Input nodes size mismatch in dag") lorsqu’une query avec `make_distributed_plan = 1` effectue une jointure sur une clé enveloppée dans une fonction dont les deux côtés n’ont pas de type commun (par exemple `ON intDiv(-1, t1.key) = t2.key` avec une clé de droite de type `UInt64`). [#107701](https://github.com/ClickHouse/ClickHouse/pull/107701) ([Groene AI](https://github.com/groeneai)).
* La lecture de données Arrow/ArrowStream avec des columns `String`/`Binary` vides produites par Apache Arrow Java \< 19.0.0 (y compris Apache Spark) ne déclenche plus d’erreur `INCORRECT_DATA`. [#107764](https://github.com/ClickHouse/ClickHouse/pull/107764) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une exception `BAD_GET` ("Bad get: has String, requested UInt64") lors de l’estimation des column statistics `countmin` lorsqu’une query compare une column à un literal d’un autre type qui n’est pas converti au préalable, comme `numeric_col IN (SELECT '5')` ou `string_col IN (SELECT 5)`. [#107793](https://github.com/ClickHouse/ClickHouse/pull/107793) ([Groene AI](https://github.com/groeneai)).
* Correction des table functions `odbc` et `jdbc`, qui pouvaient rester bloquées pendant plusieurs minutes et ignorer l’annulation de query (`KILL QUERY`, `max_execution_time`) lorsque le bridge cessait de répondre pendant l’inférence de la structure de la table distante. [#107809](https://github.com/ClickHouse/ClickHouse/pull/107809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception (`Logical error: 'index >= result.start'`) lors du formatage d’une query mal formée qui mélange les formes positionnelle et nommée de l’argument secret des table functions `s3`/`gcs`, par exemple `s3('url', 'a', 'b', secret_access_key = 'c')`. [#107818](https://github.com/ClickHouse/ClickHouse/pull/107818) ([Groene AI](https://github.com/groeneai)).
* Correction du skip index `set`, qui n’effectuait pas de pruning des granules sur les columns `LowCardinality`. [#107868](https://github.com/ClickHouse/ClickHouse/pull/107868) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Correction de insert deduplication, qui calculait des hash incorrects pour les columns `String` et `Array` avec le server setting `insert_deduplication_version = new_unified_hash` : des inserts identiques pouvaient ne pas être dédupliqués, car le hash de déduplication dépendait de la position de la row dans le inserted block. [#107915](https://github.com/ClickHouse/ClickHouse/pull/107915) ([Sema Checherinda](https://github.com/CheSema)).
* Correction de résultats incorrects de `ORDER BY` sur des columns `Nullable` avec plusieurs clés de tri sur macOS (Apple Silicon), causés par une extension de signe manquante dans le comparateur de tri JIT-compiled. [#107973](https://github.com/ClickHouse/ClickHouse/pull/107973) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une régression des performances lors de la lecture de columns `Dynamic` avec plusieurs threads. Causée par [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730). Ferme [#107942](https://github.com/ClickHouse/ClickHouse/issues/107942). [#107997](https://github.com/ClickHouse/ClickHouse/pull/107997) ([Pavel Kruglov](https://github.com/Avogar)).
* Le paramètre de data lake obsolète `storage_catalog_url` est désormais correctement rejeté par la protection du catalog (auparavant, seuls `storage_catalog_type` et `storage_aws_access_key_id` étaient vérifiés), et le message d'erreur liste tous les paramètres obsolètes. [#108040](https://github.com/ClickHouse/ClickHouse/pull/108040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur logique `Bad cast from type DB::ColumnSparse to DB::ColumnVector<char8_t>` lorsqu'une requête `LIKE` lit depuis un index `text` via le chemin de repli en lecture directe sur une colonne stockée en mode clairsemé. [#108068](https://github.com/ClickHouse/ClickHouse/pull/108068) ([Groene AI](https://github.com/groeneai)).
* Exécute toujours les gestionnaires de fin de lot du cache d'accès, même pour un lot vide. [#108124](https://github.com/ClickHouse/ClickHouse/pull/108124) ([Azat Khuzhin](https://github.com/azat)).
* Correction d'une `LOGICAL_ERROR` (`Column identifier is already registered`) pour certaines requêtes avec `UNION ALL`. [#100770](https://github.com/ClickHouse/ClickHouse/pull/100770) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d'une utilisation après libération du mutex de stockage du workload pendant l'arrêt du serveur. [#101447](https://github.com/ClickHouse/ClickHouse/pull/101447) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Correction d'un interblocage dans `ALTER DATABASE MODIFY COMMENT` avec le catalog `Shared`. [#103683](https://github.com/ClickHouse/ClickHouse/pull/103683) ([Nikolay Degterinsky](https://github.com/evillique)).
* Un identifiant vide entre guillemets Unicode déclenche désormais une `SYNTAX_ERROR` au lieu de `CANNOT_PARSE_QUOTED_STRING`. [#104173](https://github.com/ClickHouse/ClickHouse/pull/104173) ([leonard9893](https://github.com/leonard9893)).
* Préserve les types de paramètres d'origine des fonctions d'agrégation `timeSeries*` afin que les types `AggregateFunction` conservent correctement leur forme lors du cycle de rattachement de table et avec les répliques parallèles. [#104812](https://github.com/ClickHouse/ClickHouse/pull/104812) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction d'une `LOGICAL_ERROR` pour une CTE matérialisée avec `serialize_query_plan` et des répliques parallèles. [#104896](https://github.com/ClickHouse/ClickHouse/pull/104896) ([Igor Nikonov](https://github.com/devcrafter)).
* Correction d'un dépassement d'entier signé dans les fonctions `timeSeries*ToGrid` lorsque le paramètre de staleness (fenêtre) est proche de `INT64_MAX`. [#105319](https://github.com/ClickHouse/ClickHouse/pull/105319) ([Groene AI](https://github.com/groeneai)).
* Une valeur du paramètre `compatibility` ne rétablit plus `apply_row_policy_after_final` à `false`, de sorte que les politiques de lignes sont désormais toujours appliquées correctement avec `FINAL`. [#105637](https://github.com/ClickHouse/ClickHouse/pull/105637) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de `clickhouse chdig client` en respectant `SETPGROUP`/`RESETIDS`/`SETSIGDEF` dans le stub `posix_spawn`. [#105858](https://github.com/ClickHouse/ClickHouse/pull/105858) ([Azat Khuzhin](https://github.com/azat)).
* Correction d'une exception lors des vérifications de cohérence de merge-tree sur les projections lorsque l'exécuteur de fusion/mutation n'était pas initialisé. [#105919](https://github.com/ClickHouse/ClickHouse/pull/105919) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Lors de l'analyse d'index sur les projections, l'index `minmax` est désormais chargé depuis la projection elle-même plutôt que depuis la part parente, ce qui produit des résultats corrects. [#105940](https://github.com/ClickHouse/ClickHouse/pull/105940) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Correction d'une exception dans `addMonotonicChain` pour `materialize(monotonic_chain(...))`. [#106050](https://github.com/ClickHouse/ClickHouse/pull/106050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction de l'échec de `RESTORE` sur les sauvegardes incluant des dépendances de `MASKING POLICY`. [#106086](https://github.com/ClickHouse/ClickHouse/pull/106086) ([Julia Kartseva](https://github.com/jkartseva)).
* Correction d'une possible corruption de mémoire lors de l'expansion des fonctions SQL définies par l'utilisateur avec `prefer_column_name_to_alias` activé. [#106121](https://github.com/ClickHouse/ClickHouse/pull/106121) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Un dictionnaire utilisant la connexion bridge est désormais rechargé après un redémarrage du serveur, ce qui rétablit la connexion. Ferme [#106151](https://github.com/ClickHouse/ClickHouse/issues/106151). [#106152](https://github.com/ClickHouse/ClickHouse/pull/106152) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Correction du cache du système de fichiers pour `LocalObjectStorage`. [#106239](https://github.com/ClickHouse/ClickHouse/pull/106239) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction de la source distante différée pour les fonctions de table avec `use_delayed_remote_source`. [#106470](https://github.com/ClickHouse/ClickHouse/pull/106470) ([Nikolay Degterinsky](https://github.com/evillique)).
* Correction de `timeSeriesLastToGrid` pour les timestamps antérieurs au début de la grille et ceux situés hors de la fenêtre. [#106504](https://github.com/ClickHouse/ClickHouse/pull/106504) ([Vitaly Baranov](https://github.com/vitlibar)). [#106577](https://github.com/ClickHouse/ClickHouse/pull/106577) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction d'une `LOGICAL_ERROR` (`Inconsistent AST formatting`) sur un nom de fonction contenant des paramètres de requête. [#106635](https://github.com/ClickHouse/ClickHouse/pull/106635) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction d'une erreur logique lorsqu'une table est supprimée avant la désérialisation d'une tâche du plan distribué. [#106944](https://github.com/ClickHouse/ClickHouse/pull/106944) ([Alexander Gololobov](https://github.com/davenger)).
* Utilisation d'une comparaison exacte pour les clés `GROUP BY` de `Nullable`. [#107050](https://github.com/ClickHouse/ClickHouse/pull/107050) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction d'une `LOGICAL_ERROR` (`Trying to get name of not a column`) déclenchée lorsqu'un argument de fonction de table n'était pas une expression de colonne (par exemple, un sélecteur `*` non résolu provenant de `multiIf`/`CASE`). [#107411](https://github.com/ClickHouse/ClickHouse/pull/107411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la croissance non bornée du cache des fuseaux horaires (`DateLUT`) lorsque de nombreux noms de fuseaux horaires invalides distincts sont traités. [#107464](https://github.com/ClickHouse/ClickHouse/pull/107464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Écriture de l'entrée `part_log` avant de signaler qu'une simple mutation `MergeTree` est terminée. [#107741](https://github.com/ClickHouse/ClickHouse/pull/107741) ([Azat Khuzhin](https://github.com/azat)).
* `arrayFold` vérifie désormais la validité de son argument de type tableau en cas d'entrée malformée. [#107932](https://github.com/ClickHouse/ClickHouse/pull/107932) ([Michael Kolupaev](https://github.com/al13n321)).
* Correction d'une rare situation de concurrence de données et d'une possible utilisation après libération dans le lecteur d'archive d'index de saut mis en cache d'une part `MergeTree`, qui pouvait se produire lorsqu'une requête lisait des index de saut pendant que la part était déplacée ou renommée. [#107995](https://github.com/ClickHouse/ClickHouse/pull/107995) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d'une régression des performances pour les sous-colonnes `Map` avec `PREWHERE`. [#107988](https://github.com/ClickHouse/ClickHouse/pull/107988) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige `parseDateTimeBestEffort` avec un fuseau horaire qui déclenchait `CANNOT_PARSE_DATETIME` sur des lignes NULL de `toString(Nullable(DateTime64))`. [#108310](https://github.com/ClickHouse/ClickHouse/pull/108310) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de la table function et de l'engine `ArrowFlight`, qui rejetaient une named collection omettant la clé facultative `dataset` avec l'erreur `No such key 'dataset'`. [#108041](https://github.com/ClickHouse/ClickHouse/pull/108041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une logical error `Inconsistent AST formatting` pour une window function sans argument dans une déclaration `CODEC` ou d'engine (par ex. `CODEC(cume_dist() OVER (...))`) ; cette fonction conserve désormais ses parenthèses afin que la query survive à un aller-retour format/parse. [#107806](https://github.com/ClickHouse/ClickHouse/pull/107806) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `hasToken` lorsqu'une aiguille contenant un séparateur renvoyait silencieusement des résultats via un text index au lieu de lever `BAD_ARGUMENTS`. [#108189](https://github.com/ClickHouse/ClickHouse/pull/108189) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Le paramètre `use_skip_indexes_on_data_read` peut désormais être rétabli à sa valeur par défaut d'avant la version 26.1 (`false`) via le paramètre `compatibility`, ce qui offre une solution de repli en cas de régression des performances lorsque le chemin on-data-read empêche l'élagage des plages de marques des skip indexes `minmax`/`set`/`bloom_filter`. [#108330](https://github.com/ClickHouse/ClickHouse/pull/108330) ([egor romanov](https://github.com/egor-click)).
* Correction d'un crash possible (déréférencement de pointeur nul) lorsque la redéfinition `database`/`db` d'une named collection passée à `remote`/`remoteSecure` n'est pas un nom de database constant, par ex. `remote(nc, database = (SELECT 1))`. La query échoue désormais avec une erreur explicite au lieu de provoquer un crash. [#108271](https://github.com/ClickHouse/ClickHouse/pull/108271) ([Groene AI](https://github.com/groeneai)).
* Correction d'une refreshable materialized view qui pouvait se bloquer si la connection à ZooKeeper était perdue au mauvais moment. [#108234](https://github.com/ClickHouse/ClickHouse/pull/108234) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige `Bad cast from type DB::ColumnVector<...> to DB::ColumnTuple` lors de la lecture d'une column `Array(Tuple(...))` dont la valeur est remplie avec des valeurs par défaut, par ex. après `ALTER TABLE ... ADD COLUMN` ou après une mutation `ALTER TABLE ... CLEAR COLUMN` inachevée appliquée à la volée. [#107232](https://github.com/ClickHouse/ClickHouse/pull/107232) ([Groene AI](https://github.com/groeneai)).
* Corrige une logical error `Bad cast from type DB::ColumnDynamic to DB::ColumnNullable` lorsqu'une référence explicite à une clé `JOIN ... USING` dont le common supertype est `Dynamic` est passée à une aggregate function, par exemple `count(t.key) IGNORE NULLS`. [#107289](https://github.com/ClickHouse/ClickHouse/pull/107289) ([Groene AI](https://github.com/groeneai)).
* Corrige une perte silencieuse de données sur `MergeTree` simple (non répliqué) lorsque `REPLACE PARTITION`, `MOVE PARTITION`, `DETACH PARTITION` ou `DETACH PART` est exécuté sur une partition qui contient encore des correctifs lightweight `UPDATE` non appliqués. Ces opérations rejettent désormais la commande, comme le fait déjà `ReplicatedMergeTree`. [#107386](https://github.com/ClickHouse/ClickHouse/pull/107386) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash (SIGSEGV dans les builds release, assertion d'incompatibilité de type dans les builds debug) dans `has` sur une `Map` avec une clé `Dynamic` lorsque l'argument de recherche est `LowCardinality`, par ex. `has(map('a'::Dynamic, ...), toLowCardinality('b'))`. [#107956](https://github.com/ClickHouse/ClickHouse/pull/107956) ([Groene AI](https://github.com/groeneai)).
* Correction d’un `LOGICAL_ERROR` ("Block structure mismatch ... between `ConvertingTransform` and `RemovingReplicatedColumnsTransform`") lors de l’insertion dans une vue matérialisée dont la table cible `TO` déclare une colonne avec un `Enum` plus large que celui produit par le `SELECT` de la vue. L’élargissement valide de l’`Enum` est désormais correctement appliqué. [#107648](https://github.com/ClickHouse/ClickHouse/pull/107648) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `NUMBER_OF_COLUMNS_DOESNT_MATCH` lors de l’interrogation d’une table `Distributed` (ou de l’utilisation de parallel replicas) comportant plusieurs colonnes `ALIAS` qui se développent en une même expression et qui sont référencées conjointement avec `ORDER BY`/`GROUP BY`/`HAVING`. [#107913](https://github.com/ClickHouse/ClickHouse/pull/107913) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Correction d’un comportement indéfini (pointeur nul passé à `memcpy`) dans les fonctions `detectCharset` et `detectLanguageUnknown` lorsque la chaîne d’entrée dépasse 32768 octets et qu’aucun jeu de caractères ne peut être détecté. [#108250](https://github.com/ClickHouse/ClickHouse/pull/108250) ([Groene AI](https://github.com/groeneai)).
* Correction d’un `signed integer overflow` (comportement indéfini) dans `dateDiff` avec les unités `hour` et `minute`, sur des valeurs `DateTime64` extrêmes proches des limites de la plage `Int64`. [#108229](https://github.com/ClickHouse/ClickHouse/pull/108229) ([Groene AI](https://github.com/groeneai)).
* Correction de `Too many marks` pour un index de texte sur une merged part vide. [#106867](https://github.com/ClickHouse/ClickHouse/pull/106867) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’un `LOGICAL_ERROR` ("Unexpected return type from if") lors de la lecture d’une colonne avec `apply_mutations_on_fly = 1` après un `ALTER UPDATE col = ... WHERE <cond>` avec une condition non constante ou fausse, suivi de `ALTER MODIFY COLUMN col <new type>`. [#108128](https://github.com/ClickHouse/ClickHouse/pull/108128) ([Groene AI](https://github.com/groeneai)).
* Correction d’un arrêt du serveur (`Logical error` dans `IColumn::insertFrom`) lors du transtypage d’un `Array(Dynamic)` ou d’un `Array(Variant)` en `QBit` avec `accurateCastOrNull`, par exemple `accurateCastOrNull(CAST(range(114), 'Array(Dynamic)'), 'QBit(Float32, 114)')`. [#108288](https://github.com/ClickHouse/ClickHouse/pull/108288) ([Groene AI](https://github.com/groeneai)).
* Correction d’une erreur de syntaxe lorsqu’un alias suit une sous-requête dans `DESCRIBE TABLE (...) AS ...`. [#100205](https://github.com/ClickHouse/ClickHouse/pull/100205) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `getClientHTTPHeader` est désormais correctement traité comme non déterministe, de sorte que son résultat n’est plus réutilisé à tort par le cache de résultat de la requête. [#108029](https://github.com/ClickHouse/ClickHouse/pull/108029) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* Compiler `delta-kernel-rs` avec la feature `default-engine-native-tls` afin que son propre client HTTP (`reqwest`) puisse réutiliser l’OpenSSL déjà lié à ClickHouse. Il ne s’agit que d’une activation partielle de `native-tls` : `object_store` force toujours `reqwest/rustls-tls-native-roots`, de sorte que `reqwest` se retrouve avec les backends `native-tls` et `rustls`. `delta-kernel-rs` reste désactivé sous MSan pour le moment, car `ring` est toujours compilé via `object_store` (à la fois transitivement via `rustls` et directement pour la signature HMAC des requêtes AWS), et son assembleur écrit à la main ne génère pas les symboles requis par MSan (suivi en amont dans [arrow-rs-object-store#585](https://github.com/apache/arrow-rs-object-store/pull/585)). [#96856](https://github.com/ClickHouse/ClickHouse/pull/96856) ([Austin Bonander](https://github.com/abonander)).
* Ajouter une optimisation post-édition de liens PGO (Profile-Guided Optimization) et BOLT (Binary Optimization and Layout Tool) pour le binaire `clickhouse`. Les profils sont collectés à partir des workloads d’intégration continue et appliqués, dans la mesure du possible, lors des builds de release — les deux étapes reviennent à une sortie non optimisée si un profil est obsolète ou incompatible. À ce jour, PGO n’apporte aucun bénéfice. [#100938](https://github.com/ClickHouse/ClickHouse/pull/100938) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajouter le mode `--storage` à `clickhouse keeper-bench`, qui exécute des benchmarks de `KeeperStorage` in-process (sans réseau, sans raft, sans machine à états), en utilisant les mêmes sections de config `setup`/`generator` que le mode réseau. [#103081](https://github.com/ClickHouse/ClickHouse/pull/103081) ([Michael Kolupaev](https://github.com/al13n321)).
* Corriger la compilation avec `ENABLE_AWS_S3=OFF`. [#105390](https://github.com/ClickHouse/ClickHouse/pull/105390) ([Yue Ni](https://github.com/niyue)).
* Mettre à jour `mongo-cxx-driver` vers r4.3.0. [#105522](https://github.com/ClickHouse/ClickHouse/pull/105522) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corriger la compilation avec RapidJSON. [#105674](https://github.com/ClickHouse/ClickHouse/pull/105674) ([Ilya Golshtein](https://github.com/ilejn)).
* Accélérer la compilation en supprimant les inclusions transitives des en-têtes `base/` largement utilisés et en retirant le code inutilisé de `Poco/Logger.h` embarqué. [#105702](https://github.com/ClickHouse/ClickHouse/pull/105702) ([Raúl Marín](https://github.com/Algunenano)).
* Mettre à jour `libxml2` de 2.15.1 à 2.15.3. [#105985](https://github.com/ClickHouse/ClickHouse/pull/105985) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utiliser `expat` 2.8.1 dans Poco. [#105988](https://github.com/ClickHouse/ClickHouse/pull/105988) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mettre à niveau `thrift` vers `v0.23.0`. [#105993](https://github.com/ClickHouse/ClickHouse/pull/105993) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utiliser le tag `postgres` `REL_18_4`. [#105994](https://github.com/ClickHouse/ClickHouse/pull/105994) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mettre à niveau `krb5` vers 1.22.2. [#106076](https://github.com/ClickHouse/ClickHouse/pull/106076) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mettre à jour le bundle `curl` vers 8.20.0. [#106077](https://github.com/ClickHouse/ClickHouse/pull/106077) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `mariadb-connector-c` a été mis à niveau vers la version 3.1.29. Tous les patchs pertinents pour ClickHouse ont été conservés. [#106287](https://github.com/ClickHouse/ClickHouse/pull/106287) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Mise à jour des digests de l'image de base distroless pour corriger des CVE dans libssl3t64. [#106360](https://github.com/ClickHouse/ClickHouse/pull/106360) ([Rahul Nair](https://github.com/motsc)).
* Utilisation de `wasmtime` v45.0.1. [#106836](https://github.com/ClickHouse/ClickHouse/pull/106836) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `openssl` a été mis à niveau vers la version 3.5.7. [#106844](https://github.com/ClickHouse/ClickHouse/pull/106844) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* La compilation Docker distroless met désormais aussi à jour les tags flottants `:X.Y-distroless` et `:X.Y.Z-distroless`, et non plus seulement le tag de version complète. [#106932](https://github.com/ClickHouse/ClickHouse/pull/106932) ([Rahul Nair](https://github.com/motsc)).
* Désactivation de fonctionnalités `curl` inutilisées, telles que l'authentification NTLM, les cookies, alt-svc, HSTS, DNS-over-HTTPS, netrc, MIME et AWS SigV4. [#107226](https://github.com/ClickHouse/ClickHouse/pull/107226) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mise à jour de `NuRaft` avec un correctif pour un livelock lors de l'installation d'un snapshot, qui survenait lorsque les E/S du snapshot s'exécutaient sur un thread d'arrière-plan. Le paramètre Keeper `nuraft_use_bg_thread_for_snapshot_io` reste désactivé par défaut ; l’intégration continue le randomise désormais pour couvrir les deux modes. [#107338](https://github.com/ClickHouse/ClickHouse/pull/107338) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction de la compilation de `abseil` lorsque le chemin de checkout de ClickHouse contient une sous-chaîne correspondant à une extension d'en-tête. [#107349](https://github.com/ClickHouse/ClickHouse/pull/107349) ([zhiqiang](https://github.com/zhiqiang-hhhh)).
* Détermination de la taille du cache L2 à partir de `CPUID` sur x86\_64 au lieu de `sysconf(_SC_LEVEL2_CACHE_SIZE)`, spécifique à glibc, qui n'est pas disponible avec musl libc. [#107469](https://github.com/ClickHouse/ClickHouse/pull/107469) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Augmentation de la taille de pile à 8 MiB pour les builds musl afin de prendre en charge des requêtes fortement imbriquées. [#107470](https://github.com/ClickHouse/ClickHouse/pull/107470) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Dérivation de l'ensemble des symboles de bibliothèque C localisés dans les bibliothèques statiques Rust à partir des bibliothèques de référence réelles plutôt que d'une liste d'autorisation maintenue manuellement, afin de couvrir tous les builtins compiler-rt et les fonctions libm de la plateforme. [#107571](https://github.com/ClickHouse/ClickHouse/pull/107571) ([Raúl Marín](https://github.com/Algunenano)).
* Basculement des images distroless du serveur et de Keeper vers `gcr.io/distroless/base-nossl-debian13` afin qu'elles n'embarquent que les bibliothèques effectivement liées par ClickHouse et n'incluent plus celles que nous lions déjà statiquement. [#107837](https://github.com/ClickHouse/ClickHouse/pull/107837) ([Rahul Nair](https://github.com/motsc)).
* Réactivation de 50 stateless tests sur MacOS (`arm_darwin`) qui étaient ignorés car obsolètes, et utilisation de `fsync` au lieu de `F_FULLFSYNC` pour la synchronisation des répertoires sur MacOS. [#107887](https://github.com/ClickHouse/ClickHouse/pull/107887) ([Raúl Marín](https://github.com/Algunenano)).

<div id="265">
  ### Version 26.5 de ClickHouse, 2026-05-21. [Présentation](https://presentations.clickhouse.com/2026-release-26.5/), [Vidéo](https://www.youtube.com/watch?v=P1IDAvsi7p8)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* Les valeurs par défaut de `date_time_input_format` et `cast_string_to_date_time_mode` ont été remplacées de `basic` par `best_effort`. Les requêtes qui ne parvenaient auparavant pas à analyser des chaînes de date/heure non basiques (par ex. `2024 April 4`, `Apr 15, 2020 10:30:00`) peuvent désormais aboutir par défaut. Pour conserver l'ancien comportement d'analyse strict, définissez ces paramètres sur `basic` (ou utilisez `compatibility`). [#89334](https://github.com/ClickHouse/ClickHouse/pull/89334) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le nom d'élément de `Tuple` `null` est désormais interdit, car il entre en conflit avec le nom de sous-colonne utilisé pour les null maps de `Nullable`, ce qui entraîne une résolution ambiguë des sous-colonnes. [#98377](https://github.com/ClickHouse/ClickHouse/pull/98377) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des paramètres `dynamic_disk_allow_from_env`, `dynamic_disk_allow_from_zk`, `dynamic_disk_allow_include` pour interdire l'utilisation de `from_env`, `from_zk` et `include` dans les disques dynamiques. Il s'agit d'un changement incompatible avec les versions précédentes, car il interdit désormais par défaut un comportement qui était auparavant autorisé par défaut. [#99138](https://github.com/ClickHouse/ClickHouse/pull/99138) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Vous ne pouvez plus utiliser le lecteur et le writer Parquet obsolètes basés sur Arrow. L'implémentation native sera utilisée à la place. [#100949](https://github.com/ClickHouse/ClickHouse/pull/100949) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SHOW CREATE TABLE t` privilégie désormais la table temporaire lorsque des tables permanente et temporaire nommées `t` existent toutes deux et qu'aucune base de données n'est spécifiée, conformément au comportement existant de `DESCRIBE TABLE`. En outre, la syntaxe `DESCRIBE TEMPORARY TABLE` est désormais prise en charge. [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La valeur par défaut de `http_max_fields` a été réduite de 1,000,000 à 1,000 et celle de `http_max_field_name_size` de 128 KB à 4 KB afin de limiter l'utilisation de la mémoire en phase de pré-authentification par les connexions HTTP. Ajout des paramètres `http_max_request_header_size` et `http_headers_read_timeout`. Les utilisateurs qui s'appuyaient sur les anciennes limites plus élevées peuvent les rétablir via les paramètres. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).
* Ajout d'une colonne imbriquée `histograms` à `system.metric_log` qui capture un instantané de chaque métrique d'histogramme enregistrée par ligne, avec un nouveau paramètre `system_metric_log_show_zero_values_in_histograms` pour contrôler l'émission des valeurs zéro. Cela rend la table `system.histogram_metric_log` obsolète. [#103770](https://github.com/ClickHouse/ClickHouse/pull/103770) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `CAST` vers `DateTime` ou `DateTime64` sans fuseau horaire explicite préserve désormais le fuseau horaire de son argument source (lorsque la source est un `DateTime`/`DateTime64` avec un fuseau horaire explicite), conformément au comportement des fonctions `toDateTime`/`toDateTime64`. Ferme [#55072](https://github.com/ClickHouse/ClickHouse/issues/55072). [#104433](https://github.com/ClickHouse/ClickHouse/pull/104433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suppression de la table function `kql`. Utilisez `SET dialect = 'kusto'` pour exécuter des requêtes dans le dialecte KQL. [#105101](https://github.com/ClickHouse/ClickHouse/pull/105101) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les window functions `RANK` et `DENSE_RANK` rejettent désormais les arguments et lèvent `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`, conformément au standard SQL. Auparavant, des requêtes telles que `RANK(x) OVER (ORDER BY id)` étaient acceptées silencieusement, l'argument étant ignoré. Pour rétablir l'ancien comportement permissif, définissez `allow_rank_dense_rank_arguments = 1`. Ferme [#49526](https://github.com/ClickHouse/ClickHouse/issues/49526). [#104324](https://github.com/ClickHouse/ClickHouse/pull/104324) ([Groene AI](https://github.com/groeneai)).

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

* Ajout d’un nouveau paramètre `max_bytes_ratio_before_external_join`, calqué sur `max_bytes_ratio_before_external_group_by` et `max_bytes_ratio_before_external_sort`. Il exprime le seuil de spill sur disque pour les hash joins sous forme de fraction de la mémoire disponible ; combiné au seuil absolu `max_bytes_before_external_join`, c’est le plus petit des deux seuils qui s’applique. [#103862](https://github.com/ClickHouse/ClickHouse/pull/103862) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Le paramètre `new max_bytes_ratio_before_external_join` est désormais activé par défaut à 0.5, comme `max_bytes_ratio_before_external_group_by` et `max_bytes_ratio_before_external_sort`. Les hash joins basculent automatiquement vers grace hash join dès que les données du côté droit dépassent la moitié de la mémoire système disponible (lorsque des limites mémoire sont configurées). [#104285](https://github.com/ClickHouse/ClickHouse/pull/104285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la fonction de table `filesystem`. Elle permet de représenter la structure d’un répertoire sous forme de table, et d’interroger avec SQL les métadonnées et le contenu des fichiers. À l’origine [#42039](https://github.com/ClickHouse/ClickHouse/pull/42039) par @perst20. Voir [#42039](https://github.com/ClickHouse/ClickHouse/issues/42039). Voir [#50208](https://github.com/ClickHouse/ClickHouse/issues/50208). [#53610](https://github.com/ClickHouse/ClickHouse/pull/53610) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permet de passer des noms de fonction seuls à des fonctions d’ordre supérieur comme `arrayMap`, `arrayFilter`, etc. Par exemple, `arrayMap(negate, [1, 2, 3])` est désormais équivalent à `arrayMap(x -> negate(x), [1, 2, 3])`. [#101033](https://github.com/ClickHouse/ClickHouse/pull/101033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du paramètre `send_table_structure_on_insert_with_inline_data` et de l’option client `--inline-insert-data` pour permettre au serveur d’analyser lui-même les données INSERT inline via le protocole natif, en évitant l’aller-retour nécessaire pour récupérer la structure de la table et en améliorant les performances pour de nombreux petits inserts. [#101034](https://github.com/ClickHouse/ClickHouse/pull/101034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des fonctions `tokenizeQuery` et `highlightQuery` pour la tokenisation des requêtes SQL et la coloration syntaxique. `tokenizeQuery` renvoie les tokens du lexer avec leurs offsets en octets et leurs types ; `highlightQuery` renvoie des plages de coloration syntaxique basées sur le parser avec des catégories de surlignage (keyword, identifier, function, number, string, etc.). [#101054](https://github.com/ClickHouse/ClickHouse/pull/101054) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du paramètre `url_base` pour résoudre les URL relatives dans la fonction de table `url` et le moteur de table `URL`, conformément à la RFC 3986. [#101113](https://github.com/ClickHouse/ClickHouse/pull/101113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge des valeurs négatives dans la clause `LIMIT BY` pour sélectionner des lignes à partir de la *fin* de chaque groupe plutôt que du début. Par exemple, `LIMIT -2 BY id` renvoie les deux dernières lignes par `id`. Les offsets négatifs (`LIMIT -1 OFFSET -1 BY id`) et les signes mixtes (`LIMIT -2 OFFSET 1 BY id`) sont également pris en charge. [#103222](https://github.com/ClickHouse/ClickHouse/pull/103222) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Prise en charge de la fonction `json_value` pour produire des sorties en `tuple` et `array`, afin d’améliorer les performances de plusieurs requêtes JSON. [#78362](https://github.com/ClickHouse/ClickHouse/pull/78362) ([kevinyhzou](https://github.com/KevinyhZou)). Prise en charge de l’argument JSONPath multi-chemins `Tuple`/`Array` dans `JSON_VALUE`, `JSON_EXISTS` et `JSON_QUERY`, par @KevinyhZou. [#101102](https://github.com/ClickHouse/ClickHouse/pull/101102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Introduction d’un nouveau paramètre `kafka_autodetect_client_rack`. Lorsqu’il est défini, il détecte la zone de disponibilité via les mécanismes du cloud et la propage comme paramètre `client.rack` de `librdkafka` afin d’éviter les communications inter-zones. [#81323](https://github.com/ClickHouse/ClickHouse/pull/81323) ([Ilya Golshtein](https://github.com/ilejn)).
* Ajout du type d’événement `Read` à `system.blob_storage_log` pour suivre les opérations de lecture du stockage objet, contrôlé par le nouveau paramètre `enable_blob_storage_log_for_read_operations`. [#96867](https://github.com/ClickHouse/ClickHouse/pull/96867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les utilisateurs peuvent désormais voir les watches ZooKeeper émises par `clickhouse-server` grâce à la nouvelle table `system.zookeeper_watches`. [#99277](https://github.com/ClickHouse/ClickHouse/pull/99277) ([Den Kalantaevskii](https://github.com/Diskein)).
* Ajout de l’événement de profil `Shards`, qui comptabilise le nombre de shards impliqués dans les distributed queries, totalisé sur l’ensemble des tables. [#99470](https://github.com/ClickHouse/ClickHouse/pull/99470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les UDF `WASM` peuvent être déclarées `DETERMINISTIC` et faire l’objet d’un repliement de constantes. [#100005](https://github.com/ClickHouse/ClickHouse/pull/100005) ([Vasily Chekalkin](https://github.com/bacek)).
* Ajout du paramètre `parallel_replicas_prefer_local_replica` : lorsqu’il est désactivé, les répliques parallèles sont sélectionnées uniquement par l’algorithme de load balancing, ce qui permet même aux queries `max_parallel_replicas = 1` d’être dirigées vers un autre hôte. [#100139](https://github.com/ClickHouse/ClickHouse/pull/100139) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des server settings `{disk,storage,http}_connections_rcvbuf` et `{disk,storage,http}_connections_sndbuf` pour contrôler la taille des tampons des sockets TCP sur les HTTP connections sortantes, ce qui permet aux opérateurs de surcharger l’autotuning du noyau et de plafonner l’utilisation mémoire par connexion. [#100478](https://github.com/ClickHouse/ClickHouse/pull/100478) ([Sema Checherinda](https://github.com/CheSema)).
* Prise en charge de `CREATE OR REPLACE MATERIALIZED VIEW` avec la même sémantique de permutation atomique que `CREATE OR REPLACE TABLE`. Fonctionne avec les tables internes, les tables `TO`, `POPULATE`, `REFRESH` et `ON CLUSTER`. [#100539](https://github.com/ClickHouse/ClickHouse/pull/100539) ([DQ](https://github.com/il9ue)).
* Ajout des histogram metrics `s3_read_request_duration_microseconds` et `s3_read_request_bytes` pour observer la durée de vie des connexions des requêtes GET S3 et le volume d’octets consommés, visibles dans `system.histogram_metrics` et sur le Prometheus endpoint. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* Ajout des table engines `Paimon`, `PaimonS3`, `PaimonAzure`, `PaimonHDFS` et `PaimonLocal` avec prise en charge de l’Incremental read, reposant sur le suivi de progression des snapshots Keeper. Le mode incrémental ne renvoie que les nouvelles lignes depuis le dernier snapshot committed. Des lectures delta ciblées d’un snapshot sont disponibles via `paimon_target_snapshot_id`, ainsi que des limites de snapshots par requête via `max_consume_snapshots`. Le metadata refresh en arrière-plan est configurable avec `paimon_metadata_refresh_interval_sec`. Contrôlé par `allow_experimental_paimon_storage_engine`. [#102343](https://github.com/ClickHouse/ClickHouse/pull/102343) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Ajout d’un nouveau paramètre de Kafka table, `kafka_map_virtual_columns_on_write`. Lorsqu’il est activé, les colonnes nommées `_key`, `_timestamp`, `_headers.name` et `_headers.value` dans le schéma de la Kafka table sont produites comme clé, timestamp et headers correspondants du message Kafka lors de `INSERT`, et sont exclues du message payload. [#103243](https://github.com/ClickHouse/ClickHouse/pull/103243) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout des requêtes `SYSTEM PAUSE VIEW [db.]name` et `SYSTEM PAUSE VIEWS` pour les vues matérialisées actualisables. Contrairement à `SYSTEM STOP VIEW`, `SYSTEM PAUSE VIEW` n’interrompt pas l’actualisation en cours — l’actualisation déjà lancée est autorisée à aller jusqu’au bout, et seules les actualisations suivantes sont empêchées. L’annulation se fait via `SYSTEM START VIEW` ou `SYSTEM START VIEWS`, qui effacent désormais de manière uniforme les états arrêté et en pause. [#103252](https://github.com/ClickHouse/ClickHouse/pull/103252) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Ajout de la fonction `regexpPosition` (avec les alias compatibles PostgreSQL `regexpInstr` et `regexp_instr`) qui renvoie la position en octets de la N-ième correspondance regex dans une chaîne. Prend en charge le décalage de départ, le mode retour après correspondance, les flags regex et la sélection du groupe de capture. [#104172](https://github.com/ClickHouse/ClickHouse/pull/104172) ([Abhinav Agarwal](https://github.com/aagarwal-gtr)).
* Nouvelles fonctions `isPrime` et `isProbablePrime` pour les tests de primalité. `isPrime` renvoie un résultat exact pour les entiers non signés jusqu’à `UInt64`. `isProbablePrime` prend également en charge `UInt128` et `UInt256` ; pour ces types plus larges, `0` signifie assurément composé et `1` signifie probablement premier. Le deuxième argument facultatif de `isProbablePrime`, `rounds`, contrôle le niveau de confiance (plafonné à `256`) ; la valeur par défaut de `25` itérations borne le taux de faux positifs pour un composé aléatoire à moins de `10^-15`, et `isProbablePrime` peut être annulée. [#104234](https://github.com/ClickHouse/ClickHouse/pull/104234) ([Nihal Z. Miaji](https://github.com/nihalzp)). [#104639](https://github.com/ClickHouse/ClickHouse/pull/104639) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#104806](https://github.com/ClickHouse/ClickHouse/pull/104806) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `clear` et `/clear` effacent désormais le terminal dans les outils en ligne de commande clickhouse, au lieu d’être exécutés comme une requête erronée. [#104318](https://github.com/ClickHouse/ClickHouse/pull/104318) ([Tyler Hannan](https://github.com/tylerhannan)).
* La fonction de table `file` peut désormais accepter un `Array(String)` de chemins dans les requêtes `SELECT`. [#104442](https://github.com/ClickHouse/ClickHouse/pull/104442) ([Yue](https://github.com/niyue)).
* Ajout des colonnes `deterministic` et `higher_order` à la table `system.functions`. [#104479](https://github.com/ClickHouse/ClickHouse/pull/104479) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Ajout d’un paramètre facultatif de variante d’encodage à `bech32Encode` (`bech32` / `bech32m`) et d’un mode de décodage brut à `bech32Decode` pour l’encodage d’adresses non-SegWit (par ex. Cosmos SDK, Injective, Osmosis). [#98986](https://github.com/ClickHouse/ClickHouse/pull/98986) ([Yash ](https://github.com/Onyx2406)).
* Vous pouvez désormais écrire des données au format `AvroConfluent`, qui était auparavant limité à l’entrée. Cela permet de produire directement depuis ClickHouse des messages Avro encadrés par Confluent Schema Registry, par exemple lors de l’écriture vers Kafka. Le schéma est automatiquement enregistré dans le registre. Utilisez le nouveau paramètre `output_format_avro_confluent_subject` pour spécifier le nom du sujet. [#101935](https://github.com/ClickHouse/ClickHouse/pull/101935) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Ajout de la fonction `prettyPrintJSON` pour mettre en forme une chaîne JSON dans un format lisible par l’humain. Utile pour les tableaux de bord ou les rapports, où le formatage nécessitait auparavant une étape supplémentaire côté client. Clôt [#62523](https://github.com/ClickHouse/ClickHouse/issues/62523). [#102594](https://github.com/ClickHouse/ClickHouse/pull/102594) ([Dmitry Prokofyev](https://github.com/prokofyevDmitry)).
* Ajout de `STRING_AGG` comme alias insensible à la casse de `groupConcat`, pour la compatibilité avec PostgreSQL / le SQL standard. [#105125](https://github.com/ClickHouse/ClickHouse/pull/105125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les résultats de chaque sous-requête peuvent désormais être mis en cache indépendamment à l’aide de `SETTINGS use_query_cache = true` sur des sous-requêtes spécifiques, sans mettre en cache l’intégralité de la requête englobante. Un nouveau paramètre, `query_cache_for_subqueries = true`, permet de propager en masse `use_query_cache` à toutes les sous-requêtes. Remarque : `use_query_cache` sur la requête englobante ne se propage plus automatiquement aux sous-requêtes. [#99804](https://github.com/ClickHouse/ClickHouse/pull/99804) ([Vincent Voyer](https://github.com/vvo)).
* Ajout de la coloration syntaxique basée sur un lexer dans l’éditeur de requêtes de l’interface web (`play.html`), calquée sur les couleurs de `clickhouse-client`. [#105105](https://github.com/ClickHouse/ClickHouse/pull/105105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* Ajout d’une interface de terminal web expérimentale à `/webterminal`, qui fournit dans le navigateur une session interactive `clickhouse-client` via WebSocket. Désactivée par défaut ; activez-la avec le paramètre serveur `allow_experimental_webterminal`. Voir [ici](https://play.clickhouse.com/webterminal?user=play). [#100277](https://github.com/ClickHouse/ClickHouse/pull/100277) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105191](https://github.com/ClickHouse/ClickHouse/pull/105191) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#105059](https://github.com/ClickHouse/ClickHouse/pull/105059) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le moteur `Kafka2` (expérimental, avec un stockage des offsets basé sur Keeper) prend désormais en charge les requêtes `SELECT` directes ainsi que le paramètre `kafka_commit_on_select`. [#100276](https://github.com/ClickHouse/ClickHouse/pull/100276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les UDF `WASM` peuvent désormais convertir un plus grand nombre de types numériques : les entiers plus petits en entiers plus larges (par ex. `Int8` vers `UInt64`), et n’importe quel entier en nombre à virgule flottante (par ex. `Int32` vers `Float32`). [#100435](https://github.com/ClickHouse/ClickHouse/pull/100435) ([Vasily Chekalkin](https://github.com/bacek)).
* Prise en charge de la fonction `LIKE` dans la requête `DELETE FROM system.webassembly_modules`. [#104397](https://github.com/ClickHouse/ClickHouse/pull/104397) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Prise en charge des types géo pour `Iceberg`. [#103113](https://github.com/ClickHouse/ClickHouse/pull/103113) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout de la prise en charge des instructions préparées au serveur ArrowFlight SQL. [#103047](https://github.com/ClickHouse/ClickHouse/pull/103047) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Robustesse du parseur KQL (pour la prise en charge du langage Kusto) améliorée grâce à la préservation de la profondeur du parseur et des compteurs de retours arrière entre les étapes du parseur KQL, afin que les limites du parseur soient suivies de manière cohérente pour les requêtes KQL complexes. [#103528](https://github.com/ClickHouse/ClickHouse/pull/103528) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* Réutilisation du cache de métadonnées du footer Parquet lors de la lecture de fichiers Parquet locaux via la table function `file` ou le table engine `File`. Auparavant, le cache n’était consulté que pour les backends de stockage objet. [#104260](https://github.com/ClickHouse/ClickHouse/pull/104260) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Propagation de `ORDER BY ... LIMIT n` à travers les jointures `LEFT`/`RIGHT` lorsque la clé de tri ne référence que des colonnes du côté préservé par la jointure, ce qui limite le nombre de lignes que l’entrée de ce côté doit produire avant la jointure. Contrôlé par le nouveau paramètre `query_plan_top_k_through_join` (activé par défaut). [#104268](https://github.com/ClickHouse/ClickHouse/pull/104268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Activation par défaut des paramètres `use_top_k_dynamic_filtering` et `use_skip_indexes_for_top_k` afin d’améliorer les performances des requêtes `ORDER BY ... LIMIT N`. [#99537](https://github.com/ClickHouse/ClickHouse/pull/99537) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Restriction par défaut de `use_top_k_dynamic_filtering` aux colonnes de tri de longueur fixe, afin d’éviter des régressions sur les requêtes `ORDER BY <var-length-column> LIMIT N` où le coût de comparaison du seuil pour chaque ligne dépasse les gains d’E/S. Le comportement précédent reste disponible via le nouveau paramètre `use_top_k_dynamic_filtering_for_variable_length_types`. [#104216](https://github.com/ClickHouse/ClickHouse/pull/104216) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Utilisation de la fonctionnalité oversize-arena de `jemalloc` pour réduire les défauts de page. [#103958](https://github.com/ClickHouse/ClickHouse/pull/103958) ([Nikita Taranov](https://github.com/nickitat)).
* Limitation du nombre de streams actifs simultanément dans `UNION ALL` afin de réduire le pic d’utilisation mémoire. [#100176](https://github.com/ClickHouse/ClickHouse/pull/100176) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Légère optimisation du userspace page cache. [#100300](https://github.com/ClickHouse/ClickHouse/pull/100300) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Désormais, le userspace page cache est toujours meilleur que l’OS page cache.
* Les lectures à froid depuis le stockage objet via le userspace page cache (`use_page_cache_for_object_storage = 1`) sont désormais nettement plus rapides, car les défauts de cache consécutifs sont regroupés en une seule requête HTTP au lieu d’une requête par bloc `page_cache_block_size`. [#104230](https://github.com/ClickHouse/ClickHouse/pull/104230) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accélération de l’analyse d’index impliquant des conversions de type et l’application de fonctions. Closes [#55653](https://github.com/ClickHouse/ClickHouse/issues/55653). [#100366](https://github.com/ClickHouse/ClickHouse/pull/100366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accélération des requêtes volumineuses sur les tables `Merge` portant sur un très grand nombre de tables sous-jacentes. Closes [#32465](https://github.com/ClickHouse/ClickHouse/issues/32465). [#100369](https://github.com/ClickHouse/ClickHouse/pull/100369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suppression de la vtable des types de champs de paramètres, ce qui réduit d’environ 28x la taille de copie de `Settings` et améliore la localité du cache grâce à une organisation en tableaux typés pour tous les types de paramètres. [#102269](https://github.com/ClickHouse/ClickHouse/pull/102269) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout des paramètres `max_threads_min_free_memory_per_thread` et `max_insert_threads_min_free_memory_per_thread` pour réduire automatiquement le parallélisme des requêtes lorsque le serveur manque de mémoire libre. [#100383](https://github.com/ClickHouse/ClickHouse/pull/100383) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Réduction de l’utilisation mémoire sur les systèmes disposant de peu de mémoire (\< 4 GiB). [#100389](https://github.com/ClickHouse/ClickHouse/pull/100389) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de `OptimizeTrivialGroupByLimitPass`. Pour les requêtes triviales `SELECT ... FROM t GROUP BY k LIMIT n` (sans `HAVING`, `ORDER BY` ni window functions), l’analyzer définit désormais `max_rows_to_group_by = n + offset` avec `group_by_overflow_mode = 'any'`, de sorte que l’aggregation s’arrête dès que `n` clés distinctes ont été produites, au lieu de regrouper l’ensemble des données en entrée. Contrôlé par le nouveau paramètre `optimize_trivial_group_by_limit_query` (activé par défaut). [#104473](https://github.com/ClickHouse/ClickHouse/pull/104473) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Index min-max implicite au niveau du granule pour les virtual columns `_part_offset` et `_block_number`, y compris pour les projections. Permet un pruning rapide des granules en fonction des prédicats sur les colonnes virtuelles. [#103952](https://github.com/ClickHouse/ClickHouse/pull/103952) ([Mikhail Artemenko](https://github.com/Michicosun)). [#104746](https://github.com/ClickHouse/ClickHouse/pull/104746) ([Mikhail Artemenko](https://github.com/Michicosun)). [#105137](https://github.com/ClickHouse/ClickHouse/pull/105137) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Pour la famille de méthodes d’aggregation `prealloc_serialized`, précalcule les hash par ligne pendant la passe de sérialisation par batch et les utilise pour (a) éviter de recalculer le hash dans `emplaceKey`/`findKey` et (b) effectuer un software prefetch du bucket de la ligne suivante. Accélère l’aggregation multi-clés de chaînes/sérialisée en masquant la latence des défauts de cache de la hash table. [#104475](https://github.com/ClickHouse/ClickHouse/pull/104475) ([Amos Bird](https://github.com/amosbird)) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Query condition cache pour les tables `Iceberg`. [#102115](https://github.com/ClickHouse/ClickHouse/pull/102115) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Optimise `cramersV`, `cramersVBiasCorrected`, `theilsU` et `contingency` lorsqu’ils sont utilisés avec des window functions. Corrige [#83521](https://github.com/ClickHouse/ClickHouse/issues/83521). [#93384](https://github.com/ClickHouse/ClickHouse/pull/93384) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout d’une query optimization qui réécrit `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), N)` en `dictGet('dict', 'a', key)`, évitant de récupérer des dictionary attributes inutiles. Contrôlé par le paramètre `optimize_dictget_tuple_element` (activé par défaut). [#100186](https://github.com/ClickHouse/ClickHouse/pull/100186) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Active le buffering pour les étapes de tri sur l’initiateur pour les distributed queries avec tri. [#100661](https://github.com/ClickHouse/ClickHouse/pull/100661) ([Nikita Taranov](https://github.com/nickitat)).
* Amélioration des performances pour `partial_merge` JOIN. [#100945](https://github.com/ClickHouse/ClickHouse/pull/100945) ([Artem Zuikov](https://github.com/4ertus2)).
* Réduction légère de la surallocation mémoire dans `partial_merge` JOIN. [#100963](https://github.com/ClickHouse/ClickHouse/pull/100963) ([Artem Zuikov](https://github.com/4ertus2)).
* Optimise les allocations/deallocations en mettant en cache les paramètres de sampling au lieu de parcourir toute la hiérarchie du traqueur mémoire. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* Réduit le surcoût des allocations mémoire lors des multipart uploads S3 en préallouant les conteneurs internes de suivi. [#101799](https://github.com/ClickHouse/ClickHouse/pull/101799) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Ajoute un software prefetch dans la phase de probe du hash join afin de réduire la latence d’accès mémoire pour les grandes hash tables, contrôlé par le paramètre `enable_software_prefetch_in_join`. [#102444](https://github.com/ClickHouse/ClickHouse/pull/102444) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Optimisation du layout de `MemoryTracker`, avec un gain de performances d’environ 25 %. [#103464](https://github.com/ClickHouse/ClickHouse/pull/103464) ([Azat Khuzhin](https://github.com/azat)).
* Réécriture des prédicats `coalesce(a, b, ...) <op> const` et `ifNull(a, b) <op> const` avant l’analyse des index, afin que la clé primaire par colonne et les skip indexes sur chaque argument puissent élaguer les granules. Contrôlé par le nouveau paramètre `allow_key_condition_coalesce_rewrite` (activé par défaut). [#103468](https://github.com/ClickHouse/ClickHouse/pull/103468) ([Manuel](https://github.com/raimannma)).
* Amélioration significative des performances des requêtes lors de la lecture de catalogs Iceberg avec de gros fichiers de métadonnées JSON grâce à l’optimisation du traitement des slashs échappés. [#103998](https://github.com/ClickHouse/ClickHouse/pull/103998) ([Mohaidoss](https://github.com/mohaidoss)).
* Évite le surcoût de l’index uncompressed cache lorsque le cache est désactivé (paramètre serveur `index_uncompressed_cache_size = 0`, valeur par défaut). [#104063](https://github.com/ClickHouse/ClickHouse/pull/104063) ([Michael Kolupaev](https://github.com/al13n321)).
* Correction des requêtes `ORDER BY ... LIMIT` avec une petite limite qui lisaient un nombre excessif de granules lorsqu’elles étaient combinées avec un filtre `WHERE` peu sélectif. Auparavant, tout filtre au-dessus d’une lecture dans l’ordre désactivait le découpage des tâches par plage de marques, de sorte que le pipeline ne pouvait pas annuler entre les granules et lisait la part entière pour chaque flux. [#104112](https://github.com/ClickHouse/ClickHouse/pull/104112) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction de l’absence de réutilisation du cache des tailles de hash table après réordonnancement des côtés du JOIN. [#104131](https://github.com/ClickHouse/ClickHouse/pull/104131) ([Nikita Taranov](https://github.com/nickitat)).
* Lorsque `fsync_after_insert` est activé, le fsync des fichiers de part est désormais effectué en parallèle via l’IO thread pool, ce qui accélère la finalisation des insertions sur les wide tables. Le chargement complet de ClickBench `hits` est environ 22 % plus rapide. [#104137](https://github.com/ClickHouse/ClickHouse/pull/104137) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Vectorisation de `find_first_symbols`, `find_first_not_symbols`, `find_last_symbols_or_null`, `find_last_not_symbols_or_null` et `splitInto` sur AArch64 à l’aide de NEON. Auparavant, ces helpers n’avaient un chemin SIMD que sur x86 (SSE2 / SSE4.2) et retombaient sur une boucle scalaire sur ARM. Accélère le parsing TSV d’environ 2x, les fonctions d’URL et `splitByChar` d’environ 1,3x sur le dataset ClickBench `hits` ; le parsing de JSON très denses (cadence de champs inférieure à 16 octets) régresse légèrement, conformément au compromis SSE2 existant. [#104228](https://github.com/ClickHouse/ClickHouse/pull/104228) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La lecture de données via une colonne `ALIAS` triviale (par ex. `some_alias['key']` où `some_alias ALIAS m`) emprunte désormais le même chemin de lecture par sous-colonne qu’une référence directe à la colonne sous-jacente, rétablissant d’importantes économies d’E/S pour les colonnes aliasées `Map`, `Array`, `Tuple` et `Nullable`. [#104245](https://github.com/ClickHouse/ClickHouse/pull/104245) ([Raúl Marín](https://github.com/Algunenano)).
* Réduction de la contention sur les verrous dans le chemin de lecture asynchrone du système de fichiers distant en rendant `AsyncReadCounters` lock-free par requête. [#104374](https://github.com/ClickHouse/ClickHouse/pull/104374) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Plan de requête légèrement amélioré pour le scan ordonné des projections. [#103723](https://github.com/ClickHouse/ClickHouse/pull/103723) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Extension de `optimizeUseNormalProjections` pour gérer également un cas spécifique où rien n’était filtré, mais où la clé de tri de la projection peut supprimer l’étape de tri du plan de requête. [#104680](https://github.com/ClickHouse/ClickHouse/pull/104680) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Permet au sucre syntaxique `json.path[]` et aux indications de type explicites de fonctionner correctement sur des paths `JSON` typés. [#99179](https://github.com/ClickHouse/ClickHouse/pull/99179) ([Pavel Kruglov](https://github.com/Avogar)).
* Optimise `json.path[N].nested.path` (qui se développe en `tupleElement(tupleElement(json.path[N], 'nested'), 'path')`) en `json.path[].nested.path[N]`, ce qui permet de lire beaucoup moins de données. [#99802](https://github.com/ClickHouse/ClickHouse/pull/99802) ([Pavel Kruglov](https://github.com/Avogar)).
* Optimise les vérifications d’accès `SHOW TABLES` dans `system.parts` en déplaçant les vérifications de grants au niveau de la base de données hors de la boucle sur les tables. [#100860](https://github.com/ClickHouse/ClickHouse/pull/100860) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Supprime une vérification d’accès `SHOW TABLES` redondante par table dans la voie rapide `SELECT name` / `SELECT database, name` de `system.tables`. [#100881](https://github.com/ClickHouse/ClickHouse/pull/100881) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Active la compilation JIT sur macOS. [#100947](https://github.com/ClickHouse/ClickHouse/pull/100947) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Évite de différer la policy de ligne après `FINAL` lorsqu’elle dépend uniquement des colonnes de clé de tri et qu’elle est déterministe, et évite aussi le report `PREWHERE` correspondant qu’elle imposait dans ce cas. [#102884](https://github.com/ClickHouse/ClickHouse/pull/102884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajoute la prise en charge de `hasAny` et `hasAll` comme prédicats de filtre dans les index de texte. [#103266](https://github.com/ClickHouse/ClickHouse/pull/103266) ([Anton Popov](https://github.com/CurtizJ)).
* Redirige l’état du tas MergeTree de longue durée de vie (métadonnées par part et par table) vers une arena jemalloc dédiée, exposée via les métriques asynchrones `jemalloc.mergetree_arena.*`. Réduit la fragmentation de l’arena par défaut en régime stabilisé et évite que les survivants par part n’immobilisent des pages qui pourraient autrement expirer. [#104136](https://github.com/ClickHouse/ClickHouse/pull/104136) ([Raúl Marín](https://github.com/Algunenano)).
* Améliore la gestion des timeouts du client ZooKeeper sous forte charge lorsque de nombreuses requêtes sont pipelinées sur une seule session. Le client ZooKeeper utilise désormais un timeout basé sur la progression : tant que des données sont reçues du serveur dans `session_timeout_ms`, l’attente est prolongée. Un plafond strict de `3 * session_timeout_ms` par requête continue de borner la latence côté appelant. Ferme [#100466](https://github.com/ClickHouse/ClickHouse/issues/100466). [#104351](https://github.com/ClickHouse/ClickHouse/pull/104351) ([Antonio Andelic](https://github.com/antonio2368)).
* Déplace les indicateurs de trace par événement dans un tableau séparé et les alloue à la demande, réduisant ainsi le surcoût du tracing `ProfileEvents`. [#105030](https://github.com/ClickHouse/ClickHouse/pull/105030) ([Azat Khuzhin](https://github.com/azat)).
* Ajoute `compareTrackAt` pour `ColumnDecimal`, ce qui améliore les performances de comparaison des colonnes `Decimal`. [#105110](https://github.com/ClickHouse/ClickHouse/pull/105110) ([Artem Zuikov](https://github.com/4ertus2)).
* Ajoute une implémentation SIMD de `MD5` (`AVX2` / `AVX512`) qui calcule le hash de plusieurs entrées en parallèle, améliorant ainsi le débit. [#105161](https://github.com/ClickHouse/ClickHouse/pull/105161) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="267-improvement">
  #### Amélioration
</div>

* Amélioration de la sortie d’aide de toutes les applications ClickHouse : `--help` renvoie désormais systématiquement le code de sortie `0`, affiche sa sortie sur `stdout`, et `clickhouse --help` au niveau racine liste toutes les sous-commandes. Ajout d’une option `--no-sudo` pour `clickhouse start` / `restart` (utile dans Docker), ainsi que d’une sous-commande `clickhouse help`. Suite de [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) par @qoega. [#98148](https://github.com/ClickHouse/ClickHouse/pull/98148) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La valeur par défaut de `input_format_column_name_matching_mode` passe de `match_case` à `auto`. Les formats d’entrée qui font correspondre les noms de colonnes en entrée au schéma de la table (`JSONEachRow`, `CSVWithNames`, `JSONColumns`, `BSONEachRow`, `RowBinaryWithNames`, etc.) tentent désormais d’abord une correspondance sensible à la casse, puis basculent vers une correspondance insensible à la casse si aucune correspondance sensible à la casse n’est trouvée. Le comportement strict précédent est conservé sous `compatibility`. [#104320](https://github.com/ClickHouse/ClickHouse/pull/104320) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de `STDDEV` comme alias insensible à la casse de `stddevSamp` pour la compatibilité PostgreSQL/standard SQL. [#105120](https://github.com/ClickHouse/ClickHouse/pull/105120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de `array_to_string` comme alias insensible à la casse de `arrayStringConcat` pour la compatibilité PostgreSQL. [#105121](https://github.com/ClickHouse/ClickHouse/pull/105121) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de `unnest` comme alias insensible à la casse de `arrayJoin` pour la compatibilité PostgreSQL (forme d’appel de fonction). [#105124](https://github.com/ClickHouse/ClickHouse/pull/105124) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La barre de progression de `clickhouse-client` affiche désormais, à côté de la RAM, les données temporaires utilisées sur disque (par ex. pour le tri externe, l’agrégation ou JOIN), avec en plus une ventilation par hôte pour les requêtes distribuées. [#105190](https://github.com/ClickHouse/ClickHouse/pull/105190) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de `system.predicate_statistics_log`, un nouveau journal échantillonné de la sélectivité des filtres de prédicat et de l’élagage des granules d’index MergeTree par requête. Désactivé par défaut ; à activer via le paramètre serveur `predicate_statistics_sample_rate`. Nécessaire pour les recommandations automatiques d’index et de projections. [#98727](https://github.com/ClickHouse/ClickHouse/pull/98727) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Autorise l’omission du shard local lorsqu’une table est manquante et que `skip_unavailable_shards` est activé. [#100141](https://github.com/ClickHouse/ClickHouse/pull/100141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’avertissements au démarrage (visibles dans `system.warnings`) lorsqu’un ensemble mdraid Linux est en cours de resynchronisation ou se trouve dans un état dégradé, car ces deux situations peuvent affecter les performances des E/S disque ou indiquer des défaillances de disque. [#100941](https://github.com/ClickHouse/ClickHouse/pull/100941) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les UDFs WASM apparaissent désormais dans `system.functions` avec les colonnes `origin` (`WasmUserDefined`), `syntax`, `arguments` et `returned_value` correctement renseignées à partir de leurs métadonnées de type ClickHouse. Auparavant, elles étaient soit absentes, soit listées en double avec une origine incorrecte. [#101053](https://github.com/ClickHouse/ClickHouse/pull/101053) ([Vasily Chekalkin](https://github.com/bacek)).
* La fonction de table `generate_series` prend désormais en charge des valeurs de pas négatives pour générer des séquences décroissantes, par ex. `SELECT * FROM generate_series(99, 0, -1)`. [#101056](https://github.com/ClickHouse/ClickHouse/pull/101056) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des exceptions `Context has expired` levées par certaines fonctions (`dotProduct`, `formatRow`, `structureToCapnProtoSchema`/`structureToProtobufSchema`, fonctions définies par l’utilisateur) lorsqu’elles sont utilisées dans des chemins d’exécution différée, tels que les expressions `DEFAULT`/`MATERIALIZED` et les paramètres du moteur de table, en veillant à ce que ces fonctions conservent une référence forte au contexte lorsque nécessaire. [#101109](https://github.com/ClickHouse/ClickHouse/pull/101109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’erreurs logiques `Cache limits violated` intempestives sur des priorités créées avec des limites à zéro (comme la priorité du filesystem cache par requête utilisée lorsque `enable_filesystem_query_cache_limit` est activé). [#101428](https://github.com/ClickHouse/ClickHouse/pull/101428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Détection automatique de la région pour les endpoints `s3express`. [#101520](https://github.com/ClickHouse/ClickHouse/pull/101520) ([Pradeep Chhetri](https://github.com/chhetripradeep)).
* Prise en charge des identifiants de champ pour les data files lors des écritures `Iceberg`. Clôt [#102322](https://github.com/ClickHouse/ClickHouse/issues/102322). [#102362](https://github.com/ClickHouse/ClickHouse/pull/102362) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Le panneau de gauche de la web UI (`play.html`) défile désormais indépendamment, reste visible lorsque la page défile, et un clic sur une table fait défiler jusqu’à la zone de requête. [#102498](https://github.com/ClickHouse/ClickHouse/pull/102498) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Permet d’ouvrir l’interface Play dans un nouvel onglet via Ctrl/Cmd/Shift+clic ou clic du milieu sur le logo ClickHouse dans le panneau de gauche. [#102501](https://github.com/ClickHouse/ClickHouse/pull/102501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nouvelles metrics pour suivre la mémoire utilisée par les primary keys des projections et l’index granularity des projections sur l’ensemble des tables. [#102587](https://github.com/ClickHouse/ClickHouse/pull/102587) ([Narasimha Pakeer](https://github.com/npakeer)).
* Application de `max_network_bandwidth_for_user` et `max_network_bandwidth_for_all_users` aux lectures/écritures sur remote filesystem. [#103080](https://github.com/ClickHouse/ClickHouse/pull/103080) ([Azat Khuzhin](https://github.com/azat)).
* Amélioration de la résilience des backups lorsque les Refreshable Materialized Views sont constamment rafraîchies, en prenant les décisions à partir de l’état instantané des tables plutôt que d’un état global. [#103384](https://github.com/ClickHouse/ClickHouse/pull/103384) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `SELECT * FROM system.databases` répertorie désormais toujours les databases du data lake catalog, indépendamment du paramètre `show_data_lake_catalogs_in_system_tables`. Auparavant, elles étaient masquées par défaut, ce qui était incohérent avec `SHOW DATABASES`, qui les affichait toujours. [#103444](https://github.com/ClickHouse/ClickHouse/pull/103444) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Alignement de la valeur par défaut du server setting `concurrent_threads_soft_limit_ratio_to_cores` dans le code sur la valeur fournie dans `config.xml` (`2`), afin que le scheduler de threads concurrent `max_min_fair` par défaut limite les threads de query processing à 2x le nombre de cœurs dès le départ, même lorsque le `config.xml` fourni n’est pas utilisé. [#103446](https://github.com/ClickHouse/ClickHouse/pull/103446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Robustesse améliorée du sanitizer dans le parser et dans certains cas limites des fonctions de chaîne, grâce à la gestion des entrées vides dans `getURLScheme`, à l’évitement de l’arithmétique sur pointeur nul dans les vérifications `max_query_size` de `Lexer::nextToken`, et à l’arrêt anticipé de l’évaluation de sous-séquence UTF-8 sur des haystacks vides avant le décodage. [#103489](https://github.com/ClickHouse/ClickHouse/pull/103489) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Amélioration de la justesse de l’inférence de monotonie pour `divide(0, x)` et `intDiv(0, x)` : auparavant, ces fonctions étaient systématiquement considérées comme monotones, alors que `0 / x` n’est pas monotone sur tout intervalle incluant 0, car `0 / 0` n’est pas défini (`NaN`/`Inf` pour `divide`, exception de division par zéro pour `intDiv`). Cette hypothèse erronée amenait `KeyCondition::applyMonotonicFunctionsChainToRange` à produire des intervalles avec `left > right`, ce qui déclenchait une `LOGICAL_ERROR` `Invalid binary search result in MergeTreeSetIndex` dans les builds de débogage lorsqu’une expression `IN` / `NOT IN` sur la clé primaire encapsulait la clé dans `divide(0, key)` ou `intDiv(0, key)`. Les builds de release n’étaient pas affectés — l’assertion est conditionnée par `#ifndef NDEBUG`. [#103621](https://github.com/ClickHouse/ClickHouse/pull/103621) ([Groene AI](https://github.com/groeneai)).
* Remplacement des métriques asynchrones `HTTPConnectionPool*TCP{Rcv,Snd}BufBytes_{p50,p75,p90,p95}` par un histogramme à buckets `http_pool_tcp_buf_bytes` (labels `group`, `direction`) dans `system.histogram_metrics`. Les métriques asynchrones de total par groupe sont conservées. [#103704](https://github.com/ClickHouse/ClickHouse/pull/103704) ([Sema Checherinda](https://github.com/CheSema)).
* Les paramètres du serveur `{disk,storage,http}_connections_{rcvbuf,sndbuf}` sont désormais indiqués comme modifiables sans redémarrage dans `system.server_settings`. Leurs valeurs peuvent être mises à jour via `SYSTEM RELOAD CONFIG` ; le mécanisme d’application à l’exécution était déjà en place depuis [#100478](https://github.com/ClickHouse/ClickHouse/issues/100478). [#103772](https://github.com/ClickHouse/ClickHouse/pull/103772) ([Sema Checherinda](https://github.com/CheSema)).
* Ajout de la prise en charge des symboles résolus (`Array(String)`) dans `flameGraph`. [#103816](https://github.com/ClickHouse/ClickHouse/pull/103816) ([Azat Khuzhin](https://github.com/azat)).
* Le client CLI peut désormais spécifier `<rainbow_parentheses>false</rainbow_parentheses>` dans sa config, dans les environnements où les couleurs du terminal nuisent à la lisibilité des parenthèses (de même, `clickhouse format` prend désormais en charge `--no_rainbow_parentheses`). [#103851](https://github.com/ClickHouse/ClickHouse/pull/103851) ([Larry Snizek](https://github.com/larry-cdn77)).
* Correction de la recherche UTF-8 insensible à la casse dans `MultiVolnitsky` en annulant les insertions partielles de `putNGram` en cas d’échec et en basculant les needles en échec vers des searchers de repli, afin d’éviter un état incohérent. [#103864](https://github.com/ClickHouse/ClickHouse/pull/103864) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Implémentation de `sched_getcpu` via `rseq` TLS dans musl avec compatibilité glibc. [#104016](https://github.com/ClickHouse/ClickHouse/pull/104016) ([Azat Khuzhin](https://github.com/azat)).
* Une refreshable materialized view Replicated en mode APPEND ne sera plus rafraîchie deux fois si la connexion à ZooKeeper est brièvement perdue pendant le rafraîchissement. [#104051](https://github.com/ClickHouse/ClickHouse/pull/104051) ([Michael Kolupaev](https://github.com/al13n321)).
* Les tables Distributed sans liste de colonnes explicite peuvent désormais valider les clés de sharding par rapport à la structure inférée de la table distante. [#104111](https://github.com/ClickHouse/ClickHouse/pull/104111) ([Yue](https://github.com/niyue)).
* Correction du REST catalog avec le path `Azure` `abfss`. [#104120](https://github.com/ClickHouse/ClickHouse/pull/104120) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Les paramètres d’authentication `role_arn` et `role_session_name` sont désormais pris en compte dans le client de snapshot S3 de Keeper, ce qui permet aux téléversements de snapshots d’utiliser une authentication STS basée sur `AssumeRole`. [#104140](https://github.com/ClickHouse/ClickHouse/pull/104140) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une fuite de mémoire lors de l’exécution de requêtes avec des CTE `MATERIALIZED`. [#104153](https://github.com/ClickHouse/ClickHouse/pull/104153) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’exception `lowerUTF8` / `upperUTF8` lors du traitement de grands jeux de données non ASCII (p. ex. lors de la création d’index de texte), lorsque le tampon de sortie accumulé dépasse 2 GiB ; rejette les lignes individuelles excessivement longues avec un message d’erreur clair. [#104229](https://github.com/ClickHouse/ClickHouse/pull/104229) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Renforce le chargement des statistiques de colonnes de MergeTree face aux défaillances d’E/S transitoires afin d’éviter la désactivation permanente des optimisations fondées sur les statistiques pour les parts affectées. [#104372](https://github.com/ClickHouse/ClickHouse/pull/104372) ([zoomxi](https://github.com/zoomxi)).
* `INSERT INTO ... SELECT FROM input(...)` ne nécessite plus le grant `CREATE TEMPORARY TABLE`. [#104470](https://github.com/ClickHouse/ClickHouse/pull/104470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute un nouveau paramètre MergeTree `concurrent_part_removal_threshold_for_remote_disk` (par défaut `16`), utilisé à la place de `concurrent_part_removal_threshold` lorsqu’au moins une part en cours de suppression est stockée sur un disk distant. Le seuil précédent de `100` pouvait faire en sorte que `DROP TABLE` et d’autres opérations de suppression de parts sur des backends d’object storage restent bloqués pendant des dizaines de secondes, car les suppressions étaient effectuées en série alors que chacune correspond à un aller-retour réseau distinct. Le nouveau paramètre fait emprunter bien plus tôt le chemin de suppression en parallèle sur le stockage distant, tout en laissant inchangé le comportement sur disk local. [#104676](https://github.com/ClickHouse/ClickHouse/pull/104676) ([Groene AI](https://github.com/groeneai)).
* Le nouveau paramètre `defer_partition_pruning_after_final` (par défaut `1`) permet de désactiver le comportement introduit en 26.3 consistant à ne pas appliquer le partition pruning sous `FINAL`. Définissez-le sur `0` pour rétablir le partition pruning d’avant la version 26.3 — nettement plus rapide sur les workloads de journaux d’événements où les lignes ayant la même PK ne peuvent pas s’étendre sur plusieurs partitions. `compatibility = '26.2'` le bascule automatiquement à `0`. [#104705](https://github.com/ClickHouse/ClickHouse/pull/104705) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige `intExp2`, qui renvoyait des résultats erronés pour les entrées hors plage (shifts `>= 64` sous JIT, et entiers dont la valeur absolue dépasse `INT_MAX` sur les deux chemins de code). [#105054](https://github.com/ClickHouse/ClickHouse/pull/105054) ([Raúl Marín](https://github.com/Algunenano)).
* Met entre guillemets les arguments shell construits à partir des options CLI et des entrées analysées dans `clickhouse install` et `clickhouse git-import`, afin que les paths, les noms d’utilisateur/groupe et les hashes de commit contenant des espaces ou des métacaractères shell soient correctement gérés. [#105232](https://github.com/ClickHouse/ClickHouse/pull/105232) ([Raúl Marín](https://github.com/Algunenano)).
* Le table engine `Alias` n’est désormais plus Experimental et est disponible sans le paramètre `allow_experimental_alias_table_engine`. [#103488](https://github.com/ClickHouse/ClickHouse/pull/103488) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute l’option `--queries-format` à `clickhouse-benchmark` pour choisir entre le format d’entrée par défaut, avec échappement des tabulations et une requête par ligne (`tsv`), et l’analyse de l’entrée standard comme un script contenant plusieurs requêtes séparées par `;` (`script`). [#99972](https://github.com/ClickHouse/ClickHouse/pull/99972) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Les opérateurs de Tuple appliqués élément par élément `tuplePlus`, `tupleMinus`, `tupleMultiply`, `tupleDivide`, `tupleModulo`, `tupleIntDiv` et `tupleIntDivOrZero` sont désormais variadiques et acceptent deux tuples ou plus de même taille, avec une application élément par élément selon un left-fold. Auparavant, ils n’acceptaient que deux arguments exactement. [#104659](https://github.com/ClickHouse/ClickHouse/pull/104659) ([Aruj Bansal](https://github.com/arujbansal)).
* Ajout d’une nouvelle interface web intégrée à `/processors-profile` qui visualise sous forme de carte de chaleur le pipeline de toute requête `SELECT` passée, à partir de `system.query_log` et `system.processors_profile_log`. Chaque processeur est coloré en fonction de son `elapsed_us` et affiche, au survol, des statistiques par processeur (lignes, octets, temps d’attente). [#104614](https://github.com/ClickHouse/ClickHouse/pull/104614) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Le réglage `query_plan_use_logical_join_step` (et son alias `query_plan_use_new_logical_join_step`) est désormais obsolète et n’a plus aucun effet ; l’étape de jointure logique est désormais toujours utilisée. [#104017](https://github.com/ClickHouse/ClickHouse/pull/104017) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Le champ de saisie `user` dans `play.html` et les autres pages web intégrées (`dashboard.html`, `jemalloc.html`, `merges.html`, `binary.html`, `webterminal.html`) n’est plus prérempli avec le texte littéral `default`. Il affiche désormais un texte indicatif `user` et reste vide par défaut. Lorsqu’il est laissé vide, la page n’envoie pas de paramètre d’URL `user=` (et le JSON d’authentification de WebTerminal omet le champ `user`) ; le serveur applique donc son comportement habituel de repli vers l’utilisateur `default`, et les identifiants HTTP fournis par d’autres canaux (`X-ClickHouse-User`, HTTP Basic, configuration `<handler><user>` propre au handler) ne sont plus écrasés. [#105254](https://github.com/ClickHouse/ClickHouse/pull/105254) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Lecteur `ORC` : dissociation de la lecture basée sur les offsets (`readBigAt`) de `use_prefetch`, afin que les données encodées EC sur `HDFS` puissent être lues correctement même lorsque `use_prefetch = false` (par exemple par Gluten). [#103348](https://github.com/ClickHouse/ClickHouse/pull/103348) ([zhanglistar](https://github.com/zhanglistar)).
* Les fichiers téléchargés depuis `play.html` au format `CSVWithNames` utilisent désormais l’extension `.csv`. [#103737](https://github.com/ClickHouse/ClickHouse/pull/103737) ([JackFielding](https://github.com/JackFielding)).
* Validation des entrées renforcée pour le catalogue BigLake. [#105117](https://github.com/ClickHouse/ClickHouse/pull/105117) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Corrige le formatage incohérent en mémorisant si une expression était entre parenthèses. [#92340](https://github.com/ClickHouse/ClickHouse/pull/92340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la justesse de la comparaison entre les types Decimal et Float. [#94293](https://github.com/ClickHouse/ClickHouse/pull/94293) ([zoomxi](https://github.com/zoomxi)).
* Autorise les arguments positionnels dans les requêtes distribuées. [#94359](https://github.com/ClickHouse/ClickHouse/pull/94359) ([simonmichal](https://github.com/simonmichal)).
* Corrige un échec d’assertion dans `DatabaseCatalog::updateDependencies` lors de la suppression puis de la recréation d’une vue matérialisée portant le même nom ; corrige également la perte silencieuse des dépendances de vue lors de `RENAME TABLE` ou `EXCHANGE TABLES` lorsque les dépendances référentielles étaient vides. [#98779](https://github.com/ClickHouse/ClickHouse/pull/98779) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un arrêt du serveur (échec d’assertion dans `DatabaseCatalog::getTableImpl`) qui survenait lors de la création d’une table via `ON CLUSTER` avec un UUID identique à celui d’une base de données existante. [#98861](https://github.com/ClickHouse/ClickHouse/pull/98861) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Corrige l’utilisation des skip indexes lors de la lecture des données (avec le paramètre `use_skip_indexes_on_data_read` activé) et des patch parts existantes créées par des lightweight updates. [#99543](https://github.com/ClickHouse/ClickHouse/pull/99543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’exception "Not-ready Set" lorsqu’un filtre avec `IN (subquery)` est déplacé vers PREWHERE par l’optimiseur de requêtes. [#100375](https://github.com/ClickHouse/ClickHouse/pull/100375) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’erreur "Cannot find column" lors de l’utilisation conjointe de `ADD COLUMN` et `RENAME COLUMN` dans une même instruction `ALTER TABLE`. [#100387](https://github.com/ClickHouse/ClickHouse/pull/100387) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les vues mêlant les opérateurs `UNION` et `INTERSECT`/`EXCEPT`, qui renvoyaient des résultats incorrects après `DETACH`/`ATTACH` ou un redémarrage du serveur. [#100390](https://github.com/ClickHouse/ClickHouse/pull/100390) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’exception "Trying to execute PLACEHOLDER action" qui pouvait survenir lors de tests de charge avec l’AST fuzzer lorsqu’une sous-requête corrélée apparaissait dans une clause IN. [#100398](https://github.com/ClickHouse/ClickHouse/pull/100398) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception de type logical error lors de l’insertion dans une table Iceberg avec une colonne `Date` partitionnée par les transformations `year`, `month` ou `day`. [#100404](https://github.com/ClickHouse/ClickHouse/pull/100404) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’utilisation d’un skip index avec des données incompatibles après qu’un `ALTER TABLE MODIFY COLUMN` a modifié le type de la colonne, ce qui pouvait provoquer des plantages du serveur dans les builds avec sanitizer ou des résultats de requête incorrects. [#100526](https://github.com/ClickHouse/ClickHouse/pull/100526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une fuite d’identifiants dans `query_log` pour les table functions `paimonCluster`, `paimonS3Cluster`, `paimonAzureCluster` et `deltaLakeS3`. [#100529](https://github.com/ClickHouse/ClickHouse/pull/100529) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige le risque que `DROP TABLE` sur des tables du moteur Kafka reste bloqué indéfiniment en raison d’un interblocage dans `rd_kafka_consumer_close`. [#100604](https://github.com/ClickHouse/ClickHouse/pull/100604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Remplace la liste `source_table_engines` codée en dur par une résolution à l’exécution via `StorageFactory` et `DatabaseFactory`. Ajoute `source_access_type` à `DatabaseFactory::EngineFeatures` afin que `CREATE DATABASE` avec des moteurs source (PostgreSQL, MySQL, S3, etc.) exige les mêmes droits d’accès aux sources que `CREATE TABLE`. Corrige le cas où `GRANT TABLE ENGINE ON *` échouait avec `table_engines_require_grant=false`. Clôt [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#100746](https://github.com/ClickHouse/ClickHouse/pull/100746) ([pufit](https://github.com/pufit)).
* Corrige un crash du serveur lors de la lecture d’une table dont la colonne `ALIAS` contenait une sous-requête corrélée imbriquée dans un appel de fonction (par ex. `ALIAS toString(intDivOrZero(x, (SELECT ...)))`). `CREATE TABLE` et `ALTER TABLE` rejettent désormais toute sous-requête, à n’importe quelle profondeur, dans les expressions de colonne `DEFAULT` / `ALIAS` / `MATERIALIZED`, avec `THERE_IS_NO_DEFAULT_VALUE`. Auparavant, la validation superficielle acceptait les sous-requêtes imbriquées, si bien que le cas corrélé provoquait un crash à la lecture et que le cas imbriqué non corrélé semblait fonctionner, mais pouvait entraîner un comportement inattendu ; les deux sont désormais rejetés au moment du DDL. [#100753](https://github.com/ClickHouse/ClickHouse/pull/100753) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur (`Logical error: Bad cast from type DB::FunctionNode to DB::ColumnNode`) pouvant se produire lors de l’utilisation de requêtes avec des sous-requêtes corrélées sur des tables ayant des définitions `CONSTRAINT ... ASSUME`, lorsque les paramètres `optimize_substitute_columns` et `convert_query_to_cnf` sont activés. [#100756](https://github.com/ClickHouse/ClickHouse/pull/100756) ([Groene AI](https://github.com/groeneai)).
* Corrige une exception pouvant se produire lors de l’insertion d’une ligne dans une colonne JSON, lorsque la ligne introduisait un nouveau champ dynamique en parallèle d’un champ typé avec une valeur incompatible, puis que la colonne était utilisée comme clé de GROUP BY. [#100758](https://github.com/ClickHouse/ClickHouse/pull/100758) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige le contournement silencieux de l’ordonnancement des E/S des workloads pour les écritures vers S3 / le stockage objet passant par le chemin `DiskObjectStorageTransaction` (utilisé par les disques `s3_with_keeper` et explicitement lorsque `use_fake_transaction=false`). Auparavant, les écritures INSERT dans des tables MergeTree sur ces disques ignoraient la limitation `CREATE RESOURCE` / `CREATE WORKLOAD`, car le lien vers la ressource n’était jamais injecté dans `WriteSettings` pour le chemin d’écriture transactionnel. [#100777](https://github.com/ClickHouse/ClickHouse/pull/100777) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige une collision du cache de schéma partagé entre `Protobuf` et `ProtobufList` : lire d’abord un message au format `FORMAT Protobuf`, puis au format `FORMAT ProtobufList`, pouvait échouer, car `ProtobufList` forçait le schéma mis en cache vers sa forme enveloppe. `ProtobufList` retombe désormais sur le type de message mis en cache lorsqu’aucun schéma d’enveloppe n’est disponible. [#100849](https://github.com/ClickHouse/ClickHouse/pull/100849) ([Callum Cooper](https://github.com/callumc34)).
* Corrige un heap-buffer-overflow dans le pont Rust CXX dû à une incompatibilité d’ABI de `std::exception`. [#100931](https://github.com/ClickHouse/ClickHouse/pull/100931) ([Azat Khuzhin](https://github.com/azat)).
* `FunctionVariantAdaptor` lève désormais `ILLEGAL_TYPE_OF_ARGUMENT` lorsque toutes les alternatives `Variant` sont incompatibles avec une fonction, au lieu de renvoyer silencieusement `Nullable(Nothing)`. Auparavant, un prédicat `WHERE function(variant_col)` dans lequel aucun type alternatif n’était compatible renvoyait 0 ligne sans erreur, tandis que le contexte `SELECT` équivalent levait déjà correctement une erreur. [#100939](https://github.com/ClickHouse/ClickHouse/pull/100939) ([Vasily Chekalkin](https://github.com/bacek)).
* `TRUNCATE ALL TABLES` n’échoue plus lorsque la base de données contient des vues. [#100943](https://github.com/ClickHouse/ClickHouse/pull/100943) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’optimisation `optimize_rewrite_array_exists_to_has` afin de gérer correctement les cas d’incompatibilité de type (par ex. Date vs String) et la réactive par défaut. [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la priorité des paramètres S3 afin que les paramètres de disque de `storage_configuration` remplacent la section globale `<s3>`, et que les paramètres au niveau utilisateur/profil/requête remplacent les deux. [#100975](https://github.com/ClickHouse/ClickHouse/pull/100975) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la sérialisation sparse qui perdait le signe du zéro négatif (-0.0) pour les colonnes BFloat16, Float32 et Float64. [#100983](https://github.com/ClickHouse/ClickHouse/pull/100983) ([Takumi Hara](https://github.com/takumihara)).
* Corrige deux bugs dans l’analyseur de géométrie WKT utilisé lors de la lecture de fichiers GeoParquet et Arrow encodés en WKT : les géométries `MULTILINESTRING` étaient incorrectement analysées comme `Polygon` (ce qui provoquait une exception pour les typed columns et une corruption silencieuse des données pour les colonnes `Geometry` mixtes), et une chaîne WKT mal formée sans mot-clé de type déclenchait un comportement indéfini au lieu d’une erreur propre. [#100997](https://github.com/ClickHouse/ClickHouse/pull/100997) ([Vasily Chekalkin](https://github.com/bacek)).
* Corrige les requêtes `grouping`/`GROUPING SETS` sur des tables Distributed avec un seul shard qui échouaient avec "Method executeImpl is not supported for 'grouping' function". [#101030](https://github.com/ClickHouse/ClickHouse/pull/101030) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `LOGICAL_ERROR` "Column identifier is already registered" dans le planificateur, qui pouvait survenir lorsque la même expression de table était traitée plusieurs fois. [#101048](https://github.com/ClickHouse/ClickHouse/pull/101048) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’exception LOGICAL\_ERROR "Column identifier is already registered" lorsque le paramètre `additional_result_filter` est utilisé avec des requêtes UNION ou EXCEPT. [#101051](https://github.com/ClickHouse/ClickHouse/pull/101051) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un crash du serveur (Logical error: Bad cast from ColumnVector to ColumnNullable) lors de l’utilisation de `* APPLY` avec des fonctions d’agrégation et `group_by_use_nulls=1` avec GROUPING SETS, ROLLUP ou CUBE. [#101062](https://github.com/ClickHouse/ClickHouse/pull/101062) ([Groene AI](https://github.com/groeneai)).
* Corrige une boucle infinie lorsque `input_format_csv_skip_first_lines` ou `input_format_tsv_skip_first_lines` dépasse le nombre de lignes du fichier. [#101111](https://github.com/ClickHouse/ClickHouse/pull/101111) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un accès hors limites dans l’optimisation de lazy materialization, qui pouvait provoquer une exception dans les versions de débogage. [#101144](https://github.com/ClickHouse/ClickHouse/pull/101144) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’inférence de type dans les CTE récursives : les types de colonnes sont désormais élargis itérativement via `getLeastSupertype` entre les parties non récursive et récursive du `UNION ALL` jusqu’à convergence, évitant ainsi un dépassement d’entier dans des expressions telles que `x + 1`. [#101155](https://github.com/ClickHouse/ClickHouse/pull/101155) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Limite à 256 MiB les paramètres de taille de bloc de compression MergeTree (max\_compress\_block\_size, min\_compress\_block\_size, marks\_compress\_block\_size, primary\_key\_compress\_block\_size) afin d’éviter un crash du serveur lorsque des valeurs extrêmes sont définies via CREATE TABLE SETTINGS. [#101159](https://github.com/ClickHouse/ClickHouse/pull/101159) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash LOGICAL\_ERROR dans `QueryAnalyzer::resolve()` lorsqu'une ROW POLICY utilise une sous-requête scalaire dans sa clause `USING` (par ex. `USING (SELECT 1)`). Clôt [#100695](https://github.com/ClickHouse/ClickHouse/issues/100695). [#101263](https://github.com/ClickHouse/ClickHouse/pull/101263) ([Groene AI](https://github.com/groeneai)).
* Corrige un comportement indéfini dans `MergeTreeDataPartWriterCompact::cancel` lorsqu'une allocation de stream échoue. [#101292](https://github.com/ClickHouse/ClickHouse/pull/101292) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un cas où le fuseau horaire n'était pas inclus lors de l'affectation dans l'instruction ALTER. Clôt [#101328](https://github.com/ClickHouse/ClickHouse/issues/101328). En lien avec [https://github.com/ClickHouse/ClickHouse/pull/100647](https://github.com/ClickHouse/ClickHouse/pull/100647). [#101403](https://github.com/ClickHouse/ClickHouse/pull/101403) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige un crash du serveur (LOGICAL\_ERROR) pour les requêtes INSERT SELECT avec ORDER BY ALL lorsque le pipeline SELECT produit plusieurs streams. [#101443](https://github.com/ClickHouse/ClickHouse/pull/101443) ([Groene AI](https://github.com/groeneai)).
* Corrige des résultats de requête incorrects causés par le réordonnancement des join, qui poussait un filtre de INNER JOIN (ne référant que le côté préservé d'un outer join) dans la clause ON de l'outer join. [#101504](https://github.com/ClickHouse/ClickHouse/pull/101504) ([Vladimir Cherkasov](https://github.com/vdimir)).
* N'applique pas la lazy materialization pour les plans avec arrayJoin, ce qui pouvait empêcher le respect de la limit. Clôt [#101608](https://github.com/ClickHouse/ClickHouse/issues/101608). [#101644](https://github.com/ClickHouse/ClickHouse/pull/101644) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige des résultats de requête JOIN incorrects lorsque l'optimisation `mergeFilterIntoJoinCondition` supprimait silencieusement une condition d'égalité WHERE avec des types incompatibles. [#101652](https://github.com/ClickHouse/ClickHouse/pull/101652) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Corrige l'indice de test `error`, qui ne fonctionnait pas pour les erreurs de syntaxe/d'analyse — auparavant, `-- { error SYNTAX_ERROR }` sur une requête mal formée échouait avec "Expected server error" au lieu de correspondre à l'erreur d'analyse côté client. [#101675](https://github.com/ClickHouse/ClickHouse/pull/101675) ([Groene AI](https://github.com/groeneai)).
* Corrige le fait que `INTO OUTFILE ... TRUNCATE` n'utilisait pas réellement un renommage atomique — l'écriture se faisait directement dans le fichier d'origine au lieu d'un fichier temporaire, si bien qu'en cas d'échec de la requête, le contenu d'origine était détruit. Désormais, les données sont écrites dans un fichier temporaire, puis renommées uniquement en cas de succès. [#101884](https://github.com/ClickHouse/ClickHouse/pull/101884) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige une exception `Unsupported DeltaLake type: varchar(n)` lors de la lecture de tables Delta Lake dont le schéma contient des types de colonnes varchar(n) ou char(n). Ces types sont désormais mappés vers String, conformément à la manière dont le protocole Delta Lake les stocke sous forme de simples tableaux d'octets dans Parquet. [#101973](https://github.com/ClickHouse/ClickHouse/pull/101973) ([Flavio Malavazi](https://github.com/flaviomalavazi)).
* Corrige une perte silencieuse de données lors de la lecture d'archives tar depuis S3 avec `schema_inference_mode=union` et des schémas Parquet hétérogènes — le parquet metadata cache réutilisait à tort les metadata du premier fichier pour tous les fichiers suivants de l'archive. [#101990](https://github.com/ClickHouse/ClickHouse/pull/101990) ([Ahaan Limaye](https://github.com/ahaanlimaye)).
* Corrige un crash du serveur (LOGICAL\_ERROR) lors de l'exécution de ALTER TABLE UPDATE/DELETE sur des tables Iceberg lorsqu'aucun SELECT ou INSERT n'avait été exécuté au préalable sur la table pendant la même durée de vie du serveur. [#102113](https://github.com/ClickHouse/ClickHouse/pull/102113) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un possible crash lorsqu'une requête ALTER est exécutée sur des tables d'une base de données en mémoire (par ex. des tables temporaires). [#102360](https://github.com/ClickHouse/ClickHouse/pull/102360) ([Den Kalantaevskii](https://github.com/Diskein)).
* Correction de `formatQuery`, qui produisait des grants dupliqués tels que `GRANT FILE ON *.*, FILE ON *.* TO x` au lieu de `GRANT FILE ON *.* TO x`, lors du formatage de grants READ/WRITE rétrocompatibles sur la même source. [#102411](https://github.com/ClickHouse/ClickHouse/pull/102411) ([Groene AI](https://github.com/groeneai)).
* Corrige une perte de parallélisme pour l'agrégation après des requêtes `read-in-order` lorsque `max_streams_to_max_threads_ratio` est supérieur à 1. [#102467](https://github.com/ClickHouse/ClickHouse/pull/102467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'un crash (`LOGICAL_ERROR: Unknown virtual column`) lors de la sélection de sous-colonnes (comme `.null` pour Nullable, `.size0` pour Array, des éléments de tuple ou des clés/valeurs de map) depuis une table utilisant le table engine Buffer. [#102470](https://github.com/ClickHouse/ClickHouse/pull/102470) ([Groene AI](https://github.com/groeneai)).
* Corrige l'exception "Cannot fold actions for projection" dans l'optimisation du réordonnancement des jointures lorsqu'un LEFT/RIGHT JOIN avec `join_use_nulls` est combiné à d'autres jointures impliquant plus de deux tables. [#102516](https://github.com/ClickHouse/ClickHouse/pull/102516) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'un overflow silencieux dans les opérations scalaires pointwise sur numericIndexedVector (par ex. `numericIndexedVectorPointwiseAdd`) lorsque le scalaire est hors plage. Ces entrées lèvent désormais `INCORRECT_DATA` au lieu de renvoyer des valeurs corrompues. [#102546](https://github.com/ClickHouse/ClickHouse/pull/102546) ([FriendLey](https://github.com/FriendLey)).
* Corrige un formatage AST incohérent pour INSERT avec SAMPLE et OFFSET au niveau de la requête. Clôt [#102523](https://github.com/ClickHouse/ClickHouse/issues/102523). [#102547](https://github.com/ClickHouse/ClickHouse/pull/102547) ([zoomxi](https://github.com/zoomxi)).
* Corrige l'exception `LOGICAL_ERROR` dans `groupConcat` lors de la désérialisation d'un état de fonction d'agrégation malformé. [#102558](https://github.com/ClickHouse/ClickHouse/pull/102558) ([Christoph Wurm](https://github.com/cwurm)).
* Désormais, les caractères parasites en fin de valeurs CSV Time64 ne sont plus acceptés avec `input_format_csv_use_default_on_bad_values=0`. Clôt [#102490](https://github.com/ClickHouse/ClickHouse/issues/102490). [#102596](https://github.com/ClickHouse/ClickHouse/pull/102596) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige l'exception UNKNOWN\_ELEMENT\_OF\_ENUM lors de l'insertion de la valeur par défaut dans une colonne JSON avec des paths typés Enum. Clôt [#102359](https://github.com/ClickHouse/ClickHouse/issues/102359). [#102687](https://github.com/ClickHouse/ClickHouse/pull/102687) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la corruption de columns\_substreams.txt lors du renommage d'une colonne dans certains cas. Clôt [#102259](https://github.com/ClickHouse/ClickHouse/issues/102259). [#102689](https://github.com/ClickHouse/ClickHouse/pull/102689) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l'insertion dans le type de données Time lors du parsing JSON. Clôt [#102016](https://github.com/ClickHouse/ClickHouse/issues/102016). [#102690](https://github.com/ClickHouse/ClickHouse/pull/102690) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l'encodage hexadécimal de l'échantillon de contenu dans les noms de fichiers de schéma mis en cache. Clôt [#101904](https://github.com/ClickHouse/ClickHouse/issues/101904). [#102703](https://github.com/ClickHouse/ClickHouse/pull/102703) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’une violation de l’ordre de tri (crash en débogage, corruption silencieuse des données en release) lors d’une fusion `SummingMergeTree` lorsque la clé `ORDER BY` est une expression de hachage sur une colonne `Float32` contenant des valeurs NaN de signalisation. [#102791](https://github.com/ClickHouse/ClickHouse/pull/102791) ([Groene AI](https://github.com/groeneai)).
* Rend `DETACH DATABASE ... SYNC` et d’autres opérations qui appellent `waitDetachedTableNotInUse` annulables via `KILL QUERY` et réactives à l’arrêt du serveur, évitant ainsi des blocages indéfinis lorsqu’une requête concurrente conserve une référence à une table. [#102804](https://github.com/ClickHouse/ClickHouse/pull/102804) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’un résultat potentiellement incorrect pour `ANY RIGHT JOIN`. [#102893](https://github.com/ClickHouse/ClickHouse/pull/102893) ([Nikita Taranov](https://github.com/nickitat)).
* Correction de l’échec des requêtes S3 avec `ios_base::clear: unspecified iostream_category error` au lieu d’être retentées, en raison du fait que Poco `BufferedStreamBuf::flushBuffer` ne gérait pas les écritures partielles depuis la couche socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* Correction de l’échec de la fonction de table `input('auto')` via l’interface HTTP dans les requêtes INSERT SELECT. [#102902](https://github.com/ClickHouse/ClickHouse/pull/102902) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Désactivation de l’optimisation triviale LIMIT avec les politiques de lignes/additional\_table\_filters (pour permettre une analyse d’index parallèle). [#102921](https://github.com/ClickHouse/ClickHouse/pull/102921) ([Azat Khuzhin](https://github.com/azat)).
* Masque la clé secrète dans la fonction SQL `HMAC`. Correction de [#102927](https://github.com/ClickHouse/ClickHouse/issues/102927). [#102997](https://github.com/ClickHouse/ClickHouse/pull/102997) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Correction de l’exception `MULTIPLE_EXPRESSIONS_FOR_ALIAS` levée sur des requêtes distribuées qui référencent plusieurs fois le même appel à `quantile` (par ex. dans `SELECT`, `HAVING` et `ORDER BY`) avec `optimize_syntax_fuse_functions` activé. [#103014](https://github.com/ClickHouse/ClickHouse/pull/103014) ([tanner-bruce](https://github.com/tanner-bruce)).
* Corrige un cas détecté par la CI où un set non prêt était transmis lorsque le filtre dépend de la colonne de gauche. Clôt [#102966](https://github.com/ClickHouse/ClickHouse/issues/102966). [#103029](https://github.com/ClickHouse/ClickHouse/pull/103029) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de castOrNull vers JSON dans certains cas. Clôt [#101818](https://github.com/ClickHouse/ClickHouse/issues/101818). [#103036](https://github.com/ClickHouse/ClickHouse/pull/103036) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `SELECT DISTINCT` qui renvoyait silencieusement des résultats incomplets lorsqu’une projection agrégée correspondait à la requête et que certaines parties de la table n’avaient pas de données de projection (par ex. la projection avait été ajoutée à une table contenant déjà des données, et `MATERIALIZE PROJECTION` n’avait pas été exécuté). Clôt [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de l’exception `TOO_FEW_ARGUMENTS_FOR_FUNCTION` lorsqu’un prédicat `WHERE` tel que `AND(OR(A, A), A)` se réduit à un seul argument de premier niveau lors de l’extraction des expressions communes dans l’analyseur. [#103072](https://github.com/ClickHouse/ClickHouse/pull/103072) ([Peng](https://github.com/fastio)).
* Correction de l’erreur logique `Function writeSlice expects same column types for GenericArraySlice and GenericArraySink` déclenchée lors de l’évaluation de `if`/`ifNull` sur des tuples, des maps ou des arrays contenant un élément `QBit`. `ColumnQBit::structureEquals` comparait à tort le tuple interne d’une colonne `QBit` à l’enveloppe externe de l’autre, si bien que des colonnes `QBit` structurellement identiques étaient considérées comme différentes. [#103084](https://github.com/ClickHouse/ClickHouse/pull/103084) ([Groene AI](https://github.com/groeneai)).
* `DETACH DATABASE` avec `database_atomic_wait_for_drop_and_detach_synchronously` respecte désormais `KILL QUERY` au lieu de rester bloqué indéfiniment lorsqu’une référence à une table est conservée. [#103095](https://github.com/ClickHouse/ClickHouse/pull/103095) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un segfault lors de la suppression d’un module WASM à l’aide d’un prédicat qui n’est pas un identifiant (par ex. `WHERE 1=1`). [#103101](https://github.com/ClickHouse/ClickHouse/pull/103101) ([Joe Redfern](https://github.com/JosephRedfern)).
* Correction d’une rupture de compatibilité ascendante où d’anciens clients échouaient avec `UNEXPECTED_PACKET_FROM_SERVER` lors d’un insert dans un server plus récent via `remote()` ou des distributed tables, en raison de l’appel inconditionnel à `sendProgress` à la fin de `processInsertQuery`. [#103148](https://github.com/ClickHouse/ClickHouse/pull/103148) ([Sema Checherinda](https://github.com/CheSema)).
* Avec IN, un second argument tuple non constant ne doit pas CAST les éléments du tuple vers le type du membre de gauche, car cela peut provoquer un overflow. Clôt [#103055](https://github.com/ClickHouse/ClickHouse/issues/103055). [#103169](https://github.com/ClickHouse/ClickHouse/pull/103169) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d’une utilisation de valeur non initialisée dans une fonction du protocol. [#103187](https://github.com/ClickHouse/ClickHouse/pull/103187) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `LOGICAL_ERROR` (`Bad cast … to ColumnLowCardinality`) lors de l’analyse d’index MergeTree lorsqu’une clause `WHERE` compare une key column `LowCardinality` à une constante cast vers un type contenant un `LowCardinality` imbriqué (par exemple `Variant(LowCardinality(Date), String)`). [#103211](https://github.com/ClickHouse/ClickHouse/pull/103211) ([Groene AI](https://github.com/groeneai)).
* Correction de `Logical error: 'index < bucket_count'` dans la famille d’aggregate functions `timeSeries*ToGrid` (par ex. `timeSeriesResampleToGridWithStaleness`, `timeSeriesChangesToGrid`, `timeSeriesResetsToGrid`, `timeSeriesRateToGrid`) lorsqu’elle est appelée avec des paramètres de timestamp extrêmes qui feraient déborder l’arithmétique signée sur 64 bits lors du calcul du nombre de buckets. Le nombre total de buckets de grille est également limité à 16 millions afin d’éviter des allocations mémoire accidentellement massives dues à des entrées malveillantes. [#103223](https://github.com/ClickHouse/ClickHouse/pull/103223) ([Groene AI](https://github.com/groeneai)).
* Correction de l’exception `Logical error: 'Port is already connected'` lors de l’expansion du pipeline dans le chemin `FINAL` lazy de `ReplacingMergeTree`. Le bug affectait les queries avec `query_plan_optimize_lazy_final = 1` lorsque `ReadFromMergeTree::initializePipeline` insérait des transformations internes (par ex. un `Resize`) qui reliaient entre eux les processors du sous-pipeline, ce qui amenait `LazyUnorderedReadFromMergeTreeSource::expandPipeline` à tenter de connecter des ports de sortie déjà connectés. [#103230](https://github.com/ClickHouse/ClickHouse/pull/103230) ([Groene AI](https://github.com/groeneai)).
* Correction de résultats erronés de `LIMIT BY` et `DISTINCT` lorsque l’entrée est un `UNION ALL` de subqueries triées. L’optimiseur de query plan traitait à tort une telle union comme globalement triée, ce qui entraînait le renvoi de lignes supplémentaires. [#103231](https://github.com/ClickHouse/ClickHouse/pull/103231) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un crash possible lors du calcul des statistiques dans le Map type avec lazy replication. Clôt [#102390](https://github.com/ClickHouse/ClickHouse/issues/102390). [#103273](https://github.com/ClickHouse/ClickHouse/pull/103273) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige une data race dans les sources de dictionnaires ClickHouse, MySQL, PostgreSQL et XDBC, où `clone() const` lit et `isModified() const` écrit dans la même chaîne `invalidate_query_response`. [#103277](https://github.com/ClickHouse/ClickHouse/pull/103277) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige une détection incorrecte de la monotonie pour `Date32`. Clôt [#101265](https://github.com/ClickHouse/ClickHouse/issues/101265). [#103283](https://github.com/ClickHouse/ClickHouse/pull/103283) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Limite à 64 KB les chaînes du paquet TCP Hello de pré-authentification et ajoute le paramètre serveur `handshake_timeout_milliseconds` pour limiter la durée totale du handshake, afin d’empêcher des clients non authentifiés de consommer une quantité excessive de mémoire ou de monopoliser des threads indéfiniment. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige le cas où, dans les statistiques ColumnIndex de Parquet, min\_value > max\_value pour les colonnes String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* Corrige la gestion incorrecte des lignes NULL pour les entrées `Nullable(Tuple(...))` dans `flattenTuple` et `tupleToNameValuePairs`. `flattenTuple` préserve désormais la null map externe afin que les lignes NULL restent NULL. `tupleToNameValuePairs` change désormais le type de valeur du résultat en `Nullable(T)` lorsque c'est possible quand l'entrée est `Nullable(Tuple(...))`, afin que les lignes NULL produisent `[('a', NULL), ('b', NULL)]` au lieu de `[('a', 0), ('b', 0)]`. Lorsque le type d'élément ne peut pas être encapsulé dans `Nullable` (par exemple `Array`), des valeurs par défaut sont utilisées à la place de NULL. Clôt [#103312](https://github.com/ClickHouse/ClickHouse/issues/103312). [#103383](https://github.com/ClickHouse/ClickHouse/pull/103383) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Vérifie les données Dynamic aplaties malformées dans le Native format. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un RPC périmé provoquant un blocage de la réplication après une synchronisation par snapshot. [#103406](https://github.com/ClickHouse/ClickHouse/pull/103406) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige un arrêt du serveur dû à `LOGICAL_ERROR` "Cannot pop N rows from X" (dans les builds de débogage / avec sanitizer) lors de la lecture d'un document BSON malformé contenant une valeur dont le type BSON est incompatible avec le type de colonne cible dans une colonne `Nullable(T)` ou `Array(Nullable(T))`. La ligne malformée produit désormais une exception `ILLEGAL_COLUMN` propre, comme prévu. [#103418](https://github.com/ClickHouse/ClickHouse/pull/103418) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt du serveur dans `arrayFill` et `arrayReverseFill` lorsqu'ils sont appliqués à une colonne `Array(String)` dont la première ligne est vide, avec une lambda constante à false. La boucle aggregate / sous-tableau provoquait un underflow d'un index `size_t` vers `SIZE_MAX`, ce qui entraînait ensuite une lecture hors limites dans `ColumnString::doInsertManyFrom`. Même famille de bugs que [#12263](https://github.com/ClickHouse/ClickHouse/issues/12263). [#103424](https://github.com/ClickHouse/ClickHouse/pull/103424) ([Groene AI](https://github.com/groeneai)).
* Corrige les erreurs ACCESS\_DENIED / UNKNOWN\_TABLE dans les RMV APPEND en aval avec SQL SECURITY DEFINER lorsqu'un EXCHANGE d'un RMV REPLACE en amont bascule l'identité du stockage cible en cours de résolution. [#103427](https://github.com/ClickHouse/ClickHouse/pull/103427) ([Alexander Gololobov](https://github.com/davenger)).
* Renseigne la colonne `_time` à partir de la fonction de table `url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* Correction d’une lecture potentiellement hors limites dans le chemin de décompression du codec `ALP` lors du traitement d’une entrée malformée avec une largeur de bit invalide. [#103457](https://github.com/ClickHouse/ClickHouse/pull/103457) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Correction d’un bug où `SYSTEM SYNC FILESYSTEM CACHE '<name>' ON CLUSTER ...` pouvait perdre le nom du cache lors du formatage de la requête, ce qui amenait les nœuds distants à synchroniser tous les caches du système de fichiers au lieu du seul cache demandé. [#103469](https://github.com/ClickHouse/ClickHouse/pull/103469) ([Asish Kumar](https://github.com/officialasishkumar)).
* Correction du traitement d’un chemin encodé en URL dans `deltaLakeAzure`. Clôt [#103509](https://github.com/ClickHouse/ClickHouse/issues/103509). [#103525](https://github.com/ClickHouse/ClickHouse/pull/103525) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Correction d’un heap-use-after-free lors de la multiplication d’un état `AggregateFunction` par un entier (par ex. `quantilesExactState(...) * N`). La boucle d’exponentiation par dichotomie fusionnait l’état avec lui-même, ce qui n’est pas défini lorsque le `merge` de la fonction d’agrégation réalloue son stockage interne. Clôt STID 0988-40af. [#103536](https://github.com/ClickHouse/ClickHouse/pull/103536) ([Groene AI](https://github.com/groeneai)).
* Correction d’un `LOGICAL_ERROR` rare "Part X intersects previous part Y" déclenché au démarrage d’une table `ReplicatedMergeTree` lorsque deux parts vides inattendues sur disque avaient des plages de blocs qui se chevauchaient sans que l’une contienne l’autre. L’exception interrompait le thread d’attachement de la table et empêchait son démarrage. [#103537](https://github.com/ClickHouse/ClickHouse/pull/103537) ([Groene AI](https://github.com/groeneai)).
* Correction de `Logical error: Incorrect mark rows for part ...` (assertion de débogage uniquement) déclenché par des mutations sur des tables `MergeTree` avec une granularité d’index non adaptative (`index_granularity_bytes = 0`) dont la dernière mark de données était incomplète (cas reproduit de la manière la plus fiable via `DETACH`/`ATTACH` suivi d’un lightweight `DELETE`). [#103538](https://github.com/ClickHouse/ClickHouse/pull/103538) ([Groene AI](https://github.com/groeneai)).
* Correction du cas où `clickhouse-local` renvoyait silencieusement 0 ligne lors de la lecture des pseudo-fichiers `/proc` et `/sys` via la fonction de table `file()` (par ex. `SELECT * FROM file('/proc/cpuinfo', 'RawBLOB')`). [#103548](https://github.com/ClickHouse/ClickHouse/pull/103548) ([Ashrith Bandla](https://github.com/ashrithb)).
* Correction de la gestion de l’argument `max_string_length` pour le moteur de table `GenerateRandom`. [#103550](https://github.com/ClickHouse/ClickHouse/pull/103550) ([Alex Kuleshov](https://github.com/0xAX)).
* Correction du masquage des identifiants imbriqués dans les logs. [#103552](https://github.com/ClickHouse/ClickHouse/pull/103552) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction de la détection de SVE utilisant des instructions SVE lorsqu’elles ne sont pas disponibles. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de l’analyse des arguments de stockage de `GenerateRandom`. [#103574](https://github.com/ClickHouse/ClickHouse/pull/103574) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Correction d’une boucle infinie dans `WITH FILL` pour des données commençant par ±inf. [#103580](https://github.com/ClickHouse/ClickHouse/pull/103580) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige `JSONExtract` dans un type `Variant`, qui tronquait silencieusement les nombres JSON à partie fractionnaire. Auparavant, `JSONExtract('{"x": 3.14}', 'x', 'Variant(Int64, Float64)')` renvoyait `Int64=3` et `JSONExtract('{"x": 3.14}', 'x', 'Variant(String, Int64)')` renvoyait `Int64=3`, en supprimant la partie fractionnaire. La valeur fractionnaire est désormais préservée sans perte : un membre `Float64`/`Decimal` la prend en charge lorsqu’il est présent, sinon un membre `String` capture le JSON d’origine. Les types `Variant` ne contenant que des membres entiers (par ex. `Variant(Int64, Int32)`) et l’extraction directe d’entiers (`JSONExtract(json, 'Int64')`, `JSONExtractInt`, etc.) restent inchangés. [#103620](https://github.com/ClickHouse/ClickHouse/pull/103620) ([Groene AI](https://github.com/groeneai)).
* Corrige `SYSTEM INSTRUMENT REMOVE` sans arguments, qui produisait `std::bad_optional_access` (code d’erreur 1001) au lieu de `SYNTAX_ERROR` (code d’erreur 62). [#103622](https://github.com/ClickHouse/ClickHouse/pull/103622) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige une erreur logique / un comportement indéfini dans les `window view` `windowID` et `tumble` lorsqu’elles sont appelées avec une chaîne de fuseau horaire comme 3e argument. [#103641](https://github.com/ClickHouse/ClickHouse/pull/103641) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La journalisation du client S3 traite désormais les réponses HTTP 400 qui incluent un en-tête x-amz-bucket-region non vide (région de signature SigV4 incorrecte) comme un simple cas informatif de mauvaise région, avec une ligne de journal plus explicite au lieu du chemin générique de type erreur. Le fournisseur d’identifiants d’identité web STS n’est ajouté à la chaîne d’identifiants S3 que lorsque l’identité web est configurée, ce qui réduit les avertissements parasites pour les déploiements qui ne l’utilisent pas. Clôt [#99140](https://github.com/ClickHouse/ClickHouse/issues/99140). [#103673](https://github.com/ClickHouse/ClickHouse/pull/103673) ([MeltonSmith](https://github.com/MeltonSmith)).
* Corrige `SYSTEM SYNC REPLICA <db>.<tbl> IF EXISTS` pour qu’il réussisse silencieusement lorsque la base de données n’existe pas, conformément au comportement existant pour une table manquante et au précédent établi par `DROP TABLE IF EXISTS`. Auparavant, la requête levait `UNKNOWN_DATABASE` malgré `IF EXISTS`. Clôt [#103629](https://github.com/ClickHouse/ClickHouse/issues/103629). [#103689](https://github.com/ClickHouse/ClickHouse/pull/103689) ([Groene AI](https://github.com/groeneai)).
* Corrige l’erreur logique `Arguments of 'plus' have incorrect data types` levée par `FunctionBinaryArithmetic::executeImpl2` lorsqu’une table `MergeTree` avait `Array(LowCardinality(...))` dans sa clé de tri et qu’une clause `WHERE` utilisait `plus` / `minus` entre cette colonne et une constante `Array` d’un type d’élément différent. `KeyCondition::getMonotonicityForRange` supprime désormais `LowCardinality` récursivement avant d’invoquer le dispatch numérique interne. [#103701](https://github.com/ClickHouse/ClickHouse/pull/103701) ([Groene AI](https://github.com/groeneai)).
* Corrige une condition de concurrence lors du redimensionnement dynamique du cache dans 26.1+. [#103702](https://github.com/ClickHouse/ClickHouse/pull/103702) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige un problème où les index de saut `text` et `bloom&#95;filter` sur des colonnes `ALIAS` dont l’expression contenait une lambda avec des constantes capturées (par ex. `arrayMap((k, v) -> concat(k, '=', v), mapKeys(m), mapValues(m)))` étaient silencieusement ignorés. [#103708](https://github.com/ClickHouse/ClickHouse/pull/103708) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige `position` et `positionCaseInsensitive` avec un `start_pos` proche de `UINT64_MAX`, qui pouvaient se bloquer ou provoquer une faute de segmentation en raison d’un dépassement dans l’arithmétique des pointeurs. [#103766](https://github.com/ClickHouse/ClickHouse/pull/103766) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un comportement indéfini lors de l’analyse de dateTime avec une double partie fractionnaire. [#103773](https://github.com/ClickHouse/ClickHouse/pull/103773) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d’une régression affectant l’exactitude des données dans la version 26.x : `if` et `multiIf` compilés en JIT avec un type de résultat `Decimal` et un littéral non `Decimal` (entier ou flottant) dans l’une des branches renvoyaient silencieusement une valeur inférieure d’un facteur `10^scale`. Le chemin lent (sans JIT) n’était pas affecté. Solution de contournement pour les versions concernées : `SET compile_expressions = 0`. [#103809](https://github.com/ClickHouse/ClickHouse/pull/103809) ([Groene AI](https://github.com/groeneai)).
* Corrige la transmission du tokenizer depuis le text index vers les fonctions prises en charge. [#103826](https://github.com/ClickHouse/ClickHouse/pull/103826) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Corrige des résultats erronés de `numbers`, `generate_series` et d’autres sources similaires respectant les plages lorsque la clause `WHERE` utilise `IN` ou `NOT IN` sur un tuple dont les éléments se dédupliquent en une seule Key column (par exemple, `WHERE tuple(number, number) NOT IN (tuple(1, 2))`). Clôt [#103660](https://github.com/ClickHouse/ClickHouse/issues/103660). [#103835](https://github.com/ClickHouse/ClickHouse/pull/103835) ([Groene AI](https://github.com/groeneai)).
* Maintient le pic réel de mémoire du hash join avec spilling automatique sous `max_bytes_before_external_join`. Auparavant, la préallocation pilotée par les statistiques, le doublement sur place de la hash table et les buckets en mémoire non bornés de `GraceHashJoin` pouvaient chacun faire dépasser à la query la limite configurée et déclencher `MEMORY_LIMIT_EXCEEDED`. [#103838](https://github.com/ClickHouse/ClickHouse/pull/103838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un blocage à l’arrêt de `clickhouse-local` lorsque les logs système (comme `text_log` ou `filesystem_cache_log`) sont configurés. `SystemLogs::flushImpl` appelait `BaseDaemon::instance().flushTextLogs()`, ce qui levait `std::bad_cast` en dehors de `clickhouse-server` et laissait les threads de sauvegarde actifs jusqu’à ce que `pthread_cond_destroy` bloque la destruction des files de logs système. [#103874](https://github.com/ClickHouse/ClickHouse/pull/103874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Rejette les requêtes CTE `MATERIALIZED` dont le body aboutit à des column types inférés différents selon les références, avec une erreur `TYPE_MISMATCH` explicite au lieu de faire planter le server avec une `LOGICAL_ERROR` `Bad cast`. Cela se produisait auparavant lorsque le body de la CTE référençait des identifiants de la portée externe (par exemple, un alias de la projection de la subquery appelante) qui étaient intégrés comme des constantes différentes selon la référence. [#103879](https://github.com/ClickHouse/ClickHouse/pull/103879) ([Groene AI](https://github.com/groeneai)).
* Corrige une utilisation d’une valeur non initialisée dans les optimiseurs de query plan de conversion de JOIN (`tryConvertAnyOuterJoinToInnerJoin`, `tryConvertAnyJoinToSemiOrAntiJoin`) lorsque le filter au-dessus d’un `ANY` `OUTER` `JOIN` contient une fonction non deterministic telle que `rand`, `now` ou `rowNumberInAllBlocks`. L’optimiseur ne tente plus de constant-fold de tels filtres et laisse le JOIN inchangé, ce qui empêche aussi les conversions incorrectes en `INNER`/`SEMI`/`ANTI JOIN` qui pouvaient supprimer silencieusement des rows. [#103880](https://github.com/ClickHouse/ClickHouse/pull/103880) ([Groene AI](https://github.com/groeneai)).
* Corrige un use-after-free dans `StorageKafka2` qui pouvait faire planter le server lorsqu’une session Keeper est remplacée pendant que le consumer détient des verrous éphémères de topic-partition. [#103890](https://github.com/ClickHouse/ClickHouse/pull/103890) ([Groene AI](https://github.com/groeneai)).
* Correction d’une `LOGICAL_ERROR` "Primary key type mismatch" levée lors d’une jointure avec une table `EmbeddedRocksDB` via `JOIN ... USING (key)` contre une subquery dont la Key column a un type différent (par ex. `Nullable(UInt64)`, `Int64`, `Decimal`) de la primary key du stockage. Le planner refuse désormais `DirectKeyValueJoin` en cas d’incompatibilité de type et se rabat sur `HashJoin`, qui gère la conversion de type. [#103928](https://github.com/ClickHouse/ClickHouse/pull/103928) ([Groene AI](https://github.com/groeneai)).
* `SET max_threads = DEFAULT` (et de même pour `max_final_threads` et `max_parsing_threads`) ne perd plus l’état auto. Auparavant, après la réinitialisation de l’un de ces paramètres, `system.settings` affichait le nombre de cœurs résolu (par ex. `32`) au lieu de `'auto(32)'`, et le serveur se comportait comme si la valeur avait été explicitement définie. [#103991](https://github.com/ClickHouse/ClickHouse/pull/103991) ([Groene AI](https://github.com/groeneai)).
* Correction de `SIZES_OF_ARRAYS_DONT_MATCH` lors de la lecture de colonnes `AggregateFunction(topK(N), String)` dont l’`alpha_size` persisté avait été augmenté par un cycle deserialize+serialize antérieur à la version 25.12. [#104002](https://github.com/ClickHouse/ClickHouse/pull/104002) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une vulnérabilité d’injection SQL dans les sources de dictionnaire PostgreSQL, Cassandra et XDBC : les clés de chaîne contenant des guillemets simples étaient échappées avec `\'` (backslash), que ces backends interprètent comme un backslash littéral plutôt que comme une séquence d’échappement, ce qui permettait d’injecter du SQL arbitraire dans les requêtes de lookup de dictionnaire. `ExternalQueryBuilder` émet désormais l’échappement SQL standard `''` pour ces backends ; les sources de dictionnaire ClickHouse et MySQL continuent d’utiliser l’échappement par backslash. [#104009](https://github.com/ClickHouse/ClickHouse/pull/104009) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d’une incompatibilité de type possible dans l’agrégation lorsqu’un type de colonne était modifié vers ou depuis LowCardinality et que la projection min-max n’était pas reconstruite. [#104013](https://github.com/ClickHouse/ClickHouse/pull/104013) ([Nikita Taranov](https://github.com/nickitat)).
* Correction d’une boucle infinie d’optimisations de requête causée par l’absence de propagation de la prévention de suppression des colonnes inutilisées lors de la fusion des expressions. [#104083](https://github.com/ClickHouse/ClickHouse/pull/104083) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction de `LOGICAL_ERROR` dans `StreamingStorageRegistry::renameTable` lors du renommage par lot de tables de streaming (S3Queue, Kafka, RabbitMQ), en utilisant un suivi d’identité basé sur l’UUID plutôt que sur le nom. [#104101](https://github.com/ClickHouse/ClickHouse/pull/104101) ([Nikita Taranov](https://github.com/nickitat)).
* Correction de résultats erronés lorsqu’une CTE construite avec `UNION ALL` contenait une branche `SELECT DISTINCT` et que la requête externe ne projetait qu’un sous-ensemble des colonnes de la CTE. Le nouveau pass `RemoveUnusedProjectionColumnsPass` de l’analyzer supprimait à tort la colonne non référencée de la projection `DISTINCT` interne, ce qui fusionnait en une seule des lignes qui auraient dû rester distinctes (même valeur dans la colonne projetée mais valeur différente dans la colonne supprimée). [#104114](https://github.com/ClickHouse/ClickHouse/pull/104114) ([Groene AI](https://github.com/groeneai)).
* Correction de plusieurs problèmes de justesse dans des cas limites du paramètre `optimize_inverse_dictionary_lookup`, où l’optimisation pouvait supprimer silencieusement des lignes ou masquer des exceptions. Ferme [#103270](https://github.com/ClickHouse/ClickHouse/issues/103270). Ferme [#103085](https://github.com/ClickHouse/ClickHouse/issues/103085). [#104133](https://github.com/ClickHouse/ClickHouse/pull/104133) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’une écriture hors limites lors de la désérialisation de l’état `quantileTiming`. [#104141](https://github.com/ClickHouse/ClickHouse/pull/104141) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un comportement indéfini lorsqu’une valeur `Float64` hors plage est convertie vers un type entier large (`UInt64`, `Int64`, `Int128`, `UInt128`, `Int256`, `UInt256`). Auparavant, les valeurs égales à `Float64(numeric_limits<T>::max())` (qui s’arrondit à une valeur supérieure au maximum réel) contournaient la vérification des limites et produisaient un UB lors du cast suivant. Cela affectait l’analyse des paramètres des fonctions d’agrégation (`topK`, `histogram`, `uniqUpTo`, `groupArrayInsertAt`, etc.), ainsi que les paramètres de type entier via `SET <setting> = <Float64>`. Ferme [#103817](https://github.com/ClickHouse/ClickHouse/issues/103817). [#104154](https://github.com/ClickHouse/ClickHouse/pull/104154) ([Groene AI](https://github.com/groeneai)).
* Corrige l’exception `LOGICAL_ERROR` "Unexpected return type from comparison. Expected `UInt8`. Got `Const(Nullable(UInt8))`" lors de la comparaison d’un `Tuple(Tuple(Nullable(...)))` imbriqué (ou plus profondément) avec un littéral `String`. Le type de retour de la comparaison est désormais correctement inféré en `Nullable(UInt8)`, conformément au comportement à l’exécution. [#104171](https://github.com/ClickHouse/ClickHouse/pull/104171) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt du serveur (`UndefinedBehaviorSanitizer: reference binding to null pointer`, segfault dans les builds de release) sur `SELECT ... FROM <ReplacingMergeTree(version, is_deleted)> FINAL PREWHERE is_deleted = <expr> AND <other column expr>` lorsque `query_plan_optimize_lazy_final = 1`. L’étape de lecture lazy-FINAL non intersectante perdait la colonne `is_deleted` dans son en-tête de sortie, car PREWHERE la consommait en entrée sans la réexposer en sortie. L’étape `addIsDeletedFilter` en aval déréférençait alors un pointeur `ActionsDAG::Node` nul. [#104177](https://github.com/ClickHouse/ClickHouse/pull/104177) ([Groene AI](https://github.com/groeneai)).
* Lors de l’appel de la table system.failpoints, un failpoint était utilisé, ce qui pouvait le désactiver. [#104237](https://github.com/ClickHouse/ClickHouse/pull/104237) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Corrige `MemorySanitizer: use-of-uninitialized-value` dans les fonctions `detectLanguage*` lorsque l’entrée contient un caractère UTF-8 se terminant exactement à la limite du buffer. [#104257](https://github.com/ClickHouse/ClickHouse/pull/104257) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une logical error (`Bad cast from type DB::CachedObjectStorage to DB::S3ObjectStorage`) qui interrompait l’analyse des arguments des table functions et engines de data lake (`icebergS3`, `deltaLakeS3`, etc.) lorsqu’ils étaient appelés avec `SETTINGS disk = '...'` sur un disk dont l’object storage sous-jacent est encapsulé par un décorateur tel qu’un filesystem cache. Corrige aussi [#89300](https://github.com/ClickHouse/ClickHouse/issues/89300). [#104258](https://github.com/ClickHouse/ClickHouse/pull/104258) ([Groene AI](https://github.com/groeneai)).
* Corrige l’analyse des expressions d’indice entre parenthèses sur des colonnes nommées `values`, par exemple `(values['a'])`, afin qu’elles ne soient plus interprétées comme des expressions de table SQL standard `VALUES`. [#104312](https://github.com/ClickHouse/ClickHouse/pull/104312) ([Desel72](https://github.com/Desel72)).
* Corrige un arrêt du serveur/`LOGICAL_ERROR` dans le thread d’eviction en arrière-plan du filesystem cache (`SLRUFileCachePriority::collectEvictionInfo`) qui pouvait se produire lorsque `keep_free_space_size_ratio` ou `keep_free_space_elements_ratio` était suffisamment élevé pour déclencher une eviction alors que toutes les cache entries avaient déjà été promues dans la protected queue du SLRU (file probationary vide). [#104313](https://github.com/ClickHouse/ClickHouse/pull/104313) ([Groene AI](https://github.com/groeneai)).
* Corrige les exceptions (`NOT_FOUND_COLUMN_IN_BLOCK`, `LOGICAL_ERROR`, `AMBIGUOUS_COLUMN_NAME`) lors de l’utilisation de projections avec des vues UNION ALL, des window functions ou des collisions de noms entre alias et colonnes. Régression introduite par [#88798](https://github.com/ClickHouse/ClickHouse/issues/88798). [#104317](https://github.com/ClickHouse/ClickHouse/pull/104317) ([Amos Bird](https://github.com/amosbird)).
* Corrige un possible underflow dans l’analyse des arrays Postgres. [#104322](https://github.com/ClickHouse/ClickHouse/pull/104322) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Les fonctions qui renvoient un type non `Nullable` (comme `Array`, `Tuple` ou `Map`) acceptent désormais des arguments `Nullable`. Les fonctions concernées incluent `extractAll`, `extractAllGroups`, `extractAllGroupsHorizontal`, `extractAllGroupsVertical`, `extractGroups`, `splitByChar`, `splitByString`, `splitByRegexp`, `splitByWhitespace`, `splitByNonAlpha` et `alphaTokens`. Les lignes d'entrée `NULL` produisent la valeur par défaut du type de résultat (par ex. un tableau vide) au lieu de lever l'erreur "Nested type is not allowed inside Nullable type". [#104326](https://github.com/ClickHouse/ClickHouse/pull/104326) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des statistiques Iceberg pour les tables partitionnées. Cela clôt [#104321](https://github.com/ClickHouse/ClickHouse/issues/104321). [#104329](https://github.com/ClickHouse/ClickHouse/pull/104329) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction d'une erreur logique fatale au démarrage du serveur sur macOS (et sur des builds jemalloc similaires), où `Jemalloc::verifySetup` signalait à tort une incohérence de `jemalloc_enable_background_threads` parce que les mallctls optionnels `background_thread` / `max_background_threads` sont absents ; la vérification est désormais ignorée lorsque ces mallctls ne sont pas disponibles, et `getValue` ne laisse plus la sortie non initialisée en cas d'échec. Clôt [#102183](https://github.com/ClickHouse/ClickHouse/issues/102183). [#104330](https://github.com/ClickHouse/ClickHouse/pull/104330) ([SAYON DEEP](https://github.com/sayondeep)).
* Correction d'une régression où des requêtes `SELECT` avec `max_rows_to_read_leaf` et `read_overflow_mode_leaf = 'throw'` pouvaient lever à tort `TOO_MANY_ROWS`, même lorsqu'un skip index aurait réduit le volume lu sous la limite leaf. Les paramètres symétriques non-leaf (`max_rows_to_read` / `read_overflow_mode`) étaient déjà pris en charge. [#104331](https://github.com/ClickHouse/ClickHouse/pull/104331) ([Groene AI](https://github.com/groeneai)).
* `toUUID`, `toUUIDOrNull`, `toUUIDOrZero`, `toUUIDOrDefault`, `CAST` vers `UUID` et `Nullable(UUID)`, `accurateCastOrNull` vers `UUID`, ainsi que les formats d'entrée qui analysent un UUID depuis du texte (`Avro`, `MsgPack`, `JSONExtract`, ...) rejettent désormais les chaînes de la bonne longueur mais contenant des caractères non hexadécimaux. Auparavant, ces entrées étaient silencieusement transformées en UUID fabriqués en lisant au-delà de la fin de la table de correspondance des chiffres hexadécimaux ; désormais, `toUUID` lève `CANNOT_PARSE_UUID`, et les variantes `Or*` renvoient `NULL` / le zero UUID / la valeur par défaut fournie. [#104370](https://github.com/ClickHouse/ClickHouse/pull/104370) ([Groene AI](https://github.com/groeneai)).
* Correction de `Bad cast` `LOGICAL_ERROR` dans `caseWithExpression` (et en SQL `CASE expr WHEN ... THEN ... ELSE ...`) lorsque le supertype des seules branches THEN et le supertype de l'ensemble (THEN + ELSE) se retrouvent dans des stockages `ColumnDecimal` différents -- par exemple, des valeurs THEN `(UInt16, Int8)` avec un ELSE de `Decimal(9, 2)`. Clôt [#104335](https://github.com/ClickHouse/ClickHouse/issues/104335). [#104378](https://github.com/ClickHouse/ClickHouse/pull/104378) ([Groene AI](https://github.com/groeneai)).
* Les défaillances internes signalées via `logExceptionBeforeStart` (flushes d'insertions asynchrones, refresh de vues matérialisées, erreurs d'analyse levées lors de requêtes internes) incrémentent désormais correctement les ProfileEvents `FailedInternalQuery`, `FailedInternalSelectQuery` et `FailedInternalInsertQuery`, en plus des compteurs visibles par l'utilisateur `FailedQuery`, `FailedSelectQuery` et `FailedInsertQuery`. Auparavant, ces compteurs internes restaient à zéro pour les défaillances survenant avant le début de l'exécution de la requête, ce qui sous-estimait une grande catégorie de défaillances internes. [#104399](https://github.com/ClickHouse/ClickHouse/pull/104399) ([Groene AI](https://github.com/groeneai)).
* Corrige l’erreur `Code: 36. BAD_ARGUMENTS Expected literal, got {name:Type}` levée lorsqu’un query parameter est utilisé dans le paramètre `base_backup` d’une instruction `BACKUP` ou `RESTORE` (par ex. `BACKUP ... SETTINGS base_backup = S3({backup_name:String}, ...)`). La régression a été introduite dans `26.1.5` par la PR [#99205](https://github.com/ClickHouse/ClickHouse/issues/99205). Clôt [#103324](https://github.com/ClickHouse/ClickHouse/issues/103324). [#104413](https://github.com/ClickHouse/ClickHouse/pull/104413) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt brutal du serveur lors des écritures `IcebergLocal`/`IcebergS3` quand `ALTER TABLE ... DROP COLUMN` est suivi d’un `INSERT` avec `iceberg_metadata_staleness_ms` supérieur à zéro. `ALTER` invalide désormais le cache local des fichiers de métadonnées Iceberg, afin que les lectures et écritures suivantes prennent en compte le nouveau schéma. [#104419](https://github.com/ClickHouse/ClickHouse/pull/104419) ([Groene AI](https://github.com/groeneai)).
* Corrige `DROP ROLE`, `DROP USER`, `DROP SETTINGS PROFILE`, `DROP ROW POLICY`, `DROP QUOTA` et `DROP MASKING POLICY` afin de supprimer les références à l’entité supprimée de toute autre access entity qui la référençait (par ex. la liste `DEFAULT ROLE` d’un utilisateur, la liste `TO` d’un settings profile, les bénéficiaires d’une row policy) et de persister ce nettoyage sur disque. Auparavant, l’état en mémoire semblait correct, car `SHOW CREATE` filtre les UUID inconnus, mais les fichiers `.sql` sur disque conservaient des entrées orphelines `ID('<dropped-uuid>')`, et les références réapparaissaient au redémarrage suivant du serveur, provoquant des erreurs `ACCESS_ENTITY_NOT_FOUND` lors de l’exécution de distributed query. [#104427](https://github.com/ClickHouse/ClickHouse/pull/104427) ([Groene AI](https://github.com/groeneai)).
* Corrige un arrêt brutal du serveur déclenché par `azureBlobStorage`, le moteur `AzureBlobStorage` et DeltaLake sur Azure avec une connection string dont l’URL `BlobEndpoint` comporte un port vide, non numérique ou hors plage (par ex. `BlobEndpoint=http://host:abc/`). Le serveur renvoie désormais une erreur `BAD_ARGUMENTS` propre au lieu de s’interrompre dans les builds debug/sanitizer. [#104460](https://github.com/ClickHouse/ClickHouse/pull/104460) ([Groene AI](https://github.com/groeneai)).
* Autorise l’utilisation d’un identifiant non quoté comme nom d’utilisateur dans les table functions `remote` et `remoteSecure`, comme c’est déjà le cas pour les arguments de database et de table. Auparavant, une telle query échouait avec une erreur d’authentication trompeuse faisant référence à l’utilisateur `default`. [#104465](https://github.com/ClickHouse/ClickHouse/pull/104465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `Logical error: Incorrect ASTSelectWithUnionQuery (modes: M, selects: N)` déclenchée lorsque le corps d’une user-defined function SQL contient un `UNION ALL` imbriqué entre parenthèses (par ex. `CREATE FUNCTION f AS x -> (SELECT 1 UNION ALL (SELECT 1 UNION ALL SELECT 1))`). [#104477](https://github.com/ClickHouse/ClickHouse/pull/104477) ([Groene AI](https://github.com/groeneai)).
* Corrige `uniqThetaIntersect`, qui renvoyait la cardinalité du premier argument au lieu de `0` lorsque le deuxième argument est un état `uniqTheta` vide — par exemple le résultat de `uniqThetaMergeStateIf(s, predicate)` lorsque le prédicat exclut chaque ligne. [#104529](https://github.com/ClickHouse/ClickHouse/pull/104529) ([Groene AI](https://github.com/groeneai)).
* Correction de `SHOW TABLES` et `system.tables`, qui tronquaient silencieusement la liste pour les bases de données `DataLakeCatalog` adossées à des catalogues REST Iceberg (`iceberg-rest`, `onelake`, `biglake`). Lorsque le serveur de catalogue paginait la réponse `list-tables` ou `list-namespaces` (par exemple Microsoft Fabric / OneLake au-delà d'environ 50 tables par espace de noms), les tables des pages suivantes devenaient silencieusement invisibles pour `SHOW TABLES` et `system.tables`, alors qu'elles restaient interrogeables via un `SELECT` direct. `RestCatalog` suit désormais le jeton de continuation `next-page-token` défini par la spécification OpenAPI REST d'Iceberg, en cohérence avec le comportement existant de `PaimonRestCatalog` et `UnityCatalog`. [#104531](https://github.com/ClickHouse/ClickHouse/pull/104531) ([Groene AI](https://github.com/groeneai)).
* La fonction de table `input` déduit désormais sa structure à partir de la clause `FORMAT` de la requête `INSERT` englobante lorsque ce format possède un schéma fixe (`LineAsString`, `RawBLOB`, `JSONAsString`, etc.), de sorte que les utilisateurs n'ont plus à répéter la structure sous la forme `input('line String')` pour ces formats. [#104532](https://github.com/ClickHouse/ClickHouse/issues/104532). [#104533](https://github.com/ClickHouse/ClickHouse/pull/104533) ([Groene AI](https://github.com/groeneai)).
* Mise à jour du type de données des champs dans l'historique d'Iceberg, de `Int32` à `Int64`. Ferme [#94176](https://github.com/ClickHouse/ClickHouse/issues/94176). [#104579](https://github.com/ClickHouse/ClickHouse/pull/104579) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Correction de `Inconsistent AST formatting` `LOGICAL_ERROR` lors de l'analyse syntaxique d'un appel de fonction dans lequel une lambda suit une virgule, par exemple ``SELECT substring(x, `x` -> `x`)``. L'analyseur fusionnait auparavant silencieusement les arguments précédents avec le côté gauche de la lambda, produisant un appel à argument unique qui ne pouvait pas être réanalysé pour redonner le même AST. Il préserve désormais l'arité d'origine de la fonction. [#104626](https://github.com/ClickHouse/ClickHouse/pull/104626) ([Groene AI](https://github.com/groeneai)).
* `CHECK TABLE t` donne désormais priorité à une table `TEMPORARY` plutôt qu'à une table permanente du même nom lorsqu'aucun qualificatif de base de données n'est fourni, conformément à la priorité déjà utilisée par `SHOW CREATE TABLE`, `DESCRIBE TABLE`, `OPTIMIZE TABLE` et `ALTER TABLE`. Auparavant, `CHECK TABLE t` ignorait complètement les tables temporaires, ce qui entraînait un échec avec `UNKNOWN_TABLE` sur une table temporaire `Log` ou `File`, alors même que ces moteurs prennent en charge `CHECK`. Suite de [#100966](https://github.com/ClickHouse/ClickHouse/pull/100966). [#104637](https://github.com/ClickHouse/ClickHouse/pull/104637) ([Groene AI](https://github.com/groeneai)).
* Correction de la boucle d'arrêt et de redémarrage de Keeper lorsque `get /keeper/availability_zone` est envoyé avec `quorum_reads=true` à un Keeper sans `<placement>` configuré. [#104663](https://github.com/ClickHouse/ClickHouse/pull/104663) ([myeongjun](https://github.com/myeongjjun)).
* Correction d'une condition de concurrence TOCTOU dans `FutureSetFromTuple::buildOrderedSetInplace` provoquant une erreur logique. [#104673](https://github.com/ClickHouse/ClickHouse/pull/104673) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de plusieurs fonctions qui renvoyaient des résultats différents pour la même entrée selon que les arguments étaient passés sous forme de colonnes ou de constantes : `bitRotateLeft` / `bitRotateRight` (comptes de décalage aux limites), `length(FixedString)` / `concatWithSeparator` avec des entrées `LowCardinality(Nullable)`, `roundDown` sur NaN et `rightUTF8` sur de l'UTF-8 invalide. [#104710](https://github.com/ClickHouse/ClickHouse/pull/104710) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de `anyHeavy`, qui renvoyait une valeur non dominante lorsque la valeur la plus fréquente était la valeur par défaut de la colonne et que les données étaient réparties sur plusieurs `parts` `MergeTree` (chemin de lecture de colonnes creuses). [#104712](https://github.com/ClickHouse/ClickHouse/pull/104712) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige plusieurs défauts dans la gestion des contraintes de paramètres : les contraintes `MergeTreeSettings` déclarées sur le nom canonique d’un paramètre pouvaient être contournées en écrivant via un alias de ce paramètre ; la vérification de contrainte `disallowed_values` lançait une exception sur les chemins de limitation (requêtes secondaires, workers `ON CLUSTER`, vues `SQL SECURITY DEFINER`) au lieu d’ignorer silencieusement la modification. [#104737](https://github.com/ClickHouse/ClickHouse/pull/104737) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une exception `LOGICAL_ERROR` (`Metadata is not initialized`) levée par `OPTIMIZE TABLE`, `ALTER TABLE ... DELETE`, `ALTER TABLE ... ADD COLUMN` et d’autres variantes de `ALTER` sur une table `Iceberg` / `IcebergLocal` / `DeltaLake` / `Hudi` attachée à la demande dont les métadonnées n’avaient pas encore été chargées (généralement après un redémarrage du server, ou après l’échec d’une précédente écriture de métadonnées ayant laissé sur disque un fichier de métadonnées corrompu). L’opération s’exécute désormais normalement si les métadonnées se chargent correctement, ou expose l’échec de chargement sous-jacent sous la forme d’une exception ordinaire visible par l’utilisateur, au lieu d’interrompre le server dans les builds debug / sanitizer. [#104738](https://github.com/ClickHouse/ClickHouse/pull/104738) ([Groene AI](https://github.com/groeneai)).
* Corrige un segfault dû à un bug de use-after-free dans `AvroConfluentRowInputFormat`. [#104751](https://github.com/ClickHouse/ClickHouse/pull/104751) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Les variantes scalaires de `numericIndexedVectorPointwiseMultiply`, `numericIndexedVectorPointwiseDivide`, `numericIndexedVectorPointwiseEqual` et `numericIndexedVectorPointwiseNotEqual` lèvent désormais `INCORRECT_DATA` lorsqu’elles sont appelées avec un scalaire `UInt64` supérieur à `Int64::max`. [#104784](https://github.com/ClickHouse/ClickHouse/pull/104784) ([FriendLey](https://github.com/FriendLey)).
* Corrige un bug où la redéfinition manuelle d’un paramètre via son alias (par ex. `SET enable_analyzer = 1` au lieu de `SET allow_experimental_analyzer = 1`) après l’application d’un paramètre `compatibility` pouvait être annulée par une modification ultérieure du paramètre `compatibility`. [#104829](https://github.com/ClickHouse/ClickHouse/pull/104829) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige la désactivation du logger AWS après [https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d](https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d). [#104837](https://github.com/ClickHouse/ClickHouse/pull/104837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige trois fonctions supplémentaires qui renvoyaient des résultats différents pour une même entrée selon que les arguments étaient fournis sous forme de colonnes ou de constantes : `transform` (et, par son intermédiaire, `caseWithExpression`) avec une valeur par défaut constante `Date`/`Date32`/`Enum`/`FixedString`, les opérateurs de comparaison entre un `String` et un `FixedString` constant, et `if`/`ifNull`/`nullIf` avec une branche `FixedString` sous une condition constante. [#104858](https://github.com/ClickHouse/ClickHouse/pull/104858) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige l’arrêt du server avec `Bad cast from type DB::ColumnConst to DB::ColumnNullable` lors du partition pruning pour les tables `MergeTree` lorsque la partition expression contient une chaîne de fonctions qui se réduit à une unique valeur constante (comme `floor(NULL, toRelativeYearNum(...))`). [#104861](https://github.com/ClickHouse/ClickHouse/pull/104861) ([Groene AI](https://github.com/groeneai)).
* Corrige une data race `ThreadSanitizer` dans le constructeur par copie de `ContextData` : `table_function_results` était copié depuis l’objet source sans prendre `table_function_results_mutex`, de sorte qu’un writer concurrent de `Context::executeTableFunction` pouvait entrer en concurrence avec la lecture non synchronisée dans le constructeur par copie. [#104879](https://github.com/ClickHouse/ClickHouse/pull/104879) ([Groene AI](https://github.com/groeneai)).
* Corrige les vérifications de cohérence des data parts pour les types à structure dynamique et détecte les `columns_substreams.txt` corrompus. Nouvelle soumission de [https://github.com/ClickHouse/ClickHouse/pull/103858](https://github.com/ClickHouse/ClickHouse/pull/103858) avec des modifications supplémentaires. [#104888](https://github.com/ClickHouse/ClickHouse/pull/104888) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’une condition de concurrence entre DROP et UNDROP dans DatabaseCatalog. [#104915](https://github.com/ClickHouse/ClickHouse/pull/104915) ([Azat Khuzhin](https://github.com/azat)).
* Correction du redimensionnement dynamique du filesystem cache avec des segments partiellement téléchargés, y compris la restauration de la comptabilisation après un échec d’éviction. [#104921](https://github.com/ClickHouse/ClickHouse/pull/104921) ([Antonio Andelic](https://github.com/antonio2368)).
* `DETACH TABLE` sur une temporary table (sans le mot-clé `TEMPORARY`) renvoie désormais correctement `SYNTAX_ERROR`, conformément au comportement de `DETACH TEMPORARY TABLE`. Auparavant, cela définissait silencieusement un indicateur interne `is_detached`, puis se terminait sans erreur. Pour supprimer une temporary table, utilisez `DROP TEMPORARY TABLE` ou `DROP TABLE` (ce dernier résout la temporary table via `Context::ResolveExternal`). Clôt [#103475](https://github.com/ClickHouse/ClickHouse/issues/103475). [#104943](https://github.com/ClickHouse/ClickHouse/pull/104943) ([Groene AI](https://github.com/groeneai)).
* La table function `filesystem` respecte désormais `max_memory_usage` / `max_server_memory_usage` lors du chargement du contenu des fichiers. Auparavant, des lectures de contenu volumineuses ou de nombreuses lectures parallèles pouvaient dépasser la limite sans lever `MEMORY_LIMIT_EXCEEDED`, puis se faire tuer par l’OOM killer. [#104956](https://github.com/ClickHouse/ClickHouse/pull/104956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un `LOGICAL_ERROR` déclenché lors du filtrage de `system.detached_tables` sur `uuid` (par ex. `SELECT count() FROM system.detached_tables WHERE uuid = '...'`). La query renvoie désormais le résultat attendu au lieu d’interrompre le server. [#104979](https://github.com/ClickHouse/ClickHouse/pull/104979) ([Groene AI](https://github.com/groeneai)).
* `flattenTuple` ne lève plus de `LOGICAL_ERROR` lorsqu’elle est appelée sur un tuple dont la structure imbriquée ne contient que des feuilles `Tuple()` vides (par ex. `Tuple(c0 Array(Tuple()))` ou `Tuple(c0 Tuple())`). De telles entrées produisent désormais une exception `ILLEGAL_TYPE_OF_ARGUMENT` visible par l’utilisateur, expliquant que le résultat de l’aplatissement serait un tuple vide. [#104989](https://github.com/ClickHouse/ClickHouse/pull/104989) ([Groene AI](https://github.com/groeneai)).
* Correction d’un arrêt brutal du server et d’un bug produisant des résultats incorrects en silence lors de l’exécution de queries sur `loop(remote(...))` (ou tout `loop()` encapsulant un storage pouvant différer l’aggregation) avec `GROUP BY`. Le planner externe ajoutait auparavant `MergingAggregatedStep` en fonction de l’étape de processing signalée par le storage interne, mais `LoopSource` matérialise toujours son select interne avec `QueryProcessingStage::Complete` et émet de simples chunks de colonnes, si bien que `MergingAggregatedTransform` déclenchait un `LOGICAL_ERROR` (`Chunk info was not set for chunk in MergingAggregatedTransform`) avec `enable_parallel_replicas = 1` et supprimait silencieusement l’aggregation externe dans les autres cas. [#105001](https://github.com/ClickHouse/ClickHouse/pull/105001) ([Groene AI](https://github.com/groeneai)).
* `clickhouse-benchmark --reconnect` (forme simple, sans valeur) a été involontairement cassé en 25.4 par une modification qui transformait `--reconnect` en option entière, nécessitant une valeur. Cette forme fonctionne désormais à nouveau et équivaut à `--reconnect=1` (reconnexion à chaque query). [#105006](https://github.com/ClickHouse/ClickHouse/pull/105006) ([Groene AI](https://github.com/groeneai)).
* Correction d’une sortie JSON mal formée pour les noms de colonnes se terminant par des séquences UTF-8 incomplètes. [#105012](https://github.com/ClickHouse/ClickHouse/pull/105012) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction d’une perte silencieuse de données après `EXCHANGE TABLES` ou `CREATE OR REPLACE TABLE` sur la source table d’une vue matérialisée. L’arête de dépendance entre la vue matérialisée et sa table source est désormais conservée sur le nom d’origine afin qu’elle continue à se déclencher lors des inserts. Régression introduite par [#98779](https://github.com/ClickHouse/ClickHouse/issues/98779) ; rétablit le comportement antérieur à la régression. [#105029](https://github.com/ClickHouse/ClickHouse/pull/105029) ([Sema Checherinda](https://github.com/CheSema)).
* Correction de `CANNOT_COMPILE_CODE Could not find symbol __fixunsdfti` lors de la compilation JIT d'expressions convertissant un `Float` en `UInt128`, comme `toUInt128(<Float64 expression>)`. Les builtins non signés de compiler-rt pour la conversion de flottants en entiers 128 bits manquaient dans le résolveur de symboles JIT. Corrige [#105031](https://github.com/ClickHouse/ClickHouse/issues/105031). [#105048](https://github.com/ClickHouse/ClickHouse/pull/105048) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de l'absence d'affichage par `clickhouse-local` des messages de log d'une requête en échec lorsque `send_logs_level` est défini. [#105067](https://github.com/ClickHouse/ClickHouse/pull/105067) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de résultats incorrects lorsque la même vue paramétrée est référencée plus d'une fois dans la même requête avec des valeurs d'argument différentes. Auparavant, l'analyseur regroupait ces appels en un seul, supprimant silencieusement tous les filtres sauf le premier. [#105170](https://github.com/ClickHouse/ClickHouse/pull/105170) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'affichage en double de la ligne `TOTALS` en bas du tableau de résultats dans l'interface web `play.html`. [#103803](https://github.com/ClickHouse/ClickHouse/pull/103803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Rejet des vecteurs non finis (`NaN`, `±Inf`) lors de la recherche vectorielle (qu'il s'agisse des vecteurs recherchés ou des vecteurs de référence) ; ils provoquaient auparavant un comportement indéfini dans `usearch`. [#104079](https://github.com/ClickHouse/ClickHouse/pull/104079) ([Groene AI](https://github.com/groeneai)).
* PromQL : correction de l'opérateur d'agrégation pour les vecteurs vides. [#104425](https://github.com/ClickHouse/ClickHouse/pull/104425) ([Vitaly Baranov](https://github.com/vitlibar)).
* PromQL : correction de la gestion des erreurs dans l'API de requête Prometheus. [#104741](https://github.com/ClickHouse/ClickHouse/pull/104741) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction d'une condition de concurrence dans `MergeTreeTransaction::afterCommit` où, après une perte de connexion entre l'écriture du `CSN` de commit dans ZooKeeper et la finalisation de la transaction, la réponse `COMMIT` pouvait parvenir au client avant que les nouveaux `creation_csn` / `removal_csn` ne deviennent visibles dans `system.parts`. [#104708](https://github.com/ClickHouse/ClickHouse/pull/104708) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Correction d'une croissance exponentielle de la mémoire dans l'analyseur KQL lors de la conversion d'un indexage de tableaux imbriqués (`arr[arr[arr[...]]]`). [#105142](https://github.com/ClickHouse/ClickHouse/pull/105142) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de résultats incorrects pour `RIGHT ANY JOIN` lorsque la table de droite comporte plusieurs lignes par clé et que le bloc de sortie est scindé en raison de limites de taille. Corrige [#99431](https://github.com/ClickHouse/ClickHouse/issues/99431). [#102064](https://github.com/ClickHouse/ClickHouse/pull/102064) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Vérification du dépassement de pile dans le lecteur `Avro` lors de la désérialisation de types imbriqués. [#102417](https://github.com/ClickHouse/ClickHouse/pull/102417) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de lignes dupliquées dans `system.completions` pour les paramètres `MergeTree` — chaque nom de paramètre apparaissait deux fois, car `getMergeTreeSettings` et `getReplicatedMergeTreeSettings` étaient tous deux exportés malgré des noms de paramètres identiques. Corrige [#102013](https://github.com/ClickHouse/ClickHouse/issues/102013). [#102015](https://github.com/ClickHouse/ClickHouse/pull/102015) ([Groene AI](https://github.com/groeneai)).
* Correction de `StorageObjectStorageQueue` (`S3Queue`, `AzureQueue`), qui bloquait l’arrêt tant que les fichiers partiellement traités n’avaient pas été entièrement lus depuis l’object storage. La source interrompt désormais immédiatement la lecture lors de l’arrêt ; la déduplication garantit que les lignes déjà envoyées vers la table de destination avant l’arrêt ne sont pas dupliquées lorsque le fichier est retenté au démarrage suivant. [#103126](https://github.com/ClickHouse/ClickHouse/pull/103126) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Correction des inserts multi-blocs dans le table engine `Alias` avec `insert_deduplication_token`, afin que tous les blocks soient conservés. [#103246](https://github.com/ClickHouse/ClickHouse/pull/103246) ([Enric Calabuig](https://github.com/eclbg)).
* Correction de `JSONHas` et `JSONExtractBool` sur les columns `JSON` natives, qui renvoyaient la valeur extraite (convertie en `UInt8`) au lieu de `0`/`1`. [#103313](https://github.com/ClickHouse/ClickHouse/pull/103313) ([zxuhan7](https://github.com/zxuhan)).
* Protection du input format `CustomSeparated` contre les données malformées ou malveillantes qui omettent `format_custom_row_after_delimiter`. La détection d’en-tête, l’inférence de schéma et les lignes avec un nombre variable de columns accumulaient auparavant des fields sans limite et pouvaient allouer plusieurs gigaoctets de mémoire avant d’échouer. Les lectures échouent désormais avec `INCORRECT_DATA` dès qu’une seule ligne contient plus de 1,000,000 fields. [#103404](https://github.com/ClickHouse/ClickHouse/pull/103404) ([Groene AI](https://github.com/groeneai)).
* Correction de `RESTORE` des tables `MergeTree` replicated, afin que l’attachement des parts restaurées utilise `backup_restore_keeper_max_retries` au lieu du budget habituel de tentatives Keeper pour les insert. [#104610](https://github.com/ClickHouse/ClickHouse/pull/104610) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction de résultats erronés pour `WHERE p AND <LowCardinality(Nullable(int)) constant>` sur les tables `MergeTree`. Auparavant, de telles queries renvoyaient zéro ligne, car le part pruning déduisait une valeur par défaut `NULL` du type `LowCardinality(Nullable(...))` et synthétisait une garde `notEquals(x, NULL)`, ce qui élaguait chaque part. [#104767](https://github.com/ClickHouse/ClickHouse/pull/104767) ([Groene AI](https://github.com/groeneai)).
* Correction d’un résultat d’aggregation incorrect lors d’un regroupement par une fonction non injective d’une column qui est aussi la partition key (par ex. `PARTITION BY a` avec `GROUP BY intDiv(a, 2)` ou `a % 2`). Les values provenant de partitions différentes mais correspondant au même groupe n’étaient pas fusionnées, ce qui produisait des lignes de groupe dupliquées avec `allow_aggregate_partitions_independently = 1`. [#104869](https://github.com/ClickHouse/ClickHouse/pull/104869) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’une condition de concurrence dans le transfert de snapshot de `Keeper`, où un snapshot pouvait être supprimé ou déplacé pendant son envoi à un follower en cours de récupération. [#104941](https://github.com/ClickHouse/ClickHouse/pull/104941) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’un bug silencieux produisant des résultats erronés dans `hilbertEncode` et `mortonEncode`, où un premier argument `Tuple` non constant (masque de plage) utilisait les values de la ligne 0 pour piloter le décalage de bits de chaque ligne. Les fonctions calculent désormais les values du masque pour chaque ligne, de sorte que le résultat ne dépend plus du fait que l’entrée soit constante ni de la taille du block. [#104992](https://github.com/ClickHouse/ClickHouse/pull/104992) ([Groene AI](https://github.com/groeneai)).
* Correction de `clickhouse-local`, qui ignorait silencieusement la configuration au niveau utilisateur (`profiles`, `users`, `quotas`, paramètres de contrôle d’accès) lorsque le configuration file était détecté automatiquement à partir de `./clickhouse-local.xml`, `~/.clickhouse-local/config.xml` ou `/etc/clickhouse-local/config.xml`. Auparavant, ces paramètres n’étaient appliqués que lorsque `--config-file` était passé ou que `./config.xml` existait dans le current directory ; désormais, tous les chemins de discovery se comportent de manière cohérente. [#105008](https://github.com/ClickHouse/ClickHouse/pull/105008) ([Groene AI](https://github.com/groeneai)).
* Correction d’un problème où les colonnes `BFloat16` renvoyaient silencieusement zéro correspondance lorsqu’elles étaient comparées à un littéral de chaîne (par ex. `WHERE bf16_col = '49.9'`). [#105042](https://github.com/ClickHouse/ClickHouse/pull/105042) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de `CLEAR COLUMN` et de la gestion du TTL pendant les merges pour `SummingMergeTree`, `AggregatingMergeTree` et `CoalescingMergeTree` lorsque les colonnes requises pour le merge sont absentes ou expirées. Clôt [#101953](https://github.com/ClickHouse/ClickHouse/issues/101953). [#105203](https://github.com/ClickHouse/ClickHouse/pull/105203) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’une situation de concurrence entre `DNSCacheUpdater::run` et `Context::reloadClusterConfig` grâce à l’ajout d’une vérification explicite contre les valeurs nulles pour `shared->clusters_config` avant son déréférencement. [#105220](https://github.com/ClickHouse/ClickHouse/pull/105220) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Correction de l’analyse `best_effort` des dates et heures pour `toDateTime64` avec une précision `ms` et `ns`. [#105233](https://github.com/ClickHouse/ClickHouse/pull/105233) ([Kaviraj Kanagaraj](https://github.com/kavirajk)).
* Correction de `OSIOWaitMicroseconds`, qui signalait l’attente d’E/S sur toute la durée de vie du thread au lieu de l’attente d’E/S par query. [#105246](https://github.com/ClickHouse/ClickHouse/pull/105246) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Le table engine `Hudi` génère désormais `INCORRECT_DATA` (une exception normale au niveau de la query) au lieu de `LOGICAL_ERROR` lorsqu’un fichier Parquet dans le répertoire de la table ne respecte pas la convention de nommage Hudi `[FileId]_[FileWriteToken]_[Timestamp].[extension]`. Auparavant, de tels noms de fichiers provoquaient une exception dans les builds de débogage. [#105266](https://github.com/ClickHouse/ClickHouse/pull/105266) ([Groene AI](https://github.com/groeneai)).
* Correction d’un interblocage dans `ParallelFormattingOutputFormat` en cas d’échec de planification : lorsque `scheduleFormatterThreadForUnitWithNumber` lève une exception (par ex. `CANNOT_SCHEDULE_TASK`), l’unité restait dans l’état `READY_TO_FORMAT` sans thread de formatage pour la traiter, ce qui entraînait un blocage. L’appel de planification est désormais encapsulé dans `try`/`catch` et tout échec est redirigé via `onBackgroundException` afin que le collector s’arrête proprement. [#105275](https://github.com/ClickHouse/ClickHouse/pull/105275) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’une perte silencieuse de données dans les async inserts `Distributed` lors de la récupération après un arrêt anormal : si le dernier fichier `.bin` d’un batch sauvegardé était intact mais qu’un fichier intermédiaire était corrompu, `DistributedAsyncInsertBatch::recoverBatch` ne validait que l’en-tête du dernier fichier, puis `sendBatch` marquait l’ensemble du batch — y compris les fichiers intacts — comme défectueux, entraînant la perte de leurs rows. L’en-tête de chaque fichier est désormais validé individuellement afin que seul le fichier réellement défectueux soit déplacé vers `broken/` et que les rows restantes atteignent le shard distant. [#105281](https://github.com/ClickHouse/ClickHouse/pull/105281) ([Groene AI](https://github.com/groeneai)).
* Correction d’une régression dans `clickhouse extract-from-config --try` : lorsque la config utilisait des attributs `from_env` et n’avait pas d’élément `include_from` (ou en avait un pointant vers un fichier manquant), toutes les substitutions `from_env` étaient silencieusement ignorées et renvoyaient des chaînes vides. Cela cassait la découverte du port dans le point d’entrée Docker en 26.2.5. Clôt [#101704](https://github.com/ClickHouse/ClickHouse/issues/101704). [#105283](https://github.com/ClickHouse/ClickHouse/pull/105283) ([Groene AI](https://github.com/groeneai)).
* Correction d’un échec de `INSERT INTO` dans une table `SQLite`, avec une erreur de syntaxe SQLite, lorsque la valeur insérée est un `Enum`, un `JSON` ou une `AggregateFunction` dont la représentation textuelle contient une apostrophe. Le paramètre `output_format_values_escape_quote_with_quote` est désormais respecté par les sérialisations correspondantes (auparavant, seuls `String` et `FixedString` le respectaient). [#105285](https://github.com/ClickHouse/ClickHouse/pull/105285) ([Groene AI](https://github.com/groeneai)).
* Correction de `Code: 44. ILLEGAL_COLUMN: Cannot add column ...: column with this name already exists`, déclenchée par des requêtes distribuées avec `allow_push_predicate_ast_for_distributed_subqueries = 1` (par défaut) lorsqu’un tuple `GLOBAL IN` correspond à une sous-requête dont la projection contient des noms de colonnes en double, par ex. `(x, y) GLOBAL IN (SELECT number, number FROM numbers(5))`. [#105290](https://github.com/ClickHouse/ClickHouse/pull/105290) ([Groene AI](https://github.com/groeneai)).
* Correction de `reinterpret` vers `Array(LowCardinality(...))`, qui renvoyait à l’exécution une erreur `NOT_IMPLEMENTED` trompeuse ; la fonction renvoie désormais `ILLEGAL_TYPE_OF_ARGUMENT` lors de la vérification des types. [#105301](https://github.com/ClickHouse/ClickHouse/pull/105301) ([Raúl Marín](https://github.com/Algunenano)).
* `minMap`/`maxMap` (forme tableau) et `minMappedArrays`/`maxMappedArrays` traitent désormais `NaN` de manière cohérente avec `ORDER BY` : `NaN` est traité en dernier (renvoyé uniquement lorsque toutes les valeurs sont `NaN`). Auparavant, les résultats dépendaient de la position de `NaN` dans les données en raison de la sémantique de comparaison non ordonnée d’IEEE 754, et ne concordaient pas avec la forme à argument `Map` de `minMap`/`maxMap`, corrigée dans [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448). [#105331](https://github.com/ClickHouse/ClickHouse/pull/105331) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une fuite de mémoire dans le cache `ColumnsDescription` propre à chaque table pour les tables de la famille `MergeTree` avec des colonnes `Nested`. Les entrées n’étaient jamais évincées au fil des cycles `ALTER ADD COLUMN`/`DROP COLUMN` lorsque `share_nested_offsets = 1` (par défaut). [#105376](https://github.com/ClickHouse/ClickHouse/pull/105376) ([Groene AI](https://github.com/groeneai)).
* Correction de l’exception `BAD_ARGUMENTS` "C'est un bug ! Seuls les types entiers sont pris en charge par `__bitWrapperFunc`", déclenchée lorsqu’un `SELECT` avec un index de saut `TYPE set(N)` comporte un atome `WHERE` dont le type de résultat est `Float`, `BFloat16` ou tout autre type non entier (par exemple `WHERE c0 + 0.1` ou `WHERE log(c0)`). Dans ce cas, l’index de saut repasse désormais par le chemin de filtre normal. [#105384](https://github.com/ClickHouse/ClickHouse/pull/105384) ([Groene AI](https://github.com/groeneai)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* Ne plus utiliser les bibliothèques et fichiers d'en-tête système de `compiler-rt`. Résout [#91475](https://github.com/ClickHouse/ClickHouse/issues/91475). [#102857](https://github.com/ClickHouse/ClickHouse/pull/102857) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Actualiser l'image de base Docker distroless pour corriger des CVE OpenSSL dans `libssl3t64`. [#103583](https://github.com/ClickHouse/ClickHouse/pull/103583) ([Rahul Nair](https://github.com/motsc)).
* Récupérer de manière fiable la clé GPG lors des releases en chaînant plusieurs serveurs de clés Ubuntu, au lieu de subir des dépassements de délai sur `keyserver.ubuntu.com`. [#103834](https://github.com/ClickHouse/ClickHouse/pull/103834) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Supprimer et interdire les vérifications `CMake` à la compilation (`check_*`, `try_compile`, `try_run`). Le compilateur et la chaîne d'outils étant fixes, la détection de fonctionnalités à la configuration est inutile et désormais bloquée à l'échelle du projet ; tout comportement spécifique à une version doit être explicitement conditionné par `CMAKE_CXX_COMPILER_VERSION`. [#103980](https://github.com/ClickHouse/ClickHouse/pull/103980) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mettre à jour `libarchive` de 3.8.6 à 3.8.7. [#104047](https://github.com/ClickHouse/ClickHouse/pull/104047) ([Robert Schulze](https://github.com/rschu1ze)).
* Mettre à jour `mongo-c-driver` vers la version 2.3.0. [#104300](https://github.com/ClickHouse/ClickHouse/pull/104300) ([Raúl Marín](https://github.com/Algunenano)).
* Mettre à jour les dépendances LLVM pour 22.x. [#104381](https://github.com/ClickHouse/ClickHouse/pull/104381) ([Joshua Carp](https://github.com/jmcarp)).
* Permettre la compilation sur macOS et FreeBSD des classes du client intégré et du descripteur PTY en utilisant les fonctions POSIX portables `posix_openpt` / `grantpt` / `unlockpt`, et en supprimant les gardes `#if` spécifiques à Linux. [#104436](https://github.com/ClickHouse/ClickHouse/pull/104436) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mettre à niveau `librdkafka` vers la version 2.14.1. [#105222](https://github.com/ClickHouse/ClickHouse/pull/105222) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).

<div id="264">
  ### Version de ClickHouse 26.4, 2026-04-30. [Présentation](https://presentations.clickhouse.com/2026-release-26.4/), [Vidéo](https://www.youtube.com/watch?v=9lSVy7k2EoI)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* L’opérateur `IN` utilise désormais une sémantique de valeur exacte pour le type `Bool` : seules les valeurs `0` et `1` de l’ensemble correspondent à des valeurs `Bool`. Auparavant, les valeurs numériques supérieures à `255` dans l’ensemble `IN` étaient incorrectement ramenées à `true` lors de la comparaison avec `Bool`, si bien que `SELECT CAST(1, 'Bool') IN (256)` renvoyait 1. Désormais, il renvoie correctement `0`. Clôt [#92980](https://github.com/ClickHouse/ClickHouse/issues/92980). [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* La bibliothèque H3 a été mise à jour vers la v4, ce qui améliore la précision des calculs de longueur, de surface et d’autres mesures. Ce changement n’est pas rétrocompatible, car les nouveaux résultats diffèrent des précédents. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Interdit l’utilisation de `SELECT` comme identifiant non délimité dans un élément de la liste d’expressions `WITH`. [#101059](https://github.com/ClickHouse/ClickHouse/pull/101059) ([Aruj Bansal](https://github.com/arujbansal)).
* Ce correctif modifie la manière dont la table Merge gérera les colonnes virtuelles. Si la table sous-jacente contient `_table` ou `_database`, ces colonnes seront lues depuis le stockage ; sinon, elles seront remplies après l’étape de lecture à l’aide de l’étape d’expression. [#101742](https://github.com/ClickHouse/ClickHouse/pull/101742) ([Mikhail Artemenko](https://github.com/Michicosun)).
* L’opérateur `IN` rejette désormais aussi les conversions `Decimal` avec perte à l’intérieur des types composites (`Tuple`, `Array`, `Map`), ce qui aligne son comportement sur celui des comparaisons scalaires de premier niveau. Auparavant, les vérifications de précision ne s’appliquaient qu’aux valeurs scalaires de premier niveau : par exemple, `CAST('33.3', 'Decimal64(1)') IN (33.33)` renvoyait correctement `0`, mais `CAST(['33.3'], 'Array(Decimal64(1))') IN ([33.33])` renvoyait incorrectement `1`, car la conversion avec perte se produisait à l’intérieur d’un `Array`. Désormais, les deux cas renvoient correctement `0`. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Les valeurs par défaut de `http_max_fields` ont été réduites de 1,000,000 à 1,000 et celles de `http_max_field_name_size` de 128 KB à 4 KB afin de limiter l’utilisation mémoire avant authentification par les connexions HTTP. Les paramètres `http_max_request_header_size` et `http_headers_read_timeout` ont été ajoutés. Les utilisateurs qui dépendent des anciennes limites plus élevées peuvent les rétablir via les paramètres. [#103285](https://github.com/ClickHouse/ClickHouse/pull/103285) ([Sema Checherinda](https://github.com/CheSema)).

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

* Ajout du spilling automatique pour les hash joins et les parallel hash joins, en les convertissant en grace hash join lorsque la limite mémoire est atteinte. Ce comportement est contrôlé par `max_bytes_before_external_join`. [#97813](https://github.com/ClickHouse/ClickHouse/pull/97813) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Ajout de la prise en charge d’Arrow Flight SQL. [#91170](https://github.com/ClickHouse/ClickHouse/pull/91170) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Ajout de la prise en charge de l’Incremental read pour les table engines `Paimon`, avec suivi de progression des snapshots via Keeper, y compris des lectures delta ciblées de snapshots via `paimon_target_snapshot_id`, et extension de la couverture des tests pour les scénarios de type mapping, de partition pruning et d’Incremental read. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* La fonction `stem` n’est plus expérimentale (auparavant, il fallait activer le paramètre `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)). Vous pouvez désormais facilement appliquer la racinisation à tous les mots/tokens des colonnes `String`, `FixedString`, `Array([Fixed]String)`, `Nullable`, `LowCardinality` et `Const` avec la fonction `stem`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Implémentation d’un nouveau comportement pour `max_insert_block_size_rows`, `max_insert_block_size_bytes`, `min_insert_block_size_rows`, `min_insert_block_size_bytes` lors du squashing, sous le paramètre de compatibilité `use_strict_insert_block_limits`. [#94207](https://github.com/ClickHouse/ClickHouse/pull/94207) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Ajout de la fonction `arrayAutocorrelation(arr [, max_lag])`, qui calcule l’autocorrélation normalisée d’un tableau numérique pour chaque décalage. Prend en charge les types de tableaux d’entiers, de flottants et de décimaux. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* Ajout de la fonction SQL `obfuscateQuery`. Ferme [#98010](https://github.com/ClickHouse/ClickHouse/issues/98010). [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* Ajout de la prise en charge des types Map et JSON/Object comme dictionary attributes. Les dictionnaires peuvent désormais stocker et récupérer des types complexes, notamment Map(String, String), Map(String, Array(String)), JSON et Nullable(JSON), dans les layouts FLAT et HASHED. [#98627](https://github.com/ClickHouse/ClickHouse/pull/98627) ([yanglongwei](https://github.com/ylw510)).
* Ajout de deux nouveaux MergeTree settings — `replicated_fetches_min_part_level` et `replicated_fetches_min_part_level_timeout_seconds` — qui permettent aux répliques d’éviter de récupérer auprès de leurs pairs des parts fraîchement insérées (non fusionnées), réduisant ainsi la surcharge de réplication lors d’une ingestion intensive. [#98625](https://github.com/ClickHouse/ClickHouse/pull/98625) ([tanner-bruce](https://github.com/tanner-bruce)).
* Ajout de la prise en charge des skip indexes MergeTree pour les JSON columns à l’aide de JSONAllPaths avec les types d’index bloom\_filter, tokenbf\_v1, ngrambf\_v1 et text (inversé), permettant de sauter des granules en fonction de l’ensemble des JSON paths présents dans chaque granule. [#98886](https://github.com/ClickHouse/ClickHouse/pull/98886) ([Pavel Kruglov](https://github.com/Avogar)).
* La fonction `printf` prend désormais en charge les format strings non constants, ce qui permet d’utiliser des motifs de format différents pour chaque ligne selon les valeurs des colonnes. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash ](https://github.com/Onyx2406)).
* Ajout d’un nouvel index de projection, `commit_order`, qui réorganise les données dans l’ordre d’insertion. [#99004](https://github.com/ClickHouse/ClickHouse/pull/99004) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Ajout de la fonction `highlight`, qui entoure les occurrences des termes de recherche dans une chaîne de texte avec des balises HTML (par défaut `<em>`/`</em>`). Prend en charge la correspondance ASCII insensible à la casse, la fusion automatique des correspondances qui se chevauchent et des balises d'ouverture/fermeture personnalisées. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* Mise en œuvre de quotas par hash de requête normalisée pour protéger les services ClickHouse publics contre les abus. 1. Prise en charge de `NORMALIZED_QUERY_HASH` comme type de quota key — avec des buckets de quotas distincts pour chaque requête normalisée unique, de sorte que `CREATE QUOTA q KEYED BY normalized_query_hash` suit chaque requête distincte indépendamment. 2. Prise en charge de `QUERIES_PER_NORMALIZED_HASH` comme type de ressource de quota -- limite le nombre maximal d'exécutions d'une même requête normalisée au cours d'un intervalle, de sorte que `MAX queries_per_normalized_hash = 100` empêche qu'un même query pattern soit exécuté plus de 100 fois. [#99586](https://github.com/ClickHouse/ClickHouse/pull/99586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les utilisateurs peuvent désormais écrire des requêtes avec `NATURAL JOIN`, qui met automatiquement en correspondance toutes les colonnes portant le même nom et déduplique ces colonnes dans le résultat. [#99840](https://github.com/ClickHouse/ClickHouse/pull/99840) ([Peter Nguyen](https://github.com/petern48)).
* Prise en charge de `SET TIME ZONE 'tz'` comme alias de `SET session_timezone`. [#99883](https://github.com/ClickHouse/ClickHouse/pull/99883) ([phulv94](https://github.com/phulv94)).
* Ajout de la prise en charge des requêtes paramétrées dans l'interface web (`play.html`) : les query parameters comme `{name:Type}` sont détectés et des champs de saisie s'affichent pour permettre de renseigner leurs valeurs. [#100041](https://github.com/ClickHouse/ClickHouse/pull/100041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de la clause SQL standard `VALUES` comme expression de table dans `FROM`, par ex. `SELECT * FROM (VALUES (1, 'a'), (2, 'b')) AS t(id, val)`. [#100143](https://github.com/ClickHouse/ClickHouse/pull/100143) ([Desel72](https://github.com/Desel72)).
* Ajout d'unités compatibles PostgreSQL à l'opérateur `EXTRACT` : `EPOCH`, `DOW`, `DOY`, `ISODOW`, `ISOYEAR`, `WEEK`, `CENTURY`, `DECADE`, `MILLENNIUM`. Correction également de `EXTRACT(WEEK FROM date)`, qui renvoyait auparavant une erreur. [#100274](https://github.com/ClickHouse/ClickHouse/pull/100274) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la prise en charge des littéraux d'intervalle composés conformes au standard SQL avec qualificateurs de plage `TO`, par ex. `INTERVAL '1:30' HOUR TO MINUTE`. Ils sont décomposés en interne en sommes d'intervalles. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* Ajout de metrics asynchrones pour la mémoire tampon TCP du noyau, en réception et en émission (`sk_rmem_alloc`, `sk_wmem_alloc`), des sockets du pool de connexions HTTP, rapportées sous forme de percentiles p50/p75/p90/p95 et de totaux par groupe de connexions. [#100575](https://github.com/ClickHouse/ClickHouse/pull/100575) ([Sema Checherinda](https://github.com/CheSema)).
* Ajout d'une interface web de profiling jemalloc pour ClickHouse Keeper, disponible à l'adresse `/jemalloc` sur le port HTTP control. [#100606](https://github.com/ClickHouse/ClickHouse/pull/100606) ([murphy-4o](https://github.com/murphy-4o)).
* Mise en œuvre de la commande `SYSTEM FLUSH OBJECT STORAGE QUEUE db.table PATH 'x'` pour les modes ordered et unordered. [#100709](https://github.com/ClickHouse/ClickHouse/pull/100709) ([Bharat Nallan](https://github.com/bharatnc)).
* Ajout de la fonction `JSONAllValues`, qui renvoie toutes les valeurs d’une colonne `JSON` sous forme de `Array(String)`, avec des valeurs sérialisées en représentation textuelle et ordonnées par nom de chemin. Ajout de la prise en charge d’un text index pour l’expression `JSONAllValues` sur les colonnes `JSON`. Lorsqu’un text index est créé sur `JSONAllValues(json_column)`, il est automatiquement utilisé pour filtrer les requêtes sur les sous-colonnes `JSON` (par exemple, `json_column.key1 = 'value'`). [#100730](https://github.com/ClickHouse/ClickHouse/pull/100730) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout d’un nouveau paramètre `input_format_column_name_matching_mode`, qui permet différents niveaux de sensibilité à la casse pour les input formats. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* Ajout de la commande `watch` à `clickhouse-keeper-client`, avec prise en charge des watches dans les commandes `get`, `exists` et `ls`. [#100834](https://github.com/ClickHouse/ClickHouse/pull/100834) ([Den Kalantaevskii](https://github.com/Diskein)).
* Ajout de la requête `getChildrenRecursive` (ListRecursive) à ClickHouse Keeper et de la commande `lsr` à `clickhouse-keeper-client`. Cela résout [#99916](https://github.com/ClickHouse/ClickHouse/issues/99916). [#100998](https://github.com/ClickHouse/ClickHouse/pull/100998) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout de la nouvelle fonction `arrayTranspose`, qui prend un tableau bidimensionnel (matrice) et le transpose : `SELECT arrayTranspose([[1, 2, 3], [4, 5, 6]])`. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* Le paramètre `auto_statistics_types mergetree` a désormais pour valeur par défaut `'minmax, uniq'` — des statistiques minmax et uniq sont automatiquement créées pour toutes les colonnes adaptées dans les nouvelles tables - `materialize_statistics_on_insert` a désormais pour valeur par défaut false — les statistiques sont maintenant construites lors des merges plutôt qu’au moment de l’insert, ce qui réduit la surcharge des insertions. Utilisez `SET materialize_statistics_on_insert = 1` pour restaurer l’ancien comportement. [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275) ([Han Fei](https://github.com/hanfei1991)).
* Ajout du paramètre de refresh `prefer_dependency_replica` pour les chaînes de dépendances de materialized views afin de réduire les données manquantes dues au retard de réplication entre replicas. [#101591](https://github.com/ClickHouse/ClickHouse/pull/101591) ([Seva Potapov](https://github.com/seva-potapov)).
* Ajout d’une fonction `hasPhrase` (alias `matchPhrase`) pour la recherche de phrases (séquences continues de jetons). La recherche se fait en brute-force, c.-à-d. qu’elle n’est pas encore prise en charge par le text index. [#101997](https://github.com/ClickHouse/ClickHouse/pull/101997) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Ajout des histogram metrics `s3_read_request_duration_microseconds` et `s3_read_request_bytes` pour observer la durée de vie des connexions des requêtes GET S3 et le volume d’octets consommés, visibles dans `system.histogram_metrics` et sur le Prometheus endpoint. [#102058](https://github.com/ClickHouse/ClickHouse/pull/102058) ([Sema Checherinda](https://github.com/CheSema)).
* Les valeurs `Date` et `Date32` peuvent désormais être ajoutées à des valeurs `Time` et `Time64` à l’aide de l’opérateur `+`, produisant un résultat `DateTime` ou `DateTime64`. Par exemple, `SELECT toDate('2024-01-15') + toTime('14:30:25')` renvoie `2024-01-15 14:30:25`. Le résultat est calculé dans le session timezone, et les résultats hors plage sont gérés conformément au paramètre `date_time_overflow_behavior`. Résout [#95914](https://github.com/ClickHouse/ClickHouse/issues/95914). [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Le text index est désormais GA et reste activé indépendamment du paramètre `compatibility`, ce qui évite toute désactivation inattendue lors des restaurations depuis une sauvegarde ou en compatibility mode. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* Ajout de `ALTER TABLE ... EXECUTE remove_orphan_files` pour les tables Iceberg afin d’identifier et de supprimer du stockage objet les fichiers non référencés. [#99127](https://github.com/ClickHouse/ClickHouse/pull/99127) ([murphy-4o](https://github.com/murphy-4o)).
* Ajout du paramètre `query_plan_optimize_join_order_randomize`, qui randomise les statistiques utilisées pour réordonner les jointures, ce qui est utile pour les tests. [#100643](https://github.com/ClickHouse/ClickHouse/pull/100643) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Ajout de la prise en charge des fonctions d’IA dans ClickHouse, permettant aux utilisateurs d’appeler des points de terminaison OpenAI et Anthropic à l’aide de SQL. `aiGenerate` est incluse comme première fonction de ce type. [#100831](https://github.com/ClickHouse/ClickHouse/pull/100831) ([George Larionov](https://github.com/george-larionov)).
* Ajout des fonctions d’IA `aiClassify`, `aiExtract` et `aiTranslate` pour utiliser des API de LLM dans ClickHouse. [#100832](https://github.com/ClickHouse/ClickHouse/pull/100832) ([George Larionov](https://github.com/george-larionov)).
* Ajout de `system.histogram_metric_log`, une nouvelle table système qui crée périodiquement des instantanés de toutes les métriques d’histogramme (par ex. les latences S3/Azure, les durées des étapes de traitement des requêtes Keeper). De plus, la colonne `value` de `system.histogram_metrics` devient `Float64`, car ce type est plus flexible et plus compatible avec le modèle de données Prometheus. [#103046](https://github.com/ClickHouse/ClickHouse/pull/103046) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)). La structure de la table est susceptible d’être modifiée dans les versions futures.

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* ClickHouse peut désormais effectuer le pruning de data parts entières dans les requêtes SELECT à partir des statistiques min/max. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* Réduit la contention sur les verrous lors des opérations readonly sur les tables ReplicatedMergeTree avec des mutations terminées. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* Respecte `optimize_read_in_order` lors de la lecture des projections. Clôture [#89453](https://github.com/ClickHouse/ClickHouse/issues/89453). [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* Série de petites améliorations pour le hash join et le concurrent hash join. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Optimise la transformation `DISTINCT` en désactivant l’optimisation des colonnes `LowCardinality` lorsque les données d’entrée sont presque toutes distinctes. [#97113](https://github.com/ClickHouse/ClickHouse/pull/97113) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Optimisation des performances des requêtes `LIKE` signalée dans [#97723](https://github.com/ClickHouse/ClickHouse/issues/97723). Ces requêtes peuvent désormais utiliser des index de texte. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Les fonctions mathématiques vectorisées (`exp`, `log`, `sigmoid`, `tanh`) sont désormais accélérées sur AArch64 (avec NEON/SVE), ainsi que sur FreeBSD/Darwin, où elles utilisaient auparavant un fallback scalaire plus lent. [#98230](https://github.com/ClickHouse/ClickHouse/pull/98230) ([Raúl Marín](https://github.com/Algunenano)).
* Les requêtes filtrant sur les colonnes de clé primaire de `MergeTree` avec des alternances regexp sur des chaînes littérales, telles que `^(abc-1|abc-2)`, peuvent désormais utiliser le pruning de clé primaire lorsque les alternatives partagent un préfixe commun. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash ](https://github.com/Onyx2406)).
* Généralise le filtrage dynamique top-k de `ORDER BY ... LIMIT` pour prendre en charge les types `Nullable`, `String` et `COLLATE`. [#99033](https://github.com/ClickHouse/ClickHouse/pull/99033) ([murphy-4o](https://github.com/murphy-4o)).
* Accélère le hash join sur des clés `Int32` et `Int64` de petite plage grâce à une hash table à index direct. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).
* Requêtes discontinues plus rapides pour les colonnes `LowCardinality` avec un seul dictionnaire. [#99285](https://github.com/ClickHouse/ClickHouse/pull/99285) ([Ivan Babrou](https://github.com/bobrik)).
* Accélère les fonctions `var*Stable` et `stddev*Stable` pour les colonnes `Float64` en dévirtualisant la boucle interne. Remarque : cela active des optimisations du compilateur (FMA/registres) qui modifient les résultats en virgule flottante au niveau des ULP. [#99460](https://github.com/ClickHouse/ClickHouse/pull/99460) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Utilise l’encodage base58 optimisé de Firedancer pour les entrées de 32/64 octets (automatiquement pour `base58Encode`). Permet d’utiliser le décodage base58 optimisé si le résultat décodé fait 32/64 octets (explicitement avec `base58Decode('...', 32)` ou équivalent). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* Active des optimisations basées sur les sections de l’éditeur de liens (`-ffunction-sections`, `-fdata-sections`, `--icf=all`) afin de réduire la taille du binaire et d’améliorer l’utilisation du cache d’instructions. [#99474](https://github.com/ClickHouse/ClickHouse/pull/99474) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le scaling négatif pour les requêtes courtes avec agrégation sur des machines dotées de nombreux cœurs. Lorsqu’une requête lit peu de marks, le pipeline ne s’étend plus jusqu’à `max_threads` après l’agrégation, ce qui évite le surcoût lié à des streams en grande partie vides. [#99493](https://github.com/ClickHouse/ClickHouse/pull/99493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Améliore les performances des requêtes avec répliques parallèles en sélectionnant correctement la taille de la tâche de lecture. [#99801](https://github.com/ClickHouse/ClickHouse/pull/99801) ([Nikita Taranov](https://github.com/nickitat)).
* Autorise le prefetch lors de la lecture d’un fichier distant via le cache de pages en espace utilisateur. [#99919](https://github.com/ClickHouse/ClickHouse/pull/99919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Évite le calcul inutile de la sous-colonne `.size` de `String` lors de l’énumération des sous-colonnes. [#99941](https://github.com/ClickHouse/ClickHouse/pull/99941) ([Pavel Kruglov](https://github.com/Avogar)).
* Rend la barre de progression de clickhouse-client moins saccadée lors d’une utilisation depuis un hôtel avec des clusters comportant un très grand nombre de répliques. [#100145](https://github.com/ClickHouse/ClickHouse/pull/100145) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Démarre `MemoryWorker` dans `clickhouse-local` lorsque le cache de pages est activé, afin que le cache de pages en espace utilisateur puisse être effectivement utilisé. [#100306](https://github.com/ClickHouse/ClickHouse/pull/100306) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Optimise les requêtes en propageant la clause `LIMIT` dans le `UNION ALL`. [#100364](https://github.com/ClickHouse/ClickHouse/pull/100364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute la prise en charge de la compilation JIT pour les comparaisons de colonnes `String` et `FixedString` dans `ORDER BY`, améliorant les performances du tri en phase de fusion de 6 à 17 % pour les clés de tri fortement basées sur des chaînes. Coécrit avec @lgbo-ustc. [#100577](https://github.com/ClickHouse/ClickHouse/pull/100577) ([Raúl Marín](https://github.com/Algunenano)).
* Lorsque `read_in_order_use_virtual_row` est activé avec le nouveau paramètre `read_in_order_use_virtual_row_per_block`, les informations de frontière des lignes virtuelles sont désormais émises après chaque block lu depuis `MergeTree`, ce qui permet à la fusion de reprioriser les sources en cours de stream pour les parts dont les données sont entièrement filtrées par `WHERE`/`PREWHERE`/`JOIN`. Ferme [#99945](https://github.com/ClickHouse/ClickHouse/issues/99945). [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Conversion plus rapide de `Float` vers `String` pour les grandes valeurs entières en étendant le chemin rapide `itoa` avec un arrondi compatible avec dragonbox. [#100649](https://github.com/ClickHouse/ClickHouse/pull/100649) ([Raúl Marín](https://github.com/Algunenano)).
* Remplace `dragonbox` par `zmij` pour une conversion de `Float` en `String` 1,5 à 3 fois plus rapide. [#100650](https://github.com/ClickHouse/ClickHouse/pull/100650) ([Raúl Marín](https://github.com/Algunenano)).
* Accélère la conversion de `Int128`/`UInt128` en chaîne en remplaçant la division logicielle par la réduction de Barrett et en déroulant la boucle de conversion. [#100671](https://github.com/ClickHouse/ClickHouse/pull/100671) ([Raúl Marín](https://github.com/Algunenano)).
* Évite de lancer des threads redondants dans la fusion parallèle de `uniqExact`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* Ajoute une fusion parallèle par lots pour `uniqExact`. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).
* Améliore la parallélisation des requêtes avec des views simples (reposant sur une table `MergeTree` sous-jacente) exécutées avec des répliques parallèles. [#100815](https://github.com/ClickHouse/ClickHouse/pull/100815) ([Igor Nikonov](https://github.com/devcrafter)).
* Ajoute la prise en charge des répliques parallèles sur les vues simples (y compris les vues `UNION ALL` éligibles sur des tables `MergeTree`) lorsque `parallel_replicas_allow_view_over_mergetree=1`. Cela permet de paralléliser la requête externe de la vue plutôt que la requête interne, ce qui accroît la parallélisation des requêtes entre les nœuds. [#100958](https://github.com/ClickHouse/ClickHouse/pull/100958) ([Igor Nikonov](https://github.com/devcrafter)).
* Optimise la lecture dans l’ordre de la clé primaire pour `full_sorting_merge` lorsque des filtres avec `IN` sont présents dans le plan de requête. [#101261](https://github.com/ClickHouse/ClickHouse/pull/101261) ([Nikita Taranov](https://github.com/nickitat)).
* Optimise les allocations/désallocations en mettant en cache les paramètres d’échantillonnage au lieu de parcourir toute la hiérarchie du memory tracker. [#101267](https://github.com/ClickHouse/ClickHouse/pull/101267) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une régression importante des performances d’INSERT lorsque `deduplicate_insert = 'enable'` (par défaut depuis la version 26.2) en reportant le calcul du hash des données du squashing vers le sink et en utilisant le hachage par lots des colonnes via `updateHashWithValueRange`, ce qui réduit le surcoût d’environ 2,5 s à environ 0,5 s pour 5 M de lignes avec 22 colonnes. [#101494](https://github.com/ClickHouse/ClickHouse/pull/101494) ([Sema Checherinda](https://github.com/CheSema)).
* Réduit le surcoût des verrous profilés en utilisant `try_lock` pour éviter de mesurer les acquisitions sans contention et en supprimant la mesure du temps de détention. [#101502](https://github.com/ClickHouse/ClickHouse/pull/101502) ([Antonio Andelic](https://github.com/antonio2368)).
* Remplace les intrinsics AVX-512 écrites à la main dans `arrayDotProduct` par des boucles auto-vectorisables indépendantes de la plateforme, avec ajout de la prise en charge d’AVX2 et d’ARM NEON. [#101571](https://github.com/ClickHouse/ClickHouse/pull/101571) ([Peng](https://github.com/fastio)).
* Améliore les performances de `INSERT VALUES` pour les colonnes `Map`, `Array` et `Tuple` lorsque les valeurs sont transmises sous forme de chaînes échappées (par ex. `'{\'key\':1}'`), en évitant un recours inutile au parser d’expressions SQL. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).
* Corrige une utilisation excessive du CPU par le table engine `RabbitMQ`. [#102711](https://github.com/ClickHouse/ClickHouse/pull/102711) ([Jaap Elst](https://github.com/jaapieaapie1)).
* L’optimiseur de l’ordre des JOIN déduit désormais les prédicats transitifs d’équi-jointure à partir des conditions de jointure existantes. Par exemple, avec `A.x = B.x AND B.x = C.x`, l’équivalence `A.x = C.x` est reconnue, ce qui permet à l’optimiseur d’envisager des jointures directes entre des tables connectées transitivement. Cela peut améliorer la qualité du plan pour les schémas en étoile et en flocon, où les tables de dimension sont reliées par une table de faits commune. La fonctionnalité est contrôlée par le nouveau paramètre `enable_join_transitive_predicates` (désactivé par défaut). [#98479](https://github.com/ClickHouse/ClickHouse/pull/98479) ([Alexander Gololobov](https://github.com/davenger)).
* Optimise `TRUNCATE DATABASE TABLES LIKE` en pré-annulant les merges en parallèle. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Ajoute la prise en charge de la monotonie pour la multiplication, ce qui permet le pruning par clé primaire pour les expressions `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* Les dictionnaires de cache ne prennent plus de verrou exclusif dans `hasKeys` ; cela réduit la contention sur les verrous en utilisant un verrou partagé pour les lectures du cache. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).
* Intègre en ligne la sous-requête VIEW dans le query tree afin de permettre l’application de davantage d’optimisations à la VIEW. [#100830](https://github.com/ClickHouse/ClickHouse/pull/100830) ([Dmitry Novik](https://github.com/novikd)).
* Optimise le chargement du cache au démarrage du serveur. [#101500](https://github.com/ClickHouse/ClickHouse/pull/101500) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Implémenter la matérialisation paresseuse des colonnes pour ReplacingMergeTree avec FINAL lorsque le prédicat est suffisamment sélectif. [#101647](https://github.com/ClickHouse/ClickHouse/pull/101647) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Réactiver l’optimisation `optimize_rewrite_array_exists_to_has` (désactivée par défaut depuis la version 23.10). Elle réécrit `arrayExists(x -> x = elem, arr)` en `has(arr, elem)`, bien plus rapide, et évite désormais correctement cette réécriture lorsque le type d’élément du tableau et `elem` ne sont pas compatibles avec `has` (par ex. `Date` vs `String`), ce qui permet aux requêtes qui échouaient auparavant de continuer à fonctionner. Clôt [#71431](https://github.com/ClickHouse/ClickHouse/issues/71431). [#100944](https://github.com/ClickHouse/ClickHouse/pull/100944) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-improvement">
  #### Amélioration
</div>

* Sortie `EXPLAIN PLAN pretty=1` améliorée : affichage des colonnes de sortie de la requête de niveau supérieur, des libellés/symboles des relations de join avec le nombre estimé de lignes de résultat et la localité, ainsi que des colonnes de sortie pour chaque étape de type join/source. Les changements couvrent la partie Information Deficit de [#98117](https://github.com/ClickHouse/ClickHouse/issues/98117). [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Ajout du paramètre de table MergeTree `share_nested_offsets` (par défaut `true`). Lorsqu’il est défini sur `false`, les colonnes Array avec des noms à points (par ex. `n.a`, `n.b`) sont traitées comme des colonnes indépendantes au lieu de partager des fichiers d’offsets et de vérifier l’égalité des tailles de tableaux selon l’ancienne sémantique `Nested`. [#98416](https://github.com/ClickHouse/ClickHouse/pull/98416) ([Amos Bird](https://github.com/amosbird)).
* Les utilisateurs peuvent désormais spécifier plusieurs méthodes d’authentification dans la configuration users.xml/yaml (en SQL, cela a toujours été possible). [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* Rechargement automatique des connexions inter-nœuds Raft utilisant TLS. [#93455](https://github.com/ClickHouse/ClickHouse/pull/93455) ([Evgeny](https://github.com/evkuzin)).
* Extension de `cast_keep_nullable` pour fonctionner avec les types Dynamic/JSON. Lorsqu’il est activé, le CAST de NULL depuis des types pouvant être Nullable renvoie NULL ; sinon, NULL déclenche l’erreur `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* Réduction de l’empreinte mémoire des structures de données internes (objets `ISerialization`) grâce à l’introduction d’un pool d’objets. [#96563](https://github.com/ClickHouse/ClickHouse/pull/96563) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Ajout de la prise en charge des champs `password` et `identity` à la config XML de keeper-client. [#96800](https://github.com/ClickHouse/ClickHouse/pull/96800) ([Grigorii Sokolik](https://github.com/GSokol)).
* Amélioration des écritures `Iceberg` pour Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout du paramètre `finalize_projection_parts_synchronously` pour permettre la finalisation synchrone des projection parts pendant INSERT, réduisant le pic d’utilisation mémoire pour les tables comportant de nombreuses projections tout en conservant par défaut le comportement asynchrone existant. [#98228](https://github.com/ClickHouse/ClickHouse/pull/98228) ([Amos Bird](https://github.com/amosbird)).
* Ajout de la colonne `projections_duration_ms` à `system.part_log`, qui enregistre pour chaque projection la durée des opérations de merge/rebuild en millisecondes. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* Amélioration de l’annulation des queries utilisant ExpressionTransform et NumbersRangedSource via KILL QUERY et l’annulation de query (Ctrl+C) dans clickhouse-client. [#98908](https://github.com/ClickHouse/ClickHouse/pull/98908) ([Roman Vasin](https://github.com/rvasin)).
* Remplacement de la liste codée en dur `source_table_engines` par une recherche à l’exécution via `StorageFactory::getAllStorages()`. Cela ajoute des vérifications d’accès pour certains table engines manquants et clôt [#71544](https://github.com/ClickHouse/ClickHouse/issues/71544). [#98984](https://github.com/ClickHouse/ClickHouse/pull/98984) ([pufit](https://github.com/pufit)).
* Ajout d’un paramètre pour contrôler le comportement en cas d’incompatibilité de type pour Variant et Dynamic (déclencher une exception ou renvoyer NULL). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* Améliore la compatibilité avec `Iceberg` et Spark : corrige les incohérences de gestion des chemins dues à l’utilisation conjointe des chemins de stockage et des chemins de métadonnées ; impose que les tables `Iceberg` enregistrent un emplacement de table qui soit soit une URL, soit un chemin absolu ; ajoute un mécanisme de repli pour le calcul de la taille des fichiers dans `Azure`, car certains lecteurs ClickHouse ne prennent pas en charge le comptage des octets après parcours ; gère `version-hint.txt` de manière compatible avec Spark ; introduit des abstractions au niveau des types afin de réduire à l’avenir les risques de confusion entre types de chemins ; ajoute des tests pour `Azure` et `Local` qui vérifient l’interopérabilité entre moteurs sans téléversement ni téléchargement intermédiaires ; corrige l’utilisation des suppressions par position, qui reposait auparavant sur des heuristiques d’inférence de chemin là où cette approche n’est pas appropriée. [#99163](https://github.com/ClickHouse/ClickHouse/pull/99163) ([Daniil Ivanik](https://github.com/divanik)). [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* Corrige une possible condition de concurrence dans `IPartitionStrategy::cached_result`, introduite dans [https://github.com/ClickHouse/ClickHouse/pull/92844](https://github.com/ClickHouse/ClickHouse/pull/92844). [#99400](https://github.com/ClickHouse/ClickHouse/pull/99400) ([Arthur Passos](https://github.com/arthurpassos)).
* Les utilisateurs peuvent désormais écrire des types de données Interval de ClickHouse au format Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* Ajoute la prise en charge native de l’importation et de l’exportation des types de données `UUID` aux formats `Arrow` et `Parquet`. Les utilisateurs peuvent désormais interroger et transférer directement des données UUID entre ClickHouse et d’autres outils de données, sans conversion manuelle en chaîne ni solution de contournement. Ajoute également l’inférence logique automatique pour les UUID de premier niveau, ainsi que la prise en charge d’indices de schéma explicites pour les UUID imbriqués. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* Prend en charge les archives `7z` sur le stockage objet. Clôt [#70968](https://github.com/ClickHouse/ClickHouse/issues/70968). [#99600](https://github.com/ClickHouse/ClickHouse/pull/99600) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute les ProfileEvents `ObjectStorageListedObjects`, `ObjectStorageGlobFilteredObjects`, `ObjectStoragePredicateFilteredObjects` et `ObjectStorageReadObjects` pour l’introspection du pipeline de listage et de lecture des fichiers du stockage objet (`S3`, `Azure`, etc.). [#99778](https://github.com/ClickHouse/ClickHouse/pull/99778) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige l’échec de la fonction de table `merge` avec l’erreur `UNKNOWN_IDENTIFIER` lors de l’interrogation de colonnes qui ne sont pas présentes dans toutes les tables distribuées/distantes sous-jacentes. [#99833](https://github.com/ClickHouse/ClickHouse/pull/99833) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le temps de commit est désormais inclus dans la métrique du temps total d’exécution des mutations pour ReplicatedMergeTree. Il avait été perdu après [#96376](https://github.com/ClickHouse/ClickHouse/issues/96376). [#99936](https://github.com/ClickHouse/ClickHouse/pull/99936) ([alesapin](https://github.com/alesapin)).
* Ajoute un journal en écriture anticipée pour les objets blob en attente de suppression dans `MetadataStorageFromDisk`, ce qui améliore la durabilité et la cohérence entre les métadonnées et le stockage objet distant lors de la suppression d’objets. [#100019](https://github.com/ClickHouse/ClickHouse/pull/100019) ([Maksim Kita](https://github.com/kitaisreal)).
* Désactive AI SQL generation (commande `??`) dans le client embarqué (protocoles SSH et WebSocket) afin d’empêcher l’accès aux variables d’environnement du serveur. [#100290](https://github.com/ClickHouse/ClickHouse/pull/100290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Modifie l’interface des inserts Iceberg avec le catalogue. Déprécie les paramètres : `storage_catalog_type`, `storage_aws_access_key_id`, etc. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Rendre les tabulations sous forme de 4 espaces lors du collage dans clickhouse-client. Corrige [#100405](https://github.com/ClickHouse/ClickHouse/issues/100405). [#100416](https://github.com/ClickHouse/ClickHouse/pull/100416) ([Raúl Marín](https://github.com/Algunenano)).
* Éviter de parcourir l’ensemble du catalogue distant du data lake pour les suggestions de table « Maybe you meant … » lorsque `show_data_lake_catalogs_in_system_tables` est désactivé. [#100452](https://github.com/ClickHouse/ClickHouse/pull/100452) ([Alsu Giliazova](https://github.com/alsugiliazova)).
* Appliquer `distributed_index_analysis_min_indexes_bytes_to_activate` après l’élagage des partitions. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’un échec d’assertion dans le push down du bloom filter Parquet lors de l’utilisation de clauses IN/NOT IN vides. [#100543](https://github.com/ClickHouse/ClickHouse/pull/100543) ([zoomxi](https://github.com/zoomxi)).
* Les statistiques de colonnes MinMax stockent désormais les valeurs minimale et maximale sous forme de Field (typé) au lieu de Float64. Le format sérialisé inclut le nom du type de la colonne avec les valeurs. La version du fichier de statistiques passe à V2 ; les fichiers écrits par des versions antérieures nécessitent une re-matérialisation (ALTER TABLE … MATERIALIZE STATISTICS ALL). Corrige [#53140](https://github.com/ClickHouse/clickhouse-private/issues/53140). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).
* Mise à jour de `cppkafka` pour inclure le correctif d’interblocage lors de la fermeture du consumer. [#100612](https://github.com/ClickHouse/ClickHouse/pull/100612) ([Azat Khuzhin](https://github.com/azat)).
* Les informations d’objet utilisées pour analyser les data files dans Iceberg contiennent désormais le nombre de lignes du fichier et sa taille en octets, extraits du manifest file. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* Ajout du paramètre de configuration `use_separate_cache_arena` pour contrôler la séparation de l’Arena mémoire du cache. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).
* Ajoute la prise en charge native de l’import des data types `StringView` et `BinaryView` d’Apache Arrow dans les colonnes `String` de ClickHouse, ce qui améliore la compatibilité pour l’ingestion basée sur Arrow. [#100762](https://github.com/ClickHouse/ClickHouse/pull/100762) ([Ivan](https://github.com/ivanmantova)).
* Certains server settings du Keeper server sont désormais rechargés à chaud si le config file est modifié à l’exécution : max\_requests\_batch\_size, max\_requests\_batch\_bytes\_size, max\_request\_size, quorum\_reads. [#100773](https://github.com/ClickHouse/ClickHouse/pull/100773) ([Michael Kolupaev](https://github.com/al13n321)).
* Incrémente les profile events `MemoryAllocatedWithoutCheck/MemoryAllocatedWithoutCheckBytes` dans les builds de release. [#100899](https://github.com/ClickHouse/ClickHouse/pull/100899) ([Pavel Kruglov](https://github.com/Avogar)).
* Le suivi de la mémoire avec cgroupv2 exclut désormais `slab_reclaimable` de la mémoire du noyau, ce qui fournit une mesure plus précise de l’utilisation de la mémoire non récupérable. [#100901](https://github.com/ClickHouse/ClickHouse/pull/100901) ([Antonio Andelic](https://github.com/antonio2368)).
* `use_partition_pruning = 0` désactive désormais aussi l’élagage des index `MinMax` et l’optimisation de comptage sur les colonnes de clé de partition, en plus de désactiver l’élagage basé sur les clés de partition. [#100904](https://github.com/ClickHouse/ClickHouse/pull/100904) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `pretty=1` dans `EXPLAIN [PLAN]` affiche désormais les expressions dans un format lisible. [#100927](https://github.com/ClickHouse/ClickHouse/pull/100927) ([Kirill Kopnev](https://github.com/Fgrtue)).
* `accurateCastOrNull` et `accurateCastOrDefault` prennent désormais en charge les types cibles `Tuple`, y compris les `Tuples` imbriqués avec des éléments `Nullable`. Auparavant, ces fonctions rejetaient les cibles `Tuple` car `Tuple` ne pouvait pas être utilisé dans `Nullable`. Clôt [#100820](https://github.com/ClickHouse/ClickHouse/issues/100820). [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de la duplication des graphiques dans l’interface Play lors du basculement entre les thèmes clair et sombre. [#101058](https://github.com/ClickHouse/ClickHouse/pull/101058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mise à jour de chdig vers [v26.3.1](https://github.com/azat/chdig/releases/tag/v26.3.1) (interface perfetto, sparklines dans le résumé pour CPU/Memory/Merges/Queries, system.warnings, recherche regexp dans les logs). [#101092](https://github.com/ClickHouse/ClickHouse/pull/101092) ([Azat Khuzhin](https://github.com/azat)). Mise à jour de chdig vers [v26.4.3](https://github.com/azat/chdig/releases/tag/v26.4.3) (améliorations de perfetto, corrections pour le partage via pastila.nl, diffs de flamegraph, modification des paramètres en temps réel). [#103145](https://github.com/ClickHouse/ClickHouse/pull/103145) ([Azat Khuzhin](https://github.com/azat)).
* Vous pouvez désormais ajouter une virgule finale dans la clause `WITH` avant une requête `SELECT`. [#101093](https://github.com/ClickHouse/ClickHouse/pull/101093) ([Aruj Bansal](https://github.com/arujbansal)).
* Ajout du paramètre MergeTree `compress_per_column_in_compact_parts` pour contrôler l’organisation des blocs compressés dans les parts compactes. Quand sa valeur est `true` (par défaut, ce qui préserve le comportement actuel), chaque colonne démarre un nouveau bloc compressé, ce qui permet une décompression sélective. Quand sa valeur est `false`, toutes les colonnes d’une granule sont regroupées dans le même bloc compressé, ce qui améliore le taux de compression et les performances de lecture pour les charges de travail qui lisent toujours toutes les colonnes. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* Afficher l’infobulle d’informations sur la table dans l’interface Play uniquement au survol du nom de la table, et non de toute la ligne. [#101118](https://github.com/ClickHouse/ClickHouse/pull/101118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’icônes spécifiques aux moteurs et amélioration de l’UX de la liste des tables dans la barre latérale de l’interface Play. [#101134](https://github.com/ClickHouse/ClickHouse/pull/101134) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de `Nullable(Tuple)` pour les formats `Arrow`, `ArrowStream`, `ORC` et l’ancien format `Parquet`. [#101272](https://github.com/ClickHouse/ClickHouse/pull/101272) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Affichage de la ligne TOTALS en pied de tableau dans l’interface web (play.html). [#101286](https://github.com/ClickHouse/ClickHouse/pull/101286) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge du mode multi-requêtes dans l’interface web (`play.html`) : exécutez plusieurs requêtes à la fois, avec exécution parallèle des requêtes de type `SELECT` et affichage des résultats par requête. [#101290](https://github.com/ClickHouse/ClickHouse/pull/101290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du redimensionnement des colonnes dans l’interface web play.html après la refactorisation de la table de résultats en composant web. [#101295](https://github.com/ClickHouse/ClickHouse/pull/101295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la possibilité de limiter le nombre de flushes du profil jemalloc sur MEMORY\_LIMIT\_EXCEEDED par intervalle de temps. [#101396](https://github.com/ClickHouse/ClickHouse/pull/101396) ([Azat Khuzhin](https://github.com/azat)).
* Ajout des paramètres de Keeper `nuraft_streaming_mode` (par défaut `false`), `nuraft_max_log_gap_in_stream` et `nuraft_max_bytes_in_flight_in_stream`. Résout [#90743](https://github.com/ClickHouse/ClickHouse/issues/90743). [#101427](https://github.com/ClickHouse/ClickHouse/pull/101427) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ajout de la métrique asynchrone `CGroupMemoryUsedWithoutPageCache`, qui signale l’utilisation de la mémoire du cgroup en excluant à la fois le cache de pages de l’OS du noyau et le userspace page cache de ClickHouse, à l’image de `MemoryResidentWithoutPageCache`. La description de la métrique `CGroupMemoryUsed` a également été clarifiée. [#101513](https://github.com/ClickHouse/ClickHouse/pull/101513) ([Francesco Ciocchetti](https://github.com/primeroz)).
* Ajout d’un sucre syntaxique au niveau du parser pour la syntaxe de fonction `OVERLAY` standard SQL. La fonction `overlay` existe déjà ; cela ajoute la prise en charge de la forme basée sur des mots-clés utilisant `PLACING`, `FROM` et `FOR` comme séparateurs. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* Ajout de l’alias de colonne `INDEX_LENGTH` à la table système `information_schema.tables`, par analogie avec les alias existants en majuscules dans cette table. [#101705](https://github.com/ClickHouse/ClickHouse/pull/101705) ([Robert Schulze](https://github.com/rschu1ze)).
* La table système `information_schema.tables` ignore désormais les parties de table inactives. Cela rend les valeurs de taille de table affichées plus réalistes. [#101706](https://github.com/ClickHouse/ClickHouse/pull/101706) ([Robert Schulze](https://github.com/rschu1ze)).
* La fonction `ngrams` rejette désormais les longueurs de ngram invalides. Exemple : `SELECT ngrams('abc', 0)` renvoie maintenant une erreur. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* Suite à [#91820](https://github.com/ClickHouse/ClickHouse/issues/91820) et [#90837](https://github.com/ClickHouse/ClickHouse/issues/90837) : filtrer les algorithmes non pris en charge dans le message d’erreur ; exécuter les tests spécifiques à FIPS dans les builds FIPS. [#102067](https://github.com/ClickHouse/ClickHouse/pull/102067) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Limitation de la hauteur des cellules à trois lignes dans l’interface web (`play.html`), avec des cellules dépliables au clic. [#102154](https://github.com/ClickHouse/ClickHouse/pull/102154) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout d’une nouvelle option permettant de forcer le style (virtuel/chemin) pour les S3 endpoints. Résout [#82019](https://github.com/ClickHouse/ClickHouse/issues/82019) ; [#76007](https://github.com/ClickHouse/ClickHouse/issues/76007) Suite de [https://github.com/ClickHouse/ClickHouse/pull/83168](https://github.com/ClickHouse/ClickHouse/pull/83168). [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Le paramètre `restore_replace_external_engines_to_null` ignore désormais également la restauration des databases utilisant des engines externes (par ex. `DataLakeCatalog`, `MySQL`, `PostgreSQL`, `S3`) au lieu d’échouer ou d’initier des connexions externes. [#102400](https://github.com/ClickHouse/ClickHouse/pull/102400) ([Nikita Fomichev](https://github.com/fm4v)).
* Ajout de la prise en charge de l’index analysis pour les text index de la fonction `hasPhrase` via le mode `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Traiter STATISTICS comme read-only dans ColumnDependency pour corriger LOGICAL\_ERROR lors de MATERIALIZE STATISTICS ALL. [#102627](https://github.com/ClickHouse/ClickHouse/pull/102627) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Créer et peupler `system.asynchronous_metric_log` en mode keeper-as-server. [#102664](https://github.com/ClickHouse/ClickHouse/pull/102664) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajout de l’option de configuration `default_system_log_flush_policy.skip_alias_columns` pour permettre d’omettre les colonnes ALIAS des tables de log système, ce qui corrige le problème des logs système sur S3 qui refusent les colonnes ALIAS. [#102669](https://github.com/ClickHouse/ClickHouse/pull/102669) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ne pas activer les statistiques automatiques pour les tables système. Elles ont rarement l’occasion d’en tirer parti. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).
* Prise en charge du tokenizer `array` pour l’optimisation de LIKE. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Envoyer MemoryAllocatedWithoutCheck même dans les builds de release. [#103064](https://github.com/ClickHouse/ClickHouse/pull/103064) ([Azat Khuzhin](https://github.com/azat)).
* Exposer `untracked&#95;memory` par thread dans `system.stack&#95;trace`. [#103065](https://github.com/ClickHouse/ClickHouse/pull/103065) ([Azat Khuzhin](https://github.com/azat)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Corrige l’erreur `Block structure mismatch in stream` causée par des colonnes inutiles renvoyées par la lazy materialization. Corrige [#95191](https://github.com/ClickHouse/ClickHouse/issues/95191). [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Corrige une erreur logique dans une requête de policy de masquage des données avec `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
* Corrige un bug lors de l’utilisation d’Unity Catalog avec GCS. [#98456](https://github.com/ClickHouse/ClickHouse/pull/98456) ([Melvyn Peignon](https://github.com/melvynator)).
* `DataLakeCatalog` respecte désormais la configuration `http_forbid_headers` du serveur lors de la validation du paramètre `auth_header`. [#98827](https://github.com/ClickHouse/ClickHouse/pull/98827) ([Michael Anastasakis](https://github.com/michael-anastasakis)).
* Corrige les appels N+1 à `HeadObject` pour les globs S3 avec expansion d’accolades. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Valide les modifications de paramètres dans les requêtes CREATE lorsque l’engine lui-même prend aussi en charge des settings. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige l’échec de `ALTER TABLE UPDATE/DELETE` avec l’erreur `Missing columns` lorsqu’une table possède une colonne MATERIALIZED dont l’expression dépend d’une colonne EPHEMERAL. [#99281](https://github.com/ClickHouse/ClickHouse/pull/99281) ([Yash ](https://github.com/Onyx2406)).
* Les informations d’authentification dans les chaînes de connexion JDBC, ODBC et NATS sont désormais masquées dans les query logs et la sortie de `SHOW CREATE`, ce qui évite l’exposition accidentelle d’informations sensibles. Pour les chaînes de connexion au format URI (par ex. `{scheme}://{user}:{password}@{host}`), seule la partie mot de passe est masquée, tandis que le reste reste visible pour faciliter le débogage. Le paramètre `nats_token` est désormais lui aussi masqué. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige `parseDateTimeBestEffort`, qui interprétait incorrectement les mots commençant par des préfixes de mois au format DD-month-YYYY. Closes [#99345](https://github.com/ClickHouse/ClickHouse/issues/99345#event-23517658314). [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l’ignorance de TABLE\_UUID\_MISMATCH en l’absence de l’analyzer. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un bug où des settings explicites envoyés avec `compatibility` dans la même requête pouvaient être ignorés silencieusement lorsque leur valeur correspondait à la valeur par défaut du serveur. [#99402](https://github.com/ClickHouse/ClickHouse/pull/99402) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corrige des cas où des nombres avec des zéros initiaux dans le path de partitioning Hive provoquaient des erreurs. Corrige [#98801](https://github.com/ClickHouse/ClickHouse/issues/98801). [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige un heap-use-after-free lorsqu’une table est supprimée de façon concurrente avec une requête de lecture en cours d’exécution (19 occurrences dans la CI au cours des 90 derniers jours). [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un bug dans Keeper où une read request pouvait rester bloquée (provoquant l’expiration de la session) si une autre session sans lien sur le même serveur était fermée exactement au mauvais moment. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
* Valide la structure des colonnes avant d’appliquer les patchs. [#99531](https://github.com/ClickHouse/ClickHouse/pull/99531) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige l’échec d’assertion `rows_sources` lors d’une fusion verticale lorsque `SYSTEM STOP/START MERGES` est activé et désactivé rapidement pendant la fusion d’une table avec des colonnes `Dynamic`. [#99532](https://github.com/ClickHouse/ClickHouse/pull/99532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un partition pruning incorrect pour `toWeek()` qui faisait que les queries avec `WHERE toWeek(date, mode) = N` renvoyaient des résultats vides pour les semaines 49 à 52 sur des tables partitionnées par `toYYYYMM(date)`. [#99542](https://github.com/ClickHouse/ClickHouse/pull/99542) ([Takumi Hara](https://github.com/takumihara)).
* Corrige une exception dans les fonctions opérant sur ColumnReplicated avec des lignes non référencées produites par JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
* Corrige le fait que `CLEAR COLUMN` ne reconstruisait pas les projections et ne réévaluait pas les colonnes matérialisées qui dépendent de la colonne effacée, ce qui pouvait provoquer des exceptions ou une corruption des données lors des fusions suivantes. [#99565](https://github.com/ClickHouse/ClickHouse/pull/99565) ([Desel72](https://github.com/Desel72)).
* Corrige une exception (`Bad get: has Tuple, actual type String`) dans `ConditionSelectivityEstimator` lorsqu’une query utilise IN avec un seul query parameter scalaire (par ex. `WHERE col IN ({p:String})`) sur une table qui a des column statistics et avec `use_statistics` activé. [#99614](https://github.com/ClickHouse/ClickHouse/pull/99614) ([Ilya Yatsishin](https://github.com/qoega)).
* Une part avec des projections inconnues ne doit pas être marquée comme perdue définitivement. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige une rare exception de logical error pendant une fusion verticale lorsque `SYSTEM STOP MERGES` et `SYSTEM START MERGES` sont exécutés de manière concurrente. [#99628](https://github.com/ClickHouse/ClickHouse/pull/99628) ([Desel72](https://github.com/Desel72)).
* Corrige une référence pendante dans injectRequiredColumns provoquant un plantage pendant la fusion. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Corrige un comportement indéfini dans le lecteur Avro format lors de la lecture de numeric values qui dépassent le column type cible. Désormais, les queries échouent en cas de dépassement au lieu de produire silencieusement des valeurs incorrectes. [#99697](https://github.com/ClickHouse/ClickHouse/pull/99697) ([asyablue22](https://github.com/asyablue22)).
* Corrige l’analyse des guillemets de style shell dans les arguments de la table function `executable`. [#99794](https://github.com/ClickHouse/ClickHouse/pull/99794) ([Nikita Semenov](https://github.com/leftmain)).
* Corrige un arrêt à tort dans `NativeReader` lors de la désérialisation d’un flux au Native format avec une incohérence du nombre de lignes : `LOGICAL_ERROR` est remplacé par `INCORRECT_DATA` afin que l’erreur soit traitée comme une erreur de données au lieu de déclencher `abort()` dans les builds sanitizer/debug. [#99822](https://github.com/ClickHouse/ClickHouse/pull/99822) ([Rahul Nair](https://github.com/motsc)).
* Corrige l’arrêt du processus lors de la désérialisation d’une colonne `Tuple` lorsque le type de sérialisation dans le flux binaire est `DETACHED`. [#99823](https://github.com/ClickHouse/ClickHouse/pull/99823) ([Rahul Nair](https://github.com/motsc)).
* Corrige une fausse exception `LOGICAL_ERROR` lors du redimensionnement dynamique du filesystem cache en raison d’une race condition dans la promotion de la sous-file SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les queries d’async insert qui signalaient `written_rows`, `read_rows` et `result_rows` à zéro dans `query_log` et la sortie du client. [#99879](https://github.com/ClickHouse/ClickHouse/pull/99879) ([Sema Checherinda](https://github.com/CheSema)).
* Correction de l'exception "Bad cast from type X to Y" dans `KILL QUERY` lorsque la requête interne sur les tables système renvoie des colonnes encapsulées dans `ColumnConst`. [#99881](https://github.com/ClickHouse/ClickHouse/pull/99881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une erreur logique avec une sous-requête corrélée dans un argument `untuple`. [#99917](https://github.com/ClickHouse/ClickHouse/pull/99917) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige une exception lors de l'appel à `right`, `rightUTF8` ou à d'autres fonctions de sous-chaîne avec une longueur égale à INT64\_MIN (-9223372036854775808), ce qui provoquait auparavant un comportement indéfini en raison d'un dépassement de capacité d'entier. Les fonctions signalent désormais correctement une erreur ARGUMENT\_OUT\_OF\_BOUND. [#99934](https://github.com/ClickHouse/ClickHouse/pull/99934) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Désormais, ClickHouse devrait gérer correctement les tables de type Spark (où chaque fichier a soit un chemin absolu complet, soit un chemin relatif par rapport au chemin commun de la table). Corrige [#92348](https://github.com/ClickHouse/ClickHouse/issues/92348). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
* Correction de l'exception "Inconsistent AST formatting" pour `ALTER TABLE ... MODIFY QUERY` avec des sous-requêtes imbriquées contenant `SETTINGS` lorsque l'instruction `ALTER` contient elle aussi `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Annule [#97114](https://github.com/ClickHouse/ClickHouse/issues/97114) "Move join step row estimation before check for 1 child" en raison d'une suspicion de régression des performances. [#99957](https://github.com/ClickHouse/ClickHouse/pull/99957) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige un bug où ClickHouse pouvait ignorer des fichiers si l'en-tête `Content-Length` était absent de la réponse à leur requête HEAD (par exemple, en raison d'un transcodage décompressif dans GCS). [#99971](https://github.com/ClickHouse/ClickHouse/pull/99971) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d'un échec d'assertion (exception dans les builds de débogage, résultats incorrects dans les builds de release) lors de la multiplication des états d'agrégat `NumericIndexedVector` par une constante entière paire, causé par un auto-XOR sur des bitmaps Roaring aliasés dans `pointwiseAddInplace`. [#99976](https://github.com/ClickHouse/ClickHouse/pull/99976) ([Desel72](https://github.com/Desel72)).
* Empêche l'exception `Unexpected return type` dans l'ancien pushdown de filtre à travers des `JOIN USING` chaînés lorsque les types de clé changent après les conversions de jointure. [#99999](https://github.com/ClickHouse/ClickHouse/pull/99999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'exception `LOGICAL_ERROR` "Unexpected node type for table expression ... Actual IDENTIFIER" lorsqu'une sous-requête scalaire est utilisée dans un argument de fonction de table non résolu, par exemple `SELECT * FROM remote('localhost', view(SELECT 2 AS x), concat(x, (SELECT 1)))`. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'échec de `INSERT` avec `VALUES` lorsque les données étaient suivies d'un commentaire SQL final (`--` ou `/* */`) sur la ligne suivante. Le commentaire est désormais ignoré au lieu d'être analysé comme une autre ligne. [#100016](https://github.com/ClickHouse/ClickHouse/pull/100016) ([Pratima Patel](https://github.com/pratimapatel2008)).
* Correction d'une exception dans `arrayRemove` lors de la comparaison de tuples avec des composantes NULL. [#100017](https://github.com/ClickHouse/ClickHouse/pull/100017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une fuite de données entre utilisateurs dans `system.asynchronous_inserts` : tout utilisateur disposant de `SELECT` sur la table pouvait voir des entrées d’async insert en attente appartenant à d’autres utilisateurs. Les entrées sont désormais filtrées en fonction de l’utilisateur courant, sauf si celui-ci possède le privilège `SHOW_USERS`. [#100024](https://github.com/ClickHouse/ClickHouse/pull/100024) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige le cas où le cast de Time64 vers UInt64 pouvait limiter les valeurs à 24 heures. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige un plantage du serveur local lorsque CREATE DICTIONARY comporte une définition avec une valeur de liste contenant une fonction inexistante. [#100036](https://github.com/ClickHouse/ClickHouse/pull/100036) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige l’impossibilité pour les formats `CSV` et `MsgPack` d’analyser correctement `Nullable(Tuple)`. Clôt [#99753](https://github.com/ClickHouse/ClickHouse/issues/99753). [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige l’échec de `CREATE VIEW` avec `UNKNOWN_IDENTIFIER` lors de l’utilisation d’un alias d’expression de fonction dans WITH (par ex. `tuple(...)`) comme opérande droit de `IN`. [#100042](https://github.com/ClickHouse/ClickHouse/pull/100042) ([Peng](https://github.com/fastio)).
* Corrige l’échec des aggregate functions de séries temporelles (par ex. `timeSeriesResampleToGridWithStaleness`) avec `ILLEGAL_TYPE_OF_ARGUMENT` lorsqu’elles sont utilisées avec `initializeAggregation` ou `AggregatingMergeTree` avec des parallel replicas. [#100053](https://github.com/ClickHouse/ClickHouse/pull/100053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le traitement des valeurs négatives dans NumericIndexedVectorDataBSI. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
* Corrige le fait que les fonctions `accurateCastOrDefault` et `to*OrDefault` ne préservaient pas le type de colonne Const pour les entrées constantes. [#100132](https://github.com/ClickHouse/ClickHouse/pull/100132) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les query parameters omis avec le type `LowCardinality(Nullable(T))` prennent désormais correctement la valeur NULL par défaut, comme `Nullable(T)`. [#100144](https://github.com/ClickHouse/ClickHouse/pull/100144) ([Denys Melnyk](https://github.com/germiBest)).
* Corrige l’utilisation d’une valeur non initialisée dans StringSearcher.h. [#100225](https://github.com/ClickHouse/ClickHouse/pull/100225) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Autorise l’annulation des subqueries scalaires et d’autres pipelines d’analyse via Ctrl+C. Auparavant, appuyer sur Ctrl+C pendant l’exécution d’une subquery scalaire longue n’avait aucun effet tant que celle-ci n’était pas terminée. Corrige également la barre de progression et les statistiques JSON afin qu’elles indiquent correctement les lignes lues pendant l’exécution de la subquery scalaire, à la fois dans `clickhouse-client` et `clickhouse-local`. Coécrit avec @YjyJeff. [#100230](https://github.com/ClickHouse/ClickHouse/pull/100230) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une exception `LOGICAL_ERROR` dans les queries impliquant des colonnes `Dynamic` avec des CROSS JOIN et des Runtime Filters, due au fait que `ColumnVariant::filter` partageait des pointeurs de variant column au lieu de les cloner dans le chemin d’optimisation `hasOnlyNulls`. Clôt [https://github.com/ClickHouse/ClickHouse/pull/100147](https://github.com/ClickHouse/ClickHouse/pull/100147). [#100234](https://github.com/ClickHouse/ClickHouse/pull/100234) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un bug sur les Array de Variant qui pouvait réinterpréter le data type lors de l’appel des fonctions `arrayFirst`/`arrayLast`. Par exemple, auparavant, `Array(Variant(Date, Bool))` était converti en `Bool` alors que le variant type sous-jacent réel était `Date`. [#100255](https://github.com/ClickHouse/ClickHouse/pull/100255) ([timothygk](https://github.com/timothygk)).
* Quelques modifications mineures apportées aux fonctions : les fonctions h3 valident désormais mieux les bornes ; readWKB vérifie les limites de taille (nouveau paramètre : `max_wkb_geometry_elements`) ; les fonctions de génération aléatoire limitent désormais le nombre maximal d’itérations dans leurs calculs. Complément à [#93543](https://github.com/ClickHouse/ClickHouse/issues/93543). [#100270](https://github.com/ClickHouse/ClickHouse/pull/100270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un problème où cutURLParameter pouvait ignorer à tort des paramètres lorsqu’ils apparaissaient comme sous-chaînes d’autres paramètres. [#100280](https://github.com/ClickHouse/ClickHouse/pull/100280) ([Nikita Semenov](https://github.com/leftmain)).
* Correction d’une exception lorsque le paramètre de chemin de fichier des métadonnées Iceberg contient un octet nul. [#100283](https://github.com/ClickHouse/ClickHouse/pull/100283) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du nombre quadratique de requêtes exécutées lorsque `distributed_index_analysis` est utilisé avec des prédicats contenant des sous-requêtes `IN`. [#100287](https://github.com/ClickHouse/ClickHouse/pull/100287) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de l’exception "Block structure mismatch" lors de l’utilisation de `GROUP BY ... WITH TOTALS HAVING` combiné à `UNION DISTINCT` et à des expressions Nullable. [#100293](https://github.com/ClickHouse/ClickHouse/pull/100293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception LOGICAL\_ERROR dans `estimateCompressionRatio` lorsque le paramètre `block_size_bytes` est extrêmement élevé. [#100298](https://github.com/ClickHouse/ClickHouse/pull/100298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception "Inconsistent AST formatting" dans les versions de débogage lors de l’utilisation de `GROUP BY CUBE(...) WITH ROLLUP` ou de combinaisons similaires. [#100376](https://github.com/ClickHouse/ClickHouse/pull/100376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception lors de la création d’une vue avec des alias de colonnes et des requêtes `SELECT *` ou `EXCEPT`/`INTERSECT`. [#100386](https://github.com/ClickHouse/ClickHouse/pull/100386) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `DROP TABLE`, qui restait bloqué indéfiniment sur des tables utilisant le moteur Kafka lorsque des consommateurs restaient bloqués dans un rééquilibrage après une erreur de heartbeat. [#100388](https://github.com/ClickHouse/ClickHouse/pull/100388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `ReadBuffer is canceled. Can't read from it.` dans les opérations de sauvegarde/restauration utilisant des archives zip. [#100400](https://github.com/ClickHouse/ClickHouse/pull/100400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `TOO_MANY_ROWS` pour les requêtes `SELECT count()` avec `max_rows_to_read` / `force_primary_key` lorsque les données sont réparties sur plusieurs parts avec des limites de granules non alignées. [#100408](https://github.com/ClickHouse/ClickHouse/pull/100408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `system.completions` afin de filtrer correctement les bases de données, les tables et les colonnes selon les droits d’accès dans toutes les combinaisons de grant : par table, par base de données et revoke par colonne. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d’un SEGFAULT dans NuRaft dû à une condition de concurrence. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
* `min`/`max`/`argMin`/`argMax` traitent désormais NaN de manière cohérente avec `ORDER BY` : NaN est toujours ignoré (et n’est renvoyé que si toutes les valeurs sont NaN). Auparavant, les résultats dépendaient de la position de NaN dans les données, en raison de la sémantique de comparaison non ordonnée d’IEEE 754. [#100448](https://github.com/ClickHouse/ClickHouse/pull/100448) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un bug de copier-coller où `delta_lake_snapshot_end_version`, défini sans `delta_lake_snapshot_start_version`, était ignoré silencieusement au lieu de produire une erreur `BAD_ARGUMENTS`. [#100454](https://github.com/ClickHouse/ClickHouse/pull/100454) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* `StorageRabbitMQ::shutdown` n’est pas idempotente (elle accède inconditionnellement à des pointeurs faibles, puis détruit les pointeurs partagés correspondants), mais elle est désormais appelée deux fois : une fois dans `StreamingStorageRegistry`, puis dans `DatabaseCatalog`. Ce correctif rend la méthode idempotente et ajoute des vérifications défensives de nullité. [#100455](https://github.com/ClickHouse/ClickHouse/pull/100455) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de l’exception `LOGICAL_ERROR` lors de l’utilisation de `accurateCastOrNull` avec le type cible `QBit`. [#100470](https://github.com/ClickHouse/ClickHouse/pull/100470) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Correction de l’exception LOGICAL\_ERROR "Stream ... not found" lors d’un insert dans une table contenant des colonnes `Array(JSON)` imbriquées, dans des wide parts avec `optimize_on_insert=0`. [#100475](https://github.com/ClickHouse/ClickHouse/pull/100475) ([Pavel Kruglov](https://github.com/Avogar)).
* Validation des chemins d’entrée de fichier dans les métadonnées de sauvegarde afin de rejeter les traversées de répertoires, les chemins absolus et les noms vides pendant `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction du non-fonctionnement de la syntaxe `LIMIT m OFFSET n WITH TIES`. Cette syntaxe est équivalente à `LIMIT n, m WITH TIES`, qui fonctionnait déjà. [#100491](https://github.com/ClickHouse/ClickHouse/pull/100491) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de l’exception "No set is registered for key" lors de l’utilisation de `IN` avec des colonnes `Nullable(Tuple)` ayant des champs nommés et des éléments `LowCardinality`. [#100523](https://github.com/ClickHouse/ClickHouse/pull/100523) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un heap-buffer-overflow dans usearch `sorted_buffer_gt::insert()` qui pouvait provoquer un crash ou corrompre silencieusement la mémoire pendant une recherche de similarité vectorielle. [#100537](https://github.com/ClickHouse/ClickHouse/pull/100537) ([Dustin Healy](https://github.com/dustinhealy)).
* Correction de `EXECUTE AS`, qui ignorait les clauses `FORMAT` et `INTO OUTFILE` spécifiées dans la requête. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
* Correction d’un formatage AST incohérent pour SAMPLE avec OFFSET au niveau de la requête. Clôt [#100576](https://github.com/ClickHouse/ClickHouse/issues/100576). [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction du Polaris catalog avec Azure. Depuis la version 25.12, ce catalogue avec Azure ajoutait le bucket au début du chemin. Par exemple `abfss://polaris-polaris@<some_url>.windows.net/polaris-polaris/<other-path>` au lieu de `abfss://polaris-polaris@<some_url>.windows.net/<other-path>`. Cette PR supprime le bucket du chemin. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction d’une exception d’incompatibilité de type dans transform lorsque la colonne `default` est const sur certains blocs. Clôt [#100574](https://github.com/ClickHouse/ClickHouse/issues/100574). [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige des cas de NOT\_FOUND\_COLUMN\_IN\_BLOCK où la partie SELECT de la projection contient des colonnes qui n’existent pas dans la partie SELECT d’origine de la requête. Clôt [#100194](https://github.com/ClickHouse/ClickHouse/issues/100194). [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Vérifie que les dimensions de forme du format Npy sont cohérentes avec la taille du fichier et les limites de dépassement afin d’éviter des dénis de service provoqués par des fichiers `.npy` malveillants avec des dimensions démesurées. Rejette également les formes vides et limite la mémoire par ligne à 2 GiB. [#100625](https://github.com/ClickHouse/ClickHouse/pull/100625) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige la non-prise en compte de `session_timezone` lors de l’analyse de valeurs `DateTime` pendant les async inserts (TCP) et tous les inserts via HTTP. [#100647](https://github.com/ClickHouse/ClickHouse/pull/100647) ([Sema Checherinda](https://github.com/CheSema)).
* Permet de passer une clé de sharding à `cluster()` et `clusterAllReplicas()` table functions lorsqu’une table function est utilisée comme source (par ex. `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
* Corrige un crash du serveur (échec d’assertion) lors de l’utilisation de fonctions d’agrégation paramétriques avec le combinateur Array et des arguments NULL, comme `quantileIfArrayArray(0.5)([[NULL]], [[1]])`. [#100679](https://github.com/ClickHouse/ClickHouse/pull/100679) ([nerve-bot](https://github.com/nerve-bot)).
* Corrige une exception lors du calcul du supertype commun pour des tuples vides et non vides avec `use_variant_as_common_type` activé. [#100699](https://github.com/ClickHouse/ClickHouse/pull/100699) ([Antonio Andelic](https://github.com/antonio2368)).
* Le serveur ne échoue plus au démarrage lorsqu’un disque Azure blob storage est configuré mais que le endpoint est temporairement inaccessible (par ex. en cas d’échec DNS). [#100701](https://github.com/ClickHouse/ClickHouse/pull/100701) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un comportement indéfini dans `positiveModulo` lorsque le diviseur non signé ne peut pas être représenté dans le type de résultat signé. [#100705](https://github.com/ClickHouse/ClickHouse/pull/100705) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un crash du serveur (erreur logique "Unexpected return type from \_\_topKFilter") lorsque `use_top_k_dynamic_filtering` est activé et que la colonne `ORDER BY` est de type `Dynamic` ou `Variant`. [#100742](https://github.com/ClickHouse/ClickHouse/pull/100742) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur lors de l’utilisation de la fonction `has()` avec PREWHERE/WHERE sur une clé Tuple contenant des éléments LowCardinality. [#100760](https://github.com/ClickHouse/ClickHouse/pull/100760) ([Groene AI](https://github.com/groeneai)).
* Corrige l’échec d’assertion `file_offset_of_buffer_end <= getFileSize()` (exception dans les builds de débogage) lors de la lecture de tables `Log` ou `StripeLog` sur S3 object storage avec des écritures concurrentes. [#100763](https://github.com/ClickHouse/ClickHouse/pull/100763) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception dans l’estimateur de sélectivité des statistiques lorsqu’une WHERE clause contient une expression de fonction (par ex. toDecimal64(col, 3)) sur une table avec les statistiques activées. L’estimateur ignore désormais ces prédicats au lieu de tenter un transtypage invalide. [#100764](https://github.com/ClickHouse/ClickHouse/pull/100764) ([Han Fei](https://github.com/hanfei1991)).
* Corrige un cas rare où une jointure avec réordonnancement peut produire un résultat incorrect. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige les types d'argument `AggregateFunction` incorrects dans le comptage trivial optimisé, qui provoquaient une exception `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` lors de requêtes sur des expressions comme `count(v0 + v1)` sur des tables distribuées. [#100794](https://github.com/ClickHouse/ClickHouse/pull/100794) ([YjyJeff](https://github.com/YjyJeff)).
* Certains catalogues pouvaient afficher des secrets dans la section `SETTINGS` du résultat de la requête `select * from system.databases`. Cette PR empêche désormais ce comportement. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un comportement indéfini (débordement d'entier signé) dans `toStartOfInterval` lors de l'utilisation d'intervalles Week, Quarter ou Year avec un argument origin et des valeurs d'intervalle extrêmes. [#100817](https://github.com/ClickHouse/ClickHouse/pull/100817) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige l'impossibilité, pour les combinateurs de fonctions d'agrégation `If`, `Distinct`, `DistinctIf`, `IfState ` avec un type de retour `Tuple` et un ou plusieurs arguments `Nullable`, de lire d'anciens états sérialisés après l'introduction de `Nullable(Tuple)`. Clôt [#98917](https://github.com/ClickHouse/ClickHouse/issues/98917). [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige un segfault dans s3Cluster et les requêtes distribuées dû à une utilisation après libération dans le pool de connexions. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige un segfault dû au déréférencement d'un pointeur nul lors du chargement des dictionnaires pendant l'arrêt du serveur. `Context::getUserDefinedSQLObjectsStorage` (qui déréférence `user_defined_sql_objects_storage`) est appelé par les threads des dictionnaires en concurrence avec le thread principal appelant `Context::shutdown` (qui définit `user_defined_sql_objects_storage` à null). Il faut s'assurer de désactiver les mises à jour futures dans le chargeur de dictionnaires, d'arrêter les requêtes de dictionnaire en cours et de joindre les threads de chargement des dictionnaires, le tout avant d'exécuter `Context::shutdown`. Comme pour les requêtes normales. [#100839](https://github.com/ClickHouse/ClickHouse/pull/100839) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige un débordement de tampon dans `ULIDStringToDateTime` lorsque l'entrée contient des octets non ASCII. [#100843](https://github.com/ClickHouse/ClickHouse/pull/100843) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige un plantage (`LOGICAL_ERROR`) lors d'une requête sur une table `Merge` (ou la fonction de table `merge()`) qui encapsule plusieurs tables, dont une table `Distributed`, avec `distributed_group_by_no_merge=1` activé. [#100859](https://github.com/ClickHouse/ClickHouse/pull/100859) ([Groene AI](https://github.com/groeneai)).
* Cast\_keep\_nullable, lorsqu'il est activé, ne lèvera pas d'exception lors du transtypage d'une valeur null dynamique vers variant. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige les commandes `get`, `exists` et `ls` de `clickhouse-keeper-client`, qui affichaient des messages d'erreur `watch_id` en double sur stdout au lieu de stderr. [#100893](https://github.com/ClickHouse/ClickHouse/pull/100893) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Corrige une exception dans `intDiv`/`intDivOrZero` sur des tableaux de tuples Nullable, par ex. `SELECT intDiv([divide((1, 2), ... AND NULL)], 2)`. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
* Évalue les arguments de moteur pour `StorageAlias` avant d'enregistrer la définition, afin que des expressions comme `currentDatabase()` soient résolues en littéraux avant d'être enregistrées dans la base de données. [#100902](https://github.com/ClickHouse/ClickHouse/pull/100902) ([Nikolay Degterinsky](https://github.com/evillique)).
* Correction de `processAndOptimizeTextIndexFunctions` lorsque `query_plan_merge_expressions = 0`, quand `ExpressionStep` se trouve directement au-dessus de `ReadFromMergeTree`. Corrige [#100879](https://github.com/ClickHouse/ClickHouse/issues/100879). [#100909](https://github.com/ClickHouse/ClickHouse/pull/100909) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Mise à jour de replxx pour inclure la correction d’un accès hors limites dans do\_complete\_line. [#100925](https://github.com/ClickHouse/ClickHouse/pull/100925) ([Azat Khuzhin](https://github.com/azat)).
* Correction de résultats incorrects lorsqu’un JOIN avec l’optimisation shard-by-PK utilise le cache des conditions de requête et que certaines parts sont filtrées par des conditions mises en cache. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
* Correction de `divide` et `intDiv`, qui renvoyaient `ILLEGAL_DIVISION` lorsqu’ils étaient utilisés dans des expressions de filtre pendant l’analyse des index dans certains cas. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction des erreurs "La table cible n'existe pas" pour les vues matérialisées avec tables internes lors du démarrage asynchrone, dues à un ordre incorrect des dépendances au démarrage. [#100946](https://github.com/ClickHouse/ClickHouse/pull/100946) ([Nikolay Degterinsky](https://github.com/evillique)).
* Correction d’un comportement indéfini (débordement d’entier signé) dans parseDateTimeBestEffort lors de l’analyse de chaînes datetime comportant plus de 18 chiffres de fraction de seconde. [#100948](https://github.com/ClickHouse/ClickHouse/pull/100948) ([Vasily Chekalkin](https://github.com/bacek)).
* Correction d’un crash lors de l’utilisation d’un index de recherche textuelle avec une clause `IN` contenant une sous-requête de tuple, par exemple `WHERE (id, str) IN (SELECT (id, str) FROM ...)`, ou lorsque le nombre de colonnes dans la sous-requête ne correspond pas au tuple à gauche de `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’un crash lors de la construction d’un dictionnaire Polygon à partir d’une table `MergeTree` utilisant une sérialisation sparse des colonnes. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de l’erreur logique "Invalid action query tree node" lors de l’utilisation de `INTERSECT ALL` / `UNION ALL` avec des expressions évaluées comme constantes. [#100977](https://github.com/ClickHouse/ClickHouse/pull/100977) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’impossibilité, pour la fonction d’agrégation `sumCountOrDefault` avec un ou plusieurs argument `Nullable`, de lire d’anciens états sérialisés après l’introduction de `Nullable(Tuple)`. Clôt [#100882](https://github.com/ClickHouse/ClickHouse/issues/100882). [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un crash (`Logical error: isConst/isSparse/isReplicated assertTypeEquality`) dans les algorithmes de fusion lorsque la réplication paresseuse des colonnes (`enable_lazy_columns_replication`) produit des colonnes `ColumnReplicated` qui se retrouvent dans des pipelines de fusion avec tri avec des entrées arrivant tardivement. [#101036](https://github.com/ClickHouse/ClickHouse/pull/101036) ([Groene AI](https://github.com/groeneai)).
* Correction de l’erreur `UNKNOWN_IDENTIFIER` incorrecte lorsque le même alias est utilisé pour plusieurs expressions dans `SELECT` ; l’erreur correcte `MULTIPLE_EXPRESSIONS_FOR_ALIAS` est désormais renvoyée. [#101040](https://github.com/ClickHouse/ClickHouse/pull/101040) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des colonnes ALIAS de types `DateTime`/`DateTime64` qui n’appliquaient pas la conversion de fuseau horaire lorsque le fuseau horaire déclaré diffère de celui de l’expression. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des politiques de ligne qui n’étaient pas enregistrées dans `query_log` pour les vues, les sous-requêtes et `INSERT ... SELECT`. Bien que les politiques de ligne aient été appliquées lors de la planification de la requête, elles n’étaient pas transmises des sous-planificateurs au planificateur parent pour la journalisation. Les politiques de ligne (pour la journalisation uniquement) sont désormais conservées dans `QueryAccessInfo`, afin que les planificateurs et sous-planificateurs puissent tous les deux les renseigner. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).
* Correction d’une exception dans `DirectJoinMergeTreeEntity` lorsque les blocks du pipeline contiennent des colonnes `ColumnConst` fusionnées avec des colonnes ordinaires. [#101046](https://github.com/ClickHouse/ClickHouse/pull/101046) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un espace superflu dans le formatage des alias de colonnes CTE (`WITH t (a, b)` → `WITH t(a, b)`). [#101049](https://github.com/ClickHouse/ClickHouse/pull/101049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un échec des fonctions de table `remote`/`cluster` avec des fonctions de table imbriquées comme `merge` lorsque l’analyseur est activé. [#101055](https://github.com/ClickHouse/ClickHouse/pull/101055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `OFFSET` appliqué deux fois dans les requêtes distribuées lorsque `prefer_localhost_replica=1`, ce qui produisait moins de lignes que prévu. [#101071](https://github.com/ClickHouse/ClickHouse/pull/101071) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un plantage lors de l’utilisation du format `Regexp` avec une expression régulière invalide dans le paramètre `format_regexp`. [#101074](https://github.com/ClickHouse/ClickHouse/pull/101074) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de l’erreur "Illegal type Decimal64 of start parameter" pour les fonctions d’agrégation de séries temporelles lors de l’utilisation de `serialize_query_plan=1` avec des répliques parallèles. [#101083](https://github.com/ClickHouse/ClickHouse/pull/101083) ([Groene AI](https://github.com/groeneai)).
* Correction d’une exception dans `optimizeLazyMaterialization` lorsqu’une projection avec PREWHERE est utilisée avec `ORDER BY ... LIMIT`. [#101115](https://github.com/ClickHouse/ClickHouse/pull/101115) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’un plantage du serveur (SIGABRT) lors de l’utilisation de fonctions d’agrégation avec le combinator `Null`, réservé à un usage interne (par ex. `sumNull`, `avgNull`), et avec le paramètre `aggregate_functions_null_for_empty = 1` activé. [#101147](https://github.com/ClickHouse/ClickHouse/pull/101147) ([Groene AI](https://github.com/groeneai)).
* Correction d’un use-after-free dans le chemin d’écriture du cache du système de fichiers, qui pouvait entraîner des lectures depuis une mémoire déjà libérée lors de la journalisation des segments de fichier terminés (détecté par MemorySanitizer dans BuzzHouse). [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
* Correction d’un plantage du serveur avec "Trying to attach external table to a ready set without explicit elements" lorsque l’analyse d’index distribuée rencontre un prédicat GLOBAL IN dont le set a été construit sans éléments explicites. [#101178](https://github.com/ClickHouse/ClickHouse/pull/101178) ([Groene AI](https://github.com/groeneai)).
* Correction des fonctions d’agrégation `MAX`/`MIN` sur des colonnes `Decimal`, qui renvoyaient des résultats incorrects lorsque la compilation JIT est activée (une fois le seuil de compilation atteint). [#101203](https://github.com/ClickHouse/ClickHouse/pull/101203) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de la désactivation permanente des optimisations `minmax_count_projection` et des optimisations triviales de `COUNT(*)` après un lightweight delete, même après la fusion de toutes les parts portant un masque de lightweight delete. [#101212](https://github.com/ClickHouse/ClickHouse/pull/101212) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un cas pouvant entraîner l’erreur logique `Having zero bytes, ...` du cache, lorsqu’un objet distant est écrasé entre `list` et `read`, ce qui produisait auparavant des métadonnées d’objet obsolètes. [#101219](https://github.com/ClickHouse/ClickHouse/pull/101219) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige un crash du serveur (LOGICAL\_ERROR: Bad cast from ColumnVector to ColumnLowCardinality) lors d’une requête sur une table MergeTree avec `ORDER BY CAST(lc_column, 'Type')`, lorsque `lc_column` est de type LowCardinality. [#101220](https://github.com/ClickHouse/ClickHouse/pull/101220) ([Groene AI](https://github.com/groeneai)).
* Corrige le nettoyage des processing nodes obsolètes dans `S3Queue`. [#101230](https://github.com/ClickHouse/ClickHouse/pull/101230) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige un comportement indéfini dans mergeTreeAnalyzeIndexes() en cas d’argument `optimizations` invalide. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
* Corrige l’exception `Logical error: 'partitions_count > 0'` lors de l’exécution d’instructions `ALTER TABLE UPDATE` consécutives sur une table Iceberg partitionnée. [#101278](https://github.com/ClickHouse/ClickHouse/pull/101278) ([Desel72](https://github.com/Desel72)).
* Corrige des résultats de requête erronés lorsqu’une constante entière de grande taille (par ex. 256, 2147483648) est utilisée comme prédicat booléen dans une WHERE clause avec AND sur des tables MergeTree. Par exemple, `SELECT count() FROM t WHERE (2147483648 > b) AND 2147483648` renvoyait incorrectement 0 au lieu de correspondre à toutes les lignes. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
* Corrige les insert-select depuis un cluster delta lake avec replicated merge tree. [#101299](https://github.com/ClickHouse/ClickHouse/pull/101299) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un crash avec "Logical error: Reading from materialized CTE before materialization" lorsqu’une sous-requête scalaire référence une chaîne de materialized CTE dépendantes. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
* Corrige une data race sur `storage_id` dans `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige le formatting et le clonage de l’AST BACKUP FROM SNAPSHOT. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un crash LOGICAL\_ERROR "Current component is empty" lors d’une requête sur `system.part_moves_between_shards` avec `enforce_keeper_component_tracking` activé. [#101462](https://github.com/ClickHouse/ClickHouse/pull/101462) ([Groene AI](https://github.com/groeneai)).
* Corrige une faute de segmentation dans DataTypeDynamic::create() lorsque le fuzzer génère un AST de type Dynamic mal formé. [#101464](https://github.com/ClickHouse/ClickHouse/pull/101464) ([Groene AI](https://github.com/groeneai)).
* Génère une erreur lorsque `delta_lake_snapshot_version` ou les paramètres de version CDF sont utilisés sans DeltaKernel activé, au lieu de renvoyer silencieusement des données erronées. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
* Corrige l’exception `NOT_FOUND_COLUMN_IN_BLOCK` lors de l’utilisation de ARRAY JOIN avec JOIN USING et du paramètre `analyzer_compatibility_join_using_top_level_identifier` activé. Ferme [#101240](https://github.com/ClickHouse/ClickHouse/issues/101240). [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction de la boucle de retry d’INSERT Iceberg qui échouait lorsque la table avait été créée avec `iceberg_metadata_file_path` et que la version cible des métadonnées existait déjà. [#101548](https://github.com/ClickHouse/ClickHouse/pull/101548) ([Groene AI](https://github.com/groeneai)).
* Suppression de Nullable de la colonne de résultat dans arrayIntersect et les fonctions associées afin d’éviter une incohérence de sérialisation/désérialisation. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
* Correction d’un crash du serveur (LOGICAL\_ERROR) lors d’un SELECT sur une vue matérialisée reposant sur le table engine IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([Groene AI](https://github.com/groeneai)).
* Correction d’un message d’erreur incorrect lors de l’appel à `intExp10` avec un argument NaN — il indiquait `intExp2` au lieu de `intExp10`. [#101582](https://github.com/ClickHouse/ClickHouse/pull/101582) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* Correction du fait que `allow_statistics=0` ne bloquait pas `ALTER TABLE ADD STATISTICS` et `ALTER TABLE DROP STATISTICS` après la refactorisation de [#100288](https://github.com/ClickHouse/ClickHouse/issues/100288). [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
* Correction de l’échec de `KeeperMap` `CREATE TABLE` avec "Cannot create metadata for table" lorsque des nœuds ZooKeeper résiduels issus d’un drop partiel antérieur à la version 25.1 ne contenaient pas le nœud `drop_lock_version`. [#101623](https://github.com/ClickHouse/ClickHouse/pull/101623) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’une possible erreur logique lors de la lecture des sous-colonnes de Map. Ferme [#100769](https://github.com/ClickHouse/ClickHouse/issues/100769). Ferme [#101336](https://github.com/ClickHouse/ClickHouse/issues/101336). [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de la priorité d’une correspondance exacte de sous-colonne sur une correspondance par préfixe dans `getSubcolumnData` afin d’éviter un crash potentiel. Ferme [#101271](https://github.com/ClickHouse/ClickHouse/issues/101271). [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un crash (LOGICAL\_ERROR: "ColumnUnique can't contain null values") lors de la comparaison d’une colonne `LowCardinality` avec une constante NULL de type `Variant` alors que `use_variant_default_implementation_for_comparisons` est désactivé. [#101690](https://github.com/ClickHouse/ClickHouse/pull/101690) ([Groene AI](https://github.com/groeneai)).
* Ajout d’une protection contre les flux vides dans Bzip2ReadBuffer afin qu’il renvoie EOF au lieu de lever UNEXPECTED\_END\_OF\_FILE lorsque le flux interne est vide. [#101691](https://github.com/ClickHouse/ClickHouse/pull/101691) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Correction du texte de description inversé pour la colonne `alterable` dans `system.s3_queue_settings` et `system.azure_queue_settings` — les significations de `0` et `1` ont été permutées pour correspondre au comportement réel du code. [#101703](https://github.com/ClickHouse/ClickHouse/pull/101703) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Correction du fait que positiveModulo(tuple, number) était incorrectement dirigé vers la division au lieu du modulo. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
* Correction d’un crash lorsque `thread_pool_size` est configuré sur un disk enveloppé par un cache. Auparavant, `FileCacheSettings::loadFromConfig()` rejetait `thread_pool_size` comme un setting inconnu, empêchant le serveur de démarrer. Ce setting est un paramètre `IDisk` valide qui contrôle le nombre de threads utilisés pour les opérations de copie de disk à disk lors des déplacements de parts en arrière-plan. [#101712](https://github.com/ClickHouse/ClickHouse/pull/101712) ([Francisco](https://github.com/Milias)).
* Correction de la création de dictionnaire `RANGE_HASHED`, qui acceptait silencieusement un attribut de plage `MAX` inexistant et utilisait une configuration de type incorrecte lorsque les attributs de plage min et max avaient des types différents. Le bug provenait d'une erreur de copier-coller dans `buildRangeConfiguration`, qui recherchait `min_attr_name` au lieu de `max_attr_name` pour l'attribut max. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Correction d'un crash de type use-after-free dans le scheduler de lease CPU lorsque le temporisateur d'attente survit au worker thread dont il référence `ProfileEvents::Counters`. [#101761](https://github.com/ClickHouse/ClickHouse/pull/101761) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d'un bug dans les fonctions arrayLevenshteinDistanceWeighted et arraySimilarity. Clôt [#101725](https://github.com/ClickHouse/ClickHouse/issues/101725). [#101767](https://github.com/ClickHouse/ClickHouse/pull/101767) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* Correction de l'API de requête Prometheus, qui ignorait les corps de formulaire POST. [#101794](https://github.com/ClickHouse/ClickHouse/pull/101794) ([James Cunningham](https://github.com/JTCunning)).
* Correction d'une exception s'échappant du destructeur S3 `Client::~Client` et provoquant l'arrêt du serveur. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
* Correction d'un use-after-scope dans la désérialisation en parallèle des paths dynamiques du type `Object`, qui pouvait provoquer des crashs lors de la lecture de tables comportant de nombreux paths dynamiques. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d'une sortie incorrecte dans la fonction `formatDateTime` avec le formatter `%W` sous certains paramètres de formatting (non par défaut). [#101847](https://github.com/ClickHouse/ClickHouse/pull/101847) ([Robert Schulze](https://github.com/rschu1ze)).
* Correction d'un faux négatif de `shouldPatchFunction` dans `SYSTEM INSTRUMENT ADD` lorsque la chaîne recherchée apparaît d'abord dans un argument de template du nom de symbole démêlé. [#101885](https://github.com/ClickHouse/ClickHouse/pull/101885) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction de la perte du registre UDF lorsque la session ZooKeeper expire pendant le refresh périodique — toutes les user-defined functions pouvaient devenir indisponibles jusqu'à ce qu'un full refresh réussisse. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
* Correction de la description de `system.codecs` pour `AES_256_GCM_SIV`, afin d'indiquer `AES-256` au lieu de `AES-128`. [#101917](https://github.com/ClickHouse/ClickHouse/pull/101917) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Correction de l'utilisation d'Extremes incorrects dans un min-max index créé sur une JSON column, entraînant un résultat de query erroné. Clôt [#101700](https://github.com/ClickHouse/ClickHouse/issues/101700). [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
* Le tokenizer `splitByString` rejette désormais les chaînes de séparation vides. [#101928](https://github.com/ClickHouse/ClickHouse/pull/101928) ([Robert Schulze](https://github.com/rschu1ze)).
* Correction de `materialize_skip_indexes_on_merge=false`, qui ne désactivait pas les text indexes (full-text) pendant le merge. Auparavant, seuls les skip indexes non textuels (minmax, set, bloom\_filter) étaient désactivés ; les text indexes continuaient à être construits, gaspillant du CPU et des E/S. [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
* Le tokenizer `sparseGrams` générait des tokens plus longs que la longueur maximale fournie (à cause d'un `+2` codé en dur dans l'implémentation). [#101934](https://github.com/ClickHouse/ClickHouse/pull/101934) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Corrige un SIGSEGV dans `MergeTreeDataPartWriterWide::cancel` lorsqu’un constructeur de flux lève une exception pendant `addStreams`, laissant une entrée nulle dans `column_streams`. [#101936](https://github.com/ClickHouse/ClickHouse/pull/101936) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige une exception lors de requêtes sur des tables Merge ou Distributed avec un index full-text et des conditions de filtrage combinées mêlant `has*Tokens` et LIKE, lorsque `query_plan_direct_read_from_text_index` est activé. [#101939](https://github.com/ClickHouse/ClickHouse/pull/101939) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige un comportement indéfini lors de l’analyse de paquets Query du protocole natif contenant des valeurs `QueryProcessingStage` non valides. [#101972](https://github.com/ClickHouse/ClickHouse/pull/101972) ([Raúl Marín](https://github.com/Algunenano)).
* Ferme la connexion TCP lorsqu’une exception se produit pendant l’analyse de la requête initiale afin d’éviter la lecture de données parasites depuis un flux désynchronisé. [#101989](https://github.com/ClickHouse/ClickHouse/pull/101989) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un bug de concurrence SLRU dans le filesystem cache 26.1+, qui peut entraîner une logical error de réservation d’espace. En build de débogage, cela peut également provoquer l’échec de l’assertion : `'Previous state is Evicting, but expected state to be Active while setting Evicting flag for 2c1e3484ecdc6b78a8978fa5b17c5097:0:339 (state: Evicting)'.`. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige une exception lors de la conversion d’une chaîne contenant des données supplémentaires vers le type vide `Tuple()`. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un ordre de lignes incorrect dans les requêtes qui utilisent ORDER BY avec l’algorithme de jointure grace\_hash. Les requêtes concernées pouvaient renvoyer des résultats dans le mauvais ordre, produisant silencieusement une sortie incorrecte. [#102036](https://github.com/ClickHouse/ClickHouse/pull/102036) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige une LOGICAL ERROR (Unexpected size of index type) pouvant se produire dans des requêtes RIGHT JOIN et FULL JOIN lorsque le paramètre `max_bytes_in_join` était défini. [#102042](https://github.com/ClickHouse/ClickHouse/pull/102042) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige les cas où Time avec des valeurs négatives renvoyait un résultat erroné lors d’une comparaison avec DateTime. Clôt [#101670](https://github.com/ClickHouse/ClickHouse/issues/101670). [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige un crash lors de l’actualisation d’une UDF, causé par `ZooKeeperRetriesControl` qui retentait sur une session ZooKeeper obsolète (expirée) sans la renouveler. [#102059](https://github.com/ClickHouse/ClickHouse/pull/102059) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige l’absence d’espaces lors du formatage d’un unlock snapshot. clôt [https://github.com/clickhouse/clickhouse/issues/101723](https://github.com/clickhouse/clickhouse/issues/101723). [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
* Corrige un crash (SIGSEGV) lors d’une requête sur une vue avec une WHERE clause, lorsque la requête interne produit des colonnes de types différents de ceux des métadonnées de la vue (par ex. Nullable issu d’un LEFT JOIN avec `join_use_nulls`). [#102085](https://github.com/ClickHouse/ClickHouse/pull/102085) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige des entrées de `VectorSimilarityIndexCache` qui n’étaient jamais évincées après la suppression d’une part, en raison de clés de cache incohérentes. [#102152](https://github.com/ClickHouse/ClickHouse/pull/102152) ([Seva Potapov](https://github.com/seva-potapov)).
* Envoie un NACK pour les messages corrompus lors de l’utilisation du stockage RabbitMQ. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige une erreur logique lors de l’analyse d’une chaîne de tuple vide invalide. [#102289](https://github.com/ClickHouse/ClickHouse/pull/102289) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige des résultats d’agrégation incorrects (lignes dupliquées) lors de l’utilisation de `optimize_aggregation_in_order=1` avec des colonnes GROUP BY ordonnées différemment de la clé de tri de la table. [#102299](https://github.com/ClickHouse/ClickHouse/pull/102299) ([Groene AI](https://github.com/groeneai)).
* Corrige un plantage dans `IcebergLocal` `ALTER TABLE ... UPDATE` lors de l’utilisation du format Avro, causé par l’absence de déballage des types enveloppes `LowCardinality`/`Nullable` avant la sérialisation. [#102337](https://github.com/ClickHouse/ClickHouse/pull/102337) ([Desel72](https://github.com/Desel72)).
* Corrige une faute de segmentation dans les mutations sur des colonnes matérialisées sans expression. Ferme [#102185](https://github.com/ClickHouse/ClickHouse/issues/102185). [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
* Correction de Coalescing merge tree pour le type tableau. Cela ferme [#89509](https://github.com/ClickHouse/ClickHouse/issues/89509). [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige une faute de segmentation (ou `LOGICAL_ERROR` dans les builds de débogage) lors de la lecture de fichiers Parquet avec le pushdown du filtre de Bloom activé et des conditions d’égalité/inégalité dans la clause WHERE. Le plantage était dû à un accès mémoire hors limites lors de la récupération des données du filtre de Bloom par le préchargeur Parquet, et pouvait également entraîner des résultats de requête erronés non déterministes. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
* Corrige un abandon `LOGICAL_ERROR` lors du redimensionnement dynamique du cache du système de fichiers SLRU, causé par des statistiques d’éviction partagées entre les sous-files d’attente et un chemin de récupération incorrect pour les candidats en échec. [#102396](https://github.com/ClickHouse/ClickHouse/pull/102396) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige l’échec d’initialisation, sur un nouveau replica, des tables alias sans table cible dans la base de données Replicated. Ferme [#101320](https://github.com/ClickHouse/ClickHouse/issues/101320). [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige une lecture hors limites dans les fonctions de recherche de chaînes (`countSubstrings`, `position`, etc.) lors de la recherche d’un needle composé entièrement d’octets nuls. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
* Les paramètres d’index de texte intégral (`enable_full_text_index`, `allow_experimental_full_text_index`, `use_skip_indexes_on_data_read`) ne sont plus désactivés lorsque le paramètre `compatibility` pointe vers une version antérieure à 26.1. Auparavant, cela pouvait empêcher `SharedDatabaseCatalog` de créer des tables avec des index de texte intégral. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige une lecture hors limites dans `printf` avec un `%` final. [#102472](https://github.com/ClickHouse/ClickHouse/pull/102472) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une exception chassert `ReadBuffer is canceled` dans les builds de débogage dans AsynchronousMetrics, causée par le fait que le retour en arrière ne réinitialisait pas l’indicateur d’annulation du buffer. [#102524](https://github.com/ClickHouse/ClickHouse/pull/102524) ([Yuri Fedoseev](https://github.com/yurifedoseev)).
* Corrige `hasToken` / `hasTokenOrNull` avec des needles composés uniquement de séparateurs (par ex. `'()'`, `'!!!'`) sur des colonnes dotées d’un index de texte intégral : auparavant, l’index ignorait silencieusement tous les granules au lieu de lever `BAD_ARGUMENTS` (pour `hasToken`) ou de renvoyer `NULL` (pour `hasTokenOrNull`). [#102544](https://github.com/ClickHouse/ClickHouse/pull/102544) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige les OOM sur de très grosses requêtes multi dans Keeper. Pour le tracing OpenTelemetry, nous allouons systématiquement >1 KiB pour les spans OpenTelemetry dans les objets `ZooKeeperRequest`, ce qui signifie que, pour des requêtes multi vraiment énormes, nous essayons d’allouer >10 GiB de mémoire supplémentaire. Pour corriger cela, nous conservons désormais les données partagées en mémoire statique et utilisons `std::unique_ptr` à la place de `std::optional` dans `ZooKeeperOpentelemetrySpans`. [#102586](https://github.com/ClickHouse/ClickHouse/pull/102586) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige le gonflement de la CurrentMetric de `NamedCollection` provoqué par `CREATE NAMED COLLECTION IF NOT EXISTS` sur des collections existantes, ainsi que l’absence d’initialisation pour les collections chargées depuis la config ou le stockage SQL au démarrage. Clôt [#102507](https://github.com/ClickHouse/ClickHouse/issues/102507). [#102598](https://github.com/ClickHouse/ClickHouse/pull/102598) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige une exception dans `getStructureOfRemoteTable` lorsque le shard local renvoie des colonnes vides en raison d’un DDL concurrent. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception `LOGICAL_ERROR` lorsque plusieurs requêtes concurrentes `CREATE TABLE IF NOT EXISTS` ciblent la même table `S3Queue` dans une base de données Shared. [#102610](https://github.com/ClickHouse/ClickHouse/pull/102610) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige le crash `LOGICAL_ERROR` « Unexpected number of rows in column subchunk » dans le lecteur natif Parquet V3 lors de la lecture de colonnes Nullable avec un filtre WHERE. [#102628](https://github.com/ClickHouse/ClickHouse/pull/102628) ([Groene AI](https://github.com/groeneai)).
* Corrige la description de l’événement de profil `AzureWriteMicroseconds`, qui indiquait « read » au lieu de « write ». [#102639](https://github.com/ClickHouse/ClickHouse/pull/102639) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige un problème avec la politique de lignes qui provoque l’exception « Not found column in block » dans certains cas particuliers. [#102648](https://github.com/ClickHouse/ClickHouse/pull/102648) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige une exception du serveur dans ClusterDiscovery lorsqu’un cluster statique (défini dans la config) n’avait temporairement aucun nœud actif. [#102661](https://github.com/ClickHouse/ClickHouse/pull/102661) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige une inférence erronée du type de données date en cas de dépassement après ajustement du fuseau horaire. Clôt [#102601](https://github.com/ClickHouse/ClickHouse/issues/102601). [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige le blocage infini de `SYSTEM WAIT VIEW` lorsque la vue matérialisée actualisable est supprimée alors que l’attente est en cours. [#102681](https://github.com/ClickHouse/ClickHouse/pull/102681) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige CASE avec une expression Dynamic qui renvoyait ELSE pour toutes les lignes. Clôt [#102511](https://github.com/ClickHouse/ClickHouse/issues/102511). [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la sérialisation du type Dynamic aplati avec des types de données encodés en binaire. Clôt [#101911](https://github.com/ClickHouse/ClickHouse/issues/101911). [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige le fait que format\_schema\_source='query' ignorait silencieusement les résultats sur plusieurs lignes. Clôt [#101905](https://github.com/ClickHouse/ClickHouse/issues/101905). [#102698](https://github.com/ClickHouse/ClickHouse/pull/102698) ([Pavel Kruglov](https://github.com/Avogar)).
* Signale le code de sortie réel via le client SSH au lieu de ramener toutes les erreurs à `1`. Résout [#101741](https://github.com/ClickHouse/ClickHouse/issues/101741). [#102700](https://github.com/ClickHouse/ClickHouse/pull/102700) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige la perte des en-têtes HTTP pour les handlers de requêtes dynamiques/prédéfinies. Résout [#101846](https://github.com/ClickHouse/ClickHouse/issues/101846). [#102706](https://github.com/ClickHouse/ClickHouse/pull/102706) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Applique une correction d'échantillonnage de Poisson aux heap profiles jemalloc réduits afin de correspondre à la sortie de jeprof. Auparavant, le format réduit sous-estimait les tailles d'allocation réelles car il ne tenait pas compte de la probabilité d'échantillonnage. [#102759](https://github.com/ClickHouse/ClickHouse/pull/102759) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige le crash dans la fonction `hasPhrase` avec un argument `NULL`. [#102802](https://github.com/ClickHouse/ClickHouse/pull/102802) ([Nikita Taranov](https://github.com/nickitat)).
* Corrige un crash du serveur (SIGSEGV) lors de la lecture de fichiers Avro avec des schémas récursifs contenant des références cycliques à des types symboliques. Ces schémas sont désormais détectés et rejetés avec un message d'erreur clair, au lieu de provoquer un crash. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur (assertion LOGICAL\_ERROR) lorsqu'une fonction sur une colonne `Variant` atteint une limite mémoire ou rencontre une autre exception sans rapport avec une conversion de type lors du transtypage du résultat dans `FunctionVariantAdaptor`. L'exception est désormais propagée correctement au lieu d'être classée à tort comme une erreur interne. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
* Corrige un crash du serveur dans les builds debug/sanitizer lorsqu'une `std::length_error` est levée pendant l'inférence de schéma (par exemple à cause de valeurs extrêmes de `input_format_msgpack_number_of_columns` ou de données d'entrée malformées). [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
* Fait en sorte que la représentation de null dans la sérialisation des colonnes répliquées et creuses respecte les paramètres (par exemple `format&#95;tsv&#95;null&#95;representation`). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).
* Rétroporté dans [#103499](https://github.com/ClickHouse/ClickHouse/issues/103499) : corrige les requêtes S3 qui échouaient avec `ios_base::clear: unspecified iostream_category error` au lieu d'être retentées, parce que Poco `BufferedStreamBuf::flushBuffer` ne gérait pas les écritures courtes depuis la couche socket. [#102894](https://github.com/ClickHouse/ClickHouse/pull/102894) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige le fait que les optimisations `minmax_count_projection` et les optimisations triviales de `COUNT(*)` restaient désactivées de façon permanente après un lightweight delete, même après la fusion de toutes les parties portant un masque de lightweight delete. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige des crashes aléatoires dans jemalloc dus à LTO. [#102913](https://github.com/ClickHouse/ClickHouse/pull/102913) ([Azat Khuzhin](https://github.com/azat)).
* Optimise les chaînes de OR de row policy en IN dans le nouvel analyseur. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une corruption des métadonnées jemalloc causée par la libération du page cache avec un alignement incorrect, ce qui peut entraîner des crashes. [#102918](https://github.com/ClickHouse/ClickHouse/pull/102918) ([Azat Khuzhin](https://github.com/azat)).
* Les INSERT simples sans vues matérialisées ne demandent plus un nombre excessif de slots et de threads ConcurrencyControl (`max_threads` au lieu de `max_insert_threads`), ce qui évite la famine de slots CC et l'explosion du nombre de threads sur les clusters avec un fort débit d'INSERT. [#102961](https://github.com/ClickHouse/ClickHouse/pull/102961) ([Sema Checherinda](https://github.com/CheSema)).
* Réintroduction d'ArrowMemoryPool pour permettre de lever MEMORY\_LIMIT\_EXCEEDED et éviter un OOM du noyau. [#102999](https://github.com/ClickHouse/ClickHouse/pull/102999) ([Azat Khuzhin](https://github.com/azat)).
* Correction de la prise en compte de `cast_string_to_date_time_mode` pour `CAST` vers `Nullable(DateTime)`. Clôt [#101840](https://github.com/ClickHouse/ClickHouse/issues/101840). [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
* Ajout de la prise en charge des colonnes `ALIAS` dans l'optimisation de lecture directe de l'index de texte. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).
* Rétroporté dans [#103454](https://github.com/ClickHouse/ClickHouse/issues/103454) : correction de `SELECT DISTINCT`, qui renvoyait silencieusement des résultats incomplets lorsqu'une projection d'agrégation correspondait à la query et que certaines parts de la table ne contenaient pas de données de projection (par ex. si la projection avait été ajoutée à une table contenant déjà des données et que `MATERIALIZE PROJECTION` n'avait pas été exécuté). Clôt [#102951](https://github.com/ClickHouse/ClickHouse/issues/102951). [#103052](https://github.com/ClickHouse/ClickHouse/pull/103052) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de résultats erronés renvoyés par `WHERE x AND toNullable(N)` sur des tables `MergeTree` lorsque `N` est un entier plus large que `UInt8` (par ex. `256`, `65535`, `2147483648` ou tout entier négatif). Le filtre écartait à tort toutes les lignes, car `splitFilterNodeForAllowedInputs` utilisait un zéro `NULL` lors de la conversion en booléen du reste `Nullable` d'un `AND` réduit, ce qui transformait la comparaison en `NULL` selon la logique ternaire. [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).
* Correction du type d'argument incorrect signalé dans les messages d'erreur des fonctions de recherche de chaînes (par ex. `locate`, `position`) lorsque les arguments sont passés dans l'ordre inversé (`locate(needle, haystack)` avec `function_locate_has_mysql_compatible_argument_order = 1`). [#103102](https://github.com/ClickHouse/ClickHouse/pull/103102) ([Alex Kuleshov](https://github.com/0xAX)).
* Correction d'un blocage indéfini de waitForPause lorsque disableFailPoint est appelé alors qu'aucun thread n'est en pause sur le failpoint. [#103119](https://github.com/ClickHouse/ClickHouse/pull/103119) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Limitation à 64 KB des chaînes du paquet TCP Hello avant authentification, et ajout du server setting `handshake_timeout_milliseconds` pour limiter la durée totale du handshake, afin d'empêcher des clients non authentifiés de consommer excessivement de la mémoire ou de monopoliser des threads indéfiniment. [#103284](https://github.com/ClickHouse/ClickHouse/pull/103284) ([Sema Checherinda](https://github.com/CheSema)).
* Correction de Parquet ColumnIndex lorsque les stats indiquent min\_value > max\_value pour des colonnes String. [#103334](https://github.com/ClickHouse/ClickHouse/pull/103334) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
* Vérification de la présence de données Dynamic aplaties mal formées au format Native. [#103392](https://github.com/ClickHouse/ClickHouse/pull/103392) ([Pavel Kruglov](https://github.com/Avogar)).
* Remplissage de la colonne `_time` à partir de la table function `url`. [#103437](https://github.com/ClickHouse/ClickHouse/pull/103437) ([Nikita Taranov](https://github.com/nickitat)).
* Correction de la détection SVE, qui utilisait des instructions SVE lorsqu'elles n'étaient pas disponibles. [#103568](https://github.com/ClickHouse/ClickHouse/pull/103568) ([Raúl Marín](https://github.com/Algunenano)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* La dépendance Libstemmer (Snowball) utilise désormais la version plus récente v3.0.1. [#99256](https://github.com/ClickHouse/ClickHouse/pull/99256) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Randomisation des paramètres dans clickhouse-test : `use_skip_indexes_for_top_k`, `use_top_k_dynamic_filtering`, `query_plan_max_limit_for_top_k_optimization`. [#91782](https://github.com/ClickHouse/ClickHouse/pull/91782) ([Nikita Fomichev](https://github.com/fm4v)).
* Implémentation d’un test de stress pour les fonctions, afin de vérifier la solidité de leurs différentes propriétés. [#93543](https://github.com/ClickHouse/ClickHouse/pull/93543) ([Michael Kolupaev](https://github.com/al13n321)).
* Fournit sa propre configuration CMake pour `llvm-project` au lieu d’importer celle d’upstream. [#97453](https://github.com/ClickHouse/ClickHouse/pull/97453) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Randomisation de davantage de paramètres `optimize_*` dans l’infrastructure de test afin d’améliorer la couverture des passes d’optimisation des requêtes. [#97547](https://github.com/ClickHouse/ClickHouse/pull/97547) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Utilise la toolchain Rust nightly-2026-03-22. [#98602](https://github.com/ClickHouse/ClickHouse/pull/98602) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `wasmtime` v42.0.1. [#98603](https://github.com/ClickHouse/ClickHouse/pull/98603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `llvm-project` 22.1.1. [#98882](https://github.com/ClickHouse/ClickHouse/pull/98882) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Remplace `SANITIZE_COVERAGE` (callbacks personnalisés du sanitizer, granularité au niveau des symboles) par la couverture source LLVM (`WITH_COVERAGE`, `-fprofile-instr-generate -fcoverage-mapping`) pour le pipeline nightly de couverture par test. Le serveur lit désormais ses propres informations de couverture dans les sections ELF au démarrage et collecte des tuples `(file, line_start, line_end)` par test via une nouvelle commande `SYSTEM SET COVERAGE TEST 'name'`. La sélection des tests dans les checks CI ciblés utilise des requêtes par plage de lignes sur une nouvelle table CIDB `checks_coverage_lines` et classe les tests candidats selon le nombre de lignes modifiées du diff qu’ils couvrent. [#99513](https://github.com/ClickHouse/ClickHouse/pull/99513) ([Nikita Fomichev](https://github.com/fm4v)).
* Corrige une erreur d’édition de liens de llvm-libc avec un build en -O0. [#100023](https://github.com/ClickHouse/ClickHouse/pull/100023) ([Zheguang Zhao](https://github.com/zheguang)).
* Corrige deux messages d’erreur au démarrage du conteneur lorsque la configuration ne contenait pas les paramètres `logger.log` et `logger.errorlog` (par ex. lorsque tous les messages de log doivent être envoyés vers STDOUT/STDERR). [#100239](https://github.com/ClickHouse/ClickHouse/pull/100239) ([Simon](https://github.com/simonhammes)).
* Préfère `ld64.lld` au `ld` d’Apple (cctools-port ld64) pour les builds macOS. Cela devrait réduire significativement les temps d’édition de liens sur Darwin, car le ld64 de cctools-port est très lent avec `-ffunction-sections` et `-dead_strip`. Revient à `ld` si `ld64.lld` n’est pas disponible. [#100275](https://github.com/ClickHouse/ClickHouse/pull/100275) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Tests pour s’assurer que les répertoires n’enregistrent aucun secret (REST + Glue). [#100307](https://github.com/ClickHouse/ClickHouse/pull/100307) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Répète les tests récemment modifiés avec différents paramètres randomisés. [#100385](https://github.com/ClickHouse/ClickHouse/pull/100385) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suivre les dépendances de fichiers `#embed` dans CMake et activer le mode de dépendance de ccache pour garantir des reconstructions correctes. [#100411](https://github.com/ClickHouse/ClickHouse/pull/100411) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajouter des tests de validité pour les requêtes TPC-H. [#100580](https://github.com/ClickHouse/ClickHouse/pull/100580) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Utiliser `aws-sdk-cpp` 1.11.771. [#100582](https://github.com/ClickHouse/ClickHouse/pull/100582) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Autoriser les fichiers XML de tests de performance à référencer des fichiers de requêtes SQL externes et des paramètres via l’attribut file. [#100747](https://github.com/ClickHouse/ClickHouse/pull/100747) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corriger la compilation avec `-march=x86-64-v4` en ajoutant l’inclusion manquante de `TargetSpecific.h` dans `LowerUpperImpl.h`. [#100932](https://github.com/ClickHouse/ClickHouse/pull/100932) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corriger la compilation sur gentoo en ajoutant `--no-default-config` à cxxflags. [#100973](https://github.com/ClickHouse/ClickHouse/pull/100973) ([Isak Ellmer](https://github.com/spinojara)).
* Ajout de `utils/auto-bisect/` — un framework de bissection basé sur shell qui télécharge des binaires CI précompilés et exécute un script de test fourni par l’utilisateur afin de trouver le premier commit ayant introduit une régression, sans nécessiter de compilation locale. [#100989](https://github.com/ClickHouse/ClickHouse/pull/100989) ([Nikita Fomichev](https://github.com/fm4v)).
* Désactiver ThinLTO par défaut dans CMake afin que les compilations locales des développeurs ne l’activent plus implicitement. Les builds de release de la CI ne sont pas affectés, puisqu’ils transmettent explicitement `-DENABLE_THINLTO=1`. [#101041](https://github.com/ClickHouse/ClickHouse/pull/101041) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajouter le benchmark TPC-DS SF1 aux tests de performance. [#101209](https://github.com/ClickHouse/ClickHouse/pull/101209) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajout de tests sans état pour les lightweight deletes de MergeTree, couvrant : le cycle de vie du flag `has_lightweight_delete`, l’exactitude de `COUNT(*)` avec `optimize_trivial_count_query`, l’intégrité des colonnes `MATERIALIZED`/`DEFAULT`, la récupération du flag `ReplicatedMergeTree`, `read_in_order` avec des lignes supprimées, plusieurs cycles de suppression/fusion, le masquage de la colonne `_row_exists`, la diversité des prédicats et l’application de RBAC pour `ALTER DELETE`. [#101792](https://github.com/ClickHouse/ClickHouse/pull/101792) ([Nikita Fomichev](https://github.com/fm4v)).
* Les images Docker distroless sont désormais publiées avec des variantes ubuntu et alpine pour les releases taguées. [#101941](https://github.com/ClickHouse/ClickHouse/pull/101941) ([Rahul Nair](https://github.com/motsc)).
* Les stack traces affichent désormais des chemins relatifs simples et propres (par ex. `src/Common/Exception.cpp`) au lieu de chemins pollués par le répertoire de build (par ex. `./ci/tmp/fast_build/./src/Common/Exception.cpp`). [#102000](https://github.com/ClickHouse/ClickHouse/pull/102000) ([Raúl Marín](https://github.com/Algunenano)).
* Ajouter un Style check CI qui rejette les fichiers de plus de 5 Mo commités dans le repository, avec une whitelist pour les données de test légitimes déjà présentes. Supprimer le fichier `zookeeper_log.parquet` inutilisé de 14 Mo. [#102080](https://github.com/ClickHouse/ClickHouse/pull/102080) ([Raúl Marín](https://github.com/Algunenano)).
* Supprimer environ 400 directives `#include` inutilisées des headers afin de réduire les temps de compilation. [#102585](https://github.com/ClickHouse/ClickHouse/pull/102585) ([Raúl Marín](https://github.com/Algunenano)).
* Utiliser `wasmtime` v43.0.1. [#102603](https://github.com/ClickHouse/ClickHouse/pull/102603) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilisation d’`openssl` 3.5.6. [#102606](https://github.com/ClickHouse/ClickHouse/pull/102606) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilisation d’`xz` 5.8.3. [#102607](https://github.com/ClickHouse/ClickHouse/pull/102607) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mise à niveau de l’image Docker distroless de base, de Debian 12 (glibc 2.36, OpenSSL 3.0) vers Debian 13 (glibc 2.41, OpenSSL 3.5), ce qui réduit la surface d’exposition aux CVE à zéro vulnérabilité exploitable. [#101678](https://github.com/ClickHouse/ClickHouse/pull/101678) ([Rahul Nair](https://github.com/motsc)).

<div id="263">
  ### Version de ClickHouse 26.3 LTS, 2026-03-26. [Présentation](https://presentations.clickhouse.com/), [Vidéo](https://www.youtube.com/watch?v=_bY0ucNB1lQ)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* Revenir à une version antérieure après une mise à niveau peut entraîner une perte de données. Propage les versions de sérialisation des types de données aux types de données imbriqués. Par exemple, la version de sérialisation de String `with_size_stream` ne s’appliquait auparavant qu’aux colonnes String de premier niveau et aux éléments de Tuple. Désormais, elle s’applique à tout type String à l’intérieur de n’importe quel type imbriqué, comme `Array`/`Map`/`Variant`/`JSON`/etc. Ce comportement est contrôlé par le paramètre MergeTree `propagate_types_serialization_versions_to_nested_types`, désormais activé par défaut. Après ce changement, les nouvelles data parts créées ne peuvent plus être lues par les versions antérieures, mais les anciennes parts peuvent être lues par la nouvelle version sans problème. **La mise à niveau est sûre, mais pas le retour à une version antérieure : si vous devez revenir en arrière après une mise à niveau vers 26.3, les données écrites par 26.3 dans des colonnes avec des types imbriqués seront illisibles !** Voir [#101429](https://github.com/ClickHouse/ClickHouse/issues/101429) pour plus de détails. [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* Supprime le type de skip index `hypothesis`. Il s’agissait d’une fonctionnalité expérimentale obscure, d’une utilité pratique limitée. La création de tables avec `INDEX ... TYPE hypothesis` produit désormais une erreur. [#96874](https://github.com/ClickHouse/ClickHouse/pull/96874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Supprime la fonction expérimentale `detectProgrammingLanguage`. [#99567](https://github.com/ClickHouse/ClickHouse/pull/99567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la priorité de l’opérateur `NOT` pour l’aligner sur le standard SQL : `NOT` a désormais une priorité plus faible que `IS NULL`, `BETWEEN`, `LIKE` et les opérateurs arithmétiques. Par exemple, `NOT (x) IS NULL` est maintenant analysé comme `NOT (x IS NULL)` au lieu de `(NOT x) IS NULL`. Cela peut modifier le résultat des requêtes qui s’appuyaient sur le comportement précédent (non standard). [#97680](https://github.com/ClickHouse/ClickHouse/pull/97680) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les métadonnées des projections normales afin que les projections avec des clés de tri sur plusieurs colonnes soient correctement reconnues. S’appuie sur [#90429](https://github.com/ClickHouse/ClickHouse/issues/90429). [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* Corrige le non-respect du paramètre replace\_long\_file\_name\_to\_hash par les fichiers de skip index, ce qui provoquait des erreurs "File name too long" et empêchait la lecture d’index aux noms longs. Les noms de fichiers des skip indexes sont désormais hachés lorsqu’ils dépassent max\_file\_name\_length, comme pour les fichiers de colonnes. Ce changement est rétrocompatible (les nouveaux serveurs lisent les anciennes parts), mais un retour à une version antérieure — ou des serveurs plus anciens lors d’une rolling upgrade — peut faire ignorer les index aux noms longs. [#97128](https://github.com/ClickHouse/ClickHouse/pull/97128) ([Raúl Marín](https://github.com/Algunenano)).
* Active async insert par défaut. ClickHouse regroupera désormais par défaut toutes les petites insertions en batch. Ce paramètre est défini dans compatibility. Si vous définissez `compatibility=<version less than 26.2>`, la valeur par défaut restera l’ancienne, `false`. Vous pouvez désactiver/activer async inserts à plusieurs niveaux : dans la config des profils utilisateurs, pour la session, pour la requête ou pour la table MergeTree. [#97590](https://github.com/ClickHouse/ClickHouse/pull/97590) ([Sema Checherinda](https://github.com/CheSema)).
* Modifie la valeur par défaut de `mysql_datatypes_support_level`, qui passe de vide à `decimal,datetime64,date2Date32`, ce qui active par défaut le mapping correct de MySQL `DATE` vers `Date32`, de `DECIMAL`/`NUMERIC` vers `Decimal`, et de `DATETIME`/`TIMESTAMP` avec précision vers `DateTime64`. Auparavant, les colonnes MySQL `DATE` étaient mappées vers `Date`, qui ne peut pas représenter les dates antérieures au 1970-01-01, ce qui entraînait une corruption des données. [#97716](https://github.com/ClickHouse/ClickHouse/pull/97716) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accepter une liste de noms de parts au lieu d'une expression régulière pour `mergeTreeAnalyzeIndexes{,UUID}`, car les expressions régulières sont lentes (*Fonctionnalité expérimentale*). [#98474](https://github.com/ClickHouse/ClickHouse/pull/98474) ([Azat Khuzhin](https://github.com/azat)).
* La valeur par défaut de `stderr_reaction` passe de `throw` à `log_last` pour les UDF exécutables. Les UDF qui écrivent des avertissements sur stderr n'échouent plus lorsque le code de sortie est 0. Les exceptions liées au code de sortie incluent désormais le contenu de stderr. [#99232](https://github.com/ClickHouse/ClickHouse/pull/99232) ([Xu Jia](https://github.com/XuJia0210)).

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

* Ajout de la sérialisation par buckets pour les colonnes Map dans MergeTree (`map_serialization_version = 'with_buckets'`). Les clés sont réparties dans des buckets basés sur le hachage afin que la lecture d’une seule clé (`m['key']`) ne lise qu’un seul bucket au lieu de toute la colonne, ce qui apporte une accélération de 2 à 49x pour les lookups sur une seule clé selon la taille de la map. Le nombre de buckets et la stratégie de répartition peuvent être contrôlés par de nouveaux MergeTree settings : `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient` et `map_buckets_min_avg_size`. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).
* Prise en charge des CTE matérialisées. Permet d’évaluer les CTE une seule fois pendant l’exécution de la requête et de stocker leurs résultats dans des tables temporaires. Résout [#53449](https://github.com/ClickHouse/ClickHouse/issues/53449). [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* Autorise certaines fonctions SQL standard sans parenthèses pour des raisons de compatibilité, comme `NOW`. Résout [#52102](https://github.com/ClickHouse/ClickHouse/issues/52102). [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* Vous pouvez désormais utiliser la fonction de tri naturel sous la forme `naturalSortKey(s)`. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Vous pouvez désormais utiliser une entrée JSON/Object native avec les fonctions JSONExtract. Résout [#88370](https://github.com/ClickHouse/ClickHouse/issues/88370). [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Si un query parameter est de type `Nullable` et n’est pas spécifié, nous supposerons que sa valeur est `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* Prise en charge d’un auxiliary ZooKeeper pour la database `Replicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Prise en charge de la fonction `has` pour le JSON type afin de vérifier l’existence d’un chemin, comme pour Map. [#96927](https://github.com/ClickHouse/ClickHouse/pull/96927) ([DQ](https://github.com/il9ue)).
* Ajout de la table function `mergeTreeTextIndex(database, table, index)`, qui permet de lire directement des données depuis un text index. Cette fonction peut être utilisée pour l’introspection ou pour effectuer des aggregations sur les données de l’index textuel. [#97003](https://github.com/ClickHouse/ClickHouse/pull/97003) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout du MergeTree setting `table_readonly` pour marquer les tables comme read-only, empêchant les inserts et les modifications. [#97652](https://github.com/ClickHouse/ClickHouse/pull/97652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du new setting `use_partition_pruning` et de l’alias `use_partition_key`. Définissez-le sur `false` pour désactiver le partition pruning basé sur la partition key. [#97888](https://github.com/ClickHouse/ClickHouse/pull/97888) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Implémente `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` pour les Iceberg tables. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)). [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130)
* Autorise chaque entrée `type=http` dans `<protocols>` à spécifier une clé `<handlers>` personnalisée pointant vers une section de config `<http_handlers_*>` distincte, ce qui permet d’appliquer des règles de routage HTTP différentes selon le port. [#98414](https://github.com/ClickHouse/ClickHouse/pull/98414) ([Amos Bird](https://github.com/amosbird)).
* Ajout de l’option `pretty=1` à `EXPLAIN` pour une sortie indentée en arborescence, et de `compact=1` pour regrouper les étapes `Expression`, ce qui rend les query plans plus lisibles. [#98500](https://github.com/ClickHouse/ClickHouse/pull/98500) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Ajout du paramètre serveur `restore_access_entities_with_current_grants`. Lorsqu’il est activé, les utilisateurs/rôles restaurés depuis des backups voient leurs grants limités à ce que l’utilisateur effectuant la restauration est autorisé à accorder (même sémantique que `GRANT CURRENT GRANTS`), au lieu d’échouer avec `ACCESS_DENIED`. [#98795](https://github.com/ClickHouse/ClickHouse/pull/98795) ([pufit](https://github.com/pufit)).
* Ajout des fonctions `caseFoldUTF8` et `removeDiacriticsUTF8` pour le repliement de casse Unicode et la suppression des signes diacritiques. [#98973](https://github.com/ClickHouse/ClickHouse/pull/98973) ([George Larionov](https://github.com/george-larionov)).
* Ajout de la fonction de chaîne `normalizeUTF8NFKCCasefold` pour la normalisation Unicode NFKC\_Casefold, qui combine la normalisation NFKC avec le repliement de casse. [#99276](https://github.com/ClickHouse/ClickHouse/pull/99276) ([George Larionov](https://github.com/george-larionov)).
* Ajout du tokenizer `unicode_word` pour les full-text indexes et de la fonction `tokens`. Il découpe le texte selon les règles Unicode de délimitation des mots : les mots ASCII sont formés avec des caractères connecteurs (tiret bas, deux-points, point, apostrophe), tandis que les caractères Unicode non ASCII deviennent des tokens d’un seul caractère. Remarque : la version 26.3 n’accepte ce tokenizer que sous le nom `unicode_word` ; il a été renommé `asciiCJK` dans la version 26.4. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* Ajout des settings `max_skip_unavailable_shards_num` et `max_skip_unavailable_shards_ratio` pour limiter le nombre de shards pouvant être ignorés silencieusement lorsque `skip_unavailable_shards` est activé. Si le nombre ou la proportion de shards indisponibles dépasse le threshold configuré, une exception est levée au lieu de renvoyer silencieusement des résultats incomplets. [#99369](https://github.com/ClickHouse/ClickHouse/pull/99369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les utilisateurs peuvent désormais utiliser le keyword `SOME` pour les expressions de subquery. Il se comporte exactement comme `ANY`. [#99842](https://github.com/ClickHouse/ClickHouse/pull/99842) ([Artem Kytkin](https://github.com/Vinceent)).
* Ajout du setting `output_format_trim_fixed_string` pour supprimer les null bytes de fin des values `FixedString` dans les output formats textuels. [#97558](https://github.com/ClickHouse/ClickHouse/pull/97558) ([NeedmeFordev](https://github.com/spider-yamet)).
* Prise en charge des expressions de table join entre parenthèses dans la clause FROM, par exemple `SELECT * FROM (t1 CROSS JOIN t2)`. [#97650](https://github.com/ClickHouse/ClickHouse/pull/97650) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Implémentation de la fonction `toDaysInMonth` : elle renvoie le nombre de jours du mois correspondant à la date spécifiée. [#99227](https://github.com/ClickHouse/ClickHouse/pull/99227) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* Ajout de la prise en charge expérimentale des fonctions définies par l’utilisateur (UDF) basées sur WebAssembly, ce qui permet d’implémenter une logique de fonction personnalisée en WebAssembly et de l’exécuter dans ClickHouse. Remerciements particuliers à [Alexey Smirnov](https://github.com/lioshik) pour sa contribution à la prise en charge du backend Wasmtime. [#88747](https://github.com/ClickHouse/ClickHouse/pull/88747) ([Vladimir Cherkasov](https://github.com/vdimir)). Améliorations incrémentales de la prise en charge des UDF WASM. [#99373](https://github.com/ClickHouse/ClickHouse/pull/99373) ([Vasily Chekalkin](https://github.com/bacek)).
* Ajout de la prise en charge des dialectes SQL externes à l’aide de la bibliothèque `polyglot`. [#99496](https://github.com/ClickHouse/ClickHouse/pull/99496) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du codec de compression `ALP` pour nombres à virgule flottante (sans fallback ALP\_rd pour les doubles non compressibles). [#91362](https://github.com/ClickHouse/ClickHouse/pull/91362) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Ajout de la prise en charge expérimentale des indications de type différées pour les colonnes `JSON`. Lorsqu’elle est activée via `allow_experimental_json_lazy_type_hints`, l’instruction `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)` qui se contente d’ajouter ou de modifier des indications de type s’exécute instantanément comme une opération limitée aux métadonnées, sans réécrire les données historiques. Les indications de type sont appliquées au moment de l’exécution des requêtes pour les anciennes parties, puis matérialisées lors des INSERTs et des fusions en arrière-plan. [#97412](https://github.com/ClickHouse/ClickHouse/pull/97412) ([tanner-bruce](https://github.com/tanner-bruce)).
* Activation des lectures parallèles avec le moteur de table YTsaurus. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* Améliore les performances des lacs de données. Dans les versions précédentes, la lecture depuis le stockage objet ne redimensionnait pas le pipeline en fonction du nombre de threads de traitement. Cela apporte des gains de plusieurs ordres de grandeur (\~40x) sur les machines multicœurs. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Désormais, la relation entre `enable_parallel_replicas` et `automatic_parallel_replicas_mode` est la suivante. Une requête ne peut utiliser des répliques parallèles que si `enable_parallel_replicas > 0`. De plus, si `automatic_parallel_replicas_mode=1`, la décision d’utiliser des répliques parallèles est prise lors de la planification, sur la base des statistiques collectées au préalable. Si `automatic_parallel_replicas_mode=0`, les répliques parallèles seront utilisées pour toutes les requêtes prises en charge, indépendamment des statistiques. Une exception notable concerne les insert-select distribués avec répliques parallèles : dans ce cas, les requêtes seront toujours exécutées comme si `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* Autorise l’élagage de partitions lorsque le prédicat contient n’importe quel opérateur de comparaison (`=`, `<`, `>`, `!=`) et que la clé de partition est encapsulée dans une chaîne de fonctions déterministes (par exemple, `PARTITION BY x` et des prédicats comme `cityHash64(x) % 5 > 2`, `toYYYYMM(x) < 2026`, `toYYYYMM(x) = 2026` ou `toYYYYMM(x) != 2026` utiliseront tous la clé de partition pour l’élagage). Résout [#28800](https://github.com/ClickHouse/ClickHouse/issues/28800). [#98432](https://github.com/ClickHouse/ClickHouse/pull/98432) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Autorise l’optimisation de lecture ordonnée et l’élagage par clé primaire lorsque le type cible de `CAST` est `Nullable` et que la conversion est monotone ; par exemple, avec `PRIMARY KEY x`, ClickHouse peut utiliser l’optimisation de lecture ordonnée pour `ORDER BY x::Nullable(UInt64)` et appliquer l’élagage par clé primaire à des prédicats tels que `WHERE x::Nullable(UInt64) > 500000`. [#98482](https://github.com/ClickHouse/ClickHouse/pull/98482) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Autorise l’élagage d’index et le pushdown des filtres lorsqu’une colonne entière est comparée à un littéral flottant ; par exemple, des prédicats comme `WHERE x < 10.5` peuvent désormais utiliser la clé primaire pour l’élagage, et des filtres tels que `prime < 1e9` ou `number < 1e5` sont maintenant poussés vers les fonctions de table `primes()` et `numbers()` au lieu de provoquer une exécution non bornée. Résout [#85167](https://github.com/ClickHouse/ClickHouse/issues/85167). [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout d’un nouveau cache SLRU pour les métadonnées Parquet afin d’améliorer les performances de lecture en supprimant la nécessité de retélécharger des fichiers uniquement pour lire leurs métadonnées. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Prend en charge l’inversion des côtés des jointures ANTI, SEMI et FULL en fonction des statistiques de l’optimiseur. [#97498](https://github.com/ClickHouse/ClickHouse/pull/97498) ([Hechem Selmi](https://github.com/m-selmi)).
* Optimise le skipping des granules pour `pointInPolygon` avec de grands polygones et corrige le fait que l’analyse d’index de `pointInPolygon` pouvait lever une exception lors de l’élagage par clé primaire. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Améliore les performances de la fonction `levenshteinDistance`. [#94543](https://github.com/ClickHouse/ClickHouse/pull/94543) ([Joanna Hulboj](https://github.com/jh0x)).
* Optimise les conversions par lot du type Decimal en évitant les appels de fonction pour chaque élément. [#95923](https://github.com/ClickHouse/ClickHouse/pull/95923) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Les tables Iceberg prennent désormais en charge le préchargement asynchrone des métadonnées via le paramètre de table `iceberg_metadata_async_prefetch_period_ms`, qui préalimente périodiquement le cache de métadonnées. De plus, le paramètre de requête `iceberg_metadata_staleness_ms` permet aux requêtes SELECT d'utiliser les métadonnées en cache si elles sont plus récentes que le seuil d'obsolescence spécifié, ce qui évite les appels au catalogue Iceberg pendant le traitement des requêtes. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* Le mode ordered de `S3Queue` utilise S3 ListObjectsV2 StartAfter pour éviter de relister l'historique complet du préfixe, réduisant ainsi les appels à ListObjects. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata  Vineel ](https://github.com/vyalamar)).
* Réduction de la consommation mémoire pour la déduplication des insertions. En général, le block d'origine est nécessaire à la déduplication, mais pour une insertion synchrone, il peut être omis, ce qui permet d'économiser durablement de la mémoire. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* Utilisation d'une valeur spécifique à l'architecture pour la taille des lignes de cache au lieu d'une valeur codée en dur de 64. [#97357](https://github.com/ClickHouse/ClickHouse/pull/97357) ([Nikita Taranov](https://github.com/nickitat)).
* Lecture dans le Dictionary de l'index de texte légèrement optimisée, avec une amélioration des performances globales de l'analyse de l'index de texte. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* Accélération de la décompression `LZ4` des blocks de 16 octets sur ARM. [#97774](https://github.com/ClickHouse/ClickHouse/pull/97774) ([Raúl Marín](https://github.com/Algunenano)).
* Refactorisation de la tokenization vers une nouvelle interface haute performance, remplaçant l'ancienne API de type itérateur afin de prendre en charge SIMD et les tokenizers Stateful. Fait partie de [#90268](https://github.com/ClickHouse/ClickHouse/issues/90268). [#97871](https://github.com/ClickHouse/ClickHouse/pull/97871) ([Amos Bird](https://github.com/amosbird)).
* Amélioration des performances de l'analyse de l'index de texte pour les requêtes avec des conditions combinées impliquant à la fois des colonnes indexées et non indexées. Auparavant, l'optimisation de sortie anticipée lors de l'analyse de l'index était désactivée à tort dans de tels cas. [#98096](https://github.com/ClickHouse/ClickHouse/pull/98096) ([Anton Popov](https://github.com/CurtizJ)).
* Amélioration des performances des requêtes avec des expressions constantes qui génèrent des Array ou des maps très longs. [#98287](https://github.com/ClickHouse/ClickHouse/pull/98287) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'analyse des conditions sur la clé pour les clés primaires `DateTime64` comparées à des constantes entières, ce qui empêchait auparavant tout Granule pruning. [#98410](https://github.com/ClickHouse/ClickHouse/pull/98410) ([Amos Bird](https://github.com/amosbird)).
* Le paramètre `optimize_syntax_fuse_functions` est activé par défaut. [#98424](https://github.com/ClickHouse/ClickHouse/pull/98424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Optimisation de la aggregate function `avgWeighted` grâce à l'utilisation d'accumulateurs locaux au lieu d'un store-forwarding par ligne via l'aggregate state, avec un gain de performances pouvant atteindre 27 % pour les entrées Nullable. [#98793](https://github.com/ClickHouse/ClickHouse/pull/98793) ([Antonio Andelic](https://github.com/antonio2368)).
* Améliore les performances et réduit la consommation mémoire des window functions parallèles dans certains scénarios, ainsi que pour les workloads `arrayFold` avec de grands Array. Cela peut également réduire la pression liée aux défauts de page et améliorer la stabilité sous des limites mémoire strictes pour les requêtes concernées. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).
* Amélioration des performances des merges triés. [#99013](https://github.com/ClickHouse/ClickHouse/pull/99013) ([Artem Zuikov](https://github.com/4ertus2)).
* Optimisation de `INTERSECT ALL` et `EXCEPT ALL`. [#99097](https://github.com/ClickHouse/ClickHouse/pull/99097) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Prise en charge de l’optimisation `read_in_order_use_virtual_row` pour les lectures en ordre inverse. [#99198](https://github.com/ClickHouse/ClickHouse/pull/99198) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Réduction de la contention du cache dans les JOIN `RIGHT` et `FULL` en vérifiant si JoinUsedFlags est défini avant l’écriture. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* Optimisation de `PrefetchingHelper::calcPrefetchLookAhead` en remplaçant les calculs en virgule flottante par une arithmétique entière, ce qui améliore l’organisation du cache d’instructions et réduit le surcoût en cycles dans les boucles d’agrégation. [#99327](https://github.com/ClickHouse/ClickHouse/pull/99327) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Réduction de la consommation mémoire de Keeper en remplaçant `absl::flat_hash_set` par `CompactChildrenSet` pour stocker les nœuds enfants. Le nouveau conteneur stocke 0 ou 1 enfant en ligne, sans allocation sur le tas, ce qui couvre la majorité des nœuds Keeper. Cela réduit la taille de `KeeperMemNode` de 144 à 128 octets. [#99860](https://github.com/ClickHouse/ClickHouse/pull/99860) ([Antonio Andelic](https://github.com/antonio2368)).
* Les projections agrégées sont désormais correctement prises en charge dans les vues. Corrige [#32753](https://github.com/ClickHouse/ClickHouse/issues/32753). [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* Prise en charge de l’optimisation de conversion de jointure OUTER en INNER avec `join_use_nulls`. Ferme [#90978](https://github.com/ClickHouse/ClickHouse/issues/90978). [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Amélioration de la lecture des sous-colonnes grâce à un calcul correct des tailles avant lecture. Cela réduit l’utilisation de la mémoire et accélère la lecture des sous-colonnes. [#96251](https://github.com/ClickHouse/ClickHouse/pull/96251) ([Pavel Kruglov](https://github.com/Avogar)).
* Les caches de marks, de données non compressées et de pages utilisent désormais des arènes jemalloc distinctes afin d’éviter la fragmentation mémoire lorsque des allocations de courte durée, par exemple pour les requêtes, sont mélangées à des allocations plus longues pour les caches. [#96812](https://github.com/ClickHouse/ClickHouse/pull/96812) ([Seva Potapov](https://github.com/seva-potapov)). [#98812](https://github.com/ClickHouse/ClickHouse/pull/98812). [#99021](https://github.com/ClickHouse/ClickHouse/pull/99021)
* Les tables avec des règles `DELETE TTL` peuvent désormais utiliser l’algorithme de fusion verticale. [#97332](https://github.com/ClickHouse/ClickHouse/pull/97332) ([murphy-4o](https://github.com/murphy-4o)).
* Application des index de saut de données pendant l’analyse distribuée des index. [#97767](https://github.com/ClickHouse/ClickHouse/pull/97767) ([Azat Khuzhin](https://github.com/azat)).
* Les marks des index secondaires sont désormais préchauffés lorsque le paramètre `prewarm_mark_cache` est activé (chargés dans le cache des index marks lors des fetches de data parts et au démarrage de la table). [#97772](https://github.com/ClickHouse/ClickHouse/pull/97772) ([Anton Popov](https://github.com/CurtizJ)).
* Réduction du verrouillage dans le contrôle d’accès. [#97894](https://github.com/ClickHouse/ClickHouse/pull/97894) ([Nikita Taranov](https://github.com/nickitat)).
* Lorsque apply\_row\_policy\_after\_final ou apply\_prewhere\_after\_final est activé, les conditions AND composées dans les row policies et PREWHERE sont désormais décomposées pour extraire les atomes de clé de tri en vue de l’analyse de l’index de clé primaire. Auparavant, si un filtre différé contenait à la fois des prédicats sur la clé de tri et hors clé de tri (par ex. x > 1 AND y != 'foo'), l’expression entière était exclue de l’analyse des index. Désormais, les atomes de clé de tri (comme x > 1) sont extraits et utilisés pour l’élagage des granules, même à partir d’expressions AND imbriquées. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Réduit la contention des verrous dans MergeTreeBackgroundExecutor en permettant de libérer les ressources des tâches sans acquérir le verrou. Ferme [#93620](https://github.com/ClickHouse/ClickHouse/issues/93620). [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* Corrige une consommation mémoire excessive (\~514 MiB) lors de l’auto-détection du format à la lecture de données non Arrow (par ex. du JSON depuis `url` ou `file` sans format explicite), due au fait que le lecteur ArrowStream interprétait à tort les premiers octets comme une longueur de métadonnées énorme. [#98893](https://github.com/ClickHouse/ClickHouse/pull/98893) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="267-improvement">
  #### Amélioration
</div>

* Permet d’analyser des fichiers GeoParquet contenant différents types Geo dans une même colonne. [#97851](https://github.com/ClickHouse/ClickHouse/pull/97851) ([Mark Needham](https://github.com/mneedham)).
* Introduction de la fonction SQL `tokensForLikePattern`, qui découpe en tokens les motifs LIKE tout en respectant la sémantique des caractères génériques : `%` et `_` sont traités comme des caractères génériques, les caractères génériques échappés (`\%`, `\_`) comme des littéraux, et les tokens adjacents à des caractères génériques non échappés sont ignorés. [#97872](https://github.com/ClickHouse/ClickHouse/pull/97872) ([Amos Bird](https://github.com/amosbird)).
* Ajout d’un placeholder `{_schema_hash}` pour le moteur de table S3, qui insère un hash des définitions de colonnes de la table dans le chemin S3. [#98265](https://github.com/ClickHouse/ClickHouse/pull/98265) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `SymbolIndex`, `addressToSymbol`, `system.symbols` et `buildId` fonctionnent désormais sur macOS grâce à l’analyse des tables de symboles Mach-O. [#99014](https://github.com/ClickHouse/ClickHouse/pull/99014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La table `system.stack_trace` fonctionne désormais sur macOS, ce qui permet l’introspection des stack traces de tous les threads du serveur. [#98982](https://github.com/ClickHouse/ClickHouse/pull/98982) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de l’option de config LDAP par serveur `<follow_referrals>` (valeur par défaut : `false`) pour contrôler si le client LDAP suit les referrals. Désactiver le suivi des referrals évite les timeouts et les blocages lors des recherches à partir d’un base DN à la racine d’un domaine Active Directory. Les log messages liés aux referrals passent de `warn` à `trace`. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).
* Nous suivons désormais tous les data skipping indices utilisés pendant l’exécution d’une query dans la table query\_log, dans une nouvelle colonne nommée `skip_indices`. Corrige [#78676](https://github.com/ClickHouse/ClickHouse/issues/78676). Auteur original : @pheepa. [#87862](https://github.com/ClickHouse/ClickHouse/pull/87862) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Les indications ACCESS\_DENIED ne révèlent plus les noms de colonnes, sauf si l’utilisateur est autorisé à afficher toutes les colonnes requises ; les noms de base de données et de table restent visibles dans l’indication. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* Ajout d’un thread de nettoyage dédié pour MergeTree afin d’éviter les retards de nettoyage en cas de forte charge de merge. Cela résout [#86181](https://github.com/ClickHouse/ClickHouse/issues/86181). [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* Recharge la config du cluster si les IP du hostname du serveur local ont changé, au lieu de celles de n’importe quel hôte. Corrige [#81215](https://github.com/ClickHouse/ClickHouse/issues/81215), [#70156](https://github.com/ClickHouse/ClickHouse/issues/70156) et [#65268](https://github.com/ClickHouse/ClickHouse/issues/65268). [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* Permet à optimize\_aggregators\_of\_group\_by\_keys d’optimiser correctement les aggregate functions dans les queries GROUPING SETS. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Keeper-bench : signale les errors dans les metrics et génère un fichier JSON de metrics pour le mode --input-request-log. [#95748](https://github.com/ClickHouse/ClickHouse/pull/95748) ([Mohammad Lareb Zafar](https://github.com/zlareb1)).
* Ajout de la clause ROLE à CREATE USER. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* Vous pouvez désormais définir les paramètres `internal&#95;replication` pour un cluster créé par la base de données Replicated. [#97228](https://github.com/ClickHouse/ClickHouse/pull/97228) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* Le nouveau paramètre `allow_nullable_tuple_in_extracted_subcolumns` contrôle si les sous-colonnes `Tuple(...)` extraites de `Tuple`, `Variant`, `Dynamic` et `JSON` sont renvoyées sous la forme `Nullable(Tuple(...))` (`NULL` pour les lignes avec valeur manquante) ou sous la forme `Tuple(...)` (valeurs de tuple par défaut pour les lignes avec valeur manquante). Désactivé par défaut, ce paramètre ne peut être modifié qu’en redémarrant le serveur. [#97299](https://github.com/ClickHouse/ClickHouse/pull/97299) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout d’informations sur les filtres différés en tant qu’élément distinct dans la sortie de la requête EXPLAIN (lors de l’utilisation de Row Policies/PREWHERE avec FINAL). En lien : [#91065](https://github.com/ClickHouse/ClickHouse/pull/91065). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Activation par défaut de `type_json_allow_duplicated_key_with_literal_and_nested_object`. Cela permet d’éviter les erreurs liées aux clés dupliquées lors de l’analyse de JSON tels que `{"a" : 42, "a" : {"b" : 42}}`, que ClickHouse peut formater à partir des données JSON d’origine `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* Amélioration de Keeper : `find_super_nodes` est une commande très utile pour le débogage d’une croissance inattendue du nombre de nœuds dans Keeper. Malheureusement, s’il existe plusieurs super-nœuds, il est presque impossible d’en trouver plus d’un, car la commande reste bloquée indéfiniment lors du parcours des nœuds enfants du premier super-nœud rencontré. Cette PR interdit de parcourir les nœuds enfants des super-nœuds. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* Prise en charge initiale de l’autocomplétion pour `clickhouse-keeper-client`. [#97828](https://github.com/ClickHouse/ClickHouse/pull/97828) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Vidage des tampons de logging asynchrone en cas de crash. [#97836](https://github.com/ClickHouse/ClickHouse/pull/97836) ([Azat Khuzhin](https://github.com/azat)).
* Activation par défaut de la fonctionnalité d’usurpation d’identité (voir [EXECUTE AS target\_user](https://clickhouse.com/docs/sql-reference/statements/execute_as)). [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* Amélioration de l’annulation des requêtes avec le table engine SQLite via KILL QUERY et l’annulation de requête (Ctrl+C) dans clickhouse-client. [#97944](https://github.com/ClickHouse/ClickHouse/pull/97944) ([Roman Vasin](https://github.com/rvasin)).
* Ajout du paramètre serveur `jemalloc_profiler_sampling_rate` pour contrôler `lg_prof_sample` de jemalloc et l’exposer comme métrique asynchrone `jemalloc.prof.lg_sample`. [#97945](https://github.com/ClickHouse/ClickHouse/pull/97945) ([Antonio Andelic](https://github.com/antonio2368)).
* Prise en charge des weights dans l’implémentation d’une file bornée concurrente. [#97962](https://github.com/ClickHouse/ClickHouse/pull/97962) ([Daniil Ivanik](https://github.com/divanik)).
* Ajout de sslmode aux keys autorisées pour les dictionary sources PostgreSQL. Auparavant, sslmode ne figurait pas dans la liste d’autorisation `dictionary&#95;allowed&#95;keys` de PostgreSQLDictionarySource.cpp, ce qui rendait impossible la configuration du mode SSL pour les connexions de dictionnaires PostgreSQL. Cela empêchait les dictionnaires de se connecter aux serveurs PostgreSQL qui exigent SSL (par exemple AWS RDS, qui l’impose par défaut), car la connexion échouait lors de la négociation TLS et le serveur rejetait le fallback non chiffré. [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* Affiche une erreur claire « no such file » lorsqu’un chemin de fichier inexistant est passé à `clickhouse` ou `clickhouse-local`, au lieu d’un message générique déroutant. [#98048](https://github.com/ClickHouse/ClickHouse/pull/98048) ([Raúl Marín](https://github.com/Algunenano)).
* Les index de texte peuvent désormais être créés sur des colonnes `Nullable([Fixed]String)` et `Array(Nullable([Fixed]String))`. [#98118](https://github.com/ClickHouse/ClickHouse/pull/98118) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Évite la suppression des collections nommées dont dépendent les sources de dictionnaire. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* Active l’algorithme de jointure `grace_hash` pour les requêtes avec totaux. [#98144](https://github.com/ClickHouse/ClickHouse/pull/98144) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Annule plus tôt les fusions en arrière-plan dans DROP DATABASE pour ordinary shared merge tree. [#98161](https://github.com/ClickHouse/ClickHouse/pull/98161) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Améliore l’annulation des requêtes avec MongoDB et MySQL via KILL QUERY et l’annulation de requête (Ctrl+C) dans clickhouse-client. [#98187](https://github.com/ClickHouse/ClickHouse/pull/98187) ([Roman Vasin](https://github.com/rvasin)).
* Supprime NetlinkMetricsProvider et utilise exclusivement procfs pour la collecte des métriques taskstats par thread. La collecte basée sur Netlink est problématique dans les environnements conteneurisés et présente une latence en queue plus élevée en cas de contention. [#98229](https://github.com/ClickHouse/ClickHouse/pull/98229) ([Amos Bird](https://github.com/amosbird)).
* Remanie la gestion des fichiers manifestes Iceberg pour corriger les problèmes de mise en cache de ces fichiers. [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* Désormais, les cas où la clé de tri de la table peut être une expression comme `toDate(time)` sont pris en compte, et il est possible de décider de ne pas différer ce type d’expression si elle fait partie des filtres. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajoute une nouvelle métrique `MaxAllocatedEphemeralLockSequentialNumber` pour le numéro séquentiel maximal alloué aux znodes de verrouillage éphémères dans ZooKeeper. [#98243](https://github.com/ClickHouse/ClickHouse/pull/98243) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Met à jour ClickStack vers la version 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* Ajout d’un nouvel événement de profil `KeeperRequestTotalWithSubrequests` qui compte individuellement chaque sous-requête au sein d’une requête multiple, offrant une meilleure visibilité sur la charge réelle de Keeper. L’événement existant `KeeperRequestTotal` continue de compter chaque requête multiple comme une seule requête. [#98348](https://github.com/ClickHouse/ClickHouse/pull/98348) ([Antonio Andelic](https://github.com/antonio2368)).
* `SYSTEM RELOAD DICTIONARIES` recharge désormais les dictionnaires dans l’ordre topologique afin que les dictionnaires s’alimentant à partir d’autres dictionnaires voient des données à jour après le rechargement. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Redémarre le cache de statistiques après modification du paramètre MergeTree. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* Seules les répliques « vivantes » (auxquelles on peut se connecter) participent à l’analyse distribuée des index. [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* Ajoute un paramètre `access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users` (désactivé/autorisé par défaut) qui interdit l’utilisation de profils de paramètres définis dans la configuration (à l’exception du profil `default`) pour les utilisateurs définis en SQL. [#98662](https://github.com/ClickHouse/ClickHouse/pull/98662) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Limite le nombre de nœuds utilisés par l’heuristique automatique des répliques parallèles au nombre réel de nœuds du cluster (au lieu du seul paramètre `max_parallel_replicas`). [#98668](https://github.com/ClickHouse/ClickHouse/pull/98668) ([Nikita Taranov](https://github.com/nickitat)).
* Implémente les requêtes spéculatives et la lecture asynchrone pour l’analyse distribuée des index. [#98724](https://github.com/ClickHouse/ClickHouse/pull/98724) ([Azat Khuzhin](https://github.com/azat)).
* La désérialisation des états binaires `AggregateFunction` exige désormais de consommer l’intégralité de l’entrée. Si des octets de fin superflus sont présents, ClickHouse lève une exception au lieu d’accepter des données d’état mal formées. [#98786](https://github.com/ClickHouse/ClickHouse/pull/98786) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Fait en sorte que TRUNCATE DATABASE réagisse à l’annulation d’une requête. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Améliore `keeper-bench` avec le pipelining des requêtes, une période de préchauffage, des statistiques par opération, des graines reproductibles et une meilleure gestion des erreurs. [#98906](https://github.com/ClickHouse/ClickHouse/pull/98906) ([Antonio Andelic](https://github.com/antonio2368)).
* Prend en charge la clause SAMPLE dans l’analyse distribuée des index. [#98931](https://github.com/ClickHouse/ClickHouse/pull/98931) ([Azat Khuzhin](https://github.com/azat)).
* Affiche le titre du graphique dans le tableau de bord même lorsque la requête renvoie un résultat vide ou rencontre une erreur. [#98975](https://github.com/ClickHouse/ClickHouse/pull/98975) ([Yash ](https://github.com/Onyx2406)).
* Les messages d’erreur de l’analyseur n’affichent plus toutes les colonnes d’une table (ce qui pouvait produire des exceptions de plus de 150 KB). Les listes de colonnes sont désormais limitées à 10 entrées. [#99002](https://github.com/ClickHouse/ClickHouse/pull/99002) ([Yash ](https://github.com/Onyx2406)).
* Renvoie correctement les statistiques de colonnes des sous-requêtes avec jointures afin que la requête parente puisse les utiliser pour réordonner les jointures. [#99096](https://github.com/ClickHouse/ClickHouse/pull/99096) ([Alexander Gololobov](https://github.com/davenger)).
* Marque immédiatement la session ZooKeeper comme expirée lorsque la finalisation commence, au lieu d’attendre que le thread d’envoi se termine. Cela permet aux autres threads d’établir une nouvelle session sans délai. [#99102](https://github.com/ClickHouse/ClickHouse/pull/99102) ([Raúl Marín](https://github.com/Algunenano)).
* Utilise davantage de fonctions mathématiques de LLVM-libc : `exp`, `exp2`, `expm1`, `fabs`, `fabsl`, `floor`, `fmodl`, `log`, `log2`, `logf`, `pow`, `scalbn`, `scalbnl`, `copysignl`, `nan`, `nanf`, `nanl`, ainsi que les constantes partagées `explogxf`. [#99118](https://github.com/ClickHouse/ClickHouse/pull/99118) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Réduit l’utilisation de la mémoire et corrige un risque de sortie dupliquée dans le format `collapsed` de `system.jemalloc_profile_text`. [#99121](https://github.com/ClickHouse/ClickHouse/pull/99121) ([Antonio Andelic](https://github.com/antonio2368)).
* Ajoute la colonne `is_subrequest` à `system.aggregated_zookeeper_log` pour séparer les requêtes autonomes des sous-requêtes à l’intérieur des requêtes Multi/MultiRead. Auparavant, les sous-requêtes étaient agrégées dans les mêmes groupes que les requêtes autonomes et, comme chaque sous-opération était journalisée avec la durée totale de la multi-requête, la latence moyenne devenait trompeuse. Les sous-requêtes ont désormais une latence nulle. [#99169](https://github.com/ClickHouse/ClickHouse/pull/99169) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Autoriser la commande `ALTER TABLE MODIFY COLUMN x TTL ...` sans spécifier le type de colonne. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* Ignorer les requêtes Keeper obsolètes pour les sessions déjà déconnectées, afin d’éviter des allers-retours Raft inutiles. Le nombre de sessions terminées conservées est plafonné par le paramètre de coordination `max_finished_sessions_cache_size`. [#99246](https://github.com/ClickHouse/ClickHouse/pull/99246) ([Antonio Andelic](https://github.com/antonio2368)).
* Prise en charge d’un text index construit sur `mapValues(map)` avec l’opérateur `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* Prise en charge de l’autocomplétion de type shell dans clickhouse keeper-client (prise en charge de la complétion d’arguments entre guillemets, p. ex. `'foo ba'`, des arguments échappés, p. ex. `foo\ ba`, et affichage par `ls` des nœuds entre guillemets lorsqu’ils contiennent des espaces). [#99312](https://github.com/ClickHouse/ClickHouse/pull/99312) ([Azat Khuzhin](https://github.com/azat)).
* Empêcher la commande Keeper `mntr` de se bloquer en raison d’une contention sur les verrous. [#99472](https://github.com/ClickHouse/ClickHouse/pull/99472) ([Antonio Andelic](https://github.com/antonio2368)).
* Réduire la contention sur les verrous dans le dispatcher de Keeper en invoquant les callbacks et en répartissant les requêtes de lecture hors de la portée du mutex, et ajouter des gardes de verrou profilés pour l’observabilité. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).
* Tolérer l’absence de padding à la fin du dernier bloc des fichiers Parquet. [#99857](https://github.com/ClickHouse/ClickHouse/pull/99857) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Corrige la manière dont la cible d'une table Alias est enregistrée en tant que dépendance DDL lorsqu'elle n'est pas entièrement qualifiée : elle est désormais enregistrée avec la base de données de la table Alias plutôt qu'avec la base de données de session. [#95175](https://github.com/ClickHouse/ClickHouse/pull/95175) ([Enric Calabuig](https://github.com/eclbg)).
* Corrige un résultat erroné ou une exception lors de la lecture des sous-colonnes de colonnes ALIAS. [#95408](https://github.com/ClickHouse/ClickHouse/pull/95408) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige une colonne manquante lorsqu'un alias d'identifiant non standard est utilisé dans un JOIN avec l'ancien analyseur. Corrige [#25594](https://github.com/ClickHouse/ClickHouse/issues/25594), [#47288](https://github.com/ClickHouse/ClickHouse/issues/47288) et [#53263](https://github.com/ClickHouse/ClickHouse/issues/53263). [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
* Corrige un plantage dans les fonctions du dialecte Kusto `bin()`, `bin_at()`, `extract()` et `indexof()` lorsque des arguments vides sont fournis. [#95736](https://github.com/ClickHouse/ClickHouse/pull/95736) ([NeedmeFordev](https://github.com/spider-yamet)).
* Interdit le montage de local\_object\_storage (utilisé par les datalakes au-dessus du système de fichiers local et éventuellement par LocalDisk) ailleurs que dans user\_files\_path dans clickhouse-client. [#96201](https://github.com/ClickHouse/ClickHouse/pull/96201) ([Daniil Ivanik](https://github.com/divanik)).
* Dans le moteur de table `DeltaLake`, corrige une condition de concurrence logique lors d'un changement de version du snapshot et supprime les rechargements de snapshot lourds et redondants. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige une erreur logique lors de l'attachement d'une part dans MergeTree s'il y a eu plusieurs renommages successifs entre le détachement et l'attachement. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un bug où des paramètres explicites envoyés avec `compatibility` dans la même requête pouvaient être ignorés silencieusement lorsque leur valeur correspondait à la valeur par défaut du serveur. [#97078](https://github.com/ClickHouse/ClickHouse/pull/97078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corrige le fait que le client signalait `NETWORK_ERROR` au lieu de la véritable erreur d'analyse (avec le bon numéro de ligne) lorsqu'un INSERT avec parsing parallèle rencontrait des données invalides. [#97339](https://github.com/ClickHouse/ClickHouse/pull/97339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le fait que la fonction d'agrégation `sumCount` ne pouvait pas lire les anciens états sérialisés après l'introduction de `Nullable(Tuple)`. Clôt [#97370](https://github.com/ClickHouse/ClickHouse/issues/97370). [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige une exception dans une comparaison de tuples impliquant des éléments de type `Nothing` (par ex. une comparaison avec des éléments de tuple `NULL`) lorsqu'elle est utilisée avec `GROUPING SETS` et `ORDER BY`. [#97509](https://github.com/ClickHouse/ClickHouse/pull/97509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le calcul non déterministe de `uncompressed_hash` pour les parts Compact de MergeTree lorsque plusieurs codecs de compression sont utilisés, ce qui pouvait entraîner un comportement incorrect de déduplication. [#97522](https://github.com/ClickHouse/ClickHouse/pull/97522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une erreur logique liée à un stream manquant lors d'un INSERT SELECT avec JSON et des buckets dans les données partagées. Clôt [#97331](https://github.com/ClickHouse/ClickHouse/issues/97331). [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction des exceptions `MEMORY_LIMIT_EXCEEDED` signalées à tort comme `CORRUPTED_DATA` lors des merges de SummingMergeTree et CoalescingMergeTree. [#97537](https://github.com/ClickHouse/ClickHouse/pull/97537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction de l’exception "Context has expired" pour les sous-requêtes corrélées contenant des fonctions de table comme `url()`. [#97544](https://github.com/ClickHouse/ClickHouse/pull/97544) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des exceptions et des comportements incorrects dans `optimize_syntax_fuse_functions` avec les projections d’agrégation, les types Date et la préservation des noms de colonnes. [#97545](https://github.com/ClickHouse/ClickHouse/pull/97545) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suppression d’une query rewrite incorrecte de `replaceRegexpOne` vers `extract`, qui produisait des résultats erronés lorsque l’expression régulière ne correspondait pas ; correction également d’une exception lorsque `replaceRegexpOne` est utilisé avec `GROUP BY ... WITH CUBE` et `group_by_use_nulls=1`. [#97546](https://github.com/ClickHouse/ClickHouse/pull/97546) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `DROP DATABASE` avec `database_atomic_wait_for_drop_and_detach_synchronously`, qui pouvait rester bloqué indéfiniment lorsque la requête était interrompue. [#97586](https://github.com/ClickHouse/ClickHouse/pull/97586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `KILL QUERY`, qui ne pouvait pas arrêter des requêtes bloquées lors de la génération `WITH FILL`, du chargement de dictionnaires via `dictGet` ou de `ALTER DELETE` avec `mutations_sync=1` sur `ReplicatedMergeTree`. [#97589](https://github.com/ClickHouse/ClickHouse/pull/97589) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La fonction de table `loop` appelait directement `inner_storage->read()`, en contournant la couche d’interpréteur où sont appliquées les row policies, les autorisations au niveau des colonnes et les autres contrôles de sécurité. Cela permettait à un utilisateur soumis à des row policies de lire toutes les lignes via `loop(table)`, même lorsqu’un SELECT direct renvoyait zéro ligne. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
* Correction d’un partition pruning incorrect lors de l’utilisation de valeurs DateTime64 antérieures à l’époque Unix avec la fonction `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Après ce correctif, `hasPartitionId` renverra false si une autre partition avec un ID de partition plus élevé existe dans l’ensemble des data parts. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Correction de crashs possibles lors de la lecture de granules vides dans les advanced shared data en JSON. Closes [#97563](https://github.com/ClickHouse/ClickHouse/issues/97563). [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `Cannot schedule a file` `LOGICAL_ERROR` sur un `INSERT` dans `Distributed`, en raison d’une concurrence entre `DROP` et `INSERT`. [#97822](https://github.com/ClickHouse/ClickHouse/pull/97822) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’un crash/assert du serveur ClickHouse lors d’un appel à `mapContainsKey/mapContainsKeyLike` avec l’index de saut `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Correction des exceptions LOGICAL\_ERROR causées par `LowCardinality` dans des types composés (`Variant`, `Dynamic`, `Tuple`) dans `concatWithSeparator`, `format`, les sous-requêtes `IN`, `GLOBAL IN` et les jointures avec runtime filters. [#97831](https://github.com/ClickHouse/ClickHouse/pull/97831) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de l’exception `LOGICAL_ERROR` `Chunk info was not set for chunk in MergingAggregatedTransform` lors de l’utilisation de `ARRAY JOIN` avec la table function `merge()` sur plusieurs tables Distributed combinées avec `GROUP BY`. [#97838](https://github.com/ClickHouse/ClickHouse/pull/97838) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un plantage du serveur (`std::terminate`) provoqué par une exception non interceptée dans le destructeur du pool de connexions HTTP lorsque la limite stricte du groupe de connexions est atteinte en cas de forte concurrence. L’exception `HTTP_CONNECTION_LIMIT_REACHED` pouvait s’échapper de `~PooledConnection` lors du retour d’une connexion dans le pool, entraînant un `SIGABRT`. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’un résultat incorrect lorsque l’algorithme `grace_hash` est utilisé avec des jointures non équi et que le bloc de gauche ne peut pas être traité entièrement en raison des contraintes de taille sur le résultat de la jointure. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction d’une dégradation des performances dans l’analyse des métadonnées DeltaLake introduite dans [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686). [#97880](https://github.com/ClickHouse/ClickHouse/pull/97880) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction d’une data race dans le client ZooKeeper entre sendThread et receiveThread. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction d’un bug qui empêchait l’utilisation d’une CTE avec des insertions distribuées via SELECT. Suite de [https://github.com/ClickHouse/ClickHouse/pull/87789](https://github.com/ClickHouse/ClickHouse/pull/87789). Clôt [#95837](https://github.com/ClickHouse/ClickHouse/issues/95837). [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d’une exception levée par `CachedOnDiskReadBufferFromFile::readBigAt`. Clôt [#97325](https://github.com/ClickHouse/ClickHouse/issues/97325). [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction de l’exception `LOGICAL_ERROR` dans le moteur `Alias` avec des colonnes matérialisées, due à une incompatibilité entre colonnes. Clôt [#97907](https://github.com/ClickHouse/ClickHouse/issues/97907). [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
* Correction d’une perte de données de Keeper après redémarrage lors de l’utilisation d’Azure Blob Storage avec les métadonnées `s3_plain` pour le stockage des logs. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’une mauvaise compilation JIT de la fonction `sign` pour les types entiers plus larges que `Int8` : les valeurs en dehors de l’intervalle -128..127 pouvaient produire un signe incorrect. [#98012](https://github.com/ClickHouse/ClickHouse/pull/98012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `DUPLICATE_COLUMN` et de NULL silencieux lors de la lecture de tables Delta Lake utilisant le mode de mappage de colonnes "name" avec des champs de struct dont les noms contiennent des points (par ex. ``STRUCT<`a.foo`: STRING, `b.foo`: STRING>``). [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
* Correction d’une mutation après une lightweight update et des index secondaires. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un résultat incorrect pour les requêtes FINAL lors du mélange de skip indexes sur clé primaire et hors clé primaire. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
* Application des vérifications `READ ON FILE` pour le scalaire file() et DESCRIBE TABLE file(). [#98115](https://github.com/ClickHouse/ClickHouse/pull/98115) ([Nikolay Degterinsky](https://github.com/evillique)).
* Corrige un crash où l'exécution d'une requête sur des fichiers avec un motif glob (par exemple, `file('dir/**', 'LineAsString')`) levait une exception du système de fichiers non gérée (`STD_EXCEPTION`) si le répertoire contenait un lien symbolique orphelin. Les liens symboliques orphelins sont désormais ignorés silencieusement, et la requête renvoie les résultats de tous les fichiers valides. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
* Corrige un segfault dans l'optimisation du plan de requête lors de la conversion d'une jointure externe en jointure interne avec `arrayJoin` dans une expression de filtre. [#98147](https://github.com/ClickHouse/ClickHouse/pull/98147) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le dysfonctionnement du format `ProtobufList` avec le moteur Kafka, dû au fait que l'état de lecture n'était pas réinitialisé entre les messages. [#98151](https://github.com/ClickHouse/ClickHouse/pull/98151) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une erreur logique avec analyzer\_compatibility\_join\_using\_top\_level\_identifier et ARRAY JOIN, clôt [#98164](https://github.com/ClickHouse/ClickHouse/issues/98164). [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Définit le composant `Watch` pour les réponses watch dans `aggregated_zookeeper_log` au lieu de le laisser vide. [#98202](https://github.com/ClickHouse/ClickHouse/pull/98202) ([Antonio Andelic](https://github.com/antonio2368)).
* Si les colonnes de la clé de partition ne sont pas incluses dans la clé de tri, l'élagage des partitions pouvait ignorer à tort des partitions contenant des lignes qui auraient dû être retenues lors de la déduplication FINAL. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige l'erreur logique "Bad cast from type DB::ColumnConst to DB::ColumnArray" dans `kql_array_sort_asc`/`kql_array_sort_desc` lorsqu'elles sont appelées avec des arguments de tableau constants. [#98251](https://github.com/ClickHouse/ClickHouse/pull/98251) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un accès hors limites dans `ColumnConst::getExtremes` qui pouvait provoquer un crash lorsque `extremes = 1` est activé. [#98263](https://github.com/ClickHouse/ClickHouse/pull/98263) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un interblocage potentiel lorsque deux opérations concurrentes `MOVE PARTITION` travaillent sur la même paire de tables dans des directions opposées. [#98264](https://github.com/ClickHouse/ClickHouse/pull/98264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le serveur HTTP renvoie désormais un message d'erreur dans le corps de la réponse pour les réponses 400 Bad Request causées par des en-têtes mal formés, au lieu d'un corps vide. [#98268](https://github.com/ClickHouse/ClickHouse/pull/98268) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige des résultats erronés avec l'analyse d'index distribuée (fonctionnalité expérimentale) et le cache des conditions de requête. [#98269](https://github.com/ClickHouse/ClickHouse/pull/98269) ([Azat Khuzhin](https://github.com/azat)).
* Corrige l'exception LOGICAL\_ERROR "Invalid binary search result in `MergeTreeSetIndex`" déclenchée par la conversion `toDate` sur des colonnes de clé contenant des données franchissant le seuil de 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'exception `LOGICAL_ERROR` lorsqu'une RIGHT JOIN encapsulée dans une CROSS JOIN est permutée par l'optimisation `query_plan_join_swap_table` dans le chemin de code hérité de l'étape de jointure. [#98279](https://github.com/ClickHouse/ClickHouse/pull/98279) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Vérifie les données corrompues lors de la désérialisation de `DDSketch` afin d'éviter les segfaults, les exceptions, les boucles infinies et les OOM lors de la lecture d'états de fonctions d'agrégation `quantilesDD` corrompus. [#98284](https://github.com/ClickHouse/ClickHouse/pull/98284) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige LOGICAL\_ERROR "Trying to execute PLACEHOLDER action" lorsque des colonnes corrélées issues de requêtes englobantes sont référencées à l'intérieur de fonctions lambda telles que `arrayMap`. [#98285](https://github.com/ClickHouse/ClickHouse/pull/98285) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception d'erreur logique dans `caseWithExpression` lorsque l'expression `CASE` implique `materialize(NULL)` ou d'autres arguments `Nullable(Nothing)`. [#98290](https://github.com/ClickHouse/ClickHouse/pull/98290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception de conversion de type incorrecte lors du filtrage de la colonne virtuelle `_table` dans la fonction de table `merge`. [#98291](https://github.com/ClickHouse/ClickHouse/pull/98291) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un échec sporadique de déduplication où des réinsertions étaient dédupliquées à tort en raison d'un ordre de nettoyage incohérent entre les répertoires ZooKeeper `blocks/` et `deduplication_hashes/`. [#98293](https://github.com/ClickHouse/ClickHouse/pull/98293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception lorsque `ORDER BY ... WITH FILL` est utilisé avec `LIMIT BY`. [#98361](https://github.com/ClickHouse/ClickHouse/pull/98361) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une corruption silencieuse des données lors de l'insertion d'une colonne Parquet/Arrow `Date` dans une colonne `Enum` — la conversion de type incompatible est désormais correctement rejetée au lieu de stocker des valeurs d'énumération invalides. [#98364](https://github.com/ClickHouse/ClickHouse/pull/98364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception lors de la lecture d'un fichier Arrow avec une colonne `Array` dans une table comportant une colonne `Nested`. [#98365](https://github.com/ClickHouse/ClickHouse/pull/98365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les mutations `MATERIALIZE INDEX` et `MATERIALIZE PROJECTION` qui restaient bloquées lorsque l'index ou la projection était supprimé avant la fin de la mutation. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception lors de la lecture depuis `Nullable(Tuple(...))` lorsqu'un nom d'élément de Tuple entre en conflit avec la sous-colonne Nullable `null`. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'exception "Column ... query tree node does not have valid source node" lors d'une jointure entre une table `Merge` (encapsulant une table `Distributed`) et une autre table. [#98376](https://github.com/ClickHouse/ClickHouse/pull/98376) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la conversion incorrecte de Parquet `Bool` vers `FixedString` dans le lecteur natif V3, qui produisait des octets bruts au lieu d'une représentation textuelle. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `tryGetColumnDescription` pour filtrer les sous-colonnes selon la nature de la colonne parente, de manière cohérente avec les autres méthodes de recherche de colonnes. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Accepte les informations d'identification base64 sans padding dans l'authentification HTTP Basic. Certains clients HTTP omettent le caractère de padding final `=` dans l'en-tête `Authorization: Basic`, ce qui provoquait auparavant des échecs d'authentification. [#98392](https://github.com/ClickHouse/ClickHouse/pull/98392) ([Amos Bird](https://github.com/amosbird)).
* Correction de résultats incorrects de partition pruning après la fusion de parts avec des colonnes de clé de partition `Nullable`, en raison de bornes erronées dans l’index min-max. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
* Correction d’une exception rare dans l’exécuteur du pipeline, pouvant se manifester par `Received signal 6` (uniquement dans les versions de débogage), lorsque l’expansion du pipeline entrait en concurrence avec l’annulation de la requête. [#98428](https://github.com/ClickHouse/ClickHouse/pull/98428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception "Column identifier is already registered" lorsque `count_distinct_optimization` est utilisé avec une clause `QUALIFY`. [#98433](https://github.com/ClickHouse/ClickHouse/pull/98433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception "cannot be inside Nullable type" lors de l’utilisation de `IN`/`NOT IN` avec des arguments de colonne `LowCardinality` (par ex. `a NOT IN (b)` où `a` est `LowCardinality(String)`). [#98443](https://github.com/ClickHouse/ClickHouse/pull/98443) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception "Pipeline stuck" dans les jointures `full_sorting_merge`, causée par un interblocage dans `PingPongProcessor` lorsque l’optimisation `FilterBySetOnTheFly` créait une dépendance circulaire avec `MergeJoinTransform`. [#98454](https://github.com/ClickHouse/ClickHouse/pull/98454) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `LOGICAL_ERROR` "Projection cannot increase the number of rows in a block" lors de la fusion de parts avec un TTL qui supprime toutes les lignes et une projection d’agrégation avec une clé `GROUP BY` constante. [#98458](https://github.com/ClickHouse/ClickHouse/pull/98458) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception d’erreur logique lorsque `CROSS JOIN` est utilisé avec `INNER JOIN USING`. [#98459](https://github.com/ClickHouse/ClickHouse/pull/98459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un déréférencement de pointeur nul dans `dictGetOrDefault` lorsque l’argument de clé est `Nullable`. [#98460](https://github.com/ClickHouse/ClickHouse/pull/98460) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception dans les requêtes `DISTINCT` lors de l’utilisation de projections d’agrégation, lorsque `materialize` provoque des différences de type `LowCardinality` entre la requête et la projection. [#98462](https://github.com/ClickHouse/ClickHouse/pull/98462) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception LOGICAL\_ERROR lorsque `arrayJoin` est utilisé dans une expression de filtre avec OUTER JOIN et `join_use_nulls` activé. [#98464](https://github.com/ClickHouse/ClickHouse/pull/98464) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception d’erreur logique "Replica decided to read in WithOrder mode, not in ReverseOrder" lors de l’utilisation de répliques parallèles avec `optimize_aggregation_in_order`. [#98467](https://github.com/ClickHouse/ClickHouse/pull/98467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un problème où ClickHouse Keeper déconnectait les clients Java ZooKeeper après une requête `addWatch`. Le client Java attend un corps `ErrorResponse` de 4 octets dans la réponse à `addWatch`, mais Keeper envoyait un corps vide, provoquant une `EOFException` et la déconnexion de la session. Cela cassait `CuratorCache` d’Apache Curator ainsi que toute application Java utilisant des watches persistants. Corrige [#98079](https://github.com/ClickHouse/ClickHouse/issues/98079). [#98499](https://github.com/ClickHouse/ClickHouse/pull/98499) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction des métriques Keeper `zk_followers` et `zk_synced_followers`, qui ne diminuaient pas lorsqu’un follower tombait en panne. Ajout des nouvelles métriques `zk_learners` et `zk_synced_non_voting_followers` à la commande à quatre lettres `mntr`. Corrige [#54173](https://github.com/ClickHouse/ClickHouse/issues/54173). [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’une exception LOGICAL\_ERROR dans `renameAndCommitEmptyParts` qui pouvait survenir lorsque `TRUNCATE TABLE` s’exécute en concurrence avec `OPTIMIZE TABLE` lors de l’utilisation de transactions MergeTree. [#98508](https://github.com/ClickHouse/ClickHouse/pull/98508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du port Raft sécurisé de Keeper, qui ignorait `cipherList` et `dhParamsFile` de la configuration `openSSL` et utilisait toujours les valeurs par défaut au lieu de celles spécifiées par l’utilisateur. Ferme [#51188](https://github.com/ClickHouse/ClickHouse/issues/51188). [#98509](https://github.com/ClickHouse/ClickHouse/pull/98509) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction de messages de log Keeper trompeurs tels que "Receiving request for session X took 9963 ms", où le temps indiqué correspondait en réalité à une attente inactive dans `poll()` entre les heartbeats, et non à l’exécution de l’opération elle-même. Corrige [#79026](https://github.com/ClickHouse/ClickHouse/issues/79026). [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’un résultat inattendu avec read\_in\_order\_use\_virtual\_row et les fonctions monotones, ferme [#97837](https://github.com/ClickHouse/ClickHouse/issues/97837). [#98514](https://github.com/ClickHouse/ClickHouse/pull/98514) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction de `LOGICAL_ERROR: Not-ready Set is passed as the second argument for function 'in'` lors de l’utilisation de `PREWHERE` avec une sous-requête `IN` sur des tables MergeTree. [#98522](https://github.com/ClickHouse/ClickHouse/pull/98522) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des connexions TCP de Keeper qui empêchaient l’arrêt gracieux du serveur en ne répondant pas au signal d’arrêt. [#98525](https://github.com/ClickHouse/ClickHouse/pull/98525) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception "Sorting column wasn't found in the ActionsDAG's outputs" lorsque `query_plan_convert_join_to_in` est activé avec `query_plan_merge_expressions = 0`. [#98526](https://github.com/ClickHouse/ClickHouse/pull/98526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’échec de la source de dictionnaire MongoDB avec les named collections. Ferme [#97840](https://github.com/ClickHouse/ClickHouse/issues/97840). [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction de LOGICAL\_ERROR lorsque Identifier est vide après substitution des paramètres. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* Correction d’un interblocage du pipeline lors de l’utilisation de `sort_overflow_mode = 'break'` avec des fonctions de fenêtre. [#98543](https://github.com/ClickHouse/ClickHouse/pull/98543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du rollback de colonne dans le moteur Buffer lors du traitement d’une exception pendant l’ajout d’un nouveau block. L’ancienne logique pouvait entraîner un état en mémoire corrompu des colonnes. [#98551](https://github.com/ClickHouse/ClickHouse/pull/98551) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l'exception `Bad cast from type ColumnConst to ColumnDynamic` dans la comparaison null-safe (`<=>` / `IS NOT DISTINCT FROM`) avec des colonnes `Dynamic` ou `Variant` constantes et `NULL`. Correction également de `IS DISTINCT FROM` avec `Dynamic`/`Variant` vs `NULL`, qui renvoyait auparavant toujours 0 à tort. [#98553](https://github.com/ClickHouse/ClickHouse/pull/98553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'utilisation de l'index de texte avec d'autres skip indexes. Auparavant, des logical errors telles que "Trying to get non-existing mark" pouvaient être levées lorsqu'un filtre de requête utilisait simultanément un index de texte et d'autres skip indexes classiques. [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de la logical error "TABLE\_FUNCTION is not allowed in expression context" lorsqu'une table function avec un alias apparaît plusieurs fois dans le même scope de requête (par exemple dans les clauses `PREWHERE` et `QUALIFY`). [#98557](https://github.com/ClickHouse/ClickHouse/pull/98557) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la distributed index analysis avec des expressions (et pas seulement des colonnes) dans la PK (ce qui entraînait l'absence de filtrage des granules redondants sur les répliques distantes). [#98561](https://github.com/ClickHouse/ClickHouse/pull/98561) ([Azat Khuzhin](https://github.com/azat)).
* Interdiction de supprimer une colonne lorsque ses subcolumns sont utilisées dans les expressions default/alias d'autres colonnes, et utilisation de l'analyzer pour les expressions par défaut lors d'un alter drop column. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Correction des requêtes S3 réessayées à tort sur des erreurs non réessayables (y compris `HTTP_CONNECTION_LIMIT_REACHED`) dans le client HTTP. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
* Correction d'un overflow decimal lors du partition pruning avec DateTime64. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de deux bugs dans la compilation JIT d'expression : une erreur de copier-coller dans le type checking de `nativeCast` qui rendait inaccessibles les branches de cast entier-vers-entier et float-vers-float, ainsi qu'un `nullptr` TargetMachine incorrect transmis à LLVM `PassBuilder`, empêchant l'enregistrement des passes d'optimisation spécifiques à la cible. [#98660](https://github.com/ClickHouse/ClickHouse/pull/98660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'un contournement RBAC qui permettait aux utilisateurs de DESCRIBE n'importe quelle table via `remote()`, `remoteSecure()`, `cluster()` ou `clusterAllReplicas()` pointant vers localhost, sans nécessiter le privilege `SHOW_COLUMNS`. [#98669](https://github.com/ClickHouse/ClickHouse/pull/98669) ([pufit](https://github.com/pufit)).
* Correction de l'exception `BAD_GET` et de résultats de requête incorrects lorsqu'une expression non booléenne (par ex. `sin(col)`) est utilisée à la fois dans WHERE et SELECT avec un JOIN, en raison d'une optimisation de filter push-down corrompant des nœuds DAG partagés. [#98681](https://github.com/ClickHouse/ClickHouse/pull/98681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de LOGICAL\_ERROR "Replica decided to read in Default mode, not in WithOrder" lors de l'utilisation de `read_in_order_through_join` avec des parallel replicas. [#98685](https://github.com/ClickHouse/ClickHouse/pull/98685) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'exception "Bad cast from type `DB::TableFunctionNode` to `DB::QueryNode`" lors de l'utilisation de la table function `input` comme argument de `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la résurrection d'outdated data parts causée par un nettoyage incorrect de covering parts vides. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d’une exception dans `LogicalExpressionOptimizerPass` lorsqu’une fonction booléenne dans une comparaison `equals` renvoie un type `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `parseDateTimeBestEffort`, qui analysait incorrectement les mots commençant par des préfixes de mois ou de jours de la semaine. Résout [#97965](https://github.com/ClickHouse/ClickHouse/issues/97965). [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l’exception `UNKNOWN_IDENTIFIER` lors des requêtes sur la fonction de table `merge()` ou le moteur `Merge` appliqués à des tables avec des colonnes JSON ayant des paramètres différents (par ex. des champs `SKIP` différents) et des colonnes ALIAS référençant des sous-chemins JSON, avec le nouvel analyseur activé. Résout [#97812](https://github.com/ClickHouse/ClickHouse/issues/97812). [#98753](https://github.com/ClickHouse/ClickHouse/pull/98753) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l’optimisation `optimize_skip_unused_shards` avec l’analyseur lorsque le stockage `Distributed` est utilisé dans une `View`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction de l’accès aux sous-colonnes d’un tuple par leur nom (par ex. `SELECT x.a` pour `Tuple(a UUID, b Int32)`) pour les tables externes transmises via `--external` dans `clickhouse-client`. Résout [#96925](https://github.com/ClickHouse/ClickHouse/issues/96925). [#98755](https://github.com/ClickHouse/ClickHouse/pull/98755) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l’exception `reverseUTF8` sur une entrée UTF-8 invalide (tronquée). [#98770](https://github.com/ClickHouse/ClickHouse/pull/98770) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la détection de l’utilité d’un skip index de type Set avec un prédicat OR avec false (c.-à-d. or(x, 0)). [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’une exception `LOGICAL_ERROR` (incompatibilité de structure de block dans `removeUnusedColumns`) pouvant se produire avec `FINAL` + `PREWHERE` + une expression `WHERE` constante + des agrégats indépendants des colonnes comme `count()`. [#98778](https://github.com/ClickHouse/ClickHouse/pull/98778) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les entrées de `system.trace_log` pour les rechargements automatiques des Dictionaries ClickHouse ont désormais des Query id non vides. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction d’un crash pouvant entraîner le déréférencement d’un pointeur nul dans des tables système créées entre le moment où un instantané des tables est pris dans l’appel `IDatabaseTablesIterator::table()` et celui où les tables sont modifiées par un autre thread lors d’une itération ultérieure. [#98792](https://github.com/ClickHouse/ClickHouse/pull/98792) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Correction de `SYSTEM START REPLICATED VIEW`, qui ne réveillait pas la tâche de refresh. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction de l’exception "Inconsistent table names" lors de l’utilisation de la fonction de table `view()` contenant des JOIN imbriqués dans un autre JOIN (uniquement avec l’ancien analyseur). [#98809](https://github.com/ClickHouse/ClickHouse/pull/98809) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’ajustement de RLIMIT\_SIGPENDING (via pending\_signals). [#98829](https://github.com/ClickHouse/ClickHouse/pull/98829) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’une exception lors de la composition de `loop` avec des cluster table functions. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* LEFT ANTI JOIN avec plusieurs colonnes de clé de jointure renvoyait des résultats incorrects lorsque `enable_join_runtime_filters=1` (valeur par défaut). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
* Correction de `WITH FILL STALENESS`, qui produisait des lignes remplies en trop lorsque les données étaient lues en plusieurs chunks (par ex. avec un `index_granularity` faible). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'erreur LOGICAL\_ERROR « RPNBuilderFunctionTreeNode has A arguments, attempted to get argument at index B ». [#98900](https://github.com/ClickHouse/ClickHouse/pull/98900) ([Azat Khuzhin](https://github.com/azat)).
* Correction d'une dérive du suivi mémoire causée par l'absence de rollback après des allocations échouées, par le comportement indéfini de `nallocx(0)` et par une erreur de décalage d'une unité dans le suivi du pic global. Extension du suivi pour couvrir les buffers circulaires `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
* Interdiction d'attacher des tables locales de data lake en dehors des chemins utilisateur, et pas seulement d'en créer. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
* Correction d'une race condition pouvant provoquer une exception « ReadBuffer is canceled » dans les requêtes utilisant `urlCluster` ou des cluster table functions similaires. [#98955](https://github.com/ClickHouse/ClickHouse/pull/98955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l'exception `LOGICAL_ERROR` dans les fonctions financières (`financialNetPresentValue`, `financialInternalRateOfReturn`, etc.) lorsque des arguments de type `BFloat16` sont passés. [#98958](https://github.com/ClickHouse/ClickHouse/pull/98958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du fait que les skip indexes (et les conditions de clé primaire) n'étaient pas appliqués aux colonnes ALIAS lorsque la fusion des expressions du query plan est désactivée (`query_plan_merge_expressions = 0` ou `query_plan_enable_optimizations = 0`). [#98960](https://github.com/ClickHouse/ClickHouse/pull/98960) ([Peng](https://github.com/fastio)).
* Incrémente `InsertQuery` ProfileEvent pour les async inserts. Clôt [#98626](https://github.com/ClickHouse/ClickHouse/issues/98626). [#98962](https://github.com/ClickHouse/ClickHouse/pull/98962) ([Narasimha Pakeer](https://github.com/npakeer)).
* Correction de l'exception « Inconsistent KeyCondition behavior » dans les builds de débogage lorsque la clé primaire contient des valeurs flottantes NaN, en faisant en sorte que `accurateLess` et `accurateEquals` traitent NaN de manière cohérente avec l'ordre de tri de ClickHouse. Clôt [#98075](https://github.com/ClickHouse/ClickHouse/issues/98075). [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* SummingMergeTree n'additionne plus les colonnes Bool (ni les autres colonnes de type domain). Les valeurs Bool sont conservées telles quelles au lieu d'être additionnées arithmétiquement. [#98976](https://github.com/ClickHouse/ClickHouse/pull/98976) ([Yash ](https://github.com/Onyx2406)).
* Correction de l'exception Scalar doesn't exist qui se produisait lors de l'interrogation d'un shard distant avec `optimize_const_name_size` activé et `enable_scalar_subquery_optimization` = 0. Les grandes constantes remplacées par des références `__getScalar` dans la requête distante n'étaient pas envoyées au shard, ce qui provoquait l'échec de la requête. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
* Corrige `NOT_FOUND_COLUMN_IN_BLOCK` pour certaines requêtes avec `GROUP BY` et des expressions incluant une recherche inverse dans un Dictionary, des comparaisons de conversion `Date/DateTime` et des comparaisons de tuples. Clôt [#98888](https://github.com/ClickHouse/ClickHouse/issues/98888). [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un comportement indéfini (déréférencement de pointeur nul) lors de la modification d’une colonne version/sign/is\_deleted en `EPHEMERAL` ou `ALIAS` dans les moteurs MergeTree. De telles modifications sont désormais correctement rejetées. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un problème où `system.grants` omettait les paramètres d’expression régulière pour les privilèges `URL` et `S3` dans la colonne `access_object`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
* Correction des lectures Iceberg BigLake : les identifiants ADC sont désormais transmis au client GCS S3 (ce qui corrige les erreurs 403), les identifiants OAuth2 sont encodés dans l’URL avant l’envoi (ce qui corrige les échecs d’authentification pour les jetons contenant des caractères spéciaux), et le parcours des espaces de noms ne s’interrompt plus sur les réponses HTTP 400 de BigLake. [#98998](https://github.com/ClickHouse/ClickHouse/pull/98998) ([Nikita Fomichev](https://github.com/fm4v)).
* Correction de `clickhouse-client` qui ne parvenait pas à changer de fuseau horaire lorsque la variable d’environnement `TZ` utilisait une syntaxe de chemin de fichier POSIX (par ex. `TZ=:/etc/localtime`). [#99000](https://github.com/ClickHouse/ClickHouse/pull/99000) ([Yash ](https://github.com/Onyx2406)).
* Corrige un pruning incorrect ou insuffisant lorsque `startsWith`, `LIKE` et `NOT LIKE` sont utilisés avec une colonne `FixedString`. De plus, la fonction de transtypage de `FixedString` vers `String` peut désormais effectuer le pruning des granules lorsqu’elle est appliquée à une colonne clé. Clôt [#98940](https://github.com/ClickHouse/ClickHouse/issues/98940). [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de `windowFunnel` avec `strict_deduplication`, qui renvoyait un niveau incorrect lorsqu’un événement dupliqué était rencontré. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash ](https://github.com/Onyx2406)).
* Corrige un bug où EXISTS ignorait les clauses LIMIT et OFFSET dans les sous-requêtes, provoquant des résultats incorrects lorsque la sous-requête ne renvoyait aucune ligne en raison d’un offset ou d’une limite à zéro. Clôt [#88722](https://github.com/ClickHouse/ClickHouse/issues/88722). [#99005](https://github.com/ClickHouse/ClickHouse/pull/99005) ([andriibeee](https://github.com/andriibeee)).
* Corrige l’exception "Block structure mismatch" lorsque l’optimisation de descente de filtre rencontre une expression AND qui se résout par court-circuit en une constante avec `GROUPING SETS`. [#99010](https://github.com/ClickHouse/ClickHouse/pull/99010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception lors de la lecture de patch parts (lightweight updates) sans colonne `_part_offset` dans le plan de requête. [#99023](https://github.com/ClickHouse/ClickHouse/pull/99023) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Une requête comme `SELECT * FROM table WHERE pk_id = ''`, où `pk_id` est la clé primaire et de type `String`, utilisera désormais correctement l’index de clé primaire pour filtrer les granules. [#99027](https://github.com/ClickHouse/ClickHouse/pull/99027) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Corrige l’exception `DEPENDENCIES_NOT_FOUND` dans le moteur Kafka lorsqu’une vue matérialisée est détachée pendant que le thread d’arrière-plan traite un flux de données. [#99028](https://github.com/ClickHouse/ClickHouse/pull/99028) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception lors de la création d’une table avec une colonne `EPHEMERAL` portant le même nom qu’une colonne virtuelle (par ex. `_part_offset`). [#99031](https://github.com/ClickHouse/ClickHouse/pull/99031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le message trompeur "inflate failed: buffer error" lors de la lecture de fichiers compressés inexistants via la fonction de table `url()` avec des motifs glob. Renvoie désormais un résultat vide, comme prévu, lorsque `http_skip_not_found_url_for_globs` est activé. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un plantage du serveur (std::terminate) lors de l’exécution de `ALTER TABLE ... DROP PART` sur une patch part après une modification du schéma (par ex. ADD COLUMN). Le plantage était dû à l’absence de colonnes système (`_part`) dans les métadonnées de la coverage part vide, ce qui entraînait une exception non interceptée à l’intérieur d’un NOEXCEPT\_SCOPE. [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
* Le processus du serveur ClickHouse pouvait planter si une exception de dépassement de memory limit était levée pendant une *lecture disque mise en cache*. Ce problème est désormais corrigé. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Corrige `LOGICAL_ERROR` lors de l’interrogation d’une table comportant à la fois une ROW POLICY et une colonne ALIAS avec `dictGet`. Le problème était dû à un accès prématuré à l’expression de table pendant la résolution de la colonne ALIAS dans le nouvel analyseur. [#99065](https://github.com/ClickHouse/ClickHouse/pull/99065) ([Peng](https://github.com/fastio)).
* Corrige une erreur de dépassement de limites lorsque l’utilisateur tente d’interroger uniquement des colonnes virtuelles d’une table Iceberg avec le format Avro pour les données. Il s’agit d’un scénario extrêmement rare, donc il n’est pas considéré comme critique. Corrige [#88238](https://github.com/ClickHouse/ClickHouse/issues/88238). [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
* Corrige un segfault dans un CTE récursif avec `remote()` + `view()`. [#99081](https://github.com/ClickHouse/ClickHouse/pull/99081) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Ignore l’analyse d’index supplémentaire inutile lorsque l’optimisation read-in-order est appliquée. [#99084](https://github.com/ClickHouse/ClickHouse/pull/99084) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige un plantage déclenché par une exception de memory limit levée pendant l’application d’une patch part. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige une assertion de débogage dans `DDLWorker`, causée par un `first_failed_task_name` obsolète après la suppression d’une entrée ZooKeeper pendant la récupération après réinitialisation. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige la reconstruction des index de texte lors des merges avec TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un plantage dans la query `ALTER TABLE ... REMOVE SETTINGS` pour le table engine Iceberg. Corrige [#86330](https://github.com/ClickHouse/ClickHouse/issues/86330). [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
* Corrige un bug dans l’optimisation `query_plan_convert_any_join_to_semi_or_anti_join`, qui renvoyait un résultat incorrect pour les lignes sans correspondance. Lié à : [https://github.com/ClickHouse/ClickHouse/pull/95995](https://github.com/ClickHouse/ClickHouse/pull/95995). [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige l’exception LOGICAL\_ERROR dans `ASTColumnsExceptTransformer::transform`. [#99119](https://github.com/ClickHouse/ClickHouse/pull/99119) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un contournement du RBAC qui permettait aux utilisateurs d’obtenir la structure d’une table via `DESCRIBE TABLE` ou `CREATE TABLE AS` sur des fonctions de table (`mysql()`, `postgresql()`, `sqlite()`, `arrowFlight()`, `jdbc()`, `odbc()`, etc.) sans disposer des privilèges d’accès à la source requis. Pour les fonctions qui déduisent le schéma à partir de serveurs distants, cela permettait aussi de déclencher des connexions sortantes (SSRF) sans autorisation. [#99122](https://github.com/ClickHouse/ClickHouse/pull/99122) ([pufit](https://github.com/pufit)).
* Corrige un crash de Keeper (segfault dans NuRaft) lors d’une reconfiguration dynamique et d’un transfert de leadership. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
* Corrige un crash lors de l’utilisation d’une Buffer table avec SAMPLE lorsque la destination ne le prend pas en charge. [#99141](https://github.com/ClickHouse/ClickHouse/pull/99141) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige une LOGICAL\_ERROR due à un ordre de colonnes incohérent dans les patch parts. [#99164](https://github.com/ClickHouse/ClickHouse/pull/99164) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un crash très rare lorsqu’une Iceberg table contient des fichiers de formats mixtes (ORC et Parquet). Corrige [#88126](https://github.com/ClickHouse/ClickHouse/issues/88126). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
* Corrige le fait que max\_execution\_time ne s’appliquait pas aux opérations de backup/restore. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige le fait que `insert_deduplication_token` était ignoré silencieusement pour les requêtes `INSERT SELECT` sans `ORDER BY ALL`. Auparavant, la déduplication était entièrement désactivée pour les `INSERT SELECT` non triés, même lorsqu’un token utilisateur explicite était fourni. Désormais, fournir `insert_deduplication_token` suffit à activer la déduplication, indépendamment de `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
* Corrige des vérifications d’accès excessives lors de l’optimisation `InverseDictionaryLookupPass` en vérifiant l’autorisation `CREATE_TEMPORARY_TABLE` une seule fois avant le passage, au lieu de le faire pour chaque nœud visité. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Corrige `clickhouse format --obfuscate`, qui produisait du SQL invalide en obscurcissant les types de skip index, les noms de compression codec, les noms de database engine et les définitions de dictionary layout/source. [#99260](https://github.com/ClickHouse/ClickHouse/pull/99260) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige un bug où, dans certains cas, la comparaison entre les types Time\[64] et DateTime\[64] prêtait à confusion ; désormais, dans ce type de cas, les valeurs Time\[64] sont converties en DateTime\[64] en ajoutant `1970-01-01` comme partie date. [#99267](https://github.com/ClickHouse/ClickHouse/pull/99267) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Applique les contraintes de settings dans le worker DDL pour les distributed DDL queries. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige des problèmes mineurs liés à l’authentification TOTP : l’option CLI `--one-time-password` avec un mot de passe vide, ainsi que la validation des valeurs de configuration `<digits>` et `<period>`. [#99322](https://github.com/ClickHouse/ClickHouse/pull/99322) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige l’erreur logique `unordered_map::at: key not found` dans le format de sortie Avro lors de la sérialisation de colonnes `Enum8`/`Enum16` contenant des valeurs absentes de la définition de l’enum. [#99332](https://github.com/ClickHouse/ClickHouse/pull/99332) ([Desel72](https://github.com/Desel72)).
* Correction de `CHECK TABLE` avec une sérialisation sparse à l’intérieur de `Tuple` avec `Dynamic`. Closes [#96588](https://github.com/ClickHouse/ClickHouse/issues/96588). [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’une validation trop stricte du préprocesseur d’index de texte. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de la compatibilité lors de la mise à niveau de tables répliquées avec des index minmax implicites de la version 25.10 vers des versions plus récentes. [#99392](https://github.com/ClickHouse/ClickHouse/pull/99392) ([Raúl Marín](https://github.com/Algunenano)).
* Suppression de la prise en charge des fonctions négatives (`notEquals`, `notLike`, `notIn`) dans l’analyse des index de texte. Ces fonctions ne pouvaient jamais ignorer de granules ; analyser l’index pour elles ne faisait donc qu’ajouter un surcoût, sans aucun bénéfice. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de `optimize_skip_unused_shards` avec le nouvel analyseur lorsqu’une table `Distributed` était utilisée dans une sous-requête `IN`. [#99436](https://github.com/ClickHouse/ClickHouse/pull/99436) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction d’un heap-use-after-free dans `INTERSECT`/`EXCEPT` lorsque la requête produit des noms de colonnes en double. [#99471](https://github.com/ClickHouse/ClickHouse/pull/99471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur logique dans `ALTER TABLE ... DROP PART` lorsqu’un paramètre de requête typé est utilisé pour le nom de la part. [#99489](https://github.com/ClickHouse/ClickHouse/pull/99489) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `NOT_FOUND_COLUMN_IN_BLOCK` lorsqu’un prédicat d’index de texte (par exemple `hasAllTokens`) est référencé à la fois dans les clauses `SELECT` et `WHERE` via un alias. [#99504](https://github.com/ClickHouse/ClickHouse/pull/99504) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de résultats incorrects lors de l’utilisation de `hasAllTokens` avec `OR` sur des colonnes ayant des index de texte distincts. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
* Initialisation du page cache dans `clickhouse-local` afin que le paramètre `page_cache_max_size` prenne effet. [#99510](https://github.com/ClickHouse/ClickHouse/pull/99510) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un rare marquage incorrect d’une part de données comme corrompue, suivi de son détachement après une requête `DETACH/ATTACH TABLE`. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de l’exception `std::length_error` lors de l’interrogation de tables système vides au format Pretty via l’interface HTTP. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `LOGICAL_ERROR` lors de l’utilisation de `ALTER TABLE ADD COLUMN` pour créer une colonne `EPHEMERAL` portant le même nom qu’une colonne virtuelle (par exemple `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du fait que les entrées `VectorSimilarityIndexCache` n’étaient jamais évincées après la suppression d’une part en raison d’une discordance des clés de cache. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
* Interdiction de lire les credentials Google à partir d’un fichier local. Ce paramètre n’est pas sûr, car il permet de lire d’autres credentials si le chemin du fichier est connu. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction d’une dégradation des performances dans l’analyseur. Suppression des colonnes inutilisées dans ARRAY JOIN. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
* Correction de la lecture de l’index de texte dans une table avec des lightweight deletes existants et des politiques de lignes. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’un déréférencement de `nullptr` dans le lecteur Parquet lorsque le chemin de filtrage dans le décodeur rencontre des pages filtrées. Clôt [#99676](https://github.com/ClickHouse/ClickHouse/issues/99676). [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un déplacement incorrect dans AsynchronousReadBufferFromFileDescriptor avec O\_DIRECT. Clôt [#99358](https://github.com/ClickHouse/ClickHouse/issues/99358). [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un heap-buffer-overflow dans `CompressionCodecT64` et d’un arrêt du processus dans `CompressionCodecMultiple` lors de la décompression de données compressées mal formées. Ces deux problèmes ont été découverts par de nouvelles cibles libFuzzer. Les codecs lèvent désormais une exception au lieu de provoquer un plantage. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul](https://github.com/motsc)).
* Le traitement est désormais retardé jusqu’à ce que le serveur ait terminé le chargement de toutes les tables. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
* Correction du contournement de `RemoteHostFilter` par la source de dictionnaire MySQL pour les paramètres DDL inline. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Correction d’une erreur logique lors de l’itération sur les tables du lac de données dans `system.tables`. [#99739](https://github.com/ClickHouse/ClickHouse/pull/99739) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction de l’analyse des prédicats avec la fonction `IN` dans l’index de texte avec préprocesseur. Correction également d’une collision entre les tokens recherchés dans l’index de texte, qui pouvait entraîner des résultats incorrects. [#99755](https://github.com/ClickHouse/ClickHouse/pull/99755) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’une boucle infinie lors de la lecture de fichiers au format `Npy` avec des dimensions négatives dans la forme. [#99812](https://github.com/ClickHouse/ClickHouse/pull/99812) ([Desel72](https://github.com/Desel72)).
* Correction d’un global-buffer-overflow dans la fonction `CRC32` sur des arguments `FixedString` lorsqu’elle est évaluée avec zéro ligne pendant le calcul de l’en-tête du plan de requête. [#99835](https://github.com/ClickHouse/ClickHouse/pull/99835) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un plantage (déréférencement de pointeur nul) lors de l’exécution de `ALTER TABLE ... MODIFY COLUMN ... COMMENT` sur des tables Iceberg. [#99838](https://github.com/ClickHouse/ClickHouse/pull/99838) ([Desel72](https://github.com/Desel72)).
* Correction du paramètre `aggregate_functions_null_for_empty` pour qu’il fonctionne avec des fonctions d’agrégation renvoyant des types non `Nullable`, comme `Array` ou `Map` (par exemple `groupArray`, `sumMap`). [#99839](https://github.com/ClickHouse/ClickHouse/pull/99839) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception LOGICAL\_ERROR dans la fonction `midpoint` lorsqu’elle est appelée avec un mélange de types entiers signés et non signés. [#99867](https://github.com/ClickHouse/ClickHouse/pull/99867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception "Block structure mismatch" dans les requêtes avec clause HAVING, lorsque l’expression de filtre contient à la fois un agrégat encapsulé dans une fonction produisant NULL et `materialize(0)`. [#99915](https://github.com/ClickHouse/ClickHouse/pull/99915) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'échec d'assertion dans `sipHash128Keyed` (et dans des fonctions de hachage avec clé similaires) lorsque l'argument de données est un Map dont les clés sont des tableaux ou d'autres types de tableaux imbriqués. [#99921](https://github.com/ClickHouse/ClickHouse/pull/99921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'exception `LOGICAL_ERROR` "Not-ready Set" dans la fonction `IN` lors de l'optimisation du plan de requête avec `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* Réduction du temps de compilation par suppression d’inclusions lourdes de fichiers d’en-tête et déplacement des instanciations de modèles coûteuses hors des en-têtes. [#97893](https://github.com/ClickHouse/ClickHouse/pull/97893) ([Raúl Marín](https://github.com/Algunenano)).
* Réduction du temps de compilation des fonctions arithmétiques et des en-têtes associés en réduisant les matrices de dispatch des modèles et en supprimant des inclusions lourdes. [#98204](https://github.com/ClickHouse/ClickHouse/pull/98204) ([Raúl Marín](https://github.com/Algunenano)).
* Utilisation de `mongo-c-driver` 2.2.2. [#98304](https://github.com/ClickHouse/ClickHouse/pull/98304) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilisation de `postgres` REL\_18\_3. [#98306](https://github.com/ClickHouse/ClickHouse/pull/98306) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Activation de l’allocateur jemalloc pour les builds UBSan afin d’éviter l’accumulation de RSS due au mauvais comportement de restitution de mémoire de malloc dans glibc. [#98444](https://github.com/ClickHouse/ClickHouse/pull/98444) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Utilisation du mangling de symboles Rust v0 et suppression des symboles internes de la bibliothèque PRQL afin de réduire l’inflation des noms de symboles provenant des bibliothèques de combinators de parsing. [#98446](https://github.com/ClickHouse/ClickHouse/pull/98446) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la suite de benchmark TPC-H et du README TPC-DS à `tests/benchmarks`. [#98495](https://github.com/ClickHouse/ClickHouse/pull/98495) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajout de tests de correction pour les 99 requêtes TPC-DS. [#99204](https://github.com/ClickHouse/ClickHouse/pull/99204) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajout d’un test d’intégration reproduisant le bug d’une réplique hors ligne avec DDL CREATE TABLE + ALTER ([#44070](https://github.com/ClickHouse/ClickHouse/issues/44070)), marqué comme échec attendu. [#99259](https://github.com/ClickHouse/ClickHouse/pull/99259) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Intégration de jemalloc avec le préfixe `je_` et suppression de l’utilisation de l’option --wrap de l’éditeur de liens. [#99342](https://github.com/ClickHouse/ClickHouse/pull/99342) ([Azat Khuzhin](https://github.com/azat)).

<div id="262">
  ### Version de ClickHouse 26.2, 2026-02-26. [Présentation](https://presentations.clickhouse.com/2026-release-26.2/), [Vidéo](https://www.youtube.com/watch?v=7qHba08vNfo)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* La déduplication est désormais activée par défaut pour tous les inserts. Elle était auparavant désactivée pour les async inserts et pour les MV, mais activée pour les sync inserts. L’objectif est d’avoir les mêmes valeurs par défaut pour les deux modes d’insert. Si vous avez explicitement désactivé la déduplication sur votre cluster, vous devez définir explicitement `deduplicate_insert='backward_compatible_choice'` pour conserver l’ancien comportement. Même chose pour `deduplicate_blocks_in_dependent_materialized_views`. [#95970](https://github.com/ClickHouse/ClickHouse/pull/95970) ([Sema Checherinda](https://github.com/CheSema)).
* Format de stockage des statistiques amélioré. Toutes les statistiques sont désormais stockées dans un seul fichier. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)). Si vous n’avez pas explicitement activé les statistiques de table, vous pouvez ignorer ce point.
* Limitation des métadonnées en mémoire de S3(Azure)Queue. Les system tables sont renommées de `azure_queue` en `azure_queue_metadata_cache` et de `system.s3queue` en `s3queue_metadata_cache`. [#95809](https://github.com/ClickHouse/ClickHouse/pull/95809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Auparavant, l’application d’une fonction à une colonne `Variant` renvoyait silencieusement des NULL lorsqu’un sous-type de variant était incompatible avec la fonction ; désormais, une exception est levée, ce qui peut casser des requêtes qui reposaient sur ce comportement silencieux avec NULL. [#95811](https://github.com/ClickHouse/ClickHouse/pull/95811) ([Bharat Nallan](https://github.com/bharatnc)).
* Les colonnes `DATE` provenant de PostgreSQL sont désormais inférées comme `Date32` dans ClickHouse (dans les versions précédentes, elles étaient inférées comme `Date`, ce qui entraînait un overflow pour les valeurs hors d’une plage étroite). L’insertion de valeurs `Date32` dans PostgreSQL est désormais autorisée. Closes [#73084](https://github.com/ClickHouse/ClickHouse/issues/73084). [#95999](https://github.com/ClickHouse/ClickHouse/pull/95999) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La sémantique du paramètre `do_not_merge_across_partitions_select_final` a été clarifiée. Auparavant, la fonctionnalité pouvait être activée automatiquement lorsque le paramètre n’était pas explicitement défini dans les configs. Cela a provoqué de la confusion à plusieurs reprises et, malheureusement, conduit à certains problèmes en production. Désormais, les règles sont plus simples : `do_not_merge_across_partitions_select_final=1` active la fonctionnalité sans condition. Si `do_not_merge_across_partitions_select_final=0`, alors le mode automatique est utilisé uniquement si le nouveau paramètre `enable_automatic_decision_for_merging_across_partitions_for_final=1`, et n’est pas utilisé sinon. Afin de préserver autant que possible l’ancien comportement, les valeurs par défaut ont été définies sur `do_not_merge_across_partitions_select_final=0` et `enable_automatic_decision_for_merging_across_partitions_for_final=1`. [#96110](https://github.com/ClickHouse/ClickHouse/pull/96110) ([Nikita Taranov](https://github.com/nickitat)).
* Lors de la création d’une table S3 avec des colonnes explicitement spécifiées, ClickHouse vérifie désormais que ces noms de colonnes existent bien dans le schéma du fichier distant. Les requêtes qui fonctionnaient auparavant avec des noms de colonnes non concordants échoueront désormais au moment de la création de la table. This closes [#96089](https://github.com/ClickHouse/ClickHouse/issues/96089). [#96194](https://github.com/ClickHouse/ClickHouse/pull/96194) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Interdire l’utilisation de subqueries dans ORDER BY et les autres key expressions de table. [#96847](https://github.com/ClickHouse/ClickHouse/pull/96847) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Activer `apply_row_policy_after_final` par défaut. Initialement, lorsque `optimize_move_to_prewhere_if_final=0`, ROW POLICY et PREWHERE respectaient tous deux FINAL et étaient appliqués après FINAL. Ce comportement a été rompu par [#87303](https://github.com/ClickHouse/ClickHouse/issues/87303), qui ignorait `optimize_move_to_prewhere_if_final` pour le filtre ROW POLICY. Pour corriger cela, cette PR active le paramètre `apply_row_policy_after_final` introduit dans [#91065](https://github.com/ClickHouse/ClickHouse/issues/91065). Avec `apply_row_policy_after_final` activé, ROW POLICY continuera par défaut à respecter FINAL, comme auparavant. Cette PR introduit un changement non rétrocompatible, car elle modifie le comportement pour `optimize_move_to_prewhere_if_final=1`. Désormais, pour que ROW POLICY soit appliqué avant FINAL, il faut utiliser `apply_row_policy_after_final` au lieu de `optimize_move_to_prewhere_if_final`. [#97279](https://github.com/ClickHouse/ClickHouse/pull/97279) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Le type `Date` est désormais sérialisé en tant que type natif `date32` d’Arrow dans les formats Arrow/ArrowStream, au lieu de `uint16`. Des outils comme PyArrow reconnaîtront désormais correctement la colonne comme étant de type date. L’ancien comportement peut être restauré avec le paramètre `output_format_arrow_date_as_uint16`. La lecture des anciens fichiers Arrow qui utilisaient `uint16` pour les colonnes `Date` reste prise en charge. [#96860](https://github.com/ClickHouse/ClickHouse/pull/96860) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* Les utilisateurs peuvent désormais utiliser ClickStack (une UI d’observability) directement depuis ClickHouse, ce qui est utile pour le débogage et le développement local. [#96597](https://github.com/ClickHouse/ClickHouse/pull/96597) ([Aaron Knudtson](https://github.com/knudtty)).
* Prise en charge du mot de passe à usage unique basé sur le temps (TOTP) comme méthode d’authentification. [#71273](https://github.com/ClickHouse/ClickHouse/pull/71273) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Ajout du paramètre de base de données `lazy_load_tables`. Lorsqu’il est activé, les tables ne sont pas chargées au démarrage de la base de données — un `StorageTableProxy` léger est créé à la place et le véritable table engine est matérialisé lors du premier accès. [#96283](https://github.com/ClickHouse/ClickHouse/pull/96283) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Ajout du paramètre `input_format_max_block_wait_ms` pour émettre des blocs de données en cas de timeout et autorisation du traitement des données restantes lorsqu’une connexion HTTP est fermée de manière inattendue. [#94509](https://github.com/ClickHouse/ClickHouse/pull/94509) ([Mostafa Mohamed Salah](https://github.com/Sasao4o)).
* Intégration du catalog Google BigLake. Cela clôt [#95339](https://github.com/ClickHouse/ClickHouse/issues/95339). [#97104](https://github.com/ClickHouse/ClickHouse/pull/97104) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout de la table système `system.tokenizers`, qui affiche tous les tokenizers disponibles. [#96753](https://github.com/ClickHouse/ClickHouse/pull/96753) ([Robert Schulze](https://github.com/rschu1ze)).
* Ajout de la nouvelle table système `system.user_defined_functions` pour surveiller l’état de chargement et la configuration des UDF. [#90340](https://github.com/ClickHouse/ClickHouse/pull/90340) ([Xu Jia](https://github.com/XuJia0210)).
* Ajout de la table `system.jemalloc_stats`, qui expose les statistiques de l’allocateur mémoire jemalloc (via `malloc_stats_print`) afin de diagnostiquer l’utilisation mémoire sur les serveurs compilés avec jemalloc. Ajout également d’un endpoint HTTP `/jemalloc.html` sur la ClickHouse HTTP interface pour une visualisation interactive de ces statistiques. [#97077](https://github.com/ClickHouse/ClickHouse/pull/97077) ([Antonio Andelic](https://github.com/antonio2368)).
* Ajout de la table `system.jemalloc_profile_text` pour lire et analyser les heap profiles jemalloc. Le format de sortie est contrôlé par le paramètre `jemalloc_profile_text_output_format` (raw, symbolized ou collapsed ; collapsed par défaut). La résolution des frames inline est contrôlée par `jemalloc_profile_text_symbolize_with_inline` (lorsqu’il est activé, les frames inline sont incluses au prix d’une symbolization plus lente ; lorsqu’il est désactivé, elles sont ignorées pour une sortie plus rapide). Pour le format collapsed, `jemalloc_profile_text_collapsed_use_count` contrôle si les stacks sont pondérées par le nombre d’allocations actives (true) ou par les octets actifs (false, par défaut). Cela facilite le profiling mémoire et la visualisation en flame graph des heap profiles jemalloc. Corrige [#93248](https://github.com/ClickHouse/ClickHouse/issues/93248). [#97218](https://github.com/ClickHouse/ClickHouse/pull/97218) ([Antonio Andelic](https://github.com/antonio2368)).
* Ajout du paramètre `default_dictionary_database`, qui permet à ClickHouse de résoudre les external dictionaries référencés sans qualificatif de base de données dans une base de données par défaut spécifiée. Cela simplifie la migration des dictionaries globaux définis en XML vers des dictionaries par base de données définis en SQL, permettant ainsi aux requêtes de dictionnaire existantes (par ex. dictGet('name', …)) de continuer à fonctionner sans modification. [#91412](https://github.com/ClickHouse/ClickHouse/pull/91412) ([Dmitrii Plotnikov](https://github.com/dimbo4ka)).
* Prise en charge de ZooKeeper auxiliaire pour `DatabaseReplicated`. [#91683](https://github.com/ClickHouse/ClickHouse/pull/91683) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Implémentation de la nouvelle table function `primes` et de la nouvelle table système `system.primes`, qui contient des nombres premiers par ordre croissant. Clôt [#90839](https://github.com/ClickHouse/ClickHouse/issues/90839). [#92776](https://github.com/ClickHouse/ClickHouse/pull/92776) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Les async inserts prennent en charge le quorum parallèle. Les données insérées sont répliquées sur le quorum. Si des doublons sont détectés, la requête attend que les données précédemment insérées soient elles aussi répliquées. [#93356](https://github.com/ClickHouse/ClickHouse/pull/93356) ([Sema Checherinda](https://github.com/CheSema)).
* Ajout des fonctions `colorOKLABToSRGB` et `colorSRGBToOKLAB` pour convertir une valeur de sRGB vers OKLAB et inversement. [#93361](https://github.com/ClickHouse/ClickHouse/pull/93361) ([Pranav Tiwari](https://github.com/pranavt84)).
* Nouveau paramètre `deduplicate_insert`, qui remplace `insert_deduplicate` et `async_insert_deduplicate`. [#94413](https://github.com/ClickHouse/ClickHouse/pull/94413) ([Sema Checherinda](https://github.com/CheSema)).
* Le paramètre serveur `insert_deduplication_version` permet de migrer vers un hash de déduplication unifié. [#95409](https://github.com/ClickHouse/ClickHouse/pull/95409) ([Sema Checherinda](https://github.com/CheSema)).
* Ajout de la fonction de hachage `xxh3_128`. [#96055](https://github.com/ClickHouse/ClickHouse/pull/96055) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout de la requête `OPTIMIZE <table> DRY RUN PARTS <part names>` pour simuler des merges sans valider la part résultante. Cela peut être utile à des fins de test : vérifier la validité des merges dans la nouvelle version, reproduire de manière déterministe des bogues liés aux merges et mesurer de manière fiable les performances des merges. [#96122](https://github.com/ClickHouse/ClickHouse/pull/96122) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout d'une nouvelle vérification activée par défaut via le paramètre `check_named_collection_dependencies` afin d'éviter la suppression de named collections utilisées par des tables. [#96181](https://github.com/ClickHouse/ClickHouse/pull/96181) ([Pablo Marcos](https://github.com/pamarcos)).
* Ajout de `system.fail_points` pour inspecter les failpoints existants sur le serveur et voir s'ils sont activés ou non. Cela aidera à automatiser les tests. [#96762](https://github.com/ClickHouse/ClickHouse/pull/96762) ([Pedro Ferreira](https://github.com/PedroTadim)).
* Ajout de l'accès basé sur les rôles au Glue catalog. Utilisez les paramètres `aws_role_arn` et, éventuellement, `aws_role_session_name`. [#90825](https://github.com/ClickHouse/ClickHouse/pull/90825) ([Antonio Andelic](https://github.com/antonio2368)).
* Ajout d'un paramètre `add_minmax_index_for_temporal_columns` qui, lorsqu'il est activé, crée automatiquement des indexes minmax pour toutes les colonnes `Date`, `Date32`, `Time`, `Time64`, `DateTime` et `DateTime64`. [#93355](https://github.com/ClickHouse/ClickHouse/pull/93355) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Prise en charge des alias de table étendus pour les JOINs (requêtes comme `SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b`). Résout [#95131](https://github.com/ClickHouse/ClickHouse/issues/95131). [#95331](https://github.com/ClickHouse/ClickHouse/pull/95331) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajout de la prise en charge de `ALTER TABLE RENAME COLUMN` pour les tables Iceberg. Auparavant, seuls `ADD COLUMN`, `DROP COLUMN` et `MODIFY COLUMN` étaient pris en charge. [#97455](https://github.com/ClickHouse/ClickHouse/pull/97455) ([murphy-4o](https://github.com/murphy-4o)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* L’index de texte est désormais GA. [#96794](https://github.com/ClickHouse/ClickHouse/pull/96794) ([Robert Schulze](https://github.com/rschu1ze)).
* Le type de données `QBit`, destiné au stockage vectoriel quantifié compacté en bits (utilisé pour la recherche approximative des plus proches voisins), est désormais généralement disponible et ne nécessite plus l’activation d’un paramètre expérimental. [#95358](https://github.com/ClickHouse/ClickHouse/pull/95358) ([Raufs Dunamalijevs](https://github.com/rienath)).
* La recherche vectorielle dans ClickHouse peut désormais utiliser les répliques du cluster pour *répartir* la charge et les recherches sur les parties de l’index vectoriel. Cela permet à ClickHouse de prendre en charge de grands index vectoriels qui dépassent la capacité mémoire d’une seule VM. [#95876](https://github.com/ClickHouse/ClickHouse/pull/95876) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Ajout d’un server-side AST fuzzer contrôlé par les paramètres `ast_fuzzer_runs` et `ast_fuzzer_any_query`. Lorsqu’il est activé, le serveur exécute des mutations aléatoires de chaque requête après son exécution normale, en rejetant les résultats. [#97568](https://github.com/ClickHouse/ClickHouse/pull/97568) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la fonction `iif` au dialecte KQL expérimental. [#94790](https://github.com/ClickHouse/ClickHouse/pull/94790) ([happyso](https://github.com/sunyeongchoi)).
* L’inférence de schéma respecte désormais `allow_experimental_nullable_tuple_type`. Lorsqu’elle est activée, elle permet aux types Tuple inférés d’être `Nullable(Tuple(...))`, afin que les objets imbriqués manquants puissent devenir `NULL` au lieu d’un tuple composé d’éléments `NULL`. [#95525](https://github.com/ClickHouse/ClickHouse/pull/95525) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Le paramètre `use_statistics_cache` est désormais activé par défaut, de sorte que les statistiques de colonne sont mises en cache en mémoire pour accélérer l’optimisation des requêtes sans devoir les recharger depuis chaque part. [#95950](https://github.com/ClickHouse/ClickHouse/pull/95950) ([Han Fei](https://github.com/hanfei1991)).

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* Autoriser l’utilisation de toute expression déterministe dans la clé primaire pour l’élagage des données (par ex. `ORDER BY cityHash64(user_id)`/ `ORDER BY length(user_id)`). Pour les expressions déterministes, ClickHouse peut appliquer l’expression aux constantes de la requête et utiliser le résultat dans l’index de la clé primaire pour des prédicats tels que `=`, `IN` et `has`. Si l’expression est également injective (par ex. `ORDER BY hex(p)` ou `ORDER BY reverse(tuple(reverse(p), hex(p)))`), l’index peut aussi être utilisé efficacement pour les formes négatives : `!=`, `NOT IN` et `NOT has`. Clôt [#10685](https://github.com/ClickHouse/ClickHouse/issues/10685). Clôt [#82161](https://github.com/ClickHouse/ClickHouse/issues/82161). [#92952](https://github.com/ClickHouse/ClickHouse/pull/92952) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Améliorer le format de stockage des statistiques. Toutes les statistiques sont désormais stockées dans un seul fichier. [#93414](https://github.com/ClickHouse/ClickHouse/pull/93414) ([Anton Popov](https://github.com/CurtizJ)).
* Autoriser la lecture parallélisée pour les moteurs/fonctions de table distants dans le cache du système de fichiers. [#71781](https://github.com/ClickHouse/ClickHouse/pull/71781) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Autoriser l’utilisation du cache de pages en espace utilisateur avec les fichiers locaux et les fonctions de table de stockage objet. [#77874](https://github.com/ClickHouse/ClickHouse/pull/77874) ([Michael Kolupaev](https://github.com/al13n321)).
* Éviter les `memcpy` inutiles dans le cache de pages en espace utilisateur. [#77884](https://github.com/ClickHouse/ClickHouse/pull/77884) ([Michael Kolupaev](https://github.com/al13n321)).
* La valeur par défaut de `concurrent_threads_scheduler` est désormais `max_min_fair` au lieu de `fair_round_robin`. Cela améliore l’équité sous forte charge en donnant la priorité aux requêtes disposant de moins d’emplacements alloués, afin que les requêtes courtes ne soient pas pénalisées par les requêtes longues. [#95300](https://github.com/ClickHouse/ClickHouse/pull/95300) ([Sergei Trifonov](https://github.com/serxa)).
* Si une requête `FINAL` utilisait une condition sur la clé primaire pour le filtrage, suivie de skip indexes pour d’autres conditions, l’étape de traitement `PrimaryKeyExpand` ne vérifiera désormais l’intersection que pour les plages de clé primaire initialement présélectionnées. [#94903](https://github.com/ClickHouse/ClickHouse/pull/94903) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Lors de l’utilisation de répliques parallèles avec des fonctions de table comme `s3(...)`, les requêtes comportant une seule sous-requête englobant la fonction de table sont désormais automatiquement parallélisées entre les répliques, alors qu’auparavant seules les références directes à des fonctions de table l’étaient. Clôt [#92264](https://github.com/ClickHouse/ClickHouse/issues/92264). [#96332](https://github.com/ClickHouse/ClickHouse/pull/96332) ([phulv94](https://github.com/phulv94)).
* Activer la séparation des données et des fichiers système mis en cache en segments distincts. [#87834](https://github.com/ClickHouse/ClickHouse/pull/87834) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Accélérer certaines opérations de hash join en implémentant une répartition dynamique pour `ColumnVector::replicate`. [#79573](https://github.com/ClickHouse/ClickHouse/pull/79573) ([Raúl Marín](https://github.com/Algunenano)).
* Amélioration des performances du parallel hash join dans les cas impliquant des prédicats complexes. Auparavant, les lignes non jointes étaient traitées dans un seul thread, ce qui était sous-optimal ; cette optimisation parallélise leur traitement sur plusieurs threads. Peut être activé ou désactivé via le paramètre `parallel_non_joined_rows_processing`. Activé par défaut. [#92068](https://github.com/ClickHouse/ClickHouse/pull/92068) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Optimiser légèrement l’analyse du type JSON. [#93614](https://github.com/ClickHouse/ClickHouse/pull/93614) ([Pavel Kruglov](https://github.com/Avogar)).
* Réduire l’empreinte mémoire de l’AST. Cette optimisation est pertinente, car les champs ne sont pas utilisés lorsque la mise en évidence ne l’est pas non plus et qu’il n’y a pas d’analyse de VALUES. [#93974](https://github.com/ClickHouse/ClickHouse/pull/93974) ([Ilya Yatsishin](https://github.com/qoega)).
* Optimise la consommation mémoire des objets AST `Tuple` nommés. Place les noms de colonnes sous forme de chaînes dans l’objet tuple au lieu de les stocker dans des nœuds littéraux AST génériques. [#94704](https://github.com/ClickHouse/ClickHouse/pull/94704) ([Ilya Yatsishin](https://github.com/qoega)).
* La dévirtualisation est améliorée grâce à des options supplémentaires de l’éditeur de liens. [#94737](https://github.com/ClickHouse/ClickHouse/pull/94737) ([Nikita Taranov](https://github.com/nickitat)).
* Améliore les performances du clonage de réplicas pour les tables ReplicatedMergeTree comportant de nombreuses parts en regroupant les requêtes ZooKeeper par lots. [#94847](https://github.com/ClickHouse/ClickHouse/pull/94847) ([c-end](https://github.com/c-end)).
* Lorsque l’étape de lecture comportait déjà des filtres PREWHERE, il n’était pas possible d’ajouter un nouveau filtre. Cette modification reporte l’optimisation PREWHERE après l’optimisation des runtime filters de JOIN afin que les runtime filters puissent eux aussi être poussés vers PREWHERE. [#95838](https://github.com/ClickHouse/ClickHouse/pull/95838) ([Alexander Gololobov](https://github.com/davenger)).
* Accélère la compression du codec `T64` en utilisant la répartition dynamique sur x86. [#95881](https://github.com/ClickHouse/ClickHouse/pull/95881) ([Raúl Marín](https://github.com/Algunenano)).
* Accélère `uniq` sur les types numériques en regroupant les insertions par lots lorsque c’est possible (not null, pas de -If, pas de GROUP BY, ni IPv6 ni String). [#95904](https://github.com/ClickHouse/ClickHouse/pull/95904) ([Raúl Marín](https://github.com/Algunenano)).
* Optimisations de bas niveau pour Keeper : il a été constaté que `ZooKeeper::observeOperations` représentait >20 % de la consommation CPU du thread de réception de ZooKeeper. Cette modification y remédie en : 1. utilisant `CityHash64` au lieu de `SipHash` pour `AggregatedZooKeeperLog::stats`, ce qui est >10x plus rapide. 2. utilisant `std::array<std::atomic<UInt32>, N>` au lieu de `std::unordered_map` et `std::mutex` pour `Coordination::ErrorCounter`. [#95962](https://github.com/ClickHouse/ClickHouse/pull/95962) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Supprime l’alignement sur 64 octets pour ProfileEvents::Counter afin d’économiser de la mémoire. [#96097](https://github.com/ClickHouse/ClickHouse/pull/96097) ([Azat Khuzhin](https://github.com/azat)).
* Optimisation mémoire : réduit d’un facteur 50 la taille de la structure `CachedOnDiskReadBufferFromFile`. [#96098](https://github.com/ClickHouse/ClickHouse/pull/96098) ([Azat Khuzhin](https://github.com/azat)).
* Ne copie pas les anciennes données lors du redimensionnement d’une table de hachage si elle est vide. [#96180](https://github.com/ClickHouse/ClickHouse/pull/96180) ([Raúl Marín](https://github.com/Algunenano)).
* Prend en charge les runtime filters de JOIN pour les JOIN `RIGHT OUTER`. [#96183](https://github.com/ClickHouse/ClickHouse/pull/96183) ([Hechem Selmi](https://github.com/m-selmi)).
* L’optimisation `enable_join_runtime_filters` est désormais activée par défaut. [#89314](https://github.com/ClickHouse/ClickHouse/pull/89314) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Auparavant, l’optimisation de lecture directe du text index n’était appliquée que lorsque toutes les parts disposaient d’un text index matérialisé. Cette PR ajoute une prise en charge partielle : si certaines parts disposent d’un text index matérialisé, elles l’utiliseront, tandis que celles qui n’en ont pas reviendront à l’exécution de la filter expression d’origine. [#96411](https://github.com/ClickHouse/ClickHouse/pull/96411) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout d’index secondaires `minmax` sur les colonnes temporelles et d’index `bloom_filter` sur les colonnes `query_id`/`initial_query_id` dans les tables de logs système pour accélérer le filtrage. [#96712](https://github.com/ClickHouse/ClickHouse/pull/96712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* L’optimisation de lazy materialization s’applique désormais à toutes les branches d’une requête `UNION ALL`, et non plus seulement à la première. Les requêtes qui combinent plusieurs lectures triées et limitées à partir de différentes tables `MergeTree` via `UNION ALL` bénéficient maintenant d’une lecture différée des colonnes sur chaque branche, ce qui réduit les E/S. [#96832](https://github.com/ClickHouse/ClickHouse/pull/96832) ([Federico Ginosa](https://github.com/menxit)).
* Optimise le calcul de l’index de saut minmax lors d’`INSERT` en supprimant une copie de données inutile et en activant un calcul vectorisé min/max pour les colonnes numériques. [#97392](https://github.com/ClickHouse/ClickHouse/pull/97392) ([Raúl Marín](https://github.com/Algunenano)).
* Le moteur Storage `DeltaLake` récupère désormais le résultat de `count()` depuis les métadonnées delta lake et affiche des statistiques de table correctes dans system.tables (total des octets/lignes). [#96190](https://github.com/ClickHouse/ClickHouse/pull/96190) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Les colonnes inutilisées sont désormais également supprimées à l’étape de lecture dans le cas d’une lecture depuis un MergeTree. Cela est particulièrement utile lorsqu’un filtre est poussé dans `PREWHERE`. [#89982](https://github.com/ClickHouse/ClickHouse/pull/89982) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Améliore le traitement de la requête `SHOW TABLES` en ne récupérant que le nom des tables, et améliore getLightweightTablesIterator afin qu’il renvoie une structure ne contenant que les noms de tables. Résout [#93835](https://github.com/ClickHouse/ClickHouse/issues/93835). [#94467](https://github.com/ClickHouse/ClickHouse/pull/94467) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Améliore `assumeNotNull`, `coalesce` et `ifNull` afin d’activer l’élagage de la clé primaire et de l’index de saut pour les prédicats de plage lorsque les colonnes de clé sont encapsulées dans ces fonctions. Clôt [#94689](https://github.com/ClickHouse/ClickHouse/issues/94689). [#94754](https://github.com/ClickHouse/ClickHouse/pull/94754) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajoute les extensions with\_data et with\_stat à la requête getChildren de Keeper. Cela permet de récupérer non seulement la liste des enfants, mais aussi leur `stat` et/ou leurs `data` en une seule opération. [#94826](https://github.com/ClickHouse/ClickHouse/pull/94826) ([Nikolay Degterinsky](https://github.com/evillique)).
* L’analyse d’index n’est effectuée qu’une seule fois (dans la plupart des cas), que l’exécution se fasse finalement avec un plan local ou un plan avec des répliques parallèles. [#94854](https://github.com/ClickHouse/ClickHouse/pull/94854) ([Nikita Taranov](https://github.com/nickitat)).
* Permet d’activer l’analyse d’index distribuée en fonction du nombre de parts (`distributed_index_analysis_min_parts_to_activate`) et de la taille des index (`distributed_index_analysis_min_indexes_size_to_activate`). [#95216](https://github.com/ClickHouse/ClickHouse/pull/95216) ([Azat Khuzhin](https://github.com/azat)).
* Active l’optimisation PREWHERE pour les tables Iceberg. [#95476](https://github.com/ClickHouse/ClickHouse/pull/95476) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Réduit l’empreinte mémoire de certaines classes AST. [#95514](https://github.com/ClickHouse/ClickHouse/pull/95514) ([Raúl Marín](https://github.com/Algunenano)).
* Limite le nombre de flux du pipeline générés lorsque `split_intersecting_parts_ranges_into_layers` est activé. Cela permet d’éviter une consommation mémoire excessive. [#96478](https://github.com/ClickHouse/ClickHouse/pull/96478) ([Nikita Taranov](https://github.com/nickitat)).
* Implémente l’optimisation par ensembles équivalents pour plusieurs jointures. Les requêtes comportant plusieurs opérations `INNER JOIN` consécutives bénéficient désormais d’une meilleure optimisation du pushdown des filtres. Lorsque des tables sont jointes sur des colonnes équivalentes (par exemple, `t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10`), les filtres appliqués à n’importe quelle table de la chaîne sont automatiquement poussés vers toutes les tables. Clôt [#96550](https://github.com/ClickHouse/ClickHouse/issues/96550). [#96596](https://github.com/ClickHouse/ClickHouse/pull/96596) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Optimisation de l’analyse des métadonnées delta lake. Utilise les changements de la PR delta-kernel [https://github.com/delta-io/delta-kernel-rs/pull/1827](https://github.com/delta-io/delta-kernel-rs/pull/1827). [#96686](https://github.com/ClickHouse/ClickHouse/pull/96686) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Dans une base de données Replicated, le cluster mis en cache n’est plus mis à jour pour chaque requête factice. [#96897](https://github.com/ClickHouse/ClickHouse/pull/96897) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Utilisation de l’index de clé primaire lors du filtrage avec `startsWithUTF8` si le préfixe ne contient que des caractères ASCII. [#97055](https://github.com/ClickHouse/ClickHouse/pull/97055) ([vkcku](https://github.com/vkcku)).

<div id="267-improvement">
  #### Amélioration
</div>

* Ajout du tracing OpenTelemetry pour les requêtes Keeper. [#91332](https://github.com/ClickHouse/ClickHouse/pull/91332) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Nouvelles options de configuration : `logger.startup_console_level` & `logger.shutdown_console_level` permettant de redéfinir respectivement le niveau de log de la console pendant le démarrage et l’arrêt de ClickHouse. [#95919](https://github.com/ClickHouse/ClickHouse/pull/95919) ([Garrett Thomas](https://github.com/garrettthomaskth)).
* Prise en compte des surcharges en ligne de commande lors du rechargement de la configuration. Clôture [#80294](https://github.com/ClickHouse/ClickHouse/issues/80294). [#80295](https://github.com/ClickHouse/ClickHouse/pull/80295) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge des surcharges key-value pour les paramètres des named collections dans la table function `mongodb`. [#89616](https://github.com/ClickHouse/ClickHouse/pull/89616) ([vanchaklar](https://github.com/vanchaklar)).
* L’optimisation de lecture dans l’ordre pour les tables Iceberg fonctionne désormais avec des fonctions de tri complexes comme `icebergBucket` et `icebergTruncate`, et non plus seulement avec de simples références de colonne. [#90256](https://github.com/ClickHouse/ClickHouse/pull/90256) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Ajout d’une nouvelle colonne nommée parts\_postpone\_reasons dans system.mutations afin d’améliorer le diagnostic ; elle affiche les raisons du report des parts. [#92206](https://github.com/ClickHouse/ClickHouse/pull/92206) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Suivi des variations du nombre de lignes à lire (dues aux insertions/suppressions ou à l’utilisation du query condition cache) dans `DataflowStatisticsCache`. [#93636](https://github.com/ClickHouse/ClickHouse/pull/93636) ([Nikita Taranov](https://github.com/nickitat)).
* Prise en charge de la requête SYSTEM RESET DDL WORKER \[ON CLUSTER]. Elle demande la réinitialisation de l’état de DDLWorker dans son thread principal. Cela est utile pour réactualiser l’état actif de la replica lorsque les identifiants d’hôte sont mis à jour. [#93780](https://github.com/ClickHouse/ClickHouse/pull/93780) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Prise en charge de `mutation_ids` dans `system.part_log` pour les types d’événement `MUTATE_PART` et `MUTATE_PART_START`. [#93811](https://github.com/ClickHouse/ClickHouse/pull/93811) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Les opérations en arrière-plan (Mutate, Merge) peuvent désormais être configurées indépendamment via le profil 'background'. Auparavant, elles partageaient les paramètres des requêtes classiques via le profil 'default'. [#93905](https://github.com/ClickHouse/ClickHouse/pull/93905) ([Arsen Muk](https://github.com/arsenmuk)).
* Ajout de davantage d’informations dans `system.crash_log`. [#94112](https://github.com/ClickHouse/ClickHouse/pull/94112) [#95857](https://github.com/ClickHouse/ClickHouse/pull/95857) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajout de la nouvelle métrique `QueryNonInternal` pour suivre le nombre de requêtes non internes en cours d’exécution. Cette métrique est exposée sous la forme `ClickHouseMetrics_QueryNonInternal` et aide les opérateurs à surveiller la concurrence des requêtes par rapport à la limite `max_concurrent_queries`, qui ne s’applique qu’aux requêtes non internes. [#94284](https://github.com/ClickHouse/ClickHouse/pull/94284) ([Ashwath Singh](https://github.com/ashwath)).
* Prise en charge de la collecte de statistiques sur les octets en entrée pour les colonnes issues de compact parts dans `RuntimeDataflowStatisticsCacheUpdater`. [#94626](https://github.com/ClickHouse/ClickHouse/pull/94626) ([Nikita Taranov](https://github.com/nickitat)).
* Ajout d’une vérification pour détecter une mauvaise configuration de Keeper entraînant des échecs d’assemblage du cluster. Clôture [#60932](https://github.com/ClickHouse/ClickHouse/issues/60932). [#94682](https://github.com/ClickHouse/ClickHouse/pull/94682) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Amélioration de la désérialisation des préfixes JSON lors du chargement des parts. [#94848](https://github.com/ClickHouse/ClickHouse/pull/94848) ([Pavel Kruglov](https://github.com/Avogar)).
* Refonte de l’écriture pour utiliser le pipeline INSERT complet, ce qui déclenche les vues matérialisées sur la table cible. [#94890](https://github.com/ClickHouse/ClickHouse/pull/94890) ([Kai Zhu](https://github.com/nauu)).
* Utiliser les optimisations du plan de recherche de similarité vectorielle uniquement si l’index existe pour la colonne de recherche. [#94998](https://github.com/ClickHouse/ClickHouse/pull/94998) ([Eduard Karacharov](https://github.com/korowa)).
* Vérifier la limite totale de mémoire avant l’authentification de l’utilisateur et lever `(total) memory limit exceeded` si la limite totale dépasse la valeur autorisée. [#95003](https://github.com/ClickHouse/ClickHouse/pull/95003) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Ajout de l’option de configuration `throw_on_unmatched_row_policies` qui, lorsqu’elle est activée, lève une exception si un utilisateur interroge une table avec des politiques de ligne mais qu’aucune ne s’applique à lui, ce qui évite le comportement ambigu consistant à renvoyer toutes les lignes en raison d’une mauvaise configuration du contrôle d’accès. [#95014](https://github.com/ClickHouse/ClickHouse/pull/95014) ([Vitaly Baranov](https://github.com/vitlibar)).
* Mise à jour dynamique des jetons d’accès S3 dans les requêtes longues avec Unity Catalog. Cela clôt [#93981](https://github.com/ClickHouse/ClickHouse/issues/93981). [#95069](https://github.com/ClickHouse/ClickHouse/pull/95069) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Désactiver la décroissance des pages sales de jemalloc si ClickHouse est soumis à une pression mémoire soutenue pendant `memory_worker_decay_adjustment_period_ms` millisecondes. Réactiver la décroissance des pages sales de jemalloc si ClickHouse fonctionne dans des conditions normales pendant la même durée. [#95145](https://github.com/ClickHouse/ClickHouse/pull/95145) ([Antonio Andelic](https://github.com/antonio2368)).
* Prise en charge d’un Zookeeper auxiliaire pour S3Queue à l’aide du paramètre `keeper_path` de s3Queue. [#95203](https://github.com/ClickHouse/ClickHouse/pull/95203) ([Diego Nieto](https://github.com/lesandie)).
* Respect de `max_parts_to_merge_at_once` dans les fusions de parts supprimées par TTL. [#95315](https://github.com/ClickHouse/ClickHouse/pull/95315) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ajouter `connection_address` et `connection_port` à query\_log pour refléter la connexion physique (`address` et `port` sont remplacés en cas de connexion via un proxy et auth\_use\_forwarded\_address=1). [#95471](https://github.com/ClickHouse/ClickHouse/pull/95471) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Correction d’un comptage incorrect de la mémoire pour le cache des conditions de requête. Le principal problème était que la clé de cache, composée de plusieurs chaînes (comme part\_name, l’ID de la table et la condition SQL complète), n’était pas prise en compte. [#95478](https://github.com/ClickHouse/ClickHouse/pull/95478) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Le serveur démarré avec la configuration embarquée permettra de gérer les utilisateurs et les grants, en les enregistrant dans le répertoire `access`, comme avec la configuration standard. Cela améliore les tests. Toutes les améliorations liées à access\_control ont également été activées dans la config embarquée et dans clickhouse-local. [#95481](https://github.com/ClickHouse/ClickHouse/pull/95481) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des messages d’erreur d’authentification S3 pour inclure une indication invitant à vérifier les identifiants lorsque l’accès est refusé. [#95648](https://github.com/ClickHouse/ClickHouse/pull/95648) ([Gerald Latkovic](https://github.com/batkovic75)).
* Activer le cache de statistiques et définir sa période de mise à jour sur 300 s. [#95841](https://github.com/ClickHouse/ClickHouse/pull/95841) ([Han Fei](https://github.com/hanfei1991)).
* Ajouter le nom du composant à `system.aggregated_zookeeper_log`. [#95882](https://github.com/ClickHouse/ClickHouse/pull/95882) ([Antonio Andelic](https://github.com/antonio2368)).
* Évite les lectures depuis l’object storage lors des requêtes sur les tables `DeltaLake` via `system.tables`. [#95899](https://github.com/ClickHouse/ClickHouse/pull/95899) ([Antonio Andelic](https://github.com/antonio2368)).
* Active `enable_max_bytes_limit_for_min_age_to_force_merge` par défaut si le paramètre `compatibility` est défini sur `26.2` ou plus. [#95917](https://github.com/ClickHouse/ClickHouse/pull/95917) ([Christoph Wurm](https://github.com/cwurm)).
* Delta Lake est désormais disponible sur macOS. Résout le ticket #95979. [#95985](https://github.com/ClickHouse/ClickHouse/pull/95985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans les versions précédentes, lors de la combinaison d’expressions ALTER conflictuelles avec UPDATE et RENAME COLUMN, une erreur logique était levée au lieu d’une exception appropriée. Résout [#70678](https://github.com/ClickHouse/ClickHouse/issues/70678). [#96022](https://github.com/ClickHouse/ClickHouse/pull/96022) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Améliore la sortie de l’aide pour toutes les applications ClickHouse et ajoute l’option `--no-sudo`, avec quelques correctifs. Cela fait suite à [#58244](https://github.com/ClickHouse/ClickHouse/issues/58244) de [Ilya Yatsishin](https://github.com/qoega). [#96025](https://github.com/ClickHouse/ClickHouse/pull/96025) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute l’alias `distanceCosine` pour `cosineDistance`, car toutes les autres fonctions de distance disposent déjà d’un alias de cette forme. [#96065](https://github.com/ClickHouse/ClickHouse/pull/96065) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajoute la prise en charge de l’extension Keeper `with_data` afin d’améliorer la récupération des tables dans Database Replicated. [#96090](https://github.com/ClickHouse/ClickHouse/pull/96090) ([Nikolay Degterinsky](https://github.com/evillique)).
* Met à jour chdig vers [v26.2.1](https://github.com/azat/chdig/releases/tag/v26.2.1) (nouvelles fonctionnalités et prise en charge de MacOS). [#96113](https://github.com/ClickHouse/ClickHouse/pull/96113) ([Azat Khuzhin](https://github.com/azat)).
* Améliore le pushdown des filtres pour `numbers` et `primes`. ClickHouse peut désormais déduire des bornes de valeurs prudentes à partir des conditions `WHERE` lorsque des bornes exactes ne peuvent pas être déterminées, et restreindre en conséquence la génération de la séquence (par exemple, pour `WHERE number % 5 < 2 AND number > 100 AND number < 300`, ClickHouse ne générera que des nombres entre 100 et 300, puis appliquera le prédicat), évitant ainsi les scans non bornés. Résout [#84853](https://github.com/ClickHouse/ClickHouse/issues/84853). Résout [#93913](https://github.com/ClickHouse/ClickHouse/issues/93913). [#96115](https://github.com/ClickHouse/ClickHouse/pull/96115) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Le Formatter entourait auparavant SELECT de parenthèses lorsqu’une clause `COMMENT` était présente afin de lever l’ambiguïté lors du parsing. À la place, il place `COMMENT` avant `AS SELECT`, ce qui supprime l’ambiguïté sans recourir aux parenthèses. [#96293](https://github.com/ClickHouse/ClickHouse/pull/96293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le paramètre de config `allow_impersonate_user` se trouve désormais dans la section `access_control_improvements` au lieu d’être un server setting autonome. [#96451](https://github.com/ClickHouse/ClickHouse/pull/96451) ([Vitaly Baranov](https://github.com/vitlibar)).
* Rend le paramètre de configuration `core_dump.size_limit` rechargeable à chaud, afin d’éviter d’avoir à redémarrer les servers pour que les modifications de configuration prennent effet. [#96524](https://github.com/ClickHouse/ClickHouse/pull/96524) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Améliore l’interopérabilité des Profilers CPU et temps réel avec les timeouts de socket. [#96601](https://github.com/ClickHouse/ClickHouse/pull/96601) ([Sergei Trifonov](https://github.com/serxa)).
* Empêche la réapparition de données supprimées si ADD COLUMN est exécuté peu après la mutation DROP COLUMN. [#96713](https://github.com/ClickHouse/ClickHouse/pull/96713) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Modifie le type de `function_id` dans `system.instrumentation`, de LowCardinality(Int32) à Int32. [#96726](https://github.com/ClickHouse/ClickHouse/pull/96726) (Copilot).
* L'attente synchrone des mutations respecte désormais l'annulation des requêtes et les limites de temps. [#96756](https://github.com/ClickHouse/ClickHouse/pull/96756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute la commande système `SYSTEM RELOAD DELTA KERNEL TRACING <level>` pour permettre de modifier la journalisation de delta-kernel, ce qui peut être utile pour le débogage. [#96763](https://github.com/ClickHouse/ClickHouse/pull/96763) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Le filtrage par famille d'adresses IP, c'est-à-dire les paramètres `dns_allow_resolve_names_to_ipv4/ipv6`, s'applique même si le cache DNS est désactivé. [#96810](https://github.com/ClickHouse/ClickHouse/pull/96810) ([c-end](https://github.com/c-end)).
* Améliore l'introspection de jemalloc. [#96840](https://github.com/ClickHouse/ClickHouse/pull/96840) ([Azat Khuzhin](https://github.com/azat)).
* Corrige l'erreur `QUERY_CACHE_USED_WITH_SYSTEM_TABLE` dans l'interface web `/play` lors de requêtes sur des tables système. [#96869](https://github.com/ClickHouse/ClickHouse/pull/96869) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Améliore l'interface web : modifie le favicon pour indiquer l'état d'exécution d'une requête ; affiche les erreurs des requêtes auxiliaires (chargement des bases de données et des tables) au lieu de les ignorer silencieusement. Clôt [#85055](https://github.com/ClickHouse/ClickHouse/issues/85055). [#96883](https://github.com/ClickHouse/ClickHouse/pull/96883) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Rend le panneau de gauche de l'interface `/play` cliquable pour afficher ou masquer la liste des bases de données. [#96884](https://github.com/ClickHouse/ClickHouse/pull/96884) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `DROP DATABASE` supprime désormais les tables dans l'ordre inverse des dépendances, ce qui améliore la résistance aux crashs lorsque la base de données contient des tables avec des dépendances de chargement (par exemple, des tables `Distributed` utilisant `joinGet`). [#97057](https://github.com/ClickHouse/ClickHouse/pull/97057) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Met à jour yaml-cpp pour éviter d'ignorer du YAML non valide. [#97333](https://github.com/ClickHouse/ClickHouse/pull/97333) ([Azat Khuzhin](https://github.com/azat)).
* Affiche un indicateur de chargement dans la barre latérale de `play.html` pendant la récupération des tables. [#97531](https://github.com/ClickHouse/ClickHouse/pull/97531) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute un bouton de copie dans le presse-papiers pour les résultats bruts des requêtes dans l'interface web intégrée (play.html). [#97532](https://github.com/ClickHouse/ClickHouse/pull/97532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'obfuscateur de requêtes (`clickhouse-format --obfuscate`) afin de produire du SQL pouvant être analysé dans davantage de cas. [#97584](https://github.com/ClickHouse/ClickHouse/pull/97584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Après des ALTER ne portant que sur les métadonnées, comme l’extension des éléments d’un Enum, l’optimisation de l’agrégation avec projection peut finir par produire une exception. [#84143](https://github.com/ClickHouse/ClickHouse/pull/84143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les vues matérialisées utilisent désormais comme contexte d’exécution la base de données dans laquelle elles ont été créées, ce qui signifie que : - il est possible d’omettre la qualification explicite de la base de données pour les noms référencés dans la requête SELECT de la vue - si aucune qualification explicite de base de données n’est fournie, la base de données où la vue matérialisée a été créée est utilisée par défaut. [#88193](https://github.com/ClickHouse/ClickHouse/pull/88193) ([Dmitry Kovalev](https://github.com/dk-github)).
* Corrige la substitution des paramètres de requête dans les méthodes d’authentication de CREATE USER lors de l’utilisation de ON CLUSTER. Les paramètres de requête dans les méthodes d’authentication (par ex. `password`) n’étaient pas remplacés, ce qui provoquait des erreurs UNKNOWN\_QUERY\_PARAMETER sur les nœuds distants. [#92777](https://github.com/ClickHouse/ClickHouse/pull/92777) ([xiaohuanlin](https://github.com/xiaohuanlin)).
* Corrige des incohérences dans l’analyse du text index pour les fonctions `has`, `mapContainsKey` et `mapContainsValue`. Auparavant, les requêtes utilisant ces fonctions pouvaient renvoyer des résultats différents selon que l’expression était évaluée avec ou sans text index. [#93578](https://github.com/ClickHouse/ClickHouse/pull/93578) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un crash lors de l’attachement d’une table à une base de données `MaterializedPostgreSQL` si `dropReplicationSlot` lève une exception pendant le déroulage de la pile. [#96871](https://github.com/ClickHouse/ClickHouse/pull/96871) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les sauvegardes pouvaient faire planter le serveur si un grand nombre de sauvegardes concurrentes entraient en conflit sur les mêmes fichiers. [#93659](https://github.com/ClickHouse/ClickHouse/pull/93659) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les requêtes avec parallel replicas et JOIN sur une table non-MT. Ferme [#92056](https://github.com/ClickHouse/ClickHouse/issues/92056). [#93902](https://github.com/ClickHouse/ClickHouse/pull/93902) ([Igor Nikonov](https://github.com/devcrafter)).
* Corrige un problème où des colonnes Iceberg contenant un point dans leur nom renvoyaient NULL comme valeur. [#94335](https://github.com/ClickHouse/ClickHouse/pull/94335) ([Mikhail Koviazin](https://github.com/mkmkme)).
* Corrige la gestion des chaînes UTF8 dans `stringJaccardIndexUTF8` et améliore les performances. [#94613](https://github.com/ClickHouse/ClickHouse/pull/94613) ([Joanna Hulboj](https://github.com/jh0x)).
* Corrige de possibles dépassements de capacité dans `WITH FILL STALENESS` (entraînant un comportement indéfini et/ou des boucles infinies). Corrige également une possible boucle infinie due à de grands sauts. Ajoute la prise en charge de l’ancien analyzer (principalement pour les tests de stress). [#94663](https://github.com/ClickHouse/ClickHouse/pull/94663) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un possible blocage de distributed queries lorsque des hostnames se résolvent en plusieurs adresses et qu’une replica distante se fige. [#94726](https://github.com/ClickHouse/ClickHouse/pull/94726) ([c-end](https://github.com/c-end)).
* Corrige un résultat incorrect lors de la jointure de plusieurs expressions de table, lorsque l’expression de table la plus à gauche est une table function `-Cluster`. Résout [#89996](https://github.com/ClickHouse/ClickHouse/issues/89996). [#94748](https://github.com/ClickHouse/ClickHouse/pull/94748) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Corrige un pruning incorrect de la primary key et du skip index pour les predicates impliquant `toWeek`, `toYearWeek`, `toStartOfWeek`, `toLastDayOfWeek` et `toDayOfWeek`, et corrige des exceptions dans certaines de ces fonctions pour des requêtes valides avec `LowCardinality(String)`. [#94816](https://github.com/ClickHouse/ClickHouse/pull/94816) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Supprime le contournement inutile de la vérification des privilèges dans les requêtes `ATTACH` pour une vue avec SQL Security. Cela évite une potentielle escalade de privilèges lorsqu’un utilisateur attache une vue avec un définisseur sans valider les accès requis. [#94865](https://github.com/ClickHouse/ClickHouse/pull/94865) ([pufit](https://github.com/pufit)).
* Corrige un crash au démarrage de `ReplicatedMergeTree` causé par la suppression concurrente des répertoires `delete_tmp_*`. [#94892](https://github.com/ClickHouse/ClickHouse/pull/94892) ([myeongjun](https://github.com/myeongjjun)).
* Corrige la perte des informations de déduplication lors d’un `INSERT` dans des tables Iceberg avec des vues matérialisées, ce qui provoquait une exception. [#94938](https://github.com/ClickHouse/ClickHouse/pull/94938) ([Daniil Ivanik](https://github.com/divanik)).
* Corrige un bug où `SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME>` supprimait l’intégralité du cache sur le cluster. [#94978](https://github.com/ClickHouse/ClickHouse/pull/94978) ([Rory Crispin](https://github.com/RoryCrispin)).
* Préserve une granularité d’index constante (use\_const\_adaptive\_granularity) après les fusions verticales (v2 avec un correctif pour Nested, et plus généralement). [#95013](https://github.com/ClickHouse/ClickHouse/pull/95013) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une condition de concurrence dans le cache du système de fichiers dans la version 26.1 après \[ClickHouse/ClickHouse[#82764](https://github.com/ClickHouse/ClickHouse/issues/82764)]\([https://github.com/ClickHouse/ClickHouse/pull/82764](https://github.com/ClickHouse/ClickHouse/pull/82764)). [#95042](https://github.com/ClickHouse/ClickHouse/pull/95042) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige l’annulation de la fonction de table postgresql() via KILL QUERY et l’annulation de requête (Ctrl+C) dans clickhouse-client. [#95136](https://github.com/ClickHouse/ClickHouse/pull/95136) ([Roman Vasin](https://github.com/rvasin)).
* Corrige l’inférence de type pour les colonnes qualifiées provenant des tables sources lorsque plusieurs jointures sont utilisées avec la clause `USING`. Auparavant, les jointures suivantes mettaient incorrectement à jour les types des colonnes sources sous-jacentes vers un supertype commun, même lorsque la colonne n’était pas impliquée dans cette jointure (par exemple, dans `SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a)`, la colonne `t2.a` n’est utilisée que par la première jointure, son type devrait donc être le supertype de `t1.a` et `t2.a`, à l’exclusion de `t3.a`). Cela pouvait entraîner des erreurs logiques ou des crashs lorsque des fonctions attendaient des types de colonnes différents de ceux réellement présents dans le plan d’exécution. [#95157](https://github.com/ClickHouse/ClickHouse/pull/95157) ([Vladimir Cherkasov](https://github.com/vdimir)).
* N’effectue la transformation des colonnes qu’une seule fois lors de la récupération du contenu de la liste .avro du manifest et des fichiers. [#95164](https://github.com/ClickHouse/ClickHouse/pull/95164) ([Daniil Ivanik](https://github.com/divanik)).
* Corrige un calcul incorrect de la taille des colonnes JSON, qui pouvait entraîner une utilisation excessive de la mémoire ou des statistiques de colonnes erronées. [#95207](https://github.com/ClickHouse/ClickHouse/pull/95207) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une comptabilisation mémoire inexacte lors de l’application de gros patch parts après des lightweight updates. Auparavant, l’application de gros patchs pouvait provoquer une utilisation excessive de la mémoire et conduire à l’arrêt du processus serveur par l’OOM killer. [#95231](https://github.com/ClickHouse/ClickHouse/pull/95231) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige un comportement indéfini qui pouvait provoquer des résultats incorrects ou une exception lorsqu’une requête distribuée avec `max_parallel_replicas` basculait vers une réplique locale pendant l’analyse des index. [#95263](https://github.com/ClickHouse/ClickHouse/pull/95263) ([Azat Khuzhin](https://github.com/azat)).
* Corrige l’agrégation des colonnes creuses pour `sum` et timeseries lorsque `group_by_overflow_mode` est défini sur `any`. [#95301](https://github.com/ClickHouse/ClickHouse/pull/95301) ([Mikhail Koviazin](https://github.com/mkmkme)).
* Corrige un problème de fiabilité dans la politique de disque `plain_rewritable`, où une erreur réseau survenant en cours de suppression d’un fichier de métadonnées pouvait laisser le stockage dans un état incohérent. [#95302](https://github.com/ClickHouse/ClickHouse/pull/95302) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Remplace Date par Date32 pour Iceberg. [#95322](https://github.com/ClickHouse/ClickHouse/pull/95322) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* L’argument password de la table function `redis` sera désormais masqué dans les logs et les tables système (par ex. : `query_log`). [#95325](https://github.com/ClickHouse/ClickHouse/pull/95325) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Corrige un bogue où des tables pouvaient être supprimées ou modifiées alors qu’une requête distribuée était encore en cours d’exécution sur celles-ci, ce qui pouvait provoquer des exceptions ou des résultats incorrects. [#95356](https://github.com/ClickHouse/ClickHouse/pull/95356) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une erreur logique dans certains cas lorsque des valeurs négatives de `LIMIT/OFFSET` sont utilisées dans des requêtes distribuées. [#95357](https://github.com/ClickHouse/ClickHouse/pull/95357) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige un bogue où clickhouse-client demandait le mot de passe deux fois lors d’une connexion via ssh. [#95372](https://github.com/ClickHouse/ClickHouse/pull/95372) ([Isak Ellmer](https://github.com/spinojara)).
* Corrige une condition de concurrence dans le stockage S3(Azure)Queue. [#95385](https://github.com/ClickHouse/ClickHouse/pull/95385) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige l’erreur de filtre prewhere provoquée par des expressions lambda dans prewhere. [#95395](https://github.com/ClickHouse/ClickHouse/pull/95395) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Corrige `optimize_syntax_fuse_functions` afin de ne pas réécrire `sum/count/avg` en `sumCount()` lorsque l’argument d’agrégation est `Nullable`. Ferme [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#95441](https://github.com/ClickHouse/ClickHouse/pull/95441) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Évite un plantage possible des requêtes distribuées en cas d’annulation. [#95466](https://github.com/ClickHouse/ClickHouse/pull/95466) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Corrige la déduplication lors du streaming depuis le moteur S3(Azure)Queue. [#95467](https://github.com/ClickHouse/ClickHouse/pull/95467) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige la mise à jour des politiques de lignes attribuées à l’utilisateur initial dans les requêtes distribuées. [#95469](https://github.com/ClickHouse/ClickHouse/pull/95469) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige la vérification des disques chiffrés sur plain\_rewritable (corrige l’erreur possible `It is not possible to register multiple plain-rewritable disks with the same object storage prefix`). [#95470](https://github.com/ClickHouse/ClickHouse/pull/95470) ([Azat Khuzhin](https://github.com/azat)).
* La table function `mergeTreeProjection` n’effectuait pas de vérification d’accès, ce qui permettait à des utilisateurs sans permission SELECT sur une table (mais disposant de permissions pour les table functions) de lire des données dans ses projections. Ce correctif ajoute la même vérification d’accès que celle déjà présente dans `mergeTreeIndex` et `mergeTreeAnalyzeIndexes`. [#95480](https://github.com/ClickHouse/ClickHouse/pull/95480) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une erreur logique possible lors de la lecture de la sous-colonne `size` à partir des sous-colonnes dynamiques des types Dynamic/JSON. [#95573](https://github.com/ClickHouse/ClickHouse/pull/95573) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’une régression dans la réplication zero-copy (expérimentale) introduite par [#94262](https://github.com/ClickHouse/ClickHouse/issues/94262), où des parts partagées pouvaient être supprimées avant que d’autres répliques aient fini de les récupérer. [#95597](https://github.com/ClickHouse/ClickHouse/pull/95597) ([filimonov](https://github.com/filimonov)).
* Correction d’un crash lors de l’application de `tupleElement` à des Arrays de JSON. Clôt [#95581](https://github.com/ClickHouse/ClickHouse/issues/95581). [#95647](https://github.com/ClickHouse/ClickHouse/pull/95647) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’une exception d’erreur logique lors de l’utilisation d’un sélecteur (`*`) à l’intérieur d’une fonction lambda dans une clause VALUES d’un JOIN avec USING. Clôt [#93675](https://github.com/ClickHouse/ClickHouse/issues/93675). [#95661](https://github.com/ClickHouse/ClickHouse/pull/95661) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction de l’erreur logique `There was an error: Cannot obtain error message` lors de l’attente d’une DDL distribuée et de la suppression concurrente de la base de données Replicated. Corrige [#95539](https://github.com/ClickHouse/ClickHouse/issues/95539). [#95664](https://github.com/ClickHouse/ClickHouse/pull/95664) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Correction de la fonction `IN`, qui renvoyait des résultats incorrects avec des valeurs `NULL` lorsque `transform_null_in` est activé. Clôt [#65776](https://github.com/ClickHouse/ClickHouse/issues/65776). [#95674](https://github.com/ClickHouse/ClickHouse/pull/95674) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Gestion correcte des types LowCardinality Nullable dans `CAST` lorsque le paramètre `cast_keep_nullable` est activé. Clôt [#95670](https://github.com/ClickHouse/ClickHouse/issues/95670). [#95747](https://github.com/ClickHouse/ClickHouse/pull/95747) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du squashing des données delta lake partitionnées. [#95773](https://github.com/ClickHouse/ClickHouse/pull/95773) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction d’une race condition sur une colonne de jointure Nullable dans les Runtime Filters. [#95775](https://github.com/ClickHouse/ClickHouse/pull/95775) ([Hechem Selmi](https://github.com/m-selmi)).
* Correction d’une possible erreur logique dans une requête avec sélecteur (`*`, `table.*`) et `analyzer_compatibility_join_using_top_level_identifier` lorsque la colonne `USING` a des types différents dans les tables et dans la liste SELECT. Clôt [#90477](https://github.com/ClickHouse/ClickHouse/issues/90477). [#95808](https://github.com/ClickHouse/ClickHouse/pull/95808) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction de bugs de sûreté mémoire dans les opérations du thread pool parallèle (backups, aggregation, distributed queries) qui pouvaient provoquer des exceptions lorsqu’une erreur survenait lors de l’ordonnancement des tâches. [#95818](https://github.com/ClickHouse/ClickHouse/pull/95818) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un crash sur `DROP WORKLOAD` lorsqu’il s’exécute en parallèle avec des queries utilisant le workload en cours de suppression. [#95856](https://github.com/ClickHouse/ClickHouse/pull/95856) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de lenteurs lors de l’interrogation des tables système avec un utilisateur disposant de grants limités sur de nombreuses bases de données. Clôt [#89371](https://github.com/ClickHouse/ClickHouse/issues/89371). [#95874](https://github.com/ClickHouse/ClickHouse/pull/95874) ([pufit](https://github.com/pufit)).
* Correction de l’exécution de `tupleElement` sur du JSON avec des chemins imbriqués, ce qui pouvait auparavant conduire à un résultat de query erroné. [#95907](https://github.com/ClickHouse/ClickHouse/pull/95907) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’une erreur `NOT_SUPPORTED` qui pouvait se produire lors de l’utilisation de l’algorithme de join `direct` avec une table MergeTree vide. [#95935](https://github.com/ClickHouse/ClickHouse/pull/95935) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’un problème où le client ne suggérait ni ne complétait automatiquement les noms d’alias pour les paramètres. Clôt [#92190](https://github.com/ClickHouse/ClickHouse/issues/92190). [#95945](https://github.com/ClickHouse/ClickHouse/pull/95945) ([phulv94](https://github.com/phulv94)).
* Correction de event\_date dans system.asynchronous\_metric\_log. [#95947](https://github.com/ClickHouse/ClickHouse/pull/95947) ([Raúl Marín](https://github.com/Algunenano)).
* Correction des skipping paths dans le type de données JSON. Auparavant, avec `JSON(SKIP path)`, toutes les clés JSON ayant le préfixe `path` étaient ignorées, y compris des clés comme `"pathpath"` ; cela pouvait donc entraîner une perte de données pour ces paths lors d’un insert. Désormais, le problème est corrigé et seule la clé `"path"` est ignorée. [#95948](https://github.com/ClickHouse/ClickHouse/pull/95948) ([Pavel Kruglov](https://github.com/Avogar)).
* Une part avec des projections inconnues ne doit pas être marquée comme perdue définitivement. [#95952](https://github.com/ClickHouse/ClickHouse/pull/95952) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Correction d’un problème où une chaîne vide devenait `NULL` dans une table `Join` avec une clé `Nullable(String)`. Clôt [#71414](https://github.com/ClickHouse/ClickHouse/issues/71414). [#96002](https://github.com/ClickHouse/ClickHouse/pull/96002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Désormais, le moteur PostgreSQL peut lire correctement `BOOLEAN[]`. Clôt [#72754](https://github.com/ClickHouse/ClickHouse/issues/72754). [#96006](https://github.com/ClickHouse/ClickHouse/pull/96006) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du format `ProtobufList` dans le cas d’une lecture depuis un fichier vide. Clôt [#70059](https://github.com/ClickHouse/ClickHouse/issues/70059). [#96007](https://github.com/ClickHouse/ClickHouse/pull/96007) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du format `ProtobufList`, qui produisait un enregistrement fantôme pour les tables vides. Clôt [#72596](https://github.com/ClickHouse/ClickHouse/issues/72596). [#96010](https://github.com/ClickHouse/ClickHouse/pull/96010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une incompatibilité de type dans la fonction `if` entre `UInt64` et `Int32`, dans un cas inhabituel impliquant des distributed queries, PREWHERE et l’inférence de type. Clôt [#70017](https://github.com/ClickHouse/ClickHouse/issues/70017). [#96012](https://github.com/ClickHouse/ClickHouse/pull/96012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des requêtes compilées par `JIT` impliquant des types `Bool`. [#96013](https://github.com/ClickHouse/ClickHouse/pull/96013) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur logique lors de la lecture d’une colonne UUID à partir d’une colonne SQLite TEXT. Clôt [#71263](https://github.com/ClickHouse/ClickHouse/issues/71263). [#96016](https://github.com/ClickHouse/ClickHouse/pull/96016) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la conversion de types du moteur SQLite pour `DateTime`, `Date`, `UUID` et d’autres types. Clôt [#73481](https://github.com/ClickHouse/ClickHouse/issues/73481). [#96017](https://github.com/ClickHouse/ClickHouse/pull/96017) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les valeurs `FixedString` étaient incorrectement échappées dans les requêtes vers des bases de données externes, SQLite et PostgreSQL. Clôt [#73519](https://github.com/ClickHouse/ClickHouse/issues/73519). Coécrit avec @jh0x. [#96019](https://github.com/ClickHouse/ClickHouse/pull/96019) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un échec d’assertion dans WindowTransform avec un décalage PRECEDING important. Clôt [#75852](https://github.com/ClickHouse/ClickHouse/issues/75852). [#96026](https://github.com/ClickHouse/ClickHouse/pull/96026) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un bug pouvant entraîner une corruption de données lorsque des async inserts concurrentes utilisent les mêmes noms de paramètre, mais avec des valeurs différentes. [#96035](https://github.com/ClickHouse/ClickHouse/pull/96035) ([Seva Potapov](https://github.com/seva-potapov)).
* Corrige la période des profileurs globaux (contrôlée par `global_profiler_real_time_period_ns` et `global_profiler_cpu_time_period_ns`). Au lieu de la valeur configurée, une valeur tronquée était utilisée, ce qui amenait le profiler à se réveiller plus souvent que prévu. [#96048](https://github.com/ClickHouse/ClickHouse/pull/96048) ([Antonio Andelic](https://github.com/antonio2368)).
* Auparavant, si le fichier de données de référence dans le fichier manifeste Iceberg pour la suppression par position était présent dans une entrée mais valait null, les bornes correctes n’étaient pas obtenues pour les fichiers de données correspondants. Cette PR corrige ce bug. [#96061](https://github.com/ClickHouse/ClickHouse/pull/96061) ([Daniil Ivanik](https://github.com/divanik)).
* Corrige la révocation des rôles par défaut. [#96103](https://github.com/ClickHouse/ClickHouse/pull/96103) ([Vitaly Baranov](https://github.com/vitlibar)).
* Corrige un use-after-free dans l’analyse d’index dans le cas rare où `use_primary_key` est désactivé et qu’un très grand nombre de disjonctions de conditions utilisent l’index. [#96112](https://github.com/ClickHouse/ClickHouse/pull/96112) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une régression du codec `Gorilla` lorsqu’une taille explicitement spécifiée ne correspond pas à la taille du type de données et que la taille du tampon est trop petite. Dans les versions précédentes, cela provoquait une exception lors de la décompression. Clôt [#78253](https://github.com/ClickHouse/ClickHouse/issues/78253). [#96118](https://github.com/ClickHouse/ClickHouse/pull/96118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Évite un interblocage dans les dictionnaires chargés lorsqu’un dictionnaire référence une table Merge qui le référence récursivement. Clôt [#78360](https://github.com/ClickHouse/ClickHouse/issues/78360). [#96120](https://github.com/ClickHouse/ClickHouse/pull/96120) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’utilisation d’une valeur non initialisée dans `formatDateTime` avec des formatteurs non fixes, comme les styles MySQL et JODA. [#96133](https://github.com/ClickHouse/ClickHouse/pull/96133) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La combinaison des settings `use_const_adaptive_granularity` et `index_granularity_bytes` (qui signifie "granularité non adaptative") entraînait un mauvais calcul du nombre de lignes à lire ainsi qu’une exception. [#96143](https://github.com/ClickHouse/ClickHouse/pull/96143) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* L’exécution d’une mutation ALTER UPDATE invalide sur des tables de type fichier sur stockage objet, telles que S3 et Azure, pouvait entraîner un déréférencement de nullptr. Clôt [#92994](https://github.com/ClickHouse/ClickHouse/issues/92994). [#96162](https://github.com/ClickHouse/ClickHouse/pull/96162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `AccessRights::contains`, qui renvoyait des résultats incorrects avec des révocations partielles. [#96170](https://github.com/ClickHouse/ClickHouse/pull/96170) ([pufit](https://github.com/pufit)).
* Corrige une collision de hachage dans le cache des conditions de requête pour les constantes de CTE repliées, ce qui pouvait conduire à un résultat de requête erroné. Clôt [#96060](https://github.com/ClickHouse/ClickHouse/issues/96060). [#96172](https://github.com/ClickHouse/ClickHouse/pull/96172) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un possible interblocage dans ProcessList. Cela peut se produire en raison d’une inversion de verrous si l’overcommit tracker mémoire se déclenche pendant l’ajout d’une tâche au vérificateur d’annulation. [#96182](https://github.com/ClickHouse/ClickHouse/pull/96182) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d’un bogue où des requêtes impliquant des jointures externes (LEFT, RIGHT ou FULL) combinées à plusieurs INNER JOIN pouvaient renvoyer des résultats incorrects en raison d’un réordonnancement illégal des jointures. Lorsque la condition ON d’une jointure externe faisait référence à des colonnes de plusieurs tables précédemment jointes, l’optimiseur ne tenait pas compte de toutes les dépendances entre tables et pouvait réordonner les jointures de manière incorrecte, ce qui produisait des lignes manquantes. Résout [#95972](https://github.com/ClickHouse/ClickHouse/issues/95972). [#96193](https://github.com/ClickHouse/ClickHouse/pull/96193) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Lorsqu’une table n’a pas de statistiques définies, ClickHouse ne doit pas essayer de les charger. Cela évite un surcoût (plus de 100 ms) lié à la vérification de l’existence des fichiers de statistiques. (issue [#96068](https://github.com/ClickHouse/ClickHouse/issues/96068)). [#96233](https://github.com/ClickHouse/ClickHouse/pull/96233) ([Han Fei](https://github.com/hanfei1991)).
* Corrige `optimize_syntax_fuse_functions` afin de ne pas réécrire `sum/count/avg` en `sumCount()` lorsque l’argument d’agrégation est `LowCardinality(Nullable)`. Résout [#95390](https://github.com/ClickHouse/ClickHouse/issues/95390). [#96239](https://github.com/ClickHouse/ClickHouse/pull/96239) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige un partition pruning incorrect pour la fonction `not IN` et `not has` dans certains cas. [#96241](https://github.com/ClickHouse/ClickHouse/pull/96241) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige `stack-use-after-scope` dans l’index de similarité vectorielle. [#96259](https://github.com/ClickHouse/ClickHouse/pull/96259) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le fait que le lanceur de tests ne reconnaissait pas les commentaires d’indication d’erreur lorsqu’une requête était précédée d’un commentaire SQL. [#96336](https://github.com/ClickHouse/ClickHouse/pull/96336) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Corrige une erreur logique dans KeyCondition lorsqu’une table a une clé primaire Nullable et que la requête utilise la fonction `coalesce`, dont le premier argument est une constante. [#96340](https://github.com/ClickHouse/ClickHouse/pull/96340) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* L’interaction entre `GROUPING SETS`, `group_by_use_nulls` et le type de données `Tuple` avec `LowCardinality` à l’intérieur pouvait produire une structure de block inattendue dans le query pipeline, ce qui entraînait une erreur logique. Ce problème est apparu après l’introduction des `Tuple` `Nullable`. [#96358](https://github.com/ClickHouse/ClickHouse/pull/96358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Il était possible de créer une table avec une expression vide `()` comme index, ce qui entraînait un accès mémoire invalide. [#96363](https://github.com/ClickHouse/ClickHouse/pull/96363) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un crash dans l’ancien analyseur en présence de JOIN et d’alias dupliqués. [#96405](https://github.com/ClickHouse/ClickHouse/pull/96405) ([Ilya Golshtein](https://github.com/ilejn)).
* Corrige l’erreur `Nested columns sizes are inconsistent with local_discriminators` due à une optimisation incorrecte du filtrage en place pour les colonnes Variant. [#96410](https://github.com/ClickHouse/ClickHouse/pull/96410) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le fait que `CREATE TABLE ... CLONE AS ...` ignorait le qualificateur complet de la table source. [#96415](https://github.com/ClickHouse/ClickHouse/pull/96415) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* Correction de l’annulation de la table function `mysql` via KILL QUERY et de l’annulation de requête (Ctrl+C) dans clickhouse-client. [#96437](https://github.com/ClickHouse/ClickHouse/pull/96437) ([Roman Vasin](https://github.com/rvasin)).
* Correction d’un livelock dans le thread de vérification des annulations pour les requêtes avec des valeurs élevées de `max_execution_time`. [#96450](https://github.com/ClickHouse/ClickHouse/pull/96450) ([Sergei Trifonov](https://github.com/serxa)).
* Correction d’une erreur logique dans certains cas lorsque `LIMIT/OFFSET` fractionnaire est utilisé dans des requêtes distribuées. [#96475](https://github.com/ClickHouse/ClickHouse/pull/96475) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un déréférencement de pointeur nul dans certaines expressions avec des fonctions lambda. [#96479](https://github.com/ClickHouse/ClickHouse/pull/96479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de résultats incorrects lorsque des colonnes `LowCardinality` sont converties en `Nullable`. [#96483](https://github.com/ClickHouse/ClickHouse/pull/96483) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un crash lors de la création d’une table Iceberg avec une clause `ORDER BY` référençant une colonne inexistante ou utilisant un argument positionnel. Ferme [#93280](https://github.com/ClickHouse/ClickHouse/issues/93280). [#96484](https://github.com/ClickHouse/ClickHouse/pull/96484) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction d’une exception de runtime filter pour des colonnes Tuple avec des sous-champs Nullable. [#96509](https://github.com/ClickHouse/ClickHouse/pull/96509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception `LOGICAL_ERROR` dans le lecteur natif Parquet V3 lorsque la colonne de filtre `PREWHERE` contient des valeurs UInt8 non booléennes. [#96594](https://github.com/ClickHouse/ClickHouse/pull/96594) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de la régénération implicite des index dans les tables répliquées lors de modifications des métadonnées. [#96600](https://github.com/ClickHouse/ClickHouse/pull/96600) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une course de données sur DROP WORKLOAD. [#96614](https://github.com/ClickHouse/ClickHouse/pull/96614) ([Sergei Trifonov](https://github.com/serxa)).
* Correction d’un bug dans les écritures vers une table Iceberg où des insertions partitionnées pouvaient produire une répartition incorrecte des données entre les fichiers de partition. [#96620](https://github.com/ClickHouse/ClickHouse/pull/96620) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction d’un `heap-use-after-free` dans `CREATE TABLE` avec des contraintes. [#96669](https://github.com/ClickHouse/ClickHouse/pull/96669) ([Nikita Taranov](https://github.com/nickitat)).
* Validation de la witness version dans bech32 afin d’éviter un débordement de tampon. [#96671](https://github.com/ClickHouse/ClickHouse/pull/96671) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de `system.tables`, qui renvoyait des erreurs lorsqu’un REST catalog de data lake était créé avec un paramètre `auth_header` non valide. [#96680](https://github.com/ClickHouse/ClickHouse/pull/96680) ([Han Fei](https://github.com/hanfei1991)).
* Correction de `min(timestamp)`, qui renvoyait l’époque (`1970-01-01`) via `_minmax_count_projection` après une fusion TTL lorsque toutes les lignes d’un block étaient filtrées. [#96703](https://github.com/ClickHouse/ClickHouse/pull/96703) ([Raquel Barbadillo](https://github.com/rbarbadillo)).
* Amélioration de la validation du paramètre `iceberg_metadata_file_path` pour empêcher la traversée de chemin et garantir que le fichier de métadonnées spécifié se trouve dans le répertoire de la table. [#96754](https://github.com/ClickHouse/ClickHouse/pull/96754) ([Daniil Ivanik](https://github.com/divanik)).
* Correction d’un crash dans `ifNull` avec un argument `Variant` utilisé dans `GROUP BY`. [#96790](https://github.com/ClickHouse/ClickHouse/pull/96790) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction des collisions de clés de cache entre les tables avec le paramètre `table_disk=1`. [#96818](https://github.com/ClickHouse/ClickHouse/pull/96818) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Correction du blocage du thread de purge de MemoryWorker à cause d’une condition de concurrence. [#96819](https://github.com/ClickHouse/ClickHouse/pull/96819) ([Antonio Andelic](https://github.com/antonio2368)).
* Les données contenant des informations d’authentification ne sont plus journalisées dans les catalogues Iceberg. [#96831](https://github.com/ClickHouse/ClickHouse/pull/96831) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction du code de sortie de clickhouse-client après une erreur du serveur. [#96841](https://github.com/ClickHouse/ClickHouse/pull/96841) ([Vitaly Baranov](https://github.com/vitlibar)).
* Les requêtes avec des `CROSS JOIN` et des répliques parallèles activées pouvaient renvoyer un résultat incorrect. Corrige [#74337](https://github.com/ClickHouse/ClickHouse/issues/74337). [#96848](https://github.com/ClickHouse/ClickHouse/pull/96848) ([Igor Nikonov](https://github.com/devcrafter)).
* Correction de l’échec des requêtes `ALTER TABLE DROP COLUMN` après qu’une lightweight update avait déjà été effectuée sur la même colonne. [#96861](https://github.com/ClickHouse/ClickHouse/pull/96861) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’un dépassement de pile (crash) lors de la création de sauvegardes basées sur des archives (`.zip`, `.tzst`) sur un disque de stockage objet `plain_rewritable`. [#96872](https://github.com/ClickHouse/ClickHouse/pull/96872) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un crash du serveur lorsque la sauvegarde échoue en raison d’un disque plein ou d’autres erreurs d’E/S sur le système de fichiers de destination. [#96873](https://github.com/ClickHouse/ClickHouse/pull/96873) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de `EXCEPT ALL` et `INTERSECT ALL`, qui ignoraient les multiplicités de lignes et se comportaient comme leurs équivalents `DISTINCT`. [#96876](https://github.com/ClickHouse/ClickHouse/pull/96876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception `std::terminate` dans `indexOfAssumeSorted` lorsqu’elle est appelée avec des types incompatibles (par exemple, un tableau `IPv4` avec une valeur de recherche entière). [#96877](https://github.com/ClickHouse/ClickHouse/pull/96877) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `Bad cast from type DB::ColumnNullable to DB::ColumnString` lors de l’utilisation de fonctions de fenêtre avec `group_by_use_nulls = 1` et CUBE/ROLLUP/GROUPING SETS. [#96878](https://github.com/ClickHouse/ClickHouse/pull/96878) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de résultats incorrects lorsque des expressions compilées par JIT convertissent `DateTime` en `DateTime64` (par exemple, dans `CASE`/`if`/`multiIf` avec des types DateTime mixtes). La valeur était réinterprétée au lieu d’être correctement mise à l’échelle, ce qui produisait des horodatages erronés une fois la compilation de l’expression activée. [#96879](https://github.com/ClickHouse/ClickHouse/pull/96879) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception d’erreur logique dans `CoalescingMergeTree` lorsqu’une expression de skip index produit une colonne constante (par exemple, `bloom_filter` sur `ifNotFinite(1, c0)` pour une colonne entière). [#96880](https://github.com/ClickHouse/ClickHouse/pull/96880) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un numéro de port erroné dans le message d’erreur lors d’une connexion accidentelle en HTTP au port du protocole natif avec TLS activé. [#96881](https://github.com/ClickHouse/ClickHouse/pull/96881) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction du fait que `SETTINGS` par sous-requête n’était pas appliqué aux fonctions de table comme `file` dans les CTE et les sous-requêtes. [#96882](https://github.com/ClickHouse/ClickHouse/pull/96882) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une fuite de mémoire des objets BIO lors de la lecture de certificats X509. [#96885](https://github.com/ClickHouse/ClickHouse/pull/96885) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'exception `LOGICAL_ERROR` dans l'analyseur de requêtes lorsqu'une expression lambda est passée là où une valeur concrète est attendue (par exemple comme argument accumulateur de `arrayFold`). [#96892](https://github.com/ClickHouse/ClickHouse/pull/96892) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'exception `ColumnNullable is not compatible with original` lors du transtypage de types imbriqués complexes (Array de Tuple Nullable contenant une Map avec des valeurs Enum Nullable). [#96924](https://github.com/ClickHouse/ClickHouse/pull/96924) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une situation de concurrence lors du chargement parallèle d'un dictionnaire `HASHED` partitionné, qui pouvait occasionnellement empêcher le chargement de certaines lignes. [#96953](https://github.com/ClickHouse/ClickHouse/pull/96953) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une situation de concurrence entre `REPLACE PARTITION` et les mutations en arrière-plan, qui pouvait rendre simultanément visibles les anciennes et les nouvelles données après le remplacement. [#96955](https://github.com/ClickHouse/ClickHouse/pull/96955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la fonction `arrayJoin`, qui produisait des lignes en double lorsqu'elle était utilisée avec INNER JOIN et la clause WHERE, en raison de l'optimisation partielle de descente de prédicat qui poussait à tort sous un JOIN les filtres contenant `arrayJoin`. [#96989](https://github.com/ClickHouse/ClickHouse/pull/96989) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un plantage (SEGFAULT) dans `clearCaches`, causé par le fait que `BlockIO::operator=` ne déplaçait pas `query_metadata_cache`, ce qui entraînait la destruction prématurée de snapshots de stockage mis en cache et une utilisation après libération du stockage `MergeTreeData`. [#96995](https://github.com/ClickHouse/ClickHouse/pull/96995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un échec d'assertion dans `IfTransformStringsToEnumPass` lorsque la fonction `if` ou `transform` renvoie `Nullable(String)` (par exemple avec `GROUP BY ... WITH CUBE` et `group_by_use_nulls = true`). [#97002](https://github.com/ClickHouse/ClickHouse/pull/97002) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l'écriture de données incorrectes lors de `INSERT ... SELECT` avec `UNION ALL` et `JOIN`, où des colonnes de chaînes constantes pouvaient recevoir des valeurs erronées après la fusion des blocs. [#97019](https://github.com/ClickHouse/ClickHouse/pull/97019) ([Hasyimi Bahrudin](https://github.com/hasyimibhar)).
* Corrige l'exception `assert_cast` (ou une corruption silencieuse des données dans les builds de release) lors de la création des statistiques de colonnes après qu'un `ALTER TABLE MODIFY COLUMN` a modifié le type de la colonne. [#97027](https://github.com/ClickHouse/ClickHouse/pull/97027) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige des lectures de mémoire non initialisée dans Azure Blob Storage, le protocole SSH et les interfaces Arrow Flight. [#97053](https://github.com/ClickHouse/ClickHouse/pull/97053) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige des cas où les index affectaient le résultat des requêtes avec row policy/PREWHERE et FINAL. [#97076](https://github.com/ClickHouse/ClickHouse/pull/97076) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige la situation de concurrence résiduelle entre `REPLACE PARTITION` et les mutations en arrière-plan dans les tables `MergeTree`, qui pouvait faire réapparaître d'anciennes données. [#97105](https://github.com/ClickHouse/ClickHouse/pull/97105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les index implicites avec des colonnes alias et effectue une validation complète avant leur création. [#97115](https://github.com/ClickHouse/ClickHouse/pull/97115) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige une erreur logique dans `FunctionVariantAdaptor` avec des fonctions nécessitant des arguments constants, comme `arrayROCAUC`. [#97116](https://github.com/ClickHouse/ClickHouse/pull/97116) ([Bharat Nallan](https://github.com/bharatnc)).
* Corrige des mutations bloquées lorsque `PartCheckThread` remet en file d’attente un `GET_PART` pour une part déjà mutée, en laissant des entrées fantômes dans `parts_to_do`. [#97162](https://github.com/ClickHouse/ClickHouse/pull/97162) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’estimation du nombre de lignes dans le plan d’exécution pour des sous-requêtes avec `ORDER BY ... LIMIT`, ce qui pouvait amener l’optimiseur à choisir un ordre de jointure sous-optimal. [#97193](https://github.com/ClickHouse/ClickHouse/pull/97193) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige l’exception `LOGICAL_ERROR` dans `FunctionVariantAdaptor` lorsqu’une fonction opérant sur des colonnes Variant renvoie le type `Nothing`, ce qui peut se produire avec des tableaux vides dans des requêtes `UNION ALL`. [#97213](https://github.com/ClickHouse/ClickHouse/pull/97213) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une data race lors des opérations de copie multipart vers S3 (par ex. lors d’un `BACKUP`/`RESTORE` vers S3), qui pouvait provoquer des exceptions en cas d’accès concurrent. [#97227](https://github.com/ClickHouse/ClickHouse/pull/97227) ([Azat Khuzhin](https://github.com/azat)).
* Corrige l’exception `LOGICAL_ERROR` lorsque `arrayJoin` dans la clause `WHERE` référence des colonnes des deux côtés d’un `JOIN`. [#97239](https://github.com/ClickHouse/ClickHouse/pull/97239) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’exception `LOGICAL_ERROR` lors de la lecture de la sous-colonne `.size` d’un `Nullable(String)` sparse dans un Tuple avec PREWHERE. [#97264](https://github.com/ClickHouse/ClickHouse/pull/97264) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige l’exception "Le nombre de lignes dans le chunk lazy ne correspond pas au nombre d’offsets" dans `LazyMaterializingTransform` lors de la lecture de tables avec une granularité d’index non adaptative (`index_granularity_bytes = 0`) en utilisant `ORDER BY ... LIMIT`. [#97270](https://github.com/ClickHouse/ClickHouse/pull/97270) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le fait que `SYSTEM RESTART REPLICA` fasse disparaître une table de la base de données lorsque sa recréation échoue avec une exception sans lien avec ZooKeeper (par ex. memory limit), ce qui provoquait des incohérences d’empreinte de métadonnées dans `DatabaseReplicated`. [#97276](https://github.com/ClickHouse/ClickHouse/pull/97276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le champ `readonly` dans `system.merge_tree_settings` reflète désormais correctement que certains paramètres MergeTree (par ex. `index_granularity`) sont inconditionnellement en lecture seule. [#97277](https://github.com/ClickHouse/ClickHouse/pull/97277) ([Robert Schulze](https://github.com/rschu1ze)).
* Corrige un crash lors de l’optimisation de `count()` sur des tables `MergeTree` lorsque le snapshot de stockage a été créé sans données. [#97281](https://github.com/ClickHouse/ClickHouse/pull/97281) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un crash possible lors de la résolution des noms de fonctions à partir des informations de débogage pour les stack traces. [#97294](https://github.com/ClickHouse/ClickHouse/pull/97294) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une erreur logique avec analyzer\_compatibility\_join\_using\_top\_level\_identifier et les colonnes ALIAS. Ferme [#96228](https://github.com/ClickHouse/ClickHouse/issues/96228). [#97297](https://github.com/ClickHouse/ClickHouse/pull/97297) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige l’exception `LOGICAL_ERROR` dans `applyOrder` lors de l’utilisation de colonnes indexées en texte avec la clause `QUALIFY`. [#97313](https://github.com/ClickHouse/ClickHouse/pull/97313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La table système `system.functions` affiche désormais `categories = 'Internal'` pour les fonctions internes, au lieu de `categories = ''`. [#97315](https://github.com/ClickHouse/ClickHouse/pull/97315) ([Robert Schulze](https://github.com/rschu1ze)).
* Une requête comportant une chaîne de RIGHT JOIN avec les répliques parallèles activées peut produire un résultat incorrect. Corrige [#74341](https://github.com/ClickHouse/ClickHouse/issues/74341). [#97316](https://github.com/ClickHouse/ClickHouse/pull/97316) ([Igor Nikonov](https://github.com/devcrafter)).
* Corrige des erreurs `TABLE_UUID_MISMATCH` intempestives pouvant survenir avec les vues matérialisées actualisables et dans d'autres scénarios où des tables sont renommées. [#97323](https://github.com/ClickHouse/ClickHouse/pull/97323) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un segfault dans la sauvegarde `StorageKeeperMap`, dû à une utilisation après libération d'un pointeur de stockage devenu orphelin dans un lot de sauvegarde lazy. [#97336](https://github.com/ClickHouse/ClickHouse/pull/97336) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la fonction `exists` avec une sous-requête scalaire dans un `ALTER UPDATE/DELETE` lorsque `mutations_execute_subqueries_on_initiator` est activé. La sous-requête scalaire était évaluée incorrectement, ce qui pouvait entraîner une erreur ou une commande de mutation corrompue, rendant la table impossible à charger au redémarrage suivant du serveur. [#97347](https://github.com/ClickHouse/ClickHouse/pull/97347) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Corrige l'exception logique `Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8)))` lors de la comparaison de NULL avec une colonne Variant contenant des types LowCardinality. [#97379](https://github.com/ClickHouse/ClickHouse/pull/97379) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une possible condition de concurrence lorsque `EXCHANGE TABLES` est exécuté en parallèle avec le query cache shardé activé. [#97411](https://github.com/ClickHouse/ClickHouse/pull/97411) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige l'exception `LOGICAL_ERROR` lors de la conversion d'Array vers `QBit`, lorsque `nullable_source` d'un wrapper `Tuple` externe remplace la colonne de tableau convertie par un type de colonne incompatible. Clôt [#97389](https://github.com/ClickHouse/ClickHouse/issues/97389). [#97413](https://github.com/ClickHouse/ClickHouse/pull/97413) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une incohérence de formatting aller-retour de l'AST pour les littéraux de tuple avec alias entre parenthèses ; par exemple, `(('a', 'b') AS x)` était incorrectement reformaté en `tuple(('a', 'b') AS x)`. [#97418](https://github.com/ClickHouse/ClickHouse/pull/97418) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une exception lors d'insertions asynchrones avec déduplication lorsqu'un échec de parsing produisait un bloc vide de zéro ligne. [#97460](https://github.com/ClickHouse/ClickHouse/pull/97460) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige l'exception "Number of rows in lazy chunk does not match number of offsets" dans `LazyMaterializingTransform` lors de la lecture de tables avec granularité d'index non adaptative (`index_granularity_bytes = 0`) en utilisant `ORDER BY ... LIMIT`. [#97482](https://github.com/ClickHouse/ClickHouse/pull/97482) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les paramètres d'insert pour Iceberg. Ajoute un alias pour le paramètre `allow_experimental_insert_into_iceberg`. [#97483](https://github.com/ClickHouse/ClickHouse/pull/97483) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige `ACCESS_DENIED` pour les utilisateurs dépourvus de la permission `CREATE TEMPORARY TABLE` lorsque l'optimisation `optimize_inverse_dictionary_lookup` réécrit les prédicats `dictGet(...)`. ClickHouse ignore désormais cette réécriture et exécute l'expression d'origine. Clôt [#97269](https://github.com/ClickHouse/ClickHouse/issues/97269). [#97484](https://github.com/ClickHouse/ClickHouse/pull/97484) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un échec d’assertion (exception dans les builds de débogage/sanitizer) dans `Set` et `MergeTreeIndexSet` lors du traitement de colonnes comportant des sous-colonnes `sparse` internes (par ex. des colonnes `Tuple` issues de parts MergeTree avec des profils de sérialisation `sparse` différents). [#97493](https://github.com/ClickHouse/ClickHouse/pull/97493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un possible use-after-free dans StorageKafka2. [#97520](https://github.com/ClickHouse/ClickHouse/pull/97520) ([Bharat Nallan](https://github.com/bharatnc)).
* Correction de `INTO OUTFILE` avec `TRUNCATE` et le paramètre `into_outfile_create_parent_directories` lorsque le chemin de sortie contient des répertoires. [#97549](https://github.com/ClickHouse/ClickHouse/pull/97549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’erreur `BAD_ARGUMENTS` lors de requêtes sur des tables avec des expressions lambda dans des colonnes ALIAS via la table function `merge()`, avec l’analyseur activé. [#97551](https://github.com/ClickHouse/ClickHouse/pull/97551) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `system.zookeeper_info` lorsque le zxid de Keeper vaut 0. [#97553](https://github.com/ClickHouse/ClickHouse/pull/97553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une possible erreur logique dans le dictionnaire `ip_trie` lorsque le type de la clé n’est pas String. [#97555](https://github.com/ClickHouse/ClickHouse/pull/97555) ([Bharat Nallan](https://github.com/bharatnc)).
* Correction de l’authentification OAuth du catalogue REST, qui ne fonctionnait pas pour le `RestCatalog` de base (elle ne fonctionnait que pour des catalogues dérivés comme `OneLakeCatalog`). Cela a cassé le catalogue REST par défaut après l’introduction du catalogue BigLake. [#97561](https://github.com/ClickHouse/ClickHouse/pull/97561) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Les fonctions de géométrie (`perimeterSpherical`, `areaSpherical`, etc.) acceptent désormais des sous-types géométriques individuels (`Polygon`, `Ring`, `Point`, etc.) en plus du type Variant `Geometry`. [#97571](https://github.com/ClickHouse/ClickHouse/pull/97571) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction de l’exception `LOGICAL_ERROR` lors de l’utilisation de `isNull`/`isNotNull` sur des sous-colonnes de types `Nullable(Tuple(... Nullable(T) ...))`. Clôt [#97224](https://github.com/ClickHouse/ClickHouse/issues/97224). [#97582](https://github.com/ClickHouse/ClickHouse/pull/97582) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’un déréférencement de pointeur nul lors de l’application de patch parts pendant les lightweight updates. [#97583](https://github.com/ClickHouse/ClickHouse/pull/97583) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `BaseSettings::readBinary` transmet à `field_infos[]` l’index renvoyé par `accessor.find` sans vérifier la valeur sentinelle « non trouvé » (c.-à-d. `-1`), ce qui peut provoquer un accès hors limites à un `std::vector`. Le problème a été détecté grâce au hardening de libcxx. Cela s’est probablement produit lors de la désérialisation du query plan lorsqu’un serveur plus récent envoie un paramètre inconnu à un serveur plus ancien. La méthode de lecture basée sur les chaînes gérait déjà correctement ce cas ; il manquait simplement la même vérification dans `readBinary`. [#97585](https://github.com/ClickHouse/ClickHouse/pull/97585) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de résultats incorrects pour des queries `UNION ALL` dans lesquelles une branche avait un predicate constant faux : la branche lisait à tort des données au lieu de ne rien renvoyer. [#97620](https://github.com/ClickHouse/ClickHouse/pull/97620) ([Bharat Nallan](https://github.com/bharatnc)).
* Correction de l’échec de `IN (col)` avec une référence à une seule colonne, qui produisait l’erreur `UNSUPPORTED_METHOD`. [#97646](https://github.com/ClickHouse/ClickHouse/pull/97646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception d’erreur logique lors de `GROUP BY ... WITH ROLLUP/CUBE` lorsque les clés incluent `LowCardinality(Nullable(...))` à l’intérieur de `Nullable(Tuple(...))`. [#97647](https://github.com/ClickHouse/ClickHouse/pull/97647) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une incohérence de formatage de l’AST pour `NOT (1, 1, 1)` pouvant provoquer `LOGICAL_ERROR` dans les versions de débogage. [#97653](https://github.com/ClickHouse/ClickHouse/pull/97653) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une exception de `keeper-converter` lorsqu’il rencontre des fichiers journaux de transactions ZooKeeper vides. [#97673](https://github.com/ClickHouse/ClickHouse/pull/97673) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* ClickHouse peut être compilé avec clang-23 (master). [#95578](https://github.com/ClickHouse/ClickHouse/pull/95578) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le forçage de `is_local` à false lorsque `bind_host` est configuré, et le remplace par un test d’intégration. Suite de [#74741](https://github.com/ClickHouse/ClickHouse/pull/74741). [#93109](https://github.com/ClickHouse/ClickHouse/pull/93109) [#96018](https://github.com/ClickHouse/ClickHouse/pull/96018) ([Zhigao Hong](https://github.com/zghong)).
* Tests de stress : corrige les tests de stress et de mise à niveau dans la CI. Ignore les tags `no-{build}`. Ajoute une randomisation de compatibilité. [#94693](https://github.com/ClickHouse/ClickHouse/pull/94693) ([Nikita Fomichev](https://github.com/fm4v)).
* Publie le binaire parser\_memory\_profiler issu du build. Cet outil permet d’analyser la consommation mémoire de l’AST. [#95826](https://github.com/ClickHouse/ClickHouse/pull/95826) ([Ilya Yatsishin](https://github.com/qoega)).
* Ajoute l’option `--symbolize` à l’outil `parser_memory_profiler`, qui génère des fichiers `.heap.sym` avec les symboles résolus dans les résultats. [#96477](https://github.com/ClickHouse/ClickHouse/pull/96477) ([Ilya Yatsishin](https://github.com/qoega)).
* Épingle les images Docker tierces utilisées dans les tests d’intégration à des versions spécifiques. [#96500](https://github.com/ClickHouse/ClickHouse/pull/96500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Restaure la possibilité de lier `OpenSSL` dynamiquement. Ce n’est pas recommandé et ce n’est utilisé par aucun build de production, mais l’option existe toujours pour les passionnés. [#96506](https://github.com/ClickHouse/ClickHouse/pull/96506) ([Govind R Nair](https://github.com/Revertionist)).
* Réduit la plage `magic_enum` de \[-100, 1000] à la plage par défaut \[-128, 127] en utilisant une spécialisation par type pour `Coordination::OpNum`, ce qui améliore le temps de compilation. [#96632](https://github.com/ClickHouse/ClickHouse/pull/96632) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Supprime des templates C++ inutiles des classes Function afin de réduire les temps de compilation. [#96646](https://github.com/ClickHouse/ClickHouse/pull/96646) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Déplace la génération de `StorageSystemLicenses` à l’étape de configuration afin d’améliorer le parallélisme de compilation. [#96697](https://github.com/ClickHouse/ClickHouse/pull/96697) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Parallélise l’analyse des licences. [#96727](https://github.com/ClickHouse/ClickHouse/pull/96727) ([Raúl Marín](https://github.com/Algunenano)).
* Ajoute un test fonctionnel stateless pour la prise en charge du protocole SSH. [#96996](https://github.com/ClickHouse/ClickHouse/pull/96996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute Kafka 3.9.0 à l’infrastructure des tests fonctionnels stateless, ce qui permet de tester directement les table engines Kafka et Kafka2 en utilisant ClickHouse Keeper comme ZooKeeper. Six nouveaux tests stateless couvrent les bases de la production/consommation, les virtual columns, INSERT, plusieurs formats, la gestion des messages corrompus et le stockage des offsets basé sur Keeper. [#96997](https://github.com/ClickHouse/ClickHouse/pull/96997) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute un workflow CI pour compiler une toolchain clang optimisée avec PGO+BOLT. [#96991](https://github.com/ClickHouse/ClickHouse/pull/96991) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Utilise dans la CI le build LLVM/Clang optimisé avec PGO, ce qui devrait accélérer la compilation de 20 à 30 %. [#97031](https://github.com/ClickHouse/ClickHouse/pull/97031) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Remplace les fonctions mathématiques de glibc par des implémentations de llvm-libc. [#90151](https://github.com/ClickHouse/ClickHouse/pull/90151) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Met à jour Boost de 1.83 à 1.90, corrigeant un échec d'assertion `devector` dans les compilations de débogage. [#97037](https://github.com/ClickHouse/ClickHouse/pull/97037) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Met à jour `postgres` vers REL\_18\_1. [#95189](https://github.com/ClickHouse/ClickHouse/pull/95189) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `libexpat` 2.7.3. [#95218](https://github.com/ClickHouse/ClickHouse/pull/95218) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `OpenSSL` 3.5.5. [#95345](https://github.com/ClickHouse/ClickHouse/pull/95345) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `simdjson` v4.2.4. [#97129](https://github.com/ClickHouse/ClickHouse/pull/97129) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `libarchive` 3.8.5. [#97131](https://github.com/ClickHouse/ClickHouse/pull/97131) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `fast_float` v8.2.3. [#97133](https://github.com/ClickHouse/ClickHouse/pull/97133) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Utilise `abseil-cpp` 20260107.1 et `s2geometry` v0.13.1. [#97134](https://github.com/ClickHouse/ClickHouse/pull/97134) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Fait passer `libxml2` à la version 2.15.1. [#95574](https://github.com/ClickHouse/ClickHouse/pull/95574) ([Robert Schulze](https://github.com/rschu1ze)).
* Met à niveau 7 images Docker de tests d'intégration Tier-3, en remplaçant des images de base en fin de vie ou supprimées par des versions actuellement prises en charge. [#97314](https://github.com/ClickHouse/ClickHouse/pull/97314) ([Rahul](https://github.com/motsc)).
* Ajoute des requêtes de benchmark TPC-DS. [#97349](https://github.com/ClickHouse/ClickHouse/pull/97349) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Remplace les options cmake individuelles de jeu d'instructions x86 (`ENABLE_SSSE3`, `ENABLE_AVX2`, `NO_SSE3_OR_HIGHER`, `ARCH_NATIVE`, etc.) par une unique option numérique `X86_ARCH_LEVEL` (`1`/`2`/`3`/`4`), alignée sur les niveaux standard de microarchitecture x86-64 déjà utilisés par le système de dispatch à l'exécution. [#97354](https://github.com/ClickHouse/ClickHouse/pull/97354) ([Raúl Marín](https://github.com/Algunenano)).
* Évite d'instancier des variantes de template `division_by_nullable=true` pour les opérations autres que la division dans `FunctionBinaryArithmetic`, ce qui réduit le temps de compilation et la taille du binaire. [#97496](https://github.com/ClickHouse/ClickHouse/pull/97496) ([Raúl Marín](https://github.com/Algunenano)).
* Réduit le volume d'inclusions de `Exception.h` en le supprimant d'en-têtes largement utilisés comme `typeid_cast.h`, `assert_cast.h`, `Context_fwd.h`, `IDataType.h` et divers en-têtes `Column`. [#97497](https://github.com/ClickHouse/ClickHouse/pull/97497) ([Raúl Marín](https://github.com/Algunenano)).
* Utilise toujours les en-têtes `compiler-rt` fournis avec le projet (interfaces Sanitizer et XRay) au lieu de ceux du compilateur hôte, et compile par défaut les bibliothèques `compiler-rt` à partir des sources. [#97499](https://github.com/ClickHouse/ClickHouse/pull/97499) ([Raúl Marín](https://github.com/Algunenano)).
* Éviter d’inclure les en-têtes boost/multiprecision dans `wide_integer_impl.h` sur les plateformes disposant d’un `long double` suffisant, ce qui améliore le temps de compilation. [#96633](https://github.com/ClickHouse/ClickHouse/pull/96633) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Mettre en place le job de couverture de code LLVM et l’activer dans un premier temps pour la branche master. [#90952](https://github.com/ClickHouse/ClickHouse/pull/90952) ([Alexey Bakharew](https://github.com/alexbakharew)).
* Activer le durcissement rapide de libcxx pour les builds de release. Cela est principalement nécessaire pour les vérifications de dépassement de limites. D’après les résultats des tests de performance, aucun impact notable sur les performances n’est attendu. [#94757](https://github.com/ClickHouse/ClickHouse/pull/94757) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

<div id="261">
  ### Version 26.1 de ClickHouse, 2026-01-29. [Présentation](https://presentations.clickhouse.com/2026-release-26.1/), [Vidéo](https://www.youtube.com/watch?v=fWuYt4M0xE4)
</div>

<div id="267-backward-incompatible-change">
  #### Changement incompatible avec les versions précédentes
</div>

* Corrige un formatage incohérent causé par une substitution incorrecte d'alias dans le formateur. Cela clôt [#82833](https://github.com/ClickHouse/ClickHouse/issues/82833). Cela clôt [#82832](https://github.com/ClickHouse/ClickHouse/issues/82832). Cela clôt [#68296](https://github.com/ClickHouse/ClickHouse/issues/68296). Cette modification peut être rétro-incompatible : lorsque l'analyseur est désactivé, certaines requêtes CREATE VIEW avec IN référençant un alias ne peuvent pas être traitées. Pour éviter cette incompatibilité, activez l'analyseur (il est activé par défaut depuis la version 24.3). [#82838](https://github.com/ClickHouse/ClickHouse/pull/82838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les codecs `DEFLATE_QPL` et `ZSTD_QAT` ont été supprimés. Il est conseillé aux utilisateurs de convertir les données existantes compressées avec `DEFLATE_QPL` ou `ZSTD_QAT` vers un autre codec avant la mise à niveau. Notez que, pour utiliser ces codecs, les paramètres `enable_deflate_qpl_codec` et `enable_zstd_qat_codec` devaient être activés. [#92150](https://github.com/ClickHouse/ClickHouse/pull/92150) ([Robert Schulze](https://github.com/rschu1ze)).
* Améliore le débogage des UDF en activant la capture de stderr dans `system.query_log.exception`. Auparavant, stderr des UDF n'était consigné que dans des fichiers et n'était pas exposé dans les journaux de requêtes, ce qui rendait le débogage impossible. Désormais, stderr déclenche des exceptions par défaut et est entièrement accumulé (jusqu'à 1 Mo) avant qu'une exception ne soit levée, de sorte que les traces d'appels Python complètes et les messages d'erreur apparaissent dans `system.query_log.exception` pour faciliter le dépannage. [#92209](https://github.com/ClickHouse/ClickHouse/pull/92209) ([Xu Jia](https://github.com/XuJia0210)).
* Une liste de colonnes vide dans la clause `JOIN USING ()` est désormais considérée comme une erreur de syntaxe. Auparavant, cela était censé produire `INVALID_JOIN_ON_EXPRESSION` pendant l'exécution de la requête. Dans certains cas, comme lors d'une jointure avec le moteur `Join`, cela menait à `LOGICAL_ERROR`, clôt [#82502](https://github.com/ClickHouse/ClickHouse/issues/82502). [#92371](https://github.com/ClickHouse/ClickHouse/pull/92371) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Utilise par défaut une correspondance partielle pour SKIP REGEXP dans le type JSON. Clôt [#79250](https://github.com/ClickHouse/ClickHouse/issues/79250). [#92847](https://github.com/ClickHouse/ClickHouse/pull/92847) ([Pavel Kruglov](https://github.com/Avogar)).
* Annule "Allow INSERT into simple ALIAS columns" (annule ClickHouse/ClickHouse[#84154](https://github.com/ClickHouse/ClickHouse/issues/84154)). Cela ne fonctionne pas avec les formats personnalisés et n'est protégé par aucun paramètre. [#92849](https://github.com/ClickHouse/ClickHouse/pull/92849) ([Azat Khuzhin](https://github.com/azat)).
* Ajoute un paramètre pour lever une erreur si un catalogue de data lake n'a pas accès au stockage objet. [#93606](https://github.com/ClickHouse/ClickHouse/pull/93606) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Le moteur de base de données `Lazy` a été supprimé et n'est plus disponible. Clôt [#91231](https://github.com/ClickHouse/ClickHouse/issues/91231). [#93627](https://github.com/ClickHouse/ClickHouse/pull/93627) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Supprime le mode `transposed_with_wide_view` de `metric_log` : il est inutilisable en raison d'un bug. Il n'est plus possible de définir `system.metric_log` avec ce mode. Cela annule partiellement [#78412](https://github.com/ClickHouse/ClickHouse/issues/78412). [#93867](https://github.com/ClickHouse/ClickHouse/pull/93867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* L'ordonnancement CPU des workloads est désormais préemptif par défaut. Voir le paramètre serveur `cpu_slot_preemption`. [#94060](https://github.com/ClickHouse/ClickHouse/pull/94060) ([Sergei Trifonov](https://github.com/serxa)).
* Échapper les noms de fichiers d’index pour éviter des parts corrompues. Avec ce changement, ClickHouse ne pourra plus charger les index dont le nom contient des caractères non ASCII et qui ont été créés par des versions précédentes. Pour gérer ce cas, vous pouvez utiliser le paramètre MergeTree `escape_index_filenames`. [#94079](https://github.com/ClickHouse/ClickHouse/pull/94079) ([Raúl Marín](https://github.com/Algunenano)).
* Les paramètres de format `exact_rows_before_limit`, `rows_before_aggregation`, `cross_to_inner_join_rewrite`, `regexp_dict_allow_hyperscan`, `regexp_dict_flag_case_insensitive`, `regexp_dict_flag_dotall` et `dictionary_use_async_executor` ont été convertis en paramètres ordinaires (non liés au format). Il s’agit d’un changement purement interne, sans effet visible pour l’utilisateur, sauf dans le cas (peu probable) où vous auriez spécifié l’un de ces paramètres dans des définitions de moteurs de table Iceberg ou DeltaLake ou Kafka ou S3 ou S3Queue ou Azure ou Hive ou RabbitMQ ou Set ou FileLog ou NATS. Dans ce cas, ces paramètres étaient auparavant ignorés ; désormais, de telles définitions génèrent une erreur. [#94106](https://github.com/ClickHouse/ClickHouse/pull/94106) ([Robert Schulze](https://github.com/rschu1ze)).
* Les fonctions `joinGet/joinGetOrNull` imposent désormais les privilèges `SELECT` sur la table Join sous-jacente. Après ce changement, l’exécution de `joinGet('db.table', 'column', key)` exige que l’utilisateur dispose du privilège `SELECT` à la fois sur les colonnes de clé définies dans la table Join et sur la colonne d’attribut récupérée. Les requêtes ne disposant pas de ces privilèges échoueront avec `ACCESS_DENIED`. Pour migrer, accordez les privilèges nécessaires à l’aide de `GRANT SELECT ON db.join_table TO user` pour un accès à toute la table, ou de `GRANT SELECT(key_col, attr_col) ON db.join_table TO user` pour un accès au niveau des colonnes. Ce changement affecte tous les utilisateurs et applications qui s’appuient sur `joinGet`/`joinGetOrNull` lorsque des privilèges `SELECT` explicites n’étaient pas configurés auparavant. [#94307](https://github.com/ClickHouse/ClickHouse/pull/94307) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Vérifier `SHOW COLUMNS` pour les requêtes `CREATE TABLE ... AS ...`. Auparavant, `SHOW TABLES` était vérifié, ce qui correspond à un privilège incorrect pour ce type de vérification d’autorisation. [#94556](https://github.com/ClickHouse/ClickHouse/pull/94556) ([pufit](https://github.com/pufit)).
* Rendre le format de sortie `Hash` indépendant de la taille des blocks. [#94503](https://github.com/ClickHouse/ClickHouse/pull/94503) ([Alexey Milovidov](https://github.com/alexey-milovidov)). Notez que cela modifie les valeurs de hachage en sortie par rapport aux versions précédentes.

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

* API HTTP et interface Web intégrée pour ClickHouse Keeper. [#78181](https://github.com/ClickHouse/ClickHouse/pull/78181) ([pufit](https://github.com/pufit) et [speeedmaster](https://github.com/speeedmaster)).
* La déduplication d’async insert fonctionne désormais avec les vues matérialisées dépendantes. Lorsqu’une collision sur `block&#95;id` se produit, le bloc d’origine est filtré pour supprimer les lignes associées à ce `block&#95;id`, puis les lignes restantes sont transformées à l’aide de toutes les requêtes `select` pertinentes des vues matérialisées, ce qui reconstruit le bloc d’origine sans les lignes en conflit. [#89140](https://github.com/ClickHouse/ClickHouse/pull/89140) ([Sema Checherinda](https://github.com/CheSema)). Il est désormais possible d’utiliser la déduplication avec les async inserts lorsque des vues matérialisées sont impliquées. [#93957](https://github.com/ClickHouse/ClickHouse/pull/93957) ([Sema Checherinda](https://github.com/CheSema)).
* Introduction d’une nouvelle syntaxe et d’une nouvelle infrastructure afin de simplifier et d’étendre la fonctionnalité d’index de projection. Cela fait suite à [https://github.com/ClickHouse/ClickHouse/pull/81021](https://github.com/ClickHouse/ClickHouse/pull/81021). [#91844](https://github.com/ClickHouse/ClickHouse/pull/91844) ([Amos Bird](https://github.com/amosbird)).
* Ajout de la prise en charge des index de texte pour les colonnes `Array`. [#89895](https://github.com/ClickHouse/ClickHouse/pull/89895) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Active `use_variant_as_common_type` par défaut, ce qui permet d’utiliser des types incompatibles dans un `Array`, dans des requêtes `UNION` et dans les branches de `if`/`multiIf`/`case`. [#90677](https://github.com/ClickHouse/ClickHouse/pull/90677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nouvelle table système `zookeeper_info`. Implémente [#88014](https://github.com/ClickHouse/ClickHouse/issues/88014). [#90809](https://github.com/ClickHouse/ClickHouse/pull/90809) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Prise en charge du type `Variant` dans toutes les fonctions. [#90900](https://github.com/ClickHouse/ClickHouse/pull/90900) ([Bharat Nallan](https://github.com/bharatnc)).
* Ajoute une métrique `ClickHouse_Info` au endpoint Prometheus `/metrics`, contenant principalement des informations de version, afin de pouvoir créer des graphiques suivant l’évolution détaillée des versions au fil du temps. [#91125](https://github.com/ClickHouse/ClickHouse/pull/91125) ([Christoph Wurm](https://github.com/cwurm)).
* Introduction d’une nouvelle commande Keeper à quatre lettres, `rcfg`, qui permet de modifier la configuration du cluster. Cette commande offre plus de possibilités de modification de la configuration que la requête standard `reconfigure`. La commande prend une chaîne `json` comme argument. L’ensemble des octets envoyés à l’interface TCP doit avoir la forme suivante : `rcfg{json_string_length_big_endian}{json_string}`. Voici un exemple de commande : `{"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}`. [#91354](https://github.com/ClickHouse/ClickHouse/pull/91354) ([alesapin](https://github.com/alesapin)).
* Ajoute la fonction `reverseBySeparator`, qui inverse l’ordre des sous-chaînes d’une chaîne séparées par un séparateur donné. Clôt [#91463](https://github.com/ClickHouse/ClickHouse/issues/91463). [#91780](https://github.com/ClickHouse/ClickHouse/pull/91780) ([Xuewei Wang](https://github.com/Sallery-X)).
* Ajoute le nouveau paramètre `max_insert_block_size_bytes`, qui permet de contrôler plus finement la formation des blocs insérés. [#92833](https://github.com/ClickHouse/ClickHouse/pull/92833) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Il est possible d’exécuter des requêtes DDL avec la clause `ON CLUSTER` pour une base de données Replicated si le paramètre `ignore_on_cluster_for_replicated_database` est activé. Dans ce cas, le nom du cluster est ignoré. [#92872](https://github.com/ClickHouse/ClickHouse/pull/92872) ([Kirill](https://github.com/kirillgarbar)).
* Implémentation de la fonction `mergeTreeAnalyzeIndexes`. [#92954](https://github.com/ClickHouse/ClickHouse/pull/92954) ([Azat Khuzhin](https://github.com/azat)).
* Ajout du nouveau paramètre `use_primary_key`. Définissez-le sur `false` pour désactiver le pruning des granules basé sur la clé primaire. [#93319](https://github.com/ClickHouse/ClickHouse/pull/93319) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Ajout de la fonction de table `icebergLocalCluster`. [#93323](https://github.com/ClickHouse/ClickHouse/pull/93323) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Ajout de la fonction `cosineDistanceTransposed`, qui approxime la [distance cosinus](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance) entre deux points. [#93621](https://github.com/ClickHouse/ClickHouse/pull/93621) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajout de la colonne `files` à la table system.parts, qui affiche le nombre de fichiers dans chaque data part. [#94337](https://github.com/ClickHouse/ClickHouse/pull/94337) ([Match](https://github.com/gayanMatch)).
* Ajout d’un scheduler max-min fair pour le contrôle de la concurrence. Il offre une meilleure équité en cas de forte sursouscription, lorsque de nombreuses requêtes se disputent un nombre limité de CPU slots. Les requêtes de courte durée ne sont pas pénalisées par les requêtes de longue durée qui ont accumulé davantage de slots au fil du temps. Activé via la valeur `max_min_fair` du paramètre serveur `concurrent_threads_scheduler`. [#94732](https://github.com/ClickHouse/ClickHouse/pull/94732) ([Sergei Trifonov](https://github.com/serxa)).
* Ajout de la possibilité, pour le client ClickHouse, de remplacer le TLS SNI lors de la connexion au serveur. [#89761](https://github.com/ClickHouse/ClickHouse/pull/89761) ([Matt Klein](https://github.com/mattklein123)).
* Prise en charge des tables temporaires dans les appels de fonction `joinGet`. [#92973](https://github.com/ClickHouse/ClickHouse/pull/92973) ([Eduard Karacharov](https://github.com/korowa)).
* Prise en charge des vecteurs de suppression dans le moteur de table `DeltaLake`. [#93852](https://github.com/ClickHouse/ClickHouse/pull/93852) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Prise en charge des vecteurs de suppression pour `deltaLakeCluster`. [#94365](https://github.com/ClickHouse/ClickHouse/pull/94365) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Prise en charge de Google Cloud Storage pour les data lakes. [#93866](https://github.com/ClickHouse/ClickHouse/pull/93866) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="267-experimental-feature">
  #### Fonctionnalité expérimentale
</div>

* Passage de `QBit` du statut Experimental à Beta. [#93816](https://github.com/ClickHouse/ClickHouse/pull/93816) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajout de la prise en charge de `Nullable(Tuple)`. Définissez `allow_experimental_nullable_tuple_type = 1` pour l’activer. [#89643](https://github.com/ClickHouse/ClickHouse/pull/89643) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Prise en charge du REST catalog Paimon, dans la continuité de [https://github.com/ClickHouse/ClickHouse/pull/84423](https://github.com/ClickHouse/ClickHouse/pull/84423). [#92011](https://github.com/ClickHouse/ClickHouse/pull/92011) ([JIaQi Tang](https://github.com/JiaQiTang98)).

<div id="267-performance-improvement">
  #### Amélioration des performances
</div>

* Le paramètre `use_skip_indexes_on_data_read` est désormais activé par défaut. Ce paramètre permet un filtrage en flux, en même temps que la lecture, ce qui améliore les performances des requêtes et le temps de démarrage. [#93407](https://github.com/ClickHouse/ClickHouse/pull/93407) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Améliore les performances de `DISTINCT` sur les colonnes `LowCardinality`. Clôt [#5917](https://github.com/ClickHouse/ClickHouse/issues/5917). [#91639](https://github.com/ClickHouse/ClickHouse/pull/91639) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Optimise la fonction d'agrégation `distinctJSONPaths` afin qu'elle lise uniquement les chemins JSON à partir des data parts, et non la JSON column entière. [#92196](https://github.com/ClickHouse/ClickHouse/pull/92196) ([Pavel Kruglov](https://github.com/Avogar)).
* Davantage de filtres sont pushed down dans les JOIN. [#85556](https://github.com/ClickHouse/ClickHouse/pull/85556) ([Nikita Taranov](https://github.com/nickitat)).
* Prend en charge davantage de cas de push down à partir de la condition ON du join lorsque le filtre n'utilise des entrées que d'un seul côté. Prend en charge les joins `ANY`, `SEMI`, `ANTI`. [#92584](https://github.com/ClickHouse/ClickHouse/pull/92584) ([Dmitry Novik](https://github.com/novikd)).
* Permet d'utiliser des sets équivalents pour push down les filtres dans `SEMI JOIN`. Clôt [#85239](https://github.com/ClickHouse/ClickHouse/issues/85239). [#92837](https://github.com/ClickHouse/ClickHouse/pull/92837) ([Dmitry Novik](https://github.com/novikd)).
* Évite de lire le côté gauche d'un hash join lorsque le côté droit est vide. Auparavant, le côté gauche était lu jusqu'au premier block non vide, ce qui pouvait entraîner beaucoup de travail en cas de filtrage ou d'agrégation importants. [#94062](https://github.com/ClickHouse/ClickHouse/pull/94062) ([Alexander Gololobov](https://github.com/davenger)).
* Utilisation de la méthode "fastrange" (Daniel Lemire) pour partitionner les données au sein du query pipeline. Cela peut améliorer le tri parallèle et les JOIN. [#93080](https://github.com/ClickHouse/ClickHouse/pull/93080) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Améliore les performances des fonctions de fenêtre lorsque PARTITION BY correspond à la sorting key ou en est un préfixe. [#87299](https://github.com/ClickHouse/ClickHouse/pull/87299) ([Nikita Taranov](https://github.com/nickitat)).
* Le filtre externe est pushed down dans les vues, ce qui permet d'appliquer PREWHERE sur les nœuds locaux et distants. Résout [#88189](https://github.com/ClickHouse/ClickHouse/issues/88189). [#88316](https://github.com/ClickHouse/ClickHouse/pull/88316) ([Igor Nikonov](https://github.com/devcrafter)).
* Met en œuvre des compilations JIT pour davantage de fonctions. Clôt [#73509](https://github.com/ClickHouse/ClickHouse/issues/73509). [#88770](https://github.com/ClickHouse/ClickHouse/pull/88770) ([Alexey Milovidov](https://github.com/alexey-milovidov) avec [Taiyang Li](https://github.com/taiyang-li)).
* Si un skip index utilisé dans une requête `FINAL` porte sur une colonne faisant partie de la primary key, l'étape supplémentaire consistant à vérifier l'intersection de la primary key dans les autres parts n'est pas nécessaire et n'est désormais plus effectuée. Résout [#85897](https://github.com/ClickHouse/ClickHouse/issues/85897). [#93899](https://github.com/ClickHouse/ClickHouse/pull/93899) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Optimise les performances et l'utilisation mémoire pour les `LIMIT` et `OFFSET` fractionnaires. [#91167](https://github.com/ClickHouse/ClickHouse/pull/91167) ([Ahmed Gouda](https://github.com/0xgouda)).
* Corrige l'utilisation d'une logique de lecture aléatoire plus rapide pour le mécanisme de prefetch du Parquet reader V3. Clôt [#90890](https://github.com/ClickHouse/ClickHouse/issues/90890). [#91435](https://github.com/ClickHouse/ClickHouse/pull/91435) ([Arsen Muk](https://github.com/arsenmuk)).
* Amélioration des performances de `icebergCluster`. Closes [#91462](https://github.com/ClickHouse/ClickHouse/issues/91462). [#91537](https://github.com/ClickHouse/ClickHouse/pull/91537) ([Yang Jiang](https://github.com/Ted-Jiang)).
* Ne pas filtrer sur les colonnes virtuelles avec des filtres constants. [#91588](https://github.com/ClickHouse/ClickHouse/pull/91588) ([c-end](https://github.com/c-end)).
* Réduction de l’utilisation mémoire des INSERT/fusions avec les wide parts pour les tables très larges grâce à l’activation de tampons d’écriture adaptatifs. Ajout de la prise en charge des tampons d’écriture adaptatifs pour les disques chiffrés. [#92250](https://github.com/ClickHouse/ClickHouse/pull/92250) ([Azat Khuzhin](https://github.com/azat)).
* Amélioration des performances de la recherche en texte intégral avec le text index et le tokenizer `sparseGrams`, en réduisant le nombre de tokens recherchés dans l’index. [#93078](https://github.com/ClickHouse/ClickHouse/pull/93078) ([Anton Popov](https://github.com/CurtizJ)).
* La fonction `isValidASCII` a été optimisée pour les résultats positifs, c.-à-d. pour les valeurs d’entrée entièrement ASCII. [#93347](https://github.com/ClickHouse/ClickHouse/pull/93347) ([Robert Schulze](https://github.com/rschu1ze)).
* L’optimisation de lecture dans l’ordre détecte désormais lorsque les colonnes ORDER BY sont constantes du fait des conditions WHERE, ce qui permet des lectures efficaces en ordre inverse. Cela profite aux requêtes multi-tenant comme `WHERE tenant='42' ORDER BY tenant, event_time DESC`, qui peuvent désormais utiliser InReverseOrder au lieu de nécessiter un tri complet.". [#94103](https://github.com/ClickHouse/ClickHouse/pull/94103) ([matanper](https://github.com/matanper)).
* Introduction d’une classe AST Enum spécialisée pour stocker les paramètres de valeur sous forme de paires (chaîne, entier) au lieu d’enfants ASTLiteral, afin d’optimiser la consommation mémoire. [#94178](https://github.com/ClickHouse/ClickHouse/pull/94178) ([Ilya Yatsishin](https://github.com/qoega)).
* Analyse d’index distribuée sur plusieurs répliques. Bénéfique pour le stockage partagé et les très grands volumes de données dans le cluster. Cela s’applique à SharedMergeTree (ClickHouse Cloud) et pourrait s’appliquer à d’autres types de tables MergeTree sur stockage partagé. [#86786](https://github.com/ClickHouse/ClickHouse/pull/86786) ([Azat Khuzhin](https://github.com/azat)).
* Réduction du surcoût des runtime filters de jointure en les désactivant dans les cas suivants : - trop de bits sont définis dans le bloom filter - trop peu de lignes sont filtrées à l’exécution. [#91578](https://github.com/ClickHouse/ClickHouse/pull/91578) ([Alexander Gololobov](https://github.com/davenger)).
* Utilisation d’un tampon en mémoire pour l’entrée des sous-requêtes corrélées afin d’éviter de l’évaluer plusieurs fois. Fait partie de [#79890](https://github.com/ClickHouse/ClickHouse/issues/79890). [#91205](https://github.com/ClickHouse/ClickHouse/pull/91205) ([Dmitry Novik](https://github.com/novikd)).
* Autoriser toutes les répliques à récupérer les plages orphelines dans la lecture en parallel replicas. Cela améliore l’équilibrage de charge et réduit la latence de fin de distribution. [#91374](https://github.com/ClickHouse/ClickHouse/pull/91374) ([zoomxi](https://github.com/zoomxi)).
* L’agrégation/le tri/la jointure externes respectent désormais le paramètre de requête `temporary_files_codec` dans tous les contextes. Correction de l’absence de profile events pour grace hash join. [#92388](https://github.com/ClickHouse/ClickHouse/pull/92388) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Renforcement de la détection de l’utilisation mémoire des requêtes pour le spilling to disk pendant l’agrégation/le tri. [#92500](https://github.com/ClickHouse/ClickHouse/pull/92500) ([Azat Khuzhin](https://github.com/azat)).
* Estimation du nombre total de lignes et des statistiques NDV (nombre de valeurs distinctes) des colonnes clés d’agrégation. [#92812](https://github.com/ClickHouse/ClickHouse/pull/92812) ([Alexander Gololobov](https://github.com/davenger)).
* Optimisation de la compression des listes de postings avec simdcomp. [#92871](https://github.com/ClickHouse/ClickHouse/pull/92871) ([Peng Jian](https://github.com/fastio)).
* Refonte du traitement du mode Ordered de S3Queue avec des buckets. Cela devrait également améliorer les performances en réduisant le nombre de requêtes vers Keeper. [#92889](https://github.com/ClickHouse/ClickHouse/pull/92889) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Les fonctions `mapContainsKeyLike` et `mapContainsValueLike` peuvent désormais exploiter un text index sur `mapKeys()` ou `mapValues()`, respectivement. [#93049](https://github.com/ClickHouse/ClickHouse/pull/93049) ([Michael Jarrett](https://github.com/EmeraldShift)).
* Réduction de l’utilisation mémoire sur les systèmes non Linux (activation de la purge immédiate des dirty pages de jemalloc). [#93360](https://github.com/ClickHouse/ClickHouse/pull/93360) ([Eduard Karacharov](https://github.com/korowa)).
* Forcer la purge des Arena de jemalloc lorsque le ratio entre la taille des dirty pages et `max_server_memory_usage` dépasse `memory_worker_purge_dirty_pages_threshold_ratio`. [#93500](https://github.com/ClickHouse/ClickHouse/pull/93500) ([Eduard Karacharov](https://github.com/korowa)).
* Réduction de l’utilisation mémoire pour l’AST. [#93601](https://github.com/ClickHouse/ClickHouse/pull/93601) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Dans certains cas, nous avons constaté que ClickHouse ne respectait pas la memory limit lors de la lecture d’une table. Ce comportement a été corrigé. [#93715](https://github.com/ClickHouse/ClickHouse/pull/93715) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Activer par défaut les extensions Keeper `CHECK_STAT` et `TRY_REMOVE`. [#93886](https://github.com/ClickHouse/ClickHouse/pull/93886) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Analyser les bornes inférieure et supérieure des noms de fichiers correspondant aux suppressions par position à partir des entrées du manifest file Iceberg afin d’améliorer la sélection des data files correspondants. [#93980](https://github.com/ClickHouse/ClickHouse/pull/93980) ([Daniil Ivanik](https://github.com/divanik)).
* Ajouter deux paramètres supplémentaires pour contrôler le nombre maximal de subcolumns dynamiques dans une JSON column. Le premier est le MergeTree setting `merge_max_dynamic_subcolumns_in_compact_part` (similaire à `merge_max_dynamic_subcolumns_in_wide_part`, déjà ajouté), qui limite le nombre de subcolumns dynamiques créées lors d’un merge vers une compact part. Le second est le paramètre au niveau de la query `max_dynamic_subcolumns_in_json_type_parsing`, qui limite le nombre de subcolumns dynamiques créées lors du parsing des données JSON, ce qui permettra de définir la limite on insert. [#94184](https://github.com/ClickHouse/ClickHouse/pull/94184) ([Pavel Kruglov](https://github.com/Avogar)).
* Légère optimisation du squashing des JSON columns dans certains cas. [#94247](https://github.com/ClickHouse/ClickHouse/pull/94247) ([Pavel Kruglov](https://github.com/Avogar)).
* Réduire la taille des queue du thread pool sur la base du retour d’expérience en production. Ajouter une vérification explicite de la consommation mémoire avant toute lecture de données depuis MergeTree. [#94692](https://github.com/ClickHouse/ClickHouse/pull/94692) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* S’assurer que le scheduler privilégie le thread MemoryWorker en cas de pénurie de CPU, car il protège le processus ClickHouse contre une menace existentielle. [#94864](https://github.com/ClickHouse/ClickHouse/pull/94864) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Exécuter la purge des dirty pages de jemalloc dans un thread distinct du thread principal de MemoryWorker. Si la purge est lente, cela pourrait retarder les mises à jour de l’utilisation de la RSS, ce qui pourrait entraîner l’arrêt du processus par manque de mémoire. Introduction d’une nouvelle config, `memory_worker_purge_total_memory_threshold_ratio`, pour démarrer la purge des dirty pages en fonction du ratio d’utilisation mémoire totale. [#94902](https://github.com/ClickHouse/ClickHouse/pull/94902) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="267-improvement">
  #### Amélioration
</div>

* `system.blob_storage_log` est désormais disponible pour Azure Blob Storage. [#93105](https://github.com/ClickHouse/ClickHouse/pull/93105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Implémente `blob_storage_log` pour Local et HDFS. Corrige une erreur lorsque `S3Queue` utilisait autre chose que le nom du disque pour la journalisation dans `blob_storage_log`. Ajoute la colonne `error_code` à `blob_storage_log`. Scinde le fichier de configuration des tests pour simplifier les tests en local. [#93106](https://github.com/ClickHouse/ClickHouse/pull/93106) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` et `clickhouse-local` mettront désormais en évidence les groupes de chiffres (milliers, millions, etc.) au sein des littéraux numériques pendant la saisie. Cela clôt [#93100](https://github.com/ClickHouse/ClickHouse/issues/93100). [#93108](https://github.com/ClickHouse/ClickHouse/pull/93108) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajoute la prise en charge, dans `clickhouse-client`, des arguments de ligne de commande avec une espace autour du signe égal. Clôt [#93077](https://github.com/ClickHouse/ClickHouse/issues/93077). [#93174](https://github.com/ClickHouse/ClickHouse/pull/93174) ([Cole Smith](https://github.com/colesmith54)).
* Avec `<interactive_history_legacy_keymap>true</interactive_history_legacy_keymap>`, le client CLI peut désormais revenir à Ctrl-R pour la recherche classique comme auparavant, tandis que Ctrl-T effectue une recherche approximative. [#87785](https://github.com/ClickHouse/ClickHouse/pull/87785) ([Larry Snizek](https://github.com/larry-cdn77)).
* L’instruction de vidage des caches `SYSTEM DROP [...] CACHE` donnait la fausse impression qu’elle désactivait le cache. ClickHouse prend désormais en charge l’instruction `SYSTEM CLEAR [...] CACHE`, plus explicite. L’ancienne syntaxe reste disponible. [#93727](https://github.com/ClickHouse/ClickHouse/pull/93727) ([Pranav Tiwari](https://github.com/pranavt84)).
* Prend en charge plusieurs colonnes comme clé primaire dans `EmbeddedRocksDB`. Clôt [#32819](https://github.com/ClickHouse/ClickHouse/issues/32819). [#33917](https://github.com/ClickHouse/ClickHouse/pull/33917) ([usurai](https://github.com/usurai)).
* Il est désormais possible d’utiliser un `IN` non constant pour des scalaires (requêtes comme `val1 NOT IN if(cond, val2, val3)`). [#93495](https://github.com/ClickHouse/ClickHouse/pull/93495) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Empêche la propagation des en-têtes `x-amz-server-side-encryption` vers les requêtes S3 `HeadObject`, `UploadPart` et `CompleteMultipartUpload`, car elles ne sont pas prises en charge. [#64577](https://github.com/ClickHouse/ClickHouse/pull/64577) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* Ajoute le suivi du partitionnement Hive pour le mode ordered dans S3Queue. Résout [#71161](https://github.com/ClickHouse/ClickHouse/issues/71161). [#81040](https://github.com/ClickHouse/ClickHouse/pull/81040) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Optimise la réservation d’espace dans le cache du système de fichiers. `FileCache::collectCandidatesForEviction` sera exécuté sans verrou unique. [#82764](https://github.com/ClickHouse/ClickHouse/pull/82764) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Prend en charge une stratégie composite de rotation (taille + temps) pour le journal du serveur. [#87620](https://github.com/ClickHouse/ClickHouse/pull/87620) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* Le client CLI peut désormais spécifier `<warnings>false</warnings>` au lieu de l’option de ligne de commande `--no-warnings`. [#87783](https://github.com/ClickHouse/ClickHouse/pull/87783) ([Larry Snizek](https://github.com/larry-cdn77)).
* Ajout de la prise en charge de la fonction d'agrégation `avg` avec des valeurs Date, DateTime et Time comme arguments. Clôt [#82267](https://github.com/ClickHouse/ClickHouse/issues/82267). [#87845](https://github.com/ClickHouse/ClickHouse/pull/87845) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* L'optimisation `use_join_disjunctions_push_down` est activée par défaut. [#89313](https://github.com/ClickHouse/ClickHouse/pull/89313) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge d'un plus grand nombre de moteurs de table et de types de sources de données dans les sous-requêtes corrélées. Clôt [#80775](https://github.com/ClickHouse/ClickHouse/issues/80775). [#90175](https://github.com/ClickHouse/ClickHouse/pull/90175) ([Dmitry Novik](https://github.com/novikd)).
* Si le schéma d'une vue paramétrée est spécifié explicitement, il est affiché. Clôt [#88875](https://github.com/ClickHouse/ClickHouse/issues/88875), [#81385](https://github.com/ClickHouse/ClickHouse/issues/81385). [#90220](https://github.com/ClickHouse/ClickHouse/pull/90220) ([Grigorii Sokolik](https://github.com/GSokol)).
* Gère correctement les écarts dans les entrées de log de Keeper lorsque les logs se situent avant le dernier index validé. [#90403](https://github.com/ClickHouse/ClickHouse/pull/90403) ([Antonio Andelic](https://github.com/antonio2368)).
* Amélioration du paramètre `min_free_disk_bytes_to_perform_insert` afin qu'il fonctionne correctement avec les volumes JBOD. [#90878](https://github.com/ClickHouse/ClickHouse/pull/90878) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* Permet de spécifier le paramètre `storage_class_name` dans les collections nommées pour le moteur de table `S3` et la fonction de table `s3`. [#91926](https://github.com/ClickHouse/ClickHouse/pull/91926) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Prise en charge de l'accès à un ZooKeeper auxiliaire via `system.zookeeper`. [#92092](https://github.com/ClickHouse/ClickHouse/pull/92092) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Ajout de nouvelles métriques pour Keeper : les profile events `KeeperChangelogWrittenBytes`, `KeeperChangelogFileSyncMicroseconds`, `KeeperSnapshotWrittenBytes` et `KeeperSnapshotFileSyncMicroseconds`, ainsi que les histogram metrics `KeeperBatchSizeElements` et `KeeperBatchSizeBytes`. [#92149](https://github.com/ClickHouse/ClickHouse/pull/92149) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajout d'un nouveau paramètre, `trace_profile_events_list`, qui limite le tracing avec `trace_profile_event` à la liste spécifiée de noms d'événements. Cela permet une collecte de données plus précise sur les charges de travail importantes. [#92298](https://github.com/ClickHouse/ClickHouse/pull/92298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Prise en charge de SYSTEM NOTIFY FAILPOINT pour les failpoints pouvant être mis en pause. - Prise en charge de SYSTEM WAIT FAILPOINT fp PAUSE/RESUME. [#92368](https://github.com/ClickHouse/ClickHouse/pull/92368) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Ajout de la colonne `creation` (`implicit`/`explicit`) à `system.data_skipping_indices`. [#92378](https://github.com/ClickHouse/ClickHouse/pull/92378) ([Raúl Marín](https://github.com/Algunenano)).
* Permet de transmettre à la source du dictionnaire la description des colonnes des tables dynamiques YTsaurus. [#92391](https://github.com/ClickHouse/ClickHouse/pull/92391) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Dans [#63985](https://github.com/ClickHouse/ClickHouse/pull/63985), nous avons permis de spécifier, port par port, tous les paramètres nécessaires à la configuration de TLS (voir [protocoles composables](https://clickhouse.com/docs/operations/settings/composable-protocols)), de sorte qu'il n'est plus nécessaire de s'appuyer sur une configuration TLS globale. Cependant, l'implémentation exige encore implicitement la présence d'une section de configuration globale `openSSL.server`, ce qui pose problème dans les configurations où des paramètres TLS différents sont requis selon le port. Par exemple, dans les déploiements keeper-in-server, des configurations TLS distinctes sont nécessaires pour la communication inter-keeper et pour les connexions du clickhouse client. [#92457](https://github.com/ClickHouse/ClickHouse/pull/92457) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Introduction d'un nouveau paramètre `input_format_binary_max_type_complexity`, qui limite le nombre total de nœuds de type pouvant être décodés au format binaire afin d'éviter les payloads malveillants. [#92519](https://github.com/ClickHouse/ClickHouse/pull/92519) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Afficher les tâches en cours d'exécution dans `system.background_schedule_pool{,_log}`. Ajout de la documentation. [#92587](https://github.com/ClickHouse/ClickHouse/pull/92587) ([Azat Khuzhin](https://github.com/azat)).
* Exécuter la requête en cours dans la recherche Ctrl+R du client si aucune correspondance n'est trouvée dans l'historique. [#92749](https://github.com/ClickHouse/ClickHouse/pull/92749) ([Azat Khuzhin](https://github.com/azat)).
* Prise en charge de `EXPLAIN indices = 1` comme alias de `EXPLAIN indexes = 1`. Ferme [#92483](https://github.com/ClickHouse/ClickHouse/issues/92483). [#92774](https://github.com/ClickHouse/ClickHouse/pull/92774) ([Pranav Tiwari](https://github.com/pranavt84)).
* Le lecteur Parquet permet désormais de lire des colonnes Tuple ou Map au format JSON : `select x from file(f.parquet, auto, 'x JSON')` fonctionne même si le type de la colonne `x` dans `f.parquet` est tuple ou map. [#92864](https://github.com/ClickHouse/ClickHouse/pull/92864) ([Michael Kolupaev](https://github.com/al13n321)).
* Prise en charge des tuples vides dans le lecteur Parquet. [#92868](https://github.com/ClickHouse/ClickHouse/pull/92868) ([Michael Kolupaev](https://github.com/al13n321)).
* Basculement vers une copie en lecture-écriture pour Azure Blob Storage lorsque la copie native échoue avec BadRequest (par ex. liste de blocs invalide). Auparavant, cela ne se produisait qu'en cas d'erreur Unauthorized, observée lors de la copie d'un blob vers différents comptes de stockage. Mais nous observons aussi parfois l'erreur "The specified block list is invalid". La condition a donc été mise à jour pour basculer vers la lecture-écriture pour tous les échecs de copie native. [#92888](https://github.com/ClickHouse/ClickHouse/pull/92888) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Correction du throttling de l'endpoint de métadonnées EC2 lors de l'exécution d'un grand nombre de requêtes S3 concurrentes avec des credentials de profil d'instance EC2. Auparavant, chaque requête créait son propre `AWSInstanceProfileCredentialsProvider`, ce qui entraînait des requêtes concurrentes vers le service de métadonnées EC2 et pouvait provoquer des timeouts ainsi que des erreurs `HTTP response code: 403`. Désormais, le fournisseur de credentials est mis en cache et partagé entre toutes les requêtes. [#92891](https://github.com/ClickHouse/ClickHouse/pull/92891) ([Sav](https://github.com/sberss)).
* Refonte du paramètre `insert_select_deduplicate` afin de préserver la rétrocompatibilité. [#92951](https://github.com/ClickHouse/ClickHouse/pull/92951) ([Sema Checherinda](https://github.com/CheSema)).
* Journaliser les tâches d'arrière-plan plus lentes que la moyenne (`background_schedule_pool_log.duration_threshold_milliseconds=30`) afin d'éviter une journalisation excessive. [#92965](https://github.com/ClickHouse/ClickHouse/pull/92965) ([Azat Khuzhin](https://github.com/azat)).
* Dans les versions précédentes, certains noms de fonctions C++ s’affichaient de manière incorrecte (« mangled ») dans `system.trace_log` et `system.symbols`, et la fonction `demangle` ne les traitait pas correctement. Corrige [#93074](https://github.com/ClickHouse/ClickHouse/issues/93074). [#93075](https://github.com/ClickHouse/ClickHouse/pull/93075) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Introduction du paramètre de sauvegarde `backup_data_from_refreshable_materialized_view_targets` pour ne pas sauvegarder les cibles des vues matérialisées actualisables. Les RMV avec une stratégie d’actualisation APPEND sont toujours sauvegardées. [#93076](https://github.com/ClickHouse/ClickHouse/pull/93076) ([Julia Kartseva](https://github.com/jkartseva)). [#93658](https://github.com/ClickHouse/ClickHouse/pull/93658) ([Julia Kartseva](https://github.com/jkartseva))
* Utilisation d’informations minimales de débogage au lieu de l’absence totale d’informations de débogage pour les unités de traduction volumineuses, comme les fonctions. [#93079](https://github.com/ClickHouse/ClickHouse/pull/93079) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la prise en charge de la compatibilité MinIO au SDK C++ AWS S3 via l’implémentation d’une correspondance des codes d’erreur pour les erreurs spécifiques à MinIO. Cette modification permet à ClickHouse de gérer correctement les erreurs du serveur MinIO et de les réessayer lors de l’utilisation de déploiements MinIO au lieu d’AWS S3, ce qui améliore la fiabilité pour les utilisateurs qui exécutent du stockage objet sur des clusters MinIO autohébergés. [#93082](https://github.com/ClickHouse/ClickHouse/pull/93082) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Écriture de profils jemalloc symbolisés (ce qui supprime la nécessité d’un binaire lors de la génération du profil du tas). [#93099](https://github.com/ClickHouse/ClickHouse/pull/93099) ([Azat Khuzhin](https://github.com/azat)).
* Restauration de l’outil `clickhouse git-import` : il ne fonctionnait plus avec des commits volumineux et invalides. Voir [https://presentations.clickhouse.com/2020-matemarketing/](https://presentations.clickhouse.com/2020-matemarketing/). [#93202](https://github.com/ClickHouse/ClickHouse/pull/93202) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ne plus afficher les mots de passe du stockage URL dans le query log. [#93245](https://github.com/ClickHouse/ClickHouse/pull/93245) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Prise en charge du type `Geometry` pour `flipCoordinates`. [#93303](https://github.com/ClickHouse/ClickHouse/pull/93303) ([Bharat Nallan](https://github.com/bharatnc)).
* Amélioration de l’UX de SYSTEM INSTRUMENT ADD/REMOVE : utilisation de littéraux `String` pour les noms de fonctions, application du correctif à toutes les fonctions correspondantes et possibilité d’utiliser function\_name dans `REMOVE`. [#93345](https://github.com/ClickHouse/ClickHouse/pull/93345) ([Pablo Marcos](https://github.com/pamarcos)).
* Ajout d’un nouveau paramètre `materialize_statistics_on_merge` qui active ou désactive la matérialisation des statistiques lors de la fusion. La valeur par défaut est `1`. [#93379](https://github.com/ClickHouse/ClickHouse/pull/93379) ([Han Fei](https://github.com/hanfei1991)).
* ClickHouse peut désormais analyser `SELECT` sans parenthèses dans les requêtes `DESCRIBE SELECT`. Corrige [#58382](https://github.com/ClickHouse/ClickHouse/issues/58382). [#93429](https://github.com/ClickHouse/ClickHouse/pull/93429) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajout d’une randomisation probabiliste des vérifications de validité du cache. [#93439](https://github.com/ClickHouse/ClickHouse/pull/93439) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Ajout du paramètre `type_json_allow_duplicated_key_with_literal_and_nested_object` pour autoriser les chemins dupliqués dans JSON lorsque l’un correspond à un littéral et l’autre à un objet imbriqué, par ex. `{"a" : 42, "a" : {"b" : 42}}`. Certaines données ont pu être créées avant l’ajout de cette restriction sur les chemins dupliqués dans [https://github.com/ClickHouse/ClickHouse/pull/79317](https://github.com/ClickHouse/ClickHouse/pull/79317), et toute manipulation ultérieure de ces données peut désormais provoquer des erreurs. Avec ce paramètre, ces anciennes données peuvent encore être utilisées sans erreur. [#93604](https://github.com/ClickHouse/ClickHouse/pull/93604) ([Pavel Kruglov](https://github.com/Avogar)).
* N'affichez plus les valeurs des types simples sur des lignes distinctes dans Pretty JSON. [#93836](https://github.com/ClickHouse/ClickHouse/pull/93836) ([Pavel Kruglov](https://github.com/Avogar)).
* Lorsqu’il y a beaucoup d’instructions `alter table ... modify setting ...`, il peut arriver que le verrou ne soit pas acquis pendant 5 secondes. Il vaut mieux renvoyer `timeout` que `logical error`. [#93856](https://github.com/ClickHouse/ClickHouse/pull/93856) ([Han Fei](https://github.com/hanfei1991)).
* Éviter une sortie excessive en cas d’erreur de syntaxe. Avant ce changement, l’intégralité du script SQL était affichée, ce qui pouvait contenir un grand nombre de requêtes. [#93876](https://github.com/ClickHouse/ClickHouse/pull/93876) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Effectuer un calcul correct de la taille en octets de la requête `check` avec statistiques dans Keeper. [#93907](https://github.com/ClickHouse/ClickHouse/pull/93907) ([Mikhail Artemenko](https://github.com/Michicosun)).
* Ajout du paramètre `use_hash_table_stats_for_join_reordering` pour contrôler si les statistiques de taille des tables de hachage à l’exécution sont utilisées pour réordonner les jointures. Ce paramètre est activé par défaut, ce qui préserve le comportement existant de `collect_hash_table_stats_during_joins`. [#93912](https://github.com/ClickHouse/ClickHouse/pull/93912) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Les utilisateurs peuvent désormais consulter partiellement les paramètres globaux imbriqués du server dans la table `system.server_settings` (par ex. `logger.level`). Cela ne couvre que les paramètres à structure fixe (pas de listes, d’énumérations, de répétitions, etc.). [#94001](https://github.com/ClickHouse/ClickHouse/pull/94001) ([Hechem Selmi](https://github.com/m-selmi)).
* `QBit` peut désormais être comparé pour l’égalité. [#94078](https://github.com/ClickHouse/ClickHouse/pull/94078) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Lorsque Keeper détecte un snapshot corrompu ou des changelogs incohérents, lever une exception au lieu d’interrompre manuellement ou de nettoyer automatiquement les fichiers. Cela devrait rendre le comportement de Keeper plus sûr, en reposant sur une intervention manuelle. [#94168](https://github.com/ClickHouse/ClickHouse/pull/94168) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction des résidus potentiels laissés en cas d’échec de `CREATE TABLE`. [#94174](https://github.com/ClickHouse/ClickHouse/pull/94174) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’un accès à de la mémoire non initialisée (un bug dans OpenSSL) lorsqu’une clé TLS protégée par mot de passe est utilisée. [#94182](https://github.com/ClickHouse/ClickHouse/pull/94182) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Mise à niveau de chdig vers [v26.1.1](https://github.com/azat/chdig/releases/tag/v26.1.1). [#94290](https://github.com/ClickHouse/ClickHouse/pull/94290) ([Azat Khuzhin](https://github.com/azat)).
* Prise en charge d’un partitionnement plus générique pour le mode ordered de S3Queue. [#94321](https://github.com/ClickHouse/ClickHouse/pull/94321) ([Bharat Nallan](https://github.com/bharatnc)).
* Ajout de l’alias `use_statistics` pour le paramètre `allow_statistics_optimize`. C’est plus cohérent avec les paramètres existants `use_primary_key` et `use_skip_indexes`. [#94366](https://github.com/ClickHouse/ClickHouse/pull/94366) ([Robert Schulze](https://github.com/rschu1ze)).
* Activation du paramètre `input_format_numbers_enum_on_conversion_error` pour la conversion de Numbers en Enums afin de vérifier si l’élément existe. [#94384](https://github.com/ClickHouse/ClickHouse/pull/94384) ([Elmi Ahmadov](https://github.com/ahmadov)).
* En mode ordered de S3(Azure)Queue, nettoyage des nœuds en échec selon les limites de suivi (auparavant, cela n’était fait qu’en mode unordered, à la fois pour les éléments en échec et ceux traités ; désormais, cela s’applique aussi au mode ordered, mais uniquement pour les nœuds en échec). [#94412](https://github.com/ClickHouse/ClickHouse/pull/94412) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Activation de la gestion des accès pour l’utilisateur `default` dans clickhouse-local. L’utilisateur par défaut de `clickhouse-local` ne disposait pas du privilège access\_management, ce qui faisait échouer des opérations comme `DROP ROW POLICY IF EXISTS` avec l’erreur `ACCESS_DENIED`, alors que cet utilisateur ne devrait avoir aucune restriction. [#94501](https://github.com/ClickHouse/ClickHouse/pull/94501) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Activation des collections nommées pour les dictionnaires et les tables YTsaurus. [#94582](https://github.com/ClickHouse/ClickHouse/pull/94582) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Ajout de la prise en charge des collections nommées définies en SQL dans BACKUP/RESTORE pour S3 et Azure Blob Storage. Résout [#94604](https://github.com/ClickHouse/ClickHouse/issues/94604). [#94605](https://github.com/ClickHouse/ClickHouse/pull/94605) ([Pablo Marcos](https://github.com/pamarcos)).
* Prise en charge du bucketing basé sur la clé de partition pour S3Queue en mode ordered. [#94698](https://github.com/ClickHouse/ClickHouse/pull/94698) ([Bharat Nallan](https://github.com/bharatnc)).
* Ajout d’une métrique asynchrone indiquant le temps écoulé de la fusion la plus longue en cours d’exécution. [#94825](https://github.com/ClickHouse/ClickHouse/pull/94825) ([Raúl Marín](https://github.com/Algunenano)).
* Ajout d’une vérification de l’appartenance du fichier avant d’appliquer la suppression par position à l’aide de IcebergBitmapPositionDeleteTransform. [#94897](https://github.com/ClickHouse/ClickHouse/pull/94897) ([Yang Jiang](https://github.com/Ted-Jiang)).
* Désormais, `view_duration_ms` indique la durée pendant laquelle le groupe a été actif, et non la somme des durées des threads qu’il contient. [#94966](https://github.com/ClickHouse/ClickHouse/pull/94966) ([Sema Checherinda](https://github.com/CheSema)).
* Suppression de la limite du nombre maximal de tokens de recherche dans les fonctions `hasAnyTokens` et `hasAllTokens`, auparavant fixée à 64. Exemple : `SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]);` La requête entraînait une erreur `BAD_ARGUMENTS` car elle contenait 65 tokens de recherche. Avec cette PR, cette limite a été entièrement supprimée, et la même requête s’exécute désormais sans erreur. [#95152](https://github.com/ClickHouse/ClickHouse/pull/95152) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Ajout d’un paramètre `input_format_numbers_enum_on_conversion_error` pour la conversion de Numbers en Enums afin de vérifier si l’élément existe. Résout : [#56144](https://github.com/ClickHouse/ClickHouse/issues/56144). [#56240](https://github.com/ClickHouse/ClickHouse/pull/56240) ([Nikolay Degterinsky](https://github.com/evillique)).
* Partage des ressources du parseur de format entre la lecture du fichier de données et celle du fichier de suppression par position dans les tables Iceberg afin de réduire les allocations mémoire. [#94701](https://github.com/ClickHouse/ClickHouse/pull/94701) ([Yang Jiang](https://github.com/Ted-Jiang)).

<div id="267-bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### Correction de bug (comportement incorrect perceptible par l’utilisateur dans une version stable officielle)
</div>

* Corrige un bug où les gestionnaires de requêtes prédéfinies interprétaient les espaces en fin de ligne comme des données lors des insertions. [#83604](https://github.com/ClickHouse/ClickHouse/pull/83604) ([Fabian Ponce](https://github.com/FabianPonce)).
* Corrige l’erreur INCOMPATIBLE\_TYPE\_OF\_JOIN lorsque le moteur Join est utilisé et que l’optimisation de jointure outer vers inner est appliquée. Résout [#80794](https://github.com/ClickHouse/ClickHouse/issues/80794). [#84292](https://github.com/ClickHouse/ClickHouse/pull/84292) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige l’exception "Invalid number of rows in Chunk" lors de l’utilisation d’un hash join avec `allow_experimental_join_right_table_sorting` activé. [#86440](https://github.com/ClickHouse/ClickHouse/pull/86440) ([yanglongwei](https://github.com/ylw510)).
* Remplace systématiquement les noms de fichiers par un hash dans MergeTree si le système de fichiers est insensible à la casse. Auparavant, sur les systèmes dotés d’un système de fichiers insensible à la casse (comme MacOS), cela pouvait entraîner une corruption des données lorsque plusieurs noms de colonne/sous-colonne ne différaient que par la casse. [#86559](https://github.com/ClickHouse/ClickHouse/pull/86559) ([Pavel Kruglov](https://github.com/Avogar)).
* Ajoute une vérification complète des permissions à l’étape de création pour la requête sous-jacente d’une vue matérialisée. [#89180](https://github.com/ClickHouse/ClickHouse/pull/89180) ([pufit](https://github.com/pufit)).
* Corrige un crash dans la fonction `icebergHash` avec un argument constant. [#90335](https://github.com/ClickHouse/ClickHouse/pull/90335) ([Michael Kolupaev](https://github.com/al13n321)).
* Corrige une erreur logique lorsqu’une mutation sans transaction modifie des parts dans une transaction active, finalement annulée. [#90469](https://github.com/ClickHouse/ClickHouse/pull/90469) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Met correctement à jour `system.warnings` après la conversion d’une base de données ordinaire en base de données atomic. [#90473](https://github.com/ClickHouse/ClickHouse/pull/90473) ([sdk2](https://github.com/sdk2)).
* Corrige une assertion lors de la lecture d’un fichier Parquet, lorsqu’une partie d’une expression **prewhere** est utilisée ailleurs dans la requête. [#90635](https://github.com/ClickHouse/ClickHouse/pull/90635) ([Max Kainov](https://github.com/maxknv)).
* Corrige un crash dans un cluster à nœud unique lors de la lecture depuis Iceberg en mode split-by-buckets. Cela clôt [#90913](https://github.com/ClickHouse/ClickHouse/issues/90913#issue-3668583963). [#91553](https://github.com/ClickHouse/ClickHouse/pull/91553) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige une possible erreur logique dans le moteur Log lors de la lecture des sous-colonnes. Clôt [#91710](https://github.com/ClickHouse/ClickHouse/issues/91710). [#91711](https://github.com/ClickHouse/ClickHouse/pull/91711) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l’erreur logique : 'Storage does not support transaction' pendant ATTACH AS REPLICATED. [#91772](https://github.com/ClickHouse/ClickHouse/pull/91772) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Corrige le fonctionnement incorrect des runtime filters lorsque LEFT ANTI JOIN comporte une post-condition supplémentaire. [#91824](https://github.com/ClickHouse/ClickHouse/pull/91824) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige une erreur survenant en présence d’une comparaison null-safe impliquant le type Nothing. Clôt [#91834](https://github.com/ClickHouse/ClickHouse/issues/91834). Clôt [#84870](https://github.com/ClickHouse/ClickHouse/issues/84870). Clôt [#91821](https://github.com/ClickHouse/ClickHouse/issues/91821). [#91884](https://github.com/ClickHouse/ClickHouse/pull/91884) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige des bugs de décodage DELTA\_BYTE\_ARRAY dans le lecteur Parquet natif, qui affectaient les données de chaînes très répétitives. [#91929](https://github.com/ClickHouse/ClickHouse/pull/91929) ([Daniel Muino](https://github.com/dmuino)).
* Met en cache le schéma uniquement pour le fichier dont il a été inféré dans les globs, au lieu de tous les fichiers lors de l'inférence de schéma. Clôt [#91745](https://github.com/ClickHouse/ClickHouse/issues/91745). [#92006](https://github.com/ClickHouse/ClickHouse/pull/92006) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige l'erreur `Couldn't pack tar archive: Failed to write all bytes` causée par un en-tête de taille d'entrée d'archive incorrect. Corrige [#89075](https://github.com/ClickHouse/ClickHouse/issues/89075). [#92122](https://github.com/ClickHouse/ClickHouse/pull/92122) ([Julia Kartseva](https://github.com/jkartseva)).
* Libère le flux de requête dans insert select afin d'éviter la fermeture de la connexion HTTP. [#92175](https://github.com/ClickHouse/ClickHouse/pull/92175) ([Sema Checherinda](https://github.com/CheSema)).
* Corrige une erreur logique pour les requêtes avec plusieurs JOIN avec la clause `USING` et `join_use_nulls`. [#92251](https://github.com/ClickHouse/ClickHouse/pull/92251) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige une erreur logique lors de la réorganisation des jointures avec join\_use\_nulls, clôt [https://github.com/clickhouse/clickhouse/issues/90795](https://github.com/clickhouse/clickhouse/issues/90795). [#92289](https://github.com/ClickHouse/ClickHouse/pull/92289) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Corrige le formatage AST incohérent de `arrayElement` avec un littéral négatif. Clôt [#92288](https://github.com/ClickHouse/ClickHouse/issues/92288) Clôt [#92212](https://github.com/ClickHouse/ClickHouse/issues/92212) Clôt [#91832](https://github.com/ClickHouse/ClickHouse/issues/91832) Clôt [#91789](https://github.com/ClickHouse/ClickHouse/issues/91789) Clôt [#91735](https://github.com/ClickHouse/ClickHouse/issues/91735) Clôt [#88495](https://github.com/ClickHouse/ClickHouse/issues/88495) Clôt [#92386](https://github.com/ClickHouse/ClickHouse/issues/92386). [#92293](https://github.com/ClickHouse/ClickHouse/pull/92293) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige un crash possible avec le paramètre `join_on_disk_max_files_to_merge`. [#92335](https://github.com/ClickHouse/ClickHouse/pull/92335) ([Bharat Nallan](https://github.com/bharatnc)).
* Problème connexe #[https://github.com/ClickHouse/support-escalation/issues/6365](https://github.com/ClickHouse/support-escalation/issues/6365). [#92339](https://github.com/ClickHouse/ClickHouse/pull/92339) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Corrige l'absence de vérification d'accès dans `SYSTEM SYNC FILE CACHE`. Clôt [#92101](https://github.com/ClickHouse/ClickHouse/issues/92101). [#92372](https://github.com/ClickHouse/ClickHouse/pull/92372) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Corrige l'application de `count_distinct_optimization` aux fonctions de fenêtre et à plusieurs arguments. [#92376](https://github.com/ClickHouse/ClickHouse/pull/92376) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige l'erreur "Cannot write to finalized buffer" lors de l'utilisation de certaines fonctions d'agrégation avec des fonctions de fenêtre. Clôt [#91415](https://github.com/ClickHouse/ClickHouse/issues/91415). [#92395](https://github.com/ClickHouse/ClickHouse/pull/92395) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Corrige une erreur logique avec `CREATE TABLE ... AS urlCluster()` et le moteur de base de données `Replicated`. Clôt [#92216](https://github.com/ClickHouse/ClickHouse/issues/92216). [#92418](https://github.com/ClickHouse/ClickHouse/pull/92418) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Hérite, lors d'une mutation dans MergeTree, des paramètres d'information de sérialisation de la part source. Cela corrige un résultat potentiellement incorrect d'une requête sur une part mutée après des modifications de la sérialisation des types de données. [#92419](https://github.com/ClickHouse/ClickHouse/pull/92419) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un conflit possible entre une colonne et une sous-colonne portant le même nom, qui entraînait l’utilisation d’une mauvaise sérialisation et des échecs de requête. Clôt [#90219](https://github.com/ClickHouse/ClickHouse/issues/90219). Clôt [#85161](https://github.com/ClickHouse/ClickHouse/issues/85161). [#92453](https://github.com/ClickHouse/ClickHouse/pull/92453) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de `LOGICAL_ERROR`s causées par une modification indésirable du plan de requête lors de la conversion d’une jointure externe en jointure interne. Assouplit également les conditions d’optimisation pour pouvoir l’appliquer lorsque des fonctions injectives sont appliquées aux clés d’agrégation dans les jointures. [#92503](https://github.com/ClickHouse/ClickHouse/pull/92503) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction d’une possible erreur `SIZES_OF_COLUMNS_DOESNT_MATCH` lors du tri d’une colonne Tuple vide. Clôt [#92422](https://github.com/ClickHouse/ClickHouse/issues/92422). [#92520](https://github.com/ClickHouse/ClickHouse/pull/92520) ([Pavel Kruglov](https://github.com/Avogar)).
* Vérification des chemins typés incompatibles dans le type JSON. Clôt [#91577](https://github.com/ClickHouse/ClickHouse/issues/91577). [#92539](https://github.com/ClickHouse/ClickHouse/pull/92539) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un interblocage avec SHOW CREATE DATABASE pour une base de données Backup. [#92541](https://github.com/ClickHouse/ClickHouse/pull/92541) ([Azat Khuzhin](https://github.com/azat)).
* Utilisation du code d’erreur approprié lors de la validation d’un index hypothétique. [#92559](https://github.com/ClickHouse/ClickHouse/pull/92559) ([Raúl Marín](https://github.com/Algunenano)).
* Correction de la résolution des sous-colonnes dynamiques dans les alias de colonne dans l’analyseur. Auparavant, une sous-colonne dynamique dans un alias de colonne était enveloppée dans `getSubcolumn` et, dans certains cas, pouvait ne pas être résolue du tout. Clôt [#91434](https://github.com/ClickHouse/ClickHouse/issues/91434). [#92583](https://github.com/ClickHouse/ClickHouse/pull/92583) ([Pavel Kruglov](https://github.com/Avogar)).
* Empêche un crash dans tokens() avec un deuxième argument NULL. [#92586](https://github.com/ClickHouse/ClickHouse/pull/92586) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un crash potentiel causé par une mutation en place des colonnes PREWHERE const sous-jacentes. Cela pouvait se produire lors de la réduction de la taille d’une colonne (`IColumn::shrinkToFit`) ou du filtrage (`IColumn::filter`), qui pouvaient être déclenchés concurremment par plusieurs threads. [#92588](https://github.com/ClickHouse/ClickHouse/pull/92588) ([Arsen Muk](https://github.com/arsenmuk)).
* La création et la matérialisation de text indexes sur des tables contenant de grandes parts (plus de 4 294 967 295 lignes) sont temporairement désactivées. Cette limitation évite des résultats de requête incorrects, car l’implémentation actuelle de l’index ne prend pas encore en charge des parts aussi volumineuses. [#92644](https://github.com/ClickHouse/ClickHouse/pull/92644) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’une erreur logique `Too large size (A) passed to allocator` lors de l’exécution de JOINs. Clôt [#92043](https://github.com/ClickHouse/ClickHouse/issues/92043). [#92667](https://github.com/ClickHouse/ClickHouse/pull/92667) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction d’un bogue qui faisait que les index `ngrambf_v1` avec une longueur de ngram (1er paramètre) > 8 pouvaient lever une exception. [#92672](https://github.com/ClickHouse/ClickHouse/pull/92672) ([Robert Schulze](https://github.com/rschu1ze)).
* Correction d’une exception non interceptée lors du rechargement en arrière-plan des collections nommées lorsque le stockage ZooKeeper est utilisé. Clôt [https://github.com/ClickHouse/clickhouse-private/issues/44180](https://github.com/ClickHouse/clickhouse-private/issues/44180). [#92717](https://github.com/ClickHouse/ClickHouse/pull/92717) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Revoit la logique incorrecte des vérifications des grants d’accès pour les grants avec caractères génériques. La tentative précédente [https://github.com/ClickHouse/ClickHouse/pull/90928](https://github.com/ClickHouse/ClickHouse/pull/90928) corrigeait une vulnérabilité critique, mais s’est révélée trop restrictive, ce qui faisait échouer certaines instructions `GRANT` avec caractères génériques à cause de révocations sans rapport. [#92725](https://github.com/ClickHouse/ClickHouse/pull/92725) ([pufit](https://github.com/pufit)).
* Corrige un bug dans la logique de skipping des données lorsque `not match(...)` est utilisé dans `WHERE`, ce qui provoquait des résultats incorrects. Clôt [#92492](https://github.com/ClickHouse/ClickHouse/issues/92492). [#92726](https://github.com/ClickHouse/ClickHouse/pull/92726) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* N’essaie pas de supprimer les répertoires temporaires au démarrage si une table MergeTree est créée sur un disque en lecture seule. [#92748](https://github.com/ClickHouse/ClickHouse/pull/92748) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige `Cannot add action to empty ExpressionActionsChain` pour ALTER TABLE REWRITE PARTS (v2). [#92754](https://github.com/ClickHouse/ClickHouse/pull/92754) ([Azat Khuzhin](https://github.com/azat)).
* Évite un crash dû à la lecture depuis une `Connection` déconnectée. [#92807](https://github.com/ClickHouse/ClickHouse/pull/92807) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Corrige l’erreur logique ` Failed to set file processing within 100 retries` dans le stockage `S3Queue` en mode `Ordered`. Elle est désormais remplacée par un avertissement. Cette erreur pouvait survenir avant la version 25.10 si la session Keeper expirait ; toutefois, dans les versions 25.10+, elle restera un avertissement, car il reste théoriquement possible qu’elle se produise en cas de forte concurrence de traitement en mode `Ordered`. [#92814](https://github.com/ClickHouse/ClickHouse/pull/92814) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Auparavant, certaines requêtes utilisant le sharding PK avec une condition fausse échouaient. Ce n’est désormais plus le cas. Nécessaire pour [https://github.com/ClickHouse/ClickHouse/pull/89313](https://github.com/ClickHouse/ClickHouse/pull/89313). [#92815](https://github.com/ClickHouse/ClickHouse/pull/92815) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Corrige le calcul des tailles non compressées des text indexes dans la table `system.parts`. [#92832](https://github.com/ClickHouse/ClickHouse/pull/92832) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige l’utilisation du primary index dans les lightweight updates comportant une clause `IN` avec des subqueries dans le prédicat de la clause `WHERE`. [#92838](https://github.com/ClickHouse/ClickHouse/pull/92838) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige la création d’un type hint pour le chemin 'skip' en JSON. Clôt [#92731](https://github.com/ClickHouse/ClickHouse/issues/92731). [#92842](https://github.com/ClickHouse/ClickHouse/pull/92842) ([Pavel Kruglov](https://github.com/Avogar)).
* Dans le S3 table engine, il faut éviter de mettre en cache la partition key en présence de fonctions non déterministes. [#92844](https://github.com/ClickHouse/ClickHouse/pull/92844) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige une possible erreur `FILE_DOESNT_EXIST` après la mutation d’une colonne sparse avec `ratio_of_defaults_for_sparse_serialization=0.0`. Clôt [#92633](https://github.com/ClickHouse/ClickHouse/issues/92633). [#92860](https://github.com/ClickHouse/ClickHouse/pull/92860) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige la schema inference Parquet dans l’ancien parquet reader (non utilisé par défaut) lorsqu’une JSON column vient après une colonne Tuple. Corrige également l’échec de l’ancien parquet reader (non utilisé par défaut) sur les tuples vides. [#92867](https://github.com/ClickHouse/ClickHouse/pull/92867) ([Michael Kolupaev](https://github.com/al13n321)).
* Correction d’une erreur logique avec plusieurs jointures sur une condition constante et `join_use_nulls`, ferme [#92640](https://github.com/ClickHouse/ClickHouse/issues/92640). [#92892](https://github.com/ClickHouse/ClickHouse/pull/92892) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction d’une erreur possible `NOT_FOUND_COLUMN_IN_BLOCK` lors d’un insert dans une table avec une sous-colonne dans l’expression de partition. Ferme [#93210](https://github.com/ClickHouse/ClickHouse/issues/93210). Ferme [#83406](https://github.com/ClickHouse/ClickHouse/issues/83406). [#92905](https://github.com/ClickHouse/ClickHouse/pull/92905) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de l’erreur `NO_SUCH_COLUMN_IN_TABLE` dans le moteur Merge sur des tables avec alias. Ferme [#88665](https://github.com/ClickHouse/ClickHouse/issues/88665). [#92910](https://github.com/ClickHouse/ClickHouse/pull/92910) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction du cas NULL != NULL pour `full_sorting_join` sur une colonne LowCardinality(Nullable(T)). [#92924](https://github.com/ClickHouse/ClickHouse/pull/92924) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction de plusieurs crashs lors des merges de text indexes dans les tables `MergeTree`. [#92925](https://github.com/ClickHouse/ClickHouse/pull/92925) ([Anton Popov](https://github.com/CurtizJ)).
* Restauration des wrappers LowCardinality sur les résultats d’expressions SET si nécessaire pendant l’aggregation TTL afin d’éviter des exceptions lors de l’optimisation de la table. [#92971](https://github.com/ClickHouse/ClickHouse/pull/92971) ([Seva Potapov](https://github.com/seva-potapov)).
* Correction d’une erreur logique lors de l’index analysis lorsqu’un tableau vide est utilisé dans la fonction `has`. Ferme [#92906](https://github.com/ClickHouse/ClickHouse/issues/92906). [#92995](https://github.com/ClickHouse/ClickHouse/pull/92995) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un blocage possible lors de l’arrêt du background schedule pool (pouvant entraîner des blocages du server à l’arrêt). [#93008](https://github.com/ClickHouse/ClickHouse/pull/93008) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’une erreur possible FILE\_DOESNT\_EXIST après une mutation de colonne sparse lorsque le paramètre `ratio_of_defaults_for_sparse_serialization` a été modifié à `1.0` via alter. [#93016](https://github.com/ClickHouse/ClickHouse/pull/93016) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un bug dans la logique de skipping des données lorsque `not materialize(...)` ou `not CAST(...)` est utilisé dans WHERE, ce qui provoquait des résultats incorrects. Ferme [#88536](https://github.com/ClickHouse/ClickHouse/issues/88536). [#93017](https://github.com/ClickHouse/ClickHouse/pull/93017) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’une utilisation possible de parts obsolètes en raison d’une situation de compétition TOCTOU sur des parts partagées. [#93022](https://github.com/ClickHouse/ClickHouse/pull/93022) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’un crash lors de la désérialisation d’un aggregate state `groupConcat` mal formé avec des offsets hors limites. [#93028](https://github.com/ClickHouse/ClickHouse/pull/93028) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Correction d’un état de connexion corrompu après l’annulation préliminaire de distributed queries. [#93029](https://github.com/ClickHouse/ClickHouse/pull/93029) ([Azat Khuzhin](https://github.com/azat)).
* Correction des résultats de jointure lorsque la join key du côté droit est une colonne sparse. Cela ferme [#92920](https://github.com/ClickHouse/ClickHouse/issues/92920). Je ne peux reproduire le bug qu’avec `set compatibility='23.3'`. Je ne sais pas s’il faut le rétroporter. [#93038](https://github.com/ClickHouse/ClickHouse/pull/93038) ([Amos Bird](https://github.com/amosbird)).
* Corrige un possible `Cannot finalize buffer after cancellation` dans `estimateCompressionRatio()`. Correctif : [#87380](https://github.com/ClickHouse/ClickHouse/issues/87380). [#93068](https://github.com/ClickHouse/ClickHouse/pull/93068) ([Azat Khuzhin](https://github.com/azat)).
* Corrige les merges d’index textuels construits à partir d’expressions complexes (comme `concat(col1, col2)`). [#93073](https://github.com/ClickHouse/ClickHouse/pull/93073) ([Anton Popov](https://github.com/CurtizJ)).
* Corrige l’application d’une projection lorsque le filtre contient des sous-colonnes. Ferme [#92882](https://github.com/ClickHouse/ClickHouse/issues/92882). [#93141](https://github.com/ClickHouse/ClickHouse/pull/93141) ([Pavel Kruglov](https://github.com/Avogar)).
* Corrige une erreur logique survenant dans certains cas lorsque des filtres runtime de jointure sont ajoutés au plan de requête. Cela était dû au renvoi incorrect de colonnes constantes dupliquées depuis l’un des côtés de la jointure. [#93144](https://github.com/ClickHouse/ClickHouse/pull/93144) ([Alexander Gololobov](https://github.com/davenger)).
* La fonction spéciale `__applyFilter`, utilisée par les filtres runtime de jointure, renvoyait `ILLEGAL&#95;TYPE&#95;OF&#95;ARGUMENT` dans certains cas pourtant valides. [#93187](https://github.com/ClickHouse/ClickHouse/pull/93187) ([Alexander Gololobov](https://github.com/davenger)).
* Empêche que différentes colonnes interpolées ne soient fusionnées en une seule colonne dans un bloc lorsque ces colonnes interpolées sont en réalité des alias de la même colonne. [#93197](https://github.com/ClickHouse/ClickHouse/pull/93197) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* N’ajoute pas de filtre runtime lors d’une jointure avec une table de droite déjà remplie. [#93211](https://github.com/ClickHouse/ClickHouse/pull/93211) ([Alexander Gololobov](https://github.com/davenger)).
* Corrige le nettoyage des watches persistantes de Keeper après une session expirée. Ferme [#92480](https://github.com/ClickHouse/ClickHouse/issues/92480). [#93213](https://github.com/ClickHouse/ClickHouse/pull/93213) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige ORDER BY sur un Tuple dans Iceberg. Ferme [#92977](https://github.com/ClickHouse/ClickHouse/issues/92977). [#93225](https://github.com/ClickHouse/ClickHouse/pull/93225) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un bug du paramètre S3Queue `s3queue_migrate_old_metadata_to_buckets`. Ferme [#93392](https://github.com/ClickHouse/ClickHouse/issues/93392), [#93196](https://github.com/ClickHouse/ClickHouse/issues/93196), [#81739](https://github.com/ClickHouse/ClickHouse/issues/81739). [#93232](https://github.com/ClickHouse/ClickHouse/pull/93232) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Supprime les colonnes inutilisées lorsque la projection est reconstruite pendant le merge. Cela réduit l’utilisation de la mémoire et crée moins de parts temporaires. [#93233](https://github.com/ClickHouse/ClickHouse/pull/93233) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Corrige la suppression de colonnes inutilisées dans des sous-requêtes en présence d’une sous-requête corrélée scalaire. Avant ce correctif, une colonne pouvait être supprimée si elle n’était utilisée que dans la sous-requête corrélée, ce qui faisait échouer la requête avec l’erreur `NOT_FOUND_COLUMN_IN_BLOCK`. [#93273](https://github.com/ClickHouse/ClickHouse/pull/93273) ([Dmitry Novik](https://github.com/novikd)).
* Corrige une possible sous-colonne manquante dans une MV lors d’un ALTER de la table source. Ferme [#93231](https://github.com/ClickHouse/ClickHouse/issues/93231). [#93276](https://github.com/ClickHouse/ClickHouse/pull/93276) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de la planification des requêtes du moteur de table `Merge` avec l’analyseur, qui pouvait lever ILLEGAL\_COLUMN pour `hostName()` lors de la fusion de tables locales et distantes/Distributed. Clôt [#92059](https://github.com/ClickHouse/ClickHouse/issues/92059). [#93286](https://github.com/ClickHouse/ClickHouse/pull/93286) ([Jinlin](https://github.com/withlin)).
* Correction d’un cas où NOT IN avec des arguments Array non constants renvoyait une valeur incorrecte + prise en charge des fonctions Array non constantes. Clôt [#14980](https://github.com/ClickHouse/ClickHouse/issues/14980). [#93314](https://github.com/ClickHouse/ClickHouse/pull/93314) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Correction de l’erreur `Not found column` pour l’optimisation `use_top_k_dynamic_filtering`. Corrige [#93186](https://github.com/ClickHouse/ClickHouse/issues/93186). [#93316](https://github.com/ClickHouse/ClickHouse/pull/93316) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Correction de la reconstruction des index de texte créés à partir de sous-colonnes. [#93326](https://github.com/ClickHouse/ClickHouse/pull/93326) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de la gestion d’un tableau vide comme deuxième argument dans les fonctions `hasAllTokens` et `hasAnyTokens`. [#93328](https://github.com/ClickHouse/ClickHouse/pull/93328) ([Anton Popov](https://github.com/CurtizJ)).
* Correction d’une erreur logique lorsque des runtime filters sont utilisés dans une requête avec des totaux pour la table du côté droit. [#93330](https://github.com/ClickHouse/ClickHouse/pull/93330) ([Alexander Gololobov](https://github.com/davenger)).
* Le serveur ne plante plus si la fonction `tokens` est appelée avec des paramètres de tokenizer non constants (les 2e, 3e et 4e paramètres), par ex. `SELECT tokens(NULL, 1, materialize(1))`. [#93383](https://github.com/ClickHouse/ClickHouse/pull/93383) ([Robert Schulze](https://github.com/rschu1ze)).
* Correction d’une vulnérabilité de dépassement d’entier dans la désérialisation de l’état de `groupConcat`, qui pouvait entraîner des problèmes de sécurité mémoire avec des aggregate states forgés. [#93426](https://github.com/ClickHouse/ClickHouse/pull/93426) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Correction de l’analyse d’index de texte sur les colonnes de tableau lorsque l’index ne contient aucun token (tous les tableaux sont vides ou tous les tokens sont ignorés par le tokenizer). [#93457](https://github.com/ClickHouse/ClickHouse/pull/93457) ([Anton Popov](https://github.com/CurtizJ)).
* Évite la connexion OAuth dans ClickHouse Client lorsque le nom d’utilisateur/mot de passe figure dans la chaîne de connexion. [#93459](https://github.com/ClickHouse/ClickHouse/pull/93459) ([Krishna Mannem](https://github.com/kcmannem)).
* Correction de la prise en charge des credentials fournis par Azure ADLS Gen2 dans DataLakeCatalog - analyse des clés `adls.sas-token.*` provenant des REST catalogs Iceberg et correction de l’analyse des URL ABFSS. [#93477](https://github.com/ClickHouse/ClickHouse/pull/93477) ([Karun Anantharaman](https://github.com/karunmotorq)).
* Correction de la prise en charge de GLOBAL IN avec l’analyseur (auparavant, l’ensemble était recréé sur le nœud distant). [#93507](https://github.com/ClickHouse/ClickHouse/pull/93507) ([Azat Khuzhin](https://github.com/azat)).
* Correction de l’extraction d’une sous-colonne lors de la désérialisation directement dans des colonnes Sparse. [#93512](https://github.com/ClickHouse/ClickHouse/pull/93512) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de la lecture directe depuis l’index de texte avec des requêtes de recherche dupliquées. [#93516](https://github.com/ClickHouse/ClickHouse/pull/93516) ([Anton Popov](https://github.com/CurtizJ)).
* Correction de l’erreur NOT\_FOUND\_COLUMN\_IN\_BLOCK lorsque le runtime filter est activé et que des tables jointes renvoient plusieurs fois la même colonne (par ex. SELECT a, a, a FROM t). [#93526](https://github.com/ClickHouse/ClickHouse/pull/93526) ([Alexander Gololobov](https://github.com/davenger)).
* Correction d’un bug où clickhouse-client demandait le mot de passe deux fois lors d’une connexion via ssh. [#93547](https://github.com/ClickHouse/ClickHouse/pull/93547) ([Isak Ellmer](https://github.com/spinojara)).
* S’assurer que ZooKeeper est bien finalisé lors de l’arrêt (corrige un possible blocage à l’arrêt dans des cas très improbables). [#93602](https://github.com/ClickHouse/ClickHouse/pull/93602) ([Azat Khuzhin](https://github.com/azat)).
* Correction de LOGICAL\_ERROR lors de la restauration de ReplicatedMergeTree en cas de concurrence pendant la déduplication. [#93612](https://github.com/ClickHouse/ClickHouse/pull/93612) ([Pablo Marcos](https://github.com/pamarcos)).
* Correction de l’utilisation d’une colonne Sparse pour la mise à jour TTL lors d’une désérialisation directe dans des colonnes Sparse dans certains formats d’entrée. Cela corrige l’erreur logique possible `Unexpected type of result TTL column`. [#93619](https://github.com/ClickHouse/ClickHouse/pull/93619) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction de fonctions d’index H3 qui plantaient parfois ou restaient bloquées lorsqu’elles étaient appelées avec des entrées invalides. [#93657](https://github.com/ClickHouse/ClickHouse/pull/93657) ([Michael Kolupaev](https://github.com/al13n321)).
* L’utilisation de l’index `ngram_bf` sur des données non UTF-8 entraînait une lecture de mémoire non initialisée, avec des valeurs pouvant se retrouver dans la structure d’index résultante. Ferme [#92576](https://github.com/ClickHouse/ClickHouse/issues/92576). [#93663](https://github.com/ClickHouse/ClickHouse/pull/93663) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Validation de la taille attendue du tampon décompressé. [#93690](https://github.com/ClickHouse/ClickHouse/pull/93690) ([Raúl Marín](https://github.com/Algunenano)).
* Empêche les utilisateurs d’obtenir la liste des colonnes d’une table sans vérification du privilège `SHOW COLUMNS` en utilisant le moteur de table `merge`. [#93695](https://github.com/ClickHouse/ClickHouse/pull/93695) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Correction de la matérialisation des skip indexes créés à partir de sous-colonnes. [#93708](https://github.com/ClickHouse/ClickHouse/pull/93708) ([Anton Popov](https://github.com/CurtizJ)).
* Nous stockons des pointeurs partagés vers les stockages dans `QueryPipeline::resources::storage_holders` pour nous assurer que les objets `IStorage` ne sont pas détruits tant que `PipelineExecutor` est actif. [#93746](https://github.com/ClickHouse/ClickHouse/pull/93746) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de l’opération Attach des DB Replicated lorsque l’hôte interserver changeait après un redémarrage. [#93779](https://github.com/ClickHouse/ClickHouse/pull/93779) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Correction de l’assertion `!read_until_position` dans `ReadBufferFromS3`, qui se produisait lorsque le cache était activé. [#93809](https://github.com/ClickHouse/ClickHouse/pull/93809) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction d’une erreur logique dans un cas rare où un tuple vide est utilisé avec la colonne `Map`. Ferme [#93784](https://github.com/ClickHouse/ClickHouse/issues/93784). [#93814](https://github.com/ClickHouse/ClickHouse/pull/93814) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de la corruption de `_part_offset` lorsque les projections sont reconstruites pendant les merges, et optimisation du traitement des projections en évitant des lectures inutiles de la colonne `_part_offset` ainsi qu’en ignorant les colonnes non nécessaires dans les calculs de projection. Cela prolonge les optimisations introduites dans [#93233](https://github.com/ClickHouse/ClickHouse/issues/93233). [#93827](https://github.com/ClickHouse/ClickHouse/pull/93827) ([Amos Bird](https://github.com/amosbird)).
* Suppression de la gestion de 'Bad version'. [#93843](https://github.com/ClickHouse/ClickHouse/pull/93843) ([Anton Ivashkin](https://github.com/ianton-ru)).
* Correction de `optimize_inverse_dictionary_lookup`, qui ne fonctionnait pas avec une requête distribuée lorsque la clé était de type intégral signé. Closes [#93259](https://github.com/ClickHouse/ClickHouse/issues/93259). [#93848](https://github.com/ClickHouse/ClickHouse/pull/93848) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction de `lag`/`lead`, qui ne fonctionnaient pas avec une requête distribuée `remote()`. Closes [#90014](https://github.com/ClickHouse/ClickHouse/issues/90014). [#93858](https://github.com/ClickHouse/ClickHouse/pull/93858) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Correction d’un bug dans le mécanisme de dispatch de system instrument. [#93937](https://github.com/ClickHouse/ClickHouse/pull/93937) ([Pablo Marcos](https://github.com/pamarcos)).
* Dans [https://github.com/ClickHouse/ClickHouse/pull/89173](https://github.com/ClickHouse/ClickHouse/pull/89173), nous avons ajouté un field supplémentaire à la structure que `TraceSender` envoie via un pipe interne. Cependant, la taille du buffer n’a pas été mise à jour ([ici](https://github.com/ClickHouse/ClickHouse/pull/89173/changes#diff-36ecfac5cde34c92c031652d8a77f0d12782cd5d43e68d6ef159e6d46a54224fL44)) ; nous écrivions donc plus de données dans le buffer que `buffer_size`, ce qui entraînait plusieurs flushes. Et comme `TraceSender::send` est appelé depuis différents threads, les flushes de différents threads peuvent s’entrelacer, ce qui rompt l’invariant sur lequel s’appuie l’extrémité réceptrice (`TraceCollector`). [#93966](https://github.com/ClickHouse/ClickHouse/pull/93966) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction de la conversion de type vers le supertype lors de l’opération JOIN du storage `Join` avec la clause `USING`. Fixes [#91672](https://github.com/ClickHouse/ClickHouse/issues/91672). Fixes [#78572](https://github.com/ClickHouse/ClickHouse/issues/78572). [#94000](https://github.com/ClickHouse/ClickHouse/pull/94000) ([Dmitry Novik](https://github.com/novikd)).
* Correction de l’ajout incorrect de FilterStep lorsqu’un filtre d’exécution de join est appliqué à une Merge table. [#94021](https://github.com/ClickHouse/ClickHouse/pull/94021) ([Alexander Gololobov](https://github.com/davenger)).
* Une requête `SELECT` contenant un prédicat sur plusieurs colonnes avec des skip indexes bloom filter, en présence à la fois de conditions `OR` et `NOT`, pouvait renvoyer des résultats incohérents. C’est désormais corrigé. [#94026](https://github.com/ClickHouse/ClickHouse/pull/94026) ([Shankar Iyer](https://github.com/shankar-iyer)).
* Correction de CLEAR column avec des index dépendants. [#94057](https://github.com/ClickHouse/ClickHouse/pull/94057) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’une utilisation de valeur non initialisée dans `ReadWriteBufferFromHTTP`. [#94058](https://github.com/ClickHouse/ClickHouse/pull/94058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une validation incorrecte des paths typés dans JSON. Cette validation a été introduite dans [https://github.com/ClickHouse/ClickHouse/pull/92842](https://github.com/ClickHouse/ClickHouse/pull/92842) et peut entraîner une erreur au démarrage de tables existantes. [#94070](https://github.com/ClickHouse/ClickHouse/pull/94070) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d’un crash pendant l’analyse du filtre en présence d’un OUTER JOIN. Fixes [#90979](https://github.com/ClickHouse/ClickHouse/issues/90979). [#94080](https://github.com/ClickHouse/ClickHouse/pull/94080) ([Dmitry Novik](https://github.com/novikd)).
* Correction de la précision de `uniqTheta` lors de l’utilisation, en parallèle, de clés d’agrégation UInt8 (`max_threads` > 1 - par défaut). [#94095](https://github.com/ClickHouse/ClickHouse/pull/94095) ([Azat Khuzhin](https://github.com/azat)).
* Correction d’un crash provoqué par une exception levée lors d’un appel à `socket.setBlocking(true)` à l’intérieur de `SCOPE_EXIT`. [#94100](https://github.com/ClickHouse/ClickHouse/pull/94100) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction d'une perte de données lorsque `DROP PARTITION` supprime des parts créées par des entrées de log plus récentes dans ReplicatedMergeTree. [#94123](https://github.com/ClickHouse/ClickHouse/pull/94123) ([Tuan Pham Anh](https://github.com/tuanpach)).
* Correction du lecteur Parquet v3, qui gérait incorrectement les tableaux traversant des limites de page. Cela se produit par exemple avec des fichiers écrits par Arrow sans activer les statistiques de page ni l'index de page. N'affecte que les colonnes de type Array. Le symptôme le plus probable est qu'un tableau est tronqué environ toutes les \~1 Mo de données. En attendant ce correctif, utilisez ce paramètre comme solution de contournement : `input_format_parquet_use_native_reader_v3 = 0`. [#94125](https://github.com/ClickHouse/ClickHouse/pull/94125) ([Michael Kolupaev](https://github.com/al13n321)).
* Correction d'un trop grand nombre de watches dans ReplicatedMergeTree lors de l'attente d'une entrée de log. [#94133](https://github.com/ClickHouse/ClickHouse/pull/94133) ([Azat Khuzhin](https://github.com/azat)).
* Les fonctions `arrayShuffle`, `arrayPartialShuffle` et `arrayRandomSample` matérialisent désormais les colonnes constantes, afin que différentes lignes produisent des résultats différents. [#94134](https://github.com/ClickHouse/ClickHouse/pull/94134) ([Joanna Hulboj](https://github.com/jh0x)).
* Correction d'une data race lors de l'évaluation des fonctions de table dans les vues matérialisées. [#94171](https://github.com/ClickHouse/ClickHouse/pull/94171) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'un déréférencement de pointeur nul dans les moteurs de base de données `PostgreSQL` (lorsque la requête est incorrecte). Clôture [#92887](https://github.com/ClickHouse/ClickHouse/issues/92887). [#94180](https://github.com/ClickHouse/ClickHouse/pull/94180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'une fuite mémoire dans les vues matérialisées actualisables utilisant des requêtes `SELECT` avec plusieurs sous-requêtes. [#94200](https://github.com/ClickHouse/ClickHouse/pull/94200) ([Antonio Andelic](https://github.com/antonio2368)).
* Correction d'une data race entre `DataPartStorageOnDiskBase::remove` et `system.parts`. Clôture [#49076](https://github.com/ClickHouse/ClickHouse/issues/49076). [#94262](https://github.com/ClickHouse/ClickHouse/pull/94262) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suppression du mauvais spécificateur `noexcept` dans l'affectation par copie de HashTable, qui pouvait entraîner un crash (`std::terminate`) en cas d'exception mémoire. [#94275](https://github.com/ClickHouse/ClickHouse/pull/94275) ([Nikita Taranov](https://github.com/nickitat)).
* Auparavant, créer une projection avec des colonnes dupliquées dans GROUP BY (par exemple, `GROUP BY c0, c0`) puis insérer des données provoquait une `std::length_error` si `optimize_row_order` est activé. Clôture [#94065](https://github.com/ClickHouse/ClickHouse/issues/94065). [#94277](https://github.com/ClickHouse/ClickHouse/pull/94277) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d'un bug obscur dans le client ZooKeeper à la connexion, provoquant des blocages et des crashs. [#94320](https://github.com/ClickHouse/ClickHouse/pull/94320) ([Azat Khuzhin](https://github.com/azat)).
* Correction d'une optimisation réécrivant les fonctions en accès aux sous-colonnes, qui n'était pas appliquée aux sous-colonnes. [#94323](https://github.com/ClickHouse/ClickHouse/pull/94323) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction d'un résultat potentiellement incorrect dans des RIGHT JOIN imbriqués lorsque `enable_lazy_columns_replication` est activé. Le bug faisait que toutes les lignes des colonnes répliquées renvoyaient à tort la même valeur au lieu de leurs valeurs distinctes. Clôture [#93891](https://github.com/ClickHouse/ClickHouse/issues/93891). [#94339](https://github.com/ClickHouse/ClickHouse/pull/94339) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Correction du pushdown de filtre pour `SEMI JOIN` à l’aide d’ensembles d’équivalence. Le filtre n’est pas poussé vers le bas si les types d’argument ont changé. Corrige [#93264](https://github.com/ClickHouse/ClickHouse/issues/93264). [#94340](https://github.com/ClickHouse/ClickHouse/pull/94340) ([Dmitry Novik](https://github.com/novikd)).
* Correction de l’utilisation de DeltaLake CDF avec le moteur de base de données DataLake (intégration des catalogs Delta Lake). Clôt [#94122](https://github.com/ClickHouse/ClickHouse/issues/94122). [#94342](https://github.com/ClickHouse/ClickHouse/pull/94342) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Correction de la valeur incorrecte de la métrique `FilesystemCacheSizeLimit` lorsqu’une cache policy `SLRU` était utilisée. [#94363](https://github.com/ClickHouse/ClickHouse/pull/94363) ([Kseniia Sumarokova](https://github.com/kssenii)).
* La création d’un moteur de base de données Backup avec moins de deux arguments renvoie désormais un message d’erreur plus explicite (`Wrong number of arguments` au lieu de `std::out_of_range: InlinedVector::at(size_type) const failed bounds check.`). [#94374](https://github.com/ClickHouse/ClickHouse/pull/94374) ([Robert Schulze](https://github.com/rschu1ze)).
* Ignore les révocations impossibles de privilèges globaux au niveau de la base de données pour les privilèges avec l’option GRANT. [#94386](https://github.com/ClickHouse/ClickHouse/pull/94386) ([pufit](https://github.com/pufit)).
* Correction de la lecture des offsets épars depuis des parties compactes. Clôt [#94385](https://github.com/ClickHouse/ClickHouse/issues/94385). [#94399](https://github.com/ClickHouse/ClickHouse/pull/94399) ([Pavel Kruglov](https://github.com/Avogar)).
* N’empêche plus l’ALTER des colonnes utilisant des index implicites, même si le mode `throw` de `alter_column_secondary_index_mode` est utilisé. [#94425](https://github.com/ClickHouse/ClickHouse/pull/94425) ([Raúl Marín](https://github.com/Algunenano)).
* Correction d’un crash dans `TCPHandler` lorsque plusieurs appels à `receivePacketsExpectQuery` lisent `Protocol::Client::IgnoredPartUUIDs`. [#94434](https://github.com/ClickHouse/ClickHouse/pull/94434) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Correction du masquage des données sensibles dans `system.functions`. [#94436](https://github.com/ClickHouse/ClickHouse/pull/94436) ([Vitaly Baranov](https://github.com/vitlibar)).
* Correction d’un déréférencement de pointeur nul avec `send_profile_events` désactivé. Cette fonctionnalité a été introduite récemment pour le driver Python de ClickHouse. Clôt [#92488](https://github.com/ClickHouse/ClickHouse/issues/92488). [#94466](https://github.com/ClickHouse/ClickHouse/pull/94466) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une incompatibilité `.mrk` de l’index de texte pendant les fusions. [#94494](https://github.com/ClickHouse/ClickHouse/pull/94494) ([Peng Jian](https://github.com/fastio)).
* Lorsque `read_in_order_use_virtual_row` est activé, le code accédait aux colonnes d’index en se basant sur la taille complète de la clé primaire sans vérifier si l’index avait été tronqué, ce qui entraînait une utilisation après libération / mémoire non initialisée. Clôt [#85596](https://github.com/ClickHouse/ClickHouse/issues/85596). [#94500](https://github.com/ClickHouse/ClickHouse/pull/94500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une erreur due à une incompatibilité de type lors de l’envoi de tables externes pour des sous-requêtes avec GLOBAL IN si les types sont Nullable. Clôt [#94097](https://github.com/ClickHouse/ClickHouse/issues/94097). [#94511](https://github.com/ClickHouse/ClickHouse/pull/94511) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dans les versions précédentes, les requêtes comportant plusieurs conditions d’index sur la même expression pouvaient, à tort, lever l’exception `Not found column`. Clôt [#60660](https://github.com/ClickHouse/ClickHouse/issues/60660). [#94515](https://github.com/ClickHouse/ClickHouse/pull/94515) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige la gestion incorrecte d’une colonne de jointure Nullable dans les filtres d’exécution. [#94555](https://github.com/ClickHouse/ClickHouse/pull/94555) ([Alexander Gololobov](https://github.com/davenger)).
* La création d’un workload dans un autre workload déjà en cours d’utilisation ne provoque plus de crash. [#94599](https://github.com/ClickHouse/ClickHouse/pull/94599) ([Sergei Trifonov](https://github.com/serxa)).
* Corrige un crash lors de l’optimisation de ANY LEFT JOIN lorsque `isNotNull` est évalué sur une colonne absente. [#94600](https://github.com/ClickHouse/ClickHouse/pull/94600) ([Molly](https://github.com/ggmolly)).
* Corrige l’évaluation des expressions par défaut lorsqu’elles référencent d’autres colonnes ayant des valeurs par défaut calculées. [#94615](https://github.com/ClickHouse/ClickHouse/pull/94615) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige les problèmes d’autorisation dans les opérations BACKUP/RESTORE. [#94617](https://github.com/ClickHouse/ClickHouse/pull/94617) ([Pablo Marcos](https://github.com/pamarcos)).
* Corrige un crash dû à une conversion de type incorrecte lorsque le type de données est `Nullable(DateTime64)`. [#94627](https://github.com/ClickHouse/ClickHouse/pull/94627) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Corrige un bug où certaines requêtes distribuées avec `ORDER BY` pouvaient renvoyer des colonnes `ALIAS` avec des valeurs inversées (c.-à-d. la colonne `a` affichant les données de la colonne `b`, et inversement). [#94644](https://github.com/ClickHouse/ClickHouse/pull/94644) ([filimonov](https://github.com/filimonov)).
* Corrige l’enregistrement des résultats de keeper-bench dans un fichier. [#94654](https://github.com/ClickHouse/ClickHouse/pull/94654) ([Antonio Andelic](https://github.com/antonio2368)).
* Corrige des estimations incorrectes avec des statistiques de type MinMax lorsque la colonne contient des valeurs négatives à virgule flottante. [#94665](https://github.com/ClickHouse/ClickHouse/pull/94665) ([zoomxi](https://github.com/zoomxi)).
* Corrige la lecture des fichiers Parquet lorsque la clé d’une map est une struct. [#94670](https://github.com/ClickHouse/ClickHouse/pull/94670) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Corrige un résultat de RIGHT JOIN potentiellement incorrect lors de l’utilisation de conditions ON complexes. Clôt [#92913](https://github.com/ClickHouse/ClickHouse/issues/92913). [#94680](https://github.com/ClickHouse/ClickHouse/pull/94680) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Préserve la granularité d’index constante (use\_const\_adaptive\_granularity) après les fusions verticales. [#94725](https://github.com/ClickHouse/ClickHouse/pull/94725) ([Azat Khuzhin](https://github.com/azat)).
* Corrige un bug de mutation avec des sous-requêtes scalaires et des dépendances de table. Si une table avait des dépendances (index ou projections) sur une colonne, les sous-requêtes scalaires pouvaient être évaluées et mises en cache sans données, entraînant des modifications incorrectes. [#94731](https://github.com/ClickHouse/ClickHouse/pull/94731) ([Raúl Marín](https://github.com/Algunenano)).
* Corrige le fallback de cpu\_pressure d’AsynchronousMetrics en cas d’erreur. [#94827](https://github.com/ClickHouse/ClickHouse/pull/94827) ([Raúl Marín](https://github.com/Algunenano)).
* La fonction `getURLHostRFC` n’effectuait pas de vérification des limites avant le déréférencement des pointeurs. Lorsqu’une chaîne vide était passée à `domainRFC`, elle lisait de la mémoire non initialisée, déclenchant des erreurs MSan. [#94851](https://github.com/ClickHouse/ClickHouse/pull/94851) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige le caractère readonly des disques chiffrés. [#94852](https://github.com/ClickHouse/ClickHouse/pull/94852) ([Azat Khuzhin](https://github.com/azat)).
* Corrige une erreur logique dans `LIMIT/OFFSET` fractionnaire lors de l’utilisation de l’ancien analyseur avec les tables Distributed. Clôt [#94712](https://github.com/ClickHouse/ClickHouse/issues/94712). [#94999](https://github.com/ClickHouse/ClickHouse/pull/94999) ([Ahmed Gouda](https://github.com/0xgouda)).
* Corrige un plantage dans certaines conditions lorsque les filtres runtime de jointure sont activés par défaut. [#95000](https://github.com/ClickHouse/ClickHouse/pull/95000) ([Alexander Gololobov](https://github.com/davenger)).
* Améliore le masquage des mots de passe dans les URL utilisées dans le moteur de table `URL()` et la fonction de table `url()`. [#95006](https://github.com/ClickHouse/ClickHouse/pull/95006) ([Vitaly Baranov](https://github.com/vitlibar)).
* La fonction `toStartOfInterval` fonctionne désormais de la même manière que `toStartOfX`, où `X` vaut `Day, Week, Month, Quarter, Year` lorsque `enable_extended_results_for_datetime_functions` est activé. [#95011](https://github.com/ClickHouse/ClickHouse/pull/95011) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Corrige les comparaisons de chaînes constantes qui ne respectaient pas les paramètres `cast_string_to_date_time_mode`, `bool_true_representation`, `bool_false_representation` et `input_format_null_as_default`. Résout [#91681](https://github.com/ClickHouse/ClickHouse/issues/91681). [#95040](https://github.com/ClickHouse/ClickHouse/pull/95040) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Corrige une data race dans le cache du système de fichiers. [#95064](https://github.com/ClickHouse/ClickHouse/pull/95064) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige une rare condition de concurrence dans le lecteur Parquet. [#95068](https://github.com/ClickHouse/ClickHouse/pull/95068) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Corrige un plantage dans l’optimisation top K lorsque `LIMIT` vaut zéro. Résout [#93893](https://github.com/ClickHouse/ClickHouse/issues/93893). [#95072](https://github.com/ClickHouse/ClickHouse/pull/95072) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La conversion de DateTime/entiers vers Time64 extrait la composante horaire via `toTime`, qui n’est pas monotone. Le template `ToDateTimeMonotonicity` indiquait à tort que cette conversion était monotone, ce qui provoquait l’exception "Invalid binary search result in MergeTreeSetIndex" dans les builds de débogage. [#95125](https://github.com/ClickHouse/ClickHouse/pull/95125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ne recrée la liste des entrées du fichier manifeste que si nécessaire (auparavant, cela était fait à chaque itération). [#95162](https://github.com/ClickHouse/ClickHouse/pull/95162) ([Daniil Ivanik](https://github.com/divanik)).

<div id="267-build-testing-packaging-improvement">
  #### Amélioration de la compilation/des tests/du packaging
</div>

* Ajout d'un ensemble d'outils pour le profilage des allocations mémoire dans le parseur SQL de ClickHouse à l'aide des capacités de profilage du tas de jemalloc. [#94072](https://github.com/ClickHouse/ClickHouse/pull/94072) ([Ilya Yatsishin](https://github.com/qoega)).
* Ajout d'un outil qui simplifie le débogage des allocations mémoire dans le parseur. Il utilise la métrique jemalloc `stats.allocated` avant et après l'analyse de la requête en représentation AST pour montrer ce qui a été alloué. Il prend également en charge un mode de profilage mémoire qui génère un dump du profil avant et après afin de produire des rapports indiquant où les allocations se sont produites. [#93523](https://github.com/ClickHouse/ClickHouse/pull/93523) ([Ilya Yatsishin](https://github.com/qoega)).
* Suppression des inclusions transitives de libc++. [#92523](https://github.com/ClickHouse/ClickHouse/pull/92523) ([Raúl Marín](https://github.com/Algunenano)).
* Exécution en parallèle de certains tests séquentiels : [https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df](https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df). [#93030](https://github.com/ClickHouse/ClickHouse/pull/93030) ([Nikita Fomichev](https://github.com/fm4v)).
* Nettoyage de certaines options de compilation. [#93679](https://github.com/ClickHouse/ClickHouse/pull/93679) ([Raúl Marín](https://github.com/Algunenano)).
* Passage de c-ares de v1.34.5 à v1.34.6. Cela corrige la `CVE-2025-62408` de c-ares, qui n'est pas pertinente pour ClickHouse. [#94129](https://github.com/ClickHouse/ClickHouse/pull/94129) ([Govind R Nair](https://github.com/Revertionist)).
* Utilisation de `curl` 8.18.0. [#94742](https://github.com/ClickHouse/ClickHouse/pull/94742) ([Konstantin Bogdanov](https://github.com/thevar1able)).
