Passer au contenu principal
Changements pertinents pour les services ClickHouse Cloud basés sur la version v24.12.

Changements incompatibles avec les versions précédentes

  • Les fonctions greatest et least ignorent désormais les valeurs d’entrée NULL, alors qu’auparavant elles renvoyaient NULL si l’un des arguments était NULL. Par exemple, SELECT greatest(1, 2, NULL) renvoie désormais 2. Ce changement rend le comportement compatible avec PostgreSQL. #65519 (kevinyhzou).
  • N’autorise plus, par défaut, les types Variant/Dynamic dans ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY, car cela peut entraîner des résultats inattendus. #69731 (Pavel Kruglov).
  • Supprime les tables système generate_series et generateSeries. Elles ont été ajoutées ici par erreur : #59390. #71091 (Alexey Milovidov).
  • Supprime StorageExternalDistributed. Clôt #70600. #71176 (flynn).
  • Les paramètres de la configuration du serveur (users.xml) s’appliquent désormais aussi au client. Utile pour les paramètres de format, par exemple date_time_output_format. #71178 (Michael Kolupaev).
  • Corrige une possible erreur No such file or directory due à des caractères spéciaux non échappés dans les fichiers des sous-colonnes JSON. #71182 (Pavel Kruglov).
  • Les moteurs de table Kafka, NATS et RabbitMQ sont désormais couverts par leurs propres grants dans la hiérarchie SOURCES. Ajoutez les grants nécessaires à tous les utilisateurs de base de données non par défaut qui créent des tables avec ces types d’engine. #71250 (Christoph Wurm).
  • Vérifie la requête complète de mutation avant de l’exécuter (y compris les sous-requêtes). Cela évite d’exécuter accidentellement une requête invalide et d’accumuler des mutations mortes qui bloquent les mutations valides. #71300 (Christoph Wurm).
  • Renomme le paramètre du cache du système de fichiers skip_download_if_exceeds_query_cache en filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit. #71578 (Kseniia Sumarokova).
  • Interdit les types Dynamic/Variant dans les fonctions min/max afin d’éviter toute confusion. #71761 (Pavel Kruglov).
  • Supprime la prise en charge de Enum ainsi que des arguments UInt128 et UInt256 dans deltaSumTimestamp. Supprime également la prise en charge de Int8, UInt8, Int16 et UInt16 pour le deuxième argument (« timestamp ») de deltaSumTimestamp. #71790 (Alexey Milovidov).
  • Ajoute la validation de la requête source lorsque ClickHouse est utilisé comme source pour un dictionnaire. #72548 (Alexey Katsman).

