Changements non rétrocompatibles
Changements des types de données
- Introduction du type
Geometry. Prise en charge de la lecture des formatsWKBetWKT. Dans les versions précédentes, le typeGeometryétait un alias deString, mais il s’agit désormais d’un type à part entière. #83344 (Konstantin Vedernikov). - Suppression du type Object obsolète. #85718 (Pavel Kruglov).
- Échappement des noms de fichiers créés pour les sous-colonnes du type Variant dans les data parts Wide des tables MergeTree. Ce changement rompt la compatibilité avec les anciennes tables utilisant les types de données Variant/Dynamic/JSON. Il corrige le stockage des types contenant des caractères spéciaux dans Variant (par exemple DateTime avec un fuseau horaire spécifique contenant
\). L’échappement peut être désactivé en modifiant le paramètre MergeTreeescape_variant_subcolumn_filenames(pour conserver la compatibilité, désactivez ce paramètre dans la config de MergeTree ou définissez le paramètrecompatibilitysur la version précédente avant la mise à niveau). Résout #69590. #87300 (Pavel Kruglov).
Modifications des requêtes et des fonctions
- ALTER MODIFY COLUMN exige désormais un
DEFAULTexplicite lors de la conversion de colonnes Nullable en types non Nullable. Auparavant, de telles instructions ALTER pouvaient se bloquer avec des erreurs cannot convert null to not null ; désormais, les NULL sont remplacés par l’expression par défaut de la colonne. Résout #5985. #84770 (Vladimir Cherkasov). - Suppression des paramètres
allow_not_comparable_types_in_order_by/allow_not_comparable_types_in_comparison_functions. Autoriser des types non comparables dans ORDER BY ou dans des fonctions de comparaison peut entraîner des erreurs logiques et des résultats inattendus. Résout #90028. #90527 (Pavel Kruglov). - Correction des fonctions bitShiftLeft et bitShiftRight afin qu’elles renvoient 0 ou une valeur vide dans le cas d’un décalage exactement égal à la taille du type. #91943 (Pablo Marcos).
- Le tokenizer ngram ne renverra plus de ngrams plus courts que la longueur N avec laquelle il a été configuré. Text Search ne renverra aucune ligne lorsque les tokens de recherche sont vides. #89757 (George Larionov).
Changements liés au stockage et aux index
- Suppression de la fonctionnalité obsolète
LIVE VIEW. Si vous utilisezLIVE VIEW, il ne sera pas possible de mettre à niveau vers la nouvelle version. #88706 (Alexey Milovidov). - Il est interdit de créer plusieurs disques
plain-rewritablesur un même chemin partagé de stockage objet, car cela peut entraîner un comportement indéfini en cas de collision entre différentes transactions du stockage des métadonnées. #89038 (Mikhail Artemenko). - Il est désormais interdit de créer des tables
MergeTreespéciales (telles queReplacingMergeTree,CollapsingMergeTree, etc.) avec une cléORDER BYvide, car le comportement de fusion de ces tables n’est pas défini. Si vous devez malgré tout créer une telle table, activez le paramètreallow_suspicious_primary_key. #91569 (Anton Popov). - Plusieurs corrections ont été apportées autour des index implicites. Le schéma affiché ou stocké (métadonnées de Keeper) n’inclura pas les index implicites, comme ceux créés par les paramètres
add_minmax_index_for_numeric_columnsouadd_minmax_index_for_string_columns. Cela peut provoquer des erreurs de métadonnées lorsqu’une table ReplicatedMergeTree est créée ou mise à jour dans une version plus récente alors qu’une réplique existe dans une version plus ancienne. #91429 (Raúl Marín).
Modifications des paramètres et de la configuration
- Prise en charge du balisage des exceptions dans les réponses de résultats HTTP afin de permettre aux clients d’analyser les exceptions de façon plus fiable. Résout #75175. Le paramètre
http_write_exception_in_output_formatest désactivé par défaut pour garantir la cohérence entre les formats. #88818 (Kaviraj Kanagaraj). - Corrige la priorité des paramètres SASL du moteur Kafka. Les paramètres SASL définis au niveau de la table dans les requêtes CREATE TABLE remplacent désormais correctement les paramètres spécifiques au
consumer/producerprovenant des fichiers de configuration. #89401 (János Benjamin Antal). - Les paramètres de configuration ACME
refresh_certificates_task_intervalont été renommés enrefresh_certificates_task_interval_seconds, etrefresh_certificates_beforeenrefresh_certificates_before_seconds. Le paramètrerefresh_certificates_task_interval_secondsattend désormais une valeur en secondes. #92211 (Konstantin Bogdanov). - Signale la désactivation des arguments positionnels dans les projections comme un changement non rétrocompatible. En outre, introduit le paramètre
enable_positional_arguments_for_projectionsafin de permettre une mise à niveau sûre d’un cluster ClickHouse lorsque des arguments positionnels sont présents dans les projections. #92007 (Dmitry Novik).
Modifications du client
- Mise à jour de clickhouse-client pour qu’il renvoie un code de sortie non nul (159 - TIMEOUT_EXCEEDED) lorsqu’une requête dépasse le délai d’attente à cause de
receive_timeout. Auparavant, ces dépassements de délai renvoyaient le code de sortie 0 (succès), ce qui compliquait la détection de ces échecs par les scripts et les outils d’automatisation. #91432 (Sav).
Modifications du format des statistiques
- Lors du passage d’une colonne de
StringàNullable(String), aucune mutation ne sera effectuée sur les données. En revanche, pour la fonction d’agrégationuniq, une structure de données différente est utilisée : pour une colonne nullable,AggregateFunctionNullsera utilisé avec un agrégateuruniqimbriqué.AggregateFunctionNullsérialisera un indicateur booléen supplémentaire. Cela rendra le fichier de statistiques incompatible. Le format des statistiques a changé ; le serveur plantera si des statistiques sont encore dans l’ancien format. Pour éviter cette exception, exécutezALTER TABLE [db.]table MATERIALIZE STATISTICS ALLafin de régénérer les statistiques. #90311 (Han Fei).
Autres changements incompatibles
- Correction de
Fatallors de la compression de données dont la taille n’est pas un multiple de celle des éléments (dans le codec T64). Résout #89282. #89432 (yanglongwei).
Nouvelles fonctionnalités
Fonctions
- Ajout de la nouvelle instruction SQL EXECUTE AS pour prendre en charge l’impersonation d’utilisateur. Résout #39048. #70775 (Shankar).
- Ajout de la fonction
flipCoordinates, qui aplatit le nombre requis de dimensions dans un tableau et permute les pointeurs dans la colonne Tuple. Résout #79469. #79634 (Sachin Kumar Singh). - Amélioration de l’opérateur
IS NOT DISTINCT FROM(<=>) : ajout de la prise en charge de l’inverseIS DISTINCT FROM, ainsi que d’opérandes numériques compatibles de types différents (par exemple,Nullable(UInt32)etNullable(Int64)). #87581 (yanglongwei). - Ajout de la prise en charge de la fonction de fenêtre
cume_dist. Corrige #86920. #88102 (Manuel). - Fonctions permettant de calculer l’aire et le périmètre pour le type Geometry. #89047 (Konstantin Vedernikov).
- Implémentation de la fonction
dictGetKeys, qui renvoie les clés du dictionnaire dont l’attribut est égal à la valeur spécifiée. Elle utilise un cache de recherche inverse par requête, réglé par le paramètremax_reverse_dictionary_lookup_cache_size_bytes, pour accélérer les recherches répétées. #89197 (Nihal Z. Miaji). - Prise en charge de
arrayRemove(arr, elem)pour supprimer du tableauarrtous les éléments égaux àelem. Résout #52099. #89585 (tiwarysaurav). - Introduction de la fonction scalaire
midpoint, qui calcule la moyenne. Résout #89029. #89679 (simonmichal). - Vous pouvez désormais récupérer à la fois l’argument et la valeur minimale ou maximale correspondante à l’aide des nouvelles fonctions
argAndMinetargAndMax. #89884 (AbdAlRahman Gad). - Ajout de la fonction SQL
HMAC(algorithm, message, key)dans le cadre de #73900 et #38775. #90837 (Mikhail f. Shiryaev). - Ajout de la prise en charge de la fonction
has()pour utiliser la clé primaire et les index de saut de données lorsque le premier argument est un tableau constant. Ferme #90980. #91023 (Nihal Z. Miaji).
Tables système
- Ajout de la table
system.unicode, qui contient une liste de caractères Unicode et de leurs propriétés. Résout #80055. #80857 (wxybear). - Ajout d’une nouvelle table système
shared_merge_tree_condemned_parts, similaire àshared_merge_tree_outdated_parts, qui répertorie les parts condamnées sur le point d’être supprimées par PartsKillerThread. (Smita Kulkarni).
Moteurs de table et stockage
- Prise en charge d’une partie de l’API HTTP Query de Prometheus. Pour l’activer, ajoutez une règle de type
query_apidans la section<prometheus>du fichier de configuration. Les handlers pris en charge sont/api/v1/query_rangeet/api/v1/query. #86132 (Nikita Mikhaylov). - Les utilisateurs peuvent désormais configurer les tables S3/Azure Queue pour déplacer ou taguer les fichiers traités, en plus des options existantes permettant de conserver ou de supprimer les fichiers. Résout #72944. #86907 (Murat Khairulin).
- Ajout d’un nouveau paramètre MergeTree
merge_max_dynamic_subcolumns_in_wide_partpermettant de limiter le nombre de sous-colonnes dynamiques dans la Wide part après fusion, indépendamment des paramètres spécifiés dans le type de données. #87646 (Pavel Kruglov). - Intégration du catalogue Microsoft OneLake. #89366 (Konstantin Vedernikov).
- Prise en charge de la syntaxe
CREATE OR REPLACEpour les tables temporaires. Ferme #35888. #89450 (Aleksandr Musorin). - Prise en charge de la jointure
direct(boucle imbriquée) pour les tables MergeTree. Pour l’utiliser, spécifiez-la comme seule option dans le paramètre :join_algorithm = 'direct'. #89920 (Vladimir Cherkasov). - Cette PR introduit des paramètres au niveau des projections, exposés via la nouvelle clause
WITH SETTINGSdansALTER TABLE ... ADD PROJECTION. Ces paramètres permettent aux projections de redéfinir certains paramètres de stockage MergeTree (par ex.index_granularity,index_granularity_bytes) pour chaque projection. #90158 (Amos Bird).
Iceberg et les data lakes
- Prise en charge de
ORDER BYdans l’opérationCREATEpour Iceberg, avec tri dansINSERT. Résout #89916. #90141 (Konstantin Vedernikov).
Fonctionnalités SQL et de requête
- Ajout de l’option
allow_reentryà la fonction d’agrégationwindowFunnel. Lorsqu’elle est activée avecstrict_order, elle ignore les événements qui ne respectent pas l’ordre au lieu d’interrompre l’analyse du funnel. Cela permet de gérer les parcours utilisateur avec des actualisations (A->A->B) ou des retours en arrière dans la navigation (A->B->A->C) sans sous-estimer les taux de conversion. #86916 (Lee ChaeRok). - L’utilisateur peut désormais ajouter un nouvel argument
preprocessorlors de la construction d’un index textuel. Cet argument est une expression arbitraire qui transforme chaque document avant la tokenization. #88272 (Jimmy Aguilar Mena). - Ajout de la prise en charge de
LIMITetOFFSETfractionnaires pour sélectionner une fraction d’une table. Clôt #81892. #88755 (Ahmed Gouda). - Ajout du paramètre
into_outfile_create_parent_directoriespour créer automatiquement les répertoires parents pour INTO OUTFILE, ce qui évite les erreurs lorsque les chemins de sortie n’existent pas. Résout #88610. #88795 (Saksham). - Ajout du paramètre
type_json_skip_invalid_typed_pathspour désactiver les exceptions lors des insertions/conversions de type vers le type JSON lorsque le JSON d’entrée ne peut pas être converti en chemins typés explicites dans le type JSON. Bascule alors vers la valeur null/zéro du chemin typé. Clôt #86917. #89886 (Max Justus Spransy).
Fonctionnalités du client et de la CLI
- Le client CLI peut désormais masquer le message « La version du serveur ClickHouse est plus ancienne que celle du client ClickHouse. Cela peut indiquer que le serveur n’est pas à jour et peut être mis à niveau. » en utilisant
--no-server-client-version-messageou en le définissant surfalse. #87784 (Larry Snizek). - Accédez aux instances ClickHouse Cloud à l’aide des identifiants Cloud avec —login. #89261 (Krishna Mannem).
- L’interface web propose désormais un bouton de téléchargement. Il télécharge le résultat complet même si l’interface n’en affiche qu’une partie. #89768 (Alexey Milovidov).
Configuration du serveur et surveillance
- Ajout d’un champ
memory_usageàX-ClickHouse-ProgressetX-ClickHouse-Summary. Cela permet de collecter en temps réel, côté client, l’utilisation mémoire des requêtes. #88393 (Christoph Wurm). - Ajout du paramètre
send_profile_events, qui permet aux clients de réduire le trafic réseau lorsque les événements de profil ne sont pas utilisés. #89588 (Kaviraj Kanagaraj).
Keeper
- Compatibilité de Keeper avec ZooKeeper : create with statistics. #88797 (Konstantin Vedernikov).
- Prise en charge des watches persistants de ZooKeeper dans ClickHouse Keeper. #88813 (Konstantin Vedernikov).
Formats d’entrée et de sortie
- Ajout du nouveau format d’entrée/sortie
Buffers. Ce format est similaire àNative; toutefois, contrairement àNative, il ne stocke ni les noms de colonnes, ni les types de colonnes, ni aucune métadonnée supplémentaire. Résout #84017. #91156 (Nihal Z. Miaji). - Ajout du paramètre
arrow_flight_request_descriptor_typepour prendre en charge Dremio et d’autres serveurs Arrow Flight qui nécessitent des descripteurs de type commande. Corrige #89523. #89826 (Shreyas Ganesh). - Ajout du paramètre
kafka_schema_registry_skip_bytesau Kafka table engine pour ignorer les octets d’en-tête de l’enveloppe (par exemple, le préfixe de 19 octets d’AWS Glue Schema Registry) avant d’analyser la charge utile du message. #89621 (Taras Polishchuk).
Autres nouvelles fonctionnalités
- Ajout d’un paramètre
max_streams_for_files_processing_in_cluster_functionspour contrôler le nombre de flux lors de la lecture parallèle de fichiers dans les fonctions de table cluster. Clôt #90223. #91323 (Pavel Kruglov). - Permet de désactiver, pour chaque requête, le téléchargement en arrière-plan des données des parts voisines. Corrige #89524. #89668 (tanner-bruce).
- Prise en charge expérimentale d’e2k (Elbrus-2000) comme nouvelle plateforme pour ClickHouse. #90159 (Ramil Sattarov).
Fonctionnalités expérimentales
- Prise en charge de la récupération de certificats TLS auprès de fournisseurs ACME, RFC 8555. #66315 (Konstantin Bogdanov).
- Une nouvelle logique permet désormais d’exécuter automatiquement les requêtes à l’aide de répliques parallèles, contrôlées par le paramètre
automatic_parallel_replicas_mode. #87541 (Nikita Taranov). - La recherche en texte intégral est désormais en aperçu privé (après avoir été précédemment au stade expérimental). #88928 (Robert Schulze).
Aliaspasse au statut expérimental et peut être activé avecallow_experimental_alias_table_engine=1. #89712 (Kai Zhu).
Améliorations des performances
Exécution et optimisation des requêtes
- Échouer rapidement lorsque les requêtes atteignent les limites de lignes. Résout #61872. #62804 (Sean Haynes).
- Ajouter une optimisation pour supprimer les colonnes inutilisées dans les plans de requête. Résout #75152. #76487 (János Benjamin Antal).
- Optimisation des grandes valeurs dans ConstantNode. Clôt #72880. #81104 (Yakov Olkhovskiy).
- Précharger les clés pendant l’itération de la table de hachage afin de minimiser les défauts de cache. #84708 (lgbo).
- Améliorer la vitesse de décompression de LZ4 en simplifiant le code et en ajustant l’algorithme de sélection. #88360 (Raúl Marín).
- Implémenter la réplication lazy des colonnes dans JOIN et ARRAY JOIN. Éviter de convertir des représentations spéciales de colonnes comme Sparse et Replicated en colonnes complètes dans certains formats de sortie. Cela évite des copies de données inutiles en mémoire. #88752 (Pavel Kruglov).
- Utiliser des opérations SIMD avancées pour les fonctions logiques via le dispatch dynamique. #90432 (Raúl Marín).
- Améliorer les performances des fonctions JIT en évitant d’initialiser inutilement à zéro la colonne de résultat. #90449 (Raúl Marín).
- Accélérer la décompression T64 via le dispatch dynamique. #90610 (Raúl Marín).
- Accélérer la conversion des colonnes en bool (dans les clauses
WHERE) via le dispatch dynamique. #91203 (Raúl Marín). - Accélérer le tri d’un seul block numérique via le dispatch dynamique. #91213 (Raúl Marín).
Optimisations des JOIN
- Les
RIGHTetFULL JOINutilisent désormais ConcurrentHashJoin ; cela signifie que ces types de jointures s’exécutent maintenant avec un degré de parallélisme plus élevé. Cela améliore jusqu’à 2 fois divers cas deRIGHTetFULL JOIN`. Résout #78027. #78462 (Yarik Briukhovetskyi). - Permet de réécrire
ANY LEFT JOINouANY RIGHT JOINenALL INNER JOINdans certains cas. #89403 (Dmitry Novik). - Ajout de la prise en charge des runtime filters de
JOINpour les jointuresANTI. Refactorisation également de l’implémentation des runtime filters afin de réduire la contention sur les verrous. #89710 (Dmitry Novik). - Ajout de la prise en charge du maintien de la lecture dans l’ordre depuis la table de gauche dans les opérations
LEFT/INNER JOIN, ce qui peut être exploité par les étapes suivantes. #89815 (Vladimir Cherkasov).
Optimisations de MergeTree et du stockage
- Requêtes
SELECTjusqu’à 8x plus rapides avec un fort élagage des partitions sur des tables comportant plus de 10K parts. #85535 (James Morrison). - Lorsqu’une requête utilise une table de hachage fixe pour l’état d’agrégation (group by sur un petit entier), ClickHouse fusionne l’état d’agrégation en parallèle pour accélérer la requête. Résout #63666. #87366 (Jianfei Hu).
- Parquet reader v3 est activé par défaut. #88827 (Michael Kolupaev).
- Les requêtes peuvent désormais tirer parti simultanément de optimize_read_in_order et de query_plan_optimize_lazy_materialization. Résout #88767. #88866 (Manuel).
- Utilise une projection d’agrégation pour les requêtes avec
DISTINCT. Ferme #86925. #88894 (Nihal Z. Miaji). - Exécute la transformation
LIMIT BYen streaming lorsque l’ordre de tri en entrée correspond aux clés de LIMIT BY. #88969 (Eduard Karacharov). - Ajout de la prise en charge de la sérialisation sparse pour les colonnes de type Nullable. #88999 (Amos Bird).
- Optimise le filtrage sur place du lecteur MergeTree. Résout #87119. #90630 (Xiaozhe Yu).
- Introduit une heuristique supplémentaire pour réduire la largeur des fusions sélectionnées. #91163 (Mikhail Artemenko).
Optimisations des index et de la recherche textuelle
- ClickHouse utilise désormais les skip indexes pour effectuer l’analyse des index sur des clauses
WHEREavec des conditions de filtrage reliées par un mélange deANDet deOR. Auparavant, la clauseWHEREdevait être une conjonction (AND) de conditions de filtrage pour utiliser les skip indexes. Un nouveau paramètreuse_skip_indexes_for_disjunctions(par défaut : activé) contrôle cette fonctionnalité. #87781 (Shankar Iyer). - Amélioration des performances de filtrage pour les prédicats avec des fonctions telles que
like,equals,haset d’autres, en exploitant un filtre préliminaire supplémentaire construit à partir de l’index textuel. Cette optimisation est activée via le paramètrequery_plan_text_index_add_hint. #88550 (Anton Popov). - Amélioration des performances de l’index textuel grâce à la mise en cache des blocs de dictionnaire et à l’utilisation de tables de hachage pour les recherches de tokens à la place de la recherche binaire. #88786 (Elmi Ahmadov).
- Comme les posting lists sont celles qui occupent le plus d’espace, leur mise en cache améliore les performances lors d’exécutions successives. #88912 (Elmi Ahmadov).
- Optimisation des recherches répétées dans le dictionnaire inverse en effectuant des recherches plus rapides dans un ensemble précalculé de valeurs de clé possibles. Résout #7968. #88971 (Nihal Z. Miaji).
- Optimisation des requêtes
ORDER BY...LIMIT Nen utilisant un skip index et un filtre à seuil dynamique afin de réduire significativement le nombre de lignes traitées. #89835 (Shankar Iyer). - Les utilisateurs devraient constater une latence plus faible lors de l’analyse des index lorsque de grands index
minmax(des millions de granules) sont présents. #90428 (Shankar Iyer).
Optimisations de l’agrégation
- Optimisation de
AggregateFunctionHistogramen triant uniquement la fin du tableau de points et en évitant le tri pour les entrées monotones, avec un gain de performances d’environ 10 %. #85760 (MakarDev). - Légère accélération de certaines opérations countDistinct grâce à la réduction du surcoût de HashSetTable::merge. #89727 (Raúl Marín).
- Amélioration des performances et du comportement de topK. #90091 (Raúl Marín).
- Amélioration des performances des opérations de comparaison sur Decimal. Résout #28192. #90153 (Konstantin Bogdanov).
Optimisations S3 et de sauvegarde
- S3 partitionne les objets en interne selon les préfixes de clés et s’adapte automatiquement à des taux élevés de requêtes par partition. Cette modification introduit deux nouveaux paramètres BACKUP : data_file_name_generator et data_file_name_prefix_length. Lorsque data_file_name_generator=checksum, les fichiers de données de sauvegarde sont nommés à l’aide d’un hachage de leur contenu. #88418 (Julia Kartseva).
- Améliore les performances des query pour les tables S3 créées avec un motif glob en appliquant en amont les valeurs du filtre
_path, ce qui évite les opérations d’énumération S3. Contrôlé par le paramètres3_path_filter_limit. #91165 (Eduard Karacharov).
Optimisations du lac de données
- Exécution distribuée : meilleure répartition des tâches selon les ID de groupes de lignes, plutôt que par fichiers. #87508 (Konstantin Vedernikov).
- Prise en charge de l’élimination des partitions pour les fonctions Paimon. #90253 (JIaQi Tang).
Améliorations
Optimisation et exécution des requêtes
- Autorise
FETCH PARTITIONlorsqu’il y a des disques défectueux dans les tables MergeTree répliquées. #58663 (Duc Canh Le). - Ajoute la fonction
h3PolygonToCells, qui permet de remplir une géométrie avec des hexagones H3. Résout #33991. #66262 (Zacharias Knudsen). - Toutes les requêtes DDL
ON CLUSTERs’exécutent désormais avec le contexte utilisateur de la requête d’origine, pour un meilleur contrôle des accès. #71334 (pufit). - Ajout du parallélisme pour les requêtes
ALTER TABLE ... FREEZE. #71743 (Kirill). - Autorise l’utilisation de seconds arguments non constants pour
IN. Prend également en charge un Tuple comme second argument. #77906 (Yarik Briukhovetskyi). - Cette PR permet d’utiliser des projections ordinaires comme index secondaire. Lorsqu’elle est activée, certains prédicats de requête peuvent servir à lire depuis des parties de projection et à générer des bitmaps afin de filtrer efficacement les lignes à l’étape PREWHERE. #81021 (Amos Bird).
- Active
enable_shared_storage_snapshot_in_querypar défaut pour de meilleures garanties de cohérence. #82634 (Alexey Milovidov). - UNION doit unifier les types avec Variant si nécessaire. Résout #82772. #83246 (Mithun p).
- Journalise les requêtes internes (celles exécutées en interne par les dictionnaires, les vues matérialisées actualisables, etc.) et ajoute la nouvelle colonne
is_internalàsystem.query_log. #83277 (Miсhael Stetsyuk). - Autorise
INSERTdans les colonnesALIAS(colonnes qui font simplement référence à une colonne physique sans expression). Clôt #80060. #84154 (Shaurya Mohan). - Vous pouvez voir une barre de progression, des logs et des statistiques de performance pour les requêtes
CREATE OR REPLACE TABLEavecSELECTdans clickhouse-client. Résout #38416. #87247 (Diskein). - Prend en charge les types JSON et Dynamic dans les fonctions de hachage. Résout #87734. #87791 (Pavel Kruglov).
- La valeur par défaut de
query_plan_optimize_join_order_limitpasse à 10. #89312 (Alexey Milovidov). - L’optimisation enable_lazy_columns_replication est désormais activée par défaut, ce qui réduira l’utilisation mémoire dans les joins. #89316 (Alexey Milovidov).
- Active le paramètre
allow_statistics_optimizepar défaut, afin que l’optimiseur de JOIN utilise les statistiques de colonnes. #89332 (Alexey Milovidov). - Activer
create_table_empty_primary_key_by_defaultpar défaut. Cela améliore la facilité d’utilisation. #89333 (Alexey Milovidov). - Le paramètre
enable_time_time64_typeest désormais activé par défaut. #89345 (Yarik Briukhovetskyi). - Activer le paramètre
allow_special_serialization_kinds_in_output_formatspar défaut. #89402 (Pavel Kruglov). - Ignorer
ON CLUSTERdans les requêtes exécutées via Shared Catalog. (Nikolay Degterinsky). - Ajouter la prise en charge de
ALTER DATABASE MODIFY COMMENTdans Shared Catalog. (Nikolay Degterinsky). - Prendre en charge
CREATE OR REPLACEpour SharedSet/SharedJoin dans les bases de données Shared. (Tuan Pham Anh). - Éviter d’attendre d’autres requêtes lors de l’exécution de
SYNC REPLICAdans SharedMergeTree. (Raúl Marín).
Améliorations du stockage et de MergeTree
- Ajout d’une nouvelle colonne virtuelle
_tags(Map(String, String)) contenant tous les tags associés au blob dans S3. Résout #72945. #77773 (Zicong Qu). - Ajout d’un message d’erreur indiquant que la part a été dédupliquée. #80264 (Aleksandr Musorin).
- Utilise OpenSSL 3.5.4. #81389 (Konstantin Bogdanov).
- Ajout d’un cache pour l’authentification bcrypt. #87115 (Nikolay Degterinsky).
- Les timestamps Parquet sans timezone (isAdjustedToUTC=false) sont désormais lus comme
DateTime64(..., 'UTC')au lieu deDateTime64(...). #87872 (Michael Kolupaev). - Les rôles définis en SQL peuvent désormais être attribués aux utilisateurs définis dans
users.xml. #88139 (c-end). - Si un skip index utilisé dans une requête FINAL porte sur une colonne faisant partie de la clé primaire, l’étape supplémentaire consistant à vérifier l’intersection de la clé primaire dans d’autres parts est inutile et n’est désormais plus effectuée. Résout #85897. #88368 (Shankar Iyer).
- Autorise les insertions dans des tables distantes et des tables de lac de données lorsque
disable_insertion_and_mutationest activé. #88549 (Alexander Tokmakov). - Met en cache les statistiques au niveau des tables et ajoute deux paramètres : le paramètre MergeTree
refresh_statistics_intervalet le paramètre de sessionuse_statistics_cache. #88670 (Han Fei). - Ajout d’un paramètre MergeTree
alter_column_secondary_index_modepour contrôler le traitement des index pendant les mutations. Valeurs possibles : throw, drop, rebuild et compatibility. Clôture #77797. #89335 (Raúl Marín). - Introduction d’un cache par table de
ColumnsDescriptionpour les parts, réduisant l’utilisation de la mémoire lorsque les tables contiennent de nombreuses parts et de nombreuses colonnes. #89352 (Azat Khuzhin).
Tables système et monitoring
- Ajout de plusieurs histogrammes de métriques pour le server et Keeper afin d’instrumenter la durée des différentes étapes d’exécution des requêtes Keeper. #88158 (Miсhael Stetsyuk).
- Ajout de nouvelles statistiques de colonnes dans
system.columns, indiquant les types de statistiques créés sur cette table. #89086 (Han Fei). - L’interface HTTP fournira les en-têtes
AgeetExpireslorsque le cache des résultats de requête est utilisé. Introduction de nouveaux événements de profil :QueryCacheAgeSeconds,QueryCacheReadRows,QueryCacheReadBytes,QueryCacheWrittenRows,QueryCacheWrittenBytes. #89759 (Alexey Milovidov). - Affiche les propriétés de la table dans le Web UI. Un clic sur le nombre de lignes ou d’octets affichera une requête issue de
system.tables. #89771 (Alexey Milovidov). - Ajout des champs
last_error_time,last_error_message,last_error_query_idetlast_error_traceà la tablesystem.error_log. #89879 (Narasimha Pakeer). - Stocke les identifiants des blocs de déduplication dans
system.part_logs. #89928 (Sema Checherinda). - Modification de la valeur par défaut du paramètre
check_query_single_value_resultdetrueàfalse. Cela fait queCHECK TABLErenvoie des résultats détaillés par part au lieu d’un résultat agrégé. #90150 (Robert Schulze). - Ajout d’une nouvelle colonne
parts_in_progress_namesàsystem.mutationspour améliorer le diagnostic. #90155 (Shaohua Wang). - Introduction de
system.background_schedule_pool{,_log}pour améliorer l’introspection des tâches en arrière-plan. #91157 (Azat Khuzhin). - Ajout des événements de profil
FailedInitialQueryetFailedInitialSelectQuery. #91172 (RinChanNOW). - Ajout de trois colonnes dans
system.tablespour les métriques des parts orphelines. (Han Fei). - Expose la valeur de
distributed_cache_client.connection_pool_sizecomme métrique. (Francesco Ciocchetti).
Améliorations du client et de l’UI
- L’utilisateur peut désormais annuler la requête en appuyant sur Ctrl-C lorsque le pager est actif. Résout #80778. #88935 (Grigorii Sokolik).
- La Web UI affiche désormais des barres dans le tableau même lorsque les valeurs sont négatives. #89016 (Alexey Milovidov).
- Les requêtes commençant par des espaces ne sont plus enregistrées dans l’historique. #89116 (Konstantin Bogdanov).
- En mode interactif,
clickhouse-clientetclickhouse-localsurlignent dans la ligne de commande les identifiants portant le même nom que celui actuellement sous le curseur. #89689 (Alexey Milovidov). - Le redimensionneur de la zone de texte des requêtes dans la Web UI occupe désormais toute la largeur. #89457 (Alexey Milovidov).
- Les indications de type dans la Web UI ne débordent plus sur l’en-tête du tableau. #89753 (Alexey Milovidov).
- Vous pouvez désormais commenter ou décommenter rapidement les lignes actuellement sélectionnées dans l’éditeur de requêtes de la Web UI à l’aide de
Ctrl+/(ouCmd+/sur Mac). #91160 (Samuel K.). - Ajout de la prise en charge du chargement de la configuration du client ClickHouse à partir des chemins XDG Base Directory. Résout #89882. #90306 (Wujun Jiang).
Améliorations de S3 et du stockage cloud
- Permet d’utiliser automatiquement les régions AWS à activation explicite pour S3 lorsque la région n’est pas spécifiée dans l’endpoint. #88930 (Andrey Zvonov).
- Définit
s3_retry_attemptssur 500 par défaut pour 25.6 afin de garantir la réussite des sauvegardes lors d’un repartitionnement de S3. #89051 (Nikita Mikhaylov). - Met en cache les identifiants S3 utilisés lors des interactions avec l’endpoint STS afin de pouvoir les réutiliser pour différents appels de fonction. #89734 (Antonio Andelic).
- Les URL présignées fonctionnent désormais avec S3. Résout #65032. #90827 (Yarik Briukhovetskyi).
Améliorations des lacs de données
- Prise en charge de la lecture de DeltaLake CDF via la fonction de table
deltaLakeavec les paramètresdelta_lake_snapshot_start_version,delta_lake_snapshot_end_version. #90431 (Kseniia Sumarokova). - Prise en charge des paramètres de stockage dans l’insert vers une fonction de table, par souci de cohérence avec select. Résout #89386. #91707 (Kseniia Sumarokova).
- Renvoie une erreur « not implemented » pour les requêtes TRUNCATE sur les lacs de données, au lieu de ne rien faire silencieusement. Résout #86604. #91713 (Kseniia Sumarokova).
Améliorations de Kafka
- Les paramètres
kafka_compression_codecetkafka_compression_levelpeuvent désormais être utilisés pour définir la compression des producteurs Kafka. #89073 (János Benjamin Antal). - Ajout de
kafka_consumer_reschedule_msen tant que paramètre configurable du moteur de tableKafka. Résout #89204. #90112 (Jeremy Aguilon).
Améliorations de Keeper
- Ajout d’une limite de taille en octets pour le batch de requêtes append dans Keeper. Cette limite est contrôlée par
keeper_server.coordination_settings.max_requests_append_bytes_size. #90342 (Antonio Andelic). - Ajout d’une vérification côté serveur dans Keeper lors du handshake afin de rejeter les clients lorsque
last_zxid_seen (provided by the client) > last_processed_zxid. #90016 (Miсhael Stetsyuk). - Réduction de la limite de nœuds pour la requête RemoveRecursive de Keeper lors du nettoyage de S3Queue. #90201 (Antonio Andelic).
Améliorations des formats d’entrée/sortie
- Ajout de la prise en charge des UUID dans Parquet lorsqu’ils sont représentés par
FixedString(16)avec le type logique UUID. #74484 (alekseev-maksim). - Prise en charge d’un tableau de chaînes en entrée des fonctions
hasAnyTokensouhasAllTokens. #89124 (Elmi Ahmadov). - Dans le format Pretty, les tuples nommés sont désormais affichés au format Pretty JSON. Cela résout #65022. #91779 (Mostafa Mohamed Salah).
- Ajout d’une limite de taille pour les messages CapnProto. Elle peut être modifiée avec
format_capn_proto_max_message_size. #91888 (Antonio Andelic).
Améliorations de l’index textuel
- L’index textuel fonctionne désormais avec les tables ReplacingMergeTree. #90908 (Elmi Ahmadov).
- Possibilité d’utiliser un index inversé dans
PREWHERE. Résout #89975. #89977 (Peng Jian). - Le tokenizer ngrams peut désormais être créé avec
ngram_length = 1. #91529 (George Larionov). - Ajout d’un cache pour l’en-tête désérialisé de l’index textuel afin de réduire les E/S et d’améliorer les performances des requêtes. #89513 (Elmi Ahmadov).
Autres améliorations
- Correction de la désérialisation binaire de
ArrayetMapafin d’utiliser le paramètremax_binary_array_sizeau lieu demax_binary_string_sizepour valider les limites de taille. #88744 (Raufs Dunamalijevs). - Si la mémoire système est inférieure à 5GB, ne pas verrouiller l’exécutable en mémoire par défaut. #89751 (Alexey Milovidov).
- Réduit l’utilisation mémoire pendant les merges dans la table
system.metric_logen définissantmin_bytes_for_wide_partetvertical_merge_algorithm_min_bytes_to_activatesur 128MB. #89811 (filimonov). - Réessaie en cas d’erreurs réseau lorsque la bibliothèque S3 analyse une réponse XML. #90216 (Sema Checherinda).
- Met à jour les messages d’avertissement à l’approche des limites des garde-fous : affichage des valeurs actuelles et des valeurs de déclenchement. #90438 (Nikita Fomichev).
- Diffuse les chunks dans la table
system.filesystem_cacheau lieu de créer un seul chunk contenant tout l’état du cache. #90508 (Kseniia Sumarokova). - Les entrées du cache d’index de similarité vectorielle sont désormais supprimées lorsque des table parts sont supprimées ou remplacées par des parts plus récentes. #90750 (Shankar Iyer).
- Évite d’exposer la version du serveur ClickHouse dans les réponses d’erreur HTTP renvoyées avant l’authentification. #91003 (filimonov).
- Ajout des nouveaux paramètres
apply_row_policy_after_finaletapply_prewhere_after_finalpour permettre l’application des row policies et des conditionsPREWHEREaprès le traitementFINAL. Corrige #90986. #91065 (Yarik Briukhovetskyi). - Prise en charge du type JSON dans tupleElement. Ferme #81630. #91327 (Pavel Kruglov).
- Prise en charge des indexes négatifs pour l’accès aux éléments de tuple (par ex. tuple.-1). #91665 (Amos Bird).
- Autorise la conversion implicite de type lors du cast de
ArrayversQBit. #91846 (Raufs Dunamalijevs). - Ajout d’une nouvelle colonne,
elapsed_time_microseconds, àsystem.blob_storage_log. #92322 (Alexey Milovidov). - Ajout d’un nouveau paramètre
database_shared_drop_table_delay_secondspermettant aux utilisateurs de contrôler le délai de drop table dans la Shared database. (Nikolay Degterinsky). - Chargement différé des clés chiffrées pour les named collections. (Pablo Marcos).
- Autorise la désactivation du clients cache par buffer pour le distributed cache. (Kseniia Sumarokova).
- Ajout d’une limite partagée pour les connections du distributed cache. (Kseniia Sumarokova).
Corrections de bugs
Cette section contient une sélection de correctifs importants. Pour la liste complète de tous les correctifs de cette version, veuillez consulter le changelog complet
Correctifs d’exécution des requêtes
- Correction d’une valeur incorrecte de
rows_before_limit_at_leastlorsque plusieurs shards distants sont impliqués dans une agrégation distribuée avec fusion. #63511 (Amos Bird). - Correction de l’apparition de
0 rows in setaprès une requêteINSERT INTO ... SELECT. Clôture #47800. #79462 (Engel Danila). - Correction de
multiIfavec des arguments constants et l’évaluation en court-circuit. Clôture #72714. #84546 (Yakov Olkhovskiy). - Correction de
LogicalErrorlors d’une sélection depuis une table avec une contrainte de sous-requête. Résout #84190. #85575 (Pervakov Grigorii). - Correction d’une erreur logique dans la réorganisation du cross join lorsque query_plan_optimize_join_order_limit > 1. Clôture #89409. #88286 (Vladimir Cherkasov).
- Correction de résultats de JOIN incorrects lors de l’utilisation de conditions OR avec des clés uniques dans la table de droite. Résout #89391. #89512 (Vladimir Cherkasov).
- Correction d’une erreur logique dans full_sorting_merge join avec des colonnes dupliquées. Résout #86957. #89495 (Vladimir Cherkasov).
- Correction d’une possible erreur « Invalid number of rows in Chunk » dans un JOIN avec des colonnes dupliquées. Résout #89411. #90053 (Vladimir Cherkasov).
- Correction d’un problème de duplication de données dans un RIGHT JOIN avec une table distribuée lorsque les répliques parallèles sont activées. #90806 (zoomxi).
- Correction d’une erreur logique avec
join_use_nullset plusieurs joins, ainsi qu’avec cross join. #91853 (Vladimir Cherkasov).
Corrections liées aux types de données et à JSON
- Correction de la lecture des sous-colonnes d’une colonne dont le nom contient un point dans certains cas. Résout #81261, #82058, #88169. #87205 (Pavel Kruglov).
- Correction de la lecture de tableaux JSON mixtes contenant des Float et des Bools. Auparavant, l’insertion de telles données provoquait une exception. #88008 (Pavel Kruglov).
- Correction du cast de
LowCardinality(Nullable(T))vers Dynamic. #86365 (Pavel Kruglov). - Correction d’une erreur logique possible lors de la lecture des paths et de leurs sous-colonnes dans la sérialisation JSON avancée des données partagées. Ferme #89805. #89819 (Pavel Kruglov).
- Correction d’un possible débordement de pile lors de la désérialisation binaire des types de données. Ferme #88710. #89822 (Pavel Kruglov).
- Correction d’un possible état incohérent des données partagées et des paths dynamiques dans JSON, pouvant entraîner des erreurs logiques et des résultats inattendus. #90816 (Pavel Kruglov).
- Correction de la fusion des colonnes JSON dans Summing/Aggregating/Coalescing MergeTree. #91151 (Pavel Kruglov).
Correctifs pour MergeTree et le stockage
- Correction de plusieurs problèmes dus à la suppression trop précoce de colonnes dans TTL. Résout #88002. #88860 (Amos Bird).
- Correction d’un résultat min(PK)/max(PK) erroné lorsque PK est triée en ordre inverse. Cela corrige #83619. #88796 (Amos Bird).
- Correction d’un sharding incorrect dans l’optimisation de
JOINlorsque la clé primaire est triée par ordre décroissant. Résout #88512. #88794 (Amos Bird). - Correction d’une condition de concurrence dans le chemin de lecture de l’index de projection. Résout #89497. #89762 (Peng Jian).
- Correction d’une gestion incorrecte, lors de la fusion, des parts vidées par TTL avec des projections non vides lors de l’utilisation de
deduplicate_merge_projection_mode='ignore'. Résout #89430. #89458 (Amos Bird). - Correction de l’erreur
TOO_MANY_MARKS, qui pouvait se produire après certaines requêtesALTERsur des parts compactes. #91980 (alesapin).
Correctifs liés à Parquet et aux formats
- Correction d’une erreur de segmentation dans le lecteur Parquet lorsque
input_format_parquet_local_file_min_bytes_for_seekest défini sur 0. Résout #78456. #88784 (Animesh). - Dans le module d’écriture Parquet, émission de la chaîne
created_byau bon format. #87735 (Michael Kolupaev). - Correction d’un problème d’écriture Parquet qui ne préservait pas l’ordre d’origine lors de l’utilisation de l’écriture monothread avec le writer natif. #90126 (Arthur Passos).
- Correction d’un bug dans le lecteur ORC lors de la lecture de colonnes de chaînes encodées avec DICTIONARY_V2 et ne contenant que des valeurs NULL. #91889 (Peng Jian).
- Correction d’un overflow lors de la lecture du format ORC pour les types Date et DateTime64. Ferme #70976. #91572 (Yarik Briukhovetskyi).
Correctifs pour Iceberg et les lacs de données
- Correction du protocole icebergS3Cluster. Ajout de la prise en charge de l’évolution du schéma, des suppressions positionnelles et des suppressions par égalité dans la fonction cluster Iceberg. Résout #88287. #88919 (Yang Jiang).
- Correction d’une Exception JSON dans une table Iceberg avec une colonne timestamp lors de l’utilisation de Glue catalog. Résout #90210. #90209 (Alsu Giliazova).
- Désormais, ClickHouse n’utilisera plus l’optimisation read-in-order pour Iceberg si l’ordre de tri n’est pas spécifié dans les fichiers manifest. Corrige #89178. #90304 (alesapin).
Correctifs de fonctions
- Correction d’un bug dans la fonction
reverseUTF8. Dans les versions précédentes, elle inversait par erreur les octets des points de code UTF8 de longueur 4. Cela clôt #88913. #88914 (Alexey Milovidov). - Correction du calcul du phi carré, qui entraînait des résultats incorrects dans
cramersV,cramersVBiasCorrected,theilsUetcontingency. #87831 (Nihal Z. Miaji). - Correction de
top_kafin qu’il respecte le paramètre de seuil lorsqu’il est appelé avec un seul argument. Clôt #88757. #88867 (Manuel). - Correction de la troncature des arguments de
countIf(*). Clôt #89372. #89373 (Manuel). - Correction des fonctions
trim,ltrimetrtrim, qui ne fonctionnaient pas avec deux arguments. Clôt #90170. #90305 (Nihal Z. Miaji). - Correction de la fonction
arrayFilter, qui ne fonctionnait pas avec un Array vide et la fonctionisNull. Clôt #73849. #91105 (Nihal Z. Miaji).
Correctifs liés à la mémoire et aux plantages
- Correction d’un plantage possible lors d’une requête distante avec
ARRAY JOINdansINet le paramètreenable_lazy_columns_replicationactivé. Résout #90361. #89997 (Pavel Kruglov). - Correction d’un plantage lors de l’arrêt propre du serveur en raison d’un ordre de destruction incorrect. Résout #82420. #90076 (Nikita Mikhaylov).
- Correction d’un plantage lorsqu’un état de fonction d’agrégation contient une valeur sérialisée d’une colonne LowCardinality(String). #89550 (Pavel Kruglov).
- Correction d’un plantage dans StorageDistributed lors de l’analyse de noms de répertoire de shard mal formés. #90243 (Aleksandr Musorin).
- Correction d’erreurs de limite mémoire intempestives lorsque le cache de pages en espace utilisateur est activé. #91361 (Michael Kolupaev).
- Correction d’un plantage possible dans les fonctions d’agrégation après
MEMORY_LIMIT_EXCEEDED. #92390 (Azat Khuzhin). - Amélioration du suivi de la mémoire lors de la génération des résultats des hash joins. #89560 (Azat Khuzhin).
Corrections de sécurité et d’accès
- Corrige l’erreur
ACCESS_ENTITY_NOT_FOUNDlors de l’exécution de clusterAllReplicas par un utilisateur associé à un rôle inexistant. Résout #87670. #89068 (pufit). - Corrige la validation des accès pour les requêtes
ALTER UPDATElorsqu’une table functionremoteest utilisée aveclocalhostcomme hôte cible. #90761 (pufit). - Corrige la vérification des grants avec joker pour une révocation partielle. #90922 (pufit).
- Corrige la gestion des grants globaux avec des révocations utilisant des jokers. #90928 (pufit).
Correctifs de la base de données Replicated
- Après une récupération, une réplique de base de données Replicated pouvait rester bloquée longtemps en affichant des messages comme
Failed to marked query-0004647339 as finished; ce problème est corrigé. #88671 (Alexander Tokmakov). - Correction d’un use-after-free dans Distributed, causé par une condition de concurrence entre l’arrêt et des
INSERTen arrière-plan. Corrige #88640. #89136 (Azat Khuzhin). - Vue matérialisée actualisable : correction d’un crash rare du serveur si la table source était entièrement supprimée lors d’une actualisation. #89203 (Michael Kolupaev).
Correctifs de Keeper
- Corrige la lecture des changelogs au démarrage de Keeper lorsqu’un changelog n’a pas été renommé correctement lors de la rotation. #89496 (Antonio Andelic).
Autres correctifs notables
- Correction d’une dégradation des performances lors de l’analyse des skipping indexes. #89004 (Anton Popov).
- Correction d’une incompatibilité du partitionnement Hive empêchant une mise à niveau fluide vers la version 25.8. #90202 (Kseniia Sumarokova).
- Correction d’une requête
WITH FILLinfinie avecnan/inf. Résout #69261. #90255 (Konstantin Bogdanov). - Time et Time64 respectent désormais correctement les fuseaux horaires lors de la conversion depuis DateTime et DateTime64. Clôt #89896. #90310 (Yarik Briukhovetskyi).
- Correction de résultats de requête potentiellement incorrects après des lightweight updates dans des requêtes
SELECTavec le query condition cache activé. Corrige #90176. #90204 (Anton Popov). - Correction de la compatibilité de la sérialisation en mémoire de l’état d’agrégation String. #90880 (Antonio Andelic).
- Correction de l’agrégation
SummingMergeTreepour les colonnesNestedLowCardinality. #90927 (Ivan Babrou). - Correction de l’échec de
system.view_refreshesavec l’erreurNo macro 'replica' in config. #92203 (Michael Kolupaev). - Correction de la réplication d’un ALTER ajoutant indirectement une colonne à une MV avec Shared Catalog. (Nikolay Degterinsky).
- Correction du blocage de l’application de l’état de Shared Catalog par l’échec du commit d’une MV. (Nikolay Degterinsky).
- Correction de la vérification des contraintes de paramètres dans les
ALTERsur les répliques secondaires avec Shared Catalog. (Nikolay Degterinsky). - Conservation du commentaire de base de données lors de la migration SharedCatalog. (Alexander Tokmakov).
- Correction du remplacement des Materialized Views sur les répliques secondaires dans Shared Catalog. (Nikolay Degterinsky).
- Correction des compteurs de system.distributed_cache_usage. (Kseniia Sumarokova).
- Correction du blocage du DROP d’une table dont la création avait échoué avec une exception
ILLEGAL_COLUMNdans Shared Catalog. (Nikolay Degterinsky). - Désactivation de
CREATE OR REPLACEpour SharedSet/SharedJoin dans les bases de données Replicated. (Tuan Pham Anh). - Correction des exceptions
UNFINISHEDlors des refreshes de RMV avec la base de données Shared. (Nikolay Degterinsky). - Correction d’un plantage avec
TABLE_ALREADY_EXISTSdans les bases de données Shared. (Nikolay Degterinsky). - Correction de la migration de tables avec des requêtes CREATE invalides dans Shared Catalog. (Nikolay Degterinsky).
- Toujours utiliser les virtual parts en mémoire dans
getStatus. (Mikhail Artemenko). - Ajout de nouvelles tentatives à l’application de l’état du Shared Catalog au démarrage. (Nikolay Degterinsky).
- Correction du blocage de
DROP DATABASEaprès une exception lors de la création d’une table. (Nikolay Degterinsky). - Correction d’une logical error dans le distributed cache. (Kseniia Sumarokova).
- Correction d’une erreur incorrecte du distributed cache. (Kseniia Sumarokova).
- Correction de
LOGICAL_ERRORdans ~TemporaryLockForUUIDDirectory de Shared Catalog. (Nikolay Degterinsky). - Correction du cache de métadonnées qui renvoyait des dépendances incorrectes après le renommage d’une base de données. (Nikolay Degterinsky).
- Shared Catalog : correction d’un cas de DROP de grandes tables sur des répliques secondaires. (Raúl Marín).
- Distributed cache : correction d’une erreur logique dans
processWriteRequest. (Kseniia Sumarokova). - Suppression des contrôles sur les
ALTERde MV sur les répliques secondaires. (Nikolay Degterinsky).