Update dependency @clickhouse/client to v1.23.1 - #619
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
requested review from
EnzalRad,
dvxam,
kylengn and
noe-charmet
as code owners
April 21, 2026 00:36
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
The latest updates on your projects. Learn more about Argos notifications ↗︎ Awaiting the start of a new Argos build… |
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
April 29, 2026 15:46
d9dcc39 to
c81c608
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
May 5, 2026 19:16
c81c608 to
e3fc529
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
May 12, 2026 11:38
e3fc529 to
cc1fef9
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
May 14, 2026 00:41
cc1fef9 to
14f36dc
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
May 28, 2026 19:59
14f36dc to
9b7bf46
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
June 1, 2026 22:54
9b7bf46 to
f925730
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
June 3, 2026 23:38
f925730 to
847d82f
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
June 17, 2026 10:02
847d82f to
81e41de
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
June 22, 2026 19:06
81e41de to
3b4a0d9
Compare
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
June 29, 2026 22:17
3b4a0d9 to
e96109d
Compare
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate
Bot
force-pushed
the
renovate/clickhouse-client-1.x-lockfile
branch
from
July 7, 2026 16:39
e96109d to
b68919f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.18.2→1.23.1Release Notes
ClickHouse/clickhouse-js (@clickhouse/client)
v1.23.1Compare Source
v1.23.0Compare Source
Migration Notes
Node.js 26.x was added to the CI matrix, and Node.js 18.x is no longer supported. The
engines.nodefloor of@clickhouse/client(previously>=16) and@clickhouse/datatype-parser(previously>=18.0.0) was raised to>=20. Node.js 20.x, 22.x, 24.x, and 26.x are supported and exercised in CI.The
@clickhouse/client-commonpackage is deprecated.@clickhouse/client(Node.js) and@clickhouse/client-web(Web) no longer depend on it; the shared code is now bundled into each client package. Everything previously importable from@clickhouse/client-commonshould be imported from@clickhouse/clientor@clickhouse/client-webinstead. The@clickhouse/client-commonpackage itself will no longer receive updates. ([#845])The
parseColumnTypefunction and itsSimpleColumnTypescompanion (exported from@clickhouse/client,@clickhouse/client-web, and@clickhouse/client-common) are deprecated and slated for removal in a future major version. They are superseded by the new standalone@clickhouse/datatype-parserpackage (parseDataTypeplus itsNodeAST), which parses the full ClickHouse data-type grammar and emits an AST that mirrors the server's. ([#893])New features
(Node.js) Added a RowBinary reader library and agent skill under
skills/clickhouse-js-node-rowbinary-parser. It ships type-specific, monomorphizable building blocks for decodingRowBinary/RowBinaryWithNames/RowBinaryWithNamesAndTypesstreams (full-buffer and chunked), plus a skill that guides an agent to generate bespoke high-performance parsers from a query's column types. The skill is bundled into@clickhouse/client(registered inagents.skills) and is also published independently as the@clickhouse/rowbinarypackage. A matching RowBinary writer is planned. ([#864])Published the
@clickhouse/datatype-parserpackage: a small, dependency-free standalone parser for ClickHouse data-type strings (the kind sent in the types row ofRowBinaryWithNamesAndTypes, e.g.Array(Nullable(UInt64)),Tuple(a UInt8, b String),Enum8('a' = 1)). It is a faithful port of the server'sParserDataTypeand emits a JSON AST that is byte-identical to the server'sEXPLAIN AST json = 1data-type subtree. It supersedes the deprecatedparseColumnType(see Migration Notes). ([#893])(Node.js,
@experimental) Added an additiveconnection?: Connection<Stream.Readable>option tocreateClientthat lets a caller plug an externally-built backendConnection-like object in place of the default HTTP(S) factory. Only supposed to be used for testing thechDBintegration. ([#879])Added
ClickHouseSettingsInterface, a package-neutral structural counterpart toClickHouseSettings, exported from@clickhouse/client,@clickhouse/client-web, and@clickhouse/client-common. It is identical toClickHouseSettingsexcept that its index signature omitsSettingsMap(a class with a private member, which TypeScript compares nominally). Because each client package now bundles its own copy of the common module, theirClickHouseSettingstypes are mutually unassignable;ClickHouseSettingsInterfaceis structurally identical across all three packages and assignable into each package'sClickHouseSettings, so a consumer that shares a single settings-producing helper across both the Node.js and Web clients can type it against this one type without casts. Values typed asSettingsMapcannot be carried through it — useClickHouseSettingsif you need them. ([#889])v1.22.0Compare Source
New features
(Node.js) The
compression.request/compression.responseclient options now accept an explicit codec via an object, in addition to the existing boolean:truekeeps gzip (backwards compatible), and{ codec: "zstd" }selects zstd. The object form is intentionally extensible for future codecs and codec-specific options. zstd typically yields a similar-or-better ratio than gzip at noticeably lower CPU cost (gzip/DEFLATE is comparatively CPU-heavy and decompressed single-threaded by the ClickHouse server), and it uses the built-inzlibzstd support, so it requires Node.js >= 22.15.0 (@clickhouse/clientthrows a clear error at client creation otherwise). Response decompression is driven by the server's actualContent-Encoding, so it degrades gracefully. The request object form also accepts an optionallevel({ codec, level }) to set the codec-specific compression level (zlib level for gzip, zstd compression level for zstd); the response compression level is controlled by the server. Supported only by@clickhouse/client(Node.js);@clickhouse/client-webrejects thezstdcodec at client creation.(Node.js) Brotli (
{ codec: "br" }) is now supported forcompression.request/compression.response, alongside gzip and zstd. Unlike zstd, Brotli is available on every supported Node.js version (no minimum-version requirement). Thecompression.requestoption is a per-codec discriminated union, so each codec exposes its own tuning option: alevelfor gzip/zstd, aqualityfor Brotli ({ codec: "br", quality }). When omitted, Brotli defaults to quality 4 for request bodies, since zlib's brotli default of 11 (max) is far too slow for a streaming insert path. Response decompression follows the server'sContent-Encoding. Supported only by@clickhouse/client(Node.js).Internal changes (
@clickhouse/client-common)To carry the codec (and its optional compression level) instead of a bare on/off flag, the internal compression representation changed shape:
CompressionSettings.compress_request/decompress_responseare no longerboolean. They are now a normalized codec object orundefined(disabled):{ codec: "gzip" | "zstd"; level?: number } | { codec: "br"; quality?: number }for the request,{ codec: "gzip" | "zstd" | "br" }for the response (response compression options are chosen by the server).getConnectionParamsnormalizes the public request option into this form (true→{ codec: "gzip" }).withCompressionHeadersnow takesrequest_compression_codec/response_compression_codec(aCompressionMethod | undefined) instead of the booleanenable_request_compression/enable_response_compression; the codec value is also theContent-Encoding/Accept-Encodingit emits.withHttpSettingsnow takes the response codec object ({ codec } | undefined) instead of aboolean.CompressionMethod,RequestCompression,ResponseCompression.Why: a single
booleancould not express which codec to use or its level, and a separate level field onCompressionSettingswould have mixed a codec-specific option into the shared type. Discriminating by codec keeps each codec's options on the codec it belongs to.Documentation
docs/howto/tracing.mdandexamples/node/coding/otel_tracing.ts, demonstrating how common OpenTelemetry auto-instrumentation options compose as thin userland wrappers around thetracerAPI instead of being baked into the client:requireParentSpan(skip ClickHouse spans when there is no active parent span — e.g. background health checks) and suppressing the duplicate nested HTTP spans emitted by@opentelemetry/instrumentation-http(viasuppressTracingfrom@opentelemetry/core).v1.21.0Compare Source
New features
The tracer API (unreleased, introduced in #776) now follows the OpenTelemetry database semantic conventions and matches the attribute vocabulary of the Rust client (clickhouse-rs); see
docs/howto/tracing.mdfor the documentation. In particular (#828):db.system.name(instead ofdb.system),server.address+server.port(instead of a combinedhost:port),clickhouse.request.query_id/clickhouse.request.session_id(instead ofclickhouse.query_id/clickhouse.session_id),clickhouse.response.formatonqueryandclickhouse.request.formatoninsert(instead ofclickhouse.format), anddb.operation.name+db.collection.nameoninsert(instead ofclickhouse.table).OK); on failure, the span gets theerror.typeattribute (the error class name) and, for server-side errors,clickhouse.error.code(the numeric ClickHouse error code).db.response.status_code(HTTP status) and, when theX-ClickHouse-Summaryheader is available,clickhouse.summary.*counters (read_rows,written_rows, etc.).query()now emits two spans:clickhouse.querycovers the HTTP request lifetime and ends as soon as the response headers are received; a childclickhouse.query.streamspan is handed to theResultSetand tracks the stream consumption, ending when the response is fully read, closed, or fails - with the finalclickhouse.response.decoded_bytesand (for row-streaming)db.response.returned_rowsmetrics. This separation makes it easy to distinguish the original request duration from a stream that may never end (e.g. tailing a live table).ResultSet.stream()path: if the underlying fetch response stream was aborted (e.g. due to a network error), theclickhouse.query.streamspan was never ended. The TransformStream now handles both source-stream aborts and consumer-side cancellations via acancelcallback.insertspan recordsclickhouse.request.sent_rowsfor array-based inserts.Added a
use_multipart_params_autoclient option (default:false). When enabled,query()automatically sendsquery_paramsasmultipart/form-databody parts (the same mechanism asuse_multipart_params) once their URL-encoded length exceeds 4096 characters, avoiding HTTP 414/400 errors from HTTP intermediaries (nginx, AWS ALB, CloudFront) caused by over-long URLs - for example, a largeINlist or a high-dimensional vector embedding. Smaller parameter payloads remain in the URL query string, so existing behavior is unchanged unless the threshold is crossed.use_multipart_params: truestill forces multipart for all queries regardless of size. This does not change the server's per-value size limit, which is governed byhttp_max_field_value_size. Supported on both@clickhouse/clientand@clickhouse/client-web, and overridable per request viause_multipart_params_autoonquery(). Ported from clickhouse-connect#789. (#827)use_multipart_paramsclient option (default:false). When enabled,query()sendsquery_paramsasmultipart/form-databody parts (with the SQL moved into aquerypart) instead of URL query-string entries, avoiding HTTP 400 errors caused by over-long URLs when parameters contain large arrays (25K+ values). All other URL search params (database, query_id, settings, session_id, role) remain in the URL. Supported on both@clickhouse/clientand@clickhouse/client-web, and overridable per request viause_multipart_paramsonquery(). (#825)Bug Fixes
X-ClickHouse-Exception-Coderesponse header to detect server errors even when the HTTP status code indicates success. In some scenarios (for example, when an exception occurs while streaming the response progress in headers, or with certain proxy setups), ClickHouse responds with HTTP 200 but sets theX-ClickHouse-Exception-Codeheader. Previously, such responses were treated as successful, and the exception text could surface as malformed response data; now the request is rejected with a parsedClickHouseError(with the propercodeandtype), consistent with non-2xx error responses. This applies to both the Node.js and Web clients. (#554, supersedes #350, related issue: #332)v1.20.0Compare Source
New Features
tracer) and that gets called around key lifecycle operations (query,command,exec,insert,ping). TheClickHouseTracerinterface is a structural subset of the OpenTelemetryTracer/SpanAPIs, so a raw OTEL tracer (trace.getTracer(...)) can be passed to the client as-is - but the client itself ships no tracing dependency. Each operation runs insidetracer.startActiveSpan(...), so auto-instrumented child spans nest under the ClickHouse operation spans; for OpenTelemetry, this requires theAsyncLocalStorageContextManagerto be registered (the default in the OpenTelemetry Node.js SDK). Tracer exceptions are NOT caught, so a broken tracer will break client operations. Seedocs/howto/tracing.mdfor the full surface description, andexamples/node/coding/otel_tracing.tsfor a runnable Node.js example. ([#776])Migration Notes
ClickHouseLogLevelis now exported as a literal numeric union type (0 | 1 | 2 | 3 | 4 | 127) instead of a TypeScriptenumtype. If you were assigning arbitrarynumbervalues toClickHouseLogLevel, you may need to narrow/cast those values during migration.Improvements
clickhouse_settings:buffer_size,compress,decompress,quota_key, andstacktrace(in addition to the existingwait_end_of_query,default_format,session_timeout, andsession_check).Bug Fixes
ResultSet.json()andResultSet.stream()onJSONEachRow(and other streamable) result sets where callingjson()on a fast/small response could throwStream has been already consumedif the underlying stream ended between internalreadableEndedchecks. The consumption guard has been hardened: the stream is now shielded through a singleconsume()path that marks the result set as consumed in the appropriate branches, after format validation, so a successfuljson()call no longer races against the stream finishing. (#603)v1.19.0Compare Source
Improvements
ResponseHeaderstype from@clickhouse/clientand@clickhouse/client-web. Previously this type was only available from@clickhouse/client-common; it is now part of the public re-export surface of both flavored packages, alongside the other commonly used types. This is part of an ongoing effort to make@clickhouse/client-commonan internal-only package so downstream consumers can depend solely on@clickhouse/clientor@clickhouse/client-web. (#758)Bug Fixes
parseEnumTypereturned enum names with raw escape sequences (e.g.,f\'instead off'). Now it properly decodes escape sequences including\'(single quote),\\(backslash),\n(newline),\t(tab), and\r(carriage return). This matches the behavior of ClickHouse string literals and ensures consistency with how the client encodes strings when sending data to the server. If you were relying on the previous incorrect behavior where backslash escape sequences were preserved in enum names, you will need to update your code to handle properly unescaped values.Example:
v1.18.5Compare Source
Improvements
max_response_headers_sizeclient option that forwards themaxHeaderSizeoption to the underlyinghttp(s).requestcall. This raises the per-request limit on the total size of HTTP response headers received from the server (Node.js default is ~16 KB). It is most useful when running long-running queries withsend_progress_in_http_headersenabled — theX-ClickHouse-Progressheaders accumulate over the lifetime of the request and can exceed the default limit, causing the request to fail withHPE_HEADER_OVERFLOW. Setting this option avoids the need to use the global--max-http-header-sizeNode.js CLI flag or theNODE_OPTIONSenvironment variable. Has no effect for the Web client (which usesfetch) and no effect when a customhttp_agentis configured with a request implementation that does not honor the option.@clickhouse/clientnpm package now ships embedded AI-agent skills,clickhouse-js-node-codingandclickhouse-js-node-troubleshooting, undernode_modules/@clickhouse/client/skills/. These skills are also declared in theagents.skillsfield of the package manifest for discovery tools that scannode_modules. This allows agentic coding tools to load focused, Node-client-specific coding and troubleshooting guidance without any additional setup. (#682)v1.18.4Compare Source
A release-infrastructure-only version bump (no user-facing changes). See 1.18.5 for the next release with user-facing improvements.
v1.18.3Compare Source
Improvements
keep_alive.eagerly_destroy_stale_socketsoption (Node.js only, default:false). When enabled, sockets that have been idle for longer thanidle_socket_ttlare destroyed immediately before each request, rather than waiting for the idle timeout to fire. This helps reclaim stale sockets during event loop delays, where the timeout callback may not run on time.request_timeoutis high (> 60 seconds) but progress headers are not configured. Long-running queries may fail with socket hang-up errors if they exceed the load balancer idle timeout. The client now warns users to enablesend_progress_in_http_headersandhttp_headers_progress_interval_mssettings to prevent such issues.Configuration
📅 Schedule: (UTC)
* 0-3 * * *)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.