@l-v-yonsama/multi-platform-database-drivers 1.0.0 → 1.1.2

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.
Files changed (54) hide show
  1. package/README.md +43 -3
  2. package/built/src/drivers/AwsDriver.d.ts +2 -2
  3. package/built/src/drivers/AwsDriver.js +2 -2
  4. package/built/src/drivers/AwsDriver.js.map +1 -1
  5. package/built/src/drivers/BaseSQLSupportDriver.d.ts +2 -2
  6. package/built/src/drivers/DBDriverResolver.js +4 -0
  7. package/built/src/drivers/DBDriverResolver.js.map +1 -1
  8. package/built/src/drivers/MySQLDriver.d.ts +2 -2
  9. package/built/src/drivers/MySQLDriver.js +6 -5
  10. package/built/src/drivers/MySQLDriver.js.map +1 -1
  11. package/built/src/drivers/OracleDriver.d.ts +54 -0
  12. package/built/src/drivers/OracleDriver.js +566 -0
  13. package/built/src/drivers/OracleDriver.js.map +1 -0
  14. package/built/src/drivers/PostgresDriver.d.ts +2 -2
  15. package/built/src/drivers/PostgresDriver.js +2 -2
  16. package/built/src/drivers/PostgresDriver.js.map +1 -1
  17. package/built/src/drivers/RDSBaseDriver.js +1 -1
  18. package/built/src/drivers/RDSBaseDriver.js.map +1 -1
  19. package/built/src/drivers/SQLServerDriver.d.ts +2 -2
  20. package/built/src/drivers/SQLServerDriver.js +2 -2
  21. package/built/src/drivers/SQLServerDriver.js.map +1 -1
  22. package/built/src/drivers/SQLiteDriver.d.ts +2 -2
  23. package/built/src/drivers/SQLiteDriver.js +2 -2
  24. package/built/src/drivers/SQLiteDriver.js.map +1 -1
  25. package/built/src/drivers/index.d.ts +1 -0
  26. package/built/src/drivers/index.js +1 -0
  27. package/built/src/drivers/index.js.map +1 -1
  28. package/built/src/helpers/SQLHelper.d.ts +7 -1
  29. package/built/src/helpers/SQLHelper.js +22 -13
  30. package/built/src/helpers/SQLHelper.js.map +1 -1
  31. package/built/src/helpers/prompts/RdsPromptHelper.d.ts +4 -1
  32. package/built/src/helpers/prompts/RdsPromptHelper.js +16 -6
  33. package/built/src/helpers/prompts/RdsPromptHelper.js.map +1 -1
  34. package/built/src/types/helpers/index.d.ts +2 -1
  35. package/built/src/types/helpers/index.js.map +1 -1
  36. package/built/src/types/resource/ConnectionSetting.d.ts +10 -0
  37. package/built/src/types/resource/ConnectionSetting.js +5 -1
  38. package/built/src/types/resource/ConnectionSetting.js.map +1 -1
  39. package/built/src/types/resource/DBType.d.ts +2 -1
  40. package/built/src/types/resource/DBType.js +1 -0
  41. package/built/src/types/resource/DBType.js.map +1 -1
  42. package/built/src/types/resource/OracleColumnType.d.ts +30 -0
  43. package/built/src/types/resource/OracleColumnType.js +74 -0
  44. package/built/src/types/resource/OracleColumnType.js.map +1 -0
  45. package/built/src/utils/dbType.js +1 -0
  46. package/built/src/utils/dbType.js.map +1 -1
  47. package/built/src/utils/log/buildSqlExecutions.js +40 -11
  48. package/built/src/utils/log/buildSqlExecutions.js.map +1 -1
  49. package/built/src/utils/log/extract/runExtractors.js +39 -14
  50. package/built/src/utils/log/extract/runExtractors.js.map +1 -1
  51. package/built/src/utils/log/sql/removeSqlComments.d.ts +5 -0
  52. package/built/src/utils/log/sql/removeSqlComments.js +51 -4
  53. package/built/src/utils/log/sql/removeSqlComments.js.map +1 -1
  54. package/package.json +5 -5
