@tdengine/websocket 3.2.2 → 3.3.0

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 (275) hide show
  1. package/lib/package.json +64 -0
  2. package/lib/src/client/retryConfig.d.ts +10 -0
  3. package/lib/src/client/retryConfig.d.ts.map +1 -0
  4. package/lib/src/client/retryConfig.js +46 -0
  5. package/lib/src/client/wsClient.d.ts +24 -7
  6. package/lib/src/client/wsClient.d.ts.map +1 -1
  7. package/lib/src/client/wsClient.js +164 -137
  8. package/lib/src/client/wsConnector.d.ts +55 -9
  9. package/lib/src/client/wsConnector.d.ts.map +1 -1
  10. package/lib/src/client/wsConnector.js +522 -102
  11. package/lib/src/client/wsConnectorPool.d.ts +5 -1
  12. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  13. package/lib/src/client/wsConnectorPool.js +67 -52
  14. package/lib/src/client/wsEventCallback.d.ts +3 -0
  15. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  16. package/lib/src/client/wsEventCallback.js +67 -8
  17. package/lib/src/client/wsResponse.d.ts +0 -3
  18. package/lib/src/client/wsResponse.d.ts.map +1 -1
  19. package/lib/src/client/wsResponse.js +0 -3
  20. package/lib/src/common/addressConnectionTracker.d.ts +11 -0
  21. package/lib/src/common/addressConnectionTracker.d.ts.map +1 -0
  22. package/lib/src/common/addressConnectionTracker.js +53 -0
  23. package/lib/src/common/config.d.ts +3 -0
  24. package/lib/src/common/config.d.ts.map +1 -1
  25. package/lib/src/common/config.js +6 -0
  26. package/lib/src/common/constant.d.ts +1 -0
  27. package/lib/src/common/constant.d.ts.map +1 -1
  28. package/lib/src/common/constant.js +6 -1
  29. package/lib/src/common/dsn.d.ts +30 -0
  30. package/lib/src/common/dsn.d.ts.map +1 -0
  31. package/lib/src/common/dsn.js +221 -0
  32. package/lib/src/common/taosResult.d.ts.map +1 -1
  33. package/lib/src/common/taosResult.js +0 -5
  34. package/lib/src/common/urlParser.d.ts +32 -0
  35. package/lib/src/common/urlParser.d.ts.map +1 -0
  36. package/lib/src/common/urlParser.js +201 -0
  37. package/lib/src/common/utils.d.ts +6 -1
  38. package/lib/src/common/utils.d.ts.map +1 -1
  39. package/lib/src/common/utils.js +74 -22
  40. package/lib/src/index.d.ts.map +1 -1
  41. package/lib/src/sql/wsSql.d.ts.map +1 -1
  42. package/lib/src/sql/wsSql.js +2 -2
  43. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -1
  44. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -1
  45. package/lib/src/stmt/wsParams1.d.ts.map +1 -1
  46. package/lib/src/stmt/wsParams1.js +26 -26
  47. package/lib/src/stmt/wsParams2.d.ts.map +1 -1
  48. package/lib/src/stmt/wsParams2.js +0 -3
  49. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -1
  50. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  51. package/lib/src/stmt/wsProto.js +16 -16
  52. package/lib/src/stmt/wsStmt1.d.ts.map +1 -1
  53. package/lib/src/stmt/wsStmt2.d.ts +12 -4
  54. package/lib/src/stmt/wsStmt2.d.ts.map +1 -1
  55. package/lib/src/stmt/wsStmt2.js +182 -64
  56. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -1
  57. package/lib/src/tmq/config.d.ts +4 -2
  58. package/lib/src/tmq/config.d.ts.map +1 -1
  59. package/lib/src/tmq/config.js +30 -13
  60. package/lib/src/tmq/constant.d.ts +4 -0
  61. package/lib/src/tmq/constant.d.ts.map +1 -1
  62. package/lib/src/tmq/constant.js +4 -0
  63. package/lib/src/tmq/tmqResponse.d.ts.map +1 -1
  64. package/lib/src/tmq/tmqResponse.js +1 -4
  65. package/lib/src/tmq/wsTmq.d.ts +4 -1
  66. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  67. package/lib/src/tmq/wsTmq.js +55 -27
  68. package/lib/test/bulkPulling/a.test.d.ts +2 -0
  69. package/lib/test/bulkPulling/a.test.d.ts.map +1 -0
  70. package/lib/test/bulkPulling/a.test.js +166 -0
  71. package/lib/test/bulkPulling/cloud.tmq.test.js +3 -2
  72. package/lib/test/bulkPulling/decimal.test.js +8 -8
  73. package/lib/test/bulkPulling/dsn.test.d.ts +2 -0
  74. package/lib/test/bulkPulling/dsn.test.d.ts.map +1 -0
  75. package/lib/test/bulkPulling/dsn.test.js +397 -0
  76. package/lib/test/bulkPulling/queryTables.test.js +1 -1
  77. package/lib/test/bulkPulling/retryConfig.test.d.ts +2 -0
  78. package/lib/test/bulkPulling/retryConfig.test.d.ts.map +1 -0
  79. package/lib/test/bulkPulling/retryConfig.test.js +34 -0
  80. package/lib/test/bulkPulling/schemaless.test.js +15 -14
  81. package/lib/test/bulkPulling/sql.failover.test.d.ts +2 -0
  82. package/lib/test/bulkPulling/sql.failover.test.d.ts.map +1 -0
  83. package/lib/test/bulkPulling/sql.failover.test.js +338 -0
  84. package/lib/test/bulkPulling/sql.test.js +116 -44
  85. package/lib/test/bulkPulling/stmt1.func.test.js +31 -30
  86. package/lib/test/bulkPulling/stmt1.type.test.js +1 -1
  87. package/lib/test/bulkPulling/stmt2.failover.test.d.ts +2 -0
  88. package/lib/test/bulkPulling/stmt2.failover.test.d.ts.map +1 -0
  89. package/lib/test/bulkPulling/stmt2.failover.test.js +313 -0
  90. package/lib/test/bulkPulling/stmt2.func.test.js +37 -36
  91. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts +2 -0
  92. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts.map +1 -0
  93. package/lib/test/bulkPulling/stmt2.init.failover.test.js +50 -0
  94. package/lib/test/bulkPulling/stmt2.type.test.js +1 -1
  95. package/lib/test/bulkPulling/tmq.config.test.d.ts +2 -0
  96. package/lib/test/bulkPulling/tmq.config.test.d.ts.map +1 -0
  97. package/lib/test/bulkPulling/tmq.config.test.js +77 -0
  98. package/lib/test/bulkPulling/tmq.failover.test.d.ts +2 -0
  99. package/lib/test/bulkPulling/tmq.failover.test.d.ts.map +1 -0
  100. package/lib/test/bulkPulling/tmq.failover.test.js +404 -0
  101. package/lib/test/bulkPulling/tmq.test.js +135 -14
  102. package/lib/test/bulkPulling/urlParser.test.d.ts +2 -0
  103. package/lib/test/bulkPulling/urlParser.test.d.ts.map +1 -0
  104. package/lib/test/bulkPulling/urlParser.test.js +452 -0
  105. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts +2 -0
  106. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts.map +1 -0
  107. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +184 -0
  108. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts +2 -0
  109. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts.map +1 -0
  110. package/lib/test/bulkPulling/wsClient.recovery.test.js +104 -0
  111. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts +2 -0
  112. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts.map +1 -0
  113. package/lib/test/bulkPulling/wsConfig.dsn.test.js +39 -0
  114. package/lib/test/bulkPulling/wsConnectPool.test.js +7 -7
  115. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts +2 -0
  116. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts.map +1 -0
  117. package/lib/test/bulkPulling/wsConnector.failover.test.js +497 -0
  118. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts +2 -0
  119. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts.map +1 -0
  120. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +52 -0
  121. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts +2 -0
  122. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts.map +1 -0
  123. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.js +28 -0
  124. package/lib/test/bulkPulling/wsEventCallback.test.d.ts +2 -0
  125. package/lib/test/bulkPulling/wsEventCallback.test.d.ts.map +1 -0
  126. package/lib/test/bulkPulling/wsEventCallback.test.js +54 -0
  127. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts +2 -0
  128. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts.map +1 -0
  129. package/lib/test/bulkPulling/wsProxy.failover.integration.test.js +120 -0
  130. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts +2 -0
  131. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts.map +1 -0
  132. package/lib/test/bulkPulling/wsProxy.failover.test.js +465 -0
  133. package/lib/test/client/wsClient.recovery.test.d.ts +2 -0
  134. package/lib/test/client/wsClient.recovery.test.d.ts.map +1 -0
  135. package/lib/test/client/wsClient.recovery.test.js +122 -0
  136. package/lib/test/client/wsConnectPool.test.d.ts +2 -0
  137. package/lib/test/client/wsConnectPool.test.d.ts.map +1 -0
  138. package/lib/test/client/wsConnectPool.test.js +147 -0
  139. package/lib/test/client/wsConnector.failover.test.d.ts +2 -0
  140. package/lib/test/client/wsConnector.failover.test.d.ts.map +1 -0
  141. package/lib/test/client/wsConnector.failover.test.js +681 -0
  142. package/lib/test/client/wsConnector.leastConnections.test.d.ts +2 -0
  143. package/lib/test/client/wsConnector.leastConnections.test.d.ts.map +1 -0
  144. package/lib/test/client/wsConnector.leastConnections.test.js +71 -0
  145. package/lib/test/client/wsConnectorPool.key.test.d.ts +2 -0
  146. package/lib/test/client/wsConnectorPool.key.test.d.ts.map +1 -0
  147. package/lib/test/client/wsConnectorPool.key.test.js +127 -0
  148. package/lib/test/client/wsEventCallback.test.d.ts +2 -0
  149. package/lib/test/client/wsEventCallback.test.d.ts.map +1 -0
  150. package/lib/test/client/wsEventCallback.test.js +98 -0
  151. package/lib/test/common/addressConnectionTracker.test.d.ts +2 -0
  152. package/lib/test/common/addressConnectionTracker.test.d.ts.map +1 -0
  153. package/lib/test/common/addressConnectionTracker.test.js +74 -0
  154. package/lib/test/common/dsn.test.d.ts +2 -0
  155. package/lib/test/common/dsn.test.d.ts.map +1 -0
  156. package/lib/test/common/dsn.test.js +406 -0
  157. package/lib/test/common/log.test.d.ts +2 -0
  158. package/lib/test/common/log.test.d.ts.map +1 -0
  159. package/lib/test/common/log.test.js +54 -0
  160. package/lib/test/common/utils.test.d.ts +2 -0
  161. package/lib/test/common/utils.test.d.ts.map +1 -0
  162. package/lib/test/common/utils.test.js +13 -0
  163. package/lib/test/common/wsConfig.dsn.test.d.ts +2 -0
  164. package/lib/test/common/wsConfig.dsn.test.d.ts.map +1 -0
  165. package/lib/test/common/wsConfig.dsn.test.js +39 -0
  166. package/lib/test/helpers/utils.d.ts +27 -0
  167. package/lib/test/helpers/utils.d.ts.map +1 -0
  168. package/lib/test/helpers/utils.js +341 -0
  169. package/lib/test/helpers/wsFailoverProxy.d.ts +109 -0
  170. package/lib/test/helpers/wsFailoverProxy.d.ts.map +1 -0
  171. package/lib/test/helpers/wsFailoverProxy.js +420 -0
  172. package/lib/test/helpers/wsProxy.d.ts +110 -0
  173. package/lib/test/helpers/wsProxy.d.ts.map +1 -0
  174. package/lib/test/helpers/wsProxy.js +429 -0
  175. package/lib/test/sql/core/decimal.test.d.ts +2 -0
  176. package/lib/test/sql/core/decimal.test.d.ts.map +1 -0
  177. package/lib/test/sql/core/decimal.test.js +153 -0
  178. package/lib/test/sql/core/queryTables.test.d.ts +2 -0
  179. package/lib/test/sql/core/queryTables.test.d.ts.map +1 -0
  180. package/lib/test/sql/core/queryTables.test.js +506 -0
  181. package/lib/test/sql/core/schemaless.test.d.ts +2 -0
  182. package/lib/test/sql/core/schemaless.test.d.ts.map +1 -0
  183. package/lib/test/sql/core/schemaless.test.js +102 -0
  184. package/lib/test/sql/core/sql.test.d.ts +2 -0
  185. package/lib/test/sql/core/sql.test.d.ts.map +1 -0
  186. package/lib/test/sql/core/sql.test.js +324 -0
  187. package/lib/test/sql/decimal.test.d.ts +2 -0
  188. package/lib/test/sql/decimal.test.d.ts.map +1 -0
  189. package/lib/test/sql/decimal.test.js +153 -0
  190. package/lib/test/sql/failover/sql.failover.test.d.ts +2 -0
  191. package/lib/test/sql/failover/sql.failover.test.d.ts.map +1 -0
  192. package/lib/test/sql/failover/sql.failover.test.js +341 -0
  193. package/lib/test/sql/queryTables.test.d.ts +2 -0
  194. package/lib/test/sql/queryTables.test.d.ts.map +1 -0
  195. package/lib/test/sql/queryTables.test.js +506 -0
  196. package/lib/test/sql/schemaless.test.d.ts +2 -0
  197. package/lib/test/sql/schemaless.test.d.ts.map +1 -0
  198. package/lib/test/sql/schemaless.test.js +102 -0
  199. package/lib/test/sql/sql.failover.test.d.ts +2 -0
  200. package/lib/test/sql/sql.failover.test.d.ts.map +1 -0
  201. package/lib/test/sql/sql.failover.test.js +341 -0
  202. package/lib/test/sql/sql.test.d.ts +2 -0
  203. package/lib/test/sql/sql.test.d.ts.map +1 -0
  204. package/lib/test/sql/sql.test.js +324 -0
  205. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts +2 -0
  206. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts.map +1 -0
  207. package/lib/test/stmt/failover/stmt2.failover.mock.test.js +341 -0
  208. package/lib/test/stmt/failover/stmt2.failover.test.d.ts +2 -0
  209. package/lib/test/stmt/failover/stmt2.failover.test.d.ts.map +1 -0
  210. package/lib/test/stmt/failover/stmt2.failover.test.js +384 -0
  211. package/lib/test/stmt/stmt1.func.test.d.ts +2 -0
  212. package/lib/test/stmt/stmt1.func.test.d.ts.map +1 -0
  213. package/lib/test/stmt/stmt1.func.test.js +418 -0
  214. package/lib/test/stmt/stmt1.type.test.d.ts +2 -0
  215. package/lib/test/stmt/stmt1.type.test.d.ts.map +1 -0
  216. package/lib/test/stmt/stmt1.type.test.js +399 -0
  217. package/lib/test/stmt/stmt2.failover.mock.test.d.ts +2 -0
  218. package/lib/test/stmt/stmt2.failover.mock.test.d.ts.map +1 -0
  219. package/lib/test/stmt/stmt2.failover.mock.test.js +341 -0
  220. package/lib/test/stmt/stmt2.failover.test.d.ts +2 -0
  221. package/lib/test/stmt/stmt2.failover.test.d.ts.map +1 -0
  222. package/lib/test/stmt/stmt2.failover.test.js +384 -0
  223. package/lib/test/stmt/stmt2.func.test.d.ts +2 -0
  224. package/lib/test/stmt/stmt2.func.test.d.ts.map +1 -0
  225. package/lib/test/stmt/stmt2.func.test.js +537 -0
  226. package/lib/test/stmt/stmt2.type.test.d.ts +2 -0
  227. package/lib/test/stmt/stmt2.type.test.d.ts.map +1 -0
  228. package/lib/test/stmt/stmt2.type.test.js +401 -0
  229. package/lib/test/stmt/v1/stmt1.func.test.d.ts +2 -0
  230. package/lib/test/stmt/v1/stmt1.func.test.d.ts.map +1 -0
  231. package/lib/test/stmt/v1/stmt1.func.test.js +418 -0
  232. package/lib/test/stmt/v1/stmt1.type.test.d.ts +2 -0
  233. package/lib/test/stmt/v1/stmt1.type.test.d.ts.map +1 -0
  234. package/lib/test/stmt/v1/stmt1.type.test.js +399 -0
  235. package/lib/test/stmt/v2/stmt2.func.test.d.ts +2 -0
  236. package/lib/test/stmt/v2/stmt2.func.test.d.ts.map +1 -0
  237. package/lib/test/stmt/v2/stmt2.func.test.js +537 -0
  238. package/lib/test/stmt/v2/stmt2.type.test.d.ts +2 -0
  239. package/lib/test/stmt/v2/stmt2.type.test.d.ts.map +1 -0
  240. package/lib/test/stmt/v2/stmt2.type.test.js +401 -0
  241. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts +2 -0
  242. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts.map +1 -0
  243. package/lib/test/tmq/cloud/cloud.tmq.test.js +84 -0
  244. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts +2 -0
  245. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts.map +1 -0
  246. package/lib/test/tmq/cloud/tmq.cloud.test.js +82 -0
  247. package/lib/test/tmq/core/tmq.config.test.d.ts +2 -0
  248. package/lib/test/tmq/core/tmq.config.test.d.ts.map +1 -0
  249. package/lib/test/tmq/core/tmq.config.test.js +83 -0
  250. package/lib/test/tmq/core/tmq.test.d.ts +2 -0
  251. package/lib/test/tmq/core/tmq.test.d.ts.map +1 -0
  252. package/lib/test/tmq/core/tmq.test.js +513 -0
  253. package/lib/test/tmq/failover/tmq.failover.test.d.ts +2 -0
  254. package/lib/test/tmq/failover/tmq.failover.test.d.ts.map +1 -0
  255. package/lib/test/tmq/failover/tmq.failover.test.js +404 -0
  256. package/lib/test/tmq/tmq.cloud.test.d.ts +2 -0
  257. package/lib/test/tmq/tmq.cloud.test.d.ts.map +1 -0
  258. package/lib/test/tmq/tmq.cloud.test.js +82 -0
  259. package/lib/test/tmq/tmq.config.test.d.ts +2 -0
  260. package/lib/test/tmq/tmq.config.test.d.ts.map +1 -0
  261. package/lib/test/tmq/tmq.config.test.js +94 -0
  262. package/lib/test/tmq/tmq.failover.test.d.ts +2 -0
  263. package/lib/test/tmq/tmq.failover.test.d.ts.map +1 -0
  264. package/lib/test/tmq/tmq.failover.test.js +404 -0
  265. package/lib/test/tmq/tmq.test.d.ts +2 -0
  266. package/lib/test/tmq/tmq.test.d.ts.map +1 -0
  267. package/lib/test/tmq/tmq.test.js +513 -0
  268. package/lib/test/unit/connectionManager.test.d.ts +2 -0
  269. package/lib/test/unit/connectionManager.test.d.ts.map +1 -0
  270. package/lib/test/unit/connectionManager.test.js +91 -0
  271. package/lib/test/utils.d.ts +4 -0
  272. package/lib/test/utils.d.ts.map +1 -1
  273. package/lib/test/utils.js +11 -17
  274. package/package.json +1 -1
  275. package/readme.md +2 -2
