@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.
Files changed (232) hide show
  1. package/README.md +12 -10
  2. package/lib/Db2PluginLifeCycle.d.ts +11 -9
  3. package/lib/Db2PluginLifeCycle.js +18 -13
  4. package/lib/Db2PluginLifeCycle.js.map +1 -1
  5. package/node_modules/axios/CHANGELOG.md +62 -0
  6. package/node_modules/axios/README.md +233 -5
  7. package/node_modules/axios/dist/axios.js +387 -89
  8. package/node_modules/axios/dist/axios.min.js +3 -3
  9. package/node_modules/axios/dist/axios.min.js.map +1 -1
  10. package/node_modules/axios/dist/browser/axios.cjs +458 -98
  11. package/node_modules/axios/dist/esm/axios.js +458 -98
  12. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  13. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  14. package/node_modules/axios/dist/node/axios.cjs +568 -116
  15. package/node_modules/axios/index.d.cts +4 -0
  16. package/node_modules/axios/index.d.ts +4 -0
  17. package/node_modules/axios/lib/adapters/fetch.js +64 -11
  18. package/node_modules/axios/lib/adapters/http.js +134 -50
  19. package/node_modules/axios/lib/adapters/xhr.js +52 -3
  20. package/node_modules/axios/lib/core/Axios.js +19 -14
  21. package/node_modules/axios/lib/core/InterceptorManager.js +107 -8
  22. package/node_modules/axios/lib/core/buildFullPath.js +1 -13
  23. package/node_modules/axios/lib/core/dispatchRequest.js +8 -2
  24. package/node_modules/axios/lib/core/mergeConfig.js +1 -1
  25. package/node_modules/axios/lib/core/methodList.js +17 -0
  26. package/node_modules/axios/lib/defaults/index.js +2 -1
  27. package/node_modules/axios/lib/env/data.js +1 -1
  28. package/node_modules/axios/lib/helpers/Http2Sessions.js +2 -0
  29. package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
  30. package/node_modules/axios/lib/helpers/fromDataURI.js +5 -4
  31. package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
  32. package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
  33. package/node_modules/axios/lib/helpers/resolveConfig.js +4 -2
  34. package/node_modules/axios/lib/helpers/shouldBypassProxy.js +182 -6
  35. package/node_modules/axios/lib/helpers/throttle.js +3 -2
  36. package/node_modules/axios/lib/helpers/toFormData.js +14 -21
  37. package/node_modules/axios/lib/utils.js +134 -13
  38. package/node_modules/axios/package.json +1 -1
  39. package/node_modules/ibm_db/APIDocumentation.md +2883 -2024
  40. package/node_modules/ibm_db/LICENSE +23 -23
  41. package/node_modules/ibm_db/README.md +735 -735
  42. package/node_modules/ibm_db/binding.gyp +99 -98
  43. package/node_modules/ibm_db/installer/driverInstall.js +984 -958
  44. package/node_modules/ibm_db/installer/ifx.sh +38 -38
  45. package/node_modules/ibm_db/installer/setenv.sh +23 -23
  46. package/node_modules/ibm_db/installer/testODBCConnection.bat +51 -51
  47. package/node_modules/ibm_db/installer/testODBCConnection.sh +61 -61
  48. package/node_modules/ibm_db/lib/climacros.js +431 -431
  49. package/node_modules/ibm_db/lib/odbc.js +4293 -3487
  50. package/node_modules/ibm_db/lib/simple-queue.js +41 -41
  51. package/node_modules/ibm_db/package.json +70 -70
  52. package/node_modules/ibm_db/src/odbc.cpp +1495 -1396
  53. package/node_modules/ibm_db/src/odbc.h +477 -473
  54. package/node_modules/ibm_db/src/odbc_connection.cpp +1762 -1612
  55. package/node_modules/ibm_db/src/odbc_connection.h +228 -215
  56. package/node_modules/ibm_db/src/odbc_result.cpp +1547 -1547
  57. package/node_modules/ibm_db/src/odbc_result.h +152 -152
  58. package/node_modules/ibm_db/src/odbc_statement.cpp +2047 -861
  59. package/node_modules/ibm_db/src/odbc_statement.h +257 -135
  60. package/node_modules/ibm_db/src/strptime.c +389 -389
  61. package/node_modules/ibm_db/src/strptime.h +46 -46
  62. package/node_modules/ibm_db/test/README +23 -23
  63. package/node_modules/ibm_db/test/bench-insert.js +62 -62
  64. package/node_modules/ibm_db/test/bench-insertBatch10.js +74 -74
  65. package/node_modules/ibm_db/test/bench-insertBatch100.js +75 -75
  66. package/node_modules/ibm_db/test/bench-insertBatch1000.js +75 -75
  67. package/node_modules/ibm_db/test/bench-insertBatch10000.js +75 -75
  68. package/node_modules/ibm_db/test/bench-prepare-bind-execute-closeSync.js +60 -60
  69. package/node_modules/ibm_db/test/bench-prepare-bind-executeNonQuery.js +53 -53
  70. package/node_modules/ibm_db/test/bench-prepare-bindSync-execute-closeSync.js +50 -50
  71. package/node_modules/ibm_db/test/bench-prepare-bindSync-executeNonQuery.js +48 -48
  72. package/node_modules/ibm_db/test/bench-prepare-execute-closeSync.js +51 -51
  73. package/node_modules/ibm_db/test/bench-prepare-executeNonQuery.js +47 -47
  74. package/node_modules/ibm_db/test/bench-prepare-not.js +43 -43
  75. package/node_modules/ibm_db/test/bench-query-fetch.js +59 -59
  76. package/node_modules/ibm_db/test/bench-query-fetchAll.js +49 -49
  77. package/node_modules/ibm_db/test/bench-query-fetchAllSync.js +43 -43
  78. package/node_modules/ibm_db/test/bench-query.js +40 -40
  79. package/node_modules/ibm_db/test/bench-querySync-fetchArray.js +28 -28
  80. package/node_modules/ibm_db/test/bench-querySync.js +29 -29
  81. package/node_modules/ibm_db/test/common.d.ts +10 -10
  82. package/node_modules/ibm_db/test/common.js +127 -127
  83. package/node_modules/ibm_db/test/config.json +7 -7
  84. package/node_modules/ibm_db/test/config.zos.json +4 -4
  85. package/node_modules/ibm_db/test/data/sample1.txt +9 -9
  86. package/node_modules/ibm_db/test/data/trc.fmt +30114 -30114
  87. package/node_modules/ibm_db/test/nodeEE-leak-huge-query.js +152 -152
  88. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-multiple-connections.js +148 -148
  89. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-pool-connections.js +154 -154
  90. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query.js +133 -133
  91. package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall-multiple-connections.js +174 -174
  92. package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall.js +169 -169
  93. package/node_modules/ibm_db/test/nodeEE-stress-mixed-query-multiple-connections.js +159 -159
  94. package/node_modules/ibm_db/test/nodeEE-stress-mixed-query.js +148 -148
  95. package/node_modules/ibm_db/test/odbc-bench.c +123 -123
  96. package/node_modules/ibm_db/test/perfTest.js +53 -53
  97. package/node_modules/ibm_db/test/quick-example.sh +30 -30
  98. package/node_modules/ibm_db/test/quick-example.ts +80 -80
  99. package/node_modules/ibm_db/test/run-bench.js +96 -96
  100. package/node_modules/ibm_db/test/run-nodeEE.js +132 -132
  101. package/node_modules/ibm_db/test/run-tests.js +132 -138
  102. package/node_modules/ibm_db/test/sql-cli.js +28 -28
  103. package/node_modules/ibm_db/test/test-all-data-types.js +109 -109
  104. package/node_modules/ibm_db/test/test-array-insert.js +178 -178
  105. package/node_modules/ibm_db/test/test-async-await.js +105 -105
  106. package/node_modules/ibm_db/test/test-attributes.js +34 -34
  107. package/node_modules/ibm_db/test/test-bad-pool-connection-prepare-execute.js +57 -57
  108. package/node_modules/ibm_db/test/test-basic-test.js +138 -138
  109. package/node_modules/ibm_db/test/test-binary-array-insert.js +73 -73
  110. package/node_modules/ibm_db/test/test-blob-from-file.js +90 -90
  111. package/node_modules/ibm_db/test/test-blob-insert.js +144 -144
  112. package/node_modules/ibm_db/test/test-blob-stream-insert.js +321 -299
  113. package/node_modules/ibm_db/test/test-blob-to-file.js +370 -370
  114. package/node_modules/ibm_db/test/test-block-fetch.js +364 -364
  115. package/node_modules/ibm_db/test/test-blocking-issue210.js +123 -123
  116. package/node_modules/ibm_db/test/test-call-async.js +64 -64
  117. package/node_modules/ibm_db/test/test-call-stmt.js +53 -53
  118. package/node_modules/ibm_db/test/test-cancel.js +703 -0
  119. package/node_modules/ibm_db/test/test-chinese-char.js +59 -59
  120. package/node_modules/ibm_db/test/test-connection.js +306 -0
  121. package/node_modules/ibm_db/test/test-date.js +32 -32
  122. package/node_modules/ibm_db/test/test-dbclob.js +93 -93
  123. package/node_modules/ibm_db/test/test-decimals.js +135 -135
  124. package/node_modules/ibm_db/test/test-describe-metadata.js +148 -0
  125. package/node_modules/ibm_db/test/test-executeFile.js +167 -167
  126. package/node_modules/ibm_db/test/test-executeFileSync.js +85 -85
  127. package/node_modules/ibm_db/test/test-fetch-apis.js +146 -146
  128. package/node_modules/ibm_db/test/test-fetchN.js +130 -130
  129. package/node_modules/ibm_db/test/test-getinfo.js +197 -197
  130. package/node_modules/ibm_db/test/test-ibm-db-issue14.js +58 -58
  131. package/node_modules/ibm_db/test/test-ibm-db-issue17.js +54 -54
  132. package/node_modules/ibm_db/test/test-ibm-db-issue18.js +54 -54
  133. package/node_modules/ibm_db/test/test-issue-1059-fetchAll-undefined.js +67 -67
  134. package/node_modules/ibm_db/test/test-issue-1080-array-blob-insert.js +40 -0
  135. package/node_modules/ibm_db/test/test-issue-54.js +39 -39
  136. package/node_modules/ibm_db/test/test-issue-get-column-value-2.js +44 -44
  137. package/node_modules/ibm_db/test/test-issue211.js +80 -80
  138. package/node_modules/ibm_db/test/test-issue253.js +39 -39
  139. package/node_modules/ibm_db/test/test-max-pool-size.js +96 -96
  140. package/node_modules/ibm_db/test/test-memory-leaks-new-objects.js +32 -32
  141. package/node_modules/ibm_db/test/test-multi-open-query-close.js +75 -75
  142. package/node_modules/ibm_db/test/test-param-put-data.js +713 -0
  143. package/node_modules/ibm_db/test/test-pool-idle-connection.js +72 -72
  144. package/node_modules/ibm_db/test/test-pool-operations.js +325 -0
  145. package/node_modules/ibm_db/test/test-pool-stale-connections.js +111 -111
  146. package/node_modules/ibm_db/test/test-pool-uncommited.js +33 -33
  147. package/node_modules/ibm_db/test/test-prepare-execute.js +339 -0
  148. package/node_modules/ibm_db/test/test-prepareSync-multiple-execution.js +93 -93
  149. package/node_modules/ibm_db/test/test-primary-foreign-keys.js +246 -0
  150. package/node_modules/ibm_db/test/test-procedures.js +243 -0
  151. package/node_modules/ibm_db/test/test-promise-all-data-types.js +42 -42
  152. package/node_modules/ibm_db/test/test-query-operations.js +405 -0
  153. package/node_modules/ibm_db/test/test-quick-example.js +25 -25
  154. package/node_modules/ibm_db/test/test-row-array-insert.js +167 -167
  155. package/node_modules/ibm_db/test/test-sp-array.js +54 -54
  156. package/node_modules/ibm_db/test/test-sp-dbc-6000.js +88 -88
  157. package/node_modules/ibm_db/test/test-sp-memleak.js +136 -136
  158. package/node_modules/ibm_db/test/test-sp-resultset-execute.js +269 -269
  159. package/node_modules/ibm_db/test/test-sp-resultset.js +228 -228
  160. package/node_modules/ibm_db/test/test-transactions.js +261 -0
  161. package/node_modules/ibm_db/test/test-typescript.js +48 -48
  162. package/node_modules/ibm_db/test/test-xml-datatype.js +70 -70
  163. package/node_modules/ibm_db/test/testWebApp.js +56 -56
  164. package/node_modules/ibm_db/test/trace +51 -51
  165. package/node_modules/ibm_db/test/typescript-apis-test.js +978 -978
  166. package/node_modules/ibm_db/test/webapp.html +17 -17
  167. package/node_modules/ibm_db/test/webapp.js +79 -79
  168. package/node_modules/ibm_db/typescript/README.md +28 -28
  169. package/node_modules/ibm_db/typescript/dist/Database.d.ts +26 -0
  170. package/node_modules/ibm_db/typescript/dist/ODBCStatement.d.ts +93 -0
  171. package/package.json +10 -6
  172. package/node_modules/ibm_db/test/disabled/test-binding-statement-rebinding.js +0 -59
  173. package/node_modules/ibm_db/test/disabled/test-open-dont-close.js +0 -12
  174. package/node_modules/ibm_db/test/disabled/test-param-select-with-booleans-only.js +0 -21
  175. package/node_modules/ibm_db/test/disabled/test-param-select-with-decimals-only.js +0 -20
  176. package/node_modules/ibm_db/test/disabled/test-param-select-with-null.js +0 -21
  177. package/node_modules/ibm_db/test/disabled/test-param-select-with-nulls-mixed.js +0 -23
  178. package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-mixed.js +0 -22
  179. package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-only.js +0 -24
  180. package/node_modules/ibm_db/test/disabled/test-param-select-with-strings-only.js +0 -23
  181. package/node_modules/ibm_db/test/disabled/test-param-select-with-unicode.js +0 -15
  182. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-closeSync.js +0 -62
  183. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-error.js +0 -49
  184. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-long-string.js +0 -63
  185. package/node_modules/ibm_db/test/disabled/test-prepare-bind-executeNonQuery.js +0 -63
  186. package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-execute-closeSync.js +0 -46
  187. package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-executeNonQuery.js +0 -50
  188. package/node_modules/ibm_db/test/disabled/test-prepare.js +0 -34
  189. package/node_modules/ibm_db/test/disabled/test-prepareSync.js +0 -29
  190. package/node_modules/ibm_db/test/disabled/test-query-select-fetchAll.js +0 -23
  191. package/node_modules/ibm_db/test/disabled/test-query-select-fetchAllSync.js +0 -23
  192. package/node_modules/ibm_db/test/disabled/test-query-select-unicode.js +0 -15
  193. package/node_modules/ibm_db/test/disabled/test-querySync-select-unicode.js +0 -20
  194. package/node_modules/ibm_db/test/test-affected-rows.js +0 -55
  195. package/node_modules/ibm_db/test/test-bad-connection-string.js +0 -30
  196. package/node_modules/ibm_db/test/test-binding-connection-timeOut.js +0 -31
  197. package/node_modules/ibm_db/test/test-binding-statement-executeSync.js +0 -84
  198. package/node_modules/ibm_db/test/test-binding-transaction-commit.js +0 -79
  199. package/node_modules/ibm_db/test/test-binding-transaction-commitSync.js +0 -53
  200. package/node_modules/ibm_db/test/test-closed.js +0 -14
  201. package/node_modules/ibm_db/test/test-connection-object.js +0 -16
  202. package/node_modules/ibm_db/test/test-describe-column.js +0 -92
  203. package/node_modules/ibm_db/test/test-describe-database.js +0 -18
  204. package/node_modules/ibm_db/test/test-describe-table.js +0 -31
  205. package/node_modules/ibm_db/test/test-domains-open.js +0 -19
  206. package/node_modules/ibm_db/test/test-global-open-close.js +0 -11
  207. package/node_modules/ibm_db/test/test-instantiate-one-and-end.js +0 -9
  208. package/node_modules/ibm_db/test/test-multi-open-close.js +0 -45
  209. package/node_modules/ibm_db/test/test-multi-openSync-closeSync.js +0 -52
  210. package/node_modules/ibm_db/test/test-open-close.js +0 -29
  211. package/node_modules/ibm_db/test/test-open-connectTimeout.js +0 -33
  212. package/node_modules/ibm_db/test/test-openSync.js +0 -31
  213. package/node_modules/ibm_db/test/test-pool-close.js +0 -120
  214. package/node_modules/ibm_db/test/test-pool-connect.js +0 -36
  215. package/node_modules/ibm_db/test/test-pool-rollbackTransaction.js +0 -35
  216. package/node_modules/ibm_db/test/test-prepareSync-bad-sql.js +0 -34
  217. package/node_modules/ibm_db/test/test-promise-open-close.js +0 -33
  218. package/node_modules/ibm_db/test/test-query-create-table-fetchSync.js +0 -23
  219. package/node_modules/ibm_db/test/test-query-create-table.js +0 -12
  220. package/node_modules/ibm_db/test/test-query-drop-table.js +0 -13
  221. package/node_modules/ibm_db/test/test-query-insert.js +0 -38
  222. package/node_modules/ibm_db/test/test-query-select-fetch.js +0 -21
  223. package/node_modules/ibm_db/test/test-query-select-fetchMode-array.js +0 -17
  224. package/node_modules/ibm_db/test/test-query-select.js +0 -64
  225. package/node_modules/ibm_db/test/test-queryResult.js +0 -35
  226. package/node_modules/ibm_db/test/test-queryStream.js +0 -43
  227. package/node_modules/ibm_db/test/test-querySync-select-with-exception.js +0 -25
  228. package/node_modules/ibm_db/test/test-querySync-select.js +0 -28
  229. package/node_modules/ibm_db/test/test-require-and-end.js +0 -8
  230. package/node_modules/ibm_db/test/test-statement-close.js +0 -118
  231. package/node_modules/ibm_db/test/test-transaction-commit-sync.js +0 -54
  232. package/node_modules/ibm_db/test/test-transaction-commit.js +0 -79
