oracledb 5.4.0 → 6.0.0

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 (108) hide show
  1. package/CHANGELOG.md +1 -1849
  2. package/LICENSE.txt +8 -222
  3. package/NOTICE.txt +1 -1
  4. package/README.md +38 -30
  5. package/SECURITY.md +38 -0
  6. package/THIRD_PARTY_LICENSES.txt +1 -1
  7. package/build/Release/oracledb-6.0.0-darwin-x64.node +0 -0
  8. package/build/Release/oracledb-6.0.0-darwin-x64.node-buildinfo.txt +1 -0
  9. package/build/Release/oracledb-6.0.0-js-buildinfo.txt +1 -0
  10. package/build/Release/oracledb-6.0.0-linux-arm64.node +0 -0
  11. package/build/Release/oracledb-6.0.0-linux-arm64.node-buildinfo.txt +1 -0
  12. package/build/Release/oracledb-6.0.0-linux-x64.node +0 -0
  13. package/build/Release/oracledb-6.0.0-linux-x64.node-buildinfo.txt +1 -0
  14. package/build/Release/oracledb-6.0.0-win32-x64.node +0 -0
  15. package/build/Release/oracledb-6.0.0-win32-x64.node-buildinfo.txt +1 -0
  16. package/examples/README.md +113 -0
  17. package/examples/dbconfig.js +100 -0
  18. package/examples/example.js +156 -0
  19. package/index.js +26 -0
  20. package/lib/aqDeqOptions.js +146 -7
  21. package/lib/aqEnqOptions.js +59 -7
  22. package/lib/aqMessage.js +118 -7
  23. package/lib/aqQueue.js +242 -53
  24. package/lib/connection.js +1324 -465
  25. package/lib/constants.js +203 -0
  26. package/lib/dbObject.js +346 -32
  27. package/lib/errors.js +781 -0
  28. package/lib/impl/aqDeqOptions.js +197 -0
  29. package/lib/impl/aqEnqOptions.js +89 -0
  30. package/lib/impl/aqMessage.js +134 -0
  31. package/lib/impl/aqQueue.js +81 -0
  32. package/lib/impl/connection.js +529 -0
  33. package/lib/impl/dbObject.js +159 -0
  34. package/lib/impl/index.js +59 -0
  35. package/lib/impl/lob.js +85 -0
  36. package/lib/impl/pool.js +195 -0
  37. package/lib/impl/resultset.js +223 -0
  38. package/lib/impl/sodaCollection.js +174 -0
  39. package/lib/impl/sodaDatabase.js +81 -0
  40. package/lib/impl/sodaDocCursor.js +63 -0
  41. package/lib/impl/sodaDocument.js +98 -0
  42. package/lib/impl/sodaOperation.js +109 -0
  43. package/lib/lob.js +156 -68
  44. package/lib/oracledb.js +1051 -257
  45. package/lib/pool.js +654 -465
  46. package/lib/poolStatistics.js +23 -9
  47. package/lib/queryStream.js +14 -7
  48. package/lib/resultset.js +292 -171
  49. package/lib/settings.js +191 -0
  50. package/lib/sodaCollection.js +214 -201
  51. package/lib/sodaDatabase.js +107 -71
  52. package/lib/sodaDocCursor.js +44 -32
  53. package/lib/sodaDocument.js +76 -14
  54. package/lib/sodaOperation.js +131 -118
  55. package/lib/thin/connection.js +1038 -0
  56. package/lib/thin/dbObject.js +629 -0
  57. package/lib/thin/index.js +40 -0
  58. package/lib/thin/lob.js +188 -0
  59. package/lib/thin/pool.js +481 -0
  60. package/lib/thin/protocol/buffer.js +1040 -0
  61. package/lib/thin/protocol/capabilities.js +116 -0
  62. package/lib/thin/protocol/constants.js +764 -0
  63. package/lib/thin/protocol/encryptDecrypt.js +185 -0
  64. package/lib/thin/protocol/messages/auth.js +348 -0
  65. package/lib/thin/protocol/messages/base.js +475 -0
  66. package/lib/thin/protocol/messages/commit.js +56 -0
  67. package/lib/thin/protocol/messages/dataType.js +382 -0
  68. package/lib/thin/protocol/messages/execute.js +312 -0
  69. package/lib/thin/protocol/messages/fetch.js +60 -0
  70. package/lib/thin/protocol/messages/index.js +53 -0
  71. package/lib/thin/protocol/messages/lobOp.js +200 -0
  72. package/lib/thin/protocol/messages/logOff.js +53 -0
  73. package/lib/thin/protocol/messages/ping.js +56 -0
  74. package/lib/thin/protocol/messages/protocol.js +78 -0
  75. package/lib/thin/protocol/messages/rollback.js +56 -0
  76. package/lib/thin/protocol/messages/sessionRelease.js +60 -0
  77. package/lib/thin/protocol/messages/withData.js +811 -0
  78. package/lib/thin/protocol/oson.js +660 -0
  79. package/lib/thin/protocol/packet.js +520 -0
  80. package/lib/thin/protocol/protocol.js +202 -0
  81. package/lib/thin/protocol/utils.js +88 -0
  82. package/lib/thin/resultSet.js +122 -0
  83. package/lib/thin/sqlnet/connStrategy.js +175 -0
  84. package/lib/thin/sqlnet/constants.js +199 -0
  85. package/lib/thin/sqlnet/ezConnectResolver.js +488 -0
  86. package/lib/thin/sqlnet/navNodes.js +870 -0
  87. package/lib/thin/sqlnet/networkSession.js +620 -0
  88. package/lib/thin/sqlnet/ntTcp.js +525 -0
  89. package/lib/thin/sqlnet/nvStrToNvPair.js +783 -0
  90. package/lib/thin/sqlnet/packet.js +405 -0
  91. package/lib/thin/sqlnet/paramParser.js +205 -0
  92. package/lib/thin/sqlnet/sessionAtts.js +160 -0
  93. package/lib/thin/statement.js +301 -0
  94. package/lib/thin/util.js +289 -0
  95. package/lib/transformer.js +250 -0
  96. package/lib/types.js +357 -0
  97. package/lib/util.js +194 -108
  98. package/lib/version.js +36 -0
  99. package/package/README.md +33 -30
  100. package/package/install.js +89 -64
  101. package/package/prunebinaries.js +60 -12
  102. package/package.json +3 -3
  103. package/build/Release/oracledb-5.4.0-darwin-x64.node +0 -0
  104. package/build/Release/oracledb-5.4.0-darwin-x64.node-buildinfo.txt +0 -1
  105. package/build/Release/oracledb-5.4.0-linux-x64.node +0 -0
  106. package/build/Release/oracledb-5.4.0-linux-x64.node-buildinfo.txt +0 -1
  107. package/build/Release/oracledb-5.4.0-win32-x64.node +0 -0
  108. package/build/Release/oracledb-5.4.0-win32-x64.node-buildinfo.txt +0 -1