@@ -0,0 +1,537 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wsConnectorPool_1 = require("@src/client/wsConnectorPool");
4
+ const config_1 = require("@src/common/config");
5
+ const log_1 = require("@src/common/log");
6
+ const wsSql_1 = require("@src/sql/wsSql");
7
+ const wsStmt2_1 = require("@src/stmt/wsStmt2");
8
+ const utils_1 = require("@test-helpers/utils");
9
+ let dns = "ws://localhost:6041";
10
+ (0, log_1.setLevel)("debug");
11
+ beforeAll(async () => {
12
+ let conf = new config_1.WSConfig(dns);
13
+ conf.setUser((0, utils_1.testUsername)());
14
+ conf.setPwd((0, utils_1.testPassword)());
15
+ let wsSql = await wsSql_1.WsSql.open(conf);
16
+ await wsSql.exec("create database if not exists power_func_stmt2 KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
17
+ await wsSql.exec("CREATE STABLE if not exists power_func_stmt2.meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);");
18
+ await wsSql.close();
19
+ });
20
+ describe("TDWebSocket.Stmt()", () => {
21
+ jest.setTimeout(20 * 1000);
22
+ let tags = ["California", 3];
23
+ let multi = [
24
+ [1709183268567, 1709183268568, 1709183268569],
25
+ [10.2, 10.3, 10.4],
26
+ [292, 293, 294],
27
+ [0.32, 0.33, 0.34],
28
+ ];
29
+ test("normal connect", async () => {
30
+ let conf = new config_1.WSConfig(dns);
31
+ conf.setUser((0, utils_1.testUsername)());
32
+ conf.setPwd((0, utils_1.testPassword)());
33
+ conf.setDb("power_func_stmt2");
34
+ let connector = await wsSql_1.WsSql.open(conf);
35
+ let stmt = await connector.stmtInit();
36
+ expect(stmt).toBeTruthy();
37
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
38
+ expect(connector.state()).toBeGreaterThan(0);
39
+ await stmt.close();
40
+ await connector.close();
41
+ });
42
+ test("connect db with error", async () => {
43
+ expect.assertions(1);
44
+ let connector = null;
45
+ try {
46
+ let conf = new config_1.WSConfig(dns);
47
+ conf.setUser((0, utils_1.testUsername)());
48
+ conf.setPwd((0, utils_1.testPassword)());
49
+ conf.setDb("jest");
50
+ connector = await wsSql_1.WsSql.open(conf);
51
+ let stmt = await connector.stmtInit();
52
+ await stmt.close();
53
+ }
54
+ catch (e) {
55
+ let err = e;
56
+ expect(err.message).toMatch("Database not exist");
57
+ }
58
+ finally {
59
+ if (connector) {
60
+ await connector.close();
61
+ }
62
+ }
63
+ });
64
+ test("normal Prepare", async () => {
65
+ let conf = new config_1.WSConfig(dns);
66
+ conf.setUser((0, utils_1.testUsername)());
67
+ conf.setPwd((0, utils_1.testPassword)());
68
+ conf.setDb("power_func_stmt2");
69
+ let connector = await wsSql_1.WsSql.open(conf);
70
+ let stmt = await connector.stmtInit();
71
+ expect(stmt).toBeTruthy();
72
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
73
+ expect(connector.state()).toBeGreaterThan(0);
74
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
75
+ await stmt.setTableName("d1001");
76
+ let params = stmt.newStmtParam();
77
+ params.setVarchar([tags[0]]);
78
+ params.setInt([tags[1]]);
79
+ await stmt.setTags(params);
80
+ await stmt.close();
81
+ await connector.close();
82
+ });
83
+ test("set tag error", async () => {
84
+ let conf = new config_1.WSConfig(dns);
85
+ conf.setUser((0, utils_1.testUsername)());
86
+ conf.setPwd((0, utils_1.testPassword)());
87
+ conf.setDb("power_func_stmt2");
88
+ let connector = await wsSql_1.WsSql.open(conf);
89
+ let stmt = await connector.stmtInit();
90
+ expect(stmt).toBeTruthy();
91
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
92
+ expect(connector.state()).toBeGreaterThan(0);
93
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
94
+ await stmt.setTableName("d1001");
95
+ let params = stmt.newStmtParam();
96
+ params.setVarchar([tags[0]]);
97
+ try {
98
+ await stmt.setTags(params);
99
+ }
100
+ catch (err) {
101
+ expect(err.message).toMatch("stmt tags count not match");
102
+ }
103
+ await stmt.close();
104
+ await connector.close();
105
+ });
106
+ test("error Prepare table", async () => {
107
+ let conf = new config_1.WSConfig(dns);
108
+ conf.setUser((0, utils_1.testUsername)());
109
+ conf.setPwd((0, utils_1.testPassword)());
110
+ conf.setDb("power_func_stmt2");
111
+ let connector = await wsSql_1.WsSql.open(conf);
112
+ let stmt = await connector.stmtInit();
113
+ expect(stmt).toBeTruthy();
114
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
115
+ expect(connector.state()).toBeGreaterThan(0);
116
+ try {
117
+ await stmt.prepare("INSERT ? INTO ? USING meters TAGS (?, ?) VALUES (?, ?, ?, ?)");
118
+ await stmt.setTableName("d1001");
119
+ }
120
+ catch (e) {
121
+ let err = e;
122
+ expect(err.message).toMatch(/keyword INTO is expected|Syntax error in SQL/);
123
+ }
124
+ await stmt.close();
125
+ await connector.close();
126
+ });
127
+ test("error Prepare tag", async () => {
128
+ let conf = new config_1.WSConfig(dns);
129
+ conf.setUser((0, utils_1.testUsername)());
130
+ conf.setPwd((0, utils_1.testPassword)());
131
+ conf.setDb("power_func_stmt2");
132
+ let connector = await wsSql_1.WsSql.open(conf);
133
+ let stmt = await connector.stmtInit();
134
+ expect(stmt).toBeTruthy();
135
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
136
+ expect(connector.state()).toBeGreaterThan(0);
137
+ try {
138
+ await stmt.prepare("INSERT INTO ? USING meters TAGS (?, ?, ?) VALUES (?, ?, ?, ?)");
139
+ await stmt.setTableName("d1001");
140
+ }
141
+ catch (e) {
142
+ let err = e;
143
+ expect(err.message).toMatch("Tags number not matched");
144
+ }
145
+ await stmt.close();
146
+ await connector.close();
147
+ });
148
+ test("Bind supper table", async () => {
149
+ let conf = new config_1.WSConfig(dns);
150
+ conf.setUser((0, utils_1.testUsername)());
151
+ conf.setPwd((0, utils_1.testPassword)());
152
+ conf.setDb("power_func_stmt2");
153
+ let connector = await wsSql_1.WsSql.open(conf);
154
+ let stmt = await connector.stmtInit();
155
+ expect(stmt).toBeTruthy();
156
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
157
+ await stmt.prepare("INSERT INTO meters (ts, tbname, current, voltage, phase, location, groupId) VALUES (?, ?, ?, ?, ?, ?, ?)");
158
+ let lastTs = 0;
159
+ for (let i = 0; i < 10; i++) {
160
+ for (let j = 0; j < multi[0].length; j++) {
161
+ multi[0][j] = multi[0][0] + j;
162
+ lastTs = multi[0][j];
163
+ }
164
+ let dataParams = stmt.newStmtParam();
165
+ dataParams.setTimestamp(multi[0]);
166
+ dataParams.setVarchar([`d1001`, `d1002`, `d1003`]);
167
+ dataParams.setFloat(multi[1]);
168
+ dataParams.setInt(multi[2]);
169
+ dataParams.setFloat(multi[3]);
170
+ dataParams.setVarchar([
171
+ "SanFrancisco_1",
172
+ "SanFrancisco_2",
173
+ "SanFrancisco_3",
174
+ ]);
175
+ dataParams.setInt([1, 2, 3]);
176
+ await stmt.bind(dataParams);
177
+ multi[0][0] = lastTs + 1;
178
+ }
179
+ await stmt.batch();
180
+ await stmt.exec();
181
+ expect(stmt.getLastAffected()).toEqual(30);
182
+ await stmt.close();
183
+ await connector.close();
184
+ });
185
+ test("Bind a single table", async () => {
186
+ let conf = new config_1.WSConfig(dns);
187
+ conf.setUser((0, utils_1.testUsername)());
188
+ conf.setPwd((0, utils_1.testPassword)());
189
+ conf.setDb("power_func_stmt2");
190
+ let connector = await wsSql_1.WsSql.open(conf);
191
+ let stmt = await connector.stmtInit();
192
+ expect(stmt).toBeTruthy();
193
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
194
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) (ts, current, voltage, phase) VALUES (?, ?, ?, ?)");
195
+ await stmt.setTableName("power_func_stmt2.d1001");
196
+ let params = stmt.newStmtParam();
197
+ params.setVarchar(["SanFrancisco"]);
198
+ params.setInt([1]);
199
+ await stmt.setTags(params);
200
+ let lastTs = 0;
201
+ for (let i = 0; i < 10; i++) {
202
+ for (let j = 0; j < multi[0].length; j++) {
203
+ multi[0][j] = multi[0][0] + j;
204
+ lastTs = multi[0][j];
205
+ }
206
+ let dataParams = stmt.newStmtParam();
207
+ dataParams.setTimestamp(multi[0]);
208
+ dataParams.setFloat(multi[1]);
209
+ dataParams.setInt(multi[2]);
210
+ dataParams.setFloat(multi[3]);
211
+ await stmt.bind(dataParams);
212
+ multi[0][0] = lastTs + 1;
213
+ }
214
+ await stmt.batch();
215
+ await stmt.exec();
216
+ expect(stmt.getLastAffected()).toEqual(30);
217
+ await stmt.close();
218
+ await connector.close();
219
+ });
220
+ test("Bind multiple tables", async () => {
221
+ let conf = new config_1.WSConfig(dns);
222
+ conf.setUser((0, utils_1.testUsername)());
223
+ conf.setPwd((0, utils_1.testPassword)());
224
+ conf.setDb("power_func_stmt2");
225
+ let connector = await wsSql_1.WsSql.open(conf);
226
+ let stmt = await connector.stmtInit();
227
+ expect(stmt).toBeTruthy();
228
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
229
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) (ts, current, voltage, phase) VALUES (?, ?, ?, ?)");
230
+ let lastTs = 0;
231
+ for (let i = 0; i < 10; i++) {
232
+ for (let j = 0; j < multi[0].length; j++) {
233
+ multi[0][j] = multi[0][0] + j;
234
+ lastTs = multi[0][j];
235
+ }
236
+ await stmt.setTableName(`power_func_stmt2.d100${i + 1}`);
237
+ let params = stmt.newStmtParam();
238
+ params.setVarchar([`SanFrancisco${i + 1}`]);
239
+ params.setInt([i + 1]);
240
+ await stmt.setTags(params);
241
+ let dataParams = stmt.newStmtParam();
242
+ dataParams.setTimestamp(multi[0]);
243
+ dataParams.setFloat(multi[1]);
244
+ dataParams.setInt(multi[2]);
245
+ dataParams.setFloat(multi[3]);
246
+ await stmt.bind(dataParams);
247
+ multi[0][0] = lastTs + 1;
248
+ }
249
+ await stmt.batch();
250
+ await stmt.exec();
251
+ expect(stmt.getLastAffected()).toEqual(30);
252
+ await stmt.close();
253
+ await connector.close();
254
+ });
255
+ test("query bind", async () => {
256
+ let conf = new config_1.WSConfig(dns);
257
+ conf.setUser((0, utils_1.testUsername)());
258
+ conf.setPwd((0, utils_1.testPassword)());
259
+ conf.setDb("power_func_stmt2");
260
+ let wsSql = await wsSql_1.WsSql.open(conf);
261
+ await wsSql.exec("CREATE STABLE if not exists power_func_stmt2.query_meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);");
262
+ let insertQuery = "INSERT INTO " +
263
+ "power_func_stmt2.q1001 USING power_func_stmt2.query_meters TAGS('California.SanFrancisco', 1) " +
264
+ "VALUES " +
265
+ "('2024-12-19 19:12:45.642', 50.30000, 201, 0.31000) " +
266
+ "('2024-12-19 19:12:46.642', 82.60000, 202, 0.33000) " +
267
+ "('2024-12-19 19:12:47.642', 92.30000, 203, 0.31000) " +
268
+ "('2024-12-19 18:12:45.642', 50.30000, 201, 0.31000) " +
269
+ "('2024-12-19 18:12:46.642', 82.60000, 202, 0.33000) " +
270
+ "('2024-12-19 18:12:47.642', 92.30000, 203, 0.31000) " +
271
+ "('2024-12-19 17:12:45.642', 50.30000, 201, 0.31000) " +
272
+ "('2024-12-19 17:12:46.642', 82.60000, 202, 0.33000) " +
273
+ "('2024-12-19 17:12:47.642', 92.30000, 203, 0.31000) " +
274
+ "power_func_stmt2.q1002 USING power_func_stmt2.query_meters TAGS('Alabama.Montgomery', 2) " +
275
+ "VALUES " +
276
+ "('2024-12-19 19:12:45.642', 50.30000, 204, 0.25000) " +
277
+ "('2024-12-19 19:12:46.642', 62.60000, 205, 0.33000) " +
278
+ "('2024-12-19 19:12:47.642', 72.30000, 206, 0.31000) " +
279
+ "('2024-12-19 18:12:45.642', 50.30000, 204, 0.25000) " +
280
+ "('2024-12-19 18:12:46.642', 62.60000, 205, 0.33000) " +
281
+ "('2024-12-19 18:12:47.642', 72.30000, 206, 0.31000) " +
282
+ "('2024-12-19 17:12:45.642', 50.30000, 204, 0.25000) " +
283
+ "('2024-12-19 17:12:46.642', 62.60000, 205, 0.33000) " +
284
+ "('2024-12-19 17:12:47.642', 72.30000, 206, 0.31000) ";
285
+ await wsSql.exec(insertQuery);
286
+ let stmt = await wsSql.stmtInit();
287
+ expect(stmt).toBeTruthy();
288
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
289
+ await stmt.prepare("select * from query_meters where ts >= ? and ts <= ?");
290
+ let dataParams = stmt.newStmtParam();
291
+ dataParams.setTimestamp([1734599565642n]);
292
+ dataParams.setTimestamp([1734635567642n]);
293
+ await stmt.bind(dataParams);
294
+ await stmt.exec();
295
+ let wsRows = await stmt.resultSet();
296
+ let nRows = 0;
297
+ while (await wsRows.next()) {
298
+ let result = wsRows.getData();
299
+ console.log(result);
300
+ expect(result).toBeTruthy();
301
+ nRows++;
302
+ }
303
+ expect(nRows).toEqual(18);
304
+ await wsRows.close();
305
+ await stmt.close();
306
+ await wsSql.close();
307
+ });
308
+ test("error BindParam", async () => {
309
+ let conf = new config_1.WSConfig(dns);
310
+ conf.setUser((0, utils_1.testUsername)());
311
+ conf.setPwd((0, utils_1.testPassword)());
312
+ conf.setDb("power_func_stmt2");
313
+ let connector = await wsSql_1.WsSql.open(conf);
314
+ let stmt = await connector.stmtInit();
315
+ expect(stmt).toBeTruthy();
316
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
317
+ expect(connector.state()).toBeGreaterThan(0);
318
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
319
+ await stmt.setTableName("d1001");
320
+ let params = stmt.newStmtParam();
321
+ params.setVarchar(["SanFrancisco"]);
322
+ params.setInt([7]);
323
+ await stmt.setTags(params);
324
+ let multi = [
325
+ [1709183268567, 1709183268568],
326
+ [10.2, 10.3, 10.4, 10.5],
327
+ [292, 293, 294],
328
+ [0.32, 0.33, 0.31],
329
+ ];
330
+ try {
331
+ let dataParams = stmt.newStmtParam();
332
+ dataParams.setTimestamp(multi[0]);
333
+ dataParams.setFloat(multi[1]);
334
+ dataParams.setInt(multi[2]);
335
+ dataParams.setFloat(multi[3]);
336
+ await stmt.bind(dataParams);
337
+ await stmt.batch();
338
+ await stmt.exec();
339
+ }
340
+ catch (e) {
341
+ let err = e;
342
+ expect(err.message).toMatch(/wrong row length|bind data length error/);
343
+ }
344
+ await stmt.close();
345
+ await connector.close();
346
+ });
347
+ test("no Batch", async () => {
348
+ let conf = new config_1.WSConfig(dns);
349
+ conf.setUser((0, utils_1.testUsername)());
350
+ conf.setPwd((0, utils_1.testPassword)());
351
+ conf.setDb("power_func_stmt2");
352
+ let connector = await wsSql_1.WsSql.open(conf);
353
+ let stmt = await connector.stmtInit();
354
+ expect(stmt).toBeTruthy();
355
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
356
+ expect(connector.state()).toBeGreaterThan(0);
357
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
358
+ await stmt.setTableName("d1001");
359
+ let params = stmt.newStmtParam();
360
+ params.setVarchar(["SanFrancisco"]);
361
+ params.setInt([7]);
362
+ await stmt.setTags(params);
363
+ let multi = [
364
+ [1709183268567, 1709183268568],
365
+ [10.2, 10.3],
366
+ [292, 293],
367
+ [0.32, 0.33],
368
+ ];
369
+ try {
370
+ let dataParams = stmt.newStmtParam();
371
+ dataParams.setTimestamp(multi[0]);
372
+ dataParams.setFloat(multi[1]);
373
+ dataParams.setInt(multi[2]);
374
+ dataParams.setFloat(multi[3]);
375
+ await stmt.bind(dataParams);
376
+ await stmt.exec();
377
+ }
378
+ catch (e) {
379
+ let err = e;
380
+ expect(err.message).toMatch("Stmt API usage error");
381
+ }
382
+ await stmt.close();
383
+ await connector.close();
384
+ });
385
+ test("Batch after BindParam", async () => {
386
+ let conf = new config_1.WSConfig(dns);
387
+ conf.setUser((0, utils_1.testUsername)());
388
+ conf.setPwd((0, utils_1.testPassword)());
389
+ conf.setDb("power_func_stmt2");
390
+ let connector = await wsSql_1.WsSql.open(conf);
391
+ let stmt = await connector.stmtInit();
392
+ expect(stmt).toBeTruthy();
393
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
394
+ expect(connector.state()).toBeGreaterThan(0);
395
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
396
+ await stmt.setTableName("d1001");
397
+ let params = stmt.newStmtParam();
398
+ params.setVarchar(["SanFrancisco"]);
399
+ params.setInt([7]);
400
+ await stmt.setTags(params);
401
+ let multi1 = [
402
+ [1709188881548, 1709188881549],
403
+ [10.2, 10.3],
404
+ [292, 293],
405
+ [0.32, 0.33],
406
+ ];
407
+ let multi2 = [
408
+ [1709188881550, 1709188881551],
409
+ [10.2, 10.3],
410
+ [292, 293],
411
+ [0.32, 0.33],
412
+ ];
413
+ let dataParams = stmt.newStmtParam();
414
+ dataParams.setTimestamp(multi1[0]);
415
+ dataParams.setFloat(multi1[1]);
416
+ dataParams.setInt(multi1[2]);
417
+ dataParams.setFloat(multi1[3]);
418
+ await stmt.bind(dataParams);
419
+ await stmt.batch();
420
+ await stmt.setTableName("d1002");
421
+ params = stmt.newStmtParam();
422
+ params.setVarchar(["SanFrancisco"]);
423
+ params.setInt([5]);
424
+ await stmt.setTags(params);
425
+ dataParams = stmt.newStmtParam();
426
+ dataParams.setTimestamp(multi2[0]);
427
+ dataParams.setFloat(multi2[1]);
428
+ dataParams.setInt(multi2[2]);
429
+ dataParams.setFloat(multi2[3]);
430
+ await stmt.bind(dataParams);
431
+ await stmt.batch();
432
+ await stmt.exec();
433
+ expect(stmt.getLastAffected()).toEqual(4);
434
+ await stmt.close();
435
+ await connector.close();
436
+ });
437
+ test("no set tag", async () => {
438
+ let conf = new config_1.WSConfig(dns);
439
+ conf.setUser((0, utils_1.testUsername)());
440
+ conf.setPwd((0, utils_1.testPassword)());
441
+ conf.setDb("power_func_stmt2");
442
+ let connector = await wsSql_1.WsSql.open(conf);
443
+ let stmt = await connector.stmtInit();
444
+ expect(stmt).toBeTruthy();
445
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
446
+ expect(connector.state()).toBeGreaterThan(0);
447
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
448
+ await stmt.setTableName("d1001");
449
+ try {
450
+ let dataParams = stmt.newStmtParam();
451
+ dataParams.setTimestamp(multi[0]);
452
+ dataParams.setFloat(multi[1]);
453
+ dataParams.setInt(multi[2]);
454
+ dataParams.setFloat(multi[3]);
455
+ await stmt.bind(dataParams);
456
+ await stmt.batch();
457
+ await stmt.exec();
458
+ }
459
+ catch (e) {
460
+ let err = e;
461
+ expect(err.message).toMatch(/Retry needed|Bind tags is empty!/);
462
+ }
463
+ await stmt.close();
464
+ await connector.close();
465
+ });
466
+ test("normal binary BindParam", async () => {
467
+ let conf = new config_1.WSConfig(dns);
468
+ conf.setUser((0, utils_1.testUsername)());
469
+ conf.setPwd((0, utils_1.testPassword)());
470
+ conf.setDb("power_func_stmt2");
471
+ let connector = await wsSql_1.WsSql.open(conf);
472
+ let stmt = await connector.stmtInit();
473
+ expect(stmt).toBeTruthy();
474
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
475
+ expect(connector.state()).toBeGreaterThan(0);
476
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
477
+ await stmt.setTableName("d1002");
478
+ let params = stmt.newStmtParam();
479
+ params.setVarchar(["SanFrancisco"]);
480
+ params.setInt([7]);
481
+ await stmt.setTags(params);
482
+ let dataParams = stmt.newStmtParam();
483
+ dataParams.setTimestamp(multi[0]);
484
+ dataParams.setFloat(multi[1]);
485
+ dataParams.setInt(multi[2]);
486
+ dataParams.setFloat(multi[3]);
487
+ await stmt.bind(dataParams);
488
+ await stmt.batch();
489
+ await stmt.exec();
490
+ let result = await connector.exec("select * from power_func_stmt2.meters");
491
+ console.log(result);
492
+ await stmt.close();
493
+ await connector.close();
494
+ });
495
+ test("normal json BindParam", async () => {
496
+ let conf = new config_1.WSConfig(dns);
497
+ conf.setUser((0, utils_1.testUsername)());
498
+ conf.setPwd((0, utils_1.testPassword)());
499
+ conf.setDb("power_func_stmt2");
500
+ let connector = await wsSql_1.WsSql.open(conf);
501
+ let stmt = await connector.stmtInit();
502
+ expect(stmt).toBeTruthy();
503
+ expect(stmt).toBeInstanceOf(wsStmt2_1.WsStmt2);
504
+ expect(connector.state()).toBeGreaterThan(0);
505
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
506
+ await stmt.setTableName("d1001");
507
+ let params = stmt.newStmtParam();
508
+ params.setVarchar(["SanFrancisco"]);
509
+ params.setInt([7]);
510
+ await stmt.setTags(params);
511
+ let multi1 = [
512
+ [1709188881548, 1709188881549],
513
+ [10.2, 10.3],
514
+ [292, 293],
515
+ [0.32, 0.33],
516
+ ];
517
+ let dataParams = stmt.newStmtParam();
518
+ dataParams.setTimestamp(multi1[0]);
519
+ dataParams.setFloat(multi1[1]);
520
+ dataParams.setInt(multi1[2]);
521
+ dataParams.setFloat(multi1[3]);
522
+ await stmt.bind(dataParams);
523
+ await stmt.batch();
524
+ await stmt.exec();
525
+ await stmt.close();
526
+ await connector.close();
527
+ });
528
+ });
529
+ afterAll(async () => {
530
+ let conf = new config_1.WSConfig(dns);
531
+ conf.setUser((0, utils_1.testUsername)());
532
+ conf.setPwd((0, utils_1.testPassword)());
533
+ let wsSql = await wsSql_1.WsSql.open(conf);
534
+ await wsSql.exec("drop database power_func_stmt2");
535
+ await wsSql.close();
536
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
537
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stmt2.type.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stmt2.type.test.d.ts","sourceRoot":"","sources":["../../../../test/stmt/v2/stmt2.type.test.ts"],"names":[],"mappings":""}