Passer au contenu principal

Changements incompatibles avec les versions précédentes

  • Le format de sortie Parquet convertit les colonnes Date et DateTime en types date/heure pris en charge par Parquet, au lieu de les écrire sous forme de nombres bruts. DateTime devient DateTime64(3) (au lieu de UInt32) ; le paramètre output_format_parquet_datetime_as_uint32 rétablit l’ancien comportement. Date devient Date32 (au lieu de UInt16). #70950 (Michael Kolupaev).
  • Par défaut, les types comparables (comme JSON/Object/AggregateFunction) ne sont plus autorisés dans ORDER BY ni dans les fonctions de comparaison less/greater/equal/etc. #73276 (Pavel Kruglov).
  • JSONEachRowWithProgress écrira désormais la progression à chaque mise à jour. Dans les versions précédentes, la progression n’était affichée qu’après chaque bloc de résultat, ce qui la rendait inutile. Le mode d’affichage de la progression change : les valeurs nulles ne seront plus affichées. Gardez à l’esprit que la progression est envoyée même lorsqu’elle se produit fréquemment. Cela peut générer un volume de trafic important. Gardez également à l’esprit que la progression n’est pas écrite lorsque la sortie est compressée. Cela résout #70800. #73834 (Alexey Milovidov).
  • La source de dictionnaire mysql n’exécute plus la requête SHOW TABLE STATUS, car elle n’apporte aucune valeur pour les tables InnoDB, y compris sur les versions récentes de MySQL. Cela résout #72636. Ce changement est rétrocompatible, mais il est classé dans cette catégorie afin que vous ayez plus de chances de le remarquer. #73914 (Alexey Milovidov).
  • Les tables Merge unifieront la structure des tables sous-jacentes en utilisant l’union de leurs colonnes et en déduisant des types communs. Cela résout #64864. Cela résout #35307. Dans certains cas, ce changement peut être rétro-incompatible. Par exemple, lorsqu’il n’existe aucun type commun entre les tables, mais qu’une conversion vers le type de la première table reste possible, comme dans le cas de UInt64 et Int64, ou entre n’importe quel type numérique et String. Si vous souhaitez revenir à l’ancien comportement, définissez merge_table_max_tables_to_look_for_schema_inference sur 1 ou compatibility sur 24.12 ou une version antérieure. #73956 (Alexey Milovidov).
  • Les requêtes CHECK TABLE nécessitent désormais un privilège CHECK distinct. Dans les versions précédentes, il suffisait de disposer du privilège SHOW TABLES pour exécuter ces requêtes. Or, une requête CHECK TABLE peut être coûteuse, et les limites habituelles de complexité des requêtes SELECT ne s’y appliquent pas. Cela pouvait entraîner un risque de DoS. #74471 (Alexey Milovidov).
  • Vérifie que toutes les colonnes d’une vue matérialisée correspondent à celles de la table cible si allow_materialized_view_with_bad_select vaut false. #74481 (Christoph Wurm).
  • La fonction h3ToGeo() renvoie désormais les résultats dans l’ordre (lat, lon) (qui est l’ordre standard des fonctions géométriques). Les utilisateurs qui souhaitent conserver l’ancien ordre des résultats (lon, lat) peuvent définir le paramètre h3togeo_lon_lat_result_order = true. #74719 (Manish Gill).
  • Ajout des formats JSONCompactEachRowWithProgress et JSONCompactStringsEachRowWithProgress. Suite de #69989. JSONCompactWithNames et JSONCompactWithNamesAndTypes ne produisent plus “totals” — il s’agissait apparemment d’une erreur d’implémentation. #75037 (Alexey Milovidov).
  • La valeur par défaut de format_alter_operations_with_parentheses passe à true afin de lever toute ambiguïté dans la liste des commandes alter (voir https://github.com/ClickHouse/ClickHouse/pull/59532). Cela casse la réplication avec les clusters antérieurs à 24.3. Si vous mettez à niveau un cluster utilisant des versions plus anciennes, désactivez ce paramètre dans la configuration du serveur ou mettez d’abord à niveau vers 24.3. #75302 (Raúl Marín).
  • Interdit TRUNCATE DATABASE pour les bases de données répliquées. #76651 (Bharat Nallan).
  • Désactive les répliques parallèles par défaut lorsque l’analyzer est désactivé, quel que soit le paramètre compatibility. Il reste possible de modifier ce comportement en définissant explicitement parallel_replicas_only_with_analyzer sur false. #77115 (Igor Nikonov).
  • Il n’est plus possible d’utiliser NaN ou inf comme valeurs flottantes pour les paramètres. #77546 (Yarik Briukhovetskyi).
  • Corrige les cas où dateTrunc est utilisé avec des arguments Date/DateTime négatifs. #77622 (Yarik Briukhovetskyi).
  • L’ancienne intégration MongoDB a été supprimée. Le paramètre du serveur use_legacy_mongodb_integration est devenu obsolète et n’a désormais plus aucun effet. #77895 (Robert Schulze).
  • Améliore la validation de SummingMergeTree afin d’ignorer l’agrégation des colonnes utilisées dans les clés de partitionnement ou de tri. #78022 (Pervakov Grigorii).

Nouvelles fonctionnalités

  • Ajout d’un cache en mémoire pour les granules désérialisés des index de saut. Cela devrait accélérer les requêtes répétées qui utilisent des index de saut. La taille du nouveau cache est contrôlée par les paramètres serveur skipping_index_cache_size et skipping_index_cache_max_entries. La motivation initiale de ce cache était les index de similarité vectorielle, qui sont désormais beaucoup plus rapides. #70102 (Robert Schulze).
  • Nouvelle implémentation du Userspace Page Cache, qui permet de mettre les données en cache dans la mémoire du processus au lieu de s’appuyer sur le cache de pages de l’OS. Elle est utile lorsque les données sont stockées sur un système de fichiers virtuel distant sans bénéficier du cache du système de fichiers local. #70509 (Michael Kolupaev).
  • Ajout d’un paramètre pour interroger les tables Iceberg à un timestamp spécifique. #71072 (Brett Hoerner).
  • Implémentation de l’élagage de partitions pour les tables Iceberg lors des opérations de partitionnement par transformation liées au temps dans Iceberg. #72044 (Daniil Ivanik).
  • Ajout de la possibilité de créer par défaut des index min-max (de saut) pour les colonnes gérées par MergeTree à l’aide des paramètres enable_minmax_index_for_all_numeric_columns (pour les colonnes numériques) et enable_minmax_index_for_all_string_columns (pour les colonnes de type chaîne). Pour l’instant, les deux paramètres sont désactivés, il n’y a donc encore aucun changement de comportement. #72090 (Smita Kulkarni).
  • Ajout de la fonction d’agrégation sequenceMatchEvents, qui renvoie les timestamps des événements correspondants pour la plus longue chaîne d’événements d’un motif. #72349 (UnamedRus).
  • Les instructions SELECT et VIEW prennent désormais en charge les alias, par ex. SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);. Cela permet à la requête TPC-H 15 de s’exécuter sans modification. #72480 (Yarik Briukhovetskyi).
  • Ajout d’un nouveau paramètre enable_adaptive_memory_spill_scheduler qui permet à plusieurs grace JOIN dans une même requête de surveiller leur empreinte mémoire combinée et de déclencher de manière adaptative le déversement vers un stockage externe afin d’éviter MEMORY_LIMIT_EXCEEDED. #72728 (lgbo).
  • Ajout de la fonction arrayNormalizedGini. #72823 (flynn).
  • Prise en charge des types de données Decimal à faible cardinalité, correction de #72256. #72833 (zhanglistar).
  • Lorsque min_age_to_force_merge_seconds et min_age_to_force_merge_on_partition_only sont tous deux activés, la fusion des parts ignorera la limite maximale en octets. #73656 (Kai Zhu).
  • Prise en charge de la lecture des valeurs HALF_FLOAT depuis Apache Arrow/Parquet/ORC (elles sont lues en Float32). Cela corrige #72960. Gardez à l’esprit que le half float IEEE-754 n’est pas identique à BFloat16. Corrige #73835. #73836 (Alexey Milovidov).
  • La table system.trace_log contiendra deux nouvelles colonnes, symbols et lines, contenant une stack trace symbolisée. Cela facilite la collecte et l’export des informations de profilage. Ce comportement est contrôlé par la valeur de configuration du serveur symbolize dans trace_log et est activé par défaut. #73896 (Alexey Milovidov).
  • Ajout d’une nouvelle fonction, generateSerialID, qui permet de générer des nombres auto-incrémentés dans les tables. Suite de #64310 par kazalika. Cela clôt #62485. #73950 (Alexey Milovidov).
  • Ajout de la syntaxe query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN. Cela signifie que les sous-requêtes {query1, query2, ... queryN} peuvent s’exécuter en parallèle les unes par rapport aux autres (et c’est préférable). #73983 (Vitaly Baranov).
  • Désormais, l’interface Play affiche une barre de progression pendant l’exécution des requêtes. Elle permet d’annuler les requêtes. Elle affiche le nombre total d’enregistrements ainsi que des informations détaillées sur la vitesse. La table peut être affichée de manière incrémentale dès l’arrivée des données. La compression HTTP est activée. Le rendu de la table est devenu plus rapide. L’en-tête de la table reste désormais fixe. Il est possible de sélectionner des cellules et de s’y déplacer avec les touches fléchées. Correction d’un problème où le contour de la cellule sélectionnée la faisait paraître plus petite. Les cellules ne s’agrandissent plus au survol de la souris, mais uniquement lors de la sélection. Le moment où arrêter le rendu des données entrantes est désormais décidé côté client plutôt que côté serveur. Les groupes de chiffres dans les nombres sont mis en évidence. L’apparence générale a été revue et est devenue plus marquée. L’interface vérifie si le serveur est joignable ainsi que la validité des identifiants, puis affiche la version du serveur et sa durée de fonctionnement. L’icône de cloud a un contour dans toutes les polices, y compris dans Safari. Les grands entiers dans les types de données imbriqués seront mieux affichés. inf/nan sera affiché correctement. Les types de données seront affichés au survol d’un en-tête de colonne. #74204 (Alexey Milovidov).
  • Ajout de la possibilité de créer par défaut des index min-max (skipping) pour les colonnes gérées par MergeTree à l’aide des paramètres add_minmax_index_for_numeric_columns (pour les colonnes numériques) et add_minmax_index_for_string_columns (pour les colonnes de type chaîne). Pour l’instant, ces deux paramètres sont désactivés, il n’y a donc pas encore de changement de comportement. #74266 (Smita Kulkarni).
  • Ajout des champs script_query_number et script_line_number à system.query_log, à ClientInfo dans le native protocol, ainsi qu’aux journaux du serveur. Cela clôt #67542. Merci à pinsvin00 d’avoir lancé cette fonctionnalité plus tôt dans #68133. #74477 (Alexey Milovidov).
  • Ajout de la prise en charge de l’opérateur moins pour DateTime64, afin d’autoriser la soustraction entre des valeurs DateTime64, ainsi qu’entre des valeurs DateTime. #74482 (Li Yin).
  • Prise en charge du moteur de table DeltaLake pour AzureBlobStorage. Corrige #68043. #74541 (Smita Kulkarni).
  • Ajout du paramètre bind_host pour définir l’adresse IP source des connexions du clickhouse client. #74741 (Todd Yocum).
  • Ajout de la possibilité d’appliquer immédiatement, pendant l’exécution des requêtes SELECT et juste après leur soumission, des mutations non terminées (non matérialisées par un processus en arrière-plan). Cela peut être activé en définissant apply_mutations_on_fly. #74877 (Anton Popov).
  • Correction de certains cas auparavant inattendus où les arguments DateTime de toStartOfInterval sont négatifs. Cela a été fait en implémentant une nouvelle fonction appelée toStartOfIntervalAllowNegative, qui fait globalement la même chose mais ne renvoie que des valeurs Date32/DateTime64. #74933 (Yarik Briukhovetskyi).
  • Une nouvelle fonction initialQueryStartTime a été ajoutée. Elle renvoie l’heure de début de la requête en cours. La valeur est identique sur tous les shards lors d’une distributed query. #75087 (Roman Lomonosov).
  • Introduction de parametrized_view_parameters dans system.tables. Closes https://github.com/clickhouse/clickhouse/issues/66756. #75112 (NamNguyenHoai).
  • Possibilité de modifier un database comment. Closes #73351 ### Entrée de documentation pour les changements visibles par l’utilisateur. #75622 (NamNguyenHoai).
  • Ajout de la possibilité d’utiliser ATTACH sur des tables sans couche database (évite le contournement par UUID). #75788 (Azat Khuzhin).
  • Ajout du server setting concurrent_threads_scheduler, qui régit la manière dont les CPU slots sont répartis entre les requêtes concurrentes. Il peut être défini sur round_robin (comportement précédent) ou fair_round_robin pour corriger le problème de répartition inéquitable du CPU entre les INSERT et les SELECT. #75949 (Sergei Trifonov).
  • Restauration du codec QPL, qui avait été supprimé dans la v24.10 en raison de problèmes de licence. #76021 (Konstantin Bogdanov).
  • Ajout de la fonction arraySymmetricDifference. Elle renvoie tous les éléments de plusieurs arguments Array qui ne sont pas présents dans tous les arguments. Example : SELECT arraySymmetricDifference([1, 2], [2, 3]) renvoie [1, 3]. (issue #61673). #76231 (Filipp Abapolov).
  • Ajout de la fonction d’agrégation estimatecompressionratio - voir #70801. #76661 (Tariq Almawash).
  • Les profile events FilterTransformPassedRows et FilterTransformPassedBytes afficheront le nombre de rows et d’octets filtrés pendant l’exécution de la requête. #76662 (Onkar Deshpande).
  • Ajout de la hash function keccak256, couramment utilisée dans les implémentations blockchain, en particulier dans les systèmes basés sur l’EVM. #76669 (Arnaud Briche).
  • Scram SHA256 & mise à jour de l’authentification wire de Postgres. #76839 (scanhex12).
  • Cette fonctionnalité ajoute la possibilité de définir une liste de headers transmis depuis les headers de la requête client vers l’authentificateur http externe. #77054 (inv2004).
  • Prise en charge de IcebergMetadataFilesCache, qui stocke les fichiers manifestes/la liste et metadata.json dans un cache unique. #77156 (Han Fei).
  • Ajout des fonctions arrayLevenshteinDistance, arrayLevenshteinDistanceWeighted et arraySimilarity. #77187 (Mikhail f. Shiryaev).
  • Ajout de trois nouvelles fonctions : icebergTruncate conformément à la spécification https://iceberg.apache.org/spec/#truncate-transform-details, toYearNumSinceEpoch et toMonthNumSinceEpoch. Prise en charge de la transformation truncate dans le partition pruning pour le moteur Iceberg. #77403 (alesapin).
  • Permet à l’utilisateur d’interroger l’état d’une table Iceberg tel qu’il existait à un moment antérieur. #77439 (Daniil Ivanik).
  • Ajout de l’ordonnancement des CPU slots pour les workloads, voir https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling pour plus de détails. #77595 (Sergei Trifonov).
  • La fonction hasAll() peut désormais tirer parti des skipping indices plein texte tokenbf_v1 et ngrambf_v1. #77662 (UnamedRus).
  • Le type de données JSON est prêt pour la production. Voir https://jsonbench.com/. Les types de données Dynamic et Varaint sont prêts pour la production. #77785 (Alexey Milovidov).
  • Ajout d’un cache en mémoire pour les vector similarity indexes désérialisés. Cela devrait accélérer les requêtes répétées de recherche approximative des plus proches voisins (ANN). La taille du nouveau cache est contrôlée par les server settings vector_similarity_index_cache_size et vector_similarity_index_cache_max_entries. Cette fonctionnalité remplace le cache de skipping index des versions antérieures. #77905 (Shankar Iyer).
  • Ajout des fonctions sparseGrams et sparseGramsHashes, avec leurs versions UTF8. Auteur : scanhex12. #78176 (Pervakov Grigorii).
  • Introduction de la fonction toInterval. Cette fonction accepte 2 arguments (value et unit) et convertit la valeur vers un type Interval spécifique. #78723 (Andrew Davis).

Fonctionnalités expérimentales

  • Permet le nettoyage automatique par fusion de partitions entières après un délai configurable, grâce au nouveau paramètre enable_replacing_merge_with_cleanup_for_min_age_to_force_merge. #76440 (Christoph Wurm).
  • Ajoute la prise en charge d’Unity Catalog pour les tables DeltaLake sur AWS S3 et le système de fichiers local. #76988 (alesapin).
  • Introduit une intégration expérimentale avec le catalogue de services AWS Glue pour les tables Iceberg. #77257 (alesapin).

Améliorations des performances

  • Optimise les performances avec la projection différée afin d’éviter de lire les colonnes inutilisées. #55518 (Xiaozhe Yu).
  • Compare désormais d’abord les lignes en s’appuyant sur les colonnes les plus susceptibles d’être différentes. #63780 (UnamedRus).
  • Optimise le format d’entrée RowBinary. Résout #63805. #65059 (Pavel Kruglov).
  • Accélère la désérialisation des chaînes grâce à une optimisation de bas niveau. #65948 (Nikita Taranov).
  • Applique l’attribut preserve_most à certains endroits du code. #67778 (Nikita Taranov).
  • Implémente le cache des conditions de requête afin d’améliorer les performances des requêtes utilisant des conditions répétées. La plage de données qui ne satisfait pas la condition est mémorisée sous forme d’index temporaire en mémoire. Les requêtes suivantes utiliseront cet index. Résout #67768 ### Entrée de documentation pour les changements visibles par l’utilisateur. #69236 (zhongyuankai).
  • Prend en charge le préchargement asynchrone des E/S pour NativeORCBlockInputFormat, ce qui améliore les performances globales en masquant la latence des E/S distantes. Le gain peut atteindre 1,47× dans mon cas de test. #70534 (李扬).
  • Améliore les performances du grace hash join en réordonnant la table de jointure de droite selon les clés. #72237 (kevinyhzou).
  • Rétablit la prise en compte de ttl_only_drop_parts dans materialize ttl ; lit uniquement les colonnes nécessaires pour recalculer le TTL et supprimer les parts en les remplaçant par une part vide. #72751 (Andrey Zvonov).
  • Permet à arrayROCAUC et arrayAUCPR de calculer une aire partielle de la courbe complète, afin que leur calcul puisse être parallélisé sur de très grands jeux de données. #72904 (Emmanuel).
  • Évite de créer trop de threads inactifs. #72920 (Guo Wangyang).
  • La division par hachage des blocs de la table de gauche a été supprimée de la phase de sondage de l’algorithme JOIN parallel_hash. #73089 (Nikita Taranov).
  • Ne liste pas les clés du stockage d’objets si seule l’expansion entre accolades est utilisée dans la fonction de table. Résout #73333. #73518 (Konstantin Bogdanov).
  • Remplace Int256 et UInt256 par le type intégré i256 de clang dans les calculs arithmétiques, conformément aux tests de #70502. #73658 (李扬).
  • Ajoute une voie rapide pour les fonctions dont tous les types d’arguments sont numériques. Corrige les problèmes de performances dans https://github.com/ClickHouse/ClickHouse/pull/72258. #73820 (李扬).
  • Ne plus appliquer maskedExecute aux colonnes qui ne sont pas des fonctions, ce qui améliore les performances de l’exécution en court-circuit. #73965 (lgbo).
  • Désactivation de la détection d’en-tête pour Kafka/NATS/RabbitMQ/FileLog afin d’améliorer les performances. #74006 (Azat Khuzhin).
  • Utilisation des wrappers de log par valeur, sans allocation sur le tas. #74034 (Mikhail Artemenko).
  • Exécution d’un pipeline avec un degré de parallélisme plus élevé après une agrégation avec grouping sets. #74082 (Nikita Taranov).
  • Réduction de la section critique dans MergeTreeReadPool. #74202 (Guo Wangyang).
  • Optimisation de la fonction indexHint. Désormais, les colonnes utilisées uniquement comme arguments de la fonction indexHint ne sont plus lues depuis la table. #74314 (Anton Popov).
  • Amélioration des performances des parallel replicas. La désérialisation des paquets sur l’initiateur de la query, pour les paquets non liés au protocole des parallel replicas, s’effectue désormais toujours dans le thread du pipeline. Auparavant, elle pouvait se produire dans un thread chargé de l’ordonnancement du pipeline, ce qui pouvait rendre l’initiateur moins réactif et retarder l’exécution du pipeline. #74398 (Igor Nikonov).
  • Correction du calcul de la taille en mémoire pour les colonnes LowCardinality. #74688 (Nikita Taranov).
  • Amélioration des performances de lecture d’une JSON column complète dans les Wide parts depuis S3. Cela repose sur l’ajout de prefetches pour la désérialisation des préfixes de subcolumn, d’un cache des préfixes désérialisés et de la désérialisation parallèle des préfixes de subcolumn. La lecture de la JSON column depuis S3 est ainsi 4 fois plus rapide pour une query comme SELECT data FROM table, et environ 10 fois plus rapide pour une query comme SELECT data FROM table LIMIT 10. #74827 (Pavel Kruglov).
  • Préallocation de la mémoire utilisée par les async inserts afin d’améliorer les performances. #74945 (Ilya Golshtein).
  • Correction de la double préallocation dans ConcurrentHashJoin lorsque les côtés de la jointure sont permutés par l’optimiseur. #75149 (Nikita Taranov).
  • Correction d’une contention inutile dans parallel_hash lorsque max_rows_in_join = max_bytes_in_join = 0. #75155 (Nikita Taranov).
  • Légère amélioration dans certains scénarios de jointure : précalcul du nombre de lignes en sortie et réservation de la mémoire correspondante. #75376 (Alexander Gololobov).
  • Les fichiers de métadonnées plain_rewritable sont petits et n’ont pas besoin d’un grand tampon par défaut. Utilisation d’un tampon d’écriture dimensionné de façon appropriée au chemin donné, ce qui améliore l’utilisation mémoire lorsqu’il y a un grand nombre d’active parts. ### Entrée de documentation pour les changements destinés aux utilisateurs. #75758 (Julia Kartseva).
  • Dans certains cas (par exemple, une array column vide), les data parts peuvent contenir des fichiers vides. Il est alors possible d’ignorer l’écriture de blobs vides dans ObjectStorage et de ne stocker que les métadonnées de ces fichiers lorsque la table se trouve sur un disque avec métadonnées et object storage séparés. #75860 (Alexander Gololobov).
  • Il a été constaté que le contrôle de la concurrence pouvait entraîner une répartition inéquitable du CPU entre les INSERT et les SELECT. Lorsque tous les slots CPU sont alloués sans condition (sans concurrence) à des INSERT avec max_threads = 1, les SELECT avec des valeurs élevées de max_threads subissent de mauvaises performances, car ils n’utilisent qu’un seul thread. #75941 (Sergei Trifonov).
  • Optimisation triviale de wrapInNullable pour éviter l’allocation inutile d’une null map. #76489 (李扬).
  • Amélioration des performances de min/max pour Decimal32/Decimal64/DateTime64. #76570 (李扬).
  • Éviction active des données du cache lors de la suppression de parts. Empêche le cache d’atteindre sa taille maximale lorsque la quantité de données est inférieure. #76641 (Alexey Milovidov).
  • La compilation des requêtes (paramètre compile_expressions) tient désormais compte du type de machine. Cela accélère considérablement ces requêtes. #76753 (Robert Schulze).
  • Optimisation de arraySort. #76850 (李扬).
  • Accélère la construction du résultat du JOIN en dévirtualisant les appels à col->insertFrom(). #77350 (Alexander Gololobov).
  • Fusion des marks d’une même part et écriture en une seule fois dans le query condition cache afin de réduire l’utilisation des verrous. #77377 (zhongyuankai).
  • Optimisation du ORDER BY sur une seule colonne Nullable ou à faible cardinalité. #77789 (李扬).
  • Désactivation de filesystem_cache_prefer_bigger_buffer_size lorsque le cache est utilisé passivement, par exemple pour les merges. #77898 (Kseniia Sumarokova).
  • Implémentation d’une optimisation triviale de count pour Iceberg. Les requêtes avec count() et sans filtre devraient désormais être plus rapides. Clôt #77639. #78090 (alesapin).
  • Prise en charge du data pruning d’Iceberg basé sur les valeurs lower_bound et uppert_bound des colonnes. Corrige #77638. #78242 (alesapin).
  • Optimisation de l’utilisation de la mémoire pour NativeReader. #78442 (Azat Khuzhin).
  • Optimisation triviale : ne pas réécrire count(if()) en countIf si CAST est requis. Clôt #78564. #78565 (李扬).

Améliorations

  • Réduction du nombre de requêtes Keeper en éliminant l’utilisation de requêtes get unitaires, qui pouvaient entraîner une charge importante sur Keeper avec l’augmentation du nombre de répliques, là où multiRead est disponible. #56862 (Nikolay Degterinsky).
  • Ajout de la prise en charge de l’authentification SSL avec des collections nommées pour MySQL. Closes #59111. #59452 (Nikolay Degterinsky).
  • Amélioration des performances de la nouvelle infrastructure de l’analyseur en stockant ColumnPtr au lieu de Field dans ConstantNode. Lié à #62245. #63198 (Dmitry Novik).
  • Rejet des requêtes lorsque le serveur est surchargé. La décision est prise en fonction du ratio entre le temps d’attente (OSCPUWaitMicroseconds) et le temps d’activité (OSCPUVirtualTimeMicroseconds). La requête est abandonnée avec une certaine probabilité lorsque ce ratio se situe entre min_os_cpu_wait_time_ratio_to_throw et max_os_cpu_wait_time_ratio_to_throw (il s’agit de paramètres au niveau de la requête). #63206 (Alexey Katsman).
  • Suppression des blocs aussi tôt que possible afin de réduire les besoins en mémoire. #65647 (lgbo).
  • La table processors_profile_log dispose désormais d’une configuration par défaut avec un TTL de 30 jours. #66139 (Ilya Yatsishin).
  • Autorisation de créer un index bloom_filter sur des colonnes de type DateTime64. #66416 (Yutong Xiao).
  • Introduction de buckets de latence pour suivre les temps de connexion ainsi que les temps de lecture/écriture du premier octet pour les requêtes S3. Cela permettra ensuite d’utiliser les données recueillies pour calculer des percentiles approximatifs et ajuster les timeouts. #69783 (Alexey Katsman).
  • Les requêtes transmises au moteur de stockage Executable ne sont plus limitées à une exécution monothread. #70084 (yawnt).
  • Ajout des en-têtes HTTP à la table des logs de spans OpenTelemetry pour une meilleure traçabilité. #70516 (jonymohajanGmail).
  • Prise en charge de l’écriture de fichiers orc avec un fuseau horaire personnalisé, au lieu d’utiliser systématiquement le fuseau horaire GMT. #70615 (kevinyhzou).
  • Remplacement des fonctions de table par leurs alternatives -Cluster si les répliques parallèles sont activées. Corrige #65024. #70659 (Konstantin Bogdanov).
  • Prise en compte des paramètres d’ordonnancement des E/S lors de l’écriture de sauvegardes entre différents clouds. #71093 (János Benjamin Antal).
  • Rétablissement en arrière-plan de la connexion aux répliques de dictionnaires MySQL et Postgres afin de ne pas retarder les requêtes vers les dictionnaires correspondants. #71101 (Yakov Olkhovskiy).
  • Ajout du nom d’alias de la métrique à system.asynchronous_metrics. #71164 (megao).
  • Les actualisations des refreshable materialized views apparaissent désormais dans system.query_log. #71333 (Michael Kolupaev).
  • Évaluer conjointement les bloom filters Parquet et les index min/max. Nécessaire pour prendre correctement en charge : x = 3 or x > 5 lorsque les données = [1, 2, 4, 5]. #71383 (Arthur Passos).
  • Améliorations des métriques interactives. Correction de l’affichage incomplet des métriques provenant des répliques parallèles. Affichage des métriques par ordre de mise à jour la plus récente, puis par ordre lexicographique de nom. Les métriques obsolètes ne sont pas affichées. #71631 (Julia Kartseva).
  • Historiquement, pour une raison inconnue, la query ALTER TABLE MOVE PARTITION TO TABLE vérifiait les droits SELECT et ALTER DELETE au lieu du droit dédié ALTER_MOVE_PARTITION. Cette PR utilise désormais ce type d’accès. Pour des raisons de compatibilité, cette permission sera aussi accordée implicitement si SELECT et ALTER DELETE sont accordés, mais ce comportement sera supprimé dans de futures releases. Ferme #16403. #71632 (pufit).
  • Active par défaut le paramètre use_hive_partitioning. #71636 (Yarik Briukhovetskyi).
  • Lever une exception lors d’une tentative de matérialisation d’une colonne dans la clé de tri, au lieu de laisser cela casser l’ordre de tri. Cela ne résout toutefois pas #71777. #71891 (Peter Nguyen).
  • Autoriser un algorithme de planification des jointures plus général lorsque l’algorithme de jointure par hachage est activé. #71926 (János Benjamin Antal).
  • Masquer les secrets dans EXPLAIN QUERY TREE. #72025 (Yakov Olkhovskiy).
  • Autoriser l’utilisation d’un disk configurable pour stocker les fichiers de metadata des databases et des tables. Le nom du disk peut être défini via le parameter de config database_disk.disk. #72027 (Tuan Pham Anh).
  • Prendre en charge les types logiques entiers Parquet dans le lecteur native. #72105 (Arthur Passos).
  • Rendre le JSON output format joliment formaté par défaut. Ajouter le nouveau setting output_format_json_pretty_print pour contrôler ce comportement et l’activer par défaut. #72148 (Pavel Kruglov).
  • Demander les credentials de manière interactive dans le navigateur si l’utilisateur default nécessite un password. Dans les versions précédentes, le server renvoyait HTTP 403 ; il renvoie désormais HTTP 401. #72198 (Alexey Milovidov).
  • Cette PR convertit les types d’accès CREATE_USER, ALTER_USER, DROP_USER, CREATE_ROLE, ALTER_ROLE, DROP_ROLE de globaux à paramétrés. Cela signifie que vous pouvez désormais accorder les grants de gestion des accès avec plus de précision. #72246 (pufit).
  • Autoriser les noms de shards dans la configuration du cluster. #72276 (MikhailBurdukov).
  • Prendre en charge CAST et ALTER entre des JSON types ayant des paramètres différents. #72303 (Pavel Kruglov).
  • Ajoute la colonne latest_fail_error_code_name à system.mutations. Cette colonne est nécessaire pour introduire une nouvelle métrique sur les mutations bloquées, l’utiliser pour créer des graphiques des erreurs rencontrées dans le cloud et, éventuellement, ajouter une nouvelle alerte moins bruyante. #72398 (Miсhael Stetsyuk).
  • Réduit le nombre d’allocations lors de l’attachement de partitions. #72583 (Konstantin Morozov).
  • Fait dépendre la limite max_bytes_before_external_sort de la consommation mémoire totale de la requête (auparavant, il s’agissait du nombre d’octets dans le bloc de tri pour un thread de tri ; désormais, elle a la même signification que max_bytes_before_external_group_by - c’est la limite totale de mémoire pour l’ensemble de la requête sur tous les threads). Un paramètre supplémentaire a également été ajouté pour contrôler la taille des blocs sur disque - min_external_sort_block_bytes. #72598 (Azat Khuzhin).
  • Ignore les restrictions mémoire du collector de traces. #72606 (Azat Khuzhin).
  • Prend en charge les sous-colonnes dans la clé de tri de MergeTree et les index de saut. #72644 (Pavel Kruglov).
  • Ajoute les paramètres serveur dictionaries_lazy_load et wait_dictionaries_load_at_startup à system.server_settings. #72664 (Christoph Wurm).
  • Ajoute le paramètre max_backup_bandwidth à la liste des paramètres pouvant être spécifiés dans les requêtes BACKUP/RESTORE. #72665 (Christoph Wurm).
  • Les répliques parallèles utilisaient des informations historiques sur la disponibilité des répliques pour améliorer leur sélection, mais ne mettaient pas à jour le nombre d’erreurs de la réplique lorsque la connexion était indisponible. Cette PR met désormais à jour le nombre d’erreurs de la réplique lorsqu’elle est indisponible. #72666 (zoomxi).
  • Réduit le niveau de journalisation des parts répliquées qui apparaissent dans le moteur ReplicatedMergeTree afin de limiter le volume de logs générés dans un cluster répliqué. #72876 (mor-akamai).
  • De nombreuses nouvelles fonctionnalités nécessiteront une meilleure encapsulation du code (notamment en ce qui concerne les métadonnées Iceberg) ainsi que de meilleures abstractions. #72941 (Daniil Ivanik).
  • Prend en charge la comparaison d’égalité pour les valeurs d’une colonne JSON. #72991 (Pavel Kruglov).
  • Améliore le formatage des identifiants avec des sous-colonnes JSON afin d’éviter les backticks inutiles. #73085 (Pavel Kruglov).
  • Journalise les conditions PREWHERE avec le niveau Test. #73116 (Vladimir Cherkasov).
  • Prend en charge SETTINGS avec ENGINE implicite ainsi que le mélange des paramètres du moteur et de la requête. #73120 (Raúl Marín).
  • Écrit les parts avec le niveau 1 si optimize_on_insert est activé. Cela permet d’utiliser plusieurs optimisations de requêtes avec FINAL pour les parts fraîchement écrites. #73132 (Anton Popov).
  • Pour une requête comme WHERE a<b AND b<c AND c<5, peut générer de nouvelles conditions de comparaison (a<5 and b<5) afin d’améliorer le filtrage. #73164 (Shichao Jin).
  • Améliore l’extraction des expressions communes dans les disjonctions. Permet de simplifier la filter expression résultante même en l’absence de sous-expression commune à toutes les disjonctions. Suite de #71537. #73271 (Dmitry Novik).
  • Dans Storage S3(Azure)Queue, permet d’ajouter des settings lorsqu’une table a été créée sans settings. #73283 (Kseniia Sumarokova).
  • clickhouse-client prend en charge Ctrl+D pour terminer la requête. Permet d’utiliser Ctrl+D au lieu de saisir un point-virgule puis d’appuyer sur Entrée. De plus, Ctrl+D se comporte comme Entrée en mode monoligne. #73293 (Xiaozhe Yu).
  • Introduit un setting least_greatest_legacy_null_behavior (par défaut : false) qui contrôle si les fonctions least et greatest traitent les arguments NULL en renvoyant systématiquement NULL (si true) ou en les ignorant (si false). #73344 (Robert Schulze).
  • Utilise des requêtes multiples Keeper dans le thread de nettoyage d’ObjectStorageQueueMetadata. #73357 (Antonio Andelic).
  • Un nouveau driver MongoDB est désormais utilisé par défaut. Les utilisateurs qui souhaitent continuer à utiliser l’ancien driver peuvent définir le server setting use_legacy_mongodb_integration sur true. #73359 (Robert Schulze).
  • Lorsque ClickHouse s’exécute sous cgroup, nous continuerons à collecter des metrics asynchrones à l’échelle du système liées à la charge système, à l’ordonnancement des processus, à la mémoire, etc. Elles peuvent fournir des signaux utiles lorsque ClickHouse est le seul processus sur l’hôte à consommer beaucoup de ressources. #73369 (Nikita Taranov).
  • Dans le storage S3Queue, permet de migrer les anciennes tables ordered créées avant la version 24.6 vers la nouvelle structure avec des buckets. #73467 (Kseniia Sumarokova).
  • Ajoute system.azure_queue, similaire à system.s3queue existant. #73477 (Kseniia Sumarokova).
  • Corrige une régression qui faisait que l’utilisation de locales de collation avec des modifiers générait une error. Par exemple, SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shifted fonctionne désormais. #73544 (Robert Schulze).
  • Prend en charge le type Nullable(JSON). #73556 (Pavel Kruglov).
  • La fonction parseDateTime64 (et ses variantes) produit désormais des résultats corrects pour les dates d’entrée antérieures à 1970 ou postérieures à 2106. Example : SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS'). #73594 (zhanglistar).
  • Corrige certains problèmes d’utilisabilité de clickhouse-disks signalés par les utilisateurs. Clôt #67136. #73616 (Daniil Ivanik).
  • Permet de modifier les paramètres de commit dans le stockage S3(Azure)Queue. (Les paramètres de commit sont : max_processed_files_before_commit, max_processed_rows_before_commit, max_processed_bytes_before_commit, max_processing_time_sec_before_commit). #73635 (Kseniia Sumarokova).
  • Dans le stockage S3(Azure)Queue, agrège la progression entre les sources afin de la comparer aux paramètres de limite de commit. #73641 (Kseniia Sumarokova).
  • Prend en charge les paramètres principaux dans la requête BACKUP/RESTORE. #73650 (Vitaly Baranov).
  • Lit output_format_compression_level pour la sortie Parquet. #73651 (Arthur Passos).
  • Ajoute la lecture de arrow fixed_size_list comme un Array au lieu de le traiter comme un type non pris en charge. #73654 (Julian Meyers).
  • Cette PR ajoute deux moteurs de sauvegarde : Memory (conserve les sauvegardes dans la session utilisateur en cours) et Null (ne conserve les sauvegardes nulle part). #73690 (Vitaly Baranov).
  • concurrent_threads_soft_limit_num et concurrent_threads_soft_limit_num_ratio_to_cores peuvent être modifiés sans redémarrer un serveur. #73713 (Sergei Trifonov).
  • Ajoute la prise en charge des types numériques étendus (Decimal, grands entiers) dans les fonctions formatReadable. #73765 (Raúl Marín).
  • Respecte la correspondance de colonnes insensible à la casse pour les champs dans les colonnes de tuple. Clôt https://github.com/apache/incubator-gluten/issues/8324. #73780 (李扬).
  • Prend en charge TLS pour le protocole wire de Postgres. #73812 (scanhex12).
  • Autorise LowCardinality(UUID) par défaut. Cela s’est révélé pratique chez les clients ClickHouse Cloud. #73826 (Alexey Milovidov).
  • Message amélioré pendant l’installation. #73827 (Alexey Milovidov).
  • Message amélioré concernant la réinitialisation du mot de passe pour ClickHouse Cloud. #73831 (Alexey Milovidov).
  • Améliore le message d’erreur avec une table File qui ne peut pas effectuer d’ajouts en fin de fichier. #73832 (Alexey Milovidov).
  • Demander une confirmation lorsqu’un utilisateur tente accidentellement d’afficher un format binaire (tel que Native, Parquet ou Avro) dans le terminal. Cela clôt #59524. #73833 (Alexey Milovidov).
  • Le type de données BFloat16 est prêt pour la production. #73840 (Alexey Milovidov).
  • Mettre en évidence les espaces de fin de ligne dans les formats Pretty et Vertical dans le terminal pour une meilleure lisibilité. Cela est contrôlé par le paramètre output_format_pretty_highlight_trailing_spaces. Implémentation initiale par Braden Burns dans #72996. Clôt #71590. #73847 (Alexey Milovidov).
  • clickhouse-client et clickhouse-local détecteront automatiquement la compression de stdin lorsqu’il est redirigé depuis un fichier. Cela clôt #70865. #73848 (Alexey Milovidov).
  • Tronquer par défaut les noms de colonnes trop longs dans les formats Pretty. Cela est contrôlé par les paramètres output_format_pretty_max_column_name_width_cut_to et output_format_pretty_max_column_name_width_min_chars_to_cut. Il s’agit de la poursuite du travail de tanmaydatta dans #66502. Cela clôt #65968. #73851 (Alexey Milovidov).
  • Rendre les formats Pretty plus agréables à lire : regrouper les blocks si peu de temps s’est écoulé depuis la sortie du block précédent. Cela est contrôlé par les nouveaux paramètres output_format_pretty_squash_consecutive_ms (50 ms par défaut) et output_format_pretty_squash_max_wait_ms (1000 ms par défaut). Suite de #49537. Cela clôt #49153. #73852 (Alexey Milovidov).
  • Corriger le type mapping pour SQLite (types entiers vers int64, nombres à virgule flottante vers float64). #73853 (Joanna Hulboj).
  • Ajouter une metric sur le nombre de parties sources en cours de fusion. Cela clôt #70809. #73868 (Alexey Milovidov).
  • Mettre en évidence les colonnes dans le format Vertical si la sortie est affichée dans un terminal. Cela peut être désactivé avec le paramètre output_format_pretty_color. #73898 (Alexey Milovidov).
  • Compatibilité MySQL améliorée au point que mysqlsh (une CLI MySQL avancée d’Oracle) peut désormais se connecter à ClickHouse. Cela est nécessaire pour faciliter les tests. #73912 (Alexey Milovidov).
  • Si le nombre d’enregistrements de sortie dépasse N = output_format_pretty_max_rows, au lieu d’afficher uniquement les N premières lignes, le tableau de sortie sera tronqué au milieu, avec N/2 premières lignes et N/2 dernières lignes affichées. Suite de #64200. Cela clôt #59502. #73929 (Alexey Milovidov).
  • La fonction isIPv4String renvoyait true si une adresse IPv4 valide était suivie d’un octet nul, alors qu’elle devrait renvoyer false dans ce cas. Suite de #65387. #73946 (Alexey Milovidov).
  • Rendre le code d’erreur du MySQL wire protocol compatible avec MySQL. Suite de #56831. Clôt #50957. #73948 (Alexey Milovidov).
  • Ajouter le paramètre validate_enum_literals_in_opearators pour valider les littéraux enum dans des opérateurs comme IN et NOT IN par rapport au type enum, et lever une exception si le littéral n’est pas une valeur enum valide. #73985 (Vladimir Cherkasov).
  • Dans S3(Azure)Queue, valider tous les fichiers (dans un seul lot défini par les paramètres de commit) au sein d’une seule transaction Keeper. #73991 (Kseniia Sumarokova).
  • Désactiver la détection d’en-tête pour les Executable UDFs et les Dictionaries (cela pouvait provoquer Function 'X': wrong result, expected Y rows, actual Y-1). #73992 (Azat Khuzhin).
  • Ajouter l’option distributed à EXPLAIN PLAN. Désormais, EXPLAIN distributed=1 ... ajoute le plan distant aux étapes ReadFromParallelRemote*. #73994 (Nikolai Kochetov).
  • Utiliser le type de retour correct pour not/xor avec des arguments Dynamic. #74013 (Pavel Kruglov).
  • Autoriser la modification de add_implicit_sign_column_constraint_for_collapsing_engine après la création de la table. #74014 (Christoph Wurm).
  • Prendre en charge les subcolumns dans la requête SELECT d’une materialized view. #74030 (Pavel Kruglov).
  • Les Pretty formats peuvent afficher des champs sur plusieurs lignes à l’intérieur d’une cellule de tableau, ce qui améliore la lisibilité. Cela est activé par défaut et peut être contrôlé par le paramètre output_format_pretty_multiline_fields. Suite du travail de Volodyachan dans #64094. Cela clôt #56912. #74032 (Alexey Milovidov).
  • Prendre en charge l’optimisation predicate-push-down au niveau du query plan pour l’étape MergingAggregated. Cela améliore les performances de certaines queries avec le nouvel analyzer. #74073 (Nikolai Kochetov).
  • Il existe désormais trois façons simples de définir une invite personnalisée dans clickhouse-client : 1. via le paramètre de ligne de commande --prompt, 2. dans le fichier de configuration, via le paramètre <prompt>[...]</prompt>, et 3. également dans le fichier de configuration, via les paramètres propres à chaque connexion <connections_credentials><prompt>[...]</prompt></connection_credentials>. #74168 (Christoph Wurm).
  • Remplacement du code de succès de la réponse prometheus remote write de 200/OK à 204/NoContent. #74170 (Michael Dempsey).
  • Exposition des en-têtes HTTP X-ClickHouse à JavaScript dans le navigateur. Cela facilite l’écriture d’applications. #74180 (Alexey Milovidov).
  • Le format JSONEachRowWithProgress inclura des événements avec des métadonnées, ainsi que des totaux et des extrêmes. Il inclut également rows_before_limit_at_least et rows_before_aggregation. Le format affiche correctement l’exception si elle arrive après des résultats partiels. La progression inclut désormais le temps écoulé en nanosecondes. Un dernier événement de progression est émis à la fin. La progression pendant l’exécution de la requête ne sera pas affichée plus fréquemment que la valeur du paramètre interactive_delay. #74181 (Alexey Milovidov).
  • Le sablier tournera de manière fluide dans l’UI Play. #74182 (Alexey Milovidov).
  • Même si la réponse HTTP est compressée, les paquets sont envoyés dès leur arrivée. Cela permet au navigateur de recevoir les paquets de progression et les données compressées. #74201 (Alexey Milovidov).
  • Ajout de la possibilité de recharger max_remote_read_network_bandwidth_for_serve et max_remote_write_network_bandwidth_for_server à la volée, sans redémarrer le serveur. #74206 (Kai Zhu).
  • Détection automatique d’une connexion sécurisée lors d’une connexion au port 9440 dans ClickHouse Client. #74212 (Christoph Wurm).
  • Authentification des utilisateurs avec le seul username pour les http_handlers (auparavant, l’utilisateur devait également fournir le password). #74221 (Azat Khuzhin).
  • La prise en charge des query languages alternatifs PRQL et KQL a été marquée Experimental. Pour les utiliser, spécifiez les paramètres allow_experimental_prql_dialect = 1 et allow_experimental_kusto_dialect = 1. #74224 (Robert Schulze).
  • Prise en charge du renvoi du type Enum par défaut dans davantage d’aggregate functions. #74272 (Raúl Marín).
  • Dans OPTIMIZE TABLE, il est désormais possible de spécifier le keyword FORCE comme alternative au keyword FINAL existant. #74342 (Robert Schulze).
  • Ajout d’un paramètre MergeTree, materialize_skip_indexes_on_merge, qui empêche la création de skip indexes lors du merge. Cela vous permet de contrôler explicitement (via ALTER TABLE [..] MATERIALIZE INDEX [...]) quand les skip indexes sont créés. Cela peut être utile si les skip indexes sont coûteux à construire (par exemple, les vector similarity indexes). #74401 (Robert Schulze).
  • Prise en charge des subcolumns dans les expressions par défaut et materialized. #74403 (Pavel Kruglov).
  • Optimise les requêtes Keeper dans Storage(S3/Azure)Queue. #74410 (Kseniia Sumarokova).
  • Ajoute la métrique IsServerShuttingDown, nécessaire pour déclencher une alerte lorsque l’arrêt du serveur prend trop de temps. #74429 (Miсhael Stetsyuk).
  • Ajoute les noms des tables Iceberg à EXPLAIN. #74485 (alekseev-maksim).
  • Utilise jusqu’à 1000 répliques parallèles par défaut. #74504 (Konstantin Bogdanov).
  • Fournit un meilleur message d’erreur lors de l’utilisation de RECURSIVE CTE avec l’ancien analyseur. #74523 (Raúl Marín).
  • Optimise les requêtes Keeper dans Storage(S3/Azure)Queue. #74538 (Kseniia Sumarokova).
  • Améliore la réutilisation des sessions HTTP lors de la lecture depuis un disque S3 (#72401). #74548 (Julian Maicher).
  • Affiche des messages d’erreur détaillés dans system.errors. #74574 (Vitaly Baranov).
  • Active un mécanisme de backoff pour tous les types de tâches répliquées. Cela permettra de réduire l’utilisation du CPU, l’utilisation de la mémoire et la taille des fichiers journaux. Ajoute les nouveaux paramètres max_postpone_time_for_failed_replicated_fetches_ms, max_postpone_time_for_failed_replicated_merges_ms et max_postpone_time_for_failed_replicated_tasks_ms, similaires à max_postpone_time_for_failed_mutations_ms. #74576 (MikhailBurdukov).
  • Comptabilisation plus précise du paramètre max_joined_block_size_rows pour l’algorithme de JOIN parallel_hash. Cela permet d’éviter une consommation mémoire plus élevée qu’avec l’algorithme hash. #74630 (Nikita Taranov).
  • Ajoute la prise en charge de l’option de configuration libhdfs3 dfs.client.use.datanode.hostname. #74635 (Mikhail Tiukavkin).
  • Corrige l’erreur : Invalid: Codec ‘snappy’ doesn’t support setting a compression level. #74659 (Arthur Passos).
  • Autorise l’utilisation d’un mot de passe pour la communication du client avec ClickHouse Keeper. Cette fonctionnalité n’est pas très utile si vous spécifiez une configuration SSL appropriée pour le serveur et le client, mais elle peut tout de même être utile dans certains cas. Le mot de passe ne peut pas dépasser 16 caractères. Elle n’est pas liée au modèle d’authentification de Keeper. #74673 (alesapin).
  • Autorise l’utilisation de chemins de blob pour calculer les sommes de contrôle lors de la création d’une sauvegarde. #74729 (Vitaly Baranov).
  • Utilise le sharding dynamique pour JOIN si la clé de jointure est un préfixe de la PK des deux côtés. Cette optimisation est activée avec le paramètre query_plan_join_shard_by_pk_ranges (désactivé par défaut). #74733 (Nikolai Kochetov).
  • Ajout d’un code d’erreur pour le rechargement de la configuration. #74746 (Garrett Thomas).
  • Ajout de la prise en charge des adresses IPv6 dans les fonctions de table et les moteurs MySQL et PostgreSQL. #74796 (Mikhail Koviazin).
  • Les paramètres du codec Gorilla seront désormais toujours enregistrés dans les métadonnées de la table, dans le fichier .sql. Cela clôt : #70072. #74814 (Nikita Mikhaylov).
  • Implémentation de l’optimisation en court-circuit pour divideDecimal. Corrige #74280. #74843 (Kevin Mingtarja).
  • Amélioration des performances des requêtes multiples de grande taille dans Keeper. #74849 (Antonio Andelic).
  • Il est désormais possible de spécifier des utilisateurs dans les scripts de démarrage. #74894 (pufit).
  • Récupération des parts en parallèle dans ALTER TABLE FETCH PARTITION (la taille du pool de threads est contrôlée par max_fetch_partition_thread_pool_size). #74978 (Azat Khuzhin).
  • Ajout d’une colonne d’ID de requête à system.query_cache (issue #68205). #74982 (NamNguyenHoai).
  • Le protocole SSH a été réactivé. Certaines vulnérabilités critiques ont été corrigées ; il n’est donc plus possible d’utiliser un pager personnalisé ni de spécifier server-logs-file. La possibilité de transmettre des options client via les variables d’environnement a été désactivée par défaut (cela reste possible via ssh-server.enable_client_options_passing dans config.xml). Prise en charge de la table de progression, de l’annulation de requête, de l’autocomplétion, de la progression des profile events, de stdin et de l’option send_logs_level. Cela clôt : #74340. #74989 (Nikita Mikhaylov).
  • Correction du formatage des exceptions à l’aide d’un format personnalisé lorsqu’elles surviennent pendant l’interprétation d’une requête. Dans les versions précédentes, les exceptions étaient formatées avec le format par défaut au lieu de celui spécifié dans la requête. Cela clôt #55422. #74994 (Alexey Milovidov).
  • Améliorations du parsing implémentées (parsing des ID de séquence : ajout de la prise en charge de l’analyse des identifiants de séquence dans les manifest files ET parsing des métadonnées Avro : le parseur de métadonnées Avro a été repensé pour être facilement extensible à de futures améliorations). #75010 (Daniil Ivanik).
  • Il est désormais possible d’annuler les requêtes ALTER TABLE ... FREEZE ... avec KILL QUERY et un délai d’expiration (max_execution_time). #75016 (Kirill).
  • Ajout de la prise en charge de groupUniqArrayArrayMap en tant que SimpleAggregateFunction. #75034 (Miel Donkers).
  • Prise en charge des instructions préparées dans le protocole Postgres wire. #75035 (scanhex12).
  • Masquage des paramètres d’identifiants du catalogue dans le database engine Iceberg. Clôture #74559. #75080 (Kseniia Sumarokova).
  • Ajout de quelques fonctionnalités manquantes à BuzzHouse : opérateurs ILIKE et REGEXP, <=> et IS NOT DISTINCT FROM. #75168 (Pedro Ferreira).
  • Le paramètre min_chunk_bytes_for_parallel_parsing ne peut désormais plus être égal à zéro. Correction de : #71110. #75239 (Nikita Mikhaylov).
  • intExp2 / intExp10 : définition du comportement pour les cas auparavant non définis : renvoie 0 si l’argument est trop petit, 18446744073709551615 s’il est trop grand, et lève une exception si nan. #75312 (Vitaly Baranov).
  • Prise en charge native de s3.endpoint à partir de la config du catalogue dans DatabaseIceberg. Clôture #74558. #75375 (Kseniia Sumarokova).
  • Ne plus échouer silencieusement si l’utilisateur qui exécute SYSTEM DROP REPLICA ne dispose pas des permissions suffisantes. #75377 (Bharat Nallan).
  • Ajout d’un ProfileEvent sur le nombre de fois où l’un des logs système n’a pas pu être flushé. #75466 (Alexey Milovidov).
  • Ajout d’une vérification et de logging pour le déchiffrement et la décompression. #75471 (Vitaly Baranov).
  • Ajout de la prise en charge du signe micro (U+00B5) dans la fonction parseTimeDelta. Désormais, le signe micro (U+00B5) et la lettre grecque mu (U+03BC) sont tous deux reconnus comme représentations valides des microsecondes, ce qui aligne le comportement de ClickHouse sur l’implémentation de Go (voir time.go et time/format.go). #75472 (Vitaly Orlov).
  • Remplacement du paramètre serveur (send_settings_to_client) par un paramètre client (apply_settings_from_server) qui détermine si le code côté client (par ex. l’analyse des données INSERT et le formatage de la sortie des requêtes) doit utiliser les paramètres définis dans le users.xml du serveur et dans le profil utilisateur. Sinon, seuls les paramètres de la ligne de commande du client, de la session et de la requête sont utilisés. Notez que cela s’applique uniquement au native client (et non, par ex., à HTTP) et ne concerne pas la majeure partie du query processing (qui a lieu sur le serveur). #75478 (Michael Kolupaev).
  • Amélioration de Keeper : désactivation du calcul du digest lors du commit vers le stockage en mémoire afin d’améliorer les performances. Il peut être activé avec la config keeper_server.digest_enabled_on_commit. Le digest continue d’être calculé lors du prétraitement des requêtes. #75490 (Antonio Andelic).
  • Push down de l’expression de filtre depuis JOIN ON lorsque c’est possible. #75536 (Vladimir Cherkasov).
  • Meilleurs messages d’erreur en cas d’erreur de syntaxe. Auparavant, si la requête était trop volumineuse et que le jeton dépassant la limite de longueur était une très longue chaîne littérale, le message expliquant la cause se perdait au milieu de deux exemples de ce jeton très long. Correction également d’un problème où une requête en UTF-8 était tronquée de manière incorrecte dans le message d’erreur. Suppression aussi de l’usage excessif de guillemets autour des fragments de requête. Ceci clôt #75473. #75561 (Alexey Milovidov).
  • Ajout des événements de profil dans le stockage S3(Azure)Queue. #75618 (Kseniia Sumarokova).
  • Désactivation de l’envoi des réglages du serveur au client (send_settings_to_client=false) pour des raisons de compatibilité (cette fonctionnalité sera réimplémentée plus tard sous forme de client setting pour une meilleure ergonomie). #75648 (Michael Kolupaev).
  • Ajout d’une config memory_worker_correct_memory_tracker pour permettre la correction du memory tracker interne à l’aide d’informations provenant de différentes sources, lues périodiquement dans le thread d’arrière-plan. #75714 (Antonio Andelic).
  • Utilisation de l’Analyzer dans PrometheusRemoteReadProtocol. #75729 (Dmitry Novik).
  • Les types de métriques gauge/counter sont pris en charge. Toutefois, ils sont insuffisants pour certaines métriques (par exemple, les temps de réponse des requêtes adressées à Keeper), d’où la nécessité de prendre en charge le type de métrique histogramme. L’interface reprend de très près celle du client Prometheus, où il suffit d’appeler observe(value) pour incrémenter le compteur dans le bucket correspondant à la valeur. Les métriques d’histogramme sont exposées via system.histogram_metrics. #75736 (Miсhael Stetsyuk).
  • Ajout de la colonne normalized_query_hash dans system.processes. Remarque : bien qu’elle puisse être facilement calculée à la volée avec la fonction normalizedQueryHash, cela est nécessaire pour préparer les changements à venir. #75756 (Alexey Milovidov).
  • Interroger system.tables ne provoquera plus d’exception, même s’il existe une table Merge créée sur une base de données qui n’existe plus. Suppression de la méthode getTotalRows des tables Hive, car nous ne lui permettons pas d’effectuer un traitement complexe. #75772 (Alexey Milovidov).
  • L’interface web dispose désormais d’une navigation interactive dans les bases de données. #75777 (Alexey Milovidov).
  • Possibilité de combiner des disques en lecture seule et en lecture-écriture dans une stratégie de stockage (sous forme de plusieurs volumes ou de plusieurs disques). Cela permet de lire les données depuis l’ensemble du volume, tandis que les inserts privilégieront le disque accessible en écriture (c.-à-d. une stratégie de stockage copy-on-write). #75862 (Azat Khuzhin).
  • Suppression de trace_id du ORDER BY par défaut pour system.opentelemetry_span_log. #75907 (Azat Khuzhin).
  • Le chiffrement (attribut XML encrypted_by) peut désormais être appliqué à n’importe quel fichier de configuration (config.xml, users.xml, fichiers de configuration imbriqués). Auparavant, il ne fonctionnait que pour le fichier config.xml de niveau supérieur. #75911 (Mikhail Gorshkov).
  • Stockage de start_time/end_time pour les sauvegardes avec une précision de l’ordre de la microseconde. #75929 (Aleksandr Musorin).
  • Ajout de la métrique MemoryTrackingUncorrected, qui affiche la valeur du memory tracker global interne non corrigée par le RSS. #75935 (Antonio Andelic).
  • Calcul à la demande de la taille des colonnes et des index dans MergeTree. #75938 (Pavel Kruglov).
  • La conversion d’une jointure en sous-requête IN lorsque la colonne de sortie est liée à la table de gauche nécessite d’abord une étape d’unicité ; cette fonctionnalité est donc désactivée par défaut jusqu’à l’ajout ultérieur de cette étape. #75942 (Shichao Jin).
  • Ajout d’un paramètre serveur throw_on_unknown_workload permettant de choisir le comportement d’une requête dont le paramètre workload est défini sur une valeur inconnue : soit autoriser un accès illimité (par défaut), soit lever une erreur RESOURCE_ACCESS_DENIED. Cela permet d’imposer l’utilisation du Workload scheduling pour toutes les requêtes. #75999 (Sergei Trifonov).
  • Le nouveau Kafka table engine, encore Experimental, respecte désormais entièrement les feature flags de Keeper. #76004 (János Benjamin Antal).
  • Ne pas réécrire les subcolumns en getSubcolumn dans ARRAY JOIN lorsque ce n’est pas nécessaire. #76018 (Pavel Kruglov).
  • Réessai des erreurs de coordination lors du chargement des tables. #76020 (Alexander Tokmakov).
  • Amélioration de la table system.warnings et ajout de messages d’avertissement dynamiques pouvant être ajoutés, mis à jour ou supprimés. #76029 (Bharat Nallan).
  • Prise en charge du flush de logs individuels dans SYSTEM FLUSH LOGS. #76132 (Raúl Marín).
  • Amélioration de la page /binary du serveur : utilisation de la courbe de Hilbert à la place de la courbe de Morton ; affichage de 512 Mo d’adresses dans le carré, qui est ainsi mieux rempli (dans les versions précédentes, les adresses n’en occupaient que la moitié) ; coloration des adresses davantage liée au nom de la bibliothèque qu’au nom de la fonction ; possibilité de faire défiler un peu plus au-delà de la zone. #76192 (Alexey Milovidov).
  • Cette PR empêche l’exécution de la requête ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES, car toutes les opérations DROP doivent apparaître en premier. #76242 (pufit).
  • Diverses améliorations pour SYNC REPLICA (meilleurs messages d’erreur, meilleurs tests, vérifications de cohérence). #76307 (Azat Khuzhin).
  • Réessai des requêtes ON CLUSTER en cas de TOO_MANY_SIMULTANEOUS_QUERIES. #76352 (Patrick Galbraith).
  • La valeur par défaut de output_format_pretty_max_rows passe de 10000 à 1000. Je pense que c’est préférable pour l’ergonomie. #76407 (Alexey Milovidov).
  • Prise en charge du refresh dans les tables MergeTree en lecture seule. #76467 (Alexey Milovidov).
  • Utilisation du mécanisme de repli approprié lorsqu’une copie multipart vers S3 échoue pendant une sauvegarde avec l’erreur Access Denied. Une copie multipart peut générer une erreur Access Denied lorsqu’une sauvegarde est effectuée entre des buckets utilisant des informations d’identification différentes. #76515 (Antonio Andelic).
  • Arrêt plus rapide des serveurs ClickHouse (suppression du délai de 2,5 s). #76550 (Azat Khuzhin).
  • Ajout de query_id à system.errors. Ticket associé : #75815. #76581 (Vladimir Baikov).
  • Mise à niveau de librdkafka vers la version 2.8.0 et amélioration de la séquence d’arrêt des tables Kafka, réduisant les délais lors des suppressions de tables et des redémarrages du serveur. engine=Kafka ne quitte plus explicitement le consumer group lorsqu’une table est supprimée. À la place, le consumer reste dans le groupe jusqu’à en être automatiquement retiré après session_timeout_ms (45 secondes par défaut) d’inactivité. #76621 (filimonov).
  • Correction de la validation des paramètres de requête S3. #76658 (Vitaly Baranov).
  • Évite les allocations excessives dans readbufferfroms3 et d’autres buffers de lecture distants, et réduit de moitié leur consommation de mémoire. #76692 (Sema Checherinda).
  • Prise en charge de la lecture du type JSON et des sous-colonnes depuis View. #76903 (Pavel Kruglov).
  • Ajout de la prise en charge de la conversion de UInt128 en IPv6. Cela permet l’opération bitAnd et les opérations arithmétiques sur IPv6, ainsi que la conversion inverse vers IPv6. Ferme #76752. Cela permet également de reconvertir en IPv6 le résultat de l’opération bitAnd sur IPv6. Voir : https://github.com/ClickHouse/ClickHouse/pull/57707. #76928 (Muzammil Abdul Rehman).
  • Les tables système comme server_settings ou settings disposent d’une colonne default, ce qui est pratique. Seules merge_tree_settings et replicated_merge_tree_settings n’avaient pas cette colonne activée. #76942 (Diego Nieto).
  • N’analyse plus par défaut les valeurs Bool spéciales dans les formats texte à l’intérieur du type Variant. Cela peut être activé à l’aide du paramètre allow_special_bool_values_inside_variant. #76974 (Pavel Kruglov).
  • Prise en charge d’un temps d’attente configurable par tâche pour les requêtes de faible priorité, au niveau de la session comme au niveau du serveur. #77013 (VicoWu).
  • Ajout de ProfileEvents::QueryPreempted, qui suit la même logique que CurrentMetrics::QueryPreempted. #77015 (VicoWu).
  • Auparavant, une base de données replicated pouvait afficher dans les logs des informations d’identification spécifiées dans une requête. Ce comportement a été corrigé. Cela ferme : #77123. #77133 (Nikita Mikhaylov).
  • Passage de zstd de 1.5.5 à 1.5.7, qui apporte de bonnes améliorations des performances. #77137 (Pradeep Chhetri).
  • Autorise ALTER TABLE DROP PARTITION pour le disque plain_rewritable. #77138 (Julia Kartseva).
  • Ajoute la possibilité d’attendre aléatoirement jusqu’à 500 ms, indépendamment de la taille des parts, avant l’exécution des merges/mutations en cas de zero-copy replication. #77165 (Alexey Katsman).
  • Prend en charge le renommage atomique lorsque TRUNCATE est utilisé avec INTO OUTFILE. Résout #70323. #77181 (Onkar Deshpande).
  • Utilise FixedString pour les types CHARACTER, CHAR et BPCHAR de PostgreSQL. #77304 (Pablo Marcos).
  • Permet de spécifier explicitement le fichier de métadonnées à lire pour Iceberg avec le paramètre de moteur de stockage/table function iceberg_metadata_file_path . Corrige #47412. #77318 (alesapin).
  • Prend en charge l’utilisation d’un disque distant pour stocker les fichiers de métadonnées des bases de données. #77365 (Tuan Pham Anh).
  • Implémente la comparaison des valeurs du type de données JSON. Les objets JSON peuvent désormais être comparés comme les Maps. #77397 (Pavel Kruglov).
  • Changement annulé. #77399 (Yarik Briukhovetskyi).
  • Le paramètre de backup/restore allow_s3_native_copy prend désormais en charge trois valeurs possibles : - False - la copie native S3 ne sera pas utilisée ; - True (ancienne valeur par défaut) - ClickHouse essaiera d’abord la copie native S3, puis reviendra à l’approche lecture+écriture en cas d’échec ; - 'auto' (nouvelle valeur par défaut) - ClickHouse comparera d’abord les identifiants de la source et de la destination. S’ils sont identiques, ClickHouse essaiera la copie native S3 puis pourra revenir à l’approche lecture+écriture. S’ils sont différents, ClickHouse passera directement à l’approche lecture+écriture. #77401 (Vitaly Baranov).
  • Prend en charge ALTER TABLE … ATTACH|DETACH|MOVE|REPLACE PARTITION pour le disque plain_rewritable. #77406 (Julia Kartseva).
  • Le cache de l’index de saut est annulé. #77447 (Nikita Mikhaylov).
  • Réduit la consommation mémoire lors des prefetches d’une colonne JSON dans les Wide parts. #77640 (Pavel Kruglov).
  • Prend en charge l’utilisation du jeton de session AWS et des identifiants d’environnement dans delta kernel pour le moteur de table DeltaLake. #77661 (Kseniia Sumarokova).
  • Prend en charge les paramètres de requête dans le paramètre additional_table_filters. Après ce changement, la requête suivante réussit :. #77680 (wxybear).
  • Les fonctions définies par l’utilisateur (UDF) peuvent désormais être marquées comme déterministes via une nouvelle balise dans leur définition XML. De plus, le cache de requêtes vérifie désormais si les UDF appelées dans une requête sont déterministes. Si c’est le cas, il met en cache le résultat de la requête. (Issue #59988). #77769 (Jimmy Aguilar Mena).
  • Ajout de la validation des paramètres du moteur de table Buffer. #77840 (Pervakov Grigorii).
  • Ajout de la config enable_hdfs_pread pour activer ou désactiver hdfs pread. #77885 (kevinyhzou).
  • Ajout de profile events pour le nombre de requêtes de lecture et d’écriture multi de ZooKeeper. #77888 (JackyWoo).
  • Possibilité de créer une table temporaire et d’y insérer des données lorsque disable&#95;insertion&#95;and&#95;mutation est activé. #77901 (Xu Jia).
  • Réduction de max&#95;insert&#95;delayed&#95;streams&#95;for&#95;parallel&#95;write à 100. #77919 (Azat Khuzhin).
  • Ajout de la possibilité de configurer le nombre de colonnes que les merges peuvent flush en parallèle à l’aide de max_merge_delayed_streams_for_parallel_write (cela devrait réduire d’environ 25 fois la consommation mémoire des fusions verticales vers S3). #77922 (Azat Khuzhin).
  • Correction du parsing des années en syntaxe Joda, comme ‘yyy’. #77973 (李扬).
  • Le rattachement des parts de tables MergeTree sera effectué dans leur ordre de block, ce qui est important pour certains algorithmes de merging spéciaux, tels que ReplacingMergeTree. Cela clôt #71009. #77976 (Alexey Milovidov).
  • Les Query masking rules peuvent désormais déclencher une LOGICAL_ERROR en cas de correspondance. Cela aidera à vérifier si un mot de passe prédéfini fuit quelque part dans les logs. #78094 (Nikita Mikhaylov).
  • Ajout de la colonne index_length_column à information_schema.tables pour une meilleure compatibilité avec MySQL. #78119 (Paweł Zakrzewski).
  • Introduction de deux nouvelles métriques : TotalMergeFailures et NonAbortedMergeFailures. Ces métriques sont nécessaires pour détecter les cas où un trop grand nombre de merges échouent sur une courte période. #78150 (Miсhael Stetsyuk).
  • Correction du parsing incorrect de l’URI S3 lorsque la clé n’est pas spécifiée en style de chemin. #78185 (Arthur Passos).
  • Correction des valeurs incorrectes des métriques asynchrones BlockActiveTime, BlockDiscardTime, BlockWriteTime, BlockQueueTime et BlockReadTime (avant ce changement, 1 seconde était incorrectement signalée comme 0.001). #78211 (filimonov).
  • Respect de la limite loading_retries pour les erreurs lors de l’envoi vers la vue matérialisée pour StorageS3(Azure)Queue. Auparavant, ces erreurs étaient réessayées indéfiniment. #78313 (Kseniia Sumarokova).
  • Dans StorageDeltaLake avec l’implémentation delta-kernel-rs, correction des performances et de la barre de progression. #78368 (Kseniia Sumarokova).
  • L’index de similarité vectorielle pouvait surallouer jusqu’à 2x la mémoire vive. Ce correctif revoit la stratégie d’allocation mémoire, réduit la consommation de mémoire et améliore l’efficacité du cache de l’index de similarité vectorielle. (issue #78056). #78394 (Shankar Iyer).
  • Introduction d’un paramètre schema_type pour la table system.metric_log avec type de schéma. Trois schémas sont autorisés : wide — schéma actuel, chaque métrique/événement dans une colonne distincte (le plus efficace pour lire des colonnes séparées), transposed — similaire à system.asynchronous_metric_log, les métriques/événements sont stockés sous forme de lignes, et, plus intéressant, transposed_with_wide_view — crée une table sous-jacente avec le schéma transposed, mais introduit également une vue avec le schéma wide qui traduit les requêtes vers la table sous-jacente. Dans transposed_with_wide_view, la résolution inférieure à la seconde pour la vue n’est pas prise en charge, event_time_microseconds n’étant qu’un alias pour la rétrocompatibilité. #78412 (alesapin).
  • Prise en charge de include, from_env, from_zk pour les disks d’exécution. Closes #78177. #78470 (Kseniia Sumarokova).
  • Ajout de plusieurs moyens pratiques pour localiser le fichier racine metadata.json dans une table function et un engine Iceberg. Closes #78455. #78475 (Daniil Ivanik).
  • Prise en charge du partition pruning dans delta lake. #78486 (Kseniia Sumarokova).
  • Prise en charge de l’authentification par mot de passe dans le protocole SSH de ClickHouse. #78586 (Nikita Mikhaylov).
  • Ajout d’un avertissement dynamique à la table system.warnings pour les mutations de longue durée. #78658 (Bharat Nallan).
  • Abandon des connections si le CPU est fortement surchargé. La décision est prise en fonction du ratio entre le temps d’attente (OSCPUWaitMicroseconds) et le temps d’activité (OSCPUVirtualTimeMicroseconds). La query est abandonnée avec une certaine probabilité lorsque ce ratio se situe entre min_os_cpu_wait_time_ratio_to_drop_connection et max_os_cpu_wait_time_ratio_to_drop_connection. #78778 (Alexey Katsman).
  • Autorisation d’une valeur vide pour le partitionnement Hive. #78816 (Arthur Passos).
  • Correction de la coercition de type de la clause IN pour BFloat16 (c.-à-d. SELECT toBFloat16(1) IN [1, 2, 3]; renvoie désormais 1). Closes #78754. #78839 (Raufs Dunamalijevs).
  • Ne pas vérifier les parts sur d’autres disks pour MergeTree si disk= est défini. #78855 (Azat Khuzhin).
  • Rendre canoniques les types de données dans used_data_type_families de system.query_log. #78972 (Kseniia Sumarokova).

Correction de bug (dysfonctionnement visible par l’utilisateur dans une version stable officielle)

  • Corrige l’impossibilité de créer un nœud SEQUENTIAL avec keeper-client. #64177 (Duc Canh Le).
  • Corrige la résolution des identifiants depuis les scopes parents. Autorise l’utilisation d’alias d’expressions dans la clause WITH. Corrige #58994. Corrige #62946. Corrige #63239. Corrige #65233. Corrige #71659. Corrige #71828. Corrige #68749. #66143 (Dmitry Novik).
  • Corrige le comptage incorrect des caractères dans PositionImpl::vectorVector. #71003 (思维).
  • Corrige la monotonie de la fonction negate. Dans les versions précédentes, la requête select * from a where -x = -42;, où x est la clé primaire, pouvait renvoyer un résultat erroné. #71440 (Michael Kolupaev).
  • Les opérations RESTORE sur les entités d’accès nécessitaient plus d’autorisations que nécessaire en raison de révocations partielles non gérées. Cette PR corrige le problème. Clôt #71853. #71958 (pufit).
  • Évite une pause après ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE. Récupère les paramètres corrects pour l’ordonnancement des tâches en arrière-plan. #72024 (Aleksei Filatov).
  • Corrige la gestion des tuples vides dans arrayIntersect. Corrige #72578. #72581 (Amos Bird).
  • Corrige la gestion des tuples vides dans certains formats d’entrée et de sortie (par ex. Parquet, Arrow). #72616 (Michael Kolupaev).
  • Les instructions GRANT SELECT/INSERT au niveau des colonnes sur des bases de données/tables avec caractères génériques renvoient désormais une erreur. #72646 (Johann Gan).
  • Corrige le cas où un utilisateur ne peut pas exécuter REVOKE ALL ON *.* en raison de grants implicites dans l’entité d’accès cible. #72872 (pufit).
  • Corrige le blocage lors du traitement d’un batch en attente pour un INSERT distribué asynchrone (dû par ex. à No such file or directory). #72939 (Azat Khuzhin).
  • Ajoute la prise en charge des jetons SAS Azure. #72959 (Azat Khuzhin).
  • Corrige le formatage des fuseaux horaires positifs dans la fonction scalaire formatDateTime. #73091 (ollidraese).
  • Corrige la remontée correcte du port source lorsqu’une connexion est établie via PROXYv1 et que auth_use_forwarded_address est défini : auparavant, le port du proxy était utilisé à tort. Ajoute la fonction currentQueryID(). #73095 (Yakov Olkhovskiy).
  • Propage les paramètres de format à NativeWriter dans TCPHandler, afin que des paramètres comme output_format_native_write_json_as_string soient correctement appliqués. #73179 (Pavel Kruglov).
  • Corrige la lecture des sous-colonnes de sous-objets JSON avec un préfixe incorrect. #73182 (Pavel Kruglov).
  • Corrige un plantage dans StorageObjectStorageQueue. #73274 (Kseniia Sumarokova).
  • Corrige un plantage rare dans une vue matérialisée rafraîchissable pendant l’arrêt du serveur. #73323 (Michael Kolupaev).
  • L’espace réservé %f de la fonction formatDateTime génère désormais systématiquement six chiffres (fractions de seconde). Cela rend le comportement compatible avec la fonction MySQL DATE_FORMAT. Le comportement précédent peut être rétabli à l’aide du paramètre formatdatetime_f_prints_scale_number_of_digits = 1. #73324 (ollidraese).
  • Améliore la conversion datetime lors de l’analyse des index en imposant un comportement saturant pour les conversions implicites de Date vers DateTime. Cela corrige de potentielles imprécisions de l’analyse des index dues aux limites des plages datetime. Cela corrige #73307. Corrige également la conversion explicite toDateTime lorsque date_time_overflow_behavior = 'ignore', qui est la valeur par défaut. #73326 (Amos Bird).
  • Corrige le filtrage sur la colonne _etag lors de la lecture depuis le stockage s3 et une table function. #73353 (Anton Popov).
  • Corrige l’erreur Not-ready Set is passed as the second argument for function 'in' lorsque IN (subquery) est utilisé dans une expression JOIN ON, avec l’ancien analyseur. #73382 (Nikolai Kochetov).
  • Corrige la préparation au squashing pour les colonnes Dynamic et JSON. Auparavant, dans certains cas, de nouveaux types pouvaient être insérés dans shared variant/shared data même lorsque la limite de types/chemins n’était pas atteinte. #73388 (Pavel Kruglov).
  • Vérifie les tailles corrompues lors du décodage binaire des types afin d’éviter des allocations excessives. #73390 (Pavel Kruglov).
  • Corrige une erreur logique lors de la lecture depuis un cluster à réplique unique avec les répliques parallèles activées. #73403 (Michael Kolupaev).
  • Corrige ObjectStorageQueue avec ZooKeeper et les anciennes versions de Keeper. #73420 (Antonio Andelic).
  • Implémente le correctif nécessaire pour activer par défaut le partitionnement Hive. #73479 (Yarik Briukhovetskyi).
  • Corrige une data race lors de la création d’un index de similarité vectorielle. #73517 (Antonio Andelic).
  • Corrige un segfault lorsque la source du dictionnaire contient une fonction avec des données incorrectes. #73535 (Yarik Briukhovetskyi).
  • Corrige les tentatives de nouvelle insertion après l’échec d’un insert dans le stockage S3(Azure)Queue. Clôt #70951. #73546 (Kseniia Sumarokova).
  • Correction d’une erreur dans la fonction tupleElement, qui peut apparaître dans certains cas avec des tuples contenant des éléments LowCardinality et le paramètre optimize_functions_to_subcolumns activé. #73548 (Anton Popov).
  • Correction de l’analyse d’un enum glob suivi d’une plage. Corrige #73473. #73569 (Konstantin Bogdanov).
  • Correction d’un problème où parallel_replicas_for_non_replicated_merge_tree était ignoré dans les sous-requêtes des tables non répliquées. #73584 (Igor Nikonov).
  • Correction d’un std::logical_error levé lorsqu’une tâche ne peut pas être planifiée. Problème détecté dans des tests de stress. Exemple de stacktrace : 2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:. #73629 (Alexander Gololobov).
  • N’interprétez pas les requêtes dans EXPLAIN SYNTAX, afin d’éviter des erreurs logiques dues à une étape de traitement incorrecte pour les requêtes distribuées. Corrige #65205. #73634 (Dmitry Novik).
  • Correction d’une possible incohérence de données dans une colonne Dynamic. Corrige une possible erreur logique Nested columns sizes are inconsistent with local_discriminators column size. #73644 (Pavel Kruglov).
  • Correction de NOT_FOUND_COLUMN_IN_BLOCK dans les requêtes avec FINAL et SAMPLE. Correction également d’un résultat incorrect dans les requêtes SELECT avec FINAL sur CollapsingMergeTree lorsque les optimisations de FINAL sont activées. #73682 (Anton Popov).
  • Correction d’un crash dans LIMIT BY COLUMNS. #73686 (Raúl Marín).
  • Correction d’un bug lorsque l’utilisation de la projection normale est forcée et que la requête est exactement identique à la projection définie, mais que la projection n’est pas sélectionnée, ce qui entraîne une erreur. #73700 (Shichao Jin).
  • Correction de la désérialisation de la structure Dynamic/Object. Cela pouvait entraîner des exceptions CANNOT_READ_ALL_DATA. #73767 (Pavel Kruglov).
  • Ignorer metadata_version.txt lors de la restauration de parts depuis une sauvegarde. #73768 (Vitaly Baranov).
  • Corrige #73737. #73775 (zhanglistar).
  • Corrige #72078 (la prise en charge de S3 Express était défaillante). #73777 (Sameer Tamsekar).
  • Autoriser la fusion de lignes avec des valeurs invalides dans la colonne de signe des tables CollapsingMergeTree. #73864 (Christoph Wurm).
  • Correction de l’erreur suivante : Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5. #73876 (Tuan Pham Anh).
  • Corrige les échecs occasionnels de comparaison des types map() dus à la possibilité de créer un Map sans nommage explicite (keys,values) de son tuple imbriqué. #73878 (Yakov Olkhovskiy).
  • Ignore les window functions lors de la résolution de la clause GROUP BY ALL. Corrige #73501. #73916 (Dmitry Novik).
  • Propage correctement les paramètres du format Native pour la communication client-serveur. #73924 (Pavel Kruglov).
  • Corrige les privilèges implicites (ils fonctionnaient auparavant comme des jokers). #73932 (Azat Khuzhin).
  • Corrige une utilisation élevée de la mémoire lors de la création de Maps imbriquées. #73982 (Pavel Kruglov).
  • Corrige l’analyse de JSON imbriqués avec des clés vides. #73993 (Pavel Kruglov).
  • Correction : un alias peut ne pas être ajouté à la projection s’il est référencé par un autre alias et sélectionné dans l’ordre inverse. #74033 (Yakov Olkhovskiy).
  • Un disk utilisant les metadata plain_rewritable peut être partagé entre plusieurs instances de server. Il est normal qu’une instance lise un objet de metadata pendant qu’une autre le modifie. Les erreurs « objet introuvable » sont ignorées lors de l’initialisation de plain_rewritable avec le stockage Azure, comme c’est déjà le cas pour S3. #74059 (Julia Kartseva).
  • Corrige le comportement de any et anyLast avec les types enum et une table vide. #74061 (Joanna Hulboj).
  • Corrige le cas où l’utilisateur spécifie des arguments nommés dans le Kafka table engine. #74064 (Yarik Briukhovetskyi).
  • Corrige la modification des paramètres de Storage S3Queue du préfixe “s3queue_” vers l’absence de préfixe, et inversement. #74075 (Kseniia Sumarokova).
  • Ajoute le paramètre allow_push_predicate_ast_for_distributed_subqueries. Cela ajoute le push-down de prédicats basé sur l’AST pour les distributed queries avec l’analyseur. Il s’agit d’une solution temporaire utilisée en attendant la prise en charge des distributed queries avec sérialisation du query plan. Clôt #66878 #69472 #65638 #68030 #73718. #74085 (Nikolai Kochetov).
  • Corrige un problème où, après #73095, un port peut être présent dans le champ forwarded_for, ce qui empêche la résolution du host name lorsque le port est inclus. #74116 (Yakov Olkhovskiy).
  • Corrige le formatage incorrect de ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...). #74126 (Han Fei).
  • Correction du problème #66112. #74128 (Anton Ivashkin).
  • Il n’est plus possible d’utiliser Loop comme moteur de table dans CREATE TABLE. Cette combinaison provoquait auparavant des segfaults. #74137 (Yarik Briukhovetskyi).
  • Correction d’un problème de sécurité afin d’empêcher l’injection SQL dans les fonctions de table postgresql et sqlite. #74144 (Pablo Marcos).
  • Correction d’un crash lors de la lecture d’une sous-colonne depuis une table compressée du moteur Memory. Corrige #74009. #74161 (Nikita Taranov).
  • Correction d’une boucle infinie se produisant avec des requêtes sur system.detached_tables. #74190 (Konstantin Morozov).
  • Correction d’une erreur logique dans s3queue lors du marquage d’un fichier comme Failed. #74216 (Kseniia Sumarokova).
  • Vérification des types non pris en charge pour certains stockages. #74218 (Pavel Kruglov).
  • Correction d’un crash avec la requête INSERT INTO SELECT via l’interface PostgreSQL sur macOS (problème #72938). #74231 (Artem Yurov).
  • Correction des paramètres de copie native (allow_s3_native_copy/allow_azure_native_copy) pour RESTORE à partir d’une sauvegarde de base. #74286 (Azat Khuzhin).
  • Correction du problème lorsque le nombre de tables détachées dans la base de données est un multiple de max_block_size. #74289 (Konstantin Morozov).
  • Correction de la copie via ObjectStorage (c.-à-d. S3) lorsque les identifiants de la source et de la destination diffèrent. #74331 (Azat Khuzhin).
  • Correction de max_log_ptr non initialisé dans la base de données Replicated. #74336 (Konstantin Morozov).
  • Correction de la détection de “use the Rewrite method in the JSON API” pour la copie native sur GCS. #74338 (Azat Khuzhin).
  • Correction d’un crash lors de l’insertion d’un intervalle (problème #74299). #74478 (NamNguyenHoai).
  • Correction d’une analyse incorrecte des projections lorsque count(nullable) est utilisé dans des projections agrégées. Cela corrige #74495. Cette PR ajoute également quelques logs autour de l’analyse des projections afin de clarifier pourquoi une projection est utilisée, ou non. #74498 (Amos Bird).
  • Correction d’un calcul incorrect de BackgroundMergesAndMutationsPoolSize (il était 2x supérieur à la valeur réelle). #74509 (alesapin).
  • Corrige le bug de fuite des watches de Keeper lors de l’activation de Cluster Discovery. #74521 (RinChanNOW).
  • Corrige le formatage des littéraux JSON constants. Auparavant, cela pouvait entraîner des erreurs de syntaxe lors de l’envoi de la requête à un autre serveur. #74533 (Pavel Kruglov).
  • Corrige un problème d’alignement mémoire signalé par UBSan #74512. #74534 (Arthur Passos).
  • Corrige le nettoyage concurrent de KeeperMap lors de la création de table. #74568 (Antonio Andelic).
  • Ne supprime pas les colonnes de projection inutilisées dans les sous-requêtes en présence de EXCEPT ou INTERSECT afin de préserver le résultat correct de la requête. Corrige #73930. Corrige #66465. #74577 (Dmitry Novik).
  • Corrige la requête CREATE défectueuse lors de l’utilisation d’expressions de partition constantes avec les projections implicites activées. Cela corrige #74596 . #74634 (Amos Bird).
  • Corrige les requêtes INSERT SELECT entre des tables avec des colonnes Tuple et la sérialisation sparse activée. #74698 (Anton Popov).
  • La fonction right fonctionne incorrectement avec un offset négatif constant. #74701 (Daniil Ivanik).
  • Corrige l’insertion de données compressées avec gzip, qui échoue parfois en raison d’une décompression défectueuse côté client. #74707 (siyuan).
  • Évite de laisser la connexion dans un état dégradé après la fin d’un INSERT avec exception. #74740 (Azat Khuzhin).
  • Évite de réutiliser des connexions laissées dans un état intermédiaire. #74749 (Azat Khuzhin).
  • Les révocations partielles avec des caractères génériques dans les grants pouvaient supprimer plus de privilèges que prévu. Corrige #74263. #74751 (pufit).
  • Corrige un crash pendant l’analyse de la déclaration du type JSON lorsque le nom du type n’est pas en majuscules. #74784 (Pavel Kruglov).
  • Correctif Keeper : corrige la lecture des entrées de journal depuis le disque. #74785 (Antonio Andelic).
  • Corrige la vérification des grants pour SYSTEM REFRESH/START/STOP VIEW : il n’est désormais plus nécessaire d’avoir ce grant sur *.* pour exécuter une requête sur une vue spécifique, seul le grant sur cette vue est requis. #74789 (Alexander Tokmakov).
  • La fonction hasColumnInTable ne prend pas en compte les colonnes alias. Corrige cela pour qu’elle fonctionne également avec les colonnes alias. #74841 (Bharat Nallan).
  • Keeper : correction de logical_error lorsque la connexion avait été interrompue avant d’être établie. #74844 (Michael Kolupaev).
  • Correction d’un problème empêchant le serveur de démarrer lorsqu’une table utilisait AzureBlobStorage. Les tables sont désormais chargées sans aucune requête vers Azure. #74880 (Alexey Katsman).
  • Correction de l’absence des champs used_privileges et missing_privileges dans query_log pour les opérations BACKUP et RESTORE. #74887 (Alexey Katsman).
  • Correction de l’erreur FILE_DOESNT_EXIST survenant pendant la fusion de parties de données pour une table avec une colonne vide dans Azure Blob Storage. #74892 (Julia Kartseva).
  • Correction du nom de colonne de projection lors de la jointure de tables temporaires, corrige #68872. #74897 (Vladimir Cherkasov).
  • Actualisation du ticket krb HDFS en cas d’erreur sasl lors d’une requête select HDFS. #74930 (inv2004).
  • Correction des requêtes vers la base de données Replicated dans startup_scripts. #74942 (Azat Khuzhin).
  • Correction de problèmes avec les types d’expressions aliasés dans la clause JOIN ON lorsqu’une comparaison null-safe est utilisée. #74970 (Vladimir Cherkasov).
  • Rétablit l’état d’une part de deleting à outdated lorsqu’une opération de suppression échoue. #74985 (Sema Checherinda).
  • Dans les versions précédentes, lorsqu’il y avait une sous-requête scalaire, nous avons commencé à écrire la progression (accumulée lors du traitement de la sous-requête) pendant l’initialisation du format de données, c’est-à-dire avant l’écriture des en-têtes HTTP. Cela entraînait la perte des en-têtes HTTP, tels que X-ClickHouse-QueryId et X-ClickHouse-Format, ainsi que de Content-Type. #74991 (Alexey Milovidov).
  • Correction des requêtes CREATE TABLE AS... pour database_replicated_allow_replicated_engine_arguments=0. #75000 (Bharat Nallan).
  • Correction d’un état invalide de la connexion dans le client après des exceptions INSERT. #75030 (Azat Khuzhin).
  • Correction d’un plantage dû à une exception non interceptée dans la réplication PSQL. #75062 (Azat Khuzhin).
  • Sasl peut échouer sur n’importe quel appel rpc ; ce correctif permet de relancer l’appel si le ticket krb5 a expiré. #75063 (inv2004).
  • Correction de l’utilisation des index (primaires et secondaires) pour les colonnes Array, Map et Nullable(..) lorsque le paramètre optimize_function_to_subcolumns est activé. Auparavant, les index de ces colonnes pouvaient être ignorés. #75081 (Anton Popov).
  • Désactive flatten_nested lors de la création de vues matérialisées avec des tables internes, car il n’est pas possible d’utiliser de telles colonnes aplaties. #75085 (Christoph Wurm).
  • Correction d’un problème où certaines adresses IPv6 (comme ::ffff:1.1.1.1) dans le champ forwarded_for étaient mal interprétées, entraînant la déconnexion du client avec une exception. #75133 (Yakov Olkhovskiy).
  • Correction de la gestion des JOIN null-safe pour le type de données LowCardinality Nullable. Auparavant, les JOIN ON avec une comparaison null-safe, comme IS NOT DISTINCT FROM, <=> , a IS NULL AND b IS NULL OR a == b, ne fonctionnaient pas correctement avec les colonnes LowCardinality. #75143 (Vladimir Cherkasov).
  • Correction des requêtes avec interpolation inutilisée dans le nouvel analyseur. #75173 (János Benjamin Antal).
  • Correction d’un bug de crash des CTE avec Insert. #75188 (Shichao Jin).
  • Correction de Keeper : évite l’écriture dans des changelogs corrompus lors du rollback des logs. #75197 (Antonio Andelic).
  • Utilisation de BFloat16 comme supertype lorsque cela est approprié. Ceci clôture : #74404. #75236 (Nikita Mikhaylov).
  • Correction de valeurs par défaut inattendues dans le résultat d’un JOIN avec any_join_distinct_right_table_keys et OR dans JOIN ON. #75262 (Vladimir Cherkasov).
  • Masquage des informations d’identification du moteur de table azureblobstorage. #75319 (Garrett Thomas).
  • Correction du comportement dans les cas où ClickHouse pouvait, à tort, effectuer un pushdown de filtre vers une base de données externe comme PostgreSQL, MySQL ou SQLite. Ceci clôture : #71423. #75320 (Nikita Mikhaylov).
  • Correction d’un crash dans le cache de schéma Protobuf pouvant survenir lors d’une sortie au format Protobuf et de la requête parallèle SYSTEM DROP FORMAT SCHEMA CACHE. #75357 (Pavel Kruglov).
  • Correction d’une possible erreur logique ou d’un problème de mémoire non initialisée lorsqu’un filtre de HAVING est poussé vers le bas avec des répliques parallèles. #75363 (Vladimir Cherkasov).
  • Masquage des informations sensibles pour les table functions icebergS3, icebergAzure et les moteurs de table. #75378 (Kseniia Sumarokova).
  • La fonction TRIM avec des caractères de trim vides calculés est désormais correctement gérée. Exemple : SELECT TRIM(LEADING concat('') FROM 'foo') (issue #69922). #75399 (Manish Gill).
  • Correction d’une situation de concurrence dans IOutputFormat. #75448 (Pavel Kruglov).
  • Correction d’une possible erreur Elements ... and ... of Nested data structure ... (Array columns) have different array sizes lorsque des sous-colonnes JSON de type Array sont utilisées dans un JOIN sur des Distributed tables. #75512 (Pavel Kruglov).
  • Corrige un calcul invalide de la taille du tampon de résultats. Résout #70031. #75548 (Konstantin Bogdanov).
  • Corrige l’interaction entre allow_feature_tier et le paramètre de compatibilité MergeTree. #75635 (Raúl Marín).
  • Corrige la valeur incorrecte de processed_rows dans system.s3queue_log lorsqu’un fichier a fait l’objet d’une nouvelle tentative. #75666 (Kseniia Sumarokova).
  • Respecte materialized_views_ignore_errors lorsqu’une vue matérialisée écrit dans un moteur URL et qu’un problème de connectivité survient. #75679 (Christoph Wurm).
  • Corrige de rares plantages lors de la lecture d’une table MergeTree après plusieurs requêtes RENAME asynchrones (avec alter_sync = 0) entre des colonnes de types différents. #75693 (Anton Popov).
  • Corrige l’erreur Block structure mismatch in QueryPipeline stream pour certaines requêtes avec UNION ALL. #75715 (Nikolai Kochetov).
  • Reconstruit la projection lors d’un alter modify de sa colonne de PK. Auparavant, cela pouvait entraîner des erreurs CANNOT_READ_ALL_DATA lors de selects après un alter modify de la colonne utilisée dans la PK de la projection. #75720 (Pavel Kruglov).
  • Corrige le résultat incorrect de ARRAY JOIN pour les sous-requêtes scalaires (avec l’analyseur). #75732 (Nikolai Kochetov).
  • Corrige un déréférencement de pointeur nul dans DistinctSortedStreamTransform. #75734 (Nikita Taranov).
  • Corrige le comportement de allow_suspicious_ttl_expressions. #75771 (Aleksei Filatov).
  • Corrige une lecture de mémoire non initialisée dans la fonction translate. Résout #75592. #75794 (Alexey Milovidov).
  • Propage les paramètres de format au formatage JSON sous forme de chaîne dans le format Native. #75832 (Pavel Kruglov).
  • Consigne dans l’historique des modifications des paramètres l’activation par défaut de parallel hash comme algorithme de jointure dans la v24.12. Cela signifie que ClickHouse continuera à effectuer les jointures avec un hash non parallèle si un niveau de compatibilité antérieur à la v24.12 est configuré. #75870 (Robert Schulze).
  • Corrige un bug qui empêchait de copier dans une nouvelle table des tables avec des index min-max ajoutés implicitement (problème #75677). #75877 (Smita Kulkarni).
  • clickhouse-library-bridge permet d’ouvrir des bibliothèques arbitraires depuis le système de fichiers, ce qui signifie qu’il ne peut être exécuté en toute sécurité que dans un environnement isolé. Pour éviter une vulnérabilité lorsqu’il est exécuté à proximité de clickhouse-server, nous limiterons les chemins des bibliothèques à un emplacement défini dans la configuration. Cette vulnérabilité a été découverte dans le cadre du programme ClickHouse Bug Bounty par Arseniy Dugin. #75954 (Alexey Milovidov).
  • Nous avons, par inadvertance, utilisé la sérialisation JSON pour certaines métadonnées, ce qui était une erreur, car JSON ne prend pas en charge les données binaires dans les littéraux de chaîne, y compris les octets nuls. Les requêtes SQL peuvent contenir des données binaires et de l’UTF-8 invalide ; nous devons donc également les prendre en charge dans nos fichiers de métadonnées. Dans le même temps, JSONEachRow de ClickHouse et des formats similaires contournent ce problème en s’écartant de la norme JSON afin de garantir un aller-retour parfait pour les données binaires. Voir les motivations ici : https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. La solution consiste à rendre la bibliothèque Poco::JSON cohérente avec la sérialisation au format JSON dans ClickHouse. Cela clôt #73668. #75963 (Alexey Milovidov).
  • Correction de Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED) pendant DETACH PART. #76039 (Aleksei Filatov).
  • Correction de la vérification des limites de commit dans le moteur de stockage S3Queue. #76104 (Kseniia Sumarokova).
  • Correction de l’attachement des tables MergeTree avec des index automatiques (add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns). #76139 (Azat Khuzhin).
  • Correction d’un problème où les stack traces des threads parents d’un job (paramètre enable_job_stack_trace) n’étaient pas affichées. Correction également d’un problème où le paramètre enable_job_stack_trace n’était pas correctement propagé aux threads, de sorte que le contenu des stack traces ne respectait pas toujours ce paramètre. #76191 (Yakov Olkhovskiy).
  • Correction de reinterpretAs avec FixedString sur les architectures big-endian. #76253 (Azat Khuzhin).
  • Correction de divers bugs dus à une condition de concurrence entre les UUID et les noms de tables (par exemple, cela corrige la concurrence entre RENAME et RESTART REPLICA : en cas de RENAME concurrent avec SYSTEM RESTART REPLICA, vous pouvez redémarrer la mauvaise réplique et/ou laisser l’une des tables dans l’état Table X is being restarted). #76308 (Azat Khuzhin).
  • Suppression de l’allocation dans le gestionnaire de signaux. #76446 (Nikita Taranov).
  • Correction de la gestion du redimensionnement dynamique du cache du système de fichiers, qui provoquait des erreurs inattendues lors de l’éviction. #76466 (Kseniia Sumarokova).
  • Correction de l’initialisation de used_flag dans le hash parallèle. Cela pouvait provoquer un crash du serveur. #76580 (Nikita Taranov).
  • Correction d’une erreur logique lors de l’appel de la fonction defaultProfiles() dans une projection. #76627 (pufit).
  • Ne demandez pas d’authentification Basic interactive dans le navigateur via la Web UI. Clôt #76319. #76637 (Alexey Milovidov).
  • Corrige l’exception THERE_IS_NO_COLUMN lors de la sélection d’un littéral booléen depuis des tables Distributed. #76656 (Yakov Olkhovskiy).
  • Le sous-chemin à l’intérieur du répertoire de la table est désormais choisi de manière plus pertinente. #76681 (Daniil Ivanik).
  • Corrige une erreur Not found column in block après la modification d’une table avec une sous-colonne dans la PK. Après https://github.com/ClickHouse/ClickHouse/pull/72644, nécessite https://github.com/ClickHouse/ClickHouse/pull/74403. #76686 (Nikolai Kochetov).
  • Ajoute des tests de performance pour les courts-circuits sur les valeurs nulles et corrige des bugs. #76708 (李扬).
  • Vide les tampons d’écriture de sortie avant leur finalisation. Corrige LOGICAL_ERROR générée lors de la finalisation de certains formats de sortie, par exemple JSONEachRowWithProgressRowOutputFormat. #76726 (Antonio Andelic).
  • Ajout de la prise en charge des UUID binaires de MongoDB (#74452) - Correction du pushdown de WHERE vers MongoDB lors de l’utilisation de la table function (#72210) - Modification du type mapping MongoDB - ClickHouse afin que l’UUID binaire de MongoDB ne puisse être analysé que comme UUID ClickHouse. Cela devrait éviter toute ambiguïté et surprise à l’avenir. - Correction du mapping OID, tout en préservant la backward compatibility. #76762 (Kirill Nikiforov).
  • Corrige la gestion des exceptions lors de la désérialisation en parallèle des préfixes des JSON subcolumns. #76809 (Pavel Kruglov).
  • Corrige le comportement de la fonction lgamma pour les entiers négatifs. #76840 (Ilya Kataev).
  • Corrige l’analyse des clés inversées pour les clés primaires définies explicitement. Semblable à #76654. #76846 (Amos Bird).
  • Corrige l’affichage Pretty des valeurs Bool au format JSON. #76905 (Pavel Kruglov).
  • Corrige un crash possible dû à un mauvais rollback d’une JSON column en cas d’erreur pendant les async inserts. #76908 (Pavel Kruglov).
  • Auparavant, multi_if pouvait renvoyer différents types de colonnes pendant la planification et l’exécution principale. Cela entraînait la génération d’un code au comportement indéfini du point de vue du C++. #76914 (Nikita Taranov).
  • Corrige une sérialisation incorrecte de clés Nullable constantes dans MergeTree. Cela corrige #76939. #76985 (Amos Bird).
  • Corrige le tri des valeurs BFloat16. Cela clôt #75487. Cela clôt #75669. #77000 (Alexey Milovidov).
  • Corrige un bug avec JSON et une sous-colonne Variant en ajoutant une vérification pour ignorer les sous-colonnes ephemeral lors du contrôle de cohérence des parts. #72187. #77034 (Smita Kulkarni).
  • Corrige un crash lors de l’analyse d’un template au format Values en cas d’incompatibilité de types. #77071 (Pavel Kruglov).
  • N’autorise pas la création d’une table EmbeddedRocksDB avec une sous-colonne dans une clé primaire. Auparavant, une telle table pouvait être créée, mais les requêtes SELECT échouaient. #77074 (Pavel Kruglov).
  • Corrige une comparaison invalide dans les requêtes distribuées, car la descente de prédicats vers les nœuds distants ne respecte pas les types littéraux. #77093 (Duc Canh Le).
  • Corrige un crash lors de la création d’une table Kafka avec exception. #77121 (Pavel Kruglov).
  • Prend en charge le nouveau JSON et les sous-colonnes dans les moteurs Kafka et RabbitMQ. #77122 (Pavel Kruglov).
  • Corrige le désempilement de la pile des exceptions sur MacOS. #77126 (Eduard Karacharov).
  • Corrige la lecture de la sous-colonne ‘null’ dans la fonction getSubcolumn. #77163 (Pavel Kruglov).
  • Corrige les skip indexes non fonctionnels avec des expressions contenant des littéraux dans analyzer et supprime les transtypages triviaux lors de l’analyse des indexes. #77229 (Pavel Kruglov).
  • Corrige un index bloom filter avec Array et des fonctions non prises en charge. #77271 (Pavel Kruglov).
  • La restriction sur le nombre de tables ne doit être vérifiée que lors de la requête CREATE initiale. #77274 (Nikolay Degterinsky).
  • SELECT toBFloat16(-0.0) == toBFloat16(0.0) renvoie désormais correctement true (au lieu de false auparavant). Cela rend le comportement cohérent avec Float32 et Float64. #77290 (Shankar Iyer).
  • Corrige une possible référence incorrecte à la variable non initialisée key_index, susceptible d’entraîner un crash dans les builds de débogage (cette référence non initialisée ne devrait pas causer de problèmes dans les builds de release, car le code qui suit lèvera probablement des erreurs.) ### entrée de documentation pour les changements visibles par l’utilisateur. #77305 (wxybear).
  • Annulé. #77307 (Nikolai Kochetov).
  • Corrige le nom de partition pour une valeur Bool. Cela a été cassé dans https://github.com/ClickHouse/ClickHouse/pull/74533. #77319 (Pavel Kruglov).
  • Correction de la comparaison entre des tuples contenant des éléments Nullable et des chaînes. Par exemple, avant ce changement, la comparaison entre un Tuple (1, null) et une String '(1,null)' produisait une erreur. Un autre exemple est la comparaison entre un Tuple (1, a), où a est une colonne Nullable, et une String '(1, 2)'. Ce changement corrige ces problèmes. #77323 (Alexey Katsman).
  • Correction d’un crash dans ObjectStorageQueueSource. Avait été introduit dans https://github.com/ClickHouse/ClickHouse/pull/76358. #77325 (Pavel Kruglov).
  • Correction d’un bug où le query parameter close_session n’avait aucun effet, ce qui faisait que les sessions nommées n’étaient fermées qu’après session_timeout. #77336 (Alexey Katsman).
  • Correction de async_insert avec input(). #77340 (Azat Khuzhin).
  • Correction : WITH FILL peut échouer avec NOT_FOUND_COLUMN_IN_BLOCK lorsque le planificateur supprime la colonne de tri. Problème similaire lié à un DAG incohérent calculé pour l’expression INTERPOLATE. #77343 (Yakov Olkhovskiy).
  • Annulé. #77390 (Vladimir Cherkasov).
  • Correction de la réception des messages depuis le serveur nats sans MV attachée. #77392 (Dmitry Novikov).
  • Correction d’une logical error lors de la lecture depuis un FileLog vide via la table function merge, corrige #75575. #77441 (Vladimir Cherkasov).
  • Correction de plusieurs LOGICAL_ERROR liées à la définition d’un alias sur des nœuds AST invalides. #77445 (Raúl Marín).
  • Dans l’implémentation du filesystem cache, correction du traitement des erreurs pendant l’écriture d’un file segment. #77471 (Kseniia Sumarokova).
  • DatabaseIceberg utilise désormais le bon fichier de metadata fourni par le catalog. Corrige #75187. #77486 (Kseniia Sumarokova).
  • Utilisation des paramètres de format par défaut dans la serialization de Dynamic à partir d’un variant partagé. #77572 (Pavel Kruglov).
  • Annulation de ‘Avoid toAST() in execution of scalar subqueries’. #77584 (Raúl Marín).
  • Correction de la vérification de l’existence du data path de la table sur le disk local. #77608 (Tuan Pham Anh).
  • Le query cache considère désormais les UDFs comme non deterministic. Par conséquent, les résultats des queries contenant des UDFs ne sont plus mis en cache. Auparavant, les utilisateurs pouvaient définir des UDFs non deterministic dont le résultat était mis en cache par erreur (issue #77553). #77633 (Jimmy Aguilar Mena).
  • Correction de l’envoi de valeurs constantes vers une cible distante pour certains types. #77634 (Pavel Kruglov).
  • Correction de system.filesystem&#95;cache&#95;log, qui ne fonctionnait qu’avec le paramètre enable_filesystem_cache_log. #77650 (Kseniia Sumarokova).
  • Correction d’une erreur logique lors de l’appel de la fonction defaultRoles() à l’intérieur d’une projection. Suite de #76627. #77667 (pufit).
  • Correction d’un plantage dû à un contexte expiré dans StorageS3(Azure)Queue. #77720 (Kseniia Sumarokova).
  • Les deuxièmes arguments de type Nullable pour la fonction arrayResize sont désormais interdits. Auparavant, l’utilisation de Nullable comme deuxième argument pouvait provoquer divers problèmes, allant d’erreurs à des résultats incorrects. (issue #48398). #77724 (Manish Gill).
  • Masquage des identifiants dans les moteurs de table RabbitMQ, Nats, Redis et AzureQueue. #77755 (Kseniia Sumarokova).
  • Correction d’un comportement indéfini lors de la comparaison de NaN dans ArgMin/ArgMax. #77756 (Raúl Marín).
  • Vérification régulière que les fusions et les mutations ont bien été annulées, même lorsque l’opération ne produit aucun bloc à écrire. #77766 (János Benjamin Antal).
  • Annulé. #77843 (Vladimir Cherkasov).
  • Correction d’un plantage possible lorsque l’erreur NOT_FOUND_COLUMN_IN_BLOCK se produit. #77854 (Vladimir Cherkasov).
  • Correction d’un plantage survenant dans StorageSystemObjectStorageQueueSettings lors du remplissage des données. #77878 (Bharat Nallan).
  • Désactivation de la recherche approximative pour l’historique sur le serveur SSH (car elle nécessite skim). #78002 (Azat Khuzhin).
  • Correction d’un bug où une requête de recherche vectorielle sur une colonne non indexée renvoyait des résultats incorrects si une autre colonne vectorielle de la table avait un index de similarité vectorielle défini. (Issue #77978). #78069 (Shankar Iyer).
  • Correction de l’invite The requested output format {} is binary... Do you want to output it anyway? [y/N]. #78095 (Azat Khuzhin).
  • Correction d’un bug avec toStartOfInterval lorsque l’argument d’origine vaut zéro. #78096 (Yarik Briukhovetskyi).
  • Interdiction de spécifier un paramètre de requête session_id vide pour l’interface HTTP. #78098 (Alexey Katsman).
  • Corrige l’écrasement des métadonnées dans Database Replicated, qui pouvait se produire à la suite d’une requête RENAME exécutée juste après une requête ALTER. #78107 (Nikolay Degterinsky).
  • Corrige un crash dans le moteur NATS. #78108 (Dmitry Novikov).
  • N’essaie pas de créer un history_file dans un client SSH intégré. #78112 (Azat Khuzhin).
  • Corrige system.detached_tables, qui affichait des informations incorrectes après des requêtes RENAME DATABASE ou DROP TABLE. #78126 (Nikolay Degterinsky).
  • Corrige les vérifications liées à un trop grand nombre de tables avec Database Replicated après https://github.com/ClickHouse/ClickHouse/pull/77274. Effectue également cette vérification avant de créer le stockage afin d’éviter la création de nœuds non comptabilisés dans ZooKeeper dans le cas de RMT ou KeeperMap. #78127 (Nikolay Degterinsky).
  • Corrige un crash possible dû à l’initialisation concurrente des métadonnées S3Queue. #78131 (Azat Khuzhin).
  • Les fonctions groupArray* produisent désormais une erreur BAD_ARGUMENTS pour la valeur 0 de type Int de l’argument max_size, comme c’est déjà le cas pour UInt, au lieu d’essayer de s’exécuter avec cette valeur. #78140 (Eduard Karacharov).
  • Empêche un crash dans recoverLostReplica si la table locale est supprimée avant d’être détachée. #78173 (Raúl Marín).
  • Corrige la colonne “alterable” dans system.s3_queue_settings, qui renvoyait toujours false. #78187 (Kseniia Sumarokova).
  • Masque la signature d’accès Azure afin qu’elle ne soit visible ni par l’utilisateur ni dans les logs. #78189 (Kseniia Sumarokova).
  • Corrige le préchargement des sous-flux avec préfixes dans les Wide parts. #78205 (Pavel Kruglov).
  • Corrige des crashes / résultats incorrects pour mapFromArrays dans le cas d’un tableau de clés de type LowCardinality(Nullable). #78240 (Eduard Karacharov).
  • Corrige les options d’authentification de delta-kernel. #78255 (Kseniia Sumarokova).
  • Ne planifie pas de tâche RefreshMV si disable_insertion_and_mutation d’une replica est à true. Une tâche correspond à une insertion ; elle échouera si disable_insertion_and_mutation est à true. #78277 (Xu Jia).
  • Valide l’accès aux tables sous-jacentes pour le moteur Merge. #78339 (Pervakov Grigorii).
  • Le modificateur FINAL peut être perdu pour une table du moteur Distributed. #78428 (Yakov Olkhovskiy).
  • Bitmapmin renvoie uint32_max lorsque le bitmap est empty(uint64_max when input type >= 8bits), ce qui correspond au comportement de minimum() sur un roaring_bitmap vide. #78444 (wxybear).
  • Annule “Apply preserve_most attribute at some places in code”, car cela peut entraîner des crashs. #78449 (Azat Khuzhin).
  • Utilise les colonnes d’insertion pour l’inférence de schéma de INFILE. #78490 (Pervakov Grigorii).
  • Désactive le parallélisme du traitement des requêtes juste après la lecture de FROM lorsque distributed_aggregation_memory_efficient est activé, car cela peut entraîner une erreur logique. Résout #76934. #78500 (flynn).
  • Définit au moins un flux pour la lecture lorsqu’aucun flux n’est planifié après l’application du paramètre max_streams_to_max_threads_ratio. #78505 (Eduard Karacharov).
  • Dans le moteur de stockage S3Queue, corrige l’erreur logique “Cannot unregister: table uuid is not registered”. Résout #78285. #78541 (Kseniia Sumarokova).
  • ClickHouse est désormais capable de détecter son cgroup v2 sur les systèmes où les cgroups v1 et v2 sont tous deux activés. #78566 (Grigory Korolev).
  • Les table functions de cluster ObjectStorage échouaient lorsqu’elles étaient utilisées avec des paramètres au niveau de la table. #78587 (Daniil Ivanik).
  • Améliore les vérifications indiquant que les transactions ne sont pas prises en charge par ReplicatedMergeTree pour les INSERT. #78633 (Azat Khuzhin).
  • Applique les paramètres de requête lors de l’opération Attach. #78637 (Raúl Marín).
  • Corrige un crash lorsqu’un chemin non valide est spécifié dans iceberg_metadata_file_path. #78688 (alesapin).
  • Dans le DeltaLake table engine avec l’implémentation delta-kernel, corrige le cas où le schéma lu diffère du schéma de la table alors que des colonnes de partition sont également présentes, ce qui entraîne une erreur de colonne introuvable. #78690 (Kseniia Sumarokova).
  • Cette mise à jour corrige un bug où une nouvelle session nommée se fermait involontairement à l’heure planifiée d’une session précédente si les deux sessions partageaient le même nom et que la nouvelle avait été créée avant l’expiration du délai d’attente de l’ancienne. #78698 (Alexey Katsman).
  • Ne bloque pas l’arrêt de la table pendant l’exécution de CHECK TABLE. #78782 (Raúl Marín).
  • Correctif Keeper : corrige le nombre de nœuds éphémères dans tous les cas. #78799 (Antonio Andelic).
  • Corrige une conversion de type erronée dans StorageDistributed lors de l’utilisation de fonctions de table autres que view(). Clôt #78464. #78828 (Konstantin Bogdanov).
  • Corrige le formatage de tupleElement(*, 1). Clôt #78639. #78832 (Konstantin Bogdanov).
  • Les Dictionaries de type ssd_cache rejettent désormais les paramètres block_size et write_buffer_size nuls ou négatifs (ticket #78314). #78854 (Elmi Ahmadov).
  • Corrige un crash dans REFRESHABLE MV en cas d’ALTER après un arrêt anormal. #78858 (Azat Khuzhin).
  • Corrige l’analyse de valeurs DateTime invalides au format CSV. #78919 (Pavel Kruglov).

Amélioration du build, des tests et du packaging

  • La dépendance interne LLVM passe de 16 à 18. #66053 (Nikita Mikhaylov).
  • Restauration des tests d’intégration NATS supprimés et correction d’erreurs. - correction de certaines race conditions dans le NATS engine - correction de pertes de données lors du streaming de données vers NATS en cas de perte de connexion - correction du blocage lors de la réception du dernier fragment de données à la fin du streaming depuis NATS - nats_max_reconnect est obsolète et n’a aucun effet ; la reconnexion s’effectue désormais en continu avec le timeout nats_reconnect_wait. #69772 (Dmitry Novikov).
  • Correction du problème empêchant la génération des fichiers asm de contrib openssl. #72622 (RinChanNOW).
  • Amélioration de la stabilité du test 03210_variant_with_aggregate_function_type. #74012 (Anton Ivashkin).
  • Prise en charge de la compilation de HDFS sur Mac ARM et Intel. #74244 (Yan Xin).
  • Le script d’installation universel proposera l’installation même sur macOS. #74339 (Alexey Milovidov).
  • Correction de la compilation lorsque kerberos n’est pas activé. #74771 (flynn).
  • Mise à jour vers LLVM 19 embarqué. #75148 (Konstantin Bogdanov).
  • Potentiellement incompatible : amélioration visant à rendre les valeurs par défaut encore plus restrictives. Les valeurs par défaut actuelles sont déjà sûres. L’utilisateur doit spécifier une option pour publier explicitement les ports. Mais lorsque l’utilisateur default n’a pas de mot de passe défini via les variables d’environnement CLICKHOUSE_PASSWORD et/ou de nom d’utilisateur modifié via CLICKHOUSE_USER, il ne doit être accessible que depuis le système local, comme niveau de protection supplémentaire. #75259 (Mikhail f. Shiryaev).
  • Les tests d’intégration ont un timeout d’une heure pour un lot unique de tests parallèles en cours d’exécution. Lorsque ce timeout est atteint, pytest est interrompu sans certains logs. Le timeout interne de pytest est défini à 55 minutes afin d’afficher les résultats d’une session et de ne pas déclencher le signal de timeout externe. Clôt #75532. #75533 (Ilya Yatsishin).
  • Transformer toutes les actions liées à clickhouse-server en fonction, et ne les exécuter qu’au lancement du binaire par défaut dans entrypoint.sh. Une amélioration attendue depuis longtemps avait été suggérée dans #50724. Ajout de l’option --users à clickhouse-extract-from-config pour récupérer les values depuis users.xml. #75643 (Mikhail f. Shiryaev).
  • Pour les tests de stress, si le server ne s’est pas arrêté pendant la collecte de stacktraces via gdb, un délai d’attente supplémentaire est ajouté afin de rendre la détection de Possible deadlock on shutdown (see gdb.log) moins bruyante. Ce délai n’est ajouté que lorsque le test ne s’est pas terminé avec succès. #75668 (Ilya Yatsishin).
  • Restaure les tests d’intégration nats supprimés et corrige des erreurs. - correction de certaines conditions de concurrence dans le moteur nats - correction de pertes de données lors du streaming de données vers nats en cas de perte de connexion - correction du blocage lors de la réception du dernier fragment de données à la fin du streaming depuis nats - nats_max_reconnect est obsolète et n’a aucun effet ; la reconnexion est désormais effectuée en permanence avec le délai d’attente nats_reconnect_wait. #75850 (Dmitry Novikov).
  • Active ICU et GRPC lors de la compilation croisée pour Darwin. #75922 (Raúl Marín).
  • Corrige le découpage de la sortie du test causé par sleep lors de l’arrêt du groupe de processus. #76090 (Mikhail f. Shiryaev).
  • Ne collecte plus les logs docker-compose à la fin de l’exécution, car le script est souvent arrêté de force. Les collecte à la place en arrière-plan. #76140 (Mikhail f. Shiryaev).
  • Répartit les tests du stockage Kafka dans plusieurs fichiers. Corrige #69452. #76208 (Mikhail f. Shiryaev).
  • clickhouse-odbc-bridge et clickhouse-library-bridge sont déplacés vers un repository distinct, https://github.com/ClickHouse/odbc-bridge/. #76225 (Alexey Milovidov).
  • Supprime environ 20 Mo de code mort du binaire. #76226 (Alexey Milovidov).
  • Relève la version minimale requise de CMake à 3.25 en raison de l’introduction de block(). #76316 (Konstantin Bogdanov).
  • Met à jour fmt vers la version 11.1.3. #76547 (Raúl Marín).
  • Met à niveau lz4 vers 1.10.0. #76571 (Konstantin Bogdanov).
  • Met à niveau curl vers 8.12.1. #76572 (Konstantin Bogdanov).
  • Met à niveau libcpuid vers 0.7.1. #76573 (Konstantin Bogdanov).
  • Utilise un format lisible par machine pour analyser les résultats de pytest. #76910 (Mikhail f. Shiryaev).
  • Corrige la compilation croisée de Rust et permet de désactiver complètement Rust. #76921 (Raúl Marín).
  • Exige clang 19 pour compiler le projet. #76945 (Raúl Marín).
  • Le test s’exécute pendant plus de 10 secondes en mode série. C’est trop long pour les tests rapides. #76948 (Mikhail f. Shiryaev).
  • Mise à niveau de sccache vers 0.10.0. #77580 (Konstantin Bogdanov).
  • Prise en compte des fonctionnalités cibles du CPU en Rust et activation de la LTO dans toutes les crates. #78590 (Raúl Marín).
  • Mise à niveau de minizip-ng vers 4.0.9. #78917 (Konstantin Bogdanov).
Dernière modification le 29 juin 2026