@cubejs-backend/query-orchestrator 0.30.57 → 0.30.69
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/CHANGELOG.md +38 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/orchestrator/DriverFactory.d.ts +1 -1
- package/dist/src/orchestrator/DriverFactory.d.ts.map +1 -1
- package/dist/src/orchestrator/PreAggregations.d.ts +2 -4
- package/dist/src/orchestrator/PreAggregations.d.ts.map +1 -1
- package/dist/src/orchestrator/PreAggregations.js +9 -6
- package/dist/src/orchestrator/PreAggregations.js.map +1 -1
- package/dist/src/orchestrator/QueryCache.d.ts +1 -1
- package/dist/src/orchestrator/QueryCache.d.ts.map +1 -1
- package/dist/src/orchestrator/QueryCache.js.map +1 -1
- package/package.json +4 -3
- package/dist/src/driver/BaseDriver.d.ts +0 -91
- package/dist/src/driver/BaseDriver.d.ts.map +0 -1
- package/dist/src/driver/BaseDriver.js +0 -340
- package/dist/src/driver/BaseDriver.js.map +0 -1
- package/dist/src/driver/driver.interface.d.ts +0 -114
- package/dist/src/driver/driver.interface.d.ts.map +0 -1
- package/dist/src/driver/driver.interface.js +0 -3
- package/dist/src/driver/driver.interface.js.map +0 -1
- package/dist/src/driver/index.d.ts +0 -4
- package/dist/src/driver/index.d.ts.map +0 -1
- package/dist/src/driver/index.js +0 -16
- package/dist/src/driver/index.js.map +0 -1
- package/dist/src/driver/utils.d.ts +0 -11
- package/dist/src/driver/utils.d.ts.map +0 -1
- package/dist/src/driver/utils.js +0 -31
- package/dist/src/driver/utils.js.map +0 -1
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
export class BaseDriver {
|
|
2
|
-
/**
|
|
3
|
-
* Workaround for Type 'BaseDriver' has no construct signatures.
|
|
4
|
-
*
|
|
5
|
-
* @param {Object} [options]
|
|
6
|
-
*/
|
|
7
|
-
constructor(_options?: {});
|
|
8
|
-
informationSchemaQuery(): string;
|
|
9
|
-
getSslOptions(): {};
|
|
10
|
-
/**
|
|
11
|
-
* @abstract
|
|
12
|
-
*/
|
|
13
|
-
testConnection(): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* @abstract
|
|
16
|
-
* @param {string} query
|
|
17
|
-
* @param {Array<unknown>} values
|
|
18
|
-
* @param {any} [options]
|
|
19
|
-
* @return {Promise<Array<any>>}
|
|
20
|
-
*/
|
|
21
|
-
query(_query: any, _values: any, _options?: {}): Promise<Array<any>>;
|
|
22
|
-
/**
|
|
23
|
-
* @public
|
|
24
|
-
* @return {Promise<any>}
|
|
25
|
-
*/
|
|
26
|
-
public downloadQueryResults(query: any, values: any, _options: any): Promise<any>;
|
|
27
|
-
readOnly(): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* @protected
|
|
30
|
-
*/
|
|
31
|
-
protected informationColumnsSchemaReducer(result: any, i: any): {};
|
|
32
|
-
tablesSchema(): Promise<any>;
|
|
33
|
-
/**
|
|
34
|
-
* @param {string} schemaName
|
|
35
|
-
* @return {Promise<Array<unknown>>}
|
|
36
|
-
*/
|
|
37
|
-
createSchemaIfNotExists(schemaName: string): Promise<Array<unknown>>;
|
|
38
|
-
getTablesQuery(schemaName: any): Promise<any[]>;
|
|
39
|
-
loadPreAggregationIntoTable(preAggregationTableName: any, loadSql: any, params: any, options: any): Promise<any[]>;
|
|
40
|
-
/**
|
|
41
|
-
* @param {string} tableName
|
|
42
|
-
* @param {unknown} [options]
|
|
43
|
-
* @return {Promise<unknown>}
|
|
44
|
-
*/
|
|
45
|
-
dropTable(tableName: string, options?: unknown): Promise<unknown>;
|
|
46
|
-
/**
|
|
47
|
-
* @param {number} paramIndex
|
|
48
|
-
* @return {string}
|
|
49
|
-
*/
|
|
50
|
-
param(_paramIndex: any): string;
|
|
51
|
-
testConnectionTimeout(): number;
|
|
52
|
-
downloadTable(table: any, _options: any): Promise<{
|
|
53
|
-
rows: any[];
|
|
54
|
-
}>;
|
|
55
|
-
uploadTable(table: any, columns: any, tableData: any): Promise<void>;
|
|
56
|
-
uploadTableWithIndexes(table: any, columns: any, tableData: any, indexesSql: any, _uniqueKeyColumns: any, _queryTracingObj: any, _aggregates: any, _createTableIndexes: any): Promise<void>;
|
|
57
|
-
toColumnValue(value: any, _genericType: any): any;
|
|
58
|
-
tableColumnTypes(table: any): Promise<{
|
|
59
|
-
name: any;
|
|
60
|
-
type: string;
|
|
61
|
-
}[]>;
|
|
62
|
-
createTable(quotedTableName: any, columns: any): Promise<any[]>;
|
|
63
|
-
createTableSql(quotedTableName: any, columns: any): string;
|
|
64
|
-
/**
|
|
65
|
-
* @param {string} columnType
|
|
66
|
-
* @return {string}
|
|
67
|
-
*/
|
|
68
|
-
toGenericType(columnType: string): string;
|
|
69
|
-
/**
|
|
70
|
-
* @param {string} columnType
|
|
71
|
-
* @return {string}
|
|
72
|
-
*/
|
|
73
|
-
fromGenericType(columnType: string): string;
|
|
74
|
-
/**
|
|
75
|
-
* @param {string} identifier
|
|
76
|
-
* @return {string}
|
|
77
|
-
*/
|
|
78
|
-
quoteIdentifier(identifier: string): string;
|
|
79
|
-
cancelCombinator(fn: any): any;
|
|
80
|
-
setLogger(logger: any): void;
|
|
81
|
-
logger: any;
|
|
82
|
-
reportQueryUsage(usage: any, queryOptions: any): void;
|
|
83
|
-
databasePoolError(error: any): void;
|
|
84
|
-
/**
|
|
85
|
-
* @public
|
|
86
|
-
*/
|
|
87
|
-
public release(): Promise<void>;
|
|
88
|
-
capabilities(): {};
|
|
89
|
-
nowTimestamp(): number;
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=BaseDriver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDriver.d.ts","sourceRoot":"","sources":["../../../src/driver/BaseDriver.js"],"names":[],"mappings":"AAwFA;IACE;;;;OAIG;IACH,2BAEC;IAED,iCASC;IAED,oBA+DC;IAED;;OAEG;IACH,gCAEC;IAED;;;;;;OAMG;IACH,iDAFY,QAAQ,MAAM,GAAG,CAAC,CAAC,CAI9B;IAED;;;OAGG;IACH,qEAFY,QAAQ,GAAG,CAAC,CAwBvB;IAED,oBAEC;IAED;;OAEG;IACH,mEAYC;IAED,6BAIC;IAED;;;OAGG;IACH,oCAHW,MAAM,GACL,QAAQ,MAAM,OAAO,CAAC,CAAC,CAYlC;IAED,gDAKC;IAED,mHAEC;IAED;;;;OAIG;IACH,qBAJW,MAAM,YACN,OAAO,GACN,QAAQ,OAAO,CAAC,CAI3B;IAED;;;OAGG;IACH,yBAFY,MAAM,CAIjB;IAED,gCAEC;IAED;;OAEC;IAED,qEAEC;IAED,4LAuBC;IAED,kDAEC;IAED;;;SAcC;IAED,gEAMC;IAED,2DAGC;IAED;;;OAGG;IACH,0BAHW,MAAM,GACL,MAAM,CAIjB;IAED;;;OAGG;IACH,4BAHW,MAAM,GACL,MAAM,CAIjB;IAED;;;OAGG;IACH,4BAHW,MAAM,GACL,MAAM,CAIjB;IAED,+BAEC;IAED,6BAEC;IADC,YAAoB;IAGtB,sDAOC;IAED,oCAMC;IAED;;OAEG;IACH,gCAEC;IAED,mBAEC;IAED,uBAEC;CACF"}
|
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.BaseDriver = void 0;
|
|
7
|
-
const ramda_1 = require("ramda");
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const shared_1 = require("@cubejs-backend/shared");
|
|
10
|
-
const utils_1 = require("./utils");
|
|
11
|
-
const sortByKeys = (unordered) => {
|
|
12
|
-
const ordered = {};
|
|
13
|
-
Object.keys(unordered).sort().forEach((key) => {
|
|
14
|
-
ordered[key] = unordered[key];
|
|
15
|
-
});
|
|
16
|
-
return ordered;
|
|
17
|
-
};
|
|
18
|
-
const DbTypeToGenericType = {
|
|
19
|
-
'timestamp without time zone': 'timestamp',
|
|
20
|
-
'character varying': 'text',
|
|
21
|
-
varchar: 'text',
|
|
22
|
-
integer: 'int',
|
|
23
|
-
nvarchar: 'text',
|
|
24
|
-
text: 'text',
|
|
25
|
-
string: 'text',
|
|
26
|
-
boolean: 'boolean',
|
|
27
|
-
bigint: 'bigint',
|
|
28
|
-
time: 'string',
|
|
29
|
-
datetime: 'timestamp',
|
|
30
|
-
date: 'date',
|
|
31
|
-
enum: 'text',
|
|
32
|
-
'double precision': 'double',
|
|
33
|
-
// PostgreSQL aliases, but maybe another databases support it
|
|
34
|
-
int8: 'bigint',
|
|
35
|
-
int4: 'int',
|
|
36
|
-
int2: 'int',
|
|
37
|
-
bool: 'boolean',
|
|
38
|
-
float4: 'float',
|
|
39
|
-
float8: 'double',
|
|
40
|
-
};
|
|
41
|
-
const DB_BIG_INT_MAX = BigInt('9223372036854775807');
|
|
42
|
-
const DB_BIG_INT_MIN = BigInt('-9223372036854775808');
|
|
43
|
-
const DB_INT_MAX = 2147483647;
|
|
44
|
-
const DB_INT_MIN = -2147483648;
|
|
45
|
-
// Order of keys is important here: from more specific to less specific
|
|
46
|
-
const DbTypeValueMatcher = {
|
|
47
|
-
timestamp: (v) => v instanceof Date || v.toString().match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d/),
|
|
48
|
-
date: (v) => v instanceof Date || v.toString().match(/^\d\d\d\d-\d\d-\d\d$/),
|
|
49
|
-
int: (v) => {
|
|
50
|
-
if (Number.isInteger(v)) {
|
|
51
|
-
return (v <= DB_INT_MAX && v >= DB_INT_MIN);
|
|
52
|
-
}
|
|
53
|
-
if (v.toString().match(/^[-]?\d+$/)) {
|
|
54
|
-
const value = BigInt(v.toString());
|
|
55
|
-
return value <= DB_INT_MAX && value >= DB_INT_MIN;
|
|
56
|
-
}
|
|
57
|
-
return false;
|
|
58
|
-
},
|
|
59
|
-
bigint: (v) => {
|
|
60
|
-
if (Number.isInteger(v)) {
|
|
61
|
-
return (v <= DB_BIG_INT_MAX && v >= DB_BIG_INT_MIN);
|
|
62
|
-
}
|
|
63
|
-
if (v.toString().match(/^[-]?\d+$/)) {
|
|
64
|
-
const value = BigInt(v.toString());
|
|
65
|
-
return value <= DB_BIG_INT_MAX && value >= DB_BIG_INT_MIN;
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
68
|
-
},
|
|
69
|
-
decimal: (v) => {
|
|
70
|
-
if (v instanceof Number) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
return v.toString().match(/^[-]?\d+(\.\d+)?$/);
|
|
74
|
-
},
|
|
75
|
-
boolean: (v) => v === false || v === true || v.toString().toLowerCase() === 'true' || v.toString().toLowerCase() === 'false',
|
|
76
|
-
string: (v) => v.length < 256,
|
|
77
|
-
text: () => true
|
|
78
|
-
};
|
|
79
|
-
class BaseDriver {
|
|
80
|
-
/**
|
|
81
|
-
* Workaround for Type 'BaseDriver' has no construct signatures.
|
|
82
|
-
*
|
|
83
|
-
* @param {Object} [options]
|
|
84
|
-
*/
|
|
85
|
-
constructor(_options = {}) {
|
|
86
|
-
//
|
|
87
|
-
}
|
|
88
|
-
informationSchemaQuery() {
|
|
89
|
-
return `
|
|
90
|
-
SELECT columns.column_name as ${this.quoteIdentifier('column_name')},
|
|
91
|
-
columns.table_name as ${this.quoteIdentifier('table_name')},
|
|
92
|
-
columns.table_schema as ${this.quoteIdentifier('table_schema')},
|
|
93
|
-
columns.data_type as ${this.quoteIdentifier('data_type')}
|
|
94
|
-
FROM information_schema.columns
|
|
95
|
-
WHERE columns.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys', 'INFORMATION_SCHEMA')
|
|
96
|
-
`;
|
|
97
|
-
}
|
|
98
|
-
getSslOptions() {
|
|
99
|
-
let ssl;
|
|
100
|
-
const sslOptions = [
|
|
101
|
-
{ name: 'ca', canBeFile: true, envKey: 'CUBEJS_DB_SSL_CA', validate: shared_1.isSslCert },
|
|
102
|
-
{ name: 'cert', canBeFile: true, envKey: 'CUBEJS_DB_SSL_CERT', validate: shared_1.isSslCert },
|
|
103
|
-
{ name: 'key', canBeFile: true, envKey: 'CUBEJS_DB_SSL_KEY', validate: shared_1.isSslKey },
|
|
104
|
-
{ name: 'ciphers', envKey: 'CUBEJS_DB_SSL_CIPHERS' },
|
|
105
|
-
{ name: 'passphrase', envKey: 'CUBEJS_DB_SSL_PASSPHRASE' },
|
|
106
|
-
{ name: 'servername', envKey: 'CUBEJS_DB_SSL_SERVERNAME' },
|
|
107
|
-
];
|
|
108
|
-
if (shared_1.getEnv('dbSsl') ||
|
|
109
|
-
shared_1.getEnv('dbSslRejectUnauthorized') ||
|
|
110
|
-
sslOptions.find(o => !!process.env[o.value])) {
|
|
111
|
-
ssl = sslOptions.reduce((agg, { name, envKey, canBeFile, validate }) => {
|
|
112
|
-
if (process.env[envKey]) {
|
|
113
|
-
const value = process.env[envKey];
|
|
114
|
-
if (validate(value)) {
|
|
115
|
-
return {
|
|
116
|
-
...agg,
|
|
117
|
-
...{ [name]: value }
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
if (canBeFile && shared_1.isFilePath(value)) {
|
|
121
|
-
if (!fs_1.default.existsSync(value)) {
|
|
122
|
-
throw new Error(`Unable to find ${name} from path: "${value}"`);
|
|
123
|
-
}
|
|
124
|
-
const file = fs_1.default.readFileSync(value, 'utf8');
|
|
125
|
-
if (validate(file)) {
|
|
126
|
-
return {
|
|
127
|
-
...agg,
|
|
128
|
-
...{ [name]: file }
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
throw new Error(`Content of the file from ${envKey} is not a valid SSL ${name}.`);
|
|
132
|
-
}
|
|
133
|
-
throw new Error(`${envKey} is not a valid SSL ${name}. If it's a path, please specify it correctly`);
|
|
134
|
-
}
|
|
135
|
-
return agg;
|
|
136
|
-
}, {});
|
|
137
|
-
ssl.rejectUnauthorized = shared_1.getEnv('dbSslRejectUnauthorized');
|
|
138
|
-
}
|
|
139
|
-
return ssl;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* @abstract
|
|
143
|
-
*/
|
|
144
|
-
async testConnection() {
|
|
145
|
-
throw new Error('Not implemented');
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* @abstract
|
|
149
|
-
* @param {string} query
|
|
150
|
-
* @param {Array<unknown>} values
|
|
151
|
-
* @param {any} [options]
|
|
152
|
-
* @return {Promise<Array<any>>}
|
|
153
|
-
*/
|
|
154
|
-
async query(_query, _values, _options = {}) {
|
|
155
|
-
throw new Error('Not implemented');
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* @public
|
|
159
|
-
* @return {Promise<any>}
|
|
160
|
-
*/
|
|
161
|
-
async downloadQueryResults(query, values, _options) {
|
|
162
|
-
const rows = await this.query(query, values);
|
|
163
|
-
if (rows.length === 0) {
|
|
164
|
-
throw new Error('Unable to detect column types for pre-aggregation on empty values in readOnly mode.');
|
|
165
|
-
}
|
|
166
|
-
const fields = Object.keys(rows[0]);
|
|
167
|
-
const types = fields.map(field => ({
|
|
168
|
-
name: field,
|
|
169
|
-
type: Object.keys(DbTypeValueMatcher).find(type => !rows.filter(row => field in row).find(row => !DbTypeValueMatcher[type](row[field])) &&
|
|
170
|
-
rows.find(row => field in row)) || 'text'
|
|
171
|
-
}));
|
|
172
|
-
return {
|
|
173
|
-
rows,
|
|
174
|
-
types,
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
readOnly() {
|
|
178
|
-
return false;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* @protected
|
|
182
|
-
*/
|
|
183
|
-
informationColumnsSchemaReducer(result, i) {
|
|
184
|
-
let schema = (result[i.table_schema] || {});
|
|
185
|
-
const tables = (schema[i.table_name] || []);
|
|
186
|
-
tables.push({ name: i.column_name, type: i.data_type, attributes: i.key_type ? ['primaryKey'] : [] });
|
|
187
|
-
tables.sort();
|
|
188
|
-
schema[i.table_name] = tables;
|
|
189
|
-
schema = sortByKeys(schema);
|
|
190
|
-
result[i.table_schema] = schema;
|
|
191
|
-
return sortByKeys(result);
|
|
192
|
-
}
|
|
193
|
-
tablesSchema() {
|
|
194
|
-
const query = this.informationSchemaQuery();
|
|
195
|
-
return this.query(query).then(data => ramda_1.reduce(this.informationColumnsSchemaReducer, {}, data));
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* @param {string} schemaName
|
|
199
|
-
* @return {Promise<Array<unknown>>}
|
|
200
|
-
*/
|
|
201
|
-
async createSchemaIfNotExists(schemaName) {
|
|
202
|
-
return this.query(`SELECT schema_name FROM information_schema.schemata WHERE schema_name = ${this.param(0)}`, [schemaName]).then((schemas) => {
|
|
203
|
-
if (schemas.length === 0) {
|
|
204
|
-
return this.query(`CREATE SCHEMA IF NOT EXISTS ${schemaName}`);
|
|
205
|
-
}
|
|
206
|
-
return null;
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
getTablesQuery(schemaName) {
|
|
210
|
-
return this.query(`SELECT table_name FROM information_schema.tables WHERE table_schema = ${this.param(0)}`, [schemaName]);
|
|
211
|
-
}
|
|
212
|
-
loadPreAggregationIntoTable(preAggregationTableName, loadSql, params, options) {
|
|
213
|
-
return this.query(loadSql, params, options);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* @param {string} tableName
|
|
217
|
-
* @param {unknown} [options]
|
|
218
|
-
* @return {Promise<unknown>}
|
|
219
|
-
*/
|
|
220
|
-
dropTable(tableName, options) {
|
|
221
|
-
return this.query(`DROP TABLE ${tableName}`, [], options);
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* @param {number} paramIndex
|
|
225
|
-
* @return {string}
|
|
226
|
-
*/
|
|
227
|
-
param(_paramIndex) {
|
|
228
|
-
return '?';
|
|
229
|
-
}
|
|
230
|
-
testConnectionTimeout() {
|
|
231
|
-
return 10000;
|
|
232
|
-
}
|
|
233
|
-
async downloadTable(table, _options) {
|
|
234
|
-
return { rows: await this.query(`SELECT * FROM ${table}`) };
|
|
235
|
-
}
|
|
236
|
-
async uploadTable(table, columns, tableData) {
|
|
237
|
-
return this.uploadTableWithIndexes(table, columns, tableData, [], null);
|
|
238
|
-
}
|
|
239
|
-
async uploadTableWithIndexes(table, columns, tableData, indexesSql, _uniqueKeyColumns, _queryTracingObj, _aggregates, _createTableIndexes) {
|
|
240
|
-
if (!tableData.rows) {
|
|
241
|
-
throw new Error(`${this.constructor} driver supports only rows upload`);
|
|
242
|
-
}
|
|
243
|
-
await this.createTable(table, columns);
|
|
244
|
-
try {
|
|
245
|
-
for (let i = 0; i < tableData.rows.length; i++) {
|
|
246
|
-
await this.query(`INSERT INTO ${table}
|
|
247
|
-
(${columns.map(c => this.quoteIdentifier(c.name)).join(', ')})
|
|
248
|
-
VALUES (${columns.map((c, paramIndex) => this.param(paramIndex)).join(', ')})`, columns.map(c => this.toColumnValue(tableData.rows[i][c.name], c.type)));
|
|
249
|
-
}
|
|
250
|
-
for (let i = 0; i < indexesSql.length; i++) {
|
|
251
|
-
const [query, params] = indexesSql[i].sql;
|
|
252
|
-
await this.query(query, params);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
catch (e) {
|
|
256
|
-
await this.dropTable(table);
|
|
257
|
-
throw e;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
toColumnValue(value, _genericType) {
|
|
261
|
-
return value;
|
|
262
|
-
}
|
|
263
|
-
async tableColumnTypes(table) {
|
|
264
|
-
const [schema, name] = table.split('.');
|
|
265
|
-
const columns = await this.query(`SELECT columns.column_name as ${this.quoteIdentifier('column_name')},
|
|
266
|
-
columns.table_name as ${this.quoteIdentifier('table_name')},
|
|
267
|
-
columns.table_schema as ${this.quoteIdentifier('table_schema')},
|
|
268
|
-
columns.data_type as ${this.quoteIdentifier('data_type')}
|
|
269
|
-
FROM information_schema.columns
|
|
270
|
-
WHERE table_name = ${this.param(0)} AND table_schema = ${this.param(1)}`, [name, schema]);
|
|
271
|
-
return columns.map(c => ({ name: c.column_name, type: this.toGenericType(c.data_type) }));
|
|
272
|
-
}
|
|
273
|
-
createTable(quotedTableName, columns) {
|
|
274
|
-
const createTableSql = this.createTableSql(quotedTableName, columns);
|
|
275
|
-
return this.query(createTableSql, []).catch(e => {
|
|
276
|
-
e.message = `Error during create table: ${createTableSql}: ${e.message}`;
|
|
277
|
-
throw e;
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
createTableSql(quotedTableName, columns) {
|
|
281
|
-
columns = columns.map(c => `${this.quoteIdentifier(c.name)} ${this.fromGenericType(c.type)}`);
|
|
282
|
-
return `CREATE TABLE ${quotedTableName} (${columns.join(', ')})`;
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* @param {string} columnType
|
|
286
|
-
* @return {string}
|
|
287
|
-
*/
|
|
288
|
-
toGenericType(columnType) {
|
|
289
|
-
return DbTypeToGenericType[columnType.toLowerCase()] || columnType;
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* @param {string} columnType
|
|
293
|
-
* @return {string}
|
|
294
|
-
*/
|
|
295
|
-
fromGenericType(columnType) {
|
|
296
|
-
return columnType;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* @param {string} identifier
|
|
300
|
-
* @return {string}
|
|
301
|
-
*/
|
|
302
|
-
quoteIdentifier(identifier) {
|
|
303
|
-
return `"${identifier}"`;
|
|
304
|
-
}
|
|
305
|
-
cancelCombinator(fn) {
|
|
306
|
-
return utils_1.cancelCombinator(fn);
|
|
307
|
-
}
|
|
308
|
-
setLogger(logger) {
|
|
309
|
-
this.logger = logger;
|
|
310
|
-
}
|
|
311
|
-
reportQueryUsage(usage, queryOptions) {
|
|
312
|
-
if (this.logger) {
|
|
313
|
-
this.logger('SQL Query Usage', {
|
|
314
|
-
...usage,
|
|
315
|
-
...queryOptions
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
databasePoolError(error) {
|
|
320
|
-
if (this.logger) {
|
|
321
|
-
this.logger('Database Pool Error', {
|
|
322
|
-
error: (error.stack || error).toString()
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* @public
|
|
328
|
-
*/
|
|
329
|
-
async release() {
|
|
330
|
-
// override, if it's needed
|
|
331
|
-
}
|
|
332
|
-
capabilities() {
|
|
333
|
-
return {};
|
|
334
|
-
}
|
|
335
|
-
nowTimestamp() {
|
|
336
|
-
return Date.now();
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
exports.BaseDriver = BaseDriver;
|
|
340
|
-
//# sourceMappingURL=BaseDriver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDriver.js","sourceRoot":"","sources":["../../../src/driver/BaseDriver.js"],"names":[],"mappings":"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"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
export declare type GenericDataBaseType = string;
|
|
3
|
-
export interface TableColumn {
|
|
4
|
-
name: string;
|
|
5
|
-
type: GenericDataBaseType;
|
|
6
|
-
attributes?: string[];
|
|
7
|
-
}
|
|
8
|
-
export declare type TableStructure = TableColumn[];
|
|
9
|
-
export declare type SchemaStructure = Record<string, TableStructure>;
|
|
10
|
-
export declare type DatabaseStructure = Record<string, SchemaStructure>;
|
|
11
|
-
export declare type Rows = Record<string, unknown>[];
|
|
12
|
-
export interface InlineTable {
|
|
13
|
-
name: string;
|
|
14
|
-
columns: TableStructure;
|
|
15
|
-
csvRows: string;
|
|
16
|
-
}
|
|
17
|
-
export declare type InlineTables = InlineTable[];
|
|
18
|
-
export interface DownloadTableBase {
|
|
19
|
-
/**
|
|
20
|
-
* Optional function to release stream/cursor/connection
|
|
21
|
-
*/
|
|
22
|
-
release?: () => Promise<void>;
|
|
23
|
-
}
|
|
24
|
-
export interface DownloadTableMemoryData extends DownloadTableBase {
|
|
25
|
-
rows: Rows;
|
|
26
|
-
/**
|
|
27
|
-
* Some drivers know types of response
|
|
28
|
-
*/
|
|
29
|
-
types?: TableStructure;
|
|
30
|
-
}
|
|
31
|
-
export interface DownloadTableCSVData extends DownloadTableBase {
|
|
32
|
-
csvFile: string[];
|
|
33
|
-
/**
|
|
34
|
-
* Some drivers know types of response
|
|
35
|
-
*/
|
|
36
|
-
types?: TableStructure;
|
|
37
|
-
/**
|
|
38
|
-
* Some drivers export csv files with no header row.
|
|
39
|
-
*/
|
|
40
|
-
csvNoHeader?: boolean;
|
|
41
|
-
}
|
|
42
|
-
export interface StreamTableData extends DownloadTableBase {
|
|
43
|
-
rowStream: NodeJS.ReadableStream;
|
|
44
|
-
/**
|
|
45
|
-
* Some drivers know types of response
|
|
46
|
-
*/
|
|
47
|
-
types?: TableStructure;
|
|
48
|
-
}
|
|
49
|
-
export interface StreamingSourceTableData extends DownloadTableBase {
|
|
50
|
-
streamingTable: string;
|
|
51
|
-
streamingSource: {
|
|
52
|
-
name: string;
|
|
53
|
-
type: string;
|
|
54
|
-
credentials: any;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Some drivers know types of response
|
|
58
|
-
*/
|
|
59
|
-
types?: TableStructure;
|
|
60
|
-
}
|
|
61
|
-
export declare type StreamTableDataWithTypes = StreamTableData & {
|
|
62
|
-
/**
|
|
63
|
-
* Some drivers know types of response
|
|
64
|
-
*/
|
|
65
|
-
types: TableStructure;
|
|
66
|
-
};
|
|
67
|
-
export declare type DownloadTableData = DownloadTableMemoryData | DownloadTableCSVData | StreamTableData;
|
|
68
|
-
export interface ExternalDriverCompatibilities {
|
|
69
|
-
csvImport?: true;
|
|
70
|
-
streamImport?: true;
|
|
71
|
-
}
|
|
72
|
-
export declare type StreamOptions = {
|
|
73
|
-
highWaterMark: number;
|
|
74
|
-
};
|
|
75
|
-
export interface DownloadQueryResultsBase {
|
|
76
|
-
types: TableStructure;
|
|
77
|
-
}
|
|
78
|
-
export declare type DownloadQueryResultsOptions = StreamOptions & ExternalDriverCompatibilities;
|
|
79
|
-
export declare type IndexesSQL = {
|
|
80
|
-
sql: [string, unknown[]];
|
|
81
|
-
}[];
|
|
82
|
-
export declare type CreateTableIndex = {
|
|
83
|
-
indexName: string;
|
|
84
|
-
type: string;
|
|
85
|
-
columns: string[];
|
|
86
|
-
};
|
|
87
|
-
export declare type UnloadOptions = {
|
|
88
|
-
maxFileSize: number;
|
|
89
|
-
};
|
|
90
|
-
export declare type QueryOptions = {
|
|
91
|
-
inlineTables?: InlineTables;
|
|
92
|
-
[key: string]: any;
|
|
93
|
-
};
|
|
94
|
-
export declare type DownloadQueryResultsResult = DownloadQueryResultsBase & (DownloadTableMemoryData | DownloadTableCSVData | StreamTableData | StreamingSourceTableData);
|
|
95
|
-
export interface DriverInterface {
|
|
96
|
-
createSchemaIfNotExists(schemaName: string): Promise<any>;
|
|
97
|
-
uploadTableWithIndexes(table: string, columns: TableStructure, tableData: DownloadTableData, indexesSql: IndexesSQL, uniqueKeyColumns: string[], queryTracingObj: any, aggregationsColumns: string[], createTableIndexes: CreateTableIndex[]): Promise<void>;
|
|
98
|
-
loadPreAggregationIntoTable: (preAggregationTableName: string, loadSql: string, params: any, options: any) => Promise<any>;
|
|
99
|
-
query<R = unknown>(query: string, params: unknown[], options?: QueryOptions): Promise<R[]>;
|
|
100
|
-
tableColumnTypes: (table: string) => Promise<TableStructure>;
|
|
101
|
-
getTablesQuery: (schemaName: string) => Promise<({
|
|
102
|
-
table_name?: string;
|
|
103
|
-
TABLE_NAME?: string;
|
|
104
|
-
})[]>;
|
|
105
|
-
dropTable: (tableName: string, options?: QueryOptions) => Promise<unknown>;
|
|
106
|
-
downloadQueryResults: (query: string, values: unknown[], options: DownloadQueryResultsOptions) => Promise<DownloadQueryResultsResult>;
|
|
107
|
-
downloadTable: (table: string, options: ExternalDriverCompatibilities) => Promise<DownloadTableMemoryData | DownloadTableCSVData>;
|
|
108
|
-
stream?: (table: string, values: unknown[], options: StreamOptions) => Promise<StreamTableData>;
|
|
109
|
-
unload?: (table: string, options: UnloadOptions) => Promise<DownloadTableCSVData>;
|
|
110
|
-
isUnloadSupported?: (options: UnloadOptions) => Promise<boolean>;
|
|
111
|
-
nowTimestamp(): number;
|
|
112
|
-
release(): Promise<void>;
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=driver.interface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"driver.interface.d.ts","sourceRoot":"","sources":["../../../src/driver/driver.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"driver.interface.js","sourceRoot":"","sources":["../../../src/driver/driver.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/driver/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC"}
|
package/dist/src/driver/index.js
DELETED
|
@@ -1,16 +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
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./BaseDriver"), exports);
|
|
14
|
-
__exportStar(require("./utils"), exports);
|
|
15
|
-
__exportStar(require("./driver.interface"), exports);
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/driver/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0CAAwB;AACxB,qDAAmC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { MaybeCancelablePromise } from '@cubejs-backend/shared';
|
|
2
|
-
export declare type SaveCancelFn = <T>(promise: MaybeCancelablePromise<T>) => Promise<T>;
|
|
3
|
-
export declare function cancelCombinator(fn: any): any;
|
|
4
|
-
export declare class TableName {
|
|
5
|
-
readonly schema: string;
|
|
6
|
-
readonly name: string;
|
|
7
|
-
constructor(schema: string, name: string);
|
|
8
|
-
static split(tableName: string): TableName;
|
|
9
|
-
join(): string;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/driver/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,oBAAY,YAAY,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjF,wBAAgB,gBAAgB,CAAC,EAAE,KAAA,OAclC;AAED,qBAAa,SAAS;aAEF,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;WAIhB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAK1C,IAAI;CAGZ"}
|
package/dist/src/driver/utils.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TableName = exports.cancelCombinator = void 0;
|
|
4
|
-
function cancelCombinator(fn) {
|
|
5
|
-
const cancelFnArray = [];
|
|
6
|
-
const saveCancelFn = promise => {
|
|
7
|
-
if (promise.cancel) {
|
|
8
|
-
cancelFnArray.push(promise.cancel);
|
|
9
|
-
}
|
|
10
|
-
return promise;
|
|
11
|
-
};
|
|
12
|
-
const promise = fn(saveCancelFn);
|
|
13
|
-
promise.cancel = () => Promise.all(cancelFnArray.map(cancel => cancel()));
|
|
14
|
-
return promise;
|
|
15
|
-
}
|
|
16
|
-
exports.cancelCombinator = cancelCombinator;
|
|
17
|
-
class TableName {
|
|
18
|
-
constructor(schema, name) {
|
|
19
|
-
this.schema = schema;
|
|
20
|
-
this.name = name;
|
|
21
|
-
}
|
|
22
|
-
static split(tableName) {
|
|
23
|
-
const parts = tableName.split('.');
|
|
24
|
-
return new TableName(parts[0], parts.slice(1).join('.'));
|
|
25
|
-
}
|
|
26
|
-
join() {
|
|
27
|
-
return `${this.schema}.${this.name}`;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.TableName = TableName;
|
|
31
|
-
//# sourceMappingURL=utils.js.map
|