@tdengine/websocket 3.0.0 → 3.1.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 (144) hide show
  1. package/lib/example/basicSchemaless.d.ts +2 -0
  2. package/lib/example/basicSchemaless.d.ts.map +1 -0
  3. package/lib/example/basicSchemaless.js +47 -0
  4. package/lib/example/basicSql.d.ts +2 -0
  5. package/lib/example/basicSql.d.ts.map +1 -0
  6. package/lib/example/basicSql.js +52 -0
  7. package/lib/example/basicStmt.d.ts +2 -0
  8. package/lib/example/basicStmt.d.ts.map +1 -0
  9. package/lib/example/basicStmt.js +58 -0
  10. package/lib/example/basicTmq.d.ts +2 -0
  11. package/lib/example/basicTmq.d.ts.map +1 -0
  12. package/lib/example/basicTmq.js +71 -0
  13. package/lib/index.d.ts +26 -0
  14. package/lib/index.d.ts.map +1 -0
  15. package/lib/index.js +41 -0
  16. package/lib/src/client/wsClient.d.ts +22 -0
  17. package/lib/src/client/wsClient.d.ts.map +1 -0
  18. package/lib/src/client/wsClient.js +253 -0
  19. package/lib/src/client/wsConnector.d.ts +17 -0
  20. package/lib/src/client/wsConnector.d.ts.map +1 -0
  21. package/lib/src/client/wsConnector.js +140 -0
  22. package/lib/src/client/wsConnectorPool.d.ts +13 -0
  23. package/lib/src/client/wsConnectorPool.d.ts.map +1 -0
  24. package/lib/src/client/wsConnectorPool.js +107 -0
  25. package/lib/src/client/wsEventCallback.d.ts +22 -0
  26. package/lib/src/client/wsEventCallback.d.ts.map +1 -0
  27. package/lib/src/client/wsEventCallback.js +97 -0
  28. package/lib/src/client/wsResponse.d.ts +66 -0
  29. package/lib/src/client/wsResponse.d.ts.map +1 -0
  30. package/lib/src/client/wsResponse.js +76 -0
  31. package/lib/src/common/config.d.ts +22 -0
  32. package/lib/src/common/config.d.ts.map +1 -0
  33. package/lib/src/common/config.js +45 -0
  34. package/lib/src/common/constant.d.ts +13 -0
  35. package/lib/src/common/constant.d.ts.map +1 -0
  36. package/{src/constant.ts → lib/src/common/constant.js} +25 -24
  37. package/lib/src/common/log.d.ts +5 -0
  38. package/lib/src/common/log.d.ts.map +1 -0
  39. package/lib/src/common/log.js +40 -0
  40. package/lib/src/common/reqid.d.ts +8 -0
  41. package/lib/src/common/reqid.d.ts.map +1 -0
  42. package/lib/src/common/reqid.js +59 -0
  43. package/lib/src/common/taosResult.d.ts +51 -0
  44. package/lib/src/common/taosResult.d.ts.map +1 -0
  45. package/lib/src/common/taosResult.js +419 -0
  46. package/lib/src/common/ut8Helper.d.ts +2 -0
  47. package/lib/src/common/ut8Helper.d.ts.map +1 -0
  48. package/{src/ut8Helper.ts → lib/src/common/ut8Helper.js} +22 -21
  49. package/lib/src/common/utils.d.ts +5 -0
  50. package/lib/src/common/utils.d.ts.map +1 -0
  51. package/lib/src/common/utils.js +33 -0
  52. package/lib/src/common/wsError.d.ts +29 -0
  53. package/lib/src/common/wsError.d.ts.map +1 -0
  54. package/lib/src/common/wsError.js +51 -0
  55. package/{src/wsOptions.ts → lib/src/common/wsOptions.d.ts} +4 -2
  56. package/lib/src/common/wsOptions.d.ts.map +1 -0
  57. package/lib/src/common/wsOptions.js +2 -0
  58. package/lib/src/index.d.ts +9 -0
  59. package/lib/src/index.d.ts.map +1 -0
  60. package/lib/src/index.js +58 -0
  61. package/lib/src/sql/wsProto.d.ts +26 -0
  62. package/lib/src/sql/wsProto.d.ts.map +1 -0
  63. package/lib/src/sql/wsProto.js +19 -0
  64. package/lib/src/sql/wsRows.d.ts +16 -0
  65. package/lib/src/sql/wsRows.d.ts.map +1 -0
  66. package/lib/src/sql/wsRows.js +76 -0
  67. package/lib/src/sql/wsSql.d.ts +24 -0
  68. package/lib/src/sql/wsSql.d.ts.map +1 -0
  69. package/lib/src/sql/wsSql.js +164 -0
  70. package/lib/src/stmt/wsParams.d.ts +41 -0
  71. package/lib/src/stmt/wsParams.d.ts.map +1 -0
  72. package/lib/src/stmt/wsParams.js +428 -0
  73. package/lib/src/stmt/wsProto.d.ts +27 -0
  74. package/lib/src/stmt/wsProto.d.ts.map +1 -0
  75. package/lib/src/stmt/wsProto.js +67 -0
  76. package/lib/src/stmt/wsStmt.d.ts +30 -0
  77. package/lib/src/stmt/wsStmt.d.ts.map +1 -0
  78. package/lib/src/stmt/wsStmt.js +207 -0
  79. package/lib/src/tmq/config.d.ts +14 -0
  80. package/lib/src/tmq/config.d.ts.map +1 -0
  81. package/lib/src/tmq/config.js +42 -0
  82. package/lib/src/tmq/constant.d.ts +85 -0
  83. package/lib/src/tmq/constant.d.ts.map +1 -0
  84. package/lib/src/tmq/constant.js +89 -0
  85. package/lib/src/tmq/tmqResponse.d.ts +80 -0
  86. package/lib/src/tmq/tmqResponse.d.ts.map +1 -0
  87. package/lib/src/tmq/tmqResponse.js +204 -0
  88. package/lib/src/tmq/wsTmq.d.ts +32 -0
  89. package/lib/src/tmq/wsTmq.d.ts.map +1 -0
  90. package/lib/src/tmq/wsTmq.js +316 -0
  91. package/lib/test/bulkPulling/queryTables.test.d.ts +2 -0
  92. package/lib/test/bulkPulling/queryTables.test.d.ts.map +1 -0
  93. package/lib/test/bulkPulling/queryTables.test.js +297 -0
  94. package/lib/test/bulkPulling/schemaless.test.d.ts +2 -0
  95. package/lib/test/bulkPulling/schemaless.test.d.ts.map +1 -0
  96. package/lib/test/bulkPulling/schemaless.test.js +94 -0
  97. package/lib/test/bulkPulling/sql.test.d.ts +2 -0
  98. package/lib/test/bulkPulling/sql.test.d.ts.map +1 -0
  99. package/lib/test/bulkPulling/sql.test.js +124 -0
  100. package/lib/test/bulkPulling/stmt.func.test.d.ts +2 -0
  101. package/lib/test/bulkPulling/stmt.func.test.d.ts.map +1 -0
  102. package/lib/test/bulkPulling/stmt.func.test.js +381 -0
  103. package/lib/test/bulkPulling/stmt.type.test.d.ts +2 -0
  104. package/lib/test/bulkPulling/stmt.type.test.d.ts.map +1 -0
  105. package/lib/test/bulkPulling/stmt.type.test.js +273 -0
  106. package/lib/test/bulkPulling/tmq.test.d.ts +2 -0
  107. package/lib/test/bulkPulling/tmq.test.d.ts.map +1 -0
  108. package/lib/test/bulkPulling/tmq.test.js +177 -0
  109. package/lib/test/bulkPulling/wsConnectPool.test.d.ts +2 -0
  110. package/lib/test/bulkPulling/wsConnectPool.test.d.ts.map +1 -0
  111. package/lib/test/bulkPulling/wsConnectPool.test.js +129 -0
  112. package/lib/test/utils.d.ts +18 -0
  113. package/lib/test/utils.d.ts.map +1 -0
  114. package/lib/test/utils.js +318 -0
  115. package/package.json +27 -14
  116. package/readme.md +302 -0
  117. package/README.md +0 -59
  118. package/dist/browser/index.js +0 -778
  119. package/dist/main/index.js +0 -711
  120. package/dist/main/index.js.map +0 -1
  121. package/dist/module/index.mjs +0 -704
  122. package/dist/module/index.mjs.map +0 -1
  123. package/dist/types.d.ts +0 -103
  124. package/dist/types.d.ts.map +0 -1
  125. package/example/basicUsageAsync.ts +0 -48
  126. package/example/basicUsagePrimse.ts +0 -43
  127. package/example/cloudUsage.ts +0 -55
  128. package/example/continousConnectAndVersion.ts +0 -16
  129. package/example/test.mjs +0 -51
  130. package/index.ts +0 -7
  131. package/jest.config.js +0 -8
  132. package/src/taosResult.ts +0 -269
  133. package/src/tdengineWebsocket.ts +0 -39
  134. package/src/wsClient.ts +0 -196
  135. package/src/wsError.ts +0 -5
  136. package/src/wsQuery.ts +0 -30
  137. package/src/wsQueryInterface.ts +0 -212
  138. package/src/wsQueryResponse.ts +0 -112
  139. package/tdengine-websocket-3.0.0.tgz +0 -0
  140. package/test/bulkPulling/connect.test.ts +0 -27
  141. package/test/bulkPulling/queryTables.test.ts +0 -274
  142. package/test/bulkPulling/version.test.ts +0 -19
  143. package/test/utils.ts +0 -235
  144. package/tsconfig.json +0 -101
