Skip to content

Release v0.7.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 02 Oct 06:28
a499238

Deprecations

  • Following deprecated components are removed:
    • clickhouse-cli-client
    • clickhouse-grpc-client

Important Changes

  • [client-v2] New transport layer implementation is used by default. It is still possible to switch back
    using old implementation by setting com.clickhouse.client.api.Client.Builder#useNewImplementation to false. (#1847)

New Features

  • [client-v2] Now there is an easy way to set custom HTTP headers globally for client and per operation.
    See com.clickhouse.client.api.Client.Builder.httpHeader(java.lang.String, java.lang.String) for details. (#1782)
  • [client-v2] Now there is a way to set any server settings globally for client and per operation.
    See com.clickhouse.client.api.Client.Builder.serverSetting(java.lang.String, java.lang.String) for details. (#1782)
  • [client-v2] Added support for writing AggregateFunction values (bitmap serialization). !! Reading is not
    supported but will be added in the next release. (#1814)
  • [r2dbc] Defer connection creation. This allows pool to create a new instance on every subscription,
    instead of always returning the same one. (#1810)

Performance Improvements

  • [client-v2] Improved reading fixed length data like numbers. It is possible to configure readers to
    use pre-allocated buffers to avoid memory allocation for each data row/block. Significantly reduces GC pressure.
    See com.clickhouse.client.api.Client.Builder.allowBinaryReaderToReuseBuffers for details. (#1816)
  • [client-v2] New API method introduced to read data directly to a POJO. Deserializers for POJO classes are compiled into
    bytecode (with help of https://asm.ow2.io/ library) and optimized for each schema. It is great performance boost
    because data is read without copying it into temporary structures. Code can be optimized by JVM while runtime as SerDe
    code is implemented without reflection using JVM bytecode. Using bytecode makes handling primitive types without values boxing. (#1794,
    #1826)
  • [client-v2] Optimized reading columns - internally data is read into map of column-values. It is done
    to allow reading same column more than once. Previously map was cleared each row what caused a lot
    internal objects creation. Now values are overridden because schema doesn't change between rows. (#1795)

Documentation

  • [client-v2] Added example for Kotlin (#1793)
  • [doc] Main documentation on official ClickHouse website is updated. Each client has its own page with detailed information now.
    Added documentation for the Client V2. See https://clickhouse.com/docs/en/integrations/java.

Bug Fixes

  • [client-v2] Fix for cases when missing operation metrics were causing NPE. (#1846)
  • [client-v2] Fix for handling empty result by BinaryFormat readers. (#1845)
  • [jdbc] Content of an artifact 'clickhouse-jdbc-{version}-all.jar' is fixed and contains all required classes from clickhouse-client
    and clickhouse-data. (#1842)
  • [client-v1, jdbc] Endpoints definition parsing fixed to grub properties correctly. Now even properties with key-value
    pairs are supported. (#1841, #1665)