@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.
- package/README.md +43 -3
- package/built/src/drivers/AwsDriver.d.ts +2 -2
- package/built/src/drivers/AwsDriver.js +2 -2
- package/built/src/drivers/AwsDriver.js.map +1 -1
- package/built/src/drivers/BaseSQLSupportDriver.d.ts +2 -2
- package/built/src/drivers/DBDriverResolver.js +4 -0
- package/built/src/drivers/DBDriverResolver.js.map +1 -1
- package/built/src/drivers/MySQLDriver.d.ts +2 -2
- package/built/src/drivers/MySQLDriver.js +6 -5
- package/built/src/drivers/MySQLDriver.js.map +1 -1
- package/built/src/drivers/OracleDriver.d.ts +54 -0
- package/built/src/drivers/OracleDriver.js +566 -0
- package/built/src/drivers/OracleDriver.js.map +1 -0
- package/built/src/drivers/PostgresDriver.d.ts +2 -2
- package/built/src/drivers/PostgresDriver.js +2 -2
- package/built/src/drivers/PostgresDriver.js.map +1 -1
- package/built/src/drivers/RDSBaseDriver.js +1 -1
- package/built/src/drivers/RDSBaseDriver.js.map +1 -1
- package/built/src/drivers/SQLServerDriver.d.ts +2 -2
- package/built/src/drivers/SQLServerDriver.js +2 -2
- package/built/src/drivers/SQLServerDriver.js.map +1 -1
- package/built/src/drivers/SQLiteDriver.d.ts +2 -2
- package/built/src/drivers/SQLiteDriver.js +2 -2
- package/built/src/drivers/SQLiteDriver.js.map +1 -1
- package/built/src/drivers/index.d.ts +1 -0
- package/built/src/drivers/index.js +1 -0
- package/built/src/drivers/index.js.map +1 -1
- package/built/src/helpers/SQLHelper.d.ts +7 -1
- package/built/src/helpers/SQLHelper.js +22 -13
- package/built/src/helpers/SQLHelper.js.map +1 -1
- package/built/src/helpers/prompts/RdsPromptHelper.d.ts +4 -1
- package/built/src/helpers/prompts/RdsPromptHelper.js +16 -6
- package/built/src/helpers/prompts/RdsPromptHelper.js.map +1 -1
- package/built/src/types/helpers/index.d.ts +2 -1
- package/built/src/types/helpers/index.js.map +1 -1
- package/built/src/types/resource/ConnectionSetting.d.ts +10 -0
- package/built/src/types/resource/ConnectionSetting.js +5 -1
- package/built/src/types/resource/ConnectionSetting.js.map +1 -1
- package/built/src/types/resource/DBType.d.ts +2 -1
- package/built/src/types/resource/DBType.js +1 -0
- package/built/src/types/resource/DBType.js.map +1 -1
- package/built/src/types/resource/OracleColumnType.d.ts +30 -0
- package/built/src/types/resource/OracleColumnType.js +74 -0
- package/built/src/types/resource/OracleColumnType.js.map +1 -0
- package/built/src/utils/dbType.js +1 -0
- package/built/src/utils/dbType.js.map +1 -1
- package/built/src/utils/log/buildSqlExecutions.js +40 -11
- package/built/src/utils/log/buildSqlExecutions.js.map +1 -1
- package/built/src/utils/log/extract/runExtractors.js +39 -14
- package/built/src/utils/log/extract/runExtractors.js.map +1 -1
- package/built/src/utils/log/sql/removeSqlComments.d.ts +5 -0
- package/built/src/utils/log/sql/removeSqlComments.js +51 -4
- package/built/src/utils/log/sql/removeSqlComments.js.map +1 -1
- 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
|
-
|
|
45
|
+
getLimitClauseStyle(): LimitClauseStyle;
|
|
46
46
|
getIdQuoteCharacter(): QuoteChar | undefined;
|
|
47
47
|
closeSub(): Promise<string>;
|
|
48
48
|
private createPool;
|