Version de ClickHouse 20.12
Version de ClickHouse v20.12.5.14-stable, 2020-12-28
Correction de bugs
- Désactivation de l’écriture avec AIO pendant les merges, car cela peut entraîner, dans des cas extrêmement rares, une corruption des données des colonnes de clé primaire lors d’un merge. #18481 (alesapin).
- Correction de l’erreur
value is too shortlors de l’exécution des fonctionstoType(...)(toDate,toUInt32, etc.) avec un argument de typeNullable(String). Désormais, ces fonctions renvoientNULLen cas d’erreur d’analyse au lieu de lever une exception. Corrige #7673. #18445 (tavplubix). - Restriction des merges de parts wide vers des parts compactes. Dans le cas d’un vertical merge, cela entraînait une part de résultat corrompue. #18381 (Anton Popov).
- Correction du remplissage de la table
system.settings_profile_elements. Cette PR corrige #18231. #18379 (Vitaly Baranov). - Correction de plantages possibles dans les fonctions d’agrégation avec le combinateur
Distinct, lors de l’utilisation de l’agrégation à deux niveaux. Corrige #17682. #18365 (Anton Popov). - Correction de l’erreur lorsque la requête
MODIFY COLUMN ... REMOVE TTLne supprime pas réellement le TTL de la colonne. #18130 (alesapin).
Amélioration du build, des tests et du packaging
Version de ClickHouse v20.12.4.5-stable, 2020-12-24
Correction de bugs
- Correction d’un problème sur les machines à double pile IPv4/IPv6, où le processus
clickhouse-odbc-bridgeétait inaccessible au serveur ; correction d’un problème où les mises à jour des dictionnaires ODBC étaient effectuées avec des requêtes mal formées et/ou provoquaient des plantages ; ferme potentiellement #14489. #18278 (Denis Glazachev). - Correction de la comparaison de clés entre les types Enum et Int. Cela corrige #17989. #18214 (Amos Bird).
- Correction d’un plantage lors de la conversion de clés uniques dans le moteur de base de données
MaterializeMySQL. Cela corrige #18186 et #16372 #18211 (Winter Zhang). - Correction de
std::out_of_range: basic_stringlors de l’analyse des URL S3. #18059 (Vladimir Chebotarev). - Correction d’un problème où certaines tables n’étaient pas synchronisées de MySQL vers ClickHouse, car la conversion des index de préfixe MySQL n’était pas prise en charge par MaterializeMySQL. Cela corrige #15187 et #17912 #17944 (Winter Zhang).
- Correction d’un problème où l’optimisation des requêtes produisait un résultat erroné si la requête contenait
ARRAY JOIN. #17887 (sundyli). - Correction d’un segfault possible dans la fonction d’agrégation
topK. Cela ferme #17404. #17845 (Maksim Kita). - Correction du problème de table
system.stack_tracevide lorsque le serveur s’exécutait en mode démon. #17630 (Amos Bird).
Version de ClickHouse v20.12.3.3-stable, 2020-12-13
Changement rétro-incompatible
- Active
use_compact_format_in_distributed_parts_namespar défaut (voir la documentation de référence). #16728 (Azat Khuzhin). - Accepte les paramètres utilisateur liés aux formats de fichier (par ex.
format_csv_delimiter) dans la clauseSETTINGSlors de la création d’une table utilisant le moteurFile, et utilise ces paramètres dans tous lesINSERTetSELECT. Les paramètres de format de fichier modifiés dans la session utilisateur en cours, ou dans la clauseSETTINGSd’une requête DML elle-même, n’affectent plus la requête. #16591 (Alexander Kuzmenkov).
Nouvelle fonctionnalité
- ajout de la prise en charge de la compression/décompression
*.xz. Cela permet d’utiliser*.xzdans la fonctionfile(). Cela clôt le ticket #8828. #16578 (Abi Palagashvili). - Introduction de la requête
ALTER TABLE ... DROP|DETACH PART 'part_name'. #15511 (nvartolomei). - Ajout de la nouvelle syntaxe ALTER UPDATE/DELETE IN PARTITION. #13403 (Vladimir Chebotarev).
- Permet de formater les named tuples en JSON objects lors de l’utilisation des formats d’entrée/sortie JSON, via le paramètre
output_format_json_named_tuples_as_objects, désactivé par défaut. #17175 (Alexander Kuzmenkov). - Ajout de la possibilité de fournir une valeur enum sous forme d’identifiant dans les formats TSV et CSV par défaut. #16834 (Kruglov Pavel).
- Ajout de la prise en charge de COLLATE pour Nullable, LowCardinality, Array et Tuple lorsque le type imbriqué est String. Refactorisation également du code associé aux collations dans ColumnString.cpp. #16273 (Kruglov Pavel).
- La nouvelle fonction
tcpPortrenvoie le port TCP sur lequel ce server écoute. #17134 (Ivan). - Ajout de nouvelles fonctions mathématiques :
acosh,asinh,atan2,atanh,cosh,hypot,log1p,sinh. #16636 (Konstantin Malanchev). - Possibilité de répartir les merges entre différentes répliques. Introduit le paramètre MergeTree
execute_merges_on_single_replica_time_threshold. #16424 (filimonov). - Ajout du paramètre
aggregate_functions_null_for_emptypour la compatibilité avec le standard SQL. Cette option réécrit toutes les fonctions d’agrégation d’une requête en leur ajoutant le suffixe -OrNull. Implémente 10273. #16123 (flynn). - Mise à jour de l’analyse de DateTime et DateTime64 pour accepter le format littéral String de Date. #16040 (Maksim Kita).
- Il est désormais possible de modifier le chemin du fichier d’historique dans
clickhouse-clientà l’aide du paramètre--history_file. #15960 (Maksim Kita).
Correction de bugs
- Corrige un problème où le serveur pouvait, dans de très rares cas, cesser d’accepter les connexions. #17542 (Amos Bird).
- Correction de l’erreur
Function not implementedlors de l’exécution d’une requêteRENAMEdans une base de donnéesAtomicavec ClickHouse exécuté sous Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix). - Ne pas restaurer les parts depuis le WAL si
in_memory_parts_enable_walest désactivé. #17802 (detailyang). - Corrige l’initialisation incorrecte de
max_compress_block_sizede MergeTreeWriterSettings avecmin_compress_block_size. #17833 (flynn). - Le message d’Exception concernant la taille maximale de table à supprimer s’affichait incorrectement. #17764 (alexey-milovidov).
- Correction d’un possible segfault lorsqu’il n’y a pas assez d’espace lors de l’insertion dans une table
Distributed. #17737 (tavplubix). - Correction d’un problème empêchant ClickHouse de rétablir la connexion aux serveurs MySQL. #17681 (Alexander Kazakov).
- Il pouvait être déterminé de manière incorrecte si le cluster était répliqué de façon circulaire (croisée) ou non lors de l’exécution d’une requête
ON CLUSTER, en raison d’une race condition lorsquepool_size> 1. C’est corrigé. #17640 (tavplubix). - L’Exception
fmt::v7::format_errorpouvait être journalisée en arrière-plan pour les tables MergeTree. Cela corrige #17613. #17615 (alexey-milovidov). - Lorsque clickhouse-client est utilisé en mode interactif avec des requêtes multiline, un commentaire single line était prolongé par erreur jusqu’à la fin de la requête. Cela corrige #13654. #17565 (alexey-milovidov).
- Corrige le blocage d’une requête alter lorsque la mutation correspondante avait été arrêtée sur une replica différente. Corrige #16953. #17499 (alesapin).
- Corrige un problème où la taille du mark cache était sous-estimée par ClickHouse. Cela peut se produire lorsqu’il y a beaucoup de très petits fichiers avec des marks. #17496 (alesapin).
- Corrige
ORDER BYavec le settingoptimize_redundant_functions_in_order_byactivé. #17471 (Anton Popov). - Corrige les doublons après
DISTINCT, qui étaient possibles en raison d’une optimisation incorrecte. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Corrige un crash lors de la lecture d’une table
JOINavec des typesLowCardinality. Corrige #17228. #17397 (Nikolai Kochetov). - corrige le débordement de pile de
toInt256(inf). Int256 est une fonctionnalité expérimentale. Clôturé #17235. #17257 (flynn). - Corrige l’erreur possible
Unexpected packet Data received from client, consignée pour les requêtes distribuées avecLIMIT. #17254 (Azat Khuzhin). - Corrige l’invalidation de l’index Set lorsqu’il y a des colonnes constantes dans la sous-requête. Corrige #17246. #17249 (Amos Bird).
- Corrige une analyse d’index potentiellement erronée lorsque les types comparés dans l’index sont différents. Corrige #17122. #17145 (Amos Bird).
- Corrige la comparaison de ColumnConst qui provoquait un crash. Corrige #17088. #17135 (Amos Bird).
- Plusieurs corrections pour MaterializeMySQL (fonctionnalité expérimentale). Corrige #16923 Corrige #15883 Corrige l’échec de la synchronisation de MaterializeMySQL lors de la modification de MySQL binlog_checksum. #17091 (Winter Zhang).
- Corrige un bug où les requêtes
ON CLUSTERpouvaient se bloquer indéfiniment pour des tables ReplicatedMergeTree non leader. #17089 (alesapin). - Corrige un crash sur la requête
CREATE TABLE ... AS some_tablelorsquesome_tableavait été créée avecAS table_function(). Corrige #16944. #17072 (tavplubix). - Corrige une implémentation inachevée de la fonction fuzzBits, problème associé : #16980. #17051 (hexiaoting).
- Corrige libunwind de LLVM dans le cas où le registre CFA est RAX. Il s’agit du bug dans libunwind de LLVM. Nous disposons déjà de contournements pour ce bug. #17046 (alexey-milovidov).
- Évite des erreurs réseau inutiles pour les requêtes distantes susceptibles d’être annulées pendant leur exécution, comme les requêtes avec
LIMIT. #17006 (Azat Khuzhin). - Corrige le paramètre
optimize_distributed_group_by_sharding_key(désactivé par défaut) pour une requête avecOFFSETuniquement. #16996 (Azat Khuzhin). - Correctif pour les tables Merge sur des tables Distributed avec JOIN. #16993 (Azat Khuzhin).
- Correction d’un résultat erroné avec les grands entiers (128 et 256 bits) lors d’une conversion depuis un double. La prise en charge des grands entiers est expérimentale. #16986 (Mike).
- Correction d’un possible crash du serveur après
ALTER TABLE ... MODIFY COLUMN ... NewTypelorsqu’unSELECTcomporte une expressionWHEREsur la colonne en cours de modification et que l’ALTER n’est pas encore terminé. #16968 (Amos Bird). - Les informations de blame n’étaient pas calculées correctement dans
clickhouse-git-import. #16959 (alexey-milovidov). - Correction de l’optimisation de ORDER BY avec des fonctions monotones. Corrige #16107. #16956 (Anton Popov).
- Correction de l’optimisation de GROUP BY avec le paramètre
optimize_aggregators_of_group_by_keysactivé et des jointures. Corrige #12604. #16951 (Anton Popov). - Correction d’une possible erreur
Illegal type of argumentpour les requêtes avecORDER BY. Corrige #16580. #16928 (Nikolai Kochetov). - Correction d’un code étrange dans InterpreterShowAccessQuery. #16866 (tavplubix).
- Empêche les crashs du serveur ClickHouse lors de l’utilisation de la fonction
timeSeriesGroupSum. La fonction a été supprimée des versions plus récentes de ClickHouse. #16865 (filimonov). - Correction de rares crashs silencieux lorsque le profileur de requêtes est activé et que ClickHouse est installé sur un OS avec une version de glibc qui comporte (apparemment) des tables de déroulage asynchrone défectueuses pour certaines fonctions. Corrige #15301. Corrige #13098. #16846 (alexey-milovidov).
- Correction d’un crash lors de l’utilisation de
anysans argument. Ceci concerne #16803. cc @azat. #16826 (Amos Bird). - Si aucune mémoire ne peut être allouée lors de l’écriture des métadonnées de la table sur disque, un fichier de métadonnées corrompu peut être écrit. #16772 (alexey-milovidov).
- Correction de l’optimisation triviale des requêtes avec un prédicat de partition. #16767 (Azat Khuzhin).
- Correction de l’opérateur
INsur plusieurs colonnes et tuples avec le paramètretransform_null_inactivé. Corrige #15310. #16722 (Anton Popov). - Renvoie le nombre de lignes affectées pour les requêtes INSERT via le protocole MySQL. Auparavant, ClickHouse renvoyait toujours 0 ; c’est désormais corrigé. Corrige #16605. #16715 (Winter Zhang).
- Corrige l’échec des requêtes distantes lors de l’utilisation d’une fonction d’agrégation avec le suffixe ‘if’. Corrige #16574 Corrige #16231 #16610 (Winter Zhang).
- Corrige le comportement incohérent provoqué par
select_sequential_consistencypour la requêtecounttriviale optimisée et system.tables. #16309 (Hao Chen).
Amélioration
- Supprime les parts vides après leur suppression par TTL, mutation ou algorithme de fusion collapsing. #16895 (Anton Popov).
- Active le format compact pour les répertoires des envois asynchrones dans les tables Distributed :
use_compact_format_in_distributed_parts_namesvaut désormais 1 par défaut. #16788 (Azat Khuzhin). - Interrompt le multipart upload si aucune donnée n’a été écrite sur S3. #16840 (Pavel Kovalenko).
- Résout de nouveau l’IP de
format_avro_schema_registry_urlen cas d’erreur. #16985 (filimonov). - Masque le mot de passe dans data_path de system.distribution_queue. #16727 (Azat Khuzhin).
- Génère une erreur lorsque le transformateur de colonnes remplace une colonne inexistante. #16183 (hexiaoting).
- Désactive l’analyse parallèle lorsqu’il n’y a pas assez de mémoire pour que tous les threads puissent travailler simultanément. Des exceptions comme “Memory limit exceeded” pouvaient aussi se produire si quelqu’un tentait d’insérer des lignes extrêmement volumineuses (> min_chunk_bytes_for_parallel_parsing), car chaque portion à analyser doit être un ensemble indépendant de chaînes (une ou plusieurs). #16721 (Nikita Mikhaylov).
- Le script d’installation doit toujours créer des sous-répertoires dans les dossiers de config. Cela ne concerne que les builds Docker avec une config personnalisée. #16936 (filimonov).
- Corrige la grammaire du message d’erreur dans les formats d’entrée JSONEachRow, JSONCompactEachRow et RegexpRow. #17205 (nico piderman).
- Définit par défaut les paramètres
hostetportdeSOURCE(CLICKHOUSE(...))sur l’instance actuelle, etusersur'default'. #16997 (vdimir). - Génère un message d’erreur explicite lors de l’exécution de
ATTACH/DETACH TABLE <DICTIONARY>. Avant cette PR,detach table <dict>fonctionnait, mais produisait des métadonnées en mémoire mal formées. #16885 (Amos Bird). - Ajoute cutToFirstSignificantSubdomainWithWWW(). #16845 (Azat Khuzhin).
- Le serveur refusait de démarrer avec un message d’exception si une mauvaise config était fournie (
metric_log.collect_interval_millisecondsest absent). #16815 (Ivan). - Améliore le message d’exception lorsque la configuration du distributed DDL est absente. Cela corrige #5075. #16769 (Nikita Mikhaylov).
- Amélioration de l’ergonomie : meilleures suggestions dans le message d’erreur de syntaxe lorsque l’expression
CODECest mal placée dans la queryCREATE TABLE. Cela corrige #12493. #16768 (alexey-milovidov). - Supprime les répertoires vides pour async INSERT au démarrage du moteur Distributed. #16729 (Azat Khuzhin).
- Contournement pour l’utilisation de S3 avec un serveur nginx comme proxy. Actuellement, Nginx n’accepte pas les URL avec un chemin vide comme
http://domain.com?delete, mais la version standard de aws-sdk-cpp produit ce type d’URL. Ce commit utilise une version corrigée de aws-sdk-cpp, qui dans ces cas génère des URL avec ”/” comme chemin, par exemplehttp://domain.com/?delete. #16709 (ianton-ru). - Permet aux fonctions
reinterpretAs*de fonctionner avec des entiers et des nombres à virgule flottante de même taille. Implémente 16640. #16657 (flynn). - Désormais, la configuration
<auxiliary_zookeepers>peut être modifiée dansconfig.xmlet rechargée sans redémarrer le serveur. #16627 (Amos Bird). - Ajoute la prise en charge de SNI dans les connexions https vers des ressources distantes. Cela permet de se connecter à des serveurs Cloudflare qui exigent SNI. Cela corrige #10055. #16252 (alexey-milovidov).
- Permet de se connecter au endpoint sécurisé de
clickhouse-serverqui nécessite SNI. C’est possible lorsqueclickhouse-serverest hébergé derrière un proxy TLS. #16938 (filimonov). - Corrige un possible dépassement de pile si une boucle de vues matérialisées est créée. Cela clôt #15732. #16048 (alexey-milovidov).
- Simplifie l’implémentation du traitement des tâches en arrière-plan pour la famille des moteurs de table MergeTree. Aucun changement visible ne devrait apparaître pour l’utilisateur. #15983 (alesapin).
- Amélioration de MaterializeMySQL (fonctionnalité Experimental). Lève une exception indiquant les privilèges de synchronisation corrects lorsque l’utilisateur de synchronisation MySQL ne dispose pas des privilèges appropriés. #15977 (TCeason).
indexOf()utilise désormais BloomFilter. #14977 (achimbab).
Amélioration des performances
- Utilisation de l’algorithme de Floyd-Rivest, le plus adapté au cas d’usage de ClickHouse pour le tri partiel. Les benchmarks sont disponibles sur https://github.com/danlark1/miniselect et ici. #16825 (Danila Kutenin).
- Désormais, la famille de moteurs
ReplicatedMergeTreeutilise un pool de threads distinct pour les fetches répliqués. La taille du pool est limitée par le paramètrebackground_fetches_pool_size, qui peut être ajusté après redémarrage du serveur. La valeur par défaut de ce paramètre est 3, ce qui signifie que le nombre maximal de fetches parallèles est de 3 (et permet d’exploiter un réseau 10G). Corrige #520. #16390 (alesapin). - Correction de la croissance non contrôlée de l’état de
quantileTDigest. #16680 (hrissan). - Ajout de la description des sous-requêtes
VIEWàEXPLAIN. Limitation de l’optimisation de push down de Limit pourVIEW. Ajout des répliques locales deDistributedau plan de requête. #14936 (Nikolai Kochetov). - Correction de optimize_read_in_order/optimize_aggregation_in_order avec max_threads > 0 et une expression dans ORDER BY. #16637 (Azat Khuzhin).
- Amélioration des performances de lecture depuis les tables
Mergesur un très grand nombre de tablesMergeTree. Corrige #7748. #16988 (Anton Popov). - Désormais, il est possible d’écarter en toute sécurité des partitions sur correspondance exacte. Cas utile : supposons que la table soit partitionnée par
intHash64(x) % 100et que la requête contienne une condition surintHash64(x) % 100telle quelle, et non sur x. #16253 (Amos Bird).
Fonctionnalité expérimentale
Amélioration du build, des tests et du packaging
- Amélioration de la couverture des tests pour la création des images. #17233 (alesapin).
- Mise à jour des données de fuseau horaire intégrées vers la version 2020d (avec également une mise à jour de cctz vers le dernier master). #17204 (filimonov).
- Correction d’un signalement UBSan dans Poco. Ferme #12719. #16765 (alexey-milovidov).
- Ne pas instrumenter les bibliothèques tierces avec UBSan. #16764 (alexey-milovidov).
- Correction d’un signalement UBSan dans les dictionnaires de type cache. Ferme #12641. #16763 (alexey-milovidov).
- Correction d’un signalement UBSan lors d’une tentative de conversion d’un nombre flottant infini en entier. Ferme #14190. #16677 (alexey-milovidov).
Version de ClickHouse 20.11
Version de ClickHouse v20.11.7.16-stable, 2021-03-02
Amélioration
- Définition explicite de l’uid / gid de l’utilisateur et du groupe clickhouse à des valeurs fixes (101) dans les images clickhouse-server. #19096 (filimonov).
Correction de bugs
- Correction d’un plantage de l’indice BloomFilter. Corrige #19757. #19884 (Maksim Kita).
- Un interblocage pouvait se produire si system.text_log est activé. Corrige #19874. #19875 (alexey-milovidov).
- Dans les versions précédentes, des arguments inhabituels pour la fonction arrayEnumerateUniq pouvaient provoquer un plantage ou une boucle infinie. Corrige #19787. #19788 (alexey-milovidov).
- Correction d’un débordement de pile lors de l’utilisation d’une comparaison exacte d’un type arithmétique avec un type String. #19773 (tavplubix).
- Correction d’une erreur de segmentation dans la fonction
bitmapAndnot. Corrige #19668. #19713 (Maksim Kita). - Certaines fonctions utilisant de grands entiers peuvent provoquer un segfault. Les grands entiers sont une fonctionnalité expérimentale. Corrige #19667. #19672 (alexey-milovidov).
- Correction d’un résultat incorrect de la fonction
neighborpour un argumentLowCardinality. Corrige #10333. #19617 (Nikolai Kochetov). - Correction d’un use-after-free de CompressedWriteBuffer dans Connection après une déconnexion. #19599 (Azat Khuzhin).
- La requête
DROP/DETACH TABLE table ON CLUSTER cluster SYNCpouvait se bloquer ; c’est corrigé. Corrige #19568. #19572 (tavplubix). - Correction de l’expression id dans la requête CREATE DICTIONARY. #19571 (Maksim Kita).
- Correction d’un SIGSEGV avec merge_tree_min_rows_for_concurrent_read/merge_tree_min_bytes_for_concurrent_read=0/UINT64_MAX. #19528 (Azat Khuzhin).
- Un débordement de buffer (en lecture mémoire) était possible si la fonction
addMonthétait appelée avec des arguments spécialement conçus. Corrige #19441. Corrige #19413. #19472 (alexey-milovidov). - Le batch distribué est désormais marqué comme défectueux en cas de bloc de données vide dans l’un des fichiers. #19449 (Azat Khuzhin).
- Corrige un possible débordement de tampon dans la bibliothèque Uber H3. Voir https://github.com/uber/h3/issues/392. Cela clôt #19219. #19383 (alexey-milovidov).
- Corrige la colonne system.parts _state (
LOGICAL_ERRORlors d’une requête sur cette colonne, en raison d’un ordre incorrect). #19346 (Azat Khuzhin). - Corrige l’erreur
Cannot convert column now64() because it is constant but values of constants are different in source and result. Suite de #7156. #19316 (Nikolai Kochetov). - Corrige un bug où des requêtes
ALTERetDROPconcurrentes pouvaient se bloquer pendant le traitement d’une table ReplicatedMergeTree. #19237 (alesapin). - Corrige une lecture infinie à partir d’un fichier au format
ORC(introduite dans #10580). Corrige #19095. #19134 (Nikolai Kochetov). - Corrige un bug au démarrage lorsque ClickHouse ne pouvait pas lire le codec de compression depuis
LowCardinality(Nullable(...))et levait l’exceptionAttempt to read after EOF. Corrige #18340. #19101 (alesapin). - Corrige l’erreur
There is no checkpointlors de l’insertion de données via l’interface HTTP en utilisant le formatTemplateouCustomSeparated. Corrige #19021. #19072 (tavplubix). - Restreint les requêtes
MODIFY TTLpour les tablesMergeTreecréées avec l’ancienne syntaxe. Auparavant, la requête réussissait, mais en réalité elle n’avait aucun effet. #19064 (Anton Popov). - S’assure que
groupUniqArrayrenvoie le type correct pour un argument de type Enum. Cela clôt #17875. #19019 (alexey-milovidov). - Corrige l’erreur possible
Expected single dictionary argument for functionen cas d’utilisation de la fonctionignoreavec un argumentLowCardinality. Corrige #14275. #19016 (Nikolai Kochetov). - Corrige l’insertion d’une colonne
LowCardinalitydans une table avec le moteurTinyLog. Corrige #18629. #19010 (Nikolai Kochetov). - Désactive
optimize_move_functions_out_of_any, car cette optimisation n’est pas toujours correcte. Cela clôt #18051. Cela clôt #18973. #18981 (alexey-milovidov). - Correction d’un interblocage très rare à l’arrêt. #18977 (tavplubix).
- Correction d’un bug lorsqu’une mutation contenant du texte échappé (comme
ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1')) était sérialisée de façon incorrecte. Corrige #18878. #18944 (alesapin). - Attach partition doit réinitialiser la mutation. #18804. #18935 (fastio).
- Correction d’un blocage possible à l’arrêt dans clickhouse-local. Cela corrige #18891. #18893 (alexey-milovidov).
- Correction du combinator *If avec une fonction unaire et des types Nullable. #18806 (Azat Khuzhin).
- Les INSERT distribués asynchrones peuvent être rejetés par le serveur si le paramètre
network_compression_methodest défini globalement sur une valeur non par défaut. Cela corrige #18741. #18776 (alexey-milovidov). - Correction de l’erreur
Attempt to read after eoflors d’une tentative deCASTdeNULLdepuisNullable(String)versNullable(Decimal(P, S)). Désormais, la fonctionCASTrenvoieNULLlorsqu’elle ne peut pas analyser une valeur décimale à partir d’une chaîne nullable. Corrige #7690. #18718 (Winter Zhang). - Correction de Logger lorsque la taille des arguments ne correspond pas. #18717 (sundyli).
- Ajout de la prise en charge du type de données FixedString. J’obtiens cette exception “Code: 50, e.displayText() = DB::Exception: Unsupported type FixedString(1)” lors de la réplication de données de MySQL vers ClickHouse. Ce correctif corrige le bug #18450 et corrige également #6556. #18553 (awesomeleo).
- Correction d’une possible erreur
Pipeline stucklors de l’utilisation deORDER BYaprès une sous-requête avec une jointureRIGHTouFULL. #18550 (Nikolai Kochetov). - Correction d’un bug pouvant entraîner le blocage de requêtes
ALTERaprès l’arrêt forcé de la mutation correspondante. Détecté par le thread fuzzer. #18518 (alesapin). - Désactivation de l’écriture avec AIO pendant les fusions, car cela peut entraîner, dans des cas extrêmement rares, une corruption des données des colonnes de clé primaire lors d’une fusion. #18481 (alesapin).
- Désactivation du constant folding pour les sous-requêtes à l’étape d’analyse, lorsque le résultat ne peut pas être calculé. #18446 (Azat Khuzhin).
- Correction de l’erreur
value is too shortlors de l’exécution des fonctionstoType(...)(toDate,toUInt32, etc.) avec un argument de typeNullable(String). Désormais, ces fonctions renvoientNULLen cas d’erreur de parsing au lieu de lever une exception. Corrige #7673. #18445 (tavplubix). - Restriction des merges de parts wide vers des compact parts. En cas de vertical merge, cela pouvait produire une part de résultat corrompue. #18381 (Anton Popov).
- Correction du remplissage de la table
system.settings_profile_elements. Cette PR corrige #18231. #18379 (Vitaly Baranov). - Correction de l’analyse d’index de fonctions binaires avec argument constant, qui entraînait des résultats de requête incorrects. Cela corrige #18364. #18373 (Amos Bird).
- Correction de plantages possibles dans les fonctions d’agrégation avec le combinator
Distinct, lors de l’utilisation de l’agrégation à deux niveaux. Corrige #17682. #18365 (Anton Popov). SELECT count() FROM tablepeut désormais être exécuté dès lors qu’il est possible de sélectionner au moins une colonne detable. Cette PR corrige #10639. #18233 (Vitaly Baranov).SELECT JOINrequiert désormais le privilègeSELECTsur chacune des tables jointes. Cette PR corrige #17654. #18232 (Vitaly Baranov).- Correction d’un résultat de requête potentiellement incomplet lors de la lecture depuis
MergeTree*en cas de backoff de lecture (message<Debug> MergeTreeReadPool: Will lower number of threadsdans les logs). Introduit dans #16423. Corrige #18137. #18216 (Nikolai Kochetov). - Correction d’une erreur où la requête
MODIFY COLUMN ... REMOVE TTLne supprimait pas réellement le TTL de la colonne. #18130 (alesapin). - Correction des fonctions non déterministes avec l’optimiseur de prédicats. Cela corrige #17244. #17273 (Winter Zhang).
- Une mutation pouvait rester bloquée en attendant une part inexistante après
MOVEouREPLACE PARTITIONou, dans de rares cas, aprèsDETACHouDROP PARTITION. C’est corrigé. #15537 (tavplubix).
Amélioration du build/des tests/du packaging
Version de ClickHouse v20.11.6.6-stable, 2020-12-24
Correction de bugs
- Correction d’un problème lorsque le processus
clickhouse-odbc-bridgeétait inaccessible par le serveur sur des machines avec une double pileIPv4/IPv6, ainsi que d’un problème lorsque les mises à jour du dictionnaire ODBC étaient effectuées à l’aide de requêtes mal formées et/ou provoquaient des plantages. Cela clôt potentiellement #14489. #18278 (Denis Glazachev). - Correction de la comparaison de clés entre les types Enum et Int. Cela corrige #17989. #18214 (Amos Bird).
- Correction d’un plantage lors de la conversion d’une clé unique dans le moteur de base de données
MaterializeMySQL. Cela corrige #18186 et corrige #16372 #18211 (Winter Zhang). - Correction de
std::out_of_range: basic_stringlors de l’analyse d’URL S3. #18059 (Vladimir Chebotarev). - Correction du problème où certaines tables n’étaient pas synchronisées de MySQL vers ClickHouse, car la conversion des index de préfixe MySQL n’était pas prise en charge pour MaterializeMySQL. Cela corrige #15187 et corrige #17912 #17944 (Winter Zhang).
- Correction du problème où l’optimisation de requête produisait un résultat erroné si la requête contenait
ARRAY JOIN. #17887 (sundyli). - Correction d’un possible segfault dans la fonction d’agrégation
topK. Cela clôt #17404. #17845 (Maksim Kita). - Ne pas restaurer les parts depuis le WAL si
in_memory_parts_enable_walest désactivé. #17802 (detailyang). - Correction d’un problème où ClickHouse ne parvenait pas à rétablir la connexion aux serveurs MySQL. #17681 (Alexander Kazakov).
- Correction du comportement incohérent de
optimize_trivial_count_queryavec un prédicat de partition. #17644 (Azat Khuzhin). - Correction du problème de table
system.stack_tracevide lorsque le serveur s’exécute en mode démon. #17630 (Amos Bird). - Correction du comportement où l’exception
fmt::v7::format_errorpouvait être journalisée en arrière-plan pour les tables MergeTree. Cela corrige #17613. #17615 (alexey-milovidov). - Correction du comportement lorsque clickhouse-client était utilisé en mode interactif avec des requêtes multiligne et qu’un commentaire sur une seule ligne était étendu à tort jusqu’à la fin de la requête. Cela corrige #13654. #17565 (alexey-milovidov).
- Correction du problème où le serveur pouvait cesser d’accepter des connexions dans de très rares cas. #17542 (alexey-milovidov).
- Correction d’un blocage d’une requête ALTER lorsque la mutation correspondante avait été arrêtée sur une autre réplique. Cela corrige #16953. #17499 (alesapin).
- Correction d’un bug où la taille du mark cache était sous-estimée par ClickHouse. Cela peut se produire lorsqu’il y a beaucoup de petits fichiers contenant des marks. #17496 (alesapin).
- Correction de
ORDER BYavec le paramètre activéoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - Correction de doublons après
DISTINCT, rendus possibles par une optimisation incorrecte. Cela corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Correction d’un crash lors de la lecture depuis une table
JOINavec des typesLowCardinality. Cela corrige #17228. #17397 (Nikolai Kochetov). - Correction de l’invalidation de l’index set en présence de colonnes const dans la sous-requête. Cela corrige #17246 . #17249 (Amos Bird).
- Correction d’une possible analyse d’index erronée lorsque les types utilisés dans la comparaison de l’index sont différents. Cela corrige #17122. #17145 (Amos Bird).
- Correction d’une comparaison
ColumnConstqui provoquait un crash. Cela corrige #17088 . #17135 (Amos Bird). - Correction d’un bug où des requêtes
ON CLUSTERpouvaient rester bloquées indéfiniment pour desReplicatedMergeTreeTablesnon leaders. #17089 (alesapin). - Correction d’un bug détecté par le fuzzer dans la fonction
fuzzBits. Cela corrige #16980. #17051 (hexiaoting). - Évite des erreurs réseau inutiles pour les requêtes distantes pouvant être annulées pendant l’exécution, comme les requêtes avec
LIMIT. #17006 (Azat Khuzhin). - Correction d’un résultat erroné pour les grands entiers (128 et 256 bits) lors d’un CAST depuis un double. #16986 (Mike).
- Résout de nouveau l’IP de
format_avro_schema_registry_urlen cas d’erreur. #16985 (filimonov). - Correction d’un possible crash du serveur après
ALTER TABLE ... MODIFY COLUMN ... NewTypelorsqu’unSELECTcontient une expressionWHEREsur la colonne en cours de modification et que l’ALTER n’est pas encore terminé. #16968 (Amos Bird). - Les informations de blame n’étaient pas calculées correctement dans
clickhouse-git-import. #16959 (alexey-milovidov). - Correction de l’optimisation de
ORDER BYavec des fonctions monotones. Corrige #16107. #16956 (Anton Popov). - Correction de l’optimisation de
GROUP BYavec le paramètreoptimize_aggregators_of_group_by_keysactivé et des jointures. Cela corrige #12604. #16951 (Anton Popov). - Le script d’installation doit toujours créer des sous-répertoires dans les dossiers de configuration. Cela ne concerne que le build Docker avec une configuration personnalisée. #16936 (filimonov).
- Correction d’une erreur possible
Illegal type of argumentpour les requêtes avecORDER BY. Cela corrige #16580. #16928 (Nikolai Kochetov). - Interrompt le multipart upload si aucune donnée n’a été écrite dans WriteBufferFromS3. #16840 (Pavel Kovalenko).
- Correction d’un crash possible lors de l’utilisation de
anysans argument. Cela corrige #16803. #16826 (Amos Bird). - Correction du comportement par lequel ClickHouse renvoyait toujours 0 au lieu du nombre de lignes affectées pour les requêtes
INSERTvia le protocole MySQL. Cela corrige #16605. #16715 (Winter Zhang). - Correction de la croissance incontrôlée de TDigest. #16680 (hrissan).
- Correction de l’échec des requêtes distantes lors de l’utilisation du suffixe
ifdans une fonction d’agrégation. Cela corrige #16574 corrige #16231 #16610 (Winter Zhang). - Correction du comportement incohérent causé par
select_sequential_consistencypour la requêtecounttriviale optimisée et system.tables. #16309 (Hao Chen). - Déclenche une erreur lors de l’utilisation de ColumnTransformer pour remplacer une colonne inexistante. #16183 (hexiaoting).
Version de ClickHouse v20.11.3.3-stable, 2020-11-13
Correction de bugs
- Correction de rares crashs silencieux lorsque le profiler de requêtes est activé et que ClickHouse est installé sur un système d’exploitation avec une version de glibc dont les tables de désenroulage asynchrones sont (supposément) défectueuses pour certaines fonctions. Cela corrige #15301. Cela corrige #13098. #16846 (alexey-milovidov).
Version de ClickHouse v20.11.2.1, 2020-11-11
Changement rétro-incompatible
- Si un
profileétait spécifié dans la section de configdistributed_ddl, il pouvait écraser les paramètres du profildefaultau démarrage du serveur. Ce problème est corrigé : désormais, les paramètres des requêtes DDL distribuées ne doivent plus affecter les paramètres globaux du serveur. #16635 (tavplubix). - Restriction de l’utilisation de types de données non comparables (comme
AggregateFunction) dans les clés (clé de tri, clé primaire, clé de partition, etc.). #16601 (alesapin). - Suppression des requêtes
ANALYZEetAST, et passage du paramètreenable_debug_queriesà l’état obsolète, puisqu’il fait désormais partie de la requêteEXPLAINcomplète. #16536 (Ivan). - Les fonctions d’agrégation
boundingRatio,rankCorr,retention,timeSeriesGroupSum,timeSeriesGroupRateSum,windowFunnelavaient été rendues insensibles à la casse par erreur. Leurs noms sont maintenant sensibles à la casse, comme prévu. Seules les fonctions définies par le standard SQL, ou créées pour assurer la compatibilité avec d’autres SGBD, ainsi que les fonctions similaires, doivent être insensibles à la casse. #16407 (alexey-milovidov). - La fonction
rankCorrrenvoie désormais nan lorsque les données sont insuffisantes #16124. #16135 (hexiaoting). - Lors d’une mise à niveau depuis des versions antérieures à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou supérieures et des versions antérieures à 20.5, le redémarrage de nœuds ClickHouse exécutant une ancienne version en présence de versions plus récentes peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquetsclickhouse-serversur tous les nœuds du cluster, puis redémarrez-les (ainsi, lorsqueclickhouse-serverredémarrera, il démarrera avec la nouvelle version).
Nouvelle fonctionnalité
- Ajout de la prise en charge de LDAP comme répertoire d’utilisateurs pour les utilisateurs inexistants localement. #12736 (Denis Glazachev).
- Ajout de la table
system.replicated_fetches, qui affiche les fetches d’arrière-plan en cours d’exécution. #16428 (alesapin). - Ajout du paramètre
date_time_output_format. #15845 (Maksim Kita). - Ajout d’une web UI minimale à ClickHouse. #16158 (alexey-milovidov).
- Permet de lire/écrire un message Protobuf unique en une seule fois (sans délimiteurs de longueur). #15199 (filimonov).
- Ajout d’une prise en charge initiale d’OpenTelemetry. ClickHouse accepte désormais les headers traceparent OpenTelemetry via les protocoles Native et HTTP, et les transmet en aval dans certains cas. Les trace spans des queries exécutées sont enregistrés dans la table
system.opentelemetry_span_log. #14195 (Alexander Kuzmenkov). - Permet de spécifier une primary key dans la liste des colonnes d’une requête
CREATE TABLE. Cela est nécessaire pour la compatibilité avec d’autres dialectes SQL. #15823 (Maksim Kita). - Implémente
OFFSET offset_row_count {ROW | ROWS} FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}dans une requête SELECT avec ORDER BY. Il s’agit de la manière standard en SQL de spécifierLIMIT. #15855 (hexiaoting). - Fonction
errorCodeToName— renvoie le nom de variable de l’erreur (utile pour analyser query_log et similaires). La tablesystem.errorsaffiche combien de fois des erreurs se sont produites (respectesystem_events_show_zero_values). #16438 (Azat Khuzhin). - Ajout de la fonction
untuple, une fonction spéciale qui peut introduire de nouvelles colonnes dans la liste SELECT en développant un named tuple. #16242 (Nikolai Kochetov, Amos Bird). - Il est désormais possible de fournir des identifiants via des query parameters. Ces paramètres peuvent ensuite être utilisés comme objets de table ou comme colonnes. #16594 (Amos Bird).
- Ajout de la prise en charge des grands entiers (UInt256, Int128, Int256) et du data type UUID pour l’index BloomFilter de MergeTree. Les grands entiers constituent une fonctionnalité expérimentale. #16642 (Maksim Kita).
- Ajout de la fonction
farmFingerprint64(hachage non cryptographique de chaînes). #16570 (Jacob Hayes). - Ajout de
log_queries_min_query_duration_ms: seules les queries plus lentes que la valeur de ce paramètre seront envoyées versquery_log/query_thread_log(c.-à-d. l’équivalent deslow_query_logdans MySQL). #16529 (Azat Khuzhin). - Possibilité de créer une image Docker basée sur
Alpine. Utilise un binaire précompilé et des composants glibc d’Ubuntu 20.04. #16479 (filimonov). - Ajout des fonctions de conversion
toUUIDOrNullettoUUIDOrZero. #16337 (Maksim Kita). - Ajout du paramètre
max_concurrent_queries_for_all_users, voir #6636 pour les cas d’utilisation. #16154 (nvartolomei). - Ajout d’une nouvelle option
print_query_idà clickhouse-client. Elle permet de générer des chaînes arbitraires avec le Query id actuel généré par le client. Le Query id est également affiché par défaut dans clickhouse-client. #15809 (Amos Bird). - Ajout des fonctions
tidetlogTrace. Cela clôt le ticket #9434. #15803 (flynn). - Ajout de la fonction
formatReadableTimeDelta, qui met en forme un intervalle de temps dans une chaîne lisible par l’humain … #15497 (Filipe Caixeta). - Ajout de l’option
disable_mergespour les volumes dans une configuration multi-disques. #13956 (Vladimir Chebotarev).
Fonctionnalité expérimentale
- Nouvelles fonctions
encrypt,aes_encrypt_mysql,decrypt,aes_decrypt_mysql. Ces fonctions sont peu performantes ; nous considérons donc qu’il s’agit d’une fonctionnalité expérimentale. #11844 (Vasily Nemkov).
Correction de bugs
- Masquage du mot de passe dans
data_pathdesystem.distribution_queue. #16727 (Azat Khuzhin). - Correction de l’opérateur
INsur plusieurs colonnes et tuples lorsque le paramètretransform_null_inest activé. Corrige #15310. #16722 (Anton Popov). - Le paramètre
max_parallel_replicasne fonctionnait pas correctement si la table visée par la requête n’utilisait pas de sampling. Cela corrige #5733. #16675 (alexey-milovidov). - Correction de optimize_read_in_order/optimize_aggregation_in_order avec max_threads > 0 et une expression dans ORDER BY. #16637 (Azat Khuzhin).
- Le calcul des expressions
DEFAULTpouvait entraîner des collisions de noms (très peu probables en pratique). Cela corrige #9359. #16612 (alexey-milovidov). - Correction de l’unité de
query_thread_log.query_duration_ms. #16563 (Azat Khuzhin). - Correction d’un bug lors de l’utilisation de MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine.
MaterializeMySQLest une fonctionnalité expérimentale. #16504 (TCeason). - Un argument spécialement conçu de la fonction
roundavecDecimalentraînait une division entière par zéro. Cela corrige #13338. #16451 (alexey-milovidov). - Correction de DROP TABLE pour Distributed (en concurrence avec INSERT). #16409 (Azat Khuzhin).
- Correction du traitement des très grandes entrées dans la file de réplication. De très grandes entrées peuvent apparaître dans les requêtes ALTER si la structure de la table est extrêmement volumineuse (près de 1 MB). Cela corrige #16307. #16332 (alexey-milovidov).
- Correction d’un comportement incohérent où une partie des données renvoyées pouvait être ignorée parce que l’ensemble utilisé pour le filtrage n’avait pas été créé. #16308 (Nikita Mikhaylov).
- Correction de dictGet dans sharding_key (et dans des cas similaires, c.-à-d. lorsque le contexte de la fonction est stocké de façon permanente). #16205 (Azat Khuzhin).
- Correction de l’exception levée dans
clickhouse-locallors de l’exécution de la commandeOPTIMIZE. Corrige #16076. #16192 (filimonov). - Correction de la régression #15780 : par exemple,
indexOf([1, 2, 3], toLowCardinality(1))est désormais interdit alors que cela ne devrait pas l’être. #16038 (Mike). - Correction d’un bug lié à la base de données MySQL. Lorsque le serveur MySQL utilisé comme moteur de base de données est indisponible, certaines requêtes lèvent une exception, car elles tentent de récupérer des tables depuis un serveur hors service, alors que ce n’est pas nécessaire. Par exemple, la requête
SELECT ... FROM system.partsdevrait fonctionner uniquement avec les tables MergeTree et ne pas accéder du tout à la base de données MySQL. #16032 (Kruglov Pavel). - Désormais, une exception sera levée si
ALTER MODIFY COLUMN ... DEFAULT ...définit une valeur par défaut incompatible avec le type de colonne. Corrige #15854. #15858 (alesapin). - Correction des fonctions IPv4CIDRToRange/IPv6CIDRToRange pour qu’elles acceptent des valeurs constantes de colonnes IP. #15856 (vladimir-golovchenko).
Amélioration
- Traiter
INTERVAL '1 hour'comme l’équivalent deINTERVAL 1 HOUR, afin d’être compatible avec Postgres et autres systèmes similaires. Cela corrige #15637. #15978 (flynn). - Activer l’analyse des valeurs enum à partir de leurs identifiants numériques pour les formats d’entrée CSV, TSV et JSON. #15685 (vivarum).
- Amélioration de la planification des tâches de lecture pour l’architecture JBOD et le stockage
MergeTree. Nouveau paramètreread_backoff_min_concurrency, qui définit la limite inférieure du nombre de threads de lecture. #16423 (Amos Bird). - Ajout de la prise en charge manquante de
LowCardinalitydans le formatAvro. #16521 (Mike). - Contournement pour l’utilisation de
S3avec le serveur nginx comme proxy. Nginx n’accepte actuellement pas les URL avec un chemin vide commehttp://domain.com?delete, mais la version standard de aws-sdk-cpp produit ce type d’URL. Ce commit utilise une version corrigée de aws-sdk-cpp, qui, dans ce cas, met"/"comme chemin, comme danshttp://domain.com/?delete. #16814 (ianton-ru). - Amélioration du diagnostic des erreurs d’analyse dans les données d’entrée. Le numéro de ligne est désormais fourni pour les erreurs
Cannot read all data. #16644 (alexey-milovidov). - Rendre le comportement de
minMapetmaxMapplus approprié. Les valeurs nulles ne seront plus ignorées dans le résultat. Corrige #16087. #16631 (Ildus Kurbangaliev). - Amélioration de la mise à jour de la configuration ZooKeeper à l’exécution. #16630 (sundyli).
- Appliquer la clause SETTINGS le plus tôt possible. Cela permet de modifier davantage de paramètres dans la query. Cela clôt #3178. #16619 (alexey-milovidov).
- Désormais, le champ
event_time_microsecondsest stocké en Decimal64 et non plus en UInt64. #16617 (Nikita Mikhaylov). - Désormais, les fonctions paramétrées peuvent être utilisées dans le transformateur de colonnes
APPLY. #16589 (Amos Bird). - Amélioration de la planification de la tâche d’arrière-plan qui supprime les données des tables supprimées dans les bases de données
Atomic. Les bases de donnéesAtomicne créent pas de lien symbolique rompu vers le répertoire de données d’une table si celle-ci n’en a pas réellement. #16584 (tavplubix). - Les sous-requêtes de la section
WITH(CTE) peuvent référencer, par leur nom, les sous-requêtes précédentes de cette même sectionWITH. #16575 (Amos Bird). - Ajouter current_database à
system.query_thread_log. #16558 (Azat Khuzhin). - Autorisation de fetch des parts déjà committed ou outdated dans l’instance actuelle vers le répertoire detached. C’est utile lors de la migration de tables depuis un autre cluster avec un mappage de N shards vers 1. C’est également cohérent avec l’implémentation actuelle de fetchPartition. #16538 (Amos Bird).
- Plusieurs améliorations pour
RabbitMQ: correction du bug #16263. La durée de vie de la boucle d’événements a également été réduite au minimum. Une configuration plus efficace des queues a été ajoutée. #16426 (Kseniia Sumarokova). - Correction d’une assertion de débogage dans la fonction
quantileDeterministic. Dans la version précédente, elle pouvait aussi transférer jusqu’à deux fois plus de données sur le réseau. Bien qu’il n’y ait pas eu de bug. Cela corrige #15683. #16410 (alexey-milovidov). - Ajout de la métrique
TablesToDropQueueSize. Elle est égale au nombre de tables supprimées en attente d’une suppression des données en arrière-plan. #16364 (tavplubix). - Meilleurs diagnostics lorsque le client a fermé la connection. Dans les versions précédentes, les exceptions
Attempt to read after EOFetBroken pipeétaient consignées dans le server. Dans la nouvelle version, elles sont remplacées par le message d’informationClient has dropped the connection, cancel the query.. #16329 (alexey-milovidov). - Ajout de la prise en charge de total_rows/total_bytes (depuis system.tables) pour les moteurs de table Set/Join. #16306 (Azat Khuzhin).
- Il est désormais possible de spécifier
PRIMARY KEYsansORDER BYpour la famille des moteurs de table MergeTree. Clôt #15591. #16284 (alesapin). - S’il n’y a pas de dossier tmp dans le système (chroot, mauvaise configuration, etc.),
clickhouse-localcréera un sous-dossier temporaire dans le répertoire courant. #16280 (filimonov). - Ajout de la prise en charge des data types imbriqués (comme named tuple) en tant que sous-types. Corrige #15587. #16262 (Ivan).
- Prise en charge de
database_atomic_wait_for_drop_and_detach_synchronously/NO DELAY/SYNCpourDROP DATABASE. #16127 (Azat Khuzhin). - Ajout de
allow_nondeterministic_optimize_skip_unused_shards(pour autoriser des éléments nondeterministic commerand()oudictGet()dans la clé de sharding). #16105 (Azat Khuzhin). - Correction de
memory_profiler_step/max_untracked_memorypour les queries via HTTP (test inclus). Correction du problème selon lequel l’ajustement global de cette valeur dans la config xml n’aide pas non plus, puisque ces Settings ne sont de toute façon pas appliqués ; seule la valeur par défaut (4MB) est used. Correction dequery_idpour le ThreadStatus racine de la query HTTP (en initialisant QueryScope après la lecture de query_id). #16101 (Azat Khuzhin). - Il est désormais possible d’exécuter des requêtes
ALTER ... ON CLUSTERquelle que soit la valeur du paramètre<internal_replication>dans la configuration du cluster. #16075 (alesapin). - Correction d’un problème rare où
clickhouse-clientpouvait s’interrompre à la fermeture en raison du chargement des suggestions. Cela corrige #16035. #16047 (alexey-milovidov). - Ajout de la prise en charge du layout
cachepour les DictionariesRedisavec clé complexe. #15985 (Anton Popov). - Correction d’un blocage de requête (boucle infinie) en cas de mauvaise configuration (
connections_with_failover_max_triesdéfini à 0). #15876 (Azat Khuzhin). - Changement du niveau de certains log messages, de information à debug, afin que les messages d’information n’apparaissent pas pour chaque requête. Cela clôt #5293. #15816 (alexey-milovidov).
- Suppression des métriques
MemoryTrackingInBackground*afin d’éviter des résultats potentiellement trompeurs. Cela corrige #15684. #15813 (alexey-milovidov). - Ajout de tentatives de reconnexion à l’outil
zookeeper-dump-tree. #15711 (alexey-milovidov). - Permet de spécifier explicitement une liste de colonnes dans la requête
CREATE TABLE table AS table_function(...). Corrige #9249 Corrige #14214. #14295 (tavplubix).
Amélioration des performances
- N’effectue pas de fusion de parts entre partitions dans SELECT FINAL. #15938 (Kruglov Pavel).
- Améliore les performances des fonctions d’agrégation
-OrNullet-OrDefault. #16661 (alexey-milovidov). - Améliore les performances de
quantileMerge. Dans les versions précédentes, c’était extrêmement lent. Cela corrige #1463. #16643 (alexey-milovidov). - Améliore légèrement les performances des fonctions logiques. #16347 (alexey-milovidov).
- Améliore les performances de l’attribution des merges dans les table engines MergeTree. Cela ne devrait pas être visible pour l’utilisateur. #16191 (alesapin).
- Accélère le chargement des dictionnaires hashed/sparse_hashed en préallouant la table de hachage. #15454 (Azat Khuzhin).
- Désormais, l’optimisation triviale de count devient légèrement moins triviale. Les prédicats qui contiennent l’expression de partition exacte peuvent aussi être optimisés. Cela corrige également #11092, qui renvoie un count incorrect lorsque
max_parallel_replicas > 1. #15074 (Amos Bird).
Amélioration de la compilation/des tests/du packaging
- Ajout d’une vérification de type flaky pour les tests stateless. Elle détectera à l’avance les tests fonctionnels potentiellement instables, avant leur fusion. #16238 (alesapin).
- Utilisation de la version appropriée de
croaringau lieu de l’amalgamation. #16285 (sundyli). - Amélioration de la génération des fichiers de build pour le système de build
ya.make(Arcadia). #16700 (alexey-milovidov). - Ajout d’un outil de vérification des fichiers binlog MySQL pour le moteur de base de données
MaterializeMySQL.MaterializeMySQLest une fonctionnalité expérimentale. #16223 (Winter Zhang). - Vérification du bit exécutable sur les fichiers non exécutables. Il arrive souvent que des fichiers exécutables provenant de Windows soient validés par erreur. #15843 (alexey-milovidov).
- Vérification de
#pragma oncedans les en-têtes. #15818 (alexey-milovidov). - Correction du style de code incorrect
&vector[idx]dans libhdfs3. Cela corrige la compilation de débogage de libcxx. Voir aussi https://github.com/ClickHouse-Extras/libhdfs3/pull/8 . #15815 (Amos Bird). - Correction de la compilation d’un outil d’exemple secondaire sur Mac OS. Notez que nous ne compilons pas les exemples sur Mac OS dans notre CI (nous ne compilons que le binaire ClickHouse), il est donc quasiment certain que cela recassera. Cela corrige #15804. #15808 (alexey-milovidov).
- Simplification du script d’initialisation Sys/V. #14135 (alexey-milovidov).
- Ajout de
boost::program_optionsàdb_generatorafin d’en faciliter l’utilisation. Cela clôture #15940. #15973 (Nikita Mikhaylov).
Version 20.10 de ClickHouse
Version de ClickHouse v20.10.7.4-stable, 2020-12-24
Correction de bugs
- Correction d’un problème lorsque le processus
clickhouse-odbc-bridgeest inaccessible par le serveur sur des machines avec une double pileIPv4/IPv6, ainsi que d’un problème où les mises à jour des dictionnaires ODBC étaient effectuées à l’aide de requêtes mal formées et/ou provoquaient des crashs. Cela ferme peut-être #14489. #18278 (Denis Glazachev). - Correction de la comparaison des clés entre les types Enum et Int. Cela corrige #17989. #18214 (Amos Bird).
- Correction d’un crash lors de la conversion d’une clé unique dans le moteur de base de données
MaterializeMySQL. Cela corrige #18186 et #16372 #18211 (Winter Zhang). - Correction de
std::out_of_range: basic_stringlors de l’analyse des URL S3. #18059 (Vladimir Chebotarev). - Correction du problème où certaines tables n’étaient pas synchronisées de MySQL vers ClickHouse, car la conversion des index de préfixe MySQL n’était pas prise en charge pour MaterializeMySQL. Cela corrige #15187 et #17912 #17944 (Winter Zhang).
- Correction d’un segfault possible dans la fonction d’agrégation
topK. Cela ferme #17404. #17845 (Maksim Kita). - Ne pas restaurer les parts depuis
WALsiin_memory_parts_enable_walest désactivé. #17802 (detailyang). - Correction d’un problème où ClickHouse ne parvenait pas à rétablir la connexion aux serveurs MySQL. #17681 (Alexander Kazakov).
- Correction du problème de table
system.stack_tracevide lorsque le serveur fonctionne en mode démon. #17630 (Amos Bird). - Correction du comportement lorsque
clickhouse-clientest utilisé en mode interactif avec des requêtes multiligne et qu’un commentaire sur une seule ligne était étendu par erreur jusqu’à la fin de la requête. Cela corrige #13654. #17565 (alexey-milovidov). - Correction du problème où le serveur pouvait cesser d’accepter les connexions dans de très rares cas. #17542 (alexey-milovidov).
- Correction du blocage d’une requête
ALTERlorsque la mutation correspondante avait été interrompue sur une autre réplique. Cela corrige #16953. #17499 (alesapin). - Correction d’un bug où la taille du mark cache était sous-estimée par ClickHouse. Cela peut se produire lorsqu’il y a beaucoup de petits fichiers avec des marks. #17496 (alesapin).
- Correction de
ORDER BYavec le paramètre activéoptimize_redundant_functions_in_order_by. #17471 (Anton Popov). - Correction des doublons après
DISTINCT, qui pouvaient survenir en raison d’une optimisation incorrecte. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Correction d’un crash lors de la lecture depuis une table
JOINavec des typesLowCardinality. Cela corrige #17228. #17397 (Nikolai Kochetov). - Correction de l’invalidation de l’index set lorsqu’il y a des colonnes const dans la sous-requête. Cela corrige #17246 . #17249 (Amos Bird).
- Correction de la comparaison
ColumnConst, qui provoquait un crash. Cela corrige #17088 . #17135 (Amos Bird). - Correction d’un bug où des requêtes
ON CLUSTERpouvaient rester bloquées indéfiniment pour desReplicatedMergeTreeTablesnon leaders. #17089 (alesapin). - Correction d’un bug détecté par le fuzzer dans la fonction
fuzzBits. Cela corrige #16980. #17051 (hexiaoting). - Évite des erreurs réseau inutiles pour les requêtes distantes susceptibles d’être annulées pendant leur exécution, comme les requêtes avec
LIMIT. #17006 (Azat Khuzhin). - Correction d’un résultat incorrect pour les grands entiers (128 et 256 bits) lors d’une conversion depuis un double. #16986 (Mike).
- Résout à nouveau l’IP de
format_avro_schema_registry_urlen cas d’erreur. #16985 (filimonov). - Correction d’un possible crash du serveur après
ALTER TABLE ... MODIFY COLUMN ... NewTypelorsqu’unSELECTcomporte une expressionWHEREsur la colonne en cours de modification et que l’alter n’est pas encore terminé. #16968 (Amos Bird). - Les informations de blame n’étaient pas calculées correctement dans
clickhouse-git-import. #16959 (alexey-milovidov). - Correction de l’optimisation de order by avec des fonctions monotones. Cela corrige #16107. #16956 (Anton Popov).
- Correction de l’optimisation de group by avec le paramètre
optimize_aggregators_of_group_by_keysactivé et des joins. Cela corrige #12604. #16951 (Anton Popov). - Le script d’installation doit toujours créer les sous-répertoires dans les dossiers de config. Cela ne concerne que les builds Docker avec une config personnalisée. #16936 (filimonov).
- Correction d’une possible erreur
Illegal type of argumentpour les requêtes avecORDER BY. Cela corrige #16580. #16928 (Nikolai Kochetov). - Interruption du téléversement multipartie si aucune donnée n’a été écrite dans
WriteBufferFromS3. #16840 (Pavel Kovalenko). - Correction d’un plantage lors de l’utilisation de
anysans argument. Cela corrige #16803. #16826 (Amos Bird). - Correction du comportement où ClickHouse renvoyait toujours 0 au lieu du nombre de lignes affectées pour les requêtes
INSERTvia le protocole MySQL. Cela corrige #16605. #16715 (Winter Zhang). - Correction de la croissance incontrôlée de
TDigest. #16680 (hrissan). - Correction de l’échec d’une requête distante lors de l’utilisation du suffixe
ifdans une fonction d’agrégation. Cela corrige #16574 et #16231. #16610 (Winter Zhang).
Version de ClickHouse v20.10.4.1-stable, 2020-11-13
Corrections de bugs
- Corrige de rares crashs silencieux lorsque le profiler de requêtes est activé et que ClickHouse est installé sur un système d’exploitation avec une version de glibc qui comporte (apparemment) des tables de désempilement asynchrones défectueuses pour certaines fonctions. Cela corrige #15301. Cela corrige #13098. #16846 (alexey-milovidov).
- Corrige l’opérateur
INappliqué à plusieurs colonnes et tuples avec le paramètretransform_null_inactivé. Corrige #15310. #16722 (Anton Popov). - Corrige optimize_read_in_order/optimize_aggregation_in_order avec max_threads>0 et une expression dans ORDER BY. #16637 (Azat Khuzhin).
- Désormais, lors de l’analyse d’AVRO en entrée, LowCardinality est supprimé du type. Corrige #16188. #16521 (Mike).
- Corrige la croissance rapide des métadonnées lors de l’utilisation de MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, avec
slave_parallel_workeractivé sur MySQL Slave, en réduisant correctement les ensembles GTID. Cela corrige #15951. #16504 (TCeason). - Corrige DROP TABLE pour Distributed (en concurrence avec INSERT). #16409 (Azat Khuzhin).
- Corrige le traitement de très grands éléments dans la file de réplication. De très grands éléments peuvent apparaître dans les requêtes ALTER si la structure de la table est extrêmement volumineuse (près de 1 Mo). Cela corrige #16307. #16332 (alexey-milovidov).
- Corrige un bug avec la base de données MySQL. Lorsque le serveur MySQL utilisé comme moteur de base de données est indisponible, certaines requêtes renvoient une Exception, car elles essaient de récupérer les tables sur le serveur indisponible alors que ce n’est pas nécessaire. Par exemple, la requête
SELECT ... FROM system.partsdevrait fonctionner uniquement avec les tables MergeTree et ne pas accéder du tout à la base de données MySQL. #16032 (Kruglov Pavel).
Amélioration
- Solution de contournement pour l’utilisation de S3 avec le serveur nginx comme proxy. Actuellement, Nginx n’accepte pas les URL dont le chemin est vide, comme http://domain.com?delete, mais la version standard d’aws-sdk-cpp génère ce type d’URL. Ce commit utilise une version corrigée d’aws-sdk-cpp qui, dans ces cas, génère des URL avec « / » comme chemin, par exemple http://domain.com/?delete. #16813 (ianton-ru).
version de ClickHouse v20.10.3.30, 2020-10-28
Changement non rétrocompatible
- Rendre
multiple_joins_rewriter_versionobsolète. Supprimer la première version du mécanisme de réécriture des JOIN. #15472 (Artem Zuikov). - Modifier la valeur par défaut du paramètre
format_regexp_escaping_rule(lié au formatRegexp) enRaw(c’est-à-dire lire l’intégralité du sous-motif comme une valeur) afin d’aligner davantage le comportement sur les attentes des utilisateurs. #15426 (alexey-milovidov). - Ajouter la prise en charge des commentaires multilignes imbriqués
/* comment /* comment */ */en SQL. Cela est conforme à la norme SQL. #14655 (alexey-milovidov). - Ajout de paramètres MergeTree (
max_replicated_merges_with_ttl_in_queueetmax_number_of_merges_with_ttl_in_pool) pour contrôler le nombre de merges avec TTL dans le pool d’arrière-plan et la file d’attente de réplication. Ce changement ne rompt la compatibilité avec les versions antérieures que si vous utilisez un TTL de suppression. Sinon, la réplication restera compatible. Vous pouvez éviter les problèmes d’incompatibilité en mettant à jour toutes les répliques du shard en même temps, ou en exécutantSYSTEM STOP TTL MERGESjusqu’à la fin de la mise à jour de toutes les répliques. Si une entrée incompatible apparaît dans la file d’attente de réplication, exécutez d’abordSYSTEM STOP TTL MERGES, puisALTER TABLE ... DETACH PARTITION ...sur la partition à laquelle le merge TTL incompatible a été affecté. Rattachez-la ensuite sur une seule réplique. #14490 (alesapin). - Lors d’une mise à niveau depuis des versions antérieures à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou supérieures et des versions inférieures à 20.5, le redémarrage de nœuds ClickHouse exécutant d’anciennes versions en présence de versions plus récentes peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquetsclickhouse-serversur tous les nœuds du cluster, puis redémarrez-les (ainsi, lors du redémarrage,clickhouse-serverdémarrera avec la nouvelle version).
Nouvelle fonctionnalité
- Recompression des données en arrière-plan. Ajout de la possibilité de spécifier
TTL ... RECOMPRESS codec_namepour la famille de moteurs de table MergeTree. #14494 (alesapin). - Ajout des insertions avec quorum parallèles. Cela résout #15601. #15601 (Latysheva Alexandra).
- Paramètres pour renforcer davantage la durabilité des données. Utile pour les configurations non répliquées. #11948 (Anton Popov).
- Lorsqu’un bloc dupliqué est écrit sur une réplique où il n’existe pas localement (n’a pas été récupéré depuis d’autres répliques), ne pas l’ignorer et l’écrire localement afin d’obtenir le même effet que s’il avait été répliqué avec succès. #11684 (alexey-milovidov).
- Nous prenons désormais en charge
WITH <identifier> AS (subquery) ...pour introduire des sous-requêtes nommées dans le contexte de la requête. Cela résout #2416. Cela résout #4967. #14771 (Amos Bird). - Introduction du paramètre
enable_global_with_statement, qui propage les instructionsWITHdu premier select aux autres requêtes select au même niveau et rend les alias des instructionsWITHvisibles dans les sous-requêtes. #15451 (Amos Bird). - Sécurisation de l’exécution des requêtes inter-clusters (avec initial_user comme utilisateur de la requête en cours). #13156 (Azat Khuzhin). #15551 (Azat Khuzhin).
- Ajout de la possibilité de supprimer les propriétés de colonne et les TTL de table. Introduction des requêtes
ALTER TABLE MODIFY COLUMN col_name REMOVE what_to_removeetALTER TABLE REMOVE TTL. Ces deux opérations sont légères et exécutées au niveau des métadonnées. #14742 (alesapin). - Ajout du format
RawBLOB. Il est destiné à l’entrée ou à la sortie d’une valeur unique, sans échappement ni délimiteurs. Cela résout #15349. #15364 (alexey-milovidov). - Ajout de la fonction
reinterpretAsUUID, qui permet de convertir une chaîne d’octets big-endian en UUID. #15480 (Alexander Kuzmenkov). - Implémentation du paramètre
force_data_skipping_indices. #15642 (Azat Khuzhin). - Ajout du paramètre
output_format_pretty_row_numberspour numéroter les résultats dans les formats Pretty. Cela résout #15350. #15443 (flynn). - Ajout d’un outil d’obfuscation des requêtes. Il permet de partager davantage de requêtes afin d’améliorer les tests. Cela résout #15268. #15321 (alexey-milovidov).
- Ajout de la fonction de table
null('structure'). #14797 (vxider). - Ajout de la fonction
formatReadableQuantity. Elle facilite la lecture des grands nombres. #14725 (Artem Hnilov). - Ajout du format
LineAsString, qui accepte une séquence de lignes séparées par des sauts de ligne ; chaque ligne est analysée dans son intégralité comme un unique champ String. #14703 (Nikita Mikhaylov), #13846 (hexiaoting). - Ajout du format
JSONStrings, qui génère les données sous forme de tableaux de chaînes. #14333 (hcz). - Ajout de la prise en charge du format de colonne “Raw” pour le format
Regexp. Cela permet d’extraire simplement les sous-motifs tels quels, sans aucune règle d’échappement. #15363 (alexey-milovidov). - Prise en charge d’une représentation configurable de
NULLpour le format de sortieTSV. Elle est contrôlée par le paramètreoutput_format_tsv_null_representation, dont la valeur par défaut est\N. Cela résout #9375. Notez que ce paramètre ne contrôle que le format de sortie et que\Nest la seule représentation deNULLprise en charge pour le format d’entréeTSV. #14586 (Kruglov Pavel). - Prise en charge du type de données Decimal pour
MaterializeMySQL.MaterializeMySQLest une fonctionnalité expérimentale. #14535 (Winter Zhang). - Ajout d’une nouvelle fonctionnalité :
SHOW DATABASES LIKE 'xxx'. #14521 (hexiaoting). - Ajout d’un script pour importer un dépôt git (arbitraire) dans ClickHouse comme jeu de données d’exemple. #14471 (alexey-milovidov).
- Désormais, les instructions d’insertion peuvent contenir un astérisque (ou ses variantes) avec des transformateurs de colonnes dans la liste des colonnes. #14453 (Amos Bird).
- Nouveaux paramètres de limite de complexité des requêtes
max_rows_to_read_leaf,max_bytes_to_read_leafpour les requêtes distribuées, afin de limiter le nombre maximal de lignes/octet lus sur les nœuds feuilles. La limite s’applique uniquement aux lectures locales, à l’exclusion de l’étape finale de fusion sur le nœud racine. #14221 (Roman Khavronenko). - Autorise l’utilisateur à spécifier des paramètres pour le stockage
ReplicatedMergeTree*dans la section<replicated_merge_tree>du fichier de configuration. Cela fonctionne de manière similaire à la section<merge_tree>. Pour les stockagesReplicatedMergeTree*, les paramètres de<merge_tree>et<replicated_merge_tree>sont appliqués ensemble, mais ceux de<replicated_merge_tree>ont une priorité plus élevée. Ajout de la tablesystem.replicated_merge_tree_settings. #13573 (Amos Bird). - Ajout de la fonction
mapPopulateSeries. #13166 (Ildus Kurbangaliev). - Prise en charge des types MySQL :
decimal(commeDecimaldans ClickHouse) etdatetimeavec une précision inférieure à la seconde (commeDateTime64). #11512 (Vasily Nemkov). - Ajout du champ
event_time_microsecondsaux tablessystem.text_log,system.trace_log,system.query_logetsystem.query_thread_log. #14760 (Bharat Nallan). - Ajout de
event_time_microsecondsaux tablessystem.asynchronous_metric_log&system.metric_log. #14514 (Bharat Nallan). - Ajout du champ
query_start_time_microsecondsaux tablessystem.query_log&system.query_thread_log. #14252 (Bharat Nallan).
Correction de bug
- Corrige le cas où la mémoire peut être surallouée, indépendamment de la limite. Corrige #14560. #16206 (alexey-milovidov).
- Corrige le blocage de la source de dictionnaire
executable. Dans les versions précédentes, lors de l’utilisation de certains formats (par ex.JSONEachRow), les données n’étaient pas transmises à un processus enfant avant que celui-ci n’ait produit au moins une sortie. Corrige #1697. Corrige #2455. #14525 (alexey-milovidov). - Corrige une double libération de mémoire en cas d’exception dans la fonction
dictGet. Cela pouvait se produire si le dictionnaire se chargeait avec une erreur. #16429 (Nikolai Kochetov). - Corrige GROUP BY avec les modificateurs totals/rollup/cube et les fonctions min/max sur les clés de GROUP BY. Corrige #16393. #16397 (Anton Popov).
- Corrige l’INSERT Distributed asynchrone avec prefer_localhost_replica=0 et internal_replication. #16358 (Azat Khuzhin).
- Corrige un code très incorrect dans l’implémentation de TwoLevelStringHashTable, qui pouvait entraîner une fuite de mémoire. #16264 (Amos Bird).
- Corrige un segfault dans certains cas d’agrégation incorrecte dans des lambdas. #16082 (Anton Popov).
- Corrige le blocage de la requête
ALTER MODIFY ... ORDER BYpourReplicatedVersionedCollapsingMergeTree. Corrige #15980. #16011 (alesapin). MaterializeMySQL(fonctionnalité expérimentale) : corrige l’analyseur des noms de collation et de jeu de caractères, et prend en chargelength = 0pour le type String. #16008 (Winter Zhang).- Permet d’utiliser la disposition
directpour les dictionnaires à clés complexes. #16007 (Anton Popov). - Évite le blocage d’une replica pendant 5 à 10 minutes lorsqu’une erreur de replication survient après une période d’inactivité. #15987 (filimonov).
- Corrige de rares segfaults lors d’un insert dans MaterializedView ou d’une sélection depuis celle-ci, en cas de suppression concurrente de la table cible (pour le moteur de base de données Atomic). #15984 (tavplubix).
- Corrige l’ambiguïté dans l’analyse des settings profiles :
CREATE USER ... SETTINGS profile readonlyest désormais interprété comme l’utilisation d’un profile nomméreadonly, et non d’un setting nomméprofileavec la contrainte readonly. Corrige #15628. #15982 (Vitaly Baranov). MaterializeMySQL(fonctionnalité expérimentale) : corrige un crash en cas d’échec de création de database. #15954 (Winter Zhang).- Correction de l’échec de
DROP TABLE IF EXISTSavec l’erreurTable ... does not existlorsqu’une table est renommée de manière concurrente (pour le moteur de base de données Atomic). Correction d’un rare interblocage lors de l’exécution concurrente de certaines requêtes DDL sur plusieurs tables (commeDROP DATABASEetRENAME TABLE) - Correction de l’échec deDROP/DETACH DATABASEavecTable ... does not existlors de l’exécution concurrente deDROP/DETACH TABLE. #15934 (tavplubix). - Correction d’un résultat vide incorrect pour une requête sur une table
Distributedsi la requête contientWHERE,PREWHEREetGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Corrige #12513 : expressions de différence avec le même alias lorsqu’une requête est réanalysée. #15886 (Winter Zhang).
- Correction d’interblocages très rares possibles dans l’implémentation de RBAC. #15875 (Vitaly Baranov).
- Correction de l’exception
Block structure mismatchdans les requêtesSELECT ... ORDER BY DESCexécutées après une requêteALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). MaterializeMySQL(fonctionnalité expérimentale) : correction de l’imprécision deselect count(). #15767 (tavplubix).- Correction de certains cas de requêtes dans lesquelles seules des colonnes virtuelles sont sélectionnées. Auparavant, l’exception
Not found column _nothing in blockpouvait être levée. Corrige #12298. #15756 (Anton Popov). - Correction de la suppression d’une vue matérialisée avec table interne dans une base de données Atomic (bloquait tous les
DROP TABLEsuivants à cause du blocage du thread de travail, en raison duDROP TABLErécursif sur la table interne de la MV). #15743 (Azat Khuzhin). - Possibilité de déplacer une partie vers un autre disque/volume si la première tentative a échoué. #15723 (Pavel Kovalenko).
- Correction de l’erreur
Cannot find columnqui peut se produire lors de l’insertion dansMATERIALIZED VIEWsi la requête de laMVcontientARRAY JOIN. #15717 (Nikolai Kochetov). - Correction de la valeur par défaut trop basse du paramètre
max_replicated_logs_to_keep, qui pouvait entraîner trop souvent la perte de répliques. Amélioration du processus de récupération des répliques perdues en choisissant la réplique la plus à jour à cloner. En outre, les anciennes parties de la réplique perdue ne sont plus supprimées, mais détachées. #15701 (tavplubix). - Correction d’une rare condition de concurrence dans les dictionnaires et les tables MySQL. #15686 (alesapin).
- Correction d’une condition de concurrence (sans gravité) dans AMQP-CPP. #15667 (alesapin).
- Correction de l’erreur
Cannot add simple transform to empty Pipe, qui se produisait lors de la lecture depuis une tableBufferdont la structure différait de celle de la table de destination. Cela pouvait se produire si la table de destination renvoyait un résultat vide pour la requête. Corrige #15529. #15662 (Nikolai Kochetov). - Gestion correcte des erreurs lors d’une insertion dans MergeTree avec S3. MergeTree sur S3 est une fonctionnalité expérimentale. #15657 (Pavel Kovalenko).
- Correction d’un bug dans la fonction de table S3 : la Region de l’URL n’était pas appliquée à la configuration du client S3. #15646 (Vladimir Chebotarev).
- Correction de l’ordre de destruction des ressources dans l’étape
ReadFromStoragedu plan d’exécution de la requête. Cela pouvait provoquer des plantages dans de rares cas. Possiblement lié à #15610. #15645 (Nikolai Kochetov). - Soustrait la métrique
ReadonlyReplicalors du détachement de tables en lecture seule. #15592 (sundyli). - Correction de l’erreur
Element ... is not a constant expressionlors de l’utilisation du résultat d’une fonctionJSON*dansVALUES,LIMITou dans le membre droit de l’opérateurIN. #15589 (tavplubix). - La query se terminera plus rapidement en cas d’exception. Annule l’exécution sur les répliques distantes si une exception se produit. #15578 (Azat Khuzhin).
- Empêche l’apparition du message d’erreur
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Cela corrige #15541. #15557 (alexey-milovidov). - Correction de l’erreur
Database <db> does not exist.dans les requêtes avecINet une table Distributed lorsqu’il n’y a pas de base de données sur le nœud initiateur. #15538 (Artem Zuikov). - Une mutation pouvait rester bloquée en attendant une part inexistante après
MOVEouREPLACE PARTITIONou, dans de rares cas, aprèsDETACHouDROP PARTITION. C’est corrigé. #15537 (tavplubix). - Correction d’un bug où l’opérateur
ILIKEcessait d’être insensible à la casse siLIKEavec le même motif avait été exécuté. #15536 (alesapin). - Correction des erreurs
Missing columnslors de la sélection de colonnes absentes des données, mais dépendant d’autres colonnes elles aussi absentes des données. Corrige #15530. #15532 (alesapin). - Déclenche une erreur lorsqu’un seul paramètre est passé à ReplicatedMergeTree, au lieu de l’ignorer. #15516 (nvartolomei).
- Correction d’un bug lié à l’abonnement aux événements dans DDLWorker qui, dans de rares cas, pouvait bloquer des requêtes dans
ON CLUSTER. Introduit dans #13450. #15477 (alesapin). - Signale correctement l’erreur lorsque le second argument de la fonction d’agrégation
boundingRatioest d’un type incorrect. #15407 (detailyang). - Corrige #15365 : l’instruction Attach d’une base de données avec le moteur MySQL lève une exception (pas de contexte de requête). #15384 (Winter Zhang).
- Corrige le cas de plusieurs occurrences de transformateurs de colonnes dans une requête SELECT. #15378 (Amos Bird).
- Corrige la compression dans le stockage
S3. #15376 (Vladimir Chebotarev). - Corrige un bug où des requêtes comme
SELECT toStartOfDay(today())échouent en indiquant un argument time_zone vide. #15319 (Bharat Nallan). - Corrige une race condition lors du renommage d’une table MergeTree et du nettoyage en arrière-plan. #15304 (alesapin).
- Corrige une rare race condition au démarrage du serveur lorsque les logs système sont activés. #15300 (alesapin).
- Corrige le blocage de requêtes contenant de nombreuses sous-requêtes vers la même table du moteur
MySQL. Auparavant, s’il y avait plus de 16 sous-requêtes vers la même tableMySQLdans une requête, celle-ci restait bloquée indéfiniment. #15299 (Anton Popov). - Corrige un signalement MSan dans QueryLog. De la mémoire non initialisée peut être utilisée pour le champ
memory_usage. #15258 (alexey-milovidov). - Corrige ‘Unknown identifier’ dans GROUP BY lorsqu’une requête contient un JOIN sur une table Merge. #15242 (Artem Zuikov).
- Corrige le plantage d’une instance lors de l’utilisation de
joinGetavec des typesLowCardinality. Cela corrige #15214. #15220 (Amos Bird). - Corrige un bug dans le moteur de table
Bufferqui n’autorise pas l’insertion de données d’une nouvelle structure dansBufferaprès une requêteALTER. Corrige #15117. #15192 (alesapin). - Ajuste la taille du champ Decimal dans le paquet de définition de colonne MySQL. #15152 (maqroll).
- Corrige
Data compressed with different methodsdansjoin_algorithm='auto'. Conserve LowCardinality comme type pour la clé de jointure de la table de gauche dansjoin_algorithm='partial_merge'. #15088 (Artem Zuikov). - Met à jour
jemallocpour corrigerpercpu_arenaavec un masque d’affinité. #15035 (Azat Khuzhin). #14957 (Azat Khuzhin). - Nous utilisons déjà une comparaison avec remplissage entre String et FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). Cette PR applique la même logique à la comparaison des champs, ce qui corrige l’utilisation de FixedString comme clé primaire. Cela corrige #14908. #15033 (Amos Bird).
- Si la fonction
barétait appelée avec des arguments spécialement conçus, un dépassement de tampon était possible. Cela clôt #13926. #15028 (alexey-milovidov). - Correction de l’erreur
Cannot rename ... errno: 22, strerror: Invalid argumentlors de l’exécution d’une requête DDL dans la base de données atomic lors de l’exécution de clickhouse-server dans Docker sur Mac OS. #15024 (tavplubix). - Correction d’un crash dans RIGHT ou FULL JOIN avec join_algorith=‘auto’ lorsque la limite de mémoire est dépassée et qu’il faut remplacer HashJoin par MergeJoin. #15002 (Artem Zuikov).
- Les paramètres
number_of_free_entries_in_pool_to_execute_mutationetnumber_of_free_entries_in_pool_to_lower_max_size_of_mergepeuvent désormais être égaux àbackground_pool_size. #14975 (alesapin). - Correctif pour que la descente de prédicats fonctionne lorsque la sous-requête contient la fonction
finalizeAggregation. Corrige #14847. #14937 (filimonov). - Publication des fréquences CPU par cœur logique dans
system.asynchronous_metrics. Cela corrige #14923. #14924 (Alexander Kuzmenkov). MaterializeMySQL(fonctionnalité expérimentale) : correction de l’erreur.metadata.tmp File exists. #14898 (Winter Zhang).- Correction du problème où certains appels de la fonction
extractAllGroupspeuvent déclencher l’erreur “Memory limit exceeded”. Cela corrige #13383. #14889 (alexey-milovidov). - Correction d’un SIGSEGV lors d’une tentative d’INSERT dans StorageFile avec un descripteur de fichier. #14887 (Azat Khuzhin).
- Correction d’un segfault dans le dictionnaire
cache#14837. #14879 (Nikita Mikhaylov). MaterializeMySQL(fonctionnalité expérimentale) : correction d’un bug dans l’analyse des événements du binlog MySQL, qui provoquaitAttempt to read after eofetPacket payload is not fully readdans le moteur de base de donnéesMaterializeMySQL. #14852 (Winter Zhang).- Correction d’une erreur rare dans les requêtes
SELECTlorsque la colonne interrogée a une expressionDEFAULTqui dépend d’une autre colonne ayant égalementDEFAULT, qui n’est pas présente dans la requête SELECT et qui n’existe pas sur le disque. Corrige partiellement #14531. #14845 (alesapin). - Corrige un problème où le server peut rester bloqué au démarrage lors de la communication avec ZooKeeper si les fichiers de configuration doivent être récupérés depuis ZK (à l’aide de l’option d’inclusion
from_zk). Cela corrige #14814. #14843 (Alexander Kuzmenkov). - Corrige une détection incorrecte de la monotonie pour les cast
Int -> Intréducteurs sur des types signés. Cela peut entraîner un résultat de requête incorrect. Ce bug est mis en évidence dans #14513. #14783 (Amos Bird). - Le transformateur de colonne
Replacedoit remplacer les identifiants par des AST clonés. Cela corrige #14695. #14734 (Amos Bird). - Correction de l’absence du nom de la database par défaut dans les métadonnées d’une materialized view lors de l’exécution de
ALTER ... MODIFY QUERY. #14664 (tavplubix). - Corrige un bug où une mutation
ALTER UPDATEavec une colonneNullabledans l’expression d’affectation et une valeur constante (commeUPDATE x = 42) entraîne une valeur incorrecte dans la colonne ou un segfault. Corrige #13634, #14045. #14646 (alesapin). - Corrige un résultat incorrect de multiplication Decimal causé par une mauvaise échelle décimale dans la colonne de résultat. #14603 (Artem Zuikov).
- Corrige la fonction
hasavecLowCardinalitydeNullable. #14591 (Mike). - Nettoie le répertoire de données après des exceptions ZooKeeper pendant CreateQuery pour le moteur StorageReplicatedMergeTree. #14563 (Bharat Nallan).
- Corrige de rares segfaults dans les fonctions avec le combinator
-Resample, qui pouvaient apparaître à la suite d’un overflow avec de très grands paramètres. #14562 (Anton Popov). - Corrige un bug lors de la conversion de
Nullable(String)en Enum. Introduit par #12745. Cela corrige #14435. #14530 (Amos Bird). - Correction de l’ordre de tri incorrect d’une colonne
Nullable. Cela corrige #14344. #14495 (Nikita Mikhaylov). - Corrige le fait que la fonction
currentDatabase()ne peut pas être utilisée dans une requête DDLON CLUSTER. #14211 (Winter Zhang). MaterializeMySQL(fonctionnalité expérimentale) : correction de l’erreurPacket payload is not fully readdans le database engineMaterializeMySQL. #14696 (BohuTANG).
Amélioration
- Active le moteur de base de données
Atomicpar défaut pour les bases de données nouvellement créées. #15003 (tavplubix). - Ajoute la possibilité de spécifier des codecs spécialisés comme
Delta,T64, etc. pour les colonnes avec sous-types. Implémente #12551, corrige #11397, corrige #4609. #15089 (alesapin). - Rechargement dynamique de la configuration ZooKeeper. #14678 (sundyli).
- Il est désormais possible d’exécuter des requêtes
ALTER ... ON CLUSTERindépendamment du paramètre<internal_replication>dans la configuration du cluster. #16075 (alesapin). - Désormais,
joinGetprend en charge la recherche multi-clé. Suite de #12418. #13015 (Amos Bird). - Attend que
DROP/DETACH TABLEsoit réellement terminé siNO DELAYouSYNCest spécifié pour la base de donnéesAtomic. #15448 (tavplubix). - Il est désormais possible de modifier le type de la colonne de version pour
VersionedCollapsingMergeTreeavec une requêteALTER. #15442 (alesapin). - Développe les macros
{database},{table}et{uuid}danszookeeper_pathlors de la création d’une table répliquée. N’autorise pasRENAME TABLEsi cela risque de casserzookeeper_pathaprès le redémarrage du serveur. Corrige #6917. #15348 (tavplubix). - La fonction
nowaccepte un argument avec fuseau horaire. Cela résout 15264. #15285 (flynn). - N’autorise pas les connexions au serveur ClickHouse tant que tous les scripts dans
/docker-entrypoint-initdb.d/n’ont pas été exécutés. #15244 (Aleksei Kozharin). - Ajoute le paramètre
optimizeà la requêteEXPLAIN PLAN. S’il est activé, les optimisations au niveau du plan de requête sont appliquées. Activé par défaut. #15201 (Nikolai Kochetov). - Message d’exception approprié en cas de nombre incorrect d’arguments pour CAST. Cela résout #13992. #15029 (alexey-milovidov).
- Ajoute une option pour désactiver le TTL move lors de l’insert d’un data part. #15000 (Pavel Kovalenko).
- Ignore les contraintes de clé lors de l’exécution de mutations. Sans cette pull request, il n’est pas possible d’effectuer des mutations lorsque
force_index_by_date = 1ouforce_primary_key = 1. #14973 (Amos Bird). - Autorise la suppression d’une table répliquée si une tentative de suppression précédente a échoué en raison de l’expiration de la session ZooKeeper. Cela corrige #11891. #14926 (alexey-milovidov).
- Corrige une violation excessive des contraintes de paramètres lors de l’exécution d’un SELECT avec SETTINGS depuis une table distribuée. #14876 (Amos Bird).
- Ajoute un paramètre de requête
load_balancing_first_offsetpour indiquer explicitement quelle est la première réplique. Il est utilisé avec la stratégie de load balancingFIRST_OR_RANDOM, ce qui permet de contrôler la charge des répliques. #14867 (Amos Bird). - Affiche les sous-requêtes pour
SETetJOINdans le résultat deEXPLAIN. #14856 (Nikolai Kochetov). - Autorise l’utilisation d’une configuration de stockage multi-volume dans le stockage
Distributed. #14839 (Pavel Kovalenko). - Construit
query_start_timeetquery_start_time_microsecondsà partir de la même structure timespec. #14831 (Bharat Nallan). - Ajoute la prise en charge de la désactivation de la persistance pour
StorageJoinetStorageSet; cette fonctionnalité est contrôlée par le paramètredisable_set_and_join_persistency. Cette PR résout également l’issue #6318. #14776 (vxider). - Désormais,
COLUMNSpeut être utilisé pour englober une liste de colonnes et appliquer ensuite des transformations de colonnes. #14775 (Amos Bird). - Ajoute
merge_algorithmà la tablesystem.mergespour faciliter l’analyse des fusions. #14705 (Amos Bird). - Corrige une fuite de mémoire potentielle causée par le watch
existsde ZooKeeper. #14693 (hustnn). - Autorise l’exécution parallèle du distributed DDL. #14684 (Azat Khuzhin).
- Ajoute le compteur d’événements
QueryMemoryLimitExceeded. Cela clôt #14589. #14647 (fastio). - Corrige certains espaces de fin dans le formatage des requêtes. #14595 (Azat Khuzhin).
- ClickHouse traite différemment l’expression de partition et l’expression de clé. L’expression de partition est utilisée pour construire un index MinMax contenant les colonnes associées, tandis que l’expression de clé primaire est stockée comme une expression. Il arrive parfois qu’un utilisateur partitionne une table avec une granularité plus grossière, par exemple
partition by i / 1000. Toutefois, les opérateurs binaires ne sont pas monotones, et cette PR tente de corriger cela. Cela pourrait également bénéficier à d’autres cas d’usage. #14513 (Amos Bird). - Ajoute une option pour ignorer les vérifications d’accès pour
DiskS3. Le disks3est une fonctionnalité expérimentale. #14497 (Pavel Kovalenko). - Accélère le processus d’arrêt du serveur s’il y a des requêtes S3 en cours. #14496 (Pavel Kovalenko).
SYSTEM RELOAD CONFIGlève désormais une exception si le rechargement échoue et continue d’utiliser le fichier users.xml précédent. Le rechargement périodique en arrière-plan continue lui aussi d’utiliser le fichier users.xml précédent si le rechargement échoue. #14492 (Vitaly Baranov).- Pour les INSERT avec des données inline au format VALUES en mode script de
clickhouse-client, prise en charge du point-virgule comme terminateur de données, en plus du saut de ligne. Clôture #12288. #13192 (Alexander Kuzmenkov). - Prise en charge des codecs personnalisés dans les parts compactes. #12183 (Anton Popov).
Amélioration des performances
- Activer les parts compactes par défaut pour les petites parts. Cela permettra de traiter plus efficacement les insertions fréquentes (de 4 à 100 fois). #11913 (alexey-milovidov).
- Améliorer les performances de
quantileTDigest. Cela corrige #2668. #15542 (Kruglov Pavel). - Réduire significativement l’utilisation mémoire dans AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- Multiplication sur 256 bits plus rapide. #15418 (Artem Zuikov).
- Améliorer les performances des types 256 bits en utilisant
(u)int64_tcomme type de base pour les entiers larges. Les entiers larges d’origine utilisent des types 8 bits comme type de base. #14859 (Artem Zuikov). - Utiliser explicitement un disque temporaire pour stocker les données temporaires de fusion verticale. #15639 (Grigory Pervakov).
- Utiliser une seule requête S3 DeleteObjects au lieu de plusieurs DeleteObject dans une boucle. Aucun changement fonctionnel, donc couvert par les tests existants comme integration/test_log_family_s3. #15238 (ianton-ru).
- Corriger
DateTime <op> DateTime, qui choisissait par erreur l’implémentation générique lente. Cela corrige #15153. #15178 (Amos Bird). - Améliorer les performances de la clé GROUP BY de type
FixedString. #15034 (Amos Bird). - Verrouiller avec
mlockuniquement le segment de code au démarrage de clickhouse-server. Dans les versions précédentes, toutes les régions mappées étaient verrouillées en mémoire, y compris les informations de Débogage. Les informations de Débogage sont généralement placées dans un fichier distinct, mais lorsque ce n’était pas le cas, cela entraînait une consommation mémoire supplémentaire de 2 à 3 Gio. #14929 (alexey-milovidov). - Le binaire ClickHouse est devenu plus petit grâce à l’optimisation à l’édition des liens.
Amélioration de la compilation/des tests/du packaging
- Nous utilisons désormais clang-11 pour la compilation de production de ClickHouse. #15239 (alesapin).
- Nous utilisons désormais clang-11 pour compiler ClickHouse dans la CI. #14846 (alesapin).
- Passage des builds binaires (Linux, Darwin, AArch64, FreeDSD) à clang-11. #15622 (Ilya Yatsishin).
- Désormais, toutes les images de test utilisent
llvm-symbolizer-11. #15069 (alesapin). - Autorise la compilation avec llvm-11. #15366 (alexey-milovidov).
- Passage de
clang-tidy-10àclang-tidy-11. #14922 (alexey-milovidov). - Utilise par défaut le gestionnaire de passes expérimental de LLVM. #15608 (Danila Kutenin).
- Empêche toute unité de traduction C++ de compiler pendant plus de 10 minutes ou d’utiliser plus de 10 Go de mémoire. Cela corrige #14925. #15060 (alexey-milovidov).
- Rend le test de performance plus stable et plus représentatif en séparant les exécutions de test et de profilage. #15027 (alexey-milovidov).
- Tente de rendre le test de performance plus fiable. Pour cela, remappe à la volée la mémoire exécutable du processus avec
madviseafin d’utiliser les transparent huge pages ; cela peut réduire le nombre de ratés iTLB, principale source d’instabilité dans les tests de performance. #14685 (alexey-milovidov). - Conversion vers Python 3. Cela clôt #14886. #15007 (Azat Khuzhin).
- Échec anticipé dans les tests fonctionnels si le serveur ne répond pas. Cela clôt #15262. #15267 (alexey-milovidov).
- Autorise l’exécution de la version AArch64 de clickhouse-server sans configuration. Cela facilite #15174. #15266 (alexey-milovidov).
- Améliorations des images Docker de CI : suppression de ZooKeeper et utilisation d’un script unique pour l’installation des configurations de test. #15215 (alesapin).
- Corrige la transmission des options CMake dans le script fast test. Corrige l’erreur dans #14711. #15155 (alesapin).
- Ajout d’un script pour exécuter un benchmark matériel en une seule commande. #15115 (alexey-milovidov).
- Division de l’énorme test
test_dictionaries_all_layouts_and_sourcesen tests plus petits. #15110 (Nikita Mikhaylov). - Correction possible du rapport MSan dans base64 (sur les serveurs avec AVX-512). Corrige #14006. #15030 (alexey-milovidov).
- Reformatage et nettoyage du code dans tous les fichiers de test d’intégration *.py. #14864 (Bharat Nallan).
- Correction d’un cas de test instable lié à une transaction vide dans MaterializeMySQL, détecté dans la CI. #14854 (Winter Zhang).
- Tentative d’accélérer légèrement la build. #14808 (alexey-milovidov).
- Accélération légère de la build par suppression des headers inutilisés. #14714 (alexey-milovidov).
- Correction d’un échec de build sur OSX. #14761 (Winter Zhang).
- Activation de ccache par défaut dans cmake s’il est présent sur l’OS. #14575 (alesapin).
- Contrôle de la configuration des builds CI depuis le repository ClickHouse. #14547 (alesapin).
- Dans les fichiers CMake : - Déplacement d’une partie de la description de certaines options dans les commentaires ci-dessus. - Remplacement de 0 ->
OFFet 1 ->ONdans les valeurs par défaut desoption. - Ajout de certaines descriptions et de liens vers la documentation pour les options. - Remplacement de l’optionFUZZER(il existe une autre option,ENABLE_FUZZING, qui active la même fonctionnalité). - Suppression de l’optionENABLE_GTEST_LIBRARY, puisqu’il existeENABLE_TESTS. Voir la description complète dans la PR : #14711 (Mike). - Réduction légère de la taille du binary (~50 Mb pour la version de débogage). #14555 (Artem Zuikov).
- Utilisation de std::filesystem::path dans ConfigProcessor pour concaténer les chemins de fichiers. #14558 (Bharat Nallan).
- Correction d’une assertion de débogage dans
bitShiftLeft()lors d’un appel avec un grand entier négatif. #14697 (Artem Zuikov).
version de ClickHouse 20.9
Version de ClickHouse v20.9.7.11-stable, 2020-12-07
Amélioration des performances
- Améliore les performances de lecture des tables
Mergesur un très grand nombre de tablesMergeTree. Corrige #7748. #16988 (Anton Popov).
Corrections de bugs
- Ne pas restaurer les parts depuis le WAL si
in_memory_parts_enable_walest désactivé. #17802 (detailyang). - Correction d’un segfault lorsqu’il n’y a pas assez d’espace lors d’un insert dans une table
Distributed. #17737 (tavplubix). - Correction d’un problème empêchant ClickHouse de rétablir la connexion aux serveurs MySQL. #17681 (Alexander Kazakov).
- Correction de l’erreur
Function not implementedlors de l’exécution d’une queryRENAMEdans une databaseAtomic, avec ClickHouse exécuté sur Windows Subsystem for Linux. Corrige #17661. #17664 (tavplubix). - Lorsque clickhouse-client est utilisé en mode interactif avec des queries multiligne, un commentaire sur une seule ligne était, par erreur, étendu jusqu’à la fin de la query. Cela corrige #13654. #17565 (alexey-milovidov).
- Correction d’un problème rare pouvant empêcher le serveur d’accepter de nouvelles connexions. #17542 (alexey-milovidov).
- Correction du blocage d’une alter query lorsque la mutation correspondante avait été arrêtée sur une autre replica. Corrige #16953. #17499 (alesapin).
- Correction d’un bug où la taille du mark cache était sous-estimée par ClickHouse. Cela peut se produire lorsqu’il y a beaucoup de petits fichiers contenant des marks. #17496 (alesapin).
- Correction de
ORDER BYlorsque le SETTINGoptimize_redundant_functions_in_order_byest activé. #17471 (Anton Popov). - Correction des doublons après
DISTINCT, qui pouvaient survenir à cause d’une optimisation incorrecte. Corrige #17294. #17296 (li chengxiang). #17439 (Nikolai Kochetov). - Correction d’un crash lors de la lecture depuis une table
JOINavec des typesLowCardinality. Corrige #17228. #17397 (Nikolai Kochetov). - Correction de l’invalidation de l’index set lorsqu’il y a des colonnes constantes dans la subquery. Cela corrige #17246 . #17249 (Amos Bird).
- Correction de la comparaison de ColumnConst, qui entraînait un crash. Cela corrige #17088 . #17135 (Amos Bird).
- Correction d’un crash sur une query
CREATE TABLE ... AS some_tablelorsquesome_tableavait été créée avecAS table_function(). Corrige #16944. #17072 (tavplubix). - Correction d’un bug dans la fonction fuzzBits, issue associée : #16980. #17051 (hexiaoting).
- Évite les erreurs réseau inutiles pour les requêtes distantes pouvant être annulées pendant leur exécution, comme les requêtes avec
LIMIT. #17006 (Azat Khuzhin). - Amélioration mineure. #16866 (tavplubix).
- Renvoie le nombre de lignes affectées pour les requêtes INSERT via le protocole MySQL. Auparavant, ClickHouse renvoyait toujours 0 ; ce problème est corrigé. Corrige #16605. #16715 (Winter Zhang).
Amélioration de la compilation/des tests/du packaging
- Mise à jour des données de fuseau horaire intégrées à la version 2020d (avec également une mise à jour de cctz vers la dernière version de master). #17204 (filimonov).
Version de ClickHouse v20.9.6.14-stable, 2020-11-20
Amélioration
- Permet de se connecter à l’endpoint sécurisé de
clickhouse-servernécessitant SNI. Cela est possible lorsqueclickhouse-serverest hébergé derrière un proxy TLS. #16938 (filimonov). - Les fonctions d’agrégation conditionnelles (par exemple :
avgIf,sumIf,maxIf) doivent renvoyerNULLen l’absence de lignes et utiliser des arguments Nullable. #13964 (Winter Zhang).
Correction de bug
- Correction d’un bug où les requêtes
ON CLUSTERpouvaient rester bloquées indéfiniment sur des ReplicatedMergeTreeTables non leaders. #17089 (alesapin). - Nouvelle résolution de l’adresse IP de
format_avro_schema_registry_urlen cas d’erreur. #16985 (filimonov). - Correction d’un possible crash du serveur après
ALTER TABLE ... MODIFY COLUMN ... NewTypelorsqueSELECTcontient une expressionWHEREsur la colonne en cours de modification et que l’opération ALTER n’est pas encore terminée. #16968 (Amos Bird). - Le script d’installation doit toujours créer des sous-répertoires dans les dossiers de configuration. Cela ne concerne que les builds Docker avec une configuration personnalisée. #16936 (filimonov).
- Correction d’une erreur possible
Illegal type of argumentpour les requêtes avecORDER BY. Corrige #16580. #16928 (Nikolai Kochetov). - Abandon de l’envoi multipart si aucune donnée n’a été écrite dans WriteBufferFromS3. #16840 (Pavel Kovalenko).
- Correction d’un crash lors de l’utilisation de
anysans argument. Cela concerne #16803. cc @azat. #16826 (Amos Bird). - Correction de l’opérateur
INsur plusieurs colonnes et tuples avec le paramètretransform_null_inactivé. Corrige #15310. #16722 (Anton Popov). - Corrige optimize_read_in_order/optimize_aggregation_in_order avec max_threads>0 et une expression dans
ORDER BY. #16637 (Azat Khuzhin). - Corrige #16574, corrige #16231 et corrige l’échec des requêtes distantes lors de l’utilisation de la fonction d’agrégation avec suffixe
if. #16610 (Winter Zhang). - La requête se termine plus rapidement en cas d’exception. Annule l’exécution sur les répliques distantes si une exception se produit. #15578 (Azat Khuzhin).
Version de ClickHouse v20.9.5.5-stable, 2020-11-13
Correction de bug
- Corrige de rares crashs silencieux lorsque le profiler de requêtes est activé et que ClickHouse est installé sur un système d’exploitation avec une version de glibc qui comporte (apparemment) des table de désempilement asynchrone défectueuses pour certaines fonctions. Cela corrige #15301. Cela corrige #13098. #16846 (alexey-milovidov).
- Désormais, lors de l’analyse d’AVRO en entrée, LowCardinality est supprimé du type. Corrige #16188. #16521 (Mike).
- Corrige la croissance rapide des métadonnées lors de l’utilisation de MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, avec
slave_parallel_workeractivé sur le MySQL Slave, en réduisant correctement les ensembles GTID. Cela corrige #15951. #16504 (TCeason). - Corrige DROP TABLE pour Distributed (condition de concurrence avec INSERT). #16409 (Azat Khuzhin).
- Corrige le traitement de très grandes entrées dans la file de réplication. De très grandes entrées peuvent apparaître dans les requêtes ALTER si la structure de la table est extrêmement volumineuse (près de 1 Mo). Cela corrige #16307. #16332 (alexey-milovidov).
- Corrige le comportement incohérent lorsqu’une partie des données renvoyées pouvait être ignorée parce que l’ensemble utilisé pour leur filtrage n’avait pas été créé. #16308 (Nikita Mikhaylov).
- Corrige un bug avec la base de données MySQL. Lorsque le serveur MySQL utilisé comme moteur de base de données est indisponible, certaines requêtes lèvent une exception, car elles essaient de récupérer des tables depuis un serveur désactivé, alors que ce n’est pas nécessaire. Par exemple, la requête
SELECT ... FROM system.partsne devrait concerner que les tables MergeTree et ne pas accéder du tout à la base de données MySQL. #16032 (Kruglov Pavel).
version de ClickHouse v20.9.4.76-stable (2020-10-29)
Corrections de bugs
- Corrige une double libération en cas d’exception dans la fonction
dictGet. Cela pouvait se produire si le dictionnaire était chargé avec une erreur. #16429 (Nikolai Kochetov). - Corrige
GROUP BYavec les modificateurs totals/rollup/cube et les fonctions min/max sur les clés deGROUP BY. Corrige #16393. #16397 (Anton Popov). - Corrige l’
INSERTasynchrone dansDistributedavec prefer_localhost_replica=0 et internal_replication. #16358 (Azat Khuzhin). - Corrige un code très incorrect dans l’implémentation de TwoLevelStringHashTable, qui pouvait entraîner une fuite de mémoire. Je suis surpris que ce bug ait pu passer inaperçu aussi longtemps… #16264 (Amos Bird).
- Corrige le cas où la mémoire peut être allouée au-delà de la limite. Cela clôt #14560. #16206 (alexey-milovidov).
- Corrige le blocage de la requête
ALTER MODIFY ... ORDER BYpourReplicatedVersionedCollapsingMergeTree. Cela corrige #15980. #16011 (alesapin). - Corrige l’analyseur des noms de collation et de jeu de caractères, et prend en charge
length = 0pour le type String. #16008 (Winter Zhang). - Autorise l’utilisation du layout direct pour les dictionnaires avec des clés complexes. #16007 (Anton Popov).
- Empêche le blocage d’une réplique pendant 5 à 10 minutes lorsqu’une erreur de réplication survient après une période d’inactivité. #15987 (filimonov).
- Corrige de rares segfaults lors d’insertions dans MaterializedView ou de sélections depuis celle-ci, en cas de suppression concurrente de la table cible (pour le moteur de base de données Atomic). #15984 (tavplubix).
- Corrige l’ambiguïté dans l’analyse des profils de paramètres :
CREATE USER ... SETTINGS profile readonlyest désormais considéré comme l’utilisation d’un profil nomméreadonly, et non d’un paramètre nomméprofileavec la contrainte readonly. Cela corrige #15628. #15982 (Vitaly Baranov). - Corrige un crash lorsque la création de la base de données échoue. #15954 (Winter Zhang).
- Corrige l’échec de
DROP TABLE IF EXISTSavec l’erreurTable ... does not existlorsque la table est renommée simultanément (pour le moteur de base de données Atomic). Corrige un rare interblocage lors de l’exécution simultanée de certaines requêtes DDL sur plusieurs tables (commeDROP DATABASEetRENAME TABLE). Corrige l’échec deDROP/DETACH DATABASEavecTable ... does not existlors de l’exécution simultanée deDROP/DETACH TABLE. #15934 (tavplubix). - Corrige un résultat vide incorrect pour une requête sur une table
Distributedsi la requête contientWHERE,PREWHEREetGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Correction de possibles interblocages dans RBAC. #15875 (Vitaly Baranov).
- Correction de l’exception
Block structure mismatchdans les requêtesSELECT ... ORDER BY DESCexécutées après une requêteALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). - Correction d’une imprécision de
select count()pour MaterializeMySQL. #15767 (tavplubix). - Correction de certains cas de requêtes dans lesquels seules des colonnes virtuelles sont sélectionnées. Auparavant, l’exception
Not found column _nothing in blockpouvait être levée. Corrige #12298. #15756 (Anton Popov). - Correction d’une valeur par défaut trop basse pour le paramètre
max_replicated_logs_to_keep, qui pouvait entraîner trop souvent la perte de répliques. Amélioration du processus de récupération des répliques perdues en choisissant la réplique la plus à jour à cloner. De plus, les anciennes parts de la réplique perdue ne sont plus supprimées, mais détachées. #15701 (tavplubix). - Correction de l’erreur
Cannot add simple transform to empty Pipe, qui se produisait lors de la lecture depuis une tableBufferayant une structure différente de celle de la table de destination. Cela pouvait se produire si la table de destination renvoyait un résultat vide pour la requête. Corrige #15529. #15662 (Nikolai Kochetov). - Correction d’un bug avec les globs dans la S3 table function : la région de l’URL n’était pas appliquée à la configuration du client S3. #15646 (Vladimir Chebotarev).
- Décrémentation de la métrique
ReadonlyReplicalors du détachement de tables en lecture seule. Cela corrige #15598. #15592 (sundyli). - Génère désormais une erreur lorsqu’un seul paramètre est passé à ReplicatedMergeTree, au lieu de l’ignorer. #15516 (nvartolomei).
Amélioration
- Il est désormais possible d’exécuter des requêtes
ALTER ... ON CLUSTERindépendamment du paramètre<internal_replication>dans la config du cluster. #16075 (alesapin). - Déplie les macros
{database},{table}et{uuid}dans les arguments deReplicatedMergeTreelors de la création de la table. #16160 (tavplubix).
Version de ClickHouse v20.9.3.45-stable (2020-10-09)
Correction de bugs
- Corrige l’erreur
Cannot find columnqui peut se produire lors d’une insertion dansMATERIALIZED VIEWsi la requête de laMVcontientARRAY JOIN. #15717 (Nikolai Kochetov). - Corrige une condition de concurrence dans AMQP-CPP. #15667 (alesapin).
- Corrige l’ordre de destruction des ressources à l’étape
ReadFromStoragedu plan de requête. Cela pouvait provoquer des crashs dans de rares cas. Possiblement lié à #15610. #15645 (Nikolai Kochetov). - Corrige l’erreur
Element ... is not a constant expressionlors de l’utilisation du résultat d’une fonctionJSON*dansVALUES,LIMITou dans la partie droite de l’opérateurIN. #15589 (tavplubix). - Empêche l’apparition du message d’erreur
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Corrige #15541. #15557 (alexey-milovidov). - Réduit significativement l’utilisation mémoire dans AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- Une mutation pouvait rester bloquée en attendant une part inexistante après
MOVEouREPLACE PARTITIONou, dans de rares cas, aprèsDETACHouDROP PARTITION. C’est corrigé. #15537 (tavplubix). - Corrige un bug où l’opérateur
ILIKEcesse d’être insensible à la casse siLIKEavec le même motif a été exécuté. #15536 (alesapin). - Corrige les erreurs
Missing columnslors de la sélection de colonnes absentes des données, mais dépendant d’autres colonnes elles aussi absentes des données. Corrige #15530. #15532 (alesapin). - Corrige un bug dans l’abonnement aux événements de DDLWorker qui, dans de rares cas, pouvait entraîner le blocage de requêtes dans
ON CLUSTER. Introduit dans #13450. #15477 (alesapin). - Signale l’erreur appropriée lorsque le deuxième argument de la fonction d’agrégation
boundingRatioa un type incorrect. #15407 (detailyang). - Corrige un bug où des requêtes comme
SELECT toStartOfDay(today())échouent en signalant un argument time_zone vide. #15319 (Bharat Nallan). - Corrige une rare condition de concurrence lors du renommage d’une table MergeTree et du nettoyage en arrière-plan. #15304 (alesapin).
- Corrige une rare condition de concurrence au démarrage du serveur lorsque system.logs est activé. #15300 (alesapin).
- Corrige un signalement MSan dans QueryLog. De la mémoire non initialisée peut être utilisée pour le champ
memory_usage. #15258 (alexey-milovidov). - Corrige le plantage d’une instance lors de l’utilisation de joinGet avec des types LowCardinality. Cela corrige #15214. #15220 (Amos Bird).
- Corrige un bug dans le moteur de table
Bufferqui n’autorise pas l’insertion de données avec une nouvelle structure dansBufferaprès une requêteALTER. Corrige #15117. #15192 (alesapin). - Ajuste la taille du champ decimals dans le paquet de définition de colonne MySQL. #15152 (maqroll).
- Corrige l’erreur
Cannot rename ... errno: 22, strerror: Invalid argumentlors de l’exécution d’une requête DDL dans une base de données Atomic lorsque clickhouse-server s’exécute dans Docker sur Mac OS. #15024 (tavplubix). - Corrige le push down des prédicats lorsque la sous-requête contient la fonction finalizeAggregation. Corrige #14847. #14937 (filimonov).
- Corrige un problème où le serveur pouvait rester bloqué au démarrage lors de la communication avec ZooKeeper si les fichiers de configuration devaient être récupérés depuis ZK (à l’aide de l’option d’inclusion
from_zk). Cela corrige #14814. #14843 (Alexander Kuzmenkov).
Amélioration
- Il est désormais possible de modifier le type de la colonne de version de
VersionedCollapsingMergeTreeà l’aide d’une requêteALTER. #15442 (alesapin).
Version de ClickHouse v20.9.2.20, 2020-09-22
Changement non rétrocompatible
- Lors d’une mise à niveau depuis une version antérieure à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou supérieures et des versions antérieures à 20.5, le redémarrage de nœuds ClickHouse exécutant une ancienne version en présence de versions plus récentes peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquets clickhouse-server sur tous les nœuds du cluster, puis redémarrez-les (ainsi, lorsque clickhouse-server redémarrera, il se lancera avec la nouvelle version).
Nouvelle fonctionnalité
- Ajout de transformateurs de colonnes
EXCEPT,REPLACE,APPLY, qui peuvent être appliqués à la liste des colonnes sélectionnées (après*ouCOLUMNS(...)). Par exemple, vous pouvez écrireSELECT * EXCEPT(URL) REPLACE(number + 1 AS number). Autre exemple :select * apply(length) apply(max) from wide_string_tablepour déterminer la longueur maximale de toutes les colonnes de type chaîne. #14233 (Amos Bird). - Ajout d’une fonction d’agrégation
rankCorrqui calcule un coefficient de corrélation de rang. #11769 (antikvist) #14411 (Nikita Mikhaylov). - Ajout de la fonction de table
view, qui transforme une sous-requête en objet de type table. Cela facilite le passage de requêtes. Par exemple, elle peut être utilisée dans les fonctions de table remote/cluster. #12567 (Amos Bird).
Correction de bugs
- Corrige un bug où une mutation
ALTER UPDATEavec une colonne Nullable dans l’expression d’affectation et une valeur constante (commeUPDATE x = 42) entraîne une valeur incorrecte dans la colonne ou un segfault. Corrige #13634, #14045. #14646 (alesapin). - Corrige un résultat incorrect de multiplication Decimal causé par une échelle décimale erronée dans la colonne de résultat. #14603 (Artem Zuikov).
- Corrige l’ordre de tri incorrect d’une colonne
Nullable. Corrige #14344. #14495 (Nikita Mikhaylov). - Corrige une comparaison incohérente avec une clé primaire de type
FixedStringlors de l’analyse des index si elle est comparée à une chaîne plus courte. Corrige #14908. #15033 (Amos Bird). - Corrige un bug entraînant une attribution incorrecte des merges si la table comporte des partitions avec une seule partie. #14444 (alesapin).
- Si la fonction
barétait appelée avec des arguments spécialement conçus, un dépassement de tampon était possible. Cela clôt #13926. #15028 (alexey-milovidov). - Publie les fréquences CPU par cœur logique dans
system.asynchronous_metrics. Corrige #14923. #14924 (Alexander Kuzmenkov). - Corrige l’erreur
.metadata.tmp File existslors de l’utilisation du database engineMaterializeMySQL. #14898 (Winter Zhang). - Corrige le problème où certains appels à la fonction
extractAllGroupspeuvent déclencher l’erreur “Memory limit exceeded”. Corrige #13383. #14889 (alexey-milovidov). - Corrige un SIGSEGV lors d’une tentative d’INSERT dans StorageFile(fd). #14887 (Azat Khuzhin).
- Corrige une erreur rare dans les requêtes
SELECTlorsque la colonne interrogée a une expressionDEFAULTqui dépend d’une autre colonne ayant elle aussiDEFAULT, absente de la requête select et inexistante sur le disk. Corrige partiellement #14531. #14845 (alesapin). - Corrige une détection erronée de la monotonie pour une conversion réductrice
Int -> Intde types signés. Cela pouvait conduire à un résultat de query incorrect. Ce bug est révélé dans #14513. #14783 (Amos Bird). - Corrige l’absence du nom de database par défaut dans les métadonnées d’une materialized view lors de l’exécution de
ALTER ... MODIFY QUERY. #14664 (tavplubix). - Corrige le résultat potentiellement incorrect de la fonction
haslorsque les types LowCardinality et Nullable sont impliqués. #14591 (Mike). - Nettoie le répertoire de données après des exceptions ZooKeeper lors d’une requête CREATE sur des tables utilisant le moteur ReplicatedMergeTree. #14563 (Bharat Nallan).
- Corrige de rares segfaults dans les fonctions avec le combinateur
-Resample, qui pouvaient se produire à la suite d’un overflow avec de très grands paramètres. #14562 (Anton Popov). - Vérifie les dépassements de taille de tableau dans la fonction d’agrégation
topK. Sans cette vérification, l’utilisateur peut envoyer une requête avec des paramètres soigneusement construits, entraînant un crash du serveur. Cela clôt #14452. #14467 (alexey-milovidov). - Redirige les commandes restart/start/stop/reload de SysVinit vers systemd (s’il est utilisé). #14460 (Azat Khuzhin).
- Arrête l’exécution de la requête si une exception se produit dans
PipelineExecutorlui-même. Cela peut éviter un rare blocage de requête. #14334 #14402 (Nikolai Kochetov). - Corrige un crash lors d’une requête
ALTERsur une table créée avecAS table_function. Corrige #14212. #14326 (alesapin). - Corrige une exception lors d’une requête ALTER LIVE VIEW avec la commande REFRESH. LIVE VIEW est une fonctionnalité expérimentale. #14320 (Bharat Nallan).
- Corrige la durée de vie de QueryPlan (pour le graph EXPLAIN PIPELINE graph=1) pour les requêtes avec interpréteur imbriqué. #14315 (Azat Khuzhin).
- Améliore la vérification de la taille des tuples dans les dictionnaires externes à clé complexe avec cache SSD. Cela corrige #13981. #14313 (alexey-milovidov).
- Interdit
CODECsur le type de colonneALIAS. Corrige #13911. #14263 (Bharat Nallan). - Corrige l’instruction GRANT ALL lorsqu’elle est exécutée à un niveau non global. #13987 (Vitaly Baranov).
- Corrige la capture de arrayJoin() dans une lambda (une exception avec un message d’erreur logique était levée). #13792 (Azat Khuzhin).
Fonctionnalité expérimentale
- Ajout de l’outil
db-generatorpour générer aléatoirement des bases de données à partir de requêtes SELECT fournies. Il peut faciliter la reproduction de problèmes lorsqu’on ne dispose que d’un rapport de bug incomplet de l’utilisateur. #14442 (Nikita Mikhaylov) #10973 (ZeDRoman).
Amélioration
- Autorise l’utilisation d’une configuration de stockage multi-volume avec le stockage Distributed. #14839 (Pavel Kovalenko).
- Interdit un argument
time_zonevide dans les fonctions de typetoStartOf*. #14509 (Bharat Nallan). - Le handler MySQL renvoie
OKpour les requêtes telles queSET @@var = value. Cette instruction est ignorée. Cela est nécessaire, car certains drivers MySQL envoient une requêteSET @@pour la configuration après le handshake https://github.com/ClickHouse/ClickHouse/issues/9336#issuecomment-686222422 . #14469 (BohuTANG). - Désormais, les TTL seront appliqués lors de la fusion s’ils n’ont pas été matérialisés auparavant. #14438 (alesapin).
- Désormais,
clickhouse-obfuscatorprend en charge le type UUID, comme proposé dans #13163. #14409 (dimarub2000). - Ajout du nouveau paramètre
system_events_show_zero_values, comme proposé dans #11384. #14404 (dimarub2000). - Convertit implicitement la clé primaire en NOT NULL dans
MaterializeMySQL(comme dansMySQL). Corrige #14114. #14397 (Winter Zhang). - Remplace les entiers 256 bits de Boost.Multiprecision par l’implémentation de https://github.com/cerevra/int. Les entiers 256 bits sont expérimentaux. #14229 (Artem Zuikov).
- Ajoute le codec de compression par défaut pour les parts dans
system.part_log, nommédefault_compression_codec. #14116 (alesapin). - Ajoute un argument de précision pour le type
DateTime. Cela permet d’utiliser le nomDateTimeau lieu deDateTime64. #13761 (Winter Zhang). - Ajoute l’authentification requirepass pour le dictionnaire externe
Redis. #13688 (Ivan Torgashov). - Améliorations du moteur
RabbitMQ: ajout de la gestion des défaillances de connexion et de canaux, de commits appropriés, de la gestion des échecs d’insert, d’exchanges améliorés, de la durabilité des files d’attente, de la possibilité de reprise des files d’attente et de nouveaux paramètres de file d’attente. Tests corrigés. #12761 (Kseniia Sumarokova). - Prend en charge des codecs personnalisés dans les parts compactes. #12183 (Anton Popov).
Amélioration des performances
- Optimisation des requêtes avec LIMIT/LIMIT BY/ORDER BY pour
Distributedavec GROUP BYsharding_key(avecoptimize_skip_unused_shardsetoptimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin). - Création de sets pour plusieurs
JOINetINen parallèle. Cela peut légèrement améliorer les performances des requêtes comportant plusieurs expressionsIN subquerydifférentes. #14412 (Nikolai Kochetov). - Amélioration des performances du moteur Kafka grâce à un thread dédié pour chaque consommateur. Pool de threads distinct pour les moteurs de streaming (comme Kafka). #13939 (fastio).
Amélioration du build/des tests/du packaging
- Réduction de la taille du binaire dans le build de débogage par suppression des informations de débogage de
Functions. Cela n’est nécessaire que pour un projet interne chez Yandex qui utilise un éditeur de liens très ancien. #14549 (alexey-milovidov). - Préparation du build avec clang 11. #14455 (alexey-milovidov).
- Correction de la logique du script de backport. Dans les versions précédentes, il se déclenchait pour tous les labels dont la couleur était rouge à 100 %. C’était étrange. #14433 (alexey-milovidov).
- Les tests d’intégration utilisent la config de base par défaut. Toutes les modifications de config sont explicites via les paramètres main_configs, user_configs et dictionaries de l’instance. #13647 (Ilya Yatsishin).
Version de ClickHouse 20.8
Version de ClickHouse v20.8.12.2-lts, 2021-01-16
Correction de bugs
- Correction du combinator *If avec une fonction unaire et des types Nullable. #18806 (Azat Khuzhin).
- Restriction des merges de wide vers les compact parts. Dans le cas d’une vertical merge, cela entraînait une part de résultat corrompue. #18381 (Anton Popov).
Version de ClickHouse v20.8.11.17-lts, 2020-12-25
Correction de bugs
- Désactivation des écritures avec AIO pendant les fusions, car cela peut entraîner, dans des cas extrêmement rares, une corruption des données dans les colonnes de clé primaire lors d’une fusion. #18481 (alesapin).
- Correction de l’erreur
value is too shortlors de l’exécution des fonctionstoType(...)(toDate,toUInt32, etc.) avec un argument de typeNullable(String). Désormais, ces fonctions renvoientNULLen cas d’erreur d’analyse au lieu de lever une exception. Corrige #7673. #18445 (tavplubix). - Correction de plantages possibles dans les fonctions d’agrégation avec le combinateur
Distinct, lors de l’utilisation d’une agrégation à deux niveaux. Corrige #17682. #18365 (Anton Popov).
Version de ClickHouse v20.8.10.13-lts, 2020-12-24
Correction de bugs
- Lorsque la rotation du journal du server était configurée à l’aide du paramètre
logger.sizeavec une valeur numérique supérieure à 2^32, les logs n’étaient pas correctement rotatés. #17905 (Alexander Kuzmenkov). - Correction de l’initialisation incorrecte de
max_compress_block_sizedans MergeTreeWriterSettings avecmin_compress_block_size. #17833 (flynn). - Correction d’un problème empêchant ClickHouse de rétablir la connexion aux serveurs MySQL. #17681 (Alexander Kazakov).
- Correction du blocage de la requête
ALTERlorsque la mutation correspondante avait été arrêtée sur une autre réplique. Cela corrige #16953. #17499 (alesapin). - Correction d’un bug où la taille du mark cache était sous-estimée par ClickHouse. Cela peut se produire lorsqu’il y a beaucoup de petits fichiers de marks. #17496 (alesapin).
- Correction de
ORDER BYlorsque le paramètreoptimize_redundant_functions_in_order_byest activé. #17471 (Anton Popov). - Correction de la comparaison
ColumnConst, qui pouvait provoquer un crash. Cela corrige #17088. #17135 (Amos Bird). - Correction d’un bug où les requêtes
ON CLUSTERpouvaient rester bloquées indéfiniment pour les tables ReplicatedMergeTree non leaders. #17089 (alesapin). - Évite des erreurs réseau inutiles pour les requêtes distantes susceptibles d’être annulées pendant leur exécution, comme les requêtes avec
LIMIT. #17006 (Azat Khuzhin). - Résout de nouveau l’IP de
format_avro_schema_registry_urlen cas d’erreur. #16985 (filimonov). - Correction d’un possible crash du server après
ALTER TABLE ... MODIFY COLUMN ... NewTypelorsqu’unSELECTcomporte une expressionWHEREsur la colonne en cours de modification et que l’alter n’est pas encore terminé. #16968 (Amos Bird). - Le script d’installation doit toujours créer les sous-répertoires dans les dossiers de configuration. Cela concerne uniquement les builds Docker avec une configuration personnalisée. #16936 (filimonov).
- Correction d’une possible erreur
Illegal type of argumentpour les requêtes avecORDER BY. Corrige #16580. #16928 (Nikolai Kochetov). - Interrompt le multipart upload si aucune donnée n’a été écrite dans WriteBufferFromS3. #16840 (Pavel Kovalenko).
- Correction d’un crash lors de l’utilisation de
anysans argument. Cela corrige #16803. #16826 (Amos Bird). - Correction de l’opérateur
INsur plusieurs colonnes et tuples lorsque le paramètretransform_null_inest activé. Corrige #15310. #16722 (Anton Popov). - Correction du comportement incohérent de
optimize_read_in_order/optimize_aggregation_in_orderavec max_threads > 0 et une expression dans ORDER BY. #16637 (Azat Khuzhin). - Correction d’un problème où l’optimisation des requêtes produisait un résultat erroné si la requête contenait
ARRAY JOIN. #17887 (sundyli). - La requête se termine plus rapidement en cas d’exception. Annulation de l’exécution sur les répliques distantes lorsqu’une exception se produit. #15578 (Azat Khuzhin).
Version de ClickHouse v20.8.6.6-lts, 2020-11-13
Correction de bugs
- Correction de rares crashs silencieux lorsque le profiler de requêtes est activé et que ClickHouse est installé sur un système d’exploitation avec une version de glibc qui comporte (apparemment) des tables de déroulage asynchrones défectueuses pour certaines fonctions. Cela corrige #15301. Cela corrige #13098. #16846 (alexey-milovidov).
- Désormais, lors de l’analyse des données AVRO en entrée, LowCardinality est supprimé du type. Corrige #16188. #16521 (Mike).
- Correction de la croissance rapide des métadonnées lors de l’utilisation de MySQL Master -> MySQL Slave -> ClickHouse MaterializeMySQL Engine, avec
slave_parallel_workeractivé sur MySQL Slave, en réduisant correctement les ensembles GTID. Cela corrige #15951. #16504 (TCeason). - Correction de DROP TABLE pour Distributed (sujet à une condition de concurrence avec INSERT). #16409 (Azat Khuzhin).
- Correction du traitement des entrées très volumineuses dans la file de réplication. De très grosses entrées peuvent apparaître dans les requêtes ALTER si la structure de la table est extrêmement volumineuse (près de 1 Mo). Cela corrige #16307. #16332 (alexey-milovidov).
- Correction d’un comportement incohérent où une partie des données renvoyées pouvait être perdue parce que l’ensemble utilisé pour le filtrage n’avait pas été créé. #16308 (Nikita Mikhaylov).
- Correction d’un bug avec la base de données MySQL. Lorsque le serveur MySQL utilisé comme moteur de base de données est indisponible, certaines requêtes lèvent une Exception, car elles essaient de récupérer des tables depuis ce serveur alors que cela est inutile. Par exemple, la requête
SELECT ... FROM system.partsdevrait fonctionner uniquement avec les tables MergeTree et ne pas accéder du tout à la base de données MySQL. #16032 (Kruglov Pavel).
Version de ClickHouse v20.8.5.45-lts, 2020-10-29
Correction de bugs
- Correction d’un double free en cas d’exception dans la fonction
dictGet. Cela pouvait se produire si le dictionnaire avait été chargé avec une erreur. #16429 (Nikolai Kochetov). - Correction de
GROUP BYavec les modificateurs totals/rollup/cube et les fonctions min/max sur les clés de groupement. Corrige #16393. #16397 (Anton Popov). - Correction de l’
INSERTasynchrone dansDistributedavec prefer_localhost_replica=0 et internal_replication. #16358 (Azat Khuzhin). - Correction d’une possible fuite de mémoire lors d’un
GROUP BYavec des clés de type chaîne, causée par une erreur dans l’implémentation deTwoLevelStringHashTable. #16264 (Amos Bird). - Correction du cas où la mémoire pouvait être surallouée sans tenir compte de la limite. Cela clôt #14560. #16206 (alexey-milovidov).
- Correction du blocage de la requête
ALTER MODIFY ... ORDER BYpourReplicatedVersionedCollapsingMergeTree. Cela corrige #15980. #16011 (alesapin). - Correction de l’analyseur des noms de collation et de jeu de caractères, et prise en charge de
length = 0pour le type String. #16008 (Winter Zhang). - Autorisation de l’utilisation du layout direct pour les dictionnaires avec des clés complexes. #16007 (Anton Popov).
- Empêche le blocage d’une replica pendant 5 à 10 minutes lorsqu’une erreur de replication survient après une période d’inactivité. #15987 (filimonov).
- Correction de rares segfaults lors d’un insert dans MaterializedView ou d’un select depuis celle-ci, en cas de suppression concurrente de la table cible (pour le moteur de base de données Atomic). #15984 (tavplubix).
- Correction d’une ambiguïté dans l’analyse des settings profiles :
CREATE USER ... SETTINGS profile readonlyest désormais interprété comme l’utilisation d’un profile nomméreadonly, et non comme un paramètre nomméprofileavec la contrainte readonly. Cela corrige #15628. #15982 (Vitaly Baranov). - Correction d’un crash lorsque la création de la base de données échoue. #15954 (Winter Zhang).
- Correction de l’échec de
DROP TABLE IF EXISTSavec l’erreurTable ... does not existlorsque la table est renommée de manière concurrente (pour le moteur de base de données Atomic). Correction d’un interblocage rare lors de l’exécution concurrente de certaines DDL queries sur plusieurs tables (commeDROP DATABASEetRENAME TABLE). Correction de l’échec deDROP/DETACH DATABASEavecTable ... does not existlors de l’exécution concurrente deDROP/DETACH TABLE. #15934 (tavplubix). - Correction d’un résultat vide incorrect pour une query sur une table
Distributedsi la query contientWHERE,PREWHEREetGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Correction d’éventuels interblocages dans RBAC. #15875 (Vitaly Baranov).
- Correction de l’exception
Block structure mismatchdans les requêtesSELECT ... ORDER BY DESCexécutées après une requêteALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin). - Correction de certains cas de requêtes dans lesquels seules des colonnes virtuelles sont sélectionnées. Auparavant, l’exception
Not found column _nothing in blockpouvait être levée. Corrige #12298. #15756 (Anton Popov). - Correction de l’erreur
Cannot find columnqui pouvait se produire lors d’une insertion dansMATERIALIZED VIEWsi la requête de laMVcontenaitARRAY JOIN. #15717 (Nikolai Kochetov). - Correction d’une valeur par défaut trop faible du paramètre
max_replicated_logs_to_keep, qui pouvait entraîner la perte trop fréquente de répliques. Amélioration du processus de récupération des répliques perdues en choisissant pour le clonage la réplique la plus à jour. En outre, les anciennes parts de la réplique perdue ne sont plus supprimées, mais détachées. #15701 (tavplubix). - Correction de l’erreur
Cannot add simple transform to empty Pipe, qui se produisait lors de la lecture depuis une tableBufferdont la structure différait de celle de la table de destination. Cela pouvait se produire si la table de destination renvoyait un résultat vide pour la requête. Corrige #15529. #15662 (Nikolai Kochetov). - Correction d’un bug avec les globs dans la S3 table function : la région de l’URL n’était pas appliquée à la configuration du client S3. #15646 (Vladimir Chebotarev).
- Décrémentation de la métrique
ReadonlyReplicalors du détachement des tables en lecture seule. Corrige #15598. #15592 (sundyli). - Déclenche désormais une erreur lorsqu’un seul paramètre est passé à ReplicatedMergeTree au lieu de l’ignorer. #15516 (nvartolomei).
Amélioration
- Il est désormais possible d’exécuter des requêtes
ALTER ... ON CLUSTERquelle que soit la valeur du paramètre<internal_replication>dans la configuration du cluster. #16075 (alesapin). - Déplie les macros
{database},{table}et{uuid}dans les arguments deReplicatedMergeTreelors de la création de la table. #16159 (tavplubix).
Version de ClickHouse v20.8.4.11-lts, 2020-10-09
Correction de bugs
- Corrige l’ordre de destruction des ressources dans l’étape
ReadFromStoragedu plan de requête. Cela pouvait provoquer des crashs dans de rares cas. Possiblement lié à #15610. #15645 (Nikolai Kochetov). - Correction de l’erreur
Element ... is not a constant expressionlors de l’utilisation du résultat d’une fonctionJSON*dansVALUES,LIMITou dans le membre de droite de l’opérateurIN. #15589 (tavplubix). - Empêche l’apparition du message d’erreur
Could not calculate available disk space (statvfs), errno: 4, strerror: Interrupted system call. Corrige #15541. #15557 (alexey-milovidov). - Réduit significativement l’utilisation mémoire dans AggregatingInOrderTransform/optimize_aggregation_in_order. #15543 (Azat Khuzhin).
- Une mutation pouvait rester bloquée en attendant une part inexistante après
MOVEouREPLACE PARTITIONou, dans de rares cas, aprèsDETACHouDROP PARTITION. C’est corrigé. #15537 (tavplubix). - Corrige un bug où l’opérateur
ILIKEcessait d’être insensible à la casse si unLIKEavec le même motif avait été exécuté. #15536 (alesapin). - Corrige les erreurs
Missing columnslors de la sélection de colonnes absentes des données, mais dépendant d’autres colonnes elles aussi absentes des données. Corrige #15530. #15532 (alesapin). - Corrige un bug lié à l’abonnement aux événements dans DDLWorker qui, dans de rares cas, pouvait entraîner le blocage d’une requête dans
ON CLUSTER. Introduit dans #13450. #15477 (alesapin). - Signale une erreur appropriée lorsque le second argument de la fonction d’agrégation
boundingRatioest d’un type incorrect. #15407 (detailyang). - Corrige une race condition lors du renommage d’une table MergeTree et du nettoyage en arrière-plan. #15304 (alesapin).
- Corrige une rare race condition au démarrage du serveur lorsque system.logs est activé. #15300 (alesapin).
- Corrige un signalement MSan dans QueryLog. De la mémoire non initialisée pouvait être utilisée pour le champ
memory_usage. #15258 (alexey-milovidov). - Corrige le crash d’une instance lors de l’utilisation de joinGet avec des types LowCardinality. Corrige #15214. #15220 (Amos Bird).
- Corrige un bug dans le moteur de table
Bufferqui n’autorisait pas l’insertion dansBufferde données ayant une nouvelle structure après une requêteALTER. Corrige #15117. #15192 (alesapin). - Ajustement de la taille du champ decimals dans le paquet de définition de colonne MySQL. #15152 (maqroll).
- Nous utilisons déjà une comparaison avec remplissage entre String et FixedString (https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/FunctionsComparison.h#L333). Cette PR applique la même logique à la comparaison de champs, ce qui corrige l’utilisation de FixedString comme clés primaires. Cela corrige #14908. #15033 (Amos Bird).
- Si la fonction
barétait appelée avec des arguments spécialement conçus, un dépassement de tampon pouvait se produire. Cela clôt #13926. #15028 (alexey-milovidov). - Correction de l’erreur
Cannot rename ... errno: 22, strerror: Invalid argumentlors de l’exécution d’une requête DDL dans une base de données atomic quand clickhouse-server s’exécute dans Docker sur Mac OS. #15024 (tavplubix). - Désormais, les paramètres
number_of_free_entries_in_pool_to_execute_mutationetnumber_of_free_entries_in_pool_to_lower_max_size_of_mergepeuvent être égaux àbackground_pool_size. #14975 (alesapin). - Correction permettant au push down de prédicat de fonctionner lorsque la sous-requête contient la fonction finalizeAggregation. Corrige #14847. #14937 (filimonov).
- Publication des fréquences CPU par cœur logique dans
system.asynchronous_metrics. Cela corrige #14923. #14924 (Alexander Kuzmenkov). - Correction de l’erreur
.metadata.tmp File existslors de l’utilisation du database engineMaterializeMySQL. #14898 (Winter Zhang). - Correction d’un problème où le serveur pouvait rester bloqué au démarrage lors de la communication avec ZooKeeper si les fichiers de configuration devaient être récupérés depuis ZK (à l’aide de l’option d’inclusion
from_zk). Cela corrige #14814. #14843 (Alexander Kuzmenkov). - Correction d’une détection incorrecte de la monotonie pour les cast
Int -> Intréducteurs sur des types signés. Cela pouvait entraîner un résultat de query incorrect. Ce bug est mis en évidence dans #14513. #14783 (Amos Bird). - Correction de l’ordre de tri incorrect d’une colonne
Nullable. Cela corrige #14344. #14495 (Nikita Mikhaylov).
Amélioration
- Il est désormais possible de modifier le type de la colonne de version de
VersionedCollapsingMergeTreeavec la requêteALTER. #15442 (alesapin).
Version de ClickHouse v20.8.3.18-stable, 2020-09-18
Correction de bugs
- Corrige le problème où certains appels de la fonction
extractAllGroupspeuvent déclencher l’erreur « Memory limit exceeded ». Cela corrige #13383. #14889 (alexey-milovidov). - Corrige un SIGSEGV lors d’une tentative d’
INSERTdans StorageFile(fd). #14887 (Azat Khuzhin). - Corrige une erreur rare dans les requêtes
SELECTlorsque la colonne interrogée a une expressionDEFAULTqui dépend d’une autre colonne ayant elle aussi une expressionDEFAULT, absente de la requêteSELECTet inexistante sur le disque. Corrige partiellement #14531. #14845 (alesapin). - Corrige l’absence du nom de la base de données par défaut dans les métadonnées d’une vue matérialisée lors de l’exécution de
ALTER ... MODIFY QUERY. #14664 (tavplubix). - Corrige un bug où une mutation
ALTER UPDATEavec une colonne Nullable dans l’expression d’affectation et une valeur constante (commeUPDATE x = 42) entraîne une valeur incorrecte dans la colonne ou un segfault. Corrige #13634, #14045. #14646 (alesapin). - Corrige un résultat incorrect de multiplication Decimal causé par une échelle décimale erronée de la colonne de résultat. #14603 (Artem Zuikov).
- Ajout d’une vérification, car ni l’appel à
lc->isNullable()ni l’appel àls->getDictionaryPtr()->isNullable()ne renvoyaient le bon résultat. #14591 (myrrc). - Nettoie le répertoire de données après des exceptions ZooKeeper pendant CreateQuery pour le moteur StorageReplicatedMergeTree. #14563 (Bharat Nallan).
- Corrige de rares segfaults dans les fonctions avec le combinator -Resample, qui pouvaient survenir à la suite d’un overflow avec de très grands paramètres. #14562 (Anton Popov).
Amélioration
- Accélération du processus d’arrêt du serveur lorsqu’il y a des requêtes S3 en cours. #14858 (Pavel Kovalenko).
- Prise en charge de l’utilisation d’une configuration de stockage multi-volume dans le stockage Distributed. #14839 (Pavel Kovalenko).
- Accélération du processus d’arrêt du serveur lorsqu’il y a des requêtes S3 en cours. #14496 (Pavel Kovalenko).
- Prise en charge des codecs personnalisés dans les parts compactes. #12183 (Anton Popov).
Version de ClickHouse v20.8.2.3-stable, 2020-09-08
Changement non rétrocompatible
- Désormais, la requête
OPTIMIZE FINALne recalcule pas le TTL des parts ajoutées avant la création du TTL. Utilisez une foisALTER TABLE ... MATERIALIZE TTLpour les calculer ; ensuite,OPTIMIZE FINALévaluera correctement le TTL. Ce comportement n’a jamais fonctionné pour les tables répliquées. #14220 (alesapin). - Le paramètre
parallel_distributed_insert_selectest étendu avec une option permettant d’exécuterINSERTdans une table locale. Son type passe deBoolàUInt64, les valeursfalseettruene sont donc plus prises en charge. Si ces valeurs figurent dans la configuration du serveur, le serveur ne démarrera pas. Remplacez-les respectivement par0et1. #14060 (Azat Khuzhin). - Suppression de la prise en charge du format d’entrée/sortie
ODBCDriver. Il s’agissait d’un format obsolète autrefois utilisé pour communiquer avec le ClickHouse ODBC driver, depuis longtemps remplacé par le formatODBCDriver2. Résout #13629. #13847 (hexiaoting). - Lors d’une mise à niveau depuis une version antérieure à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou supérieures et des versions antérieures à 20.5, le redémarrage de nœuds ClickHouse exécutant une ancienne version en présence de versions plus récentes peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquetsclickhouse-serversur tous les nœuds du cluster, puis redémarrez-les (ainsi, lors du redémarrage,clickhouse-serverdémarrera avec la nouvelle version).
Nouvelle fonctionnalité
- Ajout de la possibilité de spécifier le codec de compression
Defaultpour les colonnes correspondant aux paramètres définis dansconfig.xml. Implémente : #9074. #14049 (alesapin). - Prise en charge de l’authentification Kerberos dans Kafka à l’aide des bibliothèques
krb5etcyrus-sasl. #12771 (Ilya Golshtein). - Ajout de la fonction
normalizeQuery, qui remplace les littéraux, les séquences de littéraux et les alias complexes par des placeholders. Ajout de la fonctionnormalizedQueryHash, qui renvoie des valeurs de hash 64 bits identiques pour des requêtes similaires. Cela aide à analyser le query log. Cela clôt #11271. #13816 (alexey-milovidov). - Ajout de la table
time_zones. #13880 (Bharat Nallan). - Ajout de la fonction
defaultValueOfTypeName, qui renvoie la valeur par défaut pour un type donné. #13877 (hcz). - Ajout de la fonction
countDigits(x), qui compte le nombre de chiffres décimaux dans une colonne entière ou Decimal. Ajout de la fonctionisDecimalOverflow(d, [p]), qui vérifie si la valeur d’une colonne Decimal dépasse sa précision (ou celle spécifiée). #14151 (Artem Zuikov). - Ajout des implémentations
quantileExactLowetquantileExactHigh, avec les alias correspondants pourmedianExactLowetmedianExactHigh. #13818 (Bharat Nallan). - Ajout de la fonction
date_trunc, qui tronque une valeur de date/heure à la partie date/heure spécifiée. #13888 (Vladimir Golovchenko). - Ajout d’une nouvelle section facultative
<user_directories>à la config principale. #13425 (Vitaly Baranov). - Ajout de l’instruction
ALTER SAMPLE BY, qui permet de modifier la clause SAMPLE d’une table. #13280 (Amos Bird). - La fonction
positionprend désormais en charge l’argument facultatifstart_pos. #13237 (vdimir).
Correction de bugs
- Correction de l’écrasement visible des données par la barre de progression dans le client en mode interactif. Cela corrige #12562, #13369, #13584 et #12964. #13691 (alexey-milovidov).
- Correction d’un ordre de tri incorrect pour une colonne
LowCardinalitylors d’un tri sur plusieurs colonnes. Cela corrige #13958. #14223 (Nikita Mikhaylov). - Vérification du dépassement de taille de tableau dans la fonction d’agrégation
topK. Sans cette vérification, l’utilisateur peut envoyer une requête avec des paramètres soigneusement construits, ce qui peut provoquer un crash du serveur. Cela clôt #14452. #14467 (alexey-milovidov). - Correction d’un bug pouvant entraîner une mauvaise attribution des fusions si la table comporte des partitions avec une seule part. #14444 (alesapin).
- Arrêt de l’exécution de la requête si une exception se produit dans
PipelineExecutorlui-même. Cela peut éviter, dans de rares cas, le blocage d’une requête. Suite de #14334. #14402 #14334 (Nikolai Kochetov). - Correction d’un crash pendant une requête
ALTERpour une table créée avecAS table_function. Corrige #14212. #14326 (alesapin). - Correction d’une exception pendant une requête ALTER LIVE VIEW avec la commande REFRESH. Live View est une fonctionnalité expérimentale. #14320 (Bharat Nallan).
- Correction de la durée de vie de QueryPlan (pour le graphe EXPLAIN PIPELINE graph=1) pour les requêtes avec interpréteur imbriqué. #14315 (Azat Khuzhin).
- Correction d’un segfault dans
clickhouse-odbc-bridgelors de la récupération du schéma depuis certaines sources externes. Cette PR corrige #13861. #14267 (Vitaly Baranov). - Correction d’un crash dans la recherche d’inclusion des marks introduite dans #12277. #14225 (Amos Bird).
- Correction de la création de tables avec des tuples nommés. Cela corrige #13027. #14143 (alexey-milovidov).
- Correction du formatage des nombres décimaux négatifs minimaux. Cela corrige #14111. #14119 (Alexander Kuzmenkov).
- Correction de la métrique
DistributedFilesToInsert(remise à zéro alors qu’elle ne devrait pas l’être). #14095 (Azat Khuzhin). - Corrige
pointInPolygonavec un tableau 2D constant utilisé comme polygone. #14079 (Alexey Ilyukhov). - Correction du point de montage incorrect dans les informations supplémentaires pour
Poco::Exception: no space left on device. #14050 (tavplubix). - Corrige l’instruction GRANT ALL lorsqu’elle est exécutée à un niveau non global. #13987 (Vitaly Baranov).
- Corrige l’analyseur afin qu’il rejette create table comme table function avec engine. #13940 (hcz).
- Corrige des résultats erronés dans les requêtes SELECT avec le mot-clé
DISTINCTet dans les sous-requêtes avec UNION ALL lorsque le paramètreoptimize_duplicate_order_by_and_distinctest activé. #13925 (Artem Zuikov). - Correction d’un interblocage potentiel lors du renommage d’une table
Distributed. #13922 (tavplubix). - Corrige le tri incorrect des colonnes
FixedStringlors d’un tri sur plusieurs colonnes. Corrige #13182. #13887 (Nikolai Kochetov). - Corrige le résultat potentiellement imprécis de la fusion
topK/topKWeighted(avec des paramètres non par défaut). #13817 (Azat Khuzhin). - Corrige l’échec de lecture depuis une table MergeTree avec un INDEX de type SET lors d’une comparaison avec NULL. Cela corrige #13686. #13793 (Amos Bird).
- Corrige la capture de
arrayJoindans une lambda (LOGICAL_ERROR). #13792 (Azat Khuzhin). - Ajoute une vérification de dépassement pour le step dans la fonction
range. #13790 (Azat Khuzhin). - Correction de l’erreur
Directory not emptylors de l’exécution concurrente deDROP DATABASEetCREATE TABLE. #13756 (alexey-milovidov). - Ajoute une vérification de plage pour la fonction
h3KRing. Cela corrige #13633. #13752 (alexey-milovidov). - Corrige une race condition entre DETACH et les fusions en arrière-plan. Des parts peuvent réapparaître après detach. Il s’agit de la suite de #8602, qui n’a pas corrigé le problème, mais a introduit un test qui a commencé à échouer dans de très rares cas, mettant ainsi le problème en évidence. #13746 (alexey-milovidov).
- Corrige la journalisation de Settings.Names/Values lorsque log_queries_min_type > QUERY_START. #13737 (Azat Khuzhin).
- Corrige le code d’état de la réponse du endpoint
/replicas_statuslorsque verbose=1. #13722 (javi santana). - Correction d’un message erroné dans
clickhouse-server.initlors de la vérification de l’utilisateur et du groupe. #13711 (ylchou). - Ne pas optimiser any(arrayJoin()) -> arrayJoin() avec le paramètre
optimize_move_functions_out_of_any. #13681 (Azat Khuzhin). - Correction d’un crash dans JOIN avec StorageMerge et
set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov). - Correction d’une faute de frappe dans le message d’erreur concernant
The value of 'number_of_free_entries_in_pool_to_lower_max_size_of_merge' setting. #13678 (alexey-milovidov). - Des requêtes
ALTER ... REPLACE/MOVE PARTITION ...concurrentes pouvaient provoquer un interblocage. Le problème a été corrigé. #13626 (tavplubix). - Correction du comportement où le dictionnaire de cache renvoyait parfois la valeur par défaut au lieu de la valeur présente dans la source. #13624 (Nikita Mikhaylov).
- Correction de la corruption des index secondaires dans les parties compactes. Les parties compactes sont une fonctionnalité expérimentale. #13538 (Anton Popov).
- Correction de timeouts
ON CLUSTERprématurés pour les requêtes devant être exécutées sur une seule réplique. Corrige #6704, #7228, #13361, #11884. #13450 (alesapin). - Correction d’un code incorrect dans la fonction
netloc. Cela corrige #13335. #13446 (alexey-milovidov). - Correction d’une possible condition de concurrence dans
StorageMemory. #13416 (Nikolai Kochetov). - Correction d’en-têtes manquants ou superflus dans les formats
TSV/CSVWithNamesdu protocole HTTP. Cela corrige #12504. #13343 (Azat Khuzhin). - Correction de l’analyse des politiques de lignes depuis users.xml lorsque les noms de bases de données ou de tables contiennent des points. Cela corrige #5779, #12527. #13199 (Vitaly Baranov).
- Correction de l’accès au dictionnaire
redisaprès l’interruption d’une connexion. Cela peut se produire avec les layouts de dictionnairecacheetdirect. #13082 (Anton Popov). - Suppression d’une vérification incorrecte des droits d’accès lors de l’utilisation de ClickHouseDictionarySource pour interroger des tables distantes. #12756 (sundyli).
- Distingue correctement les sous-requêtes dans certains cas pour l’élimination des sous-expressions communes. #8333. #8367 (Amos Bird).
Amélioration
- Interdit
CODECsur le type de colonneALIAS. Corrige #13911. #14263 (Bharat Nallan). - Lors de l’attente de la fin d’une mise à jour de dictionnaire, utilise le délai d’expiration spécifié par le paramètre
query_wait_timeout_millisecondsau lieu d’une valeur codée en dur. #14105 (Nikita Mikhaylov). - Ajout du paramètre
min_index_granularity_bytes, qui évite de créer accidentellement une table avec une valeur très faible du paramètreindex_granularity_bytes. #14139 (Bharat Nallan). - Il est désormais possible de récupérer des partitions depuis des clusters qui utilisent des ZooKeeper différents :
ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'zk-name:/path-in-zookeeper'. C’est utile pour transférer des données vers de nouveaux clusters. #14155 (Amos Bird). - Performances légèrement améliorées pour la table Memory lorsqu’elle a été construite à partir d’un très grand nombre de très petits blocs (cas peu probable). Auteur de l’idée : Mark Papadakis. Clôt #14043. #14056 (alexey-milovidov).
- Les fonctions d’agrégation conditionnelles (par exemple :
avgIf,sumIf,maxIf) doivent renvoyerNULLlorsqu’il manque des lignes et qu’elles utilisent des arguments Nullable. #13964 (Winter Zhang). - Augmentation de la limite du combinator -Resample à 1M. #13947 (Mikhail f. Shiryaev).
- Correction d’une erreur dans le format AvroConfluent qui entraînait l’arrêt du traitement des messages par le moteur de table Kafka à la réception d’un message anormalement petit et malformé. #13941 (Gervasio Varela).
- Correction d’un message d’erreur incorrect pour les requêtes longues. Il était possible d’obtenir une erreur de syntaxe autre que
Max query size exceededpour une requête correcte. #13928 (Nikolai Kochetov). - Meilleur message d’erreur pour une valeur nulle au format
TabSeparated. #13906 (jiang tao). - La fonction
arrayCompactcomparera les NaN bit à bit si le type des éléments du tableau est Float32/Float64. Dans les versions précédentes, les NaN étaient toujours différents si le type des éléments du tableau était Float32/Float64, et toujours égaux si le type était plus complexe, comme Nullable(Float64). Cela clôt #13857. #13868 (alexey-milovidov). - Correction d’une situation de concurrence dans la fonction
lgamma. Elle n’a été détectée que danstsan, et aucun effet de bord ne s’est réellement produit. #13842 (Nikolai Kochetov). - Évite les requêtes trop lentes lorsque des tableaux sont manipulés comme des champs. Lève une exception à la place. #13753 (alexey-milovidov).
- Ajout de l’authentification Redis via requirepass (pour la source de dictionnaire Redis). #13688 (Ivan Torgashov).
- Ajout d’un outil de dump du Write-Ahead Log (WAL) de MergeTree. Le WAL est une fonctionnalité expérimentale. #13640 (BohuTANG).
- Dans les versions précédentes, la fonction
lcmpouvait provoquer une violation d’assertion en build de débogage si elle était appelée avec des arguments spécialement construits. Cela corrige #13368. #13510 (alexey-milovidov). - Fournit la monotonie pour les fonctions
toDate/toDateTimedans davantage de cas. Les informations de monotonie sont utilisées pour l’analyse des index (des requêtes plus complexes pourront utiliser un index). Désormais, les arguments d’entrée sont bornés de manière plus naturelle, ce qui améliore la monotonie. #13497 (Amos Bird). - Prise en charge des identifiants composés pour les paramètres personnalisés. Les paramètres personnalisés constituent un point d’intégration entre le codebase de ClickHouse et d’autres codebases (sans bénéfice pour ClickHouse lui-même) #13496 (Vitaly Baranov).
- Déplace les parts de DiskLocal vers DiskS3 en parallèle.
DiskS3est une fonctionnalité expérimentale. #13459 (Pavel Kovalenko). - Active les parts à granularité mixte par défaut. #13449 (alesapin).
- Vérification correcte de l’hôte distant dans les redirections S3 (lié à la sécurité). #13404 (Vladimir Chebotarev).
- Ajoute
QueryTimeMicroseconds,SelectQueryTimeMicrosecondsetInsertQueryTimeMicrosecondsà system.events. #13336 (ianton-ru). - Corrige une assertion de débogage lorsque Decimal a un exposant négatif de trop grande valeur absolue. Corrige #13188. #13228 (alexey-milovidov).
- Ajout d’une couche de cache pour DiskS3 (mise en cache sur disque local des fichiers de marks et d’index).
DiskS3est une fonctionnalité expérimentale. #13076 (Pavel Kovalenko). - Corrige readline pour qu’il écrive désormais l’historique dans un fichier. #13600 (Amos Bird).
- Crée la base de données
systemavec le moteurAtomicpar défaut (en préparation à l’activation par défaut du moteur de base de donnéesAtomicpartout). #13680 (tavplubix).
Amélioration des performances
- Optimise légèrement les requêtes très courtes avec
LowCardinality. #14129 (Anton Popov). - Active les
INSERTparallèles pour les table enginesNull,Memory,DistributedetBufferlorsque le paramètremax_insert_threadsest défini. #14120 (alexey-milovidov). - Échoue rapidement si la limite
max_rows_to_readest dépassée lors de l’analyse des parts. L’objectif de ce changement est d’éviter l’analyse des plages pour toutes les parts sélectionnées s’il est clair quemax_rows_to_readest déjà dépassé. Ce changement est particulièrement perceptible pour les queries portant sur un grand nombre de parts. #13677 (Roman Khavronenko). - Améliore légèrement les performances de l’agrégation avec des clés UInt8/UInt16. #13099 (alexey-milovidov).
- Optimise les fonctions
has(),indexOf()etcountEqual()pourArray(LowCardinality(T))et des arguments droits constants. #12550 (myrrc). - Lors de l’exécution de requêtes triviales
INSERT SELECT, définit automatiquementmax_threadssur 1 oumax_insert_threads, etmax_block_sizesurmin_insert_block_size_rows. En lien avec #5907. #12195 (flynn).
Fonctionnalité expérimentale
- ClickHouse peut fonctionner comme replica MySQL : cela est implémenté par le database engine
MaterializeMySQL. Implémente #4006. #10851 (Winter Zhang). - Ajout des types
Int128,Int256,UInt256et des fonctions associées. Extension du type Decimal avec Decimal256 (precision jusqu’à 76 chiffres). Les nouveaux types sont soumis au paramètreallow_experimental_bigint_types. Leur fonctionnement est extrêmement lent et médiocre. L’implémentation est incomplète. Veuillez ne pas utiliser cette fonctionnalité. #13097 (Artem Zuikov).
Amélioration de la compilation, des tests et du packaging
- Ajout du script
clickhouse install, utile si vous ne disposez que d’un seul binaire. #13528 (alexey-milovidov). - Permet d’exécuter le binaire
clickhousesans configuration. #13515 (alexey-milovidov). - Active la vérification des fautes de frappe dans le code avec
codespell. #13513 #13511 (alexey-milovidov). - Active Shellcheck dans la CI comme outil de linting pour les tests
.sh. Cela clôt #13168. #13530 #13529 (alexey-milovidov). - Ajout d’une option CMake pour faire échouer la configuration au lieu de lancer une reconfiguration automatique, activée par défaut. #13687 (Konstantin).
- Expose la version de tzdata embarquée via TZDATA_VERSION dans system.build_options. #13648 (filimonov).
- Améliore la génération de la table system.time_zones lors de la compilation. Clôt #14209. #14215 (filimonov).
- Compile ClickHouse avec la version la plus récente de tzdata depuis le dépôt de paquets. #13623 (alexey-milovidov).
- Ajout de la possibilité d’écrire des commentaires de style JS dans skip_list.json. #14159 (alesapin).
- Garantit l’absence de code GPL copié-collé. #13514 (alexey-milovidov).
- Fait basculer les images Docker de test vers le parent test-base. #14167 (Ilya Yatsishin).
- Ajout d’une logique de nouvelle tentative lors du démarrage du cluster docker-compose ; augmentation de COMPOSE_HTTP_TIMEOUT. #14112 (vzakaznikov).
- Active
system.text_logdans le test de charge afin de détecter davantage de bugs. #13855 (Nikita Mikhaylov). - Module LDAP de Testflows : ajout des certificats manquants et de dhparam.pem pour openldap4. #13780 (vzakaznikov).
- ZooKeeper ne peut pas fonctionner de manière fiable dans les tests unitaires de l’infrastructure CI. Utiliser des tests unitaires pour les interactions avec un véritable ZooKeeper est une mauvaise idée dès le départ (les tests unitaires ne sont pas censés valider des systèmes distribués complexes). Nous utilisons déjà des tests d’intégration à cette fin, et ils sont mieux adaptés. #13745 (alexey-milovidov).
- Ajout d’une image Docker pour le Style check. Ajout d’un style check pour s’assurer que tous les fichiers Docker et docker-compose sont situés dans le répertoire docker. #13724 (Ilya Yatsishin).
- Correction du build de Cassandra sur Mac OS. #13708 (Ilya Yatsishin).
- Correction d’une erreur d’édition de liens dans le build partagé. #13700 (Amos Bird).
- Mise à jour de la suite d’authentication des utilisateurs LDAP pour vérifier qu’elle fonctionne avec RBAC. #13656 (vzakaznikov).
- Suppression de
-DENABLE_CURL_CLIENTpourcontrib/aws. #13628 (Vladimir Chebotarev). - Augmentation des timeout des vérifications d’état pour les nœuds ClickHouse et ajout de la prise en charge du dump des logs docker-compose si des conteneurs défaillants sont détectés. #13612 (vzakaznikov).
- Vérifier que #10977 est invalide. #13539 (Amos Bird).
- Ignorer les PR’s de robot-clickhouse. #13489 (Nikita Mikhaylov).
- Déplacement des Dockerfiles des tests d’intégration vers le répertoire
docker/test. Les fichiers docker_compose sont disponibles dans le conteneur Dockerrunner. Les Docker images sont construites dans la CI, et non dans les tests d’intégration. #13448 (Ilya Yatsishin).
Version 20.7 de ClickHouse
version de ClickHouse v20.7.2.30-stable, 2020-08-31
Changement rétro-incompatible
- La fonction
modulo(opérateur%), lorsqu’au moins un des arguments est un nombre à virgule flottante, calcule désormais le reste de la division directement sur des nombres à virgule flottante, sans convertir les deux arguments en entiers. Le comportement est ainsi rendu compatible avec celui de la plupart des SGBD. Cela s’applique également aux types de données Date et DateTime. Ajout de l’aliasmod. Cela résout #7323. #12585 (alexey-milovidov). - Dépréciation de l’affichage spécial des valeurs Date/DateTime zéro sous la forme
0000-00-00et0000-00-00 00:00:00. #12442 (alexey-milovidov). - La fonction
groupArrayMoving*ne fonctionnait pas pour les requêtes distribuées. Son résultat était calculé avec un type de données incorrect (sans promotion vers le type le plus large). La fonctiongroupArrayMovingAvgrenvoyait un entier, ce qui n’était pas cohérent avec la fonctionavg. Cela corrige #12568. #12622 (alexey-milovidov). - Ajout d’une vérification de cohérence pour les paramètres MergeTree. Si les paramètres sont incorrects, le serveur refusera de démarrer ou de créer une table, en affichant à l’utilisateur une explication détaillée. #13153 (alexey-milovidov).
- Protection contre les cas où l’utilisateur peut définir
background_pool_sizesur une valeur inférieure ànumber_of_free_entries_in_pool_to_execute_mutationounumber_of_free_entries_in_pool_to_lower_max_size_of_merge. Dans ces cas, les ALTER ne fonctionneront pas, ou la taille maximale de la fusion sera trop limitée. Une exception sera levée pour indiquer la marche à suivre. Cela résout #10897. #12728 (alexey-milovidov). - Lors d’une mise à niveau depuis des versions antérieures à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou ultérieures et des versions antérieures à 20.5, le redémarrage de nœuds ClickHouse exécutant d’anciennes versions, en présence de versions plus récentes, peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquetsclickhouse-serversur tous les nœuds du cluster, puis effectuez les redémarrages (ainsi, lorsqueclickhouse-serverredémarrera, il se lancera avec la nouvelle version).
Nouvelle fonctionnalité
- Type de dictionnaire Polygon qui fournit des recherches de « géocodage inversé » efficaces, pour trouver la région à partir de coordonnées dans un dictionnaire contenant de nombreux polygons (carte du monde). Il utilise un algorithme soigneusement optimisé avec des grilles récursives afin de maintenir une faible utilisation du CPU et de la mémoire. #9278 (achulkov2).
- Ajout de la prise en charge de l’authentification LDAP pour les utilisateurs préconfigurés (méthode « Simple Bind »). #11234 (Denis Glazachev).
- Introduction du paramètre
alter_partition_verbose_result, qui affiche des informations sur les parts concernées pour certains types de requêtesALTER TABLE ... PARTITION ...(actuellementATTACHetFREEZE). Clôt #8076. #13017 (alesapin). - Ajout de la fonction
bayesABpour les tests A/B bayésiens. #12327 (achimbab). - Ajout de la table
system.crash_log, dans laquelle sont collectées les traces de pile des erreurs fatales. Cette table doit être vide. #12316 (alexey-milovidov). - Ajout des en-têtes HTTP
X-ClickHouse-DatabaseetX-ClickHouse-Format, qui peuvent être utilisés pour définir la base de données par défaut et le format de sortie. #12981 (hcz). - Ajout de la prise en charge des fonctions
minMapetmaxMapdansSimpleAggregateFunction. #12662 (Ildus Kurbangaliev). - Ajout du paramètre
allow_non_metadata_alters, qui restreint l’exécution des requêtesALTERmodifiant les données sur disque. Désactivé par défaut. Clôt #11547. #12635 (alesapin). - Ajout de la fonction
formatRowpour permettre de convertir des expressions arbitraires en chaîne à l’aide du format donné. Elle est utile pour manipuler les sorties SQL et est très polyvalente lorsqu’elle est combinée avec la fonctioncolumns. #12574 (Amos Bird). - Ajout de la fonction
FROM_UNIXTIMEpour la compatibilité avec MySQL, en lien avec 12149. #12484 (flynn). - Autorise les types Nullable comme clés dans les tables MergeTree si le paramètre de table
allow_nullable_keyest activé. Clôt #5319. #12433 (Amos Bird). - Intégration avec COS. #12386 (fastio).
- Ajout des fonctions
mapAddetmapSubtractpour additionner/soustraire des valeurs associées à des clés. #11735 (Ildus Kurbangaliev).
Corrections de bugs
- Correction des timeouts
ON CLUSTERprématurés pour les requêtes qui doivent être exécutées sur une seule réplique. Corrige #6704, #7228, #13361, #11884. #13450 (alesapin). - Correction d’un crash dans la recherche d’inclusion des marks, introduit dans #12277. #14225 (Amos Bird).
- Correction d’une race condition dans les dictionnaires externes avec une disposition de type cache, pouvant entraîner un crash du serveur. #12566 (alesapin).
- Correction de l’écrasement des données visibles par la barre de progression dans le client en mode interactif. Cela corrige #12562, #13369, #13584 et #12964. #13691 (alexey-milovidov).
- Correction d’un ordre de tri incorrect pour les colonnes
LowCardinalitylorsque ORDER BY sur plusieurs colonnes est utilisé. Cela corrige #13958. #14223 (Nikita Mikhaylov). - Suppression d’un timeout codé en dur, qui outrepassait à tort le paramètre
query_wait_timeout_millisecondspour le dictionnaire de cache. #14105 (Nikita Mikhaylov). - Correction d’un point de montage erroné dans les informations supplémentaires pour
Poco::Exception: no space left on device. #14050 (tavplubix). - Correction d’une optimisation incorrecte des requêtes
SELECTavec le mot-cléDISTINCTlorsque les sous-requêtes contiennent elles aussiDISTINCT, si le paramètreoptimize_duplicate_order_by_and_distinctest activé. #13925 (Artem Zuikov). - Correction d’un interblocage potentiel lors du renommage d’une table
Distributed. #13922 (tavplubix). - Correction d’un tri incorrect pour les colonnes
FixedStringlorsque ORDER BY sur plusieurs colonnes est utilisé. Corrige #13182. #13887 (Nikolai Kochetov). - Correction d’une précision potentiellement réduite des agrégations
topK/topKWeighted(avec des paramètres non par défaut). #13817 (Azat Khuzhin). - Correction d’un échec de lecture depuis une table MergeTree avec un INDEX de type SET lors d’une comparaison avec NULL. Cela corrige #13686. #13793 (Amos Bird).
- Correction d’un dépassement de capacité du step dans la fonction
range(). #13790 (Azat Khuzhin). - Correction de l’erreur
Directory not emptylors de l’exécution concurrente deDROP DATABASEetCREATE TABLE. #13756 (alexey-milovidov). - Ajout d’une vérification de plage pour la fonction
h3KRing. Cela corrige #13633. #13752 (alexey-milovidov). - Correction d’une condition de concurrence entre DETACH et les fusions en arrière-plan. Des parties peuvent réapparaître après un DETACH. Il s’agit de la suite de #8602, qui n’avait pas corrigé le problème, mais avait introduit un test qui a commencé à échouer dans de très rares cas, mettant ainsi le problème en évidence. #13746 (alexey-milovidov).
- Correction de la journalisation de Settings.Names/Values lorsque
log_queries_min_typeest supérieur àQUERY_START. #13737 (Azat Khuzhin). - Correction d’un message erroné dans
clickhouse-server.initlors de la vérification de l’utilisateur et du groupe. #13711 (ylchou). - Ne pas optimiser
any(arrayJoin())enarrayJoin()avecoptimize_move_functions_out_of_any. #13681 (Azat Khuzhin). - Correction d’un interblocage possible dans des requêtes concurrentes
ALTER ... REPLACE/MOVE PARTITION .... #13626 (tavplubix). - Correction du cas où un dictionnaire de type cache renvoyait parfois la valeur par défaut au lieu de la valeur présente dans la source. #13624 (Nikita Mikhaylov).
- Correction de la corruption des index secondaires dans les parties compactes (les parties compactes sont une fonctionnalité expérimentale). #13538 (Anton Popov).
- Correction d’un code incorrect dans la fonction
netloc. Cela corrige #13335. #13446 (alexey-milovidov). - Correction d’une erreur dans la fonction
parseDateTimeBestEffortlorsqu’un timestamp Unix était passé en argument. Cela corrige #13362. #13441 (alexey-milovidov). - Correction d’un type de retour invalide pour la comparaison de tuples avec des éléments
NULL. Corrige #12461. #13420 (Nikolai Kochetov). - Correction d’une optimisation incorrecte qui provoquait l’erreur
aggregate function any(x) is found inside another aggregate function in queryavecSET optimize_move_functions_out_of_any = 1et des alias à l’intérieur deany(). #13419 (Artem Zuikov). - Correction d’une condition de concurrence possible dans
StorageMemory. #13416 (Nikolai Kochetov). - Correction d’une sortie vide pour les formats
ArrowetParquetlorsque la requête retourne zéro ligne. Cela a été fait parce qu’une sortie vide n’est pas valide pour ces formats. #13399 (hcz). - Corrige les requêtes
selectavec des colonnes constantes et un préfixe de la clé primaire dans la clauseORDER BY. #13396 (Anton Popov). - Corrige
PrettyCompactMonoBlockpour clickhouse-local. Corrige extremes/totals avecPrettyCompactMonoBlock. Corrige #7746. #13394 (Azat Khuzhin). - Corrige un interblocage dans system.text_log. #12452 (alexey-milovidov). Cela fait partie de #12339. Cela corrige #12325. #13386 (Nikita Mikhaylov).
- Corrige
File(TSVWithNames*)(l’en-tête était écrit plusieurs fois), corrigeclickhouse-local --format CSVWithNames*(en-tête manquant, cassé après #12197) et corrigeclickhouse-local --format CSVWithNames*avec zéro ligne (en-tête manquant). #13343 (Azat Khuzhin). - Corrige un segfault lorsque la fonction
groupArrayMovingSumdésérialise un état vide. Corrige #13339. #13341 (alesapin). - Déclenche une erreur sur la fonction
arrayJoin()dans la sectionJOIN ON. #13330 (Artem Zuikov). - Corrige un crash dans
LEFT ASOF JOINavecjoin_use_nulls=1. #13291 (Artem Zuikov). - Corrige l’erreur possible
Totals having transform was already added to pipelinedans le cas d’une requête provenant d’une replica retardée. #13290 (Nikolai Kochetov). - Le server peut planter si l’utilisateur passe des arguments spécialement conçus à la fonction
h3ToChildren. Cela corrige #13275. #13277 (alexey-milovidov). - Corrige des performances potentiellement faibles et des résultats légèrement incorrects pour
uniqExact,topK,sumDistinctet des aggregate functions similaires appelées sur des types Float avec des valeursNaN. Cela déclenchait également une assertion dans une build de débogage. Cela corrige #12491. #13254 (alexey-milovidov). - Corrige une assertion dans KeyCondition lorsque la clé primaire contient une expression avec une fonction monotone et que la requête contient une comparaison avec une constante d’un type différent. Cela corrige #12465. #13251 (alexey-milovidov).
- Retourne le nombre fourni pour les nombres dont le bit de poids fort (MSB) est défini dans la fonction roundUpToPowerOfTwoOrZero(). Cela évite des erreurs potentielles en cas d’overflow de la taille des tableaux. #13234 (Azat Khuzhin).
- Corrige la fonction if lorsqu’un constexpr Nullable utilisé comme cond n’est pas un NULL littéral. Corrige #12463. #13226 (alexey-milovidov).
- Corrige l’assertion dans la fonction
arrayElementlorsque les éléments du tableau sont Nullable et que l’indice du tableau est lui aussi Nullable. Cela corrige #12172. #13224 (alexey-milovidov). - Corrige les fonctions de conversion de DateTime64 avec un argument constant. #13205 (Azat Khuzhin).
- Corrige l’analyse des politiques de lignes depuis users.xml lorsque les noms de bases de données ou de tables contiennent des points. Cela corrige #5779, #12527. #13199 (Vitaly Baranov).
- Corrige l’accès au dictionnaire
redisaprès une première perte de connexion. Cela peut se produire avec les layouts de dictionnairecacheetdirect. #13082 (Anton Popov). - Corrige une mauvaise analyse d’index avec des fonctions. Cela pouvait entraîner l’omission de certaines parties de données lors de la lecture de tables
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Corrige l’erreur
Cannot convert column because it is constant but values of constants are different in source and resultpour les requêtes distantes qui utilisent des fonctions déterministes dans le cadre d’une requête, mais non déterministes d’une requête à l’autre, commenow(),now64(),randConstant(). Corrige #11327. #13075 (Nikolai Kochetov). - Corrige un crash possible pour les requêtes avec un tuple dans
ORDER BYet une petite valeur deLIMIT. Corrige #12623. #13009 (Nikolai Kochetov). - Corrige l’erreur
Block structure mismatchpour les requêtes avecUNIONetJOIN. Corrige #12602. #12989 (Nikolai Kochetov). - Correction de la logique
merge_with_ttl_timeout, qui ne fonctionnait pas correctement lorsque l’expiration affectait plus d’une partition sur un même intervalle de temps. (Auteur : @excitoon). #12982 (Alexander Kazakov). - Corrige la duplication de colonnes pour un dictionnaire à hachage par plage créé à partir d’une DDL query. Cela corrige #10605. #12857 (alesapin).
- Corrige la limitation inutile du nombre de threads pour les selects depuis une replica locale. #12840 (Nikolai Kochetov).
- Correction d’un bug rare lorsque les requêtes
ALTER DELETEetALTER MODIFY COLUMNsont exécutées simultanément sous forme d’une seule mutation. Ce bug entraîne un nombre incorrect de lignes danscount.txtet, par conséquent, des données incorrectes dans la part. Correction également d’un petit bug lorsqueALTER RENAME COLUMNetALTER ADD COLUMNsont exécutés simultanément. #12760 (alesapin). - Utilisation d’informations d’identification incorrectes lors de l’utilisation de la dictionary source
clickhousepour interroger des tables distantes. #12756 (sundyli). - Correction de
CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin). - Amélioration des performances avec de grands tuples, interprétés comme des fonctions dans la section
IN. Il s’agit du cas où l’utilisateur écritWHERE x IN tuple(1, 2, ...)au lieu deWHERE x IN (1, 2, ...)pour une raison obscure. #12700 (Anton Popov). - Correction du suivi de la mémoire pour input_format_parallel_parsing (en rattachant le thread au groupe). #12672 (Azat Khuzhin).
- Correction de l’optimisation incorrecte
optimize_move_functions_out_of_any=1dans le cas deany(func(<lambda>)). #12664 (Artem Zuikov). - Correction du correctif de #10572 pour un index bloom filter avec une expression constante. #12659 (Winter Zhang).
- Correction d’un SIGSEGV dans StorageKafka lorsque le broker n’est pas disponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin).
- Ajout de la prise en charge de la fonction
ifavec des argumentsArray(UUID). Cela corrige #11066. #12648 (alexey-milovidov). - CREATE USER IF NOT EXISTS ne lève désormais plus d’exception si l’utilisateur existe déjà. Cela corrige #12507. #12646 (Vitaly Baranov).
- L’exception
There is no supertype...peut être levée pendantALTER ... UPDATEdans des cas inattendus (par exemple, lors d’une soustraction sur une colonne UInt64). Cela corrige #7306. Cela corrige #4165. #12633 (alexey-milovidov). - Correction d’une possible erreur
Pipeline stuckpour les queries avec tri externe. Corrige #12617. #12618 (Nikolai Kochetov). - Correction de l’erreur
Output of TreeExecutor is not sortedpourOPTIMIZE DEDUPLICATE. Corrige #11572. #12613 (Nikolai Kochetov). - Correction du problème où l’alias du résultat de la fonction
anypeut être perdu lors de l’optimisation de query. #12593 (Anton Popov). - Supprime les données des tables Distributed (blocs issus d’INSERT asynchrones) lors d’un DROP TABLE. #12556 (Azat Khuzhin).
- Désormais, ClickHouse recalcule les checksums des parts lorsque le fichier
checksums.txtest absent. Régression introduite dans #9827. #12545 (alesapin). - Correction d’un bug qui corrompait d’anciennes parts après une requête
ALTER DELETElorsqueenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Correction d’une race condition dans les tables live view pouvant provoquer une duplication des données. LIVE VIEW est une fonctionnalité expérimentale. #12519 (vzakaznikov).
- Correction de la rétrocompatibilité du format binaire des valeurs
AggregateFunction(avg, ...). Corrige #12342. #12486 (alexey-milovidov). - Correction d’un crash dans JOIN avec un dictionnaire lorsque la jointure s’effectue sur une expression de clé de dictionnaire :
t JOIN dict ON expr(dict.id) = t.id. Désactive l’optimisation de jointure sur dictionnaire dans ce cas. #12458 (Artem Zuikov). - Correction d’un overflow lorsqu’un LIMIT ou un OFFSET très élevé est spécifié. Corrige #10470. Corrige #11372. #12427 (alexey-milovidov).
- Kafka : correction d’un SIGSEGV lorsqu’un message contenant une erreur se trouve au milieu du batch. #12302 (Azat Khuzhin).
Amélioration
- Conserver moins de logs dans ZooKeeper. Évite la croissance excessive des nœuds ZooKeeper en cas de répliques hors ligne avec de nombreux serveurs/tables/inserts. #13100 (alexey-milovidov).
- Désormais, les exceptions sont transmises au client si une erreur se produit pendant ALTER ou une mutation. Corrige #11329. #12666 (alesapin).
- Ajout de
QueryTimeMicroseconds,SelectQueryTimeMicrosecondsetInsertQueryTimeMicrosecondsàsystem.events, ainsi que dans system.metrics, processes, query_log, etc. #13028 (ianton-ru). - Ajout de
SelectedRowsetSelectedBytesàsystem.events, ainsi que dans system.metrics, processes, query_log, etc. #12638 (ianton-ru). - Ajout des informations
current_databaseàsystem.query_log. #12652 (Amos Bird). - Prise en charge de
TabSeparatedRawcomme format d’entrée. #12009 (hcz). - Désormais,
joinGetprend en charge les recherches multiclé. #12418 (Amos Bird). - Autorise les fonctions d’agrégation
*Mapà fonctionner sur des Array contenant des NULL. Corrige #13157. #13225 (alexey-milovidov). - Évite le débordement lors de l’analyse de valeurs DateTime qui entraîneraient un timestamp Unix négatif dans leur fuseau horaire (par exemple,
1970-01-01 00:00:00à Moscou). La valeur est alors ramenée à zéro. Corrige #3470. Corrige #4172. #12443 (alexey-milovidov). - AvroConfluent : ignore les enregistrements tombstone de Kafka et prend en charge l’ignorance des enregistrements corrompus #13203 (Andrew Onyshchuk).
- Correction du mauvais message d’erreur pour les requêtes longues. Il était possible d’obtenir une erreur de syntaxe autre que
Max query size exceededpour une requête correcte. #13928 (Nikolai Kochetov). - Correction d’une data race dans la fonction
lgamma. Cette situation n’a été détectée que danstsanet n’a en pratique provoqué aucun effet de bord. #13842 (Nikolai Kochetov). - Correction du formatage de l’intervalle ‘Week’ pour les instructions ATTACH/ALTER/CREATE QUOTA. #13417 (vladimir-golovchenko).
- Désormais, les parts corrompues sont également signalées lorsqu’elles sont rencontrées pendant le traitement des parts compactes. Les parts compactes constituent une fonctionnalité expérimentale. #13282 (Amos Bird).
- Correction d’une assertion dans
geohashesInBox. Corrige #12554. #13229 (alexey-milovidov). - Correction d’une assertion dans
parseDateTimeBestEffort. Cela corrige #12649. #13227 (alexey-milovidov). - Optimisation mineure dans Processors/PipelineExecutor : sortie d’une boucle lorsqu’il est logique de le faire. #13058 (Mark Papadakis).
- Prise en charge de TRUNCATE table sans mot-clé TABLE. #12653 (Winter Zhang).
- Correction de l’écrasement par défaut du format de la requête EXPLAIN. Cela corrige #12541. #12541 (BohuTANG).
- Possibilité de définir le type et la variante de JOIN d’une manière plus standard :
LEFT SEMI JOINau lieu deSEMI LEFT JOIN. Pour l’instant, les deux sont corrects. #12520 (Artem Zuikov). - Modifie la valeur par défaut de
multiple_joins_rewriter_versionà 2. Cela active le nouveau réécriveur de jointures multiples, qui prend en compte les noms de colonnes. #12469 (Artem Zuikov). - Ajoute plusieurs métriques pour les requêtes vers les stockages S3. #12464 (ianton-ru).
- Utilise le bon port sécurisé par défaut pour clickhouse-benchmark avec l’argument
--secure. Cela corrige #11044. #12440 (alexey-milovidov). - Annule les insertions en cas d’erreur dans les moteurs
Log,TinyLog,StripeLog. Dans les versions précédentes, une erreur d’insertion entraînait un état de table incohérent (ce comportement est conforme à la documentation et normal pour ces moteurs de table). Cela corrige #12402. #12426 (alexey-milovidov). - Implémente
RENAME DATABASEetRENAME DICTIONARYpour le moteur de base de donnéesAtomic- Ajoute la macro implicite{uuid}, qui peut être utilisée dans le chemin ZooKeeper deReplicatedMergeTree. Cela fonctionne avec les requêtesCREATE ... ON CLUSTER .... Définissezshow_table_uuid_in_table_create_query_if_not_nilsurtruepour l’utiliser. - Rend facultatifs les arguments du moteurReplicatedMergeTree;/clickhouse/tables/{uuid}/{shard}/et{replica}sont utilisés par défaut. Corrige #12135. - Corrections mineures. - Ces changements rompent la rétrocompatibilité du moteur de base de donnéesAtomic. Les bases de donnéesAtomiccréées précédemment doivent être converties manuellement vers le nouveau format. Le moteur de base de données Atomic est une fonctionnalité expérimentale. #12343 (tavplubix). AWSAuthV4Signera été séparé dans un logger distinct, et leAWSClient: AWSClientsuperflu a été supprimé des messages de log. #12320 (Vladimir Chebotarev).- Message d’exception amélioré dans le stockage d’accès disque. #12625 (alesapin).
- Message d’exception amélioré pour la fonction
inlorsqu’elle reçoit un nombre d’arguments invalide. #12529 (Anton Popov). - Corrige le message d’erreur lié à la granularité adaptative. #12624 (alesapin).
- Corrige l’analyse de SETTINGS après FORMAT. #12480 (Azat Khuzhin).
- Si une table MergeTree ne contenait ni ORDER BY ni PARTITION BY, il était possible de demander à ALTER d’exécuter un CLEAR sur toutes les colonnes, ce qui bloquait ALTER. Corrigé dans #7941. #12382 (alexey-milovidov).
- Évite de recharger l’autocomplétion depuis le fichier d’historique après chaque requête (afin d’éviter les chevauchements d’historique avec d’autres sessions client). #13086 (Azat Khuzhin).
Amélioration des performances
- Réduit jusqu’à 2 fois l’utilisation de la mémoire pour certaines opérations. #12424 (alexey-milovidov).
- Optimise la recherche dans la PK pour les requêtes qui correspondent exactement à une plage de PK. #12277 (Ivan Babrou).
- Optimise légèrement les requêtes très courtes avec
LowCardinality. #14129 (Anton Popov). - Améliore légèrement les performances de l’agrégation sur des clés UInt8/UInt16. #13091 et #13055 (alexey-milovidov).
- Applique le pushdown de l’étape
LIMITdans le plan de requête (à l’intérieur des sous-requêtes). #13016 (Nikolai Kochetov). - Recherche de clé primaire en parallèle et étapes de skipping index sur les parts, comme décrit dans #11564. #12589 (Ivan Babrou).
- Convertit les arguments de type String des fonctions “if” et “transform” en enum si
set optimize_if_transform_strings_to_enum = 1. #12515 (Artem Zuikov). - Remplace les fonctions monotones par leur argument dans
ORDER BYsiset optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov). - Ajoute une optimisation de
ORDER BYqui réécritORDER BY x, f(x)enORDER BY xsiset optimize_redundant_functions_in_order_by = 1. #12404 (Artem Zuikov). - Autorise le pushdown du prédicat lorsque la sous-requête contient une clause
WITH. Cela corrige #12293 #12663 (Winter Zhang). - Améliore les performances de lecture depuis les compact parts. Les compact parts sont une fonctionnalité expérimentale. #12492 (Anton Popov).
- Tente d’implémenter une optimisation de streaming dans
DiskS3. DiskS3 est une fonctionnalité expérimentale. #12434 (Vladimir Chebotarev).
Amélioration de la compilation, des tests et du packaging
- Utilisation de
shellcheckpour le linting des tests sh. #13200 #13207 (alexey-milovidov). - Ajout d’un script qui définit des labels pour les pull requests dans le hook GitHub. #13183 (alesapin).
- Suppression de certains sous-modules récursifs. Voir #13378. #13379 (alexey-milovidov).
- Vérification que tous les sous-modules proviennent des URL appropriées. Suite de #13379. Cela corrige #13378. #13397 (alexey-milovidov).
- Ajout de la prise en charge des paramètres déclarés par l’utilisateur, accessibles depuis l’intérieur des requêtes. Cela est nécessaire lorsque le ClickHouse engine est utilisé comme composant d’un autre système. #13013 (Vitaly Baranov).
- Ajout de tests pour la fonctionnalité RBAC du privilège
INSERTdans TestFlows. Extension des tables sur lesquellesSELECTest testé. Ajout d’exigences pour correspondre aux nouveaux tests de table engine. #13340 (MyroTk). - Correction d’une erreur de timeout pendant le redémarrage du server dans le test de charge. #13321 (alesapin).
- Désormais, le Fast test attendra le server avec plusieurs tentatives. #13284 (alesapin).
- La fonction
materialize()(utilisée pour les tests de ClickHouse) fonctionnera avec NULL comme prévu, en le transformant en colonne non constante. #13212 (alexey-milovidov). - Correction du build de libunwind sur AArch64. Cela corrige #13204. #13208 (alexey-milovidov).
- Ajout de davantage de tentatives dans le gtest zkutil pour éviter l’instabilité des tests. #13165 (alexey-milovidov).
- Petites corrections dans les TestFlows RBAC. #13152 (vzakaznikov).
- Correction du test
00960_live_view_watch_events_live.py. #13108 (vzakaznikov). - Amélioration de la purge du cache dans le script de déploiement de la documentation. #13107 (alesapin).
- Réécriture de certains tests orphelins en gtest. Suppression d’includes inutiles dans les tests. #13073 (Nikita Mikhaylov).
- Ajout de tests pour la fonctionnalité RBAC du privilège
SELECTdans TestFlows. #13061 (Ritaank Tiwari). - Relance de certains tests dans la vérification Fast test. #12992 (alesapin).
- Correction d’une erreur MSan dans la bibliothèque “rdkafka”. Cela clôt #12990.
rdkafkaa été mis à jour vers la version 1.5 (master). #12991 (alexey-milovidov). - Correction d’un signalement UBSan dans base64 si les tests étaient exécutés sur un server avec AVX-512. Cela corrige #12318. Auteur : @qoega. #12441 (alexey-milovidov).
- Correction d’un signalement UBSan dans la bibliothèque HDFS. Cela clôt #12330. #12453 (alexey-milovidov).
- Vérification de la possibilité de restaurer une sauvegarde d’une ancienne version vers une nouvelle version. Cela clôt #8979. #12959 (alesapin).
- Ne pas construire l’image helper_container dans les tests d’intégration. Construire le conteneur Docker dans la CI et utiliser l’image helper_container préconstruite dans les tests d’intégration. #12953 (Ilya Yatsishin).
- Ajout d’un test pour la query
ALTER TABLE CLEAR COLUMNsur les colonnes de clé primaire. #12951 (alesapin). - Augmentation des timeout dans les tests testflows. #12949 (vzakaznikov).
- Correction du build du test sous Mac OS X. Cela clôt #12767. #12772 (alexey-milovidov).
- Connector-ODBC mis à jour vers mysql-connector-odbc-8.0.21. #12739 (Ilya Yatsishin).
- Ajout de tests de syntaxe RBAC dans TestFlows. #12642 (vzakaznikov).
- Amélioration des performances de TestKeeper. Cela accélérera les tests avec une utilisation intensive des tables Replicated. #12505 (alexey-milovidov).
- Nous vérifions désormais que le server peut démarrer après l’exécution des tests de stress. Cela corrige #12473. #12496 (alesapin).
- Mise à jour de fmtlib vers master (7.0.1). #12446 (alexey-milovidov).
- Ajout d’une image Docker pour les Fast test. #12294 (alesapin).
- Refonte des paths de configuration pour les tests d’intégration. #12285 (Ilya Yatsishin).
- Ajout d’une option du compilateur pour contrôler que les frames de pile ne sont pas trop volumineuses. Cela aidera à exécuter le code dans des fibres avec une pile de petite taille. #11524 (alexey-milovidov).
- Mise à jour des fichiers gitignore. #13447 (vladimir-golovchenko).
Version 20.6 de ClickHouse
Version de ClickHouse v20.6.3.28-stable
changement rétro-incompatible
- Lors d’une mise à niveau depuis une version antérieure à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou supérieures et des versions antérieures à 20.5, le redémarrage de nœuds ClickHouse exécutant une ancienne version en présence de versions plus récentes peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquets clickhouse-server sur tous les nœuds du cluster, puis redémarrez-les (ainsi, lorsque clickhouse-server redémarrera, il se lancera avec la nouvelle version).
Nouvelle fonctionnalité
- Ajout d’une première implémentation de la requête
EXPLAIN. Syntaxe :EXPLAIN SELECT .... Cela corrige #1118. #11873 (Nikolai Kochetov). - Ajout du moteur de stockage
RabbitMQ. #11069 (Kseniia Sumarokova). - Ajout de la prise en charge de l’opérateur
ILIKE, comme dans PostgreSQL, pour #11710. #12125 (Mike). - Prise en charge de RIGHT et FULL JOIN avec
SET join_algorithm = 'partial_merge'. Seul le mode de strictness ALL est autorisé (ANY, SEMI, ANTI et ASOF ne le sont pas). #12118 (Artem Zuikov). - Ajout de la fonction
initializeAggregationpour initialiser une agrégation à partir d’une seule valeur. #12109 (Guillaume Tassery). - Prise en charge de
ALTER TABLE ... [ADD|MODIFY] COLUMN ... FIRST#4006. #12073 (Winter Zhang). - Ajout de la fonction
parseDateTimeBestEffortUS. #12028 (flynn). - Prise en charge du format
ORCen sortie (auparavant pris en charge uniquement en entrée). #11662 (Kruglov Pavel).
Correction de bugs
- Correction de l’erreur
aggregate function any(x) is found inside another aggregate function in queryavecSET optimize_move_functions_out_of_any = 1et des alias dansany(). #13419 (Artem Zuikov). - Correction de
PrettyCompactMonoBlockpour clickhouse-local. Correction également d’extremes/totals avecPrettyCompactMonoBlock. Cela corrige #7746. #13394 (Azat Khuzhin). - Correction d’une possible erreur
Totals having transform was already added to pipelinedans le cas d’une requête provenant d’une réplique retardée. #13290 (Nikolai Kochetov). - Le server pouvait planter si l’utilisateur passait des arguments spécialement conçus à la fonction
h3ToChildren. Cela corrige #13275. #13277 (alexey-milovidov). - Correction de performances potentiellement faibles et d’un résultat légèrement incorrect pour
uniqExact,topK,sumDistinctet des fonctions d’agrégation similaires appelées sur des types Float avec des valeurs NaN. Cela déclenchait également une assertion dans une build de débogage. Cela corrige #12491. #13254 (alexey-milovidov). - Correction de la fonction if avec un constexpr Nullable comme condition qui n’est pas un littéral NULL. Corrige #12463. #13226 (alexey-milovidov).
- Correction d’une assertion dans la fonction
arrayElementlorsque les éléments du tableau sont Nullable et que l’indice du tableau est également Nullable. Cela corrige #12172. #13224 (alexey-milovidov). - Correction des fonctions de conversion
DateTime64avec un argument constant. #13205 (Azat Khuzhin). - Correction d’une analyse d’index erronée avec des fonctions. Cela pouvait conduire à élaguer les mauvaises parties lors de la lecture de tables
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Correction de l’erreur
Cannot convert column because it is constant but values of constants are different in source and resultpour les requêtes distantes qui utilisent des fonctions déterministes dans le cadre d’une requête, mais non déterministes entre les requêtes, commenow(),now64(),randConstant(). Corrige #11327. #13075 (Nikolai Kochetov). - Correction d’une limitation inutile du nombre de threads pour les selects depuis une réplique locale. #12840 (Nikolai Kochetov).
- Correction d’un bug rare lorsque des requêtes
ALTER DELETEetALTER MODIFY COLUMNétaient exécutées simultanément comme une seule mutation. Ce bug entraînait un nombre incorrect de rows danscount.txtet, par conséquent, des données incorrectes dans la partie. Correction également d’un petit bug avec l’exécution simultanée deALTER RENAME COLUMNetALTER ADD COLUMN. #12760 (alesapin). - Correction de
CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin). - Correction d’un problème de performances avec les grands tuples, interprétés comme des fonctions dans la clause
IN. Cela concerne le cas où l’utilisateur écritWHERE x IN tuple(1, 2, ...)au lieu deWHERE x IN (1, 2, ...), pour une raison obscure. #12700 (Anton Popov). - Correction du suivi de la mémoire pour
input_format_parallel_parsing(en rattachant le thread au groupe). #12672 (Azat Khuzhin). - Correction de l’index bloom filter avec une expression constante. Cela corrige #10572. #12659 (Winter Zhang).
- Correction d’un
SIGSEGVdansStorageKafkalorsque le broker est indisponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin). - Ajout de la prise en charge de la fonction
ifavec des argumentsArray(UUID). Cela corrige #11066. #12648 (alexey-milovidov). CREATE USER IF NOT EXISTSne lève désormais plus d’exception si l’utilisateur existe déjà. Cela corrige #12507. #12646 (Vitaly Baranov).- Message d’exception amélioré pour le stockage d’accès disque. #12625 (alesapin).
- La fonction
groupArrayMoving*ne fonctionnait pas pour les requêtes distribuées. Son résultat était calculé avec un type de données incorrect (sans promotion vers le type le plus large). La fonctiongroupArrayMovingAvgrenvoyait un nombre entier, ce qui était incohérent avec la fonctionavg. Cela corrige #12568. #12622 (alexey-milovidov). - Correction de l’absence d’alias pour la fonction
any. #12593 (Anton Popov). - Correction d’une race condition dans les dictionnaires externes avec la disposition cache, pouvant entraîner un crash du serveur. #12566 (alesapin).
- Suppression des données des tables Distributed (blocs issus d’INSERT asynchrones) lors d’un DROP TABLE. #12556 (Azat Khuzhin).
- Correction d’un bug qui entraînait la corruption d’anciennes parts après une requête
ALTER DELETElorsqueenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Message d’exception amélioré pour la fonction
inavec un nombre d’arguments invalide. #12529 (Anton Popov). - Correction d’une race condition dans les tables live view pouvant provoquer une duplication des données. #12519 (vzakaznikov).
- Correction d’un problème de performances lors de la lecture depuis des compact parts. #12492 (Anton Popov).
- Rétablissement de la rétrocompatibilité du format binaire des valeurs
AggregateFunction(avg, ...). Cela corrige #12342. #12486 (alexey-milovidov). - Correction de l’analyse de SETTINGS après FORMAT. #12480 (Azat Khuzhin).
- Correction d’un blocage mutuel si
text_logest activé. #12452 (alexey-milovidov). - Correction d’un dépassement de capacité lorsqu’un
LIMITou unOFFSETtrès grand est spécifié. Cela corrige #10470. Cela corrige #11372. #12427 (alexey-milovidov). - Correction d’un segfault possible avec
StorageMerge. Cela corrige #12054. #12401 (tavplubix). - Annulation de la modification introduite dans #11079 afin de résoudre #12098. #12397 (Mike).
- Vérification supplémentaire des arguments de l’index bloom filter. Cela corrige #11408. #12388 (alexey-milovidov).
- Évite une exception lorsqu’une constante négative ou à virgule flottante est utilisée dans la condition WHERE pour des tables indexées. Cela corrige #11905. #12384 (alexey-milovidov).
- Autorisation d’utiliser
CLEARsur une colonne même s’il existe des expressionsDEFAULTdépendantes. Cela corrige #12333. #12378 (alexey-milovidov). - Correction de
TOTALS/ROLLUP/CUBEpour les fonctions d’agrégation avec des arguments-StateetNullable. Cela corrige #12163. #12376 (alexey-milovidov). - Correction du message d’erreur et des codes de sortie pour les requêtes
ALTER RENAME COLUMN, lorsqueRENAMEn’est pas autorisé. Corrige #12301 et #12303. #12335 (alesapin). - Correction d’une condition de concurrence très rare dans
ReplicatedMergeTreeQueue. #12315 (alexey-milovidov). - Lors de l’utilisation du codec
DeltaouDoubleDeltaavec des types à largeur non fixe, une exception avec le codeLOGICAL_ERRORétait renvoyée au lieu d’une exception avec le codeBAD_ARGUMENTS(nous veillons à ce que des exceptions avec le code logical error ne se produisent jamais). Cela corrige #12110. #12308 (alexey-milovidov). - Correction de l’ordre des colonnes dans le modificateur
WITH FILL. Auparavant, l’ordre des colonnes de l’instructionORDER BYn’était pas respecté. #12306 (Anton Popov). - Évite l’exception “bad cast” lorsqu’une expression filtre les données sur des colonnes virtuelles (comme
_tabledans les tablesMerge) ou sur des colonnes d’index dans des tables système, par exemple en filtrant sur le nom de la base de données lors d’une query sursystem.tables, et que cette expression renvoie un typeNullable. Cela corrige #12166. #12305 (alexey-milovidov). - Correction de
TTLaprès le renommage d’une colonne dont dépend l’expression TTL. #12304 (Anton Popov). - Correction d’un SIGSEGV lorsqu’un message contenant une erreur se trouve au milieu du batch dans le moteur
Kafka. #12302 (Azat Khuzhin). - Correction d’un problème où certains threads pouvaient se bloquer aléatoirement pendant quelques secondes lors de la mise à jour du cache
DNS. #12296 (tavplubix). - Correction d’une faute de frappe dans le nom d’un paramètre. #12292 (alexey-milovidov).
- Affiche une erreur après l’échec du chargement de
TrieDictionary. #12290 (Vitaly Baranov). - La fonction
arrayFillfonctionnait incorrectement sur les tableaux vides, ce qui pouvait entraîner un crash. Cela corrige #12263. #12279 (alexey-milovidov). - Implémente les conversions vers un type commun pour les types
LowCardinality. Cela permet d’exécuter UNION ALL sur des tables avec des colonnesLowCardinalityet d’autres colonnes. Cela corrige #8212. Cela corrige #4342. #12275 (alexey-milovidov). - Correction du comportement lorsque la limite de redirections est atteinte dans une requête vers le stockage
S3. #12256 (ianton-ru). - Correction du comportement lorsque, pendant plusieurs insertions séquentielles dans
StorageFile, l’en-tête de certains types spéciaux était écrit plus d’une fois. Cela corrige #6155. #12197 (Nikita Mikhaylov). - Correction des fonctions logiques pour les valeurs UInt8 lorsqu’elles ne sont pas égales à 0 ou 1. #12196 (Alexander Kazakov).
- Plafonne les limites max_memory_usage* à la mémoire résidente du processus. #12182 (Azat Khuzhin).
- Correction de la vérification des arguments de
dictGetlors de l’élimination des fonctions injectives dansGROUP BY. #12179 (Azat Khuzhin). - Correction du comportement lorsque le moteur
SummingMergeTreeadditionne les colonnes de la clé de partition. Ajout d’une exception en cas de définition explicite des colonnes à additionner qui intersecte les colonnes de la clé de partition. Cela corrige #7867. #12173 (Nikita Mikhaylov). - Ne pas scinder le nom de table de la source du dictionnaire en schéma et en nom de table si la connexion ODBC ne prend pas en charge les schémas. #12165 (Vitaly Baranov).
- Correction d’une logique erronée dans
ALTER DELETEqui entraînait la suppression d’enregistrements lorsque la condition s’évalue à NULL. Cela corrige #9088. Cela clôt #12106. #12153 (alexey-milovidov). - Correction de la transformation de la requête à envoyer au SGBD externe (par ex. MySQL, ODBC) en présence d’alias. Cela corrige #12032. #12151 (alexey-milovidov).
- Correction d’un code défectueux dans l’optimisation d’un ORDER BY redondant. Le bug a été introduit dans #10067. #12148 (alexey-milovidov).
- Correction d’un overflow potentiel dans la division entière. Cela corrige #12119. #12140 (alexey-milovidov).
- Correction d’une boucle infinie potentielle dans
greatCircleDistance,geoDistance. Cela corrige #12117. #12137 (alexey-milovidov). - Normalisation de la gestion du fichier “pid”. Dans les versions précédentes, le serveur pouvait refuser de démarrer s’il avait été arrêté brutalement sans arrêt propre et s’il existait un autre processus ayant le même pid que le serveur précédemment exécuté. De plus, le fichier pid pouvait être supprimé lors d’un échec de démarrage du serveur même si un autre serveur était en cours d’exécution. Cela corrige #3501. #12133 (alexey-milovidov).
- Correction d’un bug entraînant des métadonnées de table incorrectes dans ZooKeeper pour les tables ReplicatedVersionedCollapsingMergeTree. Corrige #12093. #12121 (alesapin).
- Évite l’exception “There is no query” pour les vues matérialisées avec des joins ou des subqueries attachées aux logs système (system.query_log, metric_log, etc.) ou à la table sous-jacente avec engine=Buffer. #12120 (filimonov).
- Correction de la gestion de la dépendance d’une table avec ENGINE=Dictionary vis-à-vis du dictionnaire. Cela corrige #10994. Cela corrige #10397. #12116 (Vitaly Baranov).
- Le format
Parquetfonctionne désormais correctement avec les typesLowCardinalityetLowCardinality(Nullable). Corrige #12086, #8406. #12108 (Nikolai Kochetov). - Correction d’un problème de performances pour les requêtes
SELECTavecUNION, dû à une limite incorrecte du nombre total de threads. Corrige #12030. #12103 (Nikolai Kochetov). - Correction d’un segfault avec les combinateurs
-StateResample. #12092 (Anton Popov). - Correction des métriques
result_rowsetresult_bytesvides danssystem.quey_logpour les requêtesSELECT. Corrige #11595. #12089 (Nikolai Kochetov). - Correction de la limitation inutile du nombre de threads pour les requêtes
SELECTdepuisVIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Correction d’un SIGSEGV dans StorageKafka lors d’un DROP TABLE. #12075 (Azat Khuzhin).
- Correction d’un crash possible lors de l’utilisation d’un type incorrect pour
PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov). - Correction de l’erreur
Cannot capture columnpour les fonctions d’ordre supérieur avec un argumentTuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov). - Correction de la vérification des contraintes lorsque la contrainte est une expression constante. Cela corrige #11360. #12042 (alexey-milovidov).
- Correction d’un résultat incorrect et d’un crash potentiel lors de l’appel de la fonction
ifavec des arguments de typeFixedStringde tailles différentes. Cela corrige #11362. #12021 (alexey-milovidov).
Amélioration
- Permet de définir le type et la variante de
JOINde manière plus standard :LEFT SEMI JOINau lieu deSEMI LEFT JOIN. Pour l’instant, les deux formes sont correctes. #12520 (Artem Zuikov). - lifetime_rows/lifetime_bytes pour le moteur Buffer. #12421 (Azat Khuzhin).
- Écrit le message détaillé de l’exception au client au lieu de « MySQL server has gone away ». #12383 (BohuTANG).
- Permet de modifier le jeu de caractères utilisé pour afficher les bordures des grilles. Les jeux de caractères disponibles sont les suivants : UTF-8, ASCII. Le paramètre
output_format_pretty_grid_charsetactive cette fonctionnalité. #12372 (Sabyanin Maxim). - Prise en charge de MySQL ‘SELECT DATABASE()’ #9336 2. Ajout d’un test d’intégration pour la requête de remplacement MySQL. #12314 (BohuTANG).
- Ajout de
KILL QUERY [connection_id]pour le client/driver MySQL afin d’annuler une requête longue, issue #12038. #12152 (BohuTANG). - Ajout de la prise en charge des substitutions
%g(année ISO sur deux chiffres) et%G(année ISO sur quatre chiffres) dans la fonctionformatDateTime. #12136 (vivarum). - Ajout de la colonne ‘type’ dans system.disks. #12115 (ianton-ru).
- Commande
REVOKEaméliorée : elle exige désormais l’option grant/admin uniquement pour l’accès qui sera révoqué. Par exemple, pour exécuterREVOKE ALL ON *.* FROM user1, il n’est désormais plus nécessaire de disposer de tous les droits d’accès accordés avec l’option grant. Ajout de la commandeREVOKE ALL FROM user1- elle révoque tous les rôles accordés àuser1. #12083 (Vitaly Baranov). - Ajout d’une priorité de replica pour load_balancing (pour une priorisation manuelle du load balancing). #11995 (Azat Khuzhin).
- Les paths dans les métadonnées S3 sont désormais relatifs, ce qui facilite la gestion des blobs S3. #11892 (Vladimir Chebotarev).
Amélioration des performances
- Amélioration des performances de
ORDER BYet deGROUP BYsur un préfixe de la clé de tri (activé avec le paramètreoptimize_aggregation_in_order, désactivé par défaut). #11696 (Anton Popov). - Suppression des fonctions injectives dans
uniq*()siset optimize_injective_functions_inside_uniq=1. #12337 (Ruslan Kamalov). - L’index n’était pas utilisé pour l’opérateur IN avec des littéraux, une régression des performances introduite vers la v19.3. Cela corrige #10574. #12062 (nvartolomei).
- Implémentation de téléversements en une seule partie pour DiskS3 (fonctionnalité expérimentale). #12026 (Vladimir Chebotarev).
Fonctionnalité expérimentale
- Ajout d’un nouveau format en mémoire pour les parts des tables de la famille
MergeTree, qui stocke les données en mémoire. Les parts sont écrites sur disque lors de la première fusion. Une part sera créée au format en mémoire si sa taille, en lignes ou en octets, est inférieure aux seuilsmin_rows_for_compact_partetmin_bytes_for_compact_part. Une prise en charge optionnelle du Write-Ahead-Log est également disponible ; elle est activée par défaut et contrôlée par le paramètrein_memory_parts_enable_wal. #10697 (Anton Popov).
amélioration de la compilation, des tests et du packaging
- Mise en œuvre d’un mode de fuzzing de query basé sur l’AST pour clickhouse-client. Voir ce label pour la liste des issues que nous avons récemment trouvées par fuzzing. La plupart ont été détectées par cet outil, et quelques-unes par SQLancer et
00746_sql_fuzzy.pl. #12111 (Alexander Kuzmenkov). - Ajout d’un nouveau type de tests basé sur le framework Testflows. #12090 (vzakaznikov).
- Ajout d’un test d’intégration HTTPS pour S3. #12412 (Pavel Kovalenko).
- Journalisation des messages de trap du sanitizer depuis un thread distinct. Cela évitera un possible interblocage avec le Thread sanitizer. #12313 (alexey-milovidov).
- Les tests functional et stress pourront désormais s’exécuter avec une ancienne version du script
clickhouse-test. #12287 (alesapin). - Suppression d’une création de fichier étrange pendant la compilation dans
orc. #12258 (Nikita Mikhaylov). - Déplacement des fichiers Docker Compose communs dans le conteneur Docker d’intégration. #12168 (Ilya Yatsishin).
- Correction des avertissements de CodeQL.
CodeQLest un autre analyzer statique que nous utiliserons avecclang-tidyetPVS-Studio, que nous utilisons déjà. #12138 (alexey-milovidov). - Corrections mineures de CMake pour la compilation UNBUNDLED. #12131 (Matwey V. Kornilov).
- Ajout d’une démonstration de l’image Docker minimale sans utiliser de distribution Linux. #12126 (alexey-milovidov).
- Mise à niveau des paquets système dans l’image Docker
clickhouse-server. #12124 (Ivan Blinkov). - Ajout du flag
UNBUNDLEDà la tablesystem.build_options. Déplacement des listes d’exclusion pourclickhouse-testvers le dépôt ClickHouse. #12107 (alesapin). - Vérification régulière par l’outil d’analyse de sécurité Anchore Container Analysis, qui recherche des CVE dans l’image Docker
clickhouse-server. Confirme également que leDockerfilepeut être compilé. S’exécute chaque jour surmasteret sur les pull requests visantDockerfile. #12102 (Ivan Blinkov). - Vérification quotidienne par l’outil d’analyse de sécurité GitHub CodeQL, qui recherche des CWE. #12101 (Ivan Blinkov).
- Installation de
ca-certificatesavant le premierapt-get updatedans le Dockerfile. #12095 (Ivan Blinkov).
Version 20.5 de ClickHouse
Version de ClickHouse v20.5.4.40-stable 2020-08-10
Correction de bugs
- Correction d’une index analysis erronée avec des fonctions. Cela pouvait conduire à l’élagage de mauvaises parts lors de la lecture de tables
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Suppression d’une limitation inutile du nombre de threads pour les requêtes SELECT depuis une réplique locale. #12840 (Nikolai Kochetov).
- Correction des performances avec les grands Tuples, interprétés comme des fonctions dans la section
IN. Cela concerne le cas où l’utilisateur écritWHERE x IN tuple(1, 2, ...)au lieu deWHERE x IN (1, 2, ...), pour une obscure raison. #12700 (Anton Popov). - Correction du suivi mémoire pour input_format_parallel_parsing (en rattachant le thread au groupe). #12672 (Azat Khuzhin).
- Correction de l’index bloom filter avec une expression constante. Cela corrige #10572. #12659 (Winter Zhang).
- Correction d’un
SIGSEGVdansStorageKafkalorsque le broker est indisponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin). - Ajout de la prise en charge de la fonction
ifavec des argumentsArray(UUID). Cela corrige #11066. #12648 (alexey-milovidov). - Correction de l’absence d’alias pour la fonction
any. #12593 (Anton Popov). - Correction d’une race condition dans les dictionnaires externes avec une disposition cache, pouvant entraîner un crash du serveur. #12566 (alesapin).
- Suppression des données des tables Distributed (blocs issus d’INSERT asynchrones) lors d’un DROP TABLE. #12556 (Azat Khuzhin).
- Correction d’un bug qui entraînait la corruption d’anciennes parts après une requête
ALTER DELETElorsqueenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Message d’exception amélioré pour la fonction
inavec un nombre d’arguments invalide. #12529 (Anton Popov). - Correction d’une race condition dans les tables live view, qui pouvait provoquer une duplication de données. #12519 (vzakaznikov).
- Correction d’un problème de performances lors de la lecture de parts compactes. #12492 (Anton Popov).
- Correction de la rétrocompatibilité du format binaire des valeurs
AggregateFunction(avg, ...). Cela corrige #12342. #12486 (alexey-milovidov). - Correction du blocage si
text_logest activé. #12452 (alexey-milovidov). - Correction d’un dépassement de capacité lorsqu’un LIMIT ou un OFFSET très grand est spécifié. Cela corrige #10470. Cela corrige #11372. #12427 (alexey-milovidov).
- Correction d’un segfault possible avec StorageMerge. Clôt #12054. #12401 (tavplubix).
- Annule la modification introduite dans #11079 pour résoudre #12098. #12397 (Mike).
- Évite une exception lorsqu’une constante négative ou à virgule flottante est utilisée dans une condition WHERE pour des tables indexées. Cela corrige #11905. #12384 (alexey-milovidov).
- Autorise CLEAR column même en présence d’expressions DEFAULT dépendantes. Cela corrige #12333. #12378 (alexey-milovidov).
- Correction de TOTALS/ROLLUP/CUBE pour les fonctions d’agrégation avec des arguments
-StateetNullable. Cela corrige #12163. #12376 (alexey-milovidov). - Correction d’un SIGSEGV s’il y a un message d’erreur au milieu du lot dans le moteur
Kafka. #12302 (Azat Khuzhin). - Correction du comportement lorsque le moteur
SummingMergeTreeadditionne des colonnes de la clé de partition. Ajout d’une exception en cas de définition explicite des colonnes à additionner qui recoupe les colonnes de la clé de partition. Cela corrige #7867. #12173 (Nikita Mikhaylov). - Correction de la transformation de la requête à envoyer à un SGBD externe (par ex. MySQL, ODBC) en présence d’alias. Cela corrige #12032. #12151 (alexey-milovidov).
- Correction d’un bug entraînant des métadonnées de table incorrectes dans ZooKeeper pour les tables ReplicatedVersionedCollapsingMergeTree. Corrige #12093. #12121 (alesapin).
- Correction de la limitation inutile du nombre de threads pour les requêtes SELECT sur
VIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Correction d’un crash dans JOIN avec le type LowCardinality et
join_algorithm=partial_merge. #12035 (Artem Zuikov). - Correction d’un résultat erroné pour
if()avec des valeurs NULL dans la condition. #11807 (Artem Zuikov).
Amélioration des performances
- L’index n’était pas utilisé pour l’opérateur IN avec des littéraux, ce qui entraînait une régression des performances apparue vers la v19.3. Corrige #10574. #12062 (nvartolomei).
amélioration de la compilation, des tests et du packaging
- Installez
ca-certificatesavant le premierapt-get updatedans le Dockerfile. #12095 (Ivan Blinkov).
version de ClickHouse v20.5.2.7-stable 2020-07-02
changement rétro-incompatible
- Renvoie un résultat non
Nullablepour COUNT(DISTINCT) et la famille de fonctions d’agrégationuniq. Si toutes les valeurs transmises sont NULL, renvoie zéro à la place. Cela améliore la compatibilité SQL. #11661 (alexey-milovidov). - Ajout d’une vérification pour le cas où un paramètre au niveau de l’utilisateur est spécifié au mauvais endroit. Les paramètres au niveau de l’utilisateur doivent être spécifiés dans
users.xml, dans la section<profile>du profil utilisateur concerné (ou dans<default>pour les paramètres par défaut). Le serveur ne démarrera pas et consignera un message d’exception dans le log. Cela corrige #9051. Si vous souhaitez ignorer cette vérification, vous pouvez soit déplacer les paramètres à l’emplacement approprié, soit ajouter<skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings>à config.xml. #11449 (alexey-milovidov). - Le paramètre
input_format_with_names_use_headerest activé par défaut. Cela affectera l’analyse des formats d’entrée-WithNameset-WithNamesAndTypes. #10937 (alexey-milovidov). - Suppression du paramètre
experimental_use_processors. Il est désormais activé par défaut. #10924 (Nikolai Kochetov). - Mise à jour de
zstdvers la version 1.4.4. Elle apporte quelques améliorations mineures des performances et du taux de compression. Si vous exécutez des répliques avec différentes versions de ClickHouse, vous pouvez voir des messages d’erreur explicitesData after merge is not byte-identical to data on another replicas.accompagnés d’une explication. Ces messages sont normaux et ne doivent pas vous inquiéter. Ce changement est rétrocompatible, mais nous l’indiquons ici dans le changelog au cas où vous vous interrogeriez sur ces messages. #10663 (alexey-milovidov). - Ajout d’une vérification des codecs incohérents et d’un paramètre
allow_suspicious_codecspour la contrôler. Cela clôt #4966. #10645 (alexey-milovidov). - Les valeurs par défaut de plusieurs paramètres Kafka changent. Voir #11388.
- Lors d’une mise à niveau depuis des versions antérieures à 20.5, si une mise à jour progressive est effectuée et que le cluster contient à la fois des versions 20.5 ou supérieures et des versions antérieures à 20.5, le redémarrage de nœuds ClickHouse exécutant une ancienne version en présence de versions plus récentes peut entraîner des erreurs
Part ... intersects previous part. Pour éviter cette erreur, installez d’abord les nouveaux paquets clickhouse-server sur tous les nœuds du cluster, puis effectuez les redémarrages (ainsi, lorsque clickhouse-server redémarrera, il démarrera avec la nouvelle version).
Nouvelle fonctionnalité
TTL DELETE WHEREetTTL GROUP BYpour l’agrégation automatique des données et le rollup dans les tables. #10537 (expl0si0nn).- Implémentation du protocole réseau PostgreSQL. #10242 (Movses).
- Ajout de tables système pour les utilisateurs, les rôles, les grants, les profils de paramètres, les quotas et les politiques de lignes ; ajout des commandes SHOW USER, SHOW [CURRENT|ENABLED] ROLES, SHOW SETTINGS PROFILES. #10387 (Vitaly Baranov).
- Prise en charge des écritures dans la table function ODBC #10554 (ageraab). #10901 (tavplubix).
- Ajout de métriques de performance des requêtes basées sur Linux
perf_events(ces métriques sont calculées à partir des compteurs matériels du CPU et des compteurs de l’OS). Cette fonctionnalité est optionnelle et nécessite queCAP_SYS_ADMINsoit défini sur le binaireclickhouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov). - Prise en charge désormais des modificateurs
NULLetNOT NULLpour les types de données dans la requêteCREATE. #11057 (Павел Потемкин). - Ajout du format d’entrée et de sortie
ArrowStream. #11088 (hcz). - Prise en charge de Cassandra comme source de dictionnaire externe. #4978 (favstovol).
- Ajout d’un nouveau layout
directqui charge toutes les données directement depuis la source pour chaque requête, sans les stocker ni les mettre en cache. #10622 (Artem Streltsov). - Ajout d’un nouveau layout
complex_key_directpour les dictionnaires, qui ne stocke rien localement pendant l’exécution des requêtes. #10850 (Artem Streltsov). - Ajout de la prise en charge de la syntaxe des variables globales de style MySQL (stub). Cela est nécessaire pour la compatibilité avec le protocole MySQL. #11832 (alexey-milovidov).
- Ajout de la coloration syntaxique dans
clickhouse-clientà l’aide dereplxx. #11422 (Tagir Kuskarov). - Ajout des fonctions
minMapetmaxMap. #11603 (Ildus Kurbangaliev). - Ajout de la table
system.asynchronous_metric_log, qui enregistre l’historique des métriques desystem.asynchronous_metrics. #11588 (Alexander Kuzmenkov). - Ajout des fonctions
extractAllGroupsHorizontal(haystack, re)etextractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov). - Ajout des requêtes SHOW CLUSTER(S). #11467 (hexiaoting).
- Ajout de la fonction
netlocpour extraire l’adresse réseau, similaire àurlparse(url),netlocen Python. #11356 (Guillaume Tassery). - Ajout de 2 colonnes virtuelles supplémentaires pour engine=Kafka afin d’accéder aux en-têtes des messages. #11283 (filimonov).
- Ajout de la colonne virtuelle
_timestamp_mspour le Kafka engine (le type estNullable(DateTime64(3))). #11260 (filimonov). - Ajout de la fonction
randomFixedString. #10866 (Andrei Nekrashevich). - Ajout de la fonction
fuzzBits, qui inverse aléatoirement des bits dans une chaîne avec une probabilité donnée. #11237 (Andrei Nekrashevich). - Autorise la comparaison de nombres avec une chaîne constante dans les opérateurs de comparaison, ainsi que dans les sections IN et VALUES. #11647 (alexey-milovidov).
- Ajout du mode d’équilibrage de charge
round_robin. #11645 (Azat Khuzhin). - Ajout du paramètre
cast_keep_nullable. S’il est défini,CAST(something_nullable AS Type)retourneNullable(Type). #11733 (Artem Zuikov). - Ajout de la colonne
positionà la tablesystem.columnset de la colonnecolumn_positionà la tablesystem.parts_columns. Elle contient la position ordinale d’une colonne dans une table, à partir de 1. Cela résout #7744. #11655 (alexey-milovidov). - Prise en charge de ON CLUSTER pour SYSTEM
{FLUSH DISTRIBUTED,STOP/START DISTRIBUTED SEND}. #11415 (Azat Khuzhin). - Ajout de la table system.distribution_queue. #11394 (Azat Khuzhin).
- Prise en charge de tous les paramètres de format dans Kafka, exposition de certains paramètres au niveau de la table et ajustement des valeurs par défaut pour de meilleures performances. #11388 (filimonov).
- Ajout de la fonction
port(pour extraire le port de l’URL). #11120 (Azat Khuzhin). - Les fonctions
dictGet*acceptent désormais les noms de table. #11050 (Vitaly Baranov). - L’outil
clickhouse-formatpeut désormais formater plusieurs requêtes lorsque l’argument-nest utilisé. #10852 (Darío). - Possibilité de configurer le proxy-resolver pour DiskS3. #10744 (Pavel Kovalenko).
- Faire en sorte que
pointInPolygonfonctionne avec un polygone non constant. PointInPolygon peut désormais prendre un Array(Array(Tuple(…, …))) comme second argument, c’est-à-dire un tableau de polygones et de trous. #10623 (Alexey Ilyukhov) #11421 (Alexey Ilyukhov). - Ajout de
move_ttl_infoàsystem.partsafin de permettre l’introspection de la fonctionnalité de déplacement TTL. #10591 (Vladimir Chebotarev). - Possibilité d’utiliser S3 via des proxys. #10576 (Pavel Kovalenko).
- Ajout des synonymes
NCHARetNVARCHARpour les types de données. #11025 (alexey-milovidov). - Résolution de #7224 : ajout des métriques
FailedQuery,FailedSelectQueryetFailedInsertQueryà la tablesystem.events. #11151 (Nikita Orlov). - Ajout de davantage de statistiques
jemallocàsystem.asynchronous_metrics, et garantie que leurs valeurs sont à jour. #11748 (Alexander Kuzmenkov). - Permet de spécifier des informations d’identification S3 par défaut et des en-têtes d’authentification personnalisés. #11134 (Grigory Pervakov).
- Ajout de nouvelles fonctions pour importer/exporter DateTime64 sous forme d’Int64 avec différentes précisions :
to-/fromUnixTimestamp64Milli/-Micro/-Nano. #10923 (Vasily Nemkov). - Permet de spécifier une URI
mongodb://pour les dictionnaires MongoDB. #10915 (Alexander Kuzmenkov). - Le mot-clé OFFSET peut désormais être utilisé sans clause LIMIT associée. #10802 (Guillaume Tassery).
- Ajout de la table
system.licenses. Cette table contient les licences des bibliothèques tierces situées dans le répertoirecontrib. Cela résout #2890. #10795 (alexey-milovidov). - Nouvelle fonction toStartOfSecond(DateTime64) -> DateTime64, qui met à zéro la partie sous-seconde d’une valeur DateTime64. #10722 (Vasily Nemkov).
- Ajout du nouveau format d’entrée
JSONAsString, qui accepte une séquence d’objets JSON séparés par des retours à la ligne, des espaces et/ou des virgules. #10607 (Kruglov Pavel). - Il est désormais possible de profiler la mémoire avec des niveaux de granularité plus fins que 4 MiB. Ajout d’un profiler mémoire par échantillonnage pour capturer des allocations/désallocations aléatoires. #10598 (alexey-milovidov).
SimpleAggregateFunctionprend désormais aussi en chargesumMap. #10000 (Ildus Kurbangaliev).- Prise en charge de
ALTER RENAME COLUMNdans le moteur de table Distributed. Suite de #10727. Corrige #10747. #10887 (alesapin).
correction de bugs
- Correction d’un rapport UBSan dans l’analyse de Decimal. Cela corrige #7540. #10512 (alexey-milovidov).
- Correction d’une exception potentielle en virgule flottante lors de l’analyse de DateTime64. Cela corrige #11374. #11875 (alexey-milovidov).
- Correction d’un crash rare provoqué par l’utilisation d’une colonne
Nullabledans une condition PREWHERE. #11895 #11608 #11869 (Nikolai Kochetov). arrayJoinn’est plus autorisé à l’intérieur des fonctions d’ordre supérieur. Cela entraînait une désynchronisation du protocol. Cela clôt #3933. #11846 (alexey-milovidov).- Correction d’un résultat erroné lors de la comparaison entre FixedString et une constante String. Cela corrige #11393. Ce bug est apparu dans la version 20.4. #11828 (alexey-milovidov).
- Correction d’un résultat erroné pour
ifavec des NULL dans la condition. #11807 (Artem Zuikov). - Correction de l’utilisation d’un nombre excessif de threads pour les requêtes. #11788 (Nikolai Kochetov).
- Correction de l’exception
Scalar does not existlors de l’utilisation deWITH <scalar subquery> ...dansSELECT ... FROM merge_tree_table ...#11621. #11767 (Amos Bird). - Correction du comportement inattendu de requêtes telles que
SELECT *, xyz.*, qui réussissaient alors qu’une erreur était attendue. #11753 (hexiaoting). - Désormais, les fetches répliqués seront annulés lors d’une modification des métadonnées. #11744 (alesapin).
- Analyse des métadonnées stockées dans ZooKeeper avant vérification de leur égalité. #11739 (Azat Khuzhin).
- Correction de LOGICAL_ERROR provoquée par une déduction erronée du type de littéraux complexes dans le format d’entrée Values. #11732 (tavplubix).
- Correction de
ORDER BY ... WITH FILLsur des colonnes constantes. #11697 (Anton Popov). - Correction d’une race condition très rare dans SYSTEM SYNC REPLICA. Si la table répliquée est créée et que, simultanément, depuis une connexion distincte, un autre client exécute la commande
SYSTEM SYNC REPLICAsur cette table (ce qui est peu probable, car cet autre client devrait savoir que la table a été créée), un déréférencement de pointeur nul peut se produire. #11691 (alexey-milovidov). - Utiliser des
timeoutappropriés lors de la communication avec le bridge XDBC. Récemment, les délais d’expiration n’étaient pas respectés lors de la vérification de la liveness du bridge et de la réception des métadonnées. #11690 (alexey-milovidov). - Corrige l’utilisation de
LIMIT n WITH TIESavec l’instructionORDER BYcontenant des alias. #11689 (Anton Popov). - Corrige un possible
Pipeline stuckpour les requêtes SELECT avecFINALen parallèle. Corrige #11636. #11682 (Nikolai Kochetov). - Corrige une erreur entraînant un état incorrect de
system.mutations. Il peut indiquer que la mutation entière est déjà terminée alors que le serveur a encore des tâchesMUTATE_PARTdans la file de réplication et tente de les exécuter. Cela corrige #11611. #11681 (alesapin). - Corrige la coloration syntaxique dans la requête CREATE USER. #11664 (alexey-milovidov).
- Ajoute la prise en charge des expressions régulières avec des indicateurs insensibles à la casse. Cela corrige #11101 et #11506. #11649 (alexey-milovidov).
- Supprime l’optimisation des requêtes de comptage triviales lorsqu’une sécurité au niveau des lignes est activée. Dans les versions précédentes, l’utilisateur obtenait le nombre total d’enregistrements d’une table au lieu du nombre filtré. Cela corrige #11352. #11644 (alexey-milovidov).
- Corrige les bloom filters pour String (indices d’élagage de données). #11638 (Azat Khuzhin).
- Sans l’option
-q, la base de données n’est pas créée au démarrage. #11604 (giordyb). - Corrige l’erreur
Block structure mismatchpour les requêtes avec échantillonnage lisant depuis la tableBuffer. #11602 (Nikolai Kochetov). - Corrige le code de sortie erroné de
clickhouse-clientlorsqueexception.code() % 256 == 0. #11601 (filimonov). - Corrige des race conditions lors de CREATE/DROP de différentes répliques de ReplicatedMergeTree. Continue de fonctionner si la table n’a pas été complètement supprimée de ZooKeeper ou n’a pas été créée avec succès. Cela corrige #11432. #11592 (alexey-milovidov).
- Corrige une erreur mineure dans le message de journal concernant “Mark cache size was lowered” au démarrage du serveur. Cela clôt #11399. #11589 (alexey-milovidov).
- Corrige l’erreur
Size of offsets does not match size of columnpour les requêtes avecPREWHERE column in (subquery)etARRAY JOIN. #11580 (Nikolai Kochetov). - Correction d’un segfault rare dans
SHOW CREATE TABLE. Corrige #11490. #11579 (tavplubix). - Toutes les requêtes d’une session HTTP avaient le même query_id. C’est corrigé. #11578 (tavplubix).
- Désormais, le conteneur Docker clickhouse-server privilégie IPv6 pour vérifier la disponibilité du serveur. #11550 (Ivan Starkov).
- Corrige l’erreur
Data compressed with different methods, qui peut se produire simin_bytes_to_use_direct_ioest activé, que PREWHERE est actif et que SAMPLE est utilisé ou qu’un grand nombre de threads est utilisé. Cela corrige #11539. #11540 (alexey-milovidov). - Corrige shard_num/replica_num pour
<node>(cassait use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - Corrige l’INSERT asynchrone dans Distributed avec prefer_localhost_replica=0 et sans internal_replication. #11527 (Azat Khuzhin).
- Corrige une fuite de mémoire lorsqu’une exception est levée au milieu d’une aggregation avec des fonctions
-State. Cela corrige #8995. #11496 (alexey-milovidov). - Corrige l’exception
Pipeline stuckpourINSERT SELECT FINAL, lorsqueSELECT(max_threads>1) a plusieurs streams mais queINSERTn’en a qu’un seul (max_insert_threads==0). #11455 (Azat Khuzhin). - Corrige un résultat erroné dans des requêtes comme
select count() from t, u. #11454 (Artem Zuikov). - Corrige la valeur renvoyée pour la taille compressée des codecs. #11448 (Nikolai Kochetov).
- Corrige un crash du serveur lorsqu’une colonne utilise un codec de compression avec des arguments non littéraux. Corrige #11365. #11431 (alesapin).
- Corrige une possible lecture de mémoire non initialisée lors de l’arrêt de MergeTree si la table n’a pas été créée correctement. #11420 (alexey-milovidov).
- Corrige un crash dans JOIN sur
LowCarinality(T)etNullable(T). #11380. #11414 (Artem Zuikov). - Corrige le code d’erreur pour une clé
USINGincorrecte. #11373. #11404 (Artem Zuikov). - Correction de
geohashesInBoxavec des arguments hors de la plage latitude/longitude. #11403 (Vasily Nemkov). - Messages d’erreur améliorés pour les fonctions
joinGet(). #11389 (Artem Zuikov). - Corrige une possible erreur
Pipeline stuckpour les requêtes avec tri externe et limite. Corrige #11359. #11366 (Nikolai Kochetov). - Supprime un verrou redondant lors de l’envoi des parts dans ReplicatedMergeTree. #11354 (alesapin).
- Corrige la prise en charge de
\G(sortie verticale) dans clickhouse-client en mode multiligne. Cela résout #9933. #11350 (alexey-milovidov). - Corrige un segfault potentiel lors de l’utilisation de la base de données
Lazy. #11348 (alexey-milovidov). - Corrige un plantage dans les SELECT directs sur le moteur de table
Join(sans JOIN) ainsi qu’une nullabilité incorrecte. #11340 (Artem Zuikov). - Corrige un plantage dans
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Les merges sont désormais arrêtés avant toute modification des métadonnées dans les requêtes
ALTER. #11335 (alesapin). - Rétablit l’écriture en parallèle dans
MATERIALIZED VIEWavec le paramètreparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Corrige
visitParamExtractRawlorsque le JSON extrait contient des chaînes avec des { ou [ non appariés. #11318 (Ewout). - Corrige une race condition très rare dans ThreadPool. #11314 (alexey-milovidov).
- Corrige une data race mineure dans
clickhouse-copier. Détectée par les tests d’intégration. #11313 (alexey-milovidov). - Corrige un problème potentiel de mémoire non initialisée lors d’une conversion. Exemple :
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Corrige le problème empêchant l’analyse des index de fonctionner lorsqu’une table a une colonne Array dans la clé primaire et qu’une requête filtre sur cette colonne avec les fonctions
emptyounotEmpty. Cela corrige #11286. #11303 (alexey-milovidov). - Correction d’un bug où l’estimation de la vitesse d’une requête pouvait être incorrecte et où la limite de
min_execution_speedpouvait ne pas fonctionner, ou fonctionner incorrectement, si la requête était bridée par les paramètresmax_network_bandwidth,max_execution_speedoupriority. La valeur par défaut detimeout_before_checking_execution_speeddevient non nulle, car sinon les paramètresmin_execution_speedetmax_execution_speedn’ont aucun effet. Cela corrige #11297. Cela corrige #5732. Cela corrige #6228. Amélioration de l’ergonomie : éviter la concaténation du message d’exception avec la barre de progression dansclickhouse-client. #11296 (alexey-milovidov). - Correction d’un crash lorsque
SET DEFAULT ROLEest appelé avec des arguments incorrects. Cela corrige #10586. #11278 (Vitaly Baranov). - Correction d’un crash lors de la lecture de données malformées au format
Protobuf. Cela corrige #5957, corrige #11203. #11258 (Vitaly Baranov). - Correction d’un bug où le dictionnaire
cachepouvait renvoyer la valeur par défaut au lieu de la valeur normale (lorsqu’il n’y avait que des clés expirées). Cela affecte uniquement les champs de type chaîne. #11233 (Nikita Mikhaylov). - Correction de l’erreur
Block structure mismatch in QueryPipelinelors de la lecture depuisVIEWavec des constantes dans la requête interne. Corrige #11181. #11205 (Nikolai Kochetov). - Correction de l’exception possible
Invalid status for associated output. #11200 (Nikolai Kochetov). - Désormais,
primary.idxsera vérifié s’il est défini dans la requêteCREATE. #11199 (alesapin). - Correction de l’erreur possible
Cannot capture columnpour les fonctions d’ordre supérieur avec un argument capturéArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Correction du globbing
S3, qui pouvait échouer en présence de plus de 1000 clés et avec certains backends. #11179 (Vladimir Chebotarev). - Si un index de saut de données dépendait de colonnes modifiées pendant une fusion en arrière-plan (pour SummingMergeTree, AggregatingMergeTree ainsi que pour TTL GROUP BY), il était calculé incorrectement. Ce problème est corrigé en déplaçant le calcul de l’index après la fusion, afin qu’il soit calculé sur les données fusionnées. #11162 (Azat Khuzhin).
- Correction du blocage qui se produisait parfois lors d’un DROP sur une table engine=Kafka (ou lors des redémarrages du serveur). #11145 (filimonov).
- Correction de la réservation excessive de threads pour les requêtes simples (optimisation visant à réduire le nombre de threads, partiellement cassée après des modifications du pipeline). #11114 (Azat Khuzhin).
- Suppression de la journalisation de la tâche de finalisation des mutations lorsqu’aucune finalisation n’a eu lieu. #11109 (alesapin).
- Correction d’un interblocage lors du démarrage du serveur après une mise à jour comportant des modifications de la structure des tables de log système. #11106 (alesapin).
- Correction d’une fuite de mémoire dans registerDiskS3. #11074 (Pavel Kovalenko).
- Correction de l’erreur
No such name in Block::erase()lorsque JOIN est utilisé avec PREWHERE ou lorsqueoptimize_move_to_prewheretransforme WHERE en PREWHERE. #11051 (Artem Zuikov). - Corrige une perte potentielle de données lors de l’arrêt d’une table utilisant le Kafka engine. #11048 (filimonov).
- Correction de bugs de résolution d’arguments dans parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
- Il est désormais possible d’effectuer
ADD/DROPetRENAMEsur une seule et même colonne dans une unique requêteALTER. Le message d’Exception pour l’utilisation simultanée deMODIFYetRENAMEa également été clarifié. Correction partielle de #10669. #11037 (alesapin). - Correction de l’analyse des URL S3. #11036 (Vladimir Chebotarev).
- Correction du suivi de la mémoire pour
GROUP BYà deux niveaux lorsqu’unLIMITest utilisé. #11022 (Azat Khuzhin). - Correction d’une très rare erreur potentielle de type use-after-free dans MergeTree si la table n’avait pas été créée correctement. #10986 (alexey-milovidov).
- Correction de la gestion des métadonnées (chemin relatif pour rename) et des données (chemin relatif pour le lien symbolique) pour la base de données Atomic. #10980 (Azat Khuzhin).
- Correction d’un crash du serveur lors de requêtes
ALTERetDROP DATABASEconcurrentes avec le database engineAtomic. #10968 (tavplubix). - Correction de la taille incorrecte des raw data dans la méthode getRawData(). #10964 (Igr).
- Correction de l’incompatibilité de l’aggregation à deux niveaux entre la version 20.1 et les versions antérieures. Cette incompatibilité se produit lorsque différentes versions de ClickHouse sont utilisées sur le nœud initiateur et sur les nœuds distants, que le résultat de GROUP BY est volumineux et que l’aggregation est effectuée sur un seul champ String. Cela entraîne plusieurs lignes non fusionnées pour une même clé dans le résultat. #10952 (alexey-milovidov).
- Évite l’envoi de fichiers partiellement écrits par le DistributedBlockOutputStream. #10940 (Azat Khuzhin).
- Correction d’un crash dans
SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov). - Correctif du blocage qui se produisait parfois lors du
DROPd’une table avecengine=Kafka(ou lors des redémarrages du serveur). #10910 (filimonov). - Il est désormais possible d’exécuter plusieurs
ALTER RENAME, commea TO b, c TO a. #10895 (alesapin). - Correction d’une condition de concurrence possible pouvant se produire lors de l’obtention du résultat d’un état de fonction d’agrégation depuis plusieurs threads pour la même colonne. Le seul cas (que j’ai trouvé) où cela peut se produire est lors de l’utilisation de la fonction
finalizeAggregationen lisant une table avec le moteurMemoryqui stocke l’état deAggregateFunctionpour la fonctionquanite*. #10890 (Nikolai Kochetov). - Correction de la rétrocompatibilité avec les tuples dans les tables Distributed. #10889 (Anton Popov).
- Correction d’un SIGSEGV dans StringHashTable (si une telle clé n’existe pas). #10870 (Azat Khuzhin).
- Correction des blocages de
WATCHaprès la suppression d’une tableLiveViewd’une base de données avec le moteurAtomic. #10859 (tavplubix). - Correction d’un bug dans
ReplicatedMergeTreequi pouvait bloquer certaines requêtesALTERouOPTIMIZEen attente d’une réplique après que celle-ci est devenue inactive. #10849 (tavplubix). - Désormais, les contraintes sont mises à jour si la colonne participant à l’expression
CONSTRAINTa été renommée. Corrige #10844. #10847 (alesapin). - Correction d’une possible lecture de mémoire non initialisée dans le dictionnaire
cache. #10834 (alexey-milovidov). - Correction de l’ordre des colonnes après Block::sortColumns() (avec également l’ajout d’un test montrant que cela affecte un cas d’usage réel : le moteur Buffer). #10826 (Azat Khuzhin).
- Correction d’un problème avec ODBC bridge lorsqu’aucun guillemet n’est demandé pour les identifiants. Cela corrige #7984. #10821 (alexey-milovidov).
- Correction d’un signalement UBSan et MSan dans DateLUT. #10798 (alexey-milovidov).
- Utilisation de
src_typepour assurer une conversion de type correcte dans les conditions de clé. Corrige #6287. #10791 (Andrew Onyshchuk). - Suppression des anciens patchs de libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 Cela permet de désactiver
-fno-omit-frame-pointerdans les compilationsclang, ce qui améliore les performances d’au moins 1 % en moyenne. #10761 (Amos Bird). - Correction d’
avgWeightedlors de l’utilisation d’un poids à virgule flottante sur plusieurs shards. #10758 (Baudouin Giard). - Corrige le comportement de
parallel_view_processing. Désormais, en cas d’exception, toutes les insertions dansMATERIALIZED VIEWdoivent tout de même se terminer. Corrige #10241. #10757 (Nikolai Kochetov). - Corrige les combinateurs -OrNull et -OrDefault lorsqu’ils sont combinés avec -State. #10741 (hcz).
- Corrige un crash dans
generateRandomavec les types imbriqués. Corrige #10583. #10734 (Nikolai Kochetov). - Corrige une corruption de données de la colonne clé
LowCardinality(FixedString)dansSummingMergeTree, qui pouvait se produire après une fusion. Corrige #10489. #10721 (Nikolai Kochetov). - Corrige l’utilisation de la clé primaire encapsulée dans une fonction avec le modificateur ‘FINAL’ et l’optimisation ‘ORDER BY’. #10715 (Anton Popov).
- Corrige un possible dépassement de tampon dans la fonction
h3EdgeAngle. #10711 (alexey-milovidov). - Corrige la disparition des totaux. Les totaux pouvaient être filtrés si la requête comportait une jointure ou une sous-requête avec une clause WHERE externe. Corrige #10674. #10698 (Nikolai Kochetov).
- Corrige l’atomicité de l’insertion HTTP. Cela corrige #9666. #10687 (Andrew Onyshchuk).
- Corrige les utilisations multiples de l’opérateur
INavec le même ensemble dans une même requête. #10686 (Anton Popov). - Corrige un bug qui bloquait les requêtes HTTP à la fermeture du client quand
readonly=2etcancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix). - Corrige l’ordre des paramètres dans le constructeur AggregateTransform. #10667 (palasonic1).
- Corrige l’absence d’exécution parallèle des requêtes distantes lorsque
distributed_aggregation_memory_efficientest activé. Corrige #10655. #10664 (Nikolai Kochetov). - Corrige un nombre potentiellement incorrect de lignes pour les requêtes avec
LIMIT. Corrige #10566, #10709. #10660 (Nikolai Kochetov). - Correction d’un bug qui bloquait les
ALTERconcurrents lorsqu’une table comportait beaucoup de parts. #10659 (alesapin). - Correction d’un déréférencement de pointeur nul dans StorageBuffer si le server était arrêté avant le démarrage de la table. #10641 (alexey-milovidov).
- Correction de l’optimisation des predicates pour les distributed queries (
enable_optimize_predicate_expression=1) dans les queries comportant une sectionHAVING(c’est-à-dire lorsqu’un filtrage sur le server initiator est nécessaire), en préservant l’ordre des expressions (ce qui suffit à corriger le problème), et forçage de l’utilisation par l’agrégateur des column names plutôt que des indexes. Corrige : #10613, #11413. #10621 (Azat Khuzhin). - Correction de optimize_skip_unused_shards avec LowCardinality. #10611 (Azat Khuzhin).
- Correction d’un segfault dans StorageBuffer lorsqu’une exception survient au démarrage du server. Corrige #10550. #10609 (tavplubix).
- Avec la query
SYSTEM DROP DNS CACHE, suppression également des caches utilisés pour vérifier si l’utilisateur est autorisé à se connecter depuis certaines adresses IP. #10608 (tavplubix). - Correction de résultats scalar incorrects à l’intérieur de la query interne d’une
MATERIALIZED VIEWdans le cas où cette query contenait une table dépendante. #10603 (Nikolai Kochetov). - Correction de la gestion de la variable de condition pour les mutations synchrones. Dans certains cas, les signaux destinés à cette variable de condition pouvaient être perdus. #10588 (Vladimir Chebotarev).
- Correction d’un crash possible lorsque
createDictionary()est appelé avant la fin deloadStoredObject(). #10587 (Vitaly Baranov). - Correction de l’error
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang). - Correction de
SELECTsur une columnALIASdont le type de l’expression par défaut diffère du column type. #10563 (Azat Khuzhin). - Implémentation de la comparaison entre les valeurs DateTime64 et String (comme pour DateTime). #10560 (Vasily Nemkov).
- Correction d’une corruption d’index pouvant survenir dans certains cas après la fusion de compact parts dans une autre compact part. #10531 (Anton Popov).
- Désactivation par défaut de l’optimisation GROUP BY sharding_key (
optimize_distributed_group_by_sharding_keyavait été introduite puis désactivée par défaut en raison de la complexité de l’analyse de sharding_key ; un exemple simple estifdans la clé de partitionnement), et correction pour WITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin). - Correction : #10263 (après cette PR, l’envoi distribué via INSERT était reporté à chaque INSERT) Correction : #8756 (cette PR casse les envois distribués lorsque toutes les conditions suivantes sont réunies (configuration peu probable pour l’instant, je suppose) :
internal_replication == false, plusieurs shards locaux (active le code de hardlinking) etdistributed_storage_policy(fait échouerlink(2)surEXDEV)). #10486 (Azat Khuzhin). - Correction d’une erreur liée à la limite “max_rows_to_sort”. #10268 (alexey-milovidov).
- Le dictionnaire n’est récupéré et les droits d’accès ne sont vérifiés qu’une seule fois pour chaque appel de fonction lisant des dictionnaires externes. #10928 (Vitaly Baranov).
Amélioration
- Appliquer
TTLaux anciennes données après la requêteALTER MODIFY TTL. Ce comportement est contrôlé par le paramètrematerialize_ttl_after_modify, activé par défaut. #11042 (Anton Popov). - Lors de l’analyse des séquences d’échappement de type C avec backslash dans les littéraux de chaîne, VALUES et divers formats texte (il s’agit d’une extension du standard SQL courante dans ClickHouse et MySQL), conserver le backslash si une séquence d’échappement inconnue est rencontrée (par exemple
\%ou\w) ; cela rend l’utilisation des expressions régulièresLIKEetmatchplus pratique (il suffit d’écrirename LIKE 'used\_cars'au lieu dename LIKE 'used\\_cars') tout en améliorant la compatibilité. Cela corrige #10922. #11208 (alexey-milovidov). - Lors de la lecture d’une valeur Decimal, tronquer les chiffres supplémentaires après la virgule. Ce comportement est plus compatible avec MySQL et PostgreSQL. Cela corrige #10202. #11831 (alexey-milovidov).
- Autoriser DROP d’une table répliquée si les métadonnées dans ZooKeeper ont déjà été supprimées et n’existent plus (c’est également le cas lors de l’utilisation de TestKeeper pour les tests après le redémarrage du serveur). Autoriser RENAME d’une table répliquée même en cas d’erreur de communication avec ZooKeeper. Cela corrige #10720. #11652 (alexey-milovidov).
- Légère amélioration du diagnostic lors de la lecture d’une valeur Decimal depuis une chaîne. Cela clôt #10202. #11829 (alexey-milovidov).
- Corriger l’appel à sleep dans le gestionnaire de signaux. La durée de mise en veille était plus courte que prévu. #11825 (alexey-milovidov).
- (Linux uniquement) Les métriques de performance liées à l’OS (pour CPU et I/O) fonctionneront même sans la capability
CAP_NET_ADMIN. #10544 (Alexander Kazakov). - Ajout de
hostnamecomme alias de la fonctionhostName. Cette fonctionnalité a été suggérée par Victor Tarnavskiy de Yandex.Metrica. #11821 (alexey-milovidov). - Ajout de la prise en charge du
DDLdistribué (update/delete/drop partition) sur des clusters en réplication croisée. #11703 (Nikita Mikhaylov). - Émettre un avertissement au lieu d’une erreur dans le server log au démarrage si l’une des adresses d’écoute ne peut pas être utilisée (par exemple, si IPv6 n’est pas disponible dans Docker). Notez que si le serveur ne parvient à écouter sur aucune des adresses listées, il refusera de démarrer comme auparavant. Cela corrige #4406. #11687 (alexey-milovidov).
- Création du default user et de la database au démarrage de la Docker image. #10637 (Paramtamtam).
- Lorsqu’une requête multiligne est affichée dans le journal du serveur, les lignes sont concaténées. Cela fonctionne désormais correctement dans le cas des littéraux de chaîne multilignes, des identifiants et des commentaires sur une seule ligne. Cela corrige #3853. #11686 (alexey-milovidov).
- Plusieurs noms sont désormais autorisés dans les commandes : CREATE USER, CREATE ROLE, ALTER USER, SHOW CREATE USER, SHOW GRANTS, etc. #11670 (Vitaly Baranov).
- Ajout de la prise en charge du distributed DDL (
UPDATE/DELETE/DROP PARTITION) sur les clusters à réplication croisée. #11508 (frank lee). - Efface le mot de passe de la ligne de commande dans
clickhouse-clientetclickhouse-benchmarksi l’utilisateur l’a spécifié avec une valeur explicite. Cela empêche l’exposition du mot de passe viapset des outils similaires. #11665 (alexey-milovidov). - N’utilise pas les informations de débogage du fichier ELF si elles ne correspondent pas au binaire en cours d’exécution. Cela est nécessaire pour éviter l’affichage de noms de fonctions et d’emplacements source erronés dans les stack traces. Cela corrige #7514. #11657 (alexey-milovidov).
- Renvoie NULL/zéro lorsque la valeur n’est pas entièrement analysée dans les fonctions parseDateTimeBestEffortOrNull/Zero. Cela corrige #7876. #11653 (alexey-milovidov).
- Ignore les paramètres vides dans l’URL demandée. Ils peuvent apparaître lorsque vous écrivez
http://localhost:8123/?&a=bouhttp://localhost:8123/?a=b&&c=d. Cela clôt #10749. #11651 (alexey-milovidov). - Autorise l’utilisation de
groupArrayArrayetgroupUniqArrayArraycommeSimpleAggregateFunction. #11650 (Volodymyr Kuznetsov). - Autorise la comparaison avec des chaînes constantes via des conversions implicites lors de l’analyse des conditions d’index sur d’autres types. Cela peut clôturer #11630. #11648 (alexey-milovidov).
- https://github.com/ClickHouse/ClickHouse/pull/7572#issuecomment-642815377 Ajout de la prise en charge des HTTPHandlers par défaut de la config. #11628 (Winter Zhang).
- Permet à davantage de formats d’entrée de fonctionner avec le Kafka engine. Corrige le problème de flushes prématurés. Corrige le problème de performances lorsque
kafka_num_consumersest supérieur au nombre de partitions dans le topic. #11599 (filimonov). - Améliore la logique de
multiple_joins_rewriter_version=2. Corrige l’erreur de colonnes inconnues pour les alias lambda. #11587 (Artem Zuikov). - Message d’exception amélioré lorsqu’il est impossible d’analyser la liste de déclaration des colonnes. Cela clôt #10403. #11537 (alexey-milovidov).
- Amélioration de la logique
enable_optimize_predicate_expression=1pour VIEW. #11513 (Artem Zuikov). - Ajout de la prise en charge de PREWHERE dans les tables live view. #11495 (vzakaznikov).
- Mise à jour automatique du cache DNS, utilisé pour vérifier si un utilisateur est autorisé à se connecter depuis une adresse donnée. #11487 (tavplubix).
- OPTIMIZE FINAL forcera la fusion même si des merges concurrentes sont en cours. Cela corrige #11309 et #11322. #11346 (alexey-milovidov).
- Suppression de l’affichage des requêtes annulées dans clickhouse-client. Dans les versions précédentes, le résultat pouvait continuer à s’afficher dans le terminal même après avoir appuyé sur Ctrl+C pour annuler la requête. Cela corrige #9473. #11342 (alexey-milovidov).
- Désormais, le fichier d’historique est mis à jour après chaque requête et il n’y a plus de race condition lorsque plusieurs clients utilisent le même fichier d’historique. Cela corrige #9897. #11453 (Tagir Kuskarov).
- Messages de log améliorés lors du rechargement de la configuration. #11341 (alexey-milovidov).
- Suppression, dans certains cas, des espaces de fin dans les requêtes formatées par
clickhouse-clientouclickhouse-format. #11325 (alexey-milovidov). - Ajout du paramètre “output_format_pretty_max_value_width”. Si la valeur est trop longue, elle sera tronquée afin d’éviter l’affichage de valeurs trop volumineuses dans le terminal. Cela corrige #11140. #11324 (alexey-milovidov).
- Message d’exception amélioré en cas d’insuffisance de mappages mémoire. Cela corrige #11027. #11316 (alexey-milovidov).
- Prise en charge de (U)Int8, (U)Int16 et Date dans ASOF JOIN. #11301 (Artem Zuikov).
- Prise en charge du paramètre kafka_client_id pour les tables Kafka. Cela modifie également la valeur
client.idpar défaut utilisée par ClickHouse pour communiquer avec Kafka, afin qu’elle soit plus explicite et plus exploitable. #11252 (filimonov). - Conserve la valeur de la Metric
DistributedFilesToInserten cas d’exception. Dans les versions précédentes, cette valeur était définie lorsque certains fichiers allaient être envoyés, mais retombait à zéro si une exception survenait alors que des fichiers restaient en attente. Désormais, elle correspond au nombre de fichiers en attente dans le système de fichiers. #11220 (alexey-milovidov). - Ajout de la prise en charge des noms de types de données composés de plusieurs mots (comme
DOUBLE PRECISIONetCHAR VARYING) pour une meilleure compatibilité SQL. #11214 (Павел Потемкин). - Ajout de synonymes pour certains types de données. #10856 (Павел Потемкин).
- Le query log est désormais activé par défaut. #11184 (Ivan Blinkov).
- Affiche le type d’authentification dans la table system.users et lors de l’exécution de la requête SHOW CREATE USER. #11080 (Vitaly Baranov).
- Supprime les données lors d’un
DROP DATABASEexplicite pour le database engineMemory. Corrige #10557. #11021 (tavplubix). - Définit des noms de thread pour les threads internes de la bibliothèque rdkafka. Rend les logs de rdkafka disponibles dans les server logs. #10983 (Azat Khuzhin).
- Prise en charge des espaces Unicode dans les requêtes. Cela aide lorsque des requêtes sont copiées-collées depuis Word ou une page web. Cela corrige #10896. #10903 (alexey-milovidov).
- Autorise les types UInt de grande taille comme index dans la fonction
tupleElement. #10874 (hcz). - Respecte prefer_localhost_replica/load_balancing pour INSERT dans Distributed. #10867 (Azat Khuzhin).
- Introduit les paramètres
min_insert_block_size_rows_for_materialized_views,min_insert_block_size_bytes_for_materialized_views. Ces paramètres sont similaires àmin_insert_block_size_rowsetmin_insert_block_size_bytes, mais s’appliquent uniquement aux blocks insérés dansMATERIALIZED VIEW. Cela aide à contrôler le squashing des blocks lors de leur envoi vers les MV et à éviter une utilisation excessive de la mémoire. #10858 (Azat Khuzhin). - Élimine l’exception de la queue replicated pendant l’arrêt du serveur. Corrige #10819. #10841 (alesapin).
- Garantit que
varSampetvarPopne peuvent pas renvoyer de résultats négatifs en raison d’erreurs numériques, et questddevSampetstddevPopne peuvent pas être calculés à partir d’une variance négative. Cela corrige #10532. #10829 (alexey-milovidov). - Amélioration du message d’exception DNS. Cela corrige #10813. #10828 (alexey-milovidov).
- Modifie le code de réponse HTTP en cas de certaines erreurs de parsing pour renvoyer 400 Bad Request. Cela corrige #10636. #10640 (alexey-milovidov).
- Afficher un message si clickhouse-client est plus récent que clickhouse-server. #10627 (alexey-milovidov).
- Ajout de la prise en charge de la requête
INSERT INTO [db.]table WATCH. #10498 (vzakaznikov). - Ajout de la possibilité de transmettre quota_key à clickhouse-client. Cela résout #10227. #10270 (alexey-milovidov).
Amélioration des performances
- Autoriser plusieurs répliques à attribuer en parallèle les fusions, les mutations, la suppression de partitions, les déplacements et les remplacements. Cela corrige #10367. #11639 (alexey-milovidov) #11795 (alexey-milovidov).
- Optimisation de GROUP BY par rapport à la clé de tri de la table, activée avec le paramètre
optimize_aggregation_in_order. #9113 (dimarub2000). - Les SELECT avec FINAL sont exécutés en parallèle. Ajout du paramètre
max_final_threadspour limiter le nombre de threads utilisés. #10463 (Nikolai Kochetov). - Amélioration des performances des requêtes INSERT via
INSERT SELECTou des INSERT avec clickhouse-client lorsque de petits blocs sont générés (cas typique avec le parsing en parallèle). Cela corrige #11275. Correction du problème où les CONSTRAINTs ne fonctionnaient pas pour les champs DEFAULT. Cela corrige #11273. Correction du problème où les CONSTRAINTS étaient ignorées pour les tables TEMPORARY. Cela corrige #11274. #11276 (alexey-milovidov). - Optimisation qui élimine les agrégateurs min/max/any des clés GROUP BY dans la section SELECT, activée avec le paramètre
optimize_aggregators_of_group_by_keys. #11667 (xPoSx). #11806 (Azat Khuzhin). - Nouvelle optimisation qui sort toutes les opérations de la fonction
any, activée avecoptimize_move_functions_out_of_any#11529 (Ruslan). - Amélioration des performances de
clickhouse-clienten mode interactif lors de l’utilisation des formats Pretty. Dans les versions précédentes, un temps important pouvait être consacré au calcul de la largeur visible d’une chaîne UTF-8. Cela corrige #11323. #11323 (alexey-milovidov). - Amélioration des performances des requêtes avec
ORDER BYet unLIMITfaible (inférieur àmax_block_size). #11171 (Albert Kidrachev). - Ajout de la détection du CPU à l’exécution pour sélectionner et utiliser la meilleure implémentation de fonction. Ajout de la prise en charge de la génération de code pour plusieurs cibles. Cela corrige #1017. #10058 (DimasKovas).
- Activer
mlockdu binaire clickhouse par défaut. Cela empêchera l’exécutable clickhouse d’être paginé sous une forte charge d’IO. #11139 (alexey-milovidov). - Permettre aux requêtes avec la fonction d’agrégation
sumet sans clés GROUP BY de s’exécuter plusieurs fois plus vite. #10992 (alexey-milovidov). - Amélioration du tri radix (utilisé dans
ORDER BYavec des clés simples) par suppression de certains déplacements de données redondants. #10981 (Arslan Gumerov). - Trie des parts plus volumineuses de la table de gauche dans MergeJoin. Met en mémoire tampon les blocs de gauche. Ajoute le paramètre
partial_merge_join_left_table_buffer_bytespour gérer la taille des tampons des blocs de gauche. #10601 (Artem Zuikov). - Supprime les doublons de ORDER BY et DISTINCT dans les sous-requêtes ; cette optimisation est activée avec
optimize_duplicate_order_by_and_distinct#10067 (Mikhail Malafeev). - Cette fonctionnalité élimine, dans la section GROUP BY, les fonctions appliquées à d’autres clés ; elle est activée avec
optimize_group_by_function_keys#10051 (xPoSx). - Nouvelle optimisation qui sort les opérations arithmétiques des fonctions d’agrégation, activée avec
optimize_arithmetic_operations_in_aggregate_functions#10047 (Ruslan). - Utilise un client HTTP pour S3 basé sur Poco au lieu de curl. Cela améliorera les performances et réduira l’utilisation mémoire du stockage S3 et des fonctions de table. #11230 (Pavel Kovalenko).
- Corrige un problème de performances de Kafka lié aux replanifications basées sur des limites, qui étaient toujours appliquées. #11149 (filimonov).
- Active percpu_arena:percpu pour jemalloc (cela réduira la fragmentation mémoire due au pool de threads). #11084 (Azat Khuzhin).
- Optimise l’utilisation mémoire lors de la lecture d’une réponse d’un client HTTP S3. #11561 (Pavel Kovalenko).
- Ajuste les paramètres Kafka par défaut pour améliorer les performances. #11388 (filimonov).
Fonctionnalité expérimentale
- Ajout des types de données
Point(Tuple(Float64, Float64)) etPolygon(Array(Array(Tuple(Float64, Float64))). #10678 (Alexey Ilyukhov). - Ajout d’une fonction
hasSubstrpermettant de rechercher des sous-séquences dans des tableaux. Remarque : cette fonction sera probablement renommée sans préavis. #11071 (Ryad Zenine). - Ajout de la prise en charge d’OpenCL et de l’algorithme de tri bitonique, qui peuvent être utilisés pour trier des données de type entier dans une seule colonne. Doit être compilé avec l’option
-DENABLE_OPENCL=1. Pour utiliser l’algorithme de tri bitonique à la place des autres, vous devez définir l’optionspecial_sortsurbitonic_sortet vous assurer qu’OpenCL est disponible. Cette fonctionnalité n’améliore ni les performances ni quoi que ce soit d’autre ; elle est fournie uniquement à titre d’exemple et de démonstration. Elle sera probablement supprimée dans un avenir proche en l’absence de développements supplémentaires dans cette direction. #10232 (Ri).
Amélioration de la compilation, des tests et du packaging
- Activer clang-tidy pour les programmes et les utilitaires. #10991 (alexey-milovidov).
- Supprimer la dépendance à
tzdata: ne pas échouer si le répertoire/usr/share/zoneinfon’existe pas. Notez que tous les fuseaux horaires fonctionnent dans ClickHouse même si tzdata n’est pas installé sur le système. #11827 (alexey-milovidov). - Ajout de tests de charge MSan et UBSan. Notez que nous avons déjà MSan et UBSan pour les tests fonctionnels, et que le test “stress” est un autre type de test. #10871 (alexey-milovidov).
- Afficher l’identifiant de build du compilateur dans les messages de crash. Cela permettra de mieux identifier le binaire qui a planté. Ajout de la nouvelle fonction
buildId. #11824 (alexey-milovidov). - Ajout d’un test pour garantir que les mutations continuent de fonctionner après une requête FREEZE. #11820 (alexey-milovidov).
- Ne pas autoriser les tests contenant la sous-chaîne “fail” dans leur nom, car cela rend la consultation des résultats de test dans le navigateur moins pratique lorsque vous tapez Ctrl+F et recherchez “fail”. #11817 (alexey-milovidov).
- Supprimer les imports inutilisés de HTTPHandlerFactory. #11660 (Bharat Nallan).
- Ajout d’un échantillonnage aléatoire des instances où copier est exécuté. Cela est nécessaire pour éviter l’erreur
Too many simultaneous queries. Le délai d’expiration a également été augmenté et la probabilité de défaillance réduite. #11573 (Nikita Mikhaylov). - Corriger un include manquant. #11525 (Matwey V. Kornilov).
- Accélérer la compilation en supprimant les anciens programmes d’exemple. Un test fonctionnel orphelin a également été trouvé. #11486 (alexey-milovidov).
- Augmenter la taille de ccache pour les builds dans la CI. #11450 (alesapin).
- Ne conserver que unit_tests_dbms dans le build deb. #11429 (Ilya Yatsishin).
- Mettre à jour librdkafka vers la version 1.4.2. #11256 (filimonov).
- Refactoriser les fichiers de build CMake. #11390 (Ivan).
- Corriger plusieurs tests d’intégration instables. #11355 (alesapin).
- Ajouter la prise en charge de l’exécution des tests unitaires avec UBSan. #11345 (alexey-milovidov).
- Supprimer le délai d’expiration redondant du test d’intégration
test_insertion_sync_fails_with_timeout. #11343 (alesapin). - Améliore la détection des requêtes bloquées dans clickhouse-test. #11321 (alexey-milovidov).
- Émet un avertissement si le serveur a été compilé en mode debug ou avec des sanitizers. #11304 (alexey-milovidov).
- Désormais, clickhouse-test vérifie que le serveur est bien en vie avant d’exécuter les tests. #11285 (alesapin).
- Corrige le test potentiellement instable
00731_long_merge_tree_select_opened_files.sh. Il échoue rarement, mais nous avons découvert une possible race condition dans ce test en expérimentant avec ThreadFuzzer : #9814 Voir le lien pour un exemple. #11270 (alexey-milovidov). - Répète le test en CI si l’appel à
curla expiré. Cela peut se produire à cause de blocages système de plus de 10 secondes, typiques de notre infrastructure CI. Cela corrige #11267. #11268 (alexey-milovidov). - Ajoute un test pour le moteur de table Join de @donmikel. Cela clôt #9158. #11265 (alexey-milovidov).
- Corrige plusieurs erreurs mineures dans les tests unitaires. #11262 (alesapin).
- Désormais, certaines parties de la commande de l’éditeur de liens pour la bibliothèque
cctzne seront plus mélangées avec d’autres bibliothèques. #11213 (alesapin). - Scinde /programs/server en un véritable programme et une bibliothèque. #11186 (Ivan).
- Améliore les scripts de build pour protobuf & gRPC. #11172 (Vitaly Baranov).
- Active le test de performance qui ne fonctionnait pas. #11158 (alexey-milovidov).
- Crée le S3 bucket racine pour les tests avant le démarrage de toute instance CH. #11142 (Pavel Kovalenko).
- Ajoute un test de performance pour les polygones non constants. #11141 (alexey-milovidov).
- Corrige le test
00979_live_view_watch_continuous_aggregates. #11024 (vzakaznikov). - Ajoute la possibilité d’exécuter ZooKeeper dans les tests d’intégration sur tmpfs. #11002 (alesapin).
- Attend ODBC-bridge avec un backoff exponentiel. Le temps d’attente précédent de 200 ms n’était pas suffisant dans notre environnement CI. #10990 (alexey-milovidov).
- Correction d’un test non déterministe. #10989 (alexey-milovidov).
- Ajout d’un test pour des données externes vides. #10926 (alexey-milovidov).
- La base de données est recréée pour chaque test. Cela améliore l’isolation des tests. #10902 (alexey-milovidov).
- Ajout de davantage d’assertions dans le code des colonnes. #10833 (alexey-milovidov).
- Meilleure prise en charge des sanitizers. Affichage des informations sur query_id dans le message d’échec du sanitizer. #10832 (alexey-milovidov).
- Correction d’une race condition évidente dans la vérification “Split build smoke test”. #10820 (alexey-milovidov).
- Correction d’un faux rapport MSan dans MergeTreeIndexFullText. Le problème est apparu pour la première fois dans #9968. #10801 (alexey-milovidov).
- Ajout d’une suppression MSan pour la bibliothèque MariaDB Client. #10800 (alexey-milovidov).
- La cible make GRPC ne trouvait pas les fichiers protobuf ; le makefile a été modifié pour ajouter le bon lien. #10794 (mnkonkova).
- Activation d’avertissements supplémentaires (
-Weverything) pour base, utils et programs. À noter que c’est déjà le cas pour la majeure partie du code. #10779 (alexey-milovidov). - Les suppressions d’avertissements provenant des bibliothèques ont été déclarées par erreur comme publiques dans #10396. #10776 (alexey-milovidov).
- Restauration d’un correctif supprimé accidentellement dans #10396. #10774 (alexey-milovidov).
- Correction d’erreurs dans les tests de performance, partie 2. #10773 (alexey-milovidov).
- Correction d’erreurs dans les tests de performance. #10766 (alexey-milovidov).
- Mise à jour des cross-builds pour utiliser le compilateur clang-10. #10724 (Ivan).
- Mise à jour des instructions d’installation des paquets RPM. Cela a été suggéré par Denis (identifiant TG @ldviolet) et mis en œuvre par Arkady Shejn. #10707 (alexey-milovidov).
- Tentative de correction du test
tests/queries/0_stateless/01246_insert_into_watch_live_view.py. #10670 (vzakaznikov). - Correction et réactivation du test 00979_live_view_watch_continuous_aggregates.py. #10658 (vzakaznikov).
- Correction d’un OOM dans le test de stress ASan. #10646 (alexey-milovidov).
- Correction d’un signalement UBSan (ajout de zéro à nullptr) dans HashTable, apparu après la migration vers clang-10. #10638 (alexey-milovidov).
- Suppression de l’appel externe à l’éditeur de liens
ld(bfd) lors du traitement de tzdata à la compilation. #10634 (alesapin). - Possibilité d’utiliser
lldpour lier des blobs (ressources). #10632 (alexey-milovidov). - Correction d’un signalement UBSan dans la bibliothèque
LZ4. #10631 (alexey-milovidov). Voir aussi https://github.com/lz4/lz4/issues/857 - Mise à jour de LZ4 vers la dernière branche de développement. #10630 (alexey-milovidov).
- Ajout d’un fichier auto-généré lisible par une machine contenant la liste des versions stables. #10628 (alexey-milovidov).
- Correction de la vérification de version de
capnprotopourcapnp::UnalignedFlatArrayMessageReader. #10618 (Matwey V. Kornilov). - Réduction de la consommation mémoire dans les tests. #10617 (alexey-milovidov).
- Correction des timeouts codés en dur dans les nouveaux tests de live view. #10604 (vzakaznikov).
- Augmentation du timeout lors de l’ouverture d’un client dans tests/queries/0_stateless/helpers/client.py. #10599 (vzakaznikov).
- Activation de ThinLTO pour les compilations avec clang, dans la continuité de #10435. #10585 (Amos Bird).
- Ajout de fuzzers et préparation de l’intégration à oss-fuzz. #10546 (kyprizel).
- Correction de la compilation sur FreeBSD. #10150 (Ivan).
- Ajout d’une nouvelle compilation pour les tests de requêtes utilisant le framework pytest. #10039 (Ivan).
Version de ClickHouse v20.4
version de ClickHouse v20.4.8.99-stable 2020-08-10
correction de bugs
- Correction d’une erreur dans la fonction
parseDateTimeBestEffortlorsqu’un timestamp Unix était passé en argument. Cela corrige #13362. #13441 (alexey-milovidov). - Correction de performances potentiellement faibles et d’un résultat légèrement incorrect pour
uniqExact,topK,sumDistinctet d’autres fonctions d’agrégation similaires appelées sur des types Float avec des valeurs NaN. Cela déclenchait également une assertion dans une version de débogage. Cela corrige #12491. #13254 (alexey-milovidov). - Correction de la fonction
ifavec unconstexprNullable comme condition, lorsque celui-ci n’est pas un littéral NULL. Corrige #12463. #13226 (alexey-milovidov). - Correction d’une assertion dans la fonction
arrayElementlorsque les éléments du tableau sont Nullable et que l’indice du tableau est lui aussi Nullable. Cela corrige #12172. #13224 (alexey-milovidov). - Correction d’une analyse d’index erronée avec des fonctions. Cela pouvait conduire à élaguer les mauvaises parts lors de la lecture de tables
MergeTree. Corrige #13060. Corrige #12406. #13081 (Anton Popov). - Correction d’une limitation inutile du nombre de threads pour les requêtes SELECT depuis une replica locale. #12840 (Nikolai Kochetov).
- Correction d’une ligne d’overflow supplémentaire possible dans les données, qui pouvait apparaître avec les requêtes
WITH TOTALS. #12747 (Nikolai Kochetov). - Correction des performances avec de grands tuples, interprétés comme des fonctions dans la section
IN. Il s’agit du cas où l’utilisateur écritWHERE x IN tuple(1, 2, ...)au lieu deWHERE x IN (1, 2, ...), pour une obscure raison. #12700 (Anton Popov). - Correction du suivi mémoire pour
input_format_parallel_parsing(en attachant le thread au groupe). #12672 (Azat Khuzhin). - Correction de #12293 pour autoriser le push predicate lorsqu’une sous-requête contient une clause WITH. #12663 (Winter Zhang).
- Correction de #10572 pour l’index bloom filter avec une expression constante. #12659 (Winter Zhang).
- Correction d’un
SIGSEGVdansStorageKafkalorsque le broker est indisponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin). - Ajout de la prise en charge de la fonction
ifavec des argumentsArray(UUID). Cela corrige #11066. #12648 (alexey-milovidov). - Correction d’une race condition dans les dictionnaires externes avec le layout
cache, pouvant entraîner un crash du serveur. #12566 (alesapin). - Suppression des données des tables Distributed (blocs provenant d’
INSERTasynchrones) lors d’unDROP TABLE. #12556 (Azat Khuzhin). - Correction d’un bug qui entraînait la corruption d’anciennes parts après une requête
ALTER DELETElorsqueenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Exception plus explicite pour la fonction
inavec un nombre d’arguments invalide. #12529 (Anton Popov). - Correction d’un problème de performances lors de la lecture de parts compactes. #12492 (Anton Popov).
- Correction d’un crash dans JOIN avec un dictionnaire lorsque la jointure s’effectue sur une expression de clé de dictionnaire :
t JOIN dict ON expr(dict.id) = t.id. Désactivation de l’optimisation de jointure sur dictionnaire dans ce cas. #12458 (Artem Zuikov). - Correction d’un segfault possible dans StorageMerge. Closes #12054. #12401 (tavplubix).
- Correction de l’ordre des colonnes dans le modificateur
WITH FILL. Auparavant, l’ordre des colonnes de l’instructionORDER BYn’était pas respecté. #12306 (Anton Popov). - Évite l’exception “bad cast” lorsqu’une expression filtrant les données par colonnes virtuelles (comme
_tabledans les tablesMerge) ou par colonnes d’“index” dans des tables système, par exemple lors d’un filtrage par nom de base de données dans une requête sursystem.tables, renvoie le typeNullable. Cela corrige #12166. #12305 (alexey-milovidov). - Affiche une erreur après l’échec du chargement de TrieDictionary. #12290 (Vitaly Baranov).
- La fonction
arrayFillfonctionnait incorrectement avec des tableaux vides, ce qui pouvait entraîner un crash. Cela corrige #12263. #12279 (alexey-milovidov). - Implémentation des conversions vers un type commun pour les types
LowCardinality. Cela permet d’exécuter UNION ALL sur des tables comportant des colonnesLowCardinalityet d’autres colonnes. Cela corrige #8212. Cela corrige #4342. #12275 (alexey-milovidov). - Correction du comportement où, lors d’insertions séquentielles multiples dans
StorageFile, l’en-tête de certains types spéciaux était écrit plus d’une fois. Cela corrige #6155. #12197 (Nikita Mikhaylov). - Correction des fonctions logiques pour les valeurs UInt8 lorsqu’elles sont différentes de 0 ou 1. #12196 (Alexander Kazakov).
- Plafonnement de max_memory_usage* à la mémoire résidente du processus. #12182 (Azat Khuzhin).
- Correction de la vérification des arguments de
dictGetlors de l’élimination des fonctions injectives dans GROUP BY. #12179 (Azat Khuzhin). - Ne pas scinder le nom de table de la source du dictionnaire en schéma et nom de table si la connexion ODBC ne prend pas en charge les schémas. #12165 (Vitaly Baranov).
- Correction d’une logique erronée dans
ALTER DELETEqui entraînait la suppression d’enregistrements lorsque la condition était évaluée à NULL. Cela corrige #9088. Cela clôt #12106. #12153 (alexey-milovidov). - Correction de la transformation de la query à envoyer à un SGBD externe (par ex. MySQL, ODBC) en présence d’alias. Cela corrige #12032. #12151 (alexey-milovidov).
- Correction d’un overflow potentiel lors d’une division entière. Cela corrige #12119. #12140 (alexey-milovidov).
- Correction d’une boucle infinie potentielle dans
greatCircleDistanceetgeoDistance. Cela corrige #12117. #12137 (alexey-milovidov). - Normalisation de la gestion du fichier “pid”. Dans les versions précédentes, le server pouvait refuser de démarrer s’il avait été killed sans arrêt propre et si un autre processus avait le même pid que le server précédemment lancé. De plus, le fichier pid pouvait être supprimé lors d’un démarrage infructueux du server même si un autre server était en cours d’exécution. Cela corrige #3501. #12133 (alexey-milovidov).
- Correction de la gestion de la dépendance entre une table avec ENGINE=Dictionary et un dictionnaire. Cela corrige #10994. Cela corrige #10397. #12116 (Vitaly Baranov).
- Correction des performances des SELECT avec
UNION, causée par une limite incorrecte sur le nombre total de threads. Corrige #12030. #12103 (Nikolai Kochetov). - Correction d’un segfault avec les combinators
-StateResample. #12092 (Anton Popov). - Correction de métriques
result_rowsetresult_bytesvides danssystem.quey_logpour les SELECT. Corrige #11595. #12089 (Nikolai Kochetov). - Correction de la limitation inutile du nombre de threads pour les requêtes SELECT depuis
VIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Correction d’un crash possible lors de l’utilisation d’un type incorrect pour
PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov). - Correction de l’erreur
Expected single dictionary argument for functionpour la fonctiondefaultValueOfArgumentTypeavec le typeLowCardinality. Corrige #11808. #12056 (Nikolai Kochetov). - Correction de l’erreur
Cannot capture columnpour les fonctions d’ordre supérieur avec un argumentTuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov). - Analyse des métadonnées des tables en parallèle lors du chargement de la base de données. Cela corrige la lenteur du démarrage du serveur lorsqu’il y a un grand nombre de tables. #12045 (tavplubix).
- La fonction d’agrégation
topKrenvoie désormais un Enum pour les types Enum. Cela corrige #3740. #12043 (alexey-milovidov). - Correction de la vérification des contraintes lorsque la contrainte est une expression constante. Cela corrige #11360. #12042 (alexey-milovidov).
- Correction d’une comparaison incorrecte de tuples avec des colonnes
Nullable. Corrige #11985. #12039 (Nikolai Kochetov). - Correction du calcul des droits d’accès lorsque allow_introspection_functions=0. #12031 (Vitaly Baranov).
- Correction d’un résultat erroné et d’un crash potentiel lors de l’appel de la fonction
ifavec des arguments de typeFixedStringde tailles différentes. Cela corrige #11362. #12021 (alexey-milovidov). - Une requête avec la fonction
neighborcomme seule expression renvoyée peut produire un résultat vide si la fonction est appelée avec l’offset-9223372036854775808. Cela corrige #11367. #12019 (alexey-milovidov). - Correction du calcul des droits d’accès lorsque allow_ddl=0. #12015 (Vitaly Baranov).
- Correction d’un dépassement potentiel de la taille du tableau dans generateRandom pouvant entraîner un crash. Cela corrige #11371. #12013 (alexey-milovidov).
- Correction d’une exception potentielle en virgule flottante. Cela corrige #11378. #12005 (alexey-milovidov).
- Correction d’un nom de paramètre incorrect dans le message du journal au démarrage du serveur. #11997 (alexey-milovidov).
- Correction de
Query parameter was not setdans le formatValues. Corrige #11918. #11936 (tavplubix). - Conservation des alias pour les substitutions dans la requête (requêtes paramétrées). Cela corrige #11914. #11916 (alexey-milovidov).
- Correction d’un bug empêchant les déplacements lors du changement depuis la politique de stockage par défaut. #11893 (Vladimir Chebotarev).
- Correction d’une exception potentielle en virgule flottante lors de l’analyse de
DateTime64. Cela corrige #11374. #11875 (alexey-milovidov). - Correction de la comptabilisation de la mémoire via l’interface HTTP (peut être significative avec
wait_end_of_query=1). #11840 (Azat Khuzhin). - Analyse des métadonnées stockées dans ZooKeeper avant vérification de l’égalité. #11739 (Azat Khuzhin).
Amélioration des performances
- L’index n’était pas utilisé avec l’opérateur IN sur des littéraux, ce qui entraînait une régression des performances introduite vers la v19.3. Cela corrige #10574. #12062 (nvartolomei).
Amélioration de la compilation/des tests/du packaging
- Installer
ca-certificatesavant le premierapt-get updatedans le Dockerfile. #12095 (Ivan Blinkov).
Version ClickHouse v20.4.6.53-stable 2020-06-25
Correction de bugs
- Corrige un crash rare provoqué par l’utilisation d’une colonne
Nullabledans une condition PREWHERE. Suite de #11608. #11869 (Nikolai Kochetov). - N’autorise pas
arrayJoinà l’intérieur des fonctions d’ordre supérieur. Cela provoquait une désynchronisation du protocole. Ceci clôt #3933. #11846 (alexey-milovidov). - Corrige un résultat erroné lors de la comparaison de
FixedStringavec une constanteString. Cela corrige #11393. Ce bug est apparu dans la version 20.4. #11828 (alexey-milovidov). - Corrige le résultat erroné de
if()avec des NULL dans la condition. #11807 (Artem Zuikov). - Corrige l’utilisation d’un trop grand nombre de threads pour les requêtes. #11788 (Nikolai Kochetov).
- Corrige le comportement inattendu de requêtes comme
SELECT *, xyz.*, qui réussissaient alors qu’une erreur aurait dû être renvoyée. #11753 (hexiaoting). - Désormais, les fetches répliqués seront annulés lors d’une modification des métadonnées. #11744 (alesapin).
- Corrige
LOGICAL_ERRORprovoquée par une déduction de type incorrecte pour des littéraux complexes dans le format d’entrée Values. #11732 (tavplubix). - Corrige
ORDER BY ... WITH FILLsur des colonnes constantes. #11697 (Anton Popov). - Transmet les timeouts appropriés lors de la communication avec le bridge XDBC. Récemment, les timeouts n’étaient pas respectés lors de la vérification de la disponibilité du bridge et de la récupération des métadonnées. #11690 (alexey-milovidov).
- Corrige l’utilisation de
LIMIT n WITH TIESavec la clauseORDER BY, qui contient des alias. #11689 (Anton Popov). - Corrige une erreur qui entraîne un état incorrect de
system.mutations. Elle peut indiquer que la mutation entière est déjà terminée alors que le serveur a encore des tâchesMUTATE_PARTdans la file d’attente de réplication et tente de les exécuter. Cela corrige #11611. #11681 (alesapin). - Ajoute la prise en charge des expressions régulières avec des indicateurs d’insensibilité à la casse. Cela corrige #11101 et #11506. #11649 (alexey-milovidov).
- Supprime l’optimisation triviale des requêtes de comptage si une sécurité au niveau des lignes est définie. Dans les versions précédentes, l’utilisateur obtenait le nombre total d’enregistrements d’une table au lieu du nombre filtré. Cela corrige #11352. #11644 (alexey-milovidov).
- Correction des bloom filters pour String (indices de saut de données). #11638 (Azat Khuzhin).
- Correction d’un plantage rare provoqué par l’utilisation d’une colonne
Nullabledans une conditionPREWHERE. (Il est probablement lié, d’une manière ou d’une autre, à #11572). #11608 (Nikolai Kochetov). - Correction de l’erreur
Block structure mismatchpour les requêtes avec sampling lisant depuis une tableBuffer. #11602 (Nikolai Kochetov). - Correction du code de sortie incorrect de clickhouse-client lorsque exception.code() % 256 = 0. #11601 (filimonov).
- Correction d’une erreur mineure dans le message de journal concernant “La taille du mark cache a été réduite” au démarrage du serveur. Cela clôt #11399. #11589 (alexey-milovidov).
- Correction de l’erreur
Size of offsets does not match size of columnpour les requêtes avecPREWHERE column in (subquery)etARRAY JOIN. #11580 (Nikolai Kochetov). - Correction d’un segfault rare dans
SHOW CREATE TABLE. Corrige #11490. #11579 (tavplubix). - Toutes les requêtes d’une session HTTP avaient le même query_id. C’est corrigé. #11578 (tavplubix).
- Désormais, le conteneur Docker clickhouse-server privilégie IPv6 pour vérifier si le serveur est actif. #11550 (Ivan Starkov).
- Correction de shard_num/replica_num pour
<node>(cela cassait use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - Correction d’une race condition pouvant entraîner une exception lors de la suppression d’une table. C’est un peu délicat, mais sans danger. Si vous voulez une explication, faites-le-moi savoir sur Telegram. #11523 (alesapin).
- Correction d’une fuite de mémoire lorsqu’une exception est levée au milieu d’une aggregation avec des fonctions -State. Cela corrige #8995. #11496 (alexey-milovidov).
- Si un index de saut de données dépend de colonnes devant être modifiées lors d’une fusion en arrière-plan (pour SummingMergeTree, AggregatingMergeTree ainsi que pour TTL GROUP BY), il était calculé de manière incorrecte. Ce problème est corrigé en déplaçant le calcul de l’index après la fusion afin qu’il soit calculé sur les données fusionnées. #11162 (Azat Khuzhin).
- Supprime les anciens correctifs de libunwind. https://github.com/ClickHouse-Extras/libunwind/commit/500aa227911bd185a94bfc071d68f4d3b03cb3b1#r39048012 Cela permet de désactiver
-fno-omit-frame-pointerdans les buildsclang, ce qui améliore les performances d’au moins 1 % en moyenne. #10761 (Amos Bird). - Corrige l’utilisation d’une clé primaire passée à une fonction avec le modificateur ‘FINAL’ et l’optimisation ‘ORDER BY’. #10715 (Anton Popov).
Amélioration de la compilation/des tests/du packaging
- Corrige plusieurs erreurs mineures dans les tests unitaires. #11262 (alesapin).
- Corrige un rapport MSan erroné (faux positif) dans MergeTreeIndexFullText. Le problème est apparu pour la première fois dans le ticket #9968. #10801 (alexey-milovidov).
Version de ClickHouse v20.4.5.36-stable 2020-06-10
Correction de bugs
- Corrige l’erreur
Data compressed with different methodsqui peut se produire simin_bytes_to_use_direct_ioest activé, que PREWHERE est actif et que SAMPLE est utilisé ou qu’un grand nombre de threads est utilisé. Cela corrige #11539. #11540 (alexey-milovidov). - Corrige le calcul de la taille compressée pour les codecs. #11448 (Nikolai Kochetov).
- Corrige le crash du serveur lorsqu’une colonne utilise un codec de compression avec des arguments non littéraux. Corrige #11365. #11431 (alesapin).
- Corrige pointInPolygon avec nan comme point. Corrige #11375. #11421 (Alexey Ilyukhov).
- Corrige une lecture potentielle de mémoire non initialisée lors de l’arrêt de MergeTree si la table n’a pas été créée correctement. #11420 (alexey-milovidov).
- Corrige geohashesInBox lorsque les arguments sont en dehors de la plage de latitude/longitude. #11403 (Vasily Nemkov).
- Corrige l’erreur possible
Pipeline stuckpour les requêtes avec tri externe et limite. Corrige #11359. #11366 (Nikolai Kochetov). - Supprime un verrou redondant lors de l’envoi des parts dans ReplicatedMergeTree. #11354 (alesapin).
- Corrige la prise en charge de
\G(sortie verticale) dans clickhouse-client en mode multiligne. Cela clôt #9933. #11350 (alexey-milovidov). - Corrige un segfault potentiel lors de l’utilisation de la base de données
Lazy. #11348 (alexey-milovidov). - Corrige un crash dans
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Désormais, les merges sont arrêtés avant la modification des métadonnées dans les requêtes
ALTER. #11335 (alesapin). - Active de nouveau l’écriture en parallèle dans
MATERIALIZED VIEWavec le paramètreparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Corrige visitParamExtractRaw lorsque le JSON extrait contient des chaînes avec des { ou [ non appariés. #11318 (Ewout).
- Corrige une condition de concurrence très rare dans ThreadPool. #11314 (alexey-milovidov).
- Corrige une data race mineure dans clickhouse-copier. Découverte par les tests d’intégration. #11313 (alexey-milovidov).
- Corrige un risque d’utilisation de mémoire non initialisée lors d’une conversion. Exemple :
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Corrige le problème où l’analyse d’index ne fonctionne pas lorsqu’une table possède une colonne Array dans la clé primaire et qu’une requête filtre sur cette colonne avec les fonctions
emptyounotEmpty. Corrige #11286. #11303 (alexey-milovidov). - Corrige un bug où l’estimation de la vitesse d’exécution d’une requête peut être erronée et où la limite
min_execution_speedpeut ne pas fonctionner, ou mal fonctionner, si la requête est bridée par les paramètresmax_network_bandwidth,max_execution_speedoupriority. La valeur par défaut detimeout_before_checking_execution_speeddevient non nulle, car sinon les paramètresmin_execution_speedetmax_execution_speedrestent sans effet. Corrige #11297. Corrige #5732. Corrige #6228. Amélioration ergonomique : évite la concaténation du message d’exception avec la barre de progression dansclickhouse-client. #11296 (alexey-milovidov). - Corrige un plantage lorsque SET DEFAULT ROLE est appelé avec des arguments incorrects. Corrige #10586. #11278 (Vitaly Baranov).
- Corrige un plantage lors de la lecture de données mal formées au format Protobuf. Corrige #5957, corrige #11203. #11258 (Vitaly Baranov).
- Corrige un bug où le dictionnaire de type cache pouvait renvoyer la valeur par défaut au lieu de la valeur normale (lorsqu’il n’y avait que des clés expirées). Cela n’affecte que les champs de type chaîne. #11233 (Nikita Mikhaylov).
- Corrige l’erreur
Block structure mismatch in QueryPipelinelors de la lecture depuisVIEWavec des constantes dans la requête interne. Corrige #11181. #11205 (Nikolai Kochetov). - Corrige l’exception potentielle
Invalid status for associated output. #11200 (Nikolai Kochetov). - Corrige l’erreur potentielle
Cannot capture columnpour les fonctions d’ordre supérieur avec un argument capturéArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Corrige le globbing S3, qui pouvait échouer en présence de plus de 1000 clés et avec certains backends. #11179 (Vladimir Chebotarev).
- Lorsqu’un index de saut de données dépend de colonnes qui doivent être modifiées pendant une fusion en arrière-plan (pour SummingMergeTree, AggregatingMergeTree ainsi que pour TTL GROUP BY), il était calculé de façon incorrecte. Ce problème est corrigé en déplaçant le calcul de l’index après la fusion, afin qu’il soit calculé sur les données fusionnées. #11162 (Azat Khuzhin).
- Corrige un problème de performances de Kafka lié aux replanifications basées sur des limites, qui étaient systématiquement appliquées. #11149 (filimonov).
- Correctif pour le blocage qui survenait parfois lors d’un DROP de table engine=Kafka (ou lors des redémarrages du serveur). #11145 (filimonov).
- Correction de la réservation excessive de threads pour les requêtes simples (optimisation visant à réduire le nombre de threads, qui était partiellement cassée après des modifications du pipeline). #11114 (Azat Khuzhin).
- Correction de l’optimisation des prédicats pour les requêtes distribuées (
enable_optimize_predicate_expression=1) dans les requêtes avec une sectionHAVING(c.-à-d. lorsqu’un filtrage sur le serveur initiateur est nécessaire), en préservant l’ordre des expressions (ce qui suffit à corriger le problème), et en forçant également l’agrégateur à privilégier les noms de colonnes aux index. Corrige : #10613, #11413. #10621 (Azat Khuzhin).
Amélioration de la compilation, des tests et du packaging
Version de ClickHouse v20.4.4.18-stable 2020-05-26
Version de ClickHouse v20.4.3.16-stable 2020-05-23
correction de bugs
- Suppression du logging de la tâche de finalisation des mutations si rien n’a été finalisé. #11109 (alesapin).
- Correction d’une fuite de mémoire dans registerDiskS3. #11074 (Pavel Kovalenko).
- Correction d’une possible perte de données lors de l’arrêt d’une table utilisant le Kafka engine. #11048 (filimonov).
- Correction de bugs de résolution d’arguments dans
parseDateTime64BestEffort. #11038 (Vasily Nemkov). - Correction d’une très rare erreur potentielle de type use-after-free dans
MergeTreesi la création de la table avait échoué. #10986, #10970 (alexey-milovidov). - Correction de la gestion des métadonnées (chemin relatif pour rename) et des données (chemin relatif pour symlink) pour la base de données Atomic. #10980 (Azat Khuzhin).
- Correction d’un crash du serveur sur des requêtes concurrentes
ALTERetDROP DATABASEavec le database engineAtomic. #10968 (tavplubix). - Correction d’une taille incorrecte des raw data dans la méthode
getRawData(). #10964 (Igr). - Correction de l’incompatibilité de l’agrégation à deux niveaux entre la version 20.1 et les versions antérieures. Cette incompatibilité se produit lorsque différentes versions de ClickHouse sont utilisées sur le nœud initiateur et les nœuds distants, que la taille du résultat de GROUP BY est importante et que l’agrégation est effectuée sur un seul champ String. Cela entraîne plusieurs lignes non fusionnées pour une même clé dans le résultat. #10952 (alexey-milovidov).
- Correction de l’envoi de fichiers partiellement écrits par
DistributedBlockOutputStream. #10940 (Azat Khuzhin). - Correction d’un crash dans
SELECT count(notNullIn(NULL, [])). #10920 (Nikolai Kochetov). - Correction du blocage qui survenait parfois lors d’un
DROPdu table engineKafka(ou lors des redémarrages du serveur). #10910 (filimonov). - Correction de l’impossibilité d’exécuter plusieurs
ALTER RENAMEcommea TO b, c TO a. #10895 (alesapin). - Correction d’une possible condition de concurrence pouvant se produire lors de l’obtention du résultat d’un état d’aggregate function depuis plusieurs thread pour la même colonne. La seule façon pour que cela se produise est d’utiliser la fonction
finalizeAggregationlors de la lecture depuis une table avec le engineMemoryqui stocke l’étatAggregateFunctionpour la fonctionquantile*. #10890 (Nikolai Kochetov). - Correction de la compatibilité ascendante avec les tuples dans les Distributed tables. #10889 (Anton Popov).
- Correction de
SIGSEGVdansStringHashTablesi une telle clé n’existe pas. #10870 (Azat Khuzhin). - Correction des blocages de
WATCHaprès la suppression d’une tableLiveViewd’une base de données utilisant le moteurAtomic. #10859 (tavplubix). - Correction d’un bug dans
ReplicatedMergeTreequi pouvait bloquer certaines requêtesALTERsurOPTIMIZEen attente d’une replica devenue inactive. #10849 (tavplubix). - Les contraintes sont désormais mises à jour si la colonne utilisée dans l’expression
CONSTRAINTa été renommée. Corrige #10844. #10847 (alesapin). - Correction d’une lecture potentielle de mémoire non initialisée dans le dictionnaire de type cache. #10834 (alexey-milovidov).
- Correction de l’ordre des colonnes après
Block::sortColumns(). #10826 (Azat Khuzhin). - Correction d’un problème avec le pont
ODBClorsqu’aucune mise entre guillemets des identifiants n’est demandée. Corrige #7984. #10821 (alexey-milovidov). - Correction d’un signalement
UBSanetMSandansDateLUT. #10798 (alexey-milovidov). - Correction d’une conversion de type incorrecte dans les conditions sur la clé. Corrige #6287. #10791 (Andrew Onyshchuk).
- Correction du comportement de
parallel_view_processing. Désormais, si une exception se produit, toutes les insertions dansMATERIALIZED VIEWnon concernées par cette exception doivent être menées à terme. Corrige #10241. #10757 (Nikolai Kochetov). - Correction des combinateurs
-OrNullet-OrDefaultlorsqu’ils sont combinés avec-State. #10741 (hcz). - Correction d’un possible dépassement de tampon dans la fonction
h3EdgeAngle. #10711 (alexey-milovidov). - Correction d’un bug qui bloquait les
ALTERconcurrents lorsque la table contenait un grand nombre de parts. #10659 (alesapin). - Correction d’un déréférencement de
nullptrdansStorageBuffersi le server était arrêté avant l’initialisation de la table. #10641 (alexey-milovidov). - Correction de
optimize_skip_unused_shardsavecLowCardinality. #10611 (Azat Khuzhin). - Correction de la gestion de la variable de condition pour les mutations synchrones. Dans certains cas, les signaux destinés à cette variable de condition pouvaient être perdus. #10588 (Vladimir Chebotarev).
- Correction d’un crash possible lorsque
createDictionary()est appelé avant la fin deloadStoredObject(). #10587 (Vitaly Baranov). - Correction du
SELECTsur la colonneALIASlorsque le type de l’expression par défaut diffère du type de la colonne. #10563 (Azat Khuzhin). - Implémentation de la comparaison entre des valeurs DateTime64 et String. #10560 (Vasily Nemkov).
- Désactivation par défaut de l’optimisation de
GROUP BYsur la sharding_key (optimize_distributed_group_by_sharding_keyavait été introduit puis désactivé par défaut en raison de la complexité de l’analyse de la sharding_key ; un exemple simple estifdans la clé de sharding), et correction pourWITH ROLLUP/CUBE/TOTALS. #10516 (Azat Khuzhin). - Correction de #10263. #10486 (Azat Khuzhin).
- Ajout de tests pour le paramètre
max_rows_to_sort. #10268 (alexey-milovidov). - Ajout de la rétrocompatibilité pour la création d’un index bloom filter. #10551. #10569 (Winter Zhang).
Version de ClickHouse v20.4.2.9, 2020-05-12
Changement non rétrocompatible
- Les tables système (par ex. system.query_log, system.trace_log, system.metric_log) utilisent le format compact de data part pour les parts de moins de 10 MiB. Le format compact de data part est pris en charge depuis la version 20.3. Si vous prévoyez de revenir à une version antérieure à 20.3, vous devez supprimer manuellement les données de table des logs système dans
/var/lib/clickhouse/data/system/. - Lorsqu’une comparaison de chaînes implique FixedString et que les arguments comparés sont de tailles différentes, la comparaison s’effectue comme si la chaîne la plus courte était complétée jusqu’à la longueur de la plus longue. Cela vise à assurer la compatibilité SQL si l’on considère que le type de données FixedString correspond au type SQL CHAR. Cela corrige #9272. #10363 (alexey-milovidov)
- SHOW CREATE TABLE est désormais affiché sur plusieurs lignes. Il est maintenant plus lisible et plus proche de MySQL. #10049 (Azat Khuzhin)
- Ajout du paramètre
validate_polygons, utilisé dans la fonctionpointInPolygonet activé par défaut. #9857 (alexey-milovidov)
Nouvelle fonctionnalité
- Ajout de la prise en charge d’une connexion sécurisée de ClickHouse à Zookeeper #10184 (Konstantin Lebedev)
- Prise en charge de handlers HTTP personnalisés. Voir #5436 pour la description. #7572 (Winter Zhang)
- Ajout du format d’entrée/sortie MessagePack. #9889 (Kruglov Pavel)
- Ajout du format d’entrée Regexp. #9196 (Kruglov Pavel)
- Ajout du format de sortie
Markdownpour intégrer des tables dans des documents Markdown. #10317 (Kruglov Pavel) - Ajout de la prise en charge d’une section de paramètres personnalisés dans les dictionnaires. Corrige également l’issue #2829. #10137 (Artem Streltsov)
- Ajout de la prise en charge des paramètres personnalisés dans les requêtes DDL pour
CREATE DICTIONARY#10465 (Artem Streltsov) - Ajout d’un profileur mémoire simple à l’échelle du serveur, qui collecte les contextes d’allocation lorsque l’utilisation mémoire du serveur dépasse le seuil d’allocation suivant. #10444 (alexey-milovidov)
- Ajout du paramètre
always_fetch_merged_part, qui empêche une réplique de fusionner elle-même des parts et privilégie toujours leur téléchargement depuis d’autres répliques. #10379 (alesapin) - Ajout de la fonction
JSONExtractKeysAndValuesRaw, qui extrait des données brutes d’objets JSON #10378 (hcz) - Ajout de l’utilisation mémoire de l’OS à
system.asynchronous_metrics. #10361 (alexey-milovidov) - Ajout de variantes génériques pour les fonctions
leastetgreatest. Elles fonctionnent désormais avec un nombre arbitraire d’arguments de types arbitraires. Cela corrige #4767 #10318 (alexey-milovidov) - Désormais, ClickHouse contrôle lui-même les délais d’expiration des sources de dictionnaire. Deux nouveaux paramètres ont été ajoutés à la configuration du dictionnaire cache :
strict_max_lifetime_seconds, qui vautmax_lifetimepar défaut, etquery_wait_timeout_milliseconds, qui vaut une minute par défaut. Le premier paramètre est également utile avec le paramètreallow_read_expired_keys(pour interdire la lecture de clés expirées depuis trop longtemps). #10337 (Nikita Mikhaylov) - Ajout de log_queries_min_type pour filtrer les entrées qui seront écrites dans query_log #10053 (Azat Khuzhin)
- Ajout de la fonction
isConstant. Cette fonction vérifie si son argument est une expression constante et renvoie 1 ou 0. Elle est destinée au développement, au débogage et à la démonstration. #10198 (alexey-milovidov) - Ajout de joinGetOrNull pour renvoyer NULL lorsqu’une clé est absente au lieu de renvoyer la valeur par défaut. #10094 (Amos Bird)
- Considérer
NULLcomme égal àNULLdans l’opérateurINsi l’optiontransform_null_inest activée. #10085 (achimbab) - Ajouter
ALTER TABLE ... RENAME COLUMNà la famille de moteurs de table MergeTree. #9948 (alesapin) - Prise en charge de INSERT SELECT distribué en parallèle. #9759 (vxider)
- Ajouter la possibilité d’interroger Distributed sur Distributed (sans
distributed_group_by_no_merge) … #9923 (Azat Khuzhin) - Ajouter la fonction
arrayReduceInRanges, qui agrège les éléments du tableau dans les plages spécifiées. #9598 (hcz) - Ajouter le statut du Dictionary dans l’exporter Prometheus. #9622 (Guillaume Tassery)
- Ajouter la fonction
arrayAUC#8698 (taiyang-li) - Prise en charge de l’instruction
DROP VIEWpour une meilleure compatibilité avec TPC-H. #9831 (Amos Bird) - Ajouter l’option ‘strict_order’ à windowFunnel() #9773 (achimbab)
- Prise en charge des opérateurs SQL
DATEetTIMESTAMP, par exempleSELECT date '2001-01-01'#9691 (Artem Zuikov)
Fonctionnalité expérimentale
- Ajout du moteur de base de données expérimental Atomic. Il prend en charge les requêtes
DROPetRENAME TABLEsans blocage, ainsi que la requête atomiqueEXCHANGE TABLES t1 AND t2#7512 (tavplubix) - Prise en charge initiale de ReplicatedMergeTree sur S3 (cela ne fonctionne pas encore de manière optimale) #10126 (Pavel Kovalenko)
Correction de bugs
- Correction de résultats scalaires erronés dans la sous-requête interne d’une
MATERIALIZED VIEWlorsque cette requête contenait une table dépendante #10603 (Nikolai Kochetov) - Correction d’un bug qui faisait que les requêtes HTTP restaient bloquées lors de la fermeture de la connexion côté client avec
readonly=2etcancel_http_readonly_queries_on_client_close=1. #10684 (tavplubix) - Correction d’un segfault dans StorageBuffer lorsqu’une exception est levée au démarrage du serveur. Corrige #10550 #10609 (tavplubix)
- La requête
SYSTEM DROP DNS CACHEsupprime désormais également les caches utilisés pour vérifier si un utilisateur est autorisé à se connecter depuis certaines adresses IP #10608 (tavplubix) - Correction de l’utilisation de plusieurs opérateurs
INavec un ensemble identique dans une même requête. Corrige #10539 #10686 (Anton Popov) - Correction d’un crash dans
generateRandomavec des types imbriqués. Corrige #10583. #10734 (Nikolai Kochetov) - Correction d’une corruption de données affectant la colonne clé
LowCardinality(FixedString)dansSummingMergeTree, qui pouvait se produire après une fusion. Corrige #10489. #10721 (Nikolai Kochetov) - Correction de la logique du paramètre aggregation_memory_efficient_merge_threads. #10667 (palasonic1)
- Correction de la disparition des totaux. Les totaux pouvaient être filtrés si la requête comportait un
JOINou une sous-requête avec une conditionWHEREexterne. Corrige #10674 #10698 (Nikolai Kochetov) - Correction de l’absence d’exécution parallèle des requêtes distantes avec
distributed_aggregation_memory_efficientactivé. Corrige #10655 #10664 (Nikolai Kochetov) - Correction d’un nombre potentiellement incorrect de lignes pour les requêtes avec
LIMIT. Corrige #10566, #10709 #10660 (Nikolai Kochetov) - Correction d’une corruption d’index pouvant survenir dans certains cas après la fusion de parts compactes dans une autre part compacte. #10531 (Anton Popov)
- Correction du cas où une mutation avait terminé toutes les parts, mais restait bloquée avec
is_done=0. #10526 (alesapin) - Correction d’un overflow au début de l’époque Unix pour les fuseaux horaires avec un décalage fractionnaire par rapport à l’UTC. Corrige #9335. #10513 (alexey-milovidov)
- Amélioration des diagnostics pour les formats d’entrée. Corrige #10204 #10418 (tavplubix)
- Correction d’un overflow numérique dans
simpleLinearRegression()avec de grands entiers #10474 (hcz) - Correction d’une utilisation de mémoire après libération lors de l’arrêt de Distributed, afin d’éviter d’attendre l’envoi de tous les batches #10491 (Azat Khuzhin)
- Ajout des certificats CA à l’image Docker de clickhouse-server #10476 (filimonov)
- Correction d’une rare boucle infinie pouvant se produire lors de l’utilisation de la fonction
addressToLineou des colonnes AggregateFunctionState. #10466 (Alexander Kuzmenkov) - Gère l’erreur zookeeper “no node error” pendant une requête distribuée #10050 (Daniel Chen)
- Correction d’un bug empêchant le serveur d’attacher une table après modification de la valeur par défaut d’une colonne. #10441 (alesapin)
- Conversion implicite du type de l’expression par défaut vers le type de colonne pour les colonnes ALIAS #10563 (Azat Khuzhin)
- Ne supprime pas le répertoire metadata si
ATTACH DATABASEéchoue #10442 (Winter Zhang) - Évite la dépendance aux tzdata du système. Corrige le chargement du fuseau horaire
Africa/Casablancasur CentOS 8. Corrige #10211 #10425 (alexey-milovidov) - Correction de certains problèmes lorsque des données sont insérées avec quorum puis supprimées (DROP PARTITION, TTL, etc.). Cela entraînait des INSERT bloqués ou des exceptions faussement positives dans les SELECT. Corrige #9946 #10188 (Nikita Mikhaylov)
- Vérifie le nombre et le type des arguments lors de la création d’un index BloomFilter #9623 #10431 (Winter Zhang)
- Préfère
fallback_to_stale_replicasàskip_unavailable_shards; sinon, lorsque les deux paramètres sont spécifiés et qu’il n’y a pas de répliques à jour, la requête échouera (correctif de @alex-zaitsev) #10422 (Azat Khuzhin) - Correction d’un problème où une requête avec ARRAY JOIN, ORDER BY et LIMIT peut renvoyer un résultat incomplet. Corrige #10226. #10427 (Vadim Plakhtinskiy)
- Ajout du nom de la base de données au nom du dictionnaire après DETACH/ATTACH. Corrige la table system.dictionaries et la requête
SYSTEM RELOAD#10415 (Azat Khuzhin) - Corrige un résultat potentiellement incorrect pour les Extremes dans le pipeline de processors. #10131 (Nikolai Kochetov)
- Corrige un segfault possible lorsque le paramètre
distributed_group_by_no_mergeest activé (introduit dans la version 20.3.7.46 par #10131). #10399 (Nikolai Kochetov) - Corrige l’aplatissement incorrect des types de données
Array(Tuple(...)). Corrige #10259 #10390 (alexey-milovidov) - Corrige les noms de colonnes des constantes à l’intérieur de JOIN, qui peuvent entrer en conflit avec ceux des constantes en dehors de JOIN #9950 (Alexander Kuzmenkov)
- Corrige l’ordre des colonnes après Block::sortColumns() #10826 (Azat Khuzhin)
- Corrige l’erreur possible
Pipeline stuckdansConcatProcessor, qui peut se produire lors d’une requête distante. #10381 (Nikolai Kochetov) - N’effectue pas de réservations de disque pour les aggregations. Corrige #9241 #10375 (Azat Khuzhin)
- Corrige le comportement incorrect des fonctions DateTime pour les timezones ayant basculé entre des offsets UTC positifs et négatifs (par ex. Pacific/Kiritimati). Corrige #7202 #10369 (alexey-milovidov)
- Évite une boucle infinie dans la fonction
dictIsIn. Corrige #515 #10365 (alexey-milovidov) - Désactive par défaut l’optimisation GROUP BY sharding_key et la corrige pour WITH ROLLUP/CUBE/TOTALS #10516 (Azat Khuzhin)
- Vérifie le code d’erreur lors du contrôle des parts et ne marque pas une part comme endommagée si l’erreur est du type “mémoire insuffisante”. Corrige #6269 #10364 (alexey-milovidov)
- Affiche des informations sur les Dictionaries non chargés dans les system tables. #10234 (Vitaly Baranov)
- Corrige un déréférencement de pointeur nul dans StorageBuffer si le server a été arrêté avant le démarrage de la table. #10641 (alexey-milovidov)
- Corrige une condition de concurrence entre
DROPetOPTIMIZEdansReplicatedMergeTree.DROPpouvait laisser des éléments résiduels dans le path de la replica dans ZooKeeper en cas de requêteOPTIMIZEconcurrente. #10312 (tavplubix) - Corrige l’erreur ‘Logical error: CROSS JOIN has expressions’ pour les requêtes mélangeant virgules et JOIN nommés. Corrige #9910 #10311 (Artem Zuikov)
- Corrige les requêtes avec
max_bytes_before_external_group_by. #10302 (Artem Zuikov) - Corrige le problème de limitation de la profondeur maximale de récursion dans le parser dans certains cas. Cela corrige #10283. Ce correctif peut introduire une incompatibilité mineure : les requêtes longues et profondément imbriquées via clickhouse-client peuvent cesser de fonctionner, et vous devrez ajuster les settings
max_query_sizeetmax_parser_depthen conséquence. #10295 (alexey-milovidov) - Permet d’utiliser
count(*)avec plusieurs JOIN. Corrige #9853 #10291 (Artem Zuikov) - Corrige l’erreur
Pipeline stuckavecmax_rows_to_group_byetgroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov) - Corrige l’erreur ‘Cannot add column’ lors de la création d’un dictionnaire
range_hashedà l’aide d’une requête DDL. Corrige #10093. #10235 (alesapin) - Corrige une rare exception possible
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov) - Corrige un bug où ClickHouse renvoyait le message d’erreur “Unknown function lambda.” lorsque l’utilisateur essayait d’exécuter ALTER UPDATE/DELETE sur des tables avec ENGINE = Replicated*. La vérification des fonctions nondeterministic gère désormais correctement les expressions lambda. #10237 (Alexander Kazakov)
- Corrige un segfault relativement rare dans StorageSystemTables qui se produit lorsque SELECT … FROM system.tables est exécuté sur une base de données avec le moteur Lazy. #10209 (Alexander Kazakov)
- Corrige un cas possible d’exécution infinie d’une requête alors qu’elle devrait en réalité s’arrêter sur LIMIT, lors de la lecture depuis une source infinie comme
system.numbersousystem.zeros. #10206 (Nikolai Kochetov) - Corrige la fonction “generateRandom” pour le type Date. Cela corrige #9973. Corrige un cas limite où des dates de l’année 2106 sont insérées dans des tables MergeTree avec un partitionnement à l’ancienne, mais dont les partitions sont nommées avec l’année 1970. #10218 (alexey-milovidov)
- Convertit les types si la définition de table d’une vue ne correspond pas à la requête SELECT. Cela corrige #10180 et #10022 #10217 (alexey-milovidov)
- Correction de
parseDateTimeBestEffortpour les chaînes au format RFC-2822 lorsque le jour de la semaine est le mardi ou le jeudi. Cela corrige #10082 #10214 (alexey-milovidov) - Correction des noms de colonnes des constantes à l’intérieur de JOIN, qui peuvent entrer en conflit avec ceux des constantes à l’extérieur de JOIN. #10207 (alexey-milovidov)
- Correction de l’optimisation move-to-prewhere en présence de fonctions arrayJoin (dans certains cas). Cela corrige #10092 #10195 (alexey-milovidov)
- Correction d’un problème de séparateur apparaissant dans SCRAMBLE pour mysql-connector-java natif (JDBC). #10140 (BohuTANG)
- Correction de l’utilisation de la base de données courante pour la vérification des accès lorsque la base de données n’est pas spécifiée. #10192 (Vitaly Baranov)
- Correction de ALTER sur les tables avec des parts compactes. #10130 (Anton Popov)
- Ajout de la possibilité d’assouplir la restriction sur l’utilisation de fonctions non déterministes dans les mutations avec le paramètre
allow_nondeterministic_mutations. #10186 (filimonov) - Correction de l’appel à
DROP TABLEpour un dictionnaire. #10165 (Azat Khuzhin) - Conversion des blocks si la structure ne correspond pas lors d’un
INSERTdans une table Distributed. #10135 (Azat Khuzhin) - Le nombre de rows était consigné de manière incorrecte (comme somme sur toutes les parts) lorsque le block inséré est réparti en parts selon la clé de partition. #10138 (alexey-milovidov)
- Ajout de la vérification de certains arguments et prise en charge des arguments d’identifiant pour le moteur de base de données MySQL. #10077 (Winter Zhang)
- Correction d’une vérification incorrecte de
index_granularity_byteslors de la création d’une nouvelle replica. Corrige #10098. #10121 (alesapin) - Correction d’un bug dans la requête
CHECK TABLElorsque la table contient des index de saut. #10068 (alesapin) - Correction de Distributed-over-Distributed avec un seul shard dans une table imbriquée. #9997 (Azat Khuzhin)
- Correction d’une possible perte de rows pour les queries avec
JOINetUNION ALL. Corrige #9826, #10113. … #10099 (Nikolai Kochetov) - Correction d’un bug dans le dictionnaire lorsque le serveur ClickHouse local est utilisé comme source. Cela pouvait provoquer une corruption de la mémoire si les types du dictionnaire et de la source n’étaient pas compatibles. #10071 (alesapin)
- Correction du démarrage des tables répliquées lors d’une mise à niveau depuis une ancienne version de ClickHouse où le nœud
/table/replicas/replica_name/metadatan’existe pas. Corrige #10037. #10095 (alesapin) - Correction de l’erreur
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Cela se produisait lorsque le paramètredistributed_aggregation_memory_efficientétait activé et qu’une requête distribuée lisait des données agrégées avec un mélange d’agrégation à un niveau et à deux niveaux provenant de différents shards. #10063 (Nikolai Kochetov) - Correction d’un interblocage lorsqu’une base de données avec une vue matérialisée échouait lors de l’ATTACH au démarrage #10054 (Azat Khuzhin)
- Correction d’une erreur de segmentation pouvant se produire avec GROUP BY sur des clés de type chaîne contenant des octets nuls en fin de chaîne (#8636, #8925). … #10025 (Alexander Kuzmenkov)
- Correction de résultats incorrects dans les requêtes distribuées lorsqu’un alias pouvait remplacer un nom de colonne qualifié. Corrige #9672 #9714 #9972 (Artem Zuikov)
- Correction d’un interblocage possible dans
SYSTEM RESTART REPLICAS#9955 (tavplubix) - Correction du nombre de threads utilisés pour l’exécution distante des requêtes (régression de performances depuis la version 20.3). Cela se produisait lorsqu’une requête sur une table
Distributedétait exécutée simultanément sur des shards locaux et distants. Corrige #9965 #9971 (Nikolai Kochetov) - Correction de la logique
DeleteOnDestroydansATTACH PART, qui pouvait entraîner la suppression automatique de la part attachée, et ajout de quelques tests #9410 (Vladimir Chebotarev) - Correction d’un bug où les requêtes DDL
ON CLUSTERse figeaient au démarrage du serveur. #9927 (Gagan Arneja) - Correction d’un bug où les tables nécessaires n’étaient pas récupérées à l’une des étapes de traitement des requêtes sur certaines bases de données. Corrige #9699. #9949 (achulkov2)
- Correction de l’erreur ‘Not found column in block’ lorsque
JOINest utilisé avecTOTALS. Corrige #9839 #9939 (Artem Zuikov) - Correction de l’analyse de plusieurs hôtes définis dans la commande CREATE USER #9924 (Vitaly Baranov)
- Correction de
TRUNCATEpour le moteur de table Join (#9917). #9920 (Amos Bird) - Correction d’une condition de concurrence entre
dropetoptimizedansReplicatedMergeTree. #9901 (alesapin) - Correction de
DISTINCTpour Distributed lorsqueoptimize_skip_unused_shardsest activé. #9808 (Azat Khuzhin) - Correction de l’erreur “scalar does not exist” dans les ALTER (#9878). … #9904 (Amos Bird)
- Correction d’une erreur liée aux noms qualifiés dans
distributed_product_mode=\'local\'. Corrige #4756 #9891 (Artem Zuikov) - Pour les requêtes INSERT, les shards limitent désormais les paramètres du nœud initiateur à leurs contraintes au lieu de lever une exception. Ce correctif permet d’envoyer des requêtes INSERT vers un shard avec des contraintes différentes. Ce changement améliore le correctif de #9447. #9852 (Vitaly Baranov)
- Ajout de quelques tentatives supplémentaires lors du commit des offsets vers le broker Kafka, car il peut rejeter le commit si, pendant
offsets.commit.timeout.ms, il n’y avait pas assez de répliques disponibles pour le topic__consumer_offsets#9884 (filimonov) - Correction du comportement du moteur Distributed lorsque des colonnes virtuelles de la table sous-jacente sont utilisées dans
WHERE#9847 (Azat Khuzhin) - Correction de certains cas où le fuseau horaire de l’argument de la fonction n’était pas utilisé correctement. #9574 (Vasily Nemkov)
- Correction de l’erreur ‘Different expressions with the same alias’ lorsque la requête comporte PREWHERE et WHERE sur une table distribuée et
SET distributed_product_mode = 'local'. #9871 (Artem Zuikov) - Correction de la consommation mémoire excessive des mutations pour les tables avec une clé primaire composite. Cela corrige #9850. #9860 (alesapin)
- Correction du calcul des privilèges pour les fonctions d’introspection à partir du paramètre
allow_introspection_functions. #9840 (Vitaly Baranov) - Correction de max_distributed_connections (avec et sans Processors) #9673 (Azat Khuzhin)
- Correction d’une exception possible
Got 0 in totals chunk, expected 1côté client. Cela se produisait pour les requêtes avecJOINlorsque la table jointe à droite ne contenait aucune ligne. Exemple :select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. … #9823 (Nikolai Kochetov) - Correction de l’erreur ‘COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query’ dans le cas de sous-requêtes avec COMMA JOIN en dehors des listes de tables (c.-à-d. dans WHERE). Corrige #9782 #9830 (Artem Zuikov)
- Correction d’un crash du serveur lorsque
optimize_skip_unused_shardsest défini et que l’expression de la clé ne peut pas être convertie dans le type de son champ #9804 (Azat Khuzhin) - Correction de la gestion des chaînes vides dans
splitByString. #9767 (hcz) - Correction de la requête
ALTER TABLE DELETE COLUMNdéfaillante pour les parts compactes. #9779 (alesapin) - Correction de l’absence de
rows_before_limit_at_leastpour les requêtes via HTTP (avec le pipeline de processeurs). Corrige #9730 #9757 (Nikolai Kochetov) - Correction d’une consommation mémoire excessive dans les requêtes
ALTER(mutations). Corrige #9533 et #9670. #9754 (alesapin) - Correction d’une éventuelle erreur permanente “Cannot schedule a task”. #9154 (Azat Khuzhin)
- Correction d’un bug dans l’utilisation des accents graves dans le DDL des dictionnaires externes. Corrige #9619. #9734 (alesapin)
- Correction d’une data race dans
text_log. Cela ne correspond à aucun bogue réel. #9726 (alexey-milovidov) - Correction d’un bug de réplication qui empêchait la réplication de fonctionner si l’utilisateur avait exécuté des mutations sur la version précédente. Corrige #9645. #9652 (alesapin)
- Correction de noms internes de fonctions incorrects pour
sumKahanetsumWithOverflow. Cela provoquait une exception lors de l’utilisation de ces fonctions dans des requêtes distantes. #9636 (Azat Khuzhin) - Ajout du paramètre
use_compact_format_in_distributed_parts_names, qui permet d’écrire les fichiers des requêtesINSERTdans une tableDistributeddans un format plus compact. Corrige #9647. #9653 (alesapin) - Correction de RIGHT et FULL JOIN avec LowCardinality dans les clés de JOIN. #9610 (Artem Zuikov)
- Correction d’exceptions possibles
Size of filter does not match size of columnetInvalid number of rows in ChunkdansMergeTreeRangeReader. Elles pouvaient apparaître lors de l’exécution dePREWHEREdans certains cas. #9612 (Anton Popov) - Autorise
ALTER ON CLUSTERpour les tables distribuées avec réplication interne. Corrige #3268 #9617 (shinoi2) - Corrige un problème de non-conservation du fuseau horaire lors de l’écriture d’une expression arithmétique simple comme
time + 1(par opposition à une expression commetime + INTERVAL 1 SECOND). Corrige #5743 #9323 (alexey-milovidov)
Amélioration
- Utilisation du fuseau horaire lors de la comparaison d’un DateTime avec un littéral de chaîne. Cela corrige #5206. #10515 (alexey-milovidov)
- Affichage d’informations de diagnostic détaillées si une valeur Decimal ne peut pas être analysée à partir d’un format d’entrée texte. #10205 (alexey-milovidov)
- Ajout de métriques de tâches et d’utilisation mémoire pour les pools de planification distributed/buffer #10449 (Azat Khuzhin)
- Affichage du résultat dès qu’il est prêt pour les requêtes SELECT DISTINCT dans clickhouse-local et l’interface HTTP. Cela corrige #8951 #9559 (alexey-milovidov)
- Possibilité d’utiliser la requête
SAMPLE OFFSETau lieu decityHash64(PRIMARY KEY) % N == npour le fractionnement dansclickhouse-copier. Pour utiliser cette fonctionnalité, passez--experimental-use-sample-offset 1en argument de ligne de commande. #10414 (Nikita Mikhaylov) - Prise en charge de l’analyse du BOM dans TSV si la première colonne ne peut pas contenir de BOM dans sa valeur. Cela corrige #10301 #10424 (alexey-milovidov)
- Ajout de la prise en charge de l’insertion de champs imbriqués Avro #10354 (Andrew Onyshchuk)
- Possibilité de modifier une colonne en mode de données non modifiant lorsque le même type est spécifié. #10382 (Vladimir Chebotarev)
- Activation automatique de
distributed_group_by_no_mergesur la clé de sharding de GROUP BY (sioptimize_skip_unused_shardsest défini) #10341 (Azat Khuzhin) - Optimisation des requêtes avec LIMIT/LIMIT BY/ORDER BY pour Distributed avec clé de sharding de GROUP BY #10373 (Azat Khuzhin)
- Ajout d’un paramètre
max_server_memory_usagepour limiter l’utilisation mémoire totale du serveur. La métriqueMemoryTrackingest désormais calculée sans dérive. Le paramètremax_memory_usage_for_all_queriesest maintenant obsolète et n’a aucun effet. Cela clôt #10293. #10362 (alexey-milovidov) - Ajout de l’option de config
system_tables_lazy_load. Si elle est définie sur false, les tables système contenant des logs sont chargées au démarrage du serveur. Alexander Burmak, Svyatoslav Tkhon Il Pak, #9642 #10359 (alexey-milovidov) - Utilisation du pool de threads d’arrière-plan (background_schedule_pool_size) pour les envois distributed #10263 (Azat Khuzhin)
- Utilisation du pool de threads d’arrière-plan pour les flushes de buffer en arrière-plan. #10315 (Azat Khuzhin)
- Prise en charge d’un cas particulier de suppression de parts écrites incomplètement. Cela corrige #9940. #10221 (alexey-milovidov)
- Utilise isInjective() au lieu d’une liste manuelle de fonctions de ce type pour l’optimisation de GROUP BY. #10342 (Azat Khuzhin)
- Évite d’afficher un message d’erreur dans le log si le client envoie un paquet RST immédiatement après la connexion. Il s’agit du comportement typique de l’équilibreur de charge IPVS avec keepalived et VRRP. Cela corrige #1851 #10274 (alexey-milovidov)
- Autorise l’analyse de
+infpour les types à virgule flottante. Cela clôt #1839 #10272 (alexey-milovidov) - Implémentation de la table function
generateRandompour les types Nested. Cela clôt #9903 #10219 (alexey-milovidov) - Ajoute
max_allowed_packedà l’interface de compatibilité MySQL, ce qui aidera certains clients à communiquer avec ClickHouse via le protocole MySQL. #10199 (BohuTANG) - Autorise les littéraux pour GLOBAL IN (c.-à-d.
SELECT * FROM remote('localhost', system.one) WHERE dummy global in (0)) #10196 (Azat Khuzhin) - Corrige divers petits problèmes dans le mode interactif de clickhouse-client #10194 (alexey-milovidov)
- Évite le chargement inutile des Dictionaries (system.tables, DROP/SHOW CREATE TABLE) #10164 (Azat Khuzhin)
- Mise à jour de RWLock : paramètre de délai d’expiration pour getLock() + implémentation retravaillée pour garantir l’équité entre phases #10073 (Alexander Kazakov)
- Compatibilité améliorée avec mysql-connector-java(JDBC) natif #10021 (BohuTANG)
- La fonction
toStringest considérée comme monotone et peut être utilisée pour l’analyse d’index même lorsqu’elle est appliquée dans des cas tautologiques avec un argument String ou LowCardinality(String). #10110 (Amos Bird) - Ajout de la prise en charge de la clause
ON CLUSTERpour les commandes{CREATE|DROP} USER/ROLE/ROW POLICY/SETTINGS PROFILE/QUOTA,GRANT. #9811 (Vitaly Baranov) - Prise en charge du style d’hébergement virtuel pour les URI S3 #9998 (Pavel Kovalenko)
- Désormais, le type de layout des Dictionaries sans arguments peut être spécifié sans parenthèses dans les requêtes DDL des Dictionaries. Corrige #10057. #10064 (alesapin)
- Ajout de la possibilité d’utiliser des plages de nombres avec des zéros initiaux dans le chemin de fichier #9989 (Olga Khvostikova)
- Meilleure utilisation de la mémoire dans CROSS JOIN. #10029 (Artem Zuikov)
- Tentative de connexion à tous les shards du cluster lors de la récupération de la structure d’une table distante lorsque skip_unavailable_shards est défini. #7278 (nvartolomei)
- Ajout de
total_rows/total_bytesà la tablesystem.tables. #9919 (Azat Khuzhin) - Les tables de logs système utilisent désormais des parties polymorphes par défaut. #9905 (Anton Popov)
- Ajout de la colonne type dans system.settings/merge_tree_settings #9909 (Azat Khuzhin)
- Vérification de la disponibilité des instructions CPU le plus tôt possible au démarrage du serveur. #9888 (alexey-milovidov)
- Suppression de l’étape
ORDER BYdes mutations, car la lecture s’effectue à partir d’une seule partie ordonnée dans un seul thread. Ajout également d’une vérification pour s’assurer que les lignes de la mutation sont ordonnées selon la clé de tri et que cet ordre n’est pas rompu. #9886 (alesapin) - Implémentation de l’opérateur LIKE avec FixedString à gauche. Cela est nécessaire pour mieux prendre en charge les requêtes TPC-DS. #9890 (alexey-milovidov)
- Ajout de
force_optimize_skip_unused_shards_no_nested, qui désactiveforce_optimize_skip_unused_shardspour une table Distributed imbriquée #9812 (Azat Khuzhin) - Désormais, la taille des colonnes n’est calculée qu’une seule fois pour les parties de données MergeTree. #9827 (alesapin)
- Évaluation des expressions constantes pour
optimize_skip_unused_shards(c.-à-d.SELECT * FROM foo_dist WHERE key=xxHash32(0)) #8846 (Azat Khuzhin) - La vérification de l’utilisation d’une colonne
DateouDateTimedans les expressions TTL a été supprimée. #9967 (Vladimir Chebotarev) - Implémentation optimisée des hard links de DiskS3. #9760 (Pavel Kovalenko)
- Si
set multiple_joins_rewriter_version = 2est défini, cela active la deuxième version des réécritures de JOIN multiples, qui conserve tels quels les noms de colonnes non conflictuels. Elle prend en charge plusieurs JOIN avecUSINGet permetselect *pour les JOIN avec des sous-requêtes. #9739 (Artem Zuikov) - Implémentation d’un alter “non bloquant” pour StorageMergeTree #9606 (alesapin)
- Ajout de la prise en charge complète de DiskS3 par MergeTree #9646 (Pavel Kovalenko)
- Étend
splitByStringpour prendre en charge les chaînes vides comme séparateurs. #9742 (hcz) - Ajoute une colonne
timestamp_nsàsystem.trace_log. Elle contient un horodatage en haute résolution de l’événement de trace et permet de construire des chronologies de profils de threads (« flame charts »). #9696 (Alexander Kuzmenkov) - Lorsque le paramètre
send_logs_levelest activé, évite le mélange entre les messages de log et la progression de la requête. #9634 (Azat Khuzhin) - Ajout de la prise en charge de
MATERIALIZE TTL IN PARTITION. #9581 (Vladimir Chebotarev) - Ajoute la prise en charge des types complexes dans les champs imbriqués Avro #10502 (Andrew Onyshchuk)
Amélioration des performances
- Amélioration de la logique d’insertion pour la table de droite dans Partial MergeJoin. #10467 (Artem Zuikov)
- Amélioration des performances des formats orientés lignes (plus de 10 % pour CSV et plus de 35 % pour Avro dans le cas des tables étroites). #10503 (Andrew Onyshchuk)
- Amélioration des performances des requêtes avec des ensembles explicitement définis à droite de l’opérateur IN et des tuples à gauche. #10385 (Anton Popov)
- Réduction de l’utilisation mémoire de la table de hachage dans HashJoin. #10416 (Artem Zuikov)
- HashJoin spécial sur StorageDictionary. Permet de réécrire les fonctions
dictGet()en JOINs. Ce n’est pas incompatible avec les versions précédentes en soi, mais cela pourrait mettre en évidence #8400 sur certaines installations. #10133 (Artem Zuikov) - Activation de l’insertion parallèle de la vue matérialisée lorsque sa table cible le permet. #10052 (vxider)
- Amélioration des performances de l’analyse des index avec des fonctions monotones. #9607#10026 (Anton Popov)
- Utilisation des intrinsèques SIMD SSE2 ou SSE4.2 pour accélérer la tokenisation dans les filtres de Bloom. #9968 (Vasily Nemkov)
- Amélioration des performances des requêtes avec des ensembles explicitement définis à droite de l’opérateur
IN. Cela corrige la régression de performances de la version 20.3. #9740 (Anton Popov) - Désormais, clickhouse-copier découpe chaque partition en plusieurs parties et les copie indépendamment. #9075 (Nikita Mikhaylov)
- Ajout de davantage de méthodes d’agrégation. Par exemple, la requête TPC-H 1 choisira désormais
FixedHashMap<UInt16, AggregateDataPtr>et obtiendra un gain de performances de 25 % #9829 (Amos Bird) - Utilisation d’un compteur de lignes unique pour plusieurs flux dans la transformation pre-limit. Cela permet d’éviter d’unifier les flux du pipeline dans les requêtes avec
limitmais sansorder by(commeselect f(x) from (select x from t limit 1000000000)) et d’utiliser plusieurs threads pour la suite du traitement. #9602 (Nikolai Kochetov)
Amélioration de la compilation, des tests et du packaging
- Utiliser un fork des bibliothèques AWS SDK de ClickHouse-Extras #10527 (Pavel Kovalenko)
- Ajouter des tests d’intégration pour la nouvelle requête ALTER RENAME COLUMN. #10654 (vzakaznikov)
- Corriger un possible dépassement de capacité d’entier signé lors de l’appel de la fonction
now64avec des arguments incorrects. Cela corrige #8973 #10511 (alexey-milovidov) - Séparer les configurations de fuzzer et de sanitizer pour rendre la configuration de build compatible avec Oss-fuzz. #10494 (kyprizel)
- Corrections de clang-tidy pour clang-10. #10420 (alexey-milovidov)
- Afficher les chemins absolus dans les messages d’erreur. Sinon, KDevelop ne parvient pas à accéder au bon fichier et en ouvre un nouveau à la place. #10434 (alexey-milovidov)
- Ajouter la variable d’environnement
ASAN_OPTIONSpour analyser les erreurs dans les tests de charge de la CI avec AddressSanitizer. #10440 (Nikita Mikhaylov) - Activer ThinLTO pour les builds clang (expérimental). #10435 (alexey-milovidov)
- Supprimer la dépendance accidentelle à Z3 qui peut être introduite si le système a le solveur Z3 installé. #10426 (alexey-milovidov)
- Déplacer les fichiers Docker des tests d’intégration vers le répertoire docker/. #10335 (Ilya Yatsishin)
- Autoriser l’utilisation de
clang-10dans la CI. Cela garantit que #10238 est corrigé. #10384 (alexey-milovidov) - Mettre à jour OpenSSL vers la branche master du dépôt upstream. Cela corrige le problème dans lequel des connexions TLS pouvaient échouer avec le message
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal erroretSSL Exception: error:2400006E:random number generator::error retrieving entropy. Le problème était présent dans la version 20.1. #8956 (alexey-milovidov) - Corriger le build clang-10. #10238 #10370 (Amos Bird)
- Ajouter un test de performance pour Parallel INSERT for materialized view. #10345 (vxider)
- Corriger le test instable
test_settings_constraints_distributed.test_insert_clamps_settings. #10346 (Vitaly Baranov) - Ajouter un utilitaire pour l’envoi des résultats de test dans la CI de ClickHouse #10330 (Ilya Yatsishin)
- Convertir les résultats des tests au format JSONEachRow dans l’outil junit_to_html #10323 (Ilya Yatsishin)
- Mettre à jour cctz. #10215 (alexey-milovidov)
- Autoriser la création d’un rapport HTML à partir d’un rapport XML JUnit pur. #10247 (Ilya Yatsishin)
- Mettre à jour la vérification de la version minimale du compilateur. Corrige la cause racine de l’issue #10250 #10256 (alexey-milovidov)
- Prise en charge initiale des tables live view sur Distributed #10179 (vzakaznikov)
- Corriger le rapport MSan (erroné) dans MergeTreeIndexFullText. L’issue est apparue pour la première fois dans #9968. #10801 (alexey-milovidov)
- clickhouse-docker-util #10151 (filimonov)
- Mettre à jour pdqsort vers une version plus récente #10171 (Ivan)
- Mettre à jour libdivide vers la v3.0 #10169 (Ivan)
- Ajouter une vérification avec les parts polymorphes activées. #10086 (Anton Popov)
- Ajouter un build de compilation croisée pour FreeBSD. Cela corrige #9465 #9643 (Ivan)
- Ajouter un test de performances pour #6924 #6980 (filimonov)
- Ajouter la prise en charge de
/dev/nulldans le moteurFilepour améliorer les tests de performances #8455 (Amos Bird) - Déplacer tous les dossiers à l’intérieur de /dbms d’un niveau vers le haut #9974 (Ivan)
- Ajouter un test qui vérifie que la lecture depuis MergeTree avec un seul thread s’effectue in order. Complément à #9670 #9762 (alexey-milovidov)
- Corriger le test
00964_live_view_watch_events_heartbeat.pypour éviter une race condition. #9944 (vzakaznikov) - Corriger le test d’intégration
test_settings_constraints#9962 (Vitaly Baranov) - Une fonction par fichier, partie 12. #9922 (alexey-milovidov)
- Ajout d’un test de performance pour le cas d’une analyse extrêmement lente d’un tableau de tuples. #9872 (alexey-milovidov)
- Mise à jour de zstd vers la version 1.4.4. Elle apporte quelques améliorations mineures en matière de performances et de taux de compression. Si vous exécutez des répliques avec différentes versions de ClickHouse, vous pouvez voir apparaître des messages d’erreur explicites
Data after merge is not byte-identical to data on another replicas.accompagnés d’une explication. Ces messages sont normaux et ne doivent pas vous inquiéter. #10663 (alexey-milovidov) - Correction d’un signalement TSan dans
system.stack_trace. #9832 (alexey-milovidov) - Suppression de la dépendance à
clock_getres. #9833 (alexey-milovidov) - Ajout d’une vérification des noms d’identifiants avec clang-tidy. #9799 (alexey-milovidov)
- Mise à jour de l’image Docker “builder”. Cette image n’est pas utilisée dans la CI, mais elle est utile aux développeurs. #9809 (alexey-milovidov)
- Suppression de l’ancien outil
performance-test, qui n’est plus utilisé dans la CI.clickhouse-performance-testest excellent, mais nous utilisons maintenant un outil bien meilleur, qui effectue des tests comparatifs à l’aide de formules statistiques sophistiquées afin d’obtenir des résultats fiables malgré les variations de l’environnement. #9796 (alexey-milovidov) - Ajout de la plupart des vérifications de clang-static-analyzer. #9765 (alexey-milovidov)
- Mise à jour de Poco vers la version 1.9.3 en préparation de la prise en charge des URI MongoDB. #6892 (Alexander Kuzmenkov)
- Correction de la compilation avec
-DUSE_STATIC_LIBRARIES=0 -DENABLE_JEMALLOC=0#9651 (Artem Zuikov) - Pour le script de journal des modifications, si un commit de merge a fait l’objet d’un cherry-pick vers une branche de release, récupérer le nom de la PR depuis la description du commit. #9708 (Nikolai Kochetov)
- Prise en charge du tag
vX.X-conflictsdans le script de backport. #9705 (Nikolai Kochetov) - Correction de
auto-labeldans le script de backport. #9685 (Nikolai Kochetov) - Utilisation de libc++ dans la compilation croisée pour Darwin afin de la rendre cohérente avec la compilation native. #9665 (Hui Wang)
- Correction du test instable
01017_uniqCombined_memory_usage. Suite de #7236. #9667 (alexey-milovidov) - Correction de la compilation avec le compilateur Clang natif de macOS #9649 (Ivan)
- Permet d’ajouter diverses perturbations autour des fonctions
pthread_mutex_lock,pthread_mutex_unlock. #9635 (alexey-milovidov) - Ajout de la prise en charge de
clang-tidydans le scriptpackager. #9625 (alexey-milovidov) - Ajout de la possibilité d’utiliser msgpack non embarqué. #10168 (Azat Khuzhin)
Version de ClickHouse v20.3
Version de ClickHouse v20.3.21.2-lts, 2020-11-02
Correction de bugs
- Correction de dictGet dans sharding_key (et dans des cas similaires, c.-à-d. lorsque le contexte de la fonction est stocké de manière permanente). #16205 (Azat Khuzhin).
- Correction d’un résultat vide erroné pour une query sur une table
Distributedsi la query contientWHERE,PREWHEREetGLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov). - Correction des headers manquants ou en trop dans les formats
TSV/CSVWithNames. Corrige #12504. #13343 (Azat Khuzhin).
Version de ClickHouse v20.3.20.6-lts, 2020-10-09
Correction de bugs
- Une mutation pouvait rester bloquée en attendant une part inexistante après
MOVEouREPLACE PARTITIONou, dans de rares cas, aprèsDETACHouDROP PARTITION. C’est corrigé. #15724, #15537 (tavplubix). - Correction d’un blocage de requêtes comportant de nombreuses sous-requêtes sur la même table du moteur
MySQL. Auparavant, s’il y avait plus de 16 sous-requêtes sur la même tableMySQLdans une requête, celle-ci restait bloquée indéfiniment. #15299 (Anton Popov). - Correction de « Unknown identifier » dans GROUP BY lorsqu’une requête contient un JOIN sur une table Merge. #15242 (Artem Zuikov).
- Correction pour que le push down de prédicat fonctionne lorsque la sous-requête contient la fonction finalizeAggregation. Corrige #14847. #14937 (filimonov).
- Des requêtes concurrentes
ALTER ... REPLACE/MOVE PARTITION ...pouvaient provoquer un interblocage. C’est corrigé. #13626 (tavplubix).
Version de ClickHouse v20.3.19.4-lts, 2020-09-18
Correction de bugs
- Corrige une erreur rare dans les requêtes
SELECTlorsque la colonne interrogée possède une expressionDEFAULTqui dépend d’une autre colonne, elle aussi définie avecDEFAULT, qui n’est pas présente dans la requêteSELECTet n’existe pas sur le disque. Corrige partiellement #14531. #14845 (alesapin). - Corrige un bug où une mutation
ALTER UPDATE, avec une colonne Nullable dans l’expression d’affectation et une valeur constante (commeUPDATE x = 42), entraîne une valeur incorrecte dans la colonne ou un segfault. Corrige #13634, #14045. #14646 (alesapin). - Corrige un résultat incorrect lors d’une multiplication Decimal, dû à une échelle décimale erronée dans la colonne de résultat. #14603 (Artem Zuikov).
Amélioration
- Prise en charge des codecs personnalisés dans les parts compactes. #12183 (Anton Popov).
Version de ClickHouse v20.3.18.10-lts, 2020-09-08
correction de bugs
- Arrête l’exécution de la requête si une exception se produit dans
PipelineExecutorlui-même. Cela peut éviter de rares blocages de requêtes. Suite de #14334. #14402 (Nikolai Kochetov). - Correction du comportement où, parfois, le dictionnaire de type
cacherenvoyait la valeur par défaut au lieu de la valeur effectivement présente dans la source. #13624 (Nikita Mikhaylov). - Correction de l’analyse des politiques de lignes dans users.xml lorsque les noms des bases de données ou des tables contiennent des points. Cela corrige #5779, #12527. #13199 (Vitaly Baranov).
- Correction de CAST(Nullable(String), Enum()). #12745 (Azat Khuzhin).
- Correction d’une data race dans
text_log. Cela ne correspond à aucun bug réel. #9726 (alexey-milovidov).
Amélioration
- Correction d’un message d’erreur incorrect pour les requêtes longues. Il pouvait arriver d’obtenir une erreur de syntaxe autre que
Max query size exceededpour une requête valide. #13928 (Nikolai Kochetov). - Renvoie NULL/zéro lorsque la valeur n’est pas entièrement analysée dans les fonctions parseDateTimeBestEffortOrNull/Zero. Corrige #7876. #11653 (alexey-milovidov).
Amélioration des performances
- Légère optimisation des requêtes très courtes avec LowCardinality. #14129 (Anton Popov).
Amélioration de la compilation/des tests/du packaging
- Correction d’une erreur signalée par UBSan (ajout de zéro à
nullptr) dans HashTable, apparue après la migration vers clang-10. #10638 (alexey-milovidov).
Version de ClickHouse v20.3.17.173-lts, 2020-08-15
Correction de bugs
- Corrige un plantage dans JOIN avec StorageMerge et
set enable_optimize_predicate_expression=1. #13679 (Artem Zuikov). - Corrige le type de retour invalide pour la comparaison de tuples contenant des éléments
NULL. Corrige #12461. #13420 (Nikolai Kochetov). - Corrige les requêtes avec des colonnes constantes et un préfixe de clé primaire dans
ORDER BY. #13396 (Anton Popov). - Retourne le nombre passé pour les nombres dont le bit de poids fort est défini dans roundUpToPowerOfTwoOrZero(). #13234 (Azat Khuzhin).
Version de ClickHouse v20.3.16.165-lts 2020-08-10
correction de bugs
- Correction d’une erreur dans la fonction
parseDateTimeBestEffortlorsqu’un timestamp Unix était passé en argument. Cela corrige #13362. #13441 (alexey-milovidov). - Correction d’une baisse potentielle des performances et d’un résultat légèrement incorrect pour
uniqExact,topK,sumDistinctet des fonctions d’agrégation similaires appelées sur des types Float avec des valeursNaN. Cela déclenchait également un assert dans une build de débogage. Cela corrige #12491. #13254 (alexey-milovidov). - Correction de la fonction if avec un constexpr Nullable utilisé comme condition, sans être un NULL littéral. Corrige #12463. #13226 (alexey-milovidov).
- Correction d’un assert dans la fonction
arrayElementlorsque les éléments du tableau sont Nullable et que l’indice du tableau est lui aussi Nullable. Cela corrige #12172. #13224 (alexey-milovidov). - Correction d’une limitation inutile du nombre de threads pour les selects depuis une replica locale. #12840 (Nikolai Kochetov).
- Correction de la possible présence d’une ligne d’overflow supplémentaire dans les données, pouvant apparaître avec les queries
WITH TOTALS. #12747 (Nikolai Kochetov). - Amélioration des performances avec les grands tuples, interprétés comme des fonctions dans la section
IN. Il s’agit du cas où l’utilisateur écritWHERE x IN tuple(1, 2, ...)au lieu deWHERE x IN (1, 2, ...), pour une raison obscure. #12700 (Anton Popov). - Correction du suivi de la mémoire pour input_format_parallel_parsing (en rattachant le thread au groupe). #12672 (Azat Khuzhin).
- Correction de #12293 : autorisation du push predicate lorsque la subquery contient une clause WITH. #12663 (Winter Zhang).
- Correction de #10572 : correction de l’index de bloom filter avec une expression const. #12659 (Winter Zhang).
- Correction d’un SIGSEGV dans StorageKafka lorsque le broker est indisponible (et pas uniquement dans ce cas). #12658 (Azat Khuzhin).
- Correction d’une race condition dans les dictionnaires externes avec une disposition cache pouvant entraîner un crash du serveur. #12566 (alesapin).
- Correction d’un bug qui entraînait la corruption d’anciennes parts après une query
ALTER DELETElorsqueenable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin). - Message d’exception amélioré pour la fonction
inavec un nombre d’arguments invalide. #12529 (Anton Popov). - Correction d’un problème de performances lors de la lecture de compact parts. #12492 (Anton Popov).
- Correction d’un interblocage lorsque
text_logest activé. #12452 (alexey-milovidov). - Correction d’un segfault possible avec StorageMerge. Clôt #12054. #12401 (tavplubix).
- Correction de
TOTALS/ROLLUP/CUBEpour les fonctions d’agrégation avec des arguments-StateetNullable. Cela corrige #12163. #12376 (alexey-milovidov). - Correction de l’ordre des colonnes dans le modificateur
WITH FILL. Auparavant, l’ordre des colonnes de l’instructionORDER BYn’était pas respecté. #12306 (Anton Popov). - Évite l’exception “bad cast” lorsqu’une expression filtre les données par des colonnes virtuelles (comme
_tabledans les tablesMerge) ou par des colonnes d’“index” dans des tables système, par exemple lors d’un filtrage par nom de base de données dans une requête sursystem.tables, et que cette expression renvoie le typeNullable. Cela corrige #12166. #12305 (alexey-milovidov). - Affiche une erreur après l’échec du chargement de
TrieDictionary. #12290 (Vitaly Baranov). - La fonction
arrayFillfonctionnait incorrectement pour les tableaux vides, ce qui pouvait entraîner un crash. Cela corrige #12263. #12279 (alexey-milovidov). - Implémentation des conversions vers le type commun pour les types
LowCardinality. Cela permet d’exécuter UNION ALL sur des tables avec des colonnes LowCardinality et d’autres colonnes. Cela corrige #8212. Cela corrige #4342. #12275 (alexey-milovidov). - Correction du comportement lorsque, lors de plusieurs insertions séquentielles dans
StorageFile, l’en-tête de certains types spéciaux était écrit plus d’une fois. Cela corrige #6155. #12197 (Nikita Mikhaylov). - Correction des fonctions logiques pour les valeurs UInt8 lorsqu’elles ne sont pas égales à 0 ou 1. #12196 (Alexander Kazakov).
- Correction de la vérification des arguments de
dictGetlors de l’élimination des fonctions injectives de GROUP BY. #12179 (Azat Khuzhin). - Correction d’une logique erronée dans
ALTER DELETEqui entraînait la suppression d’enregistrements lorsque la condition était évaluée à NULL. Cela corrige #9088. Cela clôt #12106. #12153 (alexey-milovidov). - Correction de la transformation de la requête à envoyer à un SGBD externe (p. ex. MySQL, ODBC) en présence d’alias. Cela corrige #12032. #12151 (alexey-milovidov).
- Correction d’un dépassement potentiel lors d’une division entière. Cela corrige #12119. #12140 (alexey-milovidov).
- Correction d’une boucle infinie potentielle dans
greatCircleDistanceetgeoDistance. Cela corrige #12117. #12137 (alexey-milovidov). - Évite l’exception
There is no querypour les vues matérialisées avec des jointures ou des sous-requêtes, attachées aux logs système (system.query_log, metric_log, etc.) ou à la table sous-jacente de engine=Buffer. #12120 (filimonov). - Correction des performances des requêtes
SELECTavecUNION, dues à une limite incorrecte du nombre total de threads. Corrige #12030. #12103 (Nikolai Kochetov). - Correction d’un segfault avec les combinators
-StateResample. #12092 (Anton Popov). - Correction d’une limitation inutile du nombre de threads pour les requêtes
SELECTdepuisVIEW. Corrige #11937. #12085 (Nikolai Kochetov). - Correction d’un crash possible lors de l’utilisation d’un type incorrect pour
PREWHERE. Corrige #12053, #12060. #12060 (Nikolai Kochetov). - Correction de l’erreur
Expected single dictionary argument for functionpour la fonctiondefaultValueOfArgumentTypeavec le typeLowCardinality. Corrige #11808. #12056 (Nikolai Kochetov). - Correction de l’erreur
Cannot capture columnpour les fonctions d’ordre supérieur avec un argumentTuple(LowCardinality). Corrige #9766. #12055 (Nikolai Kochetov). - Analyse des métadonnées des tables en parallèle lors du chargement de la base de données. Cela corrige la lenteur du démarrage du serveur lorsqu’un grand nombre de tables est présent. #12045 (tavplubix).
- Fait en sorte que la fonction d’agrégation
topKrenvoieEnumpour les typesEnum. Cela corrige #3740. #12043 (alexey-milovidov). - Correction de la vérification des contraintes lorsque la contrainte est une expression constante. Cela corrige #11360. #12042 (alexey-milovidov).
- Correction d’une comparaison incorrecte de tuples avec des colonnes
Nullable. Corrige #11985. #12039 (Nikolai Kochetov). - Correction d’un résultat erroné et d’un crash potentiel lors de l’appel de la fonction
ifavec des arguments de typeFixedStringde tailles différentes. Corrige #11362. #12021 (alexey-milovidov). - Une query dont la fonction
neighborest la seule expression renvoyée peut produire un résultat vide si la fonction est appelée avec l’offset-9223372036854775808. Corrige #11367. #12019 (alexey-milovidov). - Correction d’un dépassement potentiel de la taille d’un tableau dans generateRandom, pouvant entraîner un crash. Corrige #11371. #12013 (alexey-milovidov).
- Correction d’une exception potentielle de virgule flottante. Clôt #11378. #12005 (alexey-milovidov).
- Correction d’un nom de paramètre erroné dans un message de log au démarrage du server. #11997 (alexey-milovidov).
- Correction de
Query parameter was not setdans le formatValues. Corrige #11918. #11936 (tavplubix). - Conservation des alias pour les substitutions dans la query (queries paramétrées). Corrige #11914. #11916 (alexey-milovidov).
- Correction d’une exception potentielle de virgule flottante lors du parsing de DateTime64. Corrige #11374. #11875 (alexey-milovidov).
- Correction de la prise en compte de la mémoire via l’interface
HTTP(cela peut être significatif avecwait_end_of_query=1). #11840 (Azat Khuzhin). - Correction d’un résultat erroné pour
if()avec des NULL dans la condition. #11807 (Artem Zuikov). - Parsing des métadonnées stockées dans ZooKeeper avant vérification de leur égalité. #11739 (Azat Khuzhin).
- Correction de l’utilisation de
LIMIT n WITH TIESavec l’instructionORDER BY, lorsqu’elle contient des alias. #11689 (Anton Popov). - Correction d’une lecture potentielle de mémoire non initialisée dans le Dictionary de type cache. #10834 (alexey-milovidov).
Amélioration des performances
- L’index n’était pas utilisé pour l’opérateur IN avec des littéraux, ce qui a entraîné une régression des performances introduite aux alentours de la v19.3. Cela corrige #10574. #12062 (nvartolomei).
Version de ClickHouse v20.3.12.112-lts 2020-06-25
correction de bugs
- Correction d’un crash rare provoqué par l’utilisation d’une colonne
Nullabledans la condition prewhere. Suite de #11608. #11869 (Nikolai Kochetov). - N’autorise plus arrayJoin à l’intérieur des fonctions d’ordre supérieur. Cela entraînait une désynchronisation du protocole. Cela clôt #3933. #11846 (alexey-milovidov).
- Correction de l’utilisation d’un trop grand nombre de threads pour les requêtes. #11788 (Nikolai Kochetov).
- Correction du comportement inattendu des requêtes comme
SELECT *, xyz.*, qui réussissaient alors qu’une erreur était attendue. #11753 (hexiaoting). - Désormais, les fetches répliqués sont annulés lors des modifications de métadonnées. #11744 (alesapin).
- Correction de LOGICAL_ERROR provoquée par une déduction incorrecte du type de littéraux complexes dans le format d’entrée Values. #11732 (tavplubix).
- Correction de
ORDER BY ... WITH FILLsur des colonnes constantes. #11697 (Anton Popov). - Transmission des timeouts appropriés lors de la communication avec XDBC bridge. Récemment, les timeouts n’étaient pas respectés lors de la vérification de la liveness du bridge et de la récupération des métadonnées. #11690 (alexey-milovidov).
- Correction d’une erreur entraînant un état incorrect de
system.mutations. Il peut indiquer que toute la mutation est déjà terminée alors que le serveur a encore des tâchesMUTATE_PARTdans la file de réplication et tente de les exécuter. Cela corrige #11611. #11681 (alesapin). - Ajout de la prise en charge des expressions régulières avec des indicateurs insensibles à la casse. Cela corrige #11101 et #11506. #11649 (alexey-milovidov).
- Suppression de l’optimisation triviale des requêtes de comptage si une sécurité au niveau des lignes est définie. Dans les versions précédentes, l’utilisateur obtenait le nombre total d’enregistrements d’une table au lieu du nombre filtré. Cela corrige #11352. #11644 (alexey-milovidov).
- Correction des bloom filters pour String (indices de saut de données). #11638 (Azat Khuzhin).
- Correction d’un crash rare provoqué par l’utilisation d’une colonne
Nullabledans la condition prewhere. (Il est probablement lié, d’une manière ou d’une autre, à #11572). #11608 (Nikolai Kochetov). - Correction de l’erreur
Block structure mismatchpour les requêtes avec sampling lisant depuis la tableBuffer. #11602 (Nikolai Kochetov). - Corrige le code de sortie incorrect de clickhouse-client lorsque exception.code() % 256 = 0. #11601 (filimonov).
- Corrige une erreur mineure dans le message de log indiquant “Mark cache size was lowered” au démarrage du serveur. Cela clôt #11399. #11589 (alexey-milovidov).
- Corrige l’erreur
Size of offsets does not match size of columnpour les requêtes avecPREWHERE column in (subquery)etARRAY JOIN. #11580 (Nikolai Kochetov). - Toutes les requêtes d’une session HTTP avaient le même query_id. C’est corrigé. #11578 (tavplubix).
- Désormais, le conteneur Docker clickhouse-server privilégiera IPv6 pour vérifier la disponibilité du serveur. #11550 (Ivan Starkov).
- Corrige shard_num/replica_num pour
<node>(ce qui cassait use_compact_format_in_distributed_parts_names). #11528 (Azat Khuzhin). - Corrige une fuite de mémoire lorsqu’une exception est levée au milieu d’une agrégation avec des fonctions -State. Cela corrige #8995. #11496 (alexey-milovidov).
- Corrige les résultats incorrects des requêtes distribuées lorsqu’un alias pouvait remplacer un nom de colonne qualifié. Corrige #9672 #9714. #9972 (Artem Zuikov).
Version de ClickHouse v20.3.11.97-lts 2020-06-10
Nouvelle fonctionnalité
- Désormais, ClickHouse gère lui-même les délais d’expiration des sources de dictionnaire. Deux nouveaux paramètres ont été ajoutés à la configuration du dictionnaire
cache:strict_max_lifetime_seconds, qui vaut par défautmax_lifetime, etquery_wait_timeout_milliseconds, qui vaut par défaut une minute. Le premier paramètre est également utile avec le paramètreallow_read_expired_keys(pour interdire la lecture de clés expirées depuis trop longtemps). #10337 (Nikita Mikhaylov).
correction de bugs
- Corrige l’erreur
Data compressed with different methodsqui peut se produire simin_bytes_to_use_direct_ioest activé et que PREWHERE est actif, avec SAMPLE ou un nombre élevé de threads. Cela corrige #11539. #11540 (alexey-milovidov). - Corrige le renvoi de la taille compressée pour les codecs. #11448 (Nikolai Kochetov).
- Corrige un crash du serveur lorsqu’une colonne utilise un codec de compression avec des arguments non littéraux. Corrige #11365. #11431 (alesapin).
- Corrige
pointInPolygonavecnancomme point. Corrige #11375. #11421 (Alexey Ilyukhov). - Corrige un crash dans JOIN sur LowCarinality(T) et Nullable(T). #11380. #11414 (Artem Zuikov).
- Corrige le code d’erreur pour une clé
USINGincorrecte. #11373. #11404 (Artem Zuikov). - Corrige
geohashesInBoxavec des arguments hors de la plage latitude/longitude. #11403 (Vasily Nemkov). - Améliore les messages d’erreur des fonctions
joinGet(). #11389 (Artem Zuikov). - Corrige une possible erreur
Pipeline stuckpour les requêtes avec tri externe et limite. Corrige #11359. #11366 (Nikolai Kochetov). - Supprime un verrou redondant lors de l’envoi des parts dans ReplicatedMergeTree. #11354 (alesapin).
- Corrige la prise en charge de
\G(sortie verticale) dans clickhouse-client en mode multiligne. Cela clôt #9933. #11350 (alexey-milovidov). - Corrige un crash dans les SELECT directs depuis StorageJoin (sans JOIN) ainsi qu’une nullabilité incorrecte. #11340 (Artem Zuikov).
- Corrige un crash dans
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Désormais, les merges sont arrêtés avant la modification des métadonnées dans les requêtes
ALTER. #11335 (alesapin). - Rétablit l’écriture parallèle dans
MATERIALIZED VIEWavec le paramètreparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Correction de visitParamExtractRaw lorsque le JSON extrait contient des chaînes avec des { ou [ non appariés. #11318 (Ewout).
- Correction d’une race condition très rare dans ThreadPool. #11314 (alexey-milovidov).
- Correction d’une mémoire potentiellement non initialisée lors de la conversion. Exemple :
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Correction du problème où l’analyse des index ne fonctionne pas si une table a une colonne Array dans la clé primaire et si une requête filtre sur cette colonne avec les fonctions
emptyounotEmpty. Cela corrige #11286. #11303 (alexey-milovidov). - Correction d’un bug où l’estimation de la vitesse d’une requête peut être incorrecte et où la limite de
min_execution_speedpeut ne pas fonctionner, ou fonctionner incorrectement, si la requête est limitée par les paramètresmax_network_bandwidth,max_execution_speedoupriority. La valeur par défaut detimeout_before_checking_execution_speeddevient non nulle, car sinon les paramètresmin_execution_speedetmax_execution_speedn’ont aucun effet. Cela corrige #11297. Cela corrige #5732. Cela corrige #6228. Amélioration de l’ergonomie : éviter la concaténation du message d’exception avec la barre de progression dansclickhouse-client. #11296 (alexey-milovidov). - Correction d’un crash lors de la lecture de données mal formées au format Protobuf. Cela corrige #5957, corrige #11203. #11258 (Vitaly Baranov).
- Correction d’un bug où le dictionnaire de cache pouvait renvoyer la valeur par défaut au lieu de la valeur normale (lorsqu’il n’y a que des clés expirées). Cela n’affecte que les champs de type chaîne. #11233 (Nikita Mikhaylov).
- Correction de l’erreur
Block structure mismatch in QueryPipelinelors de la lecture depuisVIEWavec des constantes dans la requête interne. Corrige #11181. #11205 (Nikolai Kochetov). - Correction de l’exception possible
Invalid status for associated output. #11200 (Nikolai Kochetov). - Correction de l’erreur possible
Cannot capture columnpour les fonctions d’ordre supérieur avec un argument capturéArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Correction du globbing S3, qui pouvait échouer lorsqu’il y avait plus de 1000 clés et avec certains backends. #11179 (Vladimir Chebotarev).
- Si un index de saut de données dépend de colonnes qui vont être modifiées lors d’une fusion en arrière-plan (pour SummingMergeTree, AggregatingMergeTree ainsi que pour TTL GROUP BY), il était calculé incorrectement. Ce problème est corrigé en déplaçant le calcul de l’index après la fusion afin que l’index soit calculé sur les données fusionnées. #11162 (Azat Khuzhin).
- Corrige la réservation excessive de threads pour les requêtes simples (optimisation visant à réduire le nombre de threads, qui avait été partiellement cassée après des modifications apportées au pipeline). #11114 (Azat Khuzhin).
- Corrige l’optimisation des prédicats pour les requêtes distribuées (
enable_optimize_predicate_expression=1) dans les requêtes comportant une sectionHAVING(c.-à-d. lorsqu’un filtrage sur le serveur initiateur est nécessaire), en préservant l’ordre des expressions (ce qui suffit à corriger le problème), et force également l’agrégateur à utiliser les noms de colonnes plutôt que les index. Corrections : #10613, #11413. #10621 (Azat Khuzhin). - Introduit une logique de nouvelle tentative de commit afin de réduire le risque d’obtenir des doublons depuis Kafka dans les rares cas où le commit de l’offset échoue. #9884 (filimonov).
Amélioration des performances
- N’obtenir le dictionnaire et ne vérifier les droits d’accès qu’une seule fois par appel de toute fonction lisant des dictionnaires externes. #10928 (Vitaly Baranov).
Amélioration de la compilation/des tests/du packaging
Version de ClickHouse v20.3.10.75-lts 2020-05-23
correction de bugs
- Suppression de la journalisation de la tâche de finalisation des mutations lorsqu’aucune finalisation n’avait eu lieu. #11109 (alesapin).
- Correction de bugs de résolution d’arguments dans
parseDateTime64BestEffort. #11038 (Vasily Nemkov). - Correction d’une taille incorrecte des données brutes dans la méthode
getRawData(). #10964 (Igr). - Correction d’une incompatibilité de l’agrégation à deux niveaux entre la version 20.1 et les versions antérieures. Cette incompatibilité se produit lorsque différentes versions de ClickHouse sont utilisées sur le nœud initiateur et sur les nœuds distants, que le résultat de
GROUP BYest volumineux et que l’agrégation est effectuée sur un seul champString. Cela entraîne plusieurs lignes non fusionnées pour une même clé dans le résultat. #10952 (alexey-milovidov). - Correction de la rétrocompatibilité avec les tuples dans les tables
Distributed. #10889 (Anton Popov). - Correction d’un
SIGSEGVdansStringHashTablesi la clé n’existait pas. #10870 (Azat Khuzhin). - Correction d’un bug dans
ReplicatedMergeTreequi pouvait bloquer certainsALTERsur une requêteOPTIMIZE, dans l’attente d’une réplique après qu’elle était devenue inactive. #10849 (tavplubix). - Correction de l’ordre des colonnes après
Block::sortColumns(). #10826 (Azat Khuzhin). - Correction d’un problème avec le pont
ODBClorsqu’aucune mise entre guillemets des identifiants n’est demandée. Corrige #7984. #10821 (alexey-milovidov). - Correction de signalements
UBSanetMSandansDateLUT. #10798 (alexey-milovidov). - Correction d’une conversion de type incorrecte dans les conditions de clé. Corrige #6287. #10791 (Andrew Onyshchuk)
- Correction du comportement de
parallel_view_processing. Désormais, si une exception se produit, toutes les insertions dansMATERIALIZED VIEWqui n’ont pas échoué sont terminées. Corrige #10241. #10757 (Nikolai Kochetov). - Correction des combinateurs
-OrNullet-OrDefaultlorsqu’ils sont combinés avec-State. #10741 (hcz). - Correction d’un crash dans
generateRandomavec les types imbriqués. Corrige #10583. #10734 (Nikolai Kochetov). - Correction d’une corruption de données affectant la colonne clé
LowCardinality(FixedString)dansSummingMergeTree, qui pouvait survenir après une fusion. Corrige #10489. #10721 (Nikolai Kochetov). - Correction d’un possible dépassement de tampon dans la fonction
h3EdgeAngle. #10711 (alexey-milovidov). - Correction d’une disparition des totaux. Les totaux pouvaient être filtrés si la requête contenait une jointure ou une sous-requête avec une condition
WHEREexterne. Corrige #10674. #10698 (Nikolai Kochetov). - Correction des utilisations multiples de l’opérateur
INavec le même ensemble dans une même requête. #10686 (Anton Popov). - Correction d’un bug qui bloquait les requêtes HTTP lors de la fermeture du client lorsque
readonly=2etcancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix). - Correction de l’ordre des paramètres dans le constructeur
AggregateTransform. #10667 (palasonic1). - Correction de l’absence d’exécution parallèle des requêtes distantes avec
distributed_aggregation_memory_efficientactivé. Corrige #10655. #10664 (Nikolai Kochetov). - Correction d’un nombre potentiellement incorrect de lignes pour les requêtes avec
LIMIT. Corrige #10566, #10709. #10660 (Nikolai Kochetov). - Correction d’un bug qui bloquait les ALTER concurrentes lorsqu’une table comportait beaucoup de parts. #10659 (alesapin).
- Correction d’un bug où la requête
SYSTEM DROP DNS CACHEsupprimait également des caches utilisés pour vérifier si un utilisateur est autorisé à se connecter depuis certaines adresses IP. #10608 (tavplubix). - Correction de résultats scalaires incorrects dans la requête interne d’une
MATERIALIZED VIEWlorsque cette requête contenait une table dépendante. #10603 (Nikolai Kochetov). - Correction de
SELECTsur une colonneALIASdont le type de l’expression par défaut diffère du type de la colonne. #10563 (Azat Khuzhin). - Implémentation de la comparaison entre des valeurs
DateTime64etString. #10560 (Vasily Nemkov). - Correction d’une corruption d’index pouvant survenir dans certains cas après la fusion de compact parts en une autre compact part. #10531 (Anton Popov).
- Correction du cas où une mutation avait terminé sur toutes les parts, mais restait bloquée avec
is_done=0. #10526 (alesapin). - Correction d’un débordement numérique au début de l’époque Unix pour les fuseaux horaires avec un décalage non entier par rapport à
UTC. Cela corrige #9335. #10513 (alexey-milovidov). - Correction de l’arrêt incorrect du moteur de stockage
Distributed. #10491 (Azat Khuzhin). - Correction d’un débordement numérique dans
simpleLinearRegressionavec de grands entiers. #10474 (hcz).
Amélioration de la compilation, des tests et du packaging
- Correction d’un problème signalé par UBSan dans la bibliothèque LZ4. #10631 (alexey-milovidov).
- Correction de la compilation avec clang-10. #10238. #10370 (Amos Bird).
- Ajout de tests en échec concernant le paramètre
max_rows_to_sort. #10268 (alexey-milovidov). - Ajout de quelques améliorations à l’affichage des informations de diagnostic dans les formats d’entrée. Corrige #10204. #10418 (tavplubix).
- Ajout de certificats d’autorité de certification à l’image Docker clickhouse-server. #10476 (filimonov).
Correction de bug
- Corrige l’erreur
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang).
version de ClickHouse v20.3.8.53, 2020-04-23
correction de bugs
- Correction du comportement erroné des fonctions DateTime pour les fuseaux horaires dont le décalage par rapport à l’UTC a basculé entre des décalages positifs et négatifs (par ex. Pacific/Kiritimati). Cela corrige #7202 #10369 (alexey-milovidov)
- Correction d’un possible segfault avec
distributed_group_by_no_mergeactivé (introduit dans la version 20.3.7.46 par #10131). #10399 (Nikolai Kochetov) - Correction d’un aplatissement incorrect des types de données
Array(Tuple(...)). Cela corrige #10259 #10390 (alexey-milovidov) - Suppression de la réservation des disques dans Aggregator. Cela corrige un bug de réservation d’espace disque, qui pouvait faire échouer une agrégation externe volumineuse même si elle aurait pu se terminer avec succès #10375 (Azat Khuzhin)
- Correction d’une condition de concurrence entre
DROPetOPTIMIZEdansReplicatedMergeTree.DROPpouvait laisser des résidus dans le chemin de la réplique dans ZooKeeper en cas de requêteOPTIMIZEconcurrente. #10312 (tavplubix) - Correction d’un bug empêchant le serveur de rattacher la table après modification de la valeur par défaut d’une colonne. #10441 (alesapin)
- Ne pas supprimer le répertoire de métadonnées lorsque le rattachement de la base de données échoue avant le chargement des tables. #10442 (Winter Zhang)
- Correction de plusieurs bugs lorsque certaines données étaient insérées avec quorum, puis supprimées d’une manière ou d’une autre (DROP PARTITION, TTL), ce qui entraînait le blocage des INSERTs ou des exceptions faussement positives dans les SELECTs. Cela corrige #9946 #10188 (Nikita Mikhaylov)
- Correction d’une possible erreur
Pipeline stuckdansConcatProcessor, qui pouvait survenir lors d’une requête distante. #10381 (Nikolai Kochetov) - Correction d’un comportement erroné dans HashTable qui provoquait une erreur de compilation lors de la lecture d’un HashMap depuis le buffer. #10386 (palasonic1)
- Autorise l’utilisation de
count(*)avec plusieurs JOINs. Corrige #9853 #10291 (Artem Zuikov) - Préférer
fallback_to_stale_replicasàskip_unavailable_shards, sinon, lorsque les deux paramètres sont spécifiés et qu’il n’y a pas de répliques à jour, la requête échouera (correctif de @alex-zaitsev). Corrige : #2564. #10422 (Azat Khuzhin) - Correction du problème où une requête avec ARRAY JOIN, ORDER BY et LIMIT peut renvoyer un résultat incomplet. Cela corrige #10226. Auteur : Vadim Plakhtinskiy. #10427 (alexey-milovidov)
- Vérification du nombre et du type des arguments lors de la création d’un index BloomFilter #9623 #10431 (Winter Zhang)
Amélioration des performances
- Amélioration des performances des requêtes avec des ensembles explicitement définis à droite de l’opérateur
INet des tuples à gauche. Cela corrige une régression des performances apparue dans la version 20.3. #9740, #10385 (Anton Popov)
Version de ClickHouse v20.3.7.46, 2020-04-17
Correction de bugs
- Corrige l’erreur
Logical error: CROSS JOIN has expressionspour les requêtes combinant des jointures par virgule et des jointures nommées. #10311 (Artem Zuikov). - Corrige les requêtes utilisant
max_bytes_before_external_group_by. #10302 (Artem Zuikov). - Corrige l’optimisation de déplacement vers PREWHERE en présence de fonctions arrayJoin (dans certains cas). Corrige également #10092. #10195 (alexey-milovidov).
- Ajoute la possibilité d’assouplir la restriction sur l’utilisation de fonctions non déterministes dans les mutations avec le paramètre
allow_nondeterministic_mutations. #10186 (filimonov).
Version v20.3.6.40 de ClickHouse, 2020-04-16
Nouvelle fonctionnalité
- Ajout de la fonction
isConstant. Cette fonction vérifie si son argument est une expression constante et renvoie 1 ou 0. Elle est destinée au développement, au débogage et à des fins de démonstration. #10198 (alexey-milovidov).
Correction de bugs
- Correction de l’erreur
Pipeline stuckavecmax_rows_to_group_byetgroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov). - Correction de la rare exception possible
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov). - Correction d’un bug où ClickHouse renvoyait le message d’erreur “Unknown function lambda.” lorsqu’un utilisateur essayait d’exécuter ALTER UPDATE/DELETE sur des tables avec ENGINE = Replicated*. La vérification des fonctions non déterministes gère désormais correctement les expressions lambda. #10237 (Alexander Kazakov).
- Correction de la fonction “generateRandom” pour le type Date. Cela corrige #9973. Correction d’un cas limite où des dates de l’année 2106 sont insérées dans des tables MergeTree avec un partitionnement de style ancien, alors que les partitions sont nommées avec l’année 1970. #10218 (alexey-milovidov).
- Conversion des types si la définition de table d’une View ne correspond pas à la requête SELECT. Cela corrige #10180 et #10022. #10217 (alexey-milovidov).
- Correction de
parseDateTimeBestEffortpour les chaînes au format RFC-2822 lorsque le jour de la semaine est un mardi ou un jeudi. Cela corrige #10082. #10214 (alexey-milovidov). - Correction des noms de colonnes des constantes à l’intérieur de JOIN, qui peuvent entrer en conflit avec les noms des constantes à l’extérieur de JOIN. #10207 (alexey-milovidov).
- Correction d’une possible exécution infinie de la requête alors qu’elle devrait en réalité s’arrêter sur LIMIT, lors de la lecture depuis une source infinie comme
system.numbersousystem.zeros. #10206 (Nikolai Kochetov). - Correction de l’utilisation de la base de données actuelle pour la vérification des accès lorsque la base de données n’est pas spécifiée. #10192 (Vitaly Baranov).
- Conversion des blocks si la structure ne correspond pas lors d’un INSERT dans Distributed(). #10135 (Azat Khuzhin).
- Correction d’un résultat potentiellement incorrect pour les extrêmes dans le pipeline de processeurs. #10131 (Nikolai Kochetov).
- Correction de certains types d’ALTER avec des compact parts. #10130 (Anton Popov).
- Correction d’une vérification incorrecte de
index_granularity_byteslors de la création d’une nouvelle replica. Corrige #10098. #10121 (alesapin). - Correction d’un SIGSEGV lors d’un INSERT dans une distributed table lorsque sa structure diffère de celle des tables sous-jacentes. #10105 (Azat Khuzhin).
- Corrige une perte possible de lignes pour les requêtes avec
JOINetUNION ALL. Corrige #9826, #10113. #10099 (Nikolai Kochetov). - Corrige le démarrage des tables répliquées lors d’une mise à jour depuis une ancienne version de ClickHouse où le nœud
/table/replicas/replica_name/metadatan’existe pas. Corrige #10037. #10095 (alesapin). - Ajoute la vérification de certains arguments et la prise en charge d’arguments de type identifiant pour le moteur de base de données MySQL. #10077 (Winter Zhang).
- Corrige un bug dans la source de dictionnaire ClickHouse à partir d’un serveur ClickHouse localhost. Ce bug peut entraîner une corruption mémoire si les types du dictionnaire et de la source ne sont pas compatibles. #10071 (alesapin).
- Corrige un bug dans la requête
CHECK TABLElorsqu’une table contient des index de saut. #10068 (alesapin). - Corrige l’erreur
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Cela se produisait lorsque le paramètredistributed_aggregation_memory_efficientétait activé et qu’une requête distribuée lisait des données agrégées à des niveaux différents depuis différents shards (mélange d’agrégation à un niveau et à deux niveaux). #10063 (Nikolai Kochetov). - Corrige une erreur de segmentation pouvant survenir dans GROUP BY sur des clés de chaîne contenant des octets nuls en fin de chaîne (#8636, #8925). #10025 (Alexander Kuzmenkov).
- Corrige le nombre de threads utilisés pour l’exécution de requêtes distantes (régression des performances depuis la version 20.3). Cela se produisait lorsqu’une requête sur une table
Distributedétait exécutée simultanément sur des shards locaux et distants. Corrige #9965. #9971 (Nikolai Kochetov). - Corrige un bug où les tables nécessaires n’étaient pas récupérées à l’une des étapes de traitement des requêtes sur certaines bases de données. Corrige #9699. #9949 (achulkov2).
- Corrige l’erreur ‘Not found column in block’ lorsque
JOINapparaît avecTOTALS. Corrige #9839. #9939 (Artem Zuikov). - Corrige un bug où les requêtes DDL
ON CLUSTERse figeaient au démarrage du serveur. #9927 (Gagan Arneja). - Corrige l’analyse de plusieurs hôtes définis dans la commande CREATE USER, par exemple
CREATE USER user6 HOST NAME REGEXP 'lo.?*host', NAME REGEXP 'lo*host'. #9924 (Vitaly Baranov). - Corrige
TRUNCATEpour le moteur de table Join (#9917). #9920 (Amos Bird). - Correction de l’erreur “scalar does not exist” dans les commandes ALTER (#9878). #9904 (Amos Bird).
- Correction d’une condition de concurrence entre drop et optimize dans
ReplicatedMergeTree. #9901 (alesapin). - Correction de l’erreur liée aux noms qualifiés dans
distributed_product_mode='local'. Corrige #4756. #9891 (Artem Zuikov). - Correction du calcul des privilèges pour les fonctions d’introspection en fonction du paramètre ‘allow_introspection_functions’. #9840 (Vitaly Baranov).
Amélioration de la compilation/des tests/du packaging
- Correction du test d’intégration
test_settings_constraints. #9962 (Vitaly Baranov). - Suppression de la dépendance à
clock_getres. #9833 (alexey-milovidov).
Version de ClickHouse v20.3.5.21, 2020-03-27
Correction de bugs
- Correction de l’erreur ‘Different expressions with the same alias’ lorsqu’une requête contient PREWHERE et WHERE sur une table distribuée, avec
SET distributed_product_mode = 'local'. #9871 (Artem Zuikov). - Correction de la consommation excessive de mémoire par les mutations pour les tables avec une clé primaire composite. Corrige #9850. #9860 (alesapin).
- Pour les requêtes INSERT, le shard borne désormais les paramètres reçus de l’initiateur en fonction de ses propres contraintes, au lieu de lever une exception. Cette correction permet d’envoyer des requêtes INSERT à un shard ayant d’autres contraintes. Ce changement améliore la correction de #9447. #9852 (Vitaly Baranov).
- Correction de l’erreur ‘COMMA to CROSS JOIN rewriter is not enabled or cannot rewrite query’ dans le cas de sous-requêtes avec COMMA JOIN hors des listes de tables (c.-à-d. dans WHERE). Corrige #9782. #9830 (Artem Zuikov).
- Correction d’une exception possible
Got 0 in totals chunk, expected 1côté client. Cela se produisait pour les requêtes avecJOINsi la table jointe à droite ne contenait aucune ligne. Example:select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. #9823 (Nikolai Kochetov). - Correction d’un possible SIGSEGV avec optimize_skip_unused_shards lorsque le type ne peut pas être converti. #9804 (Azat Khuzhin).
- Correction d’une requête
ALTER TABLE DELETE COLUMNdéfectueuse pour les parties compactes. #9779 (alesapin). - Correction de max_distributed_connections (avec et sans Processors). #9673 (Azat Khuzhin).
- Correction de quelques cas où le fuseau horaire de l’argument de fonction n’était pas correctement pris en compte. #9574 (Vasily Nemkov).
Amélioration
- Supprime l’étape ORDER BY des mutations, car nous lisons une seule part ordonnée dans un seul thread. Ajoute également une vérification garantissant que l’ordre des lignes dans la mutation suit celui de la clé de tri et qu’il n’est pas violé. #9886 (alesapin).
Version de ClickHouse v20.3.4.10, 2020-03-20
Correction de bugs
- Cette version inclut également toutes les corrections de bugs de la 20.1.8.41
- Corrige l’absence de
rows_before_limit_at_leastpour les requêtes via HTTP (avec le pipeline de processeurs). Cela corrige #9730. #9757 (Nikolai Kochetov)
Version de ClickHouse v20.3.3.6, 2020-03-17
Correction de bugs
- Cette version inclut également tous les correctifs de bugs de la version 20.1.7.38.
- Correction d’un bug de réplication qui empêchait son fonctionnement si l’utilisateur avait exécuté des mutations sur la version précédente. Cela corrige #9645. #9652 (alesapin). La version 20.3 redevient ainsi rétrocompatible.
- Ajout du paramètre
use_compact_format_in_distributed_parts_names, qui permet d’écrire les fichiers des requêtesINSERTdans une tableDistributeddans un format plus compact. Cela corrige #9647. #9653 (alesapin). La version 20.3 redevient ainsi rétrocompatible.
Version de ClickHouse v20.3.2.1, 2020-03-12
Changement incompatible avec les versions précédentes
- Correction du problème
file name too longlors de l’envoi de données vers des tablesDistributedcomportant un grand nombre de répliques. Correction également du problème d’exposition des identifiants des répliques dans le journal du serveur. Le format du nom de répertoire sur disque a été modifié en[shard{shard_index}[_replica{replica_index}]]. #8911 (Mikhail Korotov) Après la mise à niveau vers la nouvelle version, vous ne pourrez pas revenir à une version antérieure sans intervention manuelle, car l’ancienne version du serveur ne reconnaît pas le nouveau format de répertoire. Si vous souhaitez revenir à une version antérieure, vous devrez renommer manuellement les répertoires correspondants selon l’ancien format. Ce changement ne vous concerne que si vous avez utilisé desINSERTasynchrones dans des tablesDistributed. Dans la version 20.3.3, nous introduirons un paramètre qui vous permettra d’activer progressivement le nouveau format. - Modification du format des entrées du journal de réplication pour les commandes de mutation. Vous devez attendre que les anciennes mutations soient traitées avant d’installer la nouvelle version.
- Implémentation d’un profileur mémoire simple qui écrit des stacktraces dans
system.trace_logtous les N octets au-delà de la limite souple d’allocation #8765 (Ivan) #9472 (alexey-milovidov) La colonne desystem.trace_loga été renommée detimer_typeentrace_type. Cela nécessitera des modifications dans les outils tiers d’analyse des performances et de traitement des flamegraphs. - Utilisation de l’identifiant de thread de l’OS partout à la place du numéro de thread interne. Cela corrige #7477 L’ancien
clickhouse-clientne peut pas recevoir les logs envoyés par le serveur lorsque le paramètresend_logs_levelest activé, car les noms et les types des messages de log structurés ont été modifiés. En revanche, différentes versions du serveur peuvent s’envoyer mutuellement des logs de types différents. Si vous n’utilisez pas le paramètresend_logs_level, cela ne vous concerne pas. #8954 (alexey-milovidov) - Suppression de la fonction
indexHint#9542 (alexey-milovidov) - Suppression des fonctions
findClusterIndex,findClusterValue. Cela corrige #8641. Si vous utilisiez ces fonctions, envoyez un e-mail àclickhouse-feedback@yandex-team.com#9543 (alexey-milovidov) - Il n’est désormais plus autorisé de créer des colonnes ou d’ajouter des colonnes avec une sous-requête
SELECTcomme expression par défaut. #9481 (alesapin) - Les alias sont désormais obligatoires pour les sous-requêtes dans JOIN. #9274 (Artem Zuikov)
- Amélioration de la logique des requêtes
ALTER MODIFY/ADD. Désormais, vous ne pouvez pasADDune colonne sans type, unMODIFYde l’expression par défaut ne change pas le type de la colonne, et unMODIFYdu type ne fait pas perdre la valeur de l’expression par défaut. Corrige #8669. #9227 (alesapin) - Il est désormais nécessaire de redémarrer le serveur pour appliquer les modifications de la configuration de la journalisation. Il s’agit d’un contournement temporaire pour éviter le bug où le serveur écrit dans un fichier journal supprimé (voir #8696). #8707 (Alexander Kuzmenkov)
- Le paramètre
experimental_use_processorsest activé par défaut. Ce paramètre active le nouveau pipeline de requête. Il s’agit d’une refactorisation interne et nous ne prévoyons aucun changement visible. Si vous constatez le moindre problème, remettez-le à zéro. #8768 (alexey-milovidov)
Nouvelle fonctionnalité
- Ajout des formats d’entrée/sortie
AvroetAvroConfluent#8571 (Andrew Onyshchuk) #8957 (Andrew Onyshchuk) #8717 (alexey-milovidov) - Mises à jour multithread et non bloquantes des clés expirées dans les dictionnaires
cache(avec possibilité facultative de lire les anciennes). #8303 (Nikita Mikhaylov) - Ajout de la requête
ALTER ... MATERIALIZE TTL. Elle exécute une mutation qui force la suppression des données expirées par TTL et recalcule les métadonnées TTL dans toutes les parties. #8775 (Anton Popov) - Bascule de HashJoin vers MergeJoin (sur disque) si nécessaire #9082 (Artem Zuikov)
- Ajout de la commande
MOVE PARTITIONpourALTER TABLE#4729 #6168 (Guillaume Tassery) - Rechargement à chaud de la configuration de stockage à partir du fichier de configuration. #8594 (Vladimir Chebotarev)
- Il est désormais possible de modifier
storage_policyvers une politique au moins aussi riche. #8107 (Vladimir Chebotarev) - Ajout de la prise en charge des globs/jokers pour le stockage S3 et la fonction de table. #8851 (Vladimir Chebotarev)
- Implémentation de
bitAnd,bitOr,bitXor,bitNotpour le type de donnéesFixedString(N). #9091 (Guillaume Tassery) - Ajout de la fonction
bitCount. Cela corrige #8702. #8708 (alexey-milovidov) #8749 (ikopylov) - Ajout de la fonction de table
generateRandompour générer des lignes aléatoires avec le schéma donné. Permet de remplir de données n’importe quelle table de test. #8994 (Ilya Yatsishin) JSONEachRowFormat: prise en charge du cas particulier où les objets sont englobés dans un Array de niveau supérieur. #8860 (Kruglov Pavel)- Il est maintenant possible de créer une colonne avec une expression
DEFAULTqui dépend d’une colonne avec une expressionALIASpar défaut. #9489 (alesapin) - Autorise la spécification de
--limitau-delà de la taille des données source dansclickhouse-obfuscator. Les données se répéteront avec une graine aléatoire différente. #9155 (alexey-milovidov) - Ajout de la fonction
groupArraySample(similaire àgroupArray) avec l’algorithme d’échantillonnage par réservoir. #8286 (Amos Bird) - Vous pouvez désormais surveiller la taille de la file d’attente de mise à jour dans les dictionnaires
cache/complex_key_cachevia les métriques système. #9413 (Nikita Mikhaylov) - Prise en charge de CRLF comme séparateur de ligne dans le format de sortie CSV lorsque le paramètre
output_format_csv_crlf_end_of_lineest défini sur 1 #8934 #8935 #8963 (Mikhail Korotov) - Ajout de nouvelles fonctions à l’API H3 :
h3GetBaseCell,h3HexAreaM2,h3IndexesAreNeighbors,h3ToChildren,h3ToStringetstringToH3#8938 (Nico Mandery) - Nouveau paramètre :
max_parser_depth, pour contrôler la taille maximale de la pile et autoriser des requêtes complexes de grande taille. Cela corrige #6681 et #7668. #8647 (Maxim Smirnov) - Ajout du paramètre
force_optimize_skip_unused_shardspour lever une exception s’il n’est pas possible d’ignorer les shards inutilisés #8805 (Azat Khuzhin) - Possibilité de configurer plusieurs disques/volumes pour stocker les données à envoyer avec le moteur
Distributed#8756 (Azat Khuzhin) - Prise en charge de la politique de stockage (
<tmp_policy>) pour le stockage des données temporaires. #8750 (Azat Khuzhin) - Ajout de l’en-tête HTTP
X-ClickHouse-Exception-Code, défini si une exception a été levée avant l’envoi des données. Cela implémente #4971. #8786 (Mikhail Korotov) - Ajout de la fonction
ifNotFinite. Il s’agit simplement d’un sucre syntaxique :ifNotFinite(x, y) = isFinite(x) ? x : y. #8710 (alexey-milovidov) - Ajout de la colonne
last_successful_update_timedans la tablesystem.dictionaries#9394 (Nikita Mikhaylov) - Ajout de la fonction
blockSerializedSize(taille sur disque sans compression) #8952 (Azat Khuzhin) - Ajout de la fonction
moduloOrZero#9358 (hcz) - Ajout des tables système
system.zerosetsystem.zeros_mt, ainsi que des fonctions de tablezeros()etzeros_mt(). Les tables (et les fonctions de table) contiennent une seule colonne nomméezeroet de typeUInt8. Cette colonne contient des zéros. Elle est destinée aux tests, comme moyen le plus rapide de générer un grand nombre de lignes. Cela corrige #6604 #9593 (Nikolai Kochetov)
Fonctionnalité expérimentale
- Ajout d’un nouveau format compact de parts dans les tables de la famille
MergeTree, dans lequel toutes les colonnes sont stockées dans un seul fichier. Cela permet d’améliorer les performances des insertions petites et fréquentes. L’ancien format (un fichier par colonne) est désormais appelé wide. Le format de stockage des données est contrôlé par les paramètresmin_bytes_for_wide_partetmin_rows_for_wide_part. #8290 (Anton Popov) - Prise en charge du stockage S3 pour les tables
Log,TinyLogetStripeLog. #8862 (Pavel Kovalenko)
Correction de bugs
- Correction des espaces incohérents dans les messages de journalisation. #9322 (alexey-milovidov)
- Correction d’un bug où des tableaux de tuples non nommés étaient aplatis en structures Nested lors de la création de la table. #8866 (achulkov2)
- Correction du problème où l’erreur “Too many open files” pouvait se produire si trop de fichiers correspondaient au motif glob dans la table
Fileou la fonction de tablefile. Désormais, les fichiers sont ouverts à la demande. Cela corrige #8857 #8861 (alexey-milovidov) - DROP TEMPORARY TABLE supprime désormais uniquement la table temporaire. #8907 (Vitaly Baranov)
- Suppression de la partition obsolète lors de l’arrêt du serveur ou d’un DETACH/ATTACH d’une table. #8602 (Guillaume Tassery)
- Correction du calcul de l’espace libre par le disque
defaultà partir du sous-répertoiredata. Correction du problème où la quantité d’espace libre n’était pas calculée correctement si le répertoiredataétait monté sur un périphérique distinct (cas rare). Cela corrige #7441 #9257 (Mikhail Korotov) - Autorise les jointures par virgule (croisées) avec IN () à l’intérieur. #9251 (Artem Zuikov)
- Autorise la réécriture de CROSS en INNER JOIN s’il y a un opérateur [NOT] LIKE dans la clause WHERE. #9229 (Artem Zuikov)
- Correction d’un résultat potentiellement incorrect après
GROUP BYavec le paramètredistributed_aggregation_memory_efficientactivé. Corrige #9134. #9289 (Nikolai Kochetov) - Les clés trouvées étaient comptées comme manquantes dans les métriques des dictionnaires de type cache. #9411 (Nikita Mikhaylov)
- Correction de l’incompatibilité du protocole de réplication introduite dans #8598. #9412 (alesapin)
- Correction d’une race condition sur
queue_task_handleau démarrage des tablesReplicatedMergeTree. #9552 (alexey-milovidov) - Le token
NOTne fonctionnait pas dans la requêteSHOW TABLES NOT LIKE#8727 #8940 (alexey-milovidov) - Ajout d’une vérification des limites à la fonction
h3EdgeLengthM. Sans cette vérification, un dépassement de tampon est possible. #8945 (alexey-milovidov) - Correction d’un bug dans les calculs par lots des opérateurs logiques ternaires sur plusieurs arguments (plus de 10). #8718 (Alexander Kazakov)
- Correction d’une erreur dans l’optimisation PREWHERE, qui pouvait entraîner des segfaults ou l’exception
Inconsistent number of columns got from MergeTreeRangeReader. #9024 (Anton Popov) - Correction de l’exception inattendue
Timeout exceeded while reading from socket, qui se produisait aléatoirement sur une connexion sécurisée avant que le délai d’attente ne soit réellement dépassé, lorsque le profileur de requêtes était activé. Ajout également du paramètreconnect_timeout_with_failover_secure_ms(100ms par défaut), similaire àconnect_timeout_with_failover_ms, mais utilisé pour les connexions sécurisées (car la négociation SSL est plus lente qu’une connexion TCP classique) #9026 (tavplubix) - Correction d’un bug dans la finalisation des mutations, où une mutation pouvait rester bloquée dans un état avec
parts_to_do=0etis_done=0. #9022 (alesapin) - Utilisation de la nouvelle logique ANY JOIN avec le paramètre
partial_merge_join. Il est désormais possible d’effectuer des jointuresANY|ALL|SEMI LEFTetALL INNERavecpartial_merge_join=1. #8932 (Artem Zuikov) - Un shard limite désormais les paramètres reçus du nœud initiateur aux contraintes du shard au lieu de lever une exception. Ce correctif permet d’envoyer des requêtes à un shard avec d’autres contraintes. #9447 (Vitaly Baranov)
- Correction d’un problème de gestion de la mémoire dans
MergeTreeReadPool. #8791 (Vladimir Chebotarev) - Correction de la famille de fonctions
toDecimal*OrNull()lorsqu’elles sont appelées avec la chaînee. Corrige #8312 #8764 (Artem Zuikov) - S’assurer que
FORMAT Nulln’envoie aucune donnée au client. #8767 (Alexander Kuzmenkov) - Correction d’un bug empêchant la mise à jour du timestamp dans
LiveViewBlockInputStream.LIVE VIEWest une fonctionnalité expérimentale. #8644 (vxider) #8625 (vxider) - Correction du comportement incorrect de
ALTER MODIFY TTL, qui ne permettait pas de supprimer les anciennes expressions TTL. #8422 (Vladimir Chebotarev) - Correction d’un signalement UBSan dans MergeTreeIndexSet. Cela corrige #9250 #9365 (alexey-milovidov)
- Correction du comportement des fonctions
matchetextractlorsque le haystack contient des octets nuls. Le comportement était incorrect lorsque le haystack était constant. Cela corrige #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov) - Éviter de lever une exception depuis le destructeur dans la bibliothèque Apache Avro tierce. #9066 (Andrew Onyshchuk)
- Ne pas valider partiellement un batch récupéré via
polldepuisKafka, car cela peut entraîner des trous dans les données. #8876 (filimonov) - Correction de
joinGetavec des types de retourNullable. #8919 #9014 (Amos Bird) - Correction de l’incompatibilité des données lorsqu’elles sont compressées avec le codec
T64. #9016 (Artem Zuikov) Correction des identifiants de types de données dans le codec de compressionT64, qui entraînaient une (dé)compression incorrecte dans les versions affectées. #9033 (Artem Zuikov) - Ajout du paramètre
enable_early_constant_foldinget désactivation de celui-ci dans certains cas provoquant des erreurs. #9010 (Artem Zuikov) - Correction de l’optimiseur de pushdown des prédicats avec VIEW et activation du test #9011 (Winter Zhang)
- Correction d’un segfault dans les tables
Merge, qui peut se produire lors de la lecture depuis les stockagesFile#9387 (tavplubix) - Ajout d’une vérification de la storage policy dans
ATTACH PARTITION FROM,REPLACE PARTITION,MOVE TO TABLE. Sinon, cela pouvait rendre les données d’une part inaccessibles après un redémarrage et empêcher ClickHouse de démarrer. #9383 (Vladimir Chebotarev) - Correction des ALTER lorsqu’un TTL est défini pour la table. #8800 (Anton Popov)
- Correction d’une condition de concurrence pouvant se produire lorsque
SYSTEM RELOAD ALL DICTIONARIESest exécuté alors qu’un dictionnaire est en cours de modification, d’ajout ou de suppression. #8801 (Vitaly Baranov) - Dans les versions précédentes, le database engine
Memoryutilisait un data path vide, les tables étaient donc créées dans le répertoirepath(par exemple/var/lib/clickhouse/), et non dans le répertoire de données de la base de données (par exemple/var/lib/clickhouse/db_name). #8753 (tavplubix) - Correction de messages de journal erronés concernant l’absence du disk ou de la policy par défaut. #9530 (Vladimir Chebotarev)
- Correction de
not(has())pour l’index bloom_filter des typesArray. #9407 (achimbab) - Autoriser la ou les premières colonnes d’une table avec le moteur
Logà être des alias #9231 (Ivan) - Correction de l’ordre des ranges lors de la lecture depuis une table
MergeTreedans un seul thread. Cela pouvait entraîner des exceptions deMergeTreeRangeReaderou des résultats de query incorrects. #9050 (Anton Popov) - Faire en sorte que
reinterpretAsFixedStringrenvoieFixedStringau lieu deString. #9052 (Andrew Onyshchuk) - Évite, dans des cas extrêmement rares, que l’utilisateur reçoive un message d’erreur erroné (
Successau lieu d’une description détaillée de l’erreur). #9457 (alexey-milovidov) - Ne plante pas lors de l’utilisation du format
Templateavec un modèle de ligne vide. #8785 (Alexander Kuzmenkov) - Les fichiers de métadonnées des system tables pouvaient être créés au mauvais endroit #8653 (tavplubix) Corrige #8581.
- Corrige une data race sur exception_ptr dans le Dictionary de type cache #8303. #9379 (Nikita Mikhaylov)
- Ne lève pas d’exception pour la query
ATTACH TABLE IF NOT EXISTS. Auparavant, une exception était levée si la table existait déjà, malgré la clauseIF NOT EXISTS. #8967 (Anton Popov) - Corrige l’absence de parenthèse fermante dans le message d’exception. #8811 (alexey-milovidov)
- Évite le message
Possible deadlock avoidedau démarrage de clickhouse-client en mode interactif. #9455 (alexey-milovidov) - Corrige le problème où le padding à la fin d’une valeur encodée en base64 pouvait être mal formé. Met à jour la bibliothèque base64. Cela corrige #9491, clôt #9492 #9500 (alexey-milovidov)
- Empêche la perte de données dans
Kafkadans de rares cas où une exception se produit après la lecture du suffixe mais avant le commit. Corrige #9378 #9507 (filimonov) - Corrige une exception dans
DROP TABLE IF EXISTS#8663 (Nikita Vasilev) - Corrige un crash lorsqu’un utilisateur tente d’exécuter
ALTER MODIFY SETTINGsur d’anciens table engines de la familleMergeTree. #9435 (alesapin) - Prise en charge des nombres UInt64 qui ne tiennent pas dans Int64 dans les fonctions liées à JSON. Met à jour SIMDJSON vers master. Cela corrige #9209 #9344 (alexey-milovidov)
- Corrige l’exécution de prédicats inversés lorsqu’un index fonctionnel non strictement monotone est utilisé. #9223 (Alexander Kazakov)
- N’essaie pas de replier la constante
INdansGROUP BY#8868 (Amos Bird) - Correction d’un bug dans les mutations
ALTER DELETEqui entraînait une corruption de l’index. Cela corrige #9019 et #8982. Correction également de conditions de concurrence extrêmement rares dans les requêtesALTERdeReplicatedMergeTree. #9048 (alesapin) - Lorsque le paramètre
compile_expressionsest activé, il est possible d’obtenirunexpected columndansLLVMExecutableFunctionlors de l’utilisation du typeNullable#8910 (Guillaume Tassery) - Plusieurs corrections pour le moteur
Kafka: 1) correction des doublons qui apparaissaient lors d’un rééquilibrage du groupe de consommateurs. 2) correction de rares ‘trous’ apparaissant lorsque des données étaient récupérées depuis plusieurs partitions en un seul poll puis validées partiellement (désormais, l’intégralité du block de messages récupéré est toujours traitée / validée). 3) correction des flushes selon la taille du block (auparavant, seul le flushing selon le timeout fonctionnait correctement). 4) amélioration de la procédure de subscription (avec retour d’affectation). 5) accélération de l’exécution des tests (avec les intervalles et timeouts par défaut). Comme les données n’étaient auparavant pas flushées selon la taille du block (comme cela devrait être le cas d’après la documentation), cette PR peut entraîner une certaine dégradation des performances avec les paramètres par défaut (en raison de flushes plus fréquents & plus petits, donc moins optimaux). Si vous rencontrez des problèmes de performances après ce changement, veuillez augmenterkafka_max_block_sizedans la table à une valeur plus élevée (par exempleCREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). Corrige #7259 #8917 (filimonov) - Correction de l’exception
Parameter out of bounddans certaines requêtes après les optimisations PREWHERE. #8914 (Baudouin Giard) - Correction du cas de constance mixte des arguments de la fonction
arrayZip. #8705 (alexey-milovidov) - Lors de l’exécution d’une requête
CREATE, les expressions constantes sont évaluées dans les arguments du moteur de stockage. Le nom de base de données vide est remplacé par la base de données courante. Corrige #6508, #3492 #9262 (tavplubix) - Désormais, il n’est plus possible de créer ou d’ajouter des colonnes avec de simples alias cycliques comme
a DEFAULT b, b DEFAULT a. #9603 (alesapin) - Correction d’un bug lié à un double déplacement pouvant corrompre la part d’origine. Cela vous concerne si vous utilisez
ALTER TABLE MOVE#8680 (Vladimir Chebotarev) - Autorise l’identifiant
intervalà être correctement analysé sans backticks. Correction d’un problème où une requête ne pouvait pas être exécutée même si l’identifiantintervalétait entouré de backticks ou de guillemets doubles. Cela corrige #9124. #9142 (alexey-milovidov) - Correction du test de fuzzing et du comportement incorrect des fonctions
bitTestAll/bitTestAny. #9143 (alexey-milovidov) - Correction d’un plantage possible / d’un nombre incorrect de lignes dans
LIMIT n WITH TIESlorsqu’il y a beaucoup de lignes égales à la n-ième ligne. #9464 (tavplubix) - Correction des mutations avec des parts écrites avec
insert_quorumactivé. #9463 (alesapin) - Correction d’une data race lors de la destruction de
Poco::HTTPServer. Cela pouvait se produire lorsque le serveur était démarré puis arrêté immédiatement. #9468 (Anton Popov) - Correction d’un bug où un message d’erreur trompeur s’affichait lors de l’exécution de
SHOW CREATE TABLE a_table_that_does_not_exist. #8899 (achulkov2) - Correction de l’exception
Parameters are out of bounddans certains cas rares lorsqu’une constante est présente dans la clauseSELECTavec une clauseORDER BYet une clauseLIMIT. #8892 (Guillaume Tassery) - Correction de la finalisation des mutations, lorsqu’une mutation déjà terminée pouvait avoir le statut
is_done=0. #9217 (alesapin) - Empêche l’exécution de
ALTER ADD INDEXpour les tables MergeTree avec l’ancienne syntaxe, car cela ne fonctionne pas. #8822 (Mikhail Korotov) - Lors du démarrage du serveur, ne pas accéder à la table dont dépend
LIVE VIEW, afin de permettre au serveur de démarrer. Supprime également les dépendances deLIVE VIEWlors du détachement deLIVE VIEW.LIVE VIEWest une fonctionnalité expérimentale. #8824 (tavplubix) - Correction d’un segfault possible dans
MergeTreeRangeReaderlors de l’exécution dePREWHERE. #9106 (Anton Popov) - Correction d’éventuelles sommes de contrôle incohérentes avec les TTL de colonnes. #9451 (Anton Popov)
- Correction d’un bug où les parts n’étaient pas déplacées en arrière-plan par les règles TTL lorsqu’il n’y avait qu’un seul volume. #8672 (Vladimir Chebotarev)
- Correction du problème
Method createColumn() is not implemented for data type Set. Cela corrige #7799. #8674 (alexey-milovidov) - Désormais, nous essaierons de finaliser les mutations plus souvent. #9427 (alesapin)
- Correction de
intDivavec la constante moins un. #9351 (hcz) - Correction d’une possible condition de concurrence dans
BlockIO. #9356 (Nikolai Kochetov) - Correction d’un bug entraînant l’arrêt du serveur lors d’une tentative d’utilisation ou de suppression d’une table
Kafkacréée avec des paramètres incorrects. #9513 (filimonov) - Ajout d’une solution de contournement si le système d’exploitation renvoie un résultat erroné pour la fonction
timer_create. #8837 (alexey-milovidov) - Correction d’une erreur dans l’utilisation du paramètre
min_marks_for_seek. Correction du message d’erreur lorsqu’il n’y a pas de clé de sharding dans une table Distributed et que nous essayons d’ignorer les shards inutilisés. #8908 (Azat Khuzhin)
Amélioration
- Implémentation des requêtes
ALTER MODIFY/DROPau moyen de mutations pour la famille de moteursReplicatedMergeTree*. Désormais,ALTERSne bloque qu’au stade de la mise à jour des métadonnées, puis ne bloque plus ensuite. #8701 (alesapin) - Ajout de la possibilité de réécrire CROSS en INNER JOIN avec une clause
WHEREcontenant des noms non qualifiés. #9512 (Artem Zuikov) - Les requêtes
SHOW TABLESetSHOW DATABASESprennent désormais en charge les expressionsWHEREainsi queFROM/IN. #9076 (sundyli) - Ajout d’un paramètre
deduplicate_blocks_in_dependent_materialized_views. #9070 (urykhy) - À la suite de modifications récentes, le client MySQL s’est mis à afficher les chaînes binaires en hexadécimal, ce qui les rend illisibles (#9032). Dans ClickHouse, le contournement consiste à marquer les colonnes de type chaîne comme UTF-8, ce qui n’est pas toujours le cas, mais l’est généralement. #9079 (Yuriy Baranov)
- Ajout de la prise en charge des clés String et FixedString pour
sumMap. #8903 (Baudouin Giard) - Prise en charge des clés de type chaîne dans les maps de SummingMergeTree. #8933 (Baudouin Giard)
- Signale la fin d’un thread au thread pool même si le thread a levé une exception. #8736 (Ding Xiang Fei)
- Autorise la définition de
query_iddansclickhouse-benchmark. #9416 (Anton Popov) - N’autorise plus les expressions étranges dans la requête
ALTER TABLE ... PARTITION partition. Cela corrige #7192 #8835 (alexey-milovidov) - La table
system.table_enginesfournit désormais des informations sur la prise en charge des fonctionnalités (commesupports_ttlousupports_sort_order). #8830 (Max Akhmedov) - Active
system.metric_logpar défaut. Il contiendra des lignes avec les valeurs de ProfileEvents et CurrentMetrics collectées selon l’intervalle “collect_interval_milliseconds” (une seconde par défaut). La table est très petite (généralement de l’ordre du mégaoctet) et il est raisonnable de collecter ces données par défaut. #9225 (alexey-milovidov) - Initialise le query profiler pour tous les threads d’un groupe, ce qui permet par exemple de profiler entièrement les requêtes d’insertion. Corrige #6964 #8874 (Ivan)
- Désormais, la
LIVE VIEWtemporaire est créée avecCREATE LIVE VIEW name WITH TIMEOUT [42] ...au lieu deCREATE TEMPORARY LIVE VIEW ..., car la syntaxe précédente n’était pas cohérente avecCREATE TEMPORARY TABLE .... #9131 (tavplubix) - Ajout du paramètre de configuration text_log.level pour limiter les entrées envoyées à la table
system.text_log#8809 (Azat Khuzhin) - Possibilité de placer la part téléchargée sur des disks/volumes conformément aux règles TTL #8598 (Vladimir Chebotarev)
- Pour les Dictionaries MySQL externes, possibilité de mutualiser le pool de connexions MySQL afin de le « partager » entre les dictionnaires. Cette option réduit considérablement le nombre de connexions aux serveurs MySQL. #9409 (Clément Rodriguez)
- Afficher, dans la sortie de
clickhouse-benchmark, le temps d’exécution de requête le plus proche pour les quantiles au lieu de valeurs interpolées. Il est préférable d’afficher des valeurs correspondant au temps d’exécution de certaines requêtes. #8712 (alexey-milovidov) - Possibilité d’ajouter une clé et un timestamp au message lors de l’insertion de données dans Kafka. Corrige #7198 #8969 (filimonov)
- Si le server est exécuté depuis un terminal, mettre en évidence par des couleurs le numéro du thread, le Query id et la priorité du log. Cela améliore la lisibilité des messages de log corrélés pour les développeurs. #8961 (alexey-milovidov)
- Message d’exception amélioré lors du chargement des tables pour la base de données
Ordinary. #9527 (alexey-milovidov) - Implémentation de
arraySlicepour les arrays avec états de fonctions d’agrégation. Cela corrige #9388 #9391 (alexey-milovidov) - Autorisation d’utiliser des fonctions constantes et des arrays constants à droite de l’opérateur IN. #8813 (Anton Popov)
- Si une exception ZooKeeper se produit lors de la récupération des données pour system.replicas, l’afficher dans une colonne distincte. Cela implémente #9137 #9138 (alexey-milovidov)
- Suppression atomique des data parts MergeTree lors de la destruction. #8402 (Vladimir Chebotarev)
- Prise en charge de la sécurité au niveau des lignes pour les tables Distributed. #8926 (Ivan)
- Les suffixes (comme KB, KiB…) sont désormais reconnus dans les valeurs des paramètres. #8072 (Mikhail Korotov)
- Éviter les erreurs de mémoire insuffisante lors de la construction du résultat d’un JOIN volumineux. #8637 (Artem Zuikov)
- Ajout des noms des clusters aux suggestions en mode interactif dans
clickhouse-client. #8709 (alexey-milovidov) - Initialisation du query profiler pour tous les threads d’un groupe, ce qui permet par exemple de profiler entièrement les requêtes d’insertion #8820 (Ivan)
- Ajout de la colonne
exception_codedans la tablesystem.query_log. #8770 (Mikhail Korotov) - Activation du serveur de compatibilité MySQL sur le port
9004dans le fichier de configuration du serveur par défaut. Correction de la commande de génération du mot de passe dans l’exemple de configuration. #8771 (Yuriy Baranov) - Empêche l’interruption à l’arrêt si le filesystem est en lecture seule. Cela corrige #9094 #9100 (alexey-milovidov)
- Meilleur message d’exception lorsqu’une longueur est requise dans une requête HTTP POST. #9453 (alexey-milovidov)
- Ajout des colonnes virtuelles
_pathet_fileaux enginesHDFSetFile, ainsi qu’aux fonctions de tablehdfsetfile#8489 (Olga Khvostikova) - Correction de l’erreur
Cannot find columnlors d’une insertion dansMATERIALIZED VIEWlorsqu’une nouvelle colonne avait été ajoutée à la table interne de la vue. #8766 #8788 (vzakaznikov) #8788 #8806 (Nikolai Kochetov) #8803 (Nikolai Kochetov) - Correction de la progression via le protocole natif client-serveur, en envoyant les informations de progression après la mise à jour finale (comme pour les logs). Cela peut ne concerner que certains outils tiers utilisant le protocole natif. #9495 (Azat Khuzhin)
- Ajout d’une métrique système suivant le nombre de connexions client utilisant le protocole MySQL (#9013). #9015 (Eugene Klimov)
- Désormais, les réponses HTTP auront l’en-tête
X-ClickHouse-Timezonedéfini sur la même valeur de fuseau horaire que celle renvoyée parSELECT timezone(). #9493 (Denis Glazachev)
Amélioration des performances
- Amélioration des performances de l’analyse de l’index avec IN #9261 (Anton Popov)
- Code plus simple et plus efficace dans les fonctions logiques, avec en plus un nettoyage du code. Suite de #8718 #8728 (Alexander Kazakov)
- Amélioration globale des performances (de 5 % à 200 % pour les requêtes concernées) grâce à un aliasing encore plus strict avec les fonctionnalités de C++20. #9304 (Amos Bird)
- Aliasing plus strict pour les boucles internes des fonctions de comparaison. #9327 (alexey-milovidov)
- Aliasing plus strict pour les boucles internes des fonctions arithmétiques. #9325 (alexey-milovidov)
- Une implémentation environ 3 fois plus rapide de
ColumnVector::replicate(), sur laquelle reposeColumnConst::convertToFullColumn(). Sera également utile dans les tests lors de la matérialisation de constantes. #9293 (Alexander Kazakov) - Nouvelle amélioration mineure des performances de
ColumnVector::replicate()(cela accélère la fonctionmaterializeet les fonctions d’ordre supérieur), dans la continuité de #9293 #9442 (Alexander Kazakov) - Amélioration des performances de la fonction d’agrégation
stochasticLinearRegression. Ce correctif a été fourni par Intel. #8652 (alexey-milovidov) - Amélioration des performances de la fonction
reinterpretAsFixedString. #9342 (alexey-milovidov) - Ne pas envoyer de blocs au client pour le format
Nulldans le pipeline de processeurs. #8797 (Nikolai Kochetov) #8767 (Alexander Kuzmenkov)
Amélioration de la compilation/des tests/du packaging
- La gestion des exceptions fonctionne désormais correctement sur Windows Subsystem for Linux. Voir https://github.com/ClickHouse-Extras/libunwind/pull/3. Cela corrige #6480 #9564 (sobolevsv)
- Remplacement de
readlineparreplxxpour l’édition interactive de lignes dansclickhouse-client#8416 (Ivan) - Réduction du temps de compilation et du nombre d’instanciations de Template dans FunctionsComparison. #9324 (alexey-milovidov)
- Ajout de l’intégration de
clang-tidydans la CI. Voir aussi #6044 #9566 (alexey-milovidov) - Désormais, ClickHouse est lié dans la CI avec
lld, y compris pourgcc. #9049 (alesapin) - Possibilité de randomiser l’ordonnancement des threads et d’insérer des perturbations lorsque les variables d’environnement
THREAD_FUZZER_*sont définies. Cela facilite les tests. #9459 (alexey-milovidov) - Activation des sockets sécurisés dans les tests sans état #9288 (tavplubix)
- Renforcement de la robustesse de SPLIT_SHARED_LIBRARIES=OFF #9156 (Azat Khuzhin)
- Le test “performance_introspection_and_logging” est désormais fiable face aux blocages aléatoires du serveur. Cela peut se produire dans l’environnement de CI. Voir aussi #9515 #9528 (alexey-milovidov)
- Validation du XML dans le style check. #9550 (alexey-milovidov)
- Correction d’une race condition dans le test
00738_lock_for_inner_table. Ce test reposait sur sleep. #9555 (alexey-milovidov) - Suppression des tests de performance de type
once. Cela est nécessaire pour exécuter tous les tests de performance en mode de comparaison statistique (plus fiable). #9557 (alexey-milovidov) - Ajout d’un test de performance pour les fonctions arithmétiques. #9326 (alexey-milovidov)
- Ajout d’un test de performance pour les aggregate functions
sumMapetsumMapWithOverflow. Suite à #8933 #8947 (alexey-milovidov) - Vérification du style de ErrorCodes via le style check. #9370 (alexey-milovidov)
- Ajout d’un script pour l’historique des tests. #8796 (alesapin)
- Ajout de l’avertissement GCC
-Wsuggest-overridepour repérer et corriger tous les endroits où le mot-cléoverridedoit être utilisé. #8760 (kreuzerkrieg) - Ignorer le symbole faible sous Mac OS X, car il doit être défini #9538 (Deleted user)
- Normalisation du temps d’exécution de certaines requêtes dans les tests de performance. Cela a été fait en préparation de l’exécution de tous les tests de performance en mode de comparaison. #9565 (alexey-milovidov)
- Correction de certains tests pour prendre en charge pytest avec les tests de requêtes #9062 (Ivan)
- Activation de SSL dans la compilation avec MSan, afin que le serveur n’échoue pas au démarrage lors de l’exécution des tests sans état #9531 (tavplubix)
- Correction de la substitution de base de données dans les résultats des tests #9384 (Ilya Yatsishin)
- Corrections de compilation pour diverses plateformes #9381 (proller) #8755 (proller) #8631 (proller)
- Ajout de la section
disksà l’image Docker de test stateless-with-coverage #9213 (Pavel Kovalenko) - Suppression des fichiers dans l’arborescence des sources lors de la compilation avec GRPC #9588 (Amos Bird)
- Temps de compilation légèrement réduit en supprimant SessionCleaner de Context. Simplification du code de SessionCleaner. #9232 (alexey-milovidov)
- Mise à jour de la détection des requêtes bloquées dans le script clickhouse-test #8858 (Alexander Kazakov)
- Suppression de certains fichiers inutiles du dépôt. #8843 (alexey-milovidov)
- Changement du type des tests de performance mathématiques de
onceàloop. #8783 (Nikolai Kochetov) - Ajout d’une image Docker permettant de générer un rapport HTML interactif de navigation dans le code pour notre base de code. #8781 (alesapin) Voir Woboq Code Browser
- Masquage de certains échecs de test sous MSan. #8780 (Alexander Kuzmenkov)
- Accélération du test “exception while insert”. Ce test dépasse souvent le délai d’attente dans la compilation debug-with-coverage. #8711 (alexey-milovidov)
- Mise à jour de
libcxxetlibcxxabivers master. En préparation de #9304 #9308 (alexey-milovidov) - Corrige le test instable
00910_zookeeper_test_alter_compression_codecs. #9525 (alexey-milovidov) - Supprime les options dupliquées de l’éditeur de liens. Garantit que l’éditeur de liens ne recherchera pas de symbole inattendu. #9433 (Amos Bird)
- Ajoute le driver
clickhouse-odbcaux images de test. Cela permet de tester l’interaction de ClickHouse avec ClickHouse via son propre pilote ODBC. #9348 (filimonov) - Corrige plusieurs bogues dans les tests unitaires. #9047 (alesapin)
- Active l’avertissement GCC
-Wmissing-include-dirsafin d’éliminer tous les includes inexistants, principalement dus à des erreurs dans les scripts CMake #8704 (kreuzerkrieg) - Décrit les raisons pour lesquelles le query profiler peut ne pas fonctionner. Cela vise #9049 #9144 (alexey-milovidov)
- Met à jour OpenSSL vers la branche master upstream. Corrige le problème où des connexions TLS pouvaient échouer avec le message
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal erroretSSL Exception: error:2400006E:random number generator::error retrieving entropy. Le problème était présent dans la version 20.1. #8956 (alexey-milovidov) - Met à jour le Dockerfile du server #8893 (Ilya Mazaev)
- Corrections mineures dans le script build-gcc-from-sources #8774 (Michael Nacharov)
- Remplace
numbersparzerosdans les tests de performance où la colonnenumbern’est pas utilisée. Cela donnera des résultats de test plus propres. #9600 (Nikolai Kochetov) - Corrige un problème de dépassement de pile lors de l’utilisation de initializer_list dans les constructeurs de Column. #9367 (Deleted user)
- Met à niveau librdkafka vers la v1.3.0. Active les bibliothèques intégrées
rdkafkaetgsaslsur Mac OS X. #9000 (Andrew Onyshchuk) - Correction de build sur GCC 9.2.0 #9306 (vxider)
Version de ClickHouse v20.1
Version de ClickHouse v20.1.16.120-stable 2020-60-26
Correction de bugs
- Correction d’un crash rare provoqué par l’utilisation d’une colonne
Nullabledans une condition prewhere. Suite de #11608. #11869 (Nikolai Kochetov). - Ne plus autoriser arrayJoin à l’intérieur des fonctions d’ordre supérieur. Cela entraînait une désynchronisation du protocole. Cela clôt #3933. #11846 (alexey-milovidov).
- Correction du comportement inattendu de requêtes telles que
SELECT *, xyz.*, qui réussissaient alors qu’une erreur était attendue. #11753 (hexiaoting). - Correction de LOGICAL_ERROR provoquée par une déduction de type incorrecte pour des littéraux complexes dans le format d’entrée Values. #11732 (tavplubix).
- Correction de
ORDER BY ... WITH FILLsur des colonnes constantes. #11697 (Anton Popov). - Transmission de timeouts appropriés lors de la communication avec le bridge XDBC. Récemment, les timeouts n’étaient pas respectés lors de la vérification de liveness du bridge et de la réception des métadonnées. #11690 (alexey-milovidov).
- Ajout de la prise en charge des expressions régulières avec des indicateurs insensibles à la casse. Cela corrige #11101 et #11506. #11649 (alexey-milovidov).
- Correction des bloom filters pour String (data skipping indices). #11638 (Azat Khuzhin).
- Correction d’un crash rare provoqué par l’utilisation d’une colonne
Nullabledans une condition prewhere. (C’est probablement lié d’une manière ou d’une autre à #11572.) #11608 (Nikolai Kochetov). - Correction du code de sortie incorrect de clickhouse-client lorsque exception.code() % 256 = 0. #11601 (filimonov).
- Correction d’une erreur mineure dans le message de log concernant « Mark cache size was lowered » au démarrage du serveur. Cela clôt #11399. #11589 (alexey-milovidov).
- Désormais, le conteneur Docker clickhouse-server privilégiera IPv6 lors de la vérification de la disponibilité du serveur. #11550 (Ivan Starkov).
- Correction d’une fuite de mémoire lorsqu’une exception est levée au milieu d’une agrégation avec des fonctions -State. Cela corrige #8995. #11496 (alexey-milovidov).
- Correction de l’utilisation d’une clé primaire encapsulée dans une fonction avec le modificateur ‘FINAL’ et l’optimisation ‘ORDER BY’. #10715 (Anton Popov).
Version de ClickHouse v20.1.15.109-stable 2020-06-19
Correction de bugs
Version de ClickHouse v20.1.14.107-stable 2020-06-11
Correction de bugs
- Correction de l’erreur
Size of offsets does not match size of columnpour les requêtes avecPREWHERE column in (subquery)etARRAY JOIN. #11580 (Nikolai Kochetov).
Version de ClickHouse v20.1.13.105-stable 2020-06-10
Corrections de bugs
- Corrige l’erreur
Data compressed with different methodsqui peut se produire simin_bytes_to_use_direct_ioest activé, que PREWHERE est actif et que SAMPLE est utilisé, ou avec un grand nombre de threads. Cela corrige #11539. #11540 (alexey-milovidov). - Corrige la valeur renvoyée pour la taille compressée des codecs. #11448 (Nikolai Kochetov).
- Corrige un crash du serveur lorsqu’une colonne possède un codec de compression avec des arguments non littéraux. Corrige #11365. #11431 (alesapin).
- Corrige pointInPolygon avec nan comme point. Corrige #11375. #11421 (Alexey Ilyukhov).
- Corrige geohashesInBox avec des arguments hors de la plage latitude/longitude. #11403 (Vasily Nemkov).
- Corrige une possible erreur
Pipeline stuckpour les requêtes avec tri externe et limite. Corrige #11359. #11366 (Nikolai Kochetov). - Corrige un crash dans
quantilesExactWeightedArray. #11337 (Nikolai Kochetov). - Rétablit l’écriture en parallèle dans
MATERIALIZED VIEWavec le paramètreparallel_view_processing = 1. Corrige #10241. #11330 (Nikolai Kochetov). - Corrige visitParamExtractRaw lorsque le JSON extrait contient des chaînes avec des { ou [ non appariés. #11318 (Ewout).
- Corrige une condition de concurrence très rare dans ThreadPool. #11314 (alexey-milovidov).
- Corrige un possible usage de mémoire non initialisée lors de la conversion. Exemple :
SELECT toIntervalSecond(now64()). #11311 (alexey-milovidov). - Corrige le problème où l’analyse des index ne peut pas fonctionner si une table a une colonne Array dans la clé primaire et si une requête filtre sur cette colonne avec les fonctions
emptyounotEmpty. Cela corrige #11286. #11303 (alexey-milovidov). - Correction d’un bug pouvant entraîner une estimation incorrecte de la vitesse d’exécution d’une requête, et faire en sorte que la limite de
min_execution_speedne fonctionne pas ou fonctionne mal si la requête est bridée par les paramètresmax_network_bandwidth,max_execution_speedoupriority. La valeur par défaut detimeout_before_checking_execution_speeddevient non nulle, car sinon les paramètresmin_execution_speedetmax_execution_speedn’ont aucun effet. Cela corrige #11297. Cela corrige #5732. Cela corrige #6228. Amélioration de l’ergonomie : éviter la concaténation du message d’exception avec la barre de progression dansclickhouse-client. #11296 (alexey-milovidov). - Correction d’un plantage lors de la lecture de données malformées au format Protobuf. Cela corrige #5957 et #11203. #11258 (Vitaly Baranov).
- Correction d’une erreur possible
Cannot capture columnpour les fonctions d’ordre supérieur avec un argument capturé de typeArray(Array(LowCardinality)). #11185 (Nikolai Kochetov). - Si un index de saut de données dépendait de colonnes modifiées lors d’une fusion en arrière-plan (pour SummingMergeTree, AggregatingMergeTree, ainsi que pour TTL GROUP BY), il était calculé de manière incorrecte. Ce problème est corrigé en déplaçant le calcul de l’index après la fusion, afin qu’il soit calculé sur les données fusionnées. #11162 (Azat Khuzhin).
- Suppression de la journalisation de la tâche de finalisation de mutation lorsqu’aucune finalisation n’a eu lieu. #11109 (alesapin).
- Correction de bugs de résolution d’arguments dans parseDateTime64BestEffort. #10925. #11038 (Vasily Nemkov).
- Correction d’une taille incorrecte des données brutes dans la méthode getRawData(). #10964 (Igr).
- Correction de la rétrocompatibilité avec les tuples dans les tables Distributed. #10889 (Anton Popov).
- Correction d’un SIGSEGV dans StringHashTable (si une telle clé n’existe pas). #10870 (Azat Khuzhin).
- Correction d’un bug dans
ReplicatedMergeTreequi pouvait faire que certaines requêtesALTERsurOPTIMIZErestent bloquées en attendant une replica devenue inactive. #10849 (tavplubix). - Correction de l’ordre des colonnes après Block::sortColumns() (avec ajout d’un test montrant que cela affecte un cas d’usage réel : le moteur Buffer). #10826 (Azat Khuzhin).
- Correction d’un problème avec l’ODBC bridge lorsqu’aucun guillemetage des identifiants n’est demandé. Cela corrige #7984. #10821 (alexey-milovidov).
- Correction d’un signalement UBSan et MSan dans DateLUT. #10798 (alexey-milovidov).
-
- Utilisation de
src_typepour assurer une conversion de type correcte dans les conditions sur les clés. Corrige #6287. #10791 (Andrew Onyshchuk).
- Utilisation de
- Corrige le comportement de
parallel_view_processing. Désormais, en cas d’exception, toutes les insertions dansMATERIALIZED VIEWdoivent tout de même se terminer. Corrige #10241. #10757 (Nikolai Kochetov). - Corrige le combinateur -OrNull et -OrDefault lorsqu’ils sont combinés avec -State. #10741 (hcz).
- Corrige la disparition des totaux. Les totaux pouvaient être filtrés si la requête comportait une jointure ou une sous-requête avec une condition where externe. Corrige #10674. #10698 (Nikolai Kochetov).
- Corrige les utilisations multiples de l’opérateur
INavec le même ensemble dans une même requête. #10686 (Anton Popov). - Corrige l’ordre des paramètres dans le constructeur AggregateTransform. #10667 (palasonic1).
- Corrige l’absence d’exécution parallèle des requêtes distantes avec
distributed_aggregation_memory_efficientactivé. Corrige #10655. #10664 (Nikolai Kochetov). - Corrige l’optimisation des prédicats pour les requêtes distribuées (
enable_optimize_predicate_expression=1) dans les requêtes avec une sectionHAVING(c.-à-d. lorsqu’un filtrage sur le serveur initiateur est requis), en préservant l’ordre des expressions (ce qui suffit à corriger le problème), et force également l’agrégateur à utiliser les noms de colonnes plutôt que les index. Corrige : #10613, #11413. #10621 (Azat Khuzhin). - Corrige l’erreur
the BloomFilter false positive must be a double number between 0 and 1#10551. #10569 (Winter Zhang). - Corrige le SELECT de la colonne ALIAS dont le type de l’expression par défaut diffère du type de la colonne. #10563 (Azat Khuzhin).
-
- Ajout de la comparaison entre les valeurs DateTime64 et String (comme pour DateTime). #10560 (Vasily Nemkov).
Version de ClickHouse v20.1.12.86, 2020-05-26
Correction de bugs
- Correction d’une incompatibilité de l’agrégation à deux niveaux entre la version 20.1 et les versions antérieures. Cette incompatibilité se produit lorsque différentes versions de ClickHouse sont utilisées sur le nœud initiateur et les nœuds distants, que le résultat du
GROUP BYest volumineux et que l’agrégation est effectuée sur un seul champString. Cela entraîne la présence de plusieurs lignes non fusionnées pour une même clé dans le résultat. #10952 (alexey-milovidov). - Correction d’une corruption de données affectant la colonne clé
LowCardinality(FixedString)dansSummingMergeTree, qui pouvait survenir après une fusion. Corrige #10489. #10721 (Nikolai Kochetov). - Correction d’un bug qui bloquait les requêtes HTTP lors de la fermeture du client lorsque
readonly=2etcancel_http_readonly_queries_on_client_close=1. Corrige #7939, #7019, #7736, #7091. #10684 (tavplubix). - Correction d’un bug où la requête
SYSTEM DROP DNS CACHEsupprimait également les caches utilisés pour vérifier si un utilisateur est autorisé à se connecter depuis certaines adresses IP. #10608 (tavplubix). - Correction de résultats scalaires incorrects dans la requête interne d’une
MATERIALIZED VIEWlorsque cette requête contenait une table dépendante. #10603 (Nikolai Kochetov). - Correction d’un cas où une mutation avait terminé sur toutes les parts, mais restait bloquée avec
is_done=0. #10526 (alesapin). - Correction d’un dépassement au début de l’époque Unix pour les fuseaux horaires avec un décalage fractionnaire par rapport à l’UTC. Corrige #9335. #10513 (alexey-milovidov).
- Correction d’un arrêt incorrect du moteur Distributed. #10491 (Azat Khuzhin).
- Correction d’un dépassement numérique dans
simpleLinearRegressionsur de grands entiers. #10474 (hcz). - Correction de la suppression du répertoire de métadonnées en cas d’échec de l’attachement de la base de données. #10442 (Winter Zhang).
- Ajout d’une vérification du nombre et du type d’arguments lors de la création de l’index
BloomFilter#9623. #10431 (Winter Zhang). - Correction d’un problème où une requête avec
ARRAY JOIN,ORDER BYetLIMITpouvait renvoyer un résultat incomplet. Corrige #10226. #10427 (alexey-milovidov). - Préférer
fallback_to_stale_replicasàskip_unavailable_shards. #10422 (Azat Khuzhin). - Correction de l’aplatissement incorrect des types de données
Array(Tuple(...)). Cela corrige #10259. #10390 (alexey-milovidov). - Correction d’un comportement incorrect dans
HashTablequi provoquait une erreur de compilation lors de la tentative de lecture d’une HashMap depuis le buffer. #10386 (palasonic1). - Correction d’une possible erreur
Pipeline stuckdansConcatProcessor, qui pouvait se produire lors d’une requête distante. #10381 (Nikolai Kochetov). - Correction de l’erreur
Pipeline stuckavecmax_rows_to_group_byetgroup_by_overflow_mode = 'break'. #10279 (Nikolai Kochetov). - Correction de plusieurs bogues lorsque certaines données étaient insérées avec quorum, puis supprimées d’une manière ou d’une autre (DROP PARTITION, TTL), ce qui entraînait le blocage des INSERT ou de faux positifs sous forme d’exceptions dans les SELECT. Cela corrige #9946. #10188 (Nikita Mikhaylov).
- Correction d’une incompatibilité lorsque des versions antérieures à 18.12.17 sont utilisées sur des serveurs distants et qu’une version plus récente est utilisée sur le serveur initiateur, avec GROUP BY à la fois sur des clés fixes et non fixes, et lorsque la méthode de group by à deux niveaux est activée. #3254 (alexey-milovidov).
Amélioration de la compilation/des tests/du packaging
- Ajout de certificats d’autorités de certification à l’image Docker de clickhouse-server. #10476 (filimonov).
Version de ClickHouse v20.1.10.70, 2020-04-17
Correction de bugs
- Corrige la rare exception possible
Cannot drain connections: cancel first. #10239 (Nikolai Kochetov). - Corrige un bug où ClickHouse renvoyait le message d’erreur
'Unknown function lambda.'lorsque l’utilisateur tentait d’exécuterALTER UPDATE/DELETEsur des tables avecENGINE = Replicated*. La vérification des fonctions non déterministes gère désormais correctement les expressions lambda. #10237 (Alexander Kazakov). - Corrige
parseDateTimeBestEffortpour les chaînes au format RFC-2822 lorsque le jour de la semaine est un mardi ou un jeudi. Cela corrige #10082. #10214 (alexey-milovidov). - Corrige les noms de colonnes des constantes à l’intérieur de
JOINqui peuvent entrer en conflit avec les noms des constantes à l’extérieur deJOIN. #10207 (alexey-milovidov). - Corrige une possible exécution infinie d’une requête alors que celle-ci devrait en réalité s’arrêter sur LIMIT, lors de la lecture depuis une source infinie comme
system.numbersousystem.zeros. #10206 (Nikolai Kochetov). - Corrige l’optimisation move-to-prewhere en présence de fonctions
arrayJoin(dans certains cas). Cela corrige #10092. #10195 (alexey-milovidov). - Ajoute la possibilité d’assouplir la restriction sur l’utilisation de fonctions non déterministes dans les mutations avec le paramètre
allow_nondeterministic_mutations. #10186 (filimonov). - Convertit les blocs si la structure ne correspond pas lors d’un
INSERTdans une table avec le moteurDistributed. #10135 (Azat Khuzhin). - Corrige
SIGSEGVlors d’unINSERTdans une tableDistributedlorsque sa structure diffère de celle des tables sous-jacentes. #10105 (Azat Khuzhin). - Corrige une possible perte de lignes pour les requêtes avec
JOINetUNION ALL. Corrige #9826, #10113. #10099 (Nikolai Kochetov). - Ajoute la vérification des arguments et la prise en charge des arguments identifiants pour le moteur de base de données MySQL. #10077 (Winter Zhang).
- Corrige un bug dans la source de dictionnaire ClickHouse d’un serveur ClickHouse sur localhost. Ce bug peut entraîner une corruption de la mémoire si les types du dictionnaire et de la source ne sont pas compatibles. #10071 (alesapin).
- Corrige l’erreur
Cannot clone block with columns because block has 0 columns ... While executing GroupingAggregatedTransform. Cela se produisait lorsque le paramètredistributed_aggregation_memory_efficientétait activé et qu’une requête distribuée lisait des données agrégées avec des niveaux différents depuis différents shards (mélange d’agrégation à un niveau et à deux niveaux). #10063 (Nikolai Kochetov). - Corrige une erreur de segmentation pouvant survenir dans
GROUP BYsur des clés de type chaîne contenant des octets nuls en fin de chaîne (#8636, #8925). #10025 (Alexander Kuzmenkov). - Corrige un bug dans lequel les tables nécessaires n’étaient pas récupérées à l’une des étapes de traitement des requêtes sur certaines bases de données. Corrige #9699. #9949 (achulkov2).
- Corrige l’erreur
'Not found column in block'lorsqueJOINest utilisé avecTOTALS. Corrige #9839. #9939 (Artem Zuikov). - Corrige un bug où les requêtes DDL
ON CLUSTERpouvaient se bloquer au démarrage du serveur. #9927 (Gagan Arneja). - Corrige
TRUNCATEpour Join table engine (#9917). #9920 (Amos Bird). - Corrige l’erreur
'scalar does not exist'dans les requêtes ALTER (#9878). #9904 (Amos Bird). - Corrige une condition de concurrence entre drop et optimize dans
ReplicatedMergeTree. #9901 (alesapin). - Corrige la logique
DeleteOnDestroydansATTACH PART, qui pouvait entraîner la suppression automatique de la part attachée, et ajoute quelques tests. #9410 (Vladimir Chebotarev).
Amélioration de la compilation/des tests/du packaging
- Correction du test unitaire
collapsing_sorted_stream. #9367 (Utilisateur supprimé).
Version de ClickHouse v20.1.9.54, 2020-03-28
Correction de bugs
- Corrige l’erreur
'Different expressions with the same alias'lorsqu’une requête contientPREWHEREetWHEREsur une table distribuée etSET distributed_product_mode = 'local'. #9871 (Artem Zuikov). - Corrige la consommation mémoire excessive des mutations pour les tables avec une clé primaire composite. Cela corrige #9850. #9860 (alesapin).
- Pour les requêtes
INSERT, le shard limite désormais les paramètres reçus de l’initiateur aux contraintes du shard au lieu de lever une exception. Cette correction permet d’envoyer des requêtesINSERTà un shard ayant d’autres contraintes. Ce changement améliore la correction de #9447. #9852 (Vitaly Baranov). - Corrige une exception possible
Got 0 in totals chunk, expected 1côté client. Cela se produisait pour les requêtes avecJOINlorsque la table jointe à droite ne contenait aucune ligne. Exemple :select * from system.one t1 join system.one t2 on t1.dummy = t2.dummy limit 0 FORMAT TabSeparated;. Corrige #9777. #9823 (Nikolai Kochetov). - Corrige un
SIGSEGVavecoptimize_skip_unused_shardslorsque le type ne peut pas être converti. #9804 (Azat Khuzhin). - Corrige quelques cas où le fuseau horaire de l’argument de la fonction n’était pas utilisé correctement. #9574 (Vasily Nemkov).
Amélioration
- Supprimer l’étape
ORDER BYdes mutations, car la lecture s’effectue à partir d’une seule part ordonnée et dans un seul thread. Ajouter également une vérification pour s’assurer que l’ordre des lignes dans la mutation respecte celui de la clé de tri et qu’il n’est pas rompu. #9886 (alesapin).
Amélioration de la compilation/des tests/du packaging
- Suppression des options dupliquées de l’éditeur de liens afin d’éviter qu’il ne recherche un symbole inattendu. #9433 (Amos Bird).
Version de ClickHouse v20.1.8.41, 2020-03-20
Correction de bugs
- Corrige une possible erreur permanente
Cannot schedule a task(due à une exception non gérée dansParallelAggregatingBlockInputStream::Handler::onFinish/onFinishThread). Cela corrige #6833. #9154 (Azat Khuzhin) - Corrige une consommation excessive de mémoire dans les requêtes
ALTER(mutations). Cela corrige #9533 et #9670. #9754 (alesapin) - Corrige un bug lié à l’utilisation des accents graves dans le DDL des dictionnaires externes. Cela corrige #9619. #9734 (alesapin)
Version de ClickHouse v20.1.7.38, 2020-03-18
Correction de bugs
- Correction des noms internes erronés des fonctions
sumKahanetsumWithOverflow. Cela entraînait une exception lors de l’utilisation de ces fonctions dans des requêtes distantes. #9636 (Azat Khuzhin). Ce problème était présent dans toutes les versions de ClickHouse. - Prise en charge de
ALTER ON CLUSTERpour les tablesDistributedavec réplication interne. Cela corrige #3268. #9617 (shinoi2). Ce problème était présent dans toutes les versions de ClickHouse. - Correction des exceptions possibles
Size of filter does not match size of columnetInvalid number of rows in ChunkdansMergeTreeRangeReader. Elles pouvaient survenir lors de l’exécution dePREWHEREdans certains cas. Corrige #9132. #9612 (Anton Popov) - Correction du problème : le fuseau horaire n’était pas conservé si vous écriviez une simple expression arithmétique comme
time + 1(contrairement à une expression commetime + INTERVAL 1 SECOND). Cela corrige #5743. #9323 (alexey-milovidov). Ce problème était présent dans toutes les versions de ClickHouse. - Il n’est désormais plus possible de créer ou d’ajouter des colonnes avec de simples alias cycliques comme
a DEFAULT b, b DEFAULT a. #9603 (alesapin) - Correction du problème où le padding à la fin d’une valeur encodée en base64 pouvait être mal formé. Mise à jour de la bibliothèque base64. Cela corrige #9491, ferme #9492 #9500 (alexey-milovidov)
- Correction d’une data race lors de la destruction de
Poco::HTTPServer. Cela pouvait se produire lorsque le serveur était démarré puis immédiatement arrêté. #9468 (Anton Popov) - Correction d’un crash possible / d’un nombre incorrect de lignes dans
LIMIT n WITH TIESlorsqu’un grand nombre de lignes sont égales à la n-ième ligne. #9464 (tavplubix) - Correction d’éventuelles sommes de contrôle incohérentes avec les TTL de colonnes. #9451 (Anton Popov)
- Correction d’un crash lorsqu’un utilisateur tente d’exécuter
ALTER MODIFY SETTINGpour la famille de moteurs de tableMergeTreedans l’ancien format. #9435 (alesapin) - Désormais, nous essaierons de finaliser les mutations plus fréquemment. #9427 (alesapin)
- Correction d’une incompatibilité du protocole de réplication introduite dans #8598. #9412 (alesapin)
- Correction de
not(has())pour l’index bloom_filter des typesArray. #9407 (achimbab) - Correction du comportement des fonctions
matchetextractlorsquehaystackcontient zéro octet. Le comportement était incorrect lorsquehaystackétait constant. Correction de #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)
Amélioration de la compilation/des tests/du packaging
- La gestion des exceptions fonctionne désormais correctement sous Windows Subsystem for Linux. Voir https://github.com/ClickHouse-Extras/libunwind/pull/3. Cela corrige #6480 #9564 (sobolevsv)
Version de ClickHouse v20.1.6.30, 2020-03-05
Correction de bugs
- Corrige l’incompatibilité des données lorsqu’elles sont compressées avec le codec
T64. #9039 (abyss7) - Corrige l’ordre des plages lors de la lecture d’une table MergeTree dans un seul thread. Corrige #8964. #9050 (CurtizJ)
- Corrige un segfault possible dans
MergeTreeRangeReaderlors de l’exécution dePREWHERE. Corrige #9064. #9106 (CurtizJ) - Corrige
reinterpretAsFixedStringpour qu’il renvoieFixedStringau lieu deString. #9052 (oandrew) - Corrige
joinGetavec des types de retour Nullable. Corrige #8919 #9014 (amosbird) - Corrige le test de fuzzing et le comportement incorrect des fonctions bitTestAll/bitTestAny. #9143 (alexey-milovidov)
- Corrige le comportement des fonctions match et extract lorsque haystack contient des octets nuls. Le comportement était incorrect lorsque haystack était constant. Corrige #9160 #9163 (alexey-milovidov)
- Corrige l’exécution des prédicats inversés lorsqu’un index fonctionnel non strictement monotone est utilisé. Corrige #9034 #9223 (Akazz)
- Autorise la réécriture de
CROSSenINNER JOINlorsqu’un opérateur[NOT] LIKEest présent dans la clauseWHERE. Corrige #9191 #9229 (4ertus2) - Autorise la ou les premières colonnes d’une table utilisant le moteur Log à être des alias. #9231 (abyss7)
- Autorise les jointures par virgule avec
IN()à l’intérieur. Corrige #7314. #9251 (4ertus2) - Améliore la logique des requêtes
ALTER MODIFY/ADD. Désormais, il n’est plus possible deADDune colonne sans type, l’expression par défaut deMODIFYne change pas le type de la colonne et le type deMODIFYne fait pas perdre la valeur de l’expression par défaut. Corrige #8669. #9227 (alesapin) - Corrige la finalisation des mutations, lorsqu’une mutation déjà terminée peut avoir le statut is_done=0. #9217 (alesapin)
- Prend en charge le pipeline “Processors” pour system.numbers et system.numbers_mt. Cela corrige également le bug où
max_execution_timen’est pas respecté. #7796 (KochetovNicolai) - Correction du comptage incorrect de la métrique
DictCacheKeysRequestedFound. #9411 (nikitamikhaylov) - Ajout d’une vérification de la storage policy dans
ATTACH PARTITION FROM,REPLACE PARTITIONetMOVE TO TABLE, qui pouvait sinon rendre les données d’une part inaccessibles après un redémarrage et empêcher ClickHouse de démarrer. #9383 (excitoon) - Correction d’un signalement UBSan dans
MergeTreeIndexSet. Cela corrige #9250 #9365 (alexey-milovidov) - Correction d’une possible concurrence d’accès aux données dans BlockIO. #9356 (KochetovNicolai)
- Prise en charge des nombres
UInt64qui ne tiennent pas dans Int64 dans les fonctions liées à JSON. Mise à jour deSIMDJSONvers la branche master. Cela corrige #9209 #9344 (alexey-milovidov) - Correction d’un problème où la quantité d’espace libre n’était pas calculée correctement si le répertoire de données était monté sur un périphérique distinct. Pour le disque par défaut, l’espace libre est calculé à partir du sous-répertoire des données. Cela corrige #7441 #9257 (millb)
- Correction d’un problème pouvant faire échouer des connexions TLS avec le message
OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error and SSL Exception: error:2400006E:random number generator::error retrieving entropy.Mise à jour d’OpenSSL vers la branche master upstream. #8956 (alexey-milovidov) - Lors de l’exécution d’une requête
CREATE, repli des expressions constantes dans les arguments du moteur de stockage. Remplacement du nom de base de données vide par la base de données courante. Corrige #6508, #3492. Correction également de la vérification de l’adresse locale dans ClickHouseDictionarySource. #9262 (tabplubix) - Correction d’un segfault dans
StorageMerge, qui peut se produire lors de la lecture depuis StorageFile. #9387 (tabplubix) - Empêche la perte de données dans
Kafkadans les rares cas où une exception se produit après la lecture du suffixe, mais avant le commit. Corrige #9378. Voir aussi : #7175 #9507 (filimonov) - Correction d’un bug provoquant l’arrêt du serveur lors d’une tentative d’utilisation ou de suppression d’une table
Kafkacréée avec des paramètres incorrects. Corrige #9494. Intègre #9507. #9513 (filimonov)
Nouvelle fonctionnalité
- Ajout de l’option
deduplicate_blocks_in_dependent_materialized_viewspour contrôler le comportement des insertions idempotentes dans les tables avec des vues matérialisées. Cette nouvelle fonctionnalité a été ajoutée à cette version corrective à la demande spéciale d’Altinity. #9070 (urykhy)
Version de ClickHouse v20.1.2.4, 2020-01-22
Changement incompatible avec les versions précédentes
- Le paramètre
merge_tree_uniform_read_distributiondevient obsolète. Le serveur le reconnaît toujours, mais il n’a plus aucun effet. #8308 (alexey-milovidov) - Le type de retour de la fonction
greatCircleDistancea été remplacé parFloat32, car le résultat du calcul est désormais de typeFloat32. #7993 (alexey-milovidov) - Les paramètres de requête doivent désormais être représentés au format « échappé ». Par exemple, pour transmettre la chaîne
a<tab>b, vous devez écrirea\tboua\<tab>b, et respectivementa%5Ctboua%5C%09bdans l’URL. Cela est nécessaire pour permettre de transmettreNULLsous la forme\N. Cela corrige #7488. #8517 (alexey-milovidov) - Le paramètre
use_minimalistic_part_header_in_zookeeperest désormais activé par défaut pourReplicatedMergeTree. Cela réduira considérablement la quantité de données stockées dans ZooKeeper. Ce paramètre est pris en charge depuis la version 19.1 et nous l’utilisons déjà en production dans plusieurs services sans aucun problème depuis plus de six mois. Désactivez ce paramètre si vous êtes susceptible de revenir à une version antérieure à 19.1. #6850 (alexey-milovidov) - Les index de saut de données sont prêts pour la production et activés par défaut. Les paramètres
allow_experimental_data_skipping_indices,allow_experimental_cross_to_join_conversionetallow_experimental_multiple_joins_emulationsont désormais obsolètes et n’ont plus aucun effet. #7974 (alexey-milovidov) - Ajout d’une nouvelle logique
ANY JOINpourStorageJoin, cohérente avec l’opérationJOIN. Pour effectuer la mise à niveau sans changer le comportement, vous devez ajouterSETTINGS any_join_distinct_right_table_keys = 1aux métadonnées des tables du moteur Join, ou recréer ces tables après la mise à niveau. #8400 (Artem Zuikov) - Le serveur doit désormais être redémarré pour appliquer les modifications de la configuration du logging. Il s’agit d’une solution de contournement temporaire pour éviter le bogue dans lequel le serveur continue d’écrire dans un fichier journal supprimé (voir #8696). #8707 (Alexander Kuzmenkov)
Nouvelle fonctionnalité
- Ajout d’informations sur les chemins des parts dans
system.merges. #8043 (Vladimir Chebotarev) - Ajout de la possibilité d’exécuter la requête
SYSTEM RELOAD DICTIONARYen modeON CLUSTER. #8288 (Guillaume Tassery) - Ajout de la possibilité d’exécuter les requêtes
CREATE DICTIONARYen modeON CLUSTER. #8163 (alesapin) - Désormais, le profil de l’utilisateur dans
users.xmlpeut hériter de plusieurs profils. #8343 (Mikhail f. Shiryaev) - Ajout de la table
system.stack_trace, qui permet de consulter les stack traces de tous les threads du serveur. Cela est utile aux développeurs pour inspecter l’état du serveur. Cela corrige #7576. #8344 (alexey-milovidov) - Ajout du type de données
DateTime64avec une précision sous-seconde configurable. #7170 (Vasily Nemkov) - Ajout de la fonction de table
clusterAllReplicas, qui permet d’interroger tous les nœuds du cluster. #8493 (kiran sunkari) - Ajout de la fonction d’agrégation
categoricalInformationValue, qui calcule la valeur d’information d’une variable discrète. #8117 (hcz) - Accélération de l’analyse des fichiers de données au format
CSV,TSVetJSONEachRowen l’effectuant en parallèle. #7780 (Alexander Kuzmenkov) - Ajout de la fonction
bankerRound, qui effectue un arrondi bancaire. #8112 (hcz) - Prise en charge de davantage de langues dans le dictionnaire intégré pour les noms de régions : ‘ru’, ‘en’, ‘ua’, ‘uk’, ‘by’, ‘kz’, ‘tr’, ‘de’, ‘uz’, ‘lv’, ‘lt’, ‘et’, ‘pt’, ‘he’, ‘vi’. #8189 (alexey-milovidov)
- Amélioration de la cohérence de la logique
ANY JOIN. Désormais,t1 ANY LEFT JOIN t2est égal àt2 ANY RIGHT JOIN t1. #7665 (Artem Zuikov) - Ajout du paramètre
any_join_distinct_right_table_keys, qui active l’ancien comportement pourANY INNER JOIN. #7665 (Artem Zuikov) - Ajout de
SEMIetANTI JOIN. L’ancien comportement deANY INNER JOINest désormais disponible sous la formeSEMI LEFT JOIN. #7665 (Artem Zuikov) - Ajout du format
Distributedpour le moteurFileet de la fonction de tablefile, qui permet de lire des fichiers.bingénérés par des inserts asynchrones dans une tableDistributed. #8535 (Nikolai Kochetov) - Ajout d’un argument facultatif de colonne de réinitialisation pour
runningAccumulate, permettant de réinitialiser les résultats d’agrégation pour chaque nouvelle valeur de clé. #8326 (Sergey Kononenko) - Ajout de la possibilité d’utiliser ClickHouse comme endpoint Prometheus. #7900 (vdimir)
- Ajout de la section
<remote_url_allow_hosts>dansconfig.xml, qui restreint les hôtes autorisés pour les moteurs de table distants et les fonctions de tableURL,S3,HDFS. #7154 (Mikhail Korotov) - Ajout de la fonction
greatCircleAngle, qui calcule la distance sur une sphère en degrés. #8105 (alexey-milovidov) - Rayon de la Terre modifié pour être cohérent avec la bibliothèque H3. #8105 (alexey-milovidov)
- Ajout des formats
JSONCompactEachRowetJSONCompactEachRowWithNamesAndTypesen entrée et en sortie. #7841 (Mikhail Korotov) - Ajout d’une fonctionnalité pour les moteurs de table et fonctions de table liés aux fichiers (
File,S3,URL,HDFS), permettant de lire et d’écrire des fichiersgzipselon un paramètre de moteur supplémentaire ou l’extension du fichier. #7840 (Andrey Bodrov) - Ajout de la fonction
randomASCII(length), qui génère une chaîne composée d’un ensemble aléatoire de caractères imprimables ASCII. #8401 (BayoNet) - Ajout de la fonction
JSONExtractArrayRaw, qui renvoie un tableau d’éléments non analysés d’un tableau JSON à partir d’une chaîneJSON. #8081 (Oleg Matrokhin) - Ajout de la fonction
arrayZip, qui permet de combiner plusieurs tableaux de même longueur en un seul tableau de tuples. #8149 (Winter Zhang) - Ajout de la possibilité de déplacer des données entre disques selon les expressions
TTLconfigurées pour la famille de moteurs de table*MergeTree. #8140 (Vladimir Chebotarev) - Ajout d’une nouvelle fonction d’agrégation
avgWeighted, qui permet de calculer une moyenne pondérée. #7898 (Andrey Bodrov) - Le parsing parallèle est désormais activé par défaut pour les formats
TSV,TSKV,CSVetJSONEachRow. #7894 (Nikita Mikhaylov) - Ajout de plusieurs fonctions géo de la bibliothèque
H3:h3GetResolution,h3EdgeAngle,h3EdgeLength,h3IsValideth3kRing. #8034 (Konstantin Malanchev) - Ajout de la prise en charge de la compression brotli (
br) dans les stockages liés aux fichiers et les fonctions de table. Cela corrige #8156. #8526 (alexey-milovidov) - Ajout des fonctions
groupBit*pour le typeSimpleAggregationFunction. #8485 (Guillaume Tassery)
Correction de bugs
- Correction du renommage des tables utilisant le moteur
Distributed. Corrige l’issue #7868. #8306 (tavplubix) - Les dictionnaires prennent désormais en charge
EXPRESSIONpour les attributs dans une chaîne quelconque, dans un dialecte SQL autre que ClickHouse. #8098 (alesapin) - Correction d’une requête
INSERT SELECT FROM mysql(...)défaillante. Corrige #8070 et #7960. #8234 (tavplubix) - Correction de l’erreur “Mismatch column sizes” lors de l’insertion d’un
Tuplepar défaut depuisJSONEachRow. Corrige #5653. #8606 (tavplubix) - Une exception est désormais levée lors de l’utilisation de
WITH TIESavecLIMIT BY. Ajout également de la possibilité d’utiliserTOPavecLIMIT BY. Corrige #7472. #7637 (Nikita Mikhaylov) - Correction d’une dépendance involontaire à une version récente de glibc dans le binaire
clickhouse-odbc-bridge. #8046 (Amos Bird) - Correction d’un bug dans la fonction de vérification de la famille de moteurs
*MergeTree. Désormais, elle n’échoue plus lorsque le nombre de lignes dans la dernière granule et dans la dernière marque est identique (non finale). #8047 (alesapin) - Correction de l’insertion dans des colonnes
Enum*après une requêteALTER, lorsque le type numérique sous-jacent est identique au type spécifié pour la table. Corrige #7836. #7908 (Anton Popov) - L’argument négatif non constant “size” est désormais autorisé pour la fonction
substring. Il était refusé par erreur. Corrige #4832. #7703 (alexey-milovidov) - Correction d’un bug d’analyse syntaxique lorsque le nombre d’arguments transmis au moteur de table
(O|J)DBCest incorrect. #7709 (alesapin) - Utilisation du nom de commande du processus clickhouse en cours d’exécution lors de l’envoi des logs vers syslog. Dans les versions précédentes, une chaîne vide était utilisée à la place du nom de commande. #8460 (Michael Nacharov)
- Correction de la vérification des hôtes autorisés pour
localhost. Cette PR corrige la solution apportée dans #8241. #8342 (Vitaly Baranov) - Correction d’un crash rare dans les fonctions
argMinetargMaxavec des arguments chaîne longs, lorsque le résultat est utilisé dans la fonctionrunningAccumulate. Corrige #8325 #8341 (dinosaur) - Correction du memory overcommit pour les tables utilisant le moteur
Buffer. #8345 (Azat Khuzhin) - Correction d’un bogue potentiel dans les fonctions qui peuvent prendre
NULLcomme l’un des arguments et renvoyer une valeur non-NULL. #8196 (alexey-milovidov) - Amélioration du calcul des métriques dans le pool de threads pour les processus d’arrière-plan des moteurs de table
MergeTree. #8194 (Vladimir Chebotarev) - Correction de la fonction
INdans l’instructionWHERElorsqu’un filtre de table au niveau des lignes est présent. Corrige #6687 #8357 (Ivan) - Désormais, une exception est levée si une valeur entière n’est pas entièrement analysée pour les valeurs de paramètres. #7678 (Mikhail Korotov)
- Correction d’une exception lorsqu’une fonction d’agrégation est utilisée dans une requête vers une table distribuée avec plus de deux shards locaux. #8164 (小路)
- Désormais, le bloom filter peut gérer des tableaux de longueur nulle et n’effectue plus de calculs redondants. #8242 (achimbab)
- Correction de la vérification permettant de déterminer si un hôte client est autorisé, en faisant correspondre l’hôte client à
host_regexpspécifié dansusers.xml. #8241 (Vitaly Baranov) - Assouplissement de la vérification des colonnes ambiguës, qui entraînait des faux positifs dans plusieurs clauses
JOIN ON. #8385 (Artem Zuikov) - Correction d’un possible plantage du serveur (
std::terminate) lorsque le serveur ne peut pas envoyer ou écrire des données au formatJSONouXMLavec des valeurs de typeString(nécessitant une validationUTF-8), lors de la compression des données de résultat avec l’algorithme Brotli, ou dans certains autres cas rares. Cela corrige #7603 #8384 (alexey-milovidov) - Correction d’une race condition dans
StorageDistributedDirectoryMonitordétectée par la CI. Cela corrige #8364. #8383 (Nikolai Kochetov) - Désormais, les background merges de la famille de moteurs de table
*MergeTreepréservent plus précisément l’ordre des volumes de la storage policy. #8549 (Vladimir Chebotarev) - Désormais, le moteur de table
Kafkafonctionne correctement avec le formatNative. Cela corrige #6731 #7337 #8003. #8016 (filimonov) - Correction des formats avec en-têtes (comme
CSVWithNames) qui levaient une exception de fin de fichier pour le moteur de tableKafka. #8016 (filimonov) - Correction d’un bug lors de la création d’un Set à partir d’une sous-requête dans la partie droite de la clause
IN. Cela corrige #5767 et #2542. #7755 (Nikita Mikhaylov) - Correction d’un possible crash lors de la lecture depuis le moteur de stockage
File. #7756 (Nikolai Kochetov) - Correction de la lecture de fichiers au format
Parquetcontenant des colonnes de typelist. #8334 (maxulan) - Correction de l’erreur
Not found columnpour les requêtes distribuées avec une conditionPREWHEREdépendant de la clé d’échantillonnage simax_parallel_replicas > 1. #7913 (Nikolai Kochetov) - Correction de l’erreur
Not found columnsi la requête utilisaitPREWHEREen fonction de l’alias de la table et que le jeu de résultats était vide à cause de la condition sur la clé primaire. #7911 (Nikolai Kochetov) - Correction du type de retour des fonctions
randetrandConstantdans le cas d’un argumentNullable. Désormais, ces fonctions renvoient toujoursUInt32et jamaisNullable(UInt32). #8204 (Nikolai Kochetov) - Désactivation du push-down de prédicats pour l’expression
WITH FILL. Cela corrige #7784. #7789 (Winter Zhang) - Correction d’un résultat
count()incorrect pourSummingMergeTreelorsque la clauseFINALest utilisée. #3280 #7786 (Nikita Mikhaylov) - Correction d’un possible résultat incorrect pour des fonctions constantes provenant de serveurs distants. Cela se produisait pour des requêtes avec des fonctions comme
version(),uptime(), etc., qui renvoient des valeurs constantes différentes selon les serveurs. Cela corrige #7666. #7689 (Nikolai Kochetov) - Correction d’un bug complexe dans l’optimisation du push-down de prédicats, qui entraînait des résultats erronés. Cela corrige de nombreux problèmes dans cette optimisation. #8503 (Winter Zhang)
- Correction d’un crash dans la requête
CREATE TABLE .. AS dictionary. #8508 (Azat Khuzhin) - Plusieurs améliorations de la grammaire de ClickHouse dans le fichier
.g4. #8294 (taiyang-li) - Correction d’un bug entraînant des crashs dans les
JOINavec des tables utilisant le moteurJoin. Cela corrige #7556 #8254 #7915 #8100. #8298 (Artem Zuikov) - Corrige le rechargement redondant des dictionnaires lors de
CREATE DATABASE. #7916 (Azat Khuzhin) - Limite le nombre maximal de flux pour la lecture depuis
StorageFileetStorageHDFS. Corrige #7650. #7981 (alesapin) - Corrige un bug dans la requête
ALTER ... MODIFY ... CODEC, lorsque l’utilisateur spécifie à la fois une expression par défaut et un codec. Corrige 8593. #8614 (alesapin) - Corrige une erreur dans le merge en arrière-plan de colonnes de type
SimpleAggregateFunction(LowCardinality). #8613 (Nikolai Kochetov) - Corrige la vérification de type dans la fonction
toDateTime64. #8375 (Vasily Nemkov) - Désormais, le serveur ne plante plus lors d’un
LEFTou d’unFULL JOINavec un moteur Join et des paramètresjoin_use_nullsnon pris en charge. #8479 (Artem Zuikov) - Désormais, la requête
DROP DICTIONARY IF EXISTS db.dictne lève plus d’exception sidbn’existe pas. #8185 (Vitaly Baranov) - Corrige d’éventuels plantages dans les fonctions de table (
file,mysql,remote) causés par l’utilisation d’une référence vers un objetIStoragesupprimé. Corrige également l’analyse incorrecte des colonnes spécifiées lors d’une insertion dans une fonction de table. #7762 (tavplubix) - S’assure que le réseau est opérationnel avant de démarrer
clickhouse-server. Cela corrige #7507. #8570 (Zhichang Yu) - Corrige la gestion des timeouts pour les connexions sécurisées, afin que les requêtes ne restent pas bloquées indéfiniment. Cela corrige #8126. #8128 (alexey-milovidov)
- Corrige la contention inutile de
clickhouse-copierentre workers concurrents. #7816 (Ding Xiang Fei) - Désormais, les mutations n’ignorent plus les parties attachées, même si leur version de mutation était supérieure à la version de mutation actuelle. #7812 (Zhichang Yu) #8250 (alesapin)
- Ignore les copies redondantes de parties de données
*MergeTreeaprès leur déplacement vers un autre disque et un redémarrage du serveur. #7810 (Vladimir Chebotarev) - Corrige un plantage dans
FULL JOINavecLowCardinalitydans la clé deJOIN. #8252 (Artem Zuikov) - Interdiction d’utiliser un nom de colonne plus d’une fois dans une requête d’insertion comme
INSERT INTO tbl (x, y, x). Cela corrige #5465, #7681. #7685 (alesapin) - Ajout d’une solution de repli pour détecter le nombre de cœurs CPU physiques sur des CPU inconnus (en utilisant le nombre de cœurs CPU logiques). Cela corrige #5239. #7726 (alexey-milovidov)
- Correction de l’erreur
There's no columnpour les colonnes matérialisées et les colonnes alias. #8210 (Artem Zuikov) - Correction d’un plantage sévère lorsque la requête
EXISTSétait utilisée sans qualificateurTABLEouDICTIONARY, par exempleEXISTS t. Cela corrige #8172. Ce bug a été introduit dans la version 19.17. #8213 (alexey-milovidov) - Correction d’un bug rare avec l’erreur
"Sizes of columns does not match"qui pouvait apparaître lors de l’utilisation d’une colonneSimpleAggregateFunction. #7790 (Boris Granveaud) - Correction d’un bug où un utilisateur avec
allow_databasesvide obtenait l’accès à toutes les bases de données (et de même pourallow_dictionaries). #7793 (DeifyTheGod) - Correction d’un crash du client lorsque le serveur s’était déjà déconnecté du client. #8071 (Azat Khuzhin)
- Correction du comportement de
ORDER BYdans le cas d’un tri sur un préfixe de clé primaire et un suffixe n’appartenant pas à la clé primaire. #7759 (Anton Popov) - Vérification de la présence de la colonne qualifiée dans la table. Cela corrige #6836. #7758 (Artem Zuikov)
- Correction du comportement où
ALTER MOVE, exécuté immédiatement après la fin d’une fusion, déplaçait une superpartie au lieu de la partie spécifiée. Corrige #8103. #8104 (Vladimir Chebotarev) - Correction d’un possible plantage du serveur lors de l’utilisation de
UNIONavec un nombre différent de colonnes. Corrige #7279. #7929 (Nikolai Kochetov) - Correction de la taille de la sous-chaîne résultante pour la fonction
substravec une taille négative. #8589 (Nikolai Kochetov) - Désormais, le serveur n’exécute pas de mutation de part dans
MergeTrees’il n’y a pas assez de threads libres dans le background pool. #8588 (tavplubix) - Correction d’une coquille mineure dans le formatage de l’AST
UNION ALL. #7999 (litao91) - Correction de résultats incorrects du bloom filter pour les nombres négatifs. Cela corrige #8317. #8566 (Winter Zhang)
- Correction d’un dépassement de buffer potentiel dans decompress. Un utilisateur malveillant peut fournir des données compressées falsifiées provoquant une lecture au-delà du buffer. Ce problème a été découvert par Eldar Zaitov de l’équipe de sécurité de l’information de Yandex. #8404 (alexey-milovidov)
- Correction d’un résultat incorrect dû à un overflow d’entiers dans
arrayIntersect. #7777 (Nikolai Kochetov) - Désormais, la requête
OPTIMIZE TABLEn’attendra plus que les répliques hors ligne effectuent l’opération. #8314 (javi santana) - Correction du parseur
ALTER TTLpour les tablesReplicated*MergeTree. #8318 (Vladimir Chebotarev) - Correction de la communication entre le server et le client, afin que le server lise les informations des temporary tables après l’échec de la query. #8084 (Azat Khuzhin)
- Correction d’une erreur de la fonction
bitmapAndlors de l’intersection d’un bitmap agrégé et d’un bitmap scalaire. #8082 (Yue Huang) - Affinement de la définition de
ZXidconformément au guide du programmeur ZooKeeper, ce qui corrige un bug dansclickhouse-cluster-copier. #8088 (Ding Xiang Fei) - La fonction de table
odbcrespecte désormais le paramètreexternal_table_functions_use_nulls. #7506 (Vasily Nemkov) - Correction d’un bug qui entraînait une rare data race. #8143 (Alexander Kazakov)
- Désormais,
SYSTEM RELOAD DICTIONARYrecharge complètement un dictionnaire, en ignorantupdate_field. Cela corrige #7440. #8037 (Vitaly Baranov) - Ajout de la possibilité de vérifier si un dictionnaire existe dans une requête CREATE. #8032 (alesapin)
- Correction du parsing de
Float*dans le formatValues. Cela corrige #7817. #7870 (tavplubix) - Correction d’un crash lorsqu’il est impossible de réserver de l’espace dans certaines opérations en arrière-plan de la famille des table engines
*MergeTree. #7873 (Vladimir Chebotarev) - Correction d’un crash de l’opération de merge lorsque la table contient une colonne
SimpleAggregateFunction(LowCardinality). Cela corrige #8515. #8522 (Azat Khuzhin) - Restauration de la prise en charge de toutes les locales ICU et ajout de la possibilité d’appliquer des collations aux expressions constantes. Ajout également du nom de la langue à la table
system.collations. #8051 (alesapin) - Correction d’un bug empêchant la mise à jour en arrière-plan des dictionnaires externes avec une durée de vie minimale nulle (
LIFETIME(MIN 0 MAX N),LIFETIME(N)). #7983 (alesapin) - Correction d’un crash lorsqu’un dictionnaire externe avec une source ClickHouse contient une sous-requête dans la requête. #8351 (Nikolai Kochetov)
- Correction d’une mauvaise interprétation de l’extension de fichier dans une table utilisant le moteur
URL. Cela corrige #8157. #8419 (Andrey Bodrov) - Correction de la requête
CHECK TABLEpour les tables*MergeTreesans clé. Corrige #7543. #7979 (alesapin) - Correction de la conversion de
Float64vers le type MySQL. #8079 (Yuriy Baranov) - Désormais, si une table n’a pas été complètement supprimée à la suite d’un crash du serveur, le serveur tentera de la restaurer et de la charger. #8176 (tavplubix)
- Correction d’un crash dans la fonction de table
filelors d’une insertion dans un fichier inexistant. Désormais, dans ce cas, le fichier sera créé puis l’insertion sera effectuée. #8177 (Olga Khvostikova) - Correction d’un interblocage rare pouvant se produire lorsque
trace_logest activé. #7838 (filimonov) - Ajout de la possibilité d’utiliser d’autres types que
Datedans un dictionnaire externeRangeHashedcréé à partir d’une requête DDL. Corrige 7899. #8275 (alesapin) - Correction d’un crash lorsque
now64()est appelé avec le résultat d’une autre fonction. #8270 (Vasily Nemkov) - Correction d’un bug dans la détection de l’adresse IP du client pour les connexions via le protocole MySQL wire. #7743 (Dmitry Muzyka)
- Correction de la gestion des tableaux vides dans la fonction
arraySplit. Cela corrige #7708. #7747 (hcz) - Correction d’un problème pouvant entraîner la suppression du
pid-filed’un autreclickhouse-serveren cours d’exécution. #8487 (Weiqing Xu) - Correction du rechargement du dictionnaire lorsqu’il possède
invalidate_query, ce qui interrompait les mises à jour et provoquait certaines exceptions lors des tentatives de mise à jour précédentes. #8029 (alesapin) - Correction d’une erreur dans la fonction
arrayReducepouvant entraîner un “double free”, ainsi que d’une erreur dans le combinateur de fonction d’agrégationResamplepouvant entraîner une fuite mémoire. Ajout de la fonction d’agrégationaggThrow. Cette fonction peut être utilisée à des fins de test. #8446 (alexey-milovidov)
Amélioration
- Amélioration de la journalisation lors de l’utilisation du moteur de table
S3. #8251 (Grigory Pervakov) - Affichage d’un message d’aide lorsqu’aucun argument n’est fourni à l’appel de
clickhouse-local. Cela corrige #5335. #8230 (Andrey Nagorny) - Ajout du paramètre
mutations_sync, qui permet d’attendre les requêtesALTER UPDATE/DELETEde manière synchrone. #8237 (alesapin) - Possibilité de définir un
user_files_pathrelatif dansconfig.xml(de manière similaire àformat_schema_path). #7632 (hcz) - Ajout d’une exception pour les types non valides dans les fonctions de conversion avec le suffixe
-OrZero. #7880 (Andrey Konyaev) - Simplification du format de l’en-tête lors de l’envoi de données vers un shard dans une requête distribuée. #8044 (Vitaly Baranov)
- Refactorisation du moteur de table
Live View. #8519 (vzakaznikov) - Ajout de vérifications supplémentaires pour les dictionnaires externes créés à partir de requêtes DDL. #8127 (alesapin)
- Correction de l’erreur
Column ... already existslors de l’utilisation conjointe deFINALetSAMPLE, par exempleselect count() from table final sample 1/2. Corrige #5186. #7907 (Nikolai Kochetov) - Désormais, le premier argument de la fonction
joinGetpeut être un identifiant de table. #7707 (Amos Bird) - Possibilité d’utiliser
MaterializedViewavec des sous-requêtes sur des tablesKafka. #8197 (filimonov) - Désormais, les déplacements en arrière-plan entre disques s’exécutent dans un pool de threads distinct. #7670 (Vladimir Chebotarev)
SYSTEM RELOAD DICTIONARYs’exécute désormais de manière synchrone. #8240 (Vitaly Baranov)- Les traces de pile affichent désormais les adresses physiques (offsets dans le fichier objet) au lieu des adresses de mémoire virtuelle (où le fichier objet a été chargé). Cela permet d’utiliser
addr2linelorsque le binaire est indépendant de la position et qu’ASLR est actif. Cela corrige #8360. #8387 (alexey-milovidov) - Prise en charge d’une nouvelle syntaxe pour les filtres de sécurité au niveau des lignes :
<table name='table_name'>...</table>. Corrige #5779. #8381 (Ivan) - Désormais, la fonction
cityHashprend en charge les typesDecimaletUUID. Corrige #5184. #7693 (Mikhail Korotov) - Suppression de la granularité d’index fixe (1024) des journaux système, car elle est devenue obsolète après l’implémentation de la granularité adaptative. #7698 (alexey-milovidov)
- Activation du serveur de compatibilité MySQL lorsque ClickHouse est compilé sans SSL. #7852 (Yuriy Baranov)
- Désormais, le serveur vérifie les checksums des lots distribués, ce qui fournit des erreurs plus détaillées en cas de données corrompues dans un lot. #7914 (Azat Khuzhin)
- Prise en charge de
DROP DATABASE,DETACH TABLE,DROP TABLEetATTACH TABLEpour le moteur de base de donnéesMySQL. #8202 (Winter Zhang) - Ajout de l’authentification dans la S3 table function et le moteur de table. #7623 (Vladimir Chebotarev)
- Ajout d’une vérification des parts supplémentaires de
MergeTreesur différents disques, afin d’éviter de manquer des data parts sur des disques non définis. #8118 (Vladimir Chebotarev) - Activation de la prise en charge de SSL pour le client et le serveur sur Mac. #8297 (Ivan)
- Désormais, ClickHouse peut fonctionner comme serveur fédéré MySQL (voir https://dev.mysql.com/doc/refman/5.7/en/federated-create-server.html). #7717 (Maxim Fedotov)
clickhouse-clientactive désormaisbracketed-pasteuniquement lorsque multiquery est activé et multiline désactivé. Cela corrige #7757. #7761 (Amos Bird)- Prise en charge de
Array(Decimal)dans la fonctionif. #7721 (Artem Zuikov) - Prise en charge des Decimal dans les fonctions
arrayDifference,arrayCumSumetarrayCumSumNegative. #7724 (Artem Zuikov) - Ajout de la colonne
lifetimeà la tablesystem.dictionaries. #6820 #7727 (kekekekule) - Amélioration de la vérification des parts existantes sur différents disques pour les moteurs de table
*MergeTree. Corrige #7660. #8440 (Vladimir Chebotarev) - Intégration avec
AWS SDKpour les interactions avecS3, ce qui permet d’utiliser toutes les fonctionnalités de S3 prêtes à l’emploi. #8011 (Pavel Kovalenko) - Ajout de la prise en charge des sous-requêtes dans les tables
Live View. #7792 (vzakaznikov) - La vérification de l’utilisation d’une colonne
DateouDateTimedans les expressionsTTLa été supprimée. #7920 (Vladimir Chebotarev) - Des informations sur le disque ont été ajoutées à la table
system.detached_parts. #7833 (Vladimir Chebotarev) - Les paramètres
max_(table|partition)_size_to_droppeuvent désormais être modifiés sans redémarrage. #7779 (Grigory Pervakov) - L’ergonomie des messages d’erreur a été légèrement améliorée. Il est désormais demandé à l’utilisateur de ne pas supprimer les lignes sous
Stack trace:. #7897 (alexey-milovidov) - Amélioration de la lecture des messages du moteur
Kafkadans différents formats après #7935. #8035 (Ivan) - Compatibilité améliorée avec les clients MySQL qui ne prennent pas en charge le plugin d’authentification
sha2_password. #8036 (Yuriy Baranov) - Prise en charge d’un plus grand nombre de types de colonnes dans le serveur de compatibilité MySQL. #7975 (Yuriy Baranov)
- Implémentation de l’optimisation
ORDER BYpour les stockagesMerge,BufferetMaterilized Viewavec des tablesMergeTreesous-jacentes. #8130 (Anton Popov) - Nous utilisons désormais systématiquement l’implémentation POSIX de
getrandomafin d’assurer une meilleure compatibilité avec les anciens noyaux (< 3.17). #7940 (Amos Bird) - Meilleure vérification de la validité de la destination dans une règle TTL de déplacement. #8410 (Vladimir Chebotarev)
- Vérifications renforcées des lots d’insertion défectueux pour le moteur de table
Distributed. #7933 (Azat Khuzhin) - Ajout à la table
system.mutationsd’une colonne contenant un tableau de noms de parts que les mutations devront traiter ultérieurement. #8179 (alesapin) - Optimisation du tri par fusion parallèle pour les processeurs. #8552 (Nikolai Kochetov)
- Le paramètre
mark_cache_min_lifetimeest désormais obsolète et n’a plus aucun effet. Dans les versions précédentes, le mark cache pouvait occuper plus de mémoire quemark_cache_sizeafin de conserver les données pendantmark_cache_min_lifetimesecondes. Cela prêtait à confusion et entraînait une utilisation mémoire plus élevée que prévu, ce qui est particulièrement problématique sur les systèmes aux ressources mémoire limitées. Si vous constatez une dégradation des performances après l’installation de cette version, vous devriez augmentermark_cache_size. #8484 (alexey-milovidov) - Préparation à l’utilisation de
tidpartout. Cela est nécessaire pour #7477. #8276 (alexey-milovidov)
Amélioration des performances
- Optimisations des performances dans le pipeline des processeurs. #7988 (Nikolai Kochetov)
- Mises à jour non bloquantes des clés expirées dans les dictionnaires cache (si la lecture des anciennes est autorisée). #8303 (Nikita Mikhaylov)
- Compiler ClickHouse sans utiliser globalement
-fno-omit-frame-pointerafin de libérer un registre supplémentaire. #8097 (Amos Bird) - Accélération de la fonction
greatCircleDistanceet ajout de tests de performance pour celle-ci. #7307 (Olga Khvostikova) - Amélioration des performances de la fonction
roundDown. #8465 (alexey-milovidov) - Amélioration des performances de
max,min,argMin,argMaxpour le type de donnéesDateTime64. #8199 (Vasily Nemkov) - Amélioration des performances du tri sans limite, ou avec une limite élevée et tri externe. #8545 (alexey-milovidov)
- Amélioration des performances de mise en forme des nombres à virgule flottante, jusqu’à 6 fois plus rapide. #8542 (alexey-milovidov)
- Amélioration des performances de la fonction
modulo. #7750 (Amos Bird) - Optimisation de
ORDER BYet de la fusion avec une clé sur une seule colonne. #8335 (alexey-milovidov) - Meilleure implémentation de
arrayReduceet des combinateurs-Arrayet-State. #7710 (Amos Bird) - Désormais,
PREWHEREdevrait être optimisé pour être au moins aussi efficace queWHERE. #7769 (Amos Bird) - Amélioration de la gestion des nombres négatifs par
roundetroundBankers. #8229 (hcz) - Amélioration des performances de décodage des codecs
DoubleDeltaetGorillad’environ 30-40 %. Cela corrige #7082. #8019 (Vasily Nemkov) - Amélioration des performances des fonctions liées à
base64. #8444 (alexey-milovidov) - Ajout de la fonction
geoDistance. Elle est similaire àgreatCircleDistance, mais utilise une approximation du modèle ellipsoïdal WGS-84. Les performances des deux fonctions sont quasiment identiques. #8086 (alexey-milovidov) - Fonctions d’agrégation
minetmaxplus rapides pour le type de donnéesDecimal. #8144 (Artem Zuikov) - Vectorisation du traitement de
arrayReduce. #7608 (Amos Bird) - Les chaînes
ifsont désormais optimisées enmultiIf. #8355 (kamalov-ruslan) - Correction de la régression de performances du moteur de table
Kafka, introduite dans la version 19.15. Cela corrige #7261. #7935 (filimonov) - Suppression de la génération de code “pie” que
gccactive parfois par défaut dans les paquets Debian. #8483 (alexey-milovidov) - Parsing parallèle des formats de données #6553 (Nikita Mikhaylov)
- Activation par défaut du parser optimisé de
Valuesavec des expressions (input_format_values_deduce_templates_of_expressions=1). #8231 (tavplubix)
Amélioration de la compilation/des tests/du packaging
- Correctifs de compilation pour
ARMet le mode minimal. #8304 (proller) - Ajout du flush du fichier de couverture pour
clickhouse-serverlorsquestd::atexitn’est pas appelé. Légère amélioration également de la journalisation dans les tests sans état avec couverture. #8267 (alesapin) - Mise à jour de la bibliothèque LLVM dans contrib. Évite l’utilisation de LLVM depuis les paquets de l’OS. #8258 (alexey-milovidov)
- Rend la compilation du
curlinclus complètement silencieuse. #8232 #8203 (Pavel Kovalenko) - Correction de quelques avertissements
MemorySanitizer. #8235 (Alexander Kuzmenkov) - Utilisation des macros
add_warningetno_warningdansCMakeLists.txt. #8604 (Ivan) - Ajout de la prise en charge des objets Minio compatibles S3 (https://min.io/) pour améliorer les tests d’intégration. #7863 #7875 (Pavel Kovalenko)
- Importation des en-têtes
libcdans contrib. Cela permet d’obtenir des builds plus cohérents sur différents systèmes (uniquement pourx86_64-linux-gnu). #5773 (alexey-milovidov) - Suppression de
-fPICde certaines bibliothèques. #8464 (alexey-milovidov) - Nettoyage de
CMakeLists.txtpour curl. Voir https://github.com/ClickHouse/ClickHouse/pull/8011#issuecomment-569478910 #8459 (alexey-milovidov) - Désactivation des avertissements dans la bibliothèque
CapNProto. #8220 (alexey-milovidov) - Ajout de tests de performance pour les tables de hachage optimisées pour les chaînes courtes. #7679 (Amos Bird)
- Désormais, ClickHouse se compile sur
AArch64même siMADV_FREEn’est pas disponible. Cela corrige #8027. #8243 (Amos Bird) - Mise à jour de
zlib-ngpour corriger des problèmes liés à MemorySanitizer. #7182 #8206 (Alexander Kuzmenkov) - Activation de la bibliothèque MySQL interne sur les systèmes non Linux, car l’utilisation des paquets de l’OS est très fragile et ne fonctionne généralement pas du tout. Cela corrige #5765. #8426 (alexey-milovidov)
- Correction de la compilation sur certains systèmes après l’activation de
libc++. Cela remplace #8374. #8380 (alexey-milovidov) - Rendre les méthodes
Fieldplus sûres au niveau des types afin de détecter davantage d’erreurs. #7386 #8209 (Alexander Kuzmenkov) - Ajout des fichiers manquants au sous-module
libc-headers. #8507 (alexey-milovidov) - Correction des guillemets
JSONincorrects dans la sortie des tests de performance. #8497 (Nikolai Kochetov) - La trace de pile est désormais affichée pour
std::exceptionetPoco::Exception. Dans les versions précédentes, elle n’était disponible que pourDB::Exception. Cela améliore le diagnostic. #8501 (alexey-milovidov) - Portage de
clock_gettimeetclock_nanosleeppour les nouvelles versions de glibc. #8054 (Amos Bird) - Activation de
part_logdans l’exemple de config pour les développeurs. #8609 (alexey-milovidov) - Correction du comportement asynchrone du rechargement dans
01036_no_superfluous_dict_reload_on_create_database*. #8111 (Azat Khuzhin) - Correction des tests de performance du codec. #8615 (Vasily Nemkov)
- Ajout de scripts d’installation pour le build
.tgzet de leur documentation. #8612 #8591 (alesapin) - Suppression de l’ancien test
ZSTD(créé en 2016 pour reproduire un bug présent dans les versions pré-1.0 de ZSTD). Cela corrige #8618. #8619 (alexey-milovidov) - Correction de la compilation sur Mac OS Catalina. #8600 (meo)
- Augmentation du nombre de lignes dans les tests de performance du codec pour rendre les résultats plus visibles. #8574 (Vasily Nemkov)
- Dans les builds de débogage, traiter les exceptions
LOGICAL_ERRORcomme des échecs d’assertion afin qu’elles soient plus faciles à repérer. #8475 (Alexander Kuzmenkov) - Rendre plus déterministe le test de performance lié aux formats. #8477 (alexey-milovidov)
- Mise à jour de
lz4pour corriger un échec de MemorySanitizer. #8181 (Alexander Kuzmenkov) - Suppression d’un faux positif connu de MemorySanitizer dans la gestion des exceptions. #8182 (Alexander Kuzmenkov)
- Mise à jour de
gccetg++vers la version 9 dansbuild/docker/build.sh#7766 (TLightSky) - Ajout d’un test de performance pour vérifier que
PREWHEREest moins performant queWHERE. #7768 (Amos Bird) - Avancée dans la correction d’un test instable. #8621 (alexey-milovidov)
- Évite un signalement de MemorySanitizer pour des données provenant de
libunwind. #8539 (alexey-milovidov) - Mise à jour de
libc++vers sa dernière version. #8324 (alexey-milovidov) - Compilation de la bibliothèque ICU à partir des sources. Cela corrige #6460. #8219 (alexey-milovidov)
- Passage de
libresslàopenssl. ClickHouse devrait prendre en charge TLS 1.3 et SNI après ce changement. Cela corrige #8171. #8218 (alexey-milovidov) - Correction d’un signalement UBSan lors de l’utilisation de
chacha20_poly1305via SSL (cela se produit lors de la connexion à https://yandex.ru/). #8214 (alexey-milovidov) - Correction des permissions du fichier de mot de passe par défaut pour les distributions Linux
.deb. #8075 (proller) - Amélioration de l’expression permettant d’obtenir le PID de
clickhouse-serverdansclickhouse-test. #8063 (Alexander Kazakov) - Mise à jour de contrib/googletest vers la version 1.10.0. #8587 (Alexander Burmak)
- Correction d’un signalement de ThreadSanitizer dans la bibliothèque
base64. Cette bibliothèque a également été mise à jour vers sa dernière version, mais cela n’a pas d’importance. Cela corrige #8397. #8403 (alexey-milovidov) - Correction de
00600_replace_running_querypour les processeurs. #8272 (Nikolai Kochetov) - Suppression de la prise en charge de
tcmallocafin de simplifierCMakeLists.txt. #8310 (alexey-milovidov) - Les builds gcc de release utilisent désormais
libc++au lieu delibstdc++. Jusqu’à présent,libc++n’était utilisé qu’avec clang. Cela améliorera la cohérence des configurations de build et la portabilité. #8311 (alexey-milovidov) - Activation de la bibliothèque ICU pour le build avec MemorySanitizer. #8222 (alexey-milovidov)
- Masquage des avertissements de la bibliothèque
CapNProto. #8224 (alexey-milovidov) - Suppression des cas particuliers de code pour
tcmalloc, car il n’est plus pris en charge. #8225 (alexey-milovidov) - Dans la tâche de couverture de la CI, arrêter le serveur proprement afin de lui permettre d’enregistrer le rapport de couverture. Cela corrige les rapports de couverture incomplets que nous observions récemment. #8142 (alesapin)
- Tests de performance de tous les codecs sur des valeurs
Float64etUInt64. #8349 (Vasily Nemkov) termcapest fortement déprécié et a entraîné divers problèmes (p. ex. capacité « up » manquante et affichage de^Jau lieu du mode multiligne). Préférezterminfoouncursesintégré. #7737 (Amos Bird)- Correction du test d’intégration
test_storage_s3. #7734 (Nikolai Kochetov) - Prise en charge de
StorageFile(<format>, null)pour insérer un bloc dans un fichier du format indiqué sans réellement écrire sur le disque. Cela est nécessaire pour les tests de performance. #8455 (Amos Bird) - Ajout de l’argument
--print-timeaux tests fonctionnels, qui affiche le temps d’exécution de chaque test. #8001 (Nikolai Kochetov) - Ajout d’assertions à
KeyConditionlors de l’évaluation de la RPN. Cela corrigera l’avertissement de gcc-9. #8279 (alexey-milovidov) - Affichage des options cmake dans les builds CI. #8273 (Alexander Kuzmenkov)
- Ne pas générer d’informations de débogage pour certaines bibliothèques volumineuses. #8271 (alexey-milovidov)
- Faire en sorte que
log_to_console.xmlécrive toujours sur stderr, qu’il soit interactif ou non. #8395 (Alexander Kuzmenkov) - Suppression de certaines fonctionnalités inutilisées de l’outil
clickhouse-performance-test. #8555 (alexey-milovidov) - Nous rechercherons désormais aussi
lld-Xavec la version correspondante declang-X. #8092 (alesapin) - Amélioration du build de Parquet. #8421 (maxulan)
- Davantage d’avertissements GCC. #8221 (kreuzerkrieg)
- Le paquet pour Arch Linux permet désormais d’exécuter le serveur ClickHouse, et pas seulement le client. #8534 (Vladimir Chebotarev)
- Correction du test avec les processors. Petites améliorations des performances. #7672 (Nikolai Kochetov)
- Mise à jour de contrib/protobuf. #8256 (Matwey V. Kornilov)
- En vue du passage à c++20 pour fêter la nouvelle année. “Que la force du C++ soit avec ClickHouse.” #8447 (Amos Bird)
Fonctionnalité expérimentale
- Ajout du paramètre expérimental
min_bytes_to_use_mmap_io. Il permet de lire de gros fichiers sans copier les données du noyau vers l’espace utilisateur. Ce paramètre est désactivé par défaut. Le seuil recommandé est d’environ 64 MB, car mmap/munmap est lent. #8520 (alexey-milovidov) - Refonte des quotas dans le cadre du système de contrôle d’accès. Ajout de la nouvelle table
system.quotas, des nouvelles fonctionscurrentQuota,currentQuotaKeyet de la nouvelle syntaxe SQLCREATE QUOTA,ALTER QUOTA,DROP QUOTA,SHOW QUOTA. #7257 (Vitaly Baranov) - Possibilité d’ignorer les paramètres inconnus avec des avertissements au lieu de lever des exceptions. #7653 (Vitaly Baranov)
- Refonte des politiques de lignes dans le cadre du système de contrôle d’accès. Ajout de la nouvelle table
system.row_policies, de la nouvelle fonctioncurrentRowPolicies()et de la nouvelle syntaxe SQLCREATE POLICY,ALTER POLICY,DROP POLICY,SHOW CREATE POLICY,SHOW POLICIES. #7808 (Vitaly Baranov)
Correctif de sécurité
- Correction d’une faille permettant de lire l’arborescence des répertoires dans les tables utilisant le moteur de table
File. Cela corrige #8536. #8537 (alexey-milovidov)