@tdengine/websocket 3.1.9 → 3.2.1

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 (121) hide show
  1. package/lib/example/all_type_query.js +26 -22
  2. package/lib/example/all_type_stmt.js +22 -20
  3. package/lib/example/basicBatchTmq.js +14 -14
  4. package/lib/example/basicSchemaless.js +11 -11
  5. package/lib/example/basicSql.js +10 -10
  6. package/lib/example/basicStmt.js +3 -3
  7. package/lib/example/basicTmq.js +8 -9
  8. package/lib/index.d.ts +1 -1
  9. package/lib/index.d.ts.map +1 -1
  10. package/lib/index.js +1 -1
  11. package/lib/src/client/wsClient.d.ts +3 -2
  12. package/lib/src/client/wsClient.d.ts.map +1 -1
  13. package/lib/src/client/wsClient.js +66 -40
  14. package/lib/src/client/wsConnector.d.ts.map +1 -1
  15. package/lib/src/client/wsConnector.js +40 -14
  16. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  17. package/lib/src/client/wsConnectorPool.js +29 -14
  18. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  19. package/lib/src/client/wsEventCallback.js +6 -4
  20. package/lib/src/client/wsResponse.d.ts.map +1 -1
  21. package/lib/src/client/wsResponse.js +6 -2
  22. package/lib/src/common/config.d.ts +5 -3
  23. package/lib/src/common/config.d.ts.map +1 -1
  24. package/lib/src/common/config.js +15 -5
  25. package/lib/src/common/constant.d.ts +11 -1
  26. package/lib/src/common/constant.d.ts.map +1 -1
  27. package/lib/src/common/constant.js +48 -40
  28. package/lib/src/common/log.d.ts +1 -1
  29. package/lib/src/common/log.d.ts.map +1 -1
  30. package/lib/src/common/log.js +9 -7
  31. package/lib/src/common/reqid.d.ts.map +1 -1
  32. package/lib/src/common/reqid.js +7 -7
  33. package/lib/src/common/taosResult.d.ts.map +1 -1
  34. package/lib/src/common/taosResult.js +46 -27
  35. package/lib/src/common/ut8Helper.d.ts.map +1 -1
  36. package/lib/src/common/ut8Helper.js +8 -8
  37. package/lib/src/common/utils.d.ts.map +1 -1
  38. package/lib/src/common/utils.js +17 -16
  39. package/lib/src/common/wsError.d.ts.map +1 -1
  40. package/lib/src/common/wsError.js +3 -3
  41. package/lib/src/common/wsOptions.d.ts +1 -1
  42. package/lib/src/index.d.ts +3 -3
  43. package/lib/src/index.d.ts.map +1 -1
  44. package/lib/src/sql/wsProto.d.ts.map +1 -1
  45. package/lib/src/sql/wsRows.d.ts +3 -3
  46. package/lib/src/sql/wsRows.d.ts.map +1 -1
  47. package/lib/src/sql/wsRows.js +4 -2
  48. package/lib/src/sql/wsSql.d.ts +5 -5
  49. package/lib/src/sql/wsSql.d.ts.map +1 -1
  50. package/lib/src/sql/wsSql.js +23 -15
  51. package/lib/src/stmt/FieldBindParams.d.ts +9 -0
  52. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -0
  53. package/lib/src/stmt/FieldBindParams.js +13 -0
  54. package/lib/src/stmt/wsColumnInfo.d.ts +12 -0
  55. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -0
  56. package/lib/src/stmt/wsColumnInfo.js +17 -0
  57. package/lib/src/stmt/wsParams1.d.ts +14 -0
  58. package/lib/src/stmt/wsParams1.d.ts.map +1 -0
  59. package/lib/src/stmt/wsParams1.js +300 -0
  60. package/lib/src/stmt/wsParams2.d.ts +14 -0
  61. package/lib/src/stmt/wsParams2.d.ts.map +1 -0
  62. package/lib/src/stmt/wsParams2.js +203 -0
  63. package/lib/src/stmt/wsParamsBase.d.ts +45 -0
  64. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -0
  65. package/lib/src/stmt/wsParamsBase.js +220 -0
  66. package/lib/src/stmt/wsProto.d.ts +13 -1
  67. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  68. package/lib/src/stmt/wsProto.js +206 -2
  69. package/lib/src/stmt/wsStmt.d.ts +6 -16
  70. package/lib/src/stmt/wsStmt.d.ts.map +1 -1
  71. package/lib/src/stmt/wsStmt.js +0 -201
  72. package/lib/src/stmt/wsStmt1.d.ts +30 -0
  73. package/lib/src/stmt/wsStmt1.d.ts.map +1 -0
  74. package/lib/src/stmt/wsStmt1.js +206 -0
  75. package/lib/src/stmt/wsStmt2.d.ts +37 -0
  76. package/lib/src/stmt/wsStmt2.d.ts.map +1 -0
  77. package/lib/src/stmt/wsStmt2.js +284 -0
  78. package/lib/src/stmt/wsTableInfo.d.ts +17 -0
  79. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -0
  80. package/lib/src/stmt/wsTableInfo.js +54 -0
  81. package/lib/src/tmq/config.d.ts.map +1 -1
  82. package/lib/src/tmq/config.js +2 -2
  83. package/lib/src/tmq/constant.d.ts.map +1 -1
  84. package/lib/src/tmq/constant.js +28 -28
  85. package/lib/src/tmq/tmqResponse.d.ts.map +1 -1
  86. package/lib/src/tmq/tmqResponse.js +31 -17
  87. package/lib/src/tmq/wsTmq.d.ts +2 -2
  88. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  89. package/lib/src/tmq/wsTmq.js +32 -30
  90. package/lib/test/bulkPulling/cloud.tmq.test.js +11 -11
  91. package/lib/test/bulkPulling/decimal.test.js +50 -26
  92. package/lib/test/bulkPulling/log.test.js +8 -8
  93. package/lib/test/bulkPulling/queryTables.test.js +255 -49
  94. package/lib/test/bulkPulling/schemaless.test.js +34 -34
  95. package/lib/test/bulkPulling/sql.test.js +108 -66
  96. package/lib/test/bulkPulling/stmt1.func.test.d.ts +2 -0
  97. package/lib/test/bulkPulling/stmt1.func.test.d.ts.map +1 -0
  98. package/lib/test/bulkPulling/{stmt.func.test.js → stmt1.func.test.js} +128 -116
  99. package/lib/test/bulkPulling/stmt1.type.test.d.ts +2 -0
  100. package/lib/test/bulkPulling/stmt1.type.test.d.ts.map +1 -0
  101. package/lib/test/bulkPulling/stmt1.type.test.js +399 -0
  102. package/lib/test/bulkPulling/stmt2.func.test.d.ts +2 -0
  103. package/lib/test/bulkPulling/stmt2.func.test.d.ts.map +1 -0
  104. package/lib/test/bulkPulling/stmt2.func.test.js +543 -0
  105. package/lib/test/bulkPulling/stmt2.type.test.d.ts +2 -0
  106. package/lib/test/bulkPulling/stmt2.type.test.d.ts.map +1 -0
  107. package/lib/test/bulkPulling/{stmt.type.test.js → stmt2.type.test.js} +136 -49
  108. package/lib/test/bulkPulling/tmq.test.js +225 -31
  109. package/lib/test/bulkPulling/utils.test.js +2 -2
  110. package/lib/test/bulkPulling/wsConnectPool.test.js +20 -20
  111. package/lib/test/utils.d.ts.map +1 -1
  112. package/lib/test/utils.js +130 -129
  113. package/package.json +1 -1
  114. package/readme.md +1 -0
  115. package/lib/src/stmt/wsParams.d.ts +0 -41
  116. package/lib/src/stmt/wsParams.d.ts.map +0 -1
  117. package/lib/src/stmt/wsParams.js +0 -428
  118. package/lib/test/bulkPulling/stmt.func.test.d.ts +0 -2
  119. package/lib/test/bulkPulling/stmt.func.test.d.ts.map +0 -1
  120. package/lib/test/bulkPulling/stmt.type.test.d.ts +0 -2
  121. package/lib/test/bulkPulling/stmt.type.test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wsRows.d.ts","sourceRoot":"","sources":["../../../src/sql/wsRows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAwB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM9C,qBAAa,MAAM;IACf,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAW;gBAEf,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe;IAOlD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;YAoBhB,YAAY;IAiC1B,OAAO,IAAG,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;IAIpC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;IAc3B,KAAK,IAAG,OAAO,CAAC,IAAI,CAAC;CAQ9B"}
