Passer au contenu principal

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 short lors de l’exécution des fonctions toType(...) (toDate, toUInt32, etc.) avec un argument de type Nullable(String). Désormais, ces fonctions renvoient NULL en 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 TTL ne supprime pas réellement le TTL de la colonne. #18130 (alesapin).

Amélioration du build, des tests et du packaging

  • Mise à jour des données sur les fuseaux horaires vers la version 2020e. #18531 (alesapin).

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_string lors 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_trace vide 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_names par 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 clause SETTINGS lors de la création d’une table utilisant le moteur File, et utilise ces paramètres dans tous les INSERT et SELECT. Les paramètres de format de fichier modifiés dans la session utilisateur en cours, ou dans la clause SETTINGS d’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 *.xz dans la fonction file(). 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 tcpPort renvoie 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_empty pour 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 implemented lors de l’exécution d’une requête RENAME dans une base de données Atomic avec 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_wal est désactivé. #17802 (detailyang).
  • Corrige l’initialisation incorrecte de max_compress_block_size de MergeTreeWriterSettings avec min_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 lorsque pool_size > 1. C’est corrigé. #17640 (tavplubix).
  • L’Exception fmt::v7::format_error pouvait ê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 BY avec le setting optimize_redundant_functions_in_order_by activé. #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 JOIN avec des types LowCardinality. 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 avec LIMIT. #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 CLUSTER pouvaient se bloquer indéfiniment pour des tables ReplicatedMergeTree non leader. #17089 (alesapin).
  • Corrige un crash sur la requête CREATE TABLE ... AS some_table lorsque some_table avait été créée avec AS 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 avec OFFSET uniquement. #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 ... NewType lorsqu’un SELECT comporte une expression WHERE sur 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_keys activé et des jointures. Corrige #12604. #16951 (Anton Popov).
  • Correction d’une possible erreur Illegal type of argument pour les requêtes avec ORDER 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 any sans 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 IN sur plusieurs colonnes et tuples avec le paramètre transform_null_in activé. 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_consistency pour la requête count triviale 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_names vaut 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_url en 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 host et port de SOURCE(CLICKHOUSE(...)) sur l’instance actuelle, et user sur '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_milliseconds est 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 CODEC est mal placée dans la query CREATE 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 exemple http://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 dans config.xml et 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-server qui nécessite SNI. C’est possible lorsque clickhouse-server est 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 ReplicatedMergeTree utilise un pool de threads distinct pour les fetches répliqués. La taille du pool est limitée par le paramètre background_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 pour VIEW. Ajout des répliques locales de Distributed au 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 Merge sur un très grand nombre de tables MergeTree. 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) % 100 et que la requête contienne une condition sur intHash64(x) % 100 telle quelle, et non sur x. #16253 (Amos Bird).

Fonctionnalité expérimentale

  • Ajout du moteur de table EmbeddedRocksDB (utilisable pour les dictionnaires). #15073 (sundyli).

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 neighbor pour un argument LowCardinality. 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 SYNC pouvait 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&#95;ERROR lors 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 ALTER et DROP concurrentes 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’exception Attempt to read after EOF. Corrige #18340. #19101 (alesapin).
  • Corrige l’erreur There is no checkpoint lors de l’insertion de données via l’interface HTTP en utilisant le format Template ou CustomSeparated. Corrige #19021. #19072 (tavplubix).
  • Restreint les requêtes MODIFY TTL pour les tables MergeTree créé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 groupUniqArray renvoie 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 function en cas d’utilisation de la fonction ignore avec un argument LowCardinality. Corrige #14275. #19016 (Nikolai Kochetov).
  • Corrige l’insertion d’une colonne LowCardinality dans une table avec le moteur TinyLog. 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_method est défini globalement sur une valeur non par défaut. Cela corrige #18741. #18776 (alexey-milovidov).
  • Correction de l’erreur Attempt to read after eof lors d’une tentative de CAST de NULL depuis Nullable(String) vers Nullable(Decimal(P, S)). Désormais, la fonction CAST renvoie NULL lorsqu’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 stuck lors de l’utilisation de ORDER BY après une sous-requête avec une jointure RIGHT ou FULL. #18550 (Nikolai Kochetov).
  • Correction d’un bug pouvant entraîner le blocage de requêtes ALTER aprè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 short lors de l’exécution des fonctions toType(...) (toDate, toUInt32, etc.) avec un argument de type Nullable(String). Désormais, ces fonctions renvoient NULL en 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 table peut désormais être exécuté dès lors qu’il est possible de sélectionner au moins une colonne de table. Cette PR corrige #10639. #18233 (Vitaly Baranov).
  • SELECT JOIN requiert désormais le privilège SELECT sur 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 threads dans les logs). Introduit dans #16423. Corrige #18137. #18216 (Nikolai Kochetov).
  • Correction d’une erreur où la requête MODIFY COLUMN ... REMOVE TTL ne 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 MOVE ou REPLACE PARTITION ou, dans de rares cas, après DETACH ou DROP PARTITION. C’est corrigé. #15537 (tavplubix).

Amélioration du build/des tests/du packaging

  • Mise à jour des informations sur les fuseaux horaires vers la version 2020e. #18531 (alesapin).

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 pile IPv4/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_string lors 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_wal est 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_query avec un prédicat de partition. #17644 (Azat Khuzhin).
  • Correction du problème de table system.stack_trace vide lorsque le serveur s’exécute en mode démon. #17630 (Amos Bird).
  • Correction du comportement où l’exception fmt::v7::format_error pouvait ê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 BY avec 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 JOIN avec des types LowCardinality. 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 ColumnConst qui provoquait un crash. Cela corrige #17088 . #17135 (Amos Bird).
  • Correction d’un bug où des requêtes ON CLUSTER pouvaient rester bloquées indéfiniment pour des ReplicatedMergeTreeTables non 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_url en cas d’erreur. #16985 (filimonov).
  • Correction d’un possible crash du serveur après ALTER TABLE ... MODIFY COLUMN ... NewType lorsqu’un SELECT contient une expression WHERE sur 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_keys activé 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 argument pour les requêtes avec ORDER 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 any sans 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 INSERT via 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 if dans une fonction d’agrégation. Cela corrige #16574 corrige #16231 #16610 (Winter Zhang).
  • Correction du comportement incohérent causé par select_sequential_consistency pour la requête count triviale 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 config distributed_ddl, il pouvait écraser les paramètres du profil default au 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 ANALYZE et AST, et passage du paramètre enable_debug_queries à l’état obsolète, puisqu’il fait désormais partie de la requête EXPLAIN complète. #16536 (Ivan).
  • Les fonctions d’agrégation boundingRatio, rankCorr, retention, timeSeriesGroupSum, timeSeriesGroupRateSum, windowFunnel avaient é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 rankCorr renvoie 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 paquets clickhouse-server sur tous les nœuds du cluster, puis redémarrez-les (ainsi, lorsque clickhouse-server redé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écifier LIMIT. #15855 (hexiaoting).
  • Fonction errorCodeToName — renvoie le nom de variable de l’erreur (utile pour analyser query_log et similaires). La table system.errors affiche combien de fois des erreurs se sont produites (respecte system_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 vers query_log/query_thread_log (c.-à-d. l’équivalent de slow_query_log dans 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 toUUIDOrNull et toUUIDOrZero. #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 tid et logTrace. 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_merges pour 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&#95;path de system.distribution_queue. #16727 (Azat Khuzhin).
  • Correction de l’opérateur IN sur plusieurs colonnes et tuples lorsque le paramètre transform_null_in est activé. Corrige #15310. #16722 (Anton Popov).
  • Le paramètre max_parallel_replicas ne 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 DEFAULT pouvait 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. MaterializeMySQL est une fonctionnalité expérimentale. #16504 (TCeason).
  • Un argument spécialement conçu de la fonction round avec Decimal entraî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-local lors de l’exécution de la commande OPTIMIZE. 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.parts devrait 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 de INTERVAL 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ètre read_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 LowCardinality dans le format Avro. #16521 (Mike).
  • Contournement pour l’utilisation de S3 avec le serveur nginx comme proxy. Nginx n’accepte actuellement 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 ce cas, met &quot;/&quot; comme chemin, comme dans http://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 minMap et maxMap plus 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_microseconds est 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ées Atomic ne 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 section WITH. #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 EOF et Broken pipe étaient consignées dans le server. Dans la nouvelle version, elles sont remplacées par le message d’information Client 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 KEY sans ORDER BY pour 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-local cré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/SYNC pour DROP DATABASE. #16127 (Azat Khuzhin).
  • Ajout de allow_nondeterministic_optimize_skip_unused_shards (pour autoriser des éléments nondeterministic comme rand() ou dictGet() dans la clé de sharding). #16105 (Azat Khuzhin).
  • Correction de memory_profiler_step/max_untracked_memory pour 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 de query_id pour 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 CLUSTER quelle que soit la valeur du paramètre <internal_replication> dans la configuration du cluster. #16075 (alesapin).
  • Correction d’un problème rare où clickhouse-client pouvait s’interrompre à la fermeture en raison du chargement des suggestions. Cela corrige #16035. #16047 (alexey-milovidov).
  • Ajout de la prise en charge du layout cache pour les Dictionaries Redis avec clé complexe. #15985 (Anton Popov).
  • Correction d’un blocage de requête (boucle infinie) en cas de mauvaise configuration (connections_with_failover_max_tries dé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 -OrNull et -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 croaring au 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. MaterializeMySQL est 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 once dans 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_generator afin 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-bridge est inaccessible par le serveur sur des machines avec une double pile IPv4/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_string lors 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 WAL si in_memory_parts_enable_wal est 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_trace vide lorsque le serveur fonctionne en mode démon. #17630 (Amos Bird).
  • Correction du comportement lorsque clickhouse-client est 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 ALTER lorsque 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 BY avec 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 JOIN avec des types LowCardinality. 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 CLUSTER pouvaient rester bloquées indéfiniment pour des ReplicatedMergeTreeTables non 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_url en cas d’erreur. #16985 (filimonov).
  • Correction d’un possible crash du serveur après ALTER TABLE ... MODIFY COLUMN ... NewType lorsqu’un SELECT comporte une expression WHERE sur 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_keys activé 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 argument pour les requêtes avec ORDER 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 any sans 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 INSERT via 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 if dans 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 IN appliqué à plusieurs colonnes et tuples avec le paramètre transform_null_in activé. 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_worker activé 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.parts devrait 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_version obsolè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 format Regexp) en Raw (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_queue et max_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écutant SYSTEM STOP TTL MERGES jusqu’à 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’abord SYSTEM STOP TTL MERGES, puis ALTER 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 paquets clickhouse-server sur tous les nœuds du cluster, puis redémarrez-les (ainsi, lors du redémarrage, clickhouse-server dé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_name pour 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 instructions WITH du premier select aux autres requêtes select au même niveau et rend les alias des instructions WITH visibles 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_remove et ALTER 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_numbers pour 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 NULL pour le format de sortie TSV. Elle est contrôlée par le paramètre output_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 \N est la seule représentation de NULL prise en charge pour le format d’entrée TSV. #14586 (Kruglov Pavel).
  • Prise en charge du type de données Decimal pour MaterializeMySQL. MaterializeMySQL est 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_leaf pour 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 stockages ReplicatedMergeTree*, 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 table system.replicated_merge_tree_settings. #13573 (Amos Bird).
  • Ajout de la fonction mapPopulateSeries. #13166 (Ildus Kurbangaliev).
  • Prise en charge des types MySQL : decimal (comme Decimal dans ClickHouse) et datetime avec une précision inférieure à la seconde (comme DateTime64). #11512 (Vasily Nemkov).
  • Ajout du champ event_time_microseconds aux tables system.text_log, system.trace_log, system.query_log et system.query_thread_log. #14760 (Bharat Nallan).
  • Ajout de event_time_microseconds aux tables system.asynchronous_metric_log & system.metric_log. #14514 (Bharat Nallan).
  • Ajout du champ query_start_time_microseconds aux tables system.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 BY pour ReplicatedVersionedCollapsingMergeTree. Corrige #15980. #16011 (alesapin).
  • MaterializeMySQL (fonctionnalité expérimentale) : corrige l’analyseur des noms de collation et de jeu de caractères, et prend en charge length = 0 pour le type String. #16008 (Winter Zhang).
  • Permet d’utiliser la disposition direct pour 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 readonly est désormais interprété comme l’utilisation d’un profile nommé readonly, et non d’un setting nommé profile avec 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 EXISTS avec l’erreur Table ... does not exist lorsqu’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 (comme DROP DATABASE et RENAME TABLE) - Correction de l’échec de DROP/DETACH DATABASE avec Table ... does not exist lors de l’exécution concurrente de DROP/DETACH TABLE. #15934 (tavplubix).
  • Correction d’un résultat vide incorrect pour une requête sur une table Distributed si la requête contient WHERE, PREWHERE et GLOBAL 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 mismatch dans les requêtes SELECT ... ORDER BY DESC exécutées après une requête ALTER MODIFY COLUMN. Corrige #15800. #15852 (alesapin).
  • MaterializeMySQL (fonctionnalité expérimentale) : correction de l’imprécision de select 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 block pouvait ê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 TABLE suivants à cause du blocage du thread de travail, en raison du DROP TABLE ré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 column qui peut se produire lors de l’insertion dans MATERIALIZED VIEW si la requête de la MV contient ARRAY 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 table Buffer dont 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 ReadFromStorage du 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 ReadonlyReplica lors du détachement de tables en lecture seule. #15592 (sundyli).
  • Correction de l’erreur Element ... is not a constant expression lors de l’utilisation du résultat d’une fonction JSON* dans VALUES, LIMIT ou dans le membre droit de l’opérateur IN. #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 avec IN et 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 MOVE ou REPLACE PARTITION ou, dans de rares cas, après DETACH ou DROP PARTITION. C’est corrigé. #15537 (tavplubix).
  • Correction d’un bug où l’opérateur ILIKE cessait d’être insensible à la casse si LIKE avec le même motif avait été exécuté. #15536 (alesapin).
  • Correction des erreurs Missing columns lors 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 boundingRatio est 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 table MySQL dans 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 joinGet avec des types LowCardinality. Cela corrige #15214. #15220 (Amos Bird).
  • Corrige un bug dans le moteur de table Buffer qui n’autorise pas l’insertion de données d’une nouvelle structure dans Buffer après une requête ALTER. 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 methods dans join_algorithm='auto'. Conserve LowCardinality comme type pour la clé de jointure de la table de gauche dans join_algorithm='partial_merge'. #15088 (Artem Zuikov).
  • Met à jour jemalloc pour corriger percpu_arena avec 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 argument lors 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_mutation et number_of_free_entries_in_pool_to_lower_max_size_of_merge peuvent 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 extractAllGroups peuvent 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 provoquait Attempt to read after eof et Packet payload is not fully read dans le moteur de base de données MaterializeMySQL. #14852 (Winter Zhang).
  • Correction d’une erreur rare dans les requêtes SELECT lorsque la colonne interrogée a une expression DEFAULT qui dépend d’une autre colonne ayant également DEFAULT, 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 -> Int ré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 Replace doit 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 UPDATE avec une colonne Nullable dans l’expression d’affectation et une valeur constante (comme UPDATE 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 has avec LowCardinality de Nullable. #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 DDL ON CLUSTER. #14211 (Winter Zhang).
  • MaterializeMySQL (fonctionnalité expérimentale) : correction de l’erreur Packet payload is not fully read dans le database engine MaterializeMySQL. #14696 (BohuTANG).

Amélioration

  • Active le moteur de base de données Atomic par 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 CLUSTER indépendamment du paramètre <internal_replication> dans la configuration du cluster. #16075 (alesapin).
  • Désormais, joinGet prend en charge la recherche multi-clé. Suite de #12418. #13015 (Amos Bird).
  • Attend que DROP/DETACH TABLE soit réellement terminé si NO DELAY ou SYNC est spécifié pour la base de données Atomic. #15448 (tavplubix).
  • Il est désormais possible de modifier le type de la colonne de version pour VersionedCollapsingMergeTree avec une requête ALTER. #15442 (alesapin).
  • Développe les macros {database}, {table} et {uuid} dans zookeeper_path lors de la création d’une table répliquée. N’autorise pas RENAME TABLE si cela risque de casser zookeeper_path après le redémarrage du serveur. Corrige #6917. #15348 (tavplubix).
  • La fonction now accepte 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ête EXPLAIN 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 = 1 ou force_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_offset pour indiquer explicitement quelle est la première réplique. Il est utilisé avec la stratégie de load balancing FIRST_OR_RANDOM, ce qui permet de contrôler la charge des répliques. #14867 (Amos Bird).
  • Affiche les sous-requêtes pour SET et JOIN dans le résultat de EXPLAIN. #14856 (Nikolai Kochetov).
  • Autorise l’utilisation d’une configuration de stockage multi-volume dans le stockage Distributed. #14839 (Pavel Kovalenko).
  • Construit query_start_time et query_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 StorageJoin et StorageSet ; cette fonctionnalité est contrôlée par le paramètre disable_set_and_join_persistency. Cette PR résout également l’issue #6318. #14776 (vxider).
  • Désormais, COLUMNS peut être utilisé pour englober une liste de colonnes et appliquer ensuite des transformations de colonnes. #14775 (Amos Bird).
  • Ajoute merge_algorithm à la table system.merges pour faciliter l’analyse des fusions. #14705 (Amos Bird).
  • Corrige une fuite de mémoire potentielle causée par le watch exists de 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 disk s3 est 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 CONFIG lè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_t comme 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 mlock uniquement 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 madvise afin 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_sources en 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 -> OFF et 1 -> ON dans les valeurs par défaut des option. - Ajout de certaines descriptions et de liens vers la documentation pour les options. - Remplacement de l’option FUZZER (il existe une autre option, ENABLE_FUZZING, qui active la même fonctionnalité). - Suppression de l’option ENABLE_GTEST_LIBRARY, puisqu’il existe ENABLE_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 Merge sur un très grand nombre de tables MergeTree. Corrige #7748. #16988 (Anton Popov).

Corrections de bugs

  • Ne pas restaurer les parts depuis le WAL si in_memory_parts_enable_wal est 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 implemented lors de l’exécution d’une query RENAME dans une database Atomic, 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 BY lorsque le SETTING optimize_redundant_functions_in_order_by est 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 JOIN avec des types LowCardinality. 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_table lorsque some_table avait été créée avec AS 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-server nécessitant SNI. Cela est possible lorsque clickhouse-server est hébergé derrière un proxy TLS. #16938 (filimonov).
  • Les fonctions d’agrégation conditionnelles (par exemple : avgIf, sumIf, maxIf) doivent renvoyer NULL en l’absence de lignes et utiliser des arguments Nullable. #13964 (Winter Zhang).

Correction de bug

  • Correction d’un bug où les requêtes ON CLUSTER pouvaient rester bloquées indéfiniment sur des ReplicatedMergeTreeTables non leaders. #17089 (alesapin).
  • Nouvelle résolution de l’adresse IP de format_avro_schema_registry_url en cas d’erreur. #16985 (filimonov).
  • Correction d’un possible crash du serveur après ALTER TABLE ... MODIFY COLUMN ... NewType lorsque SELECT contient une expression WHERE sur 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 argument pour les requêtes avec ORDER 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 any sans argument. Cela concerne #16803. cc @azat. #16826 (Amos Bird).
  • Correction de l’opérateur IN sur plusieurs colonnes et tuples avec le paramètre transform_null_in activé. 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_worker activé 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.parts ne 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 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 asynchrone dans Distributed 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. 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 BY pour ReplicatedVersionedCollapsingMergeTree. Cela corrige #15980. #16011 (alesapin).
  • Corrige l’analyseur des noms de collation et de jeu de caractères, et prend en charge length = 0 pour 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 readonly est désormais considéré comme l’utilisation d’un profil nommé readonly, et non d’un paramètre nommé profile avec 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 EXISTS avec l’erreur Table ... does not exist lorsque 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 (comme DROP DATABASE et RENAME TABLE). Corrige l’échec de DROP/DETACH DATABASE avec Table ... does not exist lors de l’exécution simultanée de DROP/DETACH TABLE. #15934 (tavplubix).
  • Corrige un résultat vide incorrect pour une requête sur une table Distributed si la requête contient WHERE, PREWHERE et GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Correction de possibles interblocages dans RBAC. #15875 (Vitaly Baranov).
  • Correction de l’exception Block structure mismatch dans les requêtes SELECT ... ORDER BY DESC exécutées après une requête ALTER 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 block pouvait ê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 table Buffer ayant 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 ReadonlyReplica lors 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 CLUSTER indépendamment du paramètre <internal_replication> dans la config du cluster. #16075 (alesapin).
  • Déplie les macros {database}, {table} et {uuid} dans les arguments de ReplicatedMergeTree lors 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 column qui peut se produire lors d’une insertion dans MATERIALIZED VIEW si la requête de la MV contient ARRAY JOIN. #15717 (Nikolai Kochetov).
  • Corrige une condition de concurrence dans AMQP-CPP. #15667 (alesapin).
  • Corrige l’ordre de destruction des ressources à l’étape ReadFromStorage du 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 expression lors de l’utilisation du résultat d’une fonction JSON* dans VALUES, LIMIT ou dans la partie droite de l’opérateur IN. #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 MOVE ou REPLACE PARTITION ou, dans de rares cas, après DETACH ou DROP PARTITION. C’est corrigé. #15537 (tavplubix).
  • Corrige un bug où l’opérateur ILIKE cesse d’être insensible à la casse si LIKE avec le même motif a été exécuté. #15536 (alesapin).
  • Corrige les erreurs Missing columns lors 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 boundingRatio a 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 Buffer qui n’autorise pas l’insertion de données avec une nouvelle structure dans Buffer après une requête ALTER. 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 argument lors 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ête ALTER. #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 * ou COLUMNS(...)). Par exemple, vous pouvez écrire SELECT * EXCEPT(URL) REPLACE(number + 1 AS number). Autre exemple : select * apply(length) apply(max) from wide_string_table pour déterminer la longueur maximale de toutes les colonnes de type chaîne. #14233 (Amos Bird).
  • Ajout d’une fonction d’agrégation rankCorr qui 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 UPDATE avec une colonne Nullable dans l’expression d’affectation et une valeur constante (comme UPDATE 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 FixedString lors 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 exists lors de l’utilisation du database engine MaterializeMySQL. #14898 (Winter Zhang).
  • Corrige le problème où certains appels à la fonction extractAllGroups peuvent 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 SELECT lorsque la colonne interrogée a une expression DEFAULT qui dépend d’une autre colonne ayant elle aussi DEFAULT, 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 -> Int de 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 has lorsque 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 PipelineExecutor lui-même. Cela peut éviter un rare blocage de requête. #14334 #14402 (Nikolai Kochetov).
  • Corrige un crash lors d’une requête ALTER sur une table créée avec AS 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 CODEC sur le type de colonne ALIAS. 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-generator pour 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_zone vide dans les fonctions de type toStartOf*. #14509 (Bharat Nallan).
  • Le handler MySQL renvoie OK pour les requêtes telles que SET @@var = value. Cette instruction est ignorée. Cela est nécessaire, car certains drivers MySQL envoient une requête SET @@ 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-obfuscator prend 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 dans MySQL). 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 nom DateTime au lieu de DateTime64. #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 Distributed avec GROUP BY sharding_key (avec optimize_skip_unused_shards et optimize_distributed_group_by_sharding_key). #10373 (Azat Khuzhin).
  • Création de sets pour plusieurs JOIN et IN en parallèle. Cela peut légèrement améliorer les performances des requêtes comportant plusieurs expressions IN subquery diffé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 short lors de l’exécution des fonctions toType(...) (toDate, toUInt32, etc.) avec un argument de type Nullable(String). Désormais, ces fonctions renvoient NULL en 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.size avec 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_size dans MergeTreeWriterSettings avec min_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 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 de marks. #17496 (alesapin).
  • Correction de ORDER BY lorsque le paramètre optimize_redundant_functions_in_order_by est 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 CLUSTER pouvaient 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_url en cas d’erreur. #16985 (filimonov).
  • Correction d’un possible crash du server après ALTER TABLE ... MODIFY COLUMN ... NewType lorsqu’un SELECT comporte une expression WHERE sur 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 argument pour les requêtes avec ORDER 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 any sans argument. Cela corrige #16803. #16826 (Amos Bird).
  • Correction de l’opérateur IN sur plusieurs colonnes et tuples lorsque le paramètre transform_null_in est activé. Corrige #15310. #16722 (Anton Popov).
  • Correction du comportement incohérent de optimize_read_in_order/optimize_aggregation_in_order avec 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_worker activé 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.parts devrait 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 BY avec les modificateurs totals/rollup/cube et les fonctions min/max sur les clés de groupement. Corrige #16393. #16397 (Anton Popov).
  • Correction de l’INSERT asynchrone dans Distributed avec prefer_localhost_replica=0 et internal_replication. #16358 (Azat Khuzhin).
  • Correction d’une possible fuite de mémoire lors d’un GROUP BY avec des clés de type chaîne, causée par une erreur dans l’implémentation de TwoLevelStringHashTable. #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 BY pour ReplicatedVersionedCollapsingMergeTree. 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 = 0 pour 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 readonly est désormais interprété comme l’utilisation d’un profile nommé readonly, et non comme un paramètre nommé profile avec 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 EXISTS avec l’erreur Table ... does not exist lorsque 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 (comme DROP DATABASE et RENAME TABLE). Correction de l’échec de DROP/DETACH DATABASE avec Table ... does not exist lors de l’exécution concurrente de DROP/DETACH TABLE. #15934 (tavplubix).
  • Correction d’un résultat vide incorrect pour une query sur une table Distributed si la query contient WHERE, PREWHERE et GLOBAL IN. Corrige #15792. #15933 (Nikolai Kochetov).
  • Correction d’éventuels interblocages dans RBAC. #15875 (Vitaly Baranov).
  • Correction de l’exception Block structure mismatch dans les requêtes SELECT ... ORDER BY DESC exécutées après une requête ALTER 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 block pouvait être levée. Corrige #12298. #15756 (Anton Popov).
  • Correction de l’erreur Cannot find column qui pouvait se produire lors d’une insertion dans MATERIALIZED VIEW si la requête de la MV contenait ARRAY 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 table Buffer dont 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 ReadonlyReplica lors 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 CLUSTER quelle 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 de ReplicatedMergeTree lors 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 ReadFromStorage du 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 expression lors de l’utilisation du résultat d’une fonction JSON* dans VALUES, LIMIT ou dans le membre de droite de l’opérateur IN. #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 MOVE ou REPLACE PARTITION ou, dans de rares cas, après DETACH ou DROP PARTITION. C’est corrigé. #15537 (tavplubix).
  • Corrige un bug où l’opérateur ILIKE cessait d’être insensible à la casse si un LIKE avec le même motif avait été exécuté. #15536 (alesapin).
  • Corrige les erreurs Missing columns lors 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 boundingRatio est 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 Buffer qui n’autorisait pas l’insertion dans Buffer de données ayant une nouvelle structure après une requête ALTER. 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 argument lors 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_mutation et number_of_free_entries_in_pool_to_lower_max_size_of_merge peuvent ê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 exists lors de l’utilisation du database engine MaterializeMySQL. #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 -> Int ré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 VersionedCollapsingMergeTree avec la requête ALTER. #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 extractAllGroups peuvent déclencher l’erreur « Memory limit exceeded ». Cela 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 SELECT lorsque la colonne interrogée a une expression DEFAULT qui dépend d’une autre colonne ayant elle aussi une expression DEFAULT, absente de la requête SELECT et 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 UPDATE avec une colonne Nullable dans l’expression d’affectation et une valeur constante (comme UPDATE 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 FINAL ne recalcule pas le TTL des parts ajoutées avant la création du TTL. Utilisez une fois ALTER TABLE ... MATERIALIZE TTL pour 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_select est étendu avec une option permettant d’exécuter INSERT dans une table locale. Son type passe de Bool à UInt64, les valeurs false et true ne sont donc plus prises en charge. Si ces valeurs figurent dans la configuration du serveur, le serveur ne démarrera pas. Remplacez-les respectivement par 0 et 1. #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 format ODBCDriver2. 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 paquets clickhouse-server sur tous les nœuds du cluster, puis redémarrez-les (ainsi, lors du redémarrage, clickhouse-server démarrera avec la nouvelle version).

Nouvelle fonctionnalité

  • Ajout de la possibilité de spécifier le codec de compression Default pour les colonnes correspondant aux paramètres définis dans config.xml. Implémente : #9074. #14049 (alesapin).
  • Prise en charge de l’authentification Kerberos dans Kafka à l’aide des bibliothèques krb5 et cyrus-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 fonction normalizedQueryHash, 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 fonction isDecimalOverflow(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 quantileExactLow et quantileExactHigh, avec les alias correspondants pour medianExactLow et medianExactHigh. #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 position prend désormais en charge l’argument facultatif start_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 LowCardinality lors 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 PipelineExecutor lui-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 ALTER pour une table créée avec AS 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-bridge lors 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 pointInPolygon avec 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é DISTINCT et dans les sous-requêtes avec UNION ALL lorsque le paramètre optimize_duplicate_order_by_and_distinct est activé. #13925 (Artem Zuikov).
  • Correction d’un interblocage potentiel lors du renommage d’une table Distributed. #13922 (tavplubix).
  • Corrige le tri incorrect des colonnes FixedString lors 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 arrayJoin dans 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 empty lors de l’exécution concurrente de DROP DATABASE et CREATE 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_status lorsque verbose=1. #13722 (javi santana).
  • Correction d’un message erroné dans clickhouse-server.init lors 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 CLUSTER pré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/CSVWithNames du 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 redis après l’interruption d’une connexion. Cela peut se produire avec les layouts de dictionnaire cache et direct. #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 CODEC sur le type de colonne ALIAS. 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_milliseconds au 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ètre index_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 renvoyer NULL lorsqu’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 exceeded pour une requête correcte. #13928 (Nikolai Kochetov).
  • Meilleur message d’erreur pour une valeur nulle au format TabSeparated. #13906 (jiang tao).
  • La fonction arrayCompact comparera 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 dans tsan, 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 lcm pouvait 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/toDateTime dans 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. DiskS3 est 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, SelectQueryTimeMicroseconds et InsertQueryTimeMicroseconds à 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). DiskS3 est 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 system avec le moteur Atomic par défaut (en préparation à l’activation par défaut du moteur de base de données Atomic partout). #13680 (tavplubix).

Amélioration des performances

  • Optimise légèrement les requêtes très courtes avec LowCardinality. #14129 (Anton Popov).
  • Active les INSERT parallèles pour les table engines Null, Memory, Distributed et Buffer lorsque le paramètre max_insert_threads est défini. #14120 (alexey-milovidov).
  • Échoue rapidement si la limite max_rows_to_read est 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 que max_rows_to_read est 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() et countEqual() pour Array(LowCardinality(T)) et des arguments droits constants. #12550 (myrrc).
  • Lors de l’exécution de requêtes triviales INSERT SELECT, définit automatiquement max_threads sur 1 ou max_insert_threads, et max_block_size sur min_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, UInt256 et des fonctions associées. Extension du type Decimal avec Decimal256 (precision jusqu’à 76 chiffres). Les nouveaux types sont soumis au paramètre allow_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 clickhouse sans 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_log dans 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_CLIENT pour contrib/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 Docker runner. 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’alias mod. 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-00 et 0000-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 fonction groupArrayMovingAvg renvoyait un entier, ce qui n’était pas cohérent avec la fonction avg. 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_size sur une valeur inférieure à number_of_free_entries_in_pool_to_execute_mutation ou number_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 paquets clickhouse-server sur tous les nœuds du cluster, puis effectuez les redémarrages (ainsi, lorsque clickhouse-server redé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êtes ALTER TABLE ... PARTITION ... (actuellement ATTACH et FREEZE). Clôt #8076. #13017 (alesapin).
  • Ajout de la fonction bayesAB pour 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-Database et X-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 minMap et maxMap dans SimpleAggregateFunction. #12662 (Ildus Kurbangaliev).
  • Ajout du paramètre allow_non_metadata_alters, qui restreint l’exécution des requêtes ALTER modifiant les données sur disque. Désactivé par défaut. Clôt #11547. #12635 (alesapin).
  • Ajout de la fonction formatRow pour 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 fonction columns. #12574 (Amos Bird).
  • Ajout de la fonction FROM_UNIXTIME pour 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_key est activé. Clôt #5319. #12433 (Amos Bird).
  • Intégration avec COS. #12386 (fastio).
  • Ajout des fonctions mapAdd et mapSubtract pour additionner/soustraire des valeurs associées à des clés. #11735 (Ildus Kurbangaliev).

Corrections de bugs

  • Correction des timeouts ON CLUSTER pré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 LowCardinality lorsque 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_milliseconds pour 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 SELECT avec le mot-clé DISTINCT lorsque les sous-requêtes contiennent elles aussi DISTINCT, si le paramètre optimize_duplicate_order_by_and_distinct est 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 FixedString lorsque 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 empty lors de l’exécution concurrente de DROP DATABASE et CREATE 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_type est supérieur à QUERY_START. #13737 (Azat Khuzhin).
  • Correction d’un message erroné dans clickhouse-server.init lors de la vérification de l’utilisateur et du groupe. #13711 (ylchou).
  • Ne pas optimiser any(arrayJoin()) en arrayJoin() avec optimize_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 parseDateTimeBestEffort lorsqu’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 query avec SET optimize_move_functions_out_of_any = 1 et des alias à l’intérieur de any(). #13419 (Artem Zuikov).
  • Correction d’une condition de concurrence possible dans StorageMemory. #13416 (Nikolai Kochetov).
  • Correction d’une sortie vide pour les formats Arrow et Parquet lorsque 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 select avec des colonnes constantes et un préfixe de la clé primaire dans la clause ORDER BY. #13396 (Anton Popov).
  • Corrige PrettyCompactMonoBlock pour clickhouse-local. Corrige extremes/totals avec PrettyCompactMonoBlock. 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), corrige clickhouse-local --format CSVWithNames* (en-tête manquant, cassé après #12197) et corrige clickhouse-local --format CSVWithNames* avec zéro ligne (en-tête manquant). #13343 (Azat Khuzhin).
  • Corrige un segfault lorsque la fonction groupArrayMovingSum désérialise un état vide. Corrige #13339. #13341 (alesapin).
  • Déclenche une erreur sur la fonction arrayJoin() dans la section JOIN ON. #13330 (Artem Zuikov).
  • Corrige un crash dans LEFT ASOF JOIN avec join_use_nulls=1. #13291 (Artem Zuikov).
  • Corrige l’erreur possible Totals having transform was already added to pipeline dans 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, sumDistinct et des aggregate functions 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).
  • 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 arrayElement lorsque 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 redis après une première perte de connexion. Cela peut se produire avec les layouts de dictionnaire cache et direct. #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 result pour 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, comme now(), now64(), randConstant(). Corrige #11327. #13075 (Nikolai Kochetov).
  • Corrige un crash possible pour les requêtes avec un tuple dans ORDER BY et une petite valeur de LIMIT. Corrige #12623. #13009 (Nikolai Kochetov).
  • Corrige l’erreur Block structure mismatch pour les requêtes avec UNION et JOIN. 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 DELETE et ALTER MODIFY COLUMN sont exécutées simultanément sous forme d’une seule mutation. Ce bug entraîne un nombre incorrect de lignes dans count.txt et, par conséquent, des données incorrectes dans la part. Correction également d’un petit bug lorsque ALTER RENAME COLUMN et ALTER ADD COLUMN sont exécutés simultanément. #12760 (alesapin).
  • Utilisation d’informations d’identification incorrectes lors de l’utilisation de la dictionary source clickhouse pour 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 écrit WHERE x IN tuple(1, 2, ...) au lieu de WHERE 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=1 dans le cas de any(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 if avec des arguments Array(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 pendant ALTER ... UPDATE dans 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 stuck pour les queries avec tri externe. Corrige #12617. #12618 (Nikolai Kochetov).
  • Correction de l’erreur Output of TreeExecutor is not sorted pour OPTIMIZE DEDUPLICATE. Corrige #11572. #12613 (Nikolai Kochetov).
  • Correction du problème où l’alias du résultat de la fonction any peut ê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.txt est absent. Régression introduite dans #9827. #12545 (alesapin).
  • Correction d’un bug qui corrompait d’anciennes parts après une requête ALTER DELETE lorsque enable_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, SelectQueryTimeMicroseconds et InsertQueryTimeMicroseconds à system.events, ainsi que dans system.metrics, processes, query_log, etc. #13028 (ianton-ru).
  • Ajout de SelectedRows et SelectedBytes à 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 TabSeparatedRaw comme format d’entrée. #12009 (hcz).
  • Désormais, joinGet prend 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 exceeded pour 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 dans tsan et 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 JOIN au lieu de SEMI 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 DATABASE et RENAME DICTIONARY pour le moteur de base de données Atomic - Ajoute la macro implicite {uuid}, qui peut être utilisée dans le chemin ZooKeeper de ReplicatedMergeTree. Cela fonctionne avec les requêtes CREATE ... ON CLUSTER .... Définissez show_table_uuid_in_table_create_query_if_not_nil sur true pour l’utiliser. - Rend facultatifs les arguments du moteur ReplicatedMergeTree ; /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ées Atomic. Les bases de données Atomic créé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).
  • AWSAuthV4Signer a été séparé dans un logger distinct, et le AWSClient: AWSClient superflu 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 in lorsqu’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 LIMIT dans 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 BY si set optimize_monotonous_functions_in_order_by=1. #12467 (Artem Zuikov).
  • Ajoute une optimisation de ORDER BY qui réécrit ORDER BY x, f(x) en ORDER BY x si set 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 shellcheck pour 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 INSERT dans TestFlows. Extension des tables sur lesquelles SELECT est 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 SELECT dans 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. rdkafka a é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 COLUMN sur 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 initializeAggregation pour 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 ORC en 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 query avec SET optimize_move_functions_out_of_any = 1 et des alias dans any(). #13419 (Artem Zuikov).
  • Correction de PrettyCompactMonoBlock pour clickhouse-local. Correction également d’extremes/totals avec PrettyCompactMonoBlock. Cela corrige #7746. #13394 (Azat Khuzhin).
  • Correction d’une possible erreur Totals having transform was already added to pipeline dans 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, sumDistinct et 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 arrayElement lorsque 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 DateTime64 avec 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 result pour 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, comme now(), 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 DELETE et ALTER MODIFY COLUMN étaient exécutées simultanément comme une seule mutation. Ce bug entraînait un nombre incorrect de rows dans count.txt et, par conséquent, des données incorrectes dans la partie. Correction également d’un petit bug avec l’exécution simultanée de ALTER RENAME COLUMN et ALTER 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 écrit WHERE x IN tuple(1, 2, ...) au lieu de WHERE 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 SIGSEGV dans StorageKafka lorsque le broker est indisponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin).
  • Ajout de la prise en charge de la fonction if avec des arguments Array(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).
  • 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 fonction groupArrayMovingAvg renvoyait un nombre entier, ce qui était incohérent avec la fonction avg. 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 DELETE lorsque enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Message d’exception amélioré pour la fonction in avec 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_log est 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. 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 CLEAR sur une colonne même s’il existe des expressions DEFAULT dépendantes. Cela corrige #12333. #12378 (alexey-milovidov).
  • Correction de TOTALS/ROLLUP/CUBE pour les fonctions d’agrégation avec des arguments -State et Nullable. Cela corrige #12163. #12376 (alexey-milovidov).
  • Correction du message d’erreur et des codes de sortie pour les requêtes ALTER RENAME COLUMN, lorsque RENAME n’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 Delta ou DoubleDelta avec des types à largeur non fixe, une exception avec le code LOGICAL_ERROR était renvoyée au lieu d’une exception avec le code BAD_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’instruction ORDER BY n’était pas respecté. #12306 (Anton Popov).
  • Évite l’exception “bad cast” lorsqu’une expression filtre les données sur des colonnes virtuelles (comme _table dans les tables Merge) 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 sur system.tables, et que cette expression renvoie un type Nullable. Cela corrige #12166. #12305 (alexey-milovidov).
  • Correction de TTL aprè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 arrayFill fonctionnait 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 colonnes LowCardinality et 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 dictGet lors de l’élimination des fonctions injectives dans GROUP BY. #12179 (Azat Khuzhin).
  • Correction du comportement lorsque le moteur SummingMergeTree additionne 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 DELETE qui 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 Parquet fonctionne désormais correctement avec les types LowCardinality et LowCardinality(Nullable). Corrige #12086, #8406. #12108 (Nikolai Kochetov).
  • Correction d’un problème de performances pour les requêtes SELECT avec UNION, 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_rows et result_bytes vides dans system.quey_log pour les requêtes 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 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 column pour les fonctions d’ordre supérieur avec un argument Tuple(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 if avec des arguments de type FixedString de tailles différentes. Cela corrige #11362. #12021 (alexey-milovidov).

Amélioration

  • Permet de définir le type et la variante de JOIN de manière plus standard : LEFT SEMI JOIN au lieu de SEMI 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_charset active 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 fonction formatDateTime. #12136 (vivarum).
  • Ajout de la colonne ‘type’ dans system.disks. #12115 (ianton-ru).
  • Commande REVOKE améliorée : elle exige désormais l’option grant/admin uniquement pour l’accès qui sera révoqué. Par exemple, pour exécuter REVOKE 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 commande REVOKE 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 BY et de GROUP BY sur un préfixe de la clé de tri (activé avec le paramètre optimize_aggregation_in_order, désactivé par défaut). #11696 (Anton Popov).
  • Suppression des fonctions injectives dans uniq*() si set 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 seuils min_rows_for_compact_part et min_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ètre in_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. CodeQL est un autre analyzer statique que nous utiliserons avec clang-tidy et PVS-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 table system.build_options. Déplacement des listes d’exclusion pour clickhouse-test vers 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 le Dockerfile peut être compilé. S’exécute chaque jour sur master et sur les pull requests visant Dockerfile. #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-certificates avant le premier apt-get update dans 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 écrit WHERE x IN tuple(1, 2, ...) au lieu de WHERE 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 SIGSEGV dans StorageKafka lorsque le broker est indisponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin).
  • Ajout de la prise en charge de la fonction if avec des arguments Array(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 DELETE lorsque enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Message d’exception amélioré pour la fonction in avec 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_log est 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 -State et Nullable. 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 SummingMergeTree additionne 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-certificates avant le premier apt-get update dans 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 Nullable pour COUNT(DISTINCT) et la famille de fonctions d’agrégation uniq. 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_header est activé par défaut. Cela affectera l’analyse des formats d’entrée -WithNames et -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 zstd vers 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 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. 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_codecs pour 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 WHERE et TTL GROUP BY pour 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 que CAP_SYS_ADMIN soit défini sur le binaire clickhouse. #9545 Andrey Skobtsov. #11226 (Alexander Kuzmenkov).
  • Prise en charge désormais des modificateurs NULL et NOT NULL pour les types de données dans la requête CREATE. #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 direct qui 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_direct pour 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 de replxx. #11422 (Tagir Kuskarov).
  • Ajout des fonctions minMap et maxMap. #11603 (Ildus Kurbangaliev).
  • Ajout de la table system.asynchronous_metric_log, qui enregistre l’historique des métriques de system.asynchronous_metrics. #11588 (Alexander Kuzmenkov).
  • Ajout des fonctions extractAllGroupsHorizontal(haystack, re) et extractAllGroupsVertical(haystack, re). #11554 (Vasily Nemkov).
  • Ajout des requêtes SHOW CLUSTER(S). #11467 (hexiaoting).
  • Ajout de la fonction netloc pour extraire l’adresse réseau, similaire à urlparse(url), netloc en 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_ms pour le Kafka engine (le type est Nullable(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) retourne Nullable(Type). #11733 (Artem Zuikov).
  • Ajout de la colonne position à la table system.columns et de la colonne column_position à la table system.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-format peut désormais formater plusieurs requêtes lorsque l’argument -n est utilisé. #10852 (Darío).
  • Possibilité de configurer le proxy-resolver pour DiskS3. #10744 (Pavel Kovalenko).
  • Faire en sorte que pointInPolygon fonctionne 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.parts afin 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 NCHAR et NVARCHAR pour les types de données. #11025 (alexey-milovidov).
  • Résolution de #7224 : ajout des métriques FailedQuery, FailedSelectQuery et FailedInsertQuery à la table system.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épertoire contrib. 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).
  • SimpleAggregateFunction prend désormais aussi en charge sumMap. #10000 (Ildus Kurbangaliev).
  • Prise en charge de ALTER RENAME COLUMN dans 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 Nullable dans une condition PREWHERE. #11895 #11608 #11869 (Nikolai Kochetov).
  • arrayJoin n’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 if avec 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 exist lors de l’utilisation de WITH <scalar subquery> ... dans SELECT ... 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 FILL sur 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 REPLICA sur 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 timeout approprié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 TIES avec l’instruction ORDER BY contenant des alias. #11689 (Anton Popov).
  • Corrige un possible Pipeline stuck pour les requêtes SELECT avec FINAL en 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âches MUTATE_PART dans 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 mismatch pour les requêtes avec échantillonnage lisant depuis la table Buffer. #11602 (Nikolai Kochetov).
  • Corrige le code de sortie erroné de clickhouse-client lorsque exception.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 column pour les requêtes avec PREWHERE column in (subquery) et ARRAY 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 si min_bytes_to_use_direct_io est 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 stuck pour INSERT SELECT FINAL, lorsque SELECT (max_threads>1) a plusieurs streams mais que INSERT n’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) et Nullable(T). #11380. #11414 (Artem Zuikov).
  • Corrige le code d’erreur pour une clé USING incorrecte. #11373. #11404 (Artem Zuikov).
  • Correction de geohashesInBox avec 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 stuck pour 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 VIEW avec le paramètre parallel_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 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 empty ou notEmpty. 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_speed pouvait ne pas fonctionner, ou fonctionner incorrectement, si la requête était bridée par les paramètres max_network_bandwidth, max_execution_speed ou priority. La valeur par défaut de timeout_before_checking_execution_speed devient non nulle, car sinon les paramètres min_execution_speed et max_execution_speed n’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 dans clickhouse-client. #11296 (alexey-milovidov).
  • Correction d’un crash lorsque SET DEFAULT ROLE est 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 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 affecte uniquement les champs de type chaîne. #11233 (Nikita Mikhaylov).
  • Correction de l’erreur Block structure mismatch in QueryPipeline lors de la lecture depuis VIEW avec 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.idx sera vérifié s’il est défini dans la requête CREATE. #11199 (alesapin).
  • Correction de l’erreur possible Cannot capture column pour 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 lorsque optimize_move_to_prewhere transforme 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/DROP et RENAME sur une seule et même colonne dans une unique requête ALTER. Le message d’Exception pour l’utilisation simultanée de MODIFY et RENAME a é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’un LIMIT est 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 ALTER et DROP DATABASE concurrentes avec le database engine Atomic. #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 DROP d’une table avec engine=Kafka (ou lors des redémarrages du serveur). #10910 (filimonov).
  • Il est désormais possible d’exécuter plusieurs ALTER RENAME, comme a 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 finalizeAggregation en lisant une table avec le moteur Memory qui stocke l’état de AggregateFunction pour la fonction quanite*. #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 WATCH après la suppression d’une table LiveView d’une base de données avec le moteur Atomic. #10859 (tavplubix).
  • Correction d’un bug dans ReplicatedMergeTree qui pouvait bloquer certaines requêtes ALTER ou OPTIMIZE en 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 CONSTRAINT a é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_type pour 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-pointer dans les compilations clang, ce qui améliore les performances d’au moins 1 % en moyenne. #10761 (Amos Bird).
  • Correction d’avgWeighted lors 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 dans MATERIALIZED VIEW doivent 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 generateRandom avec les types imbriqués. Corrige #10583. #10734 (Nikolai Kochetov).
  • Corrige une corruption de données de la colonne clé LowCardinality(FixedString) dans SummingMergeTree, 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 IN avec 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=2 et cancel_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_efficient est 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 ALTER concurrents 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 section HAVING (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 VIEW dans 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 de loadStoredObject(). #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 SELECT sur une column ALIAS dont 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_key avait été introduite puis désactivée par défaut en raison de la complexité de l’analyse de sharding_key ; un exemple simple est if dans 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) et distributed_storage_policy (fait échouer link(2) sur EXDEV)). #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 TTL aux anciennes données après la requête ALTER MODIFY TTL. Ce comportement est contrôlé par le paramètre materialize_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ères LIKE et match plus pratique (il suffit d’écrire name LIKE 'used\_cars' au lieu de name 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 hostname comme alias de la fonction hostName. Cette fonctionnalité a été suggérée par Victor Tarnavskiy de Yandex.Metrica. #11821 (alexey-milovidov).
  • Ajout de la prise en charge du DDL distribué (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-client et clickhouse-benchmark si l’utilisateur l’a spécifié avec une valeur explicite. Cela empêche l’exposition du mot de passe via ps et 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=b ou http://localhost:8123/?a=b&&c=d. Cela clôt #10749. #11651 (alexey-milovidov).
  • Autorise l’utilisation de groupArrayArray et groupUniqArrayArray comme SimpleAggregateFunction. #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_consumers est 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=1 pour 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-client ou clickhouse-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.id par 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 DistributedFilesToInsert en 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 PRECISION et CHAR 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 DATABASE explicite pour le database engine Memory. 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_rows et min_insert_block_size_bytes, mais s’appliquent uniquement aux blocks insérés dans MATERIALIZED 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 varSamp et varPop ne peuvent pas renvoyer de résultats négatifs en raison d’erreurs numériques, et que stddevSamp et stddevPop ne 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_threads pour limiter le nombre de threads utilisés. #10463 (Nikolai Kochetov).
  • Amélioration des performances des requêtes INSERT via INSERT SELECT ou 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 avec optimize_move_functions_out_of_any #11529 (Ruslan).
  • Amélioration des performances de clickhouse-client en 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 BY et un LIMIT faible (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 mlock du 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 sum et sans clés GROUP BY de s’exécuter plusieurs fois plus vite. #10992 (alexey-milovidov).
  • Amélioration du tri radix (utilisé dans ORDER BY avec 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_bytes pour 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)) et Polygon (Array(Array(Tuple(Float64, Float64))). #10678 (Alexey Ilyukhov).
  • Ajout d’une fonction hasSubstr permettant 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’option special_sort sur bitonic_sort et 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/zoneinfo n’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 à curl a 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 cctz ne 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 lld pour 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 capnproto pour capnp::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 parseDateTimeBestEffort lorsqu’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, sumDistinct et 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 if avec un constexpr Nullable comme condition, lorsque celui-ci n’est pas un littéral NULL. Corrige #12463. #13226 (alexey-milovidov).
  • Correction d’une assertion dans la fonction arrayElement lorsque 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 écrit WHERE x IN tuple(1, 2, ...) au lieu de WHERE 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 SIGSEGV dans StorageKafka lorsque le broker est indisponible (et pas seulement dans ce cas). #12658 (Azat Khuzhin).
  • Ajout de la prise en charge de la fonction if avec des arguments Array(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’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 DELETE lorsque enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Exception plus explicite pour la fonction in avec 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’instruction ORDER BY n’était pas respecté. #12306 (Anton Popov).
  • Évite l’exception “bad cast” lorsqu’une expression filtrant les données par colonnes virtuelles (comme _table dans les tables Merge) 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 sur system.tables, renvoie le type Nullable. Cela corrige #12166. #12305 (alexey-milovidov).
  • Affiche une erreur après l’échec du chargement de TrieDictionary. #12290 (Vitaly Baranov).
  • La fonction arrayFill fonctionnait 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 colonnes LowCardinality et 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 dictGet lors 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 DELETE qui 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 greatCircleDistance et geoDistance. 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_rows et result_bytes vides dans system.quey_log pour 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 function pour la fonction defaultValueOfArgumentType avec le type LowCardinality. Corrige #11808. #12056 (Nikolai Kochetov).
  • Correction de l’erreur Cannot capture column pour les fonctions d’ordre supérieur avec un argument Tuple(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 topK renvoie 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 if avec des arguments de type FixedString de tailles différentes. Cela corrige #11362. #12021 (alexey-milovidov).
  • Une requête avec la fonction neighbor comme 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 set dans le format Values. 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-certificates avant le premier apt-get update dans 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 Nullable dans 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 FixedString avec une constante String. 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&#95;ERROR provoqué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 FILL sur 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 TIES avec la clause ORDER 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âches MUTATE_PART dans 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 Nullable dans une condition PREWHERE. (Il est probablement lié, d’une manière ou d’une autre, à #11572). #11608 (Nikolai Kochetov).
  • Correction de l’erreur Block structure mismatch pour les requêtes avec sampling lisant depuis une table Buffer. #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 column pour les requêtes avec PREWHERE column in (subquery) et ARRAY 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-pointer dans les builds clang, 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 methods qui peut se produire si min_bytes_to_use_direct_io est 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 stuck pour 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 VIEW avec le paramètre parallel_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 empty ou notEmpty. 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_speed peut ne pas fonctionner, ou mal fonctionner, si la requête est bridée par les paramètres max_network_bandwidth, max_execution_speed ou priority. La valeur par défaut de timeout_before_checking_execution_speed devient non nulle, car sinon les paramètres min_execution_speed et max_execution_speed restent sans effet. Corrige #11297. Corrige #5732. Corrige #6228. Amélioration ergonomique : évite la concaténation du message d’exception avec la barre de progression dans clickhouse-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 QueryPipeline lors de la lecture depuis VIEW avec 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 column pour 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 section HAVING (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

  • Correction de plusieurs tests d’intégration intermittents. #11355 (alesapin).

Version de ClickHouse v20.4.4.18-stable 2020-05-26

Aucun changement par rapport à la version v20.4.3.16-stable.

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 MergeTree si 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 ALTER et DROP DATABASE avec le database engine Atomic. #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 DROP du table engine Kafka (ou lors des redémarrages du serveur). #10910 (filimonov).
  • Correction de l’impossibilité d’exécuter plusieurs ALTER RENAME comme a 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 finalizeAggregation lors de la lecture depuis une table avec le engine Memory qui stocke l’état AggregateFunction pour la fonction quantile*. #10890 (Nikolai Kochetov).
  • Correction de la compatibilité ascendante avec les tuples dans les Distributed tables. #10889 (Anton Popov).
  • Correction de SIGSEGV dans StringHashTable si une telle clé n’existe pas. #10870 (Azat Khuzhin).
  • Correction des blocages de WATCH après la suppression d’une table LiveView d’une base de données utilisant le moteur Atomic. #10859 (tavplubix).
  • Correction d’un bug dans ReplicatedMergeTree qui pouvait bloquer certaines requêtes ALTER sur OPTIMIZE en attente d’une replica devenue inactive. #10849 (tavplubix).
  • Les contraintes sont désormais mises à jour si la colonne utilisée dans l’expression CONSTRAINT a é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 ODBC lorsqu’aucune mise entre guillemets des identifiants n’est demandée. Corrige #7984. #10821 (alexey-milovidov).
  • Correction d’un signalement UBSan et MSan dans DateLUT. #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 dans MATERIALIZED VIEW non concernées par cette exception doivent être menées à terme. Corrige #10241. #10757 (Nikolai Kochetov).
  • Correction des combinateurs -OrNull et -OrDefault lorsqu’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 ALTER concurrents lorsque la table contenait un grand nombre de parts. #10659 (alesapin).
  • Correction d’un déréférencement de nullptr dans StorageBuffer si le server était arrêté avant l’initialisation de la table. #10641 (alexey-milovidov).
  • Correction de optimize_skip_unused_shards avec LowCardinality. #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 de loadStoredObject(). #10587 (Vitaly Baranov).
  • Correction du SELECT sur la colonne ALIAS lorsque 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 BY sur la sharding_key (optimize_distributed_group_by_sharding_key avait été introduit puis désactivé par défaut en raison de la complexité de l’analyse de la sharding_key ; un exemple simple est if dans la clé de sharding), et correction pour WITH 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 fonction pointInPolygon et 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 Markdown pour 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 least et greatest. 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 vaut max_lifetime par défaut, et query_wait_timeout_milliseconds, qui vaut une minute par défaut. Le premier paramètre est également utile avec le paramètre allow_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 NULL comme égal à NULL dans l’opérateur IN si l’option transform_null_in est 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 VIEW pour une meilleure compatibilité avec TPC-H. #9831 (Amos Bird)
  • Ajouter l’option ‘strict_order’ à windowFunnel() #9773 (achimbab)
  • Prise en charge des opérateurs SQL DATE et TIMESTAMP, par exemple SELECT 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 DROP et RENAME TABLE sans blocage, ainsi que la requête atomique EXCHANGE 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 VIEW lorsque 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=2 et cancel_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 CACHE supprime 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 IN avec un ensemble identique dans une même requête. Corrige #10539 #10686 (Anton Popov)
  • Correction d’un crash dans generateRandom avec des types imbriqués. Corrige #10583. #10734 (Nikolai Kochetov)
  • Correction d’une corruption de données affectant la colonne clé LowCardinality(FixedString) dans SummingMergeTree, 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 JOIN ou une sous-requête avec une condition WHERE externe. Corrige #10674 #10698 (Nikolai Kochetov)
  • Correction de l’absence d’exécution parallèle des requêtes distantes avec distributed_aggregation_memory_efficient activé. 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 addressToLine ou 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/Casablanca sur 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_merge est 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 stuck dans ConcatProcessor, 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 DROP et OPTIMIZE dans ReplicatedMergeTree. DROP pouvait laisser des éléments résiduels dans le path de la replica dans ZooKeeper en cas de requête OPTIMIZE concurrente. #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_size et max_parser_depth en conséquence. #10295 (alexey-milovidov)
  • Permet d’utiliser count(*) avec plusieurs JOIN. Corrige #9853 #10291 (Artem Zuikov)
  • Corrige l’erreur Pipeline stuck avec max_rows_to_group_by et group_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.numbers ou system.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 parseDateTimeBestEffort pour 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 TABLE pour un dictionnaire. #10165 (Azat Khuzhin)
  • Conversion des blocks si la structure ne correspond pas lors d’un INSERT dans 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_bytes lors de la création d’une nouvelle replica. Corrige #10098. #10121 (alesapin)
  • Correction d’un bug dans la requête CHECK TABLE lorsque 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 JOIN et UNION 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/metadata n’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ètre distributed_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 DeleteOnDestroy dans ATTACH 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 CLUSTER se 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 JOIN est utilisé avec TOTALS. 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 TRUNCATE pour le moteur de table Join (#9917). #9920 (Amos Bird)
  • Correction d’une condition de concurrence entre drop et optimize dans ReplicatedMergeTree. #9901 (alesapin)
  • Correction de DISTINCT pour Distributed lorsque optimize_skip_unused_shards est 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 1 côté client. Cela se produisait pour les requêtes avec JOIN lorsque 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_shards est 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 COLUMN défaillante pour les parts compactes. #9779 (alesapin)
  • Correction de l’absence de rows_before_limit_at_least pour 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 sumKahan et sumWithOverflow. 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êtes INSERT dans une table Distributed dans 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 column et Invalid number of rows in Chunk dans MergeTreeRangeReader. Elles pouvaient apparaître lors de l’exécution de PREWHERE dans certains cas. #9612 (Anton Popov)
  • Autorise ALTER ON CLUSTER pour 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 comme time + 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 OFFSET au lieu de cityHash64(PRIMARY KEY) % N == n pour le fractionnement dans clickhouse-copier. Pour utiliser cette fonctionnalité, passez --experimental-use-sample-offset 1 en 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_merge sur la clé de sharding de GROUP BY (si optimize_skip_unused_shards est 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_usage pour limiter l’utilisation mémoire totale du serveur. La métrique MemoryTracking est désormais calculée sans dérive. Le paramètre max_memory_usage_for_all_queries est 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 +inf pour les types à virgule flottante. Cela clôt #1839 #10272 (alexey-milovidov)
  • Implémentation de la table function generateRandom pour 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 toString est 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 CLUSTER pour 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 table system.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 BY des 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ésactive force_optimize_skip_unused_shards pour 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 Date ou DateTime dans 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 = 2 est 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 avec USING et permet select * 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 splitByString pour 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_level est 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 limit mais sans order by (comme select 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 now64 avec 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_OPTIONS pour 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-10 dans 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 error et SSL 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/null dans le moteur File pour 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.py pour é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-test est 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-conflicts dans le script de backport. #9705 (Nikolai Kochetov)
  • Correction de auto-label dans 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-tidy dans le script packager. #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 Distributed si la query contient WHERE, PREWHERE et GLOBAL 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 MOVE ou REPLACE PARTITION ou, dans de rares cas, après DETACH ou DROP 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 table MySQL dans 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 SELECT lorsque la colonne interrogée possède une expression DEFAULT qui dépend d’une autre colonne, elle aussi définie avec DEFAULT, qui n’est pas présente dans la requête SELECT et 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 (comme UPDATE 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 PipelineExecutor lui-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 cache renvoyait 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 exceeded pour 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 parseDateTimeBestEffort lorsqu’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, sumDistinct et des fonctions d’agrégation similaires appelées sur des types Float avec des valeurs NaN. 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 arrayElement lorsque 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 écrit WHERE x IN tuple(1, 2, ...) au lieu de WHERE 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 DELETE lorsque enable_mixed_granularity_parts=1. Corrige #12536. #12543 (alesapin).
  • Message d’exception amélioré pour la fonction in avec 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_log est activé. #12452 (alexey-milovidov).
  • Correction d’un segfault possible avec StorageMerge. Clôt #12054. #12401 (tavplubix).
  • Correction de TOTALS/ROLLUP/CUBE pour les fonctions d’agrégation avec des arguments -State et Nullable. Cela corrige #12163. #12376 (alexey-milovidov).
  • Correction de l’ordre des colonnes dans le modificateur WITH FILL. Auparavant, l’ordre des colonnes de l’instruction ORDER BY n’était pas respecté. #12306 (Anton Popov).
  • Évite l’exception “bad cast” lorsqu’une expression filtre les données par des colonnes virtuelles (comme _table dans les tables Merge) 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 sur system.tables, et que cette expression renvoie le type Nullable. Cela corrige #12166. #12305 (alexey-milovidov).
  • Affiche une erreur après l’échec du chargement de TrieDictionary. #12290 (Vitaly Baranov).
  • La fonction arrayFill fonctionnait 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 dictGet lors de l’élimination des fonctions injectives de GROUP BY. #12179 (Azat Khuzhin).
  • Correction d’une logique erronée dans ALTER DELETE qui 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 greatCircleDistance et geoDistance. Cela corrige #12117. #12137 (alexey-milovidov).
  • Évite l’exception There is no query pour 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 SELECT avec UNION, 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 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 function pour la fonction defaultValueOfArgumentType avec le type LowCardinality. Corrige #11808. #12056 (Nikolai Kochetov).
  • Correction de l’erreur Cannot capture column pour les fonctions d’ordre supérieur avec un argument Tuple(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 topK renvoie 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 d’un résultat erroné et d’un crash potentiel lors de l’appel de la fonction if avec des arguments de type FixedString de tailles différentes. Corrige #11362. #12021 (alexey-milovidov).
  • Une query dont la fonction neighbor est 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 set dans le format Values. 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 avec wait_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 TIES avec l’instruction ORDER 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 Nullable dans 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 FILL sur 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âches MUTATE_PART dans 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 Nullable dans 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 mismatch pour les requêtes avec sampling lisant depuis la table Buffer. #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 column pour les requêtes avec PREWHERE column in (subquery) et ARRAY 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éfaut max_lifetime, et query_wait_timeout_milliseconds, qui vaut par défaut une minute. Le premier paramètre est également utile avec le paramètre allow_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 methods qui peut se produire si min_bytes_to_use_direct_io est 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 pointInPolygon avec nan comme 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é USING incorrecte. #11373. #11404 (Artem Zuikov).
  • Corrige geohashesInBox avec 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 stuck pour 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 VIEW avec le paramètre parallel_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 empty ou notEmpty. 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_speed peut ne pas fonctionner, ou fonctionner incorrectement, si la requête est limitée par les paramètres max_network_bandwidth, max_execution_speed ou priority. La valeur par défaut de timeout_before_checking_execution_speed devient non nulle, car sinon les paramètres min_execution_speed et max_execution_speed n’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 dans clickhouse-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 QueryPipeline lors de la lecture depuis VIEW avec 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 column pour 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 section HAVING (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

  • Corrige plusieurs tests d’intégration intermittents. #11355 (alesapin).

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 BY est volumineux 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 la rétrocompatibilité avec les tuples dans les tables Distributed. #10889 (Anton Popov).
  • Correction d’un SIGSEGV dans StringHashTable si la clé n’existait pas. #10870 (Azat Khuzhin).
  • Correction d’un bug dans ReplicatedMergeTree qui pouvait bloquer certains ALTER sur une requête OPTIMIZE, 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 ODBC lorsqu’aucune mise entre guillemets des identifiants n’est demandée. Corrige #7984. #10821 (alexey-milovidov).
  • Correction de signalements UBSan et MSan dans DateLUT. #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 dans MATERIALIZED VIEW qui n’ont pas échoué sont terminées. Corrige #10241. #10757 (Nikolai Kochetov).
  • Correction des combinateurs -OrNull et -OrDefault lorsqu’ils sont combinés avec -State. #10741 (hcz).
  • Correction d’un crash dans generateRandom avec les types imbriqués. Corrige #10583. #10734 (Nikolai Kochetov).
  • Correction d’une corruption de données affectant la colonne clé LowCardinality(FixedString) dans SummingMergeTree, 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 WHERE externe. Corrige #10674. #10698 (Nikolai Kochetov).
  • Correction des utilisations multiples de l’opérateur IN avec 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=2 et cancel_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_efficient activé. 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 CACHE supprimait é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 VIEW lorsque cette requête contenait une table dépendante. #10603 (Nikolai Kochetov).
  • Correction de SELECT sur une colonne ALIAS dont 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).
  • 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 simpleLinearRegression avec 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_merge activé (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 DROP et OPTIMIZE dans ReplicatedMergeTree. DROP pouvait laisser des résidus dans le chemin de la réplique dans ZooKeeper en cas de requête OPTIMIZE concurrente. #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 stuck dans ConcatProcessor, 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 IN et 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 expressions pour 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 stuck avec max_rows_to_group_by et group_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 parseDateTimeBestEffort pour 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.numbers ou system.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_bytes lors 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 JOIN et UNION 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/metadata n’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 TABLE lorsqu’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ètre distributed_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 JOIN apparaît avec TOTALS. Corrige #9839. #9939 (Artem Zuikov).
  • Corrige un bug où les requêtes DDL ON CLUSTER se 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 TRUNCATE pour 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

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 1 côté client. Cela se produisait pour les requêtes avec JOIN si 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 COLUMN dé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_least pour 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êtes INSERT dans une table Distributed dans 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 long lors de l’envoi de données vers des tables Distributed comportant 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é des INSERT asynchrones dans des tables Distributed. 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_log tous les N octets au-delà de la limite souple d’allocation #8765 (Ivan) #9472 (alexey-milovidov) La colonne de system.trace_log a été renommée de timer_type en trace_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-client ne peut pas recevoir les logs envoyés par le serveur lorsque le paramètre send_logs_level est 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ètre send_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 SELECT comme 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 pas ADD une colonne sans type, un MODIFY de l’expression par défaut ne change pas le type de la colonne, et un MODIFY du 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_processors est 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 Avro et AvroConfluent #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 PARTITION pour ALTER 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_policy vers 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, bitNot pour le type de données FixedString(N). #9091 (Guillaume Tassery)
  • Ajout de la fonction bitCount. Cela corrige #8702. #8708 (alexey-milovidov) #8749 (ikopylov)
  • Ajout de la fonction de table generateRandom pour 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 DEFAULT qui dépend d’une colonne avec une expression ALIAS par défaut. #9489 (alesapin)
  • Autorise la spécification de --limit au-delà de la taille des données source dans clickhouse-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_cache via 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_line est défini sur 1 #8934 #8935 #8963 (Mikhail Korotov)
  • Ajout de nouvelles fonctions à l’API H3 : h3GetBaseCell, h3HexAreaM2, h3IndexesAreNeighbors, h3ToChildren, h3ToString et stringToH3 #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_shards pour 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_time dans la table system.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.zeros et system.zeros_mt, ainsi que des fonctions de table zeros() et zeros_mt(). Les tables (et les fonctions de table) contiennent une seule colonne nommée zero et de type UInt8. 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ètres min_bytes_for_wide_part et min_rows_for_wide_part. #8290 (Anton Popov)
  • Prise en charge du stockage S3 pour les tables Log, TinyLog et StripeLog. #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 File ou la fonction de table file. 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épertoire data. Correction du problème où la quantité d’espace libre n’était pas calculée correctement si le répertoire data é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 BY avec le paramètre distributed_aggregation_memory_efficient activé. 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_handle au démarrage des tables ReplicatedMergeTree. #9552 (alexey-milovidov)
  • Le token NOT ne fonctionnait pas dans la requête SHOW 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ètre connect_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=0 et is_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 jointures ANY|ALL|SEMI LEFT et ALL INNER avec partial_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îne e. Corrige #8312 #8764 (Artem Zuikov)
  • S’assurer que FORMAT Null n’envoie aucune donnée au client. #8767 (Alexander Kuzmenkov)
  • Correction d’un bug empêchant la mise à jour du timestamp dans LiveViewBlockInputStream. LIVE VIEW est 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 match et extract lorsque 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 poll depuis Kafka, car cela peut entraîner des trous dans les données. #8876 (filimonov)
  • Correction de joinGet avec des types de retour Nullable. #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 compression T64, qui entraînaient une (dé)compression incorrecte dans les versions affectées. #9033 (Artem Zuikov)
  • Ajout du paramètre enable_early_constant_folding et 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 stockages File #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 DICTIONARIES est 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 Memory utilisait un data path vide, les tables étaient donc créées dans le répertoire path (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 types Array. #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 MergeTree dans un seul thread. Cela pouvait entraîner des exceptions de MergeTreeRangeReader ou des résultats de query incorrects. #9050 (Anton Popov)
  • Faire en sorte que reinterpretAsFixedString renvoie FixedString au lieu de String. #9052 (Andrew Onyshchuk)
  • Évite, dans des cas extrêmement rares, que l’utilisateur reçoive un message d’erreur erroné (Success au lieu d’une description détaillée de l’erreur). #9457 (alexey-milovidov)
  • Ne plante pas lors de l’utilisation du format Template avec 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 clause IF 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 avoided au 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 Kafka dans 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 SETTING sur d’anciens table engines de la famille MergeTree. #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 IN dans GROUP BY #8868 (Amos Bird)
  • Correction d’un bug dans les mutations ALTER DELETE qui entraînait une corruption de l’index. Cela corrige #9019 et #8982. Correction également de conditions de concurrence extrêmement rares dans les requêtes ALTER de ReplicatedMergeTree. #9048 (alesapin)
  • Lorsque le paramètre compile_expressions est activé, il est possible d’obtenir unexpected column dans LLVMExecutableFunction lors de l’utilisation du type Nullable #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 augmenter kafka_max_block_size dans la table à une valeur plus élevée (par exemple CREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). Corrige #7259 #8917 (filimonov)
  • Correction de l’exception Parameter out of bound dans 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’identifiant interval é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 TIES lorsqu’il y a beaucoup de lignes égales à la n-ième ligne. #9464 (tavplubix)
  • Correction des mutations avec des parts écrites avec insert_quorum activé. #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 bound dans certains cas rares lorsqu’une constante est présente dans la clause SELECT avec une clause ORDER BY et une clause LIMIT. #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 INDEX pour 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 de LIVE VIEW lors du détachement de LIVE VIEW. LIVE VIEW est une fonctionnalité expérimentale. #8824 (tavplubix)
  • Correction d’un segfault possible dans MergeTreeRangeReader lors de l’exécution de PREWHERE. #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 intDiv avec 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 Kafka créé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/DROP au moyen de mutations pour la famille de moteurs ReplicatedMergeTree*. Désormais, ALTERS ne 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 WHERE contenant des noms non qualifiés. #9512 (Artem Zuikov)
  • Les requêtes SHOW TABLES et SHOW DATABASES prennent désormais en charge les expressions WHERE ainsi que FROM/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_id dans clickhouse-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_engines fournit désormais des informations sur la prise en charge des fonctionnalités (comme supports_ttl ou supports_sort_order). #8830 (Max Akhmedov)
  • Active system.metric_log par 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 VIEW temporaire est créée avec CREATE LIVE VIEW name WITH TIMEOUT [42] ... au lieu de CREATE TEMPORARY LIVE VIEW ..., car la syntaxe précédente n’était pas cohérente avec CREATE 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 arraySlice pour 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_code dans la table system.query_log. #8770 (Mikhail Korotov)
  • Activation du serveur de compatibilité MySQL sur le port 9004 dans 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 _path et _file aux engines HDFS et File, ainsi qu’aux fonctions de table hdfs et file #8489 (Olga Khvostikova)
  • Correction de l’erreur Cannot find column lors d’une insertion dans MATERIALIZED VIEW lorsqu’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-Timezone défini sur la même valeur de fuseau horaire que celle renvoyée par SELECT 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 repose ColumnConst::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 fonction materialize et 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 Null dans 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 readline par replxx pour l’édition interactive de lignes dans clickhouse-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-tidy dans la CI. Voir aussi #6044 #9566 (alexey-milovidov)
  • Désormais, ClickHouse est lié dans la CI avec lld, y compris pour gcc. #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 sumMap et sumMapWithOverflow. 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-override pour repérer et corriger tous les endroits où le mot-clé override doit ê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 libcxx et libcxxabi vers 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-odbc aux 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-dirs afin 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 error et SSL 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 numbers par zeros dans les tests de performance où la colonne number n’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 rdkafka et gsasl sur 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 Nullable dans 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 FILL sur 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 Nullable dans 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

  • Corrige le verrouillage excessif de la structure lors d’une opération ALTER. #11790 (alesapin).

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 column pour les requêtes avec PREWHERE column in (subquery) et ARRAY 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 methods qui peut se produire si min_bytes_to_use_direct_io est 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 stuck pour 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 VIEW avec le paramètre parallel_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 empty ou notEmpty. 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_speed ne fonctionne pas ou fonctionne mal si la requête est bridée par les paramètres max_network_bandwidth, max_execution_speed ou priority. La valeur par défaut de timeout_before_checking_execution_speed devient non nulle, car sinon les paramètres min_execution_speed et max_execution_speed n’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 dans clickhouse-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 column pour les fonctions d’ordre supérieur avec un argument capturé de type Array(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 ReplicatedMergeTree qui pouvait faire que certaines requêtes ALTER sur OPTIMIZE restent 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_type pour assurer une conversion de type correcte dans les conditions sur les clés. Corrige #6287. #10791 (Andrew Onyshchuk).
  • Corrige le comportement de parallel_view_processing. Désormais, en cas d’exception, toutes les insertions dans MATERIALIZED VIEW doivent 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 IN avec 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_efficient activé. 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 section HAVING (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 BY est volumineux et que l’agrégation est effectuée sur un seul champ String. 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) dans SummingMergeTree, 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=2 et cancel_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 CACHE supprimait é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 VIEW lorsque 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 simpleLinearRegression sur 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 BY et LIMIT pouvait 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 HashTable qui 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 stuck dans ConcatProcessor, qui pouvait se produire lors d’une requête distante. #10381 (Nikolai Kochetov).
  • Correction de l’erreur Pipeline stuck avec max_rows_to_group_by et group_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é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).
  • Corrige parseDateTimeBestEffort pour 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 JOIN qui peuvent entrer en conflit avec les noms des constantes à l’extérieur de JOIN. #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.numbers ou system.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 INSERT dans une table avec le moteur Distributed. #10135 (Azat Khuzhin).
  • Corrige SIGSEGV lors d’un INSERT dans une table Distributed lorsque sa structure diffère de celle des tables sous-jacentes. #10105 (Azat Khuzhin).
  • Corrige une possible perte de lignes pour les requêtes avec JOIN et UNION 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ètre distributed_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 BY sur 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' lorsque JOIN est utilisé avec TOTALS. Corrige #9839. #9939 (Artem Zuikov).
  • Corrige un bug où les requêtes DDL ON CLUSTER pouvaient se bloquer au démarrage du serveur. #9927 (Gagan Arneja).
  • Corrige TRUNCATE pour 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 DeleteOnDestroy dans ATTACH 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

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 contient PREWHERE et WHERE sur une table distribuée et SET 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êtes INSERT à 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 1 côté client. Cela se produisait pour les requêtes avec JOIN lorsque 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 SIGSEGV avec optimize_skip_unused_shards lorsque 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 BY des 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 dans ParallelAggregatingBlockInputStream::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 sumKahan et sumWithOverflow. 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 CLUSTER pour les tables Distributed avec 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 column et Invalid number of rows in Chunk dans MergeTreeRangeReader. Elles pouvaient survenir lors de l’exécution de PREWHERE dans 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 comme time + 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 TIES lorsqu’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 SETTING pour la famille de moteurs de table MergeTree dans 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 types Array. #9407 (achimbab)
  • Correction du comportement des fonctions match et extract lorsque haystack contient zéro octet. Le comportement était incorrect lorsque haystack était constant. Correction de #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)

Amélioration de la compilation/des tests/du packaging

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 MergeTreeRangeReader lors de l’exécution de PREWHERE. Corrige #9064. #9106 (CurtizJ)
  • Corrige reinterpretAsFixedString pour qu’il renvoie FixedString au lieu de String. #9052 (oandrew)
  • Corrige joinGet avec 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 CROSS en INNER JOIN lorsqu’un opérateur [NOT] LIKE est présent dans la clause WHERE. 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 de ADD une colonne sans type, l’expression par défaut de MODIFY ne change pas le type de la colonne et le type de MODIFY ne 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_time n’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 PARTITION et MOVE 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 UInt64 qui ne tiennent pas dans Int64 dans les fonctions liées à JSON. Mise à jour de SIMDJSON vers 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 Kafka dans 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 Kafka créée avec des paramètres incorrects. Corrige #9494. Intègre #9507. #9513 (filimonov)

Nouvelle fonctionnalité

  • Ajout de l’option deduplicate_blocks_in_dependent_materialized_views pour 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_distribution devient 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 greatCircleDistance a été remplacé par Float32, car le résultat du calcul est désormais de type Float32. #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 écrire a\tb ou a\<tab>b, et respectivement a%5Ctb ou a%5C%09b dans l’URL. Cela est nécessaire pour permettre de transmettre NULL sous la forme \N. Cela corrige #7488. #8517 (alexey-milovidov)
  • Le paramètre use_minimalistic_part_header_in_zookeeper est désormais activé par défaut pour ReplicatedMergeTree. 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_conversion et allow_experimental_multiple_joins_emulation sont désormais obsolètes et n’ont plus aucun effet. #7974 (alexey-milovidov)
  • Ajout d’une nouvelle logique ANY JOIN pour StorageJoin, cohérente avec l’opération JOIN. Pour effectuer la mise à niveau sans changer le comportement, vous devez ajouter SETTINGS any_join_distinct_right_table_keys = 1 aux 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 DICTIONARY en mode ON CLUSTER. #8288 (Guillaume Tassery)
  • Ajout de la possibilité d’exécuter les requêtes CREATE DICTIONARY en mode ON CLUSTER. #8163 (alesapin)
  • Désormais, le profil de l’utilisateur dans users.xml peut 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 DateTime64 avec 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, TSV et JSONEachRow en 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 t2 est égal à t2 ANY RIGHT JOIN t1. #7665 (Artem Zuikov)
  • Ajout du paramètre any_join_distinct_right_table_keys, qui active l’ancien comportement pour ANY INNER JOIN. #7665 (Artem Zuikov)
  • Ajout de SEMI et ANTI JOIN. L’ancien comportement de ANY INNER JOIN est désormais disponible sous la forme SEMI LEFT JOIN. #7665 (Artem Zuikov)
  • Ajout du format Distributed pour le moteur File et de la fonction de table file, qui permet de lire des fichiers .bin générés par des inserts asynchrones dans une table Distributed. #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> dans config.xml, qui restreint les hôtes autorisés pour les moteurs de table distants et les fonctions de table URL, 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 JSONCompactEachRow et JSONCompactEachRowWithNamesAndTypes en 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 fichiers gzip selon 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îne JSON. #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 TTL configuré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, CSV et JSONEachRow. #7894 (Nikita Mikhaylov)
  • Ajout de plusieurs fonctions géo de la bibliothèque H3 : h3GetResolution, h3EdgeAngle, h3EdgeLength, h3IsValid et h3kRing. #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 type SimpleAggregationFunction. #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 EXPRESSION pour 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 Tuple par défaut depuis JSONEachRow. Corrige #5653. #8606 (tavplubix)
  • Une exception est désormais levée lors de l’utilisation de WITH TIES avec LIMIT BY. Ajout également de la possibilité d’utiliser TOP avec LIMIT 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ête ALTER, 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)DBC est 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 argMin et argMax avec des arguments chaîne longs, lorsque le résultat est utilisé dans la fonction runningAccumulate. 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 NULL comme 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 IN dans l’instruction WHERE lorsqu’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_regexp spécifié dans users.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 format JSON ou XML avec des valeurs de type String (nécessitant une validation UTF-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 StorageDistributedDirectoryMonitor détectée par la CI. Cela corrige #8364. #8383 (Nikolai Kochetov)
  • Désormais, les background merges de la famille de moteurs de table *MergeTree préservent plus précisément l’ordre des volumes de la storage policy. #8549 (Vladimir Chebotarev)
  • Désormais, le moteur de table Kafka fonctionne correctement avec le format Native. 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 table Kafka. #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 Parquet contenant des colonnes de type list. #8334 (maxulan)
  • Correction de l’erreur Not found column pour les requêtes distribuées avec une condition PREWHERE dépendant de la clé d’échantillonnage si max_parallel_replicas > 1. #7913 (Nikolai Kochetov)
  • Correction de l’erreur Not found column si la requête utilisait PREWHERE en 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 rand et randConstant dans le cas d’un argument Nullable. Désormais, ces fonctions renvoient toujours UInt32 et jamais Nullable(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 pour SummingMergeTree lorsque la clause FINAL est 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 JOIN avec des tables utilisant le moteur Join. 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 StorageFile et StorageHDFS. 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 LEFT ou d’un FULL JOIN avec un moteur Join et des paramètres join_use_nulls non pris en charge. #8479 (Artem Zuikov)
  • Désormais, la requête DROP DICTIONARY IF EXISTS db.dict ne lève plus d’exception si db n’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 objet IStorage supprimé. 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-copier entre 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 *MergeTree après leur déplacement vers un autre disque et un redémarrage du serveur. #7810 (Vladimir Chebotarev)
  • Corrige un plantage dans FULL JOIN avec LowCardinality dans la clé de JOIN. #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 column pour 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 qualificateur TABLE ou DICTIONARY, par exemple EXISTS 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 colonne SimpleAggregateFunction. #7790 (Boris Granveaud)
  • Correction d’un bug où un utilisateur avec allow_databases vide obtenait l’accès à toutes les bases de données (et de même pour allow_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 BY dans 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 UNION avec 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 substr avec une taille négative. #8589 (Nikolai Kochetov)
  • Désormais, le serveur n’exécute pas de mutation de part dans MergeTree s’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 TABLE n’attendra plus que les répliques hors ligne effectuent l’opération. #8314 (javi santana)
  • Correction du parseur ALTER TTL pour les tables Replicated*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 bitmapAnd lors de l’intersection d’un bitmap agrégé et d’un bitmap scalaire. #8082 (Yue Huang)
  • Affinement de la définition de ZXid conformément au guide du programmeur ZooKeeper, ce qui corrige un bug dans clickhouse-cluster-copier. #8088 (Ding Xiang Fei)
  • La fonction de table odbc respecte désormais le paramètre external_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 DICTIONARY recharge complètement un dictionnaire, en ignorant update_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 format Values. 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 TABLE pour les tables *MergeTree sans clé. Corrige #7543. #7979 (alesapin)
  • Correction de la conversion de Float64 vers 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 file lors 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_log est activé. #7838 (filimonov)
  • Ajout de la possibilité d’utiliser d’autres types que Date dans un dictionnaire externe RangeHashed créé à 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-file d’un autre clickhouse-server en 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 arrayReduce pouvant entraîner un “double free”, ainsi que d’une erreur dans le combinateur de fonction d’agrégation Resample pouvant entraîner une fuite mémoire. Ajout de la fonction d’agrégation aggThrow. 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êtes ALTER UPDATE/DELETE de manière synchrone. #8237 (alesapin)
  • Possibilité de définir un user_files_path relatif dans config.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 exists lors de l’utilisation conjointe de FINAL et SAMPLE, par exemple select count() from table final sample 1/2. Corrige #5186. #7907 (Nikolai Kochetov)
  • Désormais, le premier argument de la fonction joinGet peut être un identifiant de table. #7707 (Amos Bird)
  • Possibilité d’utiliser MaterializedView avec des sous-requêtes sur des tables Kafka. #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 DICTIONARY s’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 addr2line lorsque 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 cityHash prend en charge les types Decimal et UUID. 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 TABLE et ATTACH TABLE pour le moteur de base de données MySQL. #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 MergeTree sur 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-client active désormais bracketed-paste uniquement lorsque multiquery est activé et multiline désactivé. Cela corrige #7757. #7761 (Amos Bird)
  • Prise en charge de Array(Decimal) dans la fonction if. #7721 (Artem Zuikov)
  • Prise en charge des Decimal dans les fonctions arrayDifference, arrayCumSum et arrayCumSumNegative. #7724 (Artem Zuikov)
  • Ajout de la colonne lifetime à la table system.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 SDK pour les interactions avec S3, 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 Date ou DateTime dans les expressions TTL a é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_drop peuvent 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 Kafka dans 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 BY pour les stockages Merge, Buffer et Materilized View avec des tables MergeTree sous-jacentes. #8130 (Anton Popov)
  • Nous utilisons désormais systématiquement l’implémentation POSIX de getrandom afin 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.mutations d’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_lifetime est 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 que mark_cache_size afin de conserver les données pendant mark_cache_min_lifetime secondes. 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 augmenter mark_cache_size. #8484 (alexey-milovidov)
  • Préparation à l’utilisation de tid partout. 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-pointer afin de libérer un registre supplémentaire. #8097 (Amos Bird)
  • Accélération de la fonction greatCircleDistance et 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, argMax pour le type de données DateTime64. #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 BY et de la fusion avec une clé sur une seule colonne. #8335 (alexey-milovidov)
  • Meilleure implémentation de arrayReduce et des combinateurs -Array et -State. #7710 (Amos Bird)
  • Désormais, PREWHERE devrait être optimisé pour être au moins aussi efficace que WHERE. #7769 (Amos Bird)
  • Amélioration de la gestion des nombres négatifs par round et roundBankers. #8229 (hcz)
  • Amélioration des performances de décodage des codecs DoubleDelta et Gorilla d’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 min et max plus rapides pour le type de données Decimal. #8144 (Artem Zuikov)
  • Vectorisation du traitement de arrayReduce. #7608 (Amos Bird)
  • Les chaînes if sont désormais optimisées en multiIf. #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 gcc active 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 Values avec 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 ARM et le mode minimal. #8304 (proller)
  • Ajout du flush du fichier de couverture pour clickhouse-server lorsque std::atexit n’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 curl inclus complètement silencieuse. #8232 #8203 (Pavel Kovalenko)
  • Correction de quelques avertissements MemorySanitizer. #8235 (Alexander Kuzmenkov)
  • Utilisation des macros add_warning et no_warning dans CMakeLists.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 libc dans contrib. Cela permet d’obtenir des builds plus cohérents sur différents systèmes (uniquement pour x86_64-linux-gnu). #5773 (alexey-milovidov)
  • Suppression de -fPIC de certaines bibliothèques. #8464 (alexey-milovidov)
  • Nettoyage de CMakeLists.txt pour 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 AArch64 même si MADV_FREE n’est pas disponible. Cela corrige #8027. #8243 (Amos Bird)
  • Mise à jour de zlib-ng pour 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 Field plus 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 JSON incorrects dans la sortie des tests de performance. #8497 (Nikolai Kochetov)
  • La trace de pile est désormais affichée pour std::exception et Poco::Exception. Dans les versions précédentes, elle n’était disponible que pour DB::Exception. Cela améliore le diagnostic. #8501 (alexey-milovidov)
  • Portage de clock_gettime et clock_nanosleep pour les nouvelles versions de glibc. #8054 (Amos Bird)
  • Activation de part_log dans 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 .tgz et 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_ERROR comme 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 lz4 pour 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 gcc et g++ vers la version 9 dans build/docker/build.sh #7766 (TLightSky)
  • Ajout d’un test de performance pour vérifier que PREWHERE est moins performant que WHERE. #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_poly1305 via 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-server dans clickhouse-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_query pour les processeurs. #8272 (Nikolai Kochetov)
  • Suppression de la prise en charge de tcmalloc afin de simplifier CMakeLists.txt. #8310 (alexey-milovidov)
  • Les builds gcc de release utilisent désormais libc++ au lieu de libstdc++. 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 Float64 et UInt64. #8349 (Vasily Nemkov)
  • termcap est fortement déprécié et a entraîné divers problèmes (p. ex. capacité « up » manquante et affichage de ^J au lieu du mode multiligne). Préférez terminfo ou ncurses inté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-time aux tests fonctionnels, qui affiche le temps d’exécution de chaque test. #8001 (Nikolai Kochetov)
  • Ajout d’assertions à KeyCondition lors 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-X avec la version correspondante de clang-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 fonctions currentQuota, currentQuotaKey et de la nouvelle syntaxe SQL CREATE 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 fonction currentRowPolicies() et de la nouvelle syntaxe SQL CREATE 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)
Dernière modification le 29 juin 2026