@cubejs-backend/clickhouse-driver 1.7.32 → 1.7.34

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.
@@ -1,8 +1,3 @@
1
- /**
2
- * @copyright Cube Dev, Inc.
3
- * @license Apache-2.0
4
- * @fileoverview The `ClickHouseDriver` and related types declaration.
5
- */
6
1
  import { BaseDriver, DownloadQueryResultsOptions, DownloadQueryResultsResult, DownloadTableCSVData, DriverCapabilities, DriverInterface, GenericDataBaseType, QueryOptions, QuerySchemasResult, StreamOptions, StreamTableDataWithTypes, TableColumn, TableQueryResult, TableStructure, UnloadOptions } from '@cubejs-backend/base-driver';
7
2
  import { ClickHouseClient } from '@clickhouse/client';
8
3
  import type { ClickHouseSettings, ResponseJSON } from '@clickhouse/client';
@@ -80,13 +75,19 @@ export declare class ClickHouseDriver extends BaseDriver implements DriverInterf
80
75
  * Class constructor.
81
76
  */
82
77
  constructor(config?: ClickHouseDriverOptions);
83
- protected withCancel<T>(fn: (con: ClickHouseClient, queryId: string, signal: AbortSignal) => Promise<T>): Promise<T>;
78
+ private buildQueryId;
79
+ protected withCancel<T>(fn: (con: ClickHouseClient, queryId: string, signal: AbortSignal) => Promise<T>, options?: QueryOptions): Promise<T>;
84
80
  protected createClient(maxPoolSize: number): ClickHouseClient;
81
+ /**
82
+ * The client instantiates `LoggerClass` with no arguments, and `setLogger` runs
83
+ * after the constructor, so the Cube logger is resolved lazily on every call.
84
+ */
85
+ private clientLoggerClass;
85
86
  testConnection(): Promise<void>;
86
87
  readOnly(): boolean;
87
- query<R = unknown>(query: string, values: unknown[]): Promise<R[]>;
88
- protected queryResponse(query: string, values: unknown[]): Promise<ResponseJSON<Record<string, unknown>>>;
89
- protected normaliseResponse<R = unknown>(res: ResponseJSON<Record<string, unknown>>): Array<R>;
88
+ query<R = unknown>(query: string, values: unknown[], options?: QueryOptions): Promise<R[]>;
89
+ protected queryResponse(query: string, values: unknown[], options?: QueryOptions): Promise<ResponseJSON<Array<unknown>>>;
90
+ protected normaliseResponse<R = unknown>(res: ResponseJSON<Array<unknown>>): Array<R>;
90
91
  release(): Promise<void>;
91
92
  informationSchemaQuery(): string;
92
93
  protected getTablesForSpecificSchemasQuery(schemasPlaceholders: string): string;
@@ -94,28 +95,38 @@ export declare class ClickHouseDriver extends BaseDriver implements DriverInterf
94
95
  protected getColumnNameForSchemaName(): string;
95
96
  protected getColumnNameForTableName(): string;
96
97
  getSchemas(): Promise<QuerySchemasResult[]>;
97
- stream(query: string, values: unknown[], { highWaterMark }: StreamOptions): Promise<StreamTableDataWithTypes>;
98
+ stream(query: string, values: unknown[], { highWaterMark, requestId }: StreamOptions): Promise<StreamTableDataWithTypes>;
98
99
  downloadQueryResults(query: string, values: unknown[], options: DownloadQueryResultsOptions): Promise<DownloadQueryResultsResult>;
100
+ /**
101
+ * Example of types:
102
+ *
103
+ * Int64
104
+ * Nullable(Int64) / Nullable(String)
105
+ * Nullable(DateTime('UTC'))
106
+ * LowCardinality(Nullable(String))
107
+ * Array(DateTime) -> timestamp[]
108
+ * Map(String, Int32) / Tuple(Int32, String)
109
+ */
99
110
  protected toGenericType(columnType: string, precision?: number | null, scale?: number | null): GenericDataBaseType;
100
111
  createSchemaIfNotExists(schemaName: string): Promise<void>;
101
112
  getTablesQuery(schemaName: string): Promise<TableQueryResult[]>;
102
- dropTable(tableName: string, _options?: QueryOptions): Promise<void>;
113
+ dropTable(tableName: string, options?: QueryOptions): Promise<void>;
103
114
  protected getExportBucket(dataSource: string, preAggregations?: boolean): ClickhouseDriverExportAWS | null;
104
115
  isUnloadSupported(): Promise<boolean>;
105
116
  /**
106
117
  * Returns an array of queried fields meta info.
107
118
  */
108
- queryColumnTypes(sql: string, params: unknown[]): Promise<TableStructure>;
119
+ queryColumnTypes(sql: string, params: unknown[], options?: QueryOptions): Promise<TableStructure>;
109
120
  createTableRaw(query: string): Promise<void>;
110
121
  createTable(quotedTableName: string, columns: TableColumn[]): Promise<void>;
111
122
  /**
112
123
  * We use unloadWithoutTempTable strategy
113
124
  */
114
125
  unload(_tableName: string, options: UnloadOptions): Promise<DownloadTableCSVData>;
115
- unloadFromQuery(sql: string, params: unknown[], _options: UnloadOptions): Promise<DownloadTableCSVData>;
126
+ unloadFromQuery(sql: string, params: unknown[], options: UnloadOptions): Promise<DownloadTableCSVData>;
116
127
  capabilities(): DriverCapabilities;
117
- command(query: string): Promise<void>;
118
- insert(table: string, values: Array<Array<unknown>>): Promise<void>;
128
+ command(query: string, options?: QueryOptions): Promise<void>;
129
+ insert(table: string, values: Array<Array<unknown>>, options?: QueryOptions): Promise<void>;
119
130
  }
120
131
  export {};
121
132
  //# 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":"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"}
@@ -1,21 +1,13 @@
1
1
  "use strict";
2
- /**
3
- * @copyright Cube Dev, Inc.
4
- * @license Apache-2.0
5
- * @fileoverview The `ClickHouseDriver` and related types declaration.
6
- */
7
- var __importDefault = (this && this.__importDefault) || function (mod) {
8
- return (mod && mod.__esModule) ? mod : { "default": mod };
9
- };
10
2
  Object.defineProperty(exports, "__esModule", { value: true });
