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
VIEWClickHouse : désormais, la lecture de tels dictionnaires ne provoque plus l’erreurThere 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 TABLEpour 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 successifstableA->tableB,tableC->tableA. #8306 (tavplubix)- Les external dictionaries
range_hashedcréé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 qualificatifTABLEouDICTIONARY, simplement sous la formeEXISTS t. #8213 (alexey-milovidov) - Correction du return type des fonctions
randetrandConstantdans le cas d’un argument nullable. Désormais, ces fonctions renvoient toujoursUInt32et jamaisNullable(UInt32). #8204 (Nikolai Kochetov) - Correction de
DROP DICTIONARY IF EXISTS db.dict: désormais, cela ne génère plus d’exception sidbn’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 partlorsqu’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-copierdue à 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
StorageFileetStorageHDFSest désormais limité afin d’éviter de dépasser la limite de mémoire. #7981 (alesapin) - Correction de la requête
CHECK TABLEpour les tables*MergeTreesans 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_optimizationa é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
LowCardinalityetNullablepar le type d’indexbloom_filter#7363 #7561 (Nikolai Kochetov) - Ajout de la fonction
isValidJSONpour 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
hexpour les nombresDecimal. Elle fonctionne commehex(reinterpretAsString()), mais ne supprime pas les derniers octets nuls. #7355 (Mikhail Korotov) - Ajout des fonctions
arrayFilletarrayReverseFill, 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_numpour 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)))dansIN. Résout #7364 #7366 (achimbab) - Ajoute la prise en charge de
SQL_TINYINTetSQL_BIGINT, et corrige la gestion des source typesSQL_FLOATdans ODBC Bridge. #7491 (Denis Glazachev) - Corrige l’agrégation (
avget quantiles) sur des colonnes décimales vides #7431 (Andrey Konyaev) - Corrige
INSERTdans Distributed avec des colonnesMATERIALIZED#7377 (Azat Khuzhin) - Permet à
MOVE PARTITIONde 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
ReplicatedMergeTreeavec 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_ration’était pas lu à partir de la configuration des disques #7645 (Vladimir Chebotarev) - Corrige un bug lorsqu’une table contient uniquement des colonnes
Tupleou 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
MergeTreeordonnées partuple(). Dans de rares cas, cela pouvait provoquer l’erreurCan't adjust last granulelors 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/etshadow/#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 blocklors 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
concatlorsque tous les arguments étaient desFixedStringde 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
Nullablesont 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
HAVINGet sansGROUP BYsupposent unGROUP BYsur une constante. Ainsi,SELECT 1 HAVING 1renvoie 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
rangedevient presque identique à celui de Python. #7518 (sundyli) - Ajout des colonnes
constraintsà la tablesystem.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 Nullpour 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 deaddBatchdans 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_globsdans 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
- Ajout d’une grammaire ANTLR4 pour le dialecte SQL de ClickHouse #7595 #7596 (alexey-milovidov)
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 dansClickHouseDictionarySource. #9262 (tabplubix) - Désormais, les fusions en arrière-plan de la famille des moteurs de table
*MergeTreepréservent plus fidèlement l’ordre des volumes de la policy de stockage. #8549 (Vladimir Chebotarev) - Évite la perte de données dans
Kafkadans de rares cas où une exception se produit après la lecture du suffixe, mais avant le commit. Corrige #9378. 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
Kafkacréée avec des paramètres incorrects. Corrige #9494. Intègre #9507. #9513 (filimonov) - Autorise l’utilisation de
MaterializedViewavec des sous-requêtes sur des tablesKafka. #8197 (filimonov)
Nouvelle fonctionnalité
- Ajout de l’option
deduplicate_blocks_in_dependent_materialized_viewspour 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 :
credentialsethttp-headers. #7092 (Guillaume Tassery) - Ajout d’un nouveau ProfileEvent
Mergequi 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
arraySplitetarrayReverseSplitqui 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 queoptimize_read_in_orderest 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 fonctionsnow(),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_mserronée dans la tablesystem.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_msse produit. #7390 (Azat Khuzhin) - Rendre le paramètre
s3_min_upload_part_sizeconfigurable 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 exceededsur le serveur, qui provoquait l’exceptionAttempt to read after eofcô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-testpour 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. RenommerThreadPool::schedule(...)enThreadPool::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
inputpour lire les données entrantes dans une requêteINSERT SELECT. #5450 (palasonic1) #6832 (Anton Popov) - Ajout d’un dictionary layout
sparse_hashed, fonctionnellement équivalent au layouthashed, 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êteSHOW. #6944 (Philipp Malkovsky) - Ajout de la fonction
bitmapSubsetLimit(bitmap, range_start, limit), qui renvoie un sous-ensemble deslimitplus petites valeurs de l’ensemble qui ne sont pas inférieures àrange_start. #6957 (Zhichang Yu) - Ajout des fonctions
bitmapMinetbitmapMax. #6970 (Zhichang Yu) - Ajout de la fonction
repeaten 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 = 1pour utiliser cette fonctionnalité. Merge Join est encore en développement. #6940 (Artem Zuikov) - Ajoute le moteur
S3et 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 leconfig.xmldu serveur. #6969 (Azat Khuzhin) - Ajout de la conversion automatique du type
TenLowCardinality(T)lors de l’insertion de données dans une colonne de typeLowCardinality(T)au format Native via HTTP. #6891 (Nikolai Kochetov) - Ajout de la possibilité d’utiliser la fonction
hexsans recourir àreinterpretAsStringpourFloat32,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 = 1pour 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
libsparsehashparsparsehash-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
АrrayEnumerateUniqRankedlorsque 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 identifierdans ORDER BY et GROUP BY avec plusieurs JOIN #7022 (Artem Zuikov) - Correction d’un avertissement
MSanlors de l’exécution d’une fonction avec un argumentLowCardinality. #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
АrrayEnumerateUniqRankedlorsque les params contiennent des tableaux vides. #6928 (proller) - Correction du nom de la sous-requête dans les requêtes utilisant
ARRAY JOINetGLOBAL IN subqueryavec 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_zookeeperpar 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
groupUniqArrayavec un argument de tableau vide. Elle était due à l’insertion d’unPaddedPODArrayvide 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 FILLpourORDER BY. (suite de #5069) #6610 (Anton Popov) - Modificateur
WITH TIESpourLIMIT. (suite de #5069) #6610 (Anton Popov) - Interprète le littéral
NULLnon entre guillemets comme NULL (si le paramètreformat_csv_unquoted_null_literal_as_null=1est 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ètreinput_format_null_as_default=1est activé). #5990 #6055 (tavplubix) - Prise en charge des caractères génériques dans les chemins des fonctions de table
fileethdfs. 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}')etselect * 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 desystem.eventsetsystem.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 :
demangleetaddressToLine. La fonctionsymbolizeAddressa été renommée enaddressToSymbolpour plus de cohérence. La fonctionaddressToSymbolrenverra un nom manglé pour des raisons de performance et vous devrez appliquerdemangle. Ajout du paramètreallow_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 listeVALUESproposé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 :
sigmoidettanh(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’aliasuser()pour la compatibilité avec MySQL. #6470 (Alex Krash) - Nouvelles fonctions d’agrégation
quantilesExactInclusiveetquantilesExactExclusive, 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 inclurerange_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
_partitionet_timestamppour 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 VIEWpourra ê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 typesdans la fonctionbitmapContains. #6136 #6146 #6156 (dimarub2000) - Correction d’un segfault avec
optimize_skip_unused_shardsactivé 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 deDROP TABLEetSELECTconcurrents sursystem.partsousystem.parts_columns. Correction d’une race condition lors de la préparation des requêtes de mutation. Correction d’un interblocage causé parOPTIMIZEsur 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
quantileetmediansurNullable(Decimal128). #6378 (Artem Zuikov) - Correction d’un résultat potentiellement incomplet renvoyé par une requête
SELECTavec une conditionWHEREsur une clé primaire contenant une conversion vers le type Float. Cela était dû à une vérification incorrecte de la monotonie dans la fonctiontoFloat. #6248 #6374 (dimarub2000) - Vérification du paramètre
max_expanded_ast_elementspour les mutations. Suppression des mutations aprèsTRUNCATE 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 COLUMNet 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
LowCardinalitydansAggregateFunctionFactory. Cela corrige #6257. #6281 (Nikolai Kochetov) - Corrige un comportement incorrect et de possibles segfaults dans les fonctions agrégées
topKettopKWeighted. #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
nullIflorsqu’un argumentNULLest 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
Nullabledans les JOINs avecjoin_use_nullsactivé. #6705 (Artem Zuikov) - Désactive les substitutions
Poco::AbstractConfigurationdans les requêtes declickhouse-client. #6706 (alexey-milovidov) - Évite un interblocage dans
REPLACE PARTITION. #6677 (alexey-milovidov) - L’utilisation de
arrayReduceavec 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 ROLLUPetWITH CUBEdeGROUP BYavec 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_handleest initialisé dansstartup(),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
libunwindpendant une exception, lors de l’accès à la structureThreadStatusnon 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 commeSELECT 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
TRUNCATEsur 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 ... UPDATEpour les tables avecenable_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_speedoumax_execution_speed_bytesest défini. Corrige les faux messages d’erreur commeEstimated query execution time (inf seconds) is too long. #5547 #6232 (alexey-milovidov) - Correction de problèmes liés à l’utilisation des colonnes
MATERIALIZEDet des alias dansMaterializedView. #448 #3484 #3450 #2878 #2285 #3796 (Amos Bird) #6316 (alexey-milovidov) - Corrige le comportement de
FormatFactorypour 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êteALTER ... MODIFY TTL. Ajout des requêtesSYSTEM STOP/START TTL MERGESpour 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_rundeInterpreterSelectQuery. … #6375 (Nikolai Kochetov) - Prise en charge de
ASOF JOINavec la clauseON. #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 = xrecalcule tous les index qui utilisent la colonnex. #5053 (Nikita Vasilev) - Autorisation d’
ATTACHsur les live views (par exemple au démarrage du serveur), indépendamment du paramètreallow_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,hdfsprennent en charge les colonnes ALIAS. #6255 (alexey-milovidov) - Lever une exception si le fichier
config.dn’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 (pouroptimize_skip_unused_shards= 1), ClickHouse vérifie désormais les conditions des clausesprewhereetwherede l’instruction select. #6521 (Alexander Kazakov) SIMDJSONactivé 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
strictdanswindowFunnel(). Lorsquestrictest 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
--helpcorrespond 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_DATAetTYPE_MISMATCHa été modifié, passant de500 Internal Server Errorpar défaut à400 Bad Request. #6271 (Alexander Rodin) - Déplacement de l’objet Join de
ExpressionActionversAnalyzedJoin.ExpressionAnalyzeretExpressionActionne connaissent plus la classeJoin. Sa logique est désormais masquée derrière l’interfaceAnalyzedJoin. #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
RENAMEsur 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 dewhere_conditiondepuis la configuration avec l’aliaspartition_keydans 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/ExpressionAnalyzerversAnalyzedJoin. #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 BYetORDER BY, l’espace disque libre n’était pas vérifié. Le correctif ajoute un nouveau paramètremin_free_disk_space; lorsque l’espace disque libre est inférieur au seuil, la requête s’arrête et lèveErrorCodes::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
SELECTpeut 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êteDROP. Cela entraînera de faux messages “Attempt to acquire exclusive lock recursively”. #6771 (alexey-milovidov) - Scission de
ExpressionAnalyzer.appendJoin(). Prépare le terrain dansExpressionAnalyzerpourMergeJoin. #6524 (Artem Zuikov) - Ajout du plugin d’authentification
mysql_native_passwordau 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 dansAllocator(problème mineur). #6197 (alexey-milovidov) - Déplacement de
collectUsedColumnsdeExpressionAnalyzerversSyntaxAnalyzer.SyntaxAnalyzergénère désormais lui-mêmerequired_source_columns. #6416 (Artem Zuikov) - Ajout du paramètre
joined_subquery_requires_aliaspour exiger des alias pour les sous-requêtes et les fonctions de table dansFROMlorsque plusieurs tables sont présentes (c.-à-d. pour les requêtes avec JOIN). #6733 (Artem Zuikov) - Extraction de la classe
GetAggregatesVisitordepuisExpressionAnalyzer. #6458 (Artem Zuikov) system.query_log: modification du type de données de la colonnetypeenEnum. #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
compilefonctionne. Dans les versions précédentes, l’utilisateur pouvait obtenir des errors telles quecannot 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-obfuscatorest désormais disponible dans le paquetclickhouse-client. Dans les versions précédentes, il était disponible sous la formeclickhouse 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.processesetsystem.query_logpour 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_passwordest 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ètresreplace_running_query_max_wait_ms,kafka_max_wait_msetconnection_pool_max_wait_mspour lever l’ambiguïté. #6692 (alexey-milovidov) - Extraction de
SelectQueryExpressionAnalyzerdepuisExpressionAnalyzer. 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_intervaletidle_connection_timeoutpour la connexion. #6230 (alexey-milovidov) MergeTreedispose désormais d’une option supplémentairettl_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, lorsqueexpressionspartage un préfixe avec la clé de tri dans les tablesMergeTree. Cette optimisation est contrôlée par le paramètreoptimize_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
FastOpspour les fonctionsexp,log,sigmoid,tanh. FastOps est une bibliothèque rapide de calcul vectoriel de Michael Parakhin (CTO de Yandex). Les performances des fonctionsexpetlogont été améliorées de plus d’un facteur 6. Les fonctionsexpetlogavec un argumentFloat32renverrontFloat32(dans les versions précédentes, elles renvoyaient toujoursFloat64). Désormais,exp(nan)peut renvoyerinf. Le résultat des fonctionsexpetlogpeut 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
simdjsonen supprimant l’allocation dynamique dansParsedJson::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 denumbers. 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
SIGPROFcomme 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_dictionarieslorsqu’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-ngdé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_castde 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.cppdéfinitmain(), il ne doit donc pas être inclus dansclickhouse-lib. #6538 (Orivej Desh)- Test de plantage dans
FULL|RIGHT JOINavec 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::filesystemparstd::filesystemlorsque 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 identifiercorrigée dans la sectionIN. #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_dictionariesen 4 tests distincts. #6776 (Vitaly Baranov) - Correction d’un avertissement PVS-Studio dans
PipelineExecutor. #6777 (Nikolai Kochetov) - Autorisation d’utiliser la source de dictionnaire
libraryavec 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
TinyLogpendant 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/deletelors 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
hyperscanchaque 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-9au conteneurdocker/builderqui 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
groupUniqArraycorrigé 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
catBoostPoolet du moteur de stockageCatBoostPool, 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 JOINetANY FULL JOINsont désormais désactivés par défaut. Définissez le paramètreany_join_distinct_right_table_keyspour 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
DROPsur 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
recvinfini depuis le socket. #6386 (alesapin) - Correction d’une utilisation excessive du CPU lors de l’exécution de la fonction
JSONExtractRawsur 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
urlpré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
ASTinutile dans l’index Set. #6510 #6651 (Nikita Vasilev) - Correction de l’analyse syntaxique des valeurs
AggregateFunctioninté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.partset la requêteALTER. #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
INavec 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
Decimalde 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,JDBCfonctionne désormais correctement pour les requêtesSELECT WHEREcomportant plusieurs expressionsAND. #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 ... UPDATEpour les tables avecenable_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 deDROP TABLEet deSELECTconcurrents sursystem.partsousystem.parts_columns. Correction d’une condition de concurrence lors de la préparation des requêtes de mutation. Correction d’un interblocage provoqué parOPTIMIZEsur 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 DELETEsur 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()etstochasticLogisticRegression(), 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
RENAMEfonctionnent 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_fieldsest 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 formatsJSONEachRowetCSV*. 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=1pour 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
DoubleDeltadeInt64pour les grandes valeurs deDoubleDelta, et amélioration de l’encodageDoubleDeltapour les données aléatoires avecInt32. #5998 (Vasily Nemkov) - Correction de la surestimation de
max_rows_to_readsi le paramètremerge_tree_uniform_read_distributionest défini sur 0. #6019 (alexey-milovidov)
Amélioration
- Lève une exception si le fichier
config.dn’a pas l’élément racine correspondant à celui du fichier de configuration #6123 (dimarub2000)
Amélioration des performances
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
libcxxexterne #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 COLUMNet 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
mrkpour 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 identifieren 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
АrrayEnumerateUniqRankeden 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
JSONExtractlors de l’extraction d’unTupledepuis du JSON. #6718 (Vitaly Baranov) - Correction d’une possible perte de données après une requête
ALTER DELETEsur 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
nullIfpour 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 UPDATEouALTER DELETElong 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 ... UPDATEpour les tables avecenable_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érationsDROP TABLEetSELECTconcurrentes sursystem.partsousystem.parts_columns. Correction d’une condition de concurrence dans la préparation des requêtes de mutation. Correction d’un interblocage causé parOPTIMIZEsur 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
arrayReduceavec des arguments constants. #6326 (alexey-milovidov) - Correction de la monotonie de
toFloat(). #6374 (dimarub2000) - Correction d’un segfault avec
optimize_skip_unused_shardsactivé 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
topKettopKWeighted. #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
MergeetDistributed#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_intervaletidle_connection_timeoutau 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
LowCardinalitydansAggregateFunctionFactory. Cela corrige #6257. #6281 (Nikolai Kochetov) - Correction de l’interprétation des paramètres
boolà partir des chaînestrueetfalsedans 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
Distributedbasée sur une tableMergeTree, lorsqu’une partie deWHEREest déplacée versPREWHERE. #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
Kafkaest 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 ROLLUPetWITH CUBEdeGROUP BYavec 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_callpour 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 nonNullablelorsqu’elle ne contient pas de valeurs NULL (par ex. dans une requête commeSELECT 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_handleest initialisé dansstartup(),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
.rpmet.tgzavec le scriptpackager. #5769 (alesapin) - Corrections apportées au système de build « Arcadia ». #6223 (proller)
Changement incompatible avec les versions antérieures
Kafkane 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
DoubleDeltaetGorilla#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 capabilitiesCAP_SYS_NICE. Cela implémente #5858 #5909 (alexey-milovidov) - Ajout des colonnes
_topic,_offset,_keypour 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)etgroupArrayMovingAvg(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
geoToH3d’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
Deltaqui 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 colonneLowCardinality. #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
remoteou 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
UCTau lieu deUTC. 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 CLUSTERseront exécutées directement sur la réplique leader. #5757 (alesapin) - Correction de
coalescepourColumnConstavecColumnNullable, ainsi que des modifications associées. #5755 (Artem Zuikov) - Correction de
ReadBufferFromKafkaConsumerafin qu’il continue à lire les nouveaux messages aprèscommit(), même s’il était auparavant bloqué #5852 (Ivan) - Correction des résultats des JOIN
FULLetRIGHTlors d’une jointure sur des clésNullabledans 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-freedans ClusterCopier, causé par un watch qui tentait d’utiliser un objet copier déjà supprimé. #5871 (Nikolai Kochetov) - Correction d’un pointeur
StringRefincorrect renvoyé par certaines implémentations deIColumn::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 TABLEfonctionne 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/localtimeest 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)
simdjsona é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
Enumcomme synonyme deEnum8ouEnum16. #5886 (dimarub2000) - Variante de transposition complète des bits pour le codec
T64. Cela peut améliorer la Compression aveczstd. #5742 (Artem Zuikov) - La condition sur la fonction
startsWithpeut désormais utiliser la clé primaire. Cela corrige #5310 et #5882 #5919 (dimarub2000) - Autoriser l’utilisation de
clickhouse-copieravec une topologie de cluster à réplication croisée en permettant un nom de database vide. #5745 (nvartolomei) - Utiliser
UTCcomme timezone par défaut sur un système sanstzdata(par ex. un conteneur Docker minimal). Avant ce correctif, le message d’erreurCould not determine local time zones’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
quantileTimingpour 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_typepeut être utilisé sans aucun effet. 0f15c01c6802f7ce1a1494c12c846be8c98944cd Alexey Milovidov
Amélioration des performances
- Augmentation du nombre de streams utilisés pour exécuter des
SELECTsur une table Merge, afin de répartir les threads plus uniformément. Ajout du paramètremax_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 (
ArenaetArenaWithFreeLists) 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
bitTestdans 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-undefinedforce 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
Kafkaest défectueux dans cette version.adaptive_index_granularity= 10MB est désormais activé par défaut pour les nouvelles tablesMergeTree. 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,SEHierarchyne 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 quebitmapHasAnysi 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 SENDSpour contrôler les insertions asynchrones dans les tablesDistributed. #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
arrayEnumerateUniqRankedpour 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_nullssoit 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
WriteBufferFromHDFSest appelé. Cela corrige l’écriture dansHDFS. #5684 (Xindong Peng)
Amélioration
- Les cellules vides dans
CSVsont traitées comme des valeurs par défaut lorsque le paramètreinput_format_defaults_for_omitted_fieldsest 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 pargperfest utilisée avec une liste générée à partir du fichier : https://publicsuffix.org/list/public_suffix_list.dat. (par exemple, le domaineac.ukest désormais reconnu comme non significatif). #5030 (Guillaume Tassery) - Adoption du type de données
IPv6dans les tables système ; unification des colonnes d’informations client danssystem.processesetsystem.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
ALTERON CLUSTER. #5593 #5613 (sundyli) - Prise en charge de la section
<logger>dans le fichier de configurationclickhouse-local. #5540 (proller) - Autorise l’exécution de requêtes avec la fonction de table
remotedansclickhouse-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
TestKeeperen tant qu’implémentation de l’interface ZooKeeper utilisée pour les tests #5643 (alexey-milovidov) (levushkin aleksej) - Désormais, les tests
.sqlpeuvent ê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
dictGetetdictGetOrDefaultpour 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
PrettySpacelorsqu’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
bitmapHasAnydans 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 TTLsur 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_formatetlow_cardinality_allow_in_native_formatne 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_countetload_factorpour le dictionnaire haché dans la tablesystem.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 cmakeENABLE_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.basenameen Python,basenameen 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 BYouLIMIT m OFFSET n BYpour 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 unAggregatingMergeTree. Cela ne peut être utilisé qu’avec des fonctions simples commeany,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,kurtPopetkurtSamppour 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*OrZeroettoDecimal*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_partscontenant des informations sur les detached parts des tablesMergeTree. #5353 (akuzm) - Ajout de la fonction
ngramSearchpour 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
geohashEncodeetgeohashDecode. #5003 (Vasily Nemkov) - Ajout de la fonction d’agrégation
timeSeriesGroupSum, qui peut agréger différentes séries temporelles dont lestimestampd’échantillonnage ne sont pas alignés. Elle utilise une interpolation linéaire entre deuxtimestampd’échantillonnage, puis additionne les séries temporelles. Ajout également de la fonction d’agrégationtimeSeriesGroupRateSum, qui calcule le taux des séries temporelles avant d’additionner ces taux. #4542 (Yangkuan Liu) - Ajout des fonctions
IPv4CIDRtoIPv4RangeetIPv6CIDRtoIPv6Rangepour 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_headersactivé. 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_totalpour 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 fonctionsjsonExtract<type>ont été renommées enJSONExtract<type>. En cas de problème, ces fonctions renvoient les valeurs correspondantes, et nonNULL. La fonctionJSONExtracta é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
ifetmultiIfne s’appuient pas sur leNullablede la condition, mais sur les branches, pour assurer la compatibilité SQL. #5238 (Jian Wu) - Le prédicat
Ingénère désormais un résultatNullà partir d’une entréeNull, comme la fonctionEqual. #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_batchpour 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 à
windowFunnelde prendre en charge d’autres types d’entiers non signés. #5320 (sundyli) - Permet de masquer la colonne virtuelle
_tabledans le moteur Merge. #5325 (Ivan) - Permet aux aggregate functions
sequenceMatchde 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
leastSqrensimpleLinearRegression,LinearRegressionenlinearRegression,LogisticRegressionenlogisticRegression. #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
concatpour 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 forcerestartne 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
DecimalversNullable(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
uniqHLLetuniqCombined, ainsi que pour des fonctions mathématiques telles quelog. #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
quantileExactavec 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
bitmapHasAnyetbitmapHasAll, analogues aux fonctionshasAnyethasAllpour les tableaux. #5279 (Sergi Vladykin)
Corrections de bugs
- Correction d’un segfault sur
minmaxINDEX 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 .. PREWHEREsur une colonne avec DEFAULT. #5397 (proller) - Correction de la requête
ALTER MODIFY TTLsurReplicatedMergeTree. #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_countpour 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êteALTER 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
groupUniqArrayavec un paramètre facultatifmax_sizequi limite la taille du tableau résultant. Ce comportement est similaire à celui de la fonctiongroupArray(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
- Utilisation du tri radix pour trier selon une seule colonne numérique dans
ORDER BY, sansLIMIT. #5106, #4439 (Evgenii Pravda, alexey-milovidov)
Documentation
- Traduction en chinois de la documentation de certains moteurs de table. #5107, #5094, #5087 (张风啸), #5068 (never lee)
Améliorations du build, des tests et du packaging
- Affiche correctement les caractères UTF-8 dans
clickhouse-test. #5084 (alexey-milovidov) - Ajoute un paramètre de ligne de commande pour clickhouse-client afin de toujours charger les données de suggestion. #5102 (alexey-milovidov)
- Corrige certains avertissements de PVS-Studio. #5082 (alexey-milovidov)
- Met à jour LZ4 #5040 (Danila Kutenin)
- Ajoute gperf aux dépendances de build pour la pull request #5030 à venir. #5110 (proller)
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
mysqletodbc, 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
brotlipour les réponses HTTP (Accept-Encoding: br) #4388 (Mikhail) - Ajout de la nouvelle fonction
isValidUTF8pour 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
- Accélération significative d’ASOF JOIN #4924 (Martijn Bakker)
Modifications rétrocompatibles
- L’en-tête HTTP
Query-Ida été renomméX-ClickHouse-Query-Idpour 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 DISTINCTavecJOIN#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
- Type du paramètre
max_partitions_per_insert_blockcorrigé, de booléen à UInt64. #5028 (Mohammad Hossein Sekhavat)
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
multiSearchFirstPositiona é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,inetlike). #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 JOINenCROSS JOIN, puis enINNER JOINlorsque c’est possible. #4661 (Artem Zuikov)
Amélioration
topKettopKWeightedprennent désormais en charge unloadFactorpersonnalisé (corrige le problème #4252). #4634 (Kirill Danshin)- Permet d’utiliser
parallel_replicas_count > 1mê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
Bufferprend désormais en chargePREWHERE. #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 Nullavec des requêtes en streaming. #4811 (alexey-milovidov) - Permet de désactiver, par utilisateur, les fonctions de la bibliothèque
hyperscanafin 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
multiMatchimposant que la taille de la chaîne tienne dans ununsigned int. Une limite sur le nombre d’arguments a également été ajoutée aux fonctionsmultiSearch. #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
trigramDistanceenngramDistanceet ajoute davantage de fonctions avecCaseInsensitiveetUTF. #4602 (Danila Kutenin) - Amélioration du calcul des index de saut de données. #4640 (Nikita Vasilev)
- Conserve les colonnes ordinaires,
DEFAULT,MATERIALIZEDetALIASdans une seule liste (corrige le problème #2867). #4707 (Alex Zatelepin)
Correction de bugs
- Évite
std::terminateen cas d’échec d’allocation de mémoire. Désormais, l’exceptionstd::bad_allocest levée comme prévu. #4665 (alexey-milovidov) - Corrige la lecture de
capnprotodepuis le tampon. Il arrivait parfois que les fichiers ne se chargent pas correctement via HTTP. #4674 (Vladislav) - Corrige l’erreur
Unknown log entry type: 0après une requêteOPTIMIZE TABLE FINAL. #4683 (Amos Bird) - Des arguments incorrects pour les fonctions
hasAnyouhasAllpeuvent 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
medianetquantile. #4702 (hcz) - Corrige la détection du niveau de compression lorsque
network_compression_methodest 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
histogramavec les tablesDistributed. #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
ReplicatedMergeTreeAlterThreaden 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êteATTACHmal formée dans les métadonnées). #4782 (alexey-milovidov) - Corrige un crash dans
ALTER ... MODIFY ORDER BYsur une tableDistributed. #4790 (TCeason) - Corrige un segfault dans
JOIN ONavecenable_optimize_predicate_expressionactivé. #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
JOINsur une colonne nonNullablevsNullable. Corrige lesNULLsdans les clés de droite dansANY JOIN+join_use_nulls. #4815 (Artem Zuikov) - Corrige une faute de segmentation dans
clickhouse-copier. #4835 (proller) - Corrige une condition de concurrence dans
SELECTdepuissystem.tablessi 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
RENAMEd’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 JOINlors d’une jointure surNullablevs nonNullable. #4855 (Artem Zuikov) - Corrige l’exception
No message receivedlors de la récupération de parts entre répliques. #4856 (alesapin) - Corrige le résultat erroné de la fonction
arrayIntersectdans 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 COLUMNexé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 JOINavec une colonne constante. #4723 (Artem Zuikov) - Corrige les doublons dans
GLOBAL JOINavec un astérisque. #4705 (Artem Zuikov) - Corrige la déduction des paramètres dans
ALTER MODIFYde la colonneCODEClorsque le type de la colonne n’est pas spécifié. #4883 (alesapin) - Les fonctions
cutQueryStringAndFragment()etqueryStringAndFragment()fonctionnent désormais correctement lorsqueURLcontient un fragment et aucune requête. #4894 (Vitaly Baranov) - Corrige un bug rare lorsque le paramètre
min_bytes_to_use_direct_ioest 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
toISOWeekpour l’année 1970. #4988 (alexey-milovidov) - Corrige la duplication des requêtes
DROP,TRUNCATEetOPTIMIZElors de leur exécution avecON CLUSTERpour la famille de tablesReplicatedMergeTree*. #4991 (alesapin)
Changement incompatible avec les versions précédentes
- Le paramètre
insert_sample_with_metadataa été renommé eninput_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 (
multiPositionenmultiSearchAllPositions,multiSearchenmultiSearchAny,firstMatchenmultiSearchFirstIndex). #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_cacheest 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_PARQUETetENABLE_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 lossdansclickhouse-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
mremaplors de la compilation avec Thread Sanitizer. Étonnamment, TSan n’intercepte pasmremap(bien qu’il interceptemmapetmunmap), 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::terminateen cas d’échec d’allocation de mémoire. Désormais, l’exceptionstd::bad_allocest levée comme prévu. #4665 (alexey-milovidov) - Corrige la lecture de
capnprotodepuis 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: 0après une requêteOPTIMIZE TABLE FINAL. #4683 (Amos Bird) - Des arguments incorrects pour les fonctions
hasAnyouhasAllpeuvent 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
medianetquantile. #4702 (hcz) - Corrige la détection du niveau de compression lorsque
network_compression_methodest 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
histogramavec les tablesDistributed. #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
ReplicatedMergeTreeAlterThreaden 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êteATTACHmal formée dans les métadonnées). #4782 (alexey-milovidov) - Corrige un crash dans
ALTER ... MODIFY ORDER BYsur une tableDistributed. #4790 (TCeason) - Corrige un segfault dans
JOIN ONavecenable_optimize_predicate_expressionactivé. #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
SELECTsursystem.tablessi 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
RENAMEd’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 receivedlors de la récupération de parties entre répliques. #4856 (alesapin) - Corrige le résultat erroné de la fonction
arrayIntersecten 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 COLUMNconcurrentes pouvant entraîner un crash du serveur (corrige le ticket #3421). #4592 (Alex Zatelepin) - Corrige la déduction des paramètres dans
ALTER MODIFYde la colonneCODEClorsque le type de colonne n’est pas spécifié. #4883 (alesapin) - Les fonctions
cutQueryStringAndFragment()etqueryStringAndFragment()fonctionnent désormais correctement lorsqueURLcontient 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_ioest 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
toISOWeekpour l’année 1970. #4988 (alexey-milovidov) - Corrige la duplication des requêtes
DROP,TRUNCATEetOPTIMIZElorsqu’elles sont exécutées avecON CLUSTERpour la famille de tablesReplicatedMergeTree*. #4991 (alesapin)
Améliorations
- Regroupe les colonnes ordinaires,
DEFAULT,MATERIALIZEDetALIASdans 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 JOINlors 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
- Ajout d’un moyen de lancer l’image clickhouse-server avec un utilisateur personnalisé. #4753 (Mikhail f. Shiryaev)
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 BYetLIMIT. Auparavant, siLIMIT BYetLIMITétaient utilisés dans une requête distante,LIMITpouvait être appliqué avantLIMIT 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_speedetmax_execution_speed_bytespour limiter l’utilisation des ressources. Ajout du paramètremin_execution_speed_bytesen complément demin_execution_speed. #4430 (Winter Zhang) - Implémentation de la fonction
flatten. #4555 #4409 (alexey-milovidov, kzon) - Ajout des fonctions
arrayEnumerateDenseRankedetarrayEnumerateUniqRanked(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
setpour les colonnesNullableetLowCardinality. Auparavant, l’utilisation de l’indexsetavec une colonneNullableouLowCardinalityentraînait l’erreurData type must be deserialized with multiple streamslors 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
dictIsInpour 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
llvmet puissions le tester avecclangetasan. #4579 (alesapin) - Empêche
std::terminatelorsqueinvalidate_querypour la source de dictionnaire externeclickhouserenvoie 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 dulifetime. #4583 (alexey-milovidov) - Évite un interblocage lorsque
invalidate_querypour un dictionnaire avec une sourceclickhouseimpliquait la tablesystem.dictionariesou la base de donnéesDictionaries(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_ioest 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-testdepuis 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.hn’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 macroXXH_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
quantileTimingpouvait ê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 JOINlors 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
- Ajouter un moyen de lancer l’image clickhouse-server sous un utilisateur personnalisé #4753 (Mikhail f. Shiryaev)
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::terminatepeut 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
inlinedevoid readBinary(...)dansField.cpp. Fusion également des blocsnamespace DBredondants. #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
remoteintroduite 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 ROLLUPpour 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_rowslignes). #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-serverpour 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 champslatest_failed_part,latest_fail_timeetlatest_fail_reasonà la tablesystem.mutationspour 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 partiesqueryetdata. #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
sumMapFilteredafin de limiter le nombre de clés pour lesquelles les valeurs sont additionnées parsumMap. #4129 (Léo Ercolanelli) - Ajout de la prise en charge des types
Nullabledans la fonction de tablemysql. #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) StorageJoinprend désormais en charge le paramètrejoin_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
IPv4etIPv6. Implémentations plus efficaces des fonctionsIPv*. #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
minmaxetsetpour la famille de moteurs de table MergeTree. #4143 (Nikita Vasilev) - Ajout de la conversion de
CROSS JOINenINNER JOINlorsque possible. #4221 #4266 (Artem Zuikov)
Correction de bug
- Correction de
Not found columnpour les colonnes dupliquées dans la sectionJOIN ON. #4279 (Artem Zuikov) - La commande
START REPLICATED SENDSlance 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 formatCSVWithNamesouTSVWIthNameset 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 JOINen présence de doublons dans la table de droite. #4184 (Artem Zuikov) - Correction d’une erreur de segmentation avec
use_uncompressed_cache=1et 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_expressionslors 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 instructionlors 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 receivedlors 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
DateetDateTimesont utilisés dans les branches de l’opérateur conditionnel (fonctionif). Ajout d’un cas générique pour la fonctionif. #4243 (alexey-milovidov) - Les dictionnaires ClickHouse sont désormais chargés dans le processus
clickhouse. #4166 (alexey-milovidov) - Correction d’un interblocage lorsqu’un
SELECTdepuis une table utilisant le moteurFileétait relancé après une erreurNo such file or directory. #4161 (alexey-milovidov) - Correction d’une situation de concurrence lors d’une sélection depuis
system.tables, pouvant provoquer l’erreurtable does not exist. #4313 (alexey-milovidov) clickhouse-clientpeut 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
INproduisait 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
DateetDateTime. #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/sslest 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éesLowCardinalitysont 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é
INDEXdans la requêteCREATE TABLE. Une colonne nomméeindexdoit être entourée de backticks ou de guillemets doubles :`index`. #4143 (Nikita Vasilev) sumMappromeut désormais le type du résultat au lieu de provoquer un dépassement de capacité. L’ancien comportement desumMappeut être obtenu en utilisant la fonctionsumMapWithOverflow. #4151 (Léo Ercolanelli)
Améliorations des performances
std::sortremplacé parpdqsortpour les requêtes sansLIMIT. #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, bne renvoie désormais les colonnesaetbque depuis la table de gauche. #4141 (Artem Zuikov)- L’option
-Cdu client peut désormais être utilisée comme l’option-c. #4232 (syominsergey) - Désormais, l’option
--passwordutilisé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
LIKEou 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_noopest activé. #4294 (alexey-milovidov) - Ajout de la prise en charge de l’option
--versionpour 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ètreasterisk_left_columns_onlyest défini sur 1 lors de l’utilisation deGLOBAL JOINavecSELECT *(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
version de ClickHouse 19.1.10, 2019-03-03
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.xmlest 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
INproduisait des résultats incorrects. #4099 (Alex Zatelepin) clickhouse-clientpeut 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 existlors d’une sélection depuissystem.tables. #4313 (alexey-milovidov) - Correction d’un interblocage lorsqu’un
SELECTsur une table avec le moteurFileétait relancé après une erreurNo 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 receivedlors 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_expressionslors de la comparaison de grandes dates (supérieures à int16). #4341 (alesapin) - Correction d’un segfault avec
uncompressed_cache=1et d’une exception liée à une taille non compressée incorrecte. #4186 (alesapin) - Correction de
ALL JOINavec 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 formatCSVWithNamesouTSVWIthNameset 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 SENDSdémarre désormais les envois répliqués. #4229 (nvartolomei) - Correction de
Not found columnpour les colonnes en double dans la section JOIN ON. #4279 (Artem Zuikov) - Désormais,
/etc/sslest 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
DateetDateTime. #4237 (valexey) - Correction d’un résultat incorrect lorsque des arguments
DateetDateTimesont utilisés dans les branches de l’opérateur conditionnel (fonctionif). Ajout d’un cas générique pour la fonctionif. #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
ALTERsur les codecs de compression. #4054 (alesapin) - Ajout des fonctions
left,right,trim,ltrim,rtrim,timestampadd,timestampsubpour assurer la compatibilité avec le standard SQL. #3826 (Ivan Blinkov) - Prise en charge de l’écriture dans les tables
HDFSet dans la fonction de tablehdfs. #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,-CaseInsensitiveet-CaseInsensitiveUTF8. #4053 (Danila Kutenin) - Élagage des shards inutilisés si la requête
SELECTfiltre sur la clé de sharding (paramètreoptimize_skip_unused_shards). #3851 (Gleb Kanterov, Ivan) - Le moteur
Kafkapeut 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 fonctionmodelEvaluaterenvoie un tuple contenant les prédictions brutes par classe pour les modèles multiclasses.libcatboostmodel.sodoit être compilé avec #607. #3959 (KochetovNicolai) - Ajout des fonctions
filesystemAvailable,filesystemFree,filesystemCapacity. #4097 (Boris Granveaud) - Ajout des fonctions de hachage
xxHash64etxxHash32. #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 commeremote, mais utilise une connexion sécurisée. #4088 (proller)
Fonctionnalités expérimentales
- Ajout de l’émulation de plusieurs JOIN (
allow_experimental_multiple_joins_emulationsetting). #3946 (Artem Zuikov)
Corrections de bugs
- Limitation par défaut du paramètre
compiled_expression_cache_sizeafin 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_zkn’é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 dansgetStructureOfRemoteTable. #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/fdavant que tous les descripteurs de fichiers n’aient été lus depuis/proc, après le fork du sous-processusodbc-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
arrayEnumerateUniqetarrayEnumerateDenseen cas d’arguments invalides. #3909 (alexey-milovidov) - Correction d’un UB dans StorageMerge. #3910 (Amos Bird)
- Correction d’un segfault dans les fonctions
addDaysetsubtractDays. #3913 (alexey-milovidov) - Correction de l’erreur suivante : les fonctions
round,floor,truncetceilpouvaient 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
LowCardinalitypour le formatNativedans 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
compileest 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 ONet 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 EXISTSdans les instructionsALTER TABLE ADD COLUMN, ainsi que deIF EXISTSdansDROP/MODIFY/CLEAR/COMMENT COLUMN. #3900 (Boris Granveaud) - Fonction
parseDateTimeBestEffort: prise en charge des formatsDD.MM.YYYY,DD.MM.YY,DD-MM-YYYY,DD-Mon-YYYY,DD/Month/YYYYet formats similaires. #3922 (alexey-milovidov) CapnProtoInputStreamprend 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 TOTALSdans l’ODBC Driver. #3836 (Maksim Koritckiy) - Possibilité d’utiliser les
Enumcomme entiers dans la fonction if. #3875 (Ivan) - Ajout du paramètre
low_cardinality_allow_in_native_format. S’il est désactivé, le typeLowCadrinalityn’est pas utilisé dans le formatNative. #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
sequenceMatchetsequenceCountlorsque 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 commandeALTER 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
rdkafkavers 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
chownsur les répertoires dans l’image Docker du serveur. #3967 (alesapin) - Activation de la plupart des avertissements de
-Weverythingdans clang. Activation de-Wpedantic. #3986 (alexey-milovidov) - Ajout de quelques avertissements supplémentaires disponibles uniquement dans clang 8. #3993 (alexey-milovidov)
- Liaison à
libLLVMplutô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-serverrecommandera le paquetlibcap2-binpour utiliser l’outilsetcapafin 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)