@@ -1,72 +1,72 @@
1
- // test file to test idle connection is getting dropped or not.
2
-
3
- var ibmdb = require("../")
4
- , pool = new ibmdb.Pool()
5
- , assert = require("assert")
6
- , common = require("./common.js")
7
- , cn = common.connectionString
8
- , starttime
9
- , endtime
10
- ;
11
-
12
- console.log("Trying to open a new connection at => " + getDateTime());
13
- pool.open(cn, function (err,conn) {
14
- if (err) console.log(err);
15
- assert.equal(err, null);
16
- console.log("Got new connection at => " + getDateTime());
17
- conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
18
- if (err) console.log(err);
19
- else console.log(data);
20
-
21
- conn.close(function () {
22
- console.log("Connection surrenderred to pool at " + getDateTime());
23
- console.log('Now wait for 70 seconds and then access connection.');
24
- });
25
-
26
- //wait for 2 min then access connection.
27
- setTimeout(function () {
28
- starttime = getDateTime();
29
- console.log("70 seconds elapesed, try to get connection from pool at ==> "+ starttime);
30
- pool.open(cn, function (err,conn) {
31
- if (err) return console.log(err);
32
- endtime = getDateTime();
33
- console.log("Got connection from pool at ==> " + endtime);
34
- conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
35
- if (err) console.log(err);
36
- else console.log(data);
37
-
38
- pool.close(function () {
39
- console.log('pool closed.');
40
- assert(starttime, endtime);
41
- });
42
- });
43
- });
44
- }, 70 * 1000); //setTimeout 2 minute.
45
- });
46
- });
47
-
48
-
49
- function getDateTime() {
50
-
51
- var date = new Date();
52
-
53
- var hour = date.getHours();
54
- hour = (hour < 10 ? "0" : "") + hour;
55
-
56
- var min = date.getMinutes();
57
- min = (min < 10 ? "0" : "") + min;
58
-
59
- var sec = date.getSeconds();
60
- sec = (sec < 10 ? "0" : "") + sec;
61
-
62
- var year = date.getFullYear();
63
-
64
- var month = date.getMonth() + 1;
65
- month = (month < 10 ? "0" : "") + month;
66
-
67
- var day = date.getDate();
68
- day = (day < 10 ? "0" : "") + day;
69
-
70
- return year + "." + month + "." + day + " " + hour + ":" + min + ":" + sec;
71
- }
72
-
1
+ // test file to test idle connection is getting dropped or not.
2
+
3
+ var ibmdb = require("../")
4
+ , pool = new ibmdb.Pool()
5
+ , assert = require("assert")
6
+ , common = require("./common.js")
7
+ , cn = common.connectionString
8
+ , starttime
9
+ , endtime
10
+ ;
11
+
12
+ console.log("Trying to open a new connection at => " + getDateTime());
13
+ pool.open(cn, function (err,conn) {
14
+ if (err) console.log(err);
15
+ assert.equal(err, null);
16
+ console.log("Got new connection at => " + getDateTime());
17
+ conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
18
+ if (err) console.log(err);
19
+ else console.log(data);
20
+
21
+ conn.close(function () {
22
+ console.log("Connection surrenderred to pool at " + getDateTime());
23
+ console.log('Now wait for 70 seconds and then access connection.');
24
+ });
25
+
26
+ //wait for 2 min then access connection.
27
+ setTimeout(function () {
28
+ starttime = getDateTime();
29
+ console.log("70 seconds elapesed, try to get connection from pool at ==> "+ starttime);
30
+ pool.open(cn, function (err,conn) {
31
+ if (err) return console.log(err);
32
+ endtime = getDateTime();
33
+ console.log("Got connection from pool at ==> " + endtime);
34
+ conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
35
+ if (err) console.log(err);
36
+ else console.log(data);
37
+
38
+ pool.close(function () {
39
+ console.log('pool closed.');
40
+ assert(starttime, endtime);
41
+ });
42
+ });
43
+ });
44
+ }, 70 * 1000); //setTimeout 2 minute.
45
+ });
46
+ });
47
+
48
+
49
+ function getDateTime() {
50
+
51
+ var date = new Date();
52
+
53
+ var hour = date.getHours();
54
+ hour = (hour < 10 ? "0" : "") + hour;
55
+
56
+ var min = date.getMinutes();
57
+ min = (min < 10 ? "0" : "") + min;
58
+
59
+ var sec = date.getSeconds();
60
+ sec = (sec < 10 ? "0" : "") + sec;
61
+
62
+ var year = date.getFullYear();
63
+
64
+ var month = date.getMonth() + 1;
65
+ month = (month < 10 ? "0" : "") + month;
66
+
67
+ var day = date.getDate();
68
+ day = (day < 10 ? "0" : "") + day;
69
+
70
+ return year + "." + month + "." + day + " " + hour + ":" + min + ":" + sec;
71
+ }
72
+
@@ -0,0 +1,325 @@
1
+ // Consolidated pool operations test: pool open/close, multiple connections,
2
+ // pool.close(), pool with transactions, pool with rollback, pool sync APIs.
3
+ // Replaces: test-pool-connect, test-pool-close, test-pool-rollbackTransaction.
4
+
5
+ var common = require("./common")
6
+ , ibmdb = require("../")
7
+ , assert = require("assert")
8
+ , cn = common.connectionString
9
+ ;
10
+
11
+ var passed = 0, failed = 0;
12
+
13
+ function ok(label) { passed++; console.log(" PASS: " + label); }
14
+ function fail(label, detail) { failed++; console.log(" FAIL: " + label + " " + (detail || "")); }
15
+
16
+ main();
17
+
18
+ async function main() {
19
+ await testPoolOpenClose();
20
+ await testPoolMultipleConnections();
21
+ await testPoolCloseAll();
22
+ await testPoolTransaction();
23
+ await testPoolRollback();
24
+ await testPoolSetMaxSize();
25
+ await testPoolInitAsync();
26
+ await testPoolMultipleClose();
27
+ await testPoolSyncAPIs();
28
+
29
+ console.log("\n===== Pool Operations Tests: %d passed, %d failed =====", passed, failed);
30
+ process.exit(failed ? 1 : 0);
31
+ }
32
+
33
+ // Basic pool open and close single connection
34
+ async function testPoolOpenClose() {
35
+ console.log("\n[testPoolOpenClose]");
36
+ var pool = new ibmdb.Pool();
37
+ return new Promise(function(resolve) {
38
+ pool.open(cn, function(err, conn) {
39
+ if (err) {
40
+ fail("pool open", err.message);
41
+ pool.close(function() { resolve(); });
42
+ return;
43
+ }
44
+ try {
45
+ assert.ok(conn);
46
+ assert.equal(conn.connected, true);
47
+ ok("pool.open returns valid connection");
48
+ } catch(e) { fail("pool open verify", e.message); }
49
+
50
+ conn.close(function(err) {
51
+ try {
52
+ assert.equal(err, null);
53
+ ok("pool conn.close succeeds (returns to pool)");
54
+ } catch(e) { fail("pool conn.close", e.message); }
55
+
56
+ pool.close(function() {
57
+ ok("pool.close after single connection");
58
+ resolve();
59
+ });
60
+ });
61
+ });
62
+ });
63
+ }
64
+
65
+ // Open multiple connections from pool
66
+ async function testPoolMultipleConnections() {
67
+ console.log("\n[testPoolMultipleConnections]");
68
+ var pool = new ibmdb.Pool();
69
+ var connectCount = 5;
70
+
71
+ return new Promise(function(resolve) {
72
+ var connections = [];
73
+ var opened = 0;
74
+ var done = 0;
75
+
76
+ for (var x = 0; x < connectCount; x++) {
77
+ (function(idx) {
78
+ pool.open(cn, function(err, conn) {
79
+ done++;
80
+ if (err) {
81
+ if (done === 1) fail("pool multi open #" + idx, err.message);
82
+ if (done === connectCount) { pool.close(function() { resolve(); }); }
83
+ return;
84
+ }
85
+ connections.push(conn);
86
+ opened++;
87
+ if (opened === connectCount) {
88
+ try {
89
+ assert.equal(connections.length, connectCount);
90
+ ok("pool opened " + connectCount + " connections");
91
+ } catch(e) { fail("pool multi count", e.message); }
92
+ pool.close(function() {
93
+ ok("pool.close after multiple connections");
94
+ resolve();
95
+ });
96
+ }
97
+ });
98
+ })(x);
99
+ }
100
+ });
101
+ }
102
+
103
+ // pool.close closes all connections
104
+ async function testPoolCloseAll() {
105
+ console.log("\n[testPoolCloseAll]");
106
+ var pool = new ibmdb.Pool();
107
+
108
+ return new Promise(function(resolve) {
109
+ pool.open(cn, function(err, conn) {
110
+ if (err) { fail("pool close all - open", err.message); resolve(); return; }
111
+
112
+ var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
113
+ assert.deepEqual(data, [{ C1: 1 }]);
114
+
115
+ conn.close(function() {
116
+ // Connection returned to pool, now close pool entirely
117
+ pool.close(function() {
118
+ ok("pool.close releases all pooled connections");
119
+ resolve();
120
+ });
121
+ });
122
+ });
123
+ });
124
+ }
125
+
126
+ // Transaction within pooled connection
127
+ async function testPoolTransaction() {
128
+ console.log("\n[testPoolTransaction]");
129
+ var pool = new ibmdb.Pool();
130
+
131
+ return new Promise(function(resolve) {
132
+ pool.open(cn, function(err, conn) {
133
+ if (err) { fail("pool txn - open", err.message); resolve(); return; }
134
+
135
+ conn.querySync("drop table pooltxn").toString();
136
+ conn.querySync("create table pooltxn (c1 int, c2 varchar(20))");
137
+
138
+ conn.beginTransaction(function(err) {
139
+ if (err) { fail("pool beginTransaction", err.message); resolve(); return; }
140
+
141
+ conn.querySync("insert into pooltxn values (1, 'pooled')");
142
+ conn.commitTransaction(function(err) {
143
+ if (err) { fail("pool commitTransaction", err.message); resolve(); return; }
144
+
145
+ var data = conn.querySync("select * from pooltxn");
146
+ try {
147
+ assert.deepEqual(data, [{ C1: 1, C2: 'pooled' }]);
148
+ ok("pool: commit persists data");
149
+ } catch(e) { fail("pool txn commit verify", e.message); }
150
+
151
+ conn.querySync("drop table pooltxn");
152
+ conn.close(function() {
153
+ pool.close(function() { resolve(); });
154
+ });
155
+ });
156
+ });
157
+ });
158
+ });
159
+ }
160
+
161
+ // Rollback within pooled connection
162
+ async function testPoolRollback() {
163
+ console.log("\n[testPoolRollback]");
164
+ var pool = new ibmdb.Pool();
165
+
166
+ return new Promise(function(resolve) {
167
+ pool.open(cn, function(err, conn) {
168
+ if (err) { fail("pool rollback - open", err.message); resolve(); return; }
169
+
170
+ conn.querySync("drop table poolrb").toString();
171
+ conn.querySync("create table poolrb (c1 int, c2 varchar(20))");
172
+
173
+ conn.beginTransaction(function(err) {
174
+ if (err) { fail("pool beginTransaction rb", err.message); resolve(); return; }
175
+
176
+ conn.querySync("insert into poolrb values (5, 'will_rollback')");
177
+ var data = conn.querySync("select * from poolrb");
178
+ assert.equal(data.length, 1); // visible within txn
179
+
180
+ conn.rollbackTransaction(function(err) {
181
+ if (err) { fail("pool rollbackTransaction", err.message); resolve(); return; }
182
+
183
+ data = conn.querySync("select * from poolrb");
184
+ try {
185
+ assert.deepEqual(data, []);
186
+ ok("pool: rollback removes uncommitted data");
187
+ } catch(e) { fail("pool txn rollback verify", e.message); }
188
+
189
+ conn.querySync("drop table poolrb");
190
+ conn.close(function() {
191
+ pool.close(function() { resolve(); });
192
+ });
193
+ });
194
+ });
195
+ });
196
+ });
197
+ }
198
+
199
+ // setMaxPoolSize
200
+ async function testPoolSetMaxSize() {
201
+ console.log("\n[testPoolSetMaxSize]");
202
+ var pool = new ibmdb.Pool();
203
+ try {
204
+ pool.setMaxPoolSize(3);
205
+ ok("setMaxPoolSize does not throw");
206
+ } catch(e) { fail("setMaxPoolSize", e.message); }
207
+
208
+ return new Promise(function(resolve) {
209
+ pool.open(cn, function(err, conn) {
210
+ if (err) { fail("pool maxSize open", err.message); resolve(); return; }
211
+ conn.close(function() {
212
+ pool.close(function() { resolve(); });
213
+ });
214
+ });
215
+ });
216
+ }
217
+
218
+ // pool.initAsync
219
+ async function testPoolInitAsync() {
220
+ console.log("\n[testPoolInitAsync]");
221
+ var pool = new ibmdb.Pool();
222
+ pool.setMaxPoolSize(3);
223
+ try {
224
+ await pool.initAsync(1, cn);
225
+ ok("pool.initAsync initializes pool");
226
+ } catch(e) {
227
+ // initAsync may fail on some configurations
228
+ console.log(" SKIP: pool.initAsync - " + e.message);
229
+ passed++;
230
+ }
231
+
232
+ return new Promise(function(resolve) {
233
+ pool.open(cn, function(err, conn) {
234
+ if (err) { fail("pool after init open", err.message); resolve(); return; }
235
+ var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
236
+ try {
237
+ assert.deepEqual(data, [{ C1: 1 }]);
238
+ ok("query on pool connection after initAsync");
239
+ } catch(e) { fail("query after initAsync", e.message); }
240
+ conn.close(function() {
241
+ pool.close(function() { resolve(); });
242
+ });
243
+ });
244
+ });
245
+ }
246
+
247
+ // Pool: close returns conn to pool, conn still usable, realClose terminates
248
+ async function testPoolMultipleClose() {
249
+ console.log("\n[testPoolMultipleClose]");
250
+ var pool = new ibmdb.Pool();
251
+
252
+ return new Promise(function(resolve) {
253
+ pool.open(cn, function(err, conn) {
254
+ if (err) { fail("pool multi-close open", err.message); resolve(); return; }
255
+
256
+ conn.close(function(err) {
257
+ if (err) { fail("pool first close", err.message); resolve(); return; }
258
+ // After close, conn is returned to pool — should still be queryable
259
+ assert.equal(conn.connected, true, "pool conn stays connected after close");
260
+ try {
261
+ var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
262
+ assert.deepEqual(data, [{ C1: 1 }]);
263
+ ok("pool: conn still queryable after close (returned to pool)");
264
+ } catch(e) { fail("pool query after close", e.message); }
265
+
266
+ conn.close(function(err) {
267
+ if (err) { fail("pool second close", err.message); resolve(); return; }
268
+ ok("pool: second close succeeds");
269
+
270
+ // Get connection back and realClose it
271
+ pool.open(cn, function(err, conn2) {
272
+ if (err) { fail("pool reopen", err.message); resolve(); return; }
273
+ conn2.realClose(function(err) {
274
+ if (err) { fail("realClose", err.message); resolve(); return; }
275
+ // After realClose, query should fail
276
+ try {
277
+ conn2.querySync("select 1 from sysibm.sysdummy1");
278
+ fail("query after realClose should throw");
279
+ } catch(e) {
280
+ ok("pool: realClose terminates connection");
281
+ }
282
+ pool.close(function() { resolve(); });
283
+ });
284
+ });
285
+ });
286
+ });
287
+ });
288
+ });
289
+ }
290
+
291
+ // Pool: openSync and closeSync
292
+ async function testPoolSyncAPIs() {
293
+ console.log("\n[testPoolSyncAPIs]");
294
+ var pool = new ibmdb.Pool();
295
+ try {
296
+ var conn = pool.openSync(cn);
297
+ assert.ok(conn);
298
+ var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
299
+ assert.deepEqual(data, [{ C1: 1 }]);
300
+ ok("pool.openSync works");
301
+
302
+ // closeSync returns conn to pool — should still be queryable
303
+ conn.closeSync();
304
+ data = conn.querySync("select 2 as C2 from sysibm.sysdummy1");
305
+ assert.deepEqual(data, [{ C2: 2 }]);
306
+ ok("pool: conn queryable after closeSync (returned to pool)");
307
+
308
+ conn.closeSync();
309
+ // Get conn back and realCloseSync it
310
+ conn = pool.openSync(cn);
311
+ var rc = conn.realCloseSync();
312
+ assert.ok(rc === true || rc === undefined);
313
+ ok("pool: realCloseSync terminates connection");
314
+
315
+ try {
316
+ conn.querySync("select 3 from sysibm.sysdummy1");
317
+ fail("query after realCloseSync should throw");
318
+ } catch(e2) {
319
+ ok("pool: query after realCloseSync throws");
320
+ }
321
+
322
+ pool.closeSync();
323
+ ok("pool.closeSync works");
324
+ } catch(e) { fail("pool sync APIs", e.message); }
325
+ }