@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.
- package/lib/index.d.ts +8 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -1
- package/lib/src/client/wsClient.d.ts +1 -0
- package/lib/src/client/wsClient.d.ts.map +1 -1
- package/lib/src/client/wsClient.js +6 -3
- package/lib/src/common/config.d.ts +3 -1
- package/lib/src/common/config.d.ts.map +1 -1
- package/lib/src/common/config.js +11 -1
- package/lib/src/common/constant.d.ts +11 -1
- package/lib/src/common/constant.d.ts.map +1 -1
- package/lib/src/common/constant.js +21 -13
- package/lib/src/sql/wsSql.d.ts.map +1 -1
- package/lib/src/sql/wsSql.js +8 -2
- package/lib/src/stmt/FieldBindParams.d.ts +9 -0
- package/lib/src/stmt/FieldBindParams.d.ts.map +1 -0
- package/lib/src/stmt/FieldBindParams.js +13 -0
- package/lib/src/stmt/wsColumnInfo.d.ts +12 -0
- package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -0
- package/lib/src/stmt/wsColumnInfo.js +17 -0
- package/lib/src/stmt/wsParams1.d.ts +14 -0
- package/lib/src/stmt/wsParams1.d.ts.map +1 -0
- package/lib/src/stmt/wsParams1.js +274 -0
- package/lib/src/stmt/wsParams2.d.ts +14 -0
- package/lib/src/stmt/wsParams2.d.ts.map +1 -0
- package/lib/src/stmt/wsParams2.js +188 -0
- package/lib/src/stmt/wsParamsBase.d.ts +45 -0
- package/lib/src/stmt/wsParamsBase.d.ts.map +1 -0
- package/lib/src/stmt/wsParamsBase.js +218 -0
- package/lib/src/stmt/wsProto.d.ts +13 -1
- package/lib/src/stmt/wsProto.d.ts.map +1 -1
- package/lib/src/stmt/wsProto.js +195 -2
- package/lib/src/stmt/wsStmt.d.ts +6 -16
- package/lib/src/stmt/wsStmt.d.ts.map +1 -1
- package/lib/src/stmt/wsStmt.js +0 -201
- package/lib/src/stmt/wsStmt1.d.ts +30 -0
- package/lib/src/stmt/wsStmt1.d.ts.map +1 -0
- package/lib/src/stmt/wsStmt1.js +206 -0
- package/lib/src/stmt/wsStmt2.d.ts +37 -0
- package/lib/src/stmt/wsStmt2.d.ts.map +1 -0
- package/lib/src/stmt/wsStmt2.js +280 -0
- package/lib/src/stmt/wsTableInfo.d.ts +17 -0
- package/lib/src/stmt/wsTableInfo.d.ts.map +1 -0
- package/lib/src/stmt/wsTableInfo.js +54 -0
- package/lib/src/tmq/tmqResponse.js +1 -1
- package/lib/test/bulkPulling/sql.test.js +3 -0
- package/lib/test/bulkPulling/stmt.func.test.js +99 -11
- package/lib/test/bulkPulling/stmt.type.test.js +8 -6
- package/lib/test/bulkPulling/stmt1.func.test.d.ts +2 -0
- package/lib/test/bulkPulling/stmt1.func.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/stmt1.func.test.js +417 -0
- package/lib/test/bulkPulling/stmt1.type.test.d.ts +2 -0
- package/lib/test/bulkPulling/stmt1.type.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/stmt1.type.test.js +323 -0
- package/lib/test/bulkPulling/stmt2.func.test.d.ts +2 -0
- package/lib/test/bulkPulling/stmt2.func.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/stmt2.func.test.js +539 -0
- package/lib/test/bulkPulling/stmt2.type.test.d.ts +2 -0
- package/lib/test/bulkPulling/stmt2.type.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/stmt2.type.test.js +325 -0
- package/lib/test/bulkPulling/wsConnectPool.test.js +2 -2
- package/lib/test/utils.d.ts.map +1 -1
- package/lib/test/utils.js +1 -0
- 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://
|
|
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(
|
|
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('
|
|
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
|
|
154
|
-
|
|
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([
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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@
|
|
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
|
|
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
|
|
310
|
-
let ws = await
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"stmt1.type.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/stmt1.type.test.ts"],"names":[],"mappings":""}
|