@clickhouse/client 0.0.16 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -1,43 +1,68 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import Stream from 'stream';
4
- import type { InsertResult, QueryResult } from './connection';
4
+ import type { ExecResult, InsertResult } from './connection';
5
5
  import type { Logger } from './logger';
6
6
  import { type DataFormat } from './data_formatter';
7
7
  import { ResultSet } from './result';
8
8
  import type { ClickHouseSettings } from './settings';
9
9
  import type { InputJSON, InputJSONObjectEachRow } from './clickhouse_types';
10
10
  export interface ClickHouseClientConfigOptions {
11
- /** A ClickHouse instance URL. Default value: `http://localhost:8123`. */
11
+ /** A ClickHouse instance URL.
12
+ * <br/> Default value: `http://localhost:8123`. */
12
13
  host?: string;
13
- /** The timeout to set up a connection in milliseconds. Default value: `10_000`. */
14
- connect_timeout?: number;
15
- /** The request timeout in milliseconds. Default value: `30_000`. */
14
+ /** The request timeout in milliseconds.
15
+ * <br/> Default value: `30_000`. */
16
16
  request_timeout?: number;
17
- /** Maximum number of sockets to allow per host. Default value: `Infinity`. */
17
+ /** Maximum number of sockets to allow per host.
18
+ * <br/> Default value: `Infinity`. */
18
19
  max_open_connections?: number;
19
20
  compression?: {
20
- /** `response: true` instructs ClickHouse server to respond with compressed response body. Default: true. */
21
+ /** `response: true` instructs ClickHouse server to respond with
22
+ * compressed response body. <br/> Default: true. */
21
23
  response?: boolean;
22
- /** `request: true` enabled compression on the client request body. Default: false. */
24
+ /** `request: true` enabled compression on the client request body.
25
+ * <br/> Default: false. */
23
26
  request?: boolean;
24
27
  };
25
- /** The name of the user on whose behalf requests are made. Default: 'default'. */
28
+ /** The name of the user on whose behalf requests are made.
29
+ * <br/> Default: 'default'. */
26
30
  username?: string;
27
- /** The user password. Default: ''. */
31
+ /** The user password. <br/> Default: ''. */
28
32
  password?: string;
29
- /** The name of the application using the nodejs client. Default: empty. */
33
+ /** The name of the application using the nodejs client.
34
+ * <br/> Default: empty. */
30
35
  application?: string;
31
- /** Database name to use. Default value: `default`. */
36
+ /** Database name to use. <br/> Default value: `default`. */
32
37
  database?: string;
33
- /** ClickHouse settings to apply to all requests. Default value: {} */
38
+ /** ClickHouse settings to apply to all requests. <br/> Default value: {} */
34
39
  clickhouse_settings?: ClickHouseSettings;
35
40
  log?: {
36
- /** A class to instantiate a custom logger implementation. */
41
+ /** A class to instantiate a custom logger implementation.
42
+ * <br/> Default: {@link DefaultLogger} */
37
43
  LoggerClass?: new () => Logger;
38
44
  };
39
45
  tls?: BasicTLSOptions | MutualTLSOptions;
40
46
  session_id?: string;
47
+ /** HTTP Keep-Alive related settings */
48
+ keep_alive?: {
49
+ /** Enable or disable HTTP Keep-Alive mechanism. <br/> Default: true */
50
+ enabled?: boolean;
51
+ /** How long to keep a particular open socket alive
52
+ * on the client side (in milliseconds).
53
+ * Should be less than the server setting
54
+ * (see `keep_alive_timeout` in server's `config.xml`). <br/>
55
+ * Currently, has no effect if {@link retry_on_expired_socket}
56
+ * is unset or false. <br/> Default value: 2500
57
+ * (based on the default ClickHouse server setting, which is 3000) */
58
+ socket_ttl?: number;
59
+ /** If the client detects a potentially expired socket based on the
60
+ * {@link socket_ttl}, this socket will be immediately destroyed
61
+ * before sending the request, and this request will be retried
62
+ * with a new socket up to 3 times.
63
+ * <br/> * Default: false (no retries) */
64
+ retry_on_expired_socket?: boolean;
65
+ };
41
66
  }
