@cubejs-backend/clickhouse-driver 1.1.5 → 1.1.7

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.
@@ -3,16 +3,35 @@
3
3
  * @license Apache-2.0
4
4
  * @fileoverview The `ClickHouseDriver` and related types declaration.
5
5
  */
6
- import { BaseDriver, DownloadQueryResultsOptions, DownloadQueryResultsResult, DownloadTableCSVData, DriverCapabilities, DriverInterface, QuerySchemasResult, StreamOptions, StreamTableDataWithTypes, TableStructure, UnloadOptions } from '@cubejs-backend/base-driver';
7
- import { Pool } from 'generic-pool';
8
- interface ClickHouseDriverOptions {
6
+ import { BaseDriver, DownloadQueryResultsOptions, DownloadQueryResultsResult, DownloadTableCSVData, DriverCapabilities, DriverInterface, QueryOptions, QuerySchemasResult, StreamOptions, StreamTableDataWithTypes, TableColumn, TableQueryResult, TableStructure, UnloadOptions } from '@cubejs-backend/base-driver';
7
+ import { ClickHouseClient } from '@clickhouse/client';
8
+ import type { ClickHouseSettings, ResponseJSON } from '@clickhouse/client';
9
+ export interface ClickHouseDriverOptions {
9
10
  host?: string;
10
11
  port?: string;
11
- auth?: string;
12
+ username?: string;
13
+ password?: string;
12
14
  protocol?: string;
13
15
  database?: string;
14
16
  readOnly?: boolean;
15
- queryOptions?: object;
17
+ /**
18
+ * Timeout in milliseconds for requests to ClickHouse.
19
+ * Default is 10 minutes
20
+ */
21
+ requestTimeout?: number;
22
+ /**
23
+ * Data source name.
24
+ */
25
+ dataSource?: string;
26
+ /**
27
+ * Max pool size value for the [cube]<-->[db] pool.
28
+ */
29
+ maxPoolSize?: number;
30
+ /**
31
+ * Time to wait for a response from a connection after validation
32
+ * request before determining it as not valid. Default - 10000 ms.
33
+ */
34
+ testConnectionTimeout?: number;
16
35
  }
17
36
  interface ClickhouseDriverExportRequiredAWS {
18
37
  bucketType: 's3';
@@ -20,43 +39,40 @@ interface ClickhouseDriverExportRequiredAWS {
20
39
  region: string;
21
40
  }
22
41
  interface ClickhouseDriverExportKeySecretAWS extends ClickhouseDriverExportRequiredAWS {
23
- keyId?: string;
24
- secretKey?: string;
42
+ keyId: string;
43
+ secretKey: string;
25
44
  }
26
45
  interface ClickhouseDriverExportAWS extends ClickhouseDriverExportKeySecretAWS {
27
46
  }
47
+ type ClickHouseDriverConfig = {
48
+ url: string;
49
+ username: string;
50
+ password: string;
51
+ readOnly: boolean;
52
+ database: string;
53
+ requestTimeout: number;
54
+ exportBucket: ClickhouseDriverExportAWS | null;
55
+ clickhouseSettings: ClickHouseSettings;
56
+ };
28
57
  export declare class ClickHouseDriver extends BaseDriver implements DriverInterface {
29
58
  /**
30
59
  * Returns default concurrency value.
31
60
  */
32
61
  static getDefaultConcurrency(): number;
33
- protected readonly pool: Pool<any>;
62
+ protected readonly client: ClickHouseClient;
34
63
  protected readonly readOnlyMode: boolean;
35
- protected readonly config: any;
64
+ protected readonly config: ClickHouseDriverConfig;
36
65
  /**
37
66
  * Class constructor.
38
67
  */
39
- constructor(config?: ClickHouseDriverOptions & {
40
- /**
41
- * Data source name.
42
- */
43
- dataSource?: string;
44
- /**
45
- * Max pool size value for the [cube]<-->[db] pool.
46
- */
47
- maxPoolSize?: number;
48
- /**
49
- * Time to wait for a response from a connection after validation
50
- * request before determining it as not valid. Default - 10000 ms.
51
- */
52
- testConnectionTimeout?: number;
53
- });
54
- protected withConnection(fn: (con: any, queryId: string) => Promise<any>): any;
68
+ constructor(config?: ClickHouseDriverOptions);
69
+ protected withCancel<T>(fn: (con: ClickHouseClient, queryId: string, signal: AbortSignal) => Promise<T>): Promise<T>;
70
+ protected createClient(maxPoolSize: number): ClickHouseClient;
55
71
  testConnection(): Promise<void>;
56
72
  readOnly(): boolean;
57
- query(query: string, values: unknown[]): Promise<any>;
58
- protected queryResponse(query: string, values: unknown[]): any;
59
- protected normaliseResponse(res: any): any;
73
+ query<R = unknown>(query: string, values: unknown[]): Promise<R[]>;
74
+ protected queryResponse(query: string, values: unknown[]): Promise<ResponseJSON<Record<string, unknown>>>;
75
+ protected normaliseResponse<R = unknown>(res: ResponseJSON<Record<string, unknown>>): Array<R>;
60
76
  release(): Promise<void>;
61
77
  informationSchemaQuery(): string;
62
78
  protected getTablesForSpecificSchemasQuery(schemasPlaceholders: string): string;
@@ -68,19 +84,24 @@ export declare class ClickHouseDriver extends BaseDriver implements DriverInterf
68
84
  downloadQueryResults(query: string, values: unknown[], options: DownloadQueryResultsOptions): Promise<DownloadQueryResultsResult>;
69
85
  toGenericType(columnType: string): string;
70
86
  createSchemaIfNotExists(schemaName: string): Promise<void>;
71
- getTablesQuery(schemaName: string): Promise<any>;
72
- protected getExportBucket(dataSource: string): ClickhouseDriverExportAWS | undefined;
87
+ getTablesQuery(schemaName: string): Promise<TableQueryResult[]>;
88
+ dropTable(tableName: string, _options?: QueryOptions): Promise<void>;
89
+ protected getExportBucket(dataSource: string): ClickhouseDriverExportAWS | null;
73
90
  isUnloadSupported(): Promise<boolean>;
74
91
  /**
75
92
  * Returns an array of queried fields meta info.
76
93
  */
77
94
  queryColumnTypes(sql: string, params: unknown[]): Promise<TableStructure>;
95
+ createTableRaw(query: string): Promise<void>;
96
+ createTable(quotedTableName: string, columns: TableColumn[]): Promise<void>;
78
97
  /**
79
98
  * We use unloadWithoutTempTable strategy
80
99
  */
81
100
  unload(_tableName: string, options: UnloadOptions): Promise<DownloadTableCSVData>;
82
101
  unloadFromQuery(sql: string, params: unknown[], options: UnloadOptions): Promise<DownloadTableCSVData>;
83
102
  capabilities(): DriverCapabilities;
103
+ command(query: string): Promise<void>;
104
+ insert(table: string, values: Array<Array<unknown>>): Promise<void>;
84
105
  }
85
106
  export {};
86
107
  //# sourceMappingURL=ClickHouseDriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClickHouseDriver.d.ts","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClickHouseDriver.d.ts","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA+B3E,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,UAAU,iCAAiC;IACzC,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,kCAAmC,SAAQ,iCAAiC;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAA0B,SAAQ,kCAAkC;CAC7E;AAED,KAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC/C,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,UAAW,YAAW,eAAe;IACzE;;OAEG;WACW,qBAAqB,IAAI,MAAM;IAK7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAE5C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAElD;;OAEG;gBAED,MAAM,GAAE,uBAA4B;IA6CtC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA+BpH,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB;IAYhD,cAAc;IAIpB,QAAQ;IAMF,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAK/E,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IA4BzG,SAAS,CAAC,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAejF,OAAO;IAIb,sBAAsB;cAWV,gCAAgC,CAAC,mBAAmB,EAAE,MAAM;cAU5D,gCAAgC,CAAC,eAAe,EAAE,MAAM;cAYxD,0BAA0B;cAI1B,yBAAyB;IAItB,UAAU,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIpD,MAAM,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EAAE,EAEjB,EAAE,aAAa,EAAE,EAAE,aAAa,GAC/B,OAAO,CAAC,wBAAwB,CAAC;IA8EvB,oBAAoB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAgB/B,aAAa,CAAC,UAAU,EAAE,MAAM;IA0B1B,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIhD,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,SAAS,CAAC,eAAe,CACvB,UAAU,EAAE,MAAM,GACjB,yBAAyB,GAAG,IAAI;IAwCtB,iBAAiB;IAQ9B;;OAEG;IACU,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBhE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;IASjF;;OAEG;IACU,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAYjF,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0C5G,YAAY,IAAI,kBAAkB;IAQ5B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAWjF"}
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.ClickHouseDriver = void 0;
12
12
  const shared_1 = require("@cubejs-backend/shared");
13
13
  const base_driver_1 = require("@cubejs-backend/base-driver");
14
- const generic_pool_1 = __importDefault(require("generic-pool"));
14
+ const node_stream_1 = require("node:stream");
15
+ const client_1 = require("@clickhouse/client");
15
16
  const uuid_1 = require("uuid");
16
17
  const sqlstring_1 = __importDefault(require("sqlstring"));
17
18
  const HydrationStream_1 = require("./HydrationStream");
18
- const ClickHouse = require('@cubejs-backend/apla-clickhouse');
19
19
  const ClickhouseTypeToGeneric = {
20
20
  enum: 'text',
21
21
  string: 'text',
@@ -47,7 +47,8 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
47
47
  static getDefaultConcurrency() {
48
48
  return 5;
49
49
  }
50
- pool;
50
+ // ClickHouseClient has internal pool of several sockets, no need for generic-pool
51
+ client;
51
52
  readOnlyMode;
52
53
  config;
53
54
  /**
@@ -57,84 +58,77 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
57
58
  super({
58
59
  testConnectionTimeout: config.testConnectionTimeout,
59
60
  });
60
- const dataSource = config.dataSource ||
61
- (0, shared_1.assertDataSource)('default');
61
+ const dataSource = config.dataSource ?? (0, shared_1.assertDataSource)('default');
62
+ const host = config.host ?? (0, shared_1.getEnv)('dbHost', { dataSource });
63
+ const port = config.port ?? (0, shared_1.getEnv)('dbPort', { dataSource }) ?? 8123;
64
+ const protocol = config.protocol ?? (0, shared_1.getEnv)('dbSsl', { dataSource }) ? 'https:' : 'http:';
65
+ const url = `${protocol}//${host}:${port}`;
66
+ const username = (0, shared_1.getEnv)('dbUser', { dataSource });
67
+ const password = (0, shared_1.getEnv)('dbPass', { dataSource });
68
+ const database = config.database ?? (0, shared_1.getEnv)('dbName', { dataSource }) ?? 'default';
69
+ // TODO this is a bit inconsistent with readOnly
70
+ this.readOnlyMode =
71
+ (0, shared_1.getEnv)('clickhouseReadOnly', { dataSource }) === 'true';
72
+ // Expect that getEnv('dbQueryTimeout') will always return a value
73
+ const requestTimeoutEnv = (0, shared_1.getEnv)('dbQueryTimeout', { dataSource }) * 1000;
74
+ const requestTimeout = config.requestTimeout ?? requestTimeoutEnv;
62
75
  this.config = {
63
- host: (0, shared_1.getEnv)('dbHost', { dataSource }),
64
- port: (0, shared_1.getEnv)('dbPort', { dataSource }),
65
- auth: (0, shared_1.getEnv)('dbUser', { dataSource }) ||
66
- (0, shared_1.getEnv)('dbPass', { dataSource })
67
- ? `${(0, shared_1.getEnv)('dbUser', { dataSource })}:${(0, shared_1.getEnv)('dbPass', { dataSource })}`
68
- : '',
69
- protocol: (0, shared_1.getEnv)('dbSsl', { dataSource }) ? 'https:' : 'http:',
70
- queryOptions: {
71
- database: (0, shared_1.getEnv)('dbName', { dataSource }) ||
72
- config && config.database ||
73
- 'default'
74
- },
76
+ url,
77
+ username,
78
+ password,
79
+ database,
75
80
  exportBucket: this.getExportBucket(dataSource),
76
- ...config
81
+ readOnly: !!config.readOnly,
82
+ requestTimeout,
83
+ clickhouseSettings: {
84
+ // If ClickHouse user's permissions are restricted with "readonly = 1",
85
+ // change settings queries are not allowed. Thus, "join_use_nulls" setting
86
+ // can not be changed
87
+ ...(this.readOnlyMode ? {} : { join_use_nulls: 1 }),
88
+ },
77
89
  };
78
- this.readOnlyMode =
79
- (0, shared_1.getEnv)('clickhouseReadOnly', { dataSource }) === 'true';
80
- this.pool = generic_pool_1.default.createPool({
81
- create: async () => new ClickHouse({
82
- ...this.config,
83
- queryOptions: {
84
- //
85
- //
86
- // If ClickHouse user's permissions are restricted with "readonly = 1",
87
- // change settings queries are not allowed. Thus, "join_use_nulls" setting
88
- // can not be changed
89
- //
90
- //
91
- ...(this.readOnlyMode ? {} : { join_use_nulls: 1 }),
92
- session_id: (0, uuid_1.v4)(),
93
- ...this.config.queryOptions,
94
- }
95
- }),
96
- destroy: () => Promise.resolve()
97
- }, {
98
- min: 0,
99
- max: config.maxPoolSize ||
100
- (0, shared_1.getEnv)('dbMaxPoolSize', { dataSource }) ||
101
- 8,
102
- evictionRunIntervalMillis: 10000,
103
- softIdleTimeoutMillis: 30000,
104
- idleTimeoutMillis: 30000,
105
- acquireTimeoutMillis: 20000
106
- });
90
+ const maxPoolSize = config.maxPoolSize ?? (0, shared_1.getEnv)("dbMaxPoolSize", { dataSource }) ?? 8;
91
+ this.client = this.createClient(maxPoolSize);
107
92
  }
108
- withConnection(fn) {
109
- const self = this;
110
- const connectionPromise = this.pool.acquire();
93
+ withCancel(fn) {
111
94
  const queryId = (0, uuid_1.v4)();
112
- let cancelled = false;
113
- const cancelObj = {};
114
- const promise = connectionPromise.then((connection) => {
115
- cancelObj.cancel = async () => {
116
- cancelled = true;
117
- await self.withConnection(async (conn) => {
118
- await conn.querying(`KILL QUERY WHERE query_id = '${queryId}'`);
95
+ const abortController = new AbortController();
96
+ const { signal } = abortController;
97
+ const promise = (async () => {
98
+ await this.client.ping();
99
+ signal.throwIfAborted();
100
+ // Queries sent by `fn` can hit a timeout error, would _not_ get killed, and continue running in ClickHouse
101
+ // TODO should we kill those as well?
102
+ const result = await fn(this.client, queryId, signal);
103
+ signal.throwIfAborted();
104
+ return result;
105
+ })();
106
+ promise.cancel = async () => {
107
+ abortController.abort();
108
+ // Use separate client for kill query, usual pool may be busy
109
+ const killClient = this.createClient(1);
110
+ try {
111
+ await killClient.command({
112
+ query: `KILL QUERY WHERE query_id = '${queryId}'`,
119
113
  });
120
- };
121
- return fn(connection, queryId)
122
- .then(res => this.pool.release(connection).then(() => {
123
- if (cancelled) {
124
- throw new Error('Query cancelled');
125
- }
126
- return res;
127
- }))
128
- .catch((err) => this.pool.release(connection).then(() => {
129
- if (cancelled) {
130
- throw new Error('Query cancelled');
131
- }
132
- throw err;
133
- }));
134
- });
135
- promise.cancel = () => cancelObj.cancel();
114
+ }
115
+ finally {
116
+ await killClient.close();
117
+ }
118
+ };
136
119
  return promise;
137
120
  }
121
+ createClient(maxPoolSize) {
122
+ return (0, client_1.createClient)({
123
+ url: this.config.url,
124
+ username: this.config.username,
125
+ password: this.config.password,
126
+ database: this.config.database,
127
+ clickhouse_settings: this.config.clickhouseSettings,
128
+ request_timeout: this.config.requestTimeout,
129
+ max_open_connections: maxPoolSize,
130
+ });
131
+ }
138
132
  async testConnection() {
139
133
  await this.query('SELECT 1', []);
140
134
  }
@@ -144,28 +138,37 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
144
138
  true;
145
139
  }
146
140
  async query(query, values) {
147
- return this.queryResponse(query, values).then((res) => this.normaliseResponse(res));
141
+ const response = await this.queryResponse(query, values);
142
+ return this.normaliseResponse(response);
148
143
  }
149
144
  queryResponse(query, values) {
150
145
  const formattedQuery = sqlstring_1.default.format(query, values);
151
- return this.withConnection((connection, queryId) => connection.querying(formattedQuery, {
152
- dataObjects: true,
153
- queryOptions: {
154
- query_id: queryId,
155
- //
156
- //
157
- // If ClickHouse user's permissions are restricted with "readonly = 1",
158
- // change settings queries are not allowed. Thus, "join_use_nulls" setting
159
- // can not be changed
160
- //
161
- //
162
- ...(this.readOnlyMode ? {} : { join_use_nulls: 1 }),
146
+ return this.withCancel(async (connection, queryId, signal) => {
147
+ try {
148
+ const format = 'JSON';
149
+ const resultSet = await connection.query({
150
+ query: formattedQuery,
151
+ query_id: queryId,
152
+ format,
153
+ clickhouse_settings: this.config.clickhouseSettings,
154
+ abort_signal: signal,
155
+ });
156
+ if (resultSet.response_headers['x-clickhouse-format'] !== format) {
157
+ throw new Error(`Unexpected x-clickhouse-format in response: expected ${format}, received ${resultSet.response_headers['x-clickhouse-format']}`);
158
+ }
159
+ // We used format JSON, so we expect each row to be Record with column names as keys
160
+ const results = await resultSet.json();
161
+ return results;
163
162
  }
164
- }));
163
+ catch (e) {
164
+ throw new Error(`Query failed; query id: ${queryId}, SQL: ${query}`, { cause: e });
165
+ }
166
+ });
165
167
  }
166
168
  normaliseResponse(res) {
167
169
  if (res.data) {
168
- const meta = res.meta.reduce((state, element) => ({ [element.name]: element, ...state }), {});
170
+ const meta = (res.meta ?? []).reduce((state, element) => ({ [element.name]: element, ...state }), {});
171
+ // TODO maybe use row-based format here as well?
169
172
  res.data.forEach((row) => {
170
173
  (0, HydrationStream_1.transformRow)(row, meta);
171
174
  });
@@ -173,8 +176,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
173
176
  return res.data;
174
177
  }
175
178
  async release() {
176
- await this.pool.drain();
177
- await this.pool.clear();
179
+ await this.client.close();
178
180
  }
179
181
  informationSchemaQuery() {
180
182
  return `
@@ -183,7 +185,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
183
185
  database as table_schema,
184
186
  type as data_type
185
187
  FROM system.columns
186
- WHERE database = '${this.config.queryOptions.database}'
188
+ WHERE database = '${this.config.database}'
187
189
  `;
188
190
  }
189
191
  getTablesForSpecificSchemasQuery(schemasPlaceholders) {
@@ -213,65 +215,85 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
213
215
  return 'table';
214
216
  }
215
217
  async getSchemas() {
216
- return [{ schema_name: this.config.queryOptions.database }];
218
+ return [{ schema_name: this.config.database }];
217
219
  }
218
220
  async stream(query, values,
219
221
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
220
222
  { highWaterMark }) {
221
- // eslint-disable-next-line no-underscore-dangle
222
- const conn = await this.pool._factory.create();
223
+ // Use separate client for this long-living query
224
+ const client = this.createClient(1);
225
+ const queryId = (0, uuid_1.v4)();
223
226
  try {
224
227
  const formattedQuery = sqlstring_1.default.format(query, values);
225
- return await new Promise((resolve, reject) => {
226
- const options = {
227
- queryOptions: {
228
- query_id: (0, uuid_1.v4)(),
229
- //
230
- //
231
- // If ClickHouse user's permissions are restricted with "readonly = 1",
232
- // change settings queries are not allowed. Thus, "join_use_nulls" setting
233
- // can not be changed
234
- //
235
- //
236
- ...(this.readOnlyMode ? {} : { join_use_nulls: 1 }),
237
- }
238
- };
239
- const originalStream = conn.query(formattedQuery, options, (err, result) => {
240
- if (err) {
241
- reject(err);
242
- }
243
- else {
244
- const rowStream = new HydrationStream_1.HydrationStream(result.meta);
245
- originalStream.pipe(rowStream);
246
- resolve({
247
- rowStream,
248
- types: result.meta.map((field) => ({
249
- name: field.name,
250
- type: this.toGenericType(field.type),
251
- })),
252
- release: async () => {
253
- // eslint-disable-next-line no-underscore-dangle
254
- await this.pool._factory.destroy(conn);
255
- }
256
- });
257
- }
258
- });
228
+ const format = 'JSONCompactEachRowWithNamesAndTypes';
229
+ const resultSet = await client.query({
230
+ query: formattedQuery,
231
+ query_id: queryId,
232
+ format,
233
+ clickhouse_settings: this.config.clickhouseSettings,
259
234
  });
235
+ if (resultSet.response_headers['x-clickhouse-format'] !== format) {
236
+ throw new Error(`Unexpected x-clickhouse-format in response: expected ${format}, received ${resultSet.response_headers['x-clickhouse-format']}`);
237
+ }
238
+ // Array<unknown> is okay, because we use fixed JSONCompactEachRowWithNamesAndTypes format
239
+ // And each row after first two will look like this: [42, "hello", [0,1]]
240
+ // https://clickhouse.com/docs/en/interfaces/formats#jsoncompacteachrowwithnamesandtypes
241
+ const resultSetStream = resultSet.stream();
242
+ const allRowsIter = (async function* allRowsIter() {
243
+ for await (const rowsBatch of resultSetStream) {
244
+ for (const row of rowsBatch) {
245
+ yield row.json();
246
+ }
247
+ }
248
+ }());
249
+ const first = await allRowsIter.next();
250
+ if (first.done) {
251
+ throw new Error('Unexpected stream end before row with names');
252
+ }
253
+ // JSONCompactEachRowWithNamesAndTypes: expect first row to be column names as string
254
+ const names = first.value;
255
+ const second = await allRowsIter.next();
256
+ if (second.done) {
257
+ throw new Error('Unexpected stream end before row with types');
258
+ }
259
+ // JSONCompactEachRowWithNamesAndTypes: expect first row to be column names as string
260
+ const types = second.value;
261
+ if (names.length !== types.length) {
262
+ throw new Error(`Unexpected names and types length mismatch; names ${names.length} vs types ${types.length}`);
263
+ }
264
+ const dataRowsIter = (async function* () {
265
+ for await (const row of allRowsIter) {
266
+ yield (0, HydrationStream_1.transformStreamRow)(row, names, types);
267
+ }
268
+ }());
269
+ const rowStream = node_stream_1.Readable.from(dataRowsIter);
270
+ return {
271
+ rowStream,
272
+ types: names.map((name, idx) => {
273
+ const type = types[idx];
274
+ return {
275
+ name,
276
+ type: this.toGenericType(type),
277
+ };
278
+ }),
279
+ release: async () => {
280
+ await client.close();
281
+ }
282
+ };
260
283
  }
261
284
  catch (e) {
262
- // eslint-disable-next-line no-underscore-dangle
263
- await this.pool._factory.destroy(conn);
264
- throw e;
285
+ await client.close();
286
+ throw new Error(`Stream query failed; query id: ${queryId}, SQL: ${query}`, { cause: e });
265
287
  }
266
288
  }
267
289
  async downloadQueryResults(query, values, options) {
268
- if ((options || {}).streamImport) {
290
+ if ((options ?? {}).streamImport) {
269
291
  return this.stream(query, values, options);
270
292
  }
271
293
  const response = await this.queryResponse(query, values);
272
294
  return {
273
295
  rows: this.normaliseResponse(response),
274
- types: response.meta.map((field) => ({
296
+ types: (response.meta ?? []).map((field) => ({
275
297
  name: field.name,
276
298
  type: this.toGenericType(field.type),
277
299
  })),
@@ -301,11 +323,14 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
301
323
  return super.toGenericType(columnType);
302
324
  }
303
325
  async createSchemaIfNotExists(schemaName) {
304
- await this.query(`CREATE DATABASE IF NOT EXISTS ${schemaName}`, []);
326
+ await this.command(`CREATE DATABASE IF NOT EXISTS ${schemaName}`);
305
327
  }
306
328
  getTablesQuery(schemaName) {
307
329
  return this.query('SELECT name as table_name FROM system.tables WHERE database = ?', [schemaName]);
308
330
  }
331
+ async dropTable(tableName, _options) {
332
+ await this.command(`DROP TABLE ${tableName}`);
333
+ }
309
334
  getExportBucket(dataSource) {
310
335
  const supportedBucketTypes = ['s3'];
311
336
  const requiredExportBucket = {
@@ -333,7 +358,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
333
358
  }
334
359
  return exportBucket;
335
360
  }
336
- return undefined;
361
+ return null;
337
362
  }
338
363
  async isUnloadSupported() {
339
364
  if (this.config.exportBucket) {
@@ -354,6 +379,19 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
354
379
  type: this.toGenericType(column.type),
355
380
  }));
356
381
  }
382
+ // This is only for use in tests
383
+ async createTableRaw(query) {
384
+ await this.command(query);
385
+ }
386
+ async createTable(quotedTableName, columns) {
387
+ const createTableSql = this.createTableSql(quotedTableName, columns);
388
+ try {
389
+ await this.command(createTableSql);
390
+ }
391
+ catch (e) {
392
+ throw new Error(`Error during create table: ${createTableSql}`, { cause: e });
393
+ }
394
+ }
357
395
  /**
358
396
  * We use unloadWithoutTempTable strategy
359
397
  */
@@ -369,7 +407,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
369
407
  }
370
408
  const types = await this.queryColumnTypes(`(${sql})`, params);
371
409
  const exportPrefix = (0, uuid_1.v4)();
372
- await this.queryResponse(`
410
+ const formattedQuery = sqlstring_1.default.format(`
373
411
  INSERT INTO FUNCTION
374
412
  s3(
375
413
  'https://${this.config.exportBucket.bucketName}.s3.${this.config.exportBucket.region}.amazonaws.com/${exportPrefix}/export.csv.gz',
@@ -379,6 +417,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
379
417
  )
380
418
  ${sql}
381
419
  `, params);
420
+ await this.command(formattedQuery);
382
421
  const csvFile = await this.extractUnloadedFilesFromS3({
383
422
  credentials: {
384
423
  accessKeyId: this.config.exportBucket.keyId,
@@ -400,6 +439,28 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
400
439
  incrementalSchemaLoading: true,
401
440
  };
402
441
  }
442
+ // This is not part of a driver interface, and marked public only for testing
443
+ async command(query) {
444
+ await this.withCancel(async (connection, queryId, signal) => {
445
+ await connection.command({
446
+ query,
447
+ query_id: queryId,
448
+ abort_signal: signal,
449
+ });
450
+ });
451
+ }
452
+ // This is not part of a driver interface, and marked public only for testing
453
+ async insert(table, values) {
454
+ await this.withCancel(async (connection, queryId, signal) => {
455
+ await connection.insert({
456
+ table,
457
+ values,
458
+ format: 'JSONCompactEachRow',
459
+ query_id: queryId,
460
+ abort_signal: signal,
461
+ });
462
+ });
463
+ }
403
464
  }
404
465
  exports.ClickHouseDriver = ClickHouseDriver;
405
466
  //# sourceMappingURL=ClickHouseDriver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClickHouseDriver.js","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClickHouseDriver.js","sourceRoot":"","sources":["../../src/ClickHouseDriver.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,3 @@
1
- /// <reference types="node" />
2
- import stream from 'stream';
3
- export declare function transformRow(row: Record<string, any>, meta: any): void;
4
- export declare class HydrationStream extends stream.Transform {
5
- constructor(meta: any);
6
- }
1
+ export declare function transformRow(row: Record<string, unknown>, meta: any): void;
2
+ export declare function transformStreamRow(row: Array<unknown>, names: Array<string>, types: Array<string>): Record<string, unknown>;
7
3
  //# sourceMappingURL=HydrationStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydrationStream.d.ts","sourceRoot":"","sources":["../../src/HydrationStream.ts"],"names":[],"mappings":";AAAA,OAAO,MAA6B,MAAM,QAAQ,CAAC;AAOnD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,QAmB/D;AAED,qBAAa,eAAgB,SAAQ,MAAM,CAAC,SAAS;gBAChC,IAAI,EAAE,GAAG;CAW7B"}
1
+ {"version":3,"file":"HydrationStream.d.ts","sourceRoot":"","sources":["../../src/HydrationStream.ts"],"names":[],"mappings":"AA4BA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,QAKnE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY3H"}
@@ -22,51 +22,53 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.HydrationStream = exports.transformRow = void 0;
30
- const stream_1 = __importDefault(require("stream"));
26
+ exports.transformStreamRow = exports.transformRow = void 0;
31
27
  const moment = __importStar(require("moment"));
32
28
  // ClickHouse returns DateTime as strings in format "YYYY-DD-MM HH:MM:SS"
33
29
  // cube.js expects them in format "YYYY-DD-MMTHH:MM:SS.000", so translate them based on the metadata returned
34
30
  //
35
31
  // ClickHouse returns some number types as js numbers, others as js string, normalise them all to strings
32
+ function transformValue(type, value) {
33
+ if (value !== null) {
34
+ if (type.includes('DateTime64')) {
35
+ return moment.utc(value).format(moment.HTML5_FMT.DATETIME_LOCAL_MS);
36
+ }
37
+ else if (type.includes('DateTime') /** Can be DateTime or DateTime('timezone') */) {
38
+ // expect DateTime to always be string
39
+ const valueStr = value;
40
+ return `${valueStr.substring(0, 10)}T${valueStr.substring(11, 22)}.000`;
41
+ }
42
+ else if (type.includes('Date')) {
43
+ return `${value}T00:00:00.000`;
44
+ }
45
+ else if (type.includes('Int')
46
+ || type.includes('Float')
47
+ || type.includes('Decimal')) {
48
+ // convert all numbers into strings
49
+ return `${value}`;
50
+ }
51
+ }
52
+ return value;
53
+ }
36
54
  function transformRow(row, meta) {
37
55
  for (const [fieldName, value] of Object.entries(row)) {
38
- if (value !== null) {
39
- const metaForField = meta[fieldName];
40
- if (metaForField.type.includes('DateTime64')) {
41
- row[fieldName] = moment.utc(value).format(moment.HTML5_FMT.DATETIME_LOCAL_MS);
42
- }
43
- else if (metaForField.type.includes('DateTime') /** Can be DateTime or DateTime('timezone') */) {
44
- row[fieldName] = `${value.substring(0, 10)}T${value.substring(11, 22)}.000`;
45
- }
46
- else if (metaForField.type.includes('Date')) {
47
- row[fieldName] = `${value}T00:00:00.000`;
48
- }
49
- else if (metaForField.type.includes('Int')
50
- || metaForField.type.includes('Float')
51
- || metaForField.type.includes('Decimal')) {
52
- // convert all numbers into strings
53
- row[fieldName] = `${value}`;
54
- }
55
- }
56
+ const metaForField = meta[fieldName];
57
+ row[fieldName] = transformValue(metaForField.type, value);
56
58
  }
57
59
  }
58
60
  exports.transformRow = transformRow;
59
- class HydrationStream extends stream_1.default.Transform {
60
- constructor(meta) {
61
- super({
62
- objectMode: true,
63
- transform(row, encoding, callback) {
64
- transformRow(row, meta);
65
- this.push(row);
66
- callback();
67
- }
68
- });
61
+ function transformStreamRow(row, names, types) {
62
+ if (row.length !== names.length) {
63
+ throw new Error(`Unexpected row and names/types length mismatch; row ${row.length} vs names ${names.length}`);
69
64
  }
65
+ return row.reduce((rowObj, value, idx) => {
66
+ const name = names[idx];
67
+ const type = types[idx];
68
+ rowObj[name] = transformValue(type, value);
69
+ return rowObj;
70
+ // TODO do we actually want Object.create(null) safety? or is it ok to use {}
71
+ }, Object.create(null));
70
72
  }
71
- exports.HydrationStream = HydrationStream;
73
+ exports.transformStreamRow = transformStreamRow;
72
74
  //# sourceMappingURL=HydrationStream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydrationStream.js","sourceRoot":"","sources":["../../src/HydrationStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAmD;AACnD,+CAAiC;AAEjC,0EAA0E;AAC1E,8GAA8G;AAC9G,EAAE;AACF,0GAA0G;AAC1G,SAAgB,YAAY,CAAC,GAAwB,EAAE,IAAS;IAC9D,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpD,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;aAC/E;iBAAM,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,8CAA8C,EAAE;gBAChG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;aAC7E;iBAAM,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,eAAe,CAAC;aAC1C;iBAAM,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACvC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;mBACnC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EACxC;gBACA,mCAAmC;gBACnC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC;aAC7B;SACF;KACF;AACH,CAAC;AAnBD,oCAmBC;AAED,MAAa,eAAgB,SAAQ,gBAAM,CAAC,SAAS;IACnD,YAAmB,IAAS;QAC1B,KAAK,CAAC;YACJ,UAAU,EAAE,IAAI;YAChB,SAAS,CAAC,GAAU,EAAE,QAAwB,EAAE,QAA2B;gBACzE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAExB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,QAAQ,EAAE,CAAC;YACb,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAZD,0CAYC"}
1
+ {"version":3,"file":"HydrationStream.js","sourceRoot":"","sources":["../../src/HydrationStream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC,0EAA0E;AAC1E,8GAA8G;AAC9G,EAAE;AACF,0GAA0G;AAC1G,SAAS,cAAc,CAAC,IAAY,EAAE,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;SACrE;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,8CAA8C,EAAE;YACnF,sCAAsC;YACtC,MAAM,QAAQ,GAAG,KAAe,CAAC;YACjC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;SACzE;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChC,OAAO,GAAG,KAAK,eAAe,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;eAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;eACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC3B;YACA,mCAAmC;YACnC,OAAO,GAAG,KAAK,EAAE,CAAC;SACnB;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,YAAY,CAAC,GAA4B,EAAE,IAAS;IAClE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,GAAG,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC3D;AACH,CAAC;AALD,oCAKC;AAED,SAAgB,kBAAkB,CAAC,GAAmB,EAAE,KAAoB,EAAE,KAAoB;IAChG,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/G;IAED,OAAO,GAAG,CAAC,MAAM,CAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAChE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;QACd,6EAA6E;IAC/E,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,CAAC;AAZD,gDAYC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@cubejs-backend/clickhouse-driver",
3
3
  "description": "Cube.js ClickHouse database driver",
4
4
  "author": "Cube Dev, Inc.",
5
- "version": "1.1.5",
5
+ "version": "1.1.7",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/cube-js/cube.git",
@@ -27,10 +27,9 @@
27
27
  "integration:clickhouse": "jest dist/test"
28
28
  },
29
29
  "dependencies": {
30
- "@cubejs-backend/apla-clickhouse": "^1.7",
31
- "@cubejs-backend/base-driver": "1.1.4",
32
- "@cubejs-backend/shared": "1.1.4",
33
- "generic-pool": "^3.6.0",
30
+ "@clickhouse/client": "^1.7.0",
31
+ "@cubejs-backend/base-driver": "1.1.7",
32
+ "@cubejs-backend/shared": "1.1.7",
34
33
  "moment": "^2.24.0",
35
34
  "sqlstring": "^2.3.1",
36
35
  "uuid": "^8.3.2"
@@ -38,7 +37,7 @@
38
37
  "license": "Apache-2.0",
39
38
  "devDependencies": {
40
39
  "@cubejs-backend/linter": "^1.0.0",
41
- "@cubejs-backend/testing-shared": "1.1.5",
40
+ "@cubejs-backend/testing-shared": "1.1.7",
42
41
  "@types/jest": "^27",
43
42
  "jest": "27",
44
43
  "typescript": "~5.2.2"
@@ -52,5 +51,5 @@
52
51
  "eslintConfig": {
53
52
  "extends": "../cubejs-linter"
54
53
  },
55
- "gitHead": "5fd13d14c284bb40cb74ede7b12f0d66ad4ce10f"
54
+ "gitHead": "591a38394bd22d468b8aaf5bd0468459417042c8"
56
55
  }