Releases: ClickHouse/clickhouse-js
0.2.8 (Common, Node.js, Web)
New features
- (Web only) Allow to modify Keep-Alive setting (previously always disabled). Keep-Alive setting is now enabled by default for the Web version.
import { createClient } from '@clickhouse/client-web'
const client = createClient({ keep_alive: { enabled: true } })
- (Node.js & Web) It is now possible to either specify a list of columns to insert the data into or a list of excluded columns:
// Generated query: INSERT INTO mytable (message) FORMAT JSONEachRow
await client.insert({
table: 'mytable',
format: 'JSONEachRow',
values: [{ message: 'foo' }],
columns: ['message'],
})
// Generated query: INSERT INTO mytable (* EXCEPT (message)) FORMAT JSONEachRow
await client.insert({
table: 'mytable',
format: 'JSONEachRow',
values: [{ id: 42 }],
columns: { except: ['message'] },
})
See also the new examples:
0.2.7 (Common, Node.js, Web)
New features
- (Node.js only)
X-ClickHouse-Summary
response header is now parsed when working withinsert
/exec
/command
methods. See the related test for more details.
NB: it is guaranteed to be correct only for non-streaming scenarios.
The web version does not currently support this due to CORS limitations. (#210)
Bug fixes
- Drain insert response stream in Web version - required to properly work with
async_insert
, especially in the Cloudflare Workers context.
0.2.6 (Common/Node.js)
New features
- Added Parquet format streaming support to the Node.js client. Examples: insert from a file, select into a file.
0.2.5 (Common, Node.js & Web)
Bug fixes
pathname
segment fromhost
client configuration parameter is now handled properly when making requests.
See this comment for more details.
0.2.4 (Node.js only)
0.2.3 (Node.js only)
0.2.2 (Common, Node.js & Web)
New features
- Added missing
default_format
setting, which allows to performexec
calls without theFORMAT
clause. See the example.
0.2.1 (Common, Node.js & Web)
Breaking changes
Date objects in query parameters are now serialized as time-zone-agnostic Unix timestamps (NNNNNNNNNN[.NNN], optionally with millisecond-precision) instead of datetime strings without time zones (YYYY-MM-DD HH:MM:SS[.MMM]). This means the server will receive the same absolute timestamp the client sent even if the client's time zone and the database server's time zone differ. Previously, if the server used one time zone and the client used another, Date objects would be encoded in the client's time zone and decoded in the server's time zone and create a mismatch.
For instance, if the server used UTC (GMT) and the client used PST (GMT-8), a Date object for "2023-01-01 13:00:00 PST" would be encoded as "2023-01-01 13:00:00.000" and decoded as "2023-01-01 13:00:00 UTC" (which is 2023-01-01 05:00:00 PST). Now, "2023-01-01 13:00:00 PST" is encoded as "1672606800000" and decoded as "2023-01-01 21:00:00 UTC", the same time the client sent.
Props to @ide for implementing it.
0.2.0 - Web platform support
Introduces web client (using native fetch and WebStream APIs) without Node.js modules in the common interfaces.
No polyfills are required.
The web client is confirmed to work with Chrome/Firefox/CloudFlare workers.
It is now possible to implement new custom connections on top of @clickhouse/client-common
.
The repository was refactored into three packages:
@clickhouse/client-common
: all possible platform-independent code, types and interfaces@clickhouse/client-web
: new web (or non-Node.js env) connection, uses native fetch.@clickhouse/client
: Node.js connection as it was before.
Node.js client breaking changes
- Changed
ping
method behavior: it will not throw now.
Instead, either{ success: true }
or{ success: false, error: Error }
is returned. - Log level configuration parameter is now explicit instead of
CLICKHOUSE_LOG_LEVEL
environment variable.
Default isOFF
. query
return type signature changed to isBaseResultSet<Stream.Readable>
(no functional changes)exec
return type signature changed toExecResult<Stream.Readable>
(no functional changes)insert<T>
params argument type changed toInsertParams<Stream, T>
(no functional changes)- Experimental
schema
module is removed
Web client known limitations
- Streaming for select queries works, but it is disabled for inserts (on the type level as well).
- KeepAlive is disabled and not configurable yet.
- Request compression is disabled and configuration is ignored. Response compression works.
- No logging support yet.
0.2.0-beta1 (browser support)
Introduces browser client (using native fetch and WebStream APIs) with no Node.js modules in the common interfaces.
No polyfills are required.
It is now possible to implement new custom connections on top of @clickhouse/client-common
.
The client was refactored into three packages:
@clickhouse/client-common
: all possible platform-independent code, types and interfaces@clickhouse/client-browser
: new "browser" (or non-Node.js env) connection, uses native fetch.@clickhouse/client
: Node.js connection as it was before.
Node.js client breaking changes
- Log level configuration parameter is now explicit instead of
CLICKHOUSE_LOG_LEVEL
environment variable.
Default isOFF
. query
return type signature changed to isBaseResultSet<Stream.Readable>
(no functional changes)exec
return type signature changed toExecResult<Stream.Readable>
(no functional changes)insert<T>
params argument type changed toInsertParams<Stream, T>
(no functional changes)- Experimental
schema
module is removed
Browser client known limitations
- Streaming for select queries works, but it is disabled for inserts (on the type level as well).
- KeepAlive is disabled and not configurable yet.
- Request compression is disabled and ignored.
- No logging support yet.