@zowe/db2-for-zowe-cli 6.1.17 → 6.1.19

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 (282) 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/adm-zip/adm-zip.js +32 -6
  6. package/node_modules/adm-zip/headers/entryHeader.js +13 -1
  7. package/node_modules/adm-zip/methods/inflater.js +33 -3
  8. package/node_modules/adm-zip/package.json +2 -2
  9. package/node_modules/adm-zip/util/errors.js +3 -0
  10. package/node_modules/adm-zip/util/utils.js +102 -14
  11. package/node_modules/adm-zip/zipEntry.js +43 -18
  12. package/node_modules/adm-zip/zipFile.js +10 -0
  13. package/node_modules/axios/CHANGELOG.md +62 -0
  14. package/node_modules/axios/README.md +236 -73
  15. package/node_modules/axios/dist/axios.js +1308 -357
  16. package/node_modules/axios/dist/axios.min.js +3 -3
  17. package/node_modules/axios/dist/axios.min.js.map +1 -1
  18. package/node_modules/axios/dist/browser/axios.cjs +1443 -403
  19. package/node_modules/axios/dist/esm/axios.js +1443 -403
  20. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  21. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  22. package/node_modules/axios/dist/node/axios.cjs +1483 -348
  23. package/node_modules/axios/index.d.cts +24 -1
  24. package/node_modules/axios/index.d.ts +22 -1
  25. package/node_modules/axios/lib/adapters/fetch.js +136 -30
  26. package/node_modules/axios/lib/adapters/http.js +277 -74
  27. package/node_modules/axios/lib/adapters/xhr.js +172 -16
  28. package/node_modules/axios/lib/core/Axios.js +87 -27
  29. package/node_modules/axios/lib/core/AxiosError.js +59 -0
  30. package/node_modules/axios/lib/core/AxiosHeaders.js +17 -4
  31. package/node_modules/axios/lib/core/InterceptorManager.js +118 -8
  32. package/node_modules/axios/lib/core/assertParamsAcyclic.js +49 -0
  33. package/node_modules/axios/lib/core/buildFullPath.js +1 -13
  34. package/node_modules/axios/lib/core/createMultipartBody.js +37 -0
  35. package/node_modules/axios/lib/core/dispatchRequest.js +28 -2
  36. package/node_modules/axios/lib/core/mergeConfig.js +183 -120
  37. package/node_modules/axios/lib/core/methodList.js +17 -0
  38. package/node_modules/axios/lib/defaults/index.js +2 -1
  39. package/node_modules/axios/lib/defaults/transitional.js +1 -0
  40. package/node_modules/axios/lib/env/data.js +1 -1
  41. package/node_modules/axios/lib/helpers/AxiosTransformStream.js +11 -2
  42. package/node_modules/axios/lib/helpers/Http2Sessions.js +4 -1
  43. package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
  44. package/node_modules/axios/lib/helpers/composeSignals.js +6 -3
  45. package/node_modules/axios/lib/helpers/cookies.js +30 -6
  46. package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +34 -7
  47. package/node_modules/axios/lib/helpers/formDataToBlob.js +113 -0
  48. package/node_modules/axios/lib/helpers/formDataToJSON.js +25 -1
  49. package/node_modules/axios/lib/helpers/fromDataURI.js +11 -4
  50. package/node_modules/axios/lib/helpers/isURLSameOrigin.js +4 -9
  51. package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
  52. package/node_modules/axios/lib/helpers/parseHeaders.js +2 -1
  53. package/node_modules/axios/lib/helpers/parseProtocol.js +1 -1
  54. package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
  55. package/node_modules/axios/lib/helpers/resolveConfig.js +20 -5
  56. package/node_modules/axios/lib/helpers/shouldBypassProxy.js +197 -6
  57. package/node_modules/axios/lib/helpers/throttle.js +3 -2
  58. package/node_modules/axios/lib/helpers/toFormData.js +14 -21
  59. package/node_modules/axios/lib/utils.js +192 -20
  60. package/node_modules/axios/package.json +1 -2
  61. package/node_modules/follow-redirects/README.md +27 -1
  62. package/node_modules/follow-redirects/index.js +11 -6
  63. package/node_modules/follow-redirects/package.json +1 -1
  64. package/node_modules/fs-extra/README.md +0 -1
  65. package/node_modules/fs-extra/lib/empty/index.js +4 -2
  66. package/node_modules/fs-extra/lib/util/stat.js +12 -2
  67. package/node_modules/fs-extra/package.json +1 -1
  68. package/node_modules/ibm_db/APIDocumentation.md +2883 -2024
  69. package/node_modules/ibm_db/LICENSE +23 -23
  70. package/node_modules/ibm_db/README.md +735 -735
  71. package/node_modules/ibm_db/binding.gyp +99 -98
  72. package/node_modules/ibm_db/installer/driverInstall.js +984 -958
  73. package/node_modules/ibm_db/installer/ifx.sh +38 -38
  74. package/node_modules/ibm_db/installer/setenv.sh +23 -23
  75. package/node_modules/ibm_db/installer/testODBCConnection.bat +51 -51
  76. package/node_modules/ibm_db/installer/testODBCConnection.sh +61 -61
  77. package/node_modules/ibm_db/lib/climacros.js +431 -431
  78. package/node_modules/ibm_db/lib/odbc.js +4293 -3487
  79. package/node_modules/ibm_db/lib/simple-queue.js +41 -41
  80. package/node_modules/ibm_db/package.json +70 -70
  81. package/node_modules/ibm_db/src/odbc.cpp +1495 -1396
  82. package/node_modules/ibm_db/src/odbc.h +477 -473
  83. package/node_modules/ibm_db/src/odbc_connection.cpp +1762 -1612
  84. package/node_modules/ibm_db/src/odbc_connection.h +228 -215
  85. package/node_modules/ibm_db/src/odbc_result.cpp +1547 -1547
  86. package/node_modules/ibm_db/src/odbc_result.h +152 -152
  87. package/node_modules/ibm_db/src/odbc_statement.cpp +2047 -861
  88. package/node_modules/ibm_db/src/odbc_statement.h +257 -135
  89. package/node_modules/ibm_db/src/strptime.c +389 -389
  90. package/node_modules/ibm_db/src/strptime.h +46 -46
  91. package/node_modules/ibm_db/test/README +23 -23
  92. package/node_modules/ibm_db/test/bench-insert.js +62 -62
  93. package/node_modules/ibm_db/test/bench-insertBatch10.js +74 -74
  94. package/node_modules/ibm_db/test/bench-insertBatch100.js +75 -75
  95. package/node_modules/ibm_db/test/bench-insertBatch1000.js +75 -75
  96. package/node_modules/ibm_db/test/bench-insertBatch10000.js +75 -75
  97. package/node_modules/ibm_db/test/bench-prepare-bind-execute-closeSync.js +60 -60
  98. package/node_modules/ibm_db/test/bench-prepare-bind-executeNonQuery.js +53 -53
  99. package/node_modules/ibm_db/test/bench-prepare-bindSync-execute-closeSync.js +50 -50
  100. package/node_modules/ibm_db/test/bench-prepare-bindSync-executeNonQuery.js +48 -48
  101. package/node_modules/ibm_db/test/bench-prepare-execute-closeSync.js +51 -51
  102. package/node_modules/ibm_db/test/bench-prepare-executeNonQuery.js +47 -47
  103. package/node_modules/ibm_db/test/bench-prepare-not.js +43 -43
  104. package/node_modules/ibm_db/test/bench-query-fetch.js +59 -59
  105. package/node_modules/ibm_db/test/bench-query-fetchAll.js +49 -49
  106. package/node_modules/ibm_db/test/bench-query-fetchAllSync.js +43 -43
  107. package/node_modules/ibm_db/test/bench-query.js +40 -40
  108. package/node_modules/ibm_db/test/bench-querySync-fetchArray.js +28 -28
  109. package/node_modules/ibm_db/test/bench-querySync.js +29 -29
  110. package/node_modules/ibm_db/test/common.d.ts +10 -10
  111. package/node_modules/ibm_db/test/common.js +127 -127
  112. package/node_modules/ibm_db/test/config.json +7 -7
  113. package/node_modules/ibm_db/test/config.zos.json +4 -4
  114. package/node_modules/ibm_db/test/data/sample1.txt +9 -9
  115. package/node_modules/ibm_db/test/data/trc.fmt +30114 -30114
  116. package/node_modules/ibm_db/test/nodeEE-leak-huge-query.js +152 -152
  117. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-multiple-connections.js +148 -148
  118. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-pool-connections.js +154 -154
  119. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query.js +133 -133
  120. package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall-multiple-connections.js +174 -174
  121. package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall.js +169 -169
  122. package/node_modules/ibm_db/test/nodeEE-stress-mixed-query-multiple-connections.js +159 -159
  123. package/node_modules/ibm_db/test/nodeEE-stress-mixed-query.js +148 -148
  124. package/node_modules/ibm_db/test/odbc-bench.c +123 -123
  125. package/node_modules/ibm_db/test/perfTest.js +53 -53
  126. package/node_modules/ibm_db/test/quick-example.sh +30 -30
  127. package/node_modules/ibm_db/test/quick-example.ts +80 -80
  128. package/node_modules/ibm_db/test/run-bench.js +96 -96
  129. package/node_modules/ibm_db/test/run-nodeEE.js +132 -132
  130. package/node_modules/ibm_db/test/run-tests.js +132 -138
  131. package/node_modules/ibm_db/test/sql-cli.js +28 -28
  132. package/node_modules/ibm_db/test/test-all-data-types.js +109 -109
  133. package/node_modules/ibm_db/test/test-array-insert.js +178 -178
  134. package/node_modules/ibm_db/test/test-async-await.js +105 -105
  135. package/node_modules/ibm_db/test/test-attributes.js +34 -34
  136. package/node_modules/ibm_db/test/test-bad-pool-connection-prepare-execute.js +57 -57
  137. package/node_modules/ibm_db/test/test-basic-test.js +138 -138
  138. package/node_modules/ibm_db/test/test-binary-array-insert.js +73 -73
  139. package/node_modules/ibm_db/test/test-blob-from-file.js +90 -90
  140. package/node_modules/ibm_db/test/test-blob-insert.js +144 -144
  141. package/node_modules/ibm_db/test/test-blob-stream-insert.js +321 -299
  142. package/node_modules/ibm_db/test/test-blob-to-file.js +370 -370
  143. package/node_modules/ibm_db/test/test-block-fetch.js +364 -364
  144. package/node_modules/ibm_db/test/test-blocking-issue210.js +123 -123
  145. package/node_modules/ibm_db/test/test-call-async.js +64 -64
  146. package/node_modules/ibm_db/test/test-call-stmt.js +53 -53
  147. package/node_modules/ibm_db/test/test-cancel.js +703 -0
  148. package/node_modules/ibm_db/test/test-chinese-char.js +59 -59
  149. package/node_modules/ibm_db/test/test-connection.js +306 -0
  150. package/node_modules/ibm_db/test/test-date.js +32 -32
  151. package/node_modules/ibm_db/test/test-dbclob.js +93 -93
  152. package/node_modules/ibm_db/test/test-decimals.js +135 -135
  153. package/node_modules/ibm_db/test/test-describe-metadata.js +148 -0
  154. package/node_modules/ibm_db/test/test-executeFile.js +167 -167
  155. package/node_modules/ibm_db/test/test-executeFileSync.js +85 -85
  156. package/node_modules/ibm_db/test/test-fetch-apis.js +146 -146
  157. package/node_modules/ibm_db/test/test-fetchN.js +130 -130
  158. package/node_modules/ibm_db/test/test-getinfo.js +197 -197
  159. package/node_modules/ibm_db/test/test-ibm-db-issue14.js +58 -58
  160. package/node_modules/ibm_db/test/test-ibm-db-issue17.js +54 -54
  161. package/node_modules/ibm_db/test/test-ibm-db-issue18.js +54 -54
  162. package/node_modules/ibm_db/test/test-issue-1059-fetchAll-undefined.js +67 -67
  163. package/node_modules/ibm_db/test/test-issue-1080-array-blob-insert.js +40 -0
  164. package/node_modules/ibm_db/test/test-issue-54.js +39 -39
  165. package/node_modules/ibm_db/test/test-issue-get-column-value-2.js +44 -44
  166. package/node_modules/ibm_db/test/test-issue211.js +80 -80
  167. package/node_modules/ibm_db/test/test-issue253.js +39 -39
  168. package/node_modules/ibm_db/test/test-max-pool-size.js +96 -96
  169. package/node_modules/ibm_db/test/test-memory-leaks-new-objects.js +32 -32
  170. package/node_modules/ibm_db/test/test-multi-open-query-close.js +75 -75
  171. package/node_modules/ibm_db/test/test-param-put-data.js +713 -0
  172. package/node_modules/ibm_db/test/test-pool-idle-connection.js +72 -72
  173. package/node_modules/ibm_db/test/test-pool-operations.js +325 -0
  174. package/node_modules/ibm_db/test/test-pool-stale-connections.js +111 -111
  175. package/node_modules/ibm_db/test/test-pool-uncommited.js +33 -33
  176. package/node_modules/ibm_db/test/test-prepare-execute.js +339 -0
  177. package/node_modules/ibm_db/test/test-prepareSync-multiple-execution.js +93 -93
  178. package/node_modules/ibm_db/test/test-primary-foreign-keys.js +246 -0
  179. package/node_modules/ibm_db/test/test-procedures.js +243 -0
  180. package/node_modules/ibm_db/test/test-promise-all-data-types.js +42 -42
  181. package/node_modules/ibm_db/test/test-query-operations.js +405 -0
  182. package/node_modules/ibm_db/test/test-quick-example.js +25 -25
  183. package/node_modules/ibm_db/test/test-row-array-insert.js +167 -167
  184. package/node_modules/ibm_db/test/test-sp-array.js +54 -54
  185. package/node_modules/ibm_db/test/test-sp-dbc-6000.js +88 -88
  186. package/node_modules/ibm_db/test/test-sp-memleak.js +136 -136
  187. package/node_modules/ibm_db/test/test-sp-resultset-execute.js +269 -269
  188. package/node_modules/ibm_db/test/test-sp-resultset.js +228 -228
  189. package/node_modules/ibm_db/test/test-transactions.js +261 -0
  190. package/node_modules/ibm_db/test/test-typescript.js +48 -48
  191. package/node_modules/ibm_db/test/test-xml-datatype.js +70 -70
  192. package/node_modules/ibm_db/test/testWebApp.js +56 -56
  193. package/node_modules/ibm_db/test/trace +51 -51
  194. package/node_modules/ibm_db/test/typescript-apis-test.js +978 -978
  195. package/node_modules/ibm_db/test/webapp.html +17 -17
  196. package/node_modules/ibm_db/test/webapp.js +79 -79
  197. package/node_modules/ibm_db/typescript/README.md +28 -28
  198. package/node_modules/ibm_db/typescript/dist/Database.d.ts +26 -0
  199. package/node_modules/ibm_db/typescript/dist/ODBCStatement.d.ts +93 -0
  200. package/node_modules/string_decoder/node_modules/safe-buffer/LICENSE +21 -0
  201. package/node_modules/string_decoder/node_modules/safe-buffer/README.md +584 -0
  202. package/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts +187 -0
  203. package/node_modules/string_decoder/node_modules/safe-buffer/index.js +62 -0
  204. package/node_modules/string_decoder/node_modules/safe-buffer/package.json +37 -0
  205. package/node_modules/which-typed-array/CHANGELOG.md +14 -0
  206. package/node_modules/which-typed-array/README.md +0 -2
  207. package/node_modules/which-typed-array/index.d.ts +288 -11
  208. package/node_modules/which-typed-array/index.js +6 -7
  209. package/node_modules/which-typed-array/package.json +12 -11
  210. package/package.json +10 -11
  211. package/node_modules/ibm_db/test/disabled/test-binding-statement-rebinding.js +0 -59
  212. package/node_modules/ibm_db/test/disabled/test-open-dont-close.js +0 -12
  213. package/node_modules/ibm_db/test/disabled/test-param-select-with-booleans-only.js +0 -21
  214. package/node_modules/ibm_db/test/disabled/test-param-select-with-decimals-only.js +0 -20
  215. package/node_modules/ibm_db/test/disabled/test-param-select-with-null.js +0 -21
  216. package/node_modules/ibm_db/test/disabled/test-param-select-with-nulls-mixed.js +0 -23
  217. package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-mixed.js +0 -22
  218. package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-only.js +0 -24
  219. package/node_modules/ibm_db/test/disabled/test-param-select-with-strings-only.js +0 -23
  220. package/node_modules/ibm_db/test/disabled/test-param-select-with-unicode.js +0 -15
  221. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-closeSync.js +0 -62
  222. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-error.js +0 -49
  223. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-long-string.js +0 -63
  224. package/node_modules/ibm_db/test/disabled/test-prepare-bind-executeNonQuery.js +0 -63
  225. package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-execute-closeSync.js +0 -46
  226. package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-executeNonQuery.js +0 -50
  227. package/node_modules/ibm_db/test/disabled/test-prepare.js +0 -34
  228. package/node_modules/ibm_db/test/disabled/test-prepareSync.js +0 -29
  229. package/node_modules/ibm_db/test/disabled/test-query-select-fetchAll.js +0 -23
  230. package/node_modules/ibm_db/test/disabled/test-query-select-fetchAllSync.js +0 -23
  231. package/node_modules/ibm_db/test/disabled/test-query-select-unicode.js +0 -15
  232. package/node_modules/ibm_db/test/disabled/test-querySync-select-unicode.js +0 -20
  233. package/node_modules/ibm_db/test/test-affected-rows.js +0 -55
  234. package/node_modules/ibm_db/test/test-bad-connection-string.js +0 -30
  235. package/node_modules/ibm_db/test/test-binding-connection-timeOut.js +0 -31
  236. package/node_modules/ibm_db/test/test-binding-statement-executeSync.js +0 -84
  237. package/node_modules/ibm_db/test/test-binding-transaction-commit.js +0 -79
  238. package/node_modules/ibm_db/test/test-binding-transaction-commitSync.js +0 -53
  239. package/node_modules/ibm_db/test/test-closed.js +0 -14
  240. package/node_modules/ibm_db/test/test-connection-object.js +0 -16
  241. package/node_modules/ibm_db/test/test-describe-column.js +0 -92
  242. package/node_modules/ibm_db/test/test-describe-database.js +0 -18
  243. package/node_modules/ibm_db/test/test-describe-table.js +0 -31
  244. package/node_modules/ibm_db/test/test-domains-open.js +0 -19
  245. package/node_modules/ibm_db/test/test-global-open-close.js +0 -11
  246. package/node_modules/ibm_db/test/test-instantiate-one-and-end.js +0 -9
  247. package/node_modules/ibm_db/test/test-multi-open-close.js +0 -45
  248. package/node_modules/ibm_db/test/test-multi-openSync-closeSync.js +0 -52
  249. package/node_modules/ibm_db/test/test-open-close.js +0 -29
  250. package/node_modules/ibm_db/test/test-open-connectTimeout.js +0 -33
  251. package/node_modules/ibm_db/test/test-openSync.js +0 -31
  252. package/node_modules/ibm_db/test/test-pool-close.js +0 -120
  253. package/node_modules/ibm_db/test/test-pool-connect.js +0 -36
  254. package/node_modules/ibm_db/test/test-pool-rollbackTransaction.js +0 -35
  255. package/node_modules/ibm_db/test/test-prepareSync-bad-sql.js +0 -34
  256. package/node_modules/ibm_db/test/test-promise-open-close.js +0 -33
  257. package/node_modules/ibm_db/test/test-query-create-table-fetchSync.js +0 -23
  258. package/node_modules/ibm_db/test/test-query-create-table.js +0 -12
  259. package/node_modules/ibm_db/test/test-query-drop-table.js +0 -13
  260. package/node_modules/ibm_db/test/test-query-insert.js +0 -38
  261. package/node_modules/ibm_db/test/test-query-select-fetch.js +0 -21
  262. package/node_modules/ibm_db/test/test-query-select-fetchMode-array.js +0 -17
  263. package/node_modules/ibm_db/test/test-query-select.js +0 -64
  264. package/node_modules/ibm_db/test/test-queryResult.js +0 -35
  265. package/node_modules/ibm_db/test/test-queryStream.js +0 -43
  266. package/node_modules/ibm_db/test/test-querySync-select-with-exception.js +0 -25
  267. package/node_modules/ibm_db/test/test-querySync-select.js +0 -28
  268. package/node_modules/ibm_db/test/test-require-and-end.js +0 -8
  269. package/node_modules/ibm_db/test/test-statement-close.js +0 -118
  270. package/node_modules/ibm_db/test/test-transaction-commit-sync.js +0 -54
  271. package/node_modules/ibm_db/test/test-transaction-commit.js +0 -79
  272. package/node_modules/which-typed-array/eslint.config.mjs +0 -12
  273. package/node_modules/which-typed-array/test/index.js +0 -105
  274. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/LICENSE +0 -0
  275. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/README.md +0 -0
  276. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/chownr.js +0 -0
  277. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/package.json +0 -0
  278. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/.travis.yml +0 -0
  279. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/LICENSE +0 -0
  280. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/README.md +0 -0
  281. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/lib/string_decoder.js +0 -0
  282. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/package.json +0 -0
@@ -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
+ });