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