@quillsql/node 0.6.14 → 0.6.16
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/cjs/db/BigQuery.js +8 -9
- package/dist/cjs/db/BigQuery.js.map +1 -1
- package/dist/cjs/db/CachedConnection.d.ts +3 -2
- package/dist/cjs/db/CachedConnection.js.map +1 -1
- package/dist/cjs/db/ClickHouse.d.ts +28 -0
- package/dist/cjs/db/ClickHouse.js +305 -0
- package/dist/cjs/db/ClickHouse.js.map +1 -0
- package/dist/cjs/db/DatabaseHelper.d.ts +14 -12
- package/dist/cjs/db/DatabaseHelper.js +30 -12
- package/dist/cjs/db/DatabaseHelper.js.map +1 -1
- package/dist/cjs/db/Mysql.js +9 -10
- package/dist/cjs/db/Mysql.js.map +1 -1
- package/dist/cjs/db/Postgres.js +9 -10
- package/dist/cjs/db/Postgres.js.map +1 -1
- package/dist/cjs/db/Snowflake.js +9 -10
- package/dist/cjs/db/Snowflake.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +6 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/Error.js +2 -2
- package/dist/cjs/utils/Error.js.map +1 -1
- package/dist/cjs/utils/RunQueryProcesses.js +2 -3
- package/dist/cjs/utils/RunQueryProcesses.js.map +1 -1
- package/dist/cjs/utils/schemaConversion.js +1 -2
- package/dist/cjs/utils/schemaConversion.js.map +1 -1
- package/dist/cjs/utils/textProcessing.js +2 -3
- package/dist/cjs/utils/textProcessing.js.map +1 -1
- package/dist/esm/db/CachedConnection.d.ts +3 -2
- package/dist/esm/db/CachedConnection.js.map +1 -1
- package/dist/esm/db/ClickHouse.d.ts +28 -0
- package/dist/esm/db/ClickHouse.js +294 -0
- package/dist/esm/db/ClickHouse.js.map +1 -0
- package/dist/esm/db/DatabaseHelper.d.ts +14 -12
- package/dist/esm/db/DatabaseHelper.js +19 -0
- package/dist/esm/db/DatabaseHelper.js.map +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +6 -5
- package/dist/esm/index.js.map +1 -1
- package/package.json +3 -2
package/dist/cjs/utils/Error.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.PgError = void 0;
|
|
4
|
+
exports.isSuperset = isSuperset;
|
|
4
5
|
class PgError extends Error {
|
|
5
6
|
// Add other properties if needed
|
|
6
7
|
constructor(message, detail, hint, position, code) {
|
|
@@ -24,5 +25,4 @@ function isSuperset(obj, baseClass) {
|
|
|
24
25
|
}
|
|
25
26
|
return true;
|
|
26
27
|
}
|
|
27
|
-
exports.isSuperset = isSuperset;
|
|
28
28
|
//# sourceMappingURL=Error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../../src/utils/Error.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../../src/utils/Error.ts"],"names":[],"mappings":";;;AAqBA,gCAaC;AAlCD,MAAa,OAAQ,SAAQ,KAAK;IAKhC,iCAAiC;IACjC,YACE,OAAe,EACf,MAAe,EACf,IAAa,EACb,QAAiB,EACjB,IAAa;QAEb,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAnBD,0BAmBC;AAED,SAAgB,UAAU,CAAC,GAAQ,EAAE,SAAc;IACjD,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,SAAS,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE5C,+DAA+D;IAC/D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -9,7 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.removeFields = removeFields;
|
|
13
|
+
exports.mapQueries = mapQueries;
|
|
13
14
|
function removeFields(queryResults, fieldsToRemove) {
|
|
14
15
|
const fields = queryResults.fields.filter((field) => !fieldsToRemove.includes(field.name));
|
|
15
16
|
const rows = queryResults.rows.map((row) => {
|
|
@@ -20,7 +21,6 @@ function removeFields(queryResults, fieldsToRemove) {
|
|
|
20
21
|
});
|
|
21
22
|
return { fields, rows };
|
|
22
23
|
}
|
|
23
|
-
exports.removeFields = removeFields;
|
|
24
24
|
function mapQueries(queries, targetConnection) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
const mappedArray = [];
|
|
@@ -31,5 +31,4 @@ function mapQueries(queries, targetConnection) {
|
|
|
31
31
|
return mappedArray;
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
exports.mapQueries = mapQueries;
|
|
35
34
|
//# sourceMappingURL=RunQueryProcesses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunQueryProcesses.js","sourceRoot":"","sources":["../../../src/utils/RunQueryProcesses.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RunQueryProcesses.js","sourceRoot":"","sources":["../../../src/utils/RunQueryProcesses.ts"],"names":[],"mappings":";;;;;;;;;;;AASA,oCAWC;AAED,gCAUC;AAvBD,SAAgB,YAAY,CAAC,YAAiB,EAAE,cAAwB;IACtE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CACvC,CAAC,KAAoB,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAC/D,CAAC;IACF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC9C,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAsB,UAAU,CAC9B,OAAiB,EACjB,gBAAkC;;QAElC,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertTypeToPostgres =
|
|
3
|
+
exports.convertTypeToPostgres = convertTypeToPostgres;
|
|
4
4
|
const pgtypes_1 = require("../assets/pgtypes");
|
|
5
5
|
function convertTypeToPostgres(data_type_id) {
|
|
6
6
|
var _a;
|
|
@@ -12,5 +12,4 @@ function convertTypeToPostgres(data_type_id) {
|
|
|
12
12
|
}
|
|
13
13
|
return type;
|
|
14
14
|
}
|
|
15
|
-
exports.convertTypeToPostgres = convertTypeToPostgres;
|
|
16
15
|
//# sourceMappingURL=schemaConversion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaConversion.js","sourceRoot":"","sources":["../../../src/utils/schemaConversion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schemaConversion.js","sourceRoot":"","sources":["../../../src/utils/schemaConversion.ts"],"names":[],"mappings":";;AAEA,sDAQC;AAVD,+CAA6C;AAE7C,SAAgB,qBAAqB,CAAC,YAAoB;;IACxD,MAAM,IAAI,GAAG,kBAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC;QAC7D,CAAC,CAAC,MAAA,kBAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,0CAAE,OAAO;QAC7D,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.capitalize = capitalize;
|
|
4
|
+
exports.depluralize = depluralize;
|
|
4
5
|
function capitalize(text) {
|
|
5
6
|
return text.charAt(0).toUpperCase() + text.slice(1);
|
|
6
7
|
}
|
|
7
|
-
exports.capitalize = capitalize;
|
|
8
8
|
function depluralize(text) {
|
|
9
9
|
if (text.endsWith("ies")) {
|
|
10
10
|
return text.slice(0, -3) + "y";
|
|
@@ -14,5 +14,4 @@ function depluralize(text) {
|
|
|
14
14
|
}
|
|
15
15
|
return text;
|
|
16
16
|
}
|
|
17
|
-
exports.depluralize = depluralize;
|
|
18
17
|
//# sourceMappingURL=textProcessing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textProcessing.js","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"textProcessing.js","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":";;AAAA,gCAEC;AAED,kCAQC;AAZD,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -4,15 +4,16 @@ import { PostgresConnectionConfig } from "./Postgres";
|
|
|
4
4
|
import { SnowflakeConnectionConfig } from "./Snowflake";
|
|
5
5
|
import { BigQueryConfig } from "./BigQuery";
|
|
6
6
|
import { MysqlConnectionConfig } from "./Mysql";
|
|
7
|
+
import { ClickHouseConnectionConfig } from "./ClickHouse";
|
|
7
8
|
export declare class CachedConnection {
|
|
8
|
-
databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql";
|
|
9
|
+
databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse";
|
|
9
10
|
readonly pool: DatabaseConnection;
|
|
10
11
|
orgId: string | string[] | null;
|
|
11
12
|
ttl: number;
|
|
12
13
|
cache: Mappable | null;
|
|
13
14
|
private _isClosed;
|
|
14
15
|
get isClosed(): boolean;
|
|
15
|
-
constructor(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", config: PostgresConnectionConfig | SnowflakeConnectionConfig | BigQueryConfig | MysqlConnectionConfig, cacheConfig?: Partial<CacheCredentials>);
|
|
16
|
+
constructor(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", config: PostgresConnectionConfig | SnowflakeConnectionConfig | BigQueryConfig | MysqlConnectionConfig | ClickHouseConnectionConfig, cacheConfig?: Partial<CacheCredentials>);
|
|
16
17
|
query(text: string): Promise<any>;
|
|
17
18
|
/**
|
|
18
19
|
* Configures and returns a cache instance or null if none could be created.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachedConnection.js","sourceRoot":"","sources":["../../../src/db/CachedConnection.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAEL,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CachedConnection.js","sourceRoot":"","sources":["../../../src/db/CachedConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ClickHouseClient } from "@clickhouse/client";
|
|
2
|
+
import { QuillQueryResults } from "./DatabaseHelper";
|
|
3
|
+
export type ClickHouseConnectionConfig = {
|
|
4
|
+
url: string;
|
|
5
|
+
username: string;
|
|
6
|
+
password: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function connectToClickHouse(config: ClickHouseConnectionConfig): ClickHouseClient;
|
|
9
|
+
export declare function disconnectFromClickHouse(client: ClickHouseClient): void;
|
|
10
|
+
export declare function runQueryClickHouse(sql: string, client: ClickHouseClient): Promise<QuillQueryResults>;
|
|
11
|
+
export declare function getSchemasClickHouse(client: ClickHouseClient): Promise<string[]>;
|
|
12
|
+
export declare function getTablesBySchemaClickHouse(client: ClickHouseClient, schemaNames: string[]): Promise<{
|
|
13
|
+
tableName: string;
|
|
14
|
+
schemaName: string;
|
|
15
|
+
}[]>;
|
|
16
|
+
export declare function getColumnsByTableClickHouse(client: ClickHouseClient, schemaName: string, tableName: string): Promise<string[]>;
|
|
17
|
+
export declare function getForeignKeysClickHouse(client: ClickHouseClient, schemaName: string, tableName: string, primaryKey: string): Promise<string[]>;
|
|
18
|
+
export declare function getSchemaColumnInfoClickHouse(client: ClickHouseClient, schemaName: string, tableNames: {
|
|
19
|
+
tableName: string;
|
|
20
|
+
schemaName: string;
|
|
21
|
+
}[]): Promise<{
|
|
22
|
+
tableName: string;
|
|
23
|
+
columns: {
|
|
24
|
+
columnName: string;
|
|
25
|
+
dataTypeID: number;
|
|
26
|
+
}[];
|
|
27
|
+
}[]>;
|
|
28
|
+
export declare function formatClickHouseConfig(connectionString: string): ClickHouseConnectionConfig;
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
// import { Pool, types } from "pg";
|
|
11
|
+
import { createClient } from "@clickhouse/client";
|
|
12
|
+
import { capitalize, depluralize } from "../utils/textProcessing";
|
|
13
|
+
// Parse type TIMESTAMP WITHOUT TIME ZONE as string so it doesn't get converted to a Date object
|
|
14
|
+
// types.setTypeParser(1114, function (val) {
|
|
15
|
+
// return val;
|
|
16
|
+
// });
|
|
17
|
+
const CLICKHOUSE_PG_TYPE_MAP = {
|
|
18
|
+
// Signed Integer Types and Aliases
|
|
19
|
+
'Int8': 21,
|
|
20
|
+
'TINYINT': 21,
|
|
21
|
+
'INT1': 21,
|
|
22
|
+
'BYTE': 21,
|
|
23
|
+
'TINYINT SIGNED': 21,
|
|
24
|
+
'INT1 SIGNED': 21,
|
|
25
|
+
'Int16': 21,
|
|
26
|
+
'SMALLINT': 21,
|
|
27
|
+
'SMALLINT SIGNED': 21,
|
|
28
|
+
'Int32': 23,
|
|
29
|
+
'INT': 23,
|
|
30
|
+
'INTEGER': 23,
|
|
31
|
+
'MEDIUMINT': 23,
|
|
32
|
+
'MEDIUMINT SIGNED': 23,
|
|
33
|
+
'INT SIGNED': 23,
|
|
34
|
+
'INTEGER SIGNED': 23,
|
|
35
|
+
'Int64': 20,
|
|
36
|
+
'BIGINT': 20,
|
|
37
|
+
'SIGNED': 20,
|
|
38
|
+
'BIGINT SIGNED': 20,
|
|
39
|
+
'TIME': 20,
|
|
40
|
+
// Unsigned Integer Types and Aliases
|
|
41
|
+
'UInt8': 21,
|
|
42
|
+
'TINYINT UNSIGNED': 21,
|
|
43
|
+
'INT1 UNSIGNED': 21,
|
|
44
|
+
'UInt16': 21,
|
|
45
|
+
'SMALLINT UNSIGNED': 21,
|
|
46
|
+
'UInt32': 23,
|
|
47
|
+
'MEDIUMINT UNSIGNED': 23,
|
|
48
|
+
'INT UNSIGNED': 23,
|
|
49
|
+
'INTEGER UNSIGNED': 23,
|
|
50
|
+
'UInt64': 20,
|
|
51
|
+
'UNSIGNED': 20,
|
|
52
|
+
'BIGINT UNSIGNED': 20,
|
|
53
|
+
'BIT': 20,
|
|
54
|
+
'SET': 20,
|
|
55
|
+
// Floating Point Types and Aliases
|
|
56
|
+
'Float32': 700,
|
|
57
|
+
'FLOAT': 700,
|
|
58
|
+
'REAL': 700,
|
|
59
|
+
'SINGLE': 700,
|
|
60
|
+
'Float64': 701,
|
|
61
|
+
'DOUBLE': 701,
|
|
62
|
+
'DOUBLE PRECISION': 701,
|
|
63
|
+
'BFloat16': 700, // Mapped to REAL as closest approximation
|
|
64
|
+
// Decimal Types
|
|
65
|
+
'Decimal': 1700,
|
|
66
|
+
'Decimal32': 1700,
|
|
67
|
+
'Decimal64': 1700,
|
|
68
|
+
'Decimal128': 1700,
|
|
69
|
+
'Decimal256': 1700,
|
|
70
|
+
// Boolean Type
|
|
71
|
+
'Bool': 16,
|
|
72
|
+
// String Types and Aliases
|
|
73
|
+
'String': 25,
|
|
74
|
+
'LONGTEXT': 25,
|
|
75
|
+
'MEDIUMTEXT': 25,
|
|
76
|
+
'TINYTEXT': 25,
|
|
77
|
+
'TEXT': 25,
|
|
78
|
+
'LONGBLOB': 25,
|
|
79
|
+
'MEDIUMBLOB': 25,
|
|
80
|
+
'TINYBLOB': 25,
|
|
81
|
+
'BLOB': 25,
|
|
82
|
+
'VARCHAR': 1043,
|
|
83
|
+
'CHAR': 1042,
|
|
84
|
+
'CHAR LARGE OBJECT': 25,
|
|
85
|
+
'CHAR VARYING': 1043,
|
|
86
|
+
'CHARACTER LARGE OBJECT': 25,
|
|
87
|
+
'CHARACTER VARYING': 1043,
|
|
88
|
+
'NCHAR LARGE OBJECT': 25,
|
|
89
|
+
'NCHAR VARYING': 1043,
|
|
90
|
+
'NATIONAL CHARACTER LARGE OBJECT': 25,
|
|
91
|
+
'NATIONAL CHARACTER VARYING': 1043,
|
|
92
|
+
'NATIONAL CHAR VARYING': 1043,
|
|
93
|
+
'NATIONAL CHARACTER': 1042,
|
|
94
|
+
'NATIONAL CHAR': 1042,
|
|
95
|
+
'BINARY LARGE OBJECT': 17,
|
|
96
|
+
'BINARY VARYING': 17,
|
|
97
|
+
// Fixed String
|
|
98
|
+
'FixedString': 1042,
|
|
99
|
+
// Identifier Types
|
|
100
|
+
'UUID': 2950,
|
|
101
|
+
// Date and Time Types
|
|
102
|
+
'Date': 1082,
|
|
103
|
+
'Date32': 1082,
|
|
104
|
+
'DateTime': 1184,
|
|
105
|
+
'DateTime64': 1184,
|
|
106
|
+
// Array Types
|
|
107
|
+
'Array': 2277,
|
|
108
|
+
// JSON-like Types
|
|
109
|
+
'JSON': 3802,
|
|
110
|
+
'Nested': 3802,
|
|
111
|
+
// Binary Types
|
|
112
|
+
'IPv4': 1043,
|
|
113
|
+
'IPv6': 1043,
|
|
114
|
+
// Enum Types
|
|
115
|
+
'Enum8': 1043,
|
|
116
|
+
'Enum16': 1043,
|
|
117
|
+
// Geospatial-like Types
|
|
118
|
+
'Point': 25,
|
|
119
|
+
'Ring': 25,
|
|
120
|
+
'Polygon': 25,
|
|
121
|
+
// Specialized Types
|
|
122
|
+
'Nothing': 25,
|
|
123
|
+
'Interval': 1186,
|
|
124
|
+
};
|
|
125
|
+
function parseClickHouseType(type) {
|
|
126
|
+
// Remove whitespace and handle common variations
|
|
127
|
+
const normalizedType = type.trim().replace(/\s+/g, ' ');
|
|
128
|
+
// Handle Nullable types
|
|
129
|
+
if (normalizedType.startsWith('Nullable(')) {
|
|
130
|
+
const innerType = normalizedType.slice(9, -1);
|
|
131
|
+
return parseClickHouseType(innerType);
|
|
132
|
+
}
|
|
133
|
+
// Handle Array types
|
|
134
|
+
if (normalizedType.startsWith('Array(')) {
|
|
135
|
+
return CLICKHOUSE_PG_TYPE_MAP['Array'];
|
|
136
|
+
}
|
|
137
|
+
// Handle Enum types
|
|
138
|
+
if (normalizedType.startsWith('Enum8(')) {
|
|
139
|
+
return CLICKHOUSE_PG_TYPE_MAP['Enum8'];
|
|
140
|
+
}
|
|
141
|
+
if (normalizedType.startsWith('Enum16(')) {
|
|
142
|
+
return CLICKHOUSE_PG_TYPE_MAP['Enum16'];
|
|
143
|
+
}
|
|
144
|
+
// Handle DateTime with timezone
|
|
145
|
+
if (normalizedType.startsWith('DateTime(')) {
|
|
146
|
+
return CLICKHOUSE_PG_TYPE_MAP['DateTime'];
|
|
147
|
+
}
|
|
148
|
+
// Handle FixedString
|
|
149
|
+
if (normalizedType.startsWith('FixedString(')) {
|
|
150
|
+
return CLICKHOUSE_PG_TYPE_MAP['FixedString'];
|
|
151
|
+
}
|
|
152
|
+
// Handle LowCardinality
|
|
153
|
+
if (normalizedType.startsWith('LowCardinality(')) {
|
|
154
|
+
const innerType = normalizedType.slice(15, -1);
|
|
155
|
+
return parseClickHouseType(innerType);
|
|
156
|
+
}
|
|
157
|
+
// Direct lookup (case-insensitive)
|
|
158
|
+
const lookupType = Object.keys(CLICKHOUSE_PG_TYPE_MAP).find(key => key.toLowerCase() === normalizedType.toLowerCase());
|
|
159
|
+
if (lookupType) {
|
|
160
|
+
return CLICKHOUSE_PG_TYPE_MAP[lookupType];
|
|
161
|
+
}
|
|
162
|
+
console.warn(`Unknown ClickHouse type: ${type}. Defaulting to VARCHAR.`);
|
|
163
|
+
return 1043; // Default to Varchar
|
|
164
|
+
}
|
|
165
|
+
export function connectToClickHouse(config) {
|
|
166
|
+
const client = createClient(config);
|
|
167
|
+
return client;
|
|
168
|
+
}
|
|
169
|
+
export function disconnectFromClickHouse(client) {
|
|
170
|
+
client.close();
|
|
171
|
+
}
|
|
172
|
+
export function runQueryClickHouse(sql, client) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
var _a;
|
|
175
|
+
const results = yield client.query({
|
|
176
|
+
query: sql,
|
|
177
|
+
format: "JSON",
|
|
178
|
+
});
|
|
179
|
+
const data = yield results.json();
|
|
180
|
+
// Extract column metadata
|
|
181
|
+
const fields = ((_a = data === null || data === void 0 ? void 0 : data.meta) === null || _a === void 0 ? void 0 : _a.map((field) => ({
|
|
182
|
+
name: field.name,
|
|
183
|
+
dataTypeID: parseClickHouseType(field.type),
|
|
184
|
+
}))) || [];
|
|
185
|
+
return {
|
|
186
|
+
fields, // Column metadata
|
|
187
|
+
rows: data.data, // Query result rows
|
|
188
|
+
};
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
export function getSchemasClickHouse(client) {
|
|
192
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
193
|
+
const sql = `SELECT DISTINCT database AS schema_name
|
|
194
|
+
FROM system.tables
|
|
195
|
+
WHERE LOWER(database) NOT IN ('system', 'information_schema')`;
|
|
196
|
+
const results = yield runQueryClickHouse(sql, client);
|
|
197
|
+
return results.rows.map((row) => row.schema_name);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
export function getTablesBySchemaClickHouse(client, schemaNames) {
|
|
201
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
202
|
+
const allTables = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
const sql = `SELECT name as table_name, database as table_schema
|
|
204
|
+
FROM system.tables
|
|
205
|
+
WHERE database = '${schema}'`;
|
|
206
|
+
const results = yield runQueryClickHouse(sql, client);
|
|
207
|
+
return results.rows.map((row) => ({
|
|
208
|
+
tableName: row.table_name,
|
|
209
|
+
schemaName: row.table_schema
|
|
210
|
+
}));
|
|
211
|
+
})));
|
|
212
|
+
return allTables.flat();
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
export function getColumnsByTableClickHouse(client, schemaName, tableName) {
|
|
216
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
217
|
+
const sql = `SELECT name as column_name
|
|
218
|
+
FROM system.columns
|
|
219
|
+
WHERE database = '${schemaName}' AND table = '${tableName}'`;
|
|
220
|
+
const results = yield runQueryClickHouse(sql, client);
|
|
221
|
+
return results.rows.map((row) => row.column_name);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
export function getForeignKeysClickHouse(client, schemaName, tableName, primaryKey) {
|
|
225
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
226
|
+
const depluralizedTableName = depluralize(tableName);
|
|
227
|
+
let sql = `SELECT column_name FROM information_schema.columns
|
|
228
|
+
WHERE table_schema = '${schemaName}'
|
|
229
|
+
and table_name != '${tableName}'
|
|
230
|
+
and (column_name = '${primaryKey}'
|
|
231
|
+
or column_name = '${depluralizedTableName}_${primaryKey}'
|
|
232
|
+
or column_name = '${depluralizedTableName}${capitalize(primaryKey)}')`;
|
|
233
|
+
const results = yield runQueryClickHouse(sql, client);
|
|
234
|
+
let foreignKeysString = results.rows.map((key) => {
|
|
235
|
+
return key.column_name;
|
|
236
|
+
});
|
|
237
|
+
foreignKeysString = foreignKeysString.filter((key) => key !== "id" && key !== "_id_");
|
|
238
|
+
foreignKeysString = [...new Set(foreignKeysString)];
|
|
239
|
+
if (foreignKeysString.length === 0) {
|
|
240
|
+
sql = `SELECT column_name FROM information_schema.columns
|
|
241
|
+
WHERE table_schema = '${schemaName}'
|
|
242
|
+
and table_name != '${tableName}'
|
|
243
|
+
and (column_name like '${tableName}%'
|
|
244
|
+
or column_name like '%\\_id'
|
|
245
|
+
or column_name like '%Id'
|
|
246
|
+
or column_name like '%\\_${primaryKey}'
|
|
247
|
+
or column_name like '%${capitalize(primaryKey)}')`;
|
|
248
|
+
const results = yield runQueryClickHouse(sql, client);
|
|
249
|
+
foreignKeysString = results.rows.map((key) => {
|
|
250
|
+
return key.column_name;
|
|
251
|
+
});
|
|
252
|
+
foreignKeysString = [...new Set(foreignKeysString)];
|
|
253
|
+
}
|
|
254
|
+
return foreignKeysString;
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
export function getSchemaColumnInfoClickHouse(client, schemaName, tableNames) {
|
|
258
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
259
|
+
const allColumns = yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
|
|
260
|
+
const query = `
|
|
261
|
+
SELECT
|
|
262
|
+
name as "columnName",
|
|
263
|
+
type as "fieldType"
|
|
264
|
+
FROM system.columns
|
|
265
|
+
WHERE database = '${tableName.schemaName}'
|
|
266
|
+
AND table = '${tableName.tableName}'
|
|
267
|
+
`;
|
|
268
|
+
const results = yield runQueryClickHouse(query, client);
|
|
269
|
+
return {
|
|
270
|
+
tableName: `${tableName.schemaName}.${tableName.tableName}`,
|
|
271
|
+
displayName: `${tableName.schemaName}.${tableName.tableName}`,
|
|
272
|
+
columns: results.rows.map((row) => {
|
|
273
|
+
const typeOid = parseClickHouseType(row.fieldType); // Default to text/varchar
|
|
274
|
+
return {
|
|
275
|
+
columnName: row.columnName,
|
|
276
|
+
displayName: row.columnName,
|
|
277
|
+
dataTypeID: typeOid,
|
|
278
|
+
fieldType: row.fieldType,
|
|
279
|
+
};
|
|
280
|
+
}),
|
|
281
|
+
};
|
|
282
|
+
})));
|
|
283
|
+
return allColumns;
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
export function formatClickHouseConfig(connectionString) {
|
|
287
|
+
const parsed = new URL(connectionString);
|
|
288
|
+
return {
|
|
289
|
+
url: `${parsed.protocol}//${parsed.hostname}:${parsed.port}`, // Base URL without credentials
|
|
290
|
+
username: parsed.username || 'default', // Default to 'default' if not provided
|
|
291
|
+
password: parsed.password || '', // Default to empty password if not provided
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=ClickHouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClickHouse.js","sourceRoot":"","sources":["../../../src/db/ClickHouse.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,13 @@ import { Pool } from "pg";
|
|
|
2
2
|
import snowflake from "snowflake-sdk";
|
|
3
3
|
import { Pool as MysqlPool } from "mysql2";
|
|
4
4
|
import { BigQuery } from "@google-cloud/bigquery";
|
|
5
|
+
import { ClickHouseClient } from "@clickhouse/client";
|
|
5
6
|
import { PostgresConnectionConfig } from "./Postgres";
|
|
6
7
|
import { SnowflakeConnectionConfig } from "./Snowflake";
|
|
7
8
|
import { BigQueryConfig } from "./BigQuery";
|
|
8
9
|
import { MysqlConnectionConfig } from "./Mysql";
|
|
9
|
-
|
|
10
|
+
import { ClickHouseConnectionConfig } from "./ClickHouse";
|
|
11
|
+
export type DatabaseConnection = Pool | snowflake.Connection | BigQuery | MysqlPool | ClickHouseClient;
|
|
10
12
|
export interface QuillQueryResults {
|
|
11
13
|
fields: {
|
|
12
14
|
name: string;
|
|
@@ -16,20 +18,20 @@ export interface QuillQueryResults {
|
|
|
16
18
|
[fieldName: string]: any;
|
|
17
19
|
}[];
|
|
18
20
|
}
|
|
19
|
-
export declare function getDatabaseCredentials(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connectionString: string): PostgresConnectionConfig | SnowflakeConnectionConfig | BigQueryConfig | MysqlConnectionConfig;
|
|
20
|
-
export declare function connectToDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", config: PostgresConnectionConfig | SnowflakeConnectionConfig | BigQueryConfig | MysqlConnectionConfig): DatabaseConnection;
|
|
21
|
-
export declare function withConnection<T>(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connectionString: string, callback: (connection: DatabaseConnection) => T): Promise<T>;
|
|
22
|
-
export declare function runQueryByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connection: DatabaseConnection, sql: string): Promise<QuillQueryResults> | undefined;
|
|
23
|
-
export declare function connectAndRunQuery(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connectionString: string, sql: string): Promise<QuillQueryResults | undefined>;
|
|
24
|
-
export declare function disconnectFromDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", database: DatabaseConnection): void | Promise<void>;
|
|
25
|
-
export declare function getSchemasByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connection: DatabaseConnection): Promise<string[] | undefined>;
|
|
26
|
-
export declare function getTablesBySchemaByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connection: DatabaseConnection, schemaName: string | string[]): Promise<string[] | {
|
|
21
|
+
export declare function getDatabaseCredentials(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connectionString: string): PostgresConnectionConfig | SnowflakeConnectionConfig | BigQueryConfig | MysqlConnectionConfig | ClickHouseConnectionConfig;
|
|
22
|
+
export declare function connectToDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", config: PostgresConnectionConfig | SnowflakeConnectionConfig | BigQueryConfig | MysqlConnectionConfig | ClickHouseConnectionConfig): DatabaseConnection;
|
|
23
|
+
export declare function withConnection<T>(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connectionString: string, callback: (connection: DatabaseConnection) => T): Promise<T>;
|
|
24
|
+
export declare function runQueryByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connection: DatabaseConnection, sql: string): Promise<QuillQueryResults> | undefined;
|
|
25
|
+
export declare function connectAndRunQuery(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connectionString: string, sql: string): Promise<QuillQueryResults | undefined>;
|
|
26
|
+
export declare function disconnectFromDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", database: DatabaseConnection): void | Promise<void>;
|
|
27
|
+
export declare function getSchemasByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connection: DatabaseConnection): Promise<string[] | undefined>;
|
|
28
|
+
export declare function getTablesBySchemaByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connection: DatabaseConnection, schemaName: string | string[]): Promise<string[] | {
|
|
27
29
|
tableName: string;
|
|
28
30
|
schemaName: string;
|
|
29
31
|
}[] | undefined>;
|
|
30
|
-
export declare function getColumnsByTableByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connection: DatabaseConnection, schemaName: string, tableName: string): Promise<string[] | undefined>;
|
|
31
|
-
export declare function getForeignKeysByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connection: DatabaseConnection, schemaName: string, tableName: string, primaryKey: string): Promise<string[] | undefined>;
|
|
32
|
-
export declare function getColumnInfoBySchemaByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql", connection: DatabaseConnection, schemaName: string, tables: string[] | {
|
|
32
|
+
export declare function getColumnsByTableByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connection: DatabaseConnection, schemaName: string, tableName: string): Promise<string[] | undefined>;
|
|
33
|
+
export declare function getForeignKeysByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connection: DatabaseConnection, schemaName: string, tableName: string, primaryKey: string): Promise<string[] | undefined>;
|
|
34
|
+
export declare function getColumnInfoBySchemaByDatabase(databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql" | "clickhouse", connection: DatabaseConnection, schemaName: string, tables: string[] | {
|
|
33
35
|
tableName: string;
|
|
34
36
|
schemaName: string;
|
|
35
37
|
}[]): Promise<{
|
|
@@ -11,6 +11,7 @@ import { connectToPostgres, disconnectFromPostgres, formatPostgresConfig, getTab
|
|
|
11
11
|
import { connectToSnowflake, disconnectFromSnowflake, formatSnowflakeConfig, getTablesBySchemaSnowflake, getColumnsByTableSnowflake, runQuerySnowflake, getForeignKeysSnowflake, getSchemaColumnInfoSnowflake, getSchemasSnowflake, } from "./Snowflake";
|
|
12
12
|
import { formatBigQueryConfig, connectToBigQuery, runQueryBigQuery, getTablesBySchemaBigQuery, getColumnsByTableBigQuery, getForeignKeysBigQuery, getSchemaColumnInfoBigQuery, getSchemaBigQuery, } from "./BigQuery";
|
|
13
13
|
import { connectToMysql, disconnectFromMysql, formatMysqlConfig, runQueryMysql, getTablesBySchemaMysql, getColumnsByTableMysql, getForeignKeysMysql, getSchemaColumnInfoMysql, getSchemasMysql, } from "./Mysql";
|
|
14
|
+
import { connectToClickHouse, disconnectFromClickHouse, formatClickHouseConfig, getColumnsByTableClickHouse, getForeignKeysClickHouse, getSchemaColumnInfoClickHouse, getSchemasClickHouse, getTablesBySchemaClickHouse, runQueryClickHouse } from "./ClickHouse";
|
|
14
15
|
export function getDatabaseCredentials(databaseType, connectionString) {
|
|
15
16
|
switch (databaseType.toLowerCase()) {
|
|
16
17
|
case "postgres":
|
|
@@ -23,6 +24,8 @@ export function getDatabaseCredentials(databaseType, connectionString) {
|
|
|
23
24
|
return formatBigQueryConfig(connectionString);
|
|
24
25
|
case "mysql":
|
|
25
26
|
return formatMysqlConfig(connectionString);
|
|
27
|
+
case "clickhouse":
|
|
28
|
+
return formatClickHouseConfig(connectionString);
|
|
26
29
|
default:
|
|
27
30
|
throw new Error("Invalid database type");
|
|
28
31
|
}
|
|
@@ -39,6 +42,8 @@ export function connectToDatabase(databaseType, config) {
|
|
|
39
42
|
return connectToBigQuery(config);
|
|
40
43
|
case "mysql":
|
|
41
44
|
return connectToMysql(config);
|
|
45
|
+
case "clickhouse":
|
|
46
|
+
return connectToClickHouse(config);
|
|
42
47
|
default:
|
|
43
48
|
return connectToPostgres(config);
|
|
44
49
|
}
|
|
@@ -70,6 +75,8 @@ export function runQueryByDatabase(databaseType, connection, sql) {
|
|
|
70
75
|
return runQueryBigQuery(sql, connection);
|
|
71
76
|
case "mysql":
|
|
72
77
|
return runQueryMysql(sql, connection);
|
|
78
|
+
case "clickhouse":
|
|
79
|
+
return runQueryClickHouse(sql, connection);
|
|
73
80
|
default:
|
|
74
81
|
return undefined;
|
|
75
82
|
}
|
|
@@ -91,6 +98,8 @@ export function disconnectFromDatabase(databaseType, database) {
|
|
|
91
98
|
return; // BigQuery does not need to be disconnected
|
|
92
99
|
case "mysql":
|
|
93
100
|
return disconnectFromMysql(database);
|
|
101
|
+
case "clickhouse":
|
|
102
|
+
return disconnectFromClickHouse(database);
|
|
94
103
|
default:
|
|
95
104
|
return undefined;
|
|
96
105
|
}
|
|
@@ -108,6 +117,8 @@ export function getSchemasByDatabase(databaseType, connection) {
|
|
|
108
117
|
return getSchemaBigQuery(connection);
|
|
109
118
|
case "mysql":
|
|
110
119
|
return getSchemasMysql(connection);
|
|
120
|
+
case "clickhouse":
|
|
121
|
+
return getSchemasClickHouse(connection);
|
|
111
122
|
default:
|
|
112
123
|
return undefined;
|
|
113
124
|
}
|
|
@@ -127,6 +138,8 @@ export function getTablesBySchemaByDatabase(databaseType, connection, schemaName
|
|
|
127
138
|
return getTablesBySchemaBigQuery(connection, schemaName);
|
|
128
139
|
case "mysql":
|
|
129
140
|
return getTablesBySchemaMysql(connection, schemaName);
|
|
141
|
+
case "clickhouse":
|
|
142
|
+
return getTablesBySchemaClickHouse(connection, schemaName);
|
|
130
143
|
default:
|
|
131
144
|
return undefined;
|
|
132
145
|
}
|
|
@@ -146,6 +159,8 @@ export function getColumnsByTableByDatabase(databaseType, connection, schemaName
|
|
|
146
159
|
return getColumnsByTableBigQuery(connection, schemaName, tableName);
|
|
147
160
|
case "mysql":
|
|
148
161
|
return getColumnsByTableMysql(connection, schemaName, tableName);
|
|
162
|
+
case "clickhouse":
|
|
163
|
+
return getColumnsByTableClickHouse(connection, schemaName, tableName);
|
|
149
164
|
default:
|
|
150
165
|
return undefined;
|
|
151
166
|
}
|
|
@@ -164,6 +179,8 @@ export function getForeignKeysByDatabase(databaseType, connection, schemaName, t
|
|
|
164
179
|
return getForeignKeysBigQuery(connection, schemaName, tableName, primaryKey);
|
|
165
180
|
case "mysql":
|
|
166
181
|
return getForeignKeysMysql(connection, schemaName, tableName, primaryKey);
|
|
182
|
+
case "clickhouse":
|
|
183
|
+
return getForeignKeysClickHouse(connection, schemaName, tableName, primaryKey);
|
|
167
184
|
default:
|
|
168
185
|
return undefined;
|
|
169
186
|
}
|
|
@@ -181,6 +198,8 @@ export function getColumnInfoBySchemaByDatabase(databaseType, connection, schema
|
|
|
181
198
|
return getSchemaColumnInfoBigQuery(connection, schemaName, tables);
|
|
182
199
|
case "mysql":
|
|
183
200
|
return getSchemaColumnInfoMysql(connection, schemaName, tables);
|
|
201
|
+
case "clickhouse":
|
|
202
|
+
return getSchemaColumnInfoClickHouse(connection, schemaName, tables);
|
|
184
203
|
default:
|
|
185
204
|
return undefined;
|
|
186
205
|
}
|