Skip to content

Releases: ClickHouse/clickhouse-js

0.1.1

03 Jul 13:40
Compare
Choose a tag to compare

New features

  • Expired socket detection on the client side when using Keep-Alive. If a potentially expired socket is detected,
    and retry is enabled in the configuration, both socket and request will be immediately destroyed (before sending the data),
    and the client will recreate the request. See ClickHouseClientConfigOptions.keep_alive for more details. Disabled by default.
  • Allow disabling Keep-Alive feature entirely.
  • TRACE log level.

Examples

Disable Keep-Alive feature

const client = createClient({
  keep_alive: {
    enabled: false,
  },
})

Retry on expired socket

const client = createClient({
  keep_alive: {
    enabled: true,
    // should be slightly less than the `keep_alive_timeout` setting in server's `config.xml`
    // default is 3s there, so 2500 milliseconds seems to be a safe client value in this scenario
    // another example: if your configuration has `keep_alive_timeout` set to 60s, you could put 59_000 here
    socket_ttl: 2500,
    retry_on_expired_socket: true,
  },
})

0.1.0

22 Jun 13:51
Compare
Choose a tag to compare

Breaking changes

  • connect_timeout client setting is removed, as it was unused in the code.

New features

  • command method is introduced as an alternative to exec.
    command does not expect user to consume the response stream, and it is destroyed immediately.
    Essentially, this is a shortcut to exec that destroys the stream under the hood.
    Consider using command instead of exec for DDLs and other custom commands which do not provide any valuable output.

Example:

// incorrect: stream is not consumed and not destroyed, request will be timed out eventually
await client.exec('CREATE TABLE foo (id String) ENGINE Memory')

// correct: stream does not contain any information and just destroyed
const { stream } = await client.exec('CREATE TABLE foo (id String) ENGINE Memory')
stream.destroy()

// correct: same as exec + stream.destroy()
await client.command('CREATE TABLE foo (id String) ENGINE Memory')

Bug fixes

  • Fixed delays on subsequent requests after calling insert that happened due to unclosed stream instance when using low number of max_open_connections. See #161 for more details.
  • Request timeouts internal logic rework (see #168)

0.0.16

17 May 13:01
Compare
Choose a tag to compare

Breaking changes

  • Node.js 14 EOL as its maintenance phase has ended in April 2023. Node.js 16+ is now required to use the client.

Bug fixes

  • Fix NULL parameter binding. As the HTTP interface expects \N instead of a 'NULL' string, it is now correctly handled for both null and explicitly undefined parameters. See the test scenarios for more details.

0.0.15

26 Apr 09:21
Compare
Choose a tag to compare

Bug fixes

  • Fix Node.JS 19.x/20.x timeout error (@olexiyb)

0.0.14

22 Mar 20:57
b479a17
Compare
Choose a tag to compare

New features

  • Added support for JSONStrings, JSONCompact, JSONCompactStrings, JSONColumnsWithMetadata formats (@andrewzolotukhin).

0.0.13

14 Mar 15:29
Compare
Choose a tag to compare

New features

  • query_id can now be overridden for all main client's methods: query, exec, insert.

0.0.12

01 Feb 14:35
Compare
Choose a tag to compare

New features

  • ResultSet.query_id contains a unique query identifier that might be useful for retrieving query metrics from system.query_log
  • User-Agent HTTP header is set according to the language client spec.
    For example, for client version 0.0.12 and Node.js runtime v19.0.4 on Linux platform, it will be clickhouse-js/0.0.12 (lv:nodejs/19.0.4; os:linux).
    If ClickHouseClientConfigOptions.application is set, it will be prepended to the generated User-Agent.
  • Run tests on nodejs@v19

Breaking changes

  • client.insert now returns { query_id: string } instead of void
  • client.exec now returns { stream: Stream.Readable, query_id: string } instead of just Stream.Readable

Better logging support

08 Dec 17:22
Compare
Choose a tag to compare

Breaking changes

  • log.enabled flag was removed from the client configuration.
  • Use the CLICKHOUSE_LOG_LEVEL environment variable instead. Possible values: OFF, TRACE, DEBUG, INFO, WARN, ERROR. Currently, there are only debug messages, but we will log more later.

For more details, see PR #110

Remove request listeners synchronously

14 Nov 12:10
59f1067
Compare
Choose a tag to compare

Remove request listeners synchronously (#124) - closed issue #123

Added ClickHouse session_id support

25 Oct 19:51
6248210
Compare
Choose a tag to compare

See #121

import { createClient } from '@clickhouse/client'

const client = createClient({
  session_id: `<session_id>`,
})

Kudos to @KMahoney