@zowe/db2-for-zowe-cli 6.1.17 → 6.1.18
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 +12 -10
- package/lib/Db2PluginLifeCycle.d.ts +11 -9
- package/lib/Db2PluginLifeCycle.js +18 -13
- package/lib/Db2PluginLifeCycle.js.map +1 -1
- package/node_modules/axios/CHANGELOG.md +62 -0
- package/node_modules/axios/README.md +233 -5
- package/node_modules/axios/dist/axios.js +387 -89
- package/node_modules/axios/dist/axios.min.js +3 -3
- package/node_modules/axios/dist/axios.min.js.map +1 -1
- package/node_modules/axios/dist/browser/axios.cjs +458 -98
- package/node_modules/axios/dist/esm/axios.js +458 -98
- package/node_modules/axios/dist/esm/axios.min.js +2 -2
- package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
- package/node_modules/axios/dist/node/axios.cjs +568 -116
- package/node_modules/axios/index.d.cts +4 -0
- package/node_modules/axios/index.d.ts +4 -0
- package/node_modules/axios/lib/adapters/fetch.js +64 -11
- package/node_modules/axios/lib/adapters/http.js +134 -50
- package/node_modules/axios/lib/adapters/xhr.js +52 -3
- package/node_modules/axios/lib/core/Axios.js +19 -14
- package/node_modules/axios/lib/core/InterceptorManager.js +107 -8
- package/node_modules/axios/lib/core/buildFullPath.js +1 -13
- package/node_modules/axios/lib/core/dispatchRequest.js +8 -2
- package/node_modules/axios/lib/core/mergeConfig.js +1 -1
- package/node_modules/axios/lib/core/methodList.js +17 -0
- package/node_modules/axios/lib/defaults/index.js +2 -1
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/Http2Sessions.js +2 -0
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
- package/node_modules/axios/lib/helpers/fromDataURI.js +5 -4
- package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
- package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
- package/node_modules/axios/lib/helpers/resolveConfig.js +4 -2
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +182 -6
- package/node_modules/axios/lib/helpers/throttle.js +3 -2
- package/node_modules/axios/lib/helpers/toFormData.js +14 -21
- package/node_modules/axios/lib/utils.js +134 -13
- package/node_modules/axios/package.json +1 -1
- package/node_modules/ibm_db/APIDocumentation.md +2883 -2024
- package/node_modules/ibm_db/LICENSE +23 -23
- package/node_modules/ibm_db/README.md +735 -735
- package/node_modules/ibm_db/binding.gyp +99 -98
- package/node_modules/ibm_db/installer/driverInstall.js +984 -958
- package/node_modules/ibm_db/installer/ifx.sh +38 -38
- package/node_modules/ibm_db/installer/setenv.sh +23 -23
- package/node_modules/ibm_db/installer/testODBCConnection.bat +51 -51
- package/node_modules/ibm_db/installer/testODBCConnection.sh +61 -61
- package/node_modules/ibm_db/lib/climacros.js +431 -431
- package/node_modules/ibm_db/lib/odbc.js +4293 -3487
- package/node_modules/ibm_db/lib/simple-queue.js +41 -41
- package/node_modules/ibm_db/package.json +70 -70
- package/node_modules/ibm_db/src/odbc.cpp +1495 -1396
- package/node_modules/ibm_db/src/odbc.h +477 -473
- package/node_modules/ibm_db/src/odbc_connection.cpp +1762 -1612
- package/node_modules/ibm_db/src/odbc_connection.h +228 -215
- package/node_modules/ibm_db/src/odbc_result.cpp +1547 -1547
- package/node_modules/ibm_db/src/odbc_result.h +152 -152
- package/node_modules/ibm_db/src/odbc_statement.cpp +2047 -861
- package/node_modules/ibm_db/src/odbc_statement.h +257 -135
- package/node_modules/ibm_db/src/strptime.c +389 -389
- package/node_modules/ibm_db/src/strptime.h +46 -46
- package/node_modules/ibm_db/test/README +23 -23
- package/node_modules/ibm_db/test/bench-insert.js +62 -62
- package/node_modules/ibm_db/test/bench-insertBatch10.js +74 -74
- package/node_modules/ibm_db/test/bench-insertBatch100.js +75 -75
- package/node_modules/ibm_db/test/bench-insertBatch1000.js +75 -75
- package/node_modules/ibm_db/test/bench-insertBatch10000.js +75 -75
- package/node_modules/ibm_db/test/bench-prepare-bind-execute-closeSync.js +60 -60
- package/node_modules/ibm_db/test/bench-prepare-bind-executeNonQuery.js +53 -53
- package/node_modules/ibm_db/test/bench-prepare-bindSync-execute-closeSync.js +50 -50
- package/node_modules/ibm_db/test/bench-prepare-bindSync-executeNonQuery.js +48 -48
- package/node_modules/ibm_db/test/bench-prepare-execute-closeSync.js +51 -51
- package/node_modules/ibm_db/test/bench-prepare-executeNonQuery.js +47 -47
- package/node_modules/ibm_db/test/bench-prepare-not.js +43 -43
- package/node_modules/ibm_db/test/bench-query-fetch.js +59 -59
- package/node_modules/ibm_db/test/bench-query-fetchAll.js +49 -49
- package/node_modules/ibm_db/test/bench-query-fetchAllSync.js +43 -43
- package/node_modules/ibm_db/test/bench-query.js +40 -40
- package/node_modules/ibm_db/test/bench-querySync-fetchArray.js +28 -28
- package/node_modules/ibm_db/test/bench-querySync.js +29 -29
- package/node_modules/ibm_db/test/common.d.ts +10 -10
- package/node_modules/ibm_db/test/common.js +127 -127
- package/node_modules/ibm_db/test/config.json +7 -7
- package/node_modules/ibm_db/test/config.zos.json +4 -4
- package/node_modules/ibm_db/test/data/sample1.txt +9 -9
- package/node_modules/ibm_db/test/data/trc.fmt +30114 -30114
- package/node_modules/ibm_db/test/nodeEE-leak-huge-query.js +152 -152
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-multiple-connections.js +148 -148
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-pool-connections.js +154 -154
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query.js +133 -133
- package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall-multiple-connections.js +174 -174
- package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall.js +169 -169
- package/node_modules/ibm_db/test/nodeEE-stress-mixed-query-multiple-connections.js +159 -159
- package/node_modules/ibm_db/test/nodeEE-stress-mixed-query.js +148 -148
- package/node_modules/ibm_db/test/odbc-bench.c +123 -123
- package/node_modules/ibm_db/test/perfTest.js +53 -53
- package/node_modules/ibm_db/test/quick-example.sh +30 -30
- package/node_modules/ibm_db/test/quick-example.ts +80 -80
- package/node_modules/ibm_db/test/run-bench.js +96 -96
- package/node_modules/ibm_db/test/run-nodeEE.js +132 -132
- package/node_modules/ibm_db/test/run-tests.js +132 -138
- package/node_modules/ibm_db/test/sql-cli.js +28 -28
- package/node_modules/ibm_db/test/test-all-data-types.js +109 -109
- package/node_modules/ibm_db/test/test-array-insert.js +178 -178
- package/node_modules/ibm_db/test/test-async-await.js +105 -105
- package/node_modules/ibm_db/test/test-attributes.js +34 -34
- package/node_modules/ibm_db/test/test-bad-pool-connection-prepare-execute.js +57 -57
- package/node_modules/ibm_db/test/test-basic-test.js +138 -138
- package/node_modules/ibm_db/test/test-binary-array-insert.js +73 -73
- package/node_modules/ibm_db/test/test-blob-from-file.js +90 -90
- package/node_modules/ibm_db/test/test-blob-insert.js +144 -144
- package/node_modules/ibm_db/test/test-blob-stream-insert.js +321 -299
- package/node_modules/ibm_db/test/test-blob-to-file.js +370 -370
- package/node_modules/ibm_db/test/test-block-fetch.js +364 -364
- package/node_modules/ibm_db/test/test-blocking-issue210.js +123 -123
- package/node_modules/ibm_db/test/test-call-async.js +64 -64
- package/node_modules/ibm_db/test/test-call-stmt.js +53 -53
- package/node_modules/ibm_db/test/test-cancel.js +703 -0
- package/node_modules/ibm_db/test/test-chinese-char.js +59 -59
- package/node_modules/ibm_db/test/test-connection.js +306 -0
- package/node_modules/ibm_db/test/test-date.js +32 -32
- package/node_modules/ibm_db/test/test-dbclob.js +93 -93
- package/node_modules/ibm_db/test/test-decimals.js +135 -135
- package/node_modules/ibm_db/test/test-describe-metadata.js +148 -0
- package/node_modules/ibm_db/test/test-executeFile.js +167 -167
- package/node_modules/ibm_db/test/test-executeFileSync.js +85 -85
- package/node_modules/ibm_db/test/test-fetch-apis.js +146 -146
- package/node_modules/ibm_db/test/test-fetchN.js +130 -130
- package/node_modules/ibm_db/test/test-getinfo.js +197 -197
- package/node_modules/ibm_db/test/test-ibm-db-issue14.js +58 -58
- package/node_modules/ibm_db/test/test-ibm-db-issue17.js +54 -54
- package/node_modules/ibm_db/test/test-ibm-db-issue18.js +54 -54
- package/node_modules/ibm_db/test/test-issue-1059-fetchAll-undefined.js +67 -67
- package/node_modules/ibm_db/test/test-issue-1080-array-blob-insert.js +40 -0
- package/node_modules/ibm_db/test/test-issue-54.js +39 -39
- package/node_modules/ibm_db/test/test-issue-get-column-value-2.js +44 -44
- package/node_modules/ibm_db/test/test-issue211.js +80 -80
- package/node_modules/ibm_db/test/test-issue253.js +39 -39
- package/node_modules/ibm_db/test/test-max-pool-size.js +96 -96
- package/node_modules/ibm_db/test/test-memory-leaks-new-objects.js +32 -32
- package/node_modules/ibm_db/test/test-multi-open-query-close.js +75 -75
- package/node_modules/ibm_db/test/test-param-put-data.js +713 -0
- package/node_modules/ibm_db/test/test-pool-idle-connection.js +72 -72
- package/node_modules/ibm_db/test/test-pool-operations.js +325 -0
- package/node_modules/ibm_db/test/test-pool-stale-connections.js +111 -111
- package/node_modules/ibm_db/test/test-pool-uncommited.js +33 -33
- package/node_modules/ibm_db/test/test-prepare-execute.js +339 -0
- package/node_modules/ibm_db/test/test-prepareSync-multiple-execution.js +93 -93
- package/node_modules/ibm_db/test/test-primary-foreign-keys.js +246 -0
- package/node_modules/ibm_db/test/test-procedures.js +243 -0
- package/node_modules/ibm_db/test/test-promise-all-data-types.js +42 -42
- package/node_modules/ibm_db/test/test-query-operations.js +405 -0
- package/node_modules/ibm_db/test/test-quick-example.js +25 -25
- package/node_modules/ibm_db/test/test-row-array-insert.js +167 -167
- package/node_modules/ibm_db/test/test-sp-array.js +54 -54
- package/node_modules/ibm_db/test/test-sp-dbc-6000.js +88 -88
- package/node_modules/ibm_db/test/test-sp-memleak.js +136 -136
- package/node_modules/ibm_db/test/test-sp-resultset-execute.js +269 -269
- package/node_modules/ibm_db/test/test-sp-resultset.js +228 -228
- package/node_modules/ibm_db/test/test-transactions.js +261 -0
- package/node_modules/ibm_db/test/test-typescript.js +48 -48
- package/node_modules/ibm_db/test/test-xml-datatype.js +70 -70
- package/node_modules/ibm_db/test/testWebApp.js +56 -56
- package/node_modules/ibm_db/test/trace +51 -51
- package/node_modules/ibm_db/test/typescript-apis-test.js +978 -978
- package/node_modules/ibm_db/test/webapp.html +17 -17
- package/node_modules/ibm_db/test/webapp.js +79 -79
- package/node_modules/ibm_db/typescript/README.md +28 -28
- package/node_modules/ibm_db/typescript/dist/Database.d.ts +26 -0
- package/node_modules/ibm_db/typescript/dist/ODBCStatement.d.ts +93 -0
- package/package.json +10 -6
- package/node_modules/ibm_db/test/disabled/test-binding-statement-rebinding.js +0 -59
- package/node_modules/ibm_db/test/disabled/test-open-dont-close.js +0 -12
- package/node_modules/ibm_db/test/disabled/test-param-select-with-booleans-only.js +0 -21
- package/node_modules/ibm_db/test/disabled/test-param-select-with-decimals-only.js +0 -20
- package/node_modules/ibm_db/test/disabled/test-param-select-with-null.js +0 -21
- package/node_modules/ibm_db/test/disabled/test-param-select-with-nulls-mixed.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-mixed.js +0 -22
- package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-only.js +0 -24
- package/node_modules/ibm_db/test/disabled/test-param-select-with-strings-only.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-param-select-with-unicode.js +0 -15
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-closeSync.js +0 -62
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-error.js +0 -49
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-long-string.js +0 -63
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-executeNonQuery.js +0 -63
- package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-execute-closeSync.js +0 -46
- package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-executeNonQuery.js +0 -50
- package/node_modules/ibm_db/test/disabled/test-prepare.js +0 -34
- package/node_modules/ibm_db/test/disabled/test-prepareSync.js +0 -29
- package/node_modules/ibm_db/test/disabled/test-query-select-fetchAll.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-query-select-fetchAllSync.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-query-select-unicode.js +0 -15
- package/node_modules/ibm_db/test/disabled/test-querySync-select-unicode.js +0 -20
- package/node_modules/ibm_db/test/test-affected-rows.js +0 -55
- package/node_modules/ibm_db/test/test-bad-connection-string.js +0 -30
- package/node_modules/ibm_db/test/test-binding-connection-timeOut.js +0 -31
- package/node_modules/ibm_db/test/test-binding-statement-executeSync.js +0 -84
- package/node_modules/ibm_db/test/test-binding-transaction-commit.js +0 -79
- package/node_modules/ibm_db/test/test-binding-transaction-commitSync.js +0 -53
- package/node_modules/ibm_db/test/test-closed.js +0 -14
- package/node_modules/ibm_db/test/test-connection-object.js +0 -16
- package/node_modules/ibm_db/test/test-describe-column.js +0 -92
- package/node_modules/ibm_db/test/test-describe-database.js +0 -18
- package/node_modules/ibm_db/test/test-describe-table.js +0 -31
- package/node_modules/ibm_db/test/test-domains-open.js +0 -19
- package/node_modules/ibm_db/test/test-global-open-close.js +0 -11
- package/node_modules/ibm_db/test/test-instantiate-one-and-end.js +0 -9
- package/node_modules/ibm_db/test/test-multi-open-close.js +0 -45
- package/node_modules/ibm_db/test/test-multi-openSync-closeSync.js +0 -52
- package/node_modules/ibm_db/test/test-open-close.js +0 -29
- package/node_modules/ibm_db/test/test-open-connectTimeout.js +0 -33
- package/node_modules/ibm_db/test/test-openSync.js +0 -31
- package/node_modules/ibm_db/test/test-pool-close.js +0 -120
- package/node_modules/ibm_db/test/test-pool-connect.js +0 -36
- package/node_modules/ibm_db/test/test-pool-rollbackTransaction.js +0 -35
- package/node_modules/ibm_db/test/test-prepareSync-bad-sql.js +0 -34
- package/node_modules/ibm_db/test/test-promise-open-close.js +0 -33
- package/node_modules/ibm_db/test/test-query-create-table-fetchSync.js +0 -23
- package/node_modules/ibm_db/test/test-query-create-table.js +0 -12
- package/node_modules/ibm_db/test/test-query-drop-table.js +0 -13
- package/node_modules/ibm_db/test/test-query-insert.js +0 -38
- package/node_modules/ibm_db/test/test-query-select-fetch.js +0 -21
- package/node_modules/ibm_db/test/test-query-select-fetchMode-array.js +0 -17
- package/node_modules/ibm_db/test/test-query-select.js +0 -64
- package/node_modules/ibm_db/test/test-queryResult.js +0 -35
- package/node_modules/ibm_db/test/test-queryStream.js +0 -43
- package/node_modules/ibm_db/test/test-querySync-select-with-exception.js +0 -25
- package/node_modules/ibm_db/test/test-querySync-select.js +0 -28
- package/node_modules/ibm_db/test/test-require-and-end.js +0 -8
- package/node_modules/ibm_db/test/test-statement-close.js +0 -118
- package/node_modules/ibm_db/test/test-transaction-commit-sync.js +0 -54
- package/node_modules/ibm_db/test/test-transaction-commit.js +0 -79
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, ibmdb = require("../")
|
|
3
|
-
, assert = require("assert")
|
|
4
|
-
, cn = common.connectionString;
|
|
5
|
-
|
|
6
|
-
ibmdb.open(cn).then(function(conn) {
|
|
7
|
-
return conn;
|
|
8
|
-
}, function(err) {
|
|
9
|
-
console.log(err)
|
|
10
|
-
})
|
|
11
|
-
.then(function(conn) {
|
|
12
|
-
try { conn.querySync("drop table mytab1"); } catch(e) {}
|
|
13
|
-
conn.querySync("create table mytab1 (c1 int, c2 SMALLINT, c3 BIGINT, c4 INTEGER, c5 DECIMAL(3), c6 NUM, c7 float, c8 double, c9 decfloat, c10 char(10), c11 varchar(10), c12 char for bit data, c13 clob(10), c14 date, c15 time, c16 timestamp, c17 blob(10))");
|
|
14
|
-
conn.querySync("insert into mytab1 values (1, 2, 456736789, 1234, 67.98, 5689, 56.2390, 34567890, 45.234, 'bimal', 'kumar', '\x50', 'jha123456', '2015-09-10', '10:16:33', '2015-09-10 10:16:33.770139', BLOB(x'616263'))");
|
|
15
|
-
conn.query("select * from mytab1").then(function(data) {
|
|
16
|
-
console.log(data);
|
|
17
|
-
conn.querySync("drop table mytab1");
|
|
18
|
-
conn.closeSync();
|
|
19
|
-
|
|
20
|
-
assert.deepEqual(data,
|
|
21
|
-
[ { C1: 1,
|
|
22
|
-
C2: 2,
|
|
23
|
-
C3: '456736789',
|
|
24
|
-
C4: 1234,
|
|
25
|
-
C5: '67',
|
|
26
|
-
C6: '5689',
|
|
27
|
-
C7: 56.239,
|
|
28
|
-
C8: 34567890,
|
|
29
|
-
C9: '45.234',
|
|
30
|
-
C10: 'bimal ',
|
|
31
|
-
C11: 'kumar',
|
|
32
|
-
C12: Buffer.from([0x50]),
|
|
33
|
-
C13: 'jha123456',
|
|
34
|
-
C14: '2015-09-10',
|
|
35
|
-
C15: '10:16:33',
|
|
36
|
-
C16: '2015-09-10 10:16:33.770139',
|
|
37
|
-
C17: Buffer.from([0x61, 0x62, 0x63]) } ]);
|
|
38
|
-
|
|
39
|
-
}, function(err) {
|
|
40
|
-
console.log(err);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, ibmdb = require("../")
|
|
3
|
+
, assert = require("assert")
|
|
4
|
+
, cn = common.connectionString;
|
|
5
|
+
|
|
6
|
+
ibmdb.open(cn).then(function(conn) {
|
|
7
|
+
return conn;
|
|
8
|
+
}, function(err) {
|
|
9
|
+
console.log(err)
|
|
10
|
+
})
|
|
11
|
+
.then(function(conn) {
|
|
12
|
+
try { conn.querySync("drop table mytab1"); } catch(e) {}
|
|
13
|
+
conn.querySync("create table mytab1 (c1 int, c2 SMALLINT, c3 BIGINT, c4 INTEGER, c5 DECIMAL(3), c6 NUM, c7 float, c8 double, c9 decfloat, c10 char(10), c11 varchar(10), c12 char for bit data, c13 clob(10), c14 date, c15 time, c16 timestamp, c17 blob(10))");
|
|
14
|
+
conn.querySync("insert into mytab1 values (1, 2, 456736789, 1234, 67.98, 5689, 56.2390, 34567890, 45.234, 'bimal', 'kumar', '\x50', 'jha123456', '2015-09-10', '10:16:33', '2015-09-10 10:16:33.770139', BLOB(x'616263'))");
|
|
15
|
+
conn.query("select * from mytab1").then(function(data) {
|
|
16
|
+
console.log(data);
|
|
17
|
+
conn.querySync("drop table mytab1");
|
|
18
|
+
conn.closeSync();
|
|
19
|
+
|
|
20
|
+
assert.deepEqual(data,
|
|
21
|
+
[ { C1: 1,
|
|
22
|
+
C2: 2,
|
|
23
|
+
C3: '456736789',
|
|
24
|
+
C4: 1234,
|
|
25
|
+
C5: '67',
|
|
26
|
+
C6: '5689',
|
|
27
|
+
C7: 56.239,
|
|
28
|
+
C8: 34567890,
|
|
29
|
+
C9: '45.234',
|
|
30
|
+
C10: 'bimal ',
|
|
31
|
+
C11: 'kumar',
|
|
32
|
+
C12: Buffer.from([0x50]),
|
|
33
|
+
C13: 'jha123456',
|
|
34
|
+
C14: '2015-09-10',
|
|
35
|
+
C15: '10:16:33',
|
|
36
|
+
C16: '2015-09-10 10:16:33.770139',
|
|
37
|
+
C17: Buffer.from([0x61, 0x62, 0x63]) } ]);
|
|
38
|
+
|
|
39
|
+
}, function(err) {
|
|
40
|
+
console.log(err);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
// Consolidated query operations test: query (async/sync/promise), queryResult,
|
|
2
|
+
// queryStream, fetchMode (object/array), insert, DDL, error handling.
|
|
3
|
+
// Replaces: test-query-select, test-querySync-select, test-querySync-select-with-exception,
|
|
4
|
+
// test-query-select-fetch, test-query-select-fetchMode-array, test-query-insert,
|
|
5
|
+
// test-query-create-table, test-query-create-table-fetchSync, test-query-drop-table,
|
|
6
|
+
// test-queryResult, test-queryStream.
|
|
7
|
+
|
|
8
|
+
var common = require("./common")
|
|
9
|
+
, ibmdb = require("../")
|
|
10
|
+
, assert = require("assert")
|
|
11
|
+
, os = require("os")
|
|
12
|
+
, cn = common.connectionString
|
|
13
|
+
;
|
|
14
|
+
|
|
15
|
+
var passed = 0, failed = 0;
|
|
16
|
+
|
|
17
|
+
function ok(label) { passed++; console.log(" PASS: " + label); }
|
|
18
|
+
function fail(label, detail) { failed++; console.log(" FAIL: " + label + " " + (detail || "")); }
|
|
19
|
+
|
|
20
|
+
main();
|
|
21
|
+
|
|
22
|
+
async function main() {
|
|
23
|
+
var conn;
|
|
24
|
+
try {
|
|
25
|
+
conn = await ibmdb.open(cn);
|
|
26
|
+
} catch(e) {
|
|
27
|
+
console.log("Connection failed:", e);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
await testQuerySyncSelect(conn);
|
|
32
|
+
await testQuerySyncFetchModes(conn);
|
|
33
|
+
await testQuerySyncException(conn);
|
|
34
|
+
await testQueryAsyncCallback(conn);
|
|
35
|
+
await testQueryAsyncPromise(conn);
|
|
36
|
+
await testQueryResultAndFetch(conn);
|
|
37
|
+
await testQueryResultSync(conn);
|
|
38
|
+
await testQueryStreamSuccess(conn);
|
|
39
|
+
await testQueryStreamError(conn);
|
|
40
|
+
await testQueryInsert(conn);
|
|
41
|
+
await testQueryDDL(conn);
|
|
42
|
+
await testQueryWithParams(conn);
|
|
43
|
+
await testDuplicateColumnNames(conn);
|
|
44
|
+
await testColumnAlias(conn);
|
|
45
|
+
await testMultiStatementError(conn);
|
|
46
|
+
await testGetSQLError(conn);
|
|
47
|
+
await testParamTypeObject(conn);
|
|
48
|
+
await testMixedAliasColumns(conn);
|
|
49
|
+
await testFinalTableInsert(conn);
|
|
50
|
+
await testQueryResultWithParams(conn);
|
|
51
|
+
|
|
52
|
+
await conn.close();
|
|
53
|
+
console.log("\n===== Query Operations Tests: %d passed, %d failed =====", passed, failed);
|
|
54
|
+
process.exit(failed ? 1 : 0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// querySync: basic select with object mode
|
|
58
|
+
async function testQuerySyncSelect(conn) {
|
|
59
|
+
console.log("\n[testQuerySyncSelect]");
|
|
60
|
+
try {
|
|
61
|
+
var data = conn.querySync("select 1 as \"COLINT\", 'some test' as \"COLTEXT\" FROM SYSIBM.SYSDUMMY1");
|
|
62
|
+
assert.deepEqual(data, [{ COLINT: 1, COLTEXT: 'some test' }]);
|
|
63
|
+
ok("querySync returns object row");
|
|
64
|
+
} catch(e) { fail("querySync select", e.message); }
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// querySync: fetch modes (array and object)
|
|
68
|
+
async function testQuerySyncFetchModes(conn) {
|
|
69
|
+
console.log("\n[testQuerySyncFetchModes]");
|
|
70
|
+
try {
|
|
71
|
+
conn.fetchMode = 3; // FETCH_ARRAY
|
|
72
|
+
var data = conn.querySync("select 1, 2, 3 from sysibm.sysdummy1");
|
|
73
|
+
assert.deepEqual(data, [[1, 2, 3]]);
|
|
74
|
+
ok("querySync with FETCH_ARRAY mode");
|
|
75
|
+
|
|
76
|
+
conn.fetchMode = 4; // FETCH_OBJECT (default)
|
|
77
|
+
data = conn.querySync("select 1 as COL1 from sysibm.sysdummy1");
|
|
78
|
+
assert.deepEqual(data, [{ COL1: 1 }]);
|
|
79
|
+
ok("querySync with FETCH_OBJECT mode");
|
|
80
|
+
} catch(e) {
|
|
81
|
+
fail("querySync fetch modes", e.message);
|
|
82
|
+
} finally {
|
|
83
|
+
conn.fetchMode = 4;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// querySync: invalid SQL returns error object or throws
|
|
88
|
+
async function testQuerySyncException(conn) {
|
|
89
|
+
console.log("\n[testQuerySyncException]");
|
|
90
|
+
var err = null;
|
|
91
|
+
try {
|
|
92
|
+
err = conn.querySync("select invalid query");
|
|
93
|
+
} catch(e) {
|
|
94
|
+
err = e;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
assert.ok(err, "querySync should produce an error for bad SQL");
|
|
98
|
+
assert.ok(typeof err.sqlcode === 'number', "sqlcode should be a number");
|
|
99
|
+
assert.ok(typeof err.sqlstate === 'string' && err.sqlstate.length > 0);
|
|
100
|
+
assert.ok(err.error || err.message, "should have error or message property");
|
|
101
|
+
if (err instanceof Error) {
|
|
102
|
+
assert.ok(err.message.length > 0);
|
|
103
|
+
} else {
|
|
104
|
+
assert.equal(err.error, "[node-ibm_db] Error in ODBCConnection::QuerySync while executing query.");
|
|
105
|
+
}
|
|
106
|
+
ok("querySync returns error with sqlcode and sqlstate");
|
|
107
|
+
} catch(e) { fail("querySync exception", e.message); }
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// query: async callback style
|
|
111
|
+
async function testQueryAsyncCallback(conn) {
|
|
112
|
+
console.log("\n[testQueryAsyncCallback]");
|
|
113
|
+
return new Promise(function(resolve) {
|
|
114
|
+
conn.query("select 1 as COLINT, 'hello' as COLTEXT from sysibm.sysdummy1", function(err, data) {
|
|
115
|
+
try {
|
|
116
|
+
assert.equal(err, null);
|
|
117
|
+
assert.equal(data.length, 1);
|
|
118
|
+
assert.equal(data[0].COLINT, '1');
|
|
119
|
+
assert.equal(data[0].COLTEXT, 'hello');
|
|
120
|
+
ok("query async callback returns data");
|
|
121
|
+
} catch(e) { fail("query async callback", e.message); }
|
|
122
|
+
resolve();
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// query: promise style
|
|
128
|
+
async function testQueryAsyncPromise(conn) {
|
|
129
|
+
console.log("\n[testQueryAsyncPromise]");
|
|
130
|
+
try {
|
|
131
|
+
var data = await conn.query("select 42 as NUM from sysibm.sysdummy1");
|
|
132
|
+
assert.equal(data[0].NUM, '42');
|
|
133
|
+
ok("query with promise returns data");
|
|
134
|
+
} catch(e) { fail("query promise", e.message); }
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// queryResult + fetch (callback)
|
|
138
|
+
async function testQueryResultAndFetch(conn) {
|
|
139
|
+
console.log("\n[testQueryResultAndFetch]");
|
|
140
|
+
return new Promise(function(resolve) {
|
|
141
|
+
var query = { sql: "select 1 as COLINT, 'test' as COLTEXT FROM SYSIBM.SYSDUMMY1" };
|
|
142
|
+
conn.queryResult(query, function(err, result) {
|
|
143
|
+
try {
|
|
144
|
+
assert.equal(err, null);
|
|
145
|
+
assert.equal(result.constructor.name, "ODBCResult");
|
|
146
|
+
} catch(e) { fail("queryResult", e.message); resolve(); return; }
|
|
147
|
+
|
|
148
|
+
result.fetch(function(err, data) {
|
|
149
|
+
try {
|
|
150
|
+
assert.equal(err, null);
|
|
151
|
+
assert.deepEqual(data, { COLINT: '1', COLTEXT: 'test' });
|
|
152
|
+
ok("queryResult + fetch returns single row");
|
|
153
|
+
} catch(e) { fail("queryResult fetch", e.message); }
|
|
154
|
+
|
|
155
|
+
// Verify metadata
|
|
156
|
+
try {
|
|
157
|
+
var meta = result.getColumnMetadataSync();
|
|
158
|
+
assert.ok(Array.isArray(meta));
|
|
159
|
+
assert.ok(meta.length >= 2);
|
|
160
|
+
ok("getColumnMetadataSync returns column info");
|
|
161
|
+
} catch(e) { fail("getColumnMetadataSync", e.message); }
|
|
162
|
+
|
|
163
|
+
result.closeSync();
|
|
164
|
+
resolve();
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// queryResultSync
|
|
171
|
+
async function testQueryResultSync(conn) {
|
|
172
|
+
console.log("\n[testQueryResultSync]");
|
|
173
|
+
try {
|
|
174
|
+
var result = conn.queryResultSync("select 'abc' as C1 from sysibm.sysdummy1");
|
|
175
|
+
assert.equal(result.constructor.name, "ODBCResult");
|
|
176
|
+
var data = result.fetchAllSync();
|
|
177
|
+
assert.deepEqual(data, [{ C1: 'abc' }]);
|
|
178
|
+
result.closeSync();
|
|
179
|
+
ok("queryResultSync + fetchAllSync");
|
|
180
|
+
} catch(e) { fail("queryResultSync", e.message); }
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// queryStream: success case
|
|
184
|
+
async function testQueryStreamSuccess(conn) {
|
|
185
|
+
console.log("\n[testQueryStreamSuccess]");
|
|
186
|
+
return new Promise(function(resolve) {
|
|
187
|
+
var sql = "select 1 as COLINT, 'stream' as COLTEXT FROM SYSIBM.SYSDUMMY1";
|
|
188
|
+
var stream = conn.queryStream(sql);
|
|
189
|
+
var rows = [];
|
|
190
|
+
|
|
191
|
+
stream.on('data', function(data) {
|
|
192
|
+
rows.push(data);
|
|
193
|
+
}).on('error', function(err) {
|
|
194
|
+
fail("queryStream success case got error", err.message);
|
|
195
|
+
resolve();
|
|
196
|
+
}).on('end', function() {
|
|
197
|
+
try {
|
|
198
|
+
assert.equal(rows.length, 1);
|
|
199
|
+
assert.deepEqual(rows[0], { COLINT: '1', COLTEXT: 'stream' });
|
|
200
|
+
ok("queryStream emits data and end");
|
|
201
|
+
} catch(e) { fail("queryStream data", e.message); }
|
|
202
|
+
resolve();
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// queryStream: error case (bad SQL)
|
|
208
|
+
async function testQueryStreamError(conn) {
|
|
209
|
+
console.log("\n[testQueryStreamError]");
|
|
210
|
+
return new Promise(function(resolve) {
|
|
211
|
+
var stream = conn.queryStream("wrong query syntax");
|
|
212
|
+
stream.once('data', function() {
|
|
213
|
+
fail("queryStream error case should not emit data");
|
|
214
|
+
resolve();
|
|
215
|
+
}).once('error', function(err) {
|
|
216
|
+
try {
|
|
217
|
+
assert.ok(err instanceof Error);
|
|
218
|
+
assert.ok(typeof err.sqlcode === 'number');
|
|
219
|
+
assert.ok(typeof err.sqlstate === 'string' && err.sqlstate.length > 0);
|
|
220
|
+
ok("queryStream emits Error with sqlcode/sqlstate");
|
|
221
|
+
} catch(e) { fail("queryStream error", e.message); }
|
|
222
|
+
resolve();
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Insert and verify with query
|
|
228
|
+
async function testQueryInsert(conn) {
|
|
229
|
+
console.log("\n[testQueryInsert]");
|
|
230
|
+
try {
|
|
231
|
+
await conn.query("drop table qtesttab").catch(function() {});
|
|
232
|
+
await conn.query("create table qtesttab (COLINT INTEGER, COLTEXT VARCHAR(50))");
|
|
233
|
+
await conn.query("insert into qtesttab values (1, 'first')");
|
|
234
|
+
await conn.query("insert into qtesttab values (2, 'second')");
|
|
235
|
+
await conn.query("insert into qtesttab values (3, 'third')");
|
|
236
|
+
|
|
237
|
+
var data = conn.querySync("select * from qtesttab order by COLINT");
|
|
238
|
+
assert.equal(data.length, 3);
|
|
239
|
+
assert.equal(data[0].COLINT, 1);
|
|
240
|
+
assert.equal(data[0].COLTEXT, 'first');
|
|
241
|
+
assert.equal(data[2].COLINT, 3);
|
|
242
|
+
ok("insert and select verify data");
|
|
243
|
+
|
|
244
|
+
await conn.query("drop table qtesttab");
|
|
245
|
+
ok("drop table after insert");
|
|
246
|
+
} catch(e) { fail("query insert", e.message); }
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// DDL: create table via queryResult and fetchAllSync on DDL
|
|
250
|
+
async function testQueryDDL(conn) {
|
|
251
|
+
console.log("\n[testQueryDDL]");
|
|
252
|
+
return new Promise(function(resolve) {
|
|
253
|
+
conn.querySync("drop table ddltest").toString(); // ignore error
|
|
254
|
+
conn.queryResult("create table ddltest (C1 INTEGER, C2 VARCHAR(10))", function(err, result) {
|
|
255
|
+
try {
|
|
256
|
+
// DDL may or may not return result depending on driver
|
|
257
|
+
if (result) {
|
|
258
|
+
try {
|
|
259
|
+
var data = result.fetchAllSync();
|
|
260
|
+
// DDL returns empty result
|
|
261
|
+
assert.deepEqual(data, []);
|
|
262
|
+
} catch(e) { /* fetchAllSync on DDL may throw */ }
|
|
263
|
+
result.closeSync();
|
|
264
|
+
}
|
|
265
|
+
ok("DDL via queryResult does not crash");
|
|
266
|
+
} catch(e) { fail("DDL queryResult", e.message); }
|
|
267
|
+
|
|
268
|
+
conn.querySync("drop table ddltest");
|
|
269
|
+
resolve();
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Query with parameterized values
|
|
275
|
+
async function testQueryWithParams(conn) {
|
|
276
|
+
console.log("\n[testQueryWithParams]");
|
|
277
|
+
try {
|
|
278
|
+
await conn.query("drop table paramtab").catch(function() {});
|
|
279
|
+
await conn.query("create table paramtab (C1 INTEGER, C2 VARCHAR(20))");
|
|
280
|
+
await conn.query("insert into paramtab values (?, ?)", [10, 'hello']);
|
|
281
|
+
await conn.query("insert into paramtab values (?, ?)", [20, 'world']);
|
|
282
|
+
|
|
283
|
+
var data = conn.querySync("select * from paramtab order by C1");
|
|
284
|
+
assert.equal(data.length, 2);
|
|
285
|
+
assert.equal(data[0].C1, 10);
|
|
286
|
+
assert.equal(data[0].C2, 'hello');
|
|
287
|
+
assert.equal(data[1].C1, 20);
|
|
288
|
+
assert.equal(data[1].C2, 'world');
|
|
289
|
+
ok("query with parameter markers");
|
|
290
|
+
|
|
291
|
+
await conn.query("drop table paramtab");
|
|
292
|
+
} catch(e) { fail("query with params", e.message); }
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Duplicate column names
|
|
296
|
+
async function testDuplicateColumnNames(conn) {
|
|
297
|
+
console.log("\n[testDuplicateColumnNames]");
|
|
298
|
+
try {
|
|
299
|
+
var data = await conn.query("select 'text 1' as name, 'text 2' as name from SYSIBM.SYSDUMMY1");
|
|
300
|
+
assert.equal(data.length, 1);
|
|
301
|
+
// With duplicate names, second column gets a suffix
|
|
302
|
+
ok("duplicate column names handled without crash");
|
|
303
|
+
} catch(e) { fail("duplicate column names", e.message); }
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Column alias
|
|
307
|
+
async function testColumnAlias(conn) {
|
|
308
|
+
console.log("\n[testColumnAlias]");
|
|
309
|
+
try {
|
|
310
|
+
var data = await conn.query("select 1 as \"COLINT\", 'some test' as \"COLTEXT\" FROM SYSIBM.SYSDUMMY1");
|
|
311
|
+
assert.deepEqual(data, [{ COLINT: '1', COLTEXT: 'some test' }]);
|
|
312
|
+
ok("column alias in async query");
|
|
313
|
+
} catch(e) { fail("column alias", e.message); }
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Multi-statement SQL should return error (issue #557)
|
|
317
|
+
async function testMultiStatementError(conn) {
|
|
318
|
+
console.log("\n[testMultiStatementError]");
|
|
319
|
+
try {
|
|
320
|
+
await conn.query("drop table mstab").catch(function() {});
|
|
321
|
+
// Query referencing non-existent table in multi-statement
|
|
322
|
+
var err = await conn.query("select * from mstab_nonexist; select 1 from sysibm.sysdummy1;")
|
|
323
|
+
.then(function() { return null; })
|
|
324
|
+
.catch(function(e) { return e; });
|
|
325
|
+
assert.ok(err, "multi-statement with bad table should error");
|
|
326
|
+
assert.ok(err.message.search("SQL0204N|42704") > 0 || err.message.length > 0);
|
|
327
|
+
ok("multi-statement SQL error detected");
|
|
328
|
+
} catch(e) { fail("multi-statement error", e.message); }
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// getSQLErrorSync from queryResult
|
|
332
|
+
async function testGetSQLError(conn) {
|
|
333
|
+
console.log("\n[testGetSQLError]");
|
|
334
|
+
try {
|
|
335
|
+
var result = conn.queryResultSync("select 1 as C1 from sysibm.sysdummy1");
|
|
336
|
+
var sqlErr = result.getSQLErrorSync();
|
|
337
|
+
// getSQLErrorSync returns {error, sqlcode, sqlstate} object
|
|
338
|
+
assert.ok(sqlErr !== null && sqlErr !== undefined);
|
|
339
|
+
assert.ok(typeof sqlErr.sqlcode === 'number');
|
|
340
|
+
result.fetchAllSync();
|
|
341
|
+
result.closeSync();
|
|
342
|
+
ok("getSQLErrorSync returns error object");
|
|
343
|
+
} catch(e) { fail("getSQLErrorSync", e.message); }
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Mixed aliased and unnamed columns
|
|
347
|
+
async function testMixedAliasColumns(conn) {
|
|
348
|
+
console.log("\n[testMixedAliasColumns]");
|
|
349
|
+
try {
|
|
350
|
+
var data = conn.querySync("select 'abc' as first, 'dcd' as second, 'efg', 'pqr', 'xyz' as last from SYSIBM.SYSDUMMY1");
|
|
351
|
+
assert.equal(data.length, 1);
|
|
352
|
+
assert.equal(data[0].FIRST, 'abc');
|
|
353
|
+
assert.equal(data[0].LAST, 'xyz');
|
|
354
|
+
ok("mixed aliased and unnamed columns");
|
|
355
|
+
} catch(e) { fail("mixed alias columns", e.message); }
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// select from final table (insert ...) — DB2-specific syntax
|
|
359
|
+
async function testFinalTableInsert(conn) {
|
|
360
|
+
console.log("\n[testFinalTableInsert]");
|
|
361
|
+
try {
|
|
362
|
+
await conn.query("drop table fintab").catch(function() {});
|
|
363
|
+
await conn.query("create table fintab (COLINT INTEGER, COLTEXT VARCHAR(50))");
|
|
364
|
+
var param1 = {ParamType: "IN", DataType: "SQL_CHAR", Data: 'rocket'};
|
|
365
|
+
var data = conn.querySync("select COLTEXT from final table (insert into fintab (COLTEXT) values (?))", [param1]);
|
|
366
|
+
assert.deepEqual(data, [{ COLTEXT: 'rocket' }]);
|
|
367
|
+
ok("select from final table (insert) with param");
|
|
368
|
+
await conn.query("drop table fintab");
|
|
369
|
+
} catch(e) { fail("final table insert", e.message); }
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// queryResult with parameter markers
|
|
373
|
+
async function testQueryResultWithParams(conn) {
|
|
374
|
+
console.log("\n[testQueryResultWithParams]");
|
|
375
|
+
return new Promise(function(resolve) {
|
|
376
|
+
conn.queryResult('select 1 as COL1 from sysibm.sysdummy1 where 1 = ?', [1], function(err, result) {
|
|
377
|
+
try {
|
|
378
|
+
assert.equal(err, null);
|
|
379
|
+
var data = result.fetchAllSync();
|
|
380
|
+
assert.equal(data.length, 1);
|
|
381
|
+
result.closeSync();
|
|
382
|
+
ok("queryResult with parameter markers");
|
|
383
|
+
} catch(e) { fail("queryResult with params", e.message); }
|
|
384
|
+
resolve();
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Query with ParamType as JSON object (CHAR type insert)
|
|
390
|
+
async function testParamTypeObject(conn) {
|
|
391
|
+
console.log("\n[testParamTypeObject]");
|
|
392
|
+
try {
|
|
393
|
+
await conn.query("drop table ptobj").catch(function() {});
|
|
394
|
+
await conn.query("create table ptobj (c1 int, c2 char(5))");
|
|
395
|
+
await conn.query("insert into ptobj values (?, ?)",
|
|
396
|
+
[1, { ParamType: 'INPUT', SQLType: 'CHAR', Data: 'ABCD' }]);
|
|
397
|
+
var data = conn.querySync("select * from ptobj");
|
|
398
|
+
assert.equal(data.length, 1);
|
|
399
|
+
assert.equal(data[0].C1, 1);
|
|
400
|
+
// CHAR(5) pads with space
|
|
401
|
+
assert.equal(data[0].C2.trim(), 'ABCD');
|
|
402
|
+
ok("ParamType as JSON object with SQLType:CHAR");
|
|
403
|
+
await conn.query("drop table ptobj");
|
|
404
|
+
} catch(e) { fail("ParamType object", e.message); }
|
|
405
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, ibmdb = require("../")
|
|
3
|
-
, assert = require("assert")
|
|
4
|
-
, cn = common.connectionString;
|
|
5
|
-
|
|
6
|
-
main();
|
|
7
|
-
async function main() {
|
|
8
|
-
try {
|
|
9
|
-
let conn = await ibmdb.open(cn);
|
|
10
|
-
await conn.query("create table mytab(c1 int, c2 varchar(10))");
|
|
11
|
-
await conn.query("insert into mytab values (?, ?)", [3, 'ibm']);
|
|
12
|
-
let stmt = await conn.prepare("select * from mytab");
|
|
13
|
-
let result = await stmt.execute();
|
|
14
|
-
data = await result.fetchAll();
|
|
15
|
-
console.log("result = ", data);
|
|
16
|
-
assert.deepEqual(data, [ { C1: 3, C2: 'ibm' } ]);
|
|
17
|
-
await result.close();
|
|
18
|
-
await stmt.close();
|
|
19
|
-
await conn.query("drop table mytab").catch((e) => {console.log(e);});
|
|
20
|
-
await conn.close();
|
|
21
|
-
} catch(e) {
|
|
22
|
-
console.log(e);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, ibmdb = require("../")
|
|
3
|
+
, assert = require("assert")
|
|
4
|
+
, cn = common.connectionString;
|
|
5
|
+
|
|
6
|
+
main();
|
|
7
|
+
async function main() {
|
|
8
|
+
try {
|
|
9
|
+
let conn = await ibmdb.open(cn);
|
|
10
|
+
await conn.query("create table mytab(c1 int, c2 varchar(10))");
|
|
11
|
+
await conn.query("insert into mytab values (?, ?)", [3, 'ibm']);
|
|
12
|
+
let stmt = await conn.prepare("select * from mytab");
|
|
13
|
+
let result = await stmt.execute();
|
|
14
|
+
data = await result.fetchAll();
|
|
15
|
+
console.log("result = ", data);
|
|
16
|
+
assert.deepEqual(data, [ { C1: 3, C2: 'ibm' } ]);
|
|
17
|
+
await result.close();
|
|
18
|
+
await stmt.close();
|
|
19
|
+
await conn.query("drop table mytab").catch((e) => {console.log(e);});
|
|
20
|
+
await conn.close();
|
|
21
|
+
} catch(e) {
|
|
22
|
+
console.log(e);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|