@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,59 +1,59 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, ibmdb = require("../")
|
|
3
|
-
, db = new ibmdb.ODBC()
|
|
4
|
-
, assert = require("assert")
|
|
5
|
-
, connStr = common.connectionString;
|
|
6
|
-
|
|
7
|
-
var sql = "insert into testtab (col1,col2) values('一二三四', '五六七八')";
|
|
8
|
-
|
|
9
|
-
ibmdb.open(connStr,(err,conn)=>{
|
|
10
|
-
if(err){ console.log(err); return; }
|
|
11
|
-
try {
|
|
12
|
-
conn.querySync('create table testtab (col1 VARCHAR(100), col2 VARCHAR(100))');
|
|
13
|
-
} catch(err) {console.log(err);}
|
|
14
|
-
|
|
15
|
-
// Insert Chinese characters in table using all possible ways.
|
|
16
|
-
conn.querySync(sql); // Insert Row1
|
|
17
|
-
var stmt = conn.prepareSync(sql);
|
|
18
|
-
stmt.executeSync(); // Insert Row2
|
|
19
|
-
stmt.closeSync();
|
|
20
|
-
conn.query(sql, function(err, data) { // Insert Row3
|
|
21
|
-
if(err){ console.log(err); return; }
|
|
22
|
-
conn.prepare(sql, function(err, stmt) {
|
|
23
|
-
if(err){ console.log(err); return; }
|
|
24
|
-
stmt.execute(function(err, data) { // Insert Row4
|
|
25
|
-
if(err){ console.log(err); return; }
|
|
26
|
-
stmt.closeSync();
|
|
27
|
-
|
|
28
|
-
// Create another connection using alternate way.
|
|
29
|
-
var conn2 = db.createConnectionSync();
|
|
30
|
-
conn2.openSync(connStr);
|
|
31
|
-
stmt = conn2.createStatementSync();
|
|
32
|
-
stmt.executeDirectSync(sql); // Insert Row5
|
|
33
|
-
stmt.prepareSync(sql);
|
|
34
|
-
console.log("Inserted row = ",stmt.executeNonQuerySync()); // Insert Row6
|
|
35
|
-
stmt.closeSync();
|
|
36
|
-
conn2.createStatement(function(err, stmt){
|
|
37
|
-
if(err){ console.log(err); return; }
|
|
38
|
-
stmt.executeDirect(sql, function(err, result){ // Insert Row7
|
|
39
|
-
if(err){ console.log(err); return; }
|
|
40
|
-
stmt.prepare(sql, function(err, result) { //dont use err, stmt here
|
|
41
|
-
stmt.executeNonQuery(function(err, rowCount){ // Insert Row8
|
|
42
|
-
if(err){ console.log(err); return; }
|
|
43
|
-
console.log("Inserted rowcount = ", rowCount);
|
|
44
|
-
stmt.closeSync();
|
|
45
|
-
var data = conn.querySync("select * from testtab");
|
|
46
|
-
console.log("Inserted rows = ", data);
|
|
47
|
-
conn2.querySync("drop table testtab");
|
|
48
|
-
conn2.closeSync();
|
|
49
|
-
conn.closeSync();
|
|
50
|
-
assert(data.length, 8);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, ibmdb = require("../")
|
|
3
|
+
, db = new ibmdb.ODBC()
|
|
4
|
+
, assert = require("assert")
|
|
5
|
+
, connStr = common.connectionString;
|
|
6
|
+
|
|
7
|
+
var sql = "insert into testtab (col1,col2) values('一二三四', '五六七八')";
|
|
8
|
+
|
|
9
|
+
ibmdb.open(connStr,(err,conn)=>{
|
|
10
|
+
if(err){ console.log(err); return; }
|
|
11
|
+
try {
|
|
12
|
+
conn.querySync('create table testtab (col1 VARCHAR(100), col2 VARCHAR(100))');
|
|
13
|
+
} catch(err) {console.log(err);}
|
|
14
|
+
|
|
15
|
+
// Insert Chinese characters in table using all possible ways.
|
|
16
|
+
conn.querySync(sql); // Insert Row1
|
|
17
|
+
var stmt = conn.prepareSync(sql);
|
|
18
|
+
stmt.executeSync(); // Insert Row2
|
|
19
|
+
stmt.closeSync();
|
|
20
|
+
conn.query(sql, function(err, data) { // Insert Row3
|
|
21
|
+
if(err){ console.log(err); return; }
|
|
22
|
+
conn.prepare(sql, function(err, stmt) {
|
|
23
|
+
if(err){ console.log(err); return; }
|
|
24
|
+
stmt.execute(function(err, data) { // Insert Row4
|
|
25
|
+
if(err){ console.log(err); return; }
|
|
26
|
+
stmt.closeSync();
|
|
27
|
+
|
|
28
|
+
// Create another connection using alternate way.
|
|
29
|
+
var conn2 = db.createConnectionSync();
|
|
30
|
+
conn2.openSync(connStr);
|
|
31
|
+
stmt = conn2.createStatementSync();
|
|
32
|
+
stmt.executeDirectSync(sql); // Insert Row5
|
|
33
|
+
stmt.prepareSync(sql);
|
|
34
|
+
console.log("Inserted row = ",stmt.executeNonQuerySync()); // Insert Row6
|
|
35
|
+
stmt.closeSync();
|
|
36
|
+
conn2.createStatement(function(err, stmt){
|
|
37
|
+
if(err){ console.log(err); return; }
|
|
38
|
+
stmt.executeDirect(sql, function(err, result){ // Insert Row7
|
|
39
|
+
if(err){ console.log(err); return; }
|
|
40
|
+
stmt.prepare(sql, function(err, result) { //dont use err, stmt here
|
|
41
|
+
stmt.executeNonQuery(function(err, rowCount){ // Insert Row8
|
|
42
|
+
if(err){ console.log(err); return; }
|
|
43
|
+
console.log("Inserted rowcount = ", rowCount);
|
|
44
|
+
stmt.closeSync();
|
|
45
|
+
var data = conn.querySync("select * from testtab");
|
|
46
|
+
console.log("Inserted rows = ", data);
|
|
47
|
+
conn2.querySync("drop table testtab");
|
|
48
|
+
conn2.closeSync();
|
|
49
|
+
conn.closeSync();
|
|
50
|
+
assert(data.length, 8);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
// Consolidated connection test: open/close (async, sync, promise), multi-connection,
|
|
2
|
+
// bad connection string, query on closed connection, connection object, connectTimeout.
|
|
3
|
+
// Replaces: test-open-close, test-openSync, test-global-open-close, test-connection-object,
|
|
4
|
+
// test-bad-connection-string, test-closed, test-multi-open-close, test-multi-openSync-closeSync,
|
|
5
|
+
// test-instantiate-one-and-end, test-require-and-end, test-promise-open-close,
|
|
6
|
+
// test-open-connectTimeout, test-binding-connection-timeOut.
|
|
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
|
+
await testInstantiateOnly();
|
|
24
|
+
await testQueryOnClosedConnection();
|
|
25
|
+
await testOpenCloseAsync();
|
|
26
|
+
await testOpenCloseSync();
|
|
27
|
+
await testOpenWithConnectionObject();
|
|
28
|
+
await testOpenClosePromise();
|
|
29
|
+
await testBadConnectionString();
|
|
30
|
+
await testConnectTimeout();
|
|
31
|
+
await testMultiOpenCloseAsync();
|
|
32
|
+
await testMultiOpenCloseSync();
|
|
33
|
+
await testGlobalOpenClose();
|
|
34
|
+
|
|
35
|
+
console.log("\n===== Connection Tests: %d passed, %d failed =====", passed, failed);
|
|
36
|
+
process.exit(failed ? 1 : 0);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Test: just instantiating Database should not keep process alive
|
|
40
|
+
async function testInstantiateOnly() {
|
|
41
|
+
console.log("\n[testInstantiateOnly]");
|
|
42
|
+
var db = new ibmdb.Database();
|
|
43
|
+
assert.equal(db.connected, false);
|
|
44
|
+
ok("Database instantiation without open does not hang");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Test: query on a connection that was never opened
|
|
48
|
+
async function testQueryOnClosedConnection() {
|
|
49
|
+
console.log("\n[testQueryOnClosedConnection]");
|
|
50
|
+
var db = new ibmdb.Database();
|
|
51
|
+
assert.equal(db.connected, false);
|
|
52
|
+
|
|
53
|
+
return new Promise(function(resolve) {
|
|
54
|
+
db.query("select 1 from sysibm.sysdummy1", function(err, rs, sqlca) {
|
|
55
|
+
try {
|
|
56
|
+
assert.deepEqual(err.message, 'Connection not open.');
|
|
57
|
+
assert.deepEqual(rs, []);
|
|
58
|
+
assert.equal(sqlca.sqlcode, -30081);
|
|
59
|
+
assert.equal(db.connected, false);
|
|
60
|
+
ok("query on unopened connection returns error");
|
|
61
|
+
} catch(e) {
|
|
62
|
+
fail("query on unopened connection", e.message);
|
|
63
|
+
}
|
|
64
|
+
resolve();
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Test: open and close with callbacks
|
|
70
|
+
async function testOpenCloseAsync() {
|
|
71
|
+
console.log("\n[testOpenCloseAsync]");
|
|
72
|
+
return new Promise(function(resolve) {
|
|
73
|
+
var db = new ibmdb.Database();
|
|
74
|
+
db.open(cn, function(err) {
|
|
75
|
+
try {
|
|
76
|
+
assert.equal(err, null);
|
|
77
|
+
assert.equal(db.connected, true);
|
|
78
|
+
} catch(e) { fail("async open", e.message); resolve(); return; }
|
|
79
|
+
|
|
80
|
+
db.close(function() {
|
|
81
|
+
try {
|
|
82
|
+
assert.equal(db.connected, false);
|
|
83
|
+
ok("open and close with callbacks");
|
|
84
|
+
} catch(e) { fail("async close", e.message); }
|
|
85
|
+
|
|
86
|
+
// Verify query after close fails
|
|
87
|
+
db.query("select 1 from sysibm.sysdummy1", function(err, rs, sqlca) {
|
|
88
|
+
try {
|
|
89
|
+
assert.deepEqual(err.message, 'Connection not open.');
|
|
90
|
+
assert.deepEqual(rs, []);
|
|
91
|
+
assert.equal(sqlca.sqlcode, -30081);
|
|
92
|
+
ok("query after close returns error");
|
|
93
|
+
} catch(e) { fail("query after close", e.message); }
|
|
94
|
+
resolve();
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Test: openSync / closeSync
|
|
102
|
+
async function testOpenCloseSync() {
|
|
103
|
+
console.log("\n[testOpenCloseSync]");
|
|
104
|
+
var db = new ibmdb.Database();
|
|
105
|
+
try {
|
|
106
|
+
db.openSync(cn);
|
|
107
|
+
assert.equal(db.connected, true);
|
|
108
|
+
db.closeSync();
|
|
109
|
+
assert.equal(db.connected, false);
|
|
110
|
+
ok("openSync and closeSync");
|
|
111
|
+
} catch(e) {
|
|
112
|
+
fail("openSync/closeSync", e.message);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Test: open with connection object (not string)
|
|
117
|
+
async function testOpenWithConnectionObject() {
|
|
118
|
+
console.log("\n[testOpenWithConnectionObject]");
|
|
119
|
+
return new Promise(function(resolve) {
|
|
120
|
+
var db = new ibmdb.Database();
|
|
121
|
+
db.open(common.connectionObject, function(err) {
|
|
122
|
+
try {
|
|
123
|
+
assert.equal(err, null);
|
|
124
|
+
assert.equal(db.connected, true);
|
|
125
|
+
var result = db.querySync("select 1 as COL1 from sysibm.sysdummy1");
|
|
126
|
+
assert.equal(result.length, 1);
|
|
127
|
+
ok("open with connectionObject");
|
|
128
|
+
} catch(e) { fail("open with connectionObject", e.message); }
|
|
129
|
+
db.close(function() { resolve(); });
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Test: open/close using Promises
|
|
135
|
+
async function testOpenClosePromise() {
|
|
136
|
+
console.log("\n[testOpenClosePromise]");
|
|
137
|
+
var db = new ibmdb.Database();
|
|
138
|
+
try {
|
|
139
|
+
// query before open should reject
|
|
140
|
+
var err = await db.query("select 1 from sysibm.sysdummy1").then(null, function(e) { return e; });
|
|
141
|
+
assert.deepEqual(err, { message: 'Connection not open.', sqlstate: '08001', sqlcode: -30081 });
|
|
142
|
+
assert.equal(db.connected, false);
|
|
143
|
+
ok("promise: query before open rejects");
|
|
144
|
+
|
|
145
|
+
await db.open(cn);
|
|
146
|
+
assert.equal(db.connected, true);
|
|
147
|
+
ok("promise: open resolves");
|
|
148
|
+
|
|
149
|
+
await db.close();
|
|
150
|
+
assert.equal(db.connected, false);
|
|
151
|
+
ok("promise: close resolves");
|
|
152
|
+
|
|
153
|
+
// query after close
|
|
154
|
+
err = await db.query("select 1 from sysibm.sysdummy1").then(null, function(e) { return e; });
|
|
155
|
+
assert.deepEqual(err, { message: 'Connection not open.', sqlstate: '08001', sqlcode: -30081 });
|
|
156
|
+
ok("promise: query after close rejects");
|
|
157
|
+
} catch(e) {
|
|
158
|
+
fail("promise open/close", e.message);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Test: bad connection string
|
|
163
|
+
async function testBadConnectionString() {
|
|
164
|
+
console.log("\n[testBadConnectionString]");
|
|
165
|
+
var db = new ibmdb.Database();
|
|
166
|
+
|
|
167
|
+
// Sync: should throw
|
|
168
|
+
try {
|
|
169
|
+
db.openSync("this is wrong");
|
|
170
|
+
fail("bad connstr sync should throw");
|
|
171
|
+
} catch(e) {
|
|
172
|
+
assert.equal(db.connected, false);
|
|
173
|
+
ok("openSync with bad connstr throws");
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Async: should return error with platform-specific message
|
|
177
|
+
return new Promise(function(resolve) {
|
|
178
|
+
db.open("this is wrong", function(err) {
|
|
179
|
+
try {
|
|
180
|
+
assert.ok(err);
|
|
181
|
+
assert.equal(db.connected, false);
|
|
182
|
+
if (/^win/.test(process.platform)) {
|
|
183
|
+
assert.ok(err.message.indexOf('SQL1024N') >= 0);
|
|
184
|
+
} else if (os.type() === "OS/390") {
|
|
185
|
+
assert.ok(/SQLCODE\s*=\s*-950/.test(err.message));
|
|
186
|
+
} else {
|
|
187
|
+
assert.ok(err.message.indexOf('SQL1024N') >= 0);
|
|
188
|
+
}
|
|
189
|
+
ok("open with bad connstr returns platform-specific error");
|
|
190
|
+
} catch(e) { fail("bad connstr async", e.message); }
|
|
191
|
+
resolve();
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Test: connectTimeout property
|
|
197
|
+
async function testConnectTimeout() {
|
|
198
|
+
console.log("\n[testConnectTimeout]");
|
|
199
|
+
try {
|
|
200
|
+
// Constructor option sets connectTimeout
|
|
201
|
+
var db = new ibmdb.Database({ connectTimeout: 10, systemNaming: true });
|
|
202
|
+
await db.open(cn);
|
|
203
|
+
assert.equal(db.conn.connectTimeout, 10);
|
|
204
|
+
assert.equal(db.conn.systemNaming, true);
|
|
205
|
+
assert.equal(db.connected, true);
|
|
206
|
+
ok("connectTimeout and systemNaming via constructor");
|
|
207
|
+
await db.close();
|
|
208
|
+
} catch(e) {
|
|
209
|
+
fail("connectTimeout", e.message);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Binding-level connectTimeout default and setter
|
|
213
|
+
return new Promise(function(resolve) {
|
|
214
|
+
var odbc = new ibmdb.ODBC();
|
|
215
|
+
odbc.createConnection(function(err, conn) {
|
|
216
|
+
if (err) { fail("binding createConnection", err.message); resolve(); return; }
|
|
217
|
+
try {
|
|
218
|
+
assert.equal(conn.connectTimeout, 30); // default is 30
|
|
219
|
+
conn.connectTimeout = 99;
|
|
220
|
+
assert.equal(conn.connectTimeout, 99);
|
|
221
|
+
ok("binding-level connectTimeout default and setter");
|
|
222
|
+
} catch(e) { fail("binding connectTimeout", e.message); }
|
|
223
|
+
|
|
224
|
+
try { conn.openSync(cn); conn.closeSync(); } catch(e) { /* DB may be unreachable */ }
|
|
225
|
+
resolve();
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Test: multiple async open/close in parallel
|
|
231
|
+
async function testMultiOpenCloseAsync() {
|
|
232
|
+
console.log("\n[testMultiOpenCloseAsync]");
|
|
233
|
+
var count = 5;
|
|
234
|
+
var connections = [];
|
|
235
|
+
|
|
236
|
+
return new Promise(function(resolve) {
|
|
237
|
+
var opened = 0;
|
|
238
|
+
var openFailed = false;
|
|
239
|
+
for (var x = 0; x < count; x++) {
|
|
240
|
+
(function() {
|
|
241
|
+
var db = new ibmdb.Database();
|
|
242
|
+
connections.push(db);
|
|
243
|
+
db.open(cn, function(err) {
|
|
244
|
+
if (err) {
|
|
245
|
+
if (!openFailed) { openFailed = true; fail("multi open async", err.message); resolve(); }
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
opened++;
|
|
249
|
+
if (opened === count) doClose();
|
|
250
|
+
});
|
|
251
|
+
})();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function doClose() {
|
|
255
|
+
var closed = 0;
|
|
256
|
+
connections.forEach(function(db) {
|
|
257
|
+
db.close(function() {
|
|
258
|
+
closed++;
|
|
259
|
+
if (closed === count) {
|
|
260
|
+
ok("multi open/close async (" + count + " connections)");
|
|
261
|
+
resolve();
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Test: multiple sync open/close
|
|
270
|
+
async function testMultiOpenCloseSync() {
|
|
271
|
+
console.log("\n[testMultiOpenCloseSync]");
|
|
272
|
+
var count = 5;
|
|
273
|
+
var connections = [];
|
|
274
|
+
|
|
275
|
+
try {
|
|
276
|
+
for (var x = 0; x < count; x++) {
|
|
277
|
+
var db = new ibmdb.Database();
|
|
278
|
+
db.openSync(cn);
|
|
279
|
+
assert.equal(db.connected, true);
|
|
280
|
+
connections.push(db);
|
|
281
|
+
}
|
|
282
|
+
connections.forEach(function(db) {
|
|
283
|
+
db.closeSync();
|
|
284
|
+
assert.equal(db.connected, false);
|
|
285
|
+
});
|
|
286
|
+
ok("multi openSync/closeSync (" + count + " connections)");
|
|
287
|
+
} catch(e) {
|
|
288
|
+
fail("multi sync open/close", e.message);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Test: global open helper (ibmdb.open)
|
|
293
|
+
async function testGlobalOpenClose() {
|
|
294
|
+
console.log("\n[testGlobalOpenClose]");
|
|
295
|
+
return new Promise(function(resolve) {
|
|
296
|
+
ibmdb.open(cn, function(err, conn) {
|
|
297
|
+
try {
|
|
298
|
+
assert.equal(err, null);
|
|
299
|
+
assert.equal(conn.constructor.name, 'Database');
|
|
300
|
+
assert.equal(conn.connected, true);
|
|
301
|
+
ok("ibmdb.open() global helper");
|
|
302
|
+
} catch(e) { fail("global open", e.message); }
|
|
303
|
+
conn.close(function() { resolve(); });
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, odbc = require("../")
|
|
3
|
-
, db = new odbc.Database()
|
|
4
|
-
, assert = require("assert")
|
|
5
|
-
;
|
|
6
|
-
|
|
7
|
-
db.open(common.connectionString, function(err) {
|
|
8
|
-
assert.equal(err, null);
|
|
9
|
-
assert.equal(db.connected, true);
|
|
10
|
-
|
|
11
|
-
var dt = new Date();
|
|
12
|
-
var dtString = dt.toISOString().replace('Z','').replace('T', ' ') + '000';
|
|
13
|
-
var sql = "SELECT cast('" + dtString + "' as timestamp) as DT1 FROM SYSIBM.SYSDUMMY1";
|
|
14
|
-
|
|
15
|
-
console.log(sql);
|
|
16
|
-
|
|
17
|
-
db.query(sql, function (err, data) {
|
|
18
|
-
assert.equal(err, null);
|
|
19
|
-
assert.equal(data.length, 1);
|
|
20
|
-
|
|
21
|
-
db.close(function () {
|
|
22
|
-
assert.equal(db.connected, false);
|
|
23
|
-
console.log(dt);
|
|
24
|
-
console.log(data);
|
|
25
|
-
|
|
26
|
-
//test selected data after the connection
|
|
27
|
-
//is closed, in case the assertion fails
|
|
28
|
-
assert.equal(data[0].DT1.constructor.name, "String", "DT1 is not an instance of a String object");
|
|
29
|
-
//assert.equal(data[0].DT1.getTime(), dt.getTime());
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, odbc = require("../")
|
|
3
|
+
, db = new odbc.Database()
|
|
4
|
+
, assert = require("assert")
|
|
5
|
+
;
|
|
6
|
+
|
|
7
|
+
db.open(common.connectionString, function(err) {
|
|
8
|
+
assert.equal(err, null);
|
|
9
|
+
assert.equal(db.connected, true);
|
|
10
|
+
|
|
11
|
+
var dt = new Date();
|
|
12
|
+
var dtString = dt.toISOString().replace('Z','').replace('T', ' ') + '000';
|
|
13
|
+
var sql = "SELECT cast('" + dtString + "' as timestamp) as DT1 FROM SYSIBM.SYSDUMMY1";
|
|
14
|
+
|
|
15
|
+
console.log(sql);
|
|
16
|
+
|
|
17
|
+
db.query(sql, function (err, data) {
|
|
18
|
+
assert.equal(err, null);
|
|
19
|
+
assert.equal(data.length, 1);
|
|
20
|
+
|
|
21
|
+
db.close(function () {
|
|
22
|
+
assert.equal(db.connected, false);
|
|
23
|
+
console.log(dt);
|
|
24
|
+
console.log(data);
|
|
25
|
+
|
|
26
|
+
//test selected data after the connection
|
|
27
|
+
//is closed, in case the assertion fails
|
|
28
|
+
assert.equal(data[0].DT1.constructor.name, "String", "DT1 is not an instance of a String object");
|
|
29
|
+
//assert.equal(data[0].DT1.getTime(), dt.getTime());
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
var common = require("./common")
|
|
2
|
-
, ibmdb = require("../")
|
|
3
|
-
, crypt = require('crypto')
|
|
4
|
-
, assert = require('assert')
|
|
5
|
-
, cn = common.connectionString;
|
|
6
|
-
|
|
7
|
-
async function main() {
|
|
8
|
-
const BLOB_LENGTH = 1024 * 16;
|
|
9
|
-
const conn = await ibmdb.open(cn)
|
|
10
|
-
let results;
|
|
11
|
-
|
|
12
|
-
results = await conn.querySync(`create table DBCLOB_TAB (id int, B1 DBCLOB(${BLOB_LENGTH}))`);
|
|
13
|
-
console.log(results);
|
|
14
|
-
|
|
15
|
-
const filler = 'X'.repeat(1000);
|
|
16
|
-
|
|
17
|
-
const source = {
|
|
18
|
-
"V1" : filler
|
|
19
|
-
, "V2" : "Oops"
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const data = JSON.stringify(source," ",2);
|
|
23
|
-
console.log(data.length,Buffer.byteLength(data));
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
results = await conn.query(`insert into DBCLOB_TAB (ID, B1) values (?, ?)`,[1,data]);
|
|
27
|
-
console.log(results);
|
|
28
|
-
} catch (e) {
|
|
29
|
-
console.log(1,e);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
results = await conn.query(`select ID, length(B1) L1, B1 from DBCLOB_TAB`);
|
|
33
|
-
console.log("result = ", results);
|
|
34
|
-
console.log("data = ", data);
|
|
35
|
-
|
|
36
|
-
let target;
|
|
37
|
-
try {
|
|
38
|
-
target = JSON.parse(results[0].B1);
|
|
39
|
-
console.log(source.V1.length,target.V1.length);
|
|
40
|
-
} catch (e) {
|
|
41
|
-
console.log('Oops',e);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
for (var i = 0; i < data.length; i++) {
|
|
45
|
-
if (data.charAt(i) !== results[0].B1.charAt(i)) {
|
|
46
|
-
console.log(i,data.charAt(i), results[0].B1.charAt(i));
|
|
47
|
-
assert.equal(data.charAt(i), results[0].B1.charAt(i));
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
await conn.query(`drop table DBCLOB_TAB`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async function blobTest() {
|
|
55
|
-
const BLOB_LENGTH = 256;
|
|
56
|
-
const conn = await ibmdb.open(cn);
|
|
57
|
-
let results;
|
|
58
|
-
|
|
59
|
-
results = await conn.querySync(`create table BLOB_TAB (id int, B1 BLOB(${BLOB_LENGTH}))`);
|
|
60
|
-
console.log(results);
|
|
61
|
-
|
|
62
|
-
const values = Array.from(Array(BLOB_LENGTH).keys());
|
|
63
|
-
console.log("values = ", values);
|
|
64
|
-
const buf = Buffer.from(values);
|
|
65
|
-
console.log("buffer = ", buf);
|
|
66
|
-
console.log("buflen = ", buf.length);
|
|
67
|
-
|
|
68
|
-
const blobParam = {DataType: "BLOB", Data:buf};
|
|
69
|
-
|
|
70
|
-
try {
|
|
71
|
-
const query = {
|
|
72
|
-
sql : `insert into BLOB_TAB (ID, B1) values (?, ?)`
|
|
73
|
-
, params: [1, blobParam]
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
results = await conn.query(query);
|
|
77
|
-
console.log(results);
|
|
78
|
-
} catch (e) {
|
|
79
|
-
console.log(1,e);
|
|
80
|
-
}
|
|
81
|
-
results = await conn.query(`select ID, length(B1) L1, B1 from BLOB_TAB`);
|
|
82
|
-
console.log("result = ", results);
|
|
83
|
-
await conn.query(`drop table BLOB_TAB`);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
main().then(() => {
|
|
87
|
-
console.log('DBCLOB test success');
|
|
88
|
-
console.log("==================\n");
|
|
89
|
-
blobTest().then(() => {
|
|
90
|
-
console.log('BLOB test success');
|
|
91
|
-
console.log("==================\n");
|
|
92
|
-
})
|
|
93
|
-
}).catch((e) => { console.log(e); })
|
|
1
|
+
var common = require("./common")
|
|
2
|
+
, ibmdb = require("../")
|
|
3
|
+
, crypt = require('crypto')
|
|
4
|
+
, assert = require('assert')
|
|
5
|
+
, cn = common.connectionString;
|
|
6
|
+
|
|
7
|
+
async function main() {
|
|
8
|
+
const BLOB_LENGTH = 1024 * 16;
|
|
9
|
+
const conn = await ibmdb.open(cn)
|
|
10
|
+
let results;
|
|
11
|
+
|
|
12
|
+
results = await conn.querySync(`create table DBCLOB_TAB (id int, B1 DBCLOB(${BLOB_LENGTH}))`);
|
|
13
|
+
console.log(results);
|
|
14
|
+
|
|
15
|
+
const filler = 'X'.repeat(1000);
|
|
16
|
+
|
|
17
|
+
const source = {
|
|
18
|
+
"V1" : filler
|
|
19
|
+
, "V2" : "Oops"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const data = JSON.stringify(source," ",2);
|
|
23
|
+
console.log(data.length,Buffer.byteLength(data));
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
results = await conn.query(`insert into DBCLOB_TAB (ID, B1) values (?, ?)`,[1,data]);
|
|
27
|
+
console.log(results);
|
|
28
|
+
} catch (e) {
|
|
29
|
+
console.log(1,e);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
results = await conn.query(`select ID, length(B1) L1, B1 from DBCLOB_TAB`);
|
|
33
|
+
console.log("result = ", results);
|
|
34
|
+
console.log("data = ", data);
|
|
35
|
+
|
|
36
|
+
let target;
|
|
37
|
+
try {
|
|
38
|
+
target = JSON.parse(results[0].B1);
|
|
39
|
+
console.log(source.V1.length,target.V1.length);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
console.log('Oops',e);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
for (var i = 0; i < data.length; i++) {
|
|
45
|
+
if (data.charAt(i) !== results[0].B1.charAt(i)) {
|
|
46
|
+
console.log(i,data.charAt(i), results[0].B1.charAt(i));
|
|
47
|
+
assert.equal(data.charAt(i), results[0].B1.charAt(i));
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
await conn.query(`drop table DBCLOB_TAB`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async function blobTest() {
|
|
55
|
+
const BLOB_LENGTH = 256;
|
|
56
|
+
const conn = await ibmdb.open(cn);
|
|
57
|
+
let results;
|
|
58
|
+
|
|
59
|
+
results = await conn.querySync(`create table BLOB_TAB (id int, B1 BLOB(${BLOB_LENGTH}))`);
|
|
60
|
+
console.log(results);
|
|
61
|
+
|
|
62
|
+
const values = Array.from(Array(BLOB_LENGTH).keys());
|
|
63
|
+
console.log("values = ", values);
|
|
64
|
+
const buf = Buffer.from(values);
|
|
65
|
+
console.log("buffer = ", buf);
|
|
66
|
+
console.log("buflen = ", buf.length);
|
|
67
|
+
|
|
68
|
+
const blobParam = {DataType: "BLOB", Data:buf};
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
const query = {
|
|
72
|
+
sql : `insert into BLOB_TAB (ID, B1) values (?, ?)`
|
|
73
|
+
, params: [1, blobParam]
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
results = await conn.query(query);
|
|
77
|
+
console.log(results);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
console.log(1,e);
|
|
80
|
+
}
|
|
81
|
+
results = await conn.query(`select ID, length(B1) L1, B1 from BLOB_TAB`);
|
|
82
|
+
console.log("result = ", results);
|
|
83
|
+
await conn.query(`drop table BLOB_TAB`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
main().then(() => {
|
|
87
|
+
console.log('DBCLOB test success');
|
|
88
|
+
console.log("==================\n");
|
|
89
|
+
blobTest().then(() => {
|
|
90
|
+
console.log('BLOB test success');
|
|
91
|
+
console.log("==================\n");
|
|
92
|
+
})
|
|
93
|
+
}).catch((e) => { console.log(e); })
|