@@ -0,0 +1,566 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OracleDriver = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const rdh_1 = require("@l-v-yonsama/rdh");
6
+ const enum_values_1 = require("enum-values");
7
+ const oracledb_1 = tslib_1.__importDefault(require("oracledb"));
8
+ const resource_1 = require("../resource");
9
+ const types_1 = require("../types");
10
+ const OracleColumnType_1 = require("../types/resource/OracleColumnType");
11
+ const RDSBaseDriver_1 = require("./RDSBaseDriver");
12
+ oracledb_1.default.outFormat = oracledb_1.default.OUT_FORMAT_OBJECT;
13
+ oracledb_1.default.fetchAsString = [oracledb_1.default.CLOB];
14
+ oracledb_1.default.fetchAsBuffer = [oracledb_1.default.BLOB];
15
+ class OracleDriver extends RDSBaseDriver_1.RDSBaseDriver {
16
+ constructor(conRes) {
17
+ super(conRes);
18
+ this.autoCommitEnabled = true;
19
+ this.currentIsolationLevel = 'READ COMMITTED';
20
+ }
21
+ begin() {
22
+ var _a;
23
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
24
+ this.autoCommitEnabled = false;
25
+ const { transactionIsolationLevel } = this.conRes;
26
+ if (transactionIsolationLevel === 'SERIALIZABLE' ||
27
+ transactionIsolationLevel === 'REPEATABLE READ') {
28
+ yield ((_a = this.con) === null || _a === void 0 ? void 0 : _a.execute('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE'));
29
+ this.currentIsolationLevel = 'SERIALIZABLE';
30
+ }
31
+ else {
32
+ this.currentIsolationLevel = 'READ COMMITTED';
33
+ }
34
+ });
35
+ }
36
+ commit() {
37
+ var _a;
38
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
39
+ yield ((_a = this.con) === null || _a === void 0 ? void 0 : _a.commit());
40
+ this.autoCommitEnabled = true;
41
+ });
42
+ }
43
+ rollback() {
44
+ var _a;
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ yield ((_a = this.con) === null || _a === void 0 ? void 0 : _a.rollback());
47
+ this.autoCommitEnabled = true;
48
+ });
49
+ }
50
+ setAutoCommit(value) {
51
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
52
+ this.autoCommitEnabled = value;
53
+ });
54
+ }
55
+ getTransactionIsolationLevel() {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ return this.currentIsolationLevel;
58
+ });
59
+ }
60
+ fieldInfo2Key(fieldInfo, useTableColumnType, table) {
61
+ var _a, _b;
62
+ const name = enum_values_1.EnumValues.getNameFromValue(OracleColumnType_1.OracleColumnType, OracleColumnType_1.OracleColumnType.parse(fieldInfo.dbTypeName));
63
+ const tableColumn = (_a = table === null || table === void 0 ? void 0 : table.children) === null || _a === void 0 ? void 0 : _a.find((it) => it.name === fieldInfo.name);
64
+ const key = (0, rdh_1.createRdhKey)({
65
+ name: fieldInfo.name,
66
+ type: fieldInfo.isJson ? rdh_1.GeneralColumnType.JSON : (0, rdh_1.parseColumnType)(name),
67
+ comment: (_b = tableColumn === null || tableColumn === void 0 ? void 0 : tableColumn.comment) !== null && _b !== void 0 ? _b : '',
68
+ required: (tableColumn === null || tableColumn === void 0 ? void 0 : tableColumn.nullable) === false,
69
+ });
70
+ if ((useTableColumnType || key.type === rdh_1.GeneralColumnType.UNKNOWN) &&
71
+ tableColumn) {
72
+ key.type = tableColumn.colType;
73
+ }
74
+ return key;
75
+ }
76
+ useDatabase(database) {
77
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
78
+ console.log(`Ignore "USE DATABASE(${database})"`);
79
+ });
80
+ }
81
+ connectWithTest() {
82
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
83
+ let errorReason = '';
84
+ this.con = yield this.createConnection();
85
+ try {
86
+ errorReason = yield this.test();
87
+ }
88
+ catch (e) {
89
+ errorReason = e.message;
90
+ }
91
+ try {
92
+ if (this.conRes.timezone) {
93
+ yield this.con.execute(`ALTER SESSION SET TIME_ZONE = '${this.conRes.timezone}'`);
94
+ }
95
+ if (this.conRes.queryTimeoutMs !== undefined) {
96
+ this.con.callTimeout = this.conRes.queryTimeoutMs;
97
+ }
98
+ }
99
+ catch (e) {
100
+ console.error(e);
101
+ errorReason = e.message;
102
+ }
103
+ return errorReason;
104
+ });
105
+ }
106
+ kill(sesssionOrPid) {
107
+ var _a;
108
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
109
+ let message = '';
110
+ if (sesssionOrPid) {
111
+ let extraCon;
112
+ try {
113
+ extraCon = yield this.createConnection();
114
+ const lookup = yield extraCon.execute(`SELECT SERIAL# AS SERIAL_NUM FROM V$SESSION WHERE SID = :1`, [sesssionOrPid]);
115
+ const rows = (_a = lookup.rows) !== null && _a !== void 0 ? _a : [];
116
+ if (!rows.length) {
117
+ return `Session ${sesssionOrPid} not found`;
118
+ }
119
+ const serial = rows[0].SERIAL_NUM;
120
+ yield extraCon.execute(`ALTER SYSTEM KILL SESSION '${sesssionOrPid},${serial}'`, [], { autoCommit: true });
121
+ }
122
+ catch (e) {
123
+ message = e.message;
124
+ }
125
+ finally {
126
+ if (extraCon) {
127
+ yield extraCon.close();
128
+ }
129
+ }
130
+ }
131
+ else {
132
+ try {
133
+ if (!this.con) {
134
+ return message;
135
+ }
136
+ yield this.con.break();
137
+ }
138
+ catch (e) {
139
+ message = e.message;
140
+ }
141
+ }
142
+ return message;
143
+ });
144
+ }
145
+ getTestSqlStatement() {
146
+ return 'SELECT 1 FROM DUAL';
147
+ }
148
+ requestSqlSub(params) {
149
+ var _a, _b, _c, _d, _e;
150
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
151
+ const { sql, conditions, dbTable, meta } = params;
152
+ if (!this.con) {
153
+ throw new Error('No connection');
154
+ }
155
+ let rdb;
156
+ const binds = (_a = conditions === null || conditions === void 0 ? void 0 : conditions.binds) !== null && _a !== void 0 ? _a : [];
157
+ const startTime = new Date().getTime();
158
+ const result = yield this.con.execute(sql, binds, {
159
+ autoCommit: this.autoCommitEnabled,
160
+ });
161
+ const elapsedTimeMilli = new Date().getTime() - startTime;
162
+ if ((_b = result.metaData) === null || _b === void 0 ? void 0 : _b.length) {
163
+ rdb = new rdh_1.ResultSetDataBuilder(result.metaData.map((f) => this.fieldInfo2Key(f, (meta === null || meta === void 0 ? void 0 : meta.editable) === true, dbTable)));
164
+ (_c = result.rows) === null || _c === void 0 ? void 0 : _c.forEach((row) => {
165
+ rdb.addRow(row);
166
+ });
167
+ rdb.setSummary({
168
+ elapsedTimeMilli,
169
+ selectedRows: rdb.rs.rows.length,
170
+ });
171
+ }
172
+ else {
173
+ rdb = new rdh_1.ResultSetDataBuilder([
174
+ (0, rdh_1.createRdhKey)({ name: 'affectedRows', type: rdh_1.GeneralColumnType.INTEGER }),
175
+ ]);
176
+ rdb.addRow({ affectedRows: (_d = result.rowsAffected) !== null && _d !== void 0 ? _d : 0 });
177
+ rdb.setSummary({
178
+ elapsedTimeMilli,
179
+ affectedRows: (_e = result.rowsAffected) !== null && _e !== void 0 ? _e : 0,
180
+ });
181
+ }
182
+ return rdb;
183
+ });
184
+ }
185
+ explainSqlSub(params) {
186
+ var _a, _b;
187
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
188
+ if (!this.con) {
189
+ throw new Error('No connection');
190
+ }
191
+ const binds = (_b = (_a = params.conditions) === null || _a === void 0 ? void 0 : _a.binds) !== null && _b !== void 0 ? _b : [];
192
+ const statementId = `dbn_${Date.now()}_${Math.floor(Math.random() * 100000)}`;
193
+ yield this.con.execute(`EXPLAIN PLAN SET STATEMENT_ID = '${statementId}' FOR ${params.sql}`, binds, { autoCommit: false });
194
+ const rdb = yield this.requestSqlSub(Object.assign(Object.assign({}, params), { sql: `SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, '${statementId}', 'BASIC'))`, conditions: undefined }));
195
+ rdb.updateKeyName('PLAN_TABLE_OUTPUT', 'EXPLAIN');
196
+ rdb.updateKeyWidth('EXPLAIN', 300);
197
+ rdb.updateKeyAlign('EXPLAIN', 'left');
198
+ return rdb;
199
+ });
200
+ }
201
+ explainAnalyzeSqlSub(params) {
202
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
203
+ return this.explainSqlSub(params);
204
+ });
205
+ }
206
+ getVersion() {
207
+ var _a, _b;
208
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
209
+ return (_b = (_a = this.con) === null || _a === void 0 ? void 0 : _a.oracleServerVersionString) !== null && _b !== void 0 ? _b : '';
210
+ });
211
+ }
212
+ getCurrentSchema() {
213
+ var _a, _b, _c;
214
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
215
+ const rdb = yield this.requestSqlSub({
216
+ sql: `SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') AS SCHEMA_NAME FROM DUAL`,
217
+ dbTable: undefined,
218
+ });
219
+ return (_c = (_b = (_a = rdb.rs.rows[0]) === null || _a === void 0 ? void 0 : _a.values.SCHEMA_NAME) !== null && _b !== void 0 ? _b : this.conRes.user) !== null && _c !== void 0 ? _c : '';
220
+ });
221
+ }
222
+ getLocks(dbName) {
223
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
224
+ const sql = `SELECT
225
+ s.SID,
226
+ s.SERIAL# AS SERIAL_NUM,
227
+ s.USERNAME AS "USER",
228
+ s.MACHINE,
229
+ s.STATUS,
230
+ o.OBJECT_NAME,
231
+ lo.LOCKED_MODE,
232
+ s.SQL_ID
233
+ FROM V$LOCKED_OBJECT lo
234
+ JOIN V$SESSION s ON s.SID = lo.SESSION_ID
235
+ JOIN ALL_OBJECTS o ON o.OBJECT_ID = lo.OBJECT_ID
236
+ WHERE s.SID != SYS_CONTEXT('USERENV', 'SID')
237
+ ORDER BY s.SID`;
238
+ return yield this.requestSql({ sql });
239
+ });
240
+ }
241
+ getSessions(dbName) {
242
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
243
+ const sql = `SELECT
244
+ s.SID,
245
+ s.SERIAL# AS SERIAL_NUM,
246
+ s.USERNAME AS "USER",
247
+ s.MACHINE,
248
+ s.PROGRAM,
249
+ s.STATUS,
250
+ s.LOGON_TIME,
251
+ s.LAST_CALL_ET,
252
+ sq.SQL_TEXT AS QUERY
253
+ FROM V$SESSION s
254
+ LEFT JOIN V$SQL sq ON sq.SQL_ID = s.SQL_ID AND sq.CHILD_NUMBER = s.SQL_CHILD_NUMBER
255
+ WHERE s.TYPE = 'USER'
256
+ AND s.SID != SYS_CONTEXT('USERENV', 'SID')
257
+ ORDER BY s.SID DESC`;
258
+ return yield this.requestSql({ sql });
259
+ });
260
+ }
261
+ getInfomationSchemasSub() {
262
+ var _a;
263
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
264
+ const dbResources = new Array();
265
+ const dbDatabase = new resource_1.RdsDatabase((_a = this.conRes.database) !== null && _a !== void 0 ? _a : this.conRes.name);
266
+ dbResources.push(dbDatabase);
267
+ const currentSchemaName = yield this.getCurrentSchema();
268
+ const dbSchemas = this.filterSchemas(yield this.getSchemas(dbDatabase));
269
+ dbSchemas.forEach((res) => {
270
+ dbDatabase.addChild(res);
271
+ });
272
+ this.resetDefaultSchema(dbDatabase, currentSchemaName);
273
+ for (const dbSchema of dbSchemas) {
274
+ const dbTables = this.filterTables(yield this.getTables(dbSchema));
275
+ dbTables.forEach((res) => dbSchema.addChild(res));
276
+ yield this.setColumns(dbSchema);
277
+ }
278
+ const defaultSchema = dbDatabase.getSchema({ isDefault: true });
279
+ if (defaultSchema) {
280
+ yield this.setForinKeys(defaultSchema);
281
+ yield this.setUniqueKeys(defaultSchema);
282
+ }
283
+ return dbResources;
284
+ });
285
+ }
286
+ getSchemas(dbDatabase) {
287
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
288
+ const rdh = yield this.requestSql({
289
+ sql: `SELECT USERNAME AS NAME
290
+ FROM ALL_USERS
291
+ WHERE USERNAME NOT IN (
292
+ 'SYS','SYSTEM','OUTLN','XDB','CTXSYS','MDSYS','ORDSYS','ORDDATA',
293
+ 'WMSYS','APPQOSSYS','DBSFWUSER','DBSNMP','GSMADMIN_INTERNAL',
294
+ 'ANONYMOUS','XS$NULL','GGSYS','DVSYS','DVF','AUDSYS',
295
+ 'REMOTE_SCHEDULER_AGENT','SYSBACKUP','SYSDG','SYSKM','SYSRAC',
296
+ 'OJVMSYS','LBACSYS','FLOWS_FILES','ORACLE_OCM','GSMCATUSER',
297
+ 'GSMUSER','GSMROOTUSER','PDBADMIN',
298
+ -- 23c+ additions
299
+ 'BAASSYS','DGPDB_INT','DIP','GGSHAREDCAP','SYS$UMF','VECSYS'
300
+ )
301
+ ORDER BY USERNAME`,
302
+ });
303
+ return rdh.rows.map((r) => new resource_1.DbSchema(r.values.NAME));
304
+ });
305
+ }
306
+ getTables(dbSchema) {
307
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
308
+ let rdh = yield this.requestSql({
309
+ sql: `SELECT t.TABLE_NAME AS NAME, NVL(c.COMMENTS, '') AS "COMMENT"
310
+ FROM ALL_TABLES t
311
+ LEFT JOIN ALL_TAB_COMMENTS c
312
+ ON c.OWNER = t.OWNER AND c.TABLE_NAME = t.TABLE_NAME AND c.TABLE_TYPE = 'TABLE'
313
+ WHERE t.OWNER = :1
314
+ ORDER BY t.TABLE_NAME`,
315
+ conditions: { binds: [dbSchema.name] },
316
+ });
317
+ const list = rdh.rows.map((r) => {
318
+ return new resource_1.DbTable(r.values.NAME, 'TABLE', r.values.COMMENT);
319
+ });
320
+ rdh = yield this.requestSql({
321
+ sql: `SELECT v.VIEW_NAME AS NAME, NVL(c.COMMENTS, '') AS "COMMENT"
322
+ FROM ALL_VIEWS v
323
+ LEFT JOIN ALL_TAB_COMMENTS c
324
+ ON c.OWNER = v.OWNER AND c.TABLE_NAME = v.VIEW_NAME AND c.TABLE_TYPE = 'VIEW'
325
+ WHERE v.OWNER = :1
326
+ ORDER BY v.VIEW_NAME`,
327
+ conditions: { binds: [dbSchema.name] },
328
+ });
329
+ return list.concat(rdh.rows.map((r) => new resource_1.DbTable(r.values.NAME, 'VIEW', r.values.COMMENT)));
330
+ });
331
+ }
332
+ setColumns(dbSchema) {
333
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
334
+ const jsonColumnNames = yield this.getJsonColumnNames(dbSchema.name);
335
+ const rdh = yield this.requestSql({
336
+ sql: `SELECT
337
+ col.TABLE_NAME AS TNAME,
338
+ col.COLUMN_NAME AS NAME,
339
+ col.DATA_TYPE AS COL_TYPE,
340
+ CASE WHEN col.NULLABLE = 'Y' THEN 1 ELSE 0 END AS NULLABLE,
341
+ CASE WHEN pk.COLUMN_NAME IS NOT NULL THEN 'PRI' ELSE NULL END AS COL_KEY,
342
+ col.DATA_DEFAULT AS COL_DEFAULT,
343
+ NVL(cm.COMMENTS, '') AS "COMMENT"
344
+ FROM ALL_TAB_COLUMNS col
345
+ LEFT JOIN ALL_COL_COMMENTS cm
346
+ ON cm.OWNER = col.OWNER AND cm.TABLE_NAME = col.TABLE_NAME AND cm.COLUMN_NAME = col.COLUMN_NAME
347
+ LEFT JOIN (
348
+ SELECT acc.TABLE_NAME, acc.COLUMN_NAME
349
+ FROM ALL_CONSTRAINTS ac
350
+ JOIN ALL_CONS_COLUMNS acc
351
+ ON acc.OWNER = ac.OWNER AND acc.CONSTRAINT_NAME = ac.CONSTRAINT_NAME
352
+ WHERE ac.OWNER = :1 AND ac.CONSTRAINT_TYPE = 'P'
353
+ ) pk ON pk.TABLE_NAME = col.TABLE_NAME AND pk.COLUMN_NAME = col.COLUMN_NAME
354
+ WHERE col.OWNER = :2
355
+ ORDER BY col.TABLE_NAME, col.COLUMN_ID`,
356
+ conditions: { binds: [dbSchema.name, dbSchema.name] },
357
+ });
358
+ rdh.rows.forEach((r) => {
359
+ const dbTable = dbSchema.getChildByName(r.values.TNAME);
360
+ if (dbTable) {
361
+ const type_name = enum_values_1.EnumValues.getNameFromValue(OracleColumnType_1.OracleColumnType, OracleColumnType_1.OracleColumnType.parse(r.values.COL_TYPE));
362
+ const colType = jsonColumnNames.has(`${r.values.TNAME}.${r.values.NAME}`)
363
+ ? rdh_1.GeneralColumnType.JSON
364
+ : (0, rdh_1.parseColumnType)(type_name);
365
+ const res = new resource_1.DbColumn(r.values.NAME, colType, {
366
+ nullable: r.values.NULLABLE === 1,
367
+ key: r.values.COL_KEY,
368
+ default: r.values.COL_DEFAULT,
369
+ }, r.values.COMMENT);
370
+ dbTable.addChild(res);
371
+ }
372
+ });
373
+ });
374
+ }
375
+ getJsonColumnNames(schemaName) {
376
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
377
+ try {
378
+ const rdh = yield this.requestSql({
379
+ sql: `SELECT TABLE_NAME, COLUMN_NAME FROM ALL_JSON_COLUMNS WHERE OWNER = :1`,
380
+ conditions: { binds: [schemaName] },
381
+ });
382
+ return new Set(rdh.rows.map((r) => `${r.values.TABLE_NAME}.${r.values.COLUMN_NAME}`));
383
+ }
384
+ catch (e) {
385
+ if (String(e.message).startsWith('ORA-00942')) {
386
+ return new Set();
387
+ }
388
+ throw e;
389
+ }
390
+ });
391
+ }
392
+ setUniqueKeys(dbSchema) {
393
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
394
+ const rdh = yield this.requestSql({
395
+ sql: `SELECT
396
+ ac.TABLE_NAME AS TABLE_NAME,
397
+ ac.CONSTRAINT_NAME AS INDEX_NAME,
398
+ LISTAGG(acc.COLUMN_NAME, ',') WITHIN GROUP (ORDER BY acc.POSITION) AS COLUMNS
399
+ FROM ALL_CONSTRAINTS ac
400
+ JOIN ALL_CONS_COLUMNS acc
401
+ ON acc.OWNER = ac.OWNER AND acc.CONSTRAINT_NAME = ac.CONSTRAINT_NAME
402
+ WHERE ac.OWNER = :1 AND ac.CONSTRAINT_TYPE = 'U'
403
+ GROUP BY ac.TABLE_NAME, ac.CONSTRAINT_NAME
404
+ ORDER BY ac.TABLE_NAME, ac.CONSTRAINT_NAME`,
405
+ conditions: { binds: [dbSchema.name] },
406
+ });
407
+ rdh.rows.forEach((row) => {
408
+ const tableName = row.values['TABLE_NAME'];
409
+ const indexName = row.values['INDEX_NAME'];
410
+ const columnNames = row.values['COLUMNS'];
411
+ const tableRes = dbSchema.getChildByName(tableName);
412
+ if (tableRes) {
413
+ if (tableRes.uniqueKeys === undefined) {
414
+ tableRes.uniqueKeys = [];
415
+ }
416
+ const constraint = {
417
+ name: indexName,
418
+ columns: columnNames.split(','),
419
+ };
420
+ tableRes.uniqueKeys.push(constraint);
421
+ if (constraint.columns.length > 1) {
422
+ constraint.columns.forEach((columnName) => {
423
+ const colRes = tableRes.getChildByName(columnName);
424
+ if (colRes) {
425
+ colRes['uniqKey'] = true;
426
+ }
427
+ });
428
+ }
429
+ }
430
+ });
431
+ });
432
+ }
433
+ setForinKeys(dbSchema) {
434
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
435
+ const rdh = yield this.requestSql({
436
+ sql: `SELECT
437
+ ac.CONSTRAINT_NAME AS CONSTRAINT_NAME,
438
+ ac.TABLE_NAME AS TABLE_NAME,
439
+ acc.COLUMN_NAME AS COLUMN_NAME,
440
+ rc.TABLE_NAME AS REFERENCED_TABLE_NAME,
441
+ rcc.COLUMN_NAME AS REFERENCED_COLUMN_NAME
442
+ FROM ALL_CONSTRAINTS ac
443
+ JOIN ALL_CONS_COLUMNS acc
444
+ ON acc.OWNER = ac.OWNER AND acc.CONSTRAINT_NAME = ac.CONSTRAINT_NAME
445
+ JOIN ALL_CONSTRAINTS rc
446
+ ON rc.OWNER = ac.R_OWNER AND rc.CONSTRAINT_NAME = ac.R_CONSTRAINT_NAME
447
+ JOIN ALL_CONS_COLUMNS rcc
448
+ ON rcc.OWNER = rc.OWNER AND rcc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME AND rcc.POSITION = acc.POSITION
449
+ WHERE ac.OWNER = :1 AND ac.CONSTRAINT_TYPE = 'R'
450
+ ORDER BY ac.CONSTRAINT_NAME`,
451
+ conditions: { binds: [dbSchema.name] },
452
+ });
453
+ rdh.rows.forEach((row) => {
454
+ const tableName = row.values['TABLE_NAME'];
455
+ const columnName = row.values['COLUMN_NAME'];
456
+ const referencedTableName = row.values['REFERENCED_TABLE_NAME'];
457
+ const referencedColumnName = row.values['REFERENCED_COLUMN_NAME'];
458
+ const constraintName = row.values['CONSTRAINT_NAME'];
459
+ const tableRes = dbSchema.getChildByName(tableName);
460
+ if (tableRes) {
461
+ if (tableRes.getChildByName(columnName)) {
462
+ if (tableRes.foreignKeys === undefined) {
463
+ tableRes.foreignKeys = {};
464
+ }
465
+ if (tableRes.foreignKeys.referenceTo === undefined) {
466
+ tableRes.foreignKeys.referenceTo = {};
467
+ }
468
+ tableRes.foreignKeys.referenceTo[columnName] = {
469
+ tableName: referencedTableName,
470
+ columnName: referencedColumnName,
471
+ constraintName,
472
+ };
473
+ }
474
+ }
475
+ const tableRes2 = dbSchema.getChildByName(referencedTableName);
476
+ if (tableRes2) {
477
+ if (tableRes2.getChildByName(referencedColumnName)) {
478
+ if (tableRes2.foreignKeys === undefined) {
479
+ tableRes2.foreignKeys = {};
480
+ }
481
+ if (tableRes2.foreignKeys.referencedFrom === undefined) {
482
+ tableRes2.foreignKeys.referencedFrom = {};
483
+ }
484
+ tableRes2.foreignKeys.referencedFrom[referencedColumnName] = {
485
+ tableName: tableName,
486
+ columnName: columnName,
487
+ constraintName,
488
+ };
489
+ }
490
+ }
491
+ });
492
+ });
493
+ }
494
+ isPositionedParameterAvailable() {
495
+ return true;
496
+ }
497
+ getPositionalCharacter() {
498
+ return ':';
499
+ }
500
+ getLimitClauseStyle() {
501
+ return 'fetchFirst';
502
+ }
503
+ getIdQuoteCharacter() {
504
+ return '"';
505
+ }
506
+ supportsShowCreate() {
507
+ return true;
508
+ }
509
+ getTableDDL({ tableName, schemaName, }) {
510
+ var _a;
511
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
512
+ if (tableName.length === 0) {
513
+ throw new Error('tableName must not be empty');
514
+ }
515
+ const binds = schemaName ? [tableName, schemaName] : [tableName];
516
+ const sql = schemaName
517
+ ? `SELECT DBMS_METADATA.GET_DDL('TABLE', :1, :2) AS DDL FROM DUAL`
518
+ : `SELECT DBMS_METADATA.GET_DDL('TABLE', :1) AS DDL FROM DUAL`;
519
+ const rdb = yield this.requestSqlSub({
520
+ sql,
521
+ dbTable: undefined,
522
+ conditions: { binds },
523
+ meta: { type: 'select' },
524
+ });
525
+ if (rdb.rs.rows.length) {
526
+ return (_a = rdb.rs.rows[0].values.DDL) !== null && _a !== void 0 ? _a : '';
527
+ }
528
+ return '';
529
+ });
530
+ }
531
+ closeSub() {
532
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
533
+ try {
534
+ if (this.con) {
535
+ yield this.con.close();
536
+ this.con = undefined;
537
+ }
538
+ return '';
539
+ }
540
+ catch (e) {
541
+ return e.message;
542
+ }
543
+ });
544
+ }
545
+ getConnectString() {
546
+ var _a, _b;
547
+ const { oracle } = this.conRes;
548
+ if ((oracle === null || oracle === void 0 ? void 0 : oracle.connectionType) === types_1.OracleConnectionType.useConnectString) {
549
+ return (_a = oracle.connectString) !== null && _a !== void 0 ? _a : '';
550
+ }
551
+ const host = this.conRes.host || '127.0.0.1';
552
+ const port = this.conRes.port || 1521;
553
+ return `${host}:${port}/${(_b = this.conRes.database) !== null && _b !== void 0 ? _b : ''}`;
554
+ }
555
+ createConnection() {
556
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
557
+ return yield oracledb_1.default.getConnection({
558
+ user: this.conRes.user,
559
+ password: this.conRes.password,
560
+ connectString: this.getConnectString(),
561
+ });
562
+ });
563
+ }
564
+ }
565
+ exports.OracleDriver = OracleDriver;
566
+ //# sourceMappingURL=OracleDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OracleDriver.js","sourceRoot":"","sources":["../../../src/drivers/OracleDriver.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { RdhKey, ResultSetData, ResultSetDataBuilder } from '@l-v-yonsama/rdh';
2
2
  import { default as pg } from 'pg';
