ClickHouse v20.3.2.1 Release Notes

Release Date: 2020-03-12 // about 4 years ago
  • Backward Incompatible Change

    • Fixed the issue file name too long when sending data for Distributed tables for a large number of replicas. Fixed the issue that replica credentials were exposed in the server log. The format of directory name on disk was changed to [shard{shard_index}[_replica{replica_index}]]. #8911 (Mikhail Korotov) After you upgrade to the new version, you will not be able to downgrade without manual intervention, because old server version does not recognize the new directory format. If you want to downgrade, you have to manually rename the corresponding directories to the old format. This change is relevant only if you have used asynchronous INSERTs to Distributed tables. In the version 20.3.3 we will introduce a setting that will allow you to enable the new format gradually.
    • πŸ”„ Changed the format of replication log entries for mutation commands. You have to wait for old mutations to process before installing the new version.
    • 🌲 Implement simple memory profiler that dumps stacktraces to system.trace_log every N bytes over soft allocation limit #8765 (Ivan) #9472 (alexey-milovidov) The column of system.trace_log was renamed from timer_type to trace_type. This will require changes in third-party performance analysis and flamegraph processing tools.
    • πŸ”Š Use OS thread id everywhere instead of internal thread number. This fixes #7477 Old clickhouse-client cannot receive logs that are send from the server when the setting send_logs_level is enabled, because the names and types of the structured log messages were changed. On the other hand, different server versions can send logs with different types to each other. When you don't use the send_logs_level setting, you should not care. #8954 (alexey-milovidov)
    • βœ‚ Remove indexHint function #9542 (alexey-milovidov)
    • βœ‚ Remove findClusterIndex, findClusterValue functions. This fixes #8641. If you were using these functions, send an email to [email protected] #9543 (alexey-milovidov)
    • 0️⃣ Now it's not allowed to create columns or add columns with SELECT subquery as default expression. #9481 (alesapin)
    • Require aliases for subqueries in JOIN. #9274 (Artem Zuikov)
    • πŸ‘Œ Improved ALTER MODIFY/ADD queries logic. Now you cannot ADD column without type, MODIFY default expression doesn't change type of column and MODIFY type doesn't loose default expression value. Fixes #8669. #9227 (alesapin)
    • πŸ‘€ Require server to be restarted to apply the changes in logging configuration. This is a temporary workaround to avoid the bug where the server logs to a deleted log file (see #8696). #8707 (Alexander Kuzmenkov)
    • πŸ‘‰ The setting experimental_use_processors is enabled by default. This setting enables usage of the new query pipeline. This is internal refactoring and we expect no visible changes. If you will see any issues, set it to back zero. #8768 (alexey-milovidov)

    πŸ†• New Feature

    • βž• Add Avro and AvroConfluent input/output formats #8571 (Andrew Onyshchuk) #8957 (Andrew Onyshchuk) #8717 (alexey-milovidov)
    • ⚑️ Multi-threaded and non-blocking updates of expired keys in cache dictionaries (with optional permission to read old ones). #8303 (Nikita Mikhaylov)
    • βž• Add query ALTER ... MATERIALIZE TTL. It runs mutation that forces to remove expired data by TTL and recalculates meta-information about TTL in all parts. #8775 (Anton Popov)
    • πŸ”€ Switch from HashJoin to MergeJoin (on disk) if needed #9082 (Artem Zuikov)
    • βž• Added MOVE PARTITION command for ALTER TABLE #4729 #6168 (Guillaume Tassery)
    • πŸ”§ Reloading storage configuration from configuration file on the fly. #8594 (Vladimir Chebotarev)
    • πŸ‘ Allowed to change storage_policy to not less rich one. #8107 (Vladimir Chebotarev)
    • βž• Added support for globs/wildcards for S3 storage and table function. #8851 (Vladimir Chebotarev)
    • πŸ›  Implement bitAnd, bitOr, bitXor, bitNot for FixedString(N) datatype. #9091 (Guillaume Tassery)
    • βž• Added function bitCount. This fixes #8702. #8708 (alexey-milovidov) #8749 (ikopylov)
    • βž• Add generateRandom table function to generate random rows with given schema. Allows to populate arbitrary test table with data. #8994 (Ilya Yatsishin)
    • πŸ‘ JSONEachRowFormat: support special case when objects enclosed in top-level array. #8860 (Kruglov Pavel)
    • 0️⃣ Now it's possible to create a column with DEFAULT expression which depends on a column with default ALIAS expression. #9489 (alesapin)
    • πŸ‘ Allow to specify --limit more than the source data size in clickhouse-obfuscator. The data will repeat itself with different random seed. #9155 (alexey-milovidov)
    • βž• Added groupArraySample function (similar to groupArray) with reservior sampling algorithm. #8286 (Amos Bird)
    • Now you can monitor the size of update queue in cache/complex_key_cache dictionaries via system metrics. #9413 (Nikita Mikhaylov)
    • Allow to use CRLF as a line separator in CSV output format with setting output_format_csv_crlf_end_of_line is set to 1 #8934 #8935 #8963 (Mikhail Korotov)
    • Implement more functions of the H3 API: h3GetBaseCell, h3HexAreaM2, h3IndexesAreNeighbors, h3ToChildren, h3ToString and stringToH3 #8938 (Nico Mandery)
    • πŸ“œ New setting introduced: max_parser_depth to control maximum stack size and allow large complex queries. This fixes #6681 and #7668. #8647 (Maxim Smirnov)
    • ⚑️ Add a setting force_optimize_skip_unused_shards setting to throw if skipping of unused shards is not possible #8805 (Azat Khuzhin)
    • πŸ‘ Allow to configure multiple disks/volumes for storing data for send in Distributed engine #8756 (Azat Khuzhin)
    • πŸ‘Œ Support storage policy (<tmp_policy>) for storing temporary data. #8750 (Azat Khuzhin)
    • βž• Added X-ClickHouse-Exception-Code HTTP header that is set if exception was thrown before sending data. This implements #4971. #8786 (Mikhail Korotov)
    • βž• Added function ifNotFinite. It is just a syntactic sugar: ifNotFinite(x, y) = isFinite(x) ? x : y. #8710 (alexey-milovidov)
    • Added last_successful_update_time column in system.dictionaries table #9394 (Nikita Mikhaylov)
    • βž• Add blockSerializedSize function (size on disk without compression) #8952 (Azat Khuzhin)
    • βž• Add function moduloOrZero #9358 (hcz)
    • Added system tables system.zeros and system.zeros_mt as well as tale functions zeros() and zeros_mt(). Tables (and table functions) contain single column with name zero and type UInt8. This column contains zeros. It is needed for test purposes as the fastest method to generate many rows. This fixes #6604 #9593 (Nikolai Kochetov)

    Experimental Feature

    • Add new compact format of parts in MergeTree-family tables in which all columns are stored in one file. It helps to increase performance of small and frequent inserts. The old format (one file per column) is now called wide. Data storing format is controlled by settings min_bytes_for_wide_part and min_rows_for_wide_part. #8290 (Anton Popov)
    • πŸ‘Œ Support for S3 storage for Log, TinyLog and StripeLog tables. #8862 (Pavel Kovalenko)

    πŸ› Bug Fix

    • πŸ›  Fixed inconsistent whitespaces in log messages. #9322 (alexey-milovidov)
    • πŸ›  Fix bug in which arrays of unnamed tuples were flattened as Nested structures on table creation. #8866 (achulkov2)
    • πŸ›  Fixed the issue when "Too many open files" error may happen if there are too many files matching glob pattern in File table or file table function. Now files are opened lazily. This fixes #8857 #8861 (alexey-milovidov)
    • ⬇️ DROP TEMPORARY TABLE now drops only temporary table. #8907 (Vitaly Baranov)
    • βœ‚ Remove outdated partition when we shutdown the server or DETACH/ATTACH a table. #8602 (Guillaume Tassery)
    • 0️⃣ For how the default disk calculates the free space from data subdirectory. Fixed the issue when the amount of free space is not calculated correctly if the data directory is mounted to a separate device (rare case). This fixes #7441 #9257 (Mikhail Korotov)
    • πŸ‘ Allow comma (cross) join with IN () inside. #9251 (Artem Zuikov)
    • πŸ‘ Allow to rewrite CROSS to INNER JOIN if there's [NOT] LIKE operator in WHERE section. #9229 (Artem Zuikov)
    • Fix possible incorrect result after GROUP BY with enabled setting distributed_aggregation_memory_efficient. Fixes #9134. #9289 (Nikolai Kochetov)
    • Found keys were counted as missed in metrics of cache dictionaries. #9411 (Nikita Mikhaylov)
    • πŸ›  Fix replication protocol incompatibility introduced in #8598. #9412 (alesapin)
    • Fixed race condition on queue_task_handle at the startup of ReplicatedMergeTree tables. #9552 (alexey-milovidov)
    • The token NOT didn't work in SHOW TABLES NOT LIKE query #8727 #8940 (alexey-milovidov)
    • βž• Added range check to function h3EdgeLengthM. Without this check, buffer overflow is possible. #8945 (alexey-milovidov)
    • πŸ›  Fixed up a bug in batched calculations of ternary logical OPs on multiple arguments (more than 10). #8718 (Alexander Kazakov)
    • πŸ›  Fix error of PREWHERE optimization, which could lead to segfaults or Inconsistent number of columns got from MergeTreeRangeReader exception. #9024 (Anton Popov)
    • ⏱ Fix unexpected Timeout exceeded while reading from socket exception, which randomly happens on secure connection before timeout actually exceeded and when query profiler is enabled. Also add connect_timeout_with_failover_secure_ms settings (default 100ms), which is similar to connect_timeout_with_failover_ms, but is used for secure connections (because SSL handshake is slower, than ordinary TCP connection) #9026 (tavplubix)
    • Fix bug with mutations finalization, when mutation may hang in state with parts_to_do=0 and is_done=0. #9022 (alesapin)
    • πŸ”€ Use new ANY JOIN logic with partial_merge_join setting. It's possible to make ANY|ALL|SEMI LEFT and ALL INNER joins with partial_merge_join=1 now. #8932 (Artem Zuikov)
    • πŸ‘» Shard now clamps the settings got from the initiator to the shard's constaints instead of throwing an exception. This fix allows to send queries to a shard with another constraints. #9447 (Vitaly Baranov)
    • πŸ›  Fixed memory management problem in MergeTreeReadPool. #8791 (Vladimir Chebotarev)
    • πŸ›  Fix toDecimal*OrNull() functions family when called with string e. Fixes #8312 #8764 (Artem Zuikov)
    • πŸ‘‰ Make sure that FORMAT Null sends no data to the client. #8767 (Alexander Kuzmenkov)
    • πŸ›  Fix bug that timestamp in LiveViewBlockInputStream will not updated. LIVE VIEW is an experimental feature. #8644 (vxider) #8625 (vxider)
    • πŸ›  Fixed ALTER MODIFY TTL wrong behavior which did not allow to delete old TTL expressions. #8422 (Vladimir Chebotarev)
    • πŸ›  Fixed UBSan report in MergeTreeIndexSet. This fixes #9250 #9365 (alexey-milovidov)
    • πŸ›  Fixed the behaviour of match and extract functions when haystack has zero bytes. The behaviour was wrong when haystack was constant. This fixes #9160 #9163 (alexey-milovidov) #9345 (alexey-milovidov)
    • Avoid throwing from destructor in Apache Avro 3rd-party library. #9066 (Andrew Onyshchuk)
    • Don't commit a batch polled from Kafka partially as it can lead to holes in data. #8876 (filimonov)
    • πŸ›  Fix joinGet with nullable return types. https://github.com/ClickHouse/ClickHouse/issues/8919 #9014 (Amos Bird)
    • πŸ›  Fix data incompatibility when compressed with T64 codec. #9016 (Artem Zuikov) Fix data type ids in T64 compression codec that leads to wrong (de)compression in affected versions. #9033 (Artem Zuikov)
    • Add setting enable_early_constant_folding and disable it in some cases that leads to errors. #9010 (Artem Zuikov)
    • πŸ›  Fix pushdown predicate optimizer with VIEW and enable the test #9011 (Winter Zhang)
    • πŸ›  Fix segfault in Merge tables, that can happen when reading from File storages #9387 (tavplubix)
    • βž• Added a check for storage policy in ATTACH PARTITION FROM, REPLACE PARTITION, MOVE TO TABLE. Otherwise it could make data of part inaccessible after restart and prevent ClickHouse to start. #9383 (Vladimir Chebotarev)
    • πŸ›  Fix alters if there is TTL set for table. #8800 (Anton Popov)
    • πŸ›  Fix race condition that can happen when SYSTEM RELOAD ALL DICTIONARIES is executed while some dictionary is being modified/added/removed. #8801 (Vitaly Baranov)
    • In previous versions Memory database engine use empty data path, so tables are created in path directory (e.g. /var/lib/clickhouse/), not in data directory of database (e.g. /var/lib/clickhouse/db_name). #8753 (tavplubix)
    • πŸ›  Fixed wrong log messages about missing default disk or policy. #9530 (Vladimir Chebotarev)
    • πŸ›  Fix not(has()) for the bloom_filter index of array types. #9407 (achimbab)
    • πŸ‘ Allow first column(s) in a table with Log engine be an alias #9231 (Ivan)
    • πŸ›  Fix order of ranges while reading from MergeTree table in one thread. It could lead to exceptions from MergeTreeRangeReader or wrong query results. #9050 (Anton Popov)
    • πŸ›  Make reinterpretAsFixedString to return FixedString instead of String. #9052 (Andrew Onyshchuk)
    • Avoid extremely rare cases when the user can get wrong error message (Success instead of detailed error description). #9457 (alexey-milovidov)
    • Do not crash when using Template format with empty row template. #8785 (Alexander Kuzmenkov)
    • πŸ“‡ Metadata files for system tables could be created in wrong place #8653 (tavplubix) Fixes #8581.
    • πŸ›  Fix data race on exception_ptr in cache dictionary #8303. #9379 (Nikita Mikhaylov)
    • πŸ‘» Do not throw an exception for query ATTACH TABLE IF NOT EXISTS. Previously it was thrown if table already exists, despite the IF NOT EXISTS clause. #8967 (Anton Popov)
    • πŸ›  Fixed missing closing paren in exception message. #8811 (alexey-milovidov)
    • Avoid message Possible deadlock avoided at the startup of clickhouse-client in interactive mode. #9455 (alexey-milovidov)
    • πŸ›  Fixed the issue when padding at the end of base64 encoded value can be malformed. Update base64 library. This fixes #9491, closes #9492 #9500 (alexey-milovidov)
    • πŸ›  Prevent losing data in Kafka in rare cases when exception happens after reading suffix but before commit. Fixes #9378 #9507 (filimonov)
    • πŸ›  Fixed exception in DROP TABLE IF EXISTS #8663 (Nikita Vasilev)
    • πŸ›  Fix crash when a user tries to ALTER MODIFY SETTING for old-formated MergeTree table engines family. #9435 (alesapin)
    • πŸ‘Œ Support for UInt64 numbers that don't fit in Int64 in JSON-related functions. Update SIMDJSON to master. This fixes #9209 #9344 (alexey-milovidov)
    • πŸ›  Fixed execution of inversed predicates when non-strictly monotinic functional index is used. #9223 (Alexander Kazakov)
    • Don't try to fold IN constant in GROUP BY #8868 (Amos Bird)
    • πŸ›  Fix bug in ALTER DELETE mutations which leads to index corruption. This fixes #9019 and #8982. Additionally fix extremely rare race conditions in ReplicatedMergeTree ALTER queries. #9048 (alesapin)
    • When the setting compile_expressions is enabled, you can get unexpected column in LLVMExecutableFunction when we use Nullable type #8910 (Guillaume Tassery)
    • Multiple fixes for Kafka engine: 1) fix duplicates that were appearing during consumer group rebalance. 2) Fix rare 'holes' appeared when data were polled from several partitions with one poll and committed partially (now we always process / commit the whole polled block of messages). 3) Fix flushes by block size (before that only flushing by timeout was working properly). 4) better subscription procedure (with assignment feedback). 5) Make tests work faster (with default intervals and timeouts). Due to the fact that data was not flushed by block size before (as it should according to documentation), that PR may lead to some performance degradation with default settings (due to more often & tinier flushes which are less optimal). If you encounter the performance issue after that change - please increase kafka_max_block_size in the table to the bigger value ( for example CREATE TABLE ...Engine=Kafka ... SETTINGS ... kafka_max_block_size=524288). Fixes #7259 #8917 (filimonov)
    • πŸ›  Fix Parameter out of bound exception in some queries after PREWHERE optimizations. #8914 (Baudouin Giard)
    • πŸ›  Fixed the case of mixed-constness of arguments of function arrayZip. #8705 (alexey-milovidov)
    • πŸ›  When executing CREATE query, fold constant expressions in storage engine arguments. Replace empty database name with current database. Fixes #6508, #3492 #9262 (tavplubix)
    • 0️⃣ Now it's not possible to create or add columns with simple cyclic aliases like a DEFAULT b, b DEFAULT a. #9603 (alesapin)
    • πŸ›  Fixed a bug with double move which may corrupt original part. This is relevant if you use ALTER TABLE MOVE #8680 (Vladimir Chebotarev)
    • πŸ‘ Allow interval identifier to correctly parse without backticks. Fixed issue when a query cannot be executed even if the interval identifier is enclosed in backticks or double quotes. This fixes #9124. #9142 (alexey-milovidov)
    • πŸ›  Fixed fuzz test and incorrect behaviour of bitTestAll/bitTestAny functions. #9143 (alexey-milovidov)
    • πŸ›  Fix possible crash/wrong number of rows in LIMIT n WITH TIES when there are a lot of rows equal to n'th row. #9464 (tavplubix)
    • πŸ›  Fix mutations with parts written with enabled insert_quorum. #9463 (alesapin)
    • πŸ›  Fix data race at destruction of Poco::HTTPServer. It could happen when server is started and immediately shut down. #9468 (Anton Popov)
    • Fix bug in which a misleading error message was shown when running SHOW CREATE TABLE a_table_that_does_not_exist. #8899 (achulkov2)
    • πŸ›  Fixed Parameters are out of bound exception in some rare cases when we have a constant in the SELECT clause when we have an ORDER BY and a LIMIT clause. #8892 (Guillaume Tassery)
    • πŸ›  Fix mutations finalization, when already done mutation can have status is_done=0. #9217 (alesapin)
    • πŸ”€ Prevent from executing ALTER ADD INDEX for MergeTree tables with old syntax, because it doesn't work. #8822 (Mikhail Korotov)
    • 🚚 During server startup do not access table, which LIVE VIEW depends on, so server will be able to start. Also remove LIVE VIEW dependencies when detaching LIVE VIEW. LIVE VIEW is an experimental feature. #8824 (tavplubix)
    • πŸ›  Fix possible segfault in MergeTreeRangeReader, while executing PREWHERE. #9106 (Anton Popov)
    • πŸ›  Fix possible mismatched checksums with column TTLs. #9451 (Anton Popov)
    • πŸ›  Fixed a bug when parts were not being moved in background by TTL rules in case when there is only one volume. #8672 (Vladimir Chebotarev)
    • πŸ›  Fixed the issue Method createColumn() is not implemented for data type Set. This fixes #7799. #8674 (alexey-milovidov)
    • Now we will try finalize mutations more frequently. #9427 (alesapin)
    • πŸ›  Fix intDiv by minus one constant #9351 (hcz)
    • πŸ›  Fix possible race condition in BlockIO. #9356 (Nikolai Kochetov)
    • πŸ›  Fix bug leading to server termination when trying to use / drop Kafka table created with wrong parameters. #9513 (filimonov)
    • βž• Added workaround if OS returns wrong result for timer_create function. #8837 (alexey-milovidov)
    • Fixed error in usage of min_marks_for_seek parameter. Fixed the error message when there is no sharding key in Distributed table and we try to skip unused shards. #8908 (Azat Khuzhin)

    πŸ‘Œ Improvement

    • πŸ“‡ Implement ALTER MODIFY/DROP queries on top of mutations for ReplicatedMergeTree* engines family. Now ALTERS blocks only at the metadata update stage, and don't block after that. #8701 (alesapin)
    • βž• Add ability to rewrite CROSS to INNER JOINs with WHERE section containing unqialified names. #9512 (Artem Zuikov)
    • πŸ‘‰ Make SHOW TABLES and SHOW DATABASES queries support the WHERE expressions and FROM/IN #9076 (sundyli)
    • Added a setting deduplicate_blocks_in_dependent_materialized_views. #9070 (urykhy)
    • β†ͺ After recent changes MySQL client started to print binary strings in hex thereby making them not readable (#9032). The workaround in ClickHouse is to mark string columns as UTF-8, which is not always, but usually the case. #9079 (Yuriy Baranov)
    • βž• Add support of String and FixedString keys for sumMap #8903 (Baudouin Giard)
    • πŸ‘Œ Support string keys in SummingMergeTree maps #8933 (Baudouin Giard)
    • 🚦 Signal termination of thread to the thread pool even if the thread has thrown exception #8736 (Ding Xiang Fei)
    • πŸ‘ Allow to set query_id in clickhouse-benchmark #9416 (Anton Popov)
    • Don't allow strange expressions in ALTER TABLE ... PARTITION partition query. This addresses #7192 #8835 (alexey-milovidov)
    • πŸ‘ The table system.table_engines now provides information about feature support (like supports_ttl or supports_sort_order). #8830 (Max Akhmedov)
    • 0️⃣ Enable system.metric_log by default. It will contain rows with values of ProfileEvents, CurrentMetrics collected with "collect_interval_milliseconds" interval (one second by default). The table is very small (usually in order of megabytes) and collecting this data by default is reasonable. #9225 (alexey-milovidov)
    • πŸŽ‰ Initialize query profiler for all threads in a group, e.g. it allows to fully profile insert-queries. Fixes #6964 #8874 (Ivan)
    • ⏱ Now temporary LIVE VIEW is created by CREATE LIVE VIEW name WITH TIMEOUT [42] ... instead of CREATE TEMPORARY LIVE VIEW ..., because the previous syntax was not consistent with CREATE TEMPORARY TABLE ... #9131 (tavplubix)
    • πŸ”§ Add text_log.level configuration parameter to limit entries that goes to system.text_log table #8809 (Azat Khuzhin)
    • πŸ‘ Allow to put downloaded part to a disks/volumes according to TTL rules #8598 (Vladimir Chebotarev)
    • For external MySQL dictionaries, allow to mutualize MySQL connection pool to "share" them among dictionaries. This option significantly reduces the number of connections to MySQL servers. #9409 (ClΓ©ment Rodriguez)
    • πŸ‘‰ Show nearest query execution time for quantiles in clickhouse-benchmark output instead of interpolated values. It's better to show values that correspond to the execution time of some queries. #8712 (alexey-milovidov)
    • πŸ›  Possibility to add key & timestamp for the message when inserting data to Kafka. Fixes #7198 #8969 (filimonov)
    • 🌲 If server is run from terminal, highlight thread number, query id and log priority by colors. This is for improved readability of correlated log messages for developers. #8961 (alexey-milovidov)
    • πŸ‘ Better exception message while loading tables for Ordinary database. #9527 (alexey-milovidov)
    • πŸ›  Implement arraySlice for arrays with aggregate function states. This fixes #9388 #9391 (alexey-milovidov)
    • πŸ‘ Allow constant functions and constant arrays to be used on the right side of IN operator. #8813 (Anton Popov)
    • πŸ‘» If zookeeper exception has happened while fetching data for system.replicas, display it in a separate column. This implements #9137 #9138 (alexey-milovidov)
    • πŸ”€ Atomically remove MergeTree data parts on destroy. #8402 (Vladimir Chebotarev)
    • πŸ‘Œ Support row-level security for Distributed tables. #8926 (Ivan)
    • Now we recognize suffix (like KB, KiB...) in settings values. #8072 (Mikhail Korotov)
    • Prevent out of memory while constructing result of a large JOIN. #8637 (Artem Zuikov)
    • βž• Added names of clusters to suggestions in interactive mode in clickhouse-client. #8709 (alexey-milovidov)
    • πŸŽ‰ Initialize query profiler for all threads in a group, e.g. it allows to fully profile insert-queries #8820 (Ivan)
    • Added column exception_code in system.query_log table. #8770 (Mikhail Korotov)
    • πŸ”§ Enabled MySQL compatibility server on port 9004 in the default server configuration file. Fixed password generation command in the example in configuration. #8771 (Yuriy Baranov)
    • πŸ›  Prevent abort on shutdown if the filesystem is readonly. This fixes #9094 #9100 (alexey-milovidov)
    • πŸ‘ Better exception message when length is required in HTTP POST query. #9453 (alexey-milovidov)
    • Add _path and _file virtual columns to HDFS and File engines and hdfs and file table functions #8489 (Olga Khvostikova)
    • πŸ›  Fix error Cannot find column while inserting into MATERIALIZED VIEW in case if new column was added to view's internal table. #8766 #8788 (vzakaznikov) #8788 #8806 (Nikolai Kochetov) #8803 (Nikolai Kochetov)
    • πŸ›  Fix progress over native client-server protocol, by send progress after final update (like logs). This may be relevant only to some third-party tools that are using native protocol. #9495 (Azat Khuzhin)
    • βž• Add a system metric tracking the number of client connections using MySQL protocol (#9013). #9015 (Eugene Klimov)
    • From now on, HTTP responses will have X-ClickHouse-Timezone header set to the same timezone value that SELECT timezone() would report. #9493 (Denis Glazachev)

    🐎 Performance Improvement

    • πŸ‘Œ Improve performance of analysing index with IN #9261 (Anton Popov)
    • Simpler and more efficient code in Logical Functions + code cleanups. A followup to #8718 #8728 (Alexander Kazakov)
    • 🐎 Overall performance improvement (in range of 5%..200% for affected queries) by ensuring even more strict aliasing with C++20 features. #9304 (Amos Bird)
    • More strict aliasing for inner loops of comparison functions. #9327 (alexey-milovidov)
    • More strict aliasing for inner loops of arithmetic functions. #9325 (alexey-milovidov)
    • βœ… A ~3 times faster implementation for ColumnVector::replicate(), via which ColumnConst::convertToFullColumn() is implemented. Also will be useful in tests when materializing constants. #9293 (Alexander Kazakov)
    • 🐎 Another minor performance improvement to ColumnVector::replicate() (this speeds up the materialize function and higher order functions) an even further improvement to #9293 #9442 (Alexander Kazakov)
    • πŸ‘Œ Improved performance of stochasticLinearRegression aggregate function. This patch is contributed by Intel. #8652 (alexey-milovidov)
    • πŸ‘Œ Improve performance of reinterpretAsFixedString function. #9342 (alexey-milovidov)
    • Do not send blocks to client for Null format in processors pipeline. #8797 (Nikolai Kochetov) #8767 (Alexander Kuzmenkov)

    πŸ— Build/Testing/Packaging Improvement

    • 🐧 Exception handling now works correctly on Windows Subsystem for Linux. See https://github.com/ClickHouse-Extras/libunwind/pull/3 This fixes #6480 #9564 (sobolevsv)
    • Replace readline with replxx for interactive line editing in clickhouse-client #8416 (Ivan)
    • πŸ‘ Better build time and less template instantiations in FunctionsComparison. #9324 (alexey-milovidov)
    • βž• Added integration with clang-tidy in CI. See also #6044 #9566 (alexey-milovidov)
    • πŸ‘· Now we link ClickHouse in CI using lld even for gcc. #9049 (alesapin)
    • Allow to randomize thread scheduling and insert glitches when THREAD_FUZZER_* environment variables are set. This helps testing. #9459 (alexey-milovidov)
    • βœ… Enable secure sockets in stateless tests #9288 (tavplubix)
    • Make SPLIT_SHARED_LIBRARIES=OFF more robust #9156 (Azat Khuzhin)
    • Make "performance_introspection_and_logging" test reliable to random server stuck. This may happen in CI environment. See also #9515 #9528 (alexey-milovidov)
    • πŸ’… Validate XML in style check. #9550 (alexey-milovidov)
    • πŸ”’ Fixed race condition in test 00738_lock_for_inner_table. This test relied on sleep. #9555 (alexey-milovidov)
    • βœ‚ Remove performance tests of type once. This is needed to run all performance tests in statistical comparison mode (more reliable). #9557 (alexey-milovidov)
    • βž• Added performance test for arithmetic functions. #9326 (alexey-milovidov)
    • βž• Added performance test for sumMap and sumMapWithOverflow aggregate functions. Follow-up for #8933 #8947 (alexey-milovidov)
    • πŸ’… Ensure style of ErrorCodes by style check. #9370 (alexey-milovidov)
    • βž• Add script for tests history. #8796 (alesapin)
    • βž• Add GCC warning -Wsuggest-override to locate and fix all places where override keyword must be used. #8760 (kreuzerkrieg)
    • Ignore weak symbol under Mac OS X because it must be defined #9538 (Deleted user)
    • 🐎 Normalize running time of some queries in performance tests. This is done in preparation to run all the performance tests in comparison mode. #9565 (alexey-milovidov)
    • πŸ›  Fix some tests to support pytest with query tests #9062 (Ivan)
    • πŸ— Enable SSL in build with MSan, so server will not fail at startup when running stateless tests #9531 (tavplubix)
    • πŸ›  Fix database substitution in test results #9384 (Ilya Yatsishin)
    • πŸ— Build fixes for miscellaneous platforms #9381 (proller) #8755 (proller) #8631 (proller)
    • βž• Added disks section to stateless-with-coverage test docker image #9213 (Pavel Kovalenko)
    • πŸ— Get rid of in-source-tree files when building with GRPC #9588 (Amos Bird)
    • πŸ— Slightly faster build time by removing SessionCleaner from Context. Make the code of SessionCleaner more simple. #9232 (alexey-milovidov)
    • ⚑️ Updated checking for hung queries in clickhouse-test script #8858 (Alexander Kazakov)
    • βœ‚ Removed some useless files from repository. #8843 (alexey-milovidov)
    • πŸ”„ Changed type of math perftests from once to loop. #8783 (Nikolai Kochetov)
    • βž• Add docker image which allows to build interactive code browser HTML report for our codebase. #8781 (alesapin) See Woboq Code Browser
    • βœ… Suppress some test failures under MSan. #8780 (Alexander Kuzmenkov)
    • πŸ— Speedup "exception while insert" test. This test often time out in debug-with-coverage build. #8711 (alexey-milovidov)
    • ⚑️ Updated libcxx and libcxxabi to master. In preparation to #9304 #9308 (alexey-milovidov)
    • Fix flacky test 00910_zookeeper_test_alter_compression_codecs. #9525 (alexey-milovidov)
    • Clean up duplicated linker flags. Make sure the linker won't look up an unexpected symbol. #9433 (Amos Bird)
    • βž• Add clickhouse-odbc driver into test images. This allows to test interaction of ClickHouse with ClickHouse via its own ODBC driver. #9348 (filimonov)
    • πŸ›  Fix several bugs in unit tests. #9047 (alesapin)
    • ⚠ Enable -Wmissing-include-dirs GCC warning to eliminate all non-existing includes - mostly as a result of CMake scripting errors #8704 (kreuzerkrieg)
    • Describe reasons if query profiler cannot work. This is intended for #9049 #9144 (alexey-milovidov)
    • Update OpenSSL to upstream master. Fixed the issue when TLS connections may fail with the message OpenSSL SSL_read: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error and SSL Exception: error:2400006E:random number generator::error retrieving entropy. The issue was present in version 20.1. #8956 (alexey-milovidov)
    • ⚑️ Update Dockerfile for server #8893 (Ilya Mazaev)
    • πŸ— Minor fixes in build-gcc-from-sources script #8774 (Michael Nacharov)
    • βœ… Replace numbers to zeros in perftests where number column is not used. This will lead to more clean test results. #9600 (Nikolai Kochetov)
    • πŸ›  Fix stack overflow issue when using initializer_list in Column constructors. #9367 (Deleted user)
    • ⬆️ Upgrade librdkafka to v1.3.0. Enable bundled rdkafka and gsasl libraries on Mac OS X. #9000 (Andrew Onyshchuk)
    • πŸ— build fix on GCC 9.2.0 #9306 (vxider)