Nouvelles fonctionnalités

  • Implémentation de la commande SYSTEM LOAD PRIMARY KEY pour charger les index primaires de toutes les parts d’une table spécifiée, ou de toutes les tables si aucune table n’est spécifiée. Cela sera utile pour les benchmarks et pour éviter une latence supplémentaire lors de l’exécution des requêtes. #66252 (ZAWA_ll).
  • Ajout de l’instruction SYSTEM LOAD PRIMARY KEY pour charger les index primaires de toutes les parts d’une table spécifiée, ou de toutes les tables si aucune table n’est spécifiée. Cela peut être utile pour les benchmarks et pour éviter une latence supplémentaire lors de l’exécution des requêtes. #67733 (ZAWA_ll).
  • Ajout de la requête CHECK GRANT pour vérifier si l’utilisateur/rôle actuel a reçu le privilège spécifique et si la table/colonne correspondante existe en mémoire. #68885 (Unalian).
  • Ajout de la syntaxe SQL pour décrire le workload et la gestion des ressources. Voir la documentation. #69187 (Sergei Trifonov).
  • Le format de stockage de données Iceberg offre à l’utilisateur de nombreuses possibilités pour modifier le schéma de sa table. Cette pull request implémente la lecture d’une table au format Iceberg lorsque l’ordre des colonnes, les noms de colonnes ou des extensions de type simples ont été modifiés. #69445 (Daniil Ivanik).
  • Permettre à chaque méthode d’authentification d’avoir sa propre date d’expiration, supprimée de l’entité utilisateur. #70090 (Arthur Passos).
  • Propagation des rôles utilisateur externes depuis l’initiateur de la requête vers les autres nœuds du cluster. Utile lorsque seul l’initiateur a accès à l’authentificateur externe (comme LDAP). #70332 (Andrey Zvonov).
  • Prise en charge de ALTER de String vers JSON. Cette PR modifie également la sérialisation des types JSON et Dynamic vers la nouvelle version V2. L’ancienne version V1 peut toujours être utilisée en activant le paramètre merge_tree_use_v1_object_and_dynamic_serialization (cela peut être utile pendant une mise à niveau afin de pouvoir effectuer un rollback de version sans problème). #70442 (Pavel Kruglov).
  • Ajout de la fonction toUnixTimestamp64Second, qui convertit un DateTime64 en une valeur Int64 avec une précision fixe à la seconde, afin de prendre en charge le renvoi d’une valeur négative si la date est antérieure à 00:00:00 UTC le jeudi 1 janvier 1970. #70597 (zhanglistar).
  • Ajout du nouveau paramètre enforce_index_structure_match_on_partition_manipulation pour autoriser ATTACH lorsque les projections et les index secondaires de la table source constituent un sous-ensemble de ceux de la table cible. Résout #70602. #70603 (zwy991114).
  • La sortie de la fonction cast diffère de celle d’Apache Spark, ce qui provoque un écart dans le projet gluten ; voir https://github.com/apache/incubator-gluten/issues/7602 Cette PR ajoute la prise en charge du format de sortie texte Spark, désactivée par défaut. #70957 (zhanglistar).
  • Ajout d’un nouveau type de header pour les S3 endpoints pour l’authentification des utilisateurs (access_header). Cela permet d’obtenir un header d’accès avec la priorité la plus basse, qui sera écrasé par access_key_id depuis n’importe quelle autre source (par exemple, un schéma de table ou une named collection). #71011 (MikhailBurdukov).
  • Implémentation initiale des niveaux de paramètres. #71145 (Raúl Marín).
  • Ajout de la prise en charge de la clause staleness dans ORDER BY WITH FILL. #71151 (Mikhail Artemenko).
  • Implémentation d’un CAST simple de Map/Tuple/Object vers le nouveau JSON via sérialisation/désérialisation à partir d’une chaîne JSON. #71320 (Pavel Kruglov).
  • Ajout des alias anyRespectNulls, firstValueRespectNulls et anyValueRespectNulls pour la fonction d’agrégation any. Ajout également des alias anyLastRespectNulls et lastValueRespectNulls pour la fonction d’agrégation anyLast. Cela permet d’utiliser une syntaxe plus naturelle, en CamelCase uniquement, plutôt qu’une syntaxe mixte CamelCase/underscore, par exemple : SELECT anyLastRespectNullsStateIf au lieu de anyLast_respect_nullsStateIf. #71403 (Peter Nguyen).
  • Ajout du paramètre de configuration date_time_utc, permettant au formatage des logs JSON de prendre en charge la date et l’heure UTC au format RFC 3339/ISO8601. #71560 (Ali).
  • Ajout d’une option permettant de choisir le côté de la jointure qui servira de table interne (build) dans le plan de requête. Ce comportement est contrôlé par query_plan_join_swap_table, qui peut être défini sur auto. Dans ce mode, ClickHouse essaiera de choisir la table ayant le plus petit nombre de lignes. #71577 (Vladimir Cherkasov).
  • Optimisation de l’utilisation mémoire pour les valeurs de granularité d’index lorsque la granularité est constante pour une part. Ajout de la possibilité de toujours sélectionner une granularité constante pour une part (paramètre use_const_adaptive_granularity), ce qui permet de garantir qu’elle est toujours optimisée en mémoire. Cela aide, pour les charges de travail importantes (des milliers de milliards de lignes sur stockage partagé), à éviter une augmentation continue de l’utilisation mémoire due aux métadonnées (valeurs de granularité d’index) des parts de données. #71786 (Anton Popov).
  • Implémentation de allowed_feature_tier comme commutateur global pour désactiver toutes les fonctionnalités expérimentales / bêta. #71841 (Raúl Marín).
  • Ajout des fonctions de table iceberg[S3;HDFS;Azure]Cluster, deltaLakeCluster, hudiCluster. #72045 (Mikhail Artemenko).
  • Ajout de la syntaxe ALTER USER {ADD|MODIFY|DROP SETTING}, ALTER USER {ADD|DROP PROFILE}, et de même pour ALTER ROLE et ALTER PROFILE. #72050 (pufit).
  • Ajout de la fonction arrayPrAUC, qui calcule l’AUC (aire sous la courbe) de la courbe précision-rappel. #72073 (Emmanuel).
  • Ajout d’un cache pour l’index primaire des tables MergeTree (peut être activé via le paramètre de table use_primary_key_cache). Si le chargement paresseux et le cache sont activés pour l’index primaire, celui-ci sera chargé dans le cache à la demande (de manière similaire au mark cache) au lieu d’être conservé indéfiniment en mémoire. Ajout du préchauffage de l’index primaire lors des insertions/fusions/récupérations de parts de données et lors des redémarrages de la table (peut être activé via le paramètre prewarm_primary_key_cache). #72102 (Anton Popov).
  • Ajout de la fonction indexOfAssumeSorted pour les types Array. Optimise la recherche dans le cas d’un tableau trié par ordre non décroissant. #72517 (Eric Kurbanov).
  • Permet d’utiliser un délimiteur comme second argument facultatif de la fonction d’agrégation groupConcat. #72540 (Yarik Briukhovetskyi).
  • Nouveau paramètre, http_response_headers, qui permet de personnaliser les en-têtes de réponse HTTP. Par exemple, vous pouvez demander au navigateur d’afficher une image stockée dans la base de données. Cela corrige #59620. #72656 (Alexey Milovidov).
  • Ajoute la fonction fromUnixTimestamp64Second, qui convertit une valeur Int64 de timestamp Unix en DateTime64. #73146 (Robert Schulze).

