@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
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
// Consolidated transaction test: beginTransaction, commit, rollback (async/sync),
|
|
2
|
+
// via Database API and via ODBC binding level.
|
|
3
|
+
// Replaces: test-transaction-commit, test-transaction-commit-sync,
|
|
4
|
+
// test-binding-transaction-commit, test-binding-transaction-commitSync.
|
|
5
|
+
|
|
6
|
+
var common = require("./common")
|
|
7
|
+
, ibmdb = require("../")
|
|
8
|
+
, assert = require("assert")
|
|
9
|
+
, cn = common.connectionString
|
|
10
|
+
;
|
|
11
|
+
|
|
12
|
+
var passed = 0, failed = 0;
|
|
13
|
+
|
|
14
|
+
function ok(label) { passed++; console.log(" PASS: " + label); }
|
|
15
|
+
function fail(label, detail) { failed++; console.log(" FAIL: " + label + " " + (detail || "")); }
|
|
16
|
+
|
|
17
|
+
var TABLE = "TXN_TEST_TAB";
|
|
18
|
+
|
|
19
|
+
main();
|
|
20
|
+
|
|
21
|
+
async function main() {
|
|
22
|
+
var conn;
|
|
23
|
+
try {
|
|
24
|
+
conn = await ibmdb.open(cn);
|
|
25
|
+
} catch(e) {
|
|
26
|
+
console.log("Connection failed:", e);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
await setup(conn);
|
|
31
|
+
await testRollbackAsync(conn);
|
|
32
|
+
await testCommitAsync(conn);
|
|
33
|
+
await testRollbackSync(conn);
|
|
34
|
+
await testCommitSync(conn);
|
|
35
|
+
await testRollbackTransactionCallback(conn);
|
|
36
|
+
await testCommitTransactionCallback(conn);
|
|
37
|
+
await testBindingLevelTransaction(conn);
|
|
38
|
+
await testBindingLevelTransactionAsync(conn);
|
|
39
|
+
await cleanup(conn);
|
|
40
|
+
|
|
41
|
+
await conn.close();
|
|
42
|
+
console.log("\n===== Transaction Tests: %d passed, %d failed =====", passed, failed);
|
|
43
|
+
process.exit(failed ? 1 : 0);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function setup(conn) {
|
|
47
|
+
await conn.query("drop table " + TABLE).catch(function() {});
|
|
48
|
+
await conn.query("create table " + TABLE + " (C1 INTEGER, C2 VARCHAR(20))");
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function cleanup(conn) {
|
|
52
|
+
await conn.query("drop table " + TABLE).catch(function() {});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async function clearTable(conn) {
|
|
56
|
+
conn.querySync("delete from " + TABLE);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// beginTransaction + endTransaction(rollback=true) via callback
|
|
60
|
+
async function testRollbackAsync(conn) {
|
|
61
|
+
console.log("\n[testRollbackAsync]");
|
|
62
|
+
await clearTable(conn);
|
|
63
|
+
return new Promise(function(resolve) {
|
|
64
|
+
conn.beginTransaction(function(err) {
|
|
65
|
+
if (err) { fail("beginTransaction async", err.message); resolve(); return; }
|
|
66
|
+
|
|
67
|
+
conn.querySync("insert into " + TABLE + " values (1, 'rollback_test')");
|
|
68
|
+
|
|
69
|
+
conn.endTransaction(true, function(err) { // true = rollback
|
|
70
|
+
if (err) { fail("endTransaction rollback", err.message); resolve(); return; }
|
|
71
|
+
|
|
72
|
+
var data = conn.querySync("select * from " + TABLE);
|
|
73
|
+
try {
|
|
74
|
+
assert.deepEqual(data, []);
|
|
75
|
+
ok("async rollback: data not persisted");
|
|
76
|
+
} catch(e) { fail("async rollback verify", e.message); }
|
|
77
|
+
resolve();
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// beginTransaction + endTransaction(commit=false) via callback
|
|
84
|
+
async function testCommitAsync(conn) {
|
|
85
|
+
console.log("\n[testCommitAsync]");
|
|
86
|
+
await clearTable(conn);
|
|
87
|
+
return new Promise(function(resolve) {
|
|
88
|
+
conn.beginTransaction(function(err) {
|
|
89
|
+
if (err) { fail("beginTransaction async commit", err.message); resolve(); return; }
|
|
90
|
+
|
|
91
|
+
conn.querySync("insert into " + TABLE + " values (42, 'commit_test')");
|
|
92
|
+
|
|
93
|
+
conn.endTransaction(false, function(err) { // false = commit
|
|
94
|
+
if (err) { fail("endTransaction commit", err.message); resolve(); return; }
|
|
95
|
+
|
|
96
|
+
var data = conn.querySync("select * from " + TABLE);
|
|
97
|
+
try {
|
|
98
|
+
assert.deepEqual(data, [{ C1: 42, C2: 'commit_test' }]);
|
|
99
|
+
ok("async commit: data persisted");
|
|
100
|
+
} catch(e) { fail("async commit verify", e.message); }
|
|
101
|
+
resolve();
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// beginTransactionSync + rollbackTransactionSync
|
|
108
|
+
async function testRollbackSync(conn) {
|
|
109
|
+
console.log("\n[testRollbackSync]");
|
|
110
|
+
await clearTable(conn);
|
|
111
|
+
try {
|
|
112
|
+
conn.beginTransactionSync();
|
|
113
|
+
conn.querySync("insert into " + TABLE + " values (99, 'sync_rollback')");
|
|
114
|
+
conn.rollbackTransactionSync();
|
|
115
|
+
var data = conn.querySync("select * from " + TABLE);
|
|
116
|
+
assert.deepEqual(data, []);
|
|
117
|
+
ok("sync rollback: data not persisted");
|
|
118
|
+
} catch(e) { fail("sync rollback", e.message); }
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// beginTransactionSync + commitTransactionSync
|
|
122
|
+
async function testCommitSync(conn) {
|
|
123
|
+
console.log("\n[testCommitSync]");
|
|
124
|
+
await clearTable(conn);
|
|
125
|
+
try {
|
|
126
|
+
conn.beginTransactionSync();
|
|
127
|
+
conn.querySync("insert into " + TABLE + " values (77, 'sync_commit')");
|
|
128
|
+
conn.commitTransactionSync();
|
|
129
|
+
var data = conn.querySync("select * from " + TABLE);
|
|
130
|
+
assert.deepEqual(data, [{ C1: 77, C2: 'sync_commit' }]);
|
|
131
|
+
ok("sync commit: data persisted");
|
|
132
|
+
} catch(e) { fail("sync commit", e.message); }
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// rollbackTransaction via callback
|
|
136
|
+
async function testRollbackTransactionCallback(conn) {
|
|
137
|
+
console.log("\n[testRollbackTransactionCallback]");
|
|
138
|
+
await clearTable(conn);
|
|
139
|
+
return new Promise(function(resolve) {
|
|
140
|
+
conn.beginTransaction(function(err) {
|
|
141
|
+
if (err) { fail("beginTransaction for rollbackTransaction", err.message); resolve(); return; }
|
|
142
|
+
conn.querySync("insert into " + TABLE + " values (55, 'rollback_method')");
|
|
143
|
+
conn.rollbackTransaction(function(err) {
|
|
144
|
+
if (err) { fail("rollbackTransaction callback", err.message); resolve(); return; }
|
|
145
|
+
var data = conn.querySync("select * from " + TABLE);
|
|
146
|
+
try {
|
|
147
|
+
assert.deepEqual(data, []);
|
|
148
|
+
ok("rollbackTransaction callback: data not persisted");
|
|
149
|
+
} catch(e) { fail("rollbackTransaction verify", e.message); }
|
|
150
|
+
resolve();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// commitTransaction via callback
|
|
157
|
+
async function testCommitTransactionCallback(conn) {
|
|
158
|
+
console.log("\n[testCommitTransactionCallback]");
|
|
159
|
+
await clearTable(conn);
|
|
160
|
+
return new Promise(function(resolve) {
|
|
161
|
+
conn.beginTransaction(function(err) {
|
|
162
|
+
if (err) { fail("beginTransaction for commitTransaction", err.message); resolve(); return; }
|
|
163
|
+
conn.querySync("insert into " + TABLE + " values (88, 'commit_method')");
|
|
164
|
+
conn.commitTransaction(function(err) {
|
|
165
|
+
if (err) { fail("commitTransaction callback", err.message); resolve(); return; }
|
|
166
|
+
var data = conn.querySync("select * from " + TABLE);
|
|
167
|
+
try {
|
|
168
|
+
assert.deepEqual(data, [{ C1: 88, C2: 'commit_method' }]);
|
|
169
|
+
ok("commitTransaction callback: data persisted");
|
|
170
|
+
} catch(e) { fail("commitTransaction verify", e.message); }
|
|
171
|
+
resolve();
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Test via ODBC binding level (db.createConnection)
|
|
178
|
+
async function testBindingLevelTransaction(conn) {
|
|
179
|
+
console.log("\n[testBindingLevelTransaction]");
|
|
180
|
+
await clearTable(conn);
|
|
181
|
+
return new Promise(function(resolve) {
|
|
182
|
+
var db = new ibmdb.ODBC();
|
|
183
|
+
db.createConnection(function(err, rawConn) {
|
|
184
|
+
if (err) { fail("createConnection", err.message); resolve(); return; }
|
|
185
|
+
rawConn.openSync(cn);
|
|
186
|
+
|
|
187
|
+
try {
|
|
188
|
+
// Rollback test at binding level
|
|
189
|
+
rawConn.beginTransactionSync();
|
|
190
|
+
rawConn.querySync("insert into " + TABLE + " values (11, 'binding_rollback')");
|
|
191
|
+
rawConn.endTransactionSync(true); // rollback
|
|
192
|
+
var result = rawConn.querySync("select * from " + TABLE);
|
|
193
|
+
var data = result.fetchAllSync();
|
|
194
|
+
assert.deepEqual(data, []);
|
|
195
|
+
ok("binding level: endTransactionSync rollback");
|
|
196
|
+
|
|
197
|
+
// Commit test at binding level
|
|
198
|
+
rawConn.beginTransactionSync();
|
|
199
|
+
rawConn.querySync("insert into " + TABLE + " values (22, 'binding_commit')");
|
|
200
|
+
rawConn.endTransactionSync(false); // commit
|
|
201
|
+
result = rawConn.querySync("select * from " + TABLE);
|
|
202
|
+
data = result.fetchAllSync();
|
|
203
|
+
assert.deepEqual(data, [{ C1: 22, C2: 'binding_commit' }]);
|
|
204
|
+
ok("binding level: endTransactionSync commit");
|
|
205
|
+
} catch(e) { fail("binding level txn", e.message); }
|
|
206
|
+
|
|
207
|
+
rawConn.closeSync();
|
|
208
|
+
resolve();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Async binding-level transactions (createConnection + async beginTransaction/endTransaction)
|
|
214
|
+
async function testBindingLevelTransactionAsync(conn) {
|
|
215
|
+
console.log("\n[testBindingLevelTransactionAsync]");
|
|
216
|
+
await clearTable(conn);
|
|
217
|
+
return new Promise(function(resolve) {
|
|
218
|
+
var db = new ibmdb.ODBC();
|
|
219
|
+
db.createConnection(function(err, rawConn) {
|
|
220
|
+
if (err) { fail("createConnection async", err.message); resolve(); return; }
|
|
221
|
+
rawConn.openSync(cn);
|
|
222
|
+
|
|
223
|
+
rawConn.beginTransaction(function(err) {
|
|
224
|
+
if (err) { fail("binding async beginTransaction", err.message); rawConn.closeSync(); resolve(); return; }
|
|
225
|
+
|
|
226
|
+
rawConn.querySync("insert into " + TABLE + " values (33, 'async_binding_rb')");
|
|
227
|
+
|
|
228
|
+
rawConn.endTransaction(true, function(err) { // rollback
|
|
229
|
+
if (err) { fail("binding async rollback", err.message); rawConn.closeSync(); resolve(); return; }
|
|
230
|
+
|
|
231
|
+
var result = rawConn.querySync("select * from " + TABLE);
|
|
232
|
+
var data = result.fetchAllSync();
|
|
233
|
+
try {
|
|
234
|
+
assert.deepEqual(data, []);
|
|
235
|
+
ok("binding level async: endTransaction rollback");
|
|
236
|
+
} catch(e) { fail("binding async rollback verify", e.message); }
|
|
237
|
+
|
|
238
|
+
rawConn.beginTransaction(function(err) {
|
|
239
|
+
if (err) { fail("binding async beginTransaction 2", err.message); rawConn.closeSync(); resolve(); return; }
|
|
240
|
+
|
|
241
|
+
rawConn.querySync("insert into " + TABLE + " values (44, 'async_binding_cm')");
|
|
242
|
+
|
|
243
|
+
rawConn.endTransaction(false, function(err) { // commit
|
|
244
|
+
if (err) { fail("binding async commit", err.message); rawConn.closeSync(); resolve(); return; }
|
|
245
|
+
|
|
246
|
+
result = rawConn.querySync("select * from " + TABLE);
|
|
247
|
+
data = result.fetchAllSync();
|
|
248
|
+
try {
|
|
249
|
+
assert.deepEqual(data, [{ C1: 44, C2: 'async_binding_cm' }]);
|
|
250
|
+
ok("binding level async: endTransaction commit");
|
|
251
|
+
} catch(e) { fail("binding async commit verify", e.message); }
|
|
252
|
+
|
|
253
|
+
rawConn.closeSync();
|
|
254
|
+
resolve();
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
}
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
const exec = require('child_process').exec;
|
|
2
|
-
const execSync = require('child_process').execSync;
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
|
|
5
|
-
try { execSync('cd .. && npm install -g typescript'); } catch(e) { /* use local */ }
|
|
6
|
-
try { execSync('cd .. && npm install --save-dev @types/node'); } catch(e) { /* use local */ }
|
|
7
|
-
var yourscript = exec('npx tsc --skipLibCheck --types node quick-example.ts && node quick-example.js',
|
|
8
|
-
(error, stdout, stderr) => {
|
|
9
|
-
console.log(stdout);
|
|
10
|
-
console.log(stderr);
|
|
11
|
-
if (error !== null) {
|
|
12
|
-
console.log(`exec error: ${error}`);
|
|
13
|
-
} else {
|
|
14
|
-
try {
|
|
15
|
-
fs.unlinkSync('quick-example.js');
|
|
16
|
-
} catch (err) {
|
|
17
|
-
console.error('Error deleting file:', err);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
yourscript = exec('npx tsc --skipLibCheck --types node ../typescript/tests/test.ts && node ../typescript/tests/test.js',
|
|
23
|
-
(error, stdout, stderr) => {
|
|
24
|
-
console.log(stdout);
|
|
25
|
-
console.log(stderr);
|
|
26
|
-
if (error !== null) {
|
|
27
|
-
console.log(`exec error: ${error}`);
|
|
28
|
-
} else {
|
|
29
|
-
try {
|
|
30
|
-
fs.unlinkSync('../typescript/tests/test.js');
|
|
31
|
-
fs.unlinkSync('../typescript/ConnStr.js');
|
|
32
|
-
fs.unlinkSync('../typescript/DB2Error.js');
|
|
33
|
-
fs.unlinkSync('../typescript/Database.js');
|
|
34
|
-
fs.unlinkSync('../typescript/DescribeObject.js');
|
|
35
|
-
fs.unlinkSync('../typescript/ODBC.js');
|
|
36
|
-
fs.unlinkSync('../typescript/ODBCConnection.js');
|
|
37
|
-
fs.unlinkSync('../typescript/ODBCResult.js');
|
|
38
|
-
fs.unlinkSync('../typescript/ODBCStatement.js');
|
|
39
|
-
fs.unlinkSync('../typescript/Options.js');
|
|
40
|
-
fs.unlinkSync('../typescript/Pool.js');
|
|
41
|
-
fs.unlinkSync('../typescript/PoolOptions.js');
|
|
42
|
-
fs.unlinkSync('../typescript/attributes.js');
|
|
43
|
-
fs.unlinkSync('../typescript/index.js');
|
|
44
|
-
} catch (err) {
|
|
45
|
-
console.error('Error deleting file:', err);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
1
|
+
const exec = require('child_process').exec;
|
|
2
|
+
const execSync = require('child_process').execSync;
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
|
|
5
|
+
try { execSync('cd .. && npm install -g typescript'); } catch(e) { /* use local */ }
|
|
6
|
+
try { execSync('cd .. && npm install --save-dev @types/node'); } catch(e) { /* use local */ }
|
|
7
|
+
var yourscript = exec('npx tsc --skipLibCheck --types node quick-example.ts && node quick-example.js',
|
|
8
|
+
(error, stdout, stderr) => {
|
|
9
|
+
console.log(stdout);
|
|
10
|
+
console.log(stderr);
|
|
11
|
+
if (error !== null) {
|
|
12
|
+
console.log(`exec error: ${error}`);
|
|
13
|
+
} else {
|
|
14
|
+
try {
|
|
15
|
+
fs.unlinkSync('quick-example.js');
|
|
16
|
+
} catch (err) {
|
|
17
|
+
console.error('Error deleting file:', err);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
yourscript = exec('npx tsc --skipLibCheck --types node ../typescript/tests/test.ts && node ../typescript/tests/test.js',
|
|
23
|
+
(error, stdout, stderr) => {
|
|
24
|
+
console.log(stdout);
|
|
25
|
+
console.log(stderr);
|
|
26
|
+
if (error !== null) {
|
|
27
|
+
console.log(`exec error: ${error}`);
|
|
28
|
+
} else {
|
|
29
|
+
try {
|
|
30
|
+
fs.unlinkSync('../typescript/tests/test.js');
|
|
31
|
+
fs.unlinkSync('../typescript/ConnStr.js');
|
|
32
|
+
fs.unlinkSync('../typescript/DB2Error.js');
|
|
33
|
+
fs.unlinkSync('../typescript/Database.js');
|
|
34
|
+
fs.unlinkSync('../typescript/DescribeObject.js');
|
|
35
|
+
fs.unlinkSync('../typescript/ODBC.js');
|
|
36
|
+
fs.unlinkSync('../typescript/ODBCConnection.js');
|
|
37
|
+
fs.unlinkSync('../typescript/ODBCResult.js');
|
|
38
|
+
fs.unlinkSync('../typescript/ODBCStatement.js');
|
|
39
|
+
fs.unlinkSync('../typescript/Options.js');
|
|
40
|
+
fs.unlinkSync('../typescript/Pool.js');
|
|
41
|
+
fs.unlinkSync('../typescript/PoolOptions.js');
|
|
42
|
+
fs.unlinkSync('../typescript/attributes.js');
|
|
43
|
+
fs.unlinkSync('../typescript/index.js');
|
|
44
|
+
} catch (err) {
|
|
45
|
+
console.error('Error deleting file:', err);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, ibmdb = require("../")
|
|
3
|
-
, assert = require("assert")
|
|
4
|
-
, cn = common.connectionString
|
|
5
|
-
, isZOS = common.isZOS
|
|
6
|
-
, schema = common.connectionObject.CURRENTSCHEMA;
|
|
7
|
-
|
|
8
|
-
var query = "CaLL " + schema + ".PROC1(?, ?, ?)";
|
|
9
|
-
ibmdb.open(cn, function (err, conn) {
|
|
10
|
-
if (err) console.log(err);
|
|
11
|
-
assert.equal(err, null);
|
|
12
|
-
try {
|
|
13
|
-
if (isZOS) {
|
|
14
|
-
// The DROP PROCEDURE syntax on z/OS can only specify the name of the procedure to drop.
|
|
15
|
-
conn.querySync("drop procedure " + schema + ".PROC1");
|
|
16
|
-
} else {
|
|
17
|
-
conn.querySync("drop procedure " + schema + ".PROC1(INT, INT, XML)");
|
|
18
|
-
}
|
|
19
|
-
} catch (e) { }
|
|
20
|
-
|
|
21
|
-
if (isZOS) {
|
|
22
|
-
// CREATE OR REPLACE syntax is not supported on z/OS.
|
|
23
|
-
// When creating an SQL native procedure on z/OS, you will need to have a WLM environment
|
|
24
|
-
// defined for your system if you want to run the procedure in debugging mode.
|
|
25
|
-
// Adding "disable debug mode" to bypass this requirement.
|
|
26
|
-
conn.querySync("create procedure " + schema + ".PROC1 " +
|
|
27
|
-
"(IN v1 INTEGER, OUT v2 INTEGER, INOUT v3 XML) " +
|
|
28
|
-
"disable debug mode " +
|
|
29
|
-
"BEGIN set v2 = v1 + 1; set v3 = XMLPARSE(DOCUMENT'<name> xml </name>'); END");
|
|
30
|
-
} else {
|
|
31
|
-
conn.querySync("create or replace procedure " + schema + ".PROC1 " +
|
|
32
|
-
"(IN v1 INTEGER, OUT v2 INTEGER, INOUT v3 XML) " +
|
|
33
|
-
"BEGIN set v2 = v1 + 1; set v3 = XMLPARSE(DOCUMENT'<name> xml </name>'); END");
|
|
34
|
-
}
|
|
35
|
-
var param1 = { ParamType: "INPUT", DataType: 1, Data: 0 };
|
|
36
|
-
var param2 = { ParamType: "OUTPUT", DataType: 1, Data: 0 };
|
|
37
|
-
var param3 = { ParamType: "INOUT", DataType: "XML", Data: "<name> xml </name>", Length: 200 };
|
|
38
|
-
|
|
39
|
-
result = conn.querySync(query, [param1, param2, param3]);
|
|
40
|
-
console.log("Output Parameters V2 = ", result[0], ", V3 = ", result[1]);
|
|
41
|
-
|
|
42
|
-
if (isZOS) {
|
|
43
|
-
// The DROP PROCEDURE syntax on z/OS can only specify the name of the procedure to drop.
|
|
44
|
-
conn.querySync("drop procedure " + schema + ".PROC1");
|
|
45
|
-
} else {
|
|
46
|
-
conn.querySync("drop procedure " + schema + ".PROC1(INT, INT, XML)");
|
|
47
|
-
}
|
|
48
|
-
if (isZOS) {
|
|
49
|
-
// CREATE OR REPLACE syntax is not supported on z/OS. Drop PROCEDURE first.
|
|
50
|
-
// When creating an SQL native procedure on z/OS, you will need to have a WLM environment
|
|
51
|
-
// defined for your system if you want to run the procedure in debugging mode.
|
|
52
|
-
// Adding "disable debug mode" to bypass this requirement.
|
|
53
|
-
try {
|
|
54
|
-
conn.querySync("drop procedure " + schema + ".PROC2");
|
|
55
|
-
} catch (e) { }
|
|
56
|
-
conn.querySync("create procedure " + schema + ".PROC2 (IN v1 INTEGER) disable debug mode BEGIN END");
|
|
57
|
-
} else {
|
|
58
|
-
conn.querySync("create or replace procedure " + schema + ".PROC2 (IN v1 INTEGER) BEGIN END");
|
|
59
|
-
}
|
|
60
|
-
result = conn.querySync("call " + schema + ".PROC2(?)", [param1]);
|
|
61
|
-
assert.deepEqual(result, []);
|
|
62
|
-
if (isZOS) {
|
|
63
|
-
// The DROP PROCEDURE syntax on z/OS can only specify the name of the procedure to drop.
|
|
64
|
-
conn.querySync("drop procedure " + schema + ".PROC2");
|
|
65
|
-
} else {
|
|
66
|
-
conn.querySync("drop procedure " + schema + ".PROC2(INT)");
|
|
67
|
-
}
|
|
68
|
-
conn.closeSync();
|
|
69
|
-
console.log('done');
|
|
70
|
-
});
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, ibmdb = require("../")
|
|
3
|
+
, assert = require("assert")
|
|
4
|
+
, cn = common.connectionString
|
|
5
|
+
, isZOS = common.isZOS
|
|
6
|
+
, schema = common.connectionObject.CURRENTSCHEMA;
|
|
7
|
+
|
|
8
|
+
var query = "CaLL " + schema + ".PROC1(?, ?, ?)";
|
|
9
|
+
ibmdb.open(cn, function (err, conn) {
|
|
10
|
+
if (err) console.log(err);
|
|
11
|
+
assert.equal(err, null);
|
|
12
|
+
try {
|
|
13
|
+
if (isZOS) {
|
|
14
|
+
// The DROP PROCEDURE syntax on z/OS can only specify the name of the procedure to drop.
|
|
15
|
+
conn.querySync("drop procedure " + schema + ".PROC1");
|
|
16
|
+
} else {
|
|
17
|
+
conn.querySync("drop procedure " + schema + ".PROC1(INT, INT, XML)");
|
|
18
|
+
}
|
|
19
|
+
} catch (e) { }
|
|
20
|
+
|
|
21
|
+
if (isZOS) {
|
|
22
|
+
// CREATE OR REPLACE syntax is not supported on z/OS.
|
|
23
|
+
// When creating an SQL native procedure on z/OS, you will need to have a WLM environment
|
|
24
|
+
// defined for your system if you want to run the procedure in debugging mode.
|
|
25
|
+
// Adding "disable debug mode" to bypass this requirement.
|
|
26
|
+
conn.querySync("create procedure " + schema + ".PROC1 " +
|
|
27
|
+
"(IN v1 INTEGER, OUT v2 INTEGER, INOUT v3 XML) " +
|
|
28
|
+
"disable debug mode " +
|
|
29
|
+
"BEGIN set v2 = v1 + 1; set v3 = XMLPARSE(DOCUMENT'<name> xml </name>'); END");
|
|
30
|
+
} else {
|
|
31
|
+
conn.querySync("create or replace procedure " + schema + ".PROC1 " +
|
|
32
|
+
"(IN v1 INTEGER, OUT v2 INTEGER, INOUT v3 XML) " +
|
|
33
|
+
"BEGIN set v2 = v1 + 1; set v3 = XMLPARSE(DOCUMENT'<name> xml </name>'); END");
|
|
34
|
+
}
|
|
35
|
+
var param1 = { ParamType: "INPUT", DataType: 1, Data: 0 };
|
|
36
|
+
var param2 = { ParamType: "OUTPUT", DataType: 1, Data: 0 };
|
|
37
|
+
var param3 = { ParamType: "INOUT", DataType: "XML", Data: "<name> xml </name>", Length: 200 };
|
|
38
|
+
|
|
39
|
+
result = conn.querySync(query, [param1, param2, param3]);
|
|
40
|
+
console.log("Output Parameters V2 = ", result[0], ", V3 = ", result[1]);
|
|
41
|
+
|
|
42
|
+
if (isZOS) {
|
|
43
|
+
// The DROP PROCEDURE syntax on z/OS can only specify the name of the procedure to drop.
|
|
44
|
+
conn.querySync("drop procedure " + schema + ".PROC1");
|
|
45
|
+
} else {
|
|
46
|
+
conn.querySync("drop procedure " + schema + ".PROC1(INT, INT, XML)");
|
|
47
|
+
}
|
|
48
|
+
if (isZOS) {
|
|
49
|
+
// CREATE OR REPLACE syntax is not supported on z/OS. Drop PROCEDURE first.
|
|
50
|
+
// When creating an SQL native procedure on z/OS, you will need to have a WLM environment
|
|
51
|
+
// defined for your system if you want to run the procedure in debugging mode.
|
|
52
|
+
// Adding "disable debug mode" to bypass this requirement.
|
|
53
|
+
try {
|
|
54
|
+
conn.querySync("drop procedure " + schema + ".PROC2");
|
|
55
|
+
} catch (e) { }
|
|
56
|
+
conn.querySync("create procedure " + schema + ".PROC2 (IN v1 INTEGER) disable debug mode BEGIN END");
|
|
57
|
+
} else {
|
|
58
|
+
conn.querySync("create or replace procedure " + schema + ".PROC2 (IN v1 INTEGER) BEGIN END");
|
|
59
|
+
}
|
|
60
|
+
result = conn.querySync("call " + schema + ".PROC2(?)", [param1]);
|
|
61
|
+
assert.deepEqual(result, []);
|
|
62
|
+
if (isZOS) {
|
|
63
|
+
// The DROP PROCEDURE syntax on z/OS can only specify the name of the procedure to drop.
|
|
64
|
+
conn.querySync("drop procedure " + schema + ".PROC2");
|
|
65
|
+
} else {
|
|
66
|
+
conn.querySync("drop procedure " + schema + ".PROC2(INT)");
|
|
67
|
+
}
|
|
68
|
+
conn.closeSync();
|
|
69
|
+
console.log('done');
|
|
70
|
+
});
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, odbc = require("../")
|
|
3
|
-
, db = new odbc.Database()
|
|
4
|
-
, fs = require("fs");
|
|
5
|
-
|
|
6
|
-
db.open(common.connectionString, function(err)
|
|
7
|
-
{
|
|
8
|
-
if (err) {
|
|
9
|
-
console.error(err.message);
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
let app = function (req, res) {
|
|
13
|
-
if (req.url == "/close") {
|
|
14
|
-
db.closeSync();
|
|
15
|
-
db = null;
|
|
16
|
-
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
17
|
-
res.write("Web Application Ended.");
|
|
18
|
-
res.end();
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
var query = "select 1234 from sysibm.sysdummy1";
|
|
23
|
-
|
|
24
|
-
db && db.query(query, function(err, rows)
|
|
25
|
-
{
|
|
26
|
-
if (err) {
|
|
27
|
-
console.error(err.message);
|
|
28
|
-
}
|
|
29
|
-
console.log("Selected Data = ", rows);
|
|
30
|
-
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
31
|
-
res.write(JSON.stringify(rows));
|
|
32
|
-
res.end();
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Create options object of key and certificate for SSL connection.
|
|
37
|
-
// These key and cert files are generated by below command
|
|
38
|
-
// executed from "git bash" terminal on Windows:
|
|
39
|
-
// openssl req -nodes -new -x509 -keyout server.key -out server.cert
|
|
40
|
-
//
|
|
41
|
-
// set below environment variables to use it:
|
|
42
|
-
// IBM_DB_SSLKEY=../examples/server.key
|
|
43
|
-
// IBM_DB_SSLCERT=../exmaples/server.cert
|
|
44
|
-
const options = {
|
|
45
|
-
key: fs.readFileSync(process.env.IBM_DB_SSLKEY),
|
|
46
|
-
cert: fs.readFileSync(process.env.IBM_DB_SSLCERT)
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
require('https').createServer(options, app).listen(8082, "127.0.0.1");
|
|
50
|
-
console.log("App is listening on 127.0.0.1:8082");
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
process.on('uncaughtException', function (err) {
|
|
54
|
-
console.error('uncaughtException:' + err);
|
|
55
|
-
console.error(err.stack);
|
|
56
|
-
});
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, odbc = require("../")
|
|
3
|
+
, db = new odbc.Database()
|
|
4
|
+
, fs = require("fs");
|
|
5
|
+
|
|
6
|
+
db.open(common.connectionString, function(err)
|
|
7
|
+
{
|
|
8
|
+
if (err) {
|
|
9
|
+
console.error(err.message);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
let app = function (req, res) {
|
|
13
|
+
if (req.url == "/close") {
|
|
14
|
+
db.closeSync();
|
|
15
|
+
db = null;
|
|
16
|
+
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
17
|
+
res.write("Web Application Ended.");
|
|
18
|
+
res.end();
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var query = "select 1234 from sysibm.sysdummy1";
|
|
23
|
+
|
|
24
|
+
db && db.query(query, function(err, rows)
|
|
25
|
+
{
|
|
26
|
+
if (err) {
|
|
27
|
+
console.error(err.message);
|
|
28
|
+
}
|
|
29
|
+
console.log("Selected Data = ", rows);
|
|
30
|
+
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
31
|
+
res.write(JSON.stringify(rows));
|
|
32
|
+
res.end();
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Create options object of key and certificate for SSL connection.
|
|
37
|
+
// These key and cert files are generated by below command
|
|
38
|
+
// executed from "git bash" terminal on Windows:
|
|
39
|
+
// openssl req -nodes -new -x509 -keyout server.key -out server.cert
|
|
40
|
+
//
|
|
41
|
+
// set below environment variables to use it:
|
|
42
|
+
// IBM_DB_SSLKEY=../examples/server.key
|
|
43
|
+
// IBM_DB_SSLCERT=../exmaples/server.cert
|
|
44
|
+
const options = {
|
|
45
|
+
key: fs.readFileSync(process.env.IBM_DB_SSLKEY),
|
|
46
|
+
cert: fs.readFileSync(process.env.IBM_DB_SSLCERT)
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
require('https').createServer(options, app).listen(8082, "127.0.0.1");
|
|
50
|
+
console.log("App is listening on 127.0.0.1:8082");
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
process.on('uncaughtException', function (err) {
|
|
54
|
+
console.error('uncaughtException:' + err);
|
|
55
|
+
console.error(err.stack);
|
|
56
|
+
});
|