Altinity
ClickHouse Leading Service Provider

Blog

ClickHouse release 1.1.54380

Apr 25, 2018

ClickHouse team and community contributors actively develop ClickHouse adding many new features, improving performance and flexibility. Unfortunately, sometimes it affects stability of the product. We were very upset by some unexpected regressions in recent ClickHouse releases. After initial testing of latest 1.1.54380 version we think it may be a good candidate for the new stable release. Previous releases free from severe issues were aged 1.1.54292 and 1.1.54327.

ClickHouse 1.1.54380 is available in Yandex and Altinity repositories. So what's new and important in 1.1.54380 and previous release 1.1.54378.

ClickHouse release 1.1.54380, 2018-04-21

This is mostly a bugfixing release to the previous one addressing two severe performance regressions with filter performance in 1.1.54378 but it also adds a couple of other features and improvements.

New features:

  • Added new table function file(path, format, structure). Example:

    ln -s /dev/urandom /var/lib/clickhouse/user_files/random clickhouse-client -q "SELECT * FROM file('random', 'RowBinary', 'd UInt8') LIMIT 10".

Improvements:

  • Added an option to surround subqueries with brackets () for readability. Example: (SELECT 1) UNION ALL (SELECT 1).

    • Simple SELECT queries from system.processes are not considered when checking for max_concurrent_queries.
    • Option to turn off logging removing or in server configuration.

Bug fixes:

  • Removed support for expressions like: (a, b) IN (SELECT (a, b)), that resulted in problems with WHERE implementation. Instead, the expression should be used as: (a, b) IN (SELECT a, b)
  • Fixed a bug with IN for MATERIALIZED VIEW
  • Fixed incorrect index behaviour when partitioning column is used for filtering like: partition_key_column IN (...).
  • Fixed a bug when OPTIMIZE could not be run on leader replica after renaming the table.
  • Fixed authorisation problems when OPTIMIZE or ALTER were executed on non-leader replica
  • Fixed a bug when 'KILL QUERY' could not finish sometimes.
  • Fixed a bug in ZooKeeper client library, that could happen if chroot has been used in configuration. The problem could lead to lost watches, stopping distributed DDL queries queue and general replication slowdown.

ClickHouse release 1.1.54378, 2018-04-16

This is a major release that contains results of 6 weeks of development as well as significant number of stability and performance improvements.

New features:

  • Logging level can be changed without restarting the server.
  • Added the SHOW CREATE DATABASE query.
  • The query_id can be passed to clickhouse-client.
  • New setting: max_network_bandwidth_for_all_users.
  • Added support for ALTER TABLE ... PARTITION ... for MATERIALIZED VIEW.
  • Added information about the size of data parts in uncompressed form in the system table.
  • Server-to-server encryption support for distributed tables (1 in the replica config in ).
  • Configuration of the table level for the ReplicatedMergeTree family in order to minimize the amount of data stored in zookeeper: use_minimalistic_checksums_in_zookeeper = 1
  • Configuration of the clickhouse-client prompt. By default, server names are now output to the prompt. The server's display name can be changed; it's also sent in the X-ClickHouse-Display-Name HTTP header
  • Multiple comma-separated topics can be specified for the Kafka engine.
  • When a query is stopped by KILL QUERY or replace_running_query, the client receives the Query was cancelled exception instead of an incomplete response.

Improvements:

  • ALTER TABLE ... DROP/DETACH PARTITION queries are run at the front of the replication queue.
  • SELECT ... FINAL and OPTIMIZE ... FINAL can be used even when the table has a single data part.
  • A query_log table is recreated on the fly if it was deleted manually.
  • The lengthUTF8 function runs faster.
  • Improved performance of synchronous inserts in Distributed tables (insert_distributed_sync = 1) when there is a very large number of shards.
  • The server accepts the send_timeout and receive_timeout settings from the client and applies them when connecting to the client (they are applied in reverse order: the server socket's send_timeout is set to the receive_timeout value received from the client, and vice versa).
  • More robust crash recovery for asynchronous insertion into Distributed tables.
  • The return type of the countEqual function changed from UInt32 to UInt64.

Bug fixes:

  • Fixed an error with IN when the left side of the expression is Nullable.
  • Correct results are now returned when using tuples with IN when some of the tuple components are in the table index.
  • The max_execution_time limit now works correctly with distributed queries.
  • Fixed errors when calculating the size of composite columns in the system.columns table.
  • Fixed an error when creating a temporary table CREATE TEMPORARY TABLE IF NOT EXISTS.
  • Fixed errors in StorageKafka (#2075)
  • Fixed server crashes from invalid arguments of certain aggregate functions.
  • Fixed the error that prevented the DETACH DATABASE query from stopping background tasks for ReplicatedMergeTree tables.
  • Too many parts state is less likely to happen when inserting into aggregated materialized views (#2084).
  • Corrected recursive handling of substitutions in the config if a substitution must be followed by another substitution on the same level.
  • Corrected the syntax in the metadata file when creating a VIEW that uses a query with UNION ALL.
  • SummingMergeTree now works correctly for summation of nested data structures with a composite key.
  • Fixed the possibility of a race condition when choosing the leader for ReplicatedMergeTree tables.