42
67
  interface BasicTLSOptions {
43
68
  ca_cert: Buffer;
@@ -52,7 +77,7 @@ export interface BaseParams {
52
77
  clickhouse_settings?: ClickHouseSettings;
53
78
  /** Parameters for query binding. https://clickhouse.com/docs/en/interfaces/http/#cli-queries-with-parameters */
54
79
  query_params?: Record<string, unknown>;
55
- /** AbortSignal instance (using `node-abort-controller` package) to cancel a request in progress. */
80
+ /** AbortSignal instance to cancel a request in progress. */
56
81
  abort_signal?: AbortSignal;
57
82
  /** A specific `query_id` that will be sent with this request.
58
83
  * If it is not set, a random identifier will be generated automatically by the client. */
@@ -68,6 +93,10 @@ export interface ExecParams extends BaseParams {
68
93
  /** Statement to execute. */
69
94
  query: string;
70
95
  }
96
+ export type CommandParams = ExecParams;
97
+ export interface CommandResult {
98
+ query_id: string;
99
+ }
71
100
  type InsertValues<T> = ReadonlyArray<T> | Stream.Readable | InputJSON<T> | InputJSONObjectEachRow<T>;
72
101
  export interface InsertParams<T = unknown> extends BaseParams {
73
102
  /** Name of a table to insert into. */
@@ -83,10 +112,44 @@ export declare class ClickHouseClient {
83
112
  private readonly logger;
84
113
  constructor(config?: ClickHouseClientConfigOptions);
85
114
  private getBaseParams;
115
+ /**
116
+ * Used for most statements that can have a response, such as SELECT.
117
+ * FORMAT clause should be specified separately via {@link QueryParams.format} (default is JSON)
118
+ * Consider using {@link ClickHouseClient.insert} for data insertion,
119
+ * or {@link ClickHouseClient.command} for DDLs.
120
+ */
86
121
  query(params: QueryParams): Promise<ResultSet>;
87
- exec(params: ExecParams): Promise<QueryResult>;
122
+ /**
123
+ * It should be used for statements that do not have any output,
124
+ * when the format clause is not applicable, or when you are not interested in the response at all.
125
+ * Response stream is destroyed immediately as we do not expect useful information there.
126
+ * Examples of such statements are DDLs or custom inserts.
127
+ * If you are interested in the response data, consider using {@link ClickHouseClient.exec}
128
+ */
129
+ command(params: CommandParams): Promise<CommandResult>;
130
+ /**
131
+ * Similar to {@link ClickHouseClient.command}, but for the cases where the output is expected,
132
+ * but format clause is not applicable. The caller of this method is expected to consume the stream,
133
+ * otherwise, the request will eventually be timed out.
134
+ */
135
+ exec(params: ExecParams): Promise<ExecResult>;
136
+ /**
137
+ * The primary method for data insertion. It is recommended to avoid arrays in case of large inserts
138
+ * to reduce application memory consumption and consider streaming for most of such use cases.
139
+ * As the insert operation does not provide any output, the response stream is immediately destroyed.
140
+ * In case of a custom insert operation, such as, for example, INSERT FROM SELECT,
141
+ * consider using {@link ClickHouseClient.command}, passing the entire raw query there (including FORMAT clause).
142
+ */
88
143
  insert<T>(params: InsertParams<T>): Promise<InsertResult>;
144
+ /**
145
+ * Health-check request. Can throw an error if the connection is refused.
146
+ */
89
147
  ping(): Promise<boolean>;
148
+ /**
149
+ * Shuts down the underlying connection.
150
+ * This method should ideally be called only once per application lifecycle,
151
+ * for example, during the graceful shutdown phase.
152
+ */
90
153
  close(): Promise<void>;
91
154
  }
92
155
  export declare function validateInsertValues<T>(values: InsertValues<T>, format: DataFormat): void;
package/dist/client.js CHANGED
@@ -25,7 +25,7 @@ function createUrl(host) {
25
25
  }
26
26
  }
27
27
  function normalizeConfig(config) {
28
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
28
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
29
29
  let tls = undefined;
30
30
  if (config.tls) {
31
31
  if ('cert' in config.tls && 'key' in config.tls) {
@@ -44,23 +44,26 @@ function normalizeConfig(config) {
44
44
  return {
45
45
  application_id: config.application,
46
46
  url: createUrl((_a = config.host) !== null && _a !== void 0 ? _a : 'http://localhost:8123'),
47
- connect_timeout: (_b = config.connect_timeout) !== null && _b !== void 0 ? _b : 10000,
48
- request_timeout: (_c = config.request_timeout) !== null && _c !== void 0 ? _c : 300000,
49
- max_open_connections: (_d = config.max_open_connections) !== null && _d !== void 0 ? _d : Infinity,
47
+ request_timeout: (_b = config.request_timeout) !== null && _b !== void 0 ? _b : 300000,
48
+ max_open_connections: (_c = config.max_open_connections) !== null && _c !== void 0 ? _c : Infinity,
50
49
  tls,
51
50
  compression: {
52
- decompress_response: (_f = (_e = config.compression) === null || _e === void 0 ? void 0 : _e.response) !== null && _f !== void 0 ? _f : true,
53
- compress_request: (_h = (_g = config.compression) === null || _g === void 0 ? void 0 : _g.request) !== null && _h !== void 0 ? _h : false,
51
+ decompress_response: (_e = (_d = config.compression) === null || _d === void 0 ? void 0 : _d.response) !== null && _e !== void 0 ? _e : true,
52
+ compress_request: (_g = (_f = config.compression) === null || _f === void 0 ? void 0 : _f.request) !== null && _g !== void 0 ? _g : false,
54
53
  },
55
- username: (_j = config.username) !== null && _j !== void 0 ? _j : 'default',
56
- password: (_k = config.password) !== null && _k !== void 0 ? _k : '',
57
- application: (_l = config.application) !== null && _l !== void 0 ? _l : 'clickhouse-js',
58
- database: (_m = config.database) !== null && _m !== void 0 ? _m : 'default',
59
- clickhouse_settings: (_o = config.clickhouse_settings) !== null && _o !== void 0 ? _o : {},
54
+ username: (_h = config.username) !== null && _h !== void 0 ? _h : 'default',
55
+ password: (_j = config.password) !== null && _j !== void 0 ? _j : '',
56
+ database: (_k = config.database) !== null && _k !== void 0 ? _k : 'default',
57
+ clickhouse_settings: (_l = config.clickhouse_settings) !== null && _l !== void 0 ? _l : {},
60
58
  log: {
61
- LoggerClass: (_q = (_p = config.log) === null || _p === void 0 ? void 0 : _p.LoggerClass) !== null && _q !== void 0 ? _q : logger_1.DefaultLogger,
59
+ LoggerClass: (_o = (_m = config.log) === null || _m === void 0 ? void 0 : _m.LoggerClass) !== null && _o !== void 0 ? _o : logger_1.DefaultLogger,
62
60
  },
63
61
  session_id: config.session_id,
62
+ keep_alive: {
63
+ enabled: (_q = (_p = config.keep_alive) === null || _p === void 0 ? void 0 : _p.enabled) !== null && _q !== void 0 ? _q : true,
64
+ socket_ttl: (_s = (_r = config.keep_alive) === null || _r === void 0 ? void 0 : _r.socket_ttl) !== null && _s !== void 0 ? _s : 2500,
65
+ retry_on_expired_socket: (_u = (_t = config.keep_alive) === null || _t === void 0 ? void 0 : _t.retry_on_expired_socket) !== null && _u !== void 0 ? _u : false,
66
+ },
64
67
  };
65
68
  }
66
69
  class ClickHouseClient {
@@ -100,6 +103,12 @@ class ClickHouseClient {
100
103
  query_id: params.query_id,
101
104
  };
102
105
  }
106
+ /**
107
+ * Used for most statements that can have a response, such as SELECT.
108
+ * FORMAT clause should be specified separately via {@link QueryParams.format} (default is JSON)
109
+ * Consider using {@link ClickHouseClient.insert} for data insertion,
110
+ * or {@link ClickHouseClient.command} for DDLs.
111
+ */
103
112
  async query(params) {
104
113
  var _a;
105
114
  const format = (_a = params.format) !== null && _a !== void 0 ? _a : 'JSON';
@@ -110,6 +119,23 @@ class ClickHouseClient {
110
119
  });
111
120
  return new result_1.ResultSet(stream, format, query_id);
112
121
  }
122
+ /**
123
+ * It should be used for statements that do not have any output,
124
+ * when the format clause is not applicable, or when you are not interested in the response at all.
125
+ * Response stream is destroyed immediately as we do not expect useful information there.
126
+ * Examples of such statements are DDLs or custom inserts.
127
+ * If you are interested in the response data, consider using {@link ClickHouseClient.exec}
128
+ */
129
+ async command(params) {
130
+ const { stream, query_id } = await this.exec(params);
131
+ stream.destroy();
132
+ return { query_id };
133
+ }
134
+ /**
135
+ * Similar to {@link ClickHouseClient.command}, but for the cases where the output is expected,
136
+ * but format clause is not applicable. The caller of this method is expected to consume the stream,
137
+ * otherwise, the request will eventually be timed out.
138
+ */
113
139
  async exec(params) {
114
140
  const query = removeTrailingSemi(params.query.trim());
115
141
  return await this.connection.exec({
@@ -117,6 +143,13 @@ class ClickHouseClient {
117
143
  ...this.getBaseParams(params),
118
144
  });
119
145
  }
146
+ /**
147
+ * The primary method for data insertion. It is recommended to avoid arrays in case of large inserts
148
+ * to reduce application memory consumption and consider streaming for most of such use cases.
149
+ * As the insert operation does not provide any output, the response stream is immediately destroyed.
150
+ * In case of a custom insert operation, such as, for example, INSERT FROM SELECT,
151
+ * consider using {@link ClickHouseClient.command}, passing the entire raw query there (including FORMAT clause).
152
+ */
120
153
  async insert(params) {
121
154
  const format = params.format || 'JSONCompactEachRow';
122
155
  validateInsertValues(params.values, format);
@@ -127,9 +160,17 @@ class ClickHouseClient {
127
160
  ...this.getBaseParams(params),
128
161
  });
129
162
  }
163
+ /**
164
+ * Health-check request. Can throw an error if the connection is refused.
165
+ */
130
166
  async ping() {
131
167
  return await this.connection.ping();
132
168
  }
169
+ /**
170
+ * Shuts down the underlying connection.
171
+ * This method should ideally be called only once per application lifecycle,
172
+ * for example, during the graceful shutdown phase.
173
+ */
133
174
  async close() {
134
175
  return await this.connection.close();
135
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,6CAAgE;AAEhE,qCAAmD;AACnD,mCAA6C;AAC7C,qDAIyB;AACzB,qCAAoC;AAuFpC,SAAS,cAAc,CAAC,EAAE,GAAG,EAAoB;IAC/C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACzD,MAAM,IAAI,KAAK,CACb,mDAAmD,GAAG,CAAC,QAAQ,GAAG,CACnE,CAAA;KACF;IACD,0BAA0B;AAC5B,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI;QACF,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;KACrB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;KAC1E;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAqC;;IAC5D,IAAI,GAAG,GAA0B,SAAS,CAAA;IAC1C,IAAI,MAAM,CAAC,GAAG,EAAE;QACd,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE;YAC/C,GAAG,GAAG;gBACJ,IAAI,EAAE,QAAQ;gBACd,GAAG,MAAM,CAAC,GAAG;aACd,CAAA;SACF;aAAM;YACL,GAAG,GAAG;gBACJ,IAAI,EAAE,OAAO;gBACb,GAAG,MAAM,CAAC,GAAG;aACd,CAAA;SACF;KACF;IACD,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,WAAW;QAClC,GAAG,EAAE,SAAS,CAAC,MAAA,MAAM,CAAC,IAAI,mCAAI,uBAAuB,CAAC;QACtD,eAAe,EAAE,MAAA,MAAM,CAAC,eAAe,mCAAI,KAAM;QACjD,eAAe,EAAE,MAAA,MAAM,CAAC,eAAe,mCAAI,MAAO;QAClD,oBAAoB,EAAE,MAAA,MAAM,CAAC,oBAAoB,mCAAI,QAAQ;QAC7D,GAAG;QACH,WAAW,EAAE;YACX,mBAAmB,EAAE,MAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,QAAQ,mCAAI,IAAI;YACzD,gBAAgB,EAAE,MAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,OAAO,mCAAI,KAAK;SACvD;QACD,QAAQ,EAAE,MAAA,MAAM,CAAC,QAAQ,mCAAI,SAAS;QACtC,QAAQ,EAAE,MAAA,MAAM,CAAC,QAAQ,mCAAI,EAAE;QAC/B,WAAW,EAAE,MAAA,MAAM,CAAC,WAAW,mCAAI,eAAe;QAClD,QAAQ,EAAE,MAAA,MAAM,CAAC,QAAQ,mCAAI,SAAS;QACtC,mBAAmB,EAAE,MAAA,MAAM,CAAC,mBAAmB,mCAAI,EAAE;QACrD,GAAG,EAAE;YACH,WAAW,EAAE,MAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,WAAW,mCAAI,sBAAa;SACtD;QACD,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;AACH,CAAC;AAID,MAAa,gBAAgB;IAK3B,YAAY,SAAwC,EAAE;QAJtD;;;;;WAAyC;QACzC;;;;;WAAuC;QACvC;;;;;WAAkC;QAGhC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QACrC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAA,6BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9D,CAAC;IAEO,aAAa,CAAC,MAAkB;QACtC,OAAO;YACL,mBAAmB,EAAE;gBACnB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB;gBAClC,GAAG,MAAM,CAAC,mBAAmB;aAC9B;YACD,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;;QAC7B,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,MAAM,CAAA;QACtC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACvD,KAAK;YACL,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SAC9B,CAAC,CAAA;QACF,OAAO,IAAI,kBAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACrD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAChC,KAAK;YACL,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SAC9B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,MAAuB;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAAA;QAEpD,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,eAAe,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,MAAM,EAAE,CAAA;QAEnE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAClC,KAAK;YACL,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;YAC3C,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SAC9B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACtC,CAAC;CACF;AAhED,4CAgEC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,MAAkB;IACpD,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACpB,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACjC,OAAO,KAAK,GAAG,YAAY,GAAG,MAAM,CAAA;AACtC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM,CAAA;IACjC,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;YACxB,cAAc,GAAG,CAAC,CAAA;YAClB,MAAK;SACN;KACF;IACD,IAAI,cAAc,KAAK,KAAK,CAAC,MAAM,EAAE;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;KACtC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAgB,oBAAoB,CAClC,MAAuB,EACvB,MAAkB;IAElB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,CAAC,IAAA,gBAAQ,EAAC,MAAM,CAAC;QACjB,OAAO,MAAM,KAAK,QAAQ,EAC1B;QACA,MAAM,IAAI,KAAK,CACb,gFAAgF;YAC9E,QAAQ,OAAO,MAAM,EAAE,CAC1B,CAAA;KACF;IAED,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE;QACpB,IAAI,IAAA,qCAAoB,EAAC,MAAM,CAAC,EAAE;YAChC,IAAI,MAAM,CAAC,kBAAkB,EAAE;gBAC7B,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,sDAAsD,CAC3E,CAAA;aACF;SACF;aAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YACrC,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,qDAAqD,CAC1E,CAAA;SACF;KACF;AACH,CAAC;AA5BD,oDA4BC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,MAAuB,EACvB,MAAkB;IAElB,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE;QACpB,yEAAyE;QACzE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAC9B,OAAO,MAAM,CAAA;SACd;QACD,wBAAwB;QACxB,OAAO,gBAAM,CAAC,QAAQ,CACpB,MAAM,EACN,IAAA,iBAAS,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,2BAAU,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAC/C,UAAU,CACX,CAAA;KACF;IACD,eAAe;IACf,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,2BAAU,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KACjE;IACD,wCAAwC;IACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,IAAA,2BAAU,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAClC;IACD,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,MAAM,SAAS,MAAM,SAAS,CACtE,CAAA;AACH,CAAC;AA3BD,oCA2BC;AAED,SAAgB,YAAY,CAC1B,MAAsC;IAEtC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACrC,CAAC;AAJD,oCAIC;AAED,SAAS,UAAU,CAAC,GAAiC;IACnD,IAAI,GAAG,EAAE;QACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACnB;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  import Stream from 'stream';
4
4
  import type Http from 'http';
5
5
  import type { Logger } from '../../logger';
6
- import type { BaseParams, Connection, ConnectionParams, InsertParams, InsertResult, QueryResult } from '../connection';
6
+ import type { Connection, ConnectionParams, ExecParams, ExecResult, InsertParams, InsertResult, QueryParams, QueryResult } from '../connection';
7
7
  export interface RequestParams {
8
8
  method: 'GET' | 'POST';
9
9
  url: URL;
@@ -17,13 +17,16 @@ export declare abstract class BaseHttpAdapter implements Connection {
17
17
  private readonly logger;
18
18
  protected readonly agent: Http.Agent;
19
19
  protected readonly headers: Http.OutgoingHttpHeaders;
20
+ private readonly retry_expired_sockets;
21
+ private readonly known_sockets;
20
22
  protected constructor(config: ConnectionParams, logger: Logger, agent: Http.Agent);
21
23
  protected buildDefaultHeaders(username: string, password: string): Http.OutgoingHttpHeaders;
22
- protected abstract createClientRequest(url: URL, params: RequestParams): Http.ClientRequest;
23
- protected request(params: RequestParams): Promise<Stream.Readable>;
24
+ protected abstract createClientRequest(params: RequestParams, abort_signal?: AbortSignal): Http.ClientRequest;
25
+ private request;
26
+ private _request;
24
27
  ping(): Promise<boolean>;
25
- query(params: BaseParams): Promise<QueryResult>;
26
- exec(params: BaseParams): Promise<QueryResult>;
28
+ query(params: QueryParams): Promise<QueryResult>;
29
+ exec(params: ExecParams): Promise<ExecResult>;
27
30
  insert(params: InsertParams): Promise<InsertResult>;
28
31
  close(): Promise<void>;
29
32
  private getQueryId;
@@ -38,9 +38,6 @@ const uuid = __importStar(require("uuid"));
38
38
  function isSuccessfulResponse(statusCode) {
39
39
  return Boolean(statusCode && 200 <= statusCode && statusCode < 300);
40
40
  }
41
- function isEventTarget(signal) {
42
- return 'removeEventListener' in signal;
43
- }
44
41
  function withHttpSettings(clickhouse_settings, compression) {
45
42
  return {
46
43
  ...(compression
@@ -72,6 +69,7 @@ function decompressResponse(response) {
72
69
  function isDecompressionError(result) {
73
70
  return result.error !== undefined;
74
71
  }
72
+ const expiredSocketMessage = 'expired socket';
75
73
  class BaseHttpAdapter {
76
74
  constructor(config, logger, agent) {
77
75
  Object.defineProperty(this, "config", {
@@ -98,7 +96,22 @@ class BaseHttpAdapter {
98
96
  writable: true,
99
97
  value: void 0
100
98
  });
99
+ Object.defineProperty(this, "retry_expired_sockets", {
100
+ enumerable: true,
101
+ configurable: true,
102
+ writable: true,
103
+ value: void 0
104
+ });
105
+ Object.defineProperty(this, "known_sockets", {
106
+ enumerable: true,
107
+ configurable: true,
108
+ writable: true,
109
+ value: new WeakMap()
110
+ });
101
111
  this.headers = this.buildDefaultHeaders(config.username, config.password);
112
+ this.retry_expired_sockets =
113
+ this.config.keep_alive.enabled &&
114
+ this.config.keep_alive.retry_on_expired_socket;
102
115
  }
103
116
  buildDefaultHeaders(username, password) {
104
117
  return {
@@ -106,13 +119,30 @@ class BaseHttpAdapter {
106
119
  'User-Agent': (0, user_agent_1.getUserAgent)(this.config.application_id),
107
120
  };
108
121
  }
109
- async request(params) {
122
+ async request(params, retryCount = 0) {
123
+ try {
124
+ return await this._request(params);
125
+ }
126
+ catch (e) {
127
+ if (e instanceof Error && e.message === expiredSocketMessage) {
128
+ if (this.retry_expired_sockets && retryCount < 3) {
129
+ this.logger.trace({
130
+ module: 'Connection',
131
+ message: `Keep-Alive socket is expired, retrying with a new one, retries so far: ${retryCount}`,
132
+ });
133
+ return await this.request(params, retryCount + 1);
134
+ }
135
+ else {
136
+ throw new Error(`Socket hang up after ${retryCount} retries`);
137
+ }
138
+ }
139
+ throw e;
140
+ }
141
+ }
142
+ async _request(params) {
110
143
  return new Promise((resolve, reject) => {
111
144
  const start = Date.now();
112
- const request = this.createClientRequest(params.url, params);
113
- request.once('socket', (socket) => {
114
- socket.setTimeout(this.config.request_timeout);
115
- });
145
+ const request = this.createClientRequest(params, params.abort_signal);
116
146
  function onError(err) {
117
147
  removeRequestListeners();
118
148
  reject(err);
@@ -130,21 +160,6 @@ class BaseHttpAdapter {
130
160
  reject((0, error_1.parseError)(await (0, utils_1.getAsText)(decompressionResult.response)));
131
161
  }
132
162
  };
133
- function onTimeout() {
134
- removeRequestListeners();
135
- request.once('error', function () {
136
- /**
137
- * catch "Error: ECONNRESET" error which shouldn't be reported to users.
138
- * see the full sequence of events https://nodejs.org/api/http.html#httprequesturl-options-callback
139
- * */
140
- });
141
- request.destroy();
142
- reject(new Error('Timeout error'));
143
- }
144
- function onAbortSignal() {
145
- // instead of deprecated request.abort()
146
- request.destroy(new Error('The request was aborted.'));
147
- }
148
163
  function onAbort() {
149
164
  // Prefer 'abort' event since it always triggered unlike 'error' and 'close'
150
165
  // see the full sequence of events https://nodejs.org/api/http.html#httprequesturl-options-callback
@@ -163,53 +178,113 @@ class BaseHttpAdapter {
163
178
  // It's always the last event, according to https://nodejs.org/docs/latest-v14.x/api/http.html#http_http_request_url_options_callback
164
179
  removeRequestListeners();
165
180
  }
181
+ function pipeStream() {
182
+ // if request.end() was called due to no data to send
183
+ if (request.writableEnded) {
184
+ return;
185
+ }
186
+ const bodyStream = (0, utils_1.isStream)(params.body)
187
+ ? params.body
188
+ : stream_1.default.Readable.from([params.body]);
189
+ const callback = (err) => {
190
+ if (err) {
191
+ removeRequestListeners();
192
+ reject(err);
193
+ }
194
+ };
195
+ if (params.compress_request) {
196
+ stream_1.default.pipeline(bodyStream, zlib_1.default.createGzip(), request, callback);
197
+ }
198
+ else {
199
+ stream_1.default.pipeline(bodyStream, request, callback);
200
+ }
201
+ }
202
+ const onSocket = (socket) => {
203
+ if (this.retry_expired_sockets) {
204
+ // if socket is reused
205
+ const socketInfo = this.known_sockets.get(socket);
206
+ if (socketInfo !== undefined) {
207
+ this.logger.trace({
208
+ module: 'Connection',
209
+ message: `Reused socket ${socketInfo.id}`,
210
+ });
211
+ // if a socket was reused at an unfortunate time,
212
+ // and is likely about to expire
213
+ const isPossiblyExpired = Date.now() - socketInfo.last_used_time >
214
+ this.config.keep_alive.socket_ttl;
215
+ if (isPossiblyExpired) {
216
+ this.logger.trace({
217
+ module: 'Connection',
218
+ message: 'Socket should be expired - terminate it',
219
+ });
220
+ this.known_sockets.delete(socket);
221
+ socket.destroy(); // immediately terminate the connection
222
+ request.destroy();
223
+ reject(new Error(expiredSocketMessage));
224
+ }
225
+ else {
226
+ this.logger.trace({
227
+ module: 'Connection',
228
+ message: `Socket ${socketInfo.id} is safe to be reused`,
229
+ });
230
+ this.known_sockets.set(socket, {
231
+ id: socketInfo.id,
232
+ last_used_time: Date.now(),
233
+ });
234
+ pipeStream();
235
+ }
236
+ }
237
+ else {
238
+ const socketId = uuid.v4();
239
+ this.logger.trace({
240
+ module: 'Connection',
241
+ message: `Using a new socket ${socketId}`,
242
+ });
243
+ this.known_sockets.set(socket, {
244
+ id: socketId,
245
+ last_used_time: Date.now(),
246
+ });
247
+ pipeStream();
248
+ }
249
+ }
250
+ else {
251
+ // no need to track the reused sockets;
252
+ // keep alive is disabled or retry mechanism is not enabled
253
+ pipeStream();
254
+ }
255
+ // this is for request timeout only.
256
+ // The socket won't be actually destroyed,
257
+ // and it will be returned to the pool.
258
+ // TODO: investigate if can actually remove the idle sockets properly
259
+ socket.setTimeout(this.config.request_timeout, onTimeout);
260
+ };
261
+ function onTimeout() {
262
+ removeRequestListeners();
263
+ request.destroy();
264
+ reject(new Error('Timeout error'));
265
+ }
166
266
  function removeRequestListeners() {
267
+ if (request.socket !== null) {
268
+ request.socket.setTimeout(0); // reset previously set timeout
269
+ request.socket.removeListener('timeout', onTimeout);
270
+ }
271
+ request.removeListener('socket', onSocket);
167
272
  request.removeListener('response', onResponse);
168
273
  request.removeListener('error', onError);
169
- request.removeListener('timeout', onTimeout);
170
- request.removeListener('abort', onAbort);
171
274
  request.removeListener('close', onClose);
172
275
  if (params.abort_signal !== undefined) {
173
- if (isEventTarget(params.abort_signal)) {
174
- params.abort_signal.removeEventListener('abort', onAbortSignal);
175
- }
176
- else {
177
- // @ts-expect-error if it's EventEmitter
178
- params.abort_signal.removeListener('abort', onAbortSignal);
179
- }
276
+ request.removeListener('abort', onAbort);
180
277
  }
181
278
  }
182
- if (params.abort_signal) {
183
- // We should use signal API when nodejs v14 is not supported anymore.
184
- // However, it seems that Http.request doesn't abort after 'response' event.
185
- // Requires an additional investigation
186
- // https://nodejs.org/api/globals.html#class-abortsignal
187
- params.abort_signal.addEventListener('abort', onAbortSignal, {
188
- once: true,
189
- });
190
- }
279
+ request.on('socket', onSocket);
191
280
  request.on('response', onResponse);
192
- request.on('timeout', onTimeout);
193
281
  request.on('error', onError);
194
- request.on('abort', onAbort);
195
282
  request.on('close', onClose);
283
+ if (params.abort_signal !== undefined) {
284
+ params.abort_signal.addEventListener('abort', onAbort, { once: true });
285
+ }
196
286
  if (!params.body)
197
287
  return request.end();
198
- const bodyStream = (0, utils_1.isStream)(params.body)
199
- ? params.body
200
- : stream_1.default.Readable.from([params.body]);
201
- const callback = (err) => {
202
- if (err) {
203
- removeRequestListeners();
204
- reject(err);
205
- }
206
- };
207
- if (params.compress_request) {
208
- stream_1.default.pipeline(bodyStream, zlib_1.default.createGzip(), request, callback);
209
- }
210
- else {
211
- stream_1.default.pipeline(bodyStream, request, callback);
212
- }
213
288
  });
214
289
  }
215
290
  async ping() {
@@ -273,13 +348,14 @@ class BaseHttpAdapter {
273
348
  session_id: params.session_id,
274
349
  query_id,
275
350
  });
276
- await this.request({
351
+ const stream = await this.request({
277
352
  method: 'POST',
278
353
  url: (0, transform_url_1.transformUrl)({ url: this.config.url, pathname: '/', searchParams }),
279
354
  body: params.values,
280
355
  abort_signal: params.abort_signal,
281
356
  compress_request: this.config.compression.compress_request,
282
357
  });
358
+ stream.destroy();
283
359
  return { query_id };
284
360
  }
285
361
  async close() {
@@ -295,7 +371,7 @@ class BaseHttpAdapter {
295
371
  const { authorization, host, ...headers } = request.getHeaders();
296
372
  const duration = Date.now() - startTimestamp;
297
373
  this.logger.debug({
298
- module: 'HTTP Adapter',
374
+ module: 'Connection',
299
375
  message: 'Got a response from ClickHouse',
300
376
  args: {
301
377
  request_method: params.method,
@@ -1 +1 @@
1
- {"version":3,"file":"base_http_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/base_http_adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base_http_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/base_http_adapter.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,5 @@ import type { RequestParams } from './base_http_adapter';
6
6
  import { BaseHttpAdapter } from './base_http_adapter';
7
7
  export declare class HttpAdapter extends BaseHttpAdapter implements Connection {
8
8
  constructor(config: ConnectionParams, logger: LogWriter);
9
- protected createClientRequest(url: URL, params: RequestParams): Http.ClientRequest;
9
+ protected createClientRequest(params: RequestParams, abort_signal?: AbortSignal): Http.ClientRequest;
10
10
  }
@@ -9,17 +9,17 @@ const base_http_adapter_1 = require("./base_http_adapter");
9
9
  class HttpAdapter extends base_http_adapter_1.BaseHttpAdapter {
10
10
  constructor(config, logger) {
11
11
  const agent = new http_1.default.Agent({
12
- keepAlive: true,
13
- timeout: config.request_timeout,
12
+ keepAlive: config.keep_alive.enabled,
14
13
  maxSockets: config.max_open_connections,
15
14
  });
16
15
  super(config, logger, agent);
17
16
  }
18
- createClientRequest(url, params) {
17
+ createClientRequest(params, abort_signal) {
19
18
  return http_1.default.request(params.url, {
20
19
  method: params.method,
21
20
  agent: this.agent,
22
21
  headers: this.getHeaders(params),
22
+ signal: abort_signal,
23
23
  });
24
24
  }
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/http_adapter.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAKvB,2DAAqD;AAErD,MAAa,WAAY,SAAQ,mCAAe;IAC9C,YAAY,MAAwB,EAAE,MAAiB;QACrD,MAAM,KAAK,GAAG,IAAI,cAAI,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,MAAM,CAAC,eAAe;YAC/B,UAAU,EAAE,MAAM,CAAC,oBAAoB;SACxC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,mBAAmB,CAC3B,GAAQ,EACR,MAAqB;QAErB,OAAO,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SACjC,CAAC,CAAA;IACJ,CAAC;CACF;AApBD,kCAoBC"}
1
+ {"version":3,"file":"http_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/http_adapter.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAKvB,2DAAqD;AAErD,MAAa,WAAY,SAAQ,mCAAe;IAC9C,YAAY,MAAwB,EAAE,MAAiB;QACrD,MAAM,KAAK,GAAG,IAAI,cAAI,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;YACpC,UAAU,EAAE,MAAM,CAAC,oBAAoB;SACxC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,mBAAmB,CAC3B,MAAqB,EACrB,YAA0B;QAE1B,OAAO,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;CACF;AApBD,kCAoBC"}
@@ -7,5 +7,5 @@ import type Http from 'http';
7
7
  export declare class HttpsAdapter extends BaseHttpAdapter implements Connection {
8
8
  constructor(config: ConnectionParams, logger: LogWriter);
9
9
  protected buildDefaultHeaders(username: string, password: string): Http.OutgoingHttpHeaders;
10
- protected createClientRequest(url: URL, params: RequestParams): Http.ClientRequest;
10
+ protected createClientRequest(params: RequestParams, abort_signal?: AbortSignal): Http.ClientRequest;
11
11
  }
@@ -10,8 +10,7 @@ class HttpsAdapter extends base_http_adapter_1.BaseHttpAdapter {
10
10
  constructor(config, logger) {
11
11
  var _a, _b, _c;
12
12
  const agent = new https_1.default.Agent({
13
- keepAlive: true,
14
- timeout: config.request_timeout,
13
+ keepAlive: config.keep_alive.enabled,
15
14
  maxSockets: config.max_open_connections,
16
15
  ca: (_a = config.tls) === null || _a === void 0 ? void 0 : _a.ca_cert,
17
16
  key: ((_b = config.tls) === null || _b === void 0 ? void 0 : _b.type) === 'Mutual' ? config.tls.key : undefined,
@@ -36,11 +35,12 @@ class HttpsAdapter extends base_http_adapter_1.BaseHttpAdapter {
36
35
  }
37
36
  return super.buildDefaultHeaders(username, password);
38
37
  }
39
- createClientRequest(url, params) {
38
+ createClientRequest(params, abort_signal) {
40
39
  return https_1.default.request(params.url, {
41
40
  method: params.method,
42
41
  agent: this.agent,
43
42
  headers: this.getHeaders(params),
43
+ signal: abort_signal,
44
44
  });
45
45
  }
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"https_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/https_adapter.ts"],"names":[],"mappings":";;;;;;AACA,2DAAqD;AAGrD,kDAAyB;AAGzB,MAAa,YAAa,SAAQ,mCAAe;IAC/C,YAAY,MAAwB,EAAE,MAAiB;;QACrD,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,KAAK,CAAC;YAC5B,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,MAAM,CAAC,eAAe;YAC/B,UAAU,EAAE,MAAM,CAAC,oBAAoB;YACvC,EAAE,EAAE,MAAA,MAAM,CAAC,GAAG,0CAAE,OAAO;YACvB,GAAG,EAAE,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YAC/D,IAAI,EAAE,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAEkB,mBAAmB,CACpC,QAAgB,EAChB,QAAgB;;QAEhB,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,EAAE;YACtC,OAAO;gBACL,mBAAmB,EAAE,QAAQ;gBAC7B,kBAAkB,EAAE,QAAQ;gBAC5B,mCAAmC,EAAE,IAAI;aAC1C,CAAA;SACF;QACD,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,OAAO,EAAE;YACrC,OAAO;gBACL,mBAAmB,EAAE,QAAQ;gBAC7B,kBAAkB,EAAE,QAAQ;aAC7B,CAAA;SACF;QACD,OAAO,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAES,mBAAmB,CAC3B,GAAQ,EACR,MAAqB;QAErB,OAAO,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SACjC,CAAC,CAAA;IACJ,CAAC;CACF;AA3CD,oCA2CC"}
1
+ {"version":3,"file":"https_adapter.js","sourceRoot":"","sources":["../../../src/connection/adapter/https_adapter.ts"],"names":[],"mappings":";;;;;;AACA,2DAAqD;AAGrD,kDAAyB;AAGzB,MAAa,YAAa,SAAQ,mCAAe;IAC/C,YAAY,MAAwB,EAAE,MAAiB;;QACrD,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,KAAK,CAAC;YAC5B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;YACpC,UAAU,EAAE,MAAM,CAAC,oBAAoB;YACvC,EAAE,EAAE,MAAA,MAAM,CAAC,GAAG,0CAAE,OAAO;YACvB,GAAG,EAAE,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YAC/D,IAAI,EAAE,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAEkB,mBAAmB,CACpC,QAAgB,EAChB,QAAgB;;QAEhB,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,EAAE;YACtC,OAAO;gBACL,mBAAmB,EAAE,QAAQ;gBAC7B,kBAAkB,EAAE,QAAQ;gBAC5B,mCAAmC,EAAE,IAAI;aAC1C,CAAA;SACF;QACD,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,MAAK,OAAO,EAAE;YACrC,OAAO;gBACL,mBAAmB,EAAE,QAAQ;gBAC7B,kBAAkB,EAAE,QAAQ;aAC7B,CAAA;SACF;QACD,OAAO,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAES,mBAAmB,CAC3B,MAAqB,EACrB,YAA0B;QAE1B,OAAO,eAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;CACF;AA3CD,oCA2CC"}
@@ -6,7 +6,6 @@ import type { ClickHouseSettings } from '../settings';
6
6
  export interface ConnectionParams {
7
7
  url: URL;
8
8
  application_id?: string;
9
- connect_timeout: number;
10
9
  request_timeout: number;
11
10
  max_open_connections: number;
12
11
  compression: {
@@ -17,6 +16,11 @@ export interface ConnectionParams {
17
16
  username: string;
18
17
  password: string;
19
18
  database: string;
19
+ keep_alive: {
20
+ enabled: boolean;
21
+ socket_ttl: number;
22
+ retry_on_expired_socket: boolean;
23
+ };
20
24
  }
21
25
  export type TLSParams = {
22
26
  ca_cert: Buffer;
@@ -38,18 +42,22 @@ export interface BaseParams {
38
42
  export interface InsertParams extends BaseParams {
39
43
  values: string | Stream.Readable;
40
44
  }
41
- export interface QueryResult {
42
- stream: Stream.Readable;
45
+ export type QueryParams = BaseParams;
46
+ export type ExecParams = BaseParams;
47
+ export interface BaseResult {
43
48
  query_id: string;
44
49
  }
45
- export interface InsertResult {
50
+ export interface QueryResult extends BaseResult {
51
+ stream: Stream.Readable;
46
52
  query_id: string;
47
53
  }
54
+ export type InsertResult = BaseResult;
55
+ export type ExecResult = QueryResult;
48
56
  export interface Connection {
49
57
  ping(): Promise<boolean>;
50
58
  close(): Promise<void>;
51
- query(params: BaseParams): Promise<QueryResult>;
52
- exec(params: BaseParams): Promise<QueryResult>;
59
+ query(params: QueryParams): Promise<QueryResult>;
60
+ exec(params: ExecParams): Promise<ExecResult>;
53
61
  insert(params: InsertParams): Promise<InsertResult>;
54
62
  }
55
63
  export declare function createConnection(params: ConnectionParams, logger: LogWriter): Connection;
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/connection/connection.ts"],"names":[],"mappings":";;;AAEA,uCAAqD;AAkErD,SAAgB,gBAAgB,CAC9B,MAAwB,EACxB,MAAiB;IAEjB,oCAAoC;IACpC,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3B,KAAK,OAAO;YACV,OAAO,IAAI,qBAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,KAAK,QAAQ;YACX,OAAO,IAAI,sBAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACzD;AACH,CAAC;AAbD,4CAaC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/connection/connection.ts"],"names":[],"mappings":";;;AAEA,uCAAqD;AA6ErD,SAAgB,gBAAgB,CAC9B,MAAwB,EACxB,MAAiB;IAEjB,oCAAoC;IACpC,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3B,KAAK,OAAO;YACV,OAAO,IAAI,qBAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,KAAK,QAAQ;YACX,OAAO,IAAI,sBAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACzD;AACH,CAAC;AAbD,4CAaC"}
package/dist/index.d.ts CHANGED
@@ -4,9 +4,9 @@ declare const _default: {
4
4
  createClient: typeof createClient;
5
5
  };
6
6
  export default _default;
7
- export { type ClickHouseClientConfigOptions, type ClickHouseClient, type BaseParams, type QueryParams, type ExecParams, type InsertParams, } from './client';
7
+ export { type ClickHouseClientConfigOptions, type ClickHouseClient, type BaseParams, type QueryParams, type ExecParams, type InsertParams, type CommandParams, type CommandResult, } from './client';
8
8
  export { Row, ResultSet } from './result';
9
- export type { Connection } from './connection';
9
+ export type { Connection, ExecResult, InsertResult } from './connection';
10
10
  export type { DataFormat } from './data_formatter';
11
11
  export type { ClickHouseError } from './error';
12
12
  export type { Logger } from './logger';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAE9B,6FAFA,qBAAY,OAEA;AACrB,kBAAe;IACb,YAAY,EAAZ,qBAAY;CACb,CAAA;AAWD,mCAAyC;AAA3B,mGAAA,SAAS,OAAA;AAYvB,uCAAwC;AAA/B,uGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAE9B,6FAFA,qBAAY,OAEA;AACrB,kBAAe;IACb,YAAY,EAAZ,qBAAY;CACb,CAAA;AAaD,mCAAyC;AAA3B,mGAAA,SAAS,OAAA;AAavB,uCAAwC;AAA/B,uGAAA,WAAW,OAAA"}
package/dist/logger.d.ts CHANGED
@@ -7,12 +7,14 @@ export type ErrorLogParams = LogParams & {
7
7
  err: Error;
8
8
  };
9
9
  export interface Logger {
10
+ trace(params: LogParams): void;
10
11
  debug(params: LogParams): void;
11
12
  info(params: LogParams): void;
12
13
  warn(params: LogParams): void;
13
14
  error(params: ErrorLogParams): void;
14
15
  }
15
16
  export declare class DefaultLogger implements Logger {
17
+ trace({ module, message, args }: LogParams): void;
16
18
  debug({ module, message, args }: LogParams): void;
17
19
  info({ module, message, args }: LogParams): void;
18
20
  warn({ module, message, args }: LogParams): void;
@@ -22,6 +24,7 @@ export declare class LogWriter {
22
24
  private readonly logger;
23
25
  private readonly logLevel;
24
26
  constructor(logger: Logger);
27
+ trace(params: LogParams): void;
25
28
  debug(params: LogParams): void;
26
29
  info(params: LogParams): void;
27
30
  warn(params: LogParams): void;
package/dist/logger.js CHANGED
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LogWriter = exports.DefaultLogger = void 0;
4
4
  class DefaultLogger {
5
+ trace({ module, message, args }) {
6
+ console.trace(formatMessage({ module, message }), args);
7
+ }
5
8
  debug({ module, message, args }) {
6
9
  console.debug(formatMessage({ module, message }), args);
7
10
  }
@@ -36,6 +39,11 @@ class LogWriter {
36
39
  message: `Log level is set to ${ClickHouseLogLevel[this.logLevel]}`,
37
40
  });
38
41
  }
42
+ trace(params) {
43
+ if (this.logLevel <= ClickHouseLogLevel.TRACE) {
44
+ this.logger.trace(params);
45
+ }
46
+ }
39
47
  debug(params) {
40
48
  if (this.logLevel <= ClickHouseLogLevel.DEBUG) {
41
49
  this.logger.debug(params);
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -27,18 +27,18 @@ export interface SelectOptions<S extends Shape> {
27
27
  where?: WhereExpr<S>;
28
28
  order_by?: NonEmptyArray<[keyof S, 'ASC' | 'DESC']>;
29
29
  clickhouse_settings?: ClickHouseSettings;
30
- abort_signal?: AbortSignal;
30
+ abort_controller?: AbortController;
31
31
  }
32
32
  export interface InsertOptions<S extends Shape> {
33
33
  values: Infer<S>[] | InsertStream<Infer<S>>;
34
34
  clickhouse_settings?: ClickHouseSettings;
35
- abort_signal?: AbortSignal;
35
+ abort_controller?: AbortController;
36
36
  }
37
37
  export declare class Table<S extends Shape> {
38
38
  private readonly client;
39
39
  private readonly options;
40
40
  constructor(client: ClickHouseClient, options: TableOptions<S>);
41
41
  create(options: CreateTableOptions<S>): Promise<Stream.Readable>;
42
- insert({ abort_signal, clickhouse_settings, values, }: InsertOptions<S>): Promise<void>;
43
- select({ abort_signal, clickhouse_settings, columns, order_by, where, }?: SelectOptions<S>): Promise<SelectResult<Infer<S>>>;
42
+ insert({ abort_controller, clickhouse_settings, values, }: InsertOptions<S>): Promise<void>;
43
+ select({ abort_controller, clickhouse_settings, columns, order_by, where, }?: SelectOptions<S>): Promise<SelectResult<Infer<S>>>;
44
44
  }
@@ -26,21 +26,21 @@ class Table {
26
26
  });
27
27
  return stream;
28
28
  }
29
- async insert({ abort_signal, clickhouse_settings, values, }) {
29
+ async insert({ abort_controller, clickhouse_settings, values, }) {
30
30
  await this.client.insert({
31
31
  clickhouse_settings,
32
- abort_signal,
32
+ abort_signal: abort_controller === null || abort_controller === void 0 ? void 0 : abort_controller.signal,
33
33
  table: (0, query_formatter_1.getTableName)(this.options),
34
34
  format: 'JSONEachRow',
35
35
  values,
36
36
  });
37
37
  }
38
- async select({ abort_signal, clickhouse_settings, columns, order_by, where, } = {}) {
38
+ async select({ abort_controller, clickhouse_settings, columns, order_by, where, } = {}) {
39
39
  const query = query_formatter_1.QueryFormatter.select(this.options, where, columns, order_by);
40
40
  const rs = await this.client.query({
41
41
  query,
42
42
  clickhouse_settings,
43
- abort_signal,
43
+ abort_signal: abort_controller === null || abort_controller === void 0 ? void 0 : abort_controller.signal,
44
44
  format: 'JSONEachRow',
45
45
  });
46
46
  const stream = rs.stream();
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":";;;AAGA,uDAAgE;AA4ChE,MAAa,KAAK;IAChB,YACmB,MAAwB,EACxB,OAAwB;;;;;mBADxB;;;;;;mBACA;;IAChB,CAAC;IAEJ,qBAAqB;IACrB,KAAK,CAAC,MAAM,CAAC,OAA8B;QACzC,MAAM,KAAK,GAAG,gCAAc,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACxC,KAAK;YACL,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;SACjD,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EACX,YAAY,EACZ,mBAAmB,EACnB,MAAM,GACW;QACjB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvB,mBAAmB;YACnB,YAAY;YACZ,KAAK,EAAE,IAAA,8BAAY,EAAC,IAAI,CAAC,OAAO,CAAC;YACjC,MAAM,EAAE,aAAa;YACrB,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EACX,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,KAAK,MACe,EAAE;QACtB,MAAM,KAAK,GAAG,gCAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC3E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,KAAK;YACL,mBAAmB;YACnB,YAAY;YACZ,MAAM,EAAE,aAAa;SACtB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAA;QAC1B,KAAK,SAAS,CAAC,CAAC,cAAc;YAC5B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;gBAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAe,CAAA;oBACrC,MAAM,KAAiB,CAAA;iBACxB;aACF;QACH,CAAC;QAED,OAAO;YACL,cAAc;YACd,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,GAAG,EAAE,CAAA;gBACjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,EAAE;oBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;qBACtB;yBAAM;wBACL,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qBACnB;iBACF;gBACD,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAA;IACH,CAAC;CACF;AAtED,sBAsEC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":";;;AAGA,uDAAgE;AA4ChE,MAAa,KAAK;IAChB,YACmB,MAAwB,EACxB,OAAwB;;;;;mBADxB;;;;;;mBACA;;IAChB,CAAC;IAEJ,qBAAqB;IACrB,KAAK,CAAC,MAAM,CAAC,OAA8B;QACzC,MAAM,KAAK,GAAG,gCAAc,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACxC,KAAK;YACL,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;SACjD,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EACX,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,GACW;QACjB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvB,mBAAmB;YACnB,YAAY,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM;YACtC,KAAK,EAAE,IAAA,8BAAY,EAAC,IAAI,CAAC,OAAO,CAAC;YACjC,MAAM,EAAE,aAAa;YACrB,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EACX,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,KAAK,MACe,EAAE;QACtB,MAAM,KAAK,GAAG,gCAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC3E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,KAAK;YACL,mBAAmB;YACnB,YAAY,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM;YACtC,MAAM,EAAE,aAAa;SACtB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAA;QAC1B,KAAK,SAAS,CAAC,CAAC,cAAc;YAC5B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;gBAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAe,CAAA;oBACrC,MAAM,KAAiB,CAAA;iBACxB;aACF;QACH,CAAC;QAED,OAAO;YACL,cAAc;YACd,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,GAAG,EAAE,CAAA;gBACjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,EAAE;oBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;qBACtB;yBAAM;wBACL,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qBACnB;iBACF;gBACD,OAAO,MAAM,CAAA;YACf,CAAC;SACF,CAAA;IACH,CAAC;CACF;AAtED,sBAsEC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "0.0.16";
1
+ declare const _default: "0.1.1";
2
2
  export default _default;
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '0.0.16';
3
+ exports.default = '0.1.1';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;AAAA,kBAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;AAAA,kBAAe,OAAO,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clickhouse/client",
3
- "version": "0.0.16",
3
+ "version": "0.1.1",
4
4
  "description": "Official JS client for ClickHouse DB",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -37,7 +37,6 @@
37
37
  "dist"
38
38
  ],
39
39
  "dependencies": {
40
- "node-abort-controller": "^3.0.1",
41
40
  "uuid": "^9.0.0"
42
41
  },
43
42
  "devDependencies": {