package/lib/types.js ADDED
@@ -0,0 +1,357 @@
1
+ // Copyright (c) 2022, 2023, Oracle and/or its affiliates.
2
+
3
+ //-----------------------------------------------------------------------------
4
+ //
5
+ // This software is dual-licensed to you under the Universal Permissive License
6
+ // (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
7
+ // 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
8
+ // either license.
9
+ //
10
+ // If you elect to accept the software under the Apache License, Version 2.0,
11
+ // the following applies:
12
+ //
13
+ // Licensed under the Apache License, Version 2.0 (the "License");
14
+ // you may not use this file except in compliance with the License.
15
+ // You may obtain a copy of the License at
16
+ //
17
+ // https://www.apache.org/licenses/LICENSE-2.0
18
+ //
19
+ // Unless required by applicable law or agreed to in writing, software
20
+ // distributed under the License is distributed on an "AS IS" BASIS,
21
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
+ // See the License for the specific language governing permissions and
23
+ // limitations under the License.
24
+ //
25
+ //-----------------------------------------------------------------------------
26
+
27
+ 'use strict';
28
+
29
+ const constants = require('./constants.js');
30
+ const errors = require('./errors.js');
31
+ const util = require('util');
32
+
33
+ const dbTypeByNum = new Map();
34
+ const dbTypeByOraTypeNum = new Map();
35
+ const dbTypeByColumnTypeName = new Map();
36
+
37
+ // define class used for database types
38
+ class DbType {
39
+
40
+ constructor(num, name, columnTypeName, options) {
41
+ this.num = num;
42
+ this.name = name;
43
+ this.columnTypeName = columnTypeName;
44
+ this._bufferSizeFactor = options.bufferSizeFactor || 0;
45
+ this._oraTypeNum = options.oraTypeNum || 0;
46
+ this._csfrm = options.csfrm || 0;
47
+ dbTypeByNum.set(num, this);
48
+ const key = (options.csfrm || 0) * 256 + options.oraTypeNum;
49
+ dbTypeByOraTypeNum.set(key, this);
50
+ dbTypeByColumnTypeName.set(columnTypeName, this);
51
+ }
52
+
53
+ [Symbol.toPrimitive](hint) {
54
+ switch (hint) {
55
+ case 'number':
56
+ return this.num;
57
+ default:
58
+ return this.toString();
59
+ }
60
+ }
61
+
62
+ [util.inspect.custom]() {
63
+ return this.toString();
64
+ }
65
+
66
+ toString() {
67
+ return `[DbType ${this.name}]`;
68
+ }
69
+
70
+ }
71
+
72
+ //-----------------------------------------------------------------------------
73
+ // getTypeByColumnTypeName()
74
+ //
75
+ // Return the type given a column type name. If the column type name cannot be
76
+ // found an exception is thrown.
77
+ //-----------------------------------------------------------------------------
78
+ function getTypeByColumnTypeName(name) {
79
+ const dbType = dbTypeByColumnTypeName.get(name);
80
+ if (!dbType)
81
+ errors.throwErr(errors.ERR_UNKNOWN_COLUMN_TYPE_NAME, name);
82
+ return dbType;
83
+ }
84
+
85
+ //-----------------------------------------------------------------------------
86
+ // getTypeByNum()
87
+ //
88
+ // Return the type given the type number. If the type number is incorrect an
89
+ // exception is thrown.
90
+ //-----------------------------------------------------------------------------
91
+ function getTypeByNum(num) {
92
+ const dbType = dbTypeByNum.get(num);
93
+ if (!dbType)
94
+ errors.throwErr(errors.ERR_INVALID_TYPE_NUM, num);
95
+ return dbType;
96
+ }
97
+
98
+ //-----------------------------------------------------------------------------
99
+ // getTypeByOraTypeNum()
100
+ //
101
+ // Return the type given the Oracle type number and character set form. If the
102
+ // Oracle type number and character set form are incorrect an exception is
103
+ // thrown.
104
+ //-----------------------------------------------------------------------------
105
+ function getTypeByOraTypeNum(oraTypeNum, csfrm) {
106
+ const key = (csfrm || 0) * 256 + oraTypeNum;
107
+ const dbType = dbTypeByOraTypeNum.get(key);
108
+ if (!dbType)
109
+ errors.throwErr(errors.ERR_INVALID_ORACLE_TYPE_NUM, oraTypeNum, csfrm);
110
+ return dbType;
111
+ }
112
+
113
+ const DB_TYPE_BFILE = new DbType(2020,
114
+ "DB_TYPE_BFILE", "BFILE",
115
+ { oraTypeNum: 114, bufferSizeFactor: 112 });
116
+ const DB_TYPE_BINARY_DOUBLE = new DbType(2008,
117
+ "DB_TYPE_BINARY_DOUBLE", "BINARY_DOUBLE",
118
+ { oraTypeNum: 101, bufferSizeFactor: 8 });
119
+ const DB_TYPE_BINARY_FLOAT = new DbType(2007,
120
+ "DB_TYPE_BINARY_FLOAT", "BINARY_FLOAT",
121
+ { oraTypeNum: 100, bufferSizeFactor: 4 });
122
+ const DB_TYPE_BINARY_INTEGER = new DbType(2009,
123
+ "DB_TYPE_BINARY_INTEGER", "BINARY_INTEGER",
124
+ { oraTypeNum: 3, bufferSizeFactor: 22 });
125
+ const DB_TYPE_BLOB = new DbType(2019,
126
+ "DB_TYPE_BLOB", "BLOB",
127
+ { oraTypeNum: 113, bufferSizeFactor: 112 });
128
+ const DB_TYPE_BOOLEAN = new DbType(2022,
129
+ "DB_TYPE_BOOLEAN", "BOOLEAN",
130
+ { oraTypeNum: 252, bufferSizeFactor: 4 });
131
+ const DB_TYPE_CHAR = new DbType(2003,
132
+ "DB_TYPE_CHAR", "CHAR",
133
+ { oraTypeNum: 96, csfrm: constants.CSFRM_IMPLICIT, bufferSizeFactor: 4 });
134
+ const DB_TYPE_CLOB = new DbType(2017,
135
+ "DB_TYPE_CLOB", "CLOB",
136
+ { oraTypeNum: 112, csfrm: constants.CSFRM_IMPLICIT, bufferSizeFactor: 112 });
137
+ const DB_TYPE_CURSOR = new DbType(2021,
138
+ "DB_TYPE_CURSOR", "CURSOR",
139
+ { oraTypeNum: 102, bufferSizeFactor: 4 });
140
+ const DB_TYPE_DATE = new DbType(2011,
141
+ "DB_TYPE_DATE", "DATE",
142
+ { oraTypeNum: 12, bufferSizeFactor: 7 });
143
+ const DB_TYPE_INTERVAL_DS = new DbType(2015,
144
+ "DB_TYPE_INTERVAL_DS", "INTERVAL DAY TO SECOND",
145
+ { oraTypeNum: 183, bufferSizeFactor: 11 });
146
+ const DB_TYPE_INTERVAL_YM = new DbType(2016,
147
+ "DB_TYPE_INTERVAL_YM", "INTERVAL YEAR TO MONTH",
148
+ { oraTypeNum: 182 });
149
+ const DB_TYPE_JSON = new DbType(2027,
150
+ "DB_TYPE_JSON", "JSON",
151
+ { oraTypeNum: 119 });
152
+ const DB_TYPE_LONG = new DbType(2024,
153
+ "DB_TYPE_LONG", "LONG",
154
+ { oraTypeNum: 8, csfrm: constants.CSFRM_IMPLICIT,
155
+ bufferSizeFactor: 2 ** 31 - 1 });
156
+ const DB_TYPE_LONG_NVARCHAR = new DbType(2031,
157
+ "DB_TYPE_LONG_NVARCHAR", "LONG",
158
+ { oraTypeNum: 8, csfrm: constants.CSFRM_NCHAR,
159
+ bufferSizeFactor: 2 ** 31 - 1 });
160
+ const DB_TYPE_LONG_RAW = new DbType(2025,
161
+ "DB_TYPE_LONG_RAW", "LONG RAW",
162
+ { oraTypeNum: 24, bufferSizeFactor: 2 ** 31 - 1 });
163
+ const DB_TYPE_NCHAR = new DbType(2004,
164
+ "DB_TYPE_NCHAR", "NCHAR",
165
+ { oraTypeNum: 96, csfrm: constants.CSFRM_NCHAR, bufferSizeFactor: 4 });
166
+ const DB_TYPE_NCLOB = new DbType(2018,
167
+ "DB_TYPE_NCLOB", "NCLOB",
168
+ { oraTypeNum: 112, csfrm: constants.CSFRM_NCHAR, bufferSizeFactor: 112 });
169
+ const DB_TYPE_NUMBER = new DbType(2010,
170
+ "DB_TYPE_NUMBER", "NUMBER",
171
+ { oraTypeNum: 2, bufferSizeFactor: 22 });
172
+ const DB_TYPE_NVARCHAR = new DbType(2002,
173
+ "DB_TYPE_NVARCHAR", "NVARCHAR2",
174
+ { oraTypeNum: 1, csfrm: constants.CSFRM_NCHAR, bufferSizeFactor: 4 });
175
+ const DB_TYPE_OBJECT = new DbType(2023,
176
+ "DB_TYPE_OBJECT", "OBJECT",
177
+ { oraTypeNum: 109 });
178
+ const DB_TYPE_RAW = new DbType(2006,
179
+ "DB_TYPE_RAW", "RAW",
180
+ { oraTypeNum: 23, bufferSizeFactor: 1 });
181
+ const DB_TYPE_ROWID = new DbType(2005,
182
+ "DB_TYPE_ROWID", "ROWID",
183
+ { oraTypeNum: 11, bufferSizeFactor: 18 });
184
+ const DB_TYPE_TIMESTAMP = new DbType(2012,
185
+ "DB_TYPE_TIMESTAMP", "TIMESTAMP",
186
+ { oraTypeNum: 180, bufferSizeFactor: 11 });
187
+ const DB_TYPE_TIMESTAMP_LTZ = new DbType(2014,
188
+ "DB_TYPE_TIMESTAMP_LTZ", "TIMESTAMP WITH LOCAL TIME ZONE",
189
+ { oraTypeNum: 231, bufferSizeFactor: 11 });
190
+ const DB_TYPE_TIMESTAMP_TZ = new DbType(2013,
191
+ "DB_TYPE_TIMESTAMP_TZ", "TIMESTAMP WITH TIME ZONE",
192
+ { oraTypeNum: 181, bufferSizeFactor: 13 });
193
+ const DB_TYPE_UROWID = new DbType(2030,
194
+ "DB_TYPE_UROWID", "UROWID",
195
+ { oraTypeNum: 208 });
196
+ const DB_TYPE_VARCHAR = new DbType(2001,
197
+ "DB_TYPE_VARCHAR", "VARCHAR2",
198
+ { oraTypeNum: 1, csfrm: constants.CSFRM_IMPLICIT, bufferSizeFactor: 4 });
199
+
200
+ // database type conversion map: the top level key refers to the database
201
+ // type being fetched and the value is another map; this map's key is the
202
+ // type requested by the user and its value is the actual type that will be
203
+ // used in the define call; only entries are included where the database type
204
+ // and the requested fetch type are different
205
+ const DB_TYPE_CONVERSION_MAP = new Map([
206
+ [DB_TYPE_BINARY_DOUBLE, new Map([
207
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
208
+ ])],
209
+ [DB_TYPE_BINARY_FLOAT, new Map([
210
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
211
+ ])],
212
+ [DB_TYPE_BLOB, new Map([
213
+ [DB_TYPE_RAW, DB_TYPE_LONG_RAW],
214
+ [DB_TYPE_LONG_RAW, DB_TYPE_LONG_RAW]
215
+ ])],
216
+ [DB_TYPE_CHAR, new Map([
217
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
218
+ ])],
219
+ [DB_TYPE_CLOB, new Map([
220
+ [DB_TYPE_VARCHAR, DB_TYPE_LONG],
221
+ [DB_TYPE_LONG, DB_TYPE_LONG]
222
+ ])],
223
+ [DB_TYPE_DATE, new Map([
224
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR],
225
+ [DB_TYPE_TIMESTAMP_LTZ, DB_TYPE_TIMESTAMP_LTZ]
226
+ ])],
227
+ [DB_TYPE_JSON, new Map([
228
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
229
+ ])],
230
+ [DB_TYPE_LONG, new Map([
231
+ [DB_TYPE_VARCHAR, DB_TYPE_LONG]
232
+ ])],
233
+ [DB_TYPE_LONG_RAW, new Map([
234
+ [DB_TYPE_RAW, DB_TYPE_LONG_RAW]
235
+ ])],
236
+ [DB_TYPE_NCHAR, new Map([
237
+ [DB_TYPE_CHAR, DB_TYPE_NCHAR],
238
+ [DB_TYPE_VARCHAR, DB_TYPE_NVARCHAR],
239
+ [DB_TYPE_NVARCHAR, DB_TYPE_NVARCHAR]
240
+ ])],
241
+ [DB_TYPE_NCLOB, new Map([
242
+ [DB_TYPE_VARCHAR, DB_TYPE_LONG_NVARCHAR],
243
+ [DB_TYPE_NVARCHAR, DB_TYPE_LONG_NVARCHAR],
244
+ [DB_TYPE_LONG, DB_TYPE_LONG_NVARCHAR],
245
+ [DB_TYPE_LONG_NVARCHAR, DB_TYPE_LONG_NVARCHAR]
246
+ ])],
247
+ [DB_TYPE_NUMBER, new Map([
248
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
249
+ ])],
250
+ [DB_TYPE_NVARCHAR, new Map([
251
+ [DB_TYPE_CHAR, DB_TYPE_NCHAR],
252
+ [DB_TYPE_NCHAR, DB_TYPE_NCHAR],
253
+ [DB_TYPE_VARCHAR, DB_TYPE_NVARCHAR]
254
+ ])],
255
+ [DB_TYPE_RAW, new Map([
256
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
257
+ ])],
258
+ [DB_TYPE_ROWID, new Map([
259
+ [DB_TYPE_VARCHAR, DB_TYPE_ROWID]
260
+ ])],
261
+ [DB_TYPE_TIMESTAMP, new Map([
262
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR],
263
+ [DB_TYPE_TIMESTAMP_LTZ, DB_TYPE_TIMESTAMP_LTZ]
264
+ ])],
265
+ [DB_TYPE_TIMESTAMP_LTZ, new Map([
266
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR],
267
+ [DB_TYPE_TIMESTAMP_TZ, DB_TYPE_TIMESTAMP_TZ]
268
+ ])],
269
+ [DB_TYPE_TIMESTAMP_TZ, new Map([
270
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR],
271
+ [DB_TYPE_TIMESTAMP_LTZ, DB_TYPE_TIMESTAMP_LTZ]
272
+ ])],
273
+ [DB_TYPE_UROWID, new Map([
274
+ [DB_TYPE_VARCHAR, DB_TYPE_ROWID]
275
+ ])],
276
+ ]);
277
+
278
+ // default fetch type map
279
+ const DB_TYPE_FETCH_TYPE_MAP = new Map([
280
+ [DB_TYPE_BFILE, DB_TYPE_BFILE],
281
+ [DB_TYPE_BINARY_DOUBLE, DB_TYPE_BINARY_DOUBLE],
282
+ [DB_TYPE_BINARY_FLOAT, DB_TYPE_BINARY_FLOAT],
283
+ [DB_TYPE_BINARY_INTEGER, DB_TYPE_BINARY_INTEGER],
284
+ [DB_TYPE_BLOB, DB_TYPE_BLOB],
285
+ [DB_TYPE_BOOLEAN, DB_TYPE_BOOLEAN],
286
+ [DB_TYPE_CHAR, DB_TYPE_CHAR],
287
+ [DB_TYPE_CLOB, DB_TYPE_CLOB],
288
+ [DB_TYPE_CURSOR, DB_TYPE_CURSOR],
289
+ [DB_TYPE_DATE, DB_TYPE_DATE],
290
+ [DB_TYPE_INTERVAL_DS, DB_TYPE_INTERVAL_DS],
291
+ [DB_TYPE_INTERVAL_YM, DB_TYPE_INTERVAL_YM],
292
+ [DB_TYPE_JSON, DB_TYPE_JSON],
293
+ [DB_TYPE_LONG, DB_TYPE_LONG],
294
+ [DB_TYPE_LONG_NVARCHAR, DB_TYPE_LONG_NVARCHAR],
295
+ [DB_TYPE_LONG_RAW, DB_TYPE_LONG_RAW],
296
+ [DB_TYPE_NCHAR, DB_TYPE_NCHAR],
297
+ [DB_TYPE_NCLOB, DB_TYPE_NCLOB],
298
+ [DB_TYPE_NUMBER, DB_TYPE_NUMBER],
299
+ [DB_TYPE_NVARCHAR, DB_TYPE_NVARCHAR],
300
+ [DB_TYPE_OBJECT, DB_TYPE_OBJECT],
301
+ [DB_TYPE_RAW, DB_TYPE_RAW],
302
+ [DB_TYPE_ROWID, DB_TYPE_ROWID],
303
+ [DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMP],
304
+ [DB_TYPE_TIMESTAMP_LTZ, DB_TYPE_TIMESTAMP_TZ],
305
+ [DB_TYPE_TIMESTAMP_TZ, DB_TYPE_TIMESTAMP_TZ],
306
+ [DB_TYPE_UROWID, DB_TYPE_UROWID],
307
+ [DB_TYPE_VARCHAR, DB_TYPE_VARCHAR]
308
+ ]);
309
+
310
+ // additional aliases for types by column type name
311
+ dbTypeByColumnTypeName.set("DOUBLE PRECISION", DB_TYPE_NUMBER);
312
+ dbTypeByColumnTypeName.set("FLOAT", DB_TYPE_NUMBER);
313
+ dbTypeByColumnTypeName.set("INTEGER", DB_TYPE_NUMBER);
314
+ dbTypeByColumnTypeName.set("PL/SQL BOOLEAN", DB_TYPE_BOOLEAN);
315
+ dbTypeByColumnTypeName.set("PL/SQL BINARY INTEGER", DB_TYPE_BINARY_INTEGER);
316
+ dbTypeByColumnTypeName.set("PL/SQL PLS INTEGER", DB_TYPE_BINARY_INTEGER);
317
+ dbTypeByColumnTypeName.set("REAL", DB_TYPE_NUMBER);
318
+ dbTypeByColumnTypeName.set("SMALLINT", DB_TYPE_NUMBER);
319
+ dbTypeByColumnTypeName.set("TIMESTAMP WITH LOCAL TZ", DB_TYPE_TIMESTAMP_LTZ);
320
+ dbTypeByColumnTypeName.set("TIMESTAMP WITH TZ", DB_TYPE_TIMESTAMP_TZ);
321
+
322
+ module.exports = {
323
+ DbType,
324
+ DB_TYPE_BFILE,
325
+ DB_TYPE_BINARY_DOUBLE,
326
+ DB_TYPE_BINARY_FLOAT,
327
+ DB_TYPE_BINARY_INTEGER,
328
+ DB_TYPE_BLOB,
329
+ DB_TYPE_BOOLEAN,
330
+ DB_TYPE_CHAR,
331
+ DB_TYPE_CLOB,
332
+ DB_TYPE_CURSOR,
333
+ DB_TYPE_DATE,
334
+ DB_TYPE_INTERVAL_DS,
335
+ DB_TYPE_INTERVAL_YM,
336
+ DB_TYPE_JSON,
337
+ DB_TYPE_LONG,
338
+ DB_TYPE_LONG_NVARCHAR,
339
+ DB_TYPE_LONG_RAW,
340
+ DB_TYPE_NCHAR,
341
+ DB_TYPE_NCLOB,
342
+ DB_TYPE_NUMBER,
343
+ DB_TYPE_NVARCHAR,
344
+ DB_TYPE_OBJECT,
345
+ DB_TYPE_RAW,
346
+ DB_TYPE_ROWID,
347
+ DB_TYPE_TIMESTAMP,
348
+ DB_TYPE_TIMESTAMP_LTZ,
349
+ DB_TYPE_TIMESTAMP_TZ,
350
+ DB_TYPE_UROWID,
351
+ DB_TYPE_VARCHAR,
352
+ DB_TYPE_CONVERSION_MAP,
353
+ DB_TYPE_FETCH_TYPE_MAP,
354
+ getTypeByColumnTypeName,
355
+ getTypeByNum,
356
+ getTypeByOraTypeNum
357
+ };