Améliorations des performances

  • Ajout de 2 nouveaux paramètres short_circuit_function_evaluation_for_nulls et short_circuit_function_evaluation_for_nulls_threshold, qui permettent d’exécuter les fonctions sur des colonnes Nullable en court-circuit lorsque la proportion de valeurs NULL dans le bloc de données dépasse le seuil spécifié. Cela signifie que la fonction n’est exécutée que sur les lignes contenant des valeurs non NULL. Cela s’applique uniquement aux fonctions qui renvoient une valeur NULL pour les lignes où au moins un argument est NULL. #60129 (李扬).
  • L’utilisation mémoire de clickhouse disks remove --recursive a été réduite pour les disques de stockage objet. #67323 (Kirill).
  • Désormais, les colonnes des blocs d’entrée ne seront plus copiées pour join_algorithm='parallel_hash' lors de leur répartition entre les threads pour un traitement parallèle. #67782 (Nikita Taranov).
  • Activation de la compilation JIT pour davantage d’expressions : abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*, fonctions de comparaison (=, <, >, >=, <=), fonctions logiques (and, or). #70598 (李扬).
  • Désormais, l’algorithme parallel_hash sera utilisé (le cas échéant) lorsque le paramètre join_algorithm est défini sur default. Les deux alternatives précédentes (direct et hash) restent prises en compte lorsque parallel_hash ne peut pas être utilisé. #70788 (Nikita Taranov).
  • Optimisation de l’algorithme de fusion Replacing pour les parts non intersectantes. #70977 (Anton Popov).
  • Ne plus lister les detached parts des disques en lecture seule et write-once dans les metrics et dans system.detached_parts. #71086 (Alexey Milovidov).
  • Ne plus calculer les heavy asynchronous metrics par défaut. Cette fonctionnalité a été introduite dans #40332, mais il n’est pas souhaitable d’avoir une tâche d’arrière-plan lourde nécessaire pour un seul client. #71087 (Alexey Milovidov).
  • Amélioration des performances et de la précision de l’intervalle de collecte de system.query_metric_log grâce à la réduction de la région critique. #71473 (Pablo Marcos).
  • Ajout d’une option permettant d’extraire les expressions communes des expressions WHERE et ON afin de réduire le nombre de tables de hachage utilisées lors des jointures. Peut être activée avec optimize_extract_common_expressions = 1. #71537 (János Benjamin Antal).
  • Permet d’utiliser des index sur SELECT avec LowCardinality(String). #71598 (Yarik Briukhovetskyi).
  • Lors de l’exécution d’une query avec parallel replicas et le plan local activé, ignorer l’index analysis sur les workers. Le coordinator choisira les ranges à lire pour les workers en s’appuyant sur l’index analysis effectuée de son côté (sur l’initiator de la query). #72109 (Igor Nikonov).
  • Restauration de l’optimisation pour la lecture des subcolumns d’une seule colonne dans les Compact parts à partir de https://github.com/ClickHouse/ClickHouse/pull/57631. Elle avait été supprimée accidentellement. #72285 (Pavel Kruglov).
  • Accélération du tri des colonnes LowCardinality(String) grâce à la dévirtualisation des appels dans le comparateur. #72337 (Alexander Gololobov).
  • Optimisation de la fonction argMin/Max pour certains types de données simples. #72350 (alesapin).
  • Optimisation du verrouillage avec des verrous partagés dans le memory tracker afin de réduire la contention des verrous. #72375 (Jiebin Sun).
  • Ajout d’un nouveau paramètre, use_async_executor_for_materialized_views. Permet une exécution asynchrone et potentiellement multithreadée des requêtes de vue matérialisée, ce qui peut accélérer le traitement des vues pendant INSERT, mais aussi consommer davantage de mémoire. #72497 (alesapin).
  • Les valeurs par défaut des paramètres max_size_to_preallocate_for_aggregation, max_size_to_preallocate_for_joins ont encore été augmentées à 10^12, de sorte que l’optimisation s’appliquera dans davantage de cas. #72555 (Nikita Taranov).
  • Amélioration des performances de la désérialisation des états des fonctions d’agrégation (dans le type de données AggregateFunction et dans les requêtes distribuées). Légère amélioration également des performances de l’analyse du format RowBinary. #72818 (Anton Popov).

