@tdengine/websocket 3.2.3 → 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 (224) hide show
  1. package/lib/package.json +1 -1
  2. package/lib/src/client/wsClient.d.ts +23 -7
  3. package/lib/src/client/wsClient.d.ts.map +1 -1
  4. package/lib/src/client/wsClient.js +154 -139
  5. package/lib/src/client/wsConnector.d.ts +55 -9
  6. package/lib/src/client/wsConnector.d.ts.map +1 -1
  7. package/lib/src/client/wsConnector.js +519 -100
  8. package/lib/src/client/wsConnectorPool.d.ts +5 -1
  9. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  10. package/lib/src/client/wsConnectorPool.js +61 -43
  11. package/lib/src/client/wsEventCallback.d.ts +3 -0
  12. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  13. package/lib/src/client/wsEventCallback.js +67 -8
  14. package/lib/src/common/addressConnectionTracker.d.ts +11 -0
  15. package/lib/src/common/addressConnectionTracker.d.ts.map +1 -0
  16. package/lib/src/common/addressConnectionTracker.js +53 -0
  17. package/lib/src/common/dsn.d.ts +14 -2
  18. package/lib/src/common/dsn.d.ts.map +1 -1
  19. package/lib/src/common/dsn.js +91 -22
  20. package/lib/src/common/taosResult.d.ts.map +1 -1
  21. package/lib/src/common/taosResult.js +0 -5
  22. package/lib/src/common/urlParser.d.ts +32 -0
  23. package/lib/src/common/urlParser.d.ts.map +1 -0
  24. package/lib/src/common/urlParser.js +201 -0
  25. package/lib/src/common/utils.d.ts +2 -1
  26. package/lib/src/common/utils.d.ts.map +1 -1
  27. package/lib/src/common/utils.js +35 -34
  28. package/lib/src/sql/wsSql.js +2 -2
  29. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -1
  30. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -1
  31. package/lib/src/stmt/wsParams1.d.ts.map +1 -1
  32. package/lib/src/stmt/wsParams1.js +26 -26
  33. package/lib/src/stmt/wsParams2.d.ts.map +1 -1
  34. package/lib/src/stmt/wsParams2.js +0 -3
  35. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -1
  36. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  37. package/lib/src/stmt/wsProto.js +16 -16
  38. package/lib/src/stmt/wsStmt1.d.ts.map +1 -1
  39. package/lib/src/stmt/wsStmt2.d.ts +12 -4
  40. package/lib/src/stmt/wsStmt2.d.ts.map +1 -1
  41. package/lib/src/stmt/wsStmt2.js +182 -64
  42. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -1
  43. package/lib/src/tmq/config.d.ts +3 -2
  44. package/lib/src/tmq/config.d.ts.map +1 -1
  45. package/lib/src/tmq/config.js +15 -15
  46. package/lib/src/tmq/wsTmq.d.ts +4 -1
  47. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  48. package/lib/src/tmq/wsTmq.js +50 -27
  49. package/lib/test/bulkPulling/a.test.d.ts +2 -0
  50. package/lib/test/bulkPulling/a.test.d.ts.map +1 -0
  51. package/lib/test/bulkPulling/a.test.js +166 -0
  52. package/lib/test/bulkPulling/dsn.test.js +19 -0
  53. package/lib/test/bulkPulling/retryConfig.test.js +11 -11
  54. package/lib/test/bulkPulling/sql.failover.test.d.ts +2 -0
  55. package/lib/test/bulkPulling/sql.failover.test.d.ts.map +1 -0
  56. package/lib/test/bulkPulling/sql.failover.test.js +338 -0
  57. package/lib/test/bulkPulling/stmt2.failover.test.d.ts +2 -0
  58. package/lib/test/bulkPulling/stmt2.failover.test.d.ts.map +1 -0
  59. package/lib/test/bulkPulling/stmt2.failover.test.js +313 -0
  60. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts +2 -0
  61. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts.map +1 -0
  62. package/lib/test/bulkPulling/stmt2.init.failover.test.js +50 -0
  63. package/lib/test/bulkPulling/tmq.failover.test.d.ts +2 -0
  64. package/lib/test/bulkPulling/tmq.failover.test.d.ts.map +1 -0
  65. package/lib/test/bulkPulling/tmq.failover.test.js +404 -0
  66. package/lib/test/bulkPulling/urlParser.test.d.ts +2 -0
  67. package/lib/test/bulkPulling/urlParser.test.d.ts.map +1 -0
  68. package/lib/test/bulkPulling/urlParser.test.js +452 -0
  69. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +2 -2
  70. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts +2 -0
  71. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts.map +1 -0
  72. package/lib/test/bulkPulling/wsClient.recovery.test.js +104 -0
  73. package/lib/test/bulkPulling/wsConfig.dsn.test.js +2 -0
  74. package/lib/test/bulkPulling/wsConnector.failover.test.js +396 -27
  75. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +12 -10
  76. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts +2 -0
  77. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts.map +1 -0
  78. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.js +28 -0
  79. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts +2 -0
  80. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts.map +1 -0
  81. package/lib/test/bulkPulling/wsProxy.failover.integration.test.js +120 -0
  82. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts +2 -0
  83. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts.map +1 -0
  84. package/lib/test/bulkPulling/wsProxy.failover.test.js +465 -0
  85. package/lib/test/client/wsClient.recovery.test.d.ts +2 -0
  86. package/lib/test/client/wsClient.recovery.test.d.ts.map +1 -0
  87. package/lib/test/client/wsClient.recovery.test.js +122 -0
  88. package/lib/test/client/wsConnectPool.test.d.ts +2 -0
  89. package/lib/test/client/wsConnectPool.test.d.ts.map +1 -0
  90. package/lib/test/client/wsConnectPool.test.js +147 -0
  91. package/lib/test/client/wsConnector.failover.test.d.ts +2 -0
  92. package/lib/test/client/wsConnector.failover.test.d.ts.map +1 -0
  93. package/lib/test/client/wsConnector.failover.test.js +681 -0
  94. package/lib/test/client/wsConnector.leastConnections.test.d.ts +2 -0
  95. package/lib/test/client/wsConnector.leastConnections.test.d.ts.map +1 -0
  96. package/lib/test/client/wsConnector.leastConnections.test.js +71 -0
  97. package/lib/test/client/wsConnectorPool.key.test.d.ts +2 -0
  98. package/lib/test/client/wsConnectorPool.key.test.d.ts.map +1 -0
  99. package/lib/test/client/wsConnectorPool.key.test.js +127 -0
  100. package/lib/test/client/wsEventCallback.test.d.ts +2 -0
  101. package/lib/test/client/wsEventCallback.test.d.ts.map +1 -0
  102. package/lib/test/client/wsEventCallback.test.js +98 -0
  103. package/lib/test/common/addressConnectionTracker.test.d.ts +2 -0
  104. package/lib/test/common/addressConnectionTracker.test.d.ts.map +1 -0
  105. package/lib/test/common/addressConnectionTracker.test.js +74 -0
  106. package/lib/test/common/dsn.test.d.ts +2 -0
  107. package/lib/test/common/dsn.test.d.ts.map +1 -0
  108. package/lib/test/common/dsn.test.js +406 -0
  109. package/lib/test/common/log.test.d.ts +2 -0
  110. package/lib/test/common/log.test.d.ts.map +1 -0
  111. package/lib/test/common/log.test.js +54 -0
  112. package/lib/test/common/utils.test.d.ts +2 -0
  113. package/lib/test/common/utils.test.d.ts.map +1 -0
  114. package/lib/test/common/utils.test.js +13 -0
  115. package/lib/test/common/wsConfig.dsn.test.d.ts +2 -0
  116. package/lib/test/common/wsConfig.dsn.test.d.ts.map +1 -0
  117. package/lib/test/common/wsConfig.dsn.test.js +39 -0
  118. package/lib/test/helpers/utils.d.ts +27 -0
  119. package/lib/test/helpers/utils.d.ts.map +1 -0
  120. package/lib/test/helpers/utils.js +341 -0
  121. package/lib/test/helpers/wsFailoverProxy.d.ts +109 -0
  122. package/lib/test/helpers/wsFailoverProxy.d.ts.map +1 -0
  123. package/lib/test/helpers/wsFailoverProxy.js +420 -0
  124. package/lib/test/helpers/wsProxy.d.ts +110 -0
  125. package/lib/test/helpers/wsProxy.d.ts.map +1 -0
  126. package/lib/test/helpers/wsProxy.js +429 -0
  127. package/lib/test/sql/core/decimal.test.d.ts +2 -0
  128. package/lib/test/sql/core/decimal.test.d.ts.map +1 -0
  129. package/lib/test/sql/core/decimal.test.js +153 -0
  130. package/lib/test/sql/core/queryTables.test.d.ts +2 -0
  131. package/lib/test/sql/core/queryTables.test.d.ts.map +1 -0
  132. package/lib/test/sql/core/queryTables.test.js +506 -0
  133. package/lib/test/sql/core/schemaless.test.d.ts +2 -0
  134. package/lib/test/sql/core/schemaless.test.d.ts.map +1 -0
  135. package/lib/test/sql/core/schemaless.test.js +102 -0
  136. package/lib/test/sql/core/sql.test.d.ts +2 -0
  137. package/lib/test/sql/core/sql.test.d.ts.map +1 -0
  138. package/lib/test/sql/core/sql.test.js +324 -0
  139. package/lib/test/sql/decimal.test.d.ts +2 -0
  140. package/lib/test/sql/decimal.test.d.ts.map +1 -0
  141. package/lib/test/sql/decimal.test.js +153 -0
  142. package/lib/test/sql/failover/sql.failover.test.d.ts +2 -0
  143. package/lib/test/sql/failover/sql.failover.test.d.ts.map +1 -0
  144. package/lib/test/sql/failover/sql.failover.test.js +341 -0
  145. package/lib/test/sql/queryTables.test.d.ts +2 -0
  146. package/lib/test/sql/queryTables.test.d.ts.map +1 -0
  147. package/lib/test/sql/queryTables.test.js +506 -0
  148. package/lib/test/sql/schemaless.test.d.ts +2 -0
  149. package/lib/test/sql/schemaless.test.d.ts.map +1 -0
  150. package/lib/test/sql/schemaless.test.js +102 -0
  151. package/lib/test/sql/sql.failover.test.d.ts +2 -0
  152. package/lib/test/sql/sql.failover.test.d.ts.map +1 -0
  153. package/lib/test/sql/sql.failover.test.js +341 -0
  154. package/lib/test/sql/sql.test.d.ts +2 -0
  155. package/lib/test/sql/sql.test.d.ts.map +1 -0
  156. package/lib/test/sql/sql.test.js +324 -0
  157. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts +2 -0
  158. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts.map +1 -0
  159. package/lib/test/stmt/failover/stmt2.failover.mock.test.js +341 -0
  160. package/lib/test/stmt/failover/stmt2.failover.test.d.ts +2 -0
  161. package/lib/test/stmt/failover/stmt2.failover.test.d.ts.map +1 -0
  162. package/lib/test/stmt/failover/stmt2.failover.test.js +384 -0
  163. package/lib/test/stmt/stmt1.func.test.d.ts +2 -0
  164. package/lib/test/stmt/stmt1.func.test.d.ts.map +1 -0
  165. package/lib/test/stmt/stmt1.func.test.js +418 -0
  166. package/lib/test/stmt/stmt1.type.test.d.ts +2 -0
  167. package/lib/test/stmt/stmt1.type.test.d.ts.map +1 -0
  168. package/lib/test/stmt/stmt1.type.test.js +399 -0
  169. package/lib/test/stmt/stmt2.failover.mock.test.d.ts +2 -0
  170. package/lib/test/stmt/stmt2.failover.mock.test.d.ts.map +1 -0
  171. package/lib/test/stmt/stmt2.failover.mock.test.js +341 -0
  172. package/lib/test/stmt/stmt2.failover.test.d.ts +2 -0
  173. package/lib/test/stmt/stmt2.failover.test.d.ts.map +1 -0
  174. package/lib/test/stmt/stmt2.failover.test.js +384 -0
  175. package/lib/test/stmt/stmt2.func.test.d.ts +2 -0
  176. package/lib/test/stmt/stmt2.func.test.d.ts.map +1 -0
  177. package/lib/test/stmt/stmt2.func.test.js +537 -0
  178. package/lib/test/stmt/stmt2.type.test.d.ts +2 -0
  179. package/lib/test/stmt/stmt2.type.test.d.ts.map +1 -0
  180. package/lib/test/stmt/stmt2.type.test.js +401 -0
  181. package/lib/test/stmt/v1/stmt1.func.test.d.ts +2 -0
  182. package/lib/test/stmt/v1/stmt1.func.test.d.ts.map +1 -0
  183. package/lib/test/stmt/v1/stmt1.func.test.js +418 -0
  184. package/lib/test/stmt/v1/stmt1.type.test.d.ts +2 -0
  185. package/lib/test/stmt/v1/stmt1.type.test.d.ts.map +1 -0
  186. package/lib/test/stmt/v1/stmt1.type.test.js +399 -0
  187. package/lib/test/stmt/v2/stmt2.func.test.d.ts +2 -0
  188. package/lib/test/stmt/v2/stmt2.func.test.d.ts.map +1 -0
  189. package/lib/test/stmt/v2/stmt2.func.test.js +537 -0
  190. package/lib/test/stmt/v2/stmt2.type.test.d.ts +2 -0
  191. package/lib/test/stmt/v2/stmt2.type.test.d.ts.map +1 -0
  192. package/lib/test/stmt/v2/stmt2.type.test.js +401 -0
  193. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts +2 -0
  194. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts.map +1 -0
  195. package/lib/test/tmq/cloud/cloud.tmq.test.js +84 -0
  196. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts +2 -0
  197. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts.map +1 -0
  198. package/lib/test/tmq/cloud/tmq.cloud.test.js +82 -0
  199. package/lib/test/tmq/core/tmq.config.test.d.ts +2 -0
  200. package/lib/test/tmq/core/tmq.config.test.d.ts.map +1 -0
  201. package/lib/test/tmq/core/tmq.config.test.js +83 -0
  202. package/lib/test/tmq/core/tmq.test.d.ts +2 -0
  203. package/lib/test/tmq/core/tmq.test.d.ts.map +1 -0
  204. package/lib/test/tmq/core/tmq.test.js +513 -0
  205. package/lib/test/tmq/failover/tmq.failover.test.d.ts +2 -0
  206. package/lib/test/tmq/failover/tmq.failover.test.d.ts.map +1 -0
  207. package/lib/test/tmq/failover/tmq.failover.test.js +404 -0
  208. package/lib/test/tmq/tmq.cloud.test.d.ts +2 -0
  209. package/lib/test/tmq/tmq.cloud.test.d.ts.map +1 -0
  210. package/lib/test/tmq/tmq.cloud.test.js +82 -0
  211. package/lib/test/tmq/tmq.config.test.d.ts +2 -0
  212. package/lib/test/tmq/tmq.config.test.d.ts.map +1 -0
  213. package/lib/test/tmq/tmq.config.test.js +94 -0
  214. package/lib/test/tmq/tmq.failover.test.d.ts +2 -0
  215. package/lib/test/tmq/tmq.failover.test.d.ts.map +1 -0
  216. package/lib/test/tmq/tmq.failover.test.js +404 -0
  217. package/lib/test/tmq/tmq.test.d.ts +2 -0
  218. package/lib/test/tmq/tmq.test.d.ts.map +1 -0
  219. package/lib/test/tmq/tmq.test.js +513 -0
  220. package/lib/test/unit/connectionManager.test.d.ts +2 -0
  221. package/lib/test/unit/connectionManager.test.d.ts.map +1 -0
  222. package/lib/test/unit/connectionManager.test.js +91 -0
  223. package/package.json +1 -1
  224. package/readme.md +2 -2
