@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,42 +1,42 @@
1
- var common = require("./common")
2
- , ibmdb = require("../")
3
- , assert = require("assert")
4
- , cn = common.connectionString;
5
-
6
- ibmdb.open(cn).then(function(conn) {
7
- return conn;
8
- }, function(err) {
9
- console.log(err)
10
- })
11
- .then(function(conn) {
12
- try { conn.querySync("drop table mytab1"); } catch(e) {}
13
- conn.querySync("create table mytab1 (c1 int, c2 SMALLINT, c3 BIGINT, c4 INTEGER, c5 DECIMAL(3), c6 NUM, c7 float, c8 double, c9 decfloat, c10 char(10), c11 varchar(10), c12 char for bit data, c13 clob(10), c14 date, c15 time, c16 timestamp, c17 blob(10))");
14
- conn.querySync("insert into mytab1 values (1, 2, 456736789, 1234, 67.98, 5689, 56.2390, 34567890, 45.234, 'bimal', 'kumar', '\x50', 'jha123456', '2015-09-10', '10:16:33', '2015-09-10 10:16:33.770139', BLOB(x'616263'))");
15
- conn.query("select * from mytab1").then(function(data) {
16
- console.log(data);
17
- conn.querySync("drop table mytab1");
18
- conn.closeSync();
19
-
20
- assert.deepEqual(data,
21
- [ { C1: 1,
22
- C2: 2,
23
- C3: '456736789',
24
- C4: 1234,
25
- C5: '67',
26
- C6: '5689',
27
- C7: 56.239,
28
- C8: 34567890,
29
- C9: '45.234',
30
- C10: 'bimal ',
31
- C11: 'kumar',
32
- C12: Buffer.from([0x50]),
33
- C13: 'jha123456',
34
- C14: '2015-09-10',
35
- C15: '10:16:33',
36
- C16: '2015-09-10 10:16:33.770139',
37
- C17: Buffer.from([0x61, 0x62, 0x63]) } ]);
38
-
39
- }, function(err) {
40
- console.log(err);
41
- });
42
- });
1
+ var common = require("./common")
2
+ , ibmdb = require("../")
3
+ , assert = require("assert")
4
+ , cn = common.connectionString;
5
+
6
+ ibmdb.open(cn).then(function(conn) {
7
+ return conn;
8
+ }, function(err) {
9
+ console.log(err)
10
+ })
11
+ .then(function(conn) {
12
+ try { conn.querySync("drop table mytab1"); } catch(e) {}
13
+ conn.querySync("create table mytab1 (c1 int, c2 SMALLINT, c3 BIGINT, c4 INTEGER, c5 DECIMAL(3), c6 NUM, c7 float, c8 double, c9 decfloat, c10 char(10), c11 varchar(10), c12 char for bit data, c13 clob(10), c14 date, c15 time, c16 timestamp, c17 blob(10))");
14
+ conn.querySync("insert into mytab1 values (1, 2, 456736789, 1234, 67.98, 5689, 56.2390, 34567890, 45.234, 'bimal', 'kumar', '\x50', 'jha123456', '2015-09-10', '10:16:33', '2015-09-10 10:16:33.770139', BLOB(x'616263'))");
15
+ conn.query("select * from mytab1").then(function(data) {
16
+ console.log(data);
17
+ conn.querySync("drop table mytab1");
18
+ conn.closeSync();
19
+
20
+ assert.deepEqual(data,
21
+ [ { C1: 1,
22
+ C2: 2,
23
+ C3: '456736789',
24
+ C4: 1234,
25
+ C5: '67',
26
+ C6: '5689',
27
+ C7: 56.239,
28
+ C8: 34567890,
29
+ C9: '45.234',
30
+ C10: 'bimal ',
31
+ C11: 'kumar',
32
+ C12: Buffer.from([0x50]),
33
+ C13: 'jha123456',
34
+ C14: '2015-09-10',
35
+ C15: '10:16:33',
36
+ C16: '2015-09-10 10:16:33.770139',
37
+ C17: Buffer.from([0x61, 0x62, 0x63]) } ]);
38
+
39
+ }, function(err) {
40
+ console.log(err);
41
+ });
42
+ });
@@ -0,0 +1,405 @@
1
+ // Consolidated query operations test: query (async/sync/promise), queryResult,
2
+ // queryStream, fetchMode (object/array), insert, DDL, error handling.
3
+ // Replaces: test-query-select, test-querySync-select, test-querySync-select-with-exception,
4
+ // test-query-select-fetch, test-query-select-fetchMode-array, test-query-insert,
5
+ // test-query-create-table, test-query-create-table-fetchSync, test-query-drop-table,
6
+ // test-queryResult, test-queryStream.
7
+
8
+ var common = require("./common")
9
+ , ibmdb = require("../")
10
+ , assert = require("assert")
11
+ , os = require("os")
12
+ , cn = common.connectionString
13
+ ;
14
+
15
+ var passed = 0, failed = 0;
16
+
17
+ function ok(label) { passed++; console.log(" PASS: " + label); }
18
+ function fail(label, detail) { failed++; console.log(" FAIL: " + label + " " + (detail || "")); }
19
+
20
+ main();
21
+
22
+ async function main() {
23
+ var conn;
24
+ try {
25
+ conn = await ibmdb.open(cn);
26
+ } catch(e) {
27
+ console.log("Connection failed:", e);
28
+ process.exit(1);
29
+ }
30
+
31
+ await testQuerySyncSelect(conn);
32
+ await testQuerySyncFetchModes(conn);
33
+ await testQuerySyncException(conn);
34
+ await testQueryAsyncCallback(conn);
35
+ await testQueryAsyncPromise(conn);
36
+ await testQueryResultAndFetch(conn);
37
+ await testQueryResultSync(conn);
38
+ await testQueryStreamSuccess(conn);
39
+ await testQueryStreamError(conn);
40
+ await testQueryInsert(conn);
41
+ await testQueryDDL(conn);
42
+ await testQueryWithParams(conn);
43
+ await testDuplicateColumnNames(conn);
44
+ await testColumnAlias(conn);
45
+ await testMultiStatementError(conn);
46
+ await testGetSQLError(conn);
47
+ await testParamTypeObject(conn);
48
+ await testMixedAliasColumns(conn);
49
+ await testFinalTableInsert(conn);
50
+ await testQueryResultWithParams(conn);
51
+
52
+ await conn.close();
53
+ console.log("\n===== Query Operations Tests: %d passed, %d failed =====", passed, failed);
54
+ process.exit(failed ? 1 : 0);
55
+ }
56
+
57
+ // querySync: basic select with object mode
58
+ async function testQuerySyncSelect(conn) {
59
+ console.log("\n[testQuerySyncSelect]");
60
+ try {
61
+ var data = conn.querySync("select 1 as \"COLINT\", 'some test' as \"COLTEXT\" FROM SYSIBM.SYSDUMMY1");
62
+ assert.deepEqual(data, [{ COLINT: 1, COLTEXT: 'some test' }]);
63
+ ok("querySync returns object row");
64
+ } catch(e) { fail("querySync select", e.message); }
65
+ }
66
+
67
+ // querySync: fetch modes (array and object)
68
+ async function testQuerySyncFetchModes(conn) {
69
+ console.log("\n[testQuerySyncFetchModes]");
70
+ try {
71
+ conn.fetchMode = 3; // FETCH_ARRAY
72
+ var data = conn.querySync("select 1, 2, 3 from sysibm.sysdummy1");
73
+ assert.deepEqual(data, [[1, 2, 3]]);
74
+ ok("querySync with FETCH_ARRAY mode");
75
+
76
+ conn.fetchMode = 4; // FETCH_OBJECT (default)
77
+ data = conn.querySync("select 1 as COL1 from sysibm.sysdummy1");
78
+ assert.deepEqual(data, [{ COL1: 1 }]);
79
+ ok("querySync with FETCH_OBJECT mode");
80
+ } catch(e) {
81
+ fail("querySync fetch modes", e.message);
82
+ } finally {
83
+ conn.fetchMode = 4;
84
+ }
85
+ }
86
+
87
+ // querySync: invalid SQL returns error object or throws
88
+ async function testQuerySyncException(conn) {
89
+ console.log("\n[testQuerySyncException]");
90
+ var err = null;
91
+ try {
92
+ err = conn.querySync("select invalid query");
93
+ } catch(e) {
94
+ err = e;
95
+ }
96
+ try {
97
+ assert.ok(err, "querySync should produce an error for bad SQL");
98
+ assert.ok(typeof err.sqlcode === 'number', "sqlcode should be a number");
99
+ assert.ok(typeof err.sqlstate === 'string' && err.sqlstate.length > 0);
100
+ assert.ok(err.error || err.message, "should have error or message property");
101
+ if (err instanceof Error) {
102
+ assert.ok(err.message.length > 0);
103
+ } else {
104
+ assert.equal(err.error, "[node-ibm_db] Error in ODBCConnection::QuerySync while executing query.");
105
+ }
106
+ ok("querySync returns error with sqlcode and sqlstate");
107
+ } catch(e) { fail("querySync exception", e.message); }
108
+ }
109
+
110
+ // query: async callback style
111
+ async function testQueryAsyncCallback(conn) {
112
+ console.log("\n[testQueryAsyncCallback]");
113
+ return new Promise(function(resolve) {
114
+ conn.query("select 1 as COLINT, 'hello' as COLTEXT from sysibm.sysdummy1", function(err, data) {
115
+ try {
116
+ assert.equal(err, null);
117
+ assert.equal(data.length, 1);
118
+ assert.equal(data[0].COLINT, '1');
119
+ assert.equal(data[0].COLTEXT, 'hello');
120
+ ok("query async callback returns data");
121
+ } catch(e) { fail("query async callback", e.message); }
122
+ resolve();
123
+ });
124
+ });
125
+ }
126
+
127
+ // query: promise style
128
+ async function testQueryAsyncPromise(conn) {
129
+ console.log("\n[testQueryAsyncPromise]");
130
+ try {
131
+ var data = await conn.query("select 42 as NUM from sysibm.sysdummy1");
132
+ assert.equal(data[0].NUM, '42');
133
+ ok("query with promise returns data");
134
+ } catch(e) { fail("query promise", e.message); }
135
+ }
136
+
137
+ // queryResult + fetch (callback)
138
+ async function testQueryResultAndFetch(conn) {
139
+ console.log("\n[testQueryResultAndFetch]");
140
+ return new Promise(function(resolve) {
141
+ var query = { sql: "select 1 as COLINT, 'test' as COLTEXT FROM SYSIBM.SYSDUMMY1" };
142
+ conn.queryResult(query, function(err, result) {
143
+ try {
144
+ assert.equal(err, null);
145
+ assert.equal(result.constructor.name, "ODBCResult");
146
+ } catch(e) { fail("queryResult", e.message); resolve(); return; }
147
+
148
+ result.fetch(function(err, data) {
149
+ try {
150
+ assert.equal(err, null);
151
+ assert.deepEqual(data, { COLINT: '1', COLTEXT: 'test' });
152
+ ok("queryResult + fetch returns single row");
153
+ } catch(e) { fail("queryResult fetch", e.message); }
154
+
155
+ // Verify metadata
156
+ try {
157
+ var meta = result.getColumnMetadataSync();
158
+ assert.ok(Array.isArray(meta));
159
+ assert.ok(meta.length >= 2);
160
+ ok("getColumnMetadataSync returns column info");
161
+ } catch(e) { fail("getColumnMetadataSync", e.message); }
162
+
163
+ result.closeSync();
164
+ resolve();
165
+ });
166
+ });
167
+ });
168
+ }
169
+
170
+ // queryResultSync
171
+ async function testQueryResultSync(conn) {
172
+ console.log("\n[testQueryResultSync]");
173
+ try {
174
+ var result = conn.queryResultSync("select 'abc' as C1 from sysibm.sysdummy1");
175
+ assert.equal(result.constructor.name, "ODBCResult");
176
+ var data = result.fetchAllSync();
177
+ assert.deepEqual(data, [{ C1: 'abc' }]);
178
+ result.closeSync();
179
+ ok("queryResultSync + fetchAllSync");
180
+ } catch(e) { fail("queryResultSync", e.message); }
181
+ }
182
+
183
+ // queryStream: success case
184
+ async function testQueryStreamSuccess(conn) {
185
+ console.log("\n[testQueryStreamSuccess]");
186
+ return new Promise(function(resolve) {
187
+ var sql = "select 1 as COLINT, 'stream' as COLTEXT FROM SYSIBM.SYSDUMMY1";
188
+ var stream = conn.queryStream(sql);
189
+ var rows = [];
190
+
191
+ stream.on('data', function(data) {
192
+ rows.push(data);
193
+ }).on('error', function(err) {
194
+ fail("queryStream success case got error", err.message);
195
+ resolve();
196
+ }).on('end', function() {
197
+ try {
198
+ assert.equal(rows.length, 1);
199
+ assert.deepEqual(rows[0], { COLINT: '1', COLTEXT: 'stream' });
200
+ ok("queryStream emits data and end");
201
+ } catch(e) { fail("queryStream data", e.message); }
202
+ resolve();
203
+ });
204
+ });
205
+ }
206
+
207
+ // queryStream: error case (bad SQL)
208
+ async function testQueryStreamError(conn) {
209
+ console.log("\n[testQueryStreamError]");
210
+ return new Promise(function(resolve) {
211
+ var stream = conn.queryStream("wrong query syntax");
212
+ stream.once('data', function() {
213
+ fail("queryStream error case should not emit data");
214
+ resolve();
215
+ }).once('error', function(err) {
216
+ try {
217
+ assert.ok(err instanceof Error);
218
+ assert.ok(typeof err.sqlcode === 'number');
219
+ assert.ok(typeof err.sqlstate === 'string' && err.sqlstate.length > 0);
220
+ ok("queryStream emits Error with sqlcode/sqlstate");
221
+ } catch(e) { fail("queryStream error", e.message); }
222
+ resolve();
223
+ });
224
+ });
225
+ }
226
+
227
+ // Insert and verify with query
228
+ async function testQueryInsert(conn) {
229
+ console.log("\n[testQueryInsert]");
230
+ try {
231
+ await conn.query("drop table qtesttab").catch(function() {});
232
+ await conn.query("create table qtesttab (COLINT INTEGER, COLTEXT VARCHAR(50))");
233
+ await conn.query("insert into qtesttab values (1, 'first')");
234
+ await conn.query("insert into qtesttab values (2, 'second')");
235
+ await conn.query("insert into qtesttab values (3, 'third')");
236
+
237
+ var data = conn.querySync("select * from qtesttab order by COLINT");
238
+ assert.equal(data.length, 3);
239
+ assert.equal(data[0].COLINT, 1);
240
+ assert.equal(data[0].COLTEXT, 'first');
241
+ assert.equal(data[2].COLINT, 3);
242
+ ok("insert and select verify data");
243
+
244
+ await conn.query("drop table qtesttab");
245
+ ok("drop table after insert");
246
+ } catch(e) { fail("query insert", e.message); }
247
+ }
248
+
249
+ // DDL: create table via queryResult and fetchAllSync on DDL
250
+ async function testQueryDDL(conn) {
251
+ console.log("\n[testQueryDDL]");
252
+ return new Promise(function(resolve) {
253
+ conn.querySync("drop table ddltest").toString(); // ignore error
254
+ conn.queryResult("create table ddltest (C1 INTEGER, C2 VARCHAR(10))", function(err, result) {
255
+ try {
256
+ // DDL may or may not return result depending on driver
257
+ if (result) {
258
+ try {
259
+ var data = result.fetchAllSync();
260
+ // DDL returns empty result
261
+ assert.deepEqual(data, []);
262
+ } catch(e) { /* fetchAllSync on DDL may throw */ }
263
+ result.closeSync();
264
+ }
265
+ ok("DDL via queryResult does not crash");
266
+ } catch(e) { fail("DDL queryResult", e.message); }
267
+
268
+ conn.querySync("drop table ddltest");
269
+ resolve();
270
+ });
271
+ });
272
+ }
273
+
274
+ // Query with parameterized values
275
+ async function testQueryWithParams(conn) {
276
+ console.log("\n[testQueryWithParams]");
277
+ try {
278
+ await conn.query("drop table paramtab").catch(function() {});
279
+ await conn.query("create table paramtab (C1 INTEGER, C2 VARCHAR(20))");
280
+ await conn.query("insert into paramtab values (?, ?)", [10, 'hello']);
281
+ await conn.query("insert into paramtab values (?, ?)", [20, 'world']);
282
+
283
+ var data = conn.querySync("select * from paramtab order by C1");
284
+ assert.equal(data.length, 2);
285
+ assert.equal(data[0].C1, 10);
286
+ assert.equal(data[0].C2, 'hello');
287
+ assert.equal(data[1].C1, 20);
288
+ assert.equal(data[1].C2, 'world');
289
+ ok("query with parameter markers");
290
+
291
+ await conn.query("drop table paramtab");
292
+ } catch(e) { fail("query with params", e.message); }
293
+ }
294
+
295
+ // Duplicate column names
296
+ async function testDuplicateColumnNames(conn) {
297
+ console.log("\n[testDuplicateColumnNames]");
298
+ try {
299
+ var data = await conn.query("select 'text 1' as name, 'text 2' as name from SYSIBM.SYSDUMMY1");
300
+ assert.equal(data.length, 1);
301
+ // With duplicate names, second column gets a suffix
302
+ ok("duplicate column names handled without crash");
303
+ } catch(e) { fail("duplicate column names", e.message); }
304
+ }
305
+
306
+ // Column alias
307
+ async function testColumnAlias(conn) {
308
+ console.log("\n[testColumnAlias]");
309
+ try {
310
+ var data = await conn.query("select 1 as \"COLINT\", 'some test' as \"COLTEXT\" FROM SYSIBM.SYSDUMMY1");
311
+ assert.deepEqual(data, [{ COLINT: '1', COLTEXT: 'some test' }]);
312
+ ok("column alias in async query");
313
+ } catch(e) { fail("column alias", e.message); }
314
+ }
315
+
316
+ // Multi-statement SQL should return error (issue #557)
317
+ async function testMultiStatementError(conn) {
318
+ console.log("\n[testMultiStatementError]");
319
+ try {
320
+ await conn.query("drop table mstab").catch(function() {});
321
+ // Query referencing non-existent table in multi-statement
322
+ var err = await conn.query("select * from mstab_nonexist; select 1 from sysibm.sysdummy1;")
323
+ .then(function() { return null; })
324
+ .catch(function(e) { return e; });
325
+ assert.ok(err, "multi-statement with bad table should error");
326
+ assert.ok(err.message.search("SQL0204N|42704") > 0 || err.message.length > 0);
327
+ ok("multi-statement SQL error detected");
328
+ } catch(e) { fail("multi-statement error", e.message); }
329
+ }
330
+
331
+ // getSQLErrorSync from queryResult
332
+ async function testGetSQLError(conn) {
333
+ console.log("\n[testGetSQLError]");
334
+ try {
335
+ var result = conn.queryResultSync("select 1 as C1 from sysibm.sysdummy1");
336
+ var sqlErr = result.getSQLErrorSync();
337
+ // getSQLErrorSync returns {error, sqlcode, sqlstate} object
338
+ assert.ok(sqlErr !== null && sqlErr !== undefined);
339
+ assert.ok(typeof sqlErr.sqlcode === 'number');
340
+ result.fetchAllSync();
341
+ result.closeSync();
342
+ ok("getSQLErrorSync returns error object");
343
+ } catch(e) { fail("getSQLErrorSync", e.message); }
344
+ }
345
+
346
+ // Mixed aliased and unnamed columns
347
+ async function testMixedAliasColumns(conn) {
348
+ console.log("\n[testMixedAliasColumns]");
349
+ try {
350
+ var data = conn.querySync("select 'abc' as first, 'dcd' as second, 'efg', 'pqr', 'xyz' as last from SYSIBM.SYSDUMMY1");
351
+ assert.equal(data.length, 1);
352
+ assert.equal(data[0].FIRST, 'abc');
353
+ assert.equal(data[0].LAST, 'xyz');
354
+ ok("mixed aliased and unnamed columns");
355
+ } catch(e) { fail("mixed alias columns", e.message); }
356
+ }
357
+
358
+ // select from final table (insert ...) — DB2-specific syntax
359
+ async function testFinalTableInsert(conn) {
360
+ console.log("\n[testFinalTableInsert]");
361
+ try {
362
+ await conn.query("drop table fintab").catch(function() {});
363
+ await conn.query("create table fintab (COLINT INTEGER, COLTEXT VARCHAR(50))");
364
+ var param1 = {ParamType: "IN", DataType: "SQL_CHAR", Data: 'rocket'};
365
+ var data = conn.querySync("select COLTEXT from final table (insert into fintab (COLTEXT) values (?))", [param1]);
366
+ assert.deepEqual(data, [{ COLTEXT: 'rocket' }]);
367
+ ok("select from final table (insert) with param");
368
+ await conn.query("drop table fintab");
369
+ } catch(e) { fail("final table insert", e.message); }
370
+ }
371
+
372
+ // queryResult with parameter markers
373
+ async function testQueryResultWithParams(conn) {
374
+ console.log("\n[testQueryResultWithParams]");
375
+ return new Promise(function(resolve) {
376
+ conn.queryResult('select 1 as COL1 from sysibm.sysdummy1 where 1 = ?', [1], function(err, result) {
377
+ try {
378
+ assert.equal(err, null);
379
+ var data = result.fetchAllSync();
380
+ assert.equal(data.length, 1);
381
+ result.closeSync();
382
+ ok("queryResult with parameter markers");
383
+ } catch(e) { fail("queryResult with params", e.message); }
384
+ resolve();
385
+ });
386
+ });
387
+ }
388
+
389
+ // Query with ParamType as JSON object (CHAR type insert)
390
+ async function testParamTypeObject(conn) {
391
+ console.log("\n[testParamTypeObject]");
392
+ try {
393
+ await conn.query("drop table ptobj").catch(function() {});
394
+ await conn.query("create table ptobj (c1 int, c2 char(5))");
395
+ await conn.query("insert into ptobj values (?, ?)",
396
+ [1, { ParamType: 'INPUT', SQLType: 'CHAR', Data: 'ABCD' }]);
397
+ var data = conn.querySync("select * from ptobj");
398
+ assert.equal(data.length, 1);
399
+ assert.equal(data[0].C1, 1);
400
+ // CHAR(5) pads with space
401
+ assert.equal(data[0].C2.trim(), 'ABCD');
402
+ ok("ParamType as JSON object with SQLType:CHAR");
403
+ await conn.query("drop table ptobj");
404
+ } catch(e) { fail("ParamType object", e.message); }
405
+ }
@@ -1,25 +1,25 @@
1
- var common = require("./common")
2
- , ibmdb = require("../")
3
- , assert = require("assert")
4
- , cn = common.connectionString;
5
-
6
- main();
7
- async function main() {
8
- try {
9
- let conn = await ibmdb.open(cn);
10
- await conn.query("create table mytab(c1 int, c2 varchar(10))");
11
- await conn.query("insert into mytab values (?, ?)", [3, 'ibm']);
12
- let stmt = await conn.prepare("select * from mytab");
13
- let result = await stmt.execute();
14
- data = await result.fetchAll();
15
- console.log("result = ", data);
16
- assert.deepEqual(data, [ { C1: 3, C2: 'ibm' } ]);
17
- await result.close();
18
- await stmt.close();
19
- await conn.query("drop table mytab").catch((e) => {console.log(e);});
20
- await conn.close();
21
- } catch(e) {
22
- console.log(e);
23
- }
24
- }
25
-
1
+ var common = require("./common")
2
+ , ibmdb = require("../")
3
+ , assert = require("assert")
4
+ , cn = common.connectionString;
5
+
6
+ main();
7
+ async function main() {
8
+ try {
9
+ let conn = await ibmdb.open(cn);
10
+ await conn.query("create table mytab(c1 int, c2 varchar(10))");
11
+ await conn.query("insert into mytab values (?, ?)", [3, 'ibm']);
12
+ let stmt = await conn.prepare("select * from mytab");
13
+ let result = await stmt.execute();
14
+ data = await result.fetchAll();
15
+ console.log("result = ", data);
16
+ assert.deepEqual(data, [ { C1: 3, C2: 'ibm' } ]);
17
+ await result.close();
18
+ await stmt.close();
19
+ await conn.query("drop table mytab").catch((e) => {console.log(e);});
20
+ await conn.close();
21
+ } catch(e) {
22
+ console.log(e);
23
+ }
24
+ }
25
+