Releases: ClickHouse/clickhouse-js
Releases · ClickHouse/clickhouse-js
0.1.1
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. SeeClickHouseClientConfigOptions.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
Breaking changes
connect_timeout
client setting is removed, as it was unused in the code.
New features
command
method is introduced as an alternative toexec
.
command
does not expect user to consume the response stream, and it is destroyed immediately.
Essentially, this is a shortcut toexec
that destroys the stream under the hood.
Consider usingcommand
instead ofexec
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
0.0.16
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 bothnull
and explicitlyundefined
parameters. See the test scenarios for more details.
0.0.15
0.0.14
New features
- Added support for
JSONStrings
,JSONCompact
,JSONCompactStrings
,JSONColumnsWithMetadata
formats (@andrewzolotukhin).
0.0.13
0.0.12
New features
ResultSet.query_id
contains a unique query identifier that might be useful for retrieving query metrics fromsystem.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 beclickhouse-js/0.0.12 (lv:nodejs/19.0.4; os:linux)
.
IfClickHouseClientConfigOptions.application
is set, it will be prepended to the generatedUser-Agent
.- Run tests on
nodejs@v19
Breaking changes
client.insert
now returns{ query_id: string }
instead ofvoid
client.exec
now returns{ stream: Stream.Readable, query_id: string }
instead of justStream.Readable
Better logging support
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