3
3
  import { DbSchema, DbTable, RdsDatabase } from '../resource';
4
- import { ConnectionSetting, QueryParams, TransactionIsolationLevel } from '../types';
4
+ import { ConnectionSetting, LimitClauseStyle, QueryParams, TransactionIsolationLevel } from '../types';
5
5
  import { RDSBaseDriver } from './RDSBaseDriver';
6
6
  import { QuoteChar } from '../helpers';
7
7
  export declare class PostgresDriver extends RDSBaseDriver {
@@ -42,7 +42,7 @@ export declare class PostgresDriver extends RDSBaseDriver {
42
42
  setForinKeys(dbSchema: DbSchema): Promise<void>;
43
43
  isPositionedParameterAvailable(): boolean;
44
44
  getPositionalCharacter(): string | undefined;
45
- isLimitAsTop(): boolean;
45
+ getLimitClauseStyle(): LimitClauseStyle;
46
46
  getIdQuoteCharacter(): QuoteChar | undefined;
47
47
  closeSub(): Promise<string>;
48
48
  private createPool;
@@ -540,8 +540,8 @@ ORDER BY A.pid DESC
540
540
  getPositionalCharacter() {
541
541
  return '$';
542
542
  }
543
- isLimitAsTop() {
544
- return false;
543
+ getLimitClauseStyle() {
544
+ return 'trailing';
545
545
  }
546
546
  getIdQuoteCharacter() {
547
547
  return '"';