Passer au contenu principal

Version de ClickHouse 19.17

Version de ClickHouse 19.17.6.36, 2019-12-27

Correction de bugs

  • Correction d’un potentiel dépassement de tampon dans decompress. Un utilisateur malveillant peut transmettre des données compressées falsifiées susceptibles de provoquer une lecture hors des limites du tampon. 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 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 (qui nécessitent une validation UTF-8), lors de la compression des données de résultat avec l’algorithme Brotli, ou dans certains autres cas rares. #8384 (alexey-milovidov)
  • Correction des dictionnaires dont la source est une VIEW ClickHouse : désormais, la lecture de tels dictionnaires ne provoque plus l’erreur There is no query. #8351 (Nikolai Kochetov)
  • Correction de la vérification déterminant si un hôte client est autorisé par host_regexp spécifié dans users.xml. #8241, #8342 (Vitaly Baranov)
  • RENAME TABLE pour une table distribuée renomme désormais le dossier contenant les données insérées avant leur envoi aux shards. Cela corrige un problème lors de renommages successifs tableA->tableB, tableC->tableA. #8306 (tavplubix)
  • Les external dictionaries range_hashed créés par des DDL queries prennent désormais en charge des plages de types numériques arbitraires. #8275 (alesapin)
  • Correction de la table function INSERT INTO table SELECT ... FROM mysql(...). #8234 (tavplubix)
  • Correction d’un segfault dans INSERT INTO TABLE FUNCTION file() lors d’un insert dans un fichier inexistant. Désormais, dans ce cas, le fichier est créé, puis l’insert est exécuté. #8177 (Olga Khvostikova)
  • Correction d’une error de bitmapAnd lors de l’intersection d’un bitmap agrégé et d’un bitmap scalaire. #8082 (Yue Huang)
  • Correction d’un segfault lorsque la query EXISTS était utilisée sans qualificatif TABLE ou DICTIONARY, simplement sous la forme EXISTS t. #8213 (alexey-milovidov)
  • Correction du return type 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)
  • Correction de DROP DICTIONARY IF EXISTS db.dict : désormais, cela ne génère plus d’exception si db n’existe pas. #8185 (Vitaly Baranov)
  • Si une table n’avait pas été complètement supprimée à cause d’un plantage du serveur, le serveur essaiera de la restaurer et de la charger #8176 (tavplubix)
  • Correction d’une query count triviale pour une table distribuée lorsqu’il y a plus de deux tables locales de shard. #8164 (小路)
  • Correction d’un bug qui entraînait une data race dans DB::BlockStreamProfileInfo::calculateRowsBeforeLimit() #8143 (Alexander Kazakov)
  • Correction de ALTER table MOVE part lorsqu’il était exécuté immédiatement après la fusion de la partie spécifiée, ce qui pouvait entraîner le déplacement de la partie dans laquelle cette partie avait été fusionnée. Désormais, c’est bien la partie spécifiée qui est déplacée. #8104 (Vladimir Chebotarev)
  • Les expressions des dictionnaires peuvent désormais être spécifiées sous forme de chaînes. C’est utile pour le calcul des attributs lors de l’extraction de données depuis des sources non ClickHouse, car cela permet d’utiliser une syntaxe non ClickHouse pour ces expressions. #8098 (alesapin)
  • Correction d’une condition de concurrence très rare dans clickhouse-copier due à un overflow dans ZXid. #8088 (Ding Xiang Fei)
  • Correction du bug où, après l’échec d’une requête (à cause de “Too many simultaneous queries”, par exemple), les informations sur les tables externes n’étaient pas lues, et la requête suivante interprétait ces informations comme le début de la requête suivante, provoquant une erreur du type Unknown packet from client. #8084 (Azat Khuzhin)
  • Évite un déréférencement de pointeur nul après “Unknown packet X from server” #8071 (Azat Khuzhin)
  • Restaure la prise en charge de toutes les locales ICU, ajoute la possibilité d’appliquer des collations aux expressions constantes et ajoute le nom de la langue à la table system.collations. #8051 (alesapin)
  • Le nombre de flux de lecture depuis StorageFile et StorageHDFS est désormais limité afin d’éviter de dépasser la limite de mémoire. #7981 (alesapin)
  • Correction de la requête CHECK TABLE pour les tables *MergeTree sans clé. #7979 (alesapin)
  • Suppression du numéro de mutation du nom d’une partie lorsqu’il n’y avait pas de mutations. Cette suppression a amélioré la compatibilité avec les anciennes versions. #8250 (alesapin)
  • Correction du bug qui faisait que les mutations étaient ignorées pour certaines parties attachées, car leur data_version était supérieure à la version de mutation de la table. #7812 (Zhichang Yu)
  • Autorise le démarrage du serveur avec des copies redondantes de parties après leur déplacement vers un autre périphérique. #7810 (Vladimir Chebotarev)
  • Correction de l’erreur “Sizes of columns does not match” qui pouvait apparaître lors de l’utilisation de colonnes de fonction d’agrégation. #7790 (Boris Granveaud)
  • Désormais, une exception sera levée en cas d’utilisation de WITH TIES avec LIMIT BY. Il est également désormais possible d’utiliser TOP avec LIMIT BY. #7637 (Nikita Mikhaylov)
  • Correction du rechargement du dictionnaire lorsqu’il contient invalidate_query, ce qui bloquait les mises à jour et provoquait certaines exceptions lors des tentatives de mise à jour précédentes. #8029 (alesapin)

Version de ClickHouse 19.17.4.11, 2019-11-22

Changement incompatible avec les versions antérieures

  • Utilisation d’une colonne au lieu d’un AST pour stocker les résultats des sous-requêtes scalaires afin d’améliorer les performances. Le paramètre enable_scalar_subquery_optimization a été ajouté dans la version 19.17 et était activé par défaut. Cela provoque des erreurs comme celle-ci lors de la mise à niveau depuis des versions antérieures vers 19.17.2 ou 19.17.3. Ce paramètre a été désactivé par défaut dans la version 19.17.4 afin de permettre la mise à niveau depuis 19.16 et les versions antérieures sans erreur. #7392 (Amos Bird)

Nouvelle fonctionnalité

  • Ajout de la possibilité de créer des dictionnaires via des requêtes DDL. #7360 (alesapin)
  • Prise en charge de LowCardinality et Nullable par le type d’index bloom_filter #7363 #7561 (Nikolai Kochetov)
  • Ajout de la fonction isValidJSON pour vérifier que la chaîne transmise est un JSON valide. #5910 #7293 (Vdimir)
  • Implémentation de la fonction arrayCompact #7328 (Memo)
  • Création de la fonction hex pour les nombres Decimal. Elle fonctionne comme hex(reinterpretAsString()), mais ne supprime pas les derniers octets nuls. #7355 (Mikhail Korotov)
  • Ajout des fonctions arrayFill et arrayReverseFill, qui remplacent des éléments par les éléments précédents/suivants du tableau. #7380 (hcz)
  • Ajout de la prise en charge de CRC32IEEE()/CRC64() #7480 (Azat Khuzhin)
  • Implémentation de la fonction char, similaire à celle de mysql #7486 (sundyli)
  • Ajout de la fonction bitmapTransform. Elle transforme un tableau de valeurs d’un bitmap en un autre tableau de valeurs ; le résultat est un nouveau bitmap #7598 (Zhichang Yu)
  • Implémentation de la fonction javaHashUTF16LE() #7651 (achimbab)
  • Ajout de la colonne virtuelle _shard_num pour le moteur Distributed #7624 (Azat Khuzhin)

Fonctionnalité expérimentale

  • Ajout de la prise en charge des processeurs (nouveau pipeline d’exécution des requêtes) dans MergeTree. #7181 (Nikolai Kochetov)

Correction de bugs

  • Corrige l’analyse incorrecte des nombres à virgule flottante dans Values #7817 #7870 (tavplubix)
  • Corrige un interblocage rare pouvant survenir lorsque trace_log est activé. #7838 (filimonov)
  • Empêche la duplication des messages lorsqu’une Kafka table en production possède des MV qui la sélectionnent #7265 (Ivan)
  • Prise en charge de Array(LowCardinality(Nullable(String))) dans IN. Résout #7364 #7366 (achimbab)
  • Ajoute la prise en charge de SQL_TINYINT et SQL_BIGINT, et corrige la gestion des source types SQL_FLOAT dans ODBC Bridge. #7491 (Denis Glazachev)
  • Corrige l’agrégation (avg et quantiles) sur des colonnes décimales vides #7431 (Andrey Konyaev)
  • Corrige INSERT dans Distributed avec des colonnes MATERIALIZED #7377 (Azat Khuzhin)
  • Permet à MOVE PARTITION de fonctionner si certaines parts de la partition se trouvent déjà sur le disque ou le volume de destination #7434 (Vladimir Chebotarev)
  • Corrige un bug où la création de liens physiques échouait lors de mutations dans ReplicatedMergeTree avec des configurations multi-disques. #7558 (Vladimir Chebotarev)
  • Corrige un bug lié à une mutation sur un MergeTree lorsque la part entière reste inchangée et que le meilleur espace est recherché sur un autre disque #7602 (Vladimir Chebotarev)
  • Corrige un bug où keep_free_space_ratio n’était pas lu à partir de la configuration des disques #7645 (Vladimir Chebotarev)
  • Corrige un bug lorsqu’une table contient uniquement des colonnes Tuple ou des colonnes avec des paths complexes. Corrige 7541. #7545 (alesapin)
  • N’inclut pas la mémoire du moteur Buffer dans la limite max_memory_usage #7552 (Azat Khuzhin)
  • Corrige l’utilisation du mark final dans les tables MergeTree ordonnées par tuple(). Dans de rares cas, cela pouvait provoquer l’erreur Can't adjust last granule lors d’un select. #7639 (Anton Popov)
  • Corrige un bug dans les mutations dont le prédicat comporte des actions nécessitant un Context (par exemple des fonctions pour json), ce qui pouvait entraîner des crashs ou des exceptions étranges. #7664 (alesapin)
  • Corrige l’incohérence dans l’échappement des noms de database et de table dans les répertoires data/ et shadow/ #7575 (Alexander Burmak)
  • Prise en charge des clés dupliquées dans les RIGHT|FULL JOIN, par ex. ON t.x = u.x AND t.x = u.y. Correction du crash dans ce cas. #7586 (Artem Zuikov)
  • Correction de Not found column <expression> in block lors d’une jointure sur une expression avec RIGHT ou FULL JOIN. #7641 (Artem Zuikov)
  • Nouvelle tentative de correction de la boucle infinie dans le format PrettySpace #7591 (Olga Khvostikova)
  • Correction d’un bug dans la fonction concat lorsque tous les arguments étaient des FixedString de même taille. #7635 (alesapin)
  • Correction d’une exception lors de l’utilisation d’un seul argument dans la définition des stockages S3, URL et HDFS. #7618 (Vladimir Chebotarev)
  • Correction de la portée de l’InterpreterSelectQuery pour les vues avec requête #7601 (Azat Khuzhin)

Amélioration

  • Les colonnes Nullable sont reconnues et les valeurs NULL sont correctement gérées par ODBC-bridge #7402 (Vasily Nemkov)
  • Écriture atomique du batch en cours pour l’envoi distribué #7600 (Azat Khuzhin)
  • Lever une exception si la table correspondant au nom de colonne dans la requête ne peut pas être déterminée. #7358 (Artem Zuikov)
  • Ajout du paramètre merge_max_block_size à MergeTreeSettings #7412 (Artem Zuikov)
  • Les requêtes avec HAVING et sans GROUP BY supposent un GROUP BY sur une constante. Ainsi, SELECT 1 HAVING 1 renvoie désormais un résultat. #7496 (Amos Bird)
  • Prise en charge de l’interprétation de (X,) comme un tuple, comme en Python. #7501, #7562 (Amos Bird)
  • Le comportement de la fonction range devient presque identique à celui de Python. #7518 (sundyli)
  • Ajout des colonnes constraints à la table system.settings #7553 (Vitaly Baranov)
  • Amélioration du format Null pour le TCP handler, afin qu’il soit possible d’utiliser select ignore(<expression>) from table format Null pour mesurer les performances via clickhouse-client #7606 (Amos Bird)
  • Les requêtes comme CREATE TABLE ... AS (SELECT (1, 2)) sont correctement interprétées #7542 (hcz)

Amélioration des performances

  • Amélioration des performances de l’agrégation sur des clés String courtes. #6243 (Alexander Kuzmenkov, Amos Bird)
  • Exécution d’un nouveau passage d’analyse syntaxique/des expressions afin d’obtenir des optimisations potentielles après le repliement des prédicats constants. #7497 (Amos Bird)
  • Utilisation des métadonnées de stockage pour évaluer le SELECT count() FROM table; trivial. #7510 (Amos Bird, alexey-milovidov)
  • Vectorisation du traitement de arrayReduce, à l’instar de addBatch dans Aggregator. #7608 (Amos Bird)
  • Améliorations mineures des performances de consumption de Kafka #7475 (Ivan)

amélioration de la compilation, des tests et du packaging

  • Ajout de la prise en charge de la compilation croisée pour l’architecture CPU AARCH64. Refactorisation du script de packaging. #7370 #7539 (Ivan)
  • Décompression des toolchains darwin-x86_64 et linux-aarch64 dans le volume Docker monté lors de la création des paquets #7534 (Ivan)
  • Mise à jour de l’image Docker du packager binaire #7474 (Ivan)
  • Correction des erreurs de compilation sous macOS Catalina #7585 (Ernest Poletaev)
  • Quelques refactorisations de la logique d’analyse des requêtes : scission d’une classe complexe en plusieurs classes plus simples. #7454 (Artem Zuikov)
  • Correction du build sans sous-modules #7295 (proller)
  • Amélioration de add_globs dans les fichiers CMake #7418 (Amos Bird)
  • Suppression des chemins codés en dur dans la cible unwind #7460 (Konstantin Podshumok)
  • Autorisation de l’utilisation du format MySQL sans SSL #7524 (proller)

Autres

Version de ClickHouse 19.16

Version de ClickHouse 19.16.14.65, 2020-03-25

  • Correction d’un bug affectant les calculs par lot des opérations logiques ternaires avec plusieurs arguments (plus de 10). #8718 (Alexander Kazakov) Ce correctif a été rétroporté vers la version 19.16 à la demande spéciale d’Altinity.

Version de ClickHouse 19.16.14.65, 2020-03-05

  • Correction de l’incompatibilité des sous-requêtes distribuées avec les anciennes versions de ClickHouse. Corrige #7851 (tabplubix)
  • Lors de l’exécution d’une requête CREATE, évalue les expressions constantes dans les arguments du moteur de stockage. Remplace le nom de base de données vide par la base de données courante. Corrige #6508, #3492. Corrige également la vérification de l’adresse locale dans ClickHouseDictionarySource. #9262 (tabplubix)
  • Désormais, les fusions en arrière-plan de la famille des moteurs de table *MergeTree préservent plus fidèlement l’ordre des volumes de la policy de stockage. #8549 (Vladimir Chebotarev)
  • Évite 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. En lien avec : #7175 #9507 (filimonov)
  • Corrige 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. Corrige #9494. Intègre #9507. #9513 (filimonov)
  • Autorise l’utilisation de MaterializedView avec des sous-requêtes sur des tables Kafka. #8197 (filimonov)

Nouvelle fonctionnalité

  • Ajout de l’option deduplicate_blocks_in_dependent_materialized_views pour contrôler le comportement des insertions idempotentes dans des tables comportant des vues matérialisées. Cette nouvelle fonctionnalité a été ajoutée à cette version corrective à la demande expresse d’Altinity. #9070 (urykhy)

Version de ClickHouse 19.16.2.2, 2019-10-30

Changement incompatible avec les versions antérieures

  • Ajout de la validation de l’arité pour count/counIf. #7095 #7298 (Vdimir)
  • Suppression de l’ancien paramètre asterisk_left_columns_only (il était désactivé par défaut). #7335 (Artem Zuikov)
  • Les chaînes de format du format de données Template sont désormais définies dans des fichiers. #7118 (tavplubix)

Nouvelle fonctionnalité

  • Introduction de uniqCombined64() pour calculer une cardinalité supérieure à UINT_MAX. #7213, #7222 (Azat Khuzhin)
  • Prise en charge des index Bloom filter sur les colonnes Array. #6984 (achimbab)
  • Ajout d’une fonction getMacro(name) qui renvoie une String contenant la valeur du <macros> correspondant dans la configuration du serveur. #7240 (alexey-milovidov)
  • Définition de deux options de configuration pour un dictionnaire basé sur une source HTTP : credentials et http-headers. #7092 (Guillaume Tassery)
  • Ajout d’un nouveau ProfileEvent Merge qui compte le nombre de merges en arrière-plan lancés. #7093 (Mikhail Korotov)
  • Ajout de la fonction fullHostName qui renvoie un nom de domaine pleinement qualifié. #7263 #7291 (sundyli)
  • Ajout des fonctions arraySplit et arrayReverseSplit qui divisent un tableau selon des conditions de « coupure ». Elles sont utiles pour le traitement des séquences temporelles. #7294 (hcz)
  • Ajout de nouvelles fonctions qui renvoient l’Array de tous les index correspondants dans la famille de fonctions multiMatch. #7299 (Danila Kutenin)
  • Ajout d’un nouveau database engine Lazy, optimisé pour le stockage d’un grand nombre de petites tables -Log. #7171 (Nikita Vasilev)
  • Ajout des aggregate functions groupBitmapAnd, -Or, -Xor pour les colonnes bitmap. #7109 (Zhichang Yu)
  • Ajout des aggregate function combinators -OrNull et -OrDefault, qui renvoient des valeurs NULL ou par défaut lorsqu’il n’y a rien à agréger. #7331 (hcz)
  • Introduction du format de données CustomSeparated, qui prend en charge des règles personnalisées d’échappement et de délimitation. #7118 (tavplubix)
  • Prise en charge de Redis comme source de dictionnaire externe. #4361 #6962 (comunodi, Anton Popov)