11
3
  exports.ClickHouseDriver = void 0;
12
4
  const shared_1 = require("@cubejs-backend/shared");
13
5
  const base_driver_1 = require("@cubejs-backend/base-driver");
14
- const node_stream_1 = require("node:stream");
15
6
  const client_1 = require("@clickhouse/client");
16
7
  const uuid_1 = require("uuid");
17
- const sqlstring_1 = __importDefault(require("sqlstring"));
18
- const HydrationStream_1 = require("./HydrationStream");
8
+ const RowStream_1 = require("./RowStream");
9
+ const Transform_1 = require("./Transform");
10
+ const utils_1 = require("./utils");
19
11
  const SUPPORTED_BUCKET_TYPES = ['s3'];
20
12
  const ClickhouseTypeToGeneric = {
21
13
  enum: 'text',
@@ -91,31 +83,35 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
91
83
  /// Let's disable it, because we don't need them.
92
84
  send_progress_in_http_headers: 0,
93
85
  // If ClickHouse user's permissions are restricted with "readonly = 1",
94
- // change settings queries are not allowed. Thus, "join_use_nulls" setting
95
- // can not be changed
96
- ...(this.readOnlyMode ? {} : { join_use_nulls: 1 }),
86
+ // change settings queries are not allowed
87
+ ...(this.readOnlyMode ? {} : {
88
+ join_use_nulls: 1,
89
+ // Pins every DateTime value to the width its column type implies, which is what the
90
+ // specialized converters in Transform.ts key off. Not guaranteed: a readonly user or a
91
+ // driver_factory override still lands on the generic formatter.
92
+ date_time_output_format: 'simple',
93
+ }),
97
94
  },
98
95
  // Custom HTTP headers can only be passed via driver_factory, not env vars.
99
96
  headers: config.headers ?? {},
100
97
  };
101
- const maxPoolSize = config.maxPoolSize ?? (0, shared_1.getEnv)('dbMaxPoolSize', { dataSource, preAggregations }) ?? 8;
98
+ const maxPoolSize = config.maxPoolSize ??
99
+ (0, shared_1.getEnv)('dbMaxPoolSize', { dataSource, preAggregations }) ??
100
+ ClickHouseDriver.getDefaultConcurrency();
102
101
  this.client = this.createClient(maxPoolSize);
103
102
  }