@@ -0,0 +1,381 @@
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 wsSql_1 = require("../../src/sql/wsSql");
6
+ beforeAll(async () => {
7
+ let dns = 'ws://localhost:6041';
8
+ let conf = new config_1.WSConfig(dns);
9
+ conf.setUser('root');
10
+ conf.setPwd('taosdata');
11
+ let wsSql = await wsSql_1.WsSql.open(conf);
12
+ await wsSql.exec('create database if not exists power KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;');
13
+ await wsSql.exec('CREATE STABLE if not exists power.meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);');
14
+ await wsSql.close();
15
+ });
16
+ describe('TDWebSocket.Stmt()', () => {
17
+ jest.setTimeout(20 * 1000);
18
+ let tags = ['California.SanFrancisco', 3];
19
+ let multi = [
20
+ // [1709183268567],
21
+ // [10.2],
22
+ // [292],
23
+ // [0.32],
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 dsn = 'ws://root:taosdata@localhost:6041';
31
+ let wsConf = new config_1.WSConfig(dsn);
32
+ wsConf.setDb('power');
33
+ let connector = await wsSql_1.WsSql.open(wsConf);
34
+ let stmt = await connector.stmtInit();
35
+ expect(stmt).toBeTruthy();
36
+ expect(connector.state()).toBeGreaterThan(0);
37
+ await stmt.close();
38
+ await connector.close();
39
+ });
40
+ test('connect db with error', async () => {
41
+ expect.assertions(1);
42
+ let connector = null;
43
+ try {
44
+ let dsn = 'ws://root:taosdata@localhost:6041';
45
+ let wsConf = new config_1.WSConfig(dsn);
46
+ wsConf.setDb('jest');
47
+ connector = await wsSql_1.WsSql.open(wsConf);
48
+ let stmt = await connector.stmtInit();
49
+ await stmt.close();
50
+ }
51
+ catch (e) {
52
+ let err = e;
53
+ expect(err.message).toMatch('Database not exist');
54
+ }
55
+ finally {
56
+ if (connector) {
57
+ await connector.close();
58
+ }
59
+ }
60
+ });
61
+ test('normal Prepare', async () => {
62
+ let dsn = 'ws://root:taosdata@localhost:6041';
63
+ let wsConf = new config_1.WSConfig(dsn);
64
+ wsConf.setDb('power');
65
+ let connector = await wsSql_1.WsSql.open(wsConf);
66
+ let stmt = await connector.stmtInit();
67
+ expect(stmt).toBeTruthy();
68
+ expect(connector.state()).toBeGreaterThan(0);
69
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
70
+ await stmt.setTableName('d1001');
71
+ let params = stmt.newStmtParam();
72
+ params.setVarchar([tags[0]]);
73
+ params.setInt([tags[1]]);
74
+ await stmt.setTags(params);
75
+ await stmt.close();
76
+ await connector.close();
77
+ });
78
+ test('set tag error', async () => {
79
+ let dsn = 'ws://root:taosdata@localhost:6041';
80
+ let wsConf = new config_1.WSConfig(dsn);
81
+ wsConf.setDb('power');
82
+ let connector = await wsSql_1.WsSql.open(wsConf);
83
+ let stmt = await connector.stmtInit();
84
+ expect(stmt).toBeTruthy();
85
+ expect(connector.state()).toBeGreaterThan(0);
86
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
87
+ await stmt.setTableName('d1001');
88
+ let params = stmt.newStmtParam();
89
+ params.setVarchar([tags[0]]);
90
+ try {
91
+ await stmt.setTags(params);
92
+ }
93
+ catch (err) {
94
+ expect(err.message).toMatch('stmt tags count not match');
95
+ }
96
+ await stmt.close();
97
+ await connector.close();
98
+ });
99
+ test('error Prepare table', async () => {
100
+ let dsn = 'ws://root:taosdata@localhost:6041';
101
+ let wsConf = new config_1.WSConfig(dsn);
102
+ wsConf.setDb('power');
103
+ let connector = await wsSql_1.WsSql.open(wsConf);
104
+ let stmt = await connector.stmtInit();
105
+ expect(stmt).toBeTruthy();
106
+ expect(connector.state()).toBeGreaterThan(0);
107
+ try {
108
+ await stmt.prepare('INSERT ? INTO ? USING powr.meters TAGS (?, ?) VALUES (?, ?, ?, ?)');
109
+ await stmt.setTableName('d1001');
110
+ }
111
+ catch (e) {
112
+ let err = e;
113
+ expect(err.message).toMatch("syntax error near '? into ? using powr.meters tags (?, ?) values (?, ?, ?, ?)' (keyword INTO is expected)");
114
+ }
115
+ await stmt.close();
116
+ await connector.close();
117
+ });
118
+ test('error Prepare tag', async () => {
119
+ let dsn = 'ws://root:taosdata@localhost:6041';
120
+ let wsConf = new config_1.WSConfig(dsn);
121
+ wsConf.setDb('power');
122
+ let connector = await wsSql_1.WsSql.open(wsConf);
123
+ let stmt = await connector.stmtInit();
124
+ expect(stmt).toBeTruthy();
125
+ expect(connector.state()).toBeGreaterThan(0);
126
+ try {
127
+ await stmt.prepare('INSERT INTO ? USING powr.meters TAGS (?, ?, ?) VALUES (?, ?, ?, ?)');
128
+ await stmt.setTableName('d1001');
129
+ }
130
+ catch (e) {
131
+ let err = e;
132
+ expect(err.message).toMatch("Database not exist");
133
+ }
134
+ await stmt.close();
135
+ await connector.close();
136
+ });
137
+ test('normal BindParam', async () => {
138
+ let dsn = 'ws://root:taosdata@localhost:6041';
139
+ let wsConf = new config_1.WSConfig(dsn);
140
+ wsConf.setDb('power');
141
+ // let connector = WsStmtConnect.NewConnector(wsConf)
142
+ // let stmt = await connector.Init()
143
+ let connector = await wsSql_1.WsSql.open(wsConf);
144
+ let stmt = await connector.stmtInit();
145
+ expect(stmt).toBeTruthy();
146
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
147
+ await stmt.setTableName('d1001');
148
+ let params = stmt.newStmtParam();
149
+ params.setVarchar(['SanFrancisco']);
150
+ params.setInt([7]);
151
+ await stmt.setTags(params);
152
+ let lastTs = 0;
153
+ const allp = [];
154
+ for (let i = 0; i < 10; i++) {
155
+ for (let j = 0; j < multi[0].length; j++) {
156
+ multi[0][j] = multi[0][0] + j;
157
+ lastTs = multi[0][j];
158
+ }
159
+ let dataParams = stmt.newStmtParam();
160
+ dataParams.setTimestamp(multi[0]);
161
+ dataParams.setFloat(multi[1]);
162
+ dataParams.setInt(multi[2]);
163
+ dataParams.setFloat(multi[3]);
164
+ allp.push(stmt.bind(dataParams));
165
+ multi[0][0] = lastTs + 1;
166
+ }
167
+ await Promise.all(allp);
168
+ await stmt.batch();
169
+ await stmt.exec();
170
+ expect(stmt.getLastAffected()).toEqual(30);
171
+ await stmt.close();
172
+ await connector.close();
173
+ });
174
+ test('error BindParam', async () => {
175
+ let dsn = 'ws://root:taosdata@localhost:6041';
176
+ let wsConf = new config_1.WSConfig(dsn);
177
+ wsConf.setDb('power');
178
+ let connector = await wsSql_1.WsSql.open(wsConf);
179
+ let stmt = await connector.stmtInit();
180
+ expect(stmt).toBeTruthy();
181
+ expect(connector.state()).toBeGreaterThan(0);
182
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
183
+ await stmt.setTableName('d1001');
184
+ let params = stmt.newStmtParam();
185
+ params.setVarchar(['SanFrancisco']);
186
+ params.setInt([7]);
187
+ await stmt.setTags(params);
188
+ let multi = [
189
+ [1709183268567, 1709183268568],
190
+ [10.2, 10.3, 10.4, 10.5],
191
+ [292, 293, 294],
192
+ [0.32, 0.33, 0.31],
193
+ ];
194
+ try {
195
+ let dataParams = stmt.newStmtParam();
196
+ dataParams.setTimestamp(multi[0]);
197
+ dataParams.setFloat(multi[1]);
198
+ dataParams.setInt(multi[2]);
199
+ dataParams.setFloat(multi[3]);
200
+ await stmt.bind(dataParams);
201
+ await stmt.batch();
202
+ await stmt.exec();
203
+ }
204
+ catch (e) {
205
+ let err = e;
206
+ expect(err.message).toMatch("wrong row length");
207
+ }
208
+ await stmt.close();
209
+ await connector.close();
210
+ });
211
+ test('no Batch', async () => {
212
+ let dsn = 'ws://root:taosdata@localhost:6041';
213
+ let wsConf = new config_1.WSConfig(dsn);
214
+ wsConf.setDb('power');
215
+ let connector = await wsSql_1.WsSql.open(wsConf);
216
+ let stmt = await connector.stmtInit();
217
+ expect(stmt).toBeTruthy();
218
+ expect(connector.state()).toBeGreaterThan(0);
219
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
220
+ await stmt.setTableName('d1001');
221
+ let params = stmt.newStmtParam();
222
+ params.setVarchar(['SanFrancisco']);
223
+ params.setInt([7]);
224
+ await stmt.setTags(params);
225
+ let multi = [
226
+ [1709183268567, 1709183268568],
227
+ [10.2, 10.3],
228
+ [292, 293],
229
+ [0.32, 0.33],
230
+ ];
231
+ try {
232
+ let dataParams = stmt.newStmtParam();
233
+ dataParams.setTimestamp(multi[0]);
234
+ dataParams.setFloat(multi[1]);
235
+ dataParams.setInt(multi[2]);
236
+ dataParams.setFloat(multi[3]);
237
+ await stmt.bind(dataParams);
238
+ await stmt.exec();
239
+ }
240
+ catch (e) {
241
+ let err = e;
242
+ expect(err.message).toMatch("Stmt API usage error");
243
+ }
244
+ await stmt.close();
245
+ await connector.close();
246
+ });
247
+ test('Batch after BindParam', async () => {
248
+ let dsn = 'ws://root:taosdata@localhost:6041';
249
+ let wsConf = new config_1.WSConfig(dsn);
250
+ wsConf.setDb('power');
251
+ let connector = await wsSql_1.WsSql.open(wsConf);
252
+ let stmt = await connector.stmtInit();
253
+ expect(stmt).toBeTruthy();
254
+ expect(connector.state()).toBeGreaterThan(0);
255
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
256
+ await stmt.setTableName('d1001');
257
+ let params = stmt.newStmtParam();
258
+ params.setVarchar(['SanFrancisco']);
259
+ params.setInt([7]);
260
+ await stmt.setTags(params);
261
+ let multi1 = [
262
+ [1709188881548, 1709188881549],
263
+ [10.2, 10.3],
264
+ [292, 293],
265
+ [0.32, 0.33],
266
+ ];
267
+ let multi2 = [
268
+ [1709188881550, 1709188881551],
269
+ [10.2, 10.3],
270
+ [292, 293],
271
+ [0.32, 0.33],
272
+ ];
273
+ let dataParams = stmt.newStmtParam();
274
+ dataParams.setTimestamp(multi1[0]);
275
+ dataParams.setFloat(multi1[1]);
276
+ dataParams.setInt(multi1[2]);
277
+ dataParams.setFloat(multi1[3]);
278
+ await stmt.bind(dataParams);
279
+ await stmt.batch();
280
+ dataParams = stmt.newStmtParam();
281
+ dataParams.setTimestamp(multi2[0]);
282
+ dataParams.setFloat(multi2[1]);
283
+ dataParams.setInt(multi2[2]);
284
+ dataParams.setFloat(multi2[3]);
285
+ await stmt.bind(dataParams);
286
+ await stmt.batch();
287
+ await stmt.exec();
288
+ expect(stmt.getLastAffected()).toEqual(4);
289
+ await stmt.close();
290
+ await connector.close();
291
+ });
292
+ test('no set tag', async () => {
293
+ let dsn = 'ws://root:taosdata@localhost:6041';
294
+ let wsConf = new config_1.WSConfig(dsn);
295
+ wsConf.setDb('power');
296
+ let connector = await wsSql_1.WsSql.open(wsConf);
297
+ let stmt = await connector.stmtInit();
298
+ expect(stmt).toBeTruthy();
299
+ expect(connector.state()).toBeGreaterThan(0);
300
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
301
+ await stmt.setTableName('d1001');
302
+ // await stmt.SetTags(tags)
303
+ try {
304
+ let dataParams = stmt.newStmtParam();
305
+ dataParams.setTimestamp(multi[0]);
306
+ dataParams.setFloat(multi[1]);
307
+ dataParams.setInt(multi[2]);
308
+ dataParams.setFloat(multi[3]);
309
+ await stmt.bind(dataParams);
310
+ await stmt.batch();
311
+ await stmt.exec();
312
+ }
313
+ catch (e) {
314
+ let err = e;
315
+ expect(err.message).toMatch("Retry needed");
316
+ }
317
+ await stmt.close();
318
+ await connector.close();
319
+ });
320
+ test('normal binary BindParam', async () => {
321
+ let dsn = 'ws://root:taosdata@localhost:6041';
322
+ let wsConf = new config_1.WSConfig(dsn);
323
+ wsConf.setDb('power');
324
+ let connector = await wsSql_1.WsSql.open(wsConf);
325
+ let stmt = await connector.stmtInit();
326
+ expect(stmt).toBeTruthy();
327
+ expect(connector.state()).toBeGreaterThan(0);
328
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
329
+ await stmt.setTableName('d1002');
330
+ let params = stmt.newStmtParam();
331
+ params.setVarchar(['SanFrancisco']);
332
+ params.setInt([7]);
333
+ await stmt.setTags(params);
334
+ let dataParams = stmt.newStmtParam();
335
+ dataParams.setTimestamp(multi[0]);
336
+ dataParams.setFloat(multi[1]);
337
+ dataParams.setInt(multi[2]);
338
+ dataParams.setFloat(multi[3]);
339
+ await stmt.bind(dataParams);
340
+ await stmt.batch();
341
+ await stmt.exec();
342
+ let result = await connector.exec("select * from power.meters");
343
+ console.log(result);
344
+ await stmt.close();
345
+ await connector.close();
346
+ });
347
+ test('normal json BindParam', async () => {
348
+ let dsn = 'ws://root:taosdata@localhost:6041';
349
+ let wsConf = new config_1.WSConfig(dsn);
350
+ wsConf.setDb('power');
351
+ let connector = await wsSql_1.WsSql.open(wsConf);
352
+ let stmt = await connector.stmtInit();
353
+ expect(stmt).toBeTruthy();
354
+ expect(connector.state()).toBeGreaterThan(0);
355
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
356
+ await stmt.setTableName('d1001');
357
+ let params = stmt.newStmtParam();
358
+ params.setVarchar(['SanFrancisco']);
359
+ params.setInt([7]);
360
+ await stmt.setTags(params);
361
+ let multi1 = [
362
+ [1709188881548, 1709188881549],
363
+ [10.2, 10.3],
364
+ [292, 293],
365
+ [0.32, 0.33],
366
+ ];
367
+ let dataParams = stmt.newStmtParam();
368
+ dataParams.setTimestamp(multi1[0]);
369
+ dataParams.setFloat(multi1[1]);
370
+ dataParams.setInt(multi1[2]);
371
+ dataParams.setFloat(multi1[3]);
372
+ await stmt.bind(dataParams);
373
+ await stmt.batch();
374
+ await stmt.exec();
375
+ await stmt.close();
376
+ await connector.close();
377
+ });
378
+ });
379
+ afterAll(async () => {
380
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
381
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stmt.type.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stmt.type.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/stmt.type.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,273 @@
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 wsSql_1 = require("../../src/sql/wsSql");
6
+ const utils_1 = require("../utils");
7
+ const stable = 'ws_stmt_stb';
8
+ const table = 'stmt_001';
9
+ const db = 'ws_stmt';
10
+ const createDB = `create database if not exists ${db} keep 3650`;
11
+ const useDB = `use ${db}`;
12
+ const dropDB = `drop database if exists ${db}`;
13
+ const tableCN = 'stmt_cn';
14
+ const stableCN = 'ws_stmt_stb_cn';
15
+ const jsonTable = 'stmt_json';
16
+ const jsonTableCN = 'stmt_json_cn';
17
+ const stableTags = [true, -1, -2, -3, -4, 1, 2, 3, 4, parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_tag_1', 'nchar_tag_1'];
18
+ const stableCNTags = [false, -1 * 2, -2 * 2, -3 * 2, -4 * 2, 1 * 2, 2 * 2, 3 * 2, 4 * 2, parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_标签_壹', 'nchar_标签_贰'];
19
+ const tableValues = [
20
+ [1656677710000, 1656677720000, 1656677730000, 1656677740000, 1656677750000],
21
+ [0, -1, -2, -3, -4],
22
+ [-1, -2, -3, -4, -5],
23
+ [-3, -4, -5, -6, -7],
24
+ // [0, 1, 2, 3, 4],
25
+ [BigInt(-2), BigInt(-3), BigInt(-4), BigInt(-5), BigInt(-6)],
26
+ [0, 1, 2, 3, 4],
27
+ [1, 2, 3, 4, 5],
28
+ [2, 3, 4, 5, 6],
29
+ // [0, 1, 2, 3, 4],
30
+ [BigInt(3), BigInt(4), BigInt(5), BigInt(6), BigInt(7)],
31
+ [parseFloat(3.1415.toFixed(5)), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.1415 * 3).toFixed(5)), parseFloat((3.1415 * 4).toFixed(5)), parseFloat((3.1415 * 5).toFixed(5))],
32
+ [parseFloat(3.14159265.toFixed(15)), parseFloat((3.14159265 * 2).toFixed(15)), parseFloat((3.14159265 * 3).toFixed(15)), parseFloat((3.14159265 * 4).toFixed(15)), parseFloat((3.14159265 * 5).toFixed(15))],
33
+ ['varchar_col_1', 'varchar_col_2', 'varchar_col_3', 'varchar_col_4', 'varchar_col_5'],
34
+ ['nchar_col_1', 'nchar_col_2', '', 'nchar_col_4', 'nchar_col_5'],
35
+ [true, false, true, false, true],
36
+ [null, null, null, null, null]
37
+ ];
38
+ const tableCNValues = [
39
+ [BigInt(1656677760000), BigInt(1656677770000), BigInt(1656677780000), BigInt(1656677790000), BigInt(1656677100000)],
40
+ [0, -1, -2, -3, -4],
41
+ [-1, -2, -3, -4, -5],
42
+ [-2, -3, -4, -5, -6],
43
+ [BigInt(-3), BigInt(-4), BigInt(-5), BigInt(-6), BigInt(-7)],
44
+ [0, 1, 2, 3, 4],
45
+ [1, 2, 3, 4, 5],
46
+ [2, 3, 4, 5, 6],
47
+ [BigInt(3), BigInt(4), BigInt(5), BigInt(6), BigInt(7)],
48
+ [parseFloat(3.1415.toFixed(5)), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.1415 * 3).toFixed(5)), parseFloat((3.1415 * 4).toFixed(5)), parseFloat((3.1415 * 5).toFixed(5))],
49
+ [parseFloat(3.14159265.toFixed(15)), parseFloat((3.14159265 * 2).toFixed(15)), parseFloat((3.14159265 * 3).toFixed(15)), parseFloat((3.14159265 * 4).toFixed(15)), parseFloat((3.14159265 * 5).toFixed(15))],
50
+ ['varchar_列_壹', 'varchar_列_贰', 'varchar_列_叁', 'varchar_列_肆', 'varchar_列_伍'],
51
+ ['nchar_列_甲', 'nchar_列_乙', 'nchar_列_丙', 'nchar_列_丁', 'nchar_列_戊'],
52
+ [true, false, true, false, true],
53
+ [null, null, null, null, null],
54
+ ];
55
+ let geoDataArray = [];
56
+ let varbinary = [];
57
+ const encoder = new TextEncoder();
58
+ for (let i = 0; i < 5; i++) {
59
+ let data = new Uint8Array([0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60
+ 0x00, 0x00, 0x00, 0x59, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x40,]);
61
+ geoDataArray.push(data.buffer);
62
+ let vdata = encoder.encode(`varchar_col_${i + 1}`);
63
+ varbinary.push(vdata.buffer);
64
+ }
65
+ const jsonTags = ["{\"key1\":\"taos\",\"key2\":null,\"key3\":\"TDengine\",\"key4\":0,\"key5\":false}"];
66
+ const jsonTagsCN = ["{\"key1\":\"taosdata\",\"key2\":null,\"key3\":\"TDengine涛思数据\",\"key4\":1,\"key5\":true}"];
67
+ const selectStable = `select * from ${stable}`;
68
+ const selectStableCN = `select * from ${stableCN}`;
69
+ const selectTable = `select * from ${table}`;
70
+ const selectTableCN = `select * from ${tableCN}`;
71
+ const selectJsonTable = `select * from ${jsonTable}`;
72
+ const selectJsonTableCN = `select * from ${jsonTableCN}`;
73
+ beforeAll(async () => {
74
+ let dsn = 'ws://root:taosdata@localhost:6041';
75
+ let conf = new config_1.WSConfig(dsn);
76
+ let ws = await wsSql_1.WsSql.open(conf);
77
+ await ws.exec(dropDB);
78
+ await ws.exec(createDB);
79
+ await ws.exec(useDB);
80
+ await ws.exec((0, utils_1.createBaseSTable)(stable));
81
+ await ws.exec((0, utils_1.createSTableJSON)(jsonTable));
82
+ await ws.close();
83
+ });
84
+ describe('TDWebSocket.Stmt()', () => {
85
+ jest.setTimeout(20 * 1000);
86
+ test('normal BindParam', async () => {
87
+ let dsn = 'ws://root:taosdata@localhost:6041';
88
+ let wsConf = new config_1.WSConfig(dsn);
89
+ wsConf.setDb(db);
90
+ let connector = await wsSql_1.WsSql.open(wsConf);
91
+ let stmt = await (await connector).stmtInit();
92
+ expect(stmt).toBeTruthy();
93
+ expect(connector.state()).toBeGreaterThan(0);
94
+ await stmt.prepare((0, utils_1.getInsertBind)(tableValues.length + 2, stableTags.length, db, stable));
95
+ await stmt.setTableName(table);
96
+ let tagParams = stmt.newStmtParam();
97
+ tagParams.setBoolean([stableTags[0]]);
98
+ tagParams.setTinyInt([stableTags[1]]);
99
+ tagParams.setSmallInt([stableTags[2]]);
100
+ tagParams.setInt([stableTags[3]]);
101
+ tagParams.setBigint([BigInt(stableTags[4])]);
102
+ tagParams.setUTinyInt([stableTags[5]]);
103
+ tagParams.setUSmallInt([stableTags[6]]);
104
+ tagParams.setUInt([stableTags[7]]);
105
+ tagParams.setUBigint([BigInt(stableTags[8])]);
106
+ tagParams.setFloat([stableTags[9]]);
107
+ tagParams.setDouble([stableTags[10]]);
108
+ tagParams.setBinary([stableTags[11]]);
109
+ tagParams.setNchar([stableTags[12]]);
110
+ await stmt.setTags(tagParams);
111
+ let bindParams = stmt.newStmtParam();
112
+ bindParams.setTimestamp(tableValues[0]);
113
+ bindParams.setTinyInt(tableValues[1]);
114
+ bindParams.setSmallInt(tableValues[2]);
115
+ bindParams.setInt(tableValues[3]);
116
+ bindParams.setBigint(tableValues[4]);
117
+ bindParams.setUTinyInt(tableValues[5]);
118
+ bindParams.setUSmallInt(tableValues[6]);
119
+ bindParams.setUInt(tableValues[7]);
120
+ bindParams.setUBigint(tableValues[8]);
121
+ bindParams.setFloat(tableValues[9]);
122
+ bindParams.setDouble(tableValues[10]);
123
+ bindParams.setBinary(tableValues[11]);
124
+ bindParams.setNchar(tableValues[12]);
125
+ bindParams.setBoolean(tableValues[13]);
126
+ bindParams.setInt(tableValues[14]);
127
+ bindParams.setGeometry(geoDataArray);
128
+ bindParams.setVarBinary(varbinary);
129
+ await stmt.bind(bindParams);
130
+ await stmt.batch();
131
+ await stmt.exec();
132
+ expect(stmt.getLastAffected()).toEqual(5);
133
+ await stmt.close();
134
+ let result = await connector.exec(`select * from ${db}.${stable}`);
135
+ console.log(result);
136
+ await connector.close();
137
+ });
138
+ test('normal CN BindParam', async () => {
139
+ let dsn = 'ws://root:taosdata@localhost:6041';
140
+ let wsConf = new config_1.WSConfig(dsn);
141
+ wsConf.setDb(db);
142
+ let connector = await wsSql_1.WsSql.open(wsConf);
143
+ let stmt = await (await connector).stmtInit();
144
+ expect(stmt).toBeTruthy();
145
+ expect(connector.state()).toBeGreaterThan(0);
146
+ await stmt.prepare((0, utils_1.getInsertBind)(tableValues.length + 2, stableTags.length, db, stable));
147
+ await stmt.setTableName(table);
148
+ let tagParams = stmt.newStmtParam();
149
+ tagParams.setBoolean([stableCNTags[0]]);
150
+ tagParams.setTinyInt([stableCNTags[1]]);
151
+ tagParams.setSmallInt([stableCNTags[2]]);
152
+ tagParams.setInt([stableCNTags[3]]);
153
+ tagParams.setBigint([BigInt(stableCNTags[4])]);
154
+ tagParams.setUTinyInt([stableCNTags[5]]);
155
+ tagParams.setUSmallInt([stableCNTags[6]]);
156
+ tagParams.setUInt([stableCNTags[7]]);
157
+ tagParams.setUBigint([BigInt(stableCNTags[8])]);
158
+ tagParams.setFloat([stableCNTags[9]]);
159
+ tagParams.setDouble([stableCNTags[10]]);
160
+ tagParams.setBinary([stableCNTags[11]]);
161
+ tagParams.setNchar([stableCNTags[12]]);
162
+ await stmt.setTags(tagParams);
163
+ let bindParams = stmt.newStmtParam();
164
+ bindParams.setTimestamp(tableCNValues[0]);
165
+ bindParams.setTinyInt(tableCNValues[1]);
166
+ bindParams.setSmallInt(tableCNValues[2]);
167
+ bindParams.setInt(tableCNValues[3]);
168
+ bindParams.setBigint(tableCNValues[4]);
169
+ bindParams.setUTinyInt(tableCNValues[5]);
170
+ bindParams.setUSmallInt(tableCNValues[6]);
171
+ bindParams.setUInt(tableCNValues[7]);
172
+ bindParams.setUBigint(tableCNValues[8]);
173
+ bindParams.setFloat(tableCNValues[9]);
174
+ bindParams.setDouble(tableCNValues[10]);
175
+ bindParams.setBinary(tableCNValues[11]);
176
+ bindParams.setNchar(tableCNValues[12]);
177
+ bindParams.setBoolean(tableCNValues[13]);
178
+ bindParams.setInt(tableCNValues[14]);
179
+ bindParams.setGeometry(geoDataArray);
180
+ bindParams.setVarBinary(varbinary);
181
+ await stmt.bind(bindParams);
182
+ await stmt.batch();
183
+ await stmt.exec();
184
+ expect(stmt.getLastAffected()).toEqual(5);
185
+ await stmt.close();
186
+ let result = await connector.exec(`select count(*) from ${db}.${stable}`);
187
+ console.log(result);
188
+ await connector.close();
189
+ });
190
+ test('normal json tag BindParam', async () => {
191
+ let dsn = 'ws://root:taosdata@localhost:6041';
192
+ let wsConf = new config_1.WSConfig(dsn);
193
+ wsConf.setDb(db);
194
+ let connector = await wsSql_1.WsSql.open(wsConf);
195
+ let stmt = await (await connector).stmtInit();
196
+ expect(stmt).toBeTruthy();
197
+ expect(connector.state()).toBeGreaterThan(0);
198
+ await stmt.prepare((0, utils_1.getInsertBind)(tableValues.length + 2, jsonTags.length, db, jsonTable));
199
+ await stmt.setTableName(`${jsonTable}_001`);
200
+ let tagParams = stmt.newStmtParam();
201
+ tagParams.setJson(jsonTags);
202
+ await stmt.setTags(tagParams);
203
+ let bindParams = stmt.newStmtParam();
204
+ bindParams.setTimestamp(tableCNValues[0]);
205
+ bindParams.setTinyInt(tableCNValues[1]);
206
+ bindParams.setSmallInt(tableCNValues[2]);
207
+ bindParams.setInt(tableCNValues[3]);
208
+ bindParams.setBigint(tableCNValues[4]);
209
+ bindParams.setUTinyInt(tableCNValues[5]);
210
+ bindParams.setUSmallInt(tableCNValues[6]);
211
+ bindParams.setUInt(tableCNValues[7]);
212
+ bindParams.setUBigint(tableCNValues[8]);
213
+ bindParams.setFloat(tableCNValues[9]);
214
+ bindParams.setDouble(tableCNValues[10]);
215
+ bindParams.setBinary(tableCNValues[11]);
216
+ bindParams.setNchar(tableCNValues[12]);
217
+ bindParams.setBoolean(tableCNValues[13]);
218
+ bindParams.setInt(tableCNValues[14]);
219
+ bindParams.setGeometry(geoDataArray);
220
+ bindParams.setVarBinary(varbinary);
221
+ await stmt.bind(bindParams);
222
+ await stmt.batch();
223
+ await stmt.exec();
224
+ expect(stmt.getLastAffected()).toEqual(5);
225
+ await stmt.close();
226
+ let result = await connector.exec(`select * from ${db}.${jsonTable}`);
227
+ console.log(result);
228
+ await connector.close();
229
+ });
230
+ test('normal json cn tag BindParam', async () => {
231
+ let dsn = 'ws://root:taosdata@localhost:6041';
232
+ let wsConf = new config_1.WSConfig(dsn);
233
+ wsConf.setDb(db);
234
+ let connector = await wsSql_1.WsSql.open(wsConf);
235
+ let stmt = await (await connector).stmtInit();
236
+ expect(stmt).toBeTruthy();
237
+ expect(connector.state()).toBeGreaterThan(0);
238
+ await stmt.prepare((0, utils_1.getInsertBind)(tableValues.length + 2, jsonTags.length, db, jsonTable));
239
+ await stmt.setTableName(`${jsonTable}_001`);
240
+ let tagParams = stmt.newStmtParam();
241
+ tagParams.setJson(jsonTagsCN);
242
+ await stmt.setTags(tagParams);
243
+ let bindParams = stmt.newStmtParam();
244
+ bindParams.setTimestamp(tableCNValues[0]);
245
+ bindParams.setTinyInt(tableCNValues[1]);
246
+ bindParams.setSmallInt(tableCNValues[2]);
247
+ bindParams.setInt(tableCNValues[3]);
248
+ bindParams.setBigint(tableCNValues[4]);
249
+ bindParams.setUTinyInt(tableCNValues[5]);
250
+ bindParams.setUSmallInt(tableCNValues[6]);
251
+ bindParams.setUInt(tableCNValues[7]);
252
+ bindParams.setUBigint(tableCNValues[8]);
253
+ bindParams.setFloat(tableCNValues[9]);
254
+ bindParams.setDouble(tableCNValues[10]);
255
+ bindParams.setBinary(tableCNValues[11]);
256
+ bindParams.setNchar(tableCNValues[12]);
257
+ bindParams.setBoolean(tableCNValues[13]);
258
+ bindParams.setInt(tableCNValues[14]);
259
+ bindParams.setGeometry(geoDataArray);
260
+ bindParams.setVarBinary(varbinary);
261
+ await stmt.bind(bindParams);
262
+ await stmt.batch();
263
+ await stmt.exec();
264
+ expect(stmt.getLastAffected()).toEqual(5);
265
+ await stmt.close();
266
+ let result = await connector.exec(`select * from ${db}.${jsonTable}`);
267
+ console.log(result);
268
+ await connector.close();
269
+ });
270
+ });
271
+ afterAll(async () => {
272
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
273
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tmq.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmq.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/tmq.test.ts"],"names":[],"mappings":""}