Changement rétro-incompatible
- La fonction
geoToH3()accepte désormais l’entrée dans l’ordre (lat, lon,res) (qui est l’ordre standard des fonctions géométriques). Les utilisateurs qui souhaitent conserver l’ancien ordre des résultats (lon, lat,res) peuvent définir le paramètregeotoh3_lon_lat_input_order = true. #78852 (Pratima Patel). - Les index de type
full_textont été renommés engin. Cela s’aligne sur la terminologie plus familière de PostgreSQL et d’autres bases de données. Les index existants de typefull_textpeuvent toujours être chargés, mais ils lèveront une exception (en suggérant d’utiliser des indexginà la place) si l’on tente de les utiliser dans des recherches. #79024 (Robert Schulze). - Ajout du paramètre de cache du système de fichiers
allow_dynamic_cache_resize, défini surfalsepar défaut, pour autoriser le redimensionnement dynamique du cache du système de fichiers. Pourquoi : dans certains environnements (ClickHouse Cloud), tous les événements de mise à l’échelle se produisent via le redémarrage du processus, et nous souhaitons que cette fonctionnalité soit explicitement désactivée afin de mieux contrôler le comportement et par mesure de sécurité. Cette PR est marquée comme rétro-incompatible, car dans les anciennes versions, le redimensionnement dynamique du cache fonctionnait par défaut sans paramètre spécifique. #79148 (Kseniia Sumarokova). - Suppression de la prise en charge des anciens types d’index
annoyetusearch. Les deux ne sont plus que des stubs depuis longtemps, c.-à-d. que toute tentative d’utiliser ces anciens index renvoyait de toute façon une erreur. Si vous avez encore des indexannoyetusearch, veuillez les supprimer. #79802 (Robert Schulze). #* Suppression du paramètre serveurformat_alter_commands_with_parentheses. Ce paramètre a été introduit et désactivé par défaut dans la version 24.2. Il a été activé par défaut dans la version 25.2. Comme il n’existe pas de versions LTS qui ne prennent pas en charge le nouveau format, nous pouvons supprimer ce paramètre. #79970 (János Benjamin Antal). #* Mineur : forcer les paramètres serveur backup_threads et restore_threads à être non nuls. #80224 (Raúl Marín). - Correction de bitNot() pour String afin de renvoyer une chaîne terminée par un zéro. #80791 (Azat Khuzhin).
Nouvelle fonctionnalité
- Ajoute une nouvelle option à MergeTree
SETTINGSqui spécifie un codec de compression par défaut au cas où la requêteCREATEn’en définirait pas explicitement pour les colonnes concernées. Cela résout #42005. #66394 (gvoelfin). - Suite à https://github.com/ClickHouse/ClickHouse/pull/71943. Cette PR implémente les types de données
Time/Time64. Elle ajoute les nouveaux types de données Time (HHH:MM:SS) et Time64 (HHH:MM:SS.<fractional>), quelques fonctions de conversion de base ainsi que des fonctions permettant d’interagir avec d’autres types de données. Le nom de la fonction existantetoTimea également été remplacé partoTimeWithFixedDate, car la fonctiontoTimeest requise pour la fonction de conversion. #75735 (Yarik Briukhovetskyi). - Prend en charge les sous-requêtes corrélées comme argument de l’expression
EXISTSdans la clauseWHERE. Résout #72459. #76078 (Dmitry Novik). - Autorise l’écriture dans les moteurs de table Merge. #77484 (Anton Ivashkin).
- Le
INSERT SELECTDistributed pour les tables MergeTree répliquées utilise désormais efficacement les répliques parallèles pour paralléliser lesINSERT, en sélectionnant des données différentes sur différents nœuds et en les insérant indépendamment. #78041 (Igor Nikonov). - Ajoute les fonctions
mapContainsValuesLike/mapContainsValues/mapExtractValuesLikepour filtrer sur les valeurs de map, ainsi que leur prise en charge dans les index basés sur des filtres de Bloom. #78171 (UnamedRus). - Ajoute la table
system.iceberg_history. #78244 (Smita Kulkarni). - Ajout de l’ordonnancement des slots de requête pour les charges de travail, voir https://clickhouse.com/docs/operations/workload-scheduling#query_scheduling pour plus de détails. #78415 (Sergei Trifonov).
- Ajoute les fonctions
getServerSettingetgetMergeTreeSetting. Résout https://github.com/clickhouse/clickhouse/issues/78318. #78439 (NamNguyenHoai). - Prend en charge les valeurs non autorisées dans les contraintes sur les settings. #78499 (Bharat Nallan).
- Ajoute le nouveau setting
iceberg_enable_version_hintpour exploiter le fichierversion-hint.text. #78594 (Arnaud Briche). - Permet de tronquer des tables spécifiques d’une base de données, filtrées avec le mot-clé
LIKE. #78597 (Yarik Briukhovetskyi). clickhouse-local(et son alias abrégé,ch) utilisent désormais unFROM tableimplicite lorsqu’il y a des données d’entrée à traiter. Cela résout #65023. L’inférence du format a également été activée dans clickhouse-local si--input-formatn’est pas spécifié et qu’il traite un fichier ordinaire. #79085 (Alexey Milovidov).- Ajout des fonctions
icebergHasheticebergBucketTransform. Prise en charge de l’élagage des fichiers de données dans les tablesIcebergpartitionnées avecbucket transfom. #79262 (Daniil Ivanik). - Ajout de la prise en charge de Coalescing Merge Tree. Cela résout #78869. #79344 (Konstantin Vedernikov).
- Ajout des fonctions
stringBytesUniqetstringBytesEntropypour détecter des données potentiellement aléatoires ou chiffrées. #79350 (Sachin Kumar Singh). - Prise en charge de la colonne virtuelle
_part_starting_offsetdans les tables de la famille MergeTree. Cette colonne représente le nombre cumulatif de lignes de toutes les parts précédentes, calculé au moment de la requête à partir de la liste actuelle des parts. Les valeurs cumulatives sont conservées tout au long de l’exécution de la requête et restent valables même après l’élagage des parts. La logique interne associée a été remaniée pour prendre en charge ce comportement. #79417 (Amos Bird). - Ajout du paramètre
enable_shared_storage_snapshot_in_querypour permettre le partage du même snapshot de stockage entre toutes les sous-requêtes d’une même requête. Cela garantit des lectures cohérentes depuis la même table, même lorsque la table est référencée plusieurs fois dans une requête. #79471 (Amos Bird). - Prise en charge de l’écriture des colonnes JSON de CH vers Parquet et de la lecture directe des colonnes JSON de Parquet comme colonnes JSON de CH. #79649 (Nihal Z. Miaji).
- Intégration de
chdig, une interface TUI pour ClickHouse (de type top), dans ClickHouse. #79666 (Azat Khuzhin). - Ajout de la prise en charge de
MultiPolygonpourpointInPolygon. #79773 (Nihal Z. Miaji). - Prise en charge de GeoParquet. Cela résout #75317. #79777 (Konstantin Vedernikov).
- Ajout de la prise en charge de l’interrogation des tables DeltaLake montées sur le système de fichiers local via la fonction de table
deltaLakeLocal. #79781 (roykim98). - Ajout de la fonctionnalité d’encodage/décodage Base32. #79809 (Joanna Hulboj).
- La recherche vectorielle de ClickHouse prend désormais en charge à la fois le pre-filtering et le post-filtering, et fournit les paramètres associés pour un contrôle plus fin. (issue #78161). #79854 (Shankar Iyer).
- Prise en charge de fonctions permettant de lire le format WKB. Cela résout partiellement #43941. #80139 (Konstantin Vedernikov).
- Ajout du nouveau paramètre
cast_string_to_date_time_mode, qui permet de choisir le mode d’analyse de DateTime lors d’un cast depuis String. #80210 (Pavel Kruglov). - Ajout des fonctions d’encodage et de décodage
Bech32etBech32m(issue #40381). #80239 (George Larionov). - Prise en charge du paramètre
diskpour les moteurs de base de données Atomic et Ordinary, afin de spécifier le disque sur lequel stocker les fichiers de métadonnées des tables. #80546 (Tuan Pham Anh). - Prise en charge de fonctions permettant de décomposer et de comparer les parties MergeTree. #80573 (Mikhail Artemenko).
- Fonctions utilitaires
timeSeries*pour accélérer certains scénarios lors de l’utilisation de données de séries temporelles : - rééchantillonner les données sur une grille temporelle avec un timestamp de début, un timestamp de fin et un pas spécifiés - calculerdelta,rate,ideltaetiratede type PromQL. #80590 (Alexander Gololobov). - Autorise le filtrage des parties sélectionnées pour les requêtes en fonction du disque sur lequel elles résident. #80650 (tanner-bruce).
- Ajout d’une page d’accueil avec la liste des outils web intégrés. Elle s’ouvrira lorsqu’elle sera demandée par un user agent de type navigateur. #81129 (Alexey Milovidov).
- Autorise le filtrage des valeurs
NULLdansarrayFirst,arrayFirstIndex,arrayLast&arrayLastIndex. Corrige #81113. #81197 (Lennard Eijsackers).
Fonctionnalité expérimentale
- Catalogue Hive Metastore pour le data lake Iceberg. #77677 (Konstantin Vedernikov).
- Les paramètres explicites sont pris en charge via des paires clé-valeur. Actuellement, les paramètres pris en charge sont
tokenizer, qui est obligatoire, ainsi quemax_rows_per_postings_listetngram_size, qui sont optionnels. #80262 (Elmi Ahmadov). - Les index expérimentaux de type
ginont été renommés entext. Les index existants de typeginpeuvent toujours être chargés, mais ils lèveront une exception (suggérant d’utiliser des indextextà la place) lorsqu’on tentera de les utiliser pour des recherches. #80855 (Robert Schulze).
Amélioration des performances
- Accélère les index secondaires en évaluant leurs expressions sur plusieurs granules à la fois. #64109 (Alexey Milovidov).
- Introduction d’un seuil (contrôlé par le paramètre
parallel_hash_join_threshold) pour revenir à l’algorithmehashlorsque la taille de la table de droite est inférieure à ce seuil. #76185 (Nikita Taranov). - L’implémentation existante de
Pipe::resizecrée un seul nœudResizeouStrictResizeen l’insérant dans la topologie du pipeline, puis agit comme un hub central reliant tous les flux d’entrée (nœuds en amont) à un ensemble unifié de flux de sortie (nœuds en aval). Cette conception entraîne une contention surExecutingGraph::Node::status_mutexlors de l’exécution du graphe du pipeline, en particulier dans les environnements avec un grand nombre de cœurs. Lorsque les pipelines atteignent des dizaines ou des centaines de flux, cette contention entraîne :. #77562 (Zhiguo Zhou). - Améliore les performances de
S3Queue/AzureQueueen permettant d’effectuer lesINSERTde données en parallèle (activation possible avec le paramètre de queueparallel_inserts=true). Auparavant,S3Queue/AzureQueuene pouvaient paralléliser que la première partie du pipeline (téléchargement, parsing),INSERTrestant mono-thread. LesINSERTconstituent presque toujours le goulot d’étranglement. Désormais, les performances évoluent de façon presque linéaire avecprocessing_threads_num. #77671 (Azat Khuzhin). - Modifie le format des compact parts pour enregistrer des marks pour chaque substream, afin de pouvoir lire des sub-columns individuelles. L’ancien format compact reste pris en charge pour les reads et peut être activé pour les writes à l’aide du MergeTree setting
write_marks_for_substreams_in_compact_parts. Il est désactivé par défaut pour des Upgrades plus sûres, car il modifie le stockage des compact parts. Il sera activé par défaut dans l’une des prochaines releases. #77940 (Pavel Kruglov). - Introduction du nouveau paramètre
use_skip_indexes_in_final_exact_mode. Si une query sur une tableReplacingMergeTreecontient la clauseFINAL, le fait de ne lire que les ranges de table en se basant sur les skip indexes peut produire un résultat incorrect. Ce paramètre permet de garantir des résultats corrects en analysant les parts les plus récentes qui chevauchent les ranges de primary key renvoyés par le skip index. Définissez 0 pour désactiver et 1 pour activer. #78350 (Shankar Iyer). - Nous utilisons désormais le nombre de répliques pour déterminer la taille des tâches de lecture lorsque les parallel replicas sont activées. Cela permet une meilleure répartition du travail entre les répliques lorsque la quantité de données à lire n’est pas très importante. #78695 (Nikita Taranov).
- Autorise la fusion en parallèle des états
uniqExactlors de l’étape finale de l’aggregation distribuée. #78703 (Nikita Taranov). - Corrige une possible dégradation des performances lors de la fusion en parallèle des états
uniqExactpour l’aggregation avec key. #78724 (Nikita Taranov). #* Remplace les queriesDELETE FROM ... WHERE 1parTRUNCATE. (Annulé). #78739 (Konstantin Vedernikov). - Réduit le nombre d’appels à l’API List Blobs vers le stockage Azure. #78860 (Julia Kartseva).
- Fusionne les conditions d’égalité de l’étape de query plan du filtre dans la condition
JOIN, lorsque c’est possible, afin de permettre leur utilisation comme clés de hash table. #78877 (Dmitry Novik). - Améliore les performances de l’analyse des chemins Hive en utilisant
extractKeyValuePairsau lieu des expressions régulières. #79067 (Arthur Passos). - Corrige les performances de
INSERT SELECTdistribué avec des répliques parallèles. #79441 (Azat Khuzhin). - Autorise le déplacement vers
PREWHEREdes conditions avec des sous-colonnes. #79489 (Pavel Kruglov). - Améliore les performances de tous les types de bloom filter. #79800 (Delyan Kratunov).
- Empêche
LogSeriesLimiterd’effectuer un nettoyage à chaque construction, évitant ainsi la contention sur les verrous et les régressions de performances dans les scénarios de forte concurrence. #79864 (filimonov). - Active
compile_expressions(compilateur JIT pour des fragments d’expressions ordinaires) par défaut. Cela clôt #51264, #56386 et #66486. #79907 (Alexey Milovidov). - Accélère les requêtes grâce à une optimisation des comptages triviaux. #79945 (Raúl Marín).
- Introduit un chemin optimisé dans
UniqExactSet::mergelorsque l’un des ensembles est vide. Désormais, si l’ensemble de gauche est à deux niveaux et celui de droite à un seul niveau, nous n’effectuons plus la conversion de celui de droite en deux niveaux. #79971 (Nikita Taranov). - Ajoute
__attribute__((always_inline))àconvertDecimalsImpl. #79999 (Konstantin Bogdanov). - Définit
input_format_parquet_bloom_filter_push_downsur true par défaut. Corrige également une erreur dans l’historique des modifications des paramètres. #80058 (Alexey Milovidov). #* Active la journalisation asynchrone par défaut. Vous pouvez la désactiver en définissant<async>false</async>sous<logger>. #80125 (Raúl Marín). - Améliore l’efficacité de la réutilisation de la mémoire et réduit les défauts de page lors de l’utilisation des tables de hachage à deux niveaux. #80245 (Jiebin Sun).
- Évite une mise à jour inutile et réduit la contention sur les verrous dans QueryConditionCache. #80247 (Jiebin Sun).
- Petite optimisation de
concatenateBlocks, qui peut être bénéfique pour la jointure par hachage parallèle. #80328 (李扬). - Lors de la sélection des plages de marques à partir de la plage de clé primaire, la recherche binaire ne peut pas être utilisée si la clé primaire est encapsulée dans des fonctions. Cette PR atténue cette limitation : la recherche binaire peut toujours être appliquée lorsque la clé primaire est encapsulée dans une chaîne de fonctions toujours monotones, ou lorsque la RPN contient un élément qui est toujours true. Cette PR clôt #45536. #80597 (zoomxi).
- Améliore la rapidité d’arrêt du moteur Kafka (suppression d’un délai supplémentaire de 3 secondes en présence de plusieurs tables Kafka). #80796 (Azat Khuzhin).
- Réduit la consommation mémoire des insertions asynchrones et améliore les performances des requêtes d’insertion. #80972 (Raúl Marín).
- N’effectue pas le profilage des processeurs si la table de log est désactivée. #81256 (Raúl Marín).
- Accélère
toFixedStringlorsque la source est déjà exactement celle demandée. #81257 (Raúl Marín). - Ne traite pas les valeurs de quota si l’utilisateur n’est soumis à aucune limite. #81549 (Raúl Marín).
- Passe ProcfsMetricsProvider en thread_local afin de conserver les fichiers ouverts entre les tâches. #81576 (Raúl Marín).
- Corrige une régression de performances du suivi mémoire. #81694 (Michael Kolupaev).
Amélioration
clickhouse-local conservera ses bases de données après redémarrage si vous spécifiez l’argument de ligne de commande --path. Cela résout le problème #50647. Cela résout le problème #49947. #71722 (Alexey Milovidov).
EXPLAIN SYNTAXutilise désormais un nouvel analyseur. Il renvoie un arbre syntaxique abstrait (AST) construit à partir de l’arbre de requête. Ajout de l’optionquery_tree_passespour contrôler le nombre de passes à exécuter avant de convertir l’arbre de requête en AST. #74536 (Vladimir Cherkasov). #* Utilisation par défaut de la politique de cache SLRU dans le cache du système de fichiers. #75072 (Kseniia Sumarokova).- Refactorisation de la logique de propagation vers les vues. #77309 (Sema Checherinda).
- Les fonctions de table de cluster pour le stockage objet (par ex.
s3Cluster) attribuent désormais les fichiers aux répliques pour la lecture en fonction d’un hachage cohérent afin d’améliorer la localité du cache. #77326 (Andrej Hoos). - Actualisation des identifiants S3 après l’erreur
AuthenticationRequired. #77353 (Vitaly Baranov). - Intégration de la configuration du proxy dans certains buffers HTTP à l’aide de constructeurs. #77693 (Arthur Passos).
- Ajout de métriques de dictionnaire à
system.asynchronous_metrics-DictionaryMaxUpdateDelay- Le délai maximal (en secondes) de mise à jour d’un dictionnaire. -DictionaryTotalFailedUpdates- Nombre d’erreurs depuis le dernier chargement réussi dans tous les dictionnaires. #78175 (Vlad). - Ajout des fonctions
divideOrNull,moduloOrNull,intDivOrNull,positiveModuloOrNullpour renvoyer NULL lorsque l’argument de droite vaut zéro. #78276 (kevinyhzou). - Extension de la fonction
isIPAddressInRangeaux types de données String, IPv4, IPv6, Nullable(String), Nullable(IPv4) et Nullable(IPv6). #78364 (YjyJeff). - Modification dynamique des paramètres du pooler de connexions du moteur PostgreSQL. #78414 (Samay Sharma).
- Possibilité de spécifier
_part_offsetdans une projection normale. Il s’agit de la première étape pour construire un index de projection. Cela peut être utilisé avec #58224 et contribuer à améliorer https://github.com/ClickHouse/ClickHouse/pull/63207. #78429 (Amos Bird). - Amélioration de l’optimisation de la clé de sharding pour les requêtes distribuées. #78452 (fhw12345).
- Ajout de nouvelles colonnes (
create_queryetsource) àsystem.named_collections. Résout #78179. #78582 (MikhailBurdukov). - Ajout du champ
conditionà la table systèmesystem.query_condition_cache. Il stocke la condition en clair dont le hachage est utilisé comme clé dans le cache des conditions de requête. #78671 (Robert Schulze). - Implémentation d’une logique de rééquilibrage de type Kafka pour StorageKafka2 à l’aide de ClickHouse Keeper. Pour chaque réplique, nous prenons en charge deux types de verrous de partition : des verrous permanents et des verrous temporaires. La réplique essaie de conserver les verrous permanents aussi longtemps que possible. À un instant donné, elle ne détient pas plus de
all_topic_partitions / active_replicas_countverrous permanents (oùall_topic_partitionscorrespond au nombre total de partitions etactive_replicas_countau nombre de répliques actives) ; si ce nombre est dépassé, la réplique libère certaines partitions. Certaines partitions sont détenues temporairement par la réplique. Le nombre maximal de verrous temporaires sur une réplique varie dynamiquement afin de laisser aux autres répliques la possibilité de prendre certaines partitions sous forme de verrous permanents. Lors de la mise à jour des verrous temporaires, la réplique les libère tous puis tente d’en reprendre d’autres. #78726 (Daria Fomina). - Ajout de table settings pour la configuration SASL et les identifiants d’authentification du table engine
Kafka. Cela permet de configurer l’authentification SASL à Kafka et aux systèmes compatibles Kafka directement dans l’instructionCREATE TABLE, sans avoir à utiliser de fichiers de configuration ni de named collections. #78810 (Christoph Wurm). - Ajout d’un avertissement concernant les bases de données qui ont potentiellement été créées pour sauvegarder des tables corrompues. #78841 (János Benjamin Antal).
- Les index de similarité vectorielle peuvent désormais être créés sur des colonnes
BFloat16. #78850 (Robert Schulze). - Prise en charge des Unix timestamps avec partie fractionnaire dans l’analyse best-effort de DateTime64. #78908 (Pavel Kruglov).
- Dans l’implémentation delta-kernel du stockage DeltaLake, correction de
columnMappingMode.nameet ajout de tests pour l’évolution du schéma. #78921 (Kseniia Sumarokova). - Amélioration de l’insertion dans une colonne Variant au format Values grâce à une meilleure conversion des valeurs. #78923 (Pavel Kruglov).
- Ajout de la colonne virtuelle
_timedans le moteurS3Queue. #78926 (Anton Ivashkin). - La fonction
tokensa été étendue pour accepter un argument “tokenizer” supplémentaire, ainsi que d’autres arguments propres au tokenizer. #79001 (Elmi Ahmadov). - L’instruction
SHOW CLUSTERdéveloppe désormais les macros (le cas échéant) dans son argument. #79006 (arf42). - Les fonctions de hachage prennent désormais en charge les
NULLà l’intérieur desArray,TupleetMap. (issues #48365 et #48623). #79008 (Michael Kolupaev). - Prise en charge d’un refresh dans les tables MergeTree en lecture seule. #79033 (Alexey Milovidov). #* Mise à jour de cctz vers 2025a. #79043 (Raúl Marín).
- Les settings qui contrôlent l’abandon des connexions en cas de surcharge CPU peuvent désormais être rechargés à chaud. #79052 (Alexey Katsman).
- C’est mieux pour l’ergonomie. #79066 (Alexey Milovidov).
- Activer par défaut le query condition cache. #79080 (Alexey Milovidov). #* Rendre les tabs annulables dans la web UI. Cela clôt #71284. #79084 (Alexey Milovidov).
- Supprimer les settings pendant
recoverLostReplica, comme cela a été fait dans https://github.com/ClickHouse/ClickHouse/pull/78637. #79113 (Nikita Mikhaylov). - Ajouter les ProfileEvents ParquetReadRowGroups et ParquetPrunedRowGroups pour profiler l’élagage de l’index Parquet. #79180 (flynn).
- Ajouter le préfixe du Container aux data paths signalés dans system.tables pour les disks simples dans Azure blob storage, afin d’harmoniser le reporting avec S3 et GCP. #79241 (Julia Kartseva).
- Prendre en charge la modification d’une database ON CLUSTER. #79242 (Tuan Pham Anh).
- Ignorer explicitement les exécutions manquées de la collecte de statistiques pour QueryMetricLog, sinon le journal mettra beaucoup de temps à rattraper l’heure actuelle. #79257 (Mikhail Artemenko).
- Ajout de la possibilité d’appliquer les lightweight deletes à la volée (avec les settings
lightweight_deletes_sync = 0,apply_mutations_on_fly = 1. #79281 (Anton Popov). - Optimisation des mutations
ALTER ... DELETEpour les parts dans lesquelles toutes les rows doivent être supprimées. Désormais, dans de tels cas, une part vide est créée à la place de la part d’origine, sans exécuter de mutation. #79307 (Anton Popov). - Quelques petites optimisations de
CHColumnToArrowColumn. #79308 (Bharat Nallan). - Le paramètre
allow_archive_path_syntaxa été marqué comme Experimental par erreur. Ajouter un test pour empêcher que des settings expérimentaux soient activés par défaut. #79320 (Alexey Milovidov). - Les settings du page cache peuvent désormais être ajustés au niveau de chaque query. Cela est nécessaire pour expérimenter plus rapidement et permettre un réglage fin des queries à haut throughput et à faible latency. #79337 (Alexey Milovidov).
- Ne pas afficher d’indications numériques dans les Pretty formats pour les nombres qui ressemblent à la plupart des 64-bit hashes. Cela clôt #79334. #79338 (Alexey Milovidov).
- Si les données au format Pretty sont affichées dans le terminal et qu’un block suivant a les mêmes largeurs de column, il peut être fusionné avec le block précédent en déplaçant le curseur vers le haut. Cela clôt #79333. La fonctionnalité est contrôlée par le nouveau setting
output_format_pretty_glue_chunks. #79339 (Alexey Milovidov). - Les couleurs des graphiques dans les tableaux de bord avancés seront calculées à partir du hachage de la requête correspondante. Cela facilite la mémorisation et le repérage d’un graphique lors du défilement du tableau de bord. #79341 (Alexey Milovidov).
- Ajout d’une métrique asynchrone,
FilesystemCacheCapacity- capacité totale du système de fichiers virtuelcache. Cela est utile pour la surveillance globale de l’infrastructure. #79348 (Alexey Milovidov). - Optimisation de l’accès à system.parts (lecture de la taille des colonnes/index uniquement sur demande). #79352 (Azat Khuzhin).
- Sélection des champs importants pour la requête
'SHOW CLUSTER <name>'au lieu de tous les champs. #79368 (Tuan Pham Anh). - Possibilité de spécifier les paramètres de stockage pour
DatabaseCatalog. #79407 (Kseniia Sumarokova). - Prise en charge du stockage local dans delta kernel. #79416 (Kseniia Sumarokova).
- Ajout d’un paramètre au niveau de la requête pour activer delta-kernel-rs :
allow_experimental_delta_kernel_rs. #79418 (Kseniia Sumarokova). - Correction d’une possible boucle infinie lors de l’énumération des blobs depuis le stockage de blobs Azure/S3. #79425 (Alexander Gololobov).
- Désormais, ClickHouse accepte également les paramètres de requête sous la forme
param-<name>(tiret) en plus deparam_<name>(underscore). Cela résout #63093. #79429 (Engel Danila). #* Ajout du paramètre de cache du système de fichiersmax_size_ratio_to_total_space. #79460 (Kseniia Sumarokova). - Message d’avertissement détaillé concernant la réduction de bande passante lors de la copie de données d’un S3 local vers un S3 distant avec checksum activé. #79464 (VicoWu).
- Pour
clickhouse-benchmark, reconfiguration de l’optionreconnectafin qu’elle accepte 0, 1 ou N comme valeurs de reconnexion correspondantes. #79465 (Sachin Kumar Singh). - Ajout du paramètre
input_format_max_block_size_bytespour limiter, en octets, les blocs créés dans les formats d’entrée. Cela peut aider à éviter une utilisation élevée de la mémoire pendant l’import de données lorsque les lignes contiennent de grandes valeurs. #79495 (Pavel Kruglov). - Amélioration de la vitesse et de l’utilisation mémoire de sparseGrams. #79517 (Konstantin Vedernikov).
- Évite les copies supplémentaires du bloc lors de l’insertion dans une compact part lorsque c’est possible. #79536 (Pavel Kruglov).
- Activation par défaut de l’implémentation delta-kernel du stockage
DeltaLake. #79541 (Kseniia Sumarokova). - Si la lecture depuis une URL implique plusieurs redirections, le paramètre
enable_url_encodingest correctement appliqué à toutes les redirections de la chaîne. #79563 (Shankar Iyer). - Autorise
ALTER TABLE ... MOVE|REPLACE PARTITIONpour les tables situées sur différents disques plain_rewritable. #79566 (Julia Kartseva). - Prend en charge les sous-requêtes corrélées scalaires dans la clause
WHERE. Clôt #6697. #79600 (Dmitry Novik). - Auparavant, lorsque
input_format_parquet_max_block_size = 0, ClickHouse restait bloqué. Ce comportement est désormais corrigé. Clôt #79394. #79601 (abashkeev). - Ajoute le paramètre
throw_on_errorpour startup_scripts : lorsquethrow_on_errorest true, le serveur ne démarre pas tant que toutes les requêtes ne se sont pas terminées avec succès. Par défaut,throw_on_errorest false, ce qui préserve le comportement précédent. #79732 (Aleksandr Musorin). - L’index de similarité vectorielle est désormais également utilisé si le vecteur de référence est de type
Array(BFloat16). #79745 (Shankar Iyer). - Ajoute
last_error_message,last_error_traceetquery_idà la tablesystem.error_log. Ticket associé : #75816. #79836 (Andrei Tinikov). #* Active l’envoi des rapports de crash par défaut. Cela peut être désactivé dans le fichier de configuration du serveur. #79838 (Alexey Milovidov). - La table système
system.functionsaffiche désormais la version de ClickHouse dans laquelle les fonctions ont été introduites pour la première fois. #79839 (Robert Schulze). - Ajout du paramètre
access_control_improvements.enable_user_name_access_type. Ce paramètre permet d’activer ou de désactiver des grants précis pour les utilisateurs/rôles, introduits dans https://github.com/ClickHouse/ClickHouse/pull/72246. Vous pouvez envisager de désactiver ce paramètre si vous avez un cluster avec des répliques antérieures à la version 25.1. #79842 (pufit). - L’implémentation correcte de la méthode
ASTSelectWithUnionQuery::clone()prend désormais également en compte le champis_normalized. Cela pourrait aider pour #77569. #79909 (Nikita Mikhaylov). - Prend en charge les sous-requêtes corrélées dans la liste de projection dans les cas simples. #79925 (Dmitry Novik).
- Corrige le formatage incohérent de certaines requêtes avec l’opérateur
EXCEPT. Si le côté gauche de l’opérateur EXCEPT se termine par*, la requête formatée perd ses parenthèses et est ensuite analysée comme un*avec le modificateurEXCEPT. Ces requêtes sont détectées par le fuzzer et ont peu de chances de se produire en pratique. Clôt #79950. #79952 (Alexey Milovidov). - Permet d’ajouter
http_response_headersdans deshttp_handlersde tout type. #79975 (Andrey Zvonov). - Légère amélioration de l’analyse du type JSON grâce à l’utilisation du cache de l’ordre de désérialisation des variants. #79984 (Pavel Kruglov).
- Autorise le déplacement du prédicat
GLOBAL [NOT] INvers la clausePREWHERE, le cas échéant. #79996 (Eduard Karacharov). - Ajoute le paramètre
s3_slow_all_threads_after_network_error. #80035 (Vitaly Baranov). - Le niveau de logging des
partssélectionnées pour la fusion était incorrect (Information). Résout #80061. #80062 (Alexey Milovidov). - La fonction reverse prend désormais en charge le type de données Tuple. Résout #80053. #80083 (flynn).
- La valeur par défaut du paramètre
enble_url_encodingest désormais définie surFalse. #80088 (Shankar Iyer). - Ce petit correctif résout #75817 : il permet de récupérer les données
auxiliary_zookeepersdepuis la tablesystem.zookeeper. #80146 (Nikolay Govorov). - La recherche vectorielle utilisant l’index de similarité vectorielle est désormais en bêta (auparavant expérimentale). #80164 (Robert Schulze).
- Ajoute des métriques asynchrones sur les sockets TCP du serveur. Cela améliore l’observabilité. Résout #80187. #80188 (Alexey Milovidov).
- La fonction
tokensprend désormais en chargestringcomme tokenizer. #80195 (Robert Schulze). - Replicas parallèles : évite d’attendre des replicas lentes inutilisées si toutes les tâches de lecture ont déjà été attribuées à d’autres replicas. #80199 (Igor Nikonov).
- Prend en charge
anylast_respect_nullsetany_respect_nullsdanssimpleAggregateFunction. #80219 (Diskein). - Supprime l’appel inutile à
adjustCreateQueryForBackup()pour les bases de données répliquées. #80282 (Vitaly Baranov). #* Autorise des options supplémentaires (qui suivent--, comme-- --config.value='abc') dansclickhouse-localsans signe égal. Résout #80292. #80293 (Alexey Milovidov). - Met en évidence les métacaractères dans les requêtes
SHOW ... LIKE. Cela clôt #80275. #80297 (Alexey Milovidov). #* Rend les UDF SQL persistantes dansclickhouse-local. La fonction créée précédemment sera chargée au démarrage. Cela clôt #80085. #80300 (Alexey Milovidov). - Prend en charge la comparaison entre
TimeetTime64. #80327 (Yarik Briukhovetskyi). - Corrige la description dans le plan EXPLAIN pour une étape DISTINCT préliminaire. #80330 (UnamedRus).
- Autorise l’utilisation de collections nommées dans ODBC/JDBC. #80334 (Andrey Zvonov).
- Active la prise en charge du filtrage avec projections multiples, ce qui permet d’utiliser plus d’une projection pour le filtrage au niveau des parts. Cela répond à #55525. Il s’agit de la deuxième étape de l’implémentation de l’index de projection, après #78429. #80343 (Amos Bird).
- Ajoute des métriques sur le nombre de disques en lecture seule et défectueux. Journalise également un indicateur au démarrage de DiskLocalCheckThread. #80391 (VicoWu).
- Implémente la prise en charge du stockage
s3_plain_rewritableavec les projections. Dans les versions précédentes, les objets de métadonnées dans S3 faisant référence à des projections n’étaient pas mis à jour lors de leur déplacement. Clôt #70258. #80393 (Sav). - Les répliques parallèles utilisent un timeout de connexion distinct ; voir le paramètre
parallel_replicas_connect_timeout_ms. Auparavant, les paramètresconnect_timeout_with_failover_ms/connect_timeout_with_failover_secure_msétaient utilisés comme valeurs de timeout de connexion pour les requêtes sur répliques parallèles (1 seconde par défaut). #80421 (Igor Nikonov). - La commande
SYSTEM UNFREEZEn’essaiera pas de rechercher des parts sur les disques en lecture seule et en écriture unique. Cela clôt #80430. #80432 (Alexey Milovidov). - Modifie le niveau de log d’un message sur les parts fusionnées, de INFO à TRACE. #80476 (Hans Krutzer).
- Implémente une sérialisation aplatie pour Dynamic et JSON au format Native, qui permet de sérialiser/désérialiser les données Dynamic et JSON sans structures spéciales, comme la variante partagée pour Dynamic et les données partagées pour JSON. Cette sérialisation peut être activée en définissant
output_format_native_use_flattened_dynamic_and_json_serialization. Cette sérialisation peut être utilisée pour faciliter la prise en charge de Dynamic et JSON dans le protocole TCP par des clients écrits dans différents langages. #80499 (Pavel Kruglov). - Modifie le comportement par défaut du partition pruning pour les tables Iceberg. #80583 (Melvyn Peignon).
- Ajoute deux nouveaux ProfileEvents pour l’observability de l’algorithme de recherche d’index :
IndexBinarySearchAlgorithmetIndexGenericExclusionSearchAlgorithm. #80679 (Pablo Marcos). - Ne signalez pas dans les logs l’absence de prise en charge de
MADV_POPULATE_WRITEsur les anciens noyaux (afin d’éviter de polluer les logs). #80704 (Robert Schulze). - Ajout de la prise en charge de Date32 et DateTime64 dans TTL. #80710 (Andrey Zvonov).
- Ajuste les valeurs de compatibilité pour
max_merge_delayed_streams_for_parallel_write. #80760 (Azat Khuzhin). - Corrige un crash : si une exception est levée lors d’une tentative de suppression d’un fichier temporaire (utilisé pour le spilling de données temporaires sur disque) dans le destructeur, le programme peut s’arrêter. #80776 (Alexey Milovidov).
- Ajoute le modifier
IF EXISTSàSYSTEM SYNC REPLICA. #80810 (Raúl Marín). - Étoffe le message d’exception concernant “Having zero bytes, but read range is not finished…” et ajoute la colonne finished_download_time à
system.filesystem_cache. #80849 (Kseniia Sumarokova). - Auparavant, le stockage
packedn’était pas pris en charge pour l’index full-text, car l’identifiant de segment était mis à jour à la volée en lisant et en écrivant le fichier (.gin_sid) sur disque. Dans le cas du stockagepacked, la lecture d’une valeur depuis le fichier non validé n’est pas prise en charge, ce qui entraînait un problème. #80852 (Elmi Ahmadov). - Ajoute une section sur l’algorithme de recherche à la sortie de
EXPLAINlors de son utilisation avecindexes = 1. Elle affiche soit “binary search”, soit “generic exclusion search”. #80881 (Pablo Marcos). - Au début de 2024,
prefer_column_name_to_aliasétait codé en dur à True pour le handler MySQL, car le nouvel analyzer n’était pas activé par défaut. Désormais, ce n’est plus le cas. #80916 (Yarik Briukhovetskyi). - Désormais,
system.iceberg_historyaffiche l’historique des bases de données de catalogues comme glue ou iceberg rest. Les colonnestable_nameetdatabase_nameont également été renommées entableetdatabasedanssystem.iceberg_historypour plus de cohérence. #80975 (alesapin). - Autorise le mode read-only pour la table function
merge, afin que le grantCREATE TEMPORARY TABLEne soit pas requis pour l’utiliser. #80981 (Miсhael Stetsyuk). - Améliore l’introspection des caches en mémoire (les informations sur les caches sont exposées dans
system.metricsau lieu desystem.asynchronouse_metrics, qui est incomplet). Ajoute la taille des caches en mémoire (en octets) àdashboard.html.VectorSimilarityIndexCacheSize/IcebergMetadataFilesCacheSizeont été renommés enVectorSimilarityIndexCacheBytes/IcebergMetadataFilesCacheBytes. #81023 (Azat Khuzhin). - Ignore les bases de données avec des engines qui ne peuvent pas contenir de tables RocksDB lors de la lecture depuis
system.rocksdb. #81083 (Pervakov Grigorii). - Autoriser
filesystem_cachesetnamed_collectionsdans le fichier de configurationclickhouse-local. #81105 (Alexey Milovidov). - Corriger la coloration syntaxique de
PARTITION BYdans les requêtesINSERT. Dans les versions précédentes,PARTITION BYn’était pas reconnu comme mot-clé. #81106 (Alexey Milovidov). #* Deux petites améliorations dans la Web UI : gérer correctement les requêtes sans sortie, commeCREATEetINSERT(jusqu’à récemment, ces requêtes provoquaient un spinner infini) ; lors d’un double-clic sur une table, faire défiler jusqu’en haut. #81131 (Alexey Milovidov). #* Mettre à jourc-aresversv1.34.5. #81159 (Konstantin Bogdanov). #* Mettre à niveau curl vers la version 8.14 afin de corriger CVE-2025-5025 et CVE-2025-4947. #81171 (larryluogit). #* Mettre à niveau libarchive vers la version 3.7.9 afin de corriger : CVE-2024-20696 CVE-2025-25724 CVE-2024-48958 CVE-2024-57970 CVE-2025-1632 CVE-2024-48957 CVE-2024-48615. #81174 (larryluogit). #* Mettre à niveau libxml2 vers la version 2.14.3. #81187 (larryluogit). MemoryResidentWithoutPageCachefournit la quantité de mémoire physique utilisée par le server process, hors userspace page cache, en octets. Cela donne une vision plus précise de l’utilisation réelle de la mémoire lorsque le userspace page cache est utilisé. Lorsque le userspace page cache est désactivé, cette valeur est égale à MemoryResident. #81233 (Jayme Bird).- Marquer comme logged les exceptions consignées manuellement dans le client, le serveur local, le client Keeper et l’application disks, afin qu’elles ne soient pas consignées deux fois. #81271 (Miсhael Stetsyuk).
- Les paramètres
use_skip_indexes_if_finaletuse_skip_indexes_if_final_exact_modeont désormais pour valeur par défautTrue. Les requêtes avec la clauseFINALutiliseront désormais les skip indexes (le cas échéant) pour présélectionner les granules, et liront également les granules supplémentaires correspondant aux plages de clé primaire correspondantes. Les utilisateurs qui ont besoin de l’ancien comportement avec des résultats approximatifs/imprécis peuvent définiruse_skip_indexes_if_final_exact_modesur FALSE après une évaluation attentive. #81331 (Shankar Iyer). #* Lorsque plusieurs requêtes sont présentes dans la web UI, c’est celle sous le curseur qui sera exécutée. Suite de #80977. #81354 (Alexey Milovidov). - Cette PR corrige des problèmes dans l’implémentation de
is_strictdans les vérifications de monotonie des fonctions de conversion. Actuellement, certaines fonctions de conversion, telles que toFloat64(UInt32) et toDate(UInt8), renvoient incorrectement is_strict à false alors qu’elles devraient renvoyer true. #81359 (zoomxi). #* Dans un système de fichiers journalisé,mkdirest écrit dans le journal du système de fichiers, qui est ensuite persisté sur disque. En cas de disque lent, cela peut prendre beaucoup de temps. Il est donc tout à fait logique de le sortir de la portée du verrou de réservation. #81371 (Kseniia Sumarokova). - Lors de la vérification qu’une
KeyConditioncorrespond à une plage continue, si la clé est encapsulée dans une chaîne de fonctions non strictes, unConstraint::POINTpeut devoir être converti enConstraint::RANGE. Par exemple :toDate(event_time) = '2025-06-03'implique une plage pourevent_time: [‘2025-06-03 00:00:00’, ‘2025-06-04 00:00:00’). Cette PR corrige ce comportement. #81400 (zoomxi). #* Utiliserpostgres16.9. #81437 (Konstantin Bogdanov). #* Utiliseropenssl3.2.4. #81438 (Konstantin Bogdanov). #* Utiliserabseil-cpp2025-01-27. #81440 (Konstantin Bogdanov). #* Utilisermongo-c-driver1.30.4. #81449 (Konstantin Bogdanov). #* Utiliserkrb51.21.3-final. #81453 (Konstantin Bogdanov). #* Utiliserorc2.1.2. #81455 (Konstantin Bogdanov). #* Ajouter la prise en charge de l’argument--databasedansclickhouse-local. Vous pouvez basculer vers une base de données créée précédemment. Cela résout #44115. #81465 (Alexey Milovidov). #* Les aliasclickhouse/chinvoquerontclickhouse-clientau lieu declickhouse-localsi--hostou--portsont spécifiés. Suite de #79422. Résout #65252. #81509 (Alexey Milovidov). - Maintenant que nous disposons de la distribution des temps de réponse de Keeper, nous pouvons ajuster les classes de l’histogramme. #81516 (Miсhael Stetsyuk).
- Reporter la lecture des fichiers manifestes Iceberg à la première lecture d’une requête. #81619 (Daniil Ivanik).
#* Utiliser
grpc1.73.0. #81629 (Konstantin Bogdanov). #* Utiliserdelta-kernel-rsv0.12.1. #81707 (Konstantin Bogdanov). - Ajouter l’événement de profil
PageCacheReadBytes. #81742 (Kseniia Sumarokova).
Correction d’anomalie (dysfonctionnement visible par l’utilisateur dans une version stable officielle)
- Correction d’une vue paramétrée avec une requête
SELECT EXCEPT. Clôt #49447. #57380 (Nikolay Degterinsky). - Analyseur : correction du nom de la projection de colonne après la promotion du type de colonne dans une jointure. Clôt #63345. #63519 (Dmitry Novik).
- Une vue matérialisée peut démarrer trop tard, par exemple après la table Kafka qui l’alimente. #72123 (Ilya Golshtein).
- Correction d’une erreur logique en cas de conflit de noms de colonnes lorsque analyzer_compatibility_join_using_top_level_identifier est activé. #75676 (Vladimir Cherkasov).
- Correction de rares plantages lors de la lecture d’une table
MergeTreeaprès plusieurs requêtesRENAME COLUMNetADD COLUMNasynchrones (avecalter_sync = 0). #76346 (Anton Popov). - Correction de la réécriture de requêtes
SELECTlors de la création d’uneVIEWavec l’analyseur activé. Clôt #75956. #76356 (Dmitry Novik). - Correction de l’utilisation des CTE dans les prédicats poussés vers le bas lorsque
allow_push_predicate_ast_for_distributed_subqueriesest activé. Corrige #75647. Corrige #79672. #77316 (Dmitry Novik). - Correction de l’application de
async_insertcôté serveur (viaapply_settings_from_server) (cela entraînait auparavant des erreursUnknown packet 11 from servercôté client). #77578 (Azat Khuzhin). - Correction d’une vue matérialisée actualisable dans des bases de données Replicated qui ne fonctionnait pas sur les répliques nouvellement ajoutées. #77774 (Michael Kolupaev).
- Correction de vues matérialisées actualisables qui cassaient les sauvegardes. #77893 (Michael Kolupaev).
- Correction d’une ancienne erreur logique déclenchée par
transform. #78247 (Yarik Briukhovetskyi). - Correction d’un problème où
SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo'signalait un succès même lorsque la réplique spécifiée n’existait pas. La commande vérifie désormais correctement que la réplique existe dans Keeper avant de tenter la synchronisation. #78405 (Jayme Bird). - Correction de certains cas où l’index secondaire n’était pas appliqué avec l’analyseur. Corrige #65607, corrige #69373. #78485 (Nikolai Kochetov).
- Corrige l’export des profile events (
NetworkSendElapsedMicroseconds/NetworkSendBytes) pour le protocole HTTP avec la compression activée (l’erreur ne doit pas dépasser la taille du buffer, généralement autour de 1 MiB). #78516 (Azat Khuzhin). #* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad). - Corrige l’analyseur, qui produisait
LOGICAL_ERRORlorsqueJOIN ... USINGimpliquait une colonneALIAS: il doit produire une erreur appropriée. #78618 (Yakov Olkhovskiy). - Corrige l’analyseur :
CREATE VIEW ... ON CLUSTERéchoue siSELECTcontient des arguments positionnels. #78663 (Yakov Olkhovskiy). - Corrige l’erreur
Block structure mismatchdans le cas deINSERT SELECTvers une fonction de table avec inférence de schéma siSELECTcontient des sous-requêtes scalaires. #78677 (Pervakov Grigorii). - Corrige l’analyseur : avec
prefer_global_in_and_join=1, pour une table Distributed dans une requêteSELECT, la fonctionindoit être remplacée parglobalIn. #78749 (Yakov Olkhovskiy). - Corrige plusieurs types de requêtes
SELECTlisant depuis des tables avec le moteurMongoDBou la fonction de tablemongodb: les requêtes avec conversion implicite d’une valeur constante dans la clauseWHERE(par ex.WHERE datetime = '2025-03-10 00:00:00') ; les requêtes avecLIMITetGROUP BY. Auparavant, elles pouvaient renvoyer un résultat incorrect. #78777 (Anton Popov). - Corrige la conversion entre différents types JSON. Elle s’effectue désormais via un cast simple avec conversion vers/depuis String. C’est moins efficace, mais exact à 100 %. #78807 (Pavel Kruglov).
- Corrige une erreur logique lors de la conversion du type Dynamic en Interval. #78813 (Pavel Kruglov).
- Corrige le rollback d’une colonne en cas d’erreur de parsing JSON. #78836 (Pavel Kruglov).
- Corrige l’erreur
bad castlors d’un join utilisant une colonne alias constante. #78848 (Vladimir Cherkasov). - N’autorise plus
PREWHEREdans les vues matérialisées sur des colonnes ayant des types différents dans la vue et la table cible. #78889 (Pavel Kruglov). - Corrige une erreur logique lors du parsing de données binaires invalides d’une colonne Variant. #78982 (Pavel Kruglov).
- Lève une exception lorsque la taille de batch Parquet est définie sur 0. Auparavant, lorsque
output_format_parquet_batch_size = 0, ClickHouse se bloquait. Ce comportement est désormais corrigé. #78991 (daryawessely). - Corrige la désérialisation des discriminateurs Variant avec le format de base dans les parties compactes. Cela a été introduit dans https://github.com/ClickHouse/ClickHouse/pull/55518. #79000 (Pavel Kruglov).
- Les dictionnaires de type
complex_key_ssd_cacherejettent désormais les paramètresblock_sizeetwrite_buffer_sizenuls ou négatifs (issue #78314). #79028 (Elmi Ahmadov). - Évitez d’utiliser Field pour les colonnes non agrégées dans SummingMergeTree. Cela pouvait entraîner des erreurs inattendues avec les types Dynamic/Variant utilisés dans SummingMergeTree. #79051 (Pavel Kruglov).
- Correction de la lecture depuis une materialized view avec une destination table distribuée et un header différent dans analyzer. #79059 (Pavel Kruglov).
- Correction d’un crash dans un cas très spécifique où la fonction
currentDatabaseétait utilisée dans des sectionsCONSTRAINTpour des queriesON CLUSTER. Closes #78100. #79070 (pufit). - Correction d’un bug où
arrayUnion()renvoyait des valeurs supplémentaires (incorrectes) dans des tables ayant reçu des Batch inserts. Fixes #75057. #79079 (Peter Nguyen). #* Correction d’un segfault dansOpenSSLInitializer. Closes #79092. #79097 (Konstantin Bogdanov). - Correction de la transmission des rôles externes dans les queries inter-server. #79099 (Andrey Zvonov).
- Toujours définir le préfixe pour S3 ListObject. #79114 (Azat Khuzhin).
- Correction d’un bug où
arrayUnion()renvoyait des valeurs supplémentaires (incorrectes) dans des tables ayant reçu des Batch inserts. Fixes #79157. #79158 (Peter Nguyen). - Correction d’une logical error après le pushdown du filtre. #79164 (Pervakov Grigorii).
- Essai d’utilisation de IColumn à la place de Field dans SingleValueDataGeneric. Cela corrige les valeurs de retour incorrectes pour certaines aggregate functions comme
argMaxavec les typesDynamic/Variant/JSON. #79166 (Pavel Kruglov). - Correction du DeltaLake table engine lorsque l’implémentation delta-kernel est utilisée avec des endpoints basés sur HTTP, ainsi que de NOSIGN. Closes #78124. #79203 (Kseniia Sumarokova).
- Correctif Keeper : éviter de déclencher des watches sur des requêtes multi ayant échoué. #79247 (Antonio Andelic).
- Interdiction des types Dynamic et JSON dans IN. Avec l’implémentation actuelle de
IN, cela peut conduire à des résultats incorrects. Une prise en charge correcte de ces types dansINest complexe et pourra être ajoutée à l’avenir. #79282 (Pavel Kruglov). - Correction de la vérification des paths dupliqués lors du parsing du type JSON. #79317 (Pavel Kruglov).
- Corrige les problèmes de connexion à SecureStreamSocket. #79383 (Konstantin Bogdanov).
- Corrige le chargement des disques plain_rewritable contenant des données. #79439 (Julia Kartseva).
- Corrige un crash lors de la découverte des sous-colonnes dynamiques dans les Wide parts de MergeTree. #79466 (Pavel Kruglov).
- Vérifie la longueur du nom de la table uniquement pour les requêtes CREATE initiales. Ne la vérifie pas pour les CREATE secondaires afin d’éviter des problèmes de rétrocompatibilité. #79488 (Miсhael Stetsyuk).
- Corrige l’erreur
Block structure mismatchdans plusieurs cas impliquant des tables avec des colonnes sparse. #79491 (Anton Popov). - Corrige deux cas de
Logical Error: Can't set alias of * of Asterisk on alias. #79505 (Raúl Marín). - Corrige l’application des paramètres use_native_copy et allow_azure_native_copy pour Azure blob storage, et n’utilise désormais la copie native que lorsque les identifiants correspondent, ce qui résout #78964. #79561 (Smita Kulkarni).
- Corrige l’utilisation de chemins incorrects lors du renommage d’une base de données Atomic. #79569 (Tuan Pham Anh).
- Corrige ORDER BY sur une colonne JSON avec d’autres colonnes. #79591 (Pavel Kruglov).
- Corrige la duplication des résultats lors de la lecture à distance lorsque
use_hedged_requestsetallow_experimental_parallel_reading_from_replicassont tous deux désactivés. #79599 (Eduard Karacharov). - Corrige un crash dans l’implémentation delta-kernel lors de l’utilisation de Unity Catalog. #79677 (Kseniia Sumarokova).
- Résout les macros pour les clusters en autodiscovery. #79696 (Anton Ivashkin).
- Corrige des erreurs logiques liées à une portée d’origine inconnue d’une colonne, produites lors de la vérification si cette colonne est corrélée. Corrige #78183. Corrige #79451. #79727 (Dmitry Novik).
- Corrige des résultats erronés pour les grouping sets avec ColumnConst et Analyzer. #79743 (Andrey Zvonov).
- Corrige la duplication des résultats du shard local lors de la lecture depuis une table distribuée lorsque la réplique locale est obsolète. #79761 (Eduard Karacharov).
- Gère correctement une configuration incorrecte de
page_cache_limits. #79805 (Bharat Nallan). - Corrige le résultat de la fonction SQL
formatDateTimesi un spécificateur de taille variable (p. ex.%W, c.-à-d. le jour de la semaineMondayTuesday, etc.) est suivi d’un spécificateur composé (un spécificateur qui affiche plusieurs composantes à la fois, p. ex.%D, c.-à-d. la date américaine05/04/25). #79835 (Robert Schulze). - IcebergS3 prend en charge l’optimisation de count(), mais pas IcebergS3Cluster. Par conséquent, le résultat de count() renvoyé en mode cluster peut être un multiple du nombre de répliques. #79844 (wxybear).
- Corrige l’ordre de tri des NaN dont le bit de signe est négatif. #79847 (Pervakov Grigorii).
- Désormais,
GROUP BY ALLne prend pas en compte la partieGROUPING. #79915 (Yarik Briukhovetskyi). - Corrige l’erreur
AMBIGUOUS_COLUMN_NAMEavec la matérialisation différée lorsqu’aucune colonne n’est utilisée pour exécuter la requête jusqu’à la projection. Exemple : SELECT * FROM t ORDER BY rand() LIMIT 5. #79926 (Igor Nikonov). - Corrige une fusion d’état incorrecte pour les fonctions
TopK/TopKWeighted, qui provoquait des valeurs d’erreur excessives même lorsque la capacité n’était pas épuisée. #79939 (Joel Höner). - Masque le mot de passe dans la requête
CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\'). #79941 (Han Fei). - Autorise l’utilisation d’un alias dans
JOIN USING. Cet alias peut être indiqué si la colonne a été renommée (p. ex. à cause de `ARRAY JOIN). Corrige #73707. #79942 (Nikolai Kochetov). - Prend en compte le paramètre
readonlydans le stockage objetazure_blob_storage. #79954 (Julia Kartseva). - Corrige des résultats de requête incorrects et des plantages par manque de mémoire lors de l’utilisation de
match(column, '^…')avec des caractères échappés par une barre oblique inverse. #79969 (filimonov). - Désactivation du partitionnement Hive pour les data lakes. Résout partiellement https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. #80005 (Daniil Ivanik).
- Les skip indexes avec des expressions lambda ne pouvaient pas être appliqués. Corrige le cas où les fonctions de haut niveau dans la définition de l’index correspondent exactement à celles de la requête. #80025 (Nikolai Kochetov).
- Permet aux vues matérialisées avec des UNION de fonctionner correctement sur les nouvelles répliques. #80037 (Samay Sharma).
- Corrige la version des métadonnées lors de l’attachement d’une part sur la réplique exécutant la commande ATTACH_PART depuis le journal de réplication. #80038 (Aleksei Filatov).
- Le spécificateur de format
%ede la fonction SQLparseDateTimereconnaît désormais les jours sur un seul chiffre (par ex.3), alors qu’il exigeait auparavant un remplissage par des espaces (par ex.3). Son comportement est ainsi désormais compatible avec MySQL. Pour conserver le comportement précédent, définissez le paramètreparsedatetime_e_requires_space_padding = 1. (issue #78243). #80057 (Robert Schulze). - Les noms des Executable User Defined Functions (eUDF) ne sont pas ajoutés à la colonne
used_functionsde la tablesystem.query_log, contrairement aux autres fonctions. Cette PR ajoute le nom de l’eUDF si celui-ci a été utilisé dans la requête. #80073 (Kyamran). #* Correction des avertissementsCannot find 'kernel' in '[...]/memory.stat'dans le journal de ClickHouse (issue #77410). #80129 (Robert Schulze). - Correction d’une erreur logique dans le format Arrow avec LowCardinality(FixedString). #80156 (Pavel Kruglov).
- Correction de la lecture des sous-colonnes depuis le moteur Merge. #80158 (Pavel Kruglov).
- Correction d’un bug dans la comparaison entre types numériques dans
KeyCondition. #80207 (Yarik Briukhovetskyi). - Correction de AMBIGUOUS_COLUMN_NAME lorsque la lazy materialization est appliquée à une table avec projections. #80251 (Igor Nikonov).
- Correction d’une optimisation de comptage incorrecte pour les filtres de préfixe de chaîne comme LIKE ‘ab_c%’ lors de l’utilisation de projections implicites. Cela corrige #80250. #80261 (Amos Bird).
- Correction de la sérialisation incorrecte des champs numériques imbriqués en chaînes dans les documents MongoDB. Suppression de la limite maximale de profondeur pour les documents provenant de MongoDB. #80289 (Kirill Nikiforov).
- Effectue des vérifications de métadonnées moins strictes pour RMT dans la base de données Replicated. Clôt #80296. #80298 (Nikolay Degterinsky).
- Correction de la représentation textuelle de DateTime et DateTime64 pour le stockage PostgreSQL. #80301 (Yakov Olkhovskiy).
- Autorise
DateTimeavec fuseau horaire dans les tablesStripeLog. Cela clôt #44120. #80304 (Alexey Milovidov). - Désactive le push-down des filtres pour un prédicat contenant une fonction non déterministe lorsque l’étape du plan de requête modifie le nombre de lignes. Corrige #40273. #80329 (Nikolai Kochetov).
- Correction de possibles erreurs logiques et plantages dans les projections avec sous-colonnes. #80333 (Pavel Kruglov).
- Corrige l’erreur
NOT_FOUND_COLUMN_IN_BLOCKcausée par l’optimisation de filter push-down de l’étape de JOIN logique lorsque l’expressionONn’est pas une égalité triviale. Corrige #79647 Corrige #77848. #80360 (Nikolai Kochetov). - Corrige des résultats incorrects lors de la lecture de clés triées en ordre inverse dans des tables partitionnées. Corrige #79987. #80448 (Amos Bird).
- Corrige un tri incorrect dans les tables avec une clé Nullable et
optimize_read_in_orderactivé. #80515 (Pervakov Grigorii). - Corrige le blocage de DROP sur une refreshable materialized view si la vue avait été mise en pause avec SYSTEM STOP REPLICATED VIEW. #80543 (Michael Kolupaev).
- Corrige l’erreur ‘Cannot find column’ avec un Tuple constant dans une distributed query. #80596 (Yakov Olkhovskiy).
- Corrige la fonction
shardNumdans les Distributed tables avecjoin_use_nulls. #80612 (János Benjamin Antal). - Corrige des résultats incorrects lors de la lecture d’une colonne présente uniquement dans un sous-ensemble des tables du moteur Merge. #80643 (Pavel Kruglov).
- Le timestamp de la table iceberg_history devrait désormais être correct. #80711 (Melvyn Peignon).
- Corrige la gestion des globs enum à un seul élément dans les table functions sur object storage. #80716 (Konstantin Bogdanov).
- Corrige des types de résultat incorrects pour les fonctions de comparaison avec Tuple(Dynamic) et String, qui entraînaient une logical error. #80728 (Pavel Kruglov).
- Ajoute la prise en charge manquante du data type
timestamp_ntzpour Unity Catalog. Corrige #79535, corrige #79875. #80740 (alesapin). - Corrige l’erreur
THERE_IS_NO_COLUMNpour les distributed queries avecIN cte. Corrige #75032. #80757 (Nikolai Kochetov). - Corrige un nombre excessif de fichiers (entraînant une consommation mémoire excessive) pour
ORDER BYexterne. #80777 (Azat Khuzhin). #* Cette PR pourrait clore #80742. #80783 (zoomxi). #* Corrige un crash dans Kafka dû au fait que get_member_id() créait un std::string à partir de NULL (ce problème ne se produisait probablement qu’en cas d’échec de la connexion au broker). #80793 (Azat Khuzhin). - Attend correctement les consumers avant d’arrêter le moteur Kafka (des consumers encore actifs après l’arrêt peuvent déclencher diverses assertions de débogage et continuer à lire des données depuis les brokers en arrière-plan après la suppression/le détachement de la table). #80795 (Azat Khuzhin).
- Corrige
NOT_FOUND_COLUMN_IN_BLOCK, provoqué par l’optimisationpredicate-push-down. Corrige #80443. #80834 (Nikolai Kochetov). - Corrige une erreur logique lors de la résolution du sélecteur étoile (*) dans une fonction de table dans un
JOINavecUSING. #80894 (Vladimir Cherkasov). - Corrige la prise en compte mémoire du cache des fichiers de métadonnées Iceberg. #80904 (Azat Khuzhin).
- Corrige un partitionnement incorrect avec une clé de partition Nullable. #80913 (Pervakov Grigorii).
- Corrige l’erreur
Table does not existpour les requêtes distribuées avec prédicat poussé (allow_push_predicate_ast_for_distributed_subqueries=1) lorsque la table source n’existe pas sur l’initiateur. Corrige #77281. #80915 (Nikolai Kochetov). - Corrige l’erreur logique dans les fonctions imbriquées avec des fenêtres nommées. #80926 (Pervakov Grigorii).
- Corrige les valeurs extrêmes pour les colonnes Nullable et à virgule flottante. #80970 (Pervakov Grigorii).
- Corrige un plantage possible lors d’une requête sur system.tables (probablement en cas de pression mémoire). #80976 (Azat Khuzhin).
- Corrige le renommage atomique avec
truncatepour les fichiers dont la compression est déduite de leur extension. #80979 (Pablo Marcos). #* Corrige ErrorCodes::getName. #81032 (RinChanNOW). - Corrige un bug qui empêchait l’utilisateur de lister les tables dans Unity Catalog sans disposer des permissions sur chacune d’elles. Désormais, toutes les tables sont correctement listées, et toute tentative de lecture d’une table restreinte lèvera une exception. #81044 (alesapin).
- Désormais, ClickHouse ignore les erreurs et les réponses inattendues des catalogues de data lake dans la requête
SHOW TABLES. Corrige #79725. #81046 (alesapin). - Corrige l’analyse de
DateTime64à partir d’entiers dansJSONExtractet lors de l’analyse du typeJSON. #81050 (Pavel Kruglov). - Prend en compte le paramètre
date_time_input_formatdans le cache d’inférence de schéma. #81052 (Pavel Kruglov). - Corrige un plantage lors d’un
INSERTsi la table avait été DROPed après le démarrage de la requête mais avant l’envoi des colonnes. #81053 (Azat Khuzhin). - Correction de l’utilisation d’une valeur non initialisée dans quantileDeterministic. #81062 (Azat Khuzhin).
- Correction de la gestion du nombre de liens physiques pour les transactions du disk metadatastoragefromdisk. Ajout de tests. #81066 (Sema Checherinda).
- Les noms des fonctions définies par l’utilisateur (UDF) ne sont pas ajoutés à la table
system.query_log, contrairement aux autres fonctions. Cette PR ajoute le nom de l’UDF à l’une des deux colonnesused_executable_user_defined_functionsouused_sql_user_defined_functionssi l’UDF a été utilisée dans la requête. #81101 (Kyamran). - Correction des erreurs
Too large size ... passed to allocatorou de plantages possibles lors d’insertions via le protocole HTTP avec des formats texte (JSON,Values, …) et des champsEnumomis. #81145 (Anton Popov). - Correction de LOGICAL_ERROR dans le cas d’une colonne Sparse dans un bloc INSERT envoyé vers une MV non-MT. #81161 (Azat Khuzhin).
- Correction de
Unknown table expression identifierpourdistributed_product_mode_local=localavec réplication croisée. #81162 (Nikolai Kochetov). - Correction de la mise en cache incorrecte du nombre de lignes dans les fichiers Parquet après filtrage. #81184 (Michael Kolupaev).
- Correction du paramètre
max_size_to_total_spacedu cache fs lorsqu’il est utilisé avec un chemin de cache relatif. #81237 (Kseniia Sumarokova). - Correction d’un plantage de clickhouse-local lors de la sortie de tuples ou de maps constants au format Parquet. #81249 (Michael Kolupaev).
- Vérification des offsets de tableau reçus sur le réseau. #81269 (Azat Khuzhin).
- Correction d’un cas limite dans une requête qui effectue des jointures sur des tables vides et utilise des fonctions de fenêtre. Le bug provoque une explosion du nombre de flux parallèles, entraînant des OOM. #81299 (Alexander Gololobov).
- Corrections pour les fonctions Cluster de data lake (
deltaLakeCluster,icebergCluster, etc.) : (1) correction d’un segfault potentiel dansDataLakeConfigurationlors de l’utilisation de la fonctionClusteravec l’ancien analyseur ; (2) suppression des mises à jour redondantes des métadonnées du data lake (requêtes supplémentaires vers le stockage objet) ; (3) correction d’un listage redondant dans le stockage objet lorsque le format n’est pas explicitement spécifié (ce qui avait déjà été fait pour les engines de data lake hors cluster). #81300 (Kseniia Sumarokova). - Le drapeau
force_restore_datapermet désormais de récupérer les métadonnées Keeper perdues. #81324 (Raúl Marín). - Correction d’une erreur de Region dans delta-kernel. Correction de #79914. #81353 (Kseniia Sumarokova).
- Désactivation du JIT incorrect pour divideOrNull. #81370 (Raúl Marín).
- Correction d’une erreur d’insertion lorsqu’une table MergeTree possède un nom de colonne de partition long. #81390 (hy123q).
- Ne stockez pas en mémoire le contenu de plusieurs fichiers manifest. #81470 (Daniil Ivanik).
- Correction d’un possible crash lors de l’arrêt des pools d’arrière-plan (
background_.*pool_size). #81473 (Azat Khuzhin). - Correction d’une lecture hors limites dans le format
Npylors de l’écriture dans une table utilisant le moteurURL. Cela corrige #81356. #81502 (Alexey Milovidov). - Il est possible que la web UI affiche
NaN%(un problème JavaScript classique). #81507 (Alexey Milovidov). - Correction de
DatabaseReplicatedpourdatabase_replicated_enforce_synchronous_settings=1. #81564 (Azat Khuzhin). - Correction de l’ordre de tri pour les types
LowCardinality(Nullable(...)). #81583 (Pervakov Grigorii). - Le serveur ne doit pas conserver une connexion HTTP si la requête n’a pas été entièrement lue depuis le socket. #81595 (Sema Checherinda).
- Les sous-requêtes corrélées scalaires renvoient désormais un résultat Nullable de l’expression de projection. Correction du cas où une sous-requête corrélée produit un ensemble de résultats vide. #81632 (Dmitry Novik).
- Correction de
Unexpected relative path for a deduplicated partlors d’unATTACHàReplicatedMergeTree. #81647 (Azat Khuzhin). - Le paramètre de requête
use_iceberg_partition_pruningne prenait pas effet pour le stockage Iceberg, car celui-ci utilisait le contexte global plutôt que le contexte de requête. Ce n’est pas critique, car sa valeur par défaut esttrue. Cette PR corrige le problème. #81673 (Han Fei). - Ajout d’une validation pour le paramètre MergeTree
merge_max_block_sizeafin de garantir qu’il soit non nul. #81693 (Bharat Nallan). - Correction de problèmes avec
clickhouse-localimpliquant des requêtesDROP VIEWbloquées. #81705 (Bharat Nallan). - Correction de la jointure de
StorageRedisdans certains cas. #81736 (Pervakov Grigorii). - Correction d’un crash dans
ConcurrentHashJoinavecUSING ()vide et l’ancien analyseur activé. #81754 (Nikita Taranov). - Correctif Keeper : blocage des commits de nouveaux logs lorsqu’une entrée invalide est présente dans les logs. Auparavant, si le leader appliquait certains logs de manière incorrecte, il continuait à valider de nouveaux logs, même si le follower détectait une incohérence de digest et s’arrêtait. #81780 (Antonio Andelic).