Skip to content

Releases: patrick-zippenfenig/ClickHouseNIO

v1.6.0

27 Feb 10:23
6e10fb7

Choose a tag to compare

1.6.0 (2026-02-27)

Features

  • adding swift 6.2, 6.1 and 6.0 for CI (#17) (b535d1d)

v1.5.1

23 Oct 07:43
4bb1034

Choose a tag to compare

1.5.1 (2025-10-23)

Bug Fixes

v1.5.0

10 Apr 20:39
fdbe981

Choose a tag to compare

1.5.0 (2025-04-10)

Features

  • Adding support for Maps where keys and values are Strings (#11) (fdbe981)

Bug Fixes

v1.4.2

26 Sep 14:17
7dd14be

Choose a tag to compare

1.4.2 (2024-09-26)

Bug Fixes

  • Add CI release automation (7dd14be)

1.4.1 Fix DateTime with TimeZone

17 Jan 11:19
248776e

Choose a tag to compare

What's Changed

Full Changelog: 1.4.0...1.4.1

1.4.0 Additional datatypes

16 Jan 09:34
3dcb9f4

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.3.0...1.4.0

1.3.0 Nullable

10 Nov 18:01
26b777c

Choose a tag to compare

This feature release adds support for Nullable datatype

1.2.0 Timeouts

17 Mar 10:04

Choose a tag to compare

This release adds timeouts to make ClickHouseNIO more reliable in production environments.

While running ClickHouseNIO we discovered various edge cases where a connection could get stuck. These events are infrequent (once every 2 weeks), but result in annoying deadlocks.

Because networks unreliable by nature, ClickHouseNIO uses different timeouts to prevent potential deadlocks while waiting for a server response. All timeouts can be controlled via ClickHouseConfiguration and use default values as shown below:

let config = try ClickHouseConfiguration(
    hostname: "localhost", 
    ...,
    connectTimeout: .seconds(10),
    readTimeout: .seconds(90),
    queryTimeout: .seconds(600))
,

All timeouts will close the connection. Different timeouts trigger different exceptions:

  • connectTimeout will throw NIO.ChannelError.connectTimeout(TimeAmount) if the connection to the ClickHouse server cannot be establised after this period of time.
  • readTimeout: If a query is running, and the ClickHouseNIO client does not receive any network package, the conncection is closed and throws ClickHouseError.readTimeout. This can happen, if the network connection is interrupted while waiting for a response. Usually, even while waiting for a query result, packages are exchanged very frequently.
  • queryTimeout is the total time after a query will be terminated and the connection is closed. Because ClickHouseNIO is also capable of queueing queries, this includes the time in the queue as well. On a very busy server, a long waiting time starts to close connections. If a connection is closed, all queries in the queue will return a failed future with the exception ClickHouseError.queryTimeout.

Timeouts can also be specified for a single query with connection.command(sql: sql, timeout: .seconds(30)), but keep in mind that this also includes queue time.

1.1.2 Fix insert + select statements

08 Mar 17:16
3a08e02

Choose a tag to compare

Fixed a bug with the combination of insert & select statements like INSERT INTO db.table SELECT * FROM db2.table2 which triggered an assertion on non production builds

1.1.1 UUID coding bugfix

08 Dec 12:25
d68f0d4

Choose a tag to compare

ixed:

  • Bug #2 ClickHouse uses little endian encoding for UUIDs