@@ -0,0 +1,418 @@
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 wsStmt1_1 = require("@src/stmt/wsStmt1");
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("drop database if exists power_func_stmt1;");
17
+ await wsSql.exec("create database if not exists power_func_stmt1 KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
18
+ await wsSql.exec("CREATE STABLE if not exists power_func_stmt1.meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);");
19
+ await wsSql.close();
20
+ });
21
+ describe("TDWebSocket.Stmt()", () => {
22
+ jest.setTimeout(20 * 1000);
23
+ let tags = ["California", 3];
24
+ let multi = [
25
+ // [1709183268567],
26
+ // [10.2],
27
+ // [292],
28
+ // [0.32],
29
+ [1709183268567, 1709183268568, 1709183268569],
30
+ [10.2, 10.3, 10.4],
31
+ [292, 293, 294],
32
+ [0.32, 0.33, 0.34],
33
+ ];
34
+ test("normal connect", async () => {
35
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
36
+ conf.setUser((0, utils_1.testUsername)());
37
+ conf.setPwd((0, utils_1.testPassword)());
38
+ conf.setDb("power_func_stmt1");
39
+ let connector = await wsSql_1.WsSql.open(conf);
40
+ let stmt = await connector.stmtInit();
41
+ expect(stmt).toBeTruthy();
42
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
43
+ expect(connector.state()).toBeGreaterThan(0);
44
+ await stmt.close();
45
+ await connector.close();
46
+ });
47
+ test("connect db with error", async () => {
48
+ expect.assertions(1);
49
+ let connector = null;
50
+ try {
51
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
52
+ conf.setUser((0, utils_1.testUsername)());
53
+ conf.setPwd((0, utils_1.testPassword)());
54
+ conf.setDb("jest");
55
+ connector = await wsSql_1.WsSql.open(conf);
56
+ let stmt = await connector.stmtInit();
57
+ await stmt.close();
58
+ }
59
+ catch (e) {
60
+ let err = e;
61
+ expect(err.message).toMatch("Database not exist");
62
+ }
63
+ finally {
64
+ if (connector) {
65
+ await connector.close();
66
+ }
67
+ }
68
+ });
69
+ test("normal Prepare", async () => {
70
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
71
+ conf.setUser((0, utils_1.testUsername)());
72
+ conf.setPwd((0, utils_1.testPassword)());
73
+ conf.setDb("power_func_stmt1");
74
+ let connector = await wsSql_1.WsSql.open(conf);
75
+ let stmt = await connector.stmtInit();
76
+ expect(stmt).toBeTruthy();
77
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
78
+ expect(connector.state()).toBeGreaterThan(0);
79
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
80
+ await stmt.setTableName("d1001");
81
+ let params = stmt.newStmtParam();
82
+ params.setVarchar([tags[0]]);
83
+ params.setInt([tags[1]]);
84
+ await stmt.setTags(params);
85
+ await stmt.close();
86
+ await connector.close();
87
+ });
88
+ test("set tag error", async () => {
89
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
90
+ conf.setUser((0, utils_1.testUsername)());
91
+ conf.setPwd((0, utils_1.testPassword)());
92
+ conf.setDb("power_func_stmt1");
93
+ let connector = await wsSql_1.WsSql.open(conf);
94
+ let stmt = await connector.stmtInit();
95
+ expect(stmt).toBeTruthy();
96
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
97
+ expect(connector.state()).toBeGreaterThan(0);
98
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
99
+ await stmt.setTableName("d1001");
100
+ let params = stmt.newStmtParam();
101
+ params.setVarchar([tags[0]]);
102
+ try {
103
+ await stmt.setTags(params);
104
+ }
105
+ catch (err) {
106
+ expect(err.message).toMatch("stmt tags count not match");
107
+ }
108
+ await stmt.close();
109
+ await connector.close();
110
+ });
111
+ test("error Prepare table", async () => {
112
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
113
+ conf.setUser((0, utils_1.testUsername)());
114
+ conf.setPwd((0, utils_1.testPassword)());
115
+ conf.setDb("power_func_stmt1");
116
+ let connector = await wsSql_1.WsSql.open(conf);
117
+ let stmt = await connector.stmtInit();
118
+ expect(stmt).toBeTruthy();
119
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
120
+ expect(connector.state()).toBeGreaterThan(0);
121
+ try {
122
+ await stmt.prepare("INSERT ? INTO ? USING meters TAGS (?, ?) VALUES (?, ?, ?, ?)");
123
+ await stmt.setTableName("d1001");
124
+ }
125
+ catch (e) {
126
+ let err = e;
127
+ expect(err.message).toMatch(/keyword INTO is expected|Syntax error in SQL/);
128
+ }
129
+ await stmt.close();
130
+ await connector.close();
131
+ });
132
+ test("error Prepare tag", async () => {
133
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
134
+ conf.setUser((0, utils_1.testUsername)());
135
+ conf.setPwd((0, utils_1.testPassword)());
136
+ conf.setDb("power_func_stmt1");
137
+ let connector = await wsSql_1.WsSql.open(conf);
138
+ let stmt = await connector.stmtInit();
139
+ expect(stmt).toBeTruthy();
140
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
141
+ expect(connector.state()).toBeGreaterThan(0);
142
+ try {
143
+ await stmt.prepare("INSERT INTO ? USING meters TAGS (?, ?, ?) VALUES (?, ?, ?, ?)");
144
+ await stmt.setTableName("d1001");
145
+ }
146
+ catch (e) {
147
+ let err = e;
148
+ expect(err.message).toMatch("Tags number not matched");
149
+ }
150
+ await stmt.close();
151
+ await connector.close();
152
+ });
153
+ test("Bind a single table", async () => {
154
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
155
+ conf.setUser((0, utils_1.testUsername)());
156
+ conf.setPwd((0, utils_1.testPassword)());
157
+ conf.setDb("power_func_stmt1");
158
+ let connector = await wsSql_1.WsSql.open(conf);
159
+ let stmt = await connector.stmtInit();
160
+ expect(stmt).toBeTruthy();
161
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
162
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) (ts, current, voltage, phase) VALUES (?, ?, ?, ?)");
163
+ await stmt.setTableName("power_func_stmt1.d1001");
164
+ let params = stmt.newStmtParam();
165
+ params.setVarchar(["SanFrancisco"]);
166
+ params.setInt([1]);
167
+ await stmt.setTags(params);
168
+ let lastTs = 0;
169
+ for (let i = 0; i < 10; i++) {
170
+ for (let j = 0; j < multi[0].length; j++) {
171
+ multi[0][j] = multi[0][0] + j;
172
+ lastTs = multi[0][j];
173
+ }
174
+ let dataParams = stmt.newStmtParam();
175
+ dataParams.setTimestamp(multi[0]);
176
+ dataParams.setFloat(multi[1]);
177
+ dataParams.setInt(multi[2]);
178
+ dataParams.setFloat(multi[3]);
179
+ await stmt.bind(dataParams);
180
+ multi[0][0] = lastTs + 1;
181
+ }
182
+ await stmt.batch();
183
+ await stmt.exec();
184
+ expect(stmt.getLastAffected()).toEqual(30);
185
+ await stmt.close();
186
+ await connector.close();
187
+ });
188
+ test("error BindParam", async () => {
189
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
190
+ conf.setUser((0, utils_1.testUsername)());
191
+ conf.setPwd((0, utils_1.testPassword)());
192
+ conf.setDb("power_func_stmt1");
193
+ let connector = await wsSql_1.WsSql.open(conf);
194
+ let stmt = await connector.stmtInit();
195
+ expect(stmt).toBeTruthy();
196
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
197
+ expect(connector.state()).toBeGreaterThan(0);
198
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
199
+ await stmt.setTableName("d1001");
200
+ let params = stmt.newStmtParam();
201
+ params.setVarchar(["SanFrancisco"]);
202
+ params.setInt([7]);
203
+ await stmt.setTags(params);
204
+ let multi = [
205
+ [1709183268567, 1709183268568],
206
+ [10.2, 10.3, 10.4, 10.5],
207
+ [292, 293, 294],
208
+ [0.32, 0.33, 0.31],
209
+ ];
210
+ try {
211
+ let dataParams = stmt.newStmtParam();
212
+ dataParams.setTimestamp(multi[0]);
213
+ dataParams.setFloat(multi[1]);
214
+ dataParams.setInt(multi[2]);
215
+ dataParams.setFloat(multi[3]);
216
+ await stmt.bind(dataParams);
217
+ await stmt.batch();
218
+ await stmt.exec();
219
+ }
220
+ catch (e) {
221
+ let err = e;
222
+ expect(err.message).toMatch(/wrong row length|bind data length error/);
223
+ }
224
+ await stmt.close();
225
+ await connector.close();
226
+ });
227
+ test("no Batch", async () => {
228
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
229
+ conf.setUser((0, utils_1.testUsername)());
230
+ conf.setPwd((0, utils_1.testPassword)());
231
+ conf.setDb("power_func_stmt1");
232
+ let connector = await wsSql_1.WsSql.open(conf);
233
+ let stmt = await connector.stmtInit();
234
+ expect(stmt).toBeTruthy();
235
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
236
+ expect(connector.state()).toBeGreaterThan(0);
237
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
238
+ await stmt.setTableName("d1001");
239
+ let params = stmt.newStmtParam();
240
+ params.setVarchar(["SanFrancisco"]);
241
+ params.setInt([7]);
242
+ await stmt.setTags(params);
243
+ let multi = [
244
+ [1709183268567, 1709183268568],
245
+ [10.2, 10.3],
246
+ [292, 293],
247
+ [0.32, 0.33],
248
+ ];
249
+ try {
250
+ let dataParams = stmt.newStmtParam();
251
+ dataParams.setTimestamp(multi[0]);
252
+ dataParams.setFloat(multi[1]);
253
+ dataParams.setInt(multi[2]);
254
+ dataParams.setFloat(multi[3]);
255
+ await stmt.bind(dataParams);
256
+ await stmt.exec();
257
+ }
258
+ catch (e) {
259
+ let err = e;
260
+ expect(err.message).toMatch("Stmt API usage error");
261
+ }
262
+ await stmt.close();
263
+ await connector.close();
264
+ });
265
+ test("Batch after BindParam", async () => {
266
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
267
+ conf.setUser((0, utils_1.testUsername)());
268
+ conf.setPwd((0, utils_1.testPassword)());
269
+ conf.setDb("power_func_stmt1");
270
+ let connector = await wsSql_1.WsSql.open(conf);
271
+ let stmt = await connector.stmtInit();
272
+ expect(stmt).toBeTruthy();
273
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
274
+ expect(connector.state()).toBeGreaterThan(0);
275
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
276
+ await stmt.setTableName("d1001");
277
+ let params = stmt.newStmtParam();
278
+ params.setVarchar(["SanFrancisco"]);
279
+ params.setInt([7]);
280
+ await stmt.setTags(params);
281
+ let multi1 = [
282
+ [1709188881548, 1709188881549],
283
+ [10.2, 10.3],
284
+ [292, 293],
285
+ [0.32, 0.33],
286
+ ];
287
+ let multi2 = [
288
+ [1709188881550, 1709188881551],
289
+ [10.2, 10.3],
290
+ [292, 293],
291
+ [0.32, 0.33],
292
+ ];
293
+ let dataParams = stmt.newStmtParam();
294
+ dataParams.setTimestamp(multi1[0]);
295
+ dataParams.setFloat(multi1[1]);
296
+ dataParams.setInt(multi1[2]);
297
+ dataParams.setFloat(multi1[3]);
298
+ await stmt.bind(dataParams);
299
+ await stmt.batch();
300
+ await stmt.setTableName("d1002");
301
+ params = stmt.newStmtParam();
302
+ params.setVarchar(["SanFrancisco"]);
303
+ params.setInt([5]);
304
+ await stmt.setTags(params);
305
+ dataParams = stmt.newStmtParam();
306
+ dataParams.setTimestamp(multi2[0]);
307
+ dataParams.setFloat(multi2[1]);
308
+ dataParams.setInt(multi2[2]);
309
+ dataParams.setFloat(multi2[3]);
310
+ await stmt.bind(dataParams);
311
+ await stmt.batch();
312
+ await stmt.exec();
313
+ expect(stmt.getLastAffected()).toEqual(4);
314
+ await stmt.close();
315
+ await connector.close();
316
+ });
317
+ test("no set tag", async () => {
318
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
319
+ conf.setUser((0, utils_1.testUsername)());
320
+ conf.setPwd((0, utils_1.testPassword)());
321
+ conf.setDb("power_func_stmt1");
322
+ let connector = await wsSql_1.WsSql.open(conf);
323
+ let stmt = await connector.stmtInit();
324
+ expect(stmt).toBeTruthy();
325
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
326
+ expect(connector.state()).toBeGreaterThan(0);
327
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
328
+ await stmt.setTableName("d1001");
329
+ // await stmt.SetTags(tags)
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(/Retry needed|Tags are empty/);
343
+ }
344
+ await stmt.close();
345
+ await connector.close();
346
+ });
347
+ test("normal binary BindParam", async () => {
348
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
349
+ conf.setUser((0, utils_1.testUsername)());
350
+ conf.setPwd((0, utils_1.testPassword)());
351
+ conf.setDb("power_func_stmt1");
352
+ let connector = await wsSql_1.WsSql.open(conf);
353
+ let stmt = await connector.stmtInit();
354
+ expect(stmt).toBeTruthy();
355
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
356
+ expect(connector.state()).toBeGreaterThan(0);
357
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
358
+ await stmt.setTableName("d1002");
359
+ let params = stmt.newStmtParam();
360
+ params.setVarchar(["SanFrancisco"]);
361
+ params.setInt([7]);
362
+ await stmt.setTags(params);
363
+ let dataParams = stmt.newStmtParam();
364
+ dataParams.setTimestamp(multi[0]);
365
+ dataParams.setFloat(multi[1]);
366
+ dataParams.setInt(multi[2]);
367
+ dataParams.setFloat(multi[3]);
368
+ await stmt.bind(dataParams);
369
+ await stmt.batch();
370
+ await stmt.exec();
371
+ let result = await connector.exec("select * from power_func_stmt1.meters");
372
+ console.log(result);
373
+ await stmt.close();
374
+ await connector.close();
375
+ });
376
+ test("normal json BindParam", async () => {
377
+ let conf = new config_1.WSConfig(dns, "100.100.100.100");
378
+ conf.setUser((0, utils_1.testUsername)());
379
+ conf.setPwd((0, utils_1.testPassword)());
380
+ conf.setDb("power_func_stmt1");
381
+ let connector = await wsSql_1.WsSql.open(conf);
382
+ let stmt = await connector.stmtInit();
383
+ expect(stmt).toBeTruthy();
384
+ expect(stmt).toBeInstanceOf(wsStmt1_1.WsStmt1);
385
+ expect(connector.state()).toBeGreaterThan(0);
386
+ await stmt.prepare("INSERT INTO ? USING meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)");
387
+ await stmt.setTableName("d1001");
388
+ let params = stmt.newStmtParam();
389
+ params.setVarchar(["SanFrancisco"]);
390
+ params.setInt([7]);
391
+ await stmt.setTags(params);
392
+ let multi1 = [
393
+ [1709188881548, 1709188881549],
394
+ [10.2, 10.3],
395
+ [292, 293],
396
+ [0.32, 0.33],
397
+ ];
398
+ let dataParams = stmt.newStmtParam();
399
+ dataParams.setTimestamp(multi1[0]);
400
+ dataParams.setFloat(multi1[1]);
401
+ dataParams.setInt(multi1[2]);
402
+ dataParams.setFloat(multi1[3]);
403
+ await stmt.bind(dataParams);
404
+ await stmt.batch();
405
+ await stmt.exec();
406
+ await stmt.close();
407
+ await connector.close();
408
+ });
409
+ });
410
+ afterAll(async () => {
411
+ let conf = new config_1.WSConfig(dns);
412
+ conf.setUser((0, utils_1.testUsername)());
413
+ conf.setPwd((0, utils_1.testPassword)());
414
+ let wsSql = await wsSql_1.WsSql.open(conf);
415
+ await wsSql.exec("drop database power_func_stmt1");
416
+ await wsSql.close();
417
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
418
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stmt1.type.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stmt1.type.test.d.ts","sourceRoot":"","sources":["../../../../test/stmt/v1/stmt1.type.test.ts"],"names":[],"mappings":""}