104
- withCancel(fn) {
105
- const queryId = (0, uuid_1.v4)();
103
+ buildQueryId(requestId) {
104
+ const prefix = requestId ? (0, shared_1.extractRequestUUID)(requestId).slice(0, 63) : '';
105
+ if (!prefix) {
106
+ return (0, uuid_1.v4)();
107
+ }
108
+ return `${prefix}-${(0, uuid_1.v4)()}`;
109
+ }
110
+ withCancel(fn, options) {
111
+ const queryId = this.buildQueryId(options?.requestId);
106
112
  const abortController = new AbortController();
107
113
  const { signal } = abortController;
108
114
  const promise = (async () => {
109
- const pingResult = await this.client.ping();
110
- if (!pingResult.success) {
111
- // TODO replace string formatting with proper cause
112
- // pingResult.error can be AggregateError when ClickHouse hostname resolves to multiple addresses
113
- let errorMessage = pingResult.error.toString();
114
- if (pingResult.error instanceof AggregateError) {
115
- errorMessage = `Aggregate error: ${pingResult.error.message}; errors: ${pingResult.error.errors.join('; ')}`;
116
- }
117
- throw new Error(`Connection check failed: ${errorMessage}`);
118
- }
119
115
  signal.throwIfAborted();
120
116
  // Queries sent by `fn` can hit a timeout error, would _not_ get killed, and continue running in ClickHouse
121
117
  // TODO should we kill those as well?
@@ -129,7 +125,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
129
125
  const killClient = this.createClient(1);
130
126
  try {
131
127
  await killClient.command({
132
- query: `KILL QUERY WHERE query_id = '${queryId}'`,
128
+ query: (0, shared_1.formatMySql)('KILL QUERY WHERE query_id = ?', [queryId]),
133
129
  });
134
130
  }
135
131
  finally {
@@ -149,8 +145,47 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
149
145
  request_timeout: this.config.requestTimeout,
150
146
  max_open_connections: maxPoolSize,
151
147
  http_headers: this.config.headers,
148
+ log: {
149
+ LoggerClass: this.clientLoggerClass(),
150
+ // At WARN the client advises enabling progress headers on every construction,
151
+ // which we disable on purpose.
152
+ level: client_1.ClickHouseLogLevel.ERROR,
153
+ },
152
154
  });
153
155
  }
156
+ /**
157
+ * The client instantiates `LoggerClass` with no arguments, and `setLogger` runs
158
+ * after the constructor, so the Cube logger is resolved lazily on every call.
159
+ */
160
+ clientLoggerClass() {
161
+ const emit = (level, { module, message, args }, err) => {
162
+ this.logger?.('ClickHouse Client Log', {
163
+ ...args,
164
+ level,
165
+ module,
166
+ message,
167
+ ...(err ? { error: (err.stack || err).toString() } : {}),
168
+ });
169
+ };
170
+ return class {
171
+ trace(params) {
172
+ emit('trace', params);
173
+ }
174
+ // Cube's LogLevel has no debug counterpart
175
+ debug(params) {
176
+ emit('trace', params);
177
+ }
178
+ info(params) {
179
+ emit('info', params);
180
+ }
181
+ warn(params) {
182
+ emit('warn', params, params.err);
183
+ }
184
+ error(params) {
185
+ emit('error', params, params.err);
186
+ }
187
+ };
188
+ }
154
189
  async testConnection() {
155
190
  await this.query('SELECT 1', []);
156
191
  }
@@ -159,15 +194,17 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
159
194
  (!!this.config.readOnly || this.readOnlyMode) :
160
195
  true;
161
196
  }
162
- async query(query, values) {
163
- const response = await this.queryResponse(query, values);
197
+ async query(query, values, options) {
198
+ const response = await this.queryResponse(query, values, options);
164
199
  return this.normaliseResponse(response);
165
200
  }
166
- queryResponse(query, values) {
167
- const formattedQuery = sqlstring_1.default.format(query, values);
201
+ queryResponse(query, values, options) {
202
+ const formattedQuery = (0, shared_1.formatMySql)(query, values);
168
203
  return this.withCancel(async (connection, queryId, signal) => {
169
204
  try {
170
- const format = 'JSON';
205
+ // Positional rows drop the repeated column names and share the transform with `stream()`;
206
+ // ClickHouse serializes cell values identically in JSON and JSONCompact.
207
+ const format = 'JSONCompact';
171
208
  const resultSet = await connection.query({
172
209
  query: formattedQuery,
173
210
  query_id: queryId,
@@ -180,25 +217,35 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
180
217
  if (resultSet.response_headers['x-clickhouse-format'] && resultSet.response_headers['x-clickhouse-format'] !== format) {
181
218
  throw new Error(`Unexpected x-clickhouse-format in response: expected ${format}, received ${resultSet.response_headers['x-clickhouse-format']}`);
182
219
  }
183
- // We used format JSON, so we expect each row to be Record with column names as keys
184
220
  const results = await resultSet.json();
221
+ // Up to ClickHouse 25.x, failures after the first flushed block are appended to a 200
222
+ // response; newer versions truncate the JSON and are rejected while parsing it above.
223
+ // The client declares `exception` for `JSONEachRowWithProgress` rows only, never here.
224
+ const { exception } = results;
225
+ if (exception) {
226
+ throw new Error(`ClickHouse aborted after ${results.data?.length ?? 0} row(s): ${exception}`);
227
+ }
185
228
  return results;
186
229
  }
187
230
  catch (e) {
188
- // TODO replace string formatting with proper cause
189
- throw new Error(`Query failed: ${e}; query id: ${queryId}`);
231
+ throw new Error(`Query failed: ${(0, utils_1.formatError)(e)}; query id: ${queryId}`, { cause: e });
190
232
  }
191
- });
233
+ }, options);
192
234
  }
193
235
  normaliseResponse(res) {
194
- if (res.data) {
195
- const meta = (res.meta ?? []).reduce((state, element) => ({ [element.name]: element, ...state }), {});
196
- // TODO maybe use row-based format here as well?
197
- res.data.forEach((row) => {
198
- (0, HydrationStream_1.transformRow)(row, meta);
199
- });
236
+ const { data } = res;
237
+ if (!data || data.length === 0) {
238
+ return [];
239
+ }
240
+ if (!res.meta) {
241
+ throw new Error('Unexpected response without meta for format JSONCompact');
242
+ }
243
+ const transform = (0, Transform_1.buildTransformFromMeta)(res.meta);
244
+ const rows = new Array(data.length);
245
+ for (let i = 0; i < data.length; i++) {
246
+ rows[i] = (0, Transform_1.transformRow)(data[i], transform);
200
247
  }
201
- return res.data;
248
+ return rows;
202
249
  }
203
250
  async release() {
204
251
  await this.client.close();
@@ -242,14 +289,12 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
242
289
  async getSchemas() {
243
290
  return [{ schema_name: this.config.database }];
244
291
  }
245
- async stream(query, values,
246
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
247
- { highWaterMark }) {
292
+ async stream(query, values, { highWaterMark, requestId }) {
248
293
  // Use separate client for this long-living query
249
294
  const client = this.createClient(1);
250
- const queryId = (0, uuid_1.v4)();
295
+ const queryId = this.buildQueryId(requestId);
251
296
  try {
252
- const formattedQuery = sqlstring_1.default.format(query, values);
297
+ const formattedQuery = (0, shared_1.formatMySql)(query, values);
253
298
  const format = 'JSONCompactEachRowWithNamesAndTypes';
254
299
  const resultSet = await client.query({
255
300
  query: formattedQuery,
@@ -263,35 +308,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
263
308
  // Array<unknown> is okay, because we use fixed JSONCompactEachRowWithNamesAndTypes format
264
309
  // And each row after first two will look like this: [42, "hello", [0,1]]
265
310
  // https://clickhouse.com/docs/en/interfaces/formats#jsoncompacteachrowwithnamesandtypes
266
- const resultSetStream = resultSet.stream();
267
- const allRowsIter = (async function* allRowsIter() {
268
- for await (const rowsBatch of resultSetStream) {
269
- for (const row of rowsBatch) {
270
- yield row.json();
271
- }
272
- }
273
- }());
274
- const first = await allRowsIter.next();
275
- if (first.done) {
276
- throw new Error('Unexpected stream end before row with names');
277
- }
278
- // JSONCompactEachRowWithNamesAndTypes: expect first row to be column names as string
279
- const names = first.value;
280
- const second = await allRowsIter.next();
281
- if (second.done) {
282
- throw new Error('Unexpected stream end before row with types');
283
- }
284
- // JSONCompactEachRowWithNamesAndTypes: expect first row to be column names as string
285
- const types = second.value;
286
- if (names.length !== types.length) {
287
- throw new Error(`Unexpected names and types length mismatch; names ${names.length} vs types ${types.length}`);
288
- }
289
- const dataRowsIter = (async function* () {
290
- for await (const row of allRowsIter) {
291
- yield (0, HydrationStream_1.transformStreamRow)(row, names, types);
292
- }
293
- }());
294
- const rowStream = node_stream_1.Readable.from(dataRowsIter);
311
+ const { rowStream, names, types } = await RowStream_1.ClickHouseRowStream.open(resultSet.stream()[Symbol.asyncIterator](), queryId, highWaterMark || (0, shared_1.getEnv)('dbQueryStreamHighWaterMark'));
295
312
  return {
296
313
  rowStream,
297
314
  types: names.map((name, idx) => {
@@ -308,15 +325,14 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
308
325
  }
309
326
  catch (e) {
310
327
  await client.close();
311
- // TODO replace string formatting with proper cause
312
- throw new Error(`Stream query failed: ${e}; query id: ${queryId}`);
328
+ throw new Error(`Stream query failed: ${(0, utils_1.formatError)(e)}; query id: ${queryId}`, { cause: e });
313
329
  }
314
330
  }
315
331
  async downloadQueryResults(query, values, options) {
316
332
  if ((options ?? {}).streamImport) {
317
333
  return this.stream(query, values, options);
318
334
  }
319
- const response = await this.queryResponse(query, values);
335
+ const response = await this.queryResponse(query, values, options);
320
336
  return {
321
337
  rows: this.normaliseResponse(response),
322
338
  types: (response.meta ?? []).map((field) => ({
@@ -325,33 +341,49 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
325
341
  })),
326
342
  };
327
343
  }
344
+ /**
345
+ * Example of types:
346
+ *
347
+ * Int64
348
+ * Nullable(Int64) / Nullable(String)
349
+ * Nullable(DateTime('UTC'))
350
+ * LowCardinality(Nullable(String))
351
+ * Array(DateTime) -> timestamp[]
352
+ * Map(String, Int32) / Tuple(Int32, String)
353
+ */
328
354
  toGenericType(columnType, precision, scale) {
329
- if (columnType.toLowerCase() in ClickhouseTypeToGeneric) {
330
- return ClickhouseTypeToGeneric[columnType.toLowerCase()];
355
+ const type = columnType.trim();
356
+ const lowerType = type.toLowerCase();
357
+ if (lowerType in ClickhouseTypeToGeneric) {
358
+ return ClickhouseTypeToGeneric[lowerType];
331
359
  }
332
- const match = columnType.trim().toLowerCase().match(/decimal\s*\(\s*(\d+)\s*,\s*(\d+)\s*\)/i);
333
- if (match) {
334
- precision = Number(match[1]);
335
- scale = Number(match[2]);
360
+ const argsStart = type.indexOf('(');
361
+ if (argsStart === -1) {
362
+ return super.toGenericType(type, precision, scale);
336
363
  }
337
- /**
338
- * Example of types:
339
- *
340
- * Int64
341
- * Nullable(Int64) / Nullable(String)
342
- * Nullable(DateTime('UTC'))
343
- */
344
- if (columnType.includes('(')) {
345
- const types = columnType.toLowerCase().match(/([a-z0-9']+)/g);
346
- if (types) {
347
- for (const type of types) {
348
- if (type in ClickhouseTypeToGeneric) {
349
- return ClickhouseTypeToGeneric[type];
350
- }
351
- }
364
+ const name = lowerType.slice(0, argsStart).trim();
365
+ const args = type.slice(argsStart + 1, type.lastIndexOf(')'));
366
+ switch (name) {
367
+ case 'nullable':
368
+ case 'lowcardinality':
369
+ return this.toGenericType(args, precision, scale);
370
+ case 'array':
371
+ return `${this.toGenericType(args)}[]`;
372
+ case 'map':
373
+ case 'tuple':
374
+ case 'nested':
375
+ return 'text';
376
+ case 'decimal': {
377
+ const [argPrecision, argScale] = args.split(',');
378
+ return super.toGenericType(name, Number(argPrecision), Number(argScale));
352
379
  }
380
+ default:
381
+ // Parameterized scalars: DateTime('UTC'), DateTime64(3, 'UTC'), Enum8('Date' = 1),
382
+ // FixedString(16). Their arguments never carry a type, so only the name is mapped.
383
+ return name in ClickhouseTypeToGeneric
384
+ ? ClickhouseTypeToGeneric[name]
385
+ : super.toGenericType(name, precision, scale);
353
386
  }
354
- return super.toGenericType(columnType, precision, scale);
355
387
  }
356
388
  async createSchemaIfNotExists(schemaName) {
357
389
  await this.command(`CREATE DATABASE IF NOT EXISTS ${schemaName}`);
@@ -359,8 +391,8 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
359
391
  getTablesQuery(schemaName) {
360
392
  return this.query('SELECT name as table_name FROM system.tables WHERE database = ?', [schemaName]);
361
393
  }
362
- async dropTable(tableName, _options) {
363
- await this.command(`DROP TABLE ${tableName}`);
394
+ async dropTable(tableName, options) {
395
+ await this.command(`DROP TABLE ${tableName}`, options);
364
396
  }
365
397
  getExportBucket(dataSource, preAggregations) {
366
398
  const requiredExportBucket = {
@@ -397,8 +429,8 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
397
429
  /**
398
430
  * Returns an array of queried fields meta info.
399
431
  */
400
- async queryColumnTypes(sql, params) {
401
- const columns = await this.query(`DESCRIBE ${sql}`, params);
432
+ async queryColumnTypes(sql, params, options) {
433
+ const columns = await this.query(`DESCRIBE ${sql}`, params, options);
402
434
  if (!columns) {
403
435
  throw new Error('Unable to describe table');
404
436
  }
@@ -417,8 +449,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
417
449
  await this.command(createTableSql);
418
450
  }
419
451
  catch (e) {
420
- // TODO replace string formatting with proper cause
421
- throw new Error(`Create table failed: ${e}`);
452
+ throw new Error(`Create table ${quotedTableName} failed: ${(0, utils_1.formatError)(e)}`, { cause: e });
422
453
  }
423
454
  }
424
455
  /**
@@ -430,14 +461,14 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
430
461
  }
431
462
  return this.unloadFromQuery(options.query?.sql, options.query?.params, options);
432
463
  }
433
- async unloadFromQuery(sql, params, _options) {
464
+ async unloadFromQuery(sql, params, options) {
434
465
  if (!this.config.exportBucket) {
435
466
  throw new Error('Unload is not configured');
436
467
  }
437
- const types = await this.queryColumnTypes(`(${sql})`, params);
468
+ const types = await this.queryColumnTypes(`(${sql})`, params, { requestId: options.requestId });
438
469
  const { bucketName, path } = this.parseBucketUrl(this.config.exportBucket.bucketName);
439
470
  const exportPrefix = path ? `${path}/${(0, uuid_1.v4)()}` : (0, uuid_1.v4)();
440
- const formattedQuery = sqlstring_1.default.format(`
471
+ const formattedQuery = (0, shared_1.formatMySql)(`
441
472
  INSERT INTO FUNCTION
442
473
  s3(
443
474
  'https://${bucketName}.s3.${this.config.exportBucket.region}.amazonaws.com/${exportPrefix}/export.csv.gz',
@@ -447,7 +478,7 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
447
478
  )
448
479
  ${sql}
449
480
  `, params);
450
- await this.command(formattedQuery);
481
+ await this.command(formattedQuery, { requestId: options.requestId });
451
482
  const csvFile = await this.extractUnloadedFilesFromS3({
452
483
  credentials: {
453
484
  accessKeyId: this.config.exportBucket.keyId,
@@ -470,26 +501,36 @@ class ClickHouseDriver extends base_driver_1.BaseDriver {
470
501
  };
471
502
  }
472
503
  // This is not part of a driver interface, and marked public only for testing
473
- async command(query) {
504
+ async command(query, options) {
474
505
  await this.withCancel(async (connection, queryId, signal) => {
475
- await connection.command({
476
- query,
477
- query_id: queryId,
478
- abort_signal: signal,
479
- });
480
- });
506
+ try {
507
+ await connection.command({
508
+ query,
509
+ query_id: queryId,
510
+ abort_signal: signal,
511
+ });
512
+ }
513
+ catch (e) {
514
+ throw new Error(`Command failed: ${(0, utils_1.formatError)(e)}; query id: ${queryId}`, { cause: e });
515
+ }
516
+ }, options);
481
517
  }
482
518
  // This is not part of a driver interface, and marked public only for testing
483
- async insert(table, values) {
519
+ async insert(table, values, options) {
484
520
  await this.withCancel(async (connection, queryId, signal) => {
485
- await connection.insert({
486
- table,
487
- values,
488
- format: 'JSONCompactEachRow',
489
- query_id: queryId,
490
- abort_signal: signal,
491
- });
492
- });
521
+ try {
522
+ await connection.insert({
523
+ table,
524
+ values,
525
+ format: 'JSONCompactEachRow',
526
+ query_id: queryId,
527
+ abort_signal: signal,
528
+ });
529
+ }
530
+ catch (e) {
531
+ throw new Error(`Insert failed: ${(0, utils_1.formatError)(e)}; query id: ${queryId}`, { cause: e });
532
+ }
533
+ }, options);
493
534
  }
494
535
  }
495
536
  exports.ClickHouseDriver = ClickHouseDriver;
@@ -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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"}
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from 'node:stream';
3
+ import type { Row } from '@clickhouse/client';
4
+ type RowBatch = Array<Row<Array<unknown>>>;
5
+ /**
6
+ * Streams a JSONCompactEachRowWithNamesAndTypes result set as hydrated row objects.
7
+ *
8
+ * @clickhouse/client hands out batches of rows, so a whole batch is pushed per `await` on the
9
+ * source instead of one row per `await`, and the caller's `highWaterMark` decides how far ahead
10
+ * of the consumer we read.
11
+ */
12
+ export declare class ClickHouseRowStream extends Readable {
13
+ private readonly source;
14
+ private readonly queryId;
15
+ private reading;
16
+ private batch;
17
+ private idx;
18
+ private transform;
19
+ private constructor();
20
+ /**
21
+ * Consumes the two header rows the format starts with. Reading them here rather than through
22
+ * a consumer keeps it to the one moment where skipping rows is correct.
23
+ */
24
+ static open(source: AsyncIterator<RowBatch>, queryId: string, highWaterMark: number): Promise<{
25
+ rowStream: ClickHouseRowStream;
26
+ names: Array<string>;
27
+ types: Array<string>;
28
+ }>;
29
+ /** Advances to the next non-empty batch; false once the source is exhausted. */
30
+ private fetchBatch;
31
+ private readRawRow;
32
+ _read(): Promise<void>;
33
+ _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=RowStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowStream.d.ts","sourceRoot":"","sources":["../../src/RowStream.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAK9C,KAAK,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IAU7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,GAAG,CAAa;IAExB,OAAO,CAAC,SAAS,CAAa;IAE9B,OAAO;IAQP;;;OAGG;WACiB,IAAI,CACtB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,SAAS,EAAE,mBAAmB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAyB1F,gFAAgF;YAClE,UAAU;YAcV,UAAU;IAQF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;CAG9F"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClickHouseRowStream = void 0;
4
+ const node_stream_1 = require("node:stream");
5
+ const Transform_1 = require("./Transform");
6
+ const utils_1 = require("./utils");
7
+ /**
8
+ * Streams a JSONCompactEachRowWithNamesAndTypes result set as hydrated row objects.
9
+ *
10
+ * @clickhouse/client hands out batches of rows, so a whole batch is pushed per `await` on the
11
+ * source instead of one row per `await`, and the caller's `highWaterMark` decides how far ahead
12
+ * of the consumer we read.
13
+ */
14
+ class ClickHouseRowStream extends node_stream_1.Readable {
15
+ source;
16
+ queryId;
17
+ reading = false;
18
+ batch = [];
19
+ idx = 0;
20
+ transform;
21
+ constructor(source, queryId, highWaterMark) {
22
+ super({ objectMode: true, highWaterMark });
23
+ this.source = source;
24
+ this.queryId = queryId;
25
+ }
26
+ /**
27
+ * Consumes the two header rows the format starts with. Reading them here rather than through
28
+ * a consumer keeps it to the one moment where skipping rows is correct.
29
+ */
30
+ static async open(source, queryId, highWaterMark) {
31
+ const rowStream = new ClickHouseRowStream(source, queryId, highWaterMark);
32
+ try {
33
+ const names = await rowStream.readRawRow();
34
+ if (!names) {
35
+ throw new Error('Unexpected stream end before row with names');
36
+ }
37
+ const types = await rowStream.readRawRow();
38
+ if (!types) {
39
+ throw new Error('Unexpected stream end before row with types');
40
+ }
41
+ rowStream.transform = (0, Transform_1.buildTransformFromNamesAndTypes)(names, types);
42
+ return { rowStream, names, types };
43
+ }
44
+ catch (e) {
45
+ // Nobody holds the stream yet, so destroy it without an error to release the source
46
+ // rather than emit 'error' with no listener attached
47
+ rowStream.destroy();
48
+ throw e;
49
+ }
50
+ }
51
+ /** Advances to the next non-empty batch; false once the source is exhausted. */
52
+ async fetchBatch() {
53
+ do {
54
+ const next = await this.source.next();
55
+ if (next.done) {
56
+ return false;
57
+ }
58
+ this.batch = next.value;
59
+ this.idx = 0;
60
+ } while (this.batch.length === 0);
61
+ return true;
62
+ }
63
+ async readRawRow() {
64
+ if (this.idx >= this.batch.length && !await this.fetchBatch()) {
65
+ return undefined;
66
+ }
67
+ return this.batch[this.idx++].json();
68
+ }
69
+ async _read() {
70
+ // A synchronous push() can re-enter _read() while the loop below is still running
71
+ if (this.reading) {
72
+ return;
73
+ }
74
+ this.reading = true;
75
+ try {
76
+ let canPush = true;
77
+ while (canPush) {
78
+ if (this.idx >= this.batch.length) {
79
+ if (!await this.fetchBatch()) {
80
+ this.push(null);
81
+ return;
82
+ }
83
+ // A destroy() while parked on the source settles the pending next() via source.return();
84
+ // the rows it carried have no reader anymore. A destroy() mid-batch needs no check of its
85
+ // own: push() into a destroyed stream returns false, so the loop exits on its own
86
+ if (this.destroyed) {
87
+ return;
88
+ }
89
+ }
90
+ canPush = this.push((0, Transform_1.transformRow)(this.batch[this.idx++].json(), this.transform));
91
+ }
92
+ }
93
+ catch (e) {
94
+ // Since 25.11 the server reports an exception raised after the first block through
95
+ // the response headers and an in-stream tag, and the client rethrows it here.
96
+ this.destroy(new Error(`Stream query failed: ${(0, utils_1.formatError)(e)}; query id: ${this.queryId}`, { cause: e }));
97
+ }
98
+ finally {
99
+ this.reading = false;
100
+ }
101
+ }
102
+ _destroy(error, callback) {
103
+ Promise.resolve(this.source.return?.()).then(() => callback(error), () => callback(error));
104
+ }
105
+ }
106
+ exports.ClickHouseRowStream = ClickHouseRowStream;
107
+ //# sourceMappingURL=RowStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowStream.js","sourceRoot":"","sources":["../../src/RowStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type ColumnConverter = (value: unknown) => unknown;
2
+ export type ColumnMeta = {
3
+ name: string;
4
+ type: string;
5
+ };
6
+ export type Transform = {
7
+ names: Array<string>;
8
+ converters: Array<ColumnConverter | null>;
9
+ objectShape: Record<string, unknown> | null;
10
+ };
11
+ export declare function formatCanonicalDateTime(s: string): string | null;
12
+ export declare function formatDateTime(value: unknown): string;
13
+ export declare function getColumnConverter(type: string): ColumnConverter | null;
14
+ export declare function buildTransformFromMeta(meta: ReadonlyArray<ColumnMeta>): Transform;
15
+ export declare function buildTransformFromNamesAndTypes(names: Array<string>, types: Array<string>): Transform;
16
+ export declare function transformRow(row: ReadonlyArray<unknown>, transform: Transform): Record<string, unknown>;
17
+ //# sourceMappingURL=Transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../src/Transform.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C,CAAC;AA6CF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiChE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASrD;AA+ID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAsBvE;AAUD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAUjF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAWrG;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBvG"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.transformRow = exports.buildTransformFromNamesAndTypes = exports.buildTransformFromMeta = exports.getColumnConverter = exports.formatDateTime = exports.formatCanonicalDateTime = void 0;
27
+ const moment = __importStar(require("moment"));
28
+ const shared_1 = require("@cubejs-backend/shared");
29
+ const CHAR_0 = 48;
30
+ const CHAR_9 = 57;
31
+ const CHAR_SPACE = 32;
32
+ const CHAR_DASH = 45;
33
+ const CHAR_DOT = 46;
34
+ const CHAR_COLON = 58;
35
+ const CHAR_T = 84;
36
+ const CHAR_LPAREN = 40;
37
+ const CHAR_Z = 90;
38
+ const ZEROS = '000';
39
+ function isDigit(code) {
40
+ return code >= CHAR_0 && code <= CHAR_9;
41
+ }
42
+ function hasCanonicalDateTimePrefix(s) {
43
+ if (s.length < 19) {
44
+ return false;
45
+ }
46
+ const separator = s.charCodeAt(10);
47
+ if (s.charCodeAt(4) !== CHAR_DASH ||
48
+ s.charCodeAt(7) !== CHAR_DASH ||
49
+ (separator !== CHAR_SPACE && separator !== CHAR_T) ||
50
+ s.charCodeAt(13) !== CHAR_COLON ||
51
+ s.charCodeAt(16) !== CHAR_COLON) {
52
+ return false;
53
+ }
54
+ return isDigit(s.charCodeAt(0)) && isDigit(s.charCodeAt(1)) &&
55
+ isDigit(s.charCodeAt(2)) && isDigit(s.charCodeAt(3)) &&
56
+ isDigit(s.charCodeAt(5)) && isDigit(s.charCodeAt(6)) &&
57
+ isDigit(s.charCodeAt(8)) && isDigit(s.charCodeAt(9)) &&
58
+ isDigit(s.charCodeAt(11)) && isDigit(s.charCodeAt(12)) &&
59
+ isDigit(s.charCodeAt(14)) && isDigit(s.charCodeAt(15)) &&
60
+ isDigit(s.charCodeAt(17)) && isDigit(s.charCodeAt(18));
61
+ }
62
+ // The server can override `date_time_output_format`, so only bypass moment for known-equivalent
63
+ // simple and ISO values.
64
+ function formatCanonicalDateTime(s) {
65
+ if (!hasCanonicalDateTimePrefix(s)) {
66
+ return null;
67
+ }
68
+ const len = s.length;
69
+ let millis = ZEROS;
70
+ let tail = 19;
71
+ if (len > 19 && s.charCodeAt(19) === CHAR_DOT) {
72
+ let end = 20;
73
+ while (end < len && isDigit(s.charCodeAt(end))) {
74
+ end++;
75
+ }
76
+ const fractionLength = end - 20;
77
+ if (fractionLength === 0) {
78
+ return null;
79
+ }
80
+ millis = fractionLength >= 3
81
+ ? s.slice(20, 23)
82
+ : s.slice(20, end) + ZEROS.slice(fractionLength);
83
+ tail = end;
84
+ }
85
+ // Offsets require a timezone shift, which only moment does.
86
+ if (tail !== len && !(tail === len - 1 && s.charCodeAt(tail) === CHAR_Z)) {
87
+ return null;
88
+ }
89
+ return `${s.slice(0, 10)}T${s.slice(11, 19)}.${millis}`;
90
+ }
91
+ exports.formatCanonicalDateTime = formatCanonicalDateTime;
92
+ function formatDateTime(value) {
93
+ if (typeof value === 'string') {
94
+ const formatted = formatCanonicalDateTime(value);
95
+ if (formatted !== null) {
96
+ return formatted;
97
+ }
98
+ }
99
+ return moment.utc(value).format(moment.HTML5_FMT.DATETIME_LOCAL_MS);
100
+ }
101
+ exports.formatDateTime = formatDateTime;
102
+ // The other two `date_time_output_format` shapes never share the width a column type pins: iso is
103
+ // always one character longer, unix_timestamp far shorter. The fraction marker is checked on top of
104
+ // the width because `2020-01-01 12:34:56+03:00` is exactly as wide as a DateTime64(5) value.
105
+ const dateTime0Converter = (value) => {
106
+ if (value === null || value === undefined) {
107
+ return value;
108
+ }
109
+ if (typeof value === 'string' && value.length === 19) {
110
+ return `${value.slice(0, 10)}T${value.slice(11, 19)}.${ZEROS}`;
111
+ }
112
+ return formatDateTime(value);
113
+ };
114
+ const dateTime1Converter = (value) => {
115
+ if (value === null || value === undefined) {
116
+ return value;
117
+ }
118
+ if (typeof value === 'string' && value.length === 21 && value.charCodeAt(19) === CHAR_DOT) {
119
+ return `${value.slice(0, 10)}T${value.slice(11, 19)}.${value.slice(20, 21)}00`;
120
+ }
121
+ return formatDateTime(value);
122
+ };
123
+ const dateTime2Converter = (value) => {
124
+ if (value === null || value === undefined) {
125
+ return value;
126
+ }
127
+ if (typeof value === 'string' && value.length === 22 && value.charCodeAt(19) === CHAR_DOT) {
128
+ return `${value.slice(0, 10)}T${value.slice(11, 19)}.${value.slice(20, 22)}0`;
129
+ }
130
+ return formatDateTime(value);
131
+ };
132
+ function createTruncatingDateTimeConverter(width) {
133
+ return (value) => {
134
+ if (value === null || value === undefined) {
135
+ return value;
136
+ }
137
+ if (typeof value === 'string' && value.length === width && value.charCodeAt(19) === CHAR_DOT) {
138
+ return `${value.slice(0, 10)}T${value.slice(11, 23)}`;
139
+ }
140
+ return formatDateTime(value);
141
+ };
142
+ }
143
+ const DATE_TIME_CONVERTERS = [
144
+ dateTime0Converter,
145
+ dateTime1Converter,
146
+ dateTime2Converter,
147
+ createTruncatingDateTimeConverter(23),
148
+ createTruncatingDateTimeConverter(24),
149
+ createTruncatingDateTimeConverter(25),
150
+ createTruncatingDateTimeConverter(26),
151
+ createTruncatingDateTimeConverter(27),
152
+ createTruncatingDateTimeConverter(28),
153
+ createTruncatingDateTimeConverter(29),
154
+ ];
155
+ const dateTimeConverter = (value) => (value === null || value === undefined ? value : formatDateTime(value));
156
+ const dateConverter = (value) => (value === null || value === undefined ? value : `${value}T00:00:00.000`);
157
+ const numberConverter = (value) => {
158
+ if (value === null || value === undefined) {
159
+ return value;
160
+ }
161
+ return typeof value === 'string' ? value : String(value);
162
+ };
163
+ const WRAPPER_PREFIXES = ['Nullable(', 'LowCardinality('];
164
+ // Scalar names inside container arguments must not select a converter for the container itself.
165
+ // SimpleAggregateFunction is excluded because it reads back as its scalar argument type.
166
+ const NON_SCALAR_PREFIXES = ['Array(', 'Map(', 'Tuple(', 'Nested(', 'Enum', 'JSON', 'AggregateFunction('];
167
+ function unwrapScalar(type) {
168
+ let inner = type;
169
+ let stripped = true;
170
+ while (stripped) {
171
+ stripped = false;
172
+ for (const prefix of WRAPPER_PREFIXES) {
173
+ if (inner.startsWith(prefix)) {
174
+ inner = inner.slice(prefix.length);
175
+ stripped = true;
176
+ }
177
+ }
178
+ }
179
+ return inner;
180
+ }
181
+ const DATE_TIME64 = 'DateTime64';
182
+ const DEFAULT_DATE_TIME64_PRECISION = 3;
183
+ const MAX_DATE_TIME64_PRECISION = 9;
184
+ const PRECISION_UNSUPPORTED = -1;
185
+ // `DateTime` and `DateTime64(0)` read back with the same 19 character shape, so a plain DateTime is
186
+ // precision 0. indexOf rather than startsWith, because SimpleAggregateFunction(max, DateTime64(3))
187
+ // reads back as its argument type. charCodeAt past the end is NaN, so no bounds checks are needed.
188
+ function parseDateTimePrecision(inner) {
189
+ const at = inner.indexOf(DATE_TIME64);
190
+ if (at === -1) {
191
+ return 0;
192
+ }
193
+ let i = at + DATE_TIME64.length;
194
+ if (inner.charCodeAt(i) !== CHAR_LPAREN) {
195
+ return DEFAULT_DATE_TIME64_PRECISION;
196
+ }
197
+ i++;
198
+ let precision = 0;
199
+ let digits = 0;
200
+ while (isDigit(inner.charCodeAt(i))) {
201
+ precision = precision * 10 + (inner.charCodeAt(i) - CHAR_0);
202
+ digits++;
203
+ i++;
204
+ }
205
+ if (digits === 0 || precision > MAX_DATE_TIME64_PRECISION) {
206
+ return PRECISION_UNSUPPORTED;
207
+ }
208
+ return precision;
209
+ }
210
+ function getColumnConverter(type) {
211
+ const inner = unwrapScalar(type);
212
+ if (NON_SCALAR_PREFIXES.some((prefix) => inner.startsWith(prefix))) {
213
+ return null;
214
+ }
215
+ if (inner.includes('Date')) {
216
+ if (!inner.includes('DateTime')) {
217
+ return dateConverter;
218
+ }
219
+ const precision = parseDateTimePrecision(inner);
220
+ return precision === PRECISION_UNSUPPORTED ? dateTimeConverter : DATE_TIME_CONVERTERS[precision];
221
+ }
222
+ if (inner.includes('Int') || inner.includes('Float') || inner.includes('Decimal')) {
223
+ return numberConverter;
224
+ }
225
+ return null;
226
+ }
227
+ exports.getColumnConverter = getColumnConverter;
228
+ function buildTransform(names, converters) {
229
+ return {
230
+ names,
231
+ converters,
232
+ objectShape: (0, shared_1.buildObjectShape)(names),
233
+ };
234
+ }
235
+ function buildTransformFromMeta(meta) {
236
+ const names = new Array(meta.length);
237
+ const converters = new Array(meta.length);
238
+ for (let i = 0; i < meta.length; i++) {
239
+ names[i] = meta[i].name;
240
+ converters[i] = getColumnConverter(meta[i].type);
241
+ }
242
+ return buildTransform(names, converters);
243
+ }
244
+ exports.buildTransformFromMeta = buildTransformFromMeta;
245
+ function buildTransformFromNamesAndTypes(names, types) {
246
+ if (names.length !== types.length) {
247
+ throw new Error(`Unexpected names and types length mismatch; names ${names.length} vs types ${types.length}`);
248
+ }
249
+ const converters = new Array(names.length);
250
+ for (let i = 0; i < names.length; i++) {
251
+ converters[i] = getColumnConverter(types[i]);
252
+ }
253
+ return buildTransform(names, converters);
254
+ }
255
+ exports.buildTransformFromNamesAndTypes = buildTransformFromNamesAndTypes;
256
+ // Left-to-right assignment preserves JSON.parse's ordering and last-value behavior for duplicate
257
+ // column names, keeping pre-aggregation content versions stable.
258
+ function transformRow(row, transform) {
259
+ const { names, converters, objectShape } = transform;
260
+ if (row.length !== names.length) {
261
+ throw new Error(`Unexpected row and names/types length mismatch; row ${row.length} vs names ${names.length}`);
262
+ }
263
+ // Cloning a shape that already holds every column keeps the row in fast-properties mode; see
264
+ // buildObjectShape for why that matters to everything reading the row afterwards.
265
+ const rowObj = objectShape === null ? {} : { ...objectShape };
266
+ for (let i = 0; i < names.length; i++) {
267
+ const converter = converters[i];
268
+ const value = row[i];
269
+ rowObj[names[i]] = converter === null ? value : converter(value);
270
+ }
271
+ return rowObj;
272
+ }
273
+ exports.transformRow = transformRow;
274
+ //# sourceMappingURL=Transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transform.js","sourceRoot":"","sources":["../../src/Transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function formatError(e: unknown): string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAQ9C"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatError = void 0;
4
+ function formatError(e) {
5
+ if (e instanceof AggregateError) {
6
+ // Node leaves `message` empty for the errors it raises itself
7
+ const prefix = e.message ? `Aggregate error: ${e.message}` : 'Aggregate error';
8
+ return `${prefix}; errors: ${e.errors.map((inner) => formatError(inner)).join('; ')}`;
9
+ }
10
+ return `${e}`;
11
+ }
12
+ exports.formatError = formatError;
13
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,YAAY,cAAc,EAAE;QAC/B,8DAA8D;QAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC/E,OAAO,GAAG,MAAM,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;KACvF;IAED,OAAO,GAAG,CAAC,EAAE,CAAC;AAChB,CAAC;AARD,kCAQC"}
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.7.32",
5
+ "version": "1.7.34",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/cube-js/cube.git",
@@ -28,17 +28,16 @@
28
28
  "integration:clickhouse": "jest dist/test/integration"
29
29
  },
30
30
  "dependencies": {
31
- "@clickhouse/client": "^1.12.0",
32
- "@cubejs-backend/base-driver": "1.7.32",
33
- "@cubejs-backend/shared": "1.7.32",
31
+ "@clickhouse/client": "^1.23.1",
32
+ "@cubejs-backend/base-driver": "1.7.34",
33
+ "@cubejs-backend/shared": "1.7.34",
34
34
  "moment": "^2.24.0",
35
- "sqlstring": "^2.3.1",
36
35
  "uuid": "^11.1.1"
37
36
  },
38
37
  "license": "Apache-2.0",
39
38
  "devDependencies": {
40
- "@cubejs-backend/linter": "1.7.32",
41
- "@cubejs-backend/testing-shared": "1.7.32",
39
+ "@cubejs-backend/linter": "1.7.34",
40
+ "@cubejs-backend/testing-shared": "1.7.34",
42
41
  "@types/jest": "^29",
43
42
  "jest": "^29",
44
43
  "typescript": "~5.2.2"
@@ -49,5 +48,5 @@
49
48
  "eslintConfig": {
50
49
  "extends": "../cubejs-linter"
51
50
  },
52
- "gitHead": "8f2ae29ebad5975a7cefeae4461ad08f68f1b859"
51
+ "gitHead": "9237c26f3c6181fa6abe964ee784d4a997e89523"
53
52
  }
@@ -1,3 +0,0 @@
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>;
3
- //# sourceMappingURL=HydrationStream.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.transformStreamRow = exports.transformRow = void 0;
27
- const moment = __importStar(require("moment"));
28
- // ClickHouse returns DateTime as strings in format "YYYY-DD-MM HH:MM:SS"
29
- // cube.js expects them in format "YYYY-DD-MMTHH:MM:SS.000", so translate them based on the metadata returned
30
- //
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
- }
54
- function transformRow(row, meta) {
55
- for (const [fieldName, value] of Object.entries(row)) {
56
- const metaForField = meta[fieldName];
57
- row[fieldName] = transformValue(metaForField.type, value);
58
- }
59
- }
60
- exports.transformRow = transformRow;
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}`);
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));
72
- }
73
- exports.transformStreamRow = transformStreamRow;
74
- //# sourceMappingURL=HydrationStream.js.map
@@ -1 +0,0 @@
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"}