github ClickHouse/clickhouse-connect v1.8.0rc3

pre-release5 hours ago

clickhouse-connect v1.8.0rc3

This is the third release candidate for clickhouse-connect 1.8.0. Please test it with your workloads and report any problems.

RC3 brings the Rust release branch up to date with work merged after 1.7.2 and adds further Python/Rust codec parity fixes. The Rust codec remains experimental and opt-in. The Python codec remains
the default. The compiled clickhouse-connect-core wheel is unchanged from RC2 at version 0.1.0.

Installation

Install RC3 with the optional Rust codec:

pip install "clickhouse-connect[rust]==1.8.0rc3"

Or install RC3 with the standard Python codec only:

pip install "clickhouse-connect==1.8.0rc3"

Enable the Rust codec when creating a client:

client = clickhouse_connect.get_client(
    host="...",
    native_codec="rust",
)

Use native_codec="rust_strict" to reject unsupported Rust paths instead of falling back to Python.

What's Changed Since v1.8.0rc2

Rust codec and temporal types

  • Rust NumPy and Pandas queries now support Time64(0) with second resolution, including nullable, container, Nested, Variant, and typed JSON paths.

  • Unsupported statically declared Time64 scales now raise the same ProgrammingError under the Rust and Python codecs instead of leaking a KeyError.

  • Time64 now accepts every server-valid precision from 0 through 9 for parsing, reflection, Native queries, and DataFrame inserts. NumPy and Pandas query output remains limited to scales 0, 3, 6, and 9.

  • Negative Time64 timedelta inserts and NumPy timedelta magnitudes are now stored correctly. Out-of-range NumPy values are rejected instead of wrapping.

  • Pandas Timedelta row inserts now follow normal timedelta conversion. Nullable DataFrame columns insert missing values as NULL on Pandas 3.

  • Dynamic(Time64) retains documented experimental limitations because Dynamic member metadata is erased before driver conversion.

JSON and driver type handling

  • SQLAlchemy JSON columns can declare typed paths, dynamic path and type limits, and plain or regular-expression skip rules. Alembic autogeneration preserves configured JSON types. Closes #981.
  • Dynamic type names preserve their max_types argument.
  • Generic Enum definitions are accepted and canonicalized to Enum8 or Enum16 according to their value range.
  • Type parsing now handles double-quoted identifiers and quoted string literals consistently.

Native format and connectivity fixes

  • Source builds no longer swallow unrelated packaging failures and retry them as pure Python builds.
  • CLICKHOUSE_CONNECT_REQUIRE_C=1 makes extension build failures fatal for CI and redistributable wheels.
  • CLICKHOUSE_CONNECT_SKIP_CYTHON=1 continues to request an explicit pure-Python build.
  • Missing Cython outside skip mode now fails clearly, and setting both build flags is rejected. Closes #994.

Please report RC problems at:
https://github.com/ClickHouse/clickhouse-connect/issues

Don't miss a new clickhouse-connect release

NewReleases is sending notifications on new releases.