ClickHouse v19.17.4.11 Release Notes

Release Date: 2019-11-22 // over 4 years ago
  • Backward Incompatible Change

    • Using column instead of AST to store scalar subquery results for better performance. Setting enable_scalar_subquery_optimization was added in 19.17 and it was enabled by default. It leads to errors like this during upgrade to 19.17.2 or 19.17.3 from previous versions. This setting was disabled by default in 19.17.4, to make possible upgrading from 19.16 and older versions without errors. #7392 (Amos Bird)

    🆕 New Feature

    • ➕ Add the ability to create dictionaries with DDL queries. #7360 (alesapin)
    • 👍 Authentication in S3 table function and storage. Now we have complete support for S3 import/export. #7623 (Vladimir Chebotarev)
    • 👉 Make bloom_filter type of index supporting LowCardinality and Nullable #7363 #7561 (Nikolai Kochetov)
    • ➕ Add function isValidJSON to check that passed string is a valid json. #5910 #7293 (Vdimir)
    • Implement arrayCompact function #7328 (Memo)
    • Created function hex for Decimal numbers. It works like hex(reinterpretAsString()), but doesn't delete last zero bytes. #7355 (Mikhail Korotov)
    • ➕ Add arrayFill and arrayReverseFill functions, which replace elements by other elements in front/back of them in the array. #7380 (hcz)
    • Up precision of avg aggregate function result to max of Decimal type #7446 (Andrey Konyaev)
    • ➕ Add CRC32IEEE()/CRC64() support #7480 (Azat Khuzhin)
    • Implement char function similar to one in mysql #7486 (sundyli)
    • ➕ Add bitmapTransform function. It transforms an array of values in a bitmap to another array of values, the result is a new bitmap #7598 (Zhichang Yu)
    • Implemented javaHashUTF16LE() function #7651 (achimbab)
    • Add _shard_num virtual column for the Distributed engine #7624 (Azat Khuzhin)

    Experimental Feature

    🐛 Bug Fix

    • 🛠 Fix incorrect float parsing in Values #7817 #7870 (tavplubix)
    • 🛠 Fix rare deadlock which can happen when trace_log is enabled. #7838 (filimonov)
    • Prevent message duplication when producing Kafka table has any MVs selecting from it #7265 (Ivan)
    • 👌 Support for Array(LowCardinality(Nullable(String))) in IN. Resolves #7364 #7366 (achimbab)
    • Add handling of SQL_TINYINT and SQL_BIGINT, and fix handling of SQL_FLOAT data source types in ODBC Bridge. #7491 (Denis Glazachev)
    • 🛠 Fix aggregation (avg and quantiles) over empty decimal columns #7431 (Andrey Konyaev)
    • 🛠 Fix INSERT into Distributed with MATERIALIZED columns #7377 (Azat Khuzhin)
    • 🚚 Make MOVE PARTITION work if some parts of partition are already on destination disk or volume #7434 (Vladimir Chebotarev)
    • 🛠 Fixed bug with hardlinks failing to be created during mutations in ReplicatedMergeTree in multi-disk configurations. #7558 (Vladimir Chebotarev)
    • 🛠 Fixed a bug with a mutation on a MergeTree when whole part remains unchanged and best space is being found on another disk #7602 (Vladimir Chebotarev)
    • 🆓 Fixed bug with keep_free_space_ratio not being read from disks configuration #7645 (Vladimir Chebotarev)
    • 🛠 Fix bug with table contains only Tuple columns or columns with complex paths. Fixes 7541. #7545 (alesapin)
    • Do not account memory for Buffer engine in max_memory_usage limit #7552 (Azat Khuzhin)
    • 🛠 Fix final mark usage in MergeTree tables ordered by tuple(). In rare cases it could lead to Can't adjust last granule error while select. #7639 (Anton Popov)
    • 🛠 Fix bug in mutations that have predicate with actions that require context (for example functions for json), which may lead to crashes or strange exceptions. #7664 (alesapin)
    • 🛠 Fix mismatch of database and table names escaping in data/ and shadow/ directories #7575 (Alexander Burmak)
    • 👌 Support duplicated keys in RIGHT|FULL JOINs, e.g. ON t.x = u.x AND t.x = u.y. Fix crash in this case. #7586 (Artem Zuikov)
    • 🛠 Fix Not found column <expression> in block when joining on expression with RIGHT or FULL JOIN. #7641 (Artem Zuikov)
    • One more attempt to fix infinite loop in PrettySpace format #7591 (Olga Khvostikova)
    • 🛠 Fix bug in concat function when all arguments were FixedString of the same size. #7635 (alesapin)
    • 🛠 Fixed exception in case of using 1 argument while defining S3, URL and HDFS storages. #7618 (Vladimir Chebotarev)
    • 🛠 Fix scope of the InterpreterSelectQuery for views with query #7601 (Azat Khuzhin)

    👌 Improvement

    • Nullable columns recognized and NULL-values handled correctly by ODBC-bridge #7402 (Vasily Nemkov)
    • Write current batch for distributed send atomically #7600 (Azat Khuzhin)
    • 👻 Throw an exception if we cannot detect table for column name in query. #7358 (Artem Zuikov)
    • Add merge_max_block_size setting to MergeTreeSettings #7412 (Artem Zuikov)
    • Queries with HAVING and without GROUP BY assume group by constant. So, SELECT 1 HAVING 1 now returns a result. #7496 (Amos Bird)
    • 👌 Support parsing (X,) as tuple similar to python. #7501, #7562 (Amos Bird)
    • 👉 Make range function behaviors almost like pythonic one. #7518 (sundyli)
    • ➕ Add constraints columns to table system.settings #7553 (Vitaly Baranov)
    • 👍 Better Null format for tcp handler, so that it's possible to use select ignore(<expression>) from table format Null for perf measure via clickhouse-client #7606 (Amos Bird)
    • 📜 Queries like CREATE TABLE ... AS (SELECT (1, 2)) are parsed correctly #7542 (hcz)

    🐎 Performance Improvement

    • 🐎 The performance of aggregation over short string keys is improved. #6243 (Alexander Kuzmenkov, Amos Bird)
    • ⚙ Run another pass of syntax/expression analysis to get potential optimizations after constant predicates are folded. #7497 (Amos Bird)
    • 👉 Use storage meta info to evaluate trivial SELECT count() FROM table; #7510 (Amos Bird, alexey-milovidov)
    • Vectorize processing arrayReduce similar to Aggregator addBatch. #7608 (Amos Bird)
    • 🐎 Minor improvements in performance of Kafka consumption #7475 (Ivan)

    🏗 Build/Testing/Packaging Improvement

    • ➕ Add support for cross-compiling to the CPU architecture AARCH64. Refactor packager script. #7370 #7539 (Ivan)
    • 🐧 Unpack darwin-x86_64 and linux-aarch64 toolchains into mounted Docker volume when building packages #7534 (Ivan)
    • ⚡️ Update Docker Image for Binary Packager #7474 (Ivan)
    • 🛠 Fixed compile errors on MacOS Catalina #7585 (Ernest Poletaev)
    • 🔨 Some refactoring in query analysis logic: split complex class into several simple ones. #7454 (Artem Zuikov)
    • 🛠 Fix build without submodules #7295 (proller)
    • 👍 Better add_globs in CMake files #7418 (Amos Bird)
    • ✂ Remove hardcoded paths in unwind target #7460 (Konstantin Podshumok)
    • 👍 Allow to use mysql format without ssl #7524 (proller)

    Other