Altinity

Blog

ClickHouse Release Notes

ClickHouse is an excellent DBMS with very smart people working on making it even better every day. Unfortunately, it still lacks some important communication procedures, and arguable the most wanted one is release notes.

Altinity mission is to make ClickHouse use easy for everybody, and we will try to fill the gap between Yandex and end users.

Below are release notes that Yandex team presented at the recent meetup in Ekaterinburg. It includes changes and new features appeared in latest 1.1.54231 release as well as some others that were not yet documented or publicly explained. We have tried most of these by ourselves and provided the short description when applicable. Some features certainly deserve deeper explanations, and are going to extend this article with more details over next few days.

So, what's new in ClickHouse?

Usability

  • Unrestricted number of dictionaries with ODBC data source
  • Store config parts in ZooKeeper -- already in documentation
  • input_format_allow_errors_* settings -- allows to skip certain amount/ratio of errors during data load
  • OPTIMIZE TABLE ... DEDUPLICATE -- useful when working with ReplacingMergeTree tables
  • clickhouse --extract-from-config -- allows to get config parameter in shell scripts using all substitutions and includes that ClickHouse does by itself
  • Type casts for Merge tables -- allows to have slightly different types in tables that match Merge engine pattern
  • INSERT FROM SELECT -- type casts and using positional match
  • ALTER ... DROP COLUMN ... FROM PARTITION
  • KILL QUERY
  • LIMIT BY
  • SELECT INTO OUTFILE

Distributed queries

  • Turning off latent replicas (max_replica_delay_for_distributed_queries setting)
  • Turning off replicas with missing tables
  • Original query source in system.processes and system.query_log -- it is much easier to trace distributed queries this way
  • Cross-replication (see discussion there)

Interfaces

  • ODBC for Windows
  • HTTPS
  • HTTP bufferization
  • HTTP gzip optimization
  • HTTP progress (in headers)

Introspection

  • system.parts - row count (not in 1.1.54231, to be included in the next stable release)
  • system.columns -- compressed and uncompressed size
  • system.part_log -- turned off by default, logs all part creation/merge operations
  • system.build_options, system.graphite

NULLs (beta)

  • JOIN by null value -- join_use_nulls setting
  • ORDER BY ... NULLS FIRST/LAST
  • NULL support in IN (...)
  • NULL support in higher-order functions
  • Functions if, multiIf, ifNull, nullIf, coalesce
  • toNullable, assumeNotNull
  • Nullable datatypes in aggregate functions
  • NULL as a subselect result

Other

  • Performance optimisations
    • DISTINCT
    • Buffer tables
    • FixedString
  • clickhouse-local -- run ClickHouse queries over any input
  • -ForEach combinator -- converts aggregate functions to functions accepting arrays, see details here
  • topK (beta)
  • decodeURLComponent
  • UUIDNumToString, UUIDStringToNum
  • GIS functions
    • pointInEllipses
    • greatCircleDistance

P.S. You can always find latest ClickHouse version in Yandex or Altinity repository, depending on Linux distro. See details here