Amélioration

  • Les fonctions d’ordre supérieur avec des tableaux constants et des arguments capturés constants retournent des constantes. #58400 (Alexey Milovidov).
  • Optimisation de la lecture dans l’ordre grâce à la génération de lignes virtuelles, ce qui permet de lire moins de données lors du tri par fusion, en particulier lorsque plusieurs parties existent. #62125 (Shichao Jin).
  • Les noms des étapes du plan de requête (EXPLAIN PLAN json=1) et les noms des processeurs du pipeline (EXPLAIN PIPELINE compact=0,graph=1) ont désormais un identifiant unique en suffixe. Cela permet de faire correspondre la sortie du profileur des processeurs et les traces OpenTelemetry avec la sortie d’EXPLAIN. #63518 (qhsong).
  • Ajout d’une option permettant de vérifier qu’un objet existe après son écriture dans Azure Blob Storage, contrôlée par le paramètre check_objects_after_upload. #64847 (Smita Kulkarni).
  • Correction d’une logique de use-after-dtor dans HashTable destroyElements. #65279 (cangyin).
  • Utilise la base de données Atomic par défaut dans clickhouse-local. Traite les points 1 et 5 de #50647. Ferme #44817. #68024 (Alexey Milovidov).
  • Le buffer d’écriture doit être annulé ou finalisé explicitement. Les exceptions interrompent le protocole HTTP afin d’alerter le client en cas d’erreur. #68800 (Sema Checherinda).
  • Signale les hôtes DDLWorker actifs en créant replica_dir et en marquant les répliques comme actives dans DDLWorker. #69658 (Tuan Pham Anh).
    1. Refactoriser DDLQueryStatusSource : - Renommer DDLQueryStatusSource en DistributedQueryStatusSource et en faire une classe de base - Créer deux sous-classes, DDLOnClusterQueryStatusSource et ReplicatedDatabaseQueryStatusSource, dérivées de DDLQueryStatusSource, pour interroger respectivement l’état des tâches DDL de DDL On Cluster et des bases de données Replicated. 2. Prendre en charge l’interruption de l’attente des hôtes hors ligne dans DDLOnClusterQueryStatusSource`. #69660 (Tuan Pham Anh).
  • Ajout d’une nouvelle logique d’annulation : CancellationChecker vérifie les délais d’expiration de chaque requête lancée et les arrête une fois le délai atteint. #69880 (Yarik Briukhovetskyi).
  • Suppression du paramètre allow_experimental_join_condition, ce qui autorise par défaut les conditions non équi. #69910 (Vladimir Cherkasov).
  • Activation de parallel_replicas_local_plan par défaut. La construction d’un plan local complet sur l’initiateur de la requête améliore les performances des répliques parallèles avec une consommation de ressources moindre et offre davantage de possibilités d’optimisation des requêtes. #70171 (Igor Nikonov).
  • Ajout de la possibilité de définir l’utilisateur et le mot de passe dans les http_handlers (pour dynamic_query_handler/predefined_query_handler). #70725 (Azat Khuzhin).
  • Prise en charge de ALTER TABLE ... MODIFY/RESET SETTING ... pour certains paramètres du moteur de stockage S3Queue. #70811 (Kseniia Sumarokova).
  • Ne plus appeler l’API d’object storage lors du listage des répertoires, car cela peut entraîner des coûts inutiles. À la place, stocker en mémoire la liste des noms de fichiers. En contrepartie, le temps de chargement initial augmente, tout comme la mémoire nécessaire pour stocker les noms de fichiers. #70823 (Julia Kartseva).
  • Ajout du paramètre --threads à clickhouse-compressor, ce qui permet de compresser les données en parallèle. #70860 (Alexey Milovidov).
  • La taille de l’historique du client Replxx est désormais configurable. #71014 (Jiří Kozlovský).
  • Ajout du paramètre prewarm_mark_cache, qui active le chargement des marks dans le mark cache lors des insertions, des fusions, des récupérations de parts et au démarrage de la table. #71053 (Anton Popov).
  • Prise en charge du type Boolean par le lecteur natif Parquet. #71055 (Arthur Passos).
  • Réessai d’un plus grand nombre d’erreurs lors des interactions avec S3, comme “Malformed message”. #71088 (Alexey Milovidov).
  • Réduction du niveau de journalisation de certains messages concernant S3. #71090 (Alexey Milovidov).
  • Prise en charge de l’écriture de fichiers HDFS contenant des espaces. #71105 (exmy).
  • system.session_log convient tout à fait. Cela clôt #51760. #71150 (Alexey Milovidov).
  • Correction des jointures RIGHT / FULL dans les requêtes avec répliques parallèles. Désormais, les jointures RIGHT peuvent être exécutées avec des répliques parallèles (la lecture de la table de droite est distribuée). Les jointures FULL ne peuvent pas être parallélisées entre les nœuds et sont exécutées localement. #71162 (Igor Nikonov).
  • Ajout de paramètres limitant le nombre de tables répliquées, de dictionnaires et de vues. #71179 (Kirill).
  • Corrige #71227. #71286 (Arthur Passos).
  • GROUP BY/ORDER BY automatiques sur disque en fonction de l’utilisation de la mémoire du serveur/de l’utilisateur. Contrôlé par les paramètres de requête max_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sort. #71406 (Azat Khuzhin).
  • Ajout de tableaux de bord par hôte Overview (host) et Cloud overview (host) à l’Advanced dashboard. #71422 (alesapin).
  • La fonction translate prend désormais en charge la suppression de caractères si l’argument from contient plus de caractères que l’argument to. Exemple : SELECT translate('clickhouse', 'clickhouse', 'CLICK') renvoie désormais CLICK. #71441 (shuai.xu).
  • Ajout des nouvelles fonctions parseDateTime64, parseDateTime64OrNull et parseDateTime64OrZero. Par rapport à la fonction existante parseDateTime (et à ses variantes), elles renvoient une valeur de type DateTime64 au lieu de DateTime. #71581 (kevinyhzou).
  • Ajuste à la taille exacte le tableau index_granularity en mémoire afin de réduire l’empreinte mémoire de la famille de moteurs de table MergeTree. #71595 (alesapin).
  • Les applications en ligne de commande mettront en évidence la syntaxe même pour les instructions multiples. #71622 (Alexey Milovidov).
  • Les applications en ligne de commande renverront des codes de sortie non nuls en cas d’erreur. Dans les versions précédentes, l’application disks renvoyait zéro en cas d’erreur, et les autres applications renvoyaient zéro pour les erreurs 256 (PARTITION_ALREADY_EXISTS) et 512 (SET_NON_GRANTED_ROLE). #71623 (Alexey Milovidov).
  • Le format Vertical (également activé lorsque vous terminez votre requête par \G) bénéficie désormais des fonctionnalités des formats Pretty, notamment : - la mise en évidence des séparateurs de milliers dans les nombres ; - l’affichage d’une indication facilitant la lecture des nombres. #71630 (Alexey Milovidov).
  • Permet de désactiver l’augmentation de la taille du buffer mémoire pour le cache du système de fichiers via le paramètre filesystem_cache_prefer_bigger_buffer_size. #71640 (Kseniia Sumarokova).
  • Ajout d’un paramètre distinct background_download_max_file_segment_size pour la taille maximale des segments de fichier téléchargés en arrière-plan dans le cache du système de fichiers. #71648 (Kseniia Sumarokova).
  • Modifie la valeur par défaut de enable_http_compression de 0 à 1. Ferme #71591. #71774 (Peter Nguyen).
  • Prise en charge de ALTER de Object vers JSON. #71784 (Pavel Kruglov).
  • Amélioration légère du parsing du type JSON : si le bloc actuel pour le chemin JSON contient des valeurs de plusieurs types, tentative de sélection du type le plus approprié en testant les types selon un ordre spécial de best effort. #71785 (Pavel Kruglov).
  • Auparavant, la lecture de system.asynchronous_metrics attendait la fin d’une mise à jour concurrente. Cela pouvait prendre beaucoup de temps lorsque le système était fortement chargé. Avec ce changement, les valeurs collectées précédemment peuvent toujours être lues. #71798 (Alexander Gololobov).
  • polling_max_timeout_ms est défini sur 10 minutes et polling_backoff_ms sur 30 secondes. #71817 (Kseniia Sumarokova).
  • Les requêtes comme ‘SELECT - FROM t LIMIT 1’ chargeaient les index des parts alors qu’ils n’étaient pas utilisés. #71866 (Alexander Gololobov).
  • Allow_reorder_prewhere_conditions est activé par défaut avec les anciens paramètres de compatibilité. #71867 (Raúl Marín).
  • N’incrémente pas le compteur ILLEGAL_TYPE_OF_ARGUMENT dans la table system.errors lorsque la fonction bitmapTransform est utilisée et que les types d’argument sont valides. #71971 (Dmitry Novik).
  • Lors de la récupération directe de données depuis un dictionnaire via le moteur Dictionary, la table function dictionary, ou un SELECT direct sur le dictionnaire lui-même, il suffit désormais d’avoir la permission SELECT ou la permission dictGet sur le dictionnaire. Cela s’aligne sur les tentatives précédentes visant à empêcher les contournements d’ACL : https://github.com/ClickHouse/ClickHouse/pull/57362 et https://github.com/ClickHouse/ClickHouse/pull/65359. Cela rend également ce dernier changement rétrocompatible. #72051 (Nikita Mikhaylov).
  • Ajout d’un sélecteur déroulant du tableau de bord sur la page HTML du tableau de bord avancé, à partir de la table system.dashboards. #72081 (Sergei Trifonov).
  • Respecte prefer_locahost_replica lors de la construction du plan pour INSERT ... SELECT distribué. #72190 (filimonov).
  • Le problème est décrit ici. Azure Iceberg Writer crée des fichiers de métadonnées Iceberg (ainsi que des fichiers manifest) qui ne respectent pas les spécifications. Dans cette PR, une tentative a été ajoutée pour lire des métadonnées Iceberg au format v1 avec le lecteur v2 (car elles sont écrites de cette manière), ainsi qu’une erreur lorsque les champs correspondants n’ont pas été créés dans un fichier manifest. #72277 (Daniil Ivanik).
  • Les types JSON/Dynamic/Variant passent du statut de fonctionnalités expérimentales à celui de bêta. #72294 (Pavel Kruglov).
  • Il est désormais possible d’utiliser CREATE MATERIALIZED VIEW avec UNION [ALL] dans la requête. Le comportement est le même que pour une vue matérialisée avec JOIN : *seule la première table de l’expression SELECT servira de déclencheur pour l’insertion-, toutes les autres tables seront ignorées. #72347 (alesapin).
  • Accélère les insertions dans MergeTree lorsqu’une seule valeur de clé de partition est présente dans le lot inséré. #72348 (alesapin).
  • Ajoute la nouvelle métrique MergeTreeIndexGranularityInternalArraysTotalSize à system.metrics. Cette métrique est nécessaire pour identifier les instances avec d’énormes jeux de données susceptibles de rencontrer un problème d’utilisation élevée de la mémoire. #72490 (Miсhael Stetsyuk).
  • Toutes les variantes orthographiques du mot Null sont désormais reconnues lorsqu’une requête utilise Format Null. Auparavant, les autres formes (par ex. NULL) ne provoquaient pas d’exception, mais en même temps, le format Null n’était en réalité pas utilisé dans ces cas. #72658 (Nikita Taranov).
  • Autorisation des valeurs inconnues dans un Set qui ne sont pas présentes dans Enum. Correction de #72662. #72686 (zhanglistar).
  • Ajout de total_bytes_with_inactive à system.tables pour comptabiliser le nombre total d’octets des parts inactives. #72690 (Kai Zhu).
  • Ajout de MergeTreeSettings à system.settings_changes. #72694 (Raúl Marín).
  • Prise en charge de l’opérateur de recherche de chaînes (par ex. like) pour le type de données Enum, correction de #72661. #72732 (zhanglistar).
  • Prise en charge du type JSON dans la fonction notEmpty. #72741 (Pavel Kruglov).
  • Prise en charge de l’analyse de l’erreur S3 de GCS AuthenticationRequired. #72753 (Vitaly Baranov).
  • Prise en charge du type Dynamic dans les fonctions ifNull et coalesce. #72772 (Pavel Kruglov).
  • Ajout des profile events JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount. #72842 (Vladimir Cherkasov).
  • Prise en charge de Dynamic dans les fonctions toFloat64/touInt32/etc. #72989 (Pavel Kruglov).

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

  • Les parts dédupliquées pendant la requête ATTACH PART ne restent plus bloquées avec le préfixe attaching_. #65636 (Kirill).
  • Correction d’un bug où DateTime64 perdait de la précision avec la fonction IN. #67230 (Yarik Briukhovetskyi).
  • Correction d’une possible erreur logique lors de l’utilisation de fonctions avec IGNORE/RESPECT NULLS dans ORDER BY ... WITH FILL, corrige #57609. #68234 (Vladimir Cherkasov).
  • Correction de rares erreurs logiques dans les insertions asynchrones au format Native lorsque la limite de mémoire est atteinte. #68965 (Anton Popov).
  • Correction de COMMENT dans CREATE TABLE pour une colonne EPHEMERAL. #70458 (Yakov Olkhovskiy).
  • Correction d’une erreur logique dans JSONExtract avec LowCardinality(Nullable). #70549 (Pavel Kruglov).
  • Correction du comportement lorsque le nom de la table est trop long. #70810 (Yarik Briukhovetskyi).
  • Ajout de la possibilité de surcharger Content-Type via des headers utilisateur dans le moteur URL. #70859 (Artem Iurin).
  • Correction de l’erreur logique dans StorageS3Queue : “Cannot create a persistent node in /processed since it already exists”. #70984 (Kseniia Sumarokova).
  • Correction du bug qui ne prenait pas en compte la colonne _row_exists dans l’option de reconstruction de projection lightweight delete. #71089 (Shichao Jin).
  • Correction d’une valeur erronée dans system.query&#95;metric&#95;log due à une condition de concurrence inattendue. #71124 (Pablo Marcos).
  • Correction du nom incohérent de la fonction d’agrégation quantileExactWeightedInterpolated. Le bug a été introduit dans https://github.com/ClickHouse/ClickHouse/pull/69619. cc @Algunenano. #71168 (李扬).
  • Correction de l’exception bad&#95;weak&#95;ptr avec Dynamic lors de la comparaison de fonctions. #71183 (Pavel Kruglov).
  • Ne supprime plus un blob lorsque des nœuds l’utilisent dans ReplicatedMergeTree avec la réplication zero-copy. #71186 (Antonio Andelic).
  • Correction de la non-prise en compte des paramètres de format au format Native via HTTP et les insertions asynchrones. #71193 (Pavel Kruglov).
  • Les requêtes SELECT exécutées avec le paramètre use_query_cache = 1 ne sont plus rejetées si le nom d’une system table apparaît comme littéral. Par exemple, SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true; fonctionne désormais. #71254 (Robert Schulze).
  • Correction d’un bug entraînant une augmentation de l’utilisation mémoire si enable_filesystem_cache=1, alors que le disk de la configuration de stockage n’avait aucune configuration de cache. #71261 (Kseniia Sumarokova).
  • Correction d’une erreur possible “Cannot read all data” lors de la désérialisation d’un dictionnaire LowCardinality à partir d’une colonne Dynamic. #71299 (Pavel Kruglov).
  • Correction d’un nettoyage incomplet du format de sortie parallèle dans le client. #71304 (Raúl Marín).
  • Ajout du déséchappement manquant dans les named collections. Sans ce correctif, clickhouse-server ne peut pas démarrer. #71308 (MikhailBurdukov).
  • Correction des async inserts avec des blocks vides via le native protocol. #71312 (Anton Popov).
  • Correction d’un formatage AST incohérent lors de l’attribution de grants avec caractères génériques incorrects #71309. #71332 (pufit).
  • Vérification des types suspects et Experimental dans les type hints JSON. #71369 (Pavel Kruglov).
  • Correction de l’erreur Invalid number of rows in Chunk avec une colonne Variant. #71388 (Pavel Kruglov).
  • Correction d’un crash dans la table function mongodb lors du passage d’arguments invalides (par ex. NULL). #71426 (Vladimir Cherkasov).
  • Correction d’un crash avec optimize_rewrite_array_exists_to_has. #71432 (Raúl Marín).
  • Correction d’une erreur NoSuchKey lors du rollback d’une transaction quand la création d’un directory échoue pour le disk palin_rewritable. #71439 (Julia Kartseva).
  • Correction de l’utilisation du paramètre max_insert_delayed_streams_for_parallel_write dans les inserts. Auparavant, il fonctionnait incorrectement, ce qui pouvait entraîner une utilisation mémoire élevée dans les inserts qui écrivent des données dans plusieurs partitions. #71474 (Anton Popov).
  • Correction d’une erreur possible Argument for function must be constant (ancien analyzer) dans le cas où arrayJoin peut apparemment apparaître dans la condition WHERE. Régression après https://github.com/ClickHouse/ClickHouse/pull/65414. #71476 (Nikolai Kochetov).
  • Prévention d’un crash dans SortCursor avec 0 colonnes (ancien analyzer). #71494 (Raúl Marín).
  • Correction d’une valeur date32 hors plage causée par des données orc non initialisées. Pour plus de détails, voir https://github.com/apache/incubator-gluten/issues/7823. #71500 (李扬).
  • Correction du calcul de la taille des colonnes dans la Wide part pour les types Dynamic et JSON. #71526 (Pavel Kruglov).
  • Correction de l’analyseur lorsqu’une requête dans une vue matérialisée utilise IN avec une CTE. Clôt #65598. #71538 (Maksim Kita).
  • Retourne 0 ou le caractère par défaut au lieu de lever une erreur dans les fonctions bitShift en cas de dépassement des limites. #71580 (Pablo Marcos).
  • Correction de crashs du serveur lors de l’utilisation d’une vue matérialisée avec certains moteurs. #71593 (Pervakov Grigorii).
  • ARRAY JOIN avec une structure de données imbriquée contenant un alias vers un Array constant provoquait un déréférencement de pointeur nul. Clôt #71677. #71678 (Alexey Milovidov).
  • Correction de LOGICAL_ERROR lors de l’exécution de ALTER avec un Tuple vide. Corrige #71647. #71679 (Amos Bird).
  • Ne transforme plus les ensembles constants dans les prédicats sur les colonnes de partition dans le cas de l’opérateur NOT IN. #71695 (Eduard Karacharov).
  • Correction de CAST de LowCardinality(Nullable) vers Dynamic. Auparavant, cela pouvait entraîner l’erreur Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable. #71742 (Pavel Kruglov).
  • Correction d’une exception avec toDayOfWeek dans une condition WHERE avec une clé primaire de type DateTime64. #71849 (Yakov Olkhovskiy).
  • Correction du remplissage des valeurs par défaut après le parsing dans des colonnes sparse. #71854 (Anton Popov).
  • Correction d’une erreur de la fonction GROUPING lorsque l’entrée est ALIAS sur une table distribuée, clôt #68602. #71855 (Vladimir Cherkasov).
  • Correction des instructions select qui utilisent la clause WITH TIES et qui pouvaient ne pas renvoyer suffisamment de lignes. #71886 (wxybear).
  • Correction d’une exception TOO_LARGE_ARRAY_SIZE provoquée lorsqu’une colonne issue de l’évaluation de arrayWithConstant était considérée à tort comme dépassant la limite de taille du tableau. #71894 (Udi).
  • clickhouse-benchmark signalait des métriques incorrectes pour les requêtes durant plus d’une seconde. #71898 (Alexey Milovidov).
  • Correction d’une data race entre l’indicateur de progression et la table de progression dans clickhouse-client. Ce problème est visible lorsque FROM INFILE est utilisé. Intercepte les frappes clavier pendant les requêtes INSERT pour basculer l’affichage de la table de progression. #71901 (Julia Kartseva).
  • Correction de la sérialisation des valeurs Dynamic dans les formats Pretty JSON. #71923 (Pavel Kruglov).
  • Correction de la colonne rows_processed dans system.s3/azure_queue_log, cassée dans la version 24.6. Clôt #69975. #71946 (Kseniia Sumarokova).
  • Correction d’un cas où les fonctions s3/s3Cluster pouvaient renvoyer un résultat incomplet ou lever une exception. Cela se produisait lorsqu’un glob pattern était utilisé dans l’URI S3 (comme pattern/*) et qu’un objet vide avec la clé pattern/ existait (de tels objets sont créés automatiquement par la Console S3). De plus, la valeur par défaut du paramètre s3_skip_empty_files a été changée de false à true. #71947 (Nikita Taranov).
  • Correction d’un crash dans la coloration syntaxique de clickhouse-client. Clôt #71864. #71949 (Nikolay Degterinsky).
  • Correction de l’erreur Illegal type pour les tables MergeTree avec une fonction monotone binaire dans ORDER BY lorsque le premier argument est constant. Corrige #71941. #71966 (Nikolai Kochetov).
  • Autoriser uniquement les requêtes SELECT dans EXPLAIN AST utilisé à l’intérieur d’une sous-requête. Les autres types de requêtes entraînent une erreur logique : ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ ou Inconsistent AST formatting. #71982 (Pavel Kruglov).
  • Lors de l’insertion d’un enregistrement via clickhouse-client, le client lit les descriptions de colonnes depuis le serveur. Mais un bug faisait que nous écrivions les descriptions dans le mauvais ordre, alors qu’il devrait être [statistics, ttl, settings]. #71991 (Han Fei).
  • Correction de la mise en forme des commandes ALTER MOVE PARTITION ... TO TABLE ... lorsque format_alter_commands_with_parentheses est activé. #72080 (János Benjamin Antal).
  • Ajout du nom de format inféré à la requête CREATE dans les engines File/S3/URL/HDFS/Azure. Auparavant, le nom du format était redéduit à chaque redémarrage du serveur et, si les fichiers de données spécifiés avaient été supprimés, cela provoquait des erreurs au démarrage du serveur. #72108 (Pavel Kruglov).
  • Correction d’un bug où min_age_to_force_merge_on_partition_only restait bloqué en essayant de fusionner de manière répétée la même partition, déjà fusionnée en une seule part, et ne fusionnait pas les partitions qui comportaient plusieurs parts. #72209 (Christoph Wurm).
  • Correction d’un crash dans SimpleSquashingChunksTransform qui se produisait dans de rares cas lors du traitement de colonnes creuses. #72226 (Vladimir Cherkasov).
  • Correction d’une situation de concurrence dans GraceHashJoin, qui pouvait entraîner l’absence de certaines lignes dans la sortie du JOIN. #72233 (Nikita Taranov).
  • Correction des requêtes ALTER DELETE avec la colonne matérialisée _block_number (si le paramètre enable_block_number_column est activé). #72261 (Anton Popov).
  • Correction d’une situation de concurrence lorsque ColumnDynamic::dumpStructure() est appelée de manière concurrente, par exemple dans le constructeur de ConcurrentHashJoin. #72278 (Nikita Taranov).
  • Corrige une possible LOGICAL_ERROR liée à des colonnes dupliquées dans ORDER BY ... WITH FILL. #72387 (Vladimir Cherkasov).
  • Corrige des incompatibilités de type dans plusieurs cas après application de optimize_functions_to_subcolumns. #72394 (Anton Popov).
  • Corrige un échec lors de l’analyse des requêtes BACKUP DATABASE db EXCEPT TABLES db.table. #72429 (Konstantin Bogdanov).
  • Empêche la création d’un Variant vide. #72454 (Pavel Kruglov).
  • Corrige le formatage incorrect de result_part_path dans system.merges. #72567 (Konstantin Bogdanov).
  • Corrige l’analyse d’un glob ne contenant qu’un seul élément. #72572 (Konstantin Bogdanov).
  • Corrige la génération de requête pour le serveur follower dans le cas d’une distributed query avec ARRAY JOIN. Corrige #69276. #72608 (Dmitry Novik).
  • Corrige un bug où DateTime64 dans DateTime64 ne renvoie rien. #72640 (Yarik Briukhovetskyi).
  • Corrige l’erreur “No such key” en mode Unordered de S3Queue lorsque le paramètre tracked_files_limit est inférieur au rythme d’apparition des fichiers S3. #72738 (Kseniia Sumarokova).
  • La suppression du mark cache pouvait prendre un temps notable lorsqu’il était volumineux. Si le mutex de contexte est conservé pendant ce temps, cela bloque de nombreuses autres activités, au point qu’il devient impossible d’établir une nouvelle connexion client avant sa libération. Or, conserver ce mutex n’est pas réellement nécessaire pour la synchronisation : il suffit d’avoir une référence locale vers le cache via un shared ptr. #72749 (Alexander Gololobov).
  • Le cache PK sous-estimait fortement sa taille sur l’une des instances de test. En particulier, les colonnes LowCardinality n’incluaient pas la taille du dictionnaire. La correction consiste à utiliser column->allocatedBytes() ainsi que quelques estimations supplémentaires de l’overhead pour la taille de l’entrée de cache. #72750 (Alexander Gololobov).
  • Corrige l’exception levée dans RemoteQueryExecutor lorsque l’utilisateur n’existe pas localement. #72759 (Andrey Zvonov).
  • Corrige les mutations avec la colonne materialized _block_number (si le paramètre enable_block_number_column est activé). #72854 (Anton Popov).
  • Corrige les opérations de backup/restore avec un disque réinscriptible simple lorsqu’il y a des fichiers vides dans la sauvegarde. #72858 (Kseniia Sumarokova).
  • Annule correctement les inserts dans DistributedAsyncInsertDirectoryQueue. #72885 (Antonio Andelic).
  • Corrige un crash lors de l’analyse de données incorrectes dans des colonnes sparse (cela peut se produire lorsque le paramètre enable_parsing_to_custom_serialization est activé). #72891 (Anton Popov).
  • Corrige un plantage potentiel lors de la restauration depuis une sauvegarde. #72947 (Kseniia Sumarokova).
  • Corrige un bogue dans la méthode de JOIN parallel_hash pouvant survenir lorsqu’une requête contient une condition complexe dans la clause ON, avec des filtres d’inégalité. #72993 (Nikita Taranov).
  • Utilise les paramètres de format par défaut lors de l’analyse du JSON afin d’éviter une désérialisation incorrecte. #73043 (Pavel Kruglov).
  • Corrige un plantage dans les transactions avec un moteur de stockage non pris en charge. #73045 (Raúl Marín).
  • Vérifie la présence de clés JSON en double lors de l’analyse de Tuple. Auparavant, cela pouvait provoquer l’erreur logique Invalid number of rows in Chunk pendant l’analyse. #73082 (Pavel Kruglov).
Dernière modification le 29 juin 2026