1
+ {"version":3,"file":"wsRows.d.ts","sourceRoot":"","sources":["../../../src/sql/wsRows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAwB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM9C,qBAAa,MAAM;IACf,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAU;gBAEd,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe;IAOlD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;YA0BhB,YAAY;IAiD1B,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;IAIrC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;IAc3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
@@ -25,7 +25,9 @@ class WSRows {
25
25
  }
26
26
  let data = this._taosResult.getData();
27
27
  if (this._taosResult && data != null) {
28
- if (data && Array.isArray(this._taosResult.getData()) && data.length > 0) {
28
+ if (data &&
29
+ Array.isArray(this._taosResult.getData()) &&
30
+ data.length > 0) {
29
31
  return true;
30
32
  }
31
33
  }
@@ -77,7 +79,7 @@ class WSRows {
77
79
  let data = this._taosResult.getData();
78
80
  if (this._taosResult && data != null) {
79
81
  if (Array.isArray(data) && data.length > 0) {
80
- return data.pop();
82
+ return data.shift();
81
83
  }
82
84
  }
83
85
  return undefined;
@@ -1,8 +1,8 @@
1
- import { WSRows } from './wsRows';
2
- import { TaosResult } from '../common/taosResult';
3
- import { WSConfig } from '../common/config';
4
- import { Precision, SchemalessProto } from './wsProto';
5
- import { WsStmt } from '../stmt/wsStmt';
1
+ import { WSRows } from "./wsRows";
2
+ import { TaosResult } from "../common/taosResult";
3
+ import { WSConfig } from "../common/config";
4
+ import { Precision, SchemalessProto } from "./wsProto";
5
+ import { WsStmt } from "../stmt/wsStmt";
6
6
  export declare class WsSql {
7
7
  private wsConfig;
8
8
  private _wsClient;
@@ -1 +1 @@
1
- {"version":3,"file":"wsSql.d.ts","sourceRoot":"","sources":["../../../src/sql/wsSql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAyB,eAAe,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAKvC,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,SAAS,CAAW;gBAChB,QAAQ,EAAC,QAAQ;WAMhB,IAAI,CAAC,QAAQ,EAAC,QAAQ,GAAE,OAAO,CAAC,KAAK,CAAC;IAgCnD,KAAK;IAIL;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,KAAK,IAAG,OAAO,CAAC,IAAI,CAAC;IAIrB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnI,QAAQ,CAAC,KAAK,CAAC,EAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,GAAC,MAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;YA4C9E,uBAAuB;IAa/B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAW3D"}
1
+ {"version":3,"file":"wsSql.d.ts","sourceRoot":"","sources":["../../../src/sql/wsSql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAyB,eAAe,EAAE,MAAM,WAAW,CAAC;AAS9E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,QAAQ,EAAE,QAAQ;WAMjB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAwCrD,KAAK;IAIL;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,gBAAgB,CAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IA6BV,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CzC,IAAI,CACN,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,MAAuB,GAChC,OAAO,CAAC,UAAU,CAAC;YAqER,uBAAuB;IAe/B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB5D"}
@@ -10,19 +10,20 @@ const wsClient_1 = require("../client/wsClient");
10
10
  const wsError_1 = require("../common/wsError");
11
11
  const utils_1 = require("../common/utils");
12
12
  const wsResponse_1 = require("../client/wsResponse");
13
- const wsStmt_1 = require("../stmt/wsStmt");
14
13
  const reqid_1 = require("../common/reqid");
15
14
  const constant_1 = require("../common/constant");
16
15
  const log_1 = __importDefault(require("../common/log"));
16
+ const wsStmt1_1 = require("../stmt/wsStmt1");
17
+ const wsStmt2_1 = require("../stmt/wsStmt2");
17
18
  class WsSql {
18
19
  constructor(wsConfig) {
19
20
  let url = (0, utils_1.getUrl)(wsConfig);
20
- this._wsClient = new wsClient_1.WsClient(url, wsConfig.getTimeOut());
21
21
  this.wsConfig = wsConfig;
22
+ this._wsClient = new wsClient_1.WsClient(url, wsConfig.getTimeOut());
22
23
  }
23
24
  static async open(wsConfig) {
24
25
  if (!wsConfig.getUrl()) {
25
- throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_URL, 'invalid url, password or username needed.');
26
+ throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_URL, "invalid url, password or username needed.");
26
27
  }
27
28
  let wsSql = new WsSql(wsConfig);
28
29
  let database = wsConfig.getDb();
@@ -33,7 +34,7 @@ class WsSql {
33
34
  await wsSql.exec(`use ${database}`);
34
35
  }
35
36
  else {
36
- await wsSql.exec('use information_schema');
37
+ await wsSql.exec("use information_schema");
37
38
  }
38
39
  let timezone = wsConfig.getTimezone();
39
40
  if (timezone && timezone.length > 0) {
@@ -49,7 +50,7 @@ class WsSql {
49
50
  if (wsSql) {
50
51
  await wsSql.close();
51
52
  }
52
- throw (e);
53
+ throw e;
53
54
  }
54
55
  }
55
56
  state() {
@@ -65,18 +66,18 @@ class WsSql {
65
66
  await this._wsClient.close();
66
67
  }
67
68
  async schemalessInsert(lines, protocol, precision, ttl, reqId) {
68
- let data = '';
69
+ let data = "";
69
70
  if (!lines || lines.length == 0 || !protocol) {
70
- throw new wsError_1.TaosResultError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, 'WsSchemaless Insert params is error!');
71
+ throw new wsError_1.TaosResultError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "WsSchemaless Insert params is error!");
71
72
  }
72
73
  lines.forEach((element, index) => {
73
74
  data += element;
74
75
  if (index < lines.length - 1) {
75
- data += '\n';
76
+ data += "\n";
76
77
  }
77
78
  });
78
79
  let queryMsg = {
79
- action: 'insert',
80
+ action: "insert",
80
81
  args: {
81
82
  req_id: reqid_1.ReqId.getReqID(reqId),
82
83
  protocol: protocol,
@@ -92,23 +93,30 @@ class WsSql {
92
93
  try {
93
94
  let precision = constant_1.PrecisionLength["ms"];
94
95
  if (this.wsConfig.getDb()) {
95
- let sql = "select `precision` from information_schema.ins_databases where name = '" + this.wsConfig.getDb() + "'";
96
+ let sql = "select `precision` from information_schema.ins_databases where name = '" +
97
+ this.wsConfig.getDb() +
98
+ "'";
96
99
  let result = await this.exec(sql);
97
100
  let data = result.getData();
98
101
  if (data && data[0] && data[0][0]) {
99
102
  precision = constant_1.PrecisionLength[data[0][0]];
100
103
  }
101
104
  }
102
- return await wsStmt_1.WsStmt.newStmt(this._wsClient, precision, reqId);
105
+ let version = await this.version();
106
+ let result = (0, utils_1.compareVersions)(version, this.wsConfig.getMinStmt2Version());
107
+ if (result < 0) {
108
+ return await wsStmt1_1.WsStmt1.newStmt(this._wsClient, precision, reqId);
109
+ }
110
+ return await wsStmt2_1.WsStmt2.newStmt(this._wsClient, precision, reqId);
103
111
  }
104
112
  catch (e) {
105
113
  log_1.default.error(`stmtInit failed, code: ${e.code}, message: ${e.message}`);
106
- throw (e);
114
+ throw e;
107
115
  }
108
116
  }
109
- throw (new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "stmt connect closed"));
117
+ throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "stmt connect closed");
110
118
  }
111
- async exec(sql, reqId, action = 'binary_query') {
119
+ async exec(sql, reqId, action = "binary_query") {
112
120
  try {
113
121
  let bigintReqId = BigInt(reqid_1.ReqId.getReqID(reqId));
114
122
  let wsQueryResponse = await this._wsClient.sendBinaryMsg(bigintReqId, action, (0, utils_1.getBinarySql)(constant_1.BinaryQueryMessage, bigintReqId, BigInt(0), sql));
@@ -165,7 +173,7 @@ class WsSql {
165
173
  async query(sql, reqId) {
166
174
  try {
167
175
  let bigintReqId = BigInt(reqid_1.ReqId.getReqID(reqId));
168
- let wsQueryResponse = await this._wsClient.sendBinaryMsg(bigintReqId, 'binary_query', (0, utils_1.getBinarySql)(constant_1.BinaryQueryMessage, bigintReqId, BigInt(0), sql));
176
+ let wsQueryResponse = await this._wsClient.sendBinaryMsg(bigintReqId, "binary_query", (0, utils_1.getBinarySql)(constant_1.BinaryQueryMessage, bigintReqId, BigInt(0), sql));
169
177
  return new wsRows_1.WSRows(this._wsClient, wsQueryResponse);
170
178
  }
171
179
  catch (err) {
@@ -0,0 +1,9 @@
1
+ export declare class FieldBindParams {
2
+ params: any[];
3
+ dataType: string;
4
+ typeLen: number;
5
+ columnType: number;
6
+ bindType: number;
7
+ constructor(params: any[], dataType: string, typeLen: number, columnType: number, bindType: number);
8
+ }
9
+ //# sourceMappingURL=FieldBindParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldBindParams.d.ts","sourceRoot":"","sources":["../../../src/stmt/FieldBindParams.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;gBAEb,MAAM,EAAE,GAAG,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;CAQvB"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldBindParams = void 0;
4
+ class FieldBindParams {
5
+ constructor(params, dataType, typeLen, columnType, bindType) {
6
+ this.params = [...params];
7
+ this.dataType = dataType;
8
+ this.typeLen = typeLen;
9
+ this.columnType = columnType;
10
+ this.bindType = bindType;
11
+ }
12
+ }
13
+ exports.FieldBindParams = FieldBindParams;
@@ -0,0 +1,12 @@
1
+ export declare class ColumnInfo {
2
+ data: ArrayBuffer;
3
+ length: number;
4
+ type: number;
5
+ typeLen: number;
6
+ isNull?: number[];
7
+ _rows: number;
8
+ _haveLength: number;
9
+ _dataLengths?: number[];
10
+ constructor([length, data]: [number, ArrayBuffer], type: number, typeLen: number, rows: number, isNull?: number[], dataLengths?: number[], haveLength?: number);
11
+ }
12
+ //# sourceMappingURL=wsColumnInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsColumnInfo.d.ts","sourceRoot":"","sources":["../../../src/stmt/wsColumnInfo.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAK;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEpB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,UAAU,GAAE,MAAU;CAW7B"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ColumnInfo = void 0;
4
+ class ColumnInfo {
5
+ constructor([length, data], type, typeLen, rows, isNull, dataLengths, haveLength = 0) {
6
+ this._haveLength = 0;
7
+ this.data = data;
8
+ this.type = type;
9
+ this.length = length;
10
+ this.typeLen = typeLen;
11
+ this._rows = rows;
12
+ this.isNull = isNull;
13
+ this._dataLengths = dataLengths;
14
+ this._haveLength = haveLength;
15
+ }
16
+ }
17
+ exports.ColumnInfo = ColumnInfo;
@@ -0,0 +1,14 @@
1
+ import { IDataEncoder, StmtBindParams } from "./wsParamsBase";
2
+ export declare class Stmt1BindParams extends StmtBindParams implements IDataEncoder {
3
+ constructor(precision?: number);
4
+ encode(): void;
5
+ mergeParams(bindParams: StmtBindParams): void;
6
+ addParams(params: any[], dataType: string, typeLen: number, columnType: number): void;
7
+ setTimestamp(params: any[]): void;
8
+ private encodeDigitColumns;
9
+ private encodeVarLengthColumn;
10
+ private getBinaryColumnArrayBuffer;
11
+ private encodeNcharColumn;
12
+ private countBigintDigits;
13
+ }
14
+ //# sourceMappingURL=wsParams1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsParams1.d.ts","sourceRoot":"","sources":["../../../src/stmt/wsParams1.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE9D,qBAAa,eAAgB,SAAQ,cAAe,YAAW,YAAY;gBAC3D,SAAS,CAAC,EAAE,MAAM;IAI9B,MAAM,IAAI,IAAI;IAId,WAAW,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;IAI7C,SAAS,CACL,MAAM,EAAE,GAAG,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACnB,IAAI;IA0BP,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE;IAwG1B,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,qBAAqB;IA8E7B,OAAO,CAAC,0BAA0B;IAkClC,OAAO,CAAC,iBAAiB;IAmFzB,OAAO,CAAC,iBAAiB;CAY5B"}
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Stmt1BindParams = void 0;
4
+ const constant_1 = require("../common/constant");
5
+ const wsError_1 = require("../common/wsError");
6
+ const taosResult_1 = require("../common/taosResult");
7
+ const utils_1 = require("../common/utils");
8
+ const wsColumnInfo_1 = require("./wsColumnInfo");
9
+ const wsParamsBase_1 = require("./wsParamsBase");
10
+ class Stmt1BindParams extends wsParamsBase_1.StmtBindParams {
11
+ constructor(precision) {
12
+ super(precision);
13
+ }
14
+ encode() {
15
+ return;
16
+ }
17
+ mergeParams(bindParams) {
18
+ return;
19
+ }
20
+ addParams(params, dataType, typeLen, columnType) {
21
+ if (!params || params.length == 0) {
22
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "StmtBindParams params is invalid!");
23
+ }
24
+ if (dataType === "number" ||
25
+ dataType === "bigint" ||
26
+ dataType === "boolean") {
27
+ this._params.push(this.encodeDigitColumns(params, dataType, typeLen, columnType));
28
+ }
29
+ else {
30
+ if (columnType === constant_1.TDengineTypeCode.NCHAR) {
31
+ this._params.push(this.encodeNcharColumn(params));
32
+ }
33
+ else {
34
+ this._params.push(this.encodeVarLengthColumn(params, columnType));
35
+ }
36
+ }
37
+ }
38
+ setTimestamp(params) {
39
+ if (!params || params.length == 0) {
40
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "SeTimestampColumn params is invalid!");
41
+ }
42
+ //computing bitmap length
43
+ let bitMapLen = (0, taosResult_1.bitmapLen)(params.length);
44
+ //Computing the length of data
45
+ let arrayBuffer = new ArrayBuffer(bitMapLen +
46
+ constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.TIMESTAMP] * params.length);
47
+ //bitmap get data range
48
+ let bitmapBuffer = new DataView(arrayBuffer);
49
+ //skip bitmap get data range
50
+ let dataBuffer = new DataView(arrayBuffer, bitMapLen);
51
+ if (this._rows > 0) {
52
+ if (this._rows !== params.length) {
53
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "wrong row length!");
54
+ }
55
+ }
56
+ else {
57
+ this._rows = params.length;
58
+ }
59
+ for (let i = 0; i < params.length; i++) {
60
+ if (!(0, utils_1.isEmpty)(params[i])) {
61
+ if (params[i] instanceof Date) {
62
+ let date = params[i];
63
+ //node only support milliseconds, need fill 0
64
+ if (this.precisionLength == constant_1.PrecisionLength["us"]) {
65
+ let ms = date.getTime() * 1000;
66
+ dataBuffer.setBigInt64(i * 8, BigInt(ms), true);
67
+ }
68
+ else if (this.precisionLength == constant_1.PrecisionLength["ns"]) {
69
+ let ns = date.getTime() * 1000 * 1000;
70
+ dataBuffer.setBigInt64(i * 8, BigInt(ns), true);
71
+ }
72
+ else {
73
+ dataBuffer.setBigInt64(i * 8, BigInt(date.getTime()), true);
74
+ }
75
+ }
76
+ else if (typeof params[i] == "bigint" ||
77
+ typeof params[i] == "number") {
78
+ let data;
79
+ if (typeof params[i] == "number") {
80
+ data = BigInt(params[i]);
81
+ }
82
+ else {
83
+ data = params[i];
84
+ }
85
+ //statistical bits of digit
86
+ let digit = this.countBigintDigits(data);
87
+ //check digit same table Precision
88
+ if (this.precisionLength == constant_1.PrecisionLength["ns"]) {
89
+ if (this.precisionLength <= digit) {
90
+ dataBuffer.setBigInt64(i * 8, data, true);
91
+ }
92
+ else {
93
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "SeTimestampColumn params precisionLength is invalid! param:=" +
94
+ params[i]);
95
+ }
96
+ }
97
+ else if (this.precisionLength == digit) {
98
+ dataBuffer.setBigInt64(i * 8, data, true);
99
+ }
100
+ else {
101
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "SeTimestampColumn params is invalid! param:=" +
102
+ params[i]);
103
+ }
104
+ }
105
+ }
106
+ else {
107
+ //set bitmap bit is null
108
+ let charOffset = (0, taosResult_1.getCharOffset)(i);
109
+ let nullVal = (0, taosResult_1.setBitmapNull)(dataBuffer.getInt8(charOffset), i);
110
+ bitmapBuffer.setInt8(charOffset, nullVal);
111
+ }
112
+ }
113
+ this._dataTotalLen += arrayBuffer.byteLength;
114
+ this._params.push(new wsColumnInfo_1.ColumnInfo([
115
+ constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.TIMESTAMP] *
116
+ params.length,
117
+ arrayBuffer,
118
+ ], constant_1.TDengineTypeCode.TIMESTAMP, constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.TIMESTAMP], this._rows));
119
+ }
120
+ encodeDigitColumns(params, dataType = "number", typeLen, columnType) {
121
+ let bitMapLen = (0, taosResult_1.bitmapLen)(params.length);
122
+ let arrayBuffer = new ArrayBuffer(typeLen * params.length + bitMapLen);
123
+ let bitmapBuffer = new DataView(arrayBuffer);
124
+ let dataBuffer = new DataView(arrayBuffer, bitMapLen);
125
+ if (this._rows > 0) {
126
+ if (this._rows !== params.length) {
127
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "wrong row length!");
128
+ }
129
+ }
130
+ else {
131
+ this._rows = params.length;
132
+ }
133
+ for (let i = 0; i < params.length; i++) {
134
+ if (!(0, utils_1.isEmpty)(params[i])) {
135
+ this.writeDataToBuffer(dataBuffer, params[i], dataType, typeLen, columnType, i);
136
+ }
137
+ else {
138
+ //set bitmap bit is null
139
+ let charOffset = (0, taosResult_1.getCharOffset)(i);
140
+ let nullVal = (0, taosResult_1.setBitmapNull)(bitmapBuffer.getUint8(charOffset), i);
141
+ bitmapBuffer.setInt8(charOffset, nullVal);
142
+ }
143
+ }
144
+ this._dataTotalLen += dataBuffer.buffer.byteLength;
145
+ return new wsColumnInfo_1.ColumnInfo([typeLen * params.length, dataBuffer.buffer], columnType, typeLen, this._rows);
146
+ }
147
+ encodeVarLengthColumn(params, columnType) {
148
+ let data = [];
149
+ let dataLength = 0;
150
+ //create params length buffer
151
+ let paramsLenBuffer = new ArrayBuffer(constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.INT] * params.length);
152
+ let paramsLenView = new DataView(paramsLenBuffer);
153
+ if (this._rows > 0) {
154
+ if (this._rows !== params.length) {
155
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "wrong row length!");
156
+ }
157
+ }
158
+ else {
159
+ this._rows = params.length;
160
+ }
161
+ for (let i = 0; i < params.length; i++) {
162
+ //get param length offset 4byte
163
+ let offset = constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.INT] * i;
164
+ if (!(0, utils_1.isEmpty)(params[i])) {
165
+ //save param length offset 4byte
166
+ paramsLenView.setInt32(offset, dataLength, true);
167
+ if (typeof params[i] == "string") {
168
+ //string TextEncoder
169
+ let encode = new TextEncoder();
170
+ let value = encode.encode(params[i]).buffer;
171
+ data.push(value);
172
+ //add offset length
173
+ dataLength +=
174
+ value.byteLength +
175
+ constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.SMALLINT];
176
+ }
177
+ else if (params[i] instanceof ArrayBuffer) {
178
+ //input arraybuffer, save not need encode
179
+ let value = params[i];
180
+ dataLength +=
181
+ value.byteLength +
182
+ constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.SMALLINT];
183
+ data.push(value);
184
+ }
185
+ else {
186
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "getColumString params is invalid! param_type:=" +
187
+ typeof params[i]);
188
+ }
189
+ }
190
+ else {
191
+ //set length -1, param is null
192
+ for (let j = 0; j < constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.INT]; j++) {
193
+ paramsLenView.setInt8(offset + j, 255);
194
+ }
195
+ }
196
+ }
197
+ this._dataTotalLen += paramsLenBuffer.byteLength + dataLength;
198
+ return new wsColumnInfo_1.ColumnInfo([
199
+ dataLength,
200
+ this.getBinaryColumnArrayBuffer(data, paramsLenView.buffer, dataLength),
201
+ ], columnType, 0, this._rows);
202
+ }
203
+ //splicing encode params to arraybuffer
204
+ getBinaryColumnArrayBuffer(data, paramsLenBuffer, dataLength) {
205
+ //create arraybuffer
206
+ let paramsBuffer = new ArrayBuffer(paramsLenBuffer.byteLength + dataLength);
207
+ //get length data range
208
+ const paramsUint8 = new Uint8Array(paramsBuffer);
209
+ const paramsLenView = new Uint8Array(paramsLenBuffer);
210
+ paramsUint8.set(paramsLenView, 0);
211
+ //get data range
212
+ const paramsView = new DataView(paramsBuffer, paramsLenBuffer.byteLength);
213
+ let offset = 0;
214
+ for (let i = 0; i < data.length; i++) {
215
+ //save param field length
216
+ paramsView.setInt16(offset, data[i].byteLength, true);
217
+ const dataView = new DataView(data[i]);
218
+ //save data
219
+ for (let j = 0; j < data[i].byteLength; j++) {
220
+ paramsView.setUint8(offset + 2 + j, dataView.getUint8(j));
221
+ }
222
+ offset += data[i].byteLength + 2;
223
+ }
224
+ return paramsBuffer;
225
+ }
226
+ //encode nchar type params
227
+ encodeNcharColumn(params) {
228
+ let data = [];
229
+ let dataLength = 0;
230
+ let indexBuffer = new ArrayBuffer(constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.INT] * params.length);
231
+ let indexView = new DataView(indexBuffer);
232
+ if (this._rows > 0) {
233
+ if (this._rows !== params.length) {
234
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "wrong row length!");
235
+ }
236
+ }
237
+ else {
238
+ this._rows = params.length;
239
+ }
240
+ for (let i = 0; i < params.length; i++) {
241
+ let offset = constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.INT] * i;
242
+ if (!(0, utils_1.isEmpty)(params[i])) {
243
+ indexView.setInt32(offset, dataLength, true);
244
+ if (typeof params[i] == "string") {
245
+ let codes = [];
246
+ let strNcharParams = params[i];
247
+ for (let j = 0; j < params[i].length; j++) {
248
+ //get char, cn char need 3~4 byte
249
+ codes.push(strNcharParams.charCodeAt(j));
250
+ }
251
+ let ncharBuffer = new ArrayBuffer(codes.length * 4);
252
+ let ncharView = new DataView(ncharBuffer);
253
+ for (let j = 0; j < codes.length; j++) {
254
+ //1char, save into uint32
255
+ ncharView.setUint32(j * 4, codes[j], true);
256
+ }
257
+ data.push(ncharBuffer);
258
+ dataLength +=
259
+ codes.length * 4 +
260
+ constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.SMALLINT];
261
+ }
262
+ else if (params[i] instanceof ArrayBuffer) {
263
+ let value = params[i];
264
+ dataLength +=
265
+ value.byteLength +
266
+ constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.SMALLINT];
267
+ data.push(value);
268
+ }
269
+ else {
270
+ throw new wsError_1.TaosError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "getColumString params is invalid! param_type:=" +
271
+ typeof params[i]);
272
+ }
273
+ }
274
+ else {
275
+ //set length -1, param is null
276
+ for (let j = 0; j < constant_1.TDengineTypeLength[constant_1.TDengineTypeCode.INT]; j++) {
277
+ indexView.setInt8(offset + j, 255);
278
+ }
279
+ }
280
+ }
281
+ this._dataTotalLen += indexBuffer.byteLength + dataLength;
282
+ return new wsColumnInfo_1.ColumnInfo([
283
+ dataLength,
284
+ this.getBinaryColumnArrayBuffer(data, indexView.buffer, dataLength),
285
+ ], constant_1.TDengineTypeCode.NCHAR, 0, this._rows);
286
+ }
287
+ countBigintDigits(numeral) {
288
+ if (numeral === 0n) {
289
+ return 1;
290
+ }
291
+ let count = 0;
292
+ let temp = numeral;
293
+ while (temp !== 0n) {
294
+ temp /= 10n;
295
+ count++;
296
+ }
297
+ return count;
298
+ }
299
+ }
300
+ exports.Stmt1BindParams = Stmt1BindParams;
@@ -0,0 +1,14 @@
1
+ import { IDataEncoder, StmtBindParams } from "./wsParamsBase";
2
+ import { StmtFieldInfo } from "./wsProto";
3
+ export declare class Stmt2BindParams extends StmtBindParams implements IDataEncoder {
4
+ private _fields;
5
+ protected paramIndex: number;
6
+ constructor(paramsCount?: number, precision?: number, fields?: Array<StmtFieldInfo>);
7
+ addParams(params: any[], dataType: string, typeLen: number, columnType: number): void;
8
+ mergeParams(bindParams: StmtBindParams): void;
9
+ encode(): void;
10
+ private encodeVarColumns;
11
+ private encodeDigitColumns;
12
+ private encodeTimestampColumn;
13
+ }
14
+ //# sourceMappingURL=wsParams2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsParams2.d.ts","sourceRoot":"","sources":["../../../src/stmt/wsParams2.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAI9D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,qBAAa,eAAgB,SAAQ,cAAe,YAAW,YAAY;IACvE,OAAO,CAAC,OAAO,CAAuB;IACtC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAK;gBAE7B,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAMjC,SAAS,CACL,MAAM,EAAE,GAAG,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACnB,IAAI;IA6DP,WAAW,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;IA0B7C,MAAM,IAAI,IAAI;IA0Dd,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,kBAAkB;IAwD1B,OAAO,CAAC,qBAAqB;CA2ChC"}