Correction de bugs

  • Correction d’un résultat de requête erroné lorsqu’elle comporte une clause WHERE IN (SELECT ...) et que optimize_read_in_order est utilisé. #7371 (Anton Popov)
  • Désactivation du plugin d’authentification MariaDB, qui dépend de fichiers extérieurs au projet. #7140 (Yuriy Baranov)
  • Correction de l’exception Cannot convert column ... because it is constant but values of constants are different in source and result, qui pouvait rarement se produire lorsque les fonctions now(), today(), yesterday(), randConstant() sont utilisées. #7156 (Nikolai Kochetov)
  • Correction d’un problème où le délai d’expiration du keep alive HTTP était utilisé à la place de celui du keep alive TCP. #7351 (Vasily Nemkov)
  • Correction d’une erreur de segmentation dans groupBitmapOr (issue #7109). #7289 (Zhichang Yu)
  • Pour les vues matérialisées, le commit pour Kafka est effectué une fois toutes les données écrites. #7175 (Ivan)
  • Correction d’une valeur duration_ms erronée dans la table system.part_log. Elle était dix fois trop élevée. #7172 (Vladimir Chebotarev)
  • Correctif rapide pour résoudre un crash dans la table LIVE VIEW et réactiver tous les tests LIVE VIEW. #7201 (vzakaznikov)
  • Sérialisation correcte des valeurs NULL dans les index min/max des parts MergeTree. #7234 (Alexander Kuzmenkov)
  • Ne pas placer les colonnes virtuelles dans les métadonnées .sql lorsque la table est créée avec CREATE TABLE AS. #7183 (Ivan)
  • Correction d’une erreur de segmentation dans la requête ATTACH PART. #7185 (alesapin)
  • Correction d’un résultat erroné pour certaines requêtes provoqué par l’optimisation de sous-requêtes IN vides et de INNER/RIGHT JOIN vides. #7284 (Nikolai Kochetov)
  • Correction d’une erreur AddressSanitizer dans la méthode getHeader() de LIVE VIEW. #7271 (vzakaznikov)

Amélioration

  • Ajouter un message lorsqu’une attente queue_wait_max_ms se produit. #7390 (Azat Khuzhin)
  • Rendre le paramètre s3_min_upload_part_size configurable au niveau de la table. #7059 (Vladimir Chebotarev)
  • Vérifier TTL dans StorageFactory. #7304 (sundyli)
  • Compacter les blocs de gauche dans partial merge join (optimisation). #7122 (Artem Zuikov)
  • Ne pas autoriser les fonctions non déterministes dans les mutations des moteurs de table Replicated, car cela peut introduire des incohérences entre les répliques. #7247 (Alexander Kazakov)
  • Désactiver le memory tracker pendant la conversion de la stack trace d’une exception en chaîne. Cela peut éviter la perte des messages d’erreur de type Memory limit exceeded sur le serveur, qui provoquait l’exception Attempt to read after eof côté client. #7264 (Nikolai Kochetov)
  • Diverses améliorations du format. Résout #6033, #2633, #6611, #6742 #7215 (tavplubix)
  • ClickHouse ignore les valeurs du côté droit de l’opérateur IN qui ne peuvent pas être converties vers le type du côté gauche. Faire en sorte que cela fonctionne correctement pour les types composés — Array et Tuple. #7283 (Alexander Kuzmenkov)
  • Prise en charge des inégalités manquantes pour ASOF JOIN. Il est possible d’utiliser la variante less-or-equal ainsi que les variantes strictes greater et less pour la colonne ASOF dans la syntaxe ON. #7282 (Artem Zuikov)
  • Optimiser partial merge join. #7070 (Artem Zuikov)
  • Ne pas utiliser plus de 98K de mémoire dans les fonctions uniqCombined. #7236, #7270 (Azat Khuzhin)
  • Décharger sur disque les parts de la table de jointure de droite dans PartialMergeJoin (s’il n’y a pas assez de mémoire). Recharger les données si nécessaire. #7186 (Artem Zuikov)

Amélioration des performances

  • Accélérer joinGet avec des arguments constants en évitant de dupliquer les données. #7359 (Amos Bird)
  • Retourner immédiatement si la sous-requête est vide. #7007 (小路)
  • Optimiser l’analyse syntaxique des expressions SQL dans Values. #6781 (tavplubix)

Amélioration de la compilation, des tests et du packaging

  • Désactiver certaines bibliothèques tierces pour la compilation croisée pour Mac OS. #7101 (Ivan)
  • Ajouter l’édition de liens manquante avec PocoXML pour clickhouse_common_io. #7200 (Azat Khuzhin)
  • Accepter plusieurs arguments de filtre de test dans clickhouse-test. #7226 (Alexander Kuzmenkov)
  • Activer musl et jemalloc pour ARM. #7300 (Amos Bird)
  • Ajout du paramètre --client-option à clickhouse-test pour transmettre des paramètres supplémentaires au client. #7277 (Nikolai Kochetov)
  • Préserver les configurations existantes lors de la mise à niveau du paquet rpm. #7103 (filimonov)
  • Corriger les erreurs détectées par PVS. #7153 (Artem Zuikov)
  • Corriger la compilation pour Darwin. #7149 (Ivan)
  • Compatibilité avec glibc 2.29. #7142 (Amos Bird)
  • S’assurer que dh_clean ne touche pas à d’éventuels fichiers source. #7205 (Amos Bird)
  • Tenter d’éviter un conflit lors de la mise à jour depuis le rpm altinity : son fichier de configuration est empaqueté séparément dans clickhouse-server-common. #7073 (filimonov)
  • Optimiser certains fichiers d’en-tête pour accélérer les recompilations. #7212, #7231 (Alexander Kuzmenkov)
  • Ajouter des tests de performance pour Date et DateTime. #7332 (Vasily Nemkov)
  • Corriger certains tests qui contenaient des mutations non déterministes. #7132 (Alexander Kazakov)
  • Ajouter un build avec MemorySanitizer à la CI. #7066 (Alexander Kuzmenkov)
  • Éviter l’utilisation de valeurs non initialisées dans MetricsTransmitter. #7158 (Azat Khuzhin)
  • Corriger certains problèmes dans Fields détectés par MemorySanitizer. #7135, #7179 (Alexander Kuzmenkov), #7376 (Amos Bird)
  • Corriger un comportement indéfini dans murmurhash32. #7388 (Amos Bird)
  • Correction d’un comportement indéfini dans StoragesInfoStream. #7384 (tavplubix)
  • Correction de l’évaluation des expressions constantes pour les moteurs de base de données externes (MySQL, ODBC, JDBC). Dans les versions précédentes, cela ne fonctionnait pas avec plusieurs expressions constantes et ne fonctionnait pas du tout pour Date, DateTime et UUID. Cela corrige #7245 #7252 (alexey-milovidov)
  • Correction d’une erreur de data race détectée par ThreadSanitizer dans la LIVE VIEW lors de l’accès à la variable no_users_thread. #7353 (vzakaznikov)
  • Suppression des symboles malloc de libcommon #7134, #7065 (Amos Bird)
  • Ajout du flag global ENABLE_LIBRARIES pour désactiver toutes les bibliothèques. #7063 (proller)

Nettoyage du code

  • Généralisation du dépôt de configuration en préparation du DDL pour Dictionaries. #7155 (alesapin)
  • Parseur pour le DDL des dictionnaires, sans sémantique. #7209 (alesapin)
  • Scinder ParserCreateQuery en plusieurs parseurs plus petits. #7253 (alesapin)
  • Légère refactorisation et renommage autour des dictionnaires externes. #7111 (alesapin)
  • Refactorisation d’une partie du code en préparation du contrôle d’accès basé sur les rôles. #7235 (Vitaly Baranov)
  • Quelques améliorations dans le code de DatabaseOrdinary. #7086 (Nikita Vasilev)
  • Ne pas utiliser d’itérateurs dans les méthodes find() et emplace() des tables de hachage. #7026 (Alexander Kuzmenkov)
  • Correction de getMultipleValuesFromConfig lorsque le paramètre root n’est pas vide. #7374 (Mikhail Korotov)
  • Suppression de quelques duplications de code (TemporaryFile et TemporaryFileStream) #7166 (Artem Zuikov)
  • Légère amélioration de la lisibilité du code (MergeTreeData::getActiveContainingPart). #7361 (Vladimir Chebotarev)
  • Attendre toutes les tâches planifiées utilisant des objets locaux si ThreadPool::schedule(...) lève une exception. Renommer ThreadPool::schedule(...) en ThreadPool::scheduleOrThrowOnError(...) et corriger les commentaires pour indiquer clairement qu’elle peut lever une exception. #7350 (tavplubix)

Version de ClickHouse 19.15

Version de ClickHouse 19.15.4.10, 2019-10-31

Correction de bugs

  • Ajout de la prise en charge de SQL_TINYINT et SQL_BIGINT, et correction de la gestion du type de source de données SQL_FLOAT dans ODBC Bridge. #7491 (Denis Glazachev)
  • Possibilité d’avoir certaines parts sur le disque ou le volume de destination dans MOVE PARTITION. #7434 (Vladimir Chebotarev)
  • Correction des valeurs NULL dans les colonnes Nullable via ODBC-bridge. #7402 (Vasily Nemkov)
  • Correction de l’INSERT sur un nœud Distributed non local avec des colonnes MATERIALIZED. #7377 (Azat Khuzhin)
  • Correction de la fonction getMultipleValuesFromConfig. #7374 (Mikhail Korotov)
  • Correction d’un problème où le délai d’expiration du keep alive HTTP était utilisé à la place du délai d’expiration du keep alive TCP. #7351 (Vasily Nemkov)
  • Attente de la fin de tous les jobs en cas d’exception (corrige de rares segfaults). #7350 (tavplubix)
  • Ne pas pousser vers les MV lors d’un insert dans une Kafka table. #7265 (Ivan)
  • Désactivation du memory tracker pour la pile d’exceptions. #7264 (Nikolai Kochetov)
  • Correction d’un code incorrect dans la transformation de la query pour une base de données externe. #7252 (alexey-milovidov)
  • Évite l’utilisation de values non initialisées dans MetricsTransmitter. #7158 (Azat Khuzhin)
  • Ajout d’un exemple de config avec des macros pour les tests (alexey-milovidov)

Version de ClickHouse 19.15.3.6, 2019-10-09

Correction de bugs

  • Correction de bad_variant dans un dictionnaire haché. (alesapin)
  • Correction d’un bug entraînant une erreur de segmentation dans la requête ATTACH PART. (alesapin)
  • Correction du calcul du temps dans MergeTreeData. (Vladimir Chebotarev)
  • Commit explicite dans Kafka une fois l’écriture finalisée. #7175 (Ivan)
  • Sérialisation correcte des valeurs NULL dans les index min/max des parties MergeTree. #7234 (Alexander Kuzmenkov)

Version de ClickHouse 19.15.2.2, 2019-10-01

Nouvelle fonctionnalité

  • Stockage hiérarchisé : prise en charge de l’utilisation de plusieurs volumes de stockage pour les tables utilisant le moteur MergeTree. Il est possible de stocker les données récentes sur SSD et de déplacer automatiquement les anciennes données vers HDD. (exemple). #4918 (Igr) #6489 (alesapin)
  • Ajout de la fonction de table input pour lire les données entrantes dans une requête INSERT SELECT. #5450 (palasonic1) #6832 (Anton Popov)
  • Ajout d’un dictionary layout sparse_hashed, fonctionnellement équivalent au layout hashed, mais plus économe en mémoire. Il utilise environ deux fois moins de mémoire, au prix d’une récupération des valeurs plus lente. #6894 (Azat Khuzhin)
  • Mise en œuvre de la possibilité de définir une liste d’utilisateurs pour l’accès aux dictionnaires. Utilisable uniquement par la base de données actuellement connectée. #6907 (Guillaume Tassery)
  • Ajout de l’option LIMIT à la requête SHOW. #6944 (Philipp Malkovsky)
  • Ajout de la fonction bitmapSubsetLimit(bitmap, range_start, limit), qui renvoie un sous-ensemble des limit plus petites valeurs de l’ensemble qui ne sont pas inférieures à range_start. #6957 (Zhichang Yu)
  • Ajout des fonctions bitmapMin et bitmapMax. #6970 (Zhichang Yu)
  • Ajout de la fonction repeat en lien avec issue-6648 #6999 (flynn)

Fonctionnalité expérimentale

  • Implémente une variante de Merge Join (en mémoire) qui ne modifie pas le pipeline actuel. Le résultat est partiellement trié selon la clé de jointure. Définissez partial_merge_join = 1 pour utiliser cette fonctionnalité. Merge Join est encore en développement. #6940 (Artem Zuikov)
  • Ajoute le moteur S3 et la fonction de table. Cette fonctionnalité est encore en développement (pas encore de prise en charge de l’authentification). #5596 (Vladimir Chebotarev)

Amélioration

  • Chaque message lu depuis Kafka est inséré de manière atomique. Cela résout presque tous les problèmes connus du moteur Kafka. #6950 (Ivan)
  • Améliorations du basculement des requêtes distribuées. Le temps de reprise est réduit, et il est désormais configurable et visible dans system.clusters. #6399 (Vasily Nemkov)
  • Prise en charge directe des valeurs numériques pour les enums dans la section IN. #6766 #6941 (dimarub2000)
  • Prise en charge des redirections sur le moteur de stockage URL (optionnelle, désactivée par défaut). #6914 (maqroll)
  • Ajout d’un message d’information lorsqu’un client d’une version plus ancienne se connecte à un serveur. #6893 (Philipp Malkovsky)
  • Suppression de la limite maximale du délai d’attente de backoff pour l’envoi de données dans les tables Distributed #6895 (Azat Khuzhin)
  • Ajout de la possibilité d’envoyer des événements de profil (compteurs) avec des valeurs cumulées vers Graphite. Cela peut être activé via <events_cumulative> dans le config.xml du serveur. #6969 (Azat Khuzhin)
  • Ajout de la conversion automatique du type T en LowCardinality(T) lors de l’insertion de données dans une colonne de type LowCardinality(T) au format Native via HTTP. #6891 (Nikolai Kochetov)
  • Ajout de la possibilité d’utiliser la fonction hex sans recourir à reinterpretAsString pour Float32, Float64. #7024 (Mikhail Korotov)

Amélioration de la compilation, des tests et du packaging

  • Ajout de gdb-index au binaire clickhouse avec les informations de débogage. Cela accélérera le démarrage de gdb. #6947 (alesapin)
  • Accélération du packaging deb grâce à une version patchée de dpkg-deb qui utilise pigz. #6960 (alesapin)
  • Définir enable_fuzzing = 1 pour activer l’instrumentation libfuzzer sur l’ensemble du code du projet. #7042 (kyprizel)
  • Ajout d’un smoke test pour le split build dans la CI. #7061 (alesapin)
  • Ajout d’un build avec MemorySanitizer dans la CI. #7066 (Alexander Kuzmenkov)
  • Remplacement de libsparsehash par sparsehash-c11 #6965 (Azat Khuzhin)

Correction de bugs

  • Correction d’une baisse de performances de l’analyse des index sur des clés complexes dans de grandes tables. Cela corrige #6924. #7075 (alexey-milovidov)
  • Correction d’une erreur logique provoquant des segfaults lors d’une sélection sur un topic Kafka vide. #6909 (Ivan)
  • Correction d’une fermeture trop précoce de la connexion MySQL dans MySQLBlockInputStream.cpp. #6882 (Clément Rodriguez)
  • Rétablissement de la prise en charge de très anciens noyaux Linux (correction de #6841) #6853 (alexey-milovidov)
  • Correction d’une possible perte de données dans une requête insert select en cas de bloc vide dans le flux d’entrée. #6834 #6862 #6911 (Nikolai Kochetov)
  • Correction de la fonction АrrayEnumerateUniqRanked lorsque des tableaux vides sont passés dans les params #6928 (proller)
  • Correction des requêtes complexes avec ARRAY JOIN et des sous-requêtes globales. #6934 (Ivan)
  • Correction de l’erreur Unknown identifier dans ORDER BY et GROUP BY avec plusieurs JOIN #7022 (Artem Zuikov)
  • Correction d’un avertissement MSan lors de l’exécution d’une fonction avec un argument LowCardinality. #7062 (Nikolai Kochetov)

Changement non rétrocompatible

  • Le format de sérialisation des états de fonctions d’agrégation bitmap* a été modifié afin d’améliorer les performances. Les états sérialisés de bitmap* des versions précédentes ne peuvent pas être lus. #6908 (Zhichang Yu)

Version de ClickHouse 19.14

Version de ClickHouse 19.14.7.15, 2019-10-02

Correction de bug

  • Cette version contient également toutes les corrections de bugs de la version 19.11.12.69.
  • Correction de la compatibilité des requêtes distribuées entre la version 19.14 et les versions antérieures. Cela corrige #7068. #7069 (alexey-milovidov)

Version de ClickHouse 19.14.6.12, 2019-09-19

Correction de bug

  • Correction pour la fonction АrrayEnumerateUniqRanked lorsque les params contiennent des tableaux vides. #6928 (proller)
  • Correction du nom de la sous-requête dans les requêtes utilisant ARRAY JOIN et GLOBAL IN subquery avec alias. L’alias de la sous-requête est utilisé comme nom de la table externe lorsqu’il est spécifié. #6934 (Ivan)

Amélioration de la compilation, des tests et du packaging

  • Correction du test instable 00715_fetch_merged_or_mutated_part_zookeeper par sa réécriture en script shell, car il doit attendre l’application des mutations. #6977 (Alexander Kazakov)
  • Correction d’une défaillance UBSan et MemSan dans la fonction groupUniqArray avec un argument de tableau vide. Elle était due à l’insertion d’un PaddedPODArray vide dans la cellule zéro de la table de hachage, car le constructeur de la valeur de la cellule zéro n’était pas appelé. #6937 (Amos Bird)

Version de ClickHouse 19.14.3.3, 2019-09-10

Nouvelle fonctionnalité

  • Modificateur WITH FILL pour ORDER BY. (suite de #5069) #6610 (Anton Popov)
  • Modificateur WITH TIES pour LIMIT. (suite de #5069) #6610 (Anton Popov)
  • Interprète le littéral NULL non entre guillemets comme NULL (si le paramètre format_csv_unquoted_null_literal_as_null=1 est activé). Initialise les champs NULL avec leurs valeurs par défaut si le type de données du champ n’est pas Nullable (si le paramètre input_format_null_as_default=1 est activé). #5990 #6055 (tavplubix)
  • Prise en charge des caractères génériques dans les chemins des fonctions de table file et hdfs. Si le chemin contient des caractères génériques, la table sera en mode readonly. Exemple d’utilisation : select * from hdfs('hdfs://hdfs1:9000/some_dir/another_dir/*/file{0..9}{0..9}') et select * from file('some_dir/{some_file,another_file,yet_another}.tsv', 'TSV', 'value UInt32'). #6092 (Olga Khvostikova)
  • Nouvelle table system.metric_log, qui stocke les valeurs de system.events et system.metrics à l’intervalle de temps spécifié. #6363 #6467 (Nikita Mikhaylov) #6530 (alexey-milovidov)
  • Permet d’écrire les logs texte de ClickHouse dans la table system.text_log. #6037 #6103 (Nikita Mikhaylov) #6164 (alexey-milovidov)
  • Affiche les symboles privés dans les stack traces (via l’analyse des tables de symboles des fichiers ELF). Ajout d’informations sur le fichier et le numéro de ligne dans les stack traces si les informations de débogage sont présentes. Accélère la recherche des noms de symboles grâce à l’indexation des symboles présents dans le programme. Ajout de nouvelles fonctions SQL d’introspection : demangle et addressToLine. La fonction symbolizeAddress a été renommée en addressToSymbol pour plus de cohérence. La fonction addressToSymbol renverra un nom manglé pour des raisons de performance et vous devrez appliquer demangle. Ajout du paramètre allow_introspection_functions, désactivé par défaut. #6201 (alexey-milovidov)
  • Fonction de table values (son nom est insensible à la casse). Elle permet de lire depuis la liste VALUES proposée dans #5984. Exemple : SELECT * FROM VALUES('a UInt64, s String', (1, 'one'), (2, 'two'), (3, 'three')). #6217. #6209 (dimarub2000)
  • Ajout de la possibilité de modifier les paramètres de stockage. Syntaxe : ALTER TABLE <table> MODIFY SETTING <setting> = <value>. #6366 #6669 #6685 (alesapin)
  • Prise en charge de la suppression des parties détachées. Syntaxe : ALTER TABLE <table_name> DROP DETACHED PART '<part_id>'. #6158 (tavplubix)
  • Contraintes de table. Permet d’ajouter une contrainte à la définition de la table, qui sera vérifiée lors de l’insertion. #5273 (Gleb Novikov) #6652 (alexey-milovidov)
  • Prise en charge des vues matérialisées en cascade. #6324 (Amos Bird)
  • Activation par défaut du profileur de requêtes afin d’échantillonner chaque thread d’exécution de requête une fois par seconde. #6283 (alexey-milovidov)
  • Format d’entrée ORC. #6454 #6703 (akonyaev90)
  • Ajout de deux nouvelles fonctions : sigmoid et tanh (utiles pour les applications de machine learning). #6254 (alexey-milovidov)
  • Fonctions hasToken(haystack, token), hasTokenCaseInsensitive(haystack, token) pour vérifier si le token donné est présent dans la chaîne. Un token est une sous-chaîne de longueur maximale comprise entre deux caractères ASCII non alphanumériques (ou les limites de la chaîne). Le token doit être une chaîne constante. Pris en charge par la spécialisation d’index tokenbf_v1. #6596, #6662 (Vasily Nemkov)
  • Nouvelle fonction neighbor(value, offset[, default_value]). Permet d’accéder à la valeur précédente/suivante au sein d’une colonne dans un bloc de données. #5925 (Alex Krash) 6685365ab8c5b74f9650492c88a012596eb1b0c6 341e2e4587a18065c2da1ca888c73389f48ce36c Alexey Milovidov
  • Création d’une fonction currentUser(), qui renvoie l’identifiant de l’utilisateur authentifié. Ajout de l’alias user() pour la compatibilité avec MySQL. #6470 (Alex Krash)
  • Nouvelles fonctions d’agrégation quantilesExactInclusive et quantilesExactExclusive, proposées dans #5885. #6477 (dimarub2000)
  • Fonction bitmapRange(bitmap, range_begin, range_end) qui renvoie un nouvel ensemble avec la plage spécifiée (sans inclure range_end). #6314 (Zhichang Yu)
  • Fonction geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision) qui crée un tableau de chaînes geohash de longueur precision couvrant la zone indiquée. #6127 (Vasily Nemkov)
  • Ajout de la prise en charge des requêtes INSERT avec les tables Kafka. #6012 (Ivan)
  • Ajout de la prise en charge des colonnes virtuelles _partition et _timestamp pour le moteur Kafka. #6400 (Ivan)
  • Possibilité de supprimer les données sensibles de query_log, des journaux du serveur et de la liste des processus à l’aide de règles basées sur des expressions régulières. #5710 (filimonov)

Fonctionnalité expérimentale

  • Format de données d’entrée et de sortie Template. Il permet de définir une chaîne de format personnalisée en entrée et en sortie. #4354 #6727 (tavplubix)
  • Implémentation des tables LIVE VIEW, initialement proposées dans #2898, préparées dans #3925, puis mises à jour dans #5541. Voir #5541 pour une description détaillée. #5541 (vzakaznikov) #6425 (Nikolai Kochetov) #6656 (vzakaznikov) Notez que la fonctionnalité LIVE VIEW pourra être supprimée dans les prochaines versions.

Correction de bug

  • Cette version contient également tous les correctifs de bugs des versions 19.13 et 19.11.
  • Correction d’un segfault lorsque la table comporte des index de saut et qu’une fusion verticale se produit. #6723 (alesapin)
  • Correction du TTL par colonne avec des valeurs par défaut non triviales. Auparavant, en cas de fusion TTL forcée avec la requête OPTIMIZE ... FINAL, les valeurs expirées étaient remplacées par les valeurs par défaut du type au lieu des valeurs par défaut de colonne définies par l’utilisateur. #6796 (Anton Popov)
  • Correction d’un problème de duplication des messages Kafka lors d’un redémarrage normal du serveur. #6597 (Ivan)
  • Correction d’une boucle infinie lors de la lecture des messages Kafka. Ne met plus du tout en pause/ne reprend plus le consumer au niveau de la subscription, sinon il peut rester en pause indéfiniment dans certains scénarios. #6354 (Ivan)
  • Correction de l’exception Key expression contains comparison between inconvertible types dans la fonction bitmapContains. #6136 #6146 #6156 (dimarub2000)
  • Correction d’un segfault avec optimize_skip_unused_shards activé et une clé de sharding manquante. #6384 (Anton Popov)
  • Correction d’un code erroné dans les mutations pouvant entraîner une corruption mémoire. Correction d’un segfault lors de la lecture à l’adresse 0x14c0, qui pouvait se produire à cause de DROP TABLE et SELECT concurrents sur system.parts ou system.parts_columns. Correction d’une race condition lors de la préparation des requêtes de mutation. Correction d’un interblocage causé par OPTIMIZE sur des tables Replicated et des opérations de modification concurrentes comme des ALTER. #6514 (alexey-milovidov)
  • Suppression du logging verbeux superflu dans l’interface MySQL #6389 (alexey-milovidov)
  • Rétablissement de la prise en charge de l’analyse des paramètres booléens à partir de ‘true’ et ‘false’ dans le fichier de configuration. #6278 (alesapin)
  • Correction d’un plantage dans les fonctions quantile et median sur Nullable(Decimal128). #6378 (Artem Zuikov)
  • Correction d’un résultat potentiellement incomplet renvoyé par une requête SELECT avec une condition WHERE sur une clé primaire contenant une conversion vers le type Float. Cela était dû à une vérification incorrecte de la monotonie dans la fonction toFloat. #6248 #6374 (dimarub2000)
  • Vérification du paramètre max_expanded_ast_elements pour les mutations. Suppression des mutations après TRUNCATE TABLE. #6205 (Winter Zhang)
  • Correction des résultats de JOIN pour les colonnes de clé lorsqu’elles sont utilisées avec join_use_nulls. Utilise des NULL au lieu des valeurs par défaut des colonnes. #6249 (Artem Zuikov)
  • Correction des index de saut avec fusion verticale et alter. Correction de l’exception Bad size of marks file. #6594 #6713 (alesapin)
  • Corrige un crash rare dans ALTER MODIFY COLUMN et lors d’une fusion verticale lorsqu’une des parts fusionnées/modifiées est vide (0 ligne) #6746 #6780 (alesapin)
  • Corrige un bug dans la conversion des types LowCardinality dans AggregateFunctionFactory. Cela corrige #6257. #6281 (Nikolai Kochetov)
  • Corrige un comportement incorrect et de possibles segfaults dans les fonctions agrégées topK et topKWeighted. #6404 (Anton Popov)
  • Corrige du code non sûr autour de la fonction getIdentifier. #6401 #6409 (alexey-milovidov)
  • Corrige un bug dans le MySQL wire protocol (utilisé lors de la connexion à ClickHouse depuis un client MySQL). Causé par un heap buffer overflow dans PacketPayloadWriteBuffer. #6212 (Yuriy Baranov)
  • Corrige une fuite mémoire dans la fonction bitmapSubsetInRange. #6819 (Zhichang Yu)
  • Corrige un bug rare lorsqu’une mutation est exécutée après un changement de granularité. #6816 (alesapin)
  • Autorise par défaut les messages protobuf avec tous les champs. #6132 (Vitaly Baranov)
  • Corrige un bug dans la fonction nullIf lorsqu’un argument NULL est passé en second argument. #6446 (Guillaume Tassery)
  • Corrige un bug rare d’allocation/désallocation mémoire incorrecte dans les dictionnaires de cache à clé complexe avec des champs de type chaîne, ce qui entraîne une consommation mémoire infinie (semblable à une fuite mémoire). Le bug se reproduit lorsque la taille de la chaîne est une puissance de deux à partir de huit (8, 16, 32, etc.). #6447 (alesapin)
  • Corrige l’encodage Gorilla sur de petites séquences, ce qui provoquait l’exception Cannot write after end of buffer. #6398 #6444 (Vasily Nemkov)
  • Autorise l’utilisation de types non Nullable dans les JOINs avec join_use_nulls activé. #6705 (Artem Zuikov)
  • Désactive les substitutions Poco::AbstractConfiguration dans les requêtes de clickhouse-client. #6706 (alexey-milovidov)
  • Évite un interblocage dans REPLACE PARTITION. #6677 (alexey-milovidov)
  • L’utilisation de arrayReduce avec des arguments constants peut entraîner un segfault. #6242 #6326 (alexey-milovidov)
  • Corrige les parts incohérentes pouvant apparaître si une réplique a été restaurée après DROP PARTITION. #6522 #6523 (tavplubix)
  • Correction d’un blocage dans la fonction JSONExtractRaw. #6195 #6198 (alexey-milovidov)
  • Corrige un bug de sérialisation incorrecte des index de saut, ainsi qu’un bug d’agrégation avec granularité adaptative. #6594. #6748 (alesapin)
  • Corrige les modificateurs WITH ROLLUP et WITH CUBE de GROUP BY avec agrégation à deux niveaux. #6225 (Anton Popov)
  • Corrige un bug lors de l’écriture des marks des index secondaires avec granularité adaptative. #6126 (alesapin)
  • Corrige l’ordre d’initialisation au démarrage du serveur. Comme StorageMergeTree::background_task_handle est initialisé dans startup(), MergeTreeBlockOutputStream::write() peut tenter de l’utiliser avant son initialisation. Il suffit donc de vérifier qu’il est bien initialisé. #6080 (Ivan)
  • Effacement du tampon de données de l’opération de lecture précédente, qui s’était terminée par une erreur. #6026 (Nikolay)
  • Corrige un bug lors de l’activation de la granularité adaptative pendant la création d’une nouvelle réplique pour une table Replicated*MergeTree. #6394 #6452 (alesapin)
  • Correction d’un crash possible au démarrage du serveur lorsqu’une exception survenait dans libunwind pendant une exception, lors de l’accès à la structure ThreadStatus non initialisée. #6456 (Nikita Mikhaylov)
  • Corrige un crash dans la fonction yandexConsistentHash. Détecté par un test de fuzzing. #6304 #6305 (alexey-milovidov)
  • Correction d’un problème pouvant bloquer des requêtes lorsque le serveur est surchargé et que le pool global de threads est presque saturé. Le problème a davantage de chances de se produire sur des clusters comportant un grand nombre de shards (des centaines), car les requêtes distribuées allouent un thread par connection à chaque shard. Par exemple, ce problème peut être reproduit si un cluster de 330 shards traite 30 requêtes distribuées concurrentes. Ce problème affecte toutes les versions à partir de la 19.2. #6301 (alexey-milovidov)
  • Correction de la logique de la fonction arrayEnumerateUniqRanked. #6423 (alexey-milovidov)
  • Corrige un segfault lors du décodage de la table des symboles. #6603 (Amos Bird)
  • Correction d’une exception non pertinente lors du cast de LowCardinality(Nullable) vers une colonne non Nullable lorsqu’elle ne contient pas de NULL (par ex. dans une requête comme SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String). #6094 #6119 (Nikolai Kochetov)
  • Suppression des guillemets superflus autour de la description dans la table system.settings. #6696 #6699 (alexey-milovidov)
  • Évite un interblocage possible lors d’un TRUNCATE sur une table Replicated. #6695 (alexey-milovidov)
  • Corrige la lecture selon l’ordre de la clé de tri. #6189 (Anton Popov)
  • Corrige la requête ALTER TABLE ... UPDATE pour les tables avec enable_mixed_granularity_parts=1. #6543 (alesapin)
  • Corrige le bug introduit par #4405 (depuis 19.4.0). Il se reproduit dans les requêtes sur des tables Distributed basées sur des tables MergeTree lorsqu’aucune colonne n’est demandée (SELECT 1). #6236 (alesapin)
  • Correction d’un dépassement de capacité dans la division entière d’un type signé par un type non signé. Le comportement était exactement le même qu’en C ou en C++ (règles de promotion des entiers), ce qui peut être surprenant. Veuillez noter que le dépassement de capacité reste possible lors de la division d’une grande valeur signée par une grande valeur non signée, ou inversement (mais ce cas est moins courant). Le problème existait dans toutes les versions du serveur. #6214 #6233 (alexey-milovidov)
  • Limite le temps de sommeil maximal pour la limitation de débit lorsque max_execution_speed ou max_execution_speed_bytes est défini. Corrige les faux messages d’erreur comme Estimated query execution time (inf seconds) is too long. #5547 #6232 (alexey-milovidov)
  • Correction de problèmes liés à l’utilisation des colonnes MATERIALIZED et des alias dans MaterializedView. #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov)
  • Corrige le comportement de FormatFactory pour les flux d’entrée qui ne sont pas implémentés comme processeur. #6495 (Nikolai Kochetov)
  • Corrige une faute de frappe. #6631 (Alex Ryndin)
  • Faute de frappe dans le message d’erreur (is -> are). #6839 (Denis Zhuravlev)
  • Correction d’une erreur lors de l’analyse de la liste de colonnes à partir d’une chaîne si le type contenait une virgule (ce problème concernait les stockages File, URL, HDFS) #6217. #6209 (dimarub2000)

Correctif de sécurité

  • Cette version contient également tous les correctifs de bugs et de sécurité des versions 19.13 et 19.11.
  • Correction de la possibilité qu’une requête spécialement conçue provoque le plantage du serveur en raison d’un débordement de pile dans l’analyseur SQL. Correction de la possibilité de débordement de pile dans les tables Merge et Distributed, les vues matérialisées et les conditions de sécurité au niveau des lignes comportant des sous-requêtes. #6433 (alexey-milovidov)

Amélioration

  • Implémentation correcte de la logique ternaire pour AND/OR. #6048 (Alexander Kazakov)
  • Désormais, les valeurs et les lignes dont le TTL a expiré seront supprimées après une requête OPTIMIZE ... FINAL à partir d’anciennes parts sans informations TTL ou avec des informations TTL obsolètes, par exemple après une requête ALTER ... MODIFY TTL. Ajout des requêtes SYSTEM STOP/START TTL MERGES pour interdire/autoriser l’attribution de merges avec TTL et filtrer les valeurs expirées dans tous les merges. #6274 (Anton Popov)
  • Possibilité de modifier l’emplacement du fichier d’historique de ClickHouse pour le client à l’aide de la variable d’environnement CLICKHOUSE_HISTORY_FILE. #6840 (filimonov)
  • Suppression du flag dry_run de InterpreterSelectQuery. … #6375 (Nikolai Kochetov)
  • Prise en charge de ASOF JOIN avec la clause ON. #6211 (Artem Zuikov)
  • Meilleure prise en charge des skip indexes pour les mutations et la réplication. Prise en charge de la requête MATERIALIZE/CLEAR INDEX ... IN PARTITION. UPDATE x = x recalcule tous les index qui utilisent la colonne x. #5053 (Nikita Vasilev)
  • Autorisation d’ATTACH sur les live views (par exemple au démarrage du serveur), indépendamment du paramètre allow_experimental_live_view. #6754 (alexey-milovidov)
  • Pour les stack traces recueillies par le query profiler, ne pas inclure les frames de pile générées par le query profiler lui-même. #6250 (alexey-milovidov)
  • Désormais, les table functions values, file, url, hdfs prennent en charge les colonnes ALIAS. #6255 (alexey-milovidov)
  • Lever une exception si le fichier config.d n’a pas le même élément racine que le fichier de configuration. #6123 (dimarub2000)
  • Afficher des informations supplémentaires dans le message d’exception pour no space left on device. #6182, #6252 #6352 (tavplubix)
  • Lors de la détermination des shards d’une table Distributed à couvrir par une requête de lecture (pour optimize_skip_unused_shards = 1), ClickHouse vérifie désormais les conditions des clauses prewhere et where de l’instruction select. #6521 (Alexander Kazakov)
  • SIMDJSON activé pour les machines sans AVX2 mais avec SSE 4.2 et le jeu d’instructions PCLMUL. #6285 #6320 (alexey-milovidov)
  • ClickHouse peut fonctionner sur des systèmes de fichiers sans prise en charge de O_DIRECT (comme ZFS et BtrFS) sans réglage supplémentaire. #4449 #6730 (alexey-milovidov)
  • Prise en charge du push down de prédicats pour la sous-requête FINAL. #6120 (TCeason) #6162 (alexey-milovidov)
  • Amélioration de l’extraction des clés JOIN ON #6131 (Artem Zuikov)
  • Mise à jour de SIMDJSON. #6285. #6306 (alexey-milovidov)
  • Optimisation de la sélection de la plus petite colonne pour la requête SELECT count(). #6344 (Amos Bird)
  • Ajout du paramètre strict dans windowFunnel(). Lorsque strict est défini, windowFunnel() applique les conditions uniquement aux valeurs uniques. #6548 (achimbab)
  • Interface plus sûre pour mysqlxx::Pool. #6150 (avasiliev)
  • La longueur des lignes d’options lors de l’exécution avec l’option --help correspond désormais à la taille du terminal. #6590 (dimarub2000)
  • Désactivation de l’optimisation “read in order” pour l’agrégation sans clés. #6599 (Anton Popov)
  • Le code de statut HTTP pour les codes d’erreur INCORRECT_DATA et TYPE_MISMATCH a été modifié, passant de 500 Internal Server Error par défaut à 400 Bad Request. #6271 (Alexander Rodin)
  • Déplacement de l’objet Join de ExpressionAction vers AnalyzedJoin. ExpressionAnalyzer et ExpressionAction ne connaissent plus la classe Join. Sa logique est désormais masquée derrière l’interface AnalyzedJoin. #6801 (Artem Zuikov)
  • Correction d’un interblocage possible des requêtes distribuées lorsque l’un des shards est localhost mais que la requête est envoyée via une connexion réseau. #6759 (alexey-milovidov)
  • Modification de la sémantique de RENAME sur plusieurs tables afin d’éviter d’éventuels interblocages. #6757. #6756 (alexey-milovidov)
  • Réécriture du serveur de compatibilité MySQL pour éviter de charger en mémoire l’intégralité du payload du paquet. Réduction de la consommation mémoire pour chaque connexion à environ 2 * DBMS_DEFAULT_BUFFER_SIZE (tampons de lecture/écriture). #5811 (Yuriy Baranov)
  • Déplacement de la logique d’interprétation des alias d’AST hors du parseur, qui n’a pas besoin de connaître la sémantique des requêtes. #6108 (Artem Zuikov)
  • Parsing légèrement plus sûr de NamesAndTypesList. #6408. #6410 (alexey-milovidov)
  • clickhouse-copier : autorise l’utilisation de where_condition depuis la configuration avec l’alias partition_key dans la requête de vérification de l’existence d’une partition (auparavant, il n’était utilisé que dans les requêtes de lecture de données). #6577 (proller)
  • Ajout d’un argument de message facultatif dans throwIf. (#5772) #6329 (Vdimir)
  • L’exception du serveur reçue lors de l’envoi des données d’insertion est désormais également traitée par le client. #5891 #6711 (dimarub2000)
  • Ajout de la métrique DistributedFilesToInsert, qui affiche le nombre total de fichiers du système de fichiers sélectionnés pour être envoyés à des serveurs distants par les tables Distributed. Ce nombre est additionné sur l’ensemble des shards. #6600 (alexey-milovidov)
  • Déplacement de la majeure partie de la logique de préparation des JOIN de ExpressionAction/ExpressionAnalyzer vers AnalyzedJoin. #6785 (Artem Zuikov)
  • Correction de l’avertissement TSan ‘lock-order-inversion’. #6740 (Vasily Nemkov)
  • Messages d’information améliorés concernant l’absence de capabilities Linux. Journalisation des erreurs fatales avec le niveau “fatal”, ce qui facilitera leur recherche dans system.text_log. #6441 (alexey-milovidov)
  • Lors de l’activation du vidage des données temporaires sur le disque pour limiter l’utilisation mémoire pendant GROUP BY et ORDER BY, l’espace disque libre n’était pas vérifié. Le correctif ajoute un nouveau paramètre min_free_disk_space ; lorsque l’espace disque libre est inférieur au seuil, la requête s’arrête et lève ErrorCodes::NOT_ENOUGH_SPACE. #6678 (Weiqing Xu) #6691 (alexey-milovidov)
  • Suppression du rwlock récursif par thread. Cela n’a pas de sens, car les threads sont réutilisés entre les requêtes. Une requête SELECT peut acquérir un verrou dans un thread, le conserver depuis un autre thread, puis se terminer dans le premier thread. Pendant ce temps, le premier thread peut être réutilisé par une requête DROP. Cela entraînera de faux messages “Attempt to acquire exclusive lock recursively”. #6771 (alexey-milovidov)
  • Scission de ExpressionAnalyzer.appendJoin(). Prépare le terrain dans ExpressionAnalyzer pour MergeJoin. #6524 (Artem Zuikov)
  • Ajout du plugin d’authentification mysql_native_password au serveur de compatibilité MySQL. #6194 (Yuriy Baranov)
  • Réduction du nombre d’appels à clock_gettime ; correction de la compatibilité ABI entre les versions debug et release dans Allocator (problème mineur). #6197 (alexey-milovidov)
  • Déplacement de collectUsedColumns de ExpressionAnalyzer vers SyntaxAnalyzer. SyntaxAnalyzer génère désormais lui-même required_source_columns. #6416 (Artem Zuikov)
  • Ajout du paramètre joined_subquery_requires_alias pour exiger des alias pour les sous-requêtes et les fonctions de table dans FROM lorsque plusieurs tables sont présentes (c.-à-d. pour les requêtes avec JOIN). #6733 (Artem Zuikov)
  • Extraction de la classe GetAggregatesVisitor depuis ExpressionAnalyzer. #6458 (Artem Zuikov)
  • system.query_log : modification du type de données de la colonne type en Enum. #6265 (Nikita Mikhaylov)
  • Liaison statique du plugin d’authentication sha256_password. #6512 (Yuriy Baranov)
  • Évite une dépendance supplémentaire pour que le paramètre compile fonctionne. Dans les versions précédentes, l’utilisateur pouvait obtenir des errors telles que cannot open crti.o, unable to find library -lc, etc. #6309 (alexey-milovidov)
  • Validation renforcée des entrées pouvant provenir d’une replica malveillante. #6303 (alexey-milovidov)
  • Le fichier clickhouse-obfuscator est désormais disponible dans le paquet clickhouse-client. Dans les versions précédentes, il était disponible sous la forme clickhouse obfuscator (avec un espace). #5816 #6609 (dimarub2000)
  • Correction d’un interblocage lorsqu’au moins deux requêtes lisent au moins deux tables dans un ordre différent et qu’une autre requête effectue une opération DDL sur l’une de ces tables. Correction d’un autre interblocage très rare. #6764 (alexey-milovidov)
  • Ajout de la colonne os_thread_ids à system.processes et system.query_log pour améliorer les possibilités de Débogage. #6763 (alexey-milovidov)
  • Solution de contournement pour des bogues de l’extension PHP mysqlnd qui surviennent lorsque sha256_password est utilisé comme plugin d’authentication par défaut (décrit dans #6031). #6113 (Yuriy Baranov)
  • Suppression d’un emplacement inutile contenant des colonnes dont la nullabilité a été modifiée. #6693 (Artem Zuikov)
  • Définition de la valeur par défaut de queue_max_wait_ms à zéro, car la valeur actuelle (cinq secondes) n’a pas de sens. Ce paramètre n’est utile que dans de rares cas. Ajout des paramètres replace_running_query_max_wait_ms, kafka_max_wait_ms et connection_pool_max_wait_ms pour lever l’ambiguïté. #6692 (alexey-milovidov)
  • Extraction de SelectQueryExpressionAnalyzer depuis ExpressionAnalyzer. Ce dernier est conservé pour les requêtes non SELECT. #6499 (Artem Zuikov)
  • Suppression des doublons dans les formats d’entrée et de sortie. #6239 (Nikolai Kochetov)
  • Autorise l’utilisateur à redéfinir les paramètres poll_interval et idle_connection_timeout pour la connexion. #6230 (alexey-milovidov)
  • MergeTree dispose désormais d’une option supplémentaire ttl_only_drop_parts (désactivée par défaut) pour éviter la purge partielle des parts, afin qu’elles soient entièrement supprimées lorsque toutes les lignes d’une part ont expiré. #6191 (Sergi Vladykin)
  • Vérification des types pour les fonctions d’index Set. Une exception est levée si la fonction reçoit un type incorrect. Cela corrige le test de fuzzing avec UBSan. #6511 (Nikita Vasilev)

Amélioration des performances

  • Optimise les requêtes avec la clause ORDER BY expressions, lorsque expressions partage un préfixe avec la clé de tri dans les tables MergeTree. Cette optimisation est contrôlée par le paramètre optimize_read_in_order. #6054 #6629 (Anton Popov)
  • Permet d’utiliser plusieurs threads lors du chargement et de la suppression des parts. #6372 #6074 #6438 (alexey-milovidov)
  • Implémentation d’une variante batch pour la mise à jour des états de fonctions d’agrégation. Cela peut apporter des gains de performance. #6435 (alexey-milovidov)
  • Utilisation de la bibliothèque FastOps pour les fonctions exp, log, sigmoid, tanh. FastOps est une bibliothèque rapide de calcul vectoriel de Michael Parakhin (CTO de Yandex). Les performances des fonctions exp et log ont été améliorées de plus d’un facteur 6. Les fonctions exp et log avec un argument Float32 renverront Float32 (dans les versions précédentes, elles renvoyaient toujours Float64). Désormais, exp(nan) peut renvoyer inf. Le résultat des fonctions exp et log peut ne pas être le nombre représentable par la machine le plus proche de la valeur réelle. #6254 (alexey-milovidov) Utilisation de la variante de Danila Kutenin pour faire fonctionner FastOps #6317 (alexey-milovidov)
  • Désactive l’optimisation des clés consécutives pour UInt8/16. #6298 #6701 (akuzm)
  • Améliore les performances de la bibliothèque simdjson en supprimant l’allocation dynamique dans ParsedJson::Iterator. #6479 (Vitaly Baranov)
  • Précharge les pages lors de l’allocation mémoire avec mmap(). #6667 (akuzm)
  • Corrige un problème de performances dans la comparaison de Decimal. #6380 (Artem Zuikov)

Amélioration de la compilation, des tests et du packaging

  • Suppression de Compiler (instanciation de modèles à l’exécution), car ses performances sont désormais inférieures aux nôtres. #6646 (alexey-milovidov)
  • Ajout d’un test de performance pour montrer de façon plus isolée la dégradation des performances avec gcc-9. #6302 (alexey-milovidov)
  • Ajout de la fonction de table numbers_mt, version multithread de numbers. Mise à jour des tests de performance avec des fonctions de hachage. #6554 (Nikolai Kochetov)
  • Mode de comparaison dans clickhouse-benchmark #6220 #6343 (dimarub2000)
  • Amélioration, dans la mesure du possible, de l’affichage des traces de pile. Ajout également de SIGPROF comme signal de débogage pour afficher la trace de pile d’un thread en cours d’exécution. #6529 (alexey-milovidov)
  • Chaque fonction dans son propre fichier, partie 10. #6321 (alexey-milovidov)
  • Suppression de la constante dupliquée TABLE_IS_READ_ONLY. #6566 (filimonov)
  • Modifications de formatage pour la PR StringHashMap #5417. #6700 (akuzm)
  • Amélioration de la sous-requête pour la création de jointures dans ExpressionAnalyzer. #6824 (Artem Zuikov)
  • Suppression d’une condition redondante (détectée par PVS Studio). #6775 (akuzm)
  • Séparation de l’interface de table de hachage pour ReverseIndex. #6672 (akuzm)
  • Refactorisation des paramètres. #6689 (alesapin)
  • Ajout de commentaires pour les fonctions d’index set. #6319 (Nikita Vasilev)
  • Augmentation du score OOM dans la version de débogage sous Linux. #6152 (akuzm)
  • HDFS HA fonctionne désormais dans le build de débogage. #6650 (Weiqing Xu)
  • Ajout d’un test à transform_query_for_external_database. #6388 (alexey-milovidov)
  • Ajout d’un test pour plusieurs vues matérialisées sur une table Kafka. #6509 (Ivan)
  • Mise en place d’un meilleur schéma de build. #6500 (Ivan)
  • Correction de l’intégration test_external_dictionaries lorsqu’elle était exécutée sous un utilisateur non root. #6507 (Nikolai Kochetov)
  • Le bogue se reproduit lorsque la taille totale des paquets écrits dépasse DBMS_DEFAULT_BUFFER_SIZE. #6204 (Yuriy Baranov)
  • Ajout d’un test pour la condition de concurrence sur la table RENAME #6752 (alexey-milovidov)
  • Évite une data race sur Settings dans KILL QUERY. #6753 (alexey-milovidov)
  • Ajout d’un test d’intégration pour la gestion des erreurs dans un dictionnaire de type cache. #6755 (Vitaly Baranov)
  • Désactivation de l’analyse des fichiers objet ELF sur Mac OS, car cela n’a pas de sens. #6578 (alexey-milovidov)
  • Tentative d’amélioration du générateur de changelog. #6327 (alexey-milovidov)
  • Ajout de l’option -Wshadow à GCC. #6325 (kreuzerkrieg)
  • Suppression du code obsolète de prise en charge de mimalloc. #6715 (alexey-milovidov)
  • zlib-ng détermine les fonctionnalités x86 et enregistre ces informations dans des variables globales. Cela se fait lors de l’appel à defalteInit, qui peut être effectué simultanément par plusieurs threads. Pour éviter les écritures concurrentes, cette opération est désormais effectuée au démarrage de la bibliothèque. #6141 (akuzm)
  • Test de régression pour un bogue dans une jointure, corrigé dans #5192. #6147 (Bakhtiyor Ruziev)
  • Correction d’un rapport MSan. #6144 (alexey-milovidov)
  • Correction d’un test TTL instable. #6782 (Anton Popov)
  • Correction d’une fausse data race dans le champ MergeTreeDataPart::is_frozen. #6583 (alexey-milovidov)
  • Correction des timeouts dans le test de fuzzing. Dans la version précédente, il détectait à tort un blocage dans la requête SELECT * FROM numbers_mt(gccMurmurHash('')). #6582 (alexey-milovidov)
  • Ajout de vérifications de débogage pour les static_cast de colonnes. #6581 (alexey-milovidov)
  • Prise en charge d’Oracle Linux dans les paquets RPM officiels. #6356 #6585 (alexey-milovidov)
  • Changement du type des tests de performance JSON de once à loop. #6536 (Nikolai Kochetov)
  • odbc-bridge.cpp définit main(), il ne doit donc pas être inclus dans clickhouse-lib. #6538 (Orivej Desh)
  • Test de plantage dans FULL|RIGHT JOIN avec des valeurs NULL dans les clés de la table de droite. #6362 (Artem Zuikov)
  • Ajout d’un test sur la limite d’expansion des alias, par précaution. #6442 (alexey-milovidov)
  • Remplacement de boost::filesystem par std::filesystem lorsque c’était pertinent. #6253 #6385 (alexey-milovidov)
  • Ajout des paquets RPM au site web. #6251 (alexey-milovidov)
  • Ajout d’un test pour l’exception Unknown identifier corrigée dans la section IN. #6708 (Artem Zuikov)
  • Simplification de shared_ptr_helper, car il était difficile à comprendre. #6675 (alexey-milovidov)
  • Ajout de tests de performance pour les codecs Gorilla et DoubleDelta corrigés. #6179 (Vasily Nemkov)
  • Division du test d’intégration test_dictionaries en 4 tests distincts. #6776 (Vitaly Baranov)
  • Correction d’un avertissement PVS-Studio dans PipelineExecutor. #6777 (Nikolai Kochetov)
  • Autorisation d’utiliser la source de dictionnaire library avec ASan. #6482 (alexey-milovidov)
  • Ajout d’une option pour générer le changelog à partir d’une liste de PR. #6350 (alexey-milovidov)
  • Verrouillage du moteur de stockage TinyLog pendant la lecture. #6226 (akuzm)
  • Vérification des liens symboliques cassés dans la CI. #6634 (alexey-milovidov)
  • Augmentation du timeout pour le test “stack overflow”, car il peut être très long dans une build de débogage. #6637 (alexey-milovidov)
  • Ajout d’une vérification des doubles espaces. #6643 (alexey-milovidov)
  • Correction du suivi mémoire de new/delete lors d’une build avec des sanitizers. Le suivi reste imprécis. Cela permet seulement d’éviter les exceptions de limite mémoire dans les tests. #6450 (Artem Zuikov)
  • Réactivation de la vérification des symboles non définis lors de l’édition des liens. #6453 (Ivan)
  • Éviter de reconstruire hyperscan chaque jour. #6307 (alexey-milovidov)
  • Correction d’un signalement UBSan dans ProtobufWriter. #6163 (alexey-milovidov)
  • Ne plus autoriser l’utilisation du profileur de requêtes avec les sanitizers, car ils ne sont pas compatibles. #6769 (alexey-milovidov)
  • Ajout d’un test pour recharger un dictionnaire après un échec sur temporisation. #6114 (Vitaly Baranov)
  • Correction d’une incohérence dans le type d’argument de PipelineExecutor::prepareProcessor. #6494 (Nikolai Kochetov)
  • Ajout d’un test pour les URI invalides. #6493 (alexey-milovidov)
  • Ajout de vérifications supplémentaires à la fonction CAST. Cela devrait fournir plus d’informations sur la segmentation fault dans le test de fuzzing. #6346 (Nikolai Kochetov)
  • Ajout de la prise en charge de gcc-9 au conteneur docker/builder qui construit l’image localement. #6333 (Gleb Novikov)
  • Test de la clé primaire avec LowCardinality(String). #5044 #6219 (dimarub2000)
  • Correction des tests affectés par la lenteur de l’affichage des stack traces. #6315 (alexey-milovidov)
  • Ajout d’un cas de test pour le crash dans groupUniqArray corrigé dans #6029. #4402 #6129 (akuzm)
  • Correction des tests de mutations d’index. #6645 (Nikita Vasilev)
  • Dans le test de performance, ne pas lire le query log pour les requêtes qui n’ont pas été exécutées. #6427 (akuzm)
  • Une vue matérialisée peut désormais être créée avec n’importe quel type LowCardinality, indépendamment du paramètre concernant les types LowCardinality suspects. #6428 (Olga Khvostikova)
  • Mise à jour des tests pour le paramètre send_logs_level. #6207 (Nikolai Kochetov)
  • Correction de la compilation avec gcc-8.2. #6196 (Max Akhmedov)
  • Correction de la compilation avec libc++ interne. #6724 (Ivan)
  • Correction de la compilation partagée avec la bibliothèque rdkafka #6101 (Ivan)
  • Correctifs pour le build Mac OS (incomplets). #6390 (alexey-milovidov) #6429 (alex-zaitsev)
  • Correction du build “splitted”. #6618 (alexey-milovidov)
  • Autres correctifs du build : #6186 (Amos Bird) #6486 #6348 (vxider) #6744 (Ivan) #6016 #6421 #6491 (proller)

Changement non rétrocompatible

  • Suppression de la fonction de table catBoostPool et du moteur de stockage CatBoostPool, rarement utilisés. Si vous avez utilisé cette fonction de table, veuillez envoyer un e-mail à feedback@clickhouse.com. Notez que l’intégration CatBoost est maintenue et continuera d’être prise en charge. #6279 (alexey-milovidov)
  • ANY RIGHT JOIN et ANY FULL JOIN sont désormais désactivés par défaut. Définissez le paramètre any_join_distinct_right_table_keys pour les activer. #5126 #6351 (Artem Zuikov)

Version de ClickHouse 19.13

Version de ClickHouse 19.13.6.51, 2019-10-02

Correction de bug

  • Cette version inclut également toutes les corrections de bugs de la version 19.11.12.69.

Version de ClickHouse 19.13.5.44, 2019-09-20

Corrections de bugs

  • Cette version inclut également toutes les corrections de bugs de la version 19.14.6.12.
  • Correction d’un état potentiellement incohérent de la table lors de l’exécution de la requête DROP sur une table répliquée lorsque ZooKeeper n’est pas accessible. #6045 #6413 (Nikita Mikhaylov)
  • Correction d’une data race dans StorageMerge #6717 (alexey-milovidov)
  • Correction d’un bug introduit dans le query profiler, qui entraînait un recv infini depuis le socket. #6386 (alesapin)
  • Correction d’une utilisation excessive du CPU lors de l’exécution de la fonction JSONExtractRaw sur une valeur booléenne. #6208 (Vitaly Baranov)
  • Correction de la régression lors du push vers une vue matérialisée. #6415 (Ivan)
  • La fonction de table url présentait une vulnérabilité permettant à un attaquant d’injecter des en-têtes HTTP arbitraires dans la requête. Ce problème a été découvert par Nikita Tikhomirov. #6466 (alexey-milovidov)
  • Correction d’une vérification AST inutile dans l’index Set. #6510 #6651 (Nikita Vasilev)
  • Correction de l’analyse syntaxique des valeurs AggregateFunction intégrées à la requête. #6575 #6773 (Zhichang Yu)
  • Correction du comportement incorrect de la famille de fonctions trim. #6647 (alexey-milovidov)

Version de ClickHouse 19.13.4.32, 2019-09-10

Correction de bugs

  • Cette version contient également tous les correctifs de bugs et de sécurité des versions 19.11.9.52 et 19.11.10.54.
  • Correction d’une data race dans la table system.parts et la requête ALTER. #6245 #6513 (alexey-milovidov)
  • Correction d’un en-tête incohérent dans les flux lors de la lecture depuis une table distribuée vide avec sample et prewhere. #6167 (Lixiang Qian) #6823 (Nikolai Kochetov)
  • Correction d’un crash lors de l’utilisation de la clause IN avec une sous-requête contenant un tuple. #6125 #6550 (tavplubix)
  • Correction du cas où des noms de colonnes sont identiques dans la clause GLOBAL JOIN ON. #6181 (Artem Zuikov)
  • Correction d’un crash lors de la conversion vers Decimal de types qui ne le prennent pas en charge. Une exception est désormais levée à la place. #6297 (Artem Zuikov)
  • Correction d’un crash dans la fonction extractAll(). #6644 (Artem Zuikov)
  • La transformation de requête pour les fonctions de table MySQL, ODBC, JDBC fonctionne désormais correctement pour les requêtes SELECT WHERE comportant plusieurs expressions AND. #6381 #6676 (dimarub2000)
  • Ajout de vérifications des déclarations préalables pour l’intégration MySQL 8. #6569 (Rafael David Tinoco)

Correctif de sécurité

  • Corrige deux vulnérabilités dans les codecs pendant la phase de décompression (un utilisateur malveillant peut fabriquer des données compressées provoquant un débordement de buffer lors de la décompression). #6670 (Artem Zuikov)

Version de ClickHouse 19.13.3.26, 2019-08-22

Correction de bugs

  • Correction de la requête ALTER TABLE ... UPDATE pour les tables avec enable_mixed_granularity_parts=1. #6543 (alesapin)
  • Correction d’une NPE lors de l’utilisation de la clause IN avec une sous-requête contenant un tuple. #6125 #6550 (tavplubix)
  • Correction d’un problème : si une réplique obsolète redevient active, elle peut encore contenir des parties de données supprimées par DROP PARTITION. #6522 #6523 (tavplubix)
  • Correction d’un problème d’analyse des CSV #6426 #6559 (tavplubix)
  • Correction d’une data race dans la table system.parts et dans la requête ALTER. Cela corrige #6245. #6513 (alexey-milovidov)
  • Correction d’un code erroné dans les mutations pouvant entraîner une corruption mémoire. Correction d’un segfault lors de la lecture à l’adresse 0x14c0, qui pouvait se produire en cas de DROP TABLE et de SELECT concurrents sur system.parts ou system.parts_columns. Correction d’une condition de concurrence lors de la préparation des requêtes de mutation. Correction d’un interblocage provoqué par OPTIMIZE sur des tables Replicated et des opérations de modification concurrentes comme des ALTER. #6514 (alexey-milovidov)
  • Correction d’une possible perte de données après une requête ALTER DELETE sur une table avec un index de saut de données. #6224 #6282 (Nikita Vasilev)

Correctif de sécurité

  • Si un attaquant dispose d’un accès en écriture à ZooKeeper et peut exécuter un serveur personnalisé accessible depuis le réseau sur lequel ClickHouse s’exécute, il peut créer un serveur malveillant spécialement conçu pour se faire passer pour une réplique ClickHouse et l’enregistrer dans ZooKeeper. Lorsqu’une autre réplique ira récupérer une partie de données auprès de cette réplique malveillante, celle-ci pourra forcer clickhouse-server à écrire vers un chemin arbitraire sur le système de fichiers. Découvert par Eldar Zaitov, de l’équipe de sécurité de l’information chez Yandex. #6247 (alexey-milovidov)

Version de ClickHouse 19.13.2.19, 2019-08-14

Nouvelle fonctionnalité

  • Profileur d’échantillonnage au niveau des requêtes. Exemple. #4247 (laplab) #6124 (alexey-milovidov) #6250 #6283 #6386
  • Possibilité de spécifier une liste de colonnes avec l’expression COLUMNS('regexp'), qui fonctionne comme une version plus sophistiquée de l’astérisque *. #5951 (mfridental), (alexey-milovidov)
  • CREATE TABLE AS table_function() est désormais possible #6057 (dimarub2000)
  • L’optimiseur Adam pour la descente de gradient stochastique est utilisé par défaut dans les fonctions d’agrégation stochasticLinearRegression() et stochasticLogisticRegression(), car il offre une bonne qualité sans nécessiter pratiquement aucun ajustement. #6000 (Quid37)
  • Ajout de fonctions pour travailler avec un numéro de semaine personnalisé #5212 (Andy Yang)
  • Les requêtes RENAME fonctionnent désormais avec tous les moteurs de stockage. #5953 (Ivan)
  • Désormais, le client reçoit les logs du serveur à n’importe quel niveau souhaité en définissant send_logs_level, indépendamment du niveau de log spécifié dans les paramètres du serveur. #5964 (Nikita Mikhaylov)

Changement incompatible avec les versions précédentes

  • Le paramètre input_format_defaults_for_omitted_fields est activé par défaut. Les insertions dans les tables Distributed nécessitent que ce paramètre soit identique sur l’ensemble du cluster (vous devez le définir avant une mise à jour progressive). Il active le calcul d’expressions par défaut complexes pour les champs omis dans les formats JSONEachRow et CSV*. C’est le comportement attendu, mais cela peut entraîner une différence de performances négligeable. #6043 (Artem Zuikov), #5625 (akuzm)

Fonctionnalités expérimentales

  • Nouveau pipeline de traitement des requêtes. Utilisez l’option experimental_use_processors=1 pour l’activer. À utiliser à vos risques et périls. #4914 (Nikolai Kochetov)

Correction de bugs

  • L’intégration Kafka a été corrigée dans cette version.
  • Correction de l’encodage DoubleDelta de Int64 pour les grandes valeurs de DoubleDelta, et amélioration de l’encodage DoubleDelta pour les données aléatoires avec Int32. #5998 (Vasily Nemkov)
  • Correction de la surestimation de max_rows_to_read si le paramètre merge_tree_uniform_read_distribution est défini sur 0. #6019 (alexey-milovidov)

Amélioration

  • Lève une exception si le fichier config.d n’a pas l’élément racine correspondant à celui du fichier de configuration #6123 (dimarub2000)

Amélioration des performances

  • Optimisation de count() : utilise désormais la plus petite colonne (si possible). #6028 (Amos Bird)

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

  • Signaler l’utilisation mémoire dans les tests de performance. #5899 (akuzm)
  • Corriger la compilation avec libcxx externe #6010 (Ivan)
  • Corriger la compilation partagée avec la bibliothèque rdkafka #6101 (Ivan)

Version de ClickHouse 19.11

Version de ClickHouse 19.11.13.74, 2019-11-01

Correction de bugs

  • Correction d’un plantage rare dans ALTER MODIFY COLUMN et lors d’une fusion verticale lorsque l’une des parts fusionnées/modifiées est vide (0 ligne). #6780 (alesapin)
  • Mise à jour manuelle de SIMDJSON. Cela corrige un risque de saturation des fichiers stderr par de faux messages de diagnostic json. #7548 (Alexander Kazakov)
  • Correction d’un bug lié à l’extension de fichier mrk pour les mutations (alesapin)

Version de ClickHouse 19.11.12.69, 2019-10-02

Correction de bugs

  • Correction d’une dégradation des performances de l’analyse des index sur des clés complexes dans de grandes tables. Cela corrige #6924. #7075 (alexey-milovidov)
  • Évite un SIGSEGV rare lors de l’envoi de données dans des tables utilisant le moteur Distributed (Failed to send batch: file with index XXXXX is absent). #7032 (Azat Khuzhin)
  • Correction de Unknown identifier en présence de plusieurs jointures. Cela corrige #5254. #7022 (Artem Zuikov)

Version de ClickHouse 19.11.11.57, 2019-09-13

  • Correction d’une erreur logique provoquant des erreurs de segmentation lors d’une sélection à partir d’un topic Kafka vide. #6902 #6909 (Ivan)
  • Correction de la fonction АrrayEnumerateUniqRanked en présence de tableaux vides dans les paramètres. #6928 (proller)

Version de ClickHouse 19.11.10.54, 2019-09-10

Correction de bugs

  • Stocke manuellement les offsets des messages Kafka afin de pouvoir tous les valider en une seule fois pour l’ensemble des partitions. Corrige une duplication potentielle dans le scénario « un consommateur - plusieurs partitions ». #6872 (Ivan)

Version de ClickHouse 19.11.9.52, 2019-09-6

  • Amélioration de la gestion des erreurs dans les dictionnaires de type cache. #6737 (Vitaly Baranov)
  • Correction d’un bug dans la fonction arrayEnumerateUniqRanked. #6779 (proller)
  • Correction de la fonction JSONExtract lors de l’extraction d’un Tuple depuis du JSON. #6718 (Vitaly Baranov)
  • Correction d’une possible perte de données après une requête ALTER DELETE sur une table avec un index de saut de données. #6224 #6282 (Nikita Vasilev)
  • Correction du test de performance. #6392 (alexey-milovidov)
  • Parquet : correction de la lecture des colonnes booléennes. #6579 (alexey-milovidov)
  • Correction du comportement erroné de la fonction nullIf pour les arguments constants. #6518 (Guillaume Tassery) #6580 (alexey-milovidov)
  • Correction du problème de duplication des messages Kafka lors d’un redémarrage normal du serveur. #6597 (Ivan)
  • Correction d’un problème où un ALTER UPDATE ou ALTER DELETE long pouvait empêcher l’exécution des fusions régulières. Désormais, les mutations ne s’exécutent pas s’il n’y a pas assez de threads libres. #6502 #6617 (tavplubix)
  • Correction d’une erreur lors du traitement de “timezone” dans le fichier de configuration du serveur. #6709 (alexey-milovidov)
  • Correction des tests Kafka. #6805 (Ivan)

Correctif de sécurité

  • Si un attaquant dispose d’un accès en écriture à ZooKeeper et est en mesure d’exécuter un serveur personnalisé accessible sur le réseau où s’exécute ClickHouse, il peut créer un serveur malveillant conçu sur mesure, se faire passer pour une réplique de ClickHouse et l’enregistrer dans ZooKeeper. Lorsqu’une autre réplique récupère une partie de données auprès de la réplique malveillante, celle-ci peut forcer clickhouse-server à écrire dans un chemin arbitraire du système de fichiers. Découvert par Eldar Zaitov, équipe de sécurité de l’information chez Yandex. #6247 (alexey-milovidov)

Version de ClickHouse 19.11.8.46, 2019-08-22

Correction de bugs

  • Correction de la requête ALTER TABLE ... UPDATE pour les tables avec enable_mixed_granularity_parts=1. #6543 (alesapin)
  • Correction d’une NPE lors de l’utilisation de la clause IN avec une sous-requête contenant un tuple. #6125 #6550 (tavplubix)
  • Correction d’un problème où une réplique obsolète, lorsqu’elle redevient active, peut encore contenir des parties de données supprimées par DROP PARTITION. #6522 #6523 (tavplubix)
  • Correction d’un problème d’analyse des CSV #6426 #6559 (tavplubix)
  • Correction d’une data race dans la table system.parts et la requête ALTER. Cela corrige #6245. #6513 (alexey-milovidov)
  • Correction d’un code erroné dans les mutations pouvant entraîner une corruption mémoire. Correction d’un segfault lors de la lecture à l’adresse 0x14c0, pouvant se produire en raison d’opérations DROP TABLE et SELECT concurrentes sur system.parts ou system.parts_columns. Correction d’une condition de concurrence dans la préparation des requêtes de mutation. Correction d’un interblocage causé par OPTIMIZE sur des tables Replicated et des opérations de modification concurrentes comme des ALTER. #6514 (alexey-milovidov)

Version de ClickHouse 19.11.7.40, 2019-08-14

Correction de bugs

  • L’intégration Kafka a été corrigée dans cette version.
  • Correction d’un segfault lors de l’utilisation de arrayReduce avec des arguments constants. #6326 (alexey-milovidov)
  • Correction de la monotonie de toFloat(). #6374 (dimarub2000)
  • Correction d’un segfault avec optimize_skip_unused_shards activé et une clé de sharding manquante. #6384 (CurtizJ)
  • Correction de la logique de la fonction arrayEnumerateUniqRanked. #6423 (alexey-milovidov)
  • Suppression de la journalisation détaillée superflue du handler MySQL. #6389 (alexey-milovidov)
  • Correction d’un comportement incorrect et de segfaults possibles dans les fonctions d’agrégation topK et topKWeighted. #6404 (CurtizJ)
  • Les colonnes virtuelles ne sont plus exposées dans la table system.columns. Cela est nécessaire pour la rétrocompatibilité. #6406 (alexey-milovidov)
  • Correction d’un bug d’allocation mémoire pour les champs de type chaîne dans un dictionnaire cache à clés complexes. #6447 (alesapin)
  • Correction d’un bug lors de l’activation de la granularité adaptative pendant la création d’une nouvelle réplique pour une table Replicated*MergeTree. #6452 (alesapin)
  • Correction d’une boucle infinie lors de la lecture des messages Kafka. #6354 (abyss7)
  • Correction de la possibilité qu’une requête spécialement conçue provoque un plantage du serveur en raison d’un débordement de pile dans l’analyseur SQL, ainsi que de la possibilité d’un débordement de pile dans les tables Merge et Distributed #6433 (alexey-milovidov)
  • Correction d’une erreur d’encodage Gorilla sur de petites séquences. #6444 (Enmk)

Amélioration

  • Permet à l’utilisateur de redéfinir les paramètres poll_interval et idle_connection_timeout au niveau de la connexion. #6230 (alexey-milovidov)

Version de ClickHouse 19.11.5.28, 2019-08-05

Correction de bugs

  • Correction d’un possible blocage des requêtes lorsque le serveur est surchargé. #6301 (alexey-milovidov)
  • Correction d’une FPE dans la fonction yandexConsistentHash. Cela corrige #6304. #6126 (alexey-milovidov)
  • Correction d’un bug dans la conversion des types LowCardinality dans AggregateFunctionFactory. Cela corrige #6257. #6281 (Nikolai Kochetov)
  • Correction de l’interprétation des paramètres bool à partir des chaînes true et false dans les fichiers de configuration. #6278 (alesapin)
  • Correction d’un bug rare lié à des en-têtes de flux incompatibles dans les requêtes sur une table Distributed basée sur une table MergeTree, lorsqu’une partie de WHERE est déplacée vers PREWHERE. #6236 (alesapin)
  • Correction d’un dépassement de capacité lors de la division entière d’un type signé par un type non signé. Cela corrige #6214. #6233 (alexey-milovidov)

Changement incompatible avec les versions antérieures

  • Kafka est toujours en panne.

Version de ClickHouse 19.11.4.24, 2019-08-01

Correction de bugs

  • Correction d’un bug lors de l’écriture des marques des index secondaires avec granularité adaptative. #6126 (alesapin)
  • Correction des modificateurs WITH ROLLUP et WITH CUBE de GROUP BY avec agrégation à deux niveaux. #6225 (Anton Popov)
  • Correction d’un blocage dans la fonction JSONExtractRaw. Correction de #6195 #6198 (alexey-milovidov)
  • Correction d’un segfault dans ExternalLoader::reloadOutdated(). #6082 (Vitaly Baranov)
  • Correction du cas où le serveur peut fermer les sockets d’écoute sans s’arrêter et continuer à traiter les requêtes restantes. Vous pouvez vous retrouver avec deux processus clickhouse-server en cours d’exécution. Il arrive aussi que le serveur renvoie une erreur bad_function_call pour les requêtes restantes. #6231 (alexey-milovidov)
  • Correction d’une condition inutile et incorrecte sur le champ de mise à jour pour le chargement initial des dictionnaires externes via ODBC, MySQL, ClickHouse et HTTP. Cela corrige #6069 #6083 (alexey-milovidov)
  • Correction d’une exception injustifiée lors de la conversion de LowCardinality(Nullable) vers une colonne non Nullable lorsqu’elle ne contient pas de valeurs NULL (par ex. dans une requête comme SELECT CAST(CAST('Hello' AS LowCardinality(Nullable(String))) AS String). #6094 #6119 (Nikolai Kochetov)
  • Correction du résultat non déterministe de la fonction d’agrégation “uniq” dans des cas extrêmement rares. Le bug était présent dans toutes les versions de ClickHouse. #6058 (alexey-milovidov)
  • Segfault lors de la définition d’un CIDR légèrement trop élevé dans la fonction IPv6CIDRToRange. #6068 (Guillaume Tassery)
  • Correction d’une petite fuite mémoire lorsque le serveur génère de nombreuses exceptions depuis de nombreux contextes différents. #6144 (alexey-milovidov)
  • Correction du cas où le consumer était mis en pause avant l’abonnement et n’était pas repris ensuite. #6075 (Ivan) Notez que Kafka est défectueux dans cette version.
  • Nettoyage du buffer de données Kafka de l’opération de lecture précédente, qui s’était terminée par une erreur #6026 (Nikolay) Notez que Kafka est défectueux dans cette version.
  • Puisque StorageMergeTree::background_task_handle est initialisé dans startup(), MergeTreeBlockOutputStream::write() peut tenter de l’utiliser avant son initialisation. Il suffit de vérifier s’il est bien initialisé. #6080 (Ivan)

Amélioration de la compilation, des tests et du packaging

  • Ajout des paquets officiels au format rpm. #5740 (proller) (alesapin)
  • Ajout de la possibilité de générer des paquets .rpm et .tgz avec le script packager. #5769 (alesapin)
  • Corrections apportées au système de build « Arcadia ». #6223 (proller)

Changement incompatible avec les versions antérieures

  • Kafka ne fonctionne pas dans cette version.

Version de ClickHouse 19.11.3.11, 2019-07-18

Nouvelle fonctionnalité

  • Ajout de la prise en charge des requêtes préparées. #5331 (Alexander) #5630 (alexey-milovidov)
  • Codecs de colonnes DoubleDelta et Gorilla #5600 (Vasily Nemkov)
  • Ajout du paramètre os_thread_priority, qui permet de contrôler la valeur « nice » des threads de traitement des requêtes, utilisée par l’OS pour ajuster la priorité de planification dynamique. Son utilisation nécessite les capabilities CAP_SYS_NICE. Cela implémente #5858 #5909 (alexey-milovidov)
  • Ajout des colonnes _topic, _offset, _key pour le moteur Kafka #5382 (Ivan) Notez que Kafka ne fonctionne pas dans cette version.
  • Ajout du combinateur de fonctions d’agrégation -Resample #5590 (hcz)
  • Fonctions d’agrégation groupArrayMovingSum(win_size)(x) et groupArrayMovingAvg(win_size)(x), qui calculent une somme/moyenne glissante avec ou sans limitation de la taille de la fenêtre. #5595 (inv2004)
  • Ajout du synonyme arrayFlatten <-> flatten #5764 (hcz)
  • Intégration de la fonction H3 geoToH3 d’Uber. #4724 (Remen Ivan) #5805 (alexey-milovidov)

Correction de bugs

  • Implémentation d’un cache DNS avec mise à jour asynchrone. Un thread séparé résout tous les hôtes et met à jour le cache DNS selon une période définie (paramètre dns_cache_update_period). Cela devrait aider lorsque l’IP des hôtes change fréquemment. #5857 (Anton Popov)
  • Correction d’un segfault dans le codec Delta qui affecte les colonnes contenant des valeurs de moins de 32 bits. Le bug entraînait une corruption aléatoire de la mémoire. #5786 (alesapin)
  • Correction d’un segfault lors d’une fusion TTL avec des colonnes non physiques dans le bloc. #5819 (Anton Popov)
  • Correction d’un bug rare lors de la vérification d’une part avec une colonne LowCardinality. Auparavant, checkDataPart échouait systématiquement pour une part avec une colonne LowCardinality. #5832 (alesapin)
  • Évite les connexions bloquées lorsque le thread pool du serveur est saturé. C’est important pour les connexions provenant de la table function remote ou les connexions vers un shard sans répliques lorsqu’un connection timeout long est défini. Cela corrige #5878 #5881 (alexey-milovidov)
  • Prise en charge des arguments constants pour la fonction evalMLModel. Cela corrige #5817 #5820 (alexey-milovidov)
  • Correction du problème où ClickHouse détermine le fuseau horaire par défaut comme UCT au lieu de UTC. Cela corrige #5804. #5828 (alexey-milovidov)
  • Correction d’un underflow du buffer dans visitParamExtractRaw. Cela corrige #5901 #5902 (alexey-milovidov)
  • Désormais, les requêtes distribuées DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER seront exécutées directement sur la réplique leader. #5757 (alesapin)
  • Correction de coalesce pour ColumnConst avec ColumnNullable, ainsi que des modifications associées. #5755 (Artem Zuikov)
  • Correction de ReadBufferFromKafkaConsumer afin qu’il continue à lire les nouveaux messages après commit(), même s’il était auparavant bloqué #5852 (Ivan)
  • Correction des résultats des JOIN FULL et RIGHT lors d’une jointure sur des clés Nullable dans la table de droite. #5859 (Artem Zuikov)
  • Correction possible d’une mise en veille infinie des requêtes de faible priorité. #5842 (alexey-milovidov)
  • Correction d’une race condition qui faisait que certaines requêtes pouvaient ne pas apparaître dans query_log après la requête SYSTEM FLUSH LOGS. #5456 #5685 (Anton Popov)
  • Correction de l’avertissement ASan heap-use-after-free dans ClusterCopier, causé par un watch qui tentait d’utiliser un objet copier déjà supprimé. #5871 (Nikolai Kochetov)
  • Correction d’un pointeur StringRef incorrect renvoyé par certaines implémentations de IColumn::deserializeAndInsertFromArena. Ce bogue n’affectait que les tests unitaires. #5973 (Nikolai Kochetov)
  • Empêche les colonnes source et intermédiaires d’ARRAY JOIN de masquer des colonnes portant le même nom. #5941 (Artem Zuikov)
  • Correction des requêtes insert et select vers le moteur MySQL avec la syntaxe de guillemets d’identifiants propre à MySQL. #5704 (Winter Zhang)
  • La requête CHECK TABLE fonctionne désormais avec la famille de moteurs MergeTree. Elle renvoie le statut de la vérification et, le cas échéant, un message pour chaque part (ou fichier dans le cas de moteurs plus simples). Correction également d’un bogue lors de la récupération d’une part corrompue. #5865 (alesapin)
  • Correction du runtime SPLIT_SHARED_LIBRARIES #5793 (Danila Kutenin)
  • Correction de l’initialisation du fuseau horaire lorsque /etc/localtime est un lien symbolique relatif comme ../usr/share/zoneinfo/Asia/Istanbul #5922 (alexey-milovidov)
  • clickhouse-copier : correction d’un use-after-free lors de l’arrêt #5752 (proller)
  • simdjson a été mis à jour. Correction du problème qui permettait d’analyser avec succès certains JSON invalides contenant des octets nuls. #5938 (alexey-milovidov)
  • Correction du blocage à l’arrêt de SystemLogs #5802 (Anton Popov)
  • Correction d’un blocage lorsque la condition dans invalidate_query dépend d’un dictionnaire. #6011 (Vitaly Baranov)

Amélioration

  • Autoriser les adresses non résolubles dans la configuration du cluster. Elles seront considérées comme indisponibles, et leur résolution sera retentée à chaque tentative de connexion. C’est particulièrement utile pour Kubernetes. Cela corrige #5714 #5924 (alexey-milovidov)
  • Fermer les connexions TCP inactives (avec un timeout d’une heure par défaut). C’est particulièrement important pour les grands clusters avec plusieurs tables distribuées sur chaque serveur, car chaque serveur peut conserver un pool de connexions vers tous les autres serveurs et, après un pic de concurrence des requêtes, ces connexions peuvent rester inutilisées. Cela corrige #5879 #5880 (alexey-milovidov)
  • Amélioration de la qualité de la fonction topK. Le comportement de l’ensemble SavingSpace a été modifié pour supprimer le dernier élément si le nouvel élément a un poids supérieur. #5833 #5850 (Guillaume Tassery)
  • Les fonctions d’URL pour manipuler les domaines fonctionnent désormais aussi avec des URL incomplètes sans scheme #5725 (alesapin)
  • Ajout de checksums à la table system.parts_columns. #5874 (Nikita Mikhaylov)
  • Ajout du type de données Enum comme synonyme de Enum8 ou Enum16. #5886 (dimarub2000)
  • Variante de transposition complète des bits pour le codec T64. Cela peut améliorer la Compression avec zstd. #5742 (Artem Zuikov)
  • La condition sur la fonction startsWith peut désormais utiliser la clé primaire. Cela corrige #5310 et #5882 #5919 (dimarub2000)
  • Autoriser l’utilisation de clickhouse-copier avec une topologie de cluster à réplication croisée en permettant un nom de database vide. #5745 (nvartolomei)
  • Utiliser UTC comme timezone par défaut sur un système sans tzdata (par ex. un conteneur Docker minimal). Avant ce correctif, le message d’erreur Could not determine local time zone s’affichait et le server ou le client refusait de démarrer. #5827 (alexey-milovidov)
  • Rétablissement de la prise en charge d’un argument en virgule flottante dans la fonction quantileTiming pour assurer la rétrocompatibilité. #5911 (alexey-milovidov)
  • Afficher dans les messages d’erreur quelle table a une colonne manquante. #5768 (Ivan)
  • Interdire l’exécution d’une query avec le même query_id par différents utilisateurs #5430 (proller)
  • Code plus robuste pour l’envoi de metrics à Graphite. Il fonctionnera même pendant une longue opération multiple RENAME TABLE. #5875 (alexey-milovidov)
  • Des messages d’erreur plus explicites seront affichés lorsque ThreadPool ne parvient pas à planifier l’exécution d’une tâche. Cela corrige #5305 #5801 (alexey-milovidov)
  • Inversion de la logique de ngramSearch pour le rendre plus intuitif #5807 (Danila Kutenin)
  • Ajout de l’analyse de l’utilisateur dans le builder du HDFS engine #5946 (akonyaev90)
  • Mise à jour de la valeur par défaut du paramètre max_ast_elements #5933 (Artem Konovalov)
  • Ajout de la notion de paramètres obsolètes. Le paramètre obsolète allow_experimental_low_cardinality_type peut être utilisé sans aucun effet. 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov

Amélioration des performances

  • Augmentation du nombre de streams utilisés pour exécuter des SELECT sur une table Merge, afin de répartir les threads plus uniformément. Ajout du paramètre max_streams_multiplier_for_merge_tables. Cela corrige #5797 #5915 (alexey-milovidov)

Amélioration de la compilation, des tests et du packaging

  • Ajout d’un test de rétrocompatibilité pour les interactions client-serveur avec différentes versions de ClickHouse. #5868 (alesapin)
  • Ajout des informations de couverture des tests dans chaque commit et pull request. #5896 (alesapin)
  • Compatibilité avec AddressSanitizer pour prendre en charge nos allocateurs personnalisés (Arena et ArenaWithFreeLists) afin d’améliorer le débogage des erreurs “use-after-free”. #5728 (akuzm)
  • Passage à l’implémentation LLVM de libunwind pour la gestion des exceptions C++ et l’affichage des traces de pile #4828 (Nikita Lapkov)
  • Ajout de deux avertissements supplémentaires issus de -Weverything #5923 (alexey-milovidov)
  • Ajout de la possibilité de compiler ClickHouse avec Memory Sanitizer. #3949 (alexey-milovidov)
  • Correction d’un rapport ubsan concernant la fonction bitTest dans le test de fuzzing. #5943 (alexey-milovidov)
  • Docker : ajout de la possibilité d’initialiser une instance ClickHouse nécessitant une authentification. #5727 (Korviakov Andrey)
  • Mise à jour de librdkafka vers la version 1.1.0 #5872 (Ivan)
  • Ajout d’un délai d’expiration global pour les tests d’intégration et désactivation de certains d’entre eux dans le code de test. #5741 (alesapin)
  • Correction de certains échecs de ThreadSanitizer. #5854 (akuzm)
  • L’option --no-undefined force l’éditeur de liens à vérifier l’existence de tous les noms externes lors de l’édition des liens. C’est très utile pour suivre les dépendances réelles entre les bibliothèques en mode de build fractionné. #5855 (Ivan)
  • Ajout d’un test de performance pour #5797 #5914 (alexey-milovidov)
  • Correction de la compatibilité avec gcc-7. #5840 (alexey-milovidov)
  • Ajout de la prise en charge de gcc-9. Cela corrige #5717 #5774 (alexey-milovidov)
  • Correction d’une erreur lorsque libunwind était lié incorrectement. #5948 (alexey-milovidov)
  • Correction de quelques avertissements signalés par PVS-Studio. #5921 (alexey-milovidov)
  • Ajout de la prise en charge initiale de l’analyseur statique clang-tidy. #5806 (alexey-milovidov)
  • Conversion des macros d’endianness BSD/Linux ( ‘be64toh’ et ‘htobe64’) vers leurs équivalents Mac OS X #5785 (Fu Chen)
  • Amélioration du guide des tests d’intégration. #5796 (Vladimir Chebotarev)
  • Correction du build sur macOS + gcc9 #5822 (filimonov)
  • Correction d’une faute de frappe difficile à repérer : aggreAGte -> aggregate. #5753 (akuzm)
  • Correction du build sur FreeBSD #5760 (proller)
  • Ajout d’un lien vers la chaîne YouTube expérimentale sur le site web #5845 (Ivan Blinkov)
  • CMake : ajout d’une option pour les indicateurs de couverture : WITH_COVERAGE #5776 (proller)
  • Correction de la taille initiale de certains PODArray inline. #5787 (akuzm)
  • clickhouse-server.postinst : correction de la détection de l’OS pour CentOS 6 #5788 (proller)
  • Ajout de la génération du paquet Arch Linux. #5719 (Vladimir Chebotarev)
  • Découpage de Common/config.h par bibliothèques (dbms) #5715 (proller)
  • Correctifs pour la plateforme de build “Arcadia” #5795 (proller)
  • Correctifs pour un build non conventionnel (gcc9, sans sous-modules) #5792 (proller)
  • Type explicite désormais requis dans unalignedStore, car cela s’est révélé source de bugs #5791 (akuzm)
  • Correction du build sur macOS #5830 (filimonov)
  • Test de performance de la nouvelle fonctionnalité JIT avec un jeu de données plus volumineux, comme demandé ici #5263 #5887 (Guillaume Tassery)
  • Exécution des tests stateful dans le test de stress 12693e568722f11e19859742f56428455501fd2a (alesapin)

Changement incompatible avec les versions antérieures

  • Kafka est défectueux dans cette version.
  • adaptive_index_granularity = 10MB est désormais activé par défaut pour les nouvelles tables MergeTree. Si vous avez créé de nouvelles tables MergeTree avec la version 19.11+, il sera impossible de revenir à une version antérieure à 19.6. #5628 (alesapin)
  • Suppression des dictionnaires embarqués obsolètes et non documentés utilisés par Yandex.Metrica. Les fonctions OSIn, SEIn, OSToRoot, SEToRoot, OSHierarchy, SEHierarchy ne sont plus disponibles. Si vous utilisez ces fonctions, écrivez à clickhouse-feedback@yandex-team.com. Remarque : au dernier moment, nous avons décidé de conserver ces fonctions encore quelque temps. #5780 (alexey-milovidov)

Version de ClickHouse 19.10

Version de ClickHouse 19.10.1.5, 2019-07-12

Nouvelle fonctionnalité

  • Ajout d’un nouveau codec de colonne : T64. Conçu pour les colonnes (U)IntX/EnumX/Data(Time)/DecimalX. Il convient particulièrement aux colonnes dont les valeurs sont constantes ou varient dans une petite plage. Le codec lui-même permet d’agrandir ou de réduire le type de données sans recompression. #5557 (Artem Zuikov)
  • Ajout du moteur de base de données MySQL, qui permet d’afficher toutes les tables d’un serveur MySQL distant #5599 (Winter Zhang)
  • Implémentation de bitmapContains. C’est deux fois plus rapide que bitmapHasAny si le second bitmap contient un seul élément. #5535 (Zhichang Yu)
  • Prise en charge de la fonction crc32 (avec un comportement exactement identique à celui de MySQL ou PHP). Ne l’utilisez pas si vous avez besoin d’une fonction de hachage. #5661 (Remen Ivan)
  • Implémentation des requêtes SYSTEM START/STOP DISTRIBUTED SENDS pour contrôler les insertions asynchrones dans les tables Distributed. #4935 (Winter Zhang)

Correction de bugs

  • Ignorer les limites d’exécution des query et la taille maximale des parts dans les limites de fusion lors de l’exécution des mutations. #5659 (Anton Popov)
  • Corrige un bug pouvant entraîner la déduplication de blocs normaux (extrêmement rare) et l’insertion de blocs en double (plus fréquent). #5549 (alesapin)
  • Correction de la fonction arrayEnumerateUniqRanked pour les arguments contenant des Array vides #5559 (proller)
  • Ne pas s’abonner à des topics Kafka sans intention de consommer le moindre message. #5698 (Ivan)
  • Faire en sorte que le paramètre join_use_nulls soit sans effet pour les types qui ne peuvent pas être contenus dans Nullable #5700 (Olga Khvostikova)
  • Correction des erreurs Incorrect size of index granularity #5720 (coraxster)
  • Correction du dépassement de capacité lors de la conversion de Float en Decimal #5607 (coraxster)
  • Vider le buffer lorsque le destructeur de WriteBufferFromHDFS est appelé. Cela corrige l’écriture dans HDFS. #5684 (Xindong Peng)

Amélioration

  • Les cellules vides dans CSV sont traitées comme des valeurs par défaut lorsque le paramètre input_format_defaults_for_omitted_fields est activé. #5625 (akuzm)
  • Chargement non bloquant des dictionnaires externes. #5567 (Vitaly Baranov)
  • Les délais d’expiration réseau peuvent être modifiés dynamiquement pour des connexions déjà établies, conformément aux paramètres. #4558 (Konstantin Podshumok)
  • Utilisation de “public_suffix_list” pour les fonctions firstSignificantSubdomain, cutToFirstSignificantSubdomain. Une table de hachage parfaite générée par gperf est utilisée avec une liste générée à partir du fichier : https://publicsuffix.org/list/public&#95;suffix&#95;list.dat. (par exemple, le domaine ac.uk est désormais reconnu comme non significatif). #5030 (Guillaume Tassery)
  • Adoption du type de données IPv6 dans les tables système ; unification des colonnes d’informations client dans system.processes et system.query_log #5640 (alexey-milovidov)
  • Utilisation de sessions pour les connexions avec le protocole de compatibilité MySQL. #5476 #5646 (Yuriy Baranov)
  • Prise en charge d’un plus grand nombre de requêtes ALTER ON CLUSTER. #5593 #5613 (sundyli)
  • Prise en charge de la section <logger> dans le fichier de configuration clickhouse-local. #5540 (proller)
  • Autorise l’exécution de requêtes avec la fonction de table remote dans clickhouse-local #5627 (proller)

Amélioration des performances

  • Ajout de la possibilité d’écrire le repère final à la fin des colonnes MergeTree. Cela permet d’éviter des lectures inutiles pour les clés situées en dehors de la plage de données de la table. Cette fonctionnalité est activée uniquement si la granularité d’index adaptative est utilisée. #5624 (alesapin)
  • Amélioration des performances des tables MergeTree sur des systèmes de fichiers très lents en réduisant le nombre d’appels système stat. #5648 (alexey-milovidov)
  • Correction d’une dégradation des performances de lecture des tables MergeTree introduite dans la version 19.6. Corrige #5631. #5633 (alexey-milovidov)

Amélioration de la compilation, des tests et du packaging

  • Implémentation de TestKeeper en tant qu’implémentation de l’interface ZooKeeper utilisée pour les tests #5643 (alexey-milovidov) (levushkin aleksej)
  • Désormais, les tests .sql peuvent être exécutés de manière isolée par serveur, en parallèle, avec une base de données générée aléatoirement. Cela permet de les exécuter plus rapidement, d’ajouter de nouveaux tests avec des configurations serveur personnalisées et de garantir que les différents tests n’interfèrent pas les uns avec les autres. #5554 (Ivan)
  • Suppression de <name> et de <metrics> des tests de performance #5672 (Olga Khvostikova)
  • Correction du test de performance « select_format » pour les formats Pretty #5642 (alexey-milovidov)

Version 19.9 de ClickHouse

Version de ClickHouse 19.9.3.31, 2019-07-05

Correction de bugs

  • Correction d’un segfault dans le codec Delta, qui affectait les colonnes contenant des valeurs de moins de 32 bits. Ce bug entraînait une corruption aléatoire de la mémoire. #5786 (alesapin)
  • Correction d’un bug rare lors de la vérification d’une part avec une colonne LowCardinality. #5832 (alesapin)
  • Correction d’un segfault dans une fusion TTL avec des colonnes non physiques dans un bloc. #5819 (Anton Popov)
  • Correction d’une mise en veille potentiellement infinie des requêtes de faible priorité. #5842 (alexey-milovidov)
  • Correction de la façon dont ClickHouse détermine le fuseau horaire par défaut, avec UCT au lieu de UTC. #5828 (alexey-milovidov)
  • Correction d’un bug concernant l’exécution des requêtes distribuées DROP/ALTER/TRUNCATE/OPTIMIZE ON CLUSTER sur une réplique follower avant la réplique leader. Désormais, elles seront exécutées directement sur la réplique leader. #5757 (alesapin)
  • Correction d’une condition de concurrence qui faisait que certaines requêtes pouvaient ne pas apparaître immédiatement dans query_log après une requête SYSTEM FLUSH LOGS. #5685 (Anton Popov)
  • Ajout de la prise en charge jusque-là absente des arguments constants pour la fonction evalMLModel. #5820 (alexey-milovidov)

Version de ClickHouse 19.9.2.4, 2019-06-24

Nouvelle fonctionnalité

  • Afficher des informations sur les parties gelées dans la table system.parts. #5471 (proller)
  • Demander le mot de passe du client au lancement de clickhouse-client dans un TTY s’il n’est pas défini dans les arguments #5092 (proller)
  • Implémenter les fonctions dictGet et dictGetOrDefault pour les types Decimal. #5394 (Artem Zuikov)

Amélioration

  • Init Debian : ajout d’un délai d’attente pour l’arrêt du service #5522 (proller)
  • Ajout d’un paramètre interdisant par défaut la création de tables avec des types suspects pour LowCardinality #5448 (Olga Khvostikova)
  • Les fonctions de régression renvoient les poids du modèle lorsqu’elles ne sont pas utilisées comme State dans la fonction evalMLMethod. #5411 (Quid37)
  • Méthodes de régression renommées et améliorées. #5492 (Quid37)
  • Interfaces plus claires pour les algorithmes de recherche de chaînes. #5586 (Danila Kutenin)

Correction de bugs

  • Corrige une perte de données potentielle dans Kafka #5445 (Ivan)
  • Corrige une boucle infinie potentielle dans le format PrettySpace lorsqu’il est appelé avec zéro colonne #5560 (Olga Khvostikova)
  • Corrige un bug de dépassement de capacité UInt32 dans les modèles linéaires. Autorise l’évaluation d’un modèle ML avec un argument de modèle non constant. #5516 (Nikolai Kochetov)
  • ALTER TABLE ... DROP INDEX IF EXISTS ... ne doit pas lever d’exception si l’index indiqué n’existe pas #5524 (Gleb Novikov)
  • Corrige un segfault avec bitmapHasAny dans une sous-requête scalaire #5528 (Zhichang Yu)
  • Corrige une erreur lorsque le pool de connexions de réplication ne retentait pas la résolution de l’hôte, même après suppression du cache DNS. #5534 (alesapin)
  • Corrige ALTER ... MODIFY TTL sur ReplicatedMergeTree. #5539 (Anton Popov)
  • Corrige INSERT dans une table Distributed avec une colonne MATERIALIZED #5429 (Azat Khuzhin)
  • Corrige une erreur d’allocation lors de TRUNCATE sur le stockage Join #5437 (TCeason)
  • Dans les versions récentes du paquet tzdata, certains fichiers sont désormais des liens symboliques. Le mécanisme actuel de détection du fuseau horaire par défaut est alors défaillant et renvoie des noms erronés pour certains fuseaux horaires. Désormais, à défaut, nous forçons le nom du fuseau horaire à la valeur de TZ si elle est fournie. #5443 (Ivan)
  • Corrige quelques cas extrêmement rares dans le moteur de recherche MultiVolnitsky lorsque les needles constants dans la somme font au moins 16 KB. L’algorithme ignorait ou écrasait les résultats précédents, ce qui pouvait conduire à un résultat incorrect de multiSearchAny. #5588 (Danila Kutenin)
  • Corrige le problème où les paramètres des requêtes ExternalData ne pouvaient pas utiliser les paramètres ClickHouse. De plus, pour l’instant, les paramètres date_time_input_format et low_cardinality_allow_in_native_format ne peuvent pas être utilisés en raison de l’ambiguïté des noms (dans les données externes, ils peuvent être interprétés comme un format de table, et dans la requête, comme un paramètre). #5455 (Danila Kutenin)
  • Corrige un bug où les parts étaient supprimées uniquement du FS, sans être supprimées de ZooKeeper. #5520 (alesapin)
  • Supprime la journalisation de débogage du protocole MySQL #5478 (alexey-milovidov)
  • Ignore ZNONODE pendant le traitement des requêtes DDL #5489 (Azat Khuzhin)
  • Corrige le type des colonnes résultant de UNION ALL. Dans certains cas, les données et les types des colonnes résultantes étaient incohérents. #5503 (Artem Zuikov)
  • Lève une exception en cas d’entiers incorrects dans les fonctions dictGetT, au lieu d’un plantage. #5446 (Artem Zuikov)
  • Correction des valeurs incorrectes de element&#95;count et load&#95;factor pour le dictionnaire haché dans la table system.dictionaries. #5440 (Azat Khuzhin)

Amélioration de build/des tests/du packaging

  • Correction de la compilation sans prise en charge de la compression HTTP Brotli (variable cmake ENABLE_BROTLI=OFF). #5521 (Anton Yuzhaninov)
  • Inclusion de roaring.h sous roaring/roaring.h #5523 (Orivej Desh)
  • Correction des avertissements gcc9 dans hyperscan (la directive #line est maléfique !) #5546 (Danila Kutenin)
  • Correction de tous les avertissements lors de la compilation avec gcc-9. Correction de certains problèmes dans contrib. Correction de l’ICE de gcc9 et soumission à Bugzilla. #5498 (Danila Kutenin)
  • Correction de l’édition de liens avec lld #5477 (alexey-milovidov)
  • Suppression des spécialisations inutilisées dans les dictionnaires #5452 (Artem Zuikov)
  • Amélioration des tests de performance pour la mise en forme et l’analyse des tables pour différents types de fichiers #5497 (Olga Khvostikova)
  • Corrections pour l’exécution parallèle des tests #5506 (proller)
  • Docker : utilisation des configs de clickhouse-test #5531 (proller)
  • Correction de la compilation pour FreeBSD #5447 (proller)
  • Mise à niveau de Boost vers 1.70 #5570 (proller)
  • Correction de la compilation de ClickHouse en tant que sous-module #5574 (proller)
  • Amélioration des tests de performance de JSONExtract #5444 (Vitaly Baranov)

Version 19.8 de ClickHouse

Version de ClickHouse 19.8.3.8, 2019-06-11

Nouvelles fonctionnalités

  • Ajout de fonctions pour travailler avec JSON #4686 (hcz) #5124. (Vitaly Baranov)
  • Ajout d’une fonction basename, au comportement similaire à celui de la fonction du même nom présente dans de nombreux langages (os.path.basename en Python, basename en PHP, etc.). Fonctionne aussi bien avec un chemin de type UNIX qu’avec un chemin Windows. #5136 (Guillaume Tassery)
  • Ajout de la syntaxe LIMIT n, m BY ou LIMIT m OFFSET n BY pour définir un décalage de n pour la clause LIMIT BY. #5138 (Anton Popov)
  • Ajout du nouveau type de données SimpleAggregateFunction, qui permet d’avoir des colonnes avec une agrégation légère dans un AggregatingMergeTree. Cela ne peut être utilisé qu’avec des fonctions simples comme any, anyLast, sum, min, max. #4629 (Boris Granveaud)
  • Ajout de la prise en charge des arguments non constants dans la fonction ngramDistance #5198 (Danila Kutenin)
  • Ajout des fonctions skewPop, skewSamp, kurtPop et kurtSamp pour calculer respectivement l’asymétrie d’une séquence, l’asymétrie d’échantillon, l’aplatissement et l’aplatissement d’échantillon. #5200 (hcz)
  • Prise en charge de l’opération de renommage pour le moteur de stockage MaterializeView. #5209 (Guillaume Tassery)
  • Ajout d’un server permettant de se connecter à ClickHouse à l’aide d’un client MySQL. #4715 (Yuriy Baranov)
  • Ajout des fonctions toDecimal*OrZero et toDecimal*OrNull. #5291 (Artem Zuikov)
  • Prise en charge des types Decimal dans les fonctions : quantile, quantiles, median, quantileExactWeighted, quantilesExactWeighted, medianExactWeighted. #5304 (Artem Zuikov)
  • Ajout de la fonction toValidUTF8, qui remplace tous les caractères UTF-8 non valides par le caractère de remplacement � (U+FFFD). #5322 (Danila Kutenin)
  • Ajout de la fonction format. Met en forme un pattern constant (pattern de format Python simplifié) avec les chaînes listées dans les arguments. #5330 (Danila Kutenin)
  • Ajout de la table system.detached_parts contenant des informations sur les detached parts des tables MergeTree. #5353 (akuzm)
  • Ajout de la fonction ngramSearch pour calculer la différence non symétrique entre la needle et le haystack. #5418#5422 (Danila Kutenin)
  • Implémentation de méthodes de base d’apprentissage automatique (régression linéaire stochastique et régression logistique) à l’aide de l’interface des fonctions d’agrégation. Différentes stratégies de mise à jour des poids du modèle sont prises en charge (descente de gradient simple, méthode du momentum, méthode de Nesterov). Les mini-batches de taille personnalisée sont également pris en charge. #4943 (Quid37)
  • Implémentation des fonctions geohashEncode et geohashDecode. #5003 (Vasily Nemkov)
  • Ajout de la fonction d’agrégation timeSeriesGroupSum, qui peut agréger différentes séries temporelles dont les timestamp d’échantillonnage ne sont pas alignés. Elle utilise une interpolation linéaire entre deux timestamp d’échantillonnage, puis additionne les séries temporelles. Ajout également de la fonction d’agrégation timeSeriesGroupRateSum, qui calcule le taux des séries temporelles avant d’additionner ces taux. #4542 (Yangkuan Liu)
  • Ajout des fonctions IPv4CIDRtoIPv4Range et IPv6CIDRtoIPv6Range pour calculer les bornes inférieure et supérieure d’une IP dans le sous-réseau à l’aide d’un CIDR. #5095 (Guillaume Tassery)
  • Ajout d’un header X-ClickHouse-Summary lors de l’envoi d’une requête via HTTP avec le paramètre send_progress_in_http_headers activé. Il renvoie les informations habituelles de X-ClickHouse-Progress, avec des informations supplémentaires comme le nombre de lignes et d’octets insérés par la requête. #5116 (Guillaume Tassery)

Améliorations

  • Ajout du paramètre max_parts_in_total pour la famille de tables MergeTree (par défaut : 100 000), afin d’empêcher une définition non sûre de la clé de partition #5166. #5171 (alexey-milovidov)
  • clickhouse-obfuscator : dérive la seed de chaque colonne en combinant la seed initiale avec le nom de la colonne, et non avec sa position. Cela vise à transformer des datasets comportant plusieurs tables liées, afin que les tables restent utilisables avec JOIN après la transformation. #5178 (alexey-milovidov)
  • Ajout des fonctions JSONExtractRaw, JSONExtractKeyAndValues. Les fonctions jsonExtract<type> ont été renommées en JSONExtract<type>. En cas de problème, ces fonctions renvoient les valeurs correspondantes, et non NULL. La fonction JSONExtract a été modifiée : elle récupère désormais le return type à partir de son dernier paramètre et n’injecte pas de types Nullable. Mise en place d’un fallback vers RapidJSON lorsque les instructions AVX2 ne sont pas disponibles. La bibliothèque Simdjson a été mise à jour vers une nouvelle version. #5235 (Vitaly Baranov)
  • Désormais, les fonctions if et multiIf ne s’appuient pas sur le Nullable de la condition, mais sur les branches, pour assurer la compatibilité SQL. #5238 (Jian Wu)
  • Le prédicat In génère désormais un résultat Null à partir d’une entrée Null, comme la fonction Equal. #5152 (Jian Wu)
  • Vérifie la limite de temps toutes les (flush_interval / poll_timeout) lignes lues depuis Kafka. Cela permet d’interrompre plus fréquemment la lecture depuis le consumer Kafka et de vérifier les limites de temps pour les streams de niveau supérieur #5249 (Ivan)
  • Lie rdkafka avec SASL intégré. Cela devrait permettre d’utiliser l’authentication SASL SCRAM #5253 (Ivan)
  • Version Batch de RowRefList pour tous les ALL JOINS. #5267 (Artem Zuikov)
  • clickhouse-server : messages d’erreur à l’écoute plus informatifs. #5268 (proller)
  • Prise en charge des Dictionaries dans clickhouse-copier pour les fonctions dans <sharding_key> #5270 (proller)
  • Ajout du nouveau paramètre kafka_commit_every_batch pour réguler la policy de commit de Kafka. Il permet de définir le mode de commit : après le traitement de chaque Batch de messages, ou après l’écriture du block entier dans le storage. C’est un compromis entre la perte de certains messages et leur lecture en double dans certaines situations extrêmes. #5308 (Ivan)
  • Permet à windowFunnel de prendre en charge d’autres types d’entiers non signés. #5320 (sundyli)
  • Permet de masquer la colonne virtuelle _table dans le moteur Merge. #5325 (Ivan)
  • Permet aux aggregate functions sequenceMatch de prendre en charge d’autres types d’entiers non signés #5339 (sundyli)
  • Messages d’erreur améliorés lorsque l’incohérence de checksum est très probablement due à des défaillances matérielles. #5355 (alexey-milovidov)
  • Vérification de la prise en charge de l’échantillonnage par les tables sous-jacentes pour StorageMerge #5366 (Ivan)
  • Fermeture des connexions MySQL après utilisation dans les dictionnaires externes. Lié à l’issue #893. #5395 (Clément Rodriguez)
  • Améliorations du protocole MySQL Wire. Le nom du format a été remplacé par MySQLWire. Utilisation de RAII pour appeler RSA_free. Désactivation de SSL si le contexte ne peut pas être créé. #5419 (Yuriy Baranov)
  • clickhouse-client : autorise l’exécution avec un fichier d’historique inaccessible (lecture seule, plus d’espace disque, le fichier est un répertoire, …). #5431 (proller)
  • Prise en compte des paramètres de requête dans les INSERT asynchrones vers les tables Distributed. #4936 (TCeason)
  • Renommage des fonctions leastSqr en simpleLinearRegression, LinearRegression en linearRegression, LogisticRegression en logisticRegression. #5391 (Nikolai Kochetov)

Améliorations des performances

  • Parallélisation du traitement des parts des tables MergeTree non répliquées dans la requête ALTER MODIFY. #4639 (Ivan Kush)
  • Optimisations de l’extraction par expressions régulières. #5193 #5191 (Danila Kutenin)
  • Ne pas ajouter la colonne de clé de jointure de droite au résultat du JOIN si elle est utilisée uniquement dans la clause ON du JOIN. #5260 (Artem Zuikov)
  • Geler le buffer Kafka après la première réponse vide. Cela évite plusieurs appels à ReadBuffer::next() pour un résultat vide dans certains flux d’analyse de lignes. #5283 (Ivan)
  • Optimisation de la fonction concat pour plusieurs arguments. #5357 (Danila Kutenin)
  • Optimisation des requêtes. Autoriser le push down de l’instruction IN lors de la réécriture d’une jointure avec virgule/CROSS JOIN en INNER JOIN. #5396 (Artem Zuikov)
  • Remplacement de notre implémentation de LZ4 par l’implémentation de référence afin d’accélérer la décompression. #5070 (Danila Kutenin)
  • Implémentation du tri radix MSD (basé sur kxsort) et du tri partiel. #5129 (Evgenii Pravda)

Corrections de bugs

  • Correction du cas où push nécessitait des colonnes avec jointure #5192 (Winter Zhang)
  • Correction d’un bug : lorsque ClickHouse était exécuté par systemd, la commande sudo service clickhouse-server forcerestart ne fonctionnait pas comme prévu. #5204 (proller)
  • Correction des codes d’erreur HTTP dans DataPartsExchange (le serveur HTTP interserver sur le port 9009 renvoyait toujours le code 200, même en cas d’erreur). #5216 (proller)
  • Correction de SimpleAggregateFunction pour les String plus longues que MAX_SMALL_STRING_SIZE #5311 (Azat Khuzhin)
  • Correction de l’erreur de conversion de Decimal vers Nullable(Decimal) dans IN. Prise en charge d’autres conversions de Decimal vers Decimal (y compris avec des échelles différentes). #5350 (Artem Zuikov)
  • Correction de l’écrasement du FPU dans la bibliothèque simdjson, qui entraînait des calculs erronés pour les fonctions d’agrégation uniqHLL et uniqCombined, ainsi que pour des fonctions mathématiques telles que log. #5354 (alexey-milovidov)
  • Correction de la gestion des cas mixtes const/non const dans les fonctions JSON. #5435 (Vitaly Baranov)
  • Correction de la fonction retention. Désormais, toutes les conditions remplies dans une ligne de données sont ajoutées à l’état des données. #5119 (小路)
  • Correction du type de résultat pour quantileExact avec des Decimal. #5304 (Artem Zuikov)

Documentation

  • Traduction en chinois de la documentation de CollapsingMergeTree. #5168 (张风啸)
  • Traduction en chinois d’une partie de la documentation sur les moteurs de table. #5134 #5328 (never lee)

Améliorations du build, des tests et du packaging

  • Correction de certains signalements du sanitizer indiquant une probable utilisation après libération. #5139 #5143 #5393 (Ivan)
  • Déplacement des tests de performance hors de répertoires distincts pour plus de commodité. #5158 (alexey-milovidov)
  • Correction de tests de performance erronés. #5255 (alesapin)
  • Ajout d’un outil pour calculer les checksums dus à des inversions de bits afin d’aider au Débogage de problèmes matériels. #5334 (alexey-milovidov)
  • Script runner rendu plus pratique à utiliser. #5340#5360 (filimonov)
  • Ajout de brèves instructions expliquant comment écrire des tests de performance. #5408 (alesapin)
  • Ajout de la possibilité d’effectuer des substitutions dans les requêtes CREATE, FILL et DROP des tests de performance #5367 (Olga Khvostikova)

Version de ClickHouse 19.7

Version de ClickHouse 19.7.5.29, 2019-07-05

Correction de bug

  • Correction d’une régression des performances pour certaines requêtes avec JOIN. #5192 (Winter Zhang)

Version de ClickHouse 19.7.5.27, 2019-06-09

Nouvelles fonctionnalités

  • Ajout des fonctions liées aux bitmaps bitmapHasAny et bitmapHasAll, analogues aux fonctions hasAny et hasAll pour les tableaux. #5279 (Sergi Vladykin)

Corrections de bugs

  • Correction d’un segfault sur minmax INDEX avec une valeur NULL. #5246 (Nikita Vasilev)
  • Marquer toutes les colonnes d’entrée dans LIMIT BY comme sorties requises. Cela corrige l’erreur « Not found column » dans certaines requêtes distribuées. #5407 (Constantin S. Pan)
  • Correction de l’erreur « Column ‘0’ already exists » dans SELECT .. PREWHERE sur une colonne avec DEFAULT. #5397 (proller)
  • Correction de la requête ALTER MODIFY TTL sur ReplicatedMergeTree. #5539 (Anton Popov)
  • Ne pas faire planter le serveur lorsque les consumers Kafka ne parviennent pas à démarrer. #5285 (Ivan)
  • Correction des fonctions bitmap qui produisaient un résultat erroné. #5359 (Andy Yang)
  • Correction de element_count pour le dictionnaire haché (sans inclure les doublons). #5440 (Azat Khuzhin)
  • Utiliser le contenu de la variable d’environnement TZ comme nom de fuseau horaire. Cela permet, dans certains cas, de détecter correctement le fuseau horaire par défaut.#5443 (Ivan)
  • Ne pas essayer de convertir les entiers dans les fonctions dictGetT, car cela ne fonctionne pas correctement. Lever une exception à la place. #5446 (Artem Zuikov)
  • Correction des settings dans la requête HTTP ExternalData. #5455 (Danila Kutenin)
  • Correction d’un bug où des parts étaient supprimées uniquement du FS sans être supprimées de Zookeeper. #5520 (alesapin)
  • Correction d’un segfault dans la fonction bitmapHasAny. #5528 (Zhichang Yu)
  • Correction d’une erreur où le pool de connexions de réplication ne réessayait pas de résoudre l’hôte, même après suppression du cache DNS. #5534 (alesapin)
  • Correction de la requête DROP INDEX IF EXISTS. Désormais, la requête ALTER TABLE ... DROP INDEX IF EXISTS ... ne lève pas d’exception si l’index indiqué n’existe pas. #5524 (Gleb Novikov)
  • Correction du supertype de colonne pour union all. Dans certains cas, les données et les types des colonnes résultantes étaient incohérents. #5503 (Artem Zuikov)
  • Ignorer ZNONODE pendant le traitement des requêtes DDL. Auparavant, si un autre nœud supprimait le znode dans la file de tâches, celui qui ne l’avait pas traité, mais avait déjà récupéré la liste des nœuds enfants, arrêtait le thread DDLWorker. #5489 (Azat Khuzhin)
  • Correction de INSERT dans une table Distributed() avec une colonne MATERIALIZED. #5429 (Azat Khuzhin)

Version de ClickHouse 19.7.3.9, 2019-05-30

Nouvelles fonctionnalités

  • Possibilité de limiter la plage de valeurs d’un paramètre pouvant être défini par l’utilisateur. Ces contraintes peuvent être définies dans le profil de paramètres utilisateur. #4931 (Vitaly Baranov)
  • Ajout d’une seconde version de la fonction groupUniqArray avec un paramètre facultatif max_size qui limite la taille du tableau résultant. Ce comportement est similaire à celui de la fonction groupArray(max_size)(x). #5026 (Guillaume Tassery)
  • Pour les formats de fichier d’entrée TSVWithNames/CSVWithNames, l’ordre des colonnes peut désormais être déterminé à partir de l’en-tête du fichier. Ce comportement est contrôlé par le paramètre input_format_with_names_use_header. #5081 (Alexander)

Corrections de bugs

  • Plantage avec uncompressed_cache + JOIN lors d’une fusion (#5197) #5133 (Danila Kutenin)
  • Erreur de segmentation sur une requête clickhouse-client vers les tables système. #5066 #5127 (Ivan)
  • Perte de données sous forte charge via KafkaEngine (#4736) #5080 (Ivan)
  • Correction d’une situation de concurrence sur les données très rare pouvant se produire lors de l’exécution d’une requête avec UNION ALL impliquant au moins deux SELECT depuis system.columns, system.tables, system.parts, system.parts_tables ou des tables de la famille Merge, avec exécution concurrente d’un ALTER sur les colonnes des tables concernées. #5189 (alexey-milovidov)

Améliorations des performances

Documentation

Améliorations du build, des tests et du packaging

Version de ClickHouse 19.6

Version de ClickHouse 19.6.3.18, 2019-06-13

Corrections de bugs

  • Correction du pushdown de la condition IN pour les requêtes issues des fonctions de table mysql et odbc, ainsi que des moteurs de table correspondants. Cela corrige #3540 et #2384. #5313 (alexey-milovidov)
  • Correction d’un interblocage dans Zookeeper. #5297 (github1youlc)
  • Prise en charge des décimaux entre guillemets dans les fichiers CSV. #5284 (Artem Zuikov
  • Interdiction de convertir des valeurs float Inf/NaN en Decimals (déclenche une exception). #5282 (Artem Zuikov)
  • Correction d’une data race dans la requête rename. #5247 (Winter Zhang)
  • Désactivation temporaire de LFAlloc. L’utilisation de LFAlloc peut entraîner de nombreux MAP_FAILED lors de l’allocation de UncompressedCache et, par conséquent, provoquer des plantages de requêtes sur des serveurs fortement chargés. cfdba93(Danila Kutenin)

Version de ClickHouse 19.6.2.11, 2019-05-13

Nouvelles fonctionnalités

  • Expressions TTL pour les colonnes et les tables. #4212 (Anton Popov)
  • Ajout de la prise en charge de la compression brotli pour les réponses HTTP (Accept-Encoding: br) #4388 (Mikhail)
  • Ajout de la nouvelle fonction isValidUTF8 pour vérifier si un ensemble d’octets est correctement encodé en UTF-8. #4934 (Danila Kutenin)
  • Ajout de la nouvelle politique d’équilibrage de charge first_or_random, qui envoie les requêtes au premier hôte spécifié et, s’il est inaccessible, les envoie vers des hôtes aléatoires du shard. Utile pour les configurations de topologie à réplication croisée. #5012 (nvartolomei)

Fonctionnalités expérimentales

  • Ajout du paramètre index_granularity_bytes (granularité d’index adaptative) pour les tables de la famille MergeTree*. #4826 (alesapin)

Améliorations

  • Ajout de la prise en charge d’arguments de taille et de longueur non constants et négatifs pour la fonction substringUTF8. #4989 (alexey-milovidov)
  • Désactivation du push-down vers la table de droite dans un left join, vers la table de gauche dans un right join, et vers les deux tables dans un full join. Cela corrige des résultats de JOIN incorrects dans certains cas. #4846 (Ivan)
  • clickhouse-copier : téléversement automatique de la configuration de tâche à partir de l’option --task-file #4876 (proller)
  • Ajout d’un gestionnaire de fautes de frappe pour la fabrique de stockage et la fabrique de fonctions de table. #4891 (Danila Kutenin)
  • Prise en charge des astérisques et des astérisques qualifiés pour plusieurs jointures sans sous-requêtes #4898 (Artem Zuikov)
  • Message d’erreur pour colonne manquante rendu plus convivial. #4915 (Artem Zuikov)

Améliorations des performances

Modifications rétrocompatibles

  • L’en-tête HTTP Query-Id a été renommé X-ClickHouse-Query-Id pour des raisons de cohérence. #4972 (Mikhail)

Correctifs de bugs

  • Correction d’un possible déréférencement de pointeur nul dans clickhouse-copier. #4900 (proller)
  • Correction d’une erreur survenant dans une query avec JOIN + ARRAY JOIN #4938 (Artem Zuikov)
  • Correction d’un blocage au démarrage du serveur lorsqu’un Dictionary dépend d’un autre Dictionary via une database avec engine=Dictionary. #4962 (Vitaly Baranov)
  • Correction partielle de distributed_product_mode = local. Il est désormais possible d’autoriser les columns des tables locales dans where/having/order by/… via des alias de table. Une exception est levée si la table n’a pas d’alias. Il n’est toutefois pas encore possible d’accéder aux columns sans alias de table. #4986 (Artem Zuikov)
  • Correction d’un résultat potentiellement incorrect pour SELECT DISTINCT avec JOIN #5001 (Artem Zuikov)
  • Correction d’une situation de concurrence sur les données très rare pouvant survenir lors de l’exécution d’une query avec UNION ALL impliquant au moins deux SELECT depuis system.columns, system.tables, system.parts, system.parts_tables ou des tables de la famille Merge, avec en parallèle un ALTER des columns des tables concernées. #5189 (alexey-milovidov)

Améliorations de build/test/packaging

  • Correction des échecs de test lors de l’exécution de clickhouse-server sur différents hôtes #4713 (Vasily Nemkov)
  • clickhouse-test : désactivation des séquences de contrôle des couleurs dans un environnement non-TTY. #4937 (alesapin)
  • clickhouse-test : autorisation de l’utilisation de toute base de données de test (suppression de la qualification test. lorsque c’est possible) #5008 (proller)
  • Correction des erreurs ubsan #5037 (Vitaly Baranov)
  • Ajout de Yandex LFAlloc à ClickHouse pour allouer différemment les données de MarkCache et UncompressedCache afin de détecter les segfaults de manière plus fiable #4995 (Danila Kutenin)
  • Utilitaire Python pour faciliter les backports et les changelogs. #4949 (Ivan)

Version 19.5 de ClickHouse

Version de ClickHouse 19.5.4.22, 2019-05-13

Correctif de bug

  • Correction d’un plantage possible dans les fonctions bitmap* #5220 #5228 (Andy Yang)
  • Correction d’une très rare situation de concurrence sur les données pouvant se produire lors de l’exécution d’une query avec UNION ALL impliquant au moins deux SELECT sur system.columns, system.tables, system.parts, system.parts_tables ou des tables de la famille Merge, tout en effectuant simultanément un ALTER sur les colonnes des tables concernées. #5189 (alexey-milovidov)
  • Correction de l’erreur Set for IN is not created yet in case of using single LowCardinality column in the left part of IN. Cette erreur se produisait si la colonne LowCardinality faisait partie de la clé primaire. #5031 #5154 (Nikolai Kochetov)
  • Modification de la fonction retention : si une ligne satisfaisait à la fois la première et la N-ième condition, seule la première condition satisfaite était ajoutée à l’état des données. Désormais, toutes les conditions satisfaites dans une ligne sont ajoutées à l’état des données. #5119 (小路)

Version de ClickHouse 19.5.3.8, 2019-04-18

Correctifs

Version de ClickHouse 19.5.2.6, 2019-04-15

Nouvelles fonctionnalités

  • Ajout de la correspondance multiple d’expressions régulières avec Hyperscan (fonctions multiMatchAny, multiMatchAnyIndex, multiFuzzyMatchAny, multiFuzzyMatchAnyIndex). #4780, #4841 (Danila Kutenin)
  • La fonction multiSearchFirstPosition a été ajoutée. #4780 (Danila Kutenin)
  • Implémentation d’un filtre d’expression prédéfini par ligne pour les tables. #4792 (Ivan)
  • Un nouveau type d’indices de saut de données basé sur les bloom filters (peut être utilisé pour les fonctions equal, in et like). #4499 (Nikita Vasilev)
  • Ajout de ASOF JOIN, qui permet d’exécuter des requêtes avec jointure sur la valeur connue la plus récente. #4774 #4867 #4863 #4875 (Martijn Bakker, Artem Zuikov)
  • Réécriture de plusieurs COMMA JOIN en CROSS JOIN, puis en INNER JOIN lorsque c’est possible. #4661 (Artem Zuikov)

Amélioration

  • topK et topKWeighted prennent désormais en charge un loadFactor personnalisé (corrige le problème #4252). #4634 (Kirill Danshin)
  • Permet d’utiliser parallel_replicas_count > 1 même pour les tables sans échantillonnage (le paramètre est simplement ignoré dans ce cas). Dans les versions précédentes, cela entraînait une exception. #4637 (Alexey Elymanov)
  • Prise en charge de CREATE OR REPLACE VIEW. Permet de créer une vue ou d’en redéfinir la définition en une seule instruction. #4654 (Boris Granveaud)
  • Le moteur de table Buffer prend désormais en charge PREWHERE. #4671 (Yangkuan Liu)
  • Ajout de la possibilité de démarrer une table répliquée sans métadonnées dans ZooKeeper en mode readonly. #4691 (alesapin)
  • Correction du scintillement de la barre de progression dans clickhouse-client. Le problème était particulièrement visible lors de l’utilisation de FORMAT Null avec des requêtes en streaming. #4811 (alexey-milovidov)
  • Permet de désactiver, par utilisateur, les fonctions de la bibliothèque hyperscan afin de limiter une consommation de ressources potentiellement excessive et incontrôlée. #4816 (alexey-milovidov)
  • Ajout de la journalisation du numéro de version dans toutes les erreurs. #4824 (proller)
  • Ajout d’une restriction aux fonctions multiMatch imposant que la taille de la chaîne tienne dans un unsigned int. Une limite sur le nombre d’arguments a également été ajoutée aux fonctions multiSearch. #4834 (Danila Kutenin)
  • Amélioration de l’utilisation de l’espace de travail temporaire et de la gestion des erreurs dans Hyperscan. #4866 (Danila Kutenin)
  • Alimente system.graphite_detentions à partir de la configuration des tables utilisant un moteur *GraphiteMergeTree. #4584 (Mikhail f. Shiryaev)
  • Renomme la fonction trigramDistance en ngramDistance et ajoute davantage de fonctions avec CaseInsensitive et UTF. #4602 (Danila Kutenin)
  • Amélioration du calcul des index de saut de données. #4640 (Nikita Vasilev)
  • Conserve les colonnes ordinaires, DEFAULT, MATERIALIZED et ALIAS dans une seule liste (corrige le problème #2867). #4707 (Alex Zatelepin)

Correction de bugs

  • Évite std::terminate en cas d’échec d’allocation de mémoire. Désormais, l’exception std::bad_alloc est levée comme prévu. #4665 (alexey-milovidov)
  • Corrige la lecture de capnproto depuis le tampon. Il arrivait parfois que les fichiers ne se chargent pas correctement via HTTP. #4674 (Vladislav)
  • Corrige l’erreur Unknown log entry type: 0 après une requête OPTIMIZE TABLE FINAL. #4683 (Amos Bird)
  • Des arguments incorrects pour les fonctions hasAny ou hasAll peuvent provoquer un segfault. #4698 (alexey-milovidov)
  • Un interblocage peut se produire lors de l’exécution de la requête DROP DATABASE dictionary. #4701 (alexey-milovidov)
  • Corrige un comportement indéfini dans les fonctions median et quantile. #4702 (hcz)
  • Corrige la détection du niveau de compression lorsque network_compression_method est en minuscules. Régression introduite dans la v19.1. #4706 (proller)
  • Corrige la non-prise en compte du paramètre <timezone>UTC</timezone> (corrige le ticket #4658). #4718 (proller)
  • Corrige le comportement de la fonction histogram avec les tables Distributed. #4741 (olegkv)
  • Corrige le rapport tsan destroy of a locked mutex. #4742 (alexey-milovidov)
  • Corrige un rapport TSan à l’arrêt dû à une race condition dans l’utilisation des logs système. Corrige également un possible use-after-free à l’arrêt lorsque part_log est activé. #4758 (alexey-milovidov)
  • Corrige la revérification des parts dans ReplicatedMergeTreeAlterThread en cas d’erreur. #4772 (Nikolai Kochetov)
  • Les opérations arithmétiques sur les états intermédiaires de fonctions d’agrégation ne fonctionnaient pas avec des arguments constants (comme les résultats de sous-requêtes). #4776 (alexey-milovidov)
  • Entoure toujours les noms de colonnes d’accents graves dans les métadonnées. Sinon, il est impossible de créer une table avec une colonne nommée index (le serveur ne redémarrera pas à cause d’une requête ATTACH mal formée dans les métadonnées). #4782 (alexey-milovidov)
  • Corrige un crash dans ALTER ... MODIFY ORDER BY sur une table Distributed. #4790 (TCeason)
  • Corrige un segfault dans JOIN ON avec enable_optimize_predicate_expression activé. #4794 (Winter Zhang)
  • Corrige un bug qui ajoutait une ligne superflue après la consommation d’un message Protobuf depuis Kafka. #4808 (Vitaly Baranov)
  • Corrige le crash de JOIN sur une colonne non Nullable vs Nullable. Corrige les NULLs dans les clés de droite dans ANY JOIN + join_use_nulls. #4815 (Artem Zuikov)
  • Corrige une faute de segmentation dans clickhouse-copier. #4835 (proller)
  • Corrige une condition de concurrence dans SELECT depuis system.tables si la table est renommée ou modifiée simultanément. #4836 (alexey-milovidov)
  • Corrige une data race lors de la récupération d’une data part déjà obsolète. #4839 (alexey-milovidov)
  • Corrige une rare data race pouvant survenir pendant RENAME d’une table de la famille MergeTree. #4844 (alexey-milovidov)
  • Corrige une faute de segmentation dans la fonction arrayIntersect. Une faute de segmentation pouvait se produire si la fonction était appelée avec un mélange d’arguments constants et non constants. #4847 (Lixiang Qian)
  • Corrige la lecture d’une colonne Array(LowCardinality) dans le rare cas où la colonne contenait une longue séquence de tableaux vides. #4850 (Nikolai Kochetov)
  • Corrige un crash dans FULL/RIGHT JOIN lors d’une jointure sur Nullable vs non Nullable. #4855 (Artem Zuikov)
  • Corrige l’exception No message received lors de la récupération de parts entre répliques. #4856 (alesapin)
  • Corrige le résultat erroné de la fonction arrayIntersect dans le cas de plusieurs valeurs répétées dans un même tableau. #4871 (Nikolai Kochetov)
  • Corrige une condition de concurrence pendant des requêtes ALTER COLUMN exécutées simultanément, qui pouvait entraîner un crash du serveur (corrige l’issue #3421). #4592 (Alex Zatelepin)
  • Corrige un résultat incorrect dans FULL/RIGHT JOIN avec une colonne constante. #4723 (Artem Zuikov)
  • Corrige les doublons dans GLOBAL JOIN avec un astérisque. #4705 (Artem Zuikov)
  • Corrige la déduction des paramètres dans ALTER MODIFY de la colonne CODEC lorsque le type de la colonne n’est pas spécifié. #4883 (alesapin)
  • Les fonctions cutQueryStringAndFragment() et queryStringAndFragment() fonctionnent désormais correctement lorsque URL contient un fragment et aucune requête. #4894 (Vitaly Baranov)
  • Corrige un bug rare lorsque le paramètre min_bytes_to_use_direct_io est supérieur à zéro, qui se produit lorsqu’un thread doit effectuer un seek vers l’arrière dans un column file. #4897 (alesapin)
  • Corrige des types d’arguments incorrects pour les fonctions d’agrégation avec des arguments LowCardinality (corrige le problème #4919). #4922 (Nikolai Kochetov)
  • Corrige une qualification incorrecte des noms dans GLOBAL JOIN. #4969 (Artem Zuikov)
  • Corrige le résultat de la fonction toISOWeek pour l’année 1970. #4988 (alexey-milovidov)
  • Corrige la duplication des requêtes DROP, TRUNCATE et OPTIMIZE lors de leur exécution avec ON CLUSTER pour la famille de tables ReplicatedMergeTree*. #4991 (alesapin)

Changement incompatible avec les versions précédentes

  • Le paramètre insert_sample_with_metadata a été renommé en input_format_defaults_for_omitted_fields. #4771 (Artem Zuikov)
  • Ajout du paramètre max_partitions_per_insert_block (avec une valeur par défaut de 100). Si le bloc inséré contient un nombre de partitions supérieur, une exception est levée. Définissez-le sur 0 si vous souhaitez supprimer cette limite (déconseillé). #4845 (alexey-milovidov)
  • Les fonctions de recherche multiple ont été renommées (multiPosition en multiSearchAllPositions, multiSearch en multiSearchAny, firstMatch en multiSearchFirstIndex). #4780 (Danila Kutenin)

Amélioration des performances

  • Optimisation de l’algorithme de recherche Volnitsky grâce à l’inlining, avec un gain d’environ 5 à 10 % pour les requêtes comportant de nombreux motifs ou beaucoup de bigrammes similaires. #4862 (Danila Kutenin)
  • Correction d’un problème de performances lorsque le paramètre use_uncompressed_cache est supérieur à zéro, qui survenait lorsque toutes les données lues étaient contenues dans le cache. #4913 (alesapin)

Amélioration du build, des tests et du packaging

  • Renforcement du build de débogage : memory mappings plus granulaires et ASLR ; ajout d’une protection mémoire pour le mark cache et l’index. Cela permet de détecter davantage de bugs d’écrasement mémoire lorsque ASan et MSan n’y parviennent pas. #4632 (alexey-milovidov)
  • Ajout de la prise en charge des variables cmake ENABLE_PROTOBUF, ENABLE_PARQUET et ENABLE_BROTLI, permettant d’activer ou de désactiver les fonctionnalités ci-dessus (comme c’est déjà le cas pour librdkafka, mysql, etc.). #4669 (Silviu Caragea)
  • Ajout de la possibilité d’afficher la liste des processus et les stacktraces de tous les threads si certaines requêtes restent bloquées après l’exécution des tests. #4675 (alesapin)
  • Ajout de tentatives de nouvelle connexion en cas d’erreur Connection loss dans clickhouse-test. #4682 (alesapin)
  • Ajout au script packager d’un build FreeBSD avec Vagrant et d’un build avec Thread Sanitizer. #4712 #4748 (alesapin)
  • Désormais, un mot de passe est demandé pour l’utilisateur 'default' pendant l’installation. #4725 (proller)
  • Suppression d’un avertissement dans la bibliothèque rdkafka. #4740 (alexey-milovidov)
  • Possibilité de compiler sans SSL. #4750 (proller)
  • Ajout d’un moyen de lancer l’image clickhouse-server avec un utilisateur personnalisé. #4753 (Mikhail f. Shiryaev)
  • Mise à niveau de contrib boost vers la version 1.69. #4793 (proller)
  • Désactivation de l’utilisation de mremap lors de la compilation avec Thread Sanitizer. Étonnamment, TSan n’intercepte pas mremap (bien qu’il intercepte mmap et munmap), ce qui entraîne des faux positifs. Correction d’un signalement TSan dans les tests stateful. #4859 (alexey-milovidov)
  • Ajout d’un test vérifiant l’utilisation d’un schéma de format via l’interface HTTP. #4864 (Vitaly Baranov)

Version 19.4 de ClickHouse

Version de ClickHouse 19.4.4.33, 2019-04-17

Correctif de bug

  • Évite std::terminate en cas d’échec d’allocation de mémoire. Désormais, l’exception std::bad_alloc est levée comme prévu. #4665 (alexey-milovidov)
  • Corrige la lecture de capnproto depuis le buffer. Il arrivait parfois que les fichiers ne soient pas chargés correctement via HTTP. #4674 (Vladislav)
  • Corrige l’erreur Unknown log entry type: 0 après une requête OPTIMIZE TABLE FINAL. #4683 (Amos Bird)
  • Des arguments incorrects pour les fonctions hasAny ou hasAll peuvent provoquer un segfault. #4698 (alexey-milovidov)
  • Un interblocage peut se produire lors de l’exécution de la requête DROP DATABASE dictionary. #4701 (alexey-milovidov)
  • Corrige un comportement indéfini dans les fonctions median et quantile. #4702 (hcz)
  • Corrige la détection du niveau de compression lorsque network_compression_method est en minuscules. Régression introduite dans la v19.1. #4706 (proller)
  • Corrige la non-prise en compte du paramètre <timezone>UTC</timezone> (corrige le ticket #4658). #4718 (proller)
  • Corrige le comportement de la fonction histogram avec les tables Distributed. #4741 (olegkv)
  • Corrige le rapport tsan destroy of a locked mutex. #4742 (alexey-milovidov)
  • Corrige un rapport TSan à l’arrêt dû à une race condition dans l’utilisation des logs système. Corrige également un possible use-after-free à l’arrêt lorsque part_log est activé. #4758 (alexey-milovidov)
  • Corrige la revérification des parts dans ReplicatedMergeTreeAlterThread en cas d’erreur. #4772 (Nikolai Kochetov)
  • Les opérations arithmétiques sur les états intermédiaires des fonctions d’agrégation ne fonctionnaient pas avec des arguments constants (comme les résultats de sous-requêtes). #4776 (alexey-milovidov)
  • Toujours entourer les noms de colonnes d’accents graves dans les métadonnées. Sinon, il est impossible de créer une table avec une colonne nommée index (le serveur ne redémarre pas à cause d’une requête ATTACH mal formée dans les métadonnées). #4782 (alexey-milovidov)
  • Corrige un crash dans ALTER ... MODIFY ORDER BY sur une table Distributed. #4790 (TCeason)
  • Corrige un segfault dans JOIN ON avec enable_optimize_predicate_expression activé. #4794 (Winter Zhang)
  • Corrige un bug qui ajoutait une ligne superflue après la consommation d’un message Protobuf depuis Kafka. #4808 (Vitaly Baranov)
  • Corrige une erreur de segmentation dans clickhouse-copier. #4835 (proller)
  • Corrige une condition de concurrence dans SELECT sur system.tables si la table est renommée ou modifiée simultanément. #4836 (alexey-milovidov)
  • Corrige une concurrence d’accès aux données lors de la récupération d’une data part déjà obsolète. #4839 (alexey-milovidov)
  • Corrige une rare concurrence d’accès aux données pouvant se produire lors du RENAME d’une table de la famille MergeTree. #4844 (alexey-milovidov)
  • Corrige une erreur de segmentation dans la fonction arrayIntersect. Une erreur de segmentation pouvait se produire si la fonction était appelée avec un mélange d’arguments constants et ordinaires. #4847 (Lixiang Qian)
  • Corrige la lecture d’une colonne Array(LowCardinality) dans le rare cas où la colonne contenait une longue séquence de tableaux vides. #4850 (Nikolai Kochetov)
  • Corrige l’exception No message received lors de la récupération de parties entre répliques. #4856 (alesapin)
  • Corrige le résultat erroné de la fonction arrayIntersect en cas de plusieurs valeurs répétées dans un même tableau. #4871 (Nikolai Kochetov)
  • Corrige une condition de concurrence lors de requêtes ALTER COLUMN concurrentes pouvant entraîner un crash du serveur (corrige le ticket #3421). #4592 (Alex Zatelepin)
  • Corrige la déduction des paramètres dans ALTER MODIFY de la colonne CODEC lorsque le type de colonne n’est pas spécifié. #4883 (alesapin)
  • Les fonctions cutQueryStringAndFragment() et queryStringAndFragment() fonctionnent désormais correctement lorsque URL contient un fragment et aucune chaîne de requête. #4894 (Vitaly Baranov)
  • Corrige un bug rare lorsque le paramètre min_bytes_to_use_direct_io est supérieur à zéro, qui se produit lorsqu’un thread doit revenir en arrière dans un fichier de colonne. #4897 (alesapin)
  • Corrige les types d’argument erronés pour les fonctions d’agrégation avec des arguments LowCardinality (corrige le ticket #4919). #4922 (Nikolai Kochetov)
  • Corrige le résultat de la fonction toISOWeek pour l’année 1970. #4988 (alexey-milovidov)
  • Corrige la duplication des requêtes DROP, TRUNCATE et OPTIMIZE lorsqu’elles sont exécutées avec ON CLUSTER pour la famille de tables ReplicatedMergeTree*. #4991 (alesapin)

Améliorations

  • Regroupe les colonnes ordinaires, DEFAULT, MATERIALIZED et ALIAS dans une seule liste (corrige l’issue #2867). #4707 (Alex Zatelepin)

Version de ClickHouse 19.4.3.11, 2019-04-02

Correctifs de bugs

  • Correction d’un crash dans FULL/RIGHT JOIN lors d’une jointure entre des colonnes Nullable et non Nullable. #4855 (Artem Zuikov)
  • Correction d’une erreur de segmentation dans clickhouse-copier. #4835 (proller)

Amélioration du build/des tests/du packaging

Version de ClickHouse 19.4.2.7, 2019-03-30

Corrections de bugs

  • Correction de la lecture d’une colonne Array(LowCardinality) dans le cas rare où elle contenait une longue séquence de tableaux vides. #4850 (Nikolai Kochetov)

Version de ClickHouse 19.4.1.3, 2019-03-19

Corrections de bugs

  • Correction des requêtes distantes contenant à la fois LIMIT BY et LIMIT. Auparavant, si LIMIT BY et LIMIT étaient utilisés dans une requête distante, LIMIT pouvait être appliqué avant LIMIT BY, ce qui entraînait un résultat excessivement filtré. #4708 (Constantin S. Pan)

Version de ClickHouse 19.4.0.49, 2019-03-09

Nouvelles fonctionnalités

  • Ajout de la prise en charge complète du format Protobuf (entrée et sortie, structures de données imbriquées). #4174 #4493 (Vitaly Baranov)
  • Ajout de fonctions de bitmap avec Roaring Bitmaps. #4207 (Andy Yang) #4568 (Vitaly Baranov)
  • Prise en charge du format Parquet. #4448 (proller)
  • Ajout de la distance par n-grammes pour la comparaison approximative de chaînes. Elle est similaire aux métriques q-gram du langage R. #4466 (Danila Kutenin)
  • Combinaison des règles de rollup Graphite à partir de patterns dédiés d’agrégation et de rétention. #4426 (Mikhail f. Shiryaev)
  • Ajout de max_execution_speed et max_execution_speed_bytes pour limiter l’utilisation des ressources. Ajout du paramètre min_execution_speed_bytes en complément de min_execution_speed. #4430 (Winter Zhang)
  • Implémentation de la fonction flatten. #4555 #4409 (alexey-milovidov, kzon)
  • Ajout des fonctions arrayEnumerateDenseRanked et arrayEnumerateUniqRanked (semblables à arrayEnumerateUniq, mais permettant de régler finement la profondeur pour explorer des tableaux multidimensionnels). #4475 (proller) #4601 (alexey-milovidov)
  • Plusieurs JOIN avec certaines restrictions : pas d’astérisques, pas d’alias complexes dans ON/WHERE/GROUP BY/… #4462 (Artem Zuikov)

Corrections de bugs

  • Cette version contient également tous les correctifs de bugs des versions 19.3 et 19.1.
  • Correction d’un bug dans les index de saut de données : l’ordre des granules après INSERT était incorrect. #4407 (Nikita Vasilev)
  • Correction de l’index set pour les colonnes Nullable et LowCardinality. Auparavant, l’utilisation de l’index set avec une colonne Nullable ou LowCardinality entraînait l’erreur Data type must be deserialized with multiple streams lors d’un SELECT. #4594 (Nikolai Kochetov)
  • Définition correcte de update_time lors d’une mise à jour complète d’un dictionnaire executable. #4551 (Tema Novikov)
  • Correction de la barre de progression défaillante dans la version 19.3. #4627 (filimonov)
  • Correction de valeurs incohérentes de MemoryTracker, dans certains cas, lors de la réduction d’une région mémoire. #4619 (alexey-milovidov)
  • Correction d’un comportement indéfini dans ThreadPool. #4612 (alexey-milovidov)
  • Correction d’un crash très rare avec le message mutex lock failed: Invalid argument, qui pouvait se produire lorsqu’une table MergeTree était supprimée en parallèle d’un SELECT. #4608 (Alex Zatelepin)
  • Compatibilité du pilote ODBC avec le type de données LowCardinality. #4381 (proller)
  • FreeBSD : correctif pour l’erreur AIOcontextPool: Found io_event with unknown id 0. #4438 (urgordeadbeef)
  • La table system.part_log était créée quelle que soit la configuration. #4483 (alexey-milovidov)
  • Correction d’un comportement indéfini dans la fonction dictIsIn pour les dictionnaires de type cache. #4515 (alesapin)
  • Correction d’un interblocage lorsqu’une requête SELECT verrouille plusieurs fois la même table (par exemple depuis différents threads ou lors de l’exécution de plusieurs sous-requêtes) et qu’il existe une requête DDL concurrente. #4535 (Alex Zatelepin)
  • Désactivation de compile_expressions par défaut jusqu’à ce que nous disposions de notre propre contrib llvm et puissions le tester avec clang et asan. #4579 (alesapin)
  • Empêche std::terminate lorsque invalidate_query pour la source de dictionnaire externe clickhouse renvoie un jeu de résultats incorrect (vide, ou avec plus d’une ligne, ou plus d’une colonne). Correction également d’un problème où invalidate_query était exécutée toutes les cinq secondes indépendamment du lifetime. #4583 (alexey-milovidov)
  • Évite un interblocage lorsque invalidate_query pour un dictionnaire avec une source clickhouse impliquait la table system.dictionaries ou la base de données Dictionaries (cas rare). #4599 (alexey-milovidov)
  • Correctifs pour CROSS JOIN avec une clause WHERE vide. #4598 (Artem Zuikov)
  • Correction d’un segfault dans la fonction “replicate” lorsqu’un argument constant est passé. #4603 (alexey-milovidov)
  • Correction d’une lambda function avec l’optimiseur de prédicats. #4408 (Winter Zhang)
  • Corrections multiples des JOIN. #4595 (Artem Zuikov)

Améliorations

  • Prise en charge des alias dans la section JOIN ON pour les colonnes de la table de droite. #4412 (Artem Zuikov)
  • Le résultat de plusieurs JOIN doit avoir des noms corrects pour pouvoir être utilisé dans des sous-requêtes. Remplacement des alias plats par des noms de source dans le résultat. #4474 (Artem Zuikov)
  • Amélioration de la logique de push-down pour les requêtes avec jointure. #4387 (Ivan)

Améliorations des performances

  • Amélioration des heuristiques de l’optimisation « move to PREWHERE ». #4405 (alexey-milovidov)
  • Utilisation de tables de correspondance appropriées s’appuyant sur l’API de HashTable pour les clés de 8 et 16 bits. #4536 (Amos Bird)
  • Amélioration des performances de comparaison des chaînes. #4564 (alexey-milovidov)
  • Nettoyage de la file d’attente des DDL distribués dans un thread distinct, afin de ne pas ralentir la boucle principale qui traite les tâches de DDL distribuées. #4502 (Alex Zatelepin)
  • Lorsque min_bytes_to_use_direct_io est défini sur 1, les fichiers n’étaient pas tous ouverts en mode O_DIRECT, car la taille des données à lire était parfois sous-estimée de la taille d’un bloc compressé. #4526 (alexey-milovidov)

Amélioration du build/des tests/du packaging

  • Ajout de la prise en charge de clang-9 #4604 (alexey-milovidov)
  • Correction d’instructions __asm__ erronées (encore) #4621 (Konstantin Podshumok)
  • Ajout de la possibilité de spécifier des paramètres pour clickhouse-performance-test depuis la ligne de commande. #4437 (alesapin)
  • Ajout de tests sur les Dictionaries aux tests d’intégration. #4477 (alesapin)
  • Ajout aux tests de performance automatisés des requêtes du benchmark présentes sur le site web. #4496 (alexey-milovidov)
  • xxhash.h n’existe pas dans lz4 externe, car il s’agit d’un détail d’implémentation et ses symboles sont placés dans un espace de noms via la macro XXH_NAMESPACE. Lorsque lz4 est externe, xxHash doit l’être aussi, et les composants dépendants doivent être liés à celui-ci. #4495 (Orivej Desh)
  • Correction d’un cas où la fonction d’agrégation quantileTiming pouvait être appelée avec un argument négatif ou à virgule flottante (cela corrige un test de fuzzing avec le sanitizer de comportement indéfini). #4506 (alexey-milovidov)
  • Correction d’une faute d’orthographe. #4531 (sdk2)
  • Correction de la compilation sur Mac. #4371 (Vitaly Baranov)
  • Correctifs de compilation pour FreeBSD et diverses configurations de compilation inhabituelles. #4444 (proller)

Version de ClickHouse 19.3

Version de ClickHouse 19.3.9.1, 2019-04-02

Corrections de bugs

  • Corrige un plantage dans FULL/RIGHT JOIN lors d’une jointure entre un type nullable et un type non nullable. #4855 (Artem Zuikov)
  • Corrige une erreur de segmentation dans clickhouse-copier. #4835 (proller)
  • Corrige la lecture d’une colonne Array(LowCardinality) dans le cas rare où la colonne contenait une longue séquence de tableaux vides. #4850 (Nikolai Kochetov)

Amélioration du build/des tests/du packaging

Version de ClickHouse 19.3.7, 2019-03-12

Corrections de bugs

  • Correction d’une erreur dans #3920. Cette erreur se manifeste par une corruption aléatoire du cache (messages Unknown codec family code, Cannot seek through file) et des segfaults. Ce bug est apparu pour la première fois dans la version 19.1 et est présent jusqu’aux versions 19.1.10 et 19.3.6 incluses. #4623 (alexey-milovidov)

Version 19.3.6 de ClickHouse, 2019-03-02

Corrections de bugs

  • Lorsqu’il y a plus de 1000 threads dans un pool de threads, std::terminate peut se produire lors de la terminaison d’un thread. Azat Khuzhin #4485 #4505 (alexey-milovidov)
  • Il est désormais possible de créer des tables ReplicatedMergeTree* avec des commentaires sur des colonnes sans valeurs par défaut, ainsi que des tables avec des codecs de colonnes sans commentaires ni valeurs par défaut. Correction également de la comparaison des codecs. #4523 (alesapin)
  • Correction d’un plantage sur JOIN avec un Array ou un Tuple. #4552 (Artem Zuikov)
  • Correction d’un plantage dans clickhouse-copier avec le message ThreadStatus not created. #4540 (Artem Zuikov)
  • Correction d’un blocage à l’arrêt du serveur si des DDL distribués avaient été utilisés. #4472 (Alex Zatelepin)
  • Des numéros de colonnes incorrects étaient affichés dans le message d’erreur concernant l’analyse du format texte pour les colonnes dont le numéro est supérieur à 10. #4484 (alexey-milovidov)

Améliorations de build/tests/packaging

  • Correction de la compilation avec AVX activé. #4527 (alexey-milovidov)
  • Activation de la comptabilisation étendue et de la comptabilisation des E/S en se basant sur une version reconnue comme correcte, plutôt que sur le noyau avec lequel il a été compilé. #4541 (nvartolomei)
  • Possibilité d’ignorer le paramétrage de core_dump.size_limit, avec un avertissement au lieu d’une exception si la définition de la limite échoue. #4473 (proller)
  • Suppression des mots-clés inline de void readBinary(...) dans Field.cpp. Fusion également des blocs namespace DB redondants. #4530 (hcz)

Version 19.3.5 de ClickHouse, 2019-02-21

Corrections de bugs

  • Correction d’un bug dans le traitement des requêtes d’insert HTTP volumineuses. #4454 (alesapin)
  • Correction d’une rupture de compatibilité avec les anciennes versions due à une implémentation incorrecte du paramètre send_logs_level. #4445 (alexey-milovidov)
  • Correction d’une rupture de compatibilité de la fonction de table remote introduite avec les commentaires de colonnes. #4446 (alexey-milovidov)

Version de ClickHouse 19.3.4, 2019-02-16

Améliorations

  • La taille de l’index d’une table n’est pas prise en compte dans les limites mémoire lors de l’exécution d’une requête ATTACH TABLE. Cela évite qu’une table ne puisse pas être attachée après avoir été détachée. #4396 (alexey-milovidov)
  • La limite maximale de taille des chaînes et des tableaux reçus depuis ZooKeeper a été légèrement augmentée. Cela permet de continuer à fonctionner avec une valeur accrue de CLIENT_JVMFLAGS=-Djute.maxbuffer=... sur ZooKeeper. #4398 (alexey-milovidov)
  • Permet de réparer une replica abandonnée même si elle contient déjà un très grand nombre de nœuds dans sa file d’attente. #4399 (alexey-milovidov)
  • Ajout d’un argument obligatoire à l’index SET (nombre maximal de lignes stockées). #4386 (Nikita Vasilev)

Corrections de bugs

  • Correction du résultat de WITH ROLLUP pour un group by sur une seule clé LowCardinality. #4384 (Nikolai Kochetov)
  • Correction d’un bug dans l’index Set (suppression d’une granule si elle contient plus de max_rows lignes). #4386 (Nikita Vasilev)
  • Nombreux correctifs de build pour FreeBSD. #4397 (proller)
  • Correction de la substitution des alias dans les requêtes avec une sous-requête contenant le même alias (issue #4110). #4351 (Artem Zuikov)

Améliorations de build/tests/packaging

  • Ajout de la possibilité d’exécuter clickhouse-server pour des tests sans état au sein de l’image Docker. #4347 (Vasily Nemkov)

Version de ClickHouse 19.3.3 du 2019-02-13

Nouvelles fonctionnalités

  • Ajout de l’instruction KILL MUTATION, qui permet de supprimer les mutations bloquées pour une raison quelconque. Ajout des champs latest_failed_part, latest_fail_time et latest_fail_reason à la table system.mutations pour faciliter le dépannage. #4287 (Alex Zatelepin)
  • Ajout de la fonction d’agrégation entropy, qui calcule l’entropie de Shannon. #4238 (Quid37)
  • Ajout de la possibilité d’envoyer au serveur des requêtes INSERT INTO tbl VALUES (.... sans les scinder en parties query et data. #4301 (alesapin)
  • Ajout d’une implémentation générique de la fonction arrayWithConstant. #4322 (alexey-milovidov)
  • Implémentation de l’opérateur de comparaison NOT BETWEEN. #4228 (Dmitry Naumov)
  • Implémentation de sumMapFiltered afin de limiter le nombre de clés pour lesquelles les valeurs sont additionnées par sumMap. #4129 (Léo Ercolanelli)
  • Ajout de la prise en charge des types Nullable dans la fonction de table mysql. #4198 (Emmanuel Donin de Rosière)
  • Prise en charge des expressions constantes arbitraires dans la clause LIMIT. #4246 (k3box)
  • Ajout de la fonction d’agrégation topKWeighted, qui accepte un argument supplémentaire correspondant à un poids (entier non signé). #4245 (Andrew Golman)
  • StorageJoin prend désormais en charge le paramètre join_any_take_last_row, qui permet d’écraser les valeurs existantes pour une même clé. #3973 (Amos Bird
  • Ajout de la fonction toStartOfInterval. #4304 (Vitaly Baranov)
  • Ajout du format RowBinaryWithNamesAndTypes. #4200 (Oleg V. Kozlyuk)
  • Ajout des types de données IPv4 et IPv6. Implémentations plus efficaces des fonctions IPv*. #3669 (Vasily Nemkov)
  • Ajout de la fonction toStartOfTenMinutes(). #4298 (Vitaly Baranov)
  • Ajout du format de sortie Protobuf. #4005 #4158 (Vitaly Baranov)
  • Ajout de la prise en charge de brotli dans l’interface HTTP pour l’importation de données (INSERT). #4235 (Mikhail)
  • Ajout d’indications en cas de faute de frappe dans un nom de fonction ou un type dans le client en ligne de commande. #4239 (Danila Kutenin)
  • Ajout de Query-Id à l’en-tête de réponse HTTP du serveur. #4231 (Mikhail)

Fonctionnalités expérimentales

  • Ajout d’index de saut de données minmax et set pour la famille de moteurs de table MergeTree. #4143 (Nikita Vasilev)
  • Ajout de la conversion de CROSS JOIN en INNER JOIN lorsque possible. #4221 #4266 (Artem Zuikov)

Correction de bug

  • Correction de Not found column pour les colonnes dupliquées dans la section JOIN ON. #4279 (Artem Zuikov)
  • La commande START REPLICATED SENDS lance désormais les envois répliqués. #4229 (nvartolomei)
  • Correction de l’exécution des fonctions d’agrégation avec des arguments Array(LowCardinality). #4055 (KochetovNicolai)
  • Correction d’un comportement incorrect lors de l’exécution de la requête INSERT ... SELECT ... FROM file(...) lorsque le fichier est au format CSVWithNames ou TSVWIthNames et que la première ligne de données est manquante. #4297 (alexey-milovidov)
  • Correction d’un crash lors du rechargement d’un dictionnaire si celui-ci n’est pas disponible. Ce bogue est apparu dans la version 19.1.6. #4188 (proller)
  • Correction de ALL JOIN en présence de doublons dans la table de droite. #4184 (Artem Zuikov)
  • Correction d’une erreur de segmentation avec use_uncompressed_cache=1 et d’une exception avec une taille non compressée incorrecte. Ce bogue est apparu dans la version 19.1.6. #4186 (alesapin)
  • Correction d’un bogue dans compile_expressions lors de la comparaison de dates élevées (supérieures à int16). #4341 (alesapin)
  • Correction d’une boucle infinie lors de la sélection depuis la fonction de table numbers(0). #4280 (alexey-milovidov)
  • Désactivation temporaire de l’optimisation de prédicat pour ORDER BY. #3890 (Winter Zhang)
  • Correction de l’erreur Illegal instruction lors de l’utilisation des fonctions base64 sur d’anciens CPU. Cette erreur n’a été reproduite que lorsque ClickHouse était compilé avec gcc-8. #4275 (alexey-milovidov)
  • Correction de l’erreur No message received lors des interactions avec le pilote ODBC PostgreSQL via une connexion TLS. Corrige également une erreur de segmentation lors de l’utilisation du pilote ODBC MySQL. #4170 (alexey-milovidov)
  • Correction d’un résultat incorrect lorsque des arguments Date et DateTime sont utilisés dans les branches de l’opérateur conditionnel (fonction if). Ajout d’un cas générique pour la fonction if. #4243 (alexey-milovidov)
  • Les dictionnaires ClickHouse sont désormais chargés dans le processus clickhouse. #4166 (alexey-milovidov)
  • Correction d’un interblocage lorsqu’un SELECT depuis une table utilisant le moteur File était relancé après une erreur No such file or directory. #4161 (alexey-milovidov)
  • Correction d’une situation de concurrence lors d’une sélection depuis system.tables, pouvant provoquer l’erreur table does not exist. #4313 (alexey-milovidov)
  • clickhouse-client peut provoquer un segfault à la fermeture lors du chargement des données pour les suggestions en ligne de commande s’il est exécuté en mode interactif. #4317 (alexey-milovidov)
  • Correction d’un bug où l’exécution de mutations contenant des opérateurs IN produisait des résultats incorrects. #4099 (Alex Zatelepin)
  • Correction d’une erreur : s’il existe une base de données avec le moteur Dictionary, tous les dictionnaires sont forcés à se charger au démarrage du serveur, et s’il existe un dictionnaire avec une source ClickHouse sur localhost, ce dictionnaire ne peut pas se charger. #4255 (alexey-milovidov)
  • Correction d’une erreur lors de la tentative de recréation des logs système à l’arrêt du serveur. #4254 (alexey-milovidov)
  • Retourne le bon type et gère correctement les verrous dans la fonction joinGet. #4153 (Amos Bird)
  • Ajout de la fonction sumMapWithOverflow. #4151 (Léo Ercolanelli)
  • Correction d’un segfault avec allow_experimental_multiple_joins_emulation. 52de2c (Artem Zuikov)
  • Correction d’un bug de comparaison incorrecte entre Date et DateTime. #4237 (valexey)
  • Correction d’un test de fuzzing avec le sanitizer de comportement indéfini : ajout d’une vérification du type de paramètre pour la famille de fonctions quantile*Weighted. #4145 (alexey-milovidov)
  • Correction d’une rare condition de concurrence où la suppression d’anciennes data parts pouvait échouer avec l’erreur File not found. #4378 (alexey-milovidov)
  • Correction de l’installation du paquet lorsque /etc/clickhouse-server/config.xml est manquant. #4343 (proller)

Amélioration de la compilation, des tests et du packaging

  • Paquet Debian : correction du lien /etc/clickhouse-server/preprocessed en fonction de la config. #4205 (proller)
  • Divers correctifs de build pour FreeBSD. #4225 (proller)
  • Ajout de la possibilité de créer, remplir et supprimer des tables dans perftest. #4220 (alesapin)
  • Ajout d’un script pour détecter les inclusions en double. #4326 (alexey-milovidov)
  • Ajout de la possibilité d’exécuter des requêtes par index dans le test de performance. #4264 (alesapin)
  • Il est recommandé d’installer le paquet contenant les symboles de débogage. #4274 (alexey-milovidov)
  • Refactorisation de performance-test. Amélioration de la journalisation et de la gestion des signaux. #4171 (alesapin)
  • Ajout de documentation pour les jeux de données Yandex.Metrica anonymisés. #4164 (alesapin)
  • Ajout d’un outil pour convertir une ancienne part partitionnée par mois vers le format à partitionnement personnalisé. #4195 (Alex Zatelepin)
  • Ajout de documentation sur deux jeux de données dans S3. #4144 (alesapin)
  • Ajout d’un script qui crée le changelog à partir de la description des pull requests. #4169 #4173 (KochetovNicolai) (KochetovNicolai)
  • Ajout d’un module Puppet pour ClickHouse. #4182 (Maxim Fedotov)
  • Ajout de documentation pour un groupe de fonctions jusque-là non documentées. #4168 (Winter Zhang)
  • Correctifs de build ARM. #4210#4306 #4291 (proller) (proller)
  • Les tests de dictionnaires peuvent désormais être exécutés depuis ctest. #4189 (proller)
  • Désormais, /etc/ssl est utilisé comme répertoire par défaut pour les certificats SSL. #4167 (alexey-milovidov)
  • Ajout de la vérification des instructions SSE et AVX au démarrage. #4234 (Igr)
  • Le script d’initialisation attendra que le serveur ait démarré. #4281 (proller)

Changements incompatibles avec les versions précédentes

  • Suppression du paramètre allow_experimental_low_cardinality_type. Les types de données LowCardinality sont prêts pour la production. #4323 (alexey-milovidov)
  • Réduction de la taille du mark cache et du cache non compressé en fonction de la quantité de mémoire disponible. #4240 (Lopatin Konstantin
  • Ajout du mot-clé INDEX dans la requête CREATE TABLE. Une colonne nommée index doit être entourée de backticks ou de guillemets doubles : `index`. #4143 (Nikita Vasilev)
  • sumMap promeut désormais le type du résultat au lieu de provoquer un dépassement de capacité. L’ancien comportement de sumMap peut être obtenu en utilisant la fonction sumMapWithOverflow. #4151 (Léo Ercolanelli)

Améliorations des performances

  • std::sort remplacé par pdqsort pour les requêtes sans LIMIT. #4236 (Evgenii Pravda)
  • Désormais, le serveur réutilise les threads du pool global de threads. Cela affecte les performances dans certains cas particuliers. #4150 (alexey-milovidov)

Améliorations

  • Prise en charge de l’AIO implémentée pour FreeBSD. #4305 (urgordeadbeef)
  • SELECT * FROM a JOIN b USING a, b ne renvoie désormais les colonnes a et b que depuis la table de gauche. #4141 (Artem Zuikov)
  • L’option -C du client peut désormais être utilisée comme l’option -c. #4232 (syominsergey)
  • Désormais, l’option --password utilisée sans valeur lit le mot de passe depuis stdin. #4230 (BSD_Conqueror)
  • Ajout de la mise en évidence des métacaractères non échappés dans les littéraux de chaîne contenant des expressions LIKE ou des expressions régulières. #4327 (alexey-milovidov)
  • Ajout de l’annulation des requêtes HTTP en lecture seule si le socket du client se ferme. #4213 (nvartolomei)
  • Le serveur signale désormais sa progression afin de maintenir les connexions client actives. #4215 (Ivan)
  • Message légèrement amélioré, avec la raison, pour la requête OPTIMIZE lorsque le paramètre optimize_throw_if_noop est activé. #4294 (alexey-milovidov)
  • Ajout de la prise en charge de l’option --version pour le serveur ClickHouse. #4251 (Lopatin Konstantin)
  • Ajout de l’option --help/-h à clickhouse-server. #4233 (Yuriy Baranov)
  • Ajout de la prise en charge des sous-requêtes scalaires dont le résultat est un état de fonction d’agrégation. #4348 (Nikolai Kochetov)
  • Amélioration du temps d’arrêt du serveur et du temps d’attente des requêtes ALTER. #4372 (alexey-milovidov)
  • Ajout d’informations sur le paramètre replicated_can_become_leader dans system.replicas, ainsi que de la journalisation si la réplique ne tente pas de devenir leader. #4379 (Alex Zatelepin)

Version de ClickHouse 19.1

Version de ClickHouse 19.1.14, 2019-03-14

  • Correction de l’erreur Column ... queried more than once, qui peut survenir si le paramètre asterisk_left_columns_only est défini sur 1 lors de l’utilisation de GLOBAL JOIN avec SELECT * (cas rare). Ce problème n’existe pas dans la version 19.3 ni dans les versions ultérieures. 6bac7d8d (Artem Zuikov)

Version de ClickHouse 19.1.13, 2019-03-12

Cette version contient exactement les mêmes correctifs que la version 19.3.7.

version de ClickHouse 19.1.10, 2019-03-03

Cette version contient exactement les mêmes correctifs que la 19.3.6.

Version 19.1 de ClickHouse

version de ClickHouse 19.1.9, 2019-02-21

Corrections de bugs

  • Correction d’une incompatibilité avec les anciennes versions due à une implémentation incorrecte du paramètre send_logs_level. #4445 (alexey-milovidov)
  • Correction d’une incompatibilité avec les anciennes versions de la fonction de table remote, introduite avec les commentaires de colonnes. #4446 (alexey-milovidov)

Version de ClickHouse 19.1.8, 2019-02-16

Corrections de bugs

  • Correction du paquet d’installation lorsque /etc/clickhouse-server/config.xml est manquant. #4343 (proller)

Version 19.1 de ClickHouse

Version de ClickHouse 19.1.7, 2019-02-15

Corrections de bugs

  • Renvoie correctement le bon type et gère correctement les verrous dans la fonction joinGet. #4153 (Amos Bird)
  • Correction d’une erreur lors de la recréation des logs système à l’arrêt du serveur. #4254 (alexey-milovidov)
  • Correction d’une erreur : s’il existe une base de données avec le moteur Dictionary, tous les dictionnaires étaient forcés à se charger au démarrage du serveur, et si l’un d’eux avait une source ClickHouse sur localhost, il ne pouvait pas être chargé. #4255 (alexey-milovidov)
  • Correction d’un bug où l’exécution de mutations contenant des opérateurs IN produisait des résultats incorrects. #4099 (Alex Zatelepin)
  • clickhouse-client peut provoquer un segfault à la fermeture pendant le chargement des données pour les suggestions en ligne de commande s’il est exécuté en mode interactif. #4317 (alexey-milovidov)
  • Correction d’une race condition pouvant renvoyer l’erreur table does not exist lors d’une sélection depuis system.tables. #4313 (alexey-milovidov)
  • Correction d’un interblocage lorsqu’un SELECT sur une table avec le moteur File était relancé après une erreur No such file or directory. #4161 (alexey-milovidov)
  • Correction d’un problème : les dictionnaires ClickHouse locaux étaient chargés via TCP, alors qu’ils devraient l’être dans le processus. #4166 (alexey-milovidov)
  • Correction de l’erreur No message received lors des interactions avec le PostgreSQL ODBC Driver via une connexion TLS. Corrige également un segfault lors de l’utilisation du MySQL ODBC Driver. #4170 (alexey-milovidov)
  • Désactivation temporaire de l’optimisation des prédicats pour ORDER BY. #3890 (Winter Zhang)
  • Correction d’une boucle infinie lors d’une sélection depuis la fonction de table numbers(0). #4280 (alexey-milovidov)
  • Correction d’un bug de compile_expressions lors de la comparaison de grandes dates (supérieures à int16). #4341 (alesapin)
  • Correction d’un segfault avec uncompressed_cache=1 et d’une exception liée à une taille non compressée incorrecte. #4186 (alesapin)
  • Correction de ALL JOIN avec des doublons dans la table de droite. #4184 (Artem Zuikov)
  • Correction d’un comportement incorrect lors de l’exécution d’une requête INSERT ... SELECT ... FROM file(...) lorsque le fichier a le format CSVWithNames ou TSVWIthNames et que la première ligne de données est manquante. #4297 (alexey-milovidov)
  • Correction de l’exécution des fonctions d’agrégation avec des arguments Array(LowCardinality). #4055 (KochetovNicolai)
  • paquet Debian : correction du lien /etc/clickhouse-server/preprocessed en fonction de la config. #4205 (proller)
  • Correction du test de fuzzing avec undefined behavior sanitizer : ajout d’une vérification du type de paramètre pour la famille de fonctions quantile*Weighted. #4145 (alexey-milovidov)
  • La commande START REPLICATED SENDS démarre désormais les envois répliqués. #4229 (nvartolomei)
  • Correction de Not found column pour les colonnes en double dans la section JOIN ON. #4279 (Artem Zuikov)
  • Désormais, /etc/ssl est utilisé comme répertoire par défaut pour les certificats SSL. #4167 (alexey-milovidov)
  • Correction d’un crash lors du rechargement d’un dictionnaire si celui-ci n’est pas disponible. #4188 (proller)
  • Correction d’un bug lié à une comparaison incorrecte entre Date et DateTime. #4237 (valexey)
  • Correction d’un résultat incorrect lorsque des arguments Date et DateTime sont utilisés dans les branches de l’opérateur conditionnel (fonction if). Ajout d’un cas générique pour la fonction if. #4243 (alexey-milovidov)

Version de ClickHouse 19.1.6, 2019-01-24

Nouvelles fonctionnalités

  • Codecs de compression personnalisés pour chaque colonne des tables. #3899 #4111 (alesapin, Winter Zhang, Anatoly)
  • Ajout du codec de compression Delta. #4052 (alesapin)
  • Possibilité d’utiliser ALTER sur les codecs de compression. #4054 (alesapin)
  • Ajout des fonctions left, right, trim, ltrim, rtrim, timestampadd, timestampsub pour assurer la compatibilité avec le standard SQL. #3826 (Ivan Blinkov)
  • Prise en charge de l’écriture dans les tables HDFS et dans la fonction de table hdfs. #4084 (alesapin)
  • Ajout de fonctions permettant de rechercher plusieurs chaînes constantes dans une grande chaîne : multiPosition, multiSearch, firstMatch, ainsi que leurs variantes -UTF8, -CaseInsensitive et -CaseInsensitiveUTF8. #4053 (Danila Kutenin)
  • Élagage des shards inutilisés si la requête SELECT filtre sur la clé de sharding (paramètre optimize_skip_unused_shards). #3851 (Gleb Kanterov, Ivan)
  • Le moteur Kafka peut ignorer un certain nombre d’erreurs de parsing par bloc. #4094 (Ivan)
  • Ajout de la prise en charge de l’évaluation des modèles multiclasses CatBoost. La fonction modelEvaluate renvoie un tuple contenant les prédictions brutes par classe pour les modèles multiclasses. libcatboostmodel.so doit être compilé avec #607. #3959 (KochetovNicolai)
  • Ajout des fonctions filesystemAvailable, filesystemFree, filesystemCapacity. #4097 (Boris Granveaud)
  • Ajout des fonctions de hachage xxHash64 et xxHash32. #3905 (filimonov)
  • Ajout de la fonction de hachage gccMurmurHash (variante GCC de Murmur hash), qui utilise la même valeur d’initialisation de hachage que gcc #4000 (sundyli)
  • Ajout des fonctions de hachage javaHash, hiveHash. #3811 (shangshujie365)
  • Ajout de la fonction de table remoteSecure. Cette fonction fonctionne comme remote, mais utilise une connexion sécurisée. #4088 (proller)

Fonctionnalités expérimentales

  • Ajout de l’émulation de plusieurs JOIN (allow_experimental_multiple_joins_emulation setting). #3946 (Artem Zuikov)

Corrections de bugs

  • Limitation par défaut du paramètre compiled_expression_cache_size afin de réduire la consommation mémoire. #4041 (alesapin)
  • Correction d’un bug qui entraînait des blocages dans les threads effectuant des ALTER sur des tables Replicated, ainsi que dans le thread chargé de mettre à jour la configuration depuis ZooKeeper. #2947 #3891 #3934 (Alex Zatelepin)
  • Correction d’une race condition lors de l’exécution d’une tâche ALTER distribuée. Cette race condition faisait que plusieurs répliques tentaient d’exécuter la tâche, et que toutes sauf une échouaient avec une erreur ZooKeeper. #3904 (Alex Zatelepin)
  • Correction d’un bug où les éléments de configuration from_zk n’étaient pas actualisés après l’expiration du délai d’une requête adressée à ZooKeeper. #2947 #3947 (Alex Zatelepin)
  • Correction d’un bug lié à un préfixe incorrect pour les masques de sous-réseau IPv4. #3945 (alesapin)
  • Correction d’un crash (std::terminate) dans de rares cas où un nouveau thread ne peut pas être créé faute de ressources. #3956 (alexey-milovidov)
  • Correction d’un bug lors de l’exécution de la table function remote, lorsque de mauvaises restrictions étaient utilisées dans getStructureOfRemoteTable. #4009 (alesapin)
  • Correction d’une fuite de sockets netlink. Ils étaient placés dans un pool où ils n’étaient jamais supprimés, et de nouveaux sockets étaient créés au démarrage d’un nouveau thread lorsque tous les sockets existants étaient déjà utilisés. #4017 (Alex Zatelepin)
  • Correction d’un bug lié à la fermeture du répertoire /proc/self/fd avant que tous les descripteurs de fichiers n’aient été lus depuis /proc, après le fork du sous-processus odbc-bridge. #4120 (alesapin)
  • Correction de la conversion monotone de String vers UInt en cas d’utilisation de String dans la clé primaire. #3870 (Winter Zhang)
  • Correction d’une erreur dans le calcul de la monotonie de la fonction de conversion d’entiers. #3921 (alexey-milovidov)
  • Correction d’un segfault dans les fonctions arrayEnumerateUniq et arrayEnumerateDense en cas d’arguments invalides. #3909 (alexey-milovidov)
  • Correction d’un UB dans StorageMerge. #3910 (Amos Bird)
  • Correction d’un segfault dans les fonctions addDays et subtractDays. #3913 (alexey-milovidov)
  • Correction de l’erreur suivante : les fonctions round, floor, trunc et ceil pouvaient renvoyer un résultat erroné lorsqu’elles étaient exécutées sur un argument entier avec une grande valeur négative de scale. #3914 (alexey-milovidov)
  • Correction d’un bug provoqué par ‘kill query sync’ qui entraînait un core dump. #3916 (muVulDeePecker)
  • Correction d’un bug causant un long délai après une file de réplication vide. #3928 #3932 (alesapin)
  • Correction d’une consommation mémoire excessive lors de l’insertion dans une table avec une clé primaire LowCardinality. #3955 (KochetovNicolai)
  • Correction de la sérialisation LowCardinality pour le format Native dans le cas de tableaux vides. #3907 #4011 (KochetovNicolai)
  • Correction d’un résultat incorrect lors de l’utilisation de distinct sur une seule colonne numérique LowCardinality. #3895 #4012 (KochetovNicolai)
  • Correction de l’agrégation spécialisée avec une clé LowCardinality (lorsque le paramètre compile est activé). #3886 (KochetovNicolai)
  • Correction de la transmission de l’utilisateur et du mot de passe pour les requêtes sur des tables répliquées. #3957 (alesapin) (小路)
  • Correction d’une condition de concurrence très rare pouvant se produire lors de l’énumération des tables dans la base de données Dictionary pendant le rechargement des dictionnaires. #3970 (alexey-milovidov)
  • Correction d’un résultat incorrect lorsque HAVING était utilisé avec ROLLUP ou CUBE. #3756 #3837 (Sam Chou)
  • Correction des alias de colonnes pour les requêtes utilisant la syntaxe JOIN ON et des tables distribuées. #3980 (Winter Zhang)
  • Correction d’une erreur dans l’implémentation interne de quantileTDigest (trouvée par Artem Vakhrushev). Cette erreur ne se produit jamais dans ClickHouse et ne concernait que ceux qui utilisent directement le code source de ClickHouse comme bibliothèque. #3935 (alexey-milovidov)

Améliorations

  • Prise en charge de IF NOT EXISTS dans les instructions ALTER TABLE ADD COLUMN, ainsi que de IF EXISTS dans DROP/MODIFY/CLEAR/COMMENT COLUMN. #3900 (Boris Granveaud)
  • Fonction parseDateTimeBestEffort : prise en charge des formats DD.MM.YYYY, DD.MM.YY, DD-MM-YYYY, DD-Mon-YYYY, DD/Month/YYYY et formats similaires. #3922 (alexey-milovidov)
  • CapnProtoInputStream prend désormais en charge les structures irrégulières. #4063 (Odin Hultgren Van Der Horst)
  • Amélioration de l’ergonomie : ajout d’une vérification pour s’assurer que le server process est démarré par le propriétaire du répertoire de données. Il n’est pas permis de démarrer le server en tant que root si les données appartiennent à un utilisateur non root. #3785 (sergey-v-galtsev)
  • Amélioration de la logique de vérification des colonnes requises lors de l’analyse des requêtes avec des JOIN. #3930 (Artem Zuikov)
  • Réduction du nombre de connexions lorsqu’un grand nombre de tables Distributed sont présentes sur un même server. #3726 (Winter Zhang)
  • Prise en charge de la ligne de totaux pour la requête WITH TOTALS dans l’ODBC Driver. #3836 (Maksim Koritckiy)
  • Possibilité d’utiliser les Enum comme entiers dans la fonction if. #3875 (Ivan)
  • Ajout du paramètre low_cardinality_allow_in_native_format. S’il est désactivé, le type LowCadrinality n’est pas utilisé dans le format Native. #3879 (KochetovNicolai)
  • Suppression de certains objets redondants du cache des compiled expressions afin de réduire l’utilisation de la mémoire. #4042 (alesapin)
  • Ajout d’une vérification pour s’assurer que la requête SET send_logs_level = 'value' accepte une valeur appropriée. #3873 (Sabyanin Maxim)
  • Correction de la vérification du type de données dans les fonctions de conversion. #3896 (Winter Zhang)

Améliorations des performances

  • Ajout d’un paramètre MergeTree use_minimalistic_part_header_in_zookeeper. S’il est activé, les tables répliquées stockeront les métadonnées des parts compactes dans un unique znode de part. Cela peut réduire considérablement la taille des snapshots ZooKeeper (en particulier si les tables ont beaucoup de colonnes). Notez qu’après avoir activé ce paramètre, vous ne pourrez pas rétrograder vers une version qui ne le prend pas en charge. #3960 (Alex Zatelepin)
  • Ajout d’une implémentation basée sur un DFA pour les fonctions sequenceMatch et sequenceCount lorsque le pattern ne contient pas de composante temporelle. #4004 (Léo Ercolanelli)
  • Amélioration des performances de la sérialisation des nombres entiers. #3968 (Amos Bird)
  • Ajout d’un remplissage à gauche par des zéros pour PODArray afin que l’élément -1 soit toujours valide et initialisé à zéro. Il est utilisé pour le calcul sans branchement des offsets. #3920 (Amos Bird)
  • Retour à la version précédente de jemalloc, qui avait entraîné une dégradation des performances. #4018 (alexey-milovidov)

Changements incompatibles avec les versions précédentes

  • Suppression de la fonctionnalité non documentée ALTER MODIFY PRIMARY KEY, remplacée par la commande ALTER MODIFY ORDER BY. #3887 (Alex Zatelepin)
  • Suppression de la fonction shardByHash. #3833 (alexey-milovidov)
  • Interdiction d’utiliser des sous-requêtes scalaires dont le résultat est de type AggregateFunction. #3865 (Ivan)

Améliorations de la compilation, des tests et du packaging

  • Ajout de la prise en charge de la compilation pour PowerPC (ppc64le). #4132 (Danila Kutenin)
  • Les tests fonctionnels avec état sont exécutés sur un jeu de données publiquement accessible. #3969 (alexey-milovidov)
  • Correction d’une erreur empêchant le serveur de démarrer, avec le message bash: /usr/bin/clickhouse-extract-from-config: Operation not permitted, dans Docker ou systemd-nspawn. #4136 (alexey-milovidov)
  • Mise à jour de la bibliothèque rdkafka vers la version v1.0.0-RC5. Utilisation de cppkafka au lieu de l’interface C brute. #4025 (Ivan)
  • Mise à jour de la bibliothèque mariadb-client. Correction d’un des problèmes détectés par UBSan. #3924 (alexey-milovidov)
  • Quelques correctifs pour les builds UBSan. #3926 #3021 #3948 (alexey-milovidov)
  • Ajout de l’exécution des tests avec build UBSan à chaque commit.
  • Ajout de l’exécution de l’analyseur statique PVS-Studio à chaque commit.
  • Correction de bugs détectés par PVS-Studio. #4013 (alexey-milovidov)
  • Correction de problèmes de compatibilité avec glibc. #4100 (alexey-milovidov)
  • Passage des images Docker à 18.10 et ajout d’un fichier de compatibilité pour glibc >= 2.28 #3965 (alesapin)
  • Ajout d’une variable d’environnement pour les utilisateurs qui ne souhaitent pas exécuter chown sur les répertoires dans l’image Docker du serveur. #3967 (alesapin)
  • Activation de la plupart des avertissements de -Weverything dans clang. Activation de -Wpedantic. #3986 (alexey-milovidov)
  • Ajout de quelques avertissements supplémentaires disponibles uniquement dans clang 8. #3993 (alexey-milovidov)
  • Liaison à libLLVM plutôt qu’aux bibliothèques LLVM individuelles lors de l’utilisation de l’édition de liens dynamique. #3989 (Orivej Desh)
  • Ajout de variables de sanitizer pour les images de test. #4072 (alesapin)
  • Le paquet Debian clickhouse-server recommandera le paquet libcap2-bin pour utiliser l’outil setcap afin de définir les capabilities. Ceci est facultatif. #4093 (alexey-milovidov)
  • Amélioration du temps de compilation, correction des inclusions. #3898 (proller)
  • Ajout de tests de performance pour les fonctions de hachage. #3918 (filimonov)
  • Correction des dépendances circulaires entre bibliothèques. #3958 (proller)
  • Compilation améliorée lorsque la mémoire disponible est limitée. #4030 (proller)
  • Ajout d’un script de test pour reproduire la dégradation des performances dans jemalloc. #4036 (alexey-milovidov)
  • Correction des fautes d’orthographe dans les commentaires et les littéraux de chaîne sous dbms. #4122 (maiha)
  • Correction de coquilles dans les commentaires. #4089 (Evgenii Pravda)
Dernière modification le 29 juin 2026