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

# changelog de la v26.4 pour Cloud

> Changelog de la v26.4

<div id="backward-incompatible-changes">
  ## Changements incompatibles avec les versions précédentes
</div>

<div id="query-and-syntax-changes">
  ### Modifications des requêtes et de la syntaxe
</div>

* L’opérateur `IN` utilise désormais une sémantique de correspondance exacte des valeurs 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 forcées à true, de sorte que `SELECT CAST(1, 'Bool') IN (256)` renvoyait `1`. Cette expression renvoie désormais correctement `0`. [#93115](https://github.com/ClickHouse/ClickHouse/pull/93115) ([Ashrith Bandla](https://github.com/ashrithb)).
* Correction de la priorité de l’opérateur `NOT` pour l’aligner sur le standard SQL : `NOT` a désormais une priorité inférieure à `IS NULL`, `BETWEEN`, `LIKE` et aux opérateurs arithmétiques. Par exemple, `NOT (x) IS NULL` est désormais interprété 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 l’ancien comportement (non standard). [#97680](https://github.com/ClickHouse/ClickHouse/pull/97680) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SELECT` n’est plus autorisé comme identifiant non cité dans un élément de liste d’expressions `WITH`. [#101059](https://github.com/ClickHouse/ClickHouse/pull/101059) ([Aruj Bansal](https://github.com/arujbansal)).
* L’opérateur `IN` rejette désormais les conversions `Decimal` avec perte à l’intérieur des types composites (`Tuple`, `Array`, `Map`), ce qui rend son comportement cohérent avec celui des comparaisons scalaires de niveau supérieur. Auparavant, les vérifications de précision n’étaient appliquées qu’aux valeurs scalaires de niveau supérieur : 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`. Les deux cas renvoient désormais correctement `0`. [#101812](https://github.com/ClickHouse/ClickHouse/pull/101812) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="data-type-changes">
  ### Modifications des types de données
</div>

* Les versions de sérialisation des types de données sont désormais propagées aux types de données imbriqués. Par exemple, la version de sérialisation de String `with_size_stream` n’était auparavant appliquée qu’aux colonnes String de premier niveau et aux éléments de Tuple ; elle s’applique désormais à tout type String à l’intérieur de n’importe quel type imbriqué, comme Array, Map, Variant ou JSON. 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 cette modification, les nouvelles data parts créées ne peuvent plus être lues par les anciennes versions, mais les anciennes parts peuvent être lues par la nouvelle version. Les mises à niveau sont sûres, mais pas les retours à une version antérieure. [#94859](https://github.com/ClickHouse/ClickHouse/pull/94859) ([Pavel Kruglov](https://github.com/Avogar)).
* Correction du boutisme de la sérialisation binaire de `QBit` afin d’utiliser le format little-endian. [#101378](https://github.com/ClickHouse/ClickHouse/pull/101378) ([Raufs Dunamalijevs](https://github.com/rienath)).

<div id="storage-and-index-changes">
  ### Modifications du stockage et des index
</div>

* Correction des métadonnées des projections normales afin que les projections avec des clés de tri multicolonnes soient correctement reconnues. [#91352](https://github.com/ClickHouse/ClickHouse/pull/91352) ([Amos Bird](https://github.com/amosbird)).
* Correction des fichiers d'index de saut qui ne respectaient pas le paramètre `replace_long_file_name_to_hash`, ce qui provoquait des erreurs « Nom de fichier trop long » ainsi que des erreurs de lecture d'index pour les index aux noms longs. Les noms de fichiers des index de saut sont désormais hachés lorsqu'ils dépassent `max_file_name_length`, comme pour les fichiers de colonne. Ce changement est rétrocompatible (les nouveaux serveurs lisent les anciennes parts), mais une rétrogradation (ou d'anciens serveurs lors d'une mise à niveau progressive) peut entraîner l'ignorance des index aux noms longs. [#97128](https://github.com/ClickHouse/ClickHouse/pull/97128) ([Raúl Marín](https://github.com/Algunenano)).

<div id="removed-features">
  ### Fonctionnalités supprimées
</div>

* Suppression du type de skip index `hypothesis`. Il s’agissait d’une fonctionnalité expérimentale peu utilisée et d’un intérêt pratique limité. La création de tables avec `INDEX ... TYPE hypothesis` génère désormais une erreur. [#96874](https://github.com/ClickHouse/ClickHouse/pull/96874) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Suppression de la fonction expérimentale `detectProgrammingLanguage`. [#99567](https://github.com/ClickHouse/ClickHouse/pull/99567) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="settings-and-configuration-changes">
  ### Modifications des paramètres et de la configuration
</div>

* La valeur par défaut de `mysql_datatypes_support_level` a été modifiée, passant 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)).

<div id="insert-and-deduplication-changes">
  ### Modifications des insertions et de la déduplication
</div>

* L’async insert est désormais activé par défaut — ClickHouse regroupe par lots toutes les petites insertions. Ce comportement est régi par le paramètre `compatibility` : définir `compatibility` sur une version inférieure à 26.2 rétablit l’ancienne valeur par défaut, `false`. Les insertions asynchrones peuvent être activées ou désactivées à plusieurs niveaux : dans les profils utilisateur de la config, 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)).

<div id="system-table-changes">
  ### Modifications des tables système
</div>

* Restauration de la colonne `skip_indexes` dans `system.query_log`. [#101018](https://github.com/ClickHouse/ClickHouse/pull/101018) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="other-breaking-changes">
  ### Autres changements incompatibles
</div>

* `mergeTreeAnalyzeIndexes{,UUID}` accepte désormais un tableau de noms de parties au lieu d'une expression régulière, 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 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 est incompatible avec les versions précédentes, car les nouveaux résultats diffèrent des anciens. [#100348](https://github.com/ClickHouse/ClickHouse/pull/100348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* La manière dont la table `Merge` gère les colonnes virtuelles a été modifiée. Si la table sous-jacente contient `_table` ou `_database`, ces colonnes sont lues depuis le stockage ; sinon, elles sont renseignées après l'étape de lecture, via l'étape d'expression. [#101742](https://github.com/ClickHouse/ClickHouse/pull/101742) ([Mikhail Artemenko](https://github.com/Michicosun)).

<div id="new-features">
  ## Nouvelles fonctionnalités
</div>

<div id="functions">
  ### Fonctions
</div>

* Ajout de la fonction `naturalSortKey(s)` pour les clés de tri naturel. [#90322](https://github.com/ClickHouse/ClickHouse/pull/90322) ([Nazarii Piontko](https://github.com/nazarii-piontko)).
* Ajout de la fonction `arrayAutocorrelation(arr [, max_lag])`, qui calcule l’autocorrélation normalisée d’un tableau de nombres pour chaque décalage. Prend en charge les types de tableaux d’entiers, de nombres à virgule flottante et décimaux. [#94776](https://github.com/ClickHouse/ClickHouse/pull/94776) ([Wenyu Chen](https://github.com/wenyuchen96)).
* La fonction `has()` est désormais prise en charge pour le type JSON afin de vérifier l’existence d’un chemin, comme avec `Map`. [#96927](https://github.com/ClickHouse/ClickHouse/pull/96927) ([DQ](https://github.com/il9ue)).
* Ajout de la fonction de table `mergeTreeTextIndex(database, table, index)`, qui lit les données directement depuis un text index. Elle peut être utilisée pour l’introspection ou pour effectuer des aggregations sur les données du text index. [#97003](https://github.com/ClickHouse/ClickHouse/pull/97003) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout de la fonction SQL `obfuscateQuery`. [#98305](https://github.com/ClickHouse/ClickHouse/pull/98305) ([Xuewei Wang](https://github.com/Sallery-X)).
* 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)).
* La fonction `printf` prend désormais en charge les chaînes de format non constantes, ce qui permet d’utiliser un format différent pour chaque ligne en fonction des valeurs des colonnes. [#98991](https://github.com/ClickHouse/ClickHouse/pull/98991) ([Yash](https://github.com/Onyx2406)).
* 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, ainsi que des balises d’ouverture et de fermeture personnalisées. [#99131](https://github.com/ClickHouse/ClickHouse/pull/99131) ([Peng](https://github.com/fastio)).
* 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 segmente le texte selon les règles de délimitation des mots Unicode : les mots ASCII sont formés avec des caractères de liaison (tiret bas, deux-points, point, apostrophe), tandis que les caractères Unicode non ASCII deviennent des tokens d’un seul caractère. Les stop words configurables utilisent par défaut la ponctuation CJK courante. [#99357](https://github.com/ClickHouse/ClickHouse/pull/99357) ([Amos Bird](https://github.com/amosbird)).
* Ajout de la fonction `arrayTranspose`, qui prend un tableau bidimensionnel (matrice) et le transpose. [#101214](https://github.com/ClickHouse/ClickHouse/pull/101214) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ajout de la fonction `hasPhrase` (alias `matchPhrase`) pour la recherche de phrases (séquences continues de tokens). La recherche s’effectue en brute-force et 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 de `dotProduct` comme fonction de distance prise en charge pour les vector similarity indexes. La direction du tri est désormais validée pour toutes les fonctions de distance afin d’éviter des résultats incorrects sans avertissement. [#102254](https://github.com/ClickHouse/ClickHouse/pull/102254) ([Renzo](https://github.com/RenzoMXD)).
* La fonction `stem` peut désormais appliquer la racinisation à tous les mots/tokens dans les colonnes `String`, `FixedString`, `Array([Fixed]String)`, `Nullable`, `LowCardinality` et `Const`. [#99137](https://github.com/ClickHouse/ClickHouse/pull/99137) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* La fonction `stem` n’est plus expérimentale (auparavant, il fallait activer `allow_experimental_nlp_functions`). [#102399](https://github.com/ClickHouse/ClickHouse/pull/102399) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
* Ajout de la fonction `JSONAllValues`, qui renvoie toutes les valeurs d’une colonne `JSON` sous forme de `Array(String)`, les valeurs étant sérialisées en représentation textuelle et ordonnées selon leur nom de chemin. Ajout également de la prise en charge des index textuels pour l’expression `JSONAllValues` sur les colonnes `JSON` : lorsqu’un index textuel 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’unités compatibles avec PostgreSQL à l’opérateur `EXTRACT` : `EPOCH`, `DOW`, `DOY`, `ISODOW`, `ISOYEAR`, `WEEK`, `CENTURY`, `DECADE` et `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, via un sucre syntaxique du parseur, de la syntaxe SQL standard de la fonction `OVERLAY`. 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)).
* Les valeurs `Date` et `Date32` peuvent désormais être additionnées aux 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 fuseau horaire de la session, et les résultats hors plage sont gérés conformément au paramètre `date_time_overflow_behavior`. [#102421](https://github.com/ClickHouse/ClickHouse/pull/102421) ([Nihal Z. Miaji](https://github.com/nihalzp)).

<div id="sql-and-query-features">
  ### Fonctionnalités SQL et de requête
</div>

* Lorsqu’un paramètre est de type `Nullable` et n’est pas spécifié, sa valeur est désormais considérée comme `NULL`. [#93869](https://github.com/ClickHouse/ClickHouse/pull/93869) ([Vikash Kumar](https://github.com/vikashkumar2020)).
* ClickHouse peut désormais éliminer des data parts entières dans les requêtes `SELECT` en s’appuyant sur les statistiques min/max. [#94140](https://github.com/ClickHouse/ClickHouse/pull/94140) ([zoomxi](https://github.com/zoomxi)).
* Ajout de la prise en charge des Materialized CTEs, qui n’évaluent les CTE qu’une seule fois pendant l’exécution de la requête et stockent leurs résultats dans des tables temporaires. [#94849](https://github.com/ClickHouse/ClickHouse/pull/94849) ([Dmitry Novik](https://github.com/novikd)).
* Certaines fonctions peuvent désormais être utilisées sans parenthèses en SQL. [#95949](https://github.com/ClickHouse/ClickHouse/pull/95949) ([Aly Kafoury](https://github.com/AlyHKafoury)).
* Ajout de la syntaxe de subcolumn combinée `json.@path` pour le type `JSON`. Elle renvoie la valeur littérale sous forme de `Dynamic` si le chemin contient un scalaire, le sub-object sous forme de `Dynamic` si le chemin contient un objet imbriqué, ou `NULL` si le chemin est absent. [#98788](https://github.com/ClickHouse/ClickHouse/pull/98788) ([Pavel Kruglov](https://github.com/Avogar)).
* Ajout du keyword `SOME` pour les expressions de subquery. Son comportement est identique à celui de `ANY`. [#99842](https://github.com/ClickHouse/ClickHouse/pull/99842) ([Artem Kytkin](https://github.com/Vinceent)).
* Ajout de la 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 de la clause SQL standard `VALUES` comme expression de table dans `FROM`, par exemple `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 de la prise en charge des littéraux d’intervalle composés conformes au standard SQL avec des qualificateurs de plage `TO`, par exemple `INTERVAL '1:30' HOUR TO MINUTE`, décomposés en interne en sommes d’intervalles. [#100453](https://github.com/ClickHouse/ClickHouse/pull/100453) ([Desel72](https://github.com/Desel72)).
* Ajout 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)).

<div id="table-engines-and-storage">
  ### Moteurs de table et stockage
</div>

* Ajout de la prise en charge de la lecture incrémentielle pour le moteur de table `Paimon`, avec suivi de la progression des snapshots via Keeper, y compris des lectures delta ciblées de snapshots via `paimon_target_snapshot_id`. [#93655](https://github.com/ClickHouse/ClickHouse/pull/93655) ([XiaoBinMu](https://github.com/Binnn-MX)).
* Ajout de la prise en charge de ZooKeeper auxiliaire dans `DatabaseReplicated`. [#95590](https://github.com/ClickHouse/ClickHouse/pull/95590) ([RinChanNOW](https://github.com/RinChanNOWWW)).
* Ajout de la prise en charge de la lecture des types de timestamp à la nanoseconde d’Iceberg v3 (`timestamp_ns` et `timestamptz_ns`), mappés vers `DateTime64(9)` et `DateTime64(9, 'UTC')`. Cela permet à ClickHouse de lire des données Iceberg utilisant ces types dans le schéma ; cela ne constitue ni une prise en charge complète d’Iceberg v3, ni la possibilité d’écrire en Iceberg v3 avec ces types. [#97132](https://github.com/ClickHouse/ClickHouse/pull/97132) ([Dmitry Kovalev](https://github.com/dk-github)).
* Ajout de `ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')` pour les tables Iceberg. [#97904](https://github.com/ClickHouse/ClickHouse/pull/97904) ([murphy-4o](https://github.com/murphy-4o)).
* Ajout d’un nouveau cache SLRU pour les métadonnées Parquet afin d’améliorer les performances de lecture en évitant de retélécharger des fichiers uniquement pour lire les métadonnées. [#98140](https://github.com/ClickHouse/ClickHouse/pull/98140) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* Ajout de la prise en charge des index de saut de MergeTree pour les colonnes JSON à l’aide de `JSONAllPaths` avec les types d’index `bloom_filter`, `tokenbf_v1`, `ngrambf_v1` et `text` (inversé), permettant d’ignorer des granules en fonction de l’ensemble des chemins JSON présents dans chaque granule. [#98886](https://github.com/ClickHouse/ClickHouse/pull/98886) ([Pavel Kruglov](https://github.com/Avogar)).
* Ajout de l’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 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 la colonne entière, ce qui offre une accélération de 2 à 49x pour les recherches 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 les nouveaux paramètres MergeTree `map_serialization_version`, `max_buckets_in_map`, `map_buckets_strategy`, `map_buckets_coefficient` et `map_buckets_min_avg_size`. Le paramètre `map_serialization_version_for_zero_level_parts` conserve la sérialisation de base pour les insertions afin d’éviter une surcharge d’écriture, tandis que les parts fusionnées utilisent des buckets. Les index de saut sur `mapKeys`/`mapValues` sont pris en charge avec la sérialisation par buckets, et `optimize_functions_to_subcolumns` réécrit `m['key']` en lecture d’une subcolumn par clé lorsque des buckets sont disponibles. [#99200](https://github.com/ClickHouse/ClickHouse/pull/99200) ([Pavel Kruglov](https://github.com/Avogar)).

<div id="insert-and-deduplication">
  ### Insertion et déduplication
</div>

* Mise en place d’un nouveau comportement pour `max_insert_block_size_rows`, `max_insert_block_size_bytes`, `min_insert_block_size_rows` et `min_insert_block_size_bytes` dans le processus de squashing, régi par le paramètre de compatibilité `use_strict_insert_block_limits`. [#94207](https://github.com/ClickHouse/ClickHouse/pull/94207) ([Kirill Kopnev](https://github.com/Fgrtue)).

<div id="settings-and-configuration">
  ### Paramètres et configuration
</div>

* Ajout du paramètre MergeTree `table_readonly` pour marquer les tables en lecture seule et empêcher les insertions et les modifications. [#97652](https://github.com/ClickHouse/ClickHouse/pull/97652) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du paramètre `use_partition_pruning` (alias `use_partition_key`). Définissez-le sur `false` pour désactiver l’élagage des partitions en fonction de la clé de partition. [#97888](https://github.com/ClickHouse/ClickHouse/pull/97888) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Chaque entrée `type=http` dans `<protocols>` peut désormais spécifier une clé `<handlers>` personnalisée pointant vers une section de configuration `<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 deux paramètres MergeTree — `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 homologues des parts récemment insérées (non fusionnées), réduisant ainsi la surcharge liée à la réplication lors d’une ingestion intensive. [#98625](https://github.com/ClickHouse/ClickHouse/pull/98625) ([tanner-bruce](https://github.com/tanner-bruce)).
* Ajout du paramètre serveur `restore_access_entities_with_current_grants`. Lorsqu’il est activé, les privilèges des utilisateurs/rôles restaurés sont 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 paramètres `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 seuil 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)).
* Implémentation de quotas par hash de requête normalisée pour protéger les services ClickHouse publics contre les abus. `NORMALIZED_QUERY_HASH` est pris en charge comme type de clé de quota — avec un quota distinct 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. `QUERIES_PER_NORMALIZED_HASH` est pris en charge comme type de ressource de quota — limitant le nombre maximal d’exécutions d’une même requête normalisée dans un intervalle, de sorte que `MAX queries_per_normalized_hash = 100` empêche un même modèle de requête de s’exécuter plus de 100 fois. [#99586](https://github.com/ClickHouse/ClickHouse/pull/99586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Le paramètre MergeTree `auto_statistics_types` a désormais pour valeur par défaut `minmax, uniq`, de sorte que des statistiques minmax et uniq sont créées automatiquement pour toutes les colonnes appropriées dans les nouvelles tables. `materialize_statistics_on_insert` a désormais pour valeur par défaut `false`, de sorte que les statistiques sont construites lors des fusions plutôt qu’au moment de l’insertion, réduisant ainsi la surcharge des insertions. Définissez `materialize_statistics_on_insert = 1` pour rétablir l’ancien comportement. [#101275](https://github.com/ClickHouse/ClickHouse/pull/101275) ([Han Fei](https://github.com/hanfei1991)).
* Ajout du paramètre d’actualisation `prefer_dependency_replica` pour les chaînes de dépendances de vues matérialisées afin de réduire les données manquantes dues au décalage de réplication entre répliques. [#101591](https://github.com/ClickHouse/ClickHouse/pull/101591) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="authentication">
  ### Authentification
</div>

* Ajout de l’option de configuration LDAP par serveur `<follow_referrals>` (par défaut `false`) pour contrôler si le client LDAP suit les renvois. Désactiver le suivi des renvois évite les timeouts et les blocages lors des recherches à partir d’une base DN racine de domaine Active Directory, et réduit le bruit dans les journaux. [#96765](https://github.com/ClickHouse/ClickHouse/pull/96765) ([paf91](https://github.com/paf91)).

<div id="system-tables">
  ### Tables système
</div>

* Ajout de `system.histogram_metric_log`, une nouvelle table système qui prend périodiquement des instantanés de toutes les métriques sous forme d’histogrammes (par ex. les latences S3/Azure, les durées des étapes de traitement des requêtes de Keeper). La colonne `value` de `system.histogram_metrics` est désormais de type `Float64` pour offrir davantage de flexibilité et une meilleure compatibilité avec le modèle de données Prometheus. [#103046](https://github.com/ClickHouse/ClickHouse/pull/103046) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).

<div id="experimental-features">
  ## Fonctionnalités expérimentales
</div>

* 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 des Lazy Type Hints expérimentaux pour les colonnes JSON. Lorsqu’ils sont activés via `allow_experimental_json_lazy_type_hints`, `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)`, lorsqu’il ajoute ou modifie uniquement des indications de type, s’exécute instantanément comme une simple opération sur les métadonnées, sans réécriture des données historiques. Les indications de type sont appliquées au moment de la requête pour les anciennes parts et matérialisées lors des INSERT et des fusions en arrière-plan. [#97412](https://github.com/ClickHouse/ClickHouse/pull/97412) ([tanner-bruce](https://github.com/tanner-bruce)).
* Ajout de la prise en charge des dialectes SQL externes via la bibliothèque `polyglot`. [#99496](https://github.com/ClickHouse/ClickHouse/pull/99496) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout du paramètre `query_plan_optimize_join_order_randomize`, qui rend aléatoires les statistiques utilisées pour la réorganisation des 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 AI functions dans ClickHouse, permettant aux utilisateurs d’appeler des points de terminaison OpenAI et Anthropic en SQL. `aiGenerate` est la première fonction de ce type incluse. [#100831](https://github.com/ClickHouse/ClickHouse/pull/100831) ([George Larionov](https://github.com/george-larionov)).
* Ajout des AI functions `aiClassify`, `aiExtract` et `aiTranslate` pour exploiter des API de LLM dans ClickHouse. [#100832](https://github.com/ClickHouse/ClickHouse/pull/100832) ([George Larionov](https://github.com/george-larionov)).
* Ajout de la prise en charge des data lakes sur Azure avec Delta Kernel. [#102202](https://github.com/ClickHouse/ClickHouse/pull/102202) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).

<div id="performance-improvements">
  ## Améliorations des performances
</div>

<div id="join-performance">
  ### Performances des JOIN
</div>

* Quelques améliorations ont été apportées à `HashJoin` et `ConcurrentHashJoin`. [#96663](https://github.com/ClickHouse/ClickHouse/pull/96663) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajout de la prise en charge de l'inversion des côtés des JOIN `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)).
* Réduction de la contention du cache dans les JOIN `RIGHT` et `FULL` en vérifiant si `JoinUsedFlags` est défini avant écriture. [#99274](https://github.com/ClickHouse/ClickHouse/pull/99274) ([Hechem Selmi](https://github.com/m-selmi)).
* Accélération des hash joins sur des clés `Int32` et `Int64` couvrant une petite plage, grâce à l'utilisation d'une table de hachage à index direct. [#99275](https://github.com/ClickHouse/ClickHouse/pull/99275) ([Hechem Selmi](https://github.com/m-selmi)).

<div id="query-optimization">
  ### Optimisation des requêtes
</div>

* Optimisation du saut de granules pour `pointInPolygon` sur de grands polygones, et correction d'une erreur dans l'analyse d'index de `pointInPolygon` qui se produisait lors de l'élagage par clé primaire. [#91633](https://github.com/ClickHouse/ClickHouse/pull/91633) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* `optimize_read_in_order` est désormais pris en compte lors de la lecture des projections. [#95885](https://github.com/ClickHouse/ClickHouse/pull/95885) ([Andrey Zvonov](https://github.com/zvonand)).
* Légère optimisation de la lecture depuis le dictionnaire du text index, ce qui améliore les performances globales de l'analyse du text index. [#97519](https://github.com/ClickHouse/ClickHouse/pull/97519) ([Anton Popov](https://github.com/CurtizJ)).
* Amélioration des performances de l'analyse du text index pour les requêtes comportant 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 d'index était désactivée à tort dans ce type de 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 arrays ou des maps très volumineux. [#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 élagage de granules. [#98410](https://github.com/ClickHouse/ClickHouse/pull/98410) ([Amos Bird](https://github.com/amosbird)).
* Le paramètre `optimize_syntax_fuse_functions` est désormais activé par défaut. [#98424](https://github.com/ClickHouse/ClickHouse/pull/98424) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* L'élagage des partitions est désormais autorisé lorsque le prédicat contient n'importe quel opérateur de comparaison (`=`, `<`, `>`, `!=`) et que la clé de partition est enveloppée dans une chaîne de fonctions déterministes (par exemple, avec `PARTITION BY x`, 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). [#98432](https://github.com/ClickHouse/ClickHouse/pull/98432) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* L'optimisation de lecture dans l'ordre et l'élagage par clé primaire sont désormais autorisés 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 dans l'ordre pour `ORDER BY x::Nullable(UInt64)` et l'élagage par clé primaire pour 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)).
* L'élagage d'index et le pushdown des filtres sont désormais autorisés 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 désormais poussés vers les table functions `primes()` et `numbers()` au lieu d'entraîner une exécution non bornée. [#98516](https://github.com/ClickHouse/ClickHouse/pull/98516) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Les requêtes qui filtrent sur des colonnes de clé primaire MergeTree avec des alternances Regex sur des chaînes littérales, telles que `^(abc-1|abc-2)`, peuvent désormais utiliser l'élagage par clé primaire lorsque les alternatives partagent un préfixe commun. [#98988](https://github.com/ClickHouse/ClickHouse/pull/98988) ([Yash](https://github.com/Onyx2406)).
* Optimisation de `INTERSECT ALL` et `EXCEPT ALL`. [#99097](https://github.com/ClickHouse/ClickHouse/pull/99097) ([Raufs Dunamalijevs](https://github.com/rienath)).
* Ajout de la 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)).
* 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)).
* Correction de la dégradation des performances de mise à l’échelle pour les requêtes courtes avec agrégation sur des machines dotées d’un grand nombre de 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 presque vides. [#99493](https://github.com/ClickHouse/ClickHouse/pull/99493) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Amélioration des performances des requêtes avec répliques parallèles grâce à une sélection correcte de la taille des tâches de lecture. [#99801](https://github.com/ClickHouse/ClickHouse/pull/99801) ([Nikita Taranov](https://github.com/nickitat)).
* Suppression des éléments `ORDER BY` redondants en fin de clause une fois que toutes les clés `GROUP BY` sont couvertes par le préfixe `ORDER BY`. [#100157](https://github.com/ClickHouse/ClickHouse/pull/100157) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Optimisation des requêtes en appliquant la clause `LIMIT` au niveau de `UNION ALL`. [#100364](https://github.com/ClickHouse/ClickHouse/pull/100364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ajout de la prise en charge de la compilation JIT pour les comparaisons de colonnes `String` et `FixedString` dans `ORDER BY`, améliorant de 6 à 17 % les performances de tri pendant la phase de fusion pour les clés de tri riches en chaînes. [#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 limite des lignes virtuelles sont désormais émises après chaque block lu depuis MergeTree, ce qui permet à la fusion de redonner la priorité aux sources en cours de stream pour les parts dont les données sont entièrement filtrées par `WHERE`/`PREWHERE`/`JOIN`. [#100603](https://github.com/ClickHouse/ClickHouse/pull/100603) ([Vladimir Cherkasov](https://github.com/vdimir)).
* Meilleure parallélisation des requêtes avec des views simples (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)).
* Ajout de la prise en charge des répliques parallèles sur des views simples (y compris les views `UNION ALL` éligibles sur des tables `MergeTree`) lorsque `parallel_replicas_allow_view_over_mergetree=1`. Cela parallélise la requête externe de la view plutôt que la requête interne, augmentant ainsi la parallélisation des requêtes entre les nœuds. [#100958](https://github.com/ClickHouse/ClickHouse/pull/100958) ([Igor Nikonov](https://github.com/devcrafter)).
* Optimisation de 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)).
* Amélioration des performances de `INSERT VALUES` pour les colonnes `Map`, `Array` et `Tuple` lorsque les valeurs sont transmises sous forme de chaînes échappées (par exemple `'{\'key\':1}'`), évitant un recours inutile à l’analyseur d’expressions SQL. [#102119](https://github.com/ClickHouse/ClickHouse/pull/102119) ([Joanna Hulboj](https://github.com/jh0x)).

<div id="function-and-aggregation-performance">
  ### Performance des fonctions et de l’agrégation
</div>

* Amélioration des performances de la fonction `levenshteinDistance`. [#94543](https://github.com/ClickHouse/ClickHouse/pull/94543) ([Joanna Hulboj](https://github.com/jh0x)).
* Optimisation des conversions par lots de types décimaux en évitant les appels de fonction pour chaque élément. [#95923](https://github.com/ClickHouse/ClickHouse/pull/95923) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Amélioration des performances des requêtes `LIKE`. [#98149](https://github.com/ClickHouse/ClickHouse/pull/98149) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Optimisation de la fonction d’agrégation `avgWeighted` grâce à l’utilisation d’accumulateurs locaux au lieu d’un transfert par stockage pour chaque ligne via un état d’agrégation, 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)).
* Accélération des fonctions `var*Stable` et `stddev*Stable` pour les colonnes `Float64` grâce à la dévirtualisation de la boucle interne. Cela permet des optimisations du compilateur (FMA/registres) qui modifient les résultats en virgule flottante au niveau de l’ULP. [#99460](https://github.com/ClickHouse/ClickHouse/pull/99460) ([Riyane El Qoqui](https://github.com/riyaneel)).
* Utilisation de l’encodage base58 optimisé de Firedancer pour les entrées de 32/64 octets (automatique pour `base58Encode`), avec en plus la possibilité d’utiliser le décodage base58 optimisé si le résultat décodé fait 32/64 octets (explicitement avec `base58Decode('...', 32)`). [#99461](https://github.com/ClickHouse/ClickHouse/pull/99461) ([Joanna Hulboj](https://github.com/jh0x)).
* Optimisation de la fonction `cutURLParameter` en supprimant les décalages mémoire inutiles. [#100218](https://github.com/ClickHouse/ClickHouse/pull/100218) ([Nikita Semenov](https://github.com/leftmain)).
* Conversion plus rapide des flottants en chaînes pour les grandes valeurs entières grâce à l’extension du 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)).
* Remplacement de dragonbox par zmij pour une conversion des flottants en chaînes 1,5 à 3 fois plus rapide. [#100650](https://github.com/ClickHouse/ClickHouse/pull/100650) ([Raúl Marín](https://github.com/Algunenano)).
* Conversion plus rapide de `Int128`/`UInt128` en chaînes grâce au remplacement de la division logicielle par la réduction de Barrett et au déroulage de la boucle de conversion. [#100671](https://github.com/ClickHouse/ClickHouse/pull/100671) ([Raúl Marín](https://github.com/Algunenano)).
* Évite la création de threads redondants lors du merge parallèle de `UniqExactSet`. [#100686](https://github.com/ClickHouse/ClickHouse/pull/100686) ([Jiebin Sun](https://github.com/jiebinn)).
* Ajout d’un merge parallèle par lots pour `UniqExactSet`. [#100687](https://github.com/ClickHouse/ClickHouse/pull/100687) ([Jiebin Sun](https://github.com/jiebinn)).

<div id="storage-and-io-performance">
  ### Performances du stockage et des E/S
</div>

* Réduction de la contention sur les verrous lors des opérations en lecture seule sur les tables ReplicatedMergeTree avec mutations terminées. [#95771](https://github.com/ClickHouse/ClickHouse/pull/95771) ([Eduard Karacharov](https://github.com/korowa)).
* Iceberg peut désormais préremplir de manière asynchrone les métadonnées dans le cache, via le paramètre `iceberg_metadata_async_prefetch_period_ms` défini lors de la création de la table. Les requêtes `SELECT` sur les tables Iceberg peuvent désormais spécifier le paramètre `iceberg_metadata_staleness_ms`, ce qui permet à ClickHouse de s’appuyer sur la version des métadonnées en cache si elle est plus récente que le seuil d’obsolescence indiqué ; sinon, le catalogue Iceberg distant est interrogé pour récupérer les métadonnées les plus récentes. Cela peut supprimer les appels au catalogue Iceberg pendant le traitement des requêtes, avec un gain de performances notable à la clé. [#96191](https://github.com/ClickHouse/ClickHouse/pull/96191) ([Arsen Muk](https://github.com/arsenmuk)).
* Le mode ordered de S3Queue utilise désormais `ListObjectsV2` `StartAfter` de S3 pour éviter de relister tout l’historique du préfixe, ce qui réduit les appels à `ListObjects`. [#96370](https://github.com/ClickHouse/ClickHouse/pull/96370) ([Venkata Vineel](https://github.com/vyalamar)).
* Activation des lectures parallèles avec le moteur de table YTsaurus. [#97343](https://github.com/ClickHouse/ClickHouse/pull/97343) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* Amélioration des performances des lacs de données. Dans les versions précédentes, la lecture depuis le stockage d’objet n’adaptait pas la taille du pipeline au nombre de threads de traitement. [#99548](https://github.com/ClickHouse/ClickHouse/pull/99548) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Autorisation du prefetch lors de la lecture d’un fichier distant via le userspace page cache. [#99919](https://github.com/ClickHouse/ClickHouse/pull/99919) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Correction d’une régression significative des performances d’INSERT lorsque `deduplicate_insert=enable` (valeur par défaut depuis 26.2), en reportant le calcul du hash des données de l’étape de squashing vers le sink et en utilisant le hachage par lot des colonnes via `updateHashWithValueRange`, ce qui réduit la surcharge 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)).

<div id="memory-optimization">
  ### Optimisation de la mémoire
</div>

* Pour les insertions synchrones, le bloc d'origine (nécessaire à la déduplication) peut désormais être omis afin d'économiser de la mémoire. [#96661](https://github.com/ClickHouse/ClickHouse/pull/96661) ([Sema Checherinda](https://github.com/CheSema)).
* Amélioration des performances et réduction de l'utilisation mémoire pour les fonctions de fenêtre parallèles dans certains scénarios, ainsi que pour les charges de travail `arrayFold` avec de grands tableaux. Cela peut également réduire la pression liée aux défauts de page et améliorer la stabilité lorsque les requêtes concernées sont soumises à des limites mémoire strictes. [#98892](https://github.com/ClickHouse/ClickHouse/pull/98892) ([filimonov](https://github.com/filimonov)).

<div id="improvements">
  ## Améliorations
</div>

<div id="query-and-sql-improvements">
  ### Requêtes et SQL
</div>

* Les projections agrégées sont désormais correctement prises en charge dans les vues. [#88798](https://github.com/ClickHouse/ClickHouse/pull/88798) ([Amos Bird](https://github.com/amosbird)).
* `optimize_aggregators_of_group_by_keys` optimise désormais correctement les fonctions d’agrégation dans les requêtes `GROUPING SETS`. [#93935](https://github.com/ClickHouse/ClickHouse/pull/93935) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
* Ajout de la prise en charge de l’optimisation convertissant les jointures `OUTER` en `INNER` avec `join_use_nulls`. [#95968](https://github.com/ClickHouse/ClickHouse/pull/95968) ([Vladimir Cherkasov](https://github.com/vdimir)).
* `cast_keep_nullable` a été étendu pour fonctionner avec les types `Dynamic`/`JSON`. Lorsqu’il est activé, le transtypage de `NULL` à partir de types pouvant être `Nullable` renvoie `NULL` ; sinon, `NULL` génère une erreur `CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN`. [#96504](https://github.com/ClickHouse/ClickHouse/pull/96504) ([Seva Potapov](https://github.com/seva-potapov)).
* Ajout de la clause `ROLE` à `CREATE USER`. [#97074](https://github.com/ClickHouse/ClickHouse/pull/97074) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ajout d’informations sur les filtres différés sous forme d’élément distinct dans la sortie de la requête `EXPLAIN` (lors de l’utilisation de politiques de lignes/PREWHERE avec FINAL). [#97374](https://github.com/ClickHouse/ClickHouse/pull/97374) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Ajout de la prise en charge des expressions de jointure de tables 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)).
* Application des index de saut de données lors de l’analyse d’index distribuée. [#97767](https://github.com/ClickHouse/ClickHouse/pull/97767) ([Azat Khuzhin](https://github.com/azat)).
* La clé de tri d’une table peut désormais être une expression comme `toDate(time)`, et la décision de ne pas différer de telles expressions est désormais prise lorsqu’elles font partie de filtres. [#98237](https://github.com/ClickHouse/ClickHouse/pull/98237) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* L’optimiseur d’ordre des jointures déduit désormais des 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. Cette 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)).
* Lorsque `apply_row_policy_after_final` ou `apply_prewhere_after_final` est activé, les conditions composées `AND` dans les politiques de lignes 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 un mélange de prédicats sur la clé de tri et hors clé de tri (par exemple `x > 1 AND y != 'foo'`), l’expression entière était exclue de l’analyse d’index. [#98513](https://github.com/ClickHouse/ClickHouse/pull/98513) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Seules les répliques "actives" (joignables) participent désormais à l’analyse d’index distribuée. [#98521](https://github.com/ClickHouse/ClickHouse/pull/98521) ([Azat Khuzhin](https://github.com/azat)).
* Le nombre de nœuds utilisés dans l’heuristique automatique des répliques parallèles a été plafonné au nombre réel de nœuds du cluster (et non plus au seul paramètre `max_parallel_replicas`). [#98668](https://github.com/ClickHouse/ClickHouse/pull/98668) ([Nikita Taranov](https://github.com/nickitat)).
* Mise en œuvre des requêtes spéculatives et de la lecture asynchrone pour l’analyse d’index distribuée. [#98724](https://github.com/ClickHouse/ClickHouse/pull/98724) ([Azat Khuzhin](https://github.com/azat)).
* Ajout de la prise en charge de la clause `SAMPLE` dans l’analyse distribuée des index. [#98931](https://github.com/ClickHouse/ClickHouse/pull/98931) ([Azat Khuzhin](https://github.com/azat)).
* Ajout de la prise en charge de la monotonie pour la multiplication, ce qui permet l’élagage de la clé primaire pour les expressions `key * constant`. [#98983](https://github.com/ClickHouse/ClickHouse/pull/98983) ([Amos Bird](https://github.com/amosbird)).
* Les messages d’erreur de l’analyzer ne listent 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)).
* Les statistiques de colonnes issues de sous-requêtes avec jointures sont désormais correctement renvoyées 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)).
* `ALTER TABLE MODIFY COLUMN x TTL ...` est désormais autorisé sans qu’il soit nécessaire de préciser le type de la colonne. [#99208](https://github.com/ClickHouse/ClickHouse/pull/99208) ([Nikolay Degterinsky](https://github.com/evillique)).
* Sortie `EXPLAIN PLAN pretty=1` améliorée : affichage des colonnes de sortie de la requête de plus haut niveau, des libellés/symboles de relation de jointure avec estimation du nombre de lignes résultantes et de la localité, et inclusion des colonnes de sortie pour chaque étape de jointure/source. [#99462](https://github.com/ClickHouse/ClickHouse/pull/99462) ([Kirill Kopnev](https://github.com/Fgrtue)).
* Correction d’un échec de la table function `merge()` avec une erreur `UNKNOWN_IDENTIFIER` lors de requêtes sur des colonnes absentes de certaines tables distribuées/distantes sous-jacentes. [#99833](https://github.com/ClickHouse/ClickHouse/pull/99833) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `ConditionSelectivityEstimator` n’est plus utilisé dans l’optimiseur lorsque la condition n’est pas sous forme CNF (par exemple `where a = 0`, qui est une condition unique pour laquelle les statistiques ne peuvent pas aider). [#100110](https://github.com/ClickHouse/ClickHouse/pull/100110) ([Han Fei](https://github.com/hanfei1991)).
* `distributed_index_analysis_min_indexes_bytes_to_activate` est désormais appliqué après l’élagage des partitions. [#100477](https://github.com/ClickHouse/ClickHouse/pull/100477) ([Azat Khuzhin](https://github.com/azat)).
* `EXPLAIN PIPELINE` prend désormais en charge le paramètre `distributed=1` pour inclure les fragments de pipeline distants. [#100513](https://github.com/ClickHouse/ClickHouse/pull/100513) ([Nikita Taranov](https://github.com/nickitat)).
* `use_partition_pruning = 0` désactive désormais également l’élagage de l’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)).
* `EXPLAIN [PLAN] pretty=1` 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` parce que `Tuple` ne pouvait pas se trouver à l’intérieur de `Nullable`. [#100942](https://github.com/ClickHouse/ClickHouse/pull/100942) ([Nihal Z. Miaji](https://github.com/nihalzp)).
* Vous pouvez désormais utiliser 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)).
* Mise en œuvre de la matérialisation différée 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)).
* Amélioration des estimations de sélectivité par défaut pour les conditions sans statistiques, afin de les aligner sur les heuristiques standard du secteur : 0,1 pour la sélectivité de la condition `LIKE`, 0,33 pour la sélectivité d'une condition inconnue. [#101653](https://github.com/ClickHouse/ClickHouse/pull/101653) ([Alexander Gololobov](https://github.com/davenger)).
* Intégration directe de la sous-requête VIEW dans l'arbre de requête afin de permettre davantage d'optimisations sur la VIEW. [#100830](https://github.com/ClickHouse/ClickHouse/pull/100830) ([Dmitry Novik](https://github.com/novikd)).

<div id="functions">
  ### Fonctions
</div>

* Vous pouvez désormais utiliser une entrée JSON/Object native avec les fonctions `JSONExtract`. [#96711](https://github.com/ClickHouse/ClickHouse/pull/96711) ([Fisnik Kastrati](https://github.com/fkastrati)).
* Ajout de la fonction SQL `tokensForLikePattern`, qui découpe les motifs `LIKE` en tokens 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)).
* Implémentation de la fonction `toDaysInMonth()`, qui renvoie le nombre de jours dans le mois de la date spécifiée. [#99227](https://github.com/ClickHouse/ClickHouse/pull/99227) ([Vitaly Baranov](https://github.com/vitlibar)).
* Le tokenizer `unicodeWord` a été renommé en `asciiCJK`. [#100956](https://github.com/ClickHouse/ClickHouse/pull/100956) ([George Larionov](https://github.com/george-larionov)).
* Ajout d’un sucre syntaxique au niveau du parseur pour la syntaxe de fonction `OVERLAY` du standard SQL. La fonction `overlay` existe déjà ; cela ajoute la prise en charge de la forme basée sur des mots-clés, avec `PLACING`, `FROM` et `FOR` comme séparateurs. [#101681](https://github.com/ClickHouse/ClickHouse/pull/101681) ([Desel72](https://github.com/Desel72)).
* La fonction `ngrams` rejette désormais les longueurs de ngram non valides. Par exemple, `SELECT ngrams('abc', 0)` renvoie désormais une erreur. [#101922](https://github.com/ClickHouse/ClickHouse/pull/101922) ([Robert Schulze](https://github.com/rschu1ze)).
* Ajout de la prise en charge du tokenizer `array` dans l’optimisation `LIKE`. [#102880](https://github.com/ClickHouse/ClickHouse/pull/102880) ([Elmi Ahmadov](https://github.com/ahmadov)).

<div id="table-engines-and-storage">
  ### Moteurs de table et stockage
</div>

* Ajout d’un thread de nettoyage dédié pour MergeTree afin d’éviter les retards de nettoyage en cas de forte charge de merges. [#91574](https://github.com/ClickHouse/ClickHouse/pull/91574) ([Amos Bird](https://github.com/amosbird)).
* 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)).
* Les index marks des index secondaires sont désormais préchargés lorsque le paramètre `prewarm_mark_cache` est activé (chargés dans l’index mark cache pendant les 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)).
* Des index textuels 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)).
* Annulation anticipée des merges 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)).
* 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 du paramètre MergeTree `share_nested_offsets` (valeur par défaut : `true`). Lorsqu’il est défini sur `false`, les colonnes Array avec des noms à points (par exemple `n.a`, `n.b`) sont traitées comme des colonnes indépendantes au lieu de partager des fichiers d’offset et de vérifier l’égalité des tailles de tableau dans le cadre de l’ancienne sémantique Nested. [#98416](https://github.com/ClickHouse/ClickHouse/pull/98416) ([Amos Bird](https://github.com/amosbird)).
* Optimisation de `TRUNCATE DATABASE TABLES LIKE` par pré-annulation des merges en parallèle. [#98597](https://github.com/ClickHouse/ClickHouse/pull/98597) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Réduction de la contention sur les verrous dans `MergeTreeBackgroundExecutor` en libérant les ressources des tâches sans acquérir le verrou. [#98604](https://github.com/ClickHouse/ClickHouse/pull/98604) ([Dmitry Novik](https://github.com/novikd)).
* `TRUNCATE DATABASE` prend désormais en charge l’annulation de requête. [#98828](https://github.com/ClickHouse/ClickHouse/pull/98828) ([Shaohua Wang](https://github.com/tiandiwonder)).
* Redémarrage du cache de statistiques après modification d’un paramètre MergeTree. [#98520](https://github.com/ClickHouse/ClickHouse/pull/98520) ([Han Fei](https://github.com/hanfei1991)).
* Ajout du paramètre MergeTree `compress_per_column_in_compact_parts` pour contrôler l’organisation des blocs compressés au sein des compact parts. Quand `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 `false`, toutes les colonnes d’une granule sont regroupées dans un même bloc compressé, ce qui améliore le taux de compression et les performances de lecture pour les workloads qui lisent systématiquement toutes les colonnes. [#101114](https://github.com/ClickHouse/ClickHouse/pull/101114) ([Amos Bird](https://github.com/amosbird)).
* L’index textuel est désormais GA et reste activé quelle que soit la valeur du paramètre `compatibility`, ce qui évite une désactivation inattendue lors des restaurations de sauvegarde ou en mode de compatibilité. [#101518](https://github.com/ClickHouse/ClickHouse/pull/101518) ([Nikita Fomichev](https://github.com/fm4v)).
* Ajout de la prise en charge de l’index textuel construit sur `mapValues(map)` avec l’opérateur `IN`. [#99286](https://github.com/ClickHouse/ClickHouse/pull/99286) ([Anton Popov](https://github.com/CurtizJ)).
* Amélioration de l’analyse de plusieurs index textuels utilisés simultanément dans une même requête. Le paramètre `use_skip_indexes_on_data_read` n’est plus requis pour l’optimisation de lecture directe des index textuels. [#102255](https://github.com/ClickHouse/ClickHouse/pull/102255) ([Anton Popov](https://github.com/CurtizJ)).
* Ajout de la prise en charge de l’analyse des index de texte pour la fonction `hasPhrase` en mode `HINT`. [#102438](https://github.com/ClickHouse/ClickHouse/pull/102438) ([Elmi Ahmadov](https://github.com/ahmadov)).
* Les statistiques MinMax des colonnes 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 en plus des valeurs. La version du fichier de statistiques passe à V2 ; les fichiers écrits par des versions antérieures doivent être rematérialisés (`ALTER TABLE ... MATERIALIZE STATISTICS ALL`). [#100605](https://github.com/ClickHouse/ClickHouse/pull/100605) ([Han Fei](https://github.com/hanfei1991)).

<div id="data-lakes-improvements">
  ### Lacs de données
</div>

* Ajout d'une nouvelle requête pour vérifier l'état de `DataLakeCatalog`. [#94690](https://github.com/ClickHouse/ClickHouse/pull/94690) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* Amélioration des écritures Iceberg pour Unity Catalog. [#98162](https://github.com/ClickHouse/ClickHouse/pull/98162) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Reconstruction des entités dans `IcebergManifestFile` afin de rendre la maintenance du code moins sujette aux erreurs (corrige également certains problèmes de mise en cache des fichiers manifeste). [#98231](https://github.com/ClickHouse/ClickHouse/pull/98231) ([Daniil Ivanik](https://github.com/divanik)).
* Amélioration d'Iceberg `ALTER TABLE ... EXECUTE expire_snapshots(...)` avec une prise en charge plus complète des arguments. [#99130](https://github.com/ClickHouse/ClickHouse/pull/99130) ([murphy-4o](https://github.com/murphy-4o)).
* Modification de l'interface des insertions Iceberg avec le catalogue. Les paramètres `storage_catalog_type`, `storage_aws_access_key_id` et autres paramètres similaires sont désormais obsolètes. [#100334](https://github.com/ClickHouse/ClickHouse/pull/100334) ([Konstantin Vedernikov](https://github.com/scanhex12)).
* Correction de la gestion incohérente des chemins dans Iceberg causée par l'utilisation mixte des chemins de stockage et des chemins de métadonnées ; obligation pour les tables Iceberg d'écrire un emplacement de table qui soit soit une URL, soit un chemin absolu ; ajout d'un mécanisme de repli pour le calcul de la taille des fichiers dans Azure ; prise en charge de `version-hint.txt` de manière compatible avec Spark ; introduction d'abstractions au niveau des types pour éviter de confondre les types de chemins ; et correction de l'utilisation des suppressions positionnelles. [#100420](https://github.com/ClickHouse/ClickHouse/pull/100420) ([Daniil Ivanik](https://github.com/divanik)).
* Évite d'analyser l'ensemble du catalogue distant de lac de données 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)).
* Les informations sur les objets utilisées pour analyser les fichiers de données Iceberg contiennent désormais le nombre de lignes du fichier et sa taille en octets, extraits du fichier manifeste. [#100645](https://github.com/ClickHouse/ClickHouse/pull/100645) ([Daniil Ivanik](https://github.com/divanik)).
* Ajout d'un mécanisme d'élagage Delta Lake avec des colonnes virtuelles. [#101634](https://github.com/ClickHouse/ClickHouse/pull/101634) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="s3-and-object-storage-improvements">
  ### S3 et stockage d’objets
</div>

* Ajout d’un espace réservé `{_schema_hash}` pour le moteur de table S3, qui insère un hachage des définitions des colonnes de la table dans le chemin S3. [#98265](https://github.com/ClickHouse/ClickHouse/pull/98265) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Ajout d’une nouvelle option pour forcer le style virtuel/par chemin pour les endpoints S3. [#102378](https://github.com/ClickHouse/ClickHouse/pull/102378) ([Konstantin Vedernikov](https://github.com/scanhex12)).

<div id="settings-and-configuration">
  ### Paramètres et configuration
</div>

* Les utilisateurs peuvent désormais spécifier plusieurs méthodes d’authentification dans la configuration `users_xml`. [#91998](https://github.com/ClickHouse/ClickHouse/pull/91998) ([Flip-Liquid](https://github.com/Flip-Liquid)).
* Vous pouvez désormais définir les paramètres `internal_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)).
* Ajout du paramètre `allow_nullable_tuple_in_extracted_subcolumns`, qui 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 où la valeur est manquante) ou sous la forme `Tuple(...)` (valeurs de tuple par défaut pour les lignes où la valeur est manquante). Désactivé par défaut ; 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)).
* `type_json_allow_duplicated_key_with_literal_and_nested_object` est désormais activé par défaut, ce qui évite les erreurs liées aux clés dupliquées lors de l’analyse de JSON comme `{"a" : 42, "a" : {"b" : 42}}` que ClickHouse peut produire à partir des données d’origine `{"a" : 42, "a.b" : 42}`. [#97423](https://github.com/ClickHouse/ClickHouse/pull/97423) ([Pavel Kruglov](https://github.com/Avogar)).
* Les statistiques de colonnes sont désormais disponibles en GA. Le paramètre `allow_experimental_statistics` (par défaut `false`) devient obsolète au profit de `allow_statistics` (par défaut `true`) ; `allow_statistics_optimize` passe de bêta à GA ; ClickHouse crée des statistiques `minmax` et `uniq` pour les nouvelles colonnes (paramètre MergeTree `auto_statistics_types`) ; et, pour éviter de ralentir les INSERT, `materialize_statistics_on_insert` est désormais désactivé par défaut. [#97487](https://github.com/ClickHouse/ClickHouse/pull/97487) ([Han Fei](https://github.com/hanfei1991)).
* La relation entre `enable_parallel_replicas` et `automatic_parallel_replicas_mode` a été clarifiée : une requête ne peut utiliser des répliques parallèles que si `enable_parallel_replicas > 0`. Avec `automatic_parallel_replicas_mode=1`, la décision est prise lors de la planification en fonction des statistiques collectées ; avec `automatic_parallel_replicas_mode=0`, les répliques parallèles sont utilisées pour toutes les requêtes prises en charge, indépendamment des statistiques. Les opérations insert-select sur Distributed avec des répliques parallèles se comportent toujours comme si `automatic_parallel_replicas_mode=0`. [#97517](https://github.com/ClickHouse/ClickHouse/pull/97517) ([Nikita Taranov](https://github.com/nickitat)).
* La fonctionnalité d’usurpation d’identité ([EXECUTE AS target\_user](/fr/reference/statements/execute_as)) a été activée par défaut. [#97870](https://github.com/ClickHouse/ClickHouse/pull/97870) ([Vitaly Baranov](https://github.com/vitlibar)).
* Ajout du paramètre `access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users` (activé 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)).
* Ajout d’un paramètre pour contrôler le comportement en cas d’incompatibilité de type pour `Variant` et `Dynamic` (`throw` ou retour de `NULL`). [#99085](https://github.com/ClickHouse/ClickHouse/pull/99085) ([Bharat Nallan](https://github.com/bharatnc)).
* La valeur par défaut de `stderr_reaction` a été remplacée, passant de `throw` à `log_last`, pour les UDFs exécutables. Les UDFs qui écrivent des avertissements sur stderr n’échouent plus lorsque le code de sortie est 0, et 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)).
* Ajout du paramètre `input_format_column_name_matching_mode`, qui permet différents modes de sensibilité à la casse pour les formats d’entrée. [#99346](https://github.com/ClickHouse/ClickHouse/pull/99346) ([manerone](https://github.com/Manerone)).
* Les statistiques automatiques ne sont plus activées pour les tables système, car elles en tirent rarement parti. [#102862](https://github.com/ClickHouse/ClickHouse/pull/102862) ([Han Fei](https://github.com/hanfei1991)).

<div id="system-tables-and-monitoring-improvements">
  ### Tables système et monitoring
</div>

* Les index de saut de données utilisés lors de l'exécution des requêtes sont désormais suivis dans `system.query_log`, dans une nouvelle colonne `skip_indices`. [#99793](https://github.com/ClickHouse/ClickHouse/pull/99793) ([Grant Holly](https://github.com/grantholly-clickhouse)).
* La colonne `projections_duration_ms` a été ajoutée à `system.part_log` ; elle enregistre, pour chaque projection, la durée de fusion/reconstruction en millisecondes. [#98292](https://github.com/ClickHouse/ClickHouse/pull/98292) ([Amos Bird](https://github.com/amosbird)).
* L'alias de colonne `INDEX_LENGTH` a été ajouté à `information_schema.tables`. [#101705](https://github.com/ClickHouse/ClickHouse/pull/101705) ([Robert Schulze](https://github.com/rschu1ze)).
* `information_schema.tables` ignore désormais les parties de table inactives, ce qui rend les valeurs de taille affichées plus réalistes. [#101706](https://github.com/ClickHouse/ClickHouse/pull/101706) ([Robert Schulze](https://github.com/rschu1ze)).

<div id="clickhouse-keeper-improvements">
  ### ClickHouse Keeper
</div>

* `find_super_nodes` ne se bloque plus lors du parcours des enfants du premier super-nœud, ce qui permet d’en trouver plusieurs. [#97819](https://github.com/ClickHouse/ClickHouse/pull/97819) ([pufit](https://github.com/pufit)).
* Marque une session ZooKeeper comme expirée dès le début de la finalisation, au lieu d’attendre la fin du thread d’envoi. 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)).
* Ignore les requêtes Keeper obsolètes pour les sessions déjà déconnectées, évitant ainsi des allers-retours Raft inutiles. Le nombre de sessions terminées suivies 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)).
* Empêche la commande Keeper `mntr` de se bloquer à cause de contentions sur les verrous. [#99472](https://github.com/ClickHouse/ClickHouse/pull/99472) ([Antonio Andelic](https://github.com/antonio2368)).
* Réduction de la contention sur les verrous dans le dispatcher Keeper grâce à l’appel des callbacks et à la distribution des requêtes de lecture en dehors de la portée du mutex, avec ajout de gardes de verrou profilés pour l’observabilité. [#99751](https://github.com/ClickHouse/ClickHouse/pull/99751) ([Antonio Andelic](https://github.com/antonio2368)).

<div id="memory-management-improvements">
  ### Gestion de la mémoire
</div>

* Ajout du paramètre de configuration `use_separate_cache_arena` pour contrôler la séparation de l’arène de cache. [#100664](https://github.com/ClickHouse/ClickHouse/pull/100664) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="data-formats-improvements">
  ### Formats de données
</div>

* Ajout du paramètre `output_format_trim_fixed_string` pour supprimer les octets nuls de fin des valeurs `FixedString` dans les formats de sortie texte. [#97558](https://github.com/ClickHouse/ClickHouse/pull/97558) ([NeedmeFordev](https://github.com/spider-yamet)).
* Il est désormais possible de lire 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)).
* La désérialisation des états binaires `AggregateFunction` exige désormais la consommation complète 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)).
* Les utilisateurs peuvent désormais écrire les types de données intervalle de ClickHouse au format Arrow. [#99519](https://github.com/ClickHouse/ClickHouse/pull/99519) ([Peter Nguyen](https://github.com/petern48)).
* Ajout de la prise en charge native de l'importation et de l'exportation des types de données UUID dans les formats Arrow et Parquet, avec inférence logique automatique pour les UUID de premier niveau et prise en charge d'indications de schéma explicites pour les UUID imbriqués. [#99521](https://github.com/ClickHouse/ClickHouse/pull/99521) ([Ivan](https://github.com/ivanmantova)).
* Tolérance à 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)).
* L'exportation des UUID vers Parquet via l'encodeur Arrow inclut désormais l'annotation de type UUID correcte, ce qui évite de devoir convertir manuellement les données `FixedString(16)` lors de la relecture des fichiers. [#100150](https://github.com/ClickHouse/ClickHouse/pull/100150) ([Ivan](https://github.com/ivanmantova)).
* Ajout de la prise en charge native de l'importation des types de données Apache Arrow `StringView` et `BinaryView` dans des colonnes ClickHouse `String`, ce qui améliore la compatibilité de l'ingestion basée sur Arrow. [#100762](https://github.com/ClickHouse/ClickHouse/pull/100762) ([Ivan](https://github.com/ivanmantova)).
* Ajout de la prise en charge de `Nullable(Tuple)` dans 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)).

<div id="named-collections-and-dictionaries">
  ### Collections nommées et dictionnaires
</div>

* Ajout de `sslmode` aux clés autorisées pour les sources de dictionnaire PostgreSQL, ce qui permet de configurer le mode SSL pour les connexions de dictionnaire PostgreSQL (par exemple avec AWS RDS, qui impose SSL par défaut). [#98014](https://github.com/ClickHouse/ClickHouse/pull/98014) ([mcalfin](https://github.com/mcalfin)).
* Évite la suppression des collections nommées dont dépendent des sources de dictionnaire. [#98127](https://github.com/ClickHouse/ClickHouse/pull/98127) ([Pablo Marcos](https://github.com/pamarcos)).
* Ajout de la prise en charge des types `Map` et `JSON`/`Object` comme attributs de dictionnaire. 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)).
* `SYSTEM RELOAD DICTIONARIES` recharge désormais les dictionnaires dans un ordre topologique, afin que les dictionnaires dont la source est un autre dictionnaire utilisent des données à jour après le rechargement. [#98356](https://github.com/ClickHouse/ClickHouse/pull/98356) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Les dictionnaires de type cache ne prennent plus de verrou exclusif dans `hasKeys`, ce qui réduit la contention sur les verrous grâce à l'utilisation d'un verrou partagé pour les lectures du cache. [#100796](https://github.com/ClickHouse/ClickHouse/pull/100796) ([liuguangliang](https://github.com/sourcelliu)).

<div id="other-improvements">
  ### Autres améliorations
</div>

* Les messages `ACCESS_DENIED` ne révèlent plus les noms de colonnes, sauf si l'utilisateur peut afficher toutes les colonnes requises ; les noms de base de données et de table restent visibles dans le message. [#91067](https://github.com/ClickHouse/ClickHouse/pull/91067) ([filimonov](https://github.com/filimonov)).
* Rechargement de la configuration du cluster si les adresses IP du nom d'hôte du serveur local changent, plutôt que lors d'un changement d'adresse IP de n'importe quel hôte. [#93726](https://github.com/ClickHouse/ClickHouse/pull/93726) ([Zhigao Hong](https://github.com/zghong)).
* Vidage des buffers de logging asynchrone en cas de crash. [#97836](https://github.com/ClickHouse/ClickHouse/pull/97836) ([Azat Khuzhin](https://github.com/azat)).
* 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)).
* Mise à jour de ClickStack vers la version 2.20.0. [#98252](https://github.com/ClickHouse/ClickHouse/pull/98252) ([Aaron Knudtson](https://github.com/knudtty)).
* Désactivation de la génération SQL par IA (commande `??`) dans le client intégré (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)).
* Envoi d'un NACK pour les messages défectueux lors de l'utilisation du moteur de stockage RabbitMQ. [#102157](https://github.com/ClickHouse/ClickHouse/pull/102157) ([Seva Potapov](https://github.com/seva-potapov)).

<div id="bug-fixes">
  ## Corrections de bugs
</div>

<Accordion title="Tous les correctifs de bugs (cliquer pour afficher)">
  ### Correctifs JOIN

  * Correction d’une colonne manquante lorsqu’un alias d’identifiant non standard était utilisé dans un JOIN avec l’ancien analyseur. [#95679](https://github.com/ClickHouse/ClickHouse/pull/95679) ([Zhigao Hong](https://github.com/zghong)).
  * Correction d’un résultat incorrect lorsque l’algorithme `grace_hash` était utilisé avec des joins non-équi et que le bloc de gauche ne pouvait pas être traité entièrement en raison de contraintes de taille sur le résultat du JOIN. [#97866](https://github.com/ClickHouse/ClickHouse/pull/97866) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Correction d’une erreur logique avec `analyzer_compatibility_join_using_top_level_identifier` et `ARRAY JOIN`. [#98179](https://github.com/ClickHouse/ClickHouse/pull/98179) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Correction d’une exception `LOGICAL_ERROR` lorsqu’un `RIGHT JOIN` encapsulé dans un `CROSS JOIN` était permuté par l’optimisation `query_plan_join_swap_table` dans le chemin de code hérité de l’étape de join. [#98279](https://github.com/ClickHouse/ClickHouse/pull/98279) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception "Pipeline stuck" dans les joins `full_sorting_merge`, provoqué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 d’une erreur logique lorsque `CROSS JOIN` était utilisé avec `INNER JOIN USING`. [#98459](https://github.com/ClickHouse/ClickHouse/pull/98459) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception `LOGICAL_ERROR` lorsque `arrayJoin` était 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 `BAD_GET` et de résultats de requête incorrects lorsqu’une expression non booléenne (par ex. `sin(col)`) était utilisée à la fois dans `WHERE` et `SELECT` avec un JOIN, en raison d’une optimisation de descente de filtre qui corrompait des nœuds DAG partagés. [#98681](https://github.com/ClickHouse/ClickHouse/pull/98681) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une `LOGICAL_ERROR` "Replica decided to read in Default mode, not in WithOrder" lors de l’utilisation de `read_in_order_through_join` avec des répliques parallèles. [#98685](https://github.com/ClickHouse/ClickHouse/pull/98685) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * `LEFT ANTI JOIN` avec plusieurs colonnes de clé de jointure renvoyait des résultats incorrects lorsque `enable_join_runtime_filters=1` (par défaut). [#98871](https://github.com/ClickHouse/ClickHouse/pull/98871) ([Alexander Gololobov](https://github.com/davenger)).
  * Correction d’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. [#99112](https://github.com/ClickHouse/ClickHouse/pull/99112) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction d’une exception dans les fonctions opérant sur `ColumnReplicated` avec des lignes non référencées produites par un JOIN. [#99564](https://github.com/ClickHouse/ClickHouse/pull/99564) ([Hechem Selmi](https://github.com/m-selmi)).
  * Correction d’un cas rare où un join avec réordonnancement pouvait produire un résultat incorrect. [#100790](https://github.com/ClickHouse/ClickHouse/pull/100790) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction de résultats incorrects lorsqu’un JOIN avec l’optimisation shard-by-PK utilisait le cache des conditions de requête et que certaines parts étaient filtrées par des conditions mises en cache. [#100926](https://github.com/ClickHouse/ClickHouse/pull/100926) ([Groene AI](https://github.com/groeneai)).
  * Correction d’une exception `NOT_FOUND_COLUMN_IN_BLOCK` lors de l’utilisation de `ARRAY JOIN` avec `JOIN USING` et `analyzer_compatibility_join_using_top_level_identifier` activé. [#101507](https://github.com/ClickHouse/ClickHouse/pull/101507) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Correction d’un ordre des lignes incorrect dans les requêtes utilisant `ORDER BY` avec l’algorithme de jointure `grace_hash`, ce qui pouvait produire un résultat incorrect sans avertissement. [#102036](https://github.com/ClickHouse/ClickHouse/pull/102036) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Correction d’une `LOGICAL_ERROR` (taille inattendue du type d’index) qui pouvait se produire dans les requêtes `RIGHT JOIN` et `FULL JOIN` lorsque `max_bytes_in_join` était configuré. [#102042](https://github.com/ClickHouse/ClickHouse/pull/102042) ([Jimmy Aguilar Mena](https://github.com/Ergus)).

  ### Correctifs pour les requêtes et l'analyseur

  * Correction de la façon dont la cible d’une table Alias est enregistrée comme 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 au lieu de la base de données de session. [#95175](https://github.com/ClickHouse/ClickHouse/pull/95175) ([Enric Calabuig](https://github.com/eclbg)).
  * Correction d’une erreur `Block structure mismatch in stream` causée par des colonnes superflues renvoyées par la matérialisation paresseuse. [#96682](https://github.com/ClickHouse/ClickHouse/pull/96682) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Correction d’une exception dans la comparaison de tuples impliquant des éléments de type `Nothing` (par ex. lors d’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)).
  * Correction d’une 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 d’exceptions et d’un comportement incorrect dans `optimize_syntax_fuse_functions` avec les projections agrégées, 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 réécriture de requête incorrecte de `replaceRegexpOne` vers `extract` qui produisait des résultats erronés lorsque la regexp ne correspondait pas ; correction également d’une exception lorsque `replaceRegexpOne` était 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 d’exceptions `LOGICAL_ERROR` causées par `LowCardinality` à l’intérieur de types composés (`Variant`, `Dynamic`, `Tuple`) dans `concatWithSeparator`, `format`, les sous-requêtes `IN`, `GLOBAL IN` et les jointures avec des filtres d’exécution. [#97831](https://github.com/ClickHouse/ClickHouse/pull/97831) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d’une exception `LOGICAL_ERROR` "Chunk info was not set for chunk in MergingAggregatedTransform" lors de l’utilisation de `ARRAY JOIN` avec la fonction de table `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 bug qui empêchait l’utilisation des CTE avec des insert-select distribués. [#97889](https://github.com/ClickHouse/ClickHouse/pull/97889) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction d’une incompatibilité entre colonnes. [#97921](https://github.com/ClickHouse/ClickHouse/pull/97921) ([Kai Zhu](https://github.com/nauu)).
  * Correction d’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)).
  * Correction d’un `LOGICAL_ERROR` "Trying to execute PLACEHOLDER action" lorsque des colonnes corrélées de requêtes externes étaient 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)).
  * Correction d’une exception d’erreur logique dans `caseWithExpression` lorsque l’expression `CASE` impliquait `materialize(NULL)` ou d’autres arguments `Nullable(Nothing)`. [#98290](https://github.com/ClickHouse/ClickHouse/pull/98290) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception de transtypage invalide 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)).
  * Correction d’une exception lorsque `ORDER BY ... WITH FILL` était utilisé avec `LIMIT BY`. [#98361](https://github.com/ClickHouse/ClickHouse/pull/98361) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une 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)).
  * Correction d’une exception "Column identifier is already registered" lorsque `count_distinct_optimization` était utilisé avec une clause `QUALIFY`. [#98433](https://github.com/ClickHouse/ClickHouse/pull/98433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une 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 de type `LowCardinality(String)`). [#98443](https://github.com/ClickHouse/ClickHouse/pull/98443) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une 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 agrégée 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 dans les requêtes `DISTINCT` lorsque l’utilisation de projections agrégées et de `materialize` provoquait 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 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 résultat inattendu avec `read_in_order_use_virtual_row` et des fonctions monotones. [#98514](https://github.com/ClickHouse/ClickHouse/pull/98514) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Correction d’une exception `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 d’une exception "Sorting column wasn't found in the ActionsDAG's outputs" lorsque `query_plan_convert_join_to_in` était activé avec `query_plan_merge_expressions = 0`. [#98526](https://github.com/ClickHouse/ClickHouse/pull/98526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une `LOGICAL_ERROR` lorsqu’un `Identifier` était vide après substitution des paramètres. [#98530](https://github.com/ClickHouse/ClickHouse/pull/98530) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
  * Correction de l’analyse d’index distribuée avec des expressions (et pas seulement des colonnes) dans la clé primaire, 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)).
  * Correction d’une erreur logique "TABLE\_FUNCTION is not allowed in expression context" lorsqu’une table function avec un alias apparaissait plusieurs fois dans la même portée de requête (par ex. dans les clauses `PREWHERE` et `QUALIFY`). [#98557](https://github.com/ClickHouse/ClickHouse/pull/98557) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d'une exception "Bad cast from type `DB::TableFunctionNode` to `DB::QueryNode`" lors de l'utilisation de la fonction de table `input` comme argument de `remote`. [#98694](https://github.com/ClickHouse/ClickHouse/pull/98694) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d'une exception dans `LogicalExpressionOptimizerPass` lorsqu'une fonction booléenne dans une comparaison `equals` renvoyait un type `Variant`. [#98712](https://github.com/ClickHouse/ClickHouse/pull/98712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d'une exception `UNKNOWN_IDENTIFIER` lors de l'interrogation de la fonction de table `merge()` ou du moteur `Merge` sur des tables avec des colonnes JSON ayant des paramètres différents et des colonnes ALIAS référençant des sous-chemins JSON, avec le nouvel analyseur activé. [#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 lorsqu'un stockage `Distributed` était utilisé dans une `View`. [#98754](https://github.com/ClickHouse/ClickHouse/pull/98754) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
  * Correction d'une exception `LOGICAL_ERROR` (incompatibilité de structure de bloc dans `removeUnusedColumns`) qui pouvait 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)).
  * Correction d'une 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 d'une exception lors de la composition de `loop` avec des fonctions de table de cluster. [#98860](https://github.com/ClickHouse/ClickHouse/pull/98860) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Correction d'une `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 exception "Scalar doesn't exist" lors de l'interrogation d'un shard distant avec `optimize_const_name_size` activé et `enable_scalar_subquery_optimization = 0`. [#98979](https://github.com/ClickHouse/ClickHouse/pull/98979) ([andriibeee](https://github.com/andriibeee)).
  * Correction de `NOT_FOUND_COLUMN_IN_BLOCK` pour certaines requêtes avec `GROUP BY` et des expressions incluant une recherche inverse dans un dictionnaire, des comparaisons de conversion `Date`/`DateTime` et des comparaisons de tuples. [#98980](https://github.com/ClickHouse/ClickHouse/pull/98980) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction d'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 décalage ou d'une limite nulle. [#99005](https://github.com/ClickHouse/ClickHouse/pull/99005) ([andriibeee](https://github.com/andriibeee)).
  * Correction d'une exception "Block structure mismatch" lorsque l'optimisation de push-down des filtres rencontrait une expression `AND` qui se court-circuitait en constante avec `GROUPING SETS`. [#99010](https://github.com/ClickHouse/ClickHouse/pull/99010) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d'une `LOGICAL_ERROR` lors de l'interrogation d'une table ayant à la fois une ROW POLICY et une colonne ALIAS utilisant `dictGet`, causée par 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)).
  * Correction d’un segfault dans une CTE récursive avec `remote()` + `view()`. [#99081](https://github.com/ClickHouse/ClickHouse/pull/99081) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Suppression d’une analyse d’index supplémentaire inutile lorsque l’optimisation de lecture dans l’ordre est appliquée. [#99084](https://github.com/ClickHouse/ClickHouse/pull/99084) ([Vladimir Cherkasov](https://github.com/vdimir)).
  * Correction des vérifications d’accès dans `InverseDictionaryLookupPass` en n’effectuant le contrôle d’accès qu’une seule fois avant l’exécution de la passe d’optimisation. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
  * 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 produisait 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é était utilisé pour le nom de la part. [#99489](https://github.com/ClickHouse/ClickHouse/pull/99489) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception `std::length_error` lors de requêtes sur des tables système vides avec le format Pretty via l’interface HTTP. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une dégradation des performances dans l’analyseur grâce à l’élimination des colonnes inutilisées de `ARRAY JOIN`. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
  * Correction d’une exception (`Bad get: has Tuple, actual type String`) dans `ConditionSelectivityEstimator` lorsqu’une requête utilisait `IN` avec un seul paramètre de requête scalaire (par ex. `WHERE col IN ({p:String})`) sur une table ayant des statistiques de colonnes et avec `use_statistics` activé. [#99614](https://github.com/ClickHouse/ClickHouse/pull/99614) ([Ilya Yatsishin](https://github.com/qoega)).
  * Correction d’une exception "Block structure mismatch" dans des requêtes avec une clause `HAVING` où l’expression de filtre contenait à 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)).
  * Correction d’une erreur logique liée à 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)).
  * Correction d’une exception "Inconsistent AST formatting" pour `ALTER TABLE ... MODIFY QUERY` avec des sous-requêtes imbriquées contenant `SETTINGS` lorsque l’instruction `ALTER` elle-même comportait aussi `SETTINGS`. [#99938](https://github.com/ClickHouse/ClickHouse/pull/99938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
  * Correction d’une exception `LOGICAL_ERROR` "Not-ready Set" dans la fonction `IN` pendant l’optimisation du plan de requête avec `convertAnyJoinToSemiOrAntiJoin`. [#99939](https://github.com/ClickHouse/ClickHouse/pull/99939) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception `LOGICAL_ERROR` "Unexpected node type for table expression ... Actual IDENTIFIER" lorsqu’une sous-requête scalaire était utilisée dans un argument de fonction de table non résolu. [#100014](https://github.com/ClickHouse/ClickHouse/pull/100014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction du nombre quadratique de requêtes exécutées lorsque `distributed_index_analysis` était 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 d’une 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 d’une 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 `SELECT *` ou des requêtes `EXCEPT`/`INTERSECT`. [#100386](https://github.com/ClickHouse/ClickHouse/pull/100386) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception `TOO_MANY_ROWS` pour les requêtes `SELECT count()` avec `max_rows_to_read` / `force_primary_key` lorsque les données étaient réparties sur plusieurs parts avec des frontières de granules non alignées. [#100408](https://github.com/ClickHouse/ClickHouse/pull/100408) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de cas `NOT_FOUND_COLUMN_IN_BLOCK` où la partie `SELECT` de la projection contenait des colonnes qui n’existaient pas dans la partie `SELECT` d’origine de la requête. [#100623](https://github.com/ClickHouse/ClickHouse/pull/100623) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Ajout de la prise en charge du passage d’une clé de sharding aux fonctions de table `cluster()` et `clusterAllReplicas()` lors de l’utilisation d’une fonction de table comme source (par ex. `cluster('name', view(...), sharding_key)`). [#100665](https://github.com/ClickHouse/ClickHouse/pull/100665) ([Sergey Veletskiy](https://github.com/velom)).
  * Correction de types d’argument `AggregateFunction` incorrects dans le count trivial optimisé, ce qui provoquait 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)).
  * Correction d’une erreur logique "Invalid action query tree node" lors de l’utilisation de `INTERSECT ALL` / `UNION ALL` avec des expressions constantes simplifiées. [#100977](https://github.com/ClickHouse/ClickHouse/pull/100977) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une erreur `UNKNOWN_IDENTIFIER` incorrecte lorsque le même alias était 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 d’une exception dans `DirectJoinMergeTreeEntity` lorsque les blocks du pipeline contenaient 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 de 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 était activé. [#101055](https://github.com/ClickHouse/ClickHouse/pull/101055) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de l’application d’`OFFSET` en double 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’une erreur "Illegal type Decimal64 of start parameter" dans 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 de résultats de requête incorrects lorsqu’une grande constante entière (par ex. 256, 2147483648) était utilisée comme prédicat booléen dans une clause `WHERE` avec `AND` sur des tables MergeTree. [#101287](https://github.com/ClickHouse/ClickHouse/pull/101287) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un plantage avec "Logical error: Reading from materialized CTE before materialization" lorsqu’une sous-requête scalaire référençait une chaîne de CTE matérialisées dépendantes. [#101305](https://github.com/ClickHouse/ClickHouse/pull/101305) ([Groene AI](https://github.com/groeneai)).
  * Correction d’une exception lors de la conversion d’une chaîne avec des données résiduelles vers le type vide `Tuple()`. [#102011](https://github.com/ClickHouse/ClickHouse/pull/102011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une erreur logique lors de l’analyse d’une chaîne de tuple vide incorrecte. [#102289](https://github.com/ClickHouse/ClickHouse/pull/102289) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction de 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)).
  * Correction d’une exception dans `getStructureOfRemoteTable` lorsque le shard local renvoyait des colonnes vides en raison de DDL concurrentes. [#102604](https://github.com/ClickHouse/ClickHouse/pull/102604) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Optimisation des chaînes de `OR` dans les row policy en `IN` dans le nouvel analyseur. [#102915](https://github.com/ClickHouse/ClickHouse/pull/102915) ([Azat Khuzhin](https://github.com/azat)).
  * Correction de résultats incorrects renvoyés par `WHERE x AND toNullable(N)` sur des tables `MergeTree` lorsque `N` est un entier plus grand que `UInt8` (par ex. `256`, `65535`, `2147483648` ou tout entier négatif). [#103077](https://github.com/ClickHouse/ClickHouse/pull/103077) ([Groene AI](https://github.com/groeneai)).

  ### Correctifs MergeTree et stockage

  * Correction d’une erreur logique lors de l’attachement d’une part dans MergeTree lorsqu’il y avait plusieurs renommages en chaîne entre le détachement et l’attachement. [#96351](https://github.com/ClickHouse/ClickHouse/pull/96351) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’un calcul non déterministe de `uncompressed_hash` pour les parts Compact 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)).
  * Correction d’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)).
  * `hasPartitionId` renvoie désormais false si une autre partition avec un ID de partition plus élevé existe dans l’ensemble des parts de données. [#97748](https://github.com/ClickHouse/ClickHouse/pull/97748) ([Mikhail Artemenko](https://github.com/Michicosun)).
  * Correction d’une mutation après une lightweight update avec des index secondaires. [#98044](https://github.com/ClickHouse/ClickHouse/pull/98044) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction de résultats incorrects de requêtes FINAL lors du mélange d’index de saut sur clé primaire et hors clé primaire. [#98097](https://github.com/ClickHouse/ClickHouse/pull/98097) ([Raúl Marín](https://github.com/Algunenano)).
  * Si les colonnes de la clé de partition ne sont pas couvertes par la clé de tri, l’élagage des partitions pouvait ignorer à tort des partitions contenant des lignes qui devaient "l’emporter" lors de la déduplication FINAL. [#98242](https://github.com/ClickHouse/ClickHouse/pull/98242) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction d’un interblocage potentiel lorsque deux opérations `MOVE PARTITION` concurrentes 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)).
  * Correction d’une exception `LOGICAL_ERROR` "Invalid binary search result in `MergeTreeSetIndex`" déclenchée par une conversion `toDate` sur des colonnes clés avec des données franchissant la limite de 65535. [#98276](https://github.com/ClickHouse/ClickHouse/pull/98276) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’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)).
  * Correction de mutations `MATERIALIZE INDEX` et `MATERIALIZE PROJECTION` bloquées lorsque l’index ou la projection est supprimé avant la fin de la mutation. [#98369](https://github.com/ClickHouse/ClickHouse/pull/98369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de résultats incorrects d’élagage des partitions après fusion de parts avec des colonnes de clé de partition `Nullable`, en raison de bornes d’index min-max erronées. [#98405](https://github.com/ClickHouse/ClickHouse/pull/98405) ([Amos Bird](https://github.com/amosbird)).
  * Correction d’une exception `LOGICAL_ERROR` dans `renameAndCommitEmptyParts` qui pouvait se produire lorsque `TRUNCATE TABLE` s’exécutait simultanément avec `OPTIMIZE TABLE` en utilisant des transactions MergeTree. [#98508](https://github.com/ClickHouse/ClickHouse/pull/98508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’un dépassement Decimal lors de l’élagage des partitions avec `DateTime64`. [#98628](https://github.com/ClickHouse/ClickHouse/pull/98628) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction de la résurrection de parts de données obsolètes causée par un nettoyage incorrect de parts de couverture vides. [#98698](https://github.com/ClickHouse/ClickHouse/pull/98698) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Correction de la détection de l’utilité de l’index de saut de type Set avec un prédicat `OR` sur false (c.-à-d. `or(x, 0)`). [#98776](https://github.com/ClickHouse/ClickHouse/pull/98776) ([Azat Khuzhin](https://github.com/azat)).
  * Correction du problème où les skip indexes (et les conditions de clé primaire) n’étaient pas appliqués aux colonnes ALIAS lorsque la fusion des expressions du plan de requête 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)).
  * Correction d’un pruning incorrect ou insuffisant lorsque `startsWith`, `LIKE` ou `NOT LIKE` étaient utilisés avec une colonne `FixedString`. De plus, la fonction de conversion de type de `FixedString` vers `String` peut désormais élaguer les granules lorsqu’elle est appliquée à une colonne clé. [#99001](https://github.com/ClickHouse/ClickHouse/pull/99001) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction d’une exception lors de la lecture de patch parts (lightweight updates) sans la 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 une clé primaire `String`, utilise 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)).
  * Correction d’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)).
  * Correction de `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)).
  * Correction du problème où `ALTER TABLE UPDATE`/`DELETE` échouait avec une 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)).
  * 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)).
  * Correction d’un rare marquage erroné d’une data part 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 d’un échec d’assertion `rows_sources` lors d’une vertical merge quand `SYSTEM STOP/START MERGES` est activé/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)).
  * Correction d’un partition pruning incorrect pour `toWeek()` qui faisait que les requêtes 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)).
  * Correction d’une `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 ex. `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction du 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)).
  * Une partie avec des projections inconnues n’est plus marquée comme définitivement perdue. [#99623](https://github.com/ClickHouse/ClickHouse/pull/99623) ([Sema Checherinda](https://github.com/CheSema)).
  * Correction d’une référence pendante dans `injectRequiredColumns` qui provoquait un crash lors d’une fusion. [#99679](https://github.com/ClickHouse/ClickHouse/pull/99679) ([Tuan Pham Anh](https://github.com/tuanpach)).
  * Correction d’une erreur logique lors de la fusion de parties de projection après `CLEAR COLUMN` sur une table avec des projections et des parties compactes. [#100068](https://github.com/ClickHouse/ClickHouse/pull/100068) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’une `LOGICAL_ERROR` "Stream ... not found" lors de l’insertion dans une table avec des colonnes imbriquées `Array(JSON)` dans des parties wide avec `optimize_on_insert=0`. [#100475](https://github.com/ClickHouse/ClickHouse/pull/100475) ([Pavel Kruglov](https://github.com/Avogar)).
  * Les arguments du engine pour `StorageAlias` sont désormais évalués avant le stockage de 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 d’un problème où `divide` et `intDiv` renvoyaient `ILLEGAL_DIVISION` lorsqu’ils étaient utilisés dans des expressions de filtre lors de l’analyse des index, dans certains cas. [#100928](https://github.com/ClickHouse/ClickHouse/pull/100928) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction d’un problème où une optimisation `minmax_count_projection` et l’optimisation triviale `COUNT(*)` restaient désactivées de façon permanente après un lightweight delete, même après la fusion de toutes les parties comportant un masque de lightweight delete. [#101212](https://github.com/ClickHouse/ClickHouse/pull/101212) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction d’une data race sur `storage_id` dans `IStorage::getDependentViewsByColumn`. [#101385](https://github.com/ClickHouse/ClickHouse/pull/101385) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Correction d’un problème où `materialize_skip_indexes_on_merge=false` ne supprimait pas les index textuels (full-text) lors d’une fusion. Auparavant, seuls les skip indexes non textuels (minmax, set, bloom\_filter) étaient supprimés. [#101932](https://github.com/ClickHouse/ClickHouse/pull/101932) ([Groene AI](https://github.com/groeneai)).
  * Les entrées du cache de l’index de similarité vectorielle sont désormais supprimées après la suppression d’une partie (par exemple lors d’une fusion), ce qui corrige un problème empêchant leur éviction en raison de clés de cache non concordantes. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
  * Correction d’une fausse exception `LOGICAL_ERROR` lors du redimensionnement dynamique du cache du système de fichiers, due à une condition de concurrence dans la promotion d’une sous-file SLRU. [#99850](https://github.com/ClickHouse/ClickHouse/pull/99850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une possible erreur logique lors de la lecture de sous-colonnes de type Map. [#101641](https://github.com/ClickHouse/ClickHouse/pull/101641) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction de la priorité de la correspondance exacte des sous-colonnes par rapport à la correspondance par préfixe dans `getSubcolumnData`, afin d’éviter un possible crash. [#101645](https://github.com/ClickHouse/ClickHouse/pull/101645) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction de l’utilisation d’extrêmes incorrects dans un index min-max créé sur une colonne JSON, ce qui entraînait des résultats de query erronés. [#101918](https://github.com/ClickHouse/ClickHouse/pull/101918) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’un bug de concurrence SLRU dans le cache du système de fichiers (26.1+) qui pouvait entraîner une erreur logique de réservation d’espace. [#101991](https://github.com/ClickHouse/ClickHouse/pull/101991) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Correction d’une erreur logique `Having zero bytes` dans le cache, qui se produisait lorsqu’un objet distant était écrasé entre `list` et `read`, ce qui entraînait auparavant des métadonnées d’objet obsolètes. [#101219](https://github.com/ClickHouse/ClickHouse/pull/101219) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Correction d’un échec d’assertion `file_offset_of_buffer_end <= getFileSize()` lors de la lecture de tables `Log` ou `StripeLog` sur un stockage objet S3 en présence d’écritures concurrentes. [#100763](https://github.com/ClickHouse/ClickHouse/pull/100763) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction du plafonnement de la taille du cache lors du rechargement de la configuration. [#100659](https://github.com/ClickHouse/ClickHouse/pull/100659) ([Aleksei Filatov](https://github.com/aalexfvk)).
  * Correction d’un arrêt `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 par 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)).
  * Correction de la désactivation permanente d’une optimisation `minmax_count_projection` et de l’optimisation triviale de `COUNT(*)` après un lightweight delete. [#102900](https://github.com/ClickHouse/ClickHouse/pull/102900) ([Anton Popov](https://github.com/CurtizJ)).

  ### Corrections relatives aux types de données et à la sérialisation

  * Correction d’un résultat incorrect ou d’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)).
  * Correction du fait que la fonction d’agrégation `sumCount` ne pouvait pas lire d’anciens états sérialisés après l’introduction de `Nullable(Tuple)`. [#97502](https://github.com/ClickHouse/ClickHouse/pull/97502) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction d’une erreur logique liée à un flux manquant lors d’un `INSERT SELECT` avec JSON et des buckets dans les données partagées. [#97523](https://github.com/ClickHouse/ClickHouse/pull/97523) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction de plantages possibles lors de la lecture de granules vides dans les données partagées avancées en JSON. [#97778](https://github.com/ClickHouse/ClickHouse/pull/97778) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’une mauvaise compilation JIT de la fonction `sign` pour les types entiers plus larges que `Int8` — les valeurs en dehors de la plage -128..127 pouvaient produire un signe incorrect. [#98012](https://github.com/ClickHouse/ClickHouse/pull/98012) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction du fait que le format `ProtobufList` ne fonctionnait pas avec le Kafka engine, car 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)).
  * Correction d’une corruption silencieuse des données lors de l’insertion d’une colonne `Date` Parquet/Arrow dans une colonne `Enum` — la conversion de type incompatible est désormais correctement rejetée au lieu de stocker des valeurs d’enum invalides. [#98364](https://github.com/ClickHouse/ClickHouse/pull/98364) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception lors de la lecture d’un fichier Arrow avec une colonne `Array` dans une table avec une colonne `Nested`. [#98365](https://github.com/ClickHouse/ClickHouse/pull/98365) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une exception lors de la lecture depuis `Nullable(Tuple(...))` lorsqu’un nom d’élément de `Tuple` entrait en collision avec la sous-colonne `null` de `Nullable`. [#98372](https://github.com/ClickHouse/ClickHouse/pull/98372) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une conversion incorrecte de Parquet `Bool` vers `FixedString` dans le lecteur natif V3, qui produisait des octets bruts au lieu d’une représentation sous forme de chaîne. [#98378](https://github.com/ClickHouse/ClickHouse/pull/98378) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de `tryGetColumnDescription` afin de filtrer les sous-colonnes par type de colonne parente, conformément aux autres méthodes de recherche de colonnes. [#98391](https://github.com/ClickHouse/ClickHouse/pull/98391) ([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 corrompu des colonnes en mémoire. [#98551](https://github.com/ClickHouse/ClickHouse/pull/98551) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’une exception `Bad cast from type ColumnConst to ColumnDynamic` dans une comparaison null-safe (`<=>` / `IS NOT DISTINCT FROM`) avec des colonnes constantes `Dynamic` ou `Variant` et `NULL`. Correction également du fait que `IS DISTINCT FROM` avec `Dynamic`/`Variant` et `NULL` renvoyait toujours 0 à tort. [#98553](https://github.com/ClickHouse/ClickHouse/pull/98553) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction du fait que `parseDateTimeBestEffort` analysait incorrectement les mots commençant par des préfixes de mois ou de jours de la semaine. [#98742](https://github.com/ClickHouse/ClickHouse/pull/98742) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’une 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 d’une exception `LOGICAL_ERROR` dans les fonctions financières (`financialNetPresentValue`, `financialInternalRateOfReturn`, etc.) lors du passage d’arguments de type `BFloat16`. [#98958](https://github.com/ClickHouse/ClickHouse/pull/98958) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * SummingMergeTree n’additionne plus les colonnes `Bool` (ni les autres colonnes de type domaine) ; les valeurs `Bool` sont désormais 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 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. Ces modifications sont désormais correctement rejetées. [#98985](https://github.com/ClickHouse/ClickHouse/pull/98985) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de `parseDateTimeBestEffort`, qui analysait incorrectement des mots commençant par des préfixes de mois au format DD-month-YYYY. [#99350](https://github.com/ClickHouse/ClickHouse/pull/99350) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction de `CHECK TABLE` avec une sérialisation sparse à l’intérieur d’un Tuple avec Dynamic. [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’une 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 d’un bug qui rendait confuse la comparaison entre les types `Time[64]` et `DateTime[64]` ; les valeurs `Time[64]` sont désormais 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)).
  * Correction de la désérialisation de `\N` (NULL) pour le type `Variant` dans les formats texte Escaped/Raw. [#99648](https://github.com/ClickHouse/ClickHouse/pull/99648) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’un comportement indéfini dans le lecteur du format Avro lors de la lecture de valeurs numériques dépassant la capacité du type de colonne cible. Les requêtes échouent désormais 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)).
  * Correction d’un faux positif provoquant un arrêt dans `NativeReader` lors de la désérialisation d’un flux au format Native avec une discordance du nombre de lignes : `LOGICAL_ERROR` a été remplacé par `INCORRECT_DATA`. [#99822](https://github.com/ClickHouse/ClickHouse/pull/99822) ([Rahul Nair](https://github.com/motsc)).
  * Correction d’un 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)).
  * Correction du paramètre `aggregate_functions_null_for_empty` pour qu’il fonctionne avec des fonctions d’agrégation renvoyant des types non-Nullable tels que `Array` ou `Map` (par exemple `groupArray`, `sumMap`). [#99839](https://github.com/ClickHouse/ClickHouse/pull/99839) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une 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 d’une exception `LOGICAL_ERROR` dans des requêtes impliquant des colonnes `Dynamic`, des jointures croisées et des filtres d’exécution, causée par le fait que `ColumnVariant::filter` partageait des pointeurs vers des colonnes Variant au lieu de les cloner dans le chemin d’optimisation `hasOnlyNulls`. [#100234](https://github.com/ClickHouse/ClickHouse/pull/100234) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d’un bug sur les tableaux de `Variant` qui pouvait réinterpréter le type de données lors de l’appel à `arrayFirst`/`arrayLast`. Par exemple, `Array(Variant(Date, Bool))` était converti en `Bool` alors que le type Variant sous-jacent réel était `Date`. [#100255](https://github.com/ClickHouse/ClickHouse/pull/100255) ([timothygk](https://github.com/timothygk)).
  * Correction d’un problème empêchant les formats `CSV` et `MsgPack` d’analyser correctement `Nullable(Tuple)`. [#100038](https://github.com/ClickHouse/ClickHouse/pull/100038) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction d’un problème où les fonctions `accurateCastOrDefault` et `to*OrDefault` ne conservaient 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 paramètres de requête omis de type `LowCardinality(Nullable(T))` prennent désormais correctement `NULL` comme valeur par défaut, comme pour `Nullable(T)`. [#100144](https://github.com/ClickHouse/ClickHouse/pull/100144) ([Denys Melnyk](https://github.com/germiBest)).
  * Correction d’un dépassement d’entier signé (comportement indéfini) dans `toStartOfInterval` lors d’un appel avec de très grandes valeurs d’intervalle en millisecondes/microsecondes sur `DateTime64` à haute précision. [#100156](https://github.com/ClickHouse/ClickHouse/pull/100156) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction des filtres d’exécution de jointure sur le type de données `Variant`. [#100182](https://github.com/ClickHouse/ClickHouse/pull/100182) ([Dmitry Novik](https://github.com/novikd)).
  * Correction d’un cast de `Time64` vers `UInt64` qui pouvait limiter les valeurs à 24 heures. [#100025](https://github.com/ClickHouse/ClickHouse/pull/100025) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction d’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)).
  * Correction d’un comportement indéfini dans `positiveModulo` lorsque le diviseur non signé ne tient pas dans le type de résultat signé. [#100705](https://github.com/ClickHouse/ClickHouse/pull/100705) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d’un comportement indéfini (dépassement 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)).
  * Correction des combinators de fonctions d’agrégation `If`, `Distinct`, `DistinctIf` et `IfState` avec un type de retour `Tuple` et un ou plusieurs arguments `Nullable`, qui ne pouvaient pas lire les anciens états sérialisés après l’introduction de `Nullable(Tuple)`. [#100826](https://github.com/ClickHouse/ClickHouse/pull/100826) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * `cast_keep_nullable`, lorsqu’il est activé, ne lève plus d’exception lors du cast d’une valeur NULL `Dynamic` vers un `Variant`. [#100864](https://github.com/ClickHouse/ClickHouse/pull/100864) ([Seva Potapov](https://github.com/seva-potapov)).
  * Correction d’une exception dans `intDiv`/`intDivOrZero` sur des tableaux de tuples `Nullable`. [#100895](https://github.com/ClickHouse/ClickHouse/pull/100895) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d’un comportement indéfini (dépassement d’entier signé) dans `parseDateTimeBestEffort` lors de l’analyse de chaînes de date/heure 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 problème empêchant la fonction d’agrégation `sumCountOrDefault`, avec un ou plusieurs arguments `Nullable`, de lire d’anciens états sérialisés après l’introduction de `Nullable(Tuple)`. [#101021](https://github.com/ClickHouse/ClickHouse/pull/101021) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Correction des colonnes ALIAS de type `DateTime`/`DateTime64` qui n’appliquaient pas la conversion de fuseau horaire lorsque le fuseau horaire déclaré différait de celui de l’expression. [#101043](https://github.com/ClickHouse/ClickHouse/pull/101043) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Suppression de `Nullable` de la colonne de résultat dans `arrayIntersect` et les fonctions associées afin d’éviter un décalage entre sérialisation et désérialisation. [#101569](https://github.com/ClickHouse/ClickHouse/pull/101569) ([George Larionov](https://github.com/george-larionov)).
  * Correction de `positiveModulo(tuple, number)`, qui utilisait à tort la division au lieu du modulo. [#101709](https://github.com/ClickHouse/ClickHouse/pull/101709) ([ClickGap AI Bot](https://github.com/clickgapai)).
  * Correction d’une sortie incorrecte dans `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’une exception d’incompatibilité de type dans `transform` lorsque la colonne par défaut est const sur certains blocks. [#100616](https://github.com/ClickHouse/ClickHouse/pull/100616) ([Pavel Kruglov](https://github.com/Avogar)).
  * Autorisation des row groups vides dans Parquet. [#100653](https://github.com/ClickHouse/ClickHouse/pull/100653) ([Vitaly Baranov](https://github.com/vitlibar)).
  * `min`/`max`/`argMin`/`argMax` traitent désormais NaN de manière cohérente avec `ORDER BY` : NaN est toujours ignoré (il 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’une inférence incorrecte du type de date en cas de dépassement après ajustement du fuseau horaire. [#102674](https://github.com/ClickHouse/ClickHouse/pull/102674) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction de `CASE` avec une expression `Dynamic` qui renvoyait `ELSE` pour toutes les lignes. [#102684](https://github.com/ClickHouse/ClickHouse/pull/102684) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction de la sérialisation du type `Dynamic` aplati avec des types de données encodés en binaire. [#102692](https://github.com/ClickHouse/ClickHouse/pull/102692) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction du fait que `cast_string_to_date_time_mode` était ignoré pour `CAST` vers `Nullable(DateTime)`. [#103035](https://github.com/ClickHouse/ClickHouse/pull/103035) ([Pavel Kruglov](https://github.com/Avogar)).
  * La représentation de null dans la sérialisation des colonnes répliquées et sparse respecte désormais les paramètres (par ex. `format_tsv_null_representation`). [#102888](https://github.com/ClickHouse/ClickHouse/pull/102888) ([Hechem Selmi](https://github.com/m-selmi)).

  ### Corrections des index de texte et des index de saut

  * Correction de l’utilisation du text index avec d’autres skip indexes. Auparavant, des erreurs logiques telles que "Trying to get non-existing mark" pouvaient être levées lorsqu’un filtre de query utilisait simultanément un text index et d’autres skip indexes classiques. [#98555](https://github.com/ClickHouse/ClickHouse/pull/98555) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction de la reconstruction des text indexes lors des merges avec TTL. [#99107](https://github.com/ClickHouse/ClickHouse/pull/99107) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction d’une validation trop stricte du preprocessor du text index. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
  * Suppression de la prise en charge des fonctions niées (`notEquals`, `notLike`, `notIn`) dans l’analyse d’index du text index. Ces fonctions ne pouvaient jamais ignorer de granules ; leur analyse par l’index n’ajoutait donc que du surcoût. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction d’une exception `NOT_FOUND_COLUMN_IN_BLOCK` lorsqu’un predicate de text index (par ex. `hasAllTokens`) était 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 columns dotées de text indexes distincts. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction de la lecture du text index dans une table comportant des lightweight deletes existants et des row policies. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction de l’analyse des predicates avec la fonction `IN` par le text index avec le preprocessor, ainsi que d’une collision entre tokens recherchés 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 utilisation incorrecte du text index avec les fonctions `startsWith` et `endsWith` pour les tokenizers qui ne prennent pas en charge la correspondance par substring (`array`, `splitByString`). Auparavant, ces tokenizers pouvaient produire silencieusement des résultats erronés. [#100151](https://github.com/ClickHouse/ClickHouse/pull/100151) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction d’un crash rare lorsqu’une exception "Memory Limit" était levée pendant la construction du text index. [#100213](https://github.com/ClickHouse/ClickHouse/pull/100213) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction des erreurs "Not-ready Set is passed as the second argument" pendant l’analyse d’un text index construit sur `mapValues` pour des predicates contenant une clause `IN`. [#100224](https://github.com/ClickHouse/ClickHouse/pull/100224) ([Anton Popov](https://github.com/CurtizJ)).
  * 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 ex. `WHERE (id, str) IN (SELECT (id, str) FROM ...)`, ou lorsque le nombre de columns dans la sous-requête ne correspondait pas au tuple situé à gauche de `IN`. [#100959](https://github.com/ClickHouse/ClickHouse/pull/100959) ([Anton Popov](https://github.com/CurtizJ)).
  * 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)).
  * Le tokenizer `sparseGrams` générait des tokens plus longs que la longueur maximale fournie (en raison d’un `+2` codé en dur dans l’implémentation). [#101934](https://github.com/ClickHouse/ClickHouse/pull/101934) ([Elmi Ahmadov](https://github.com/ahmadov)).
  * Correction d'une exception lors de l'exécution de requêtes sur des tables `Merge` ou `Distributed` avec un index de texte intégral 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)).
  * Correction de `hasToken`/`hasTokenOrNull` avec des motifs de recherche composés uniquement de séparateurs (par ex. `'()'`, `'!!!'`) sur des colonnes avec un index de texte intégral : auparavant, l'index ignorait silencieusement toutes 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)).
  * Les paramètres de l'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. [#102422](https://github.com/ClickHouse/ClickHouse/pull/102422) ([Nikita Fomichev](https://github.com/fm4v)).
  * Ajout de la prise en charge des colonnes `ALIAS` dans l'optimisation de lecture directe depuis l'index de texte. [#103037](https://github.com/ClickHouse/ClickHouse/pull/103037) ([Anton Popov](https://github.com/CurtizJ)).

  ### Correctifs du lac de données

  * Correction d’une condition de concurrence logique lors d’un changement de version de snapshot dans le moteur de table `DeltaLake`, et suppression de rechargements de snapshot lourds et redondants. [#96226](https://github.com/ClickHouse/ClickHouse/pull/96226) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Correction d’une exception `DUPLICATE_COLUMN` et de valeurs NULL silencieuses lors de la lecture de tables Delta Lake utilisant le mode de mapping de colonnes "name" avec des champs de struct dont les noms contiennent des points. [#98013](https://github.com/ClickHouse/ClickHouse/pull/98013) ([Caio Ishizaka Costa](https://github.com/ch-caioishizaka)).
  * Correction d’un bug lors de l’utilisation de Unity Catalog sur 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)).
  * La création, l’attachement et la mise à jour de tables de data lake locales en dehors des chemins utilisateur sont désormais interdits ; cette vérification est effectuée lors de la création et de la mise à jour de `IDataLakeMetadata`. [#98936](https://github.com/ClickHouse/ClickHouse/pull/98936) ([Daniil Ivanik](https://github.com/divanik)).
  * Correction des lectures Iceberg BigLake : les identifiants ADC sont désormais transmis au client S3 de GCS (ce qui corrige les erreurs 403), les identifiants OAuth2 sont encodés dans l’URL avant l’envoi, et le parcours de l’espace 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 d’une erreur de dépassement de limites lors de l’interrogation exclusive des colonnes virtuelles d’une table Iceberg contenant des données Avro. [#99080](https://github.com/ClickHouse/ClickHouse/pull/99080) ([alesapin](https://github.com/alesapin)).
  * Correction d’un crash dans `ALTER TABLE ... REMOVE SETTINGS` pour le moteur de table Iceberg. [#99108](https://github.com/ClickHouse/ClickHouse/pull/99108) ([alesapin](https://github.com/alesapin)).
  * Correction d’un crash très rare lorsqu’une table Iceberg contient des fichiers de formats mixtes (ORC et Parquet). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
  * Correction d’un crash (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)).
  * ClickHouse gère désormais correctement les tables au format Spark (avec un chemin absolu complet pour chaque fichier ou un chemin relatif vers le chemin commun de la table). [#99935](https://github.com/ClickHouse/ClickHouse/pull/99935) ([alesapin](https://github.com/alesapin)).
  * Correction d’une exception lorsqu’un 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 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)).
  * Correction d’une erreur logique dans des tables Iceberg triées pendant les mutations. [#100499](https://github.com/ClickHouse/ClickHouse/pull/100499) ([alesapin](https://github.com/alesapin)).
  * Correction du Polaris Catalog avec Azure : depuis la version 25.12, le catalog ajoutait le bucket au début du chemin. [#100583](https://github.com/ClickHouse/ClickHouse/pull/100583) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Correction d’une exception `Logical error: 'partitions_count > 0'` lors de l’exécution d’`ALTER TABLE UPDATE` consécutifs sur une table Iceberg partitionnée. [#101278](https://github.com/ClickHouse/ClickHouse/pull/101278) ([Desel72](https://github.com/Desel72)).
  * Correction de l’`insert-select` depuis un cluster Delta Lake avec ReplicatedMergeTree. [#101299](https://github.com/ClickHouse/ClickHouse/pull/101299) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Déclenche une erreur lorsque les paramètres `delta_lake_snapshot_version` ou de version CDF sont utilisés sans DeltaKernel activé, au lieu de renvoyer silencieusement des données incorrectes. [#101489](https://github.com/ClickHouse/ClickHouse/pull/101489) ([Desel72](https://github.com/Desel72)).
  * Correction d’une boucle de tentatives d’INSERT Iceberg qui échouait lorsque la table était 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)).
  * Correction d’un plantage du serveur (`LOGICAL_ERROR`) lors d’un SELECT depuis une vue matérialisée reposant sur un moteur de table IcebergLocal. [#101577](https://github.com/ClickHouse/ClickHouse/pull/101577) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un plantage dans IcebergLocal `ALTER TABLE ... UPDATE` lors de l’utilisation du format Avro, dû au fait que les types wrapper `LowCardinality`/`Nullable` n’étaient pas désencapsulés avant la sérialisation. [#102337](https://github.com/ClickHouse/ClickHouse/pull/102337) ([Desel72](https://github.com/Desel72)).
  * Ajout de la colonne `hostname` manquante à `system.delta_lake_metadata_log` et `system.iceberg_metadata_log`. [#102162](https://github.com/ClickHouse/ClickHouse/pull/102162) ([Michael Russell](https://github.com/Crazybus)).
  * Correction dans CoalescingMergeTree pour le type Array. [#102384](https://github.com/ClickHouse/ClickHouse/pull/102384) ([Konstantin Vedernikov](https://github.com/scanhex12)).

  ### Correctifs S3/Azure/stockage objet

  * Correction d'une exception provenant de `CachedOnDiskReadBufferFromFile::readBigAt`. [#97890](https://github.com/ClickHouse/ClickHouse/pull/97890) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Correction d'un crash : l'interrogation de fichiers avec un motif glob (par ex. `file('dir/**', 'LineAsString')`) levait une exception du système de fichiers non gérée si le répertoire contenait un lien symbolique orphelin. Les liens symboliques orphelins sont désormais ignorés sans bruit. [#98143](https://github.com/ClickHouse/ClickHouse/pull/98143) ([Mark Andreev](https://github.com/mrk-andreev)).
  * Correction d'une utilisation mémoire excessive (\~514 MiB) lors de la détection automatique du format pendant la lecture de données non Arrow (par ex. du JSON depuis `url()` ou `file()` sans format explicite), causée par le lecteur ArrowStream qui interprétait 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)).
  * Correction d'une situation de concurrence pouvant provoquer une exception "ReadBuffer is canceled" dans les requêtes utilisant `urlCluster` ou des fonctions table cluster similaires. [#98955](https://github.com/ClickHouse/ClickHouse/pull/98955) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d'un message trompeur "inflate failed: buffer error" lors de la lecture de fichiers compressés inexistants via la fonction table `url()` avec des motifs glob. [#99034](https://github.com/ClickHouse/ClickHouse/pull/99034) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction des appels `HeadObject` N+1 pour les motifs glob S3 avec expansion d'accolades. [#99219](https://github.com/ClickHouse/ClickHouse/pull/99219) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Correction de cas où des nombres avec des zéros initiaux dans un chemin de partitionnement Hive provoquaient des erreurs. [#99458](https://github.com/ClickHouse/ClickHouse/pull/99458) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction d'un `seek` incorrect dans `AsynchronousReadBufferFromFileDescriptor` avec `O_DIRECT`. [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
  * Correction d'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)).
  * Le serveur n'échoue plus au démarrage lorsqu'un disque Azure blob storage est configuré mais que l'endpoint est temporairement inaccessible (par ex. échec DNS). [#100701](https://github.com/ClickHouse/ClickHouse/pull/100701) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d'un segfault dans `s3Cluster` et les requêtes distribuées dû à une libération prématurée dans le pool de connexions. [#100837](https://github.com/ClickHouse/ClickHouse/pull/100837) ([Konstantin Bogdanov](https://github.com/thevar1able)).
  * Correction d'une exception s'échappant du destructeur S3 `Client::~Client`, provoquant l'arrêt du serveur. [#101798](https://github.com/ClickHouse/ClickHouse/pull/101798) ([Gagan Dhakrey](https://github.com/gagandhakrey)).
  * Correction de l'hôte et du port qui n'étaient pas correctement consignés lors de la reconnexion. [#102280](https://github.com/ClickHouse/ClickHouse/pull/102280) ([Grant Holly](https://github.com/grantholly-clickhouse)).
  * Correction d'une exception côté 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)).

  ### Correctifs S3Queue

  * S3Queue : correction d’une assertion en échec après une perte de connexion à ZooKeeper, malgré un commit réussi. [#100210](https://github.com/ClickHouse/ClickHouse/pull/100210) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Correction de l’inversion du texte de description de la colonne `alterable` dans `system.s3_queue_settings` et `system.azure_queue_settings` — la signification de `0` et `1` a été permutée pour correspondre au comportement réel du code. [#101703](https://github.com/ClickHouse/ClickHouse/pull/101703) ([ClickGap AI Bot](https://github.com/clickgapai)).

  ### Correctifs de sécurité et de contrôle d'accès

  * La fonction de table `loop` appelait directement `inner_storage->read()`, en contournant la couche d’interprétation où sont appliquées les row policies, les grants au niveau des colonnes et les autres contrôles de sécurité. Cela permettait à un utilisateur restreint par des row policies de lire toutes les lignes via `loop(table)`. [#97682](https://github.com/ClickHouse/ClickHouse/pull/97682) ([pufit](https://github.com/pufit)).
  * 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)).
  * Prise en charge des credentials base64 sans padding dans HTTP Basic Auth. Certains clients HTTP omettent le 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 d’un contournement de RBAC qui permettait aux utilisateurs d’exécuter `DESCRIBE` sur n’importe quelle table via `remote()`, `remoteSecure()`, `cluster()` ou `clusterAllReplicas()` pointant vers localhost, sans nécessiter le privilège `SHOW_COLUMNS`. [#98669](https://github.com/ClickHouse/ClickHouse/pull/98669) ([pufit](https://github.com/pufit)).
  * Correction d’un problème où `system.grants` omettait les paramètres de regular expression pour les grants `URL` et `S3` dans la colonne `access_object`. [#98987](https://github.com/ClickHouse/ClickHouse/pull/98987) ([DQ](https://github.com/il9ue)).
  * Correction d’un contournement de 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 les privilèges d’accès à la source requis. Pour les fonctions qui déduisent le schéma à partir de serveurs distants, cela permettait également de déclencher des connexions sortantes (SSRF) sans autorisation. [#99122](https://github.com/ClickHouse/ClickHouse/pull/99122) ([pufit](https://github.com/pufit)).
  * Limitation des settings constraints dans le worker DDL pour les distributed DDL queries. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
  * Correction de 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)).
  * Les credentials dans les connection strings JDBC, ODBC et NATS sont désormais masqués dans les query logs et la sortie de `SHOW CREATE`. Pour les connection strings de type URI, seule la partie mot de passe est masquée. Le setting `nats_token` est désormais lui aussi masqué. [#99344](https://github.com/ClickHouse/ClickHouse/pull/99344) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Interdiction de lire les credentials Google depuis un fichier local, ce qui n’était pas sûr, car cela permettait de lire d’autres credentials si le file path était connu. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * 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 de `system.completions` afin de filtrer correctement les databases, tables et columns selon les access rights dans toutes les combinaisons de grants : revoke par table, par DB et par colonne. [#100432](https://github.com/ClickHouse/ClickHouse/pull/100432) ([Shaohua Wang](https://github.com/tiandiwonder)).
  * Nettoyage de `query_id` dans le handler HTTP afin d’empêcher l’injection CRLF dans les headers de réponse via l’en-tête `X-ClickHouse-Query-Id`. [#100500](https://github.com/ClickHouse/ClickHouse/pull/100500) ([Pablo Marcos](https://github.com/pamarcos)).
  * Certains catalogues pouvaient afficher des secrets dans la section `SETTINGS` de `SELECT * FROM system.databases`. Ce n’est désormais plus possible. [#100800](https://github.com/ClickHouse/ClickHouse/pull/100800) ([Konstantin Vedernikov](https://github.com/scanhex12)).
  * Les politiques au niveau des lignes n’étaient pas propagées des sous-planificateurs vers le planificateur parent pour la journalisation, elles étaient donc absentes de `query_log` pour les vues, les sous-requêtes et les insert-selects. Elles sont désormais conservées dans `QueryAccessInfo` pour la journalisation. [#101044](https://github.com/ClickHouse/ClickHouse/pull/101044) ([Narasimha Pakeer](https://github.com/npakeer)).

  ### Correctifs de sauvegarde et de restauration

  * Correction du problème empêchant l’application de `max_execution_time` aux opérations de sauvegarde/restauration. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
  * Correction d’une 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)).
  * Validation des chemins des entrées 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 lors de `RESTORE`. [#100483](https://github.com/ClickHouse/ClickHouse/pull/100483) ([Pablo Marcos](https://github.com/pamarcos)).
  * Correction de la mise en forme et du clonage de l’AST pour `BACKUP FROM SNAPSHOT`. [#101405](https://github.com/ClickHouse/ClickHouse/pull/101405) ([Pablo Marcos](https://github.com/pamarcos)).

  ### Correctifs ClickHouse Keeper

  * Correction d’une data race dans le client ZooKeeper entre le thread d’envoi et le thread de réception. [#97887](https://github.com/ClickHouse/ClickHouse/pull/97887) ([Pablo Marcos](https://github.com/pamarcos)).
  * Correction d’une perte de données dans Keeper après redémarrage lors de l’utilisation d’Azure Blob Storage avec des métadonnées `s3_plain` pour le stockage des logs. [#97987](https://github.com/ClickHouse/ClickHouse/pull/97987) ([Antonio Andelic](https://github.com/antonio2368)).
  * Définition du composant `Watch` pour les réponses de 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)).
  * Correction d’un problème où ClickHouse Keeper déconnectait les clients ZooKeeper Java après une requête `addWatch`. Le client Java attend un corps `ErrorResponse` de 4 octets, mais Keeper envoyait un corps vide, ce qui provoquait une `EOFException` et la déconnexion de la session. [#98499](https://github.com/ClickHouse/ClickHouse/pull/98499) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’un problème où les métriques Keeper `zk_followers` et `zk_synced_followers` ne diminuaient pas lorsqu’un follower tombait en panne. Ajout des nouvelles métriques `zk_learners` et `zk_synced_non_voting_followers` à la commande `mntr`. [#98504](https://github.com/ClickHouse/ClickHouse/pull/98504) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’un problème où le port Raft sécurisé de Keeper ignorait `cipherList` et `dhParamsFile` de la configuration `openSSL`. [#98509](https://github.com/ClickHouse/ClickHouse/pull/98509) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction de messages de log Keeper trompeurs, comme "Receiving request for session X took 9963 ms", alors que le temps indiqué correspondait en réalité à l’attente inactive dans `poll()` entre deux heartbeats. [#98510](https://github.com/ClickHouse/ClickHouse/pull/98510) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’un problème où des connexions TCP de Keeper 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 d’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 lors de la réinitialisation. [#99099](https://github.com/ClickHouse/ClickHouse/pull/99099) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’un cas de plantage de Keeper. [#99133](https://github.com/ClickHouse/ClickHouse/pull/99133) ([JIaQi Tang](https://github.com/JiaQiTang98)).
  * Correction d’un bug dans Keeper où une requête de lecture pouvait rester bloquée (provoquant un timeout de session) si une autre session sans rapport sur le même serveur était fermée au mauvais moment. [#99484](https://github.com/ClickHouse/ClickHouse/pull/99484) ([Michael Kolupaev](https://github.com/al13n321)).
  * Correction d’un SEGFAULT dans NuRaft dû à une race condition. [#100444](https://github.com/ClickHouse/ClickHouse/pull/100444) ([Pablo Marcos](https://github.com/pamarcos)).
  * Correction d’un problème où `CREATE TABLE` de `KeeperMap` échouait 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 perte du registry UDF lorsqu’une session ZooKeeper expirait pendant un refresh périodique — toutes les user-defined functions pouvaient devenir indisponibles jusqu’à la réussite d’un full refresh. [#101891](https://github.com/ClickHouse/ClickHouse/pull/101891) ([Nikita Fomichev](https://github.com/fm4v)).
  * Correction d’un plantage lors du refresh des UDF, causé par `ZooKeeperRetriesControl`, qui réessayait 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)).

  ### Correctifs de crash et de stabilité

  * Correction d’un crash 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)).
  * Correction d’un crash/assertion du serveur dans `mapContainsKey`/`mapContainsKeyLike` avec un skip index `tokenbf_v1`. [#97826](https://github.com/ClickHouse/ClickHouse/pull/97826) ([Shankar Iyer](https://github.com/shankar-iyer)).
  * Correction d’un crash 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. [#97850](https://github.com/ClickHouse/ClickHouse/pull/97850) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’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)).
  * Validation des données corrompues lors de la désérialisation de `DDSketch` afin d’éviter des segfaults, des exceptions, des boucles infinies et des 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)).
  * Correction d’une exception rare dans l’exécuteur du pipeline, qui pouvait se manifester par `Received signal 6` (dans les builds 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 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’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 d’un crash provoqué par le déréférencement d’un pointeur nul dans des tables système créées entre la capture d’un snapshot des tables dans `IDatabaseTablesIterator::table()` et leur modification 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 d’une dérive du suivi mémoire provoquée par l’absence d’annulation des allocations échouées, le comportement indéfini de `nallocx(0)` et une erreur de décalage d’une unité dans le suivi du pic global. Extension du suivi pour couvrir les buffers en anneau `io_uring`. [#98915](https://github.com/ClickHouse/ClickHouse/pull/98915) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’un crash du serveur (`std::terminate`) lors de l’exécution de `ALTER TABLE ... DROP PART` sur une patch part après un changement de schéma (par ex. ADD COLUMN). [#99036](https://github.com/ClickHouse/ClickHouse/pull/99036) ([Peng](https://github.com/fastio)).
  * Correction d’un crash du serveur qui pouvait se produire si une exception de dépassement de la limite mémoire était levée pendant une lecture sur disque mise en cache. [#99042](https://github.com/ClickHouse/ClickHouse/pull/99042) ([Shankar Iyer](https://github.com/shankar-iyer)).
  * Correction d’un crash déclenché par une exception de limite mémoire levée pendant l’application d’une patch part. [#99086](https://github.com/ClickHouse/ClickHouse/pull/99086) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction d’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)).
  * Correction d’un heap-use-after-free lorsqu’une table est supprimée de façon concurrente alors qu’une requête de lecture est en cours d’exécution. [#99483](https://github.com/ClickHouse/ClickHouse/pull/99483) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * 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 malformées. Les codecs lèvent désormais une exception au lieu de provoquer un crash. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul Nair](https://github.com/motsc)).
  * Correction d’une boucle infinie lors de la lecture de fichiers au format `Npy` avec des dimensions de forme négatives. [#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 sur 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 échec d’assertion dans `sipHash128Keyed` (et des fonctions de hachage à clé similaires) lorsque l’argument de données est un Map avec des clés de tableau ou d’autres types de tableaux imbriqués. [#99921](https://github.com/ClickHouse/ClickHouse/pull/99921) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’un échec d’assertion lors de la multiplication des états d’agrégation `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)).
  * Correction d’un déréférencement de nullptr dans le lecteur Parquet lorsque le chemin filter-in-decoder rencontre des pages filtrées. [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’un crash du serveur local lorsque `CREATE DICTIONARY` contient 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)).
  * Correction d’un SIGSEGV lors de la lecture de patch parts après `ALTER MODIFY COLUMN`. [#100107](https://github.com/ClickHouse/ClickHouse/pull/100107) ([Nikolay Degterinsky](https://github.com/evillique)).
  * Correction de 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)).
  * Correction d’un crash du serveur (échec d’assertion) lors de l’utilisation de fonctions d’agrégation paramétriques avec le combinator 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)).
  * Correction d’un heap-buffer-overflow dans `sorted_buffer_gt::insert()` de usearch, pouvant 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 d’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)).
  * Correction d’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)).
  * Correction d’un segfault dû à un déréférencement de pointeur nul lors du chargement des dictionnaires pendant l’arrêt du serveur. [#100839](https://github.com/ClickHouse/ClickHouse/pull/100839) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Correction d’un buffer overflow 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)).
  * Correction d’un crash (`LOGICAL_ERROR`) lors d’une requête sur une table `Merge` (ou la fonction de table `merge()`) qui regroupe 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)).
  * Correction d’un crash lors de la construction d’un dictionnaire Polygon à partir d’une table `MergeTree` utilisant une sérialisation clairsemée des colonnes. [#100964](https://github.com/ClickHouse/ClickHouse/pull/100964) ([Anton Popov](https://github.com/CurtizJ)).
  * Correction d’un crash (`Logical error: isConst/isSparse/isReplicated assertTypeEquality`) dans les algorithmes de fusion lorsque la réplication lazy des colonnes (`enable_lazy_columns_replication`) produit des colonnes `ColumnReplicated` qui arrivent dans des pipelines de tri par fusion avec des entrées tardives. [#101036](https://github.com/ClickHouse/ClickHouse/pull/101036) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un crash 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 `aggregate_functions_null_for_empty = 1`. [#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. [#101161](https://github.com/ClickHouse/ClickHouse/pull/101161) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un crash du serveur avec "Trying to attach external table to a ready set without explicit elements" lorsque l’analyse distribuée des index 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. [#101203](https://github.com/ClickHouse/ClickHouse/pull/101203) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d’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')`, où `lc_column` est de type LowCardinality. [#101220](https://github.com/ClickHouse/ClickHouse/pull/101220) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un comportement indéfini dans `mergeTreeAnalyzeIndexes()` en cas d’argument d’optimisation invalide. [#101253](https://github.com/ClickHouse/ClickHouse/pull/101253) ([Azat Khuzhin](https://github.com/azat)).
  * Correction d’un crash du serveur (Logical error: "Variant ... is empty") lorsqu’une requête lit simultanément une colonne Tuple contenant un type Map Dynamic et sa sous-colonne. [#101448](https://github.com/ClickHouse/ClickHouse/pull/101448) ([Groene AI](https://github.com/groeneai)).
  * Correction d’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)).
  * Correction d’une erreur 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)).
  * 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 à `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 d’un crash de type use-after-free dans l’ordonnanceur 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 use-after-scope dans la désérialisation en parallèle des chemins dynamiques de type `Object`, qui pouvait provoquer des crashs lors de la lecture de tables comportant de nombreux chemins dynamiques. [#101823](https://github.com/ClickHouse/ClickHouse/pull/101823) ([Antonio Andelic](https://github.com/antonio2368)).
  * Correction d’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)).
  * Correction d’un segfault dans les mutations sur des colonnes matérialisées sans expression. [#102342](https://github.com/ClickHouse/ClickHouse/pull/102342) ([zoomxi](https://github.com/zoomxi)).
  * Correction d’un segfault (ou de `LOGICAL_ERROR` dans les builds de débogage) lors de la lecture de fichiers Parquet avec le push-down du bloom filter activé et des conditions d’égalité/inégalité dans la clause `WHERE`, causé par un accès mémoire hors limites dans le prefetcher Parquet. [#102385](https://github.com/ClickHouse/ClickHouse/pull/102385) ([Groene AI](https://github.com/groeneai)).
  * Correction d’une lecture hors limites dans les fonctions de recherche de chaînes (`countSubstrings`, `position`, etc.) lors de la recherche d’un needle composé uniquement de null bytes. [#102401](https://github.com/ClickHouse/ClickHouse/pull/102401) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d’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)).
  * Correction d’un 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)).
  * Correction d’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. [#102853](https://github.com/ClickHouse/ClickHouse/pull/102853) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un crash du serveur (assertion `LOGICAL_ERROR`) lorsqu’une fonction sur une colonne `Variant` atteint une memory limit ou une autre exception sans rapport avec une conversion de type pendant le transtypage du résultat dans `FunctionVariantAdaptor`. [#102855](https://github.com/ClickHouse/ClickHouse/pull/102855) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un crash dans les builds debug/sanitizer lorsque `std::length_error` est levée pendant l’inférence de schéma. [#102859](https://github.com/ClickHouse/ClickHouse/pull/102859) ([Groene AI](https://github.com/groeneai)).
  * Correction d’un crash lors de l’utilisation d’une vue avec une clause `WHERE` où la requête interne produit des colonnes de types différents de ceux des métadonnées de la vue (par exemple `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)).

  ### Autres corrections de bugs

  * Correction d’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)).
  * Correction du client qui signalait `NETWORK_ERROR` au lieu de l’erreur d’analyse syntaxique réelle (avec le bon numéro de ligne) lorsqu’un INSERT avec analyse parallèle rencontrait des données invalides. [#97339](https://github.com/ClickHouse/ClickHouse/pull/97339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de `DROP DATABASE` avec `database_atomic_wait_for_drop_and_detach_synchronously`, qui restait bloqué indéfiniment lorsque la requête était killée. [#97586](https://github.com/ClickHouse/ClickHouse/pull/97586) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de `KILL QUERY`, qui ne pouvait pas terminer les requêtes bloquées lors de la génération `WITH FILL`, du chargement de dictionnaire via `dictGet`, ou d’un `ALTER DELETE` avec `mutations_sync=1` sur `ReplicatedMergeTree`. [#97589](https://github.com/ClickHouse/ClickHouse/pull/97589) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une erreur logique dans une requête de politique de masquage des données avec `ON CLUSTER`. [#97594](https://github.com/ClickHouse/ClickHouse/pull/97594) ([Bharat Nallan](https://github.com/bharatnc)).
  * Correction d’un partition pruning incorrect lors de l’utilisation d’un `DateTime64` antérieur à l’époque Unix avec la fonction `toDate()`. [#97746](https://github.com/ClickHouse/ClickHouse/pull/97746) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction d’une `LOGICAL_ERROR` `Cannot schedule a file` sur `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’une 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)).
  * 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)).
  * Correction de résultats erronés avec l’analyse distribuée des index (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)).
  * Correction d’un échec d’une source de dictionnaire `MongoDB` avec les collections nommées. [#98528](https://github.com/ClickHouse/ClickHouse/pull/98528) ([Pablo Marcos](https://github.com/pamarcos)).
  * Il est désormais interdit de supprimer une colonne lorsque ses sous-colonnes sont utilisées dans les expressions par défaut ou d’alias d’autres colonnes, et l’analyseur est désormais utilisé pour les expressions par défaut avec `ALTER DROP COLUMN`. [#98569](https://github.com/ClickHouse/ClickHouse/pull/98569) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
  * Toutes les `DB::Exception` provenant de `PocoHTTPClient::makeRequestInternalImpl` ne peuvent désormais plus faire l’objet d’une nouvelle tentative, y compris `HTTP_CONNECTION_LIMIT_REACHED`. [#98598](https://github.com/ClickHouse/ClickHouse/pull/98598) ([Sema Checherinda](https://github.com/CheSema)).
  * Correction de deux bugs dans la compilation JIT d’expressions : une erreur de copier-coller dans la vérification des types de `nativeCast` qui rendait inaccessibles les branches de cast d’entier à entier et de flottant à flottant, ainsi que le passage d’un `TargetMachine` `nullptr` incorrect à LLVM `PassBuilder`. [#98660](https://github.com/ClickHouse/ClickHouse/pull/98660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’une 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 les NaN de manière cohérente avec l’ordre de tri de ClickHouse. [#98964](https://github.com/ClickHouse/ClickHouse/pull/98964) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de `windowFunnel` avec `strict_deduplication`, qui renvoyait un niveau incorrect lorsqu’un événement en double était rencontré. [#99003](https://github.com/ClickHouse/ClickHouse/pull/99003) ([Yash](https://github.com/Onyx2406)).
  * Les entrées `system.trace_log` pour les rechargements automatiques des dictionnaires ClickHouse ont désormais des ID de requête non vides. [#98784](https://github.com/ClickHouse/ClickHouse/pull/98784) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Correction de `SYSTEM START REPLICATED VIEW`, qui ne relançait pas la tâche d’actualisation. [#98797](https://github.com/ClickHouse/ClickHouse/pull/98797) ([Pablo Marcos](https://github.com/pamarcos)).
  * Correction de `WITH FILL STALENESS`, qui produisait des lignes remplies en trop lorsque les données étaient lues en plusieurs chunks (par exemple avec un `index_granularity` faible). [#98895](https://github.com/ClickHouse/ClickHouse/pull/98895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction d’un plantage dans l’obfuscation des requêtes pour les identifiants commençant par une majuscule, comme `Ab`. [#101450](https://github.com/ClickHouse/ClickHouse/pull/101450) ([Xuewei Wang](https://github.com/Sallery-X)).
  * Correction du fait que `TABLE_UUID_MISMATCH` était ignoré dans le chemin de code sans analyzer. [#99380](https://github.com/ClickHouse/ClickHouse/pull/99380) ([Azat Khuzhin](https://github.com/azat)).
  * Correction de `clickhouse format --obfuscate`, qui produisait du SQL invalide en obfusquant les types de skip index, les noms de codecs de compression, 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)).
  * Validation des changements de paramètres dans les requêtes CREATE lorsque l’engine lui-même prend aussi en charge des paramètres. [#99279](https://github.com/ClickHouse/ClickHouse/pull/99279) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
  * Correction de `insert_deduplication_token`, qui était ignoré silencieusement pour les requêtes `INSERT SELECT` sans `ORDER BY ALL`. Fournir `insert_deduplication_token` suffit désormais à activer la déduplication, indépendamment de `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
  * Le traitement est désormais différé jusqu’à ce que le serveur ait fini de charger toutes les tables. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
  * Correction de 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)).
  * Correction des requêtes d’async insert qui signalaient `written_rows`, `read_rows` et `result_rows` à zéro dans `query_log` et dans la sortie du client. [#99879](https://github.com/ClickHouse/ClickHouse/pull/99879) ([Sema Checherinda](https://github.com/CheSema)).
  * Correction d’un `INSERT` avec `VALUES` qui échouait 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 interprété 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)).
  * Traitement correct des valeurs négatives dans `NumericIndexedVectorDataBSI`. [#100086](https://github.com/ClickHouse/ClickHouse/pull/100086) ([Daniil Ivanik](https://github.com/divanik)).
  * Correction d’un problème où la fonction de table `primes` ne respectait pas correctement `max_rows_to_read` dans certains cas, en particulier lorsque offset et step sont présents. [#100199](https://github.com/ClickHouse/ClickHouse/pull/100199) ([Nihal Z. Miaji](https://github.com/nihalzp)).
  * Les utilisateurs ne voient plus `NATURAL CROSS JOIN` lorsqu’ils interrogent l’AST d’une requête avec jointure naturelle réécrite en `CROSS JOIN`. [#100223](https://github.com/ClickHouse/ClickHouse/pull/100223) ([Peter Nguyen](https://github.com/petern48)).
  * Quelques modifications mineures de fonctions : les fonctions h3 valident désormais mieux les limites ; `readWKB` vérifie les limites de taille (un nouveau paramètre, `max_wkb_geometry_elements`) ; les fonctions de génération aléatoire limitent le nombre maximal d’itérations. [#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 `LOGICAL_ERROR` dans `estimateCompressionRatio` lorsque le paramètre `block_size_bytes` est extrêmement grand. [#100298](https://github.com/ClickHouse/ClickHouse/pull/100298) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Correction de `DROP TABLE`, qui pouvait rester bloqué indéfiniment sur les tables du moteur Kafka lorsque les consumers sont bloqués dans un rebalance après une erreur de heartbeat. [#100388](https://github.com/ClickHouse/ClickHouse/pull/100388) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
  * Validation des dimensions du shape du format Npy par rapport à la taille du fichier et aux limites d’overflow afin d’éviter un déni de service via des fichiers `.npy` malveillants. Les shapes vides sont également rejetés et la mémoire par ligne est plafonnée à 2 GiB. [#100625](https://github.com/ClickHouse/ClickHouse/pull/100625) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction d’un problème où `session_timezone` était ignoré lors de l’analyse des 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)).
  * `StorageRabbitMQ::shutdown` a été rendu idempotent et des vérifications défensives de nullité ont été ajoutées, puisqu’il est désormais appelé deux fois (dans `StreamingStorageRegistry` et `DatabaseCatalog`). [#100455](https://github.com/ClickHouse/ClickHouse/pull/100455) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Correction d’une 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 la syntaxe `LIMIT m OFFSET n WITH TIES`, qui ne fonctionnait pas (é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 d’un segfault où `SerializationInfoTuple::add` effectuait un `assert_cast` sur une simple référence `SerializationInfo` lors de la fusion des parts après qu’`ALTER MODIFY COLUMN` a modifié une colonne d’un type non-Tuple vers un Tuple. [#100509](https://github.com/ClickHouse/ClickHouse/pull/100509) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Correction d’une exception "No set is registered for key" lors de l’utilisation de `IN` avec des colonnes `Nullable(Tuple)` ayant des fields 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 problème où `EXECUTE AS` ignorait les clauses `FORMAT` et `INTO OUTFILE` spécifiées dans la query. [#100538](https://github.com/ClickHouse/ClickHouse/pull/100538) ([pufit](https://github.com/pufit)).
  * Correction d’un formatage AST incohérent pour `SAMPLE` avec un `OFFSET` au niveau de la requête. [#100579](https://github.com/ClickHouse/ClickHouse/pull/100579) ([Pavel Kruglov](https://github.com/Avogar)).
  * 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’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 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` ni `ALTER TABLE DROP STATISTICS`. [#101585](https://github.com/ClickHouse/ClickHouse/pull/101585) ([Krishna Chaitanya](https://github.com/Krishnachaitanyakc)).
  * Correction de `CREATE TABLE ... AS merge()`, qui ignorait la liste explicite de colonnes et inférait automatiquement les colonnes à partir des tables sources, ce qui provoquait des erreurs `NOT_FOUND_COLUMN_IN_BLOCK` lorsque `merge_table_max_tables_to_look_for_schema_inference` était suffisamment faible et que les tables sources avaient des schémas différents. [#101663](https://github.com/ClickHouse/ClickHouse/pull/101663) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
  * Correction de la création de dictionnaires `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. [#101732](https://github.com/ClickHouse/ClickHouse/pull/101732) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
  * Correction de bugs dans les fonctions `arrayLevenshteinDistanceWeighted` et `arraySimilarity`. [#101767](https://github.com/ClickHouse/ClickHouse/pull/101767) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
  * Correction de l’API Query de Prometheus, qui ignorait les corps de formulaires POST. [#101794](https://github.com/ClickHouse/ClickHouse/pull/101794) ([James Cunningham](https://github.com/JTCunning)).
  * Correction d’un faux négatif de `shouldPatchFunction` dans `SYSTEM INSTRUMENT ADD` lorsque la chaîne recherchée apparaissait d’abord dans un argument 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 description `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 d’un comportement indéfini lors de l’analyse des paquets Query du protocole natif contenant des valeurs `QueryProcessingStage` invalides. [#101972](https://github.com/ClickHouse/ClickHouse/pull/101972) ([Raúl Marín](https://github.com/Algunenano)).
  * Fermeture de la connexion TCP lorsqu’une exception se produit pendant l’analyse de la requête initiale, afin d’éviter la lecture de données incohérentes depuis un flux désynchronisé. [#101989](https://github.com/ClickHouse/ClickHouse/pull/101989) ([Raúl Marín](https://github.com/Algunenano)).
  * Correction des cas où `Time` avec des valeurs négatives renvoyait un résultat incorrect lors d’une comparaison avec `DateTime`. [#102056](https://github.com/ClickHouse/ClickHouse/pull/102056) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
  * Correction des espaces manquants lors du formatage de unlock snapshot. [#102063](https://github.com/ClickHouse/ClickHouse/pull/102063) ([Han Fei](https://github.com/hanfei1991)).
  * Correction de l’échec d’initialisation, sur une replica fraîche, des tables alias sans table cible dans Database Replicated. [#102397](https://github.com/ClickHouse/ClickHouse/pull/102397) ([Nikolay Degterinsky](https://github.com/evillique)).
  * 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 l’épuisement des 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)).
  * `ArrowMemoryPool` a été réintroduit afin de pouvoir 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 d’un type d’argument erroné 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 au niveau du failpoint. [#103119](https://github.com/ClickHouse/ClickHouse/pull/103119) ([Shaohua Wang](https://github.com/tiandiwonder)).
</Accordion>
