• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

taosdata / TDengine / #3548

04 Dec 2024 01:03PM UTC coverage: 59.846% (-0.8%) from 60.691%
#3548

push

travis-ci

web-flow
Merge pull request #29033 from taosdata/fix/calculate-vnode-memory-used

fix/calculate-vnode-memory-used

118484 of 254183 branches covered (46.61%)

Branch coverage included in aggregate %.

199691 of 277471 relevant lines covered (71.97%)

18794141.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.56
/source/libs/nodes/src/nodesMsgFuncs.c
1
/*
2
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
3
 *
4
 * This program is free software: you can use, redistribute, and/or modify
5
 * it under the terms of the GNU Affero General Public License, version 3
6
 * or later ("AGPL"), as published by the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
 * FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * You should have received a copy of the GNU Affero General Public License
13
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14
 */
15

16
#include "nodesUtil.h"
17
#include "plannodes.h"
18
#include "tdatablock.h"
19

20
#ifndef htonll
21

22
#define htonll(x)                                                                                   \
23
  (((int64_t)x & 0x00000000000000ff) << 7 * 8) | (((int64_t)x & 0x000000000000ff00) << 5 * 8) |     \
24
      (((int64_t)x & 0x0000000000ff0000) << 3 * 8) | (((int64_t)x & 0x00000000ff000000) << 1 * 8) | \
25
      (((int64_t)x & 0x000000ff00000000) >> 1 * 8) | (((int64_t)x & 0x0000ff0000000000) >> 3 * 8) | \
26
      (((int64_t)x & 0x00ff000000000000) >> 5 * 8) | (((int64_t)x & 0xff00000000000000) >> 7 * 8)
27

28
#define ntohll(x) htonll(x)
29

30
#endif
31

32
#define NODES_MSG_DEFAULT_LEN 1024
33
#define TLV_TYPE_ARRAY_ELEM   0
34

35
#define tlvForEach(pDecoder, pTlv, code) \
36
  while (TSDB_CODE_SUCCESS == code && TSDB_CODE_SUCCESS == (code = tlvGetNextTlv(pDecoder, &pTlv)) && NULL != pTlv)
37

38
#pragma pack(push, 1)
39

40
typedef struct STlv {
41
  int16_t type;
42
  int32_t len;
43
  char    value[0];
44
} STlv;
45

46
#pragma pack(pop)
47

48
typedef struct STlvEncoder {
49
  int32_t allocSize;
50
  int32_t offset;
51
  char*   pBuf;
52
  int32_t tlvCount;
53
} STlvEncoder;
54

55
typedef struct STlvDecoder {
56
  int32_t     bufSize;
57
  int32_t     offset;
58
  const char* pBuf;
59
} STlvDecoder;
60

61
typedef int32_t (*FToMsg)(const void* pObj, STlvEncoder* pEncoder);
62
typedef int32_t (*FToObject)(STlvDecoder* pDecoder, void* pObj);
63
typedef int32_t (*FMakeObject)(int16_t type, SNode** ppNode);
64
typedef int32_t (*FSetObject)(STlv* pTlv, void* pObj);
65

66
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder);
67
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder);
68
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder);
69

70
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj);
71
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj);
72
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj);
73
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj);
74
static int32_t msgToSArray(STlv* pTlv, void** pObj);
75

76

77
static int32_t initTlvEncoder(STlvEncoder* pEncoder) {
1,658,860✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
1,658,860✔
79
  pEncoder->offset = 0;
1,658,860✔
80
  pEncoder->tlvCount = 0;
1,658,860✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
1,658,860✔
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
1,660,914!
83
}
84

85
static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); }
1,657,426✔
86

87
static void endTlvEncode(STlvEncoder* pEncoder, char** pMsg, int32_t* pLen) {
1,657,381✔
88
  *pMsg = pEncoder->pBuf;
1,657,381✔
89
  pEncoder->pBuf = NULL;
1,657,381✔
90
  *pLen = pEncoder->offset;
1,657,381✔
91
}
1,657,381✔
92

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
127,598,660✔
94
  int32_t tlvLen = sizeof(STlv) + len;
127,598,660✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
127,598,660✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
634,895✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
634,895✔
98
    if (NULL == pNewBuf) {
636,027✔
99
      return terrno;
5✔
100
    }
101
    pEncoder->pBuf = pNewBuf;
636,022✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
127,599,787✔
104
  pTlv->type = htons(type);
127,599,787✔
105
  pTlv->len = htonl(len);
127,599,787✔
106
  memcpy(pTlv->value, pValue, len);
127,599,787✔
107
  pEncoder->offset += tlvLen;
127,599,787✔
108
  ++(pEncoder->tlvCount);
127,599,787✔
109
  return TSDB_CODE_SUCCESS;
127,599,787✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
407,623,959✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
407,623,959✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
571,651✔
115
    if (NULL == pNewBuf) {
573,009!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
573,014✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
573,014✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
407,625,322✔
122
  pEncoder->offset += len;
407,625,322✔
123
  return TSDB_CODE_SUCCESS;
407,625,322✔
124
}
125

126
static int32_t tlvEncodeI8(STlvEncoder* pEncoder, int16_t type, int8_t value) {
11,306,233✔
127
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
11,306,233✔
128
}
129

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
42,987,989✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
42,987,989✔
132
}
133

134
static int32_t tlvEncodeI16(STlvEncoder* pEncoder, int16_t type, int16_t value) {
×
135
  value = htons(value);
×
136
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
×
137
}
138

139
static int32_t tlvEncodeValueI16(STlvEncoder* pEncoder, int16_t value) {
117,944,251✔
140
  value = htons(value);
117,944,251✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
117,944,251✔
142
}
143

144
static int32_t tlvEncodeI32(STlvEncoder* pEncoder, int16_t type, int32_t value) {
32,146,997✔
145
  value = htonl(value);
32,146,997✔
146
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
32,146,997✔
147
}
148

149
static int32_t tlvEncodeValueI32(STlvEncoder* pEncoder, int32_t value) {
50,651,257✔
150
  value = htonl(value);
50,651,257✔
151
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
50,651,257✔
152
}
153

154
static int32_t tlvEncodeI64(STlvEncoder* pEncoder, int16_t type, int64_t value) {
5,561,498✔
155
  value = htonll(value);
5,561,498✔
156
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
5,561,498✔
157
}
158

159
static int32_t tlvEncodeValueI64(STlvEncoder* pEncoder, int64_t value) {
7,213,184✔
160
  value = htonll(value);
7,213,184✔
161
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
7,213,184✔
162
}
163

164
static int32_t tlvEncodeU8(STlvEncoder* pEncoder, int16_t type, uint8_t value) {
20,559,385✔
165
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
20,559,385✔
166
}
167

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
56,597,772✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
56,597,772✔
170
}
171

172
static int32_t tlvEncodeU16(STlvEncoder* pEncoder, int16_t type, uint16_t value) {
34,055✔
173
  value = htons(value);
34,055✔
174
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
34,055✔
175
}
176

177
static int32_t tlvEncodeValueU16(STlvEncoder* pEncoder, uint16_t value) {
2,123,001✔
178
  value = htons(value);
2,123,001✔
179
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,123,001✔
180
}
181

182
static int32_t tlvEncodeU64(STlvEncoder* pEncoder, int16_t type, uint64_t value) {
2,556,059✔
183
  value = htonll(value);
2,556,059✔
184
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
2,556,059✔
185
}
186

187
static int32_t tlvEncodeValueU64(STlvEncoder* pEncoder, uint64_t value) {
14,236,515✔
188
  value = htonll(value);
14,236,515✔
189
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
14,236,515✔
190
}
191

192
static int32_t tlvEncodeDouble(STlvEncoder* pEncoder, int16_t type, double value) {
209,076✔
193
  int64_t temp = *(int64_t*)&value;
209,076✔
194
  temp = htonll(temp);
209,076✔
195
  return tlvEncodeImpl(pEncoder, type, &temp, sizeof(temp));
209,076✔
196
}
197

198
static int32_t tlvEncodeValueDouble(STlvEncoder* pEncoder, double value) {
1,171,530✔
199
  int64_t temp = *(int64_t*)&value;
1,171,530✔
200
  temp = htonll(temp);
1,171,530✔
201
  return tlvEncodeValueImpl(pEncoder, &temp, sizeof(temp));
1,171,530✔
202
}
203

204
static int32_t tlvEncodeEnum(STlvEncoder* pEncoder, int16_t type, int32_t value) {
12,322,221✔
205
  value = htonl(value);
12,322,221✔
206
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
12,322,221✔
207
}
208

209
static int32_t tlvEncodeValueEnum(STlvEncoder* pEncoder, int32_t value) {
11,652,328✔
210
  value = htonl(value);
11,652,328✔
211
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
11,652,328✔
212
}
213

214
static int32_t tlvEncodeBool(STlvEncoder* pEncoder, int16_t type, int8_t value) {
34,892,324✔
215
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
34,892,324✔
216
}
217

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
76,764,791✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
76,764,791✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
10,640,133✔
223
  if (NULL == pValue) {
10,640,133✔
224
    return TSDB_CODE_SUCCESS;
719,846✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
9,920,287✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
44,765,145✔
230
  int16_t len = strlen(pValue);
44,765,145✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
44,765,145✔
232
  if (TSDB_CODE_SUCCESS == code) {
44,757,902!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
44,763,013✔
234
  }
235
  return code;
44,742,105✔
236
}
237

238
static int32_t tlvEncodeBinary(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
330,382✔
239
  return tlvEncodeImpl(pEncoder, type, pValue, len);
330,382✔
240
}
241

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
177,897,168✔
243
  if (NULL == pObj) {
177,897,168✔
244
    return TSDB_CODE_SUCCESS;
23,157,953✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
154,739,215✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
513,499✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
513,499✔
250
    if (NULL == pNewBuf) {
514,204✔
251
      return terrno;
7✔
252
    }
253
    pEncoder->pBuf = pNewBuf;
514,197✔
254
  }
255

256
  int32_t start = pEncoder->offset;
154,739,913✔
257
  pEncoder->offset += sizeof(STlv);
154,739,913✔
258
  int32_t code = func(pObj, pEncoder);
154,739,913✔
259
  if (TSDB_CODE_SUCCESS == code) {
155,647,792!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
155,929,618✔
261
    pTlv->type = htons(type);
155,929,618✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
155,929,618✔
263
  }
264
  ++(pEncoder->tlvCount);
155,647,792✔
265
  return code;
155,647,792✔
266
}
267

268
static int32_t tlvEncodeObjArray(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pArray, int32_t itemSize,
32,835✔
269
                                 int32_t num) {
270
  int32_t code = TSDB_CODE_SUCCESS;
32,835✔
271
  if (num > 0) {
32,835!
272
    int32_t start = pEncoder->offset;
32,835✔
273
    pEncoder->offset += sizeof(STlv);
32,835✔
274
    for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
66,890✔
275
      code = tlvEncodeObj(pEncoder, TLV_TYPE_ARRAY_ELEM, func, (const char*)pArray + i * itemSize);
34,050✔
276
    }
277
    if (TSDB_CODE_SUCCESS == code) {
32,840!
278
      STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
32,842✔
279
      pTlv->type = htons(type);
32,842✔
280
      pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
32,842✔
281
    }
282
  }
283
  return code;
32,840✔
284
}
285

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
2,514,547✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
2,514,547✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
4,637,915✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
2,123,072✔
291
  }
292
  return code;
2,514,843✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
2,147,483,647✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
2,147,483,647✔
297
    *pTlv = NULL;
1,113,478,019✔
298
    return TSDB_CODE_SUCCESS;
1,113,478,019✔
299
  }
300

301
  *pTlv = (STlv*)(pDecoder->pBuf + pDecoder->offset);
2,147,483,647✔
302
  (*pTlv)->type = ntohs((*pTlv)->type);
2,147,483,647✔
303
  (*pTlv)->len = ntohl((*pTlv)->len);
2,147,483,647✔
304
  if ((*pTlv)->len + pDecoder->offset > pDecoder->bufSize) {
2,147,483,647!
305
    return TSDB_CODE_FAILED;
×
306
  }
307
  pDecoder->offset += sizeof(STlv) + (*pTlv)->len;
2,147,483,647✔
308
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
309
}
310

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
518,633,264✔
312

313
static int32_t tlvDecodeImpl(STlv* pTlv, void* pValue, int32_t len) {
2,147,483,647✔
314
  if (pTlv->len != len) {
2,147,483,647!
315
    return TSDB_CODE_FAILED;
×
316
  }
317
  memcpy(pValue, pTlv->value, len);
2,147,483,647✔
318
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
319
}
320

321
static int32_t tlvDecodeValueImpl(STlvDecoder* pDecoder, void* pValue, int32_t len) {
2,147,483,647✔
322
  // compatible with lower version messages
323
  if (pDecoder->bufSize == pDecoder->offset) {
2,147,483,647!
324
    memset(pValue, 0, len);
×
325
    return TSDB_CODE_SUCCESS;
×
326
  }
327
  if (len > pDecoder->bufSize - pDecoder->offset) {
2,147,483,647!
328
    return TSDB_CODE_FAILED;
×
329
  }
330
  memcpy(pValue, pDecoder->pBuf + pDecoder->offset, len);
2,147,483,647✔
331
  pDecoder->offset += len;
2,147,483,647✔
332
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
333
}
334

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
1,008,253,169✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
860,649,727✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
860,649,727✔
339
}
340

341
static int32_t tlvDecodeI16(STlv* pTlv, int16_t* pValue) {
×
342
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
×
343
  if (TSDB_CODE_SUCCESS == code) {
×
344
    *pValue = ntohs(*pValue);
×
345
  }
346
  return code;
×
347
}
348

349
static int32_t tlvDecodeValueI16(STlvDecoder* pDecoder, int16_t* pValue) {
922,121,982✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
922,121,982✔
351
  if (TSDB_CODE_SUCCESS == code) {
919,028,650!
352
    *pValue = ntohs(*pValue);
950,070,993✔
353
  }
354
  return code;
919,028,650✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
631,105,530✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
631,105,530✔
359
  if (TSDB_CODE_SUCCESS == code) {
625,897,634!
360
    *pValue = ntohl(*pValue);
626,795,556✔
361
  }
362
  return code;
625,897,634✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
414,512,621✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
414,512,621✔
367
  if (TSDB_CODE_SUCCESS == code) {
413,444,096!
368
    *pValue = ntohl(*pValue);
414,053,666✔
369
  }
370
  return code;
413,444,096✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
233,669,529✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
233,669,529✔
375
  if (TSDB_CODE_SUCCESS == code) {
233,081,464!
376
    *pValue = ntohll(*pValue);
233,373,720✔
377
  }
378
  return code;
233,081,464✔
379
}
380

381
static int32_t tlvDecodeValueI64(STlvDecoder* pDecoder, int64_t* pValue) {
38,108,745✔
382
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
38,108,745✔
383
  if (TSDB_CODE_SUCCESS == code) {
38,102,126!
384
    *pValue = ntohll(*pValue);
38,107,252✔
385
  }
386
  return code;
38,102,126✔
387
}
388

389
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
508,360,547✔
390

391
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
425,972,244✔
392
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
425,972,244✔
393
}
394

395
static int32_t tlvDecodeU16(STlv* pTlv, uint16_t* pValue) {
1,139,562✔
396
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
1,139,562✔
397
  if (TSDB_CODE_SUCCESS == code) {
1,139,483!
398
    *pValue = ntohs(*pValue);
1,141,919✔
399
  }
400
  return code;
1,139,483✔
401
}
402

403
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
10,694,923✔
404
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
10,694,923✔
405
  if (TSDB_CODE_SUCCESS == code) {
10,693,207!
406
    *pValue = ntohs(*pValue);
10,706,201✔
407
  }
408
  return code;
10,693,207✔
409
}
410

411
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
11,829,252✔
412
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
11,829,252✔
413
  if (TSDB_CODE_SUCCESS == code) {
11,826,089!
414
    *pValue = ntohll(*pValue);
11,826,962✔
415
  }
416
  return code;
11,826,089✔
417
}
418

419
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
104,340,101✔
420
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
104,340,101✔
421
  if (TSDB_CODE_SUCCESS == code) {
104,235,978!
422
    *pValue = ntohll(*pValue);
104,291,488✔
423
  }
424
  return code;
104,235,978✔
425
}
426

427
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
2,230,523✔
428
  int64_t temp = 0;
2,230,523✔
429
  int32_t code = tlvDecodeI64(pTlv, &temp);
2,230,523✔
430
  if (TSDB_CODE_SUCCESS == code) {
2,230,945!
431
    *pValue = *(double*)&temp;
2,231,309✔
432
  }
433
  return code;
2,230,945✔
434
}
435

436
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
4,628,472✔
437
  int64_t temp = 0;
4,628,472✔
438
  int32_t code = tlvDecodeValueI64(pDecoder, &temp);
4,628,472✔
439
  if (TSDB_CODE_SUCCESS == code) {
4,629,327!
440
    *pValue = *(double*)&temp;
4,629,838✔
441
  }
442
  return code;
4,629,327✔
443
}
444

445
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
1,447,352,260✔
446
  switch (len) {
1,447,352,260!
447
    case 1:
1,291,445,879✔
448
      *(int8_t*)pValue = value;
1,291,445,879✔
449
      break;
1,291,445,879✔
450
    case 2:
×
451
      *(int16_t*)pValue = value;
×
452
      break;
×
453
    case 4:
165,320,168✔
454
      *(int32_t*)pValue = value;
165,320,168✔
455
      break;
165,320,168✔
456
    default:
×
457
      return TSDB_CODE_FAILED;
×
458
  }
459
  return TSDB_CODE_SUCCESS;
1,456,766,047✔
460
}
461

462
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
749,623,279✔
463
  int8_t  value = 0;
749,623,279✔
464
  int32_t code = tlvDecodeI8(pTlv, &value);
749,623,279✔
465
  if (TSDB_CODE_SUCCESS == code) {
746,357,827!
466
    code = convertIntegerType(value, pValue, sizeof(bool));
746,791,945✔
467
  }
468
  return code;
748,884,519✔
469
}
470

471
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
554,984,096✔
472
  int8_t  value = 0;
554,984,096✔
473
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
554,984,096✔
474
  if (TSDB_CODE_SUCCESS == code) {
554,742,725!
475
    code = convertIntegerType(value, pValue, sizeof(bool));
554,919,573✔
476
  }
477
  return code;
555,072,579✔
478
}
479

480
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
75,364,363✔
481
  int32_t value = 0;
75,364,363✔
482
  int32_t code = tlvDecodeI32(pTlv, &value);
75,364,363✔
483
  if (TSDB_CODE_SUCCESS == code) {
75,353,245!
484
    code = convertIntegerType(value, pValue, len);
75,356,755✔
485
  }
486
  return code;
75,354,496✔
487
}
488

489
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
90,649,139✔
490
  int32_t value = 0;
90,649,139✔
491
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
90,649,139✔
492
  if (TSDB_CODE_SUCCESS == code) {
90,328,805!
493
    code = convertIntegerType(value, pValue, len);
90,335,797✔
494
  }
495
  return code;
90,321,775✔
496
}
497

498
static int32_t tlvDecodeCStr(STlv* pTlv, char* pValue, int32_t size) {
23,825,346✔
499
  if (pTlv->len > size - 1) {
23,825,346!
500
    return TSDB_CODE_FAILED;
×
501
  }
502
  memcpy(pValue, pTlv->value, pTlv->len);
23,825,346✔
503
  return TSDB_CODE_SUCCESS;
23,825,346✔
504
}
505

506
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
352,694,144✔
507
  int16_t len = 0;
352,694,144✔
508
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
352,694,144✔
509
  if (TSDB_CODE_SUCCESS == code) {
356,837,773!
510
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
356,966,986✔
511
  }
512
  return code;
354,040,845✔
513
}
514

515
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
219,770,086✔
516
  *pValue = taosStrndup(pTlv->value, pTlv->len);
219,770,086✔
517
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
233,908,829!
518
}
519

520
static int32_t tlvDecodeDynBinary(STlv* pTlv, void** pValue) {
12✔
521
  *pValue = taosMemoryMalloc(pTlv->len);
12✔
522
  if (NULL == *pValue) {
12!
523
    return terrno;
×
524
  }
525
  memcpy(*pValue, pTlv->value, pTlv->len);
12✔
526
  return TSDB_CODE_SUCCESS;
12✔
527
}
528

529
static int32_t tlvDecodeBinary(STlv* pTlv, void* pValue) {
2,709,685✔
530
  memcpy(pValue, pTlv->value, pTlv->len);
2,709,685✔
531
  return TSDB_CODE_SUCCESS;
2,709,685✔
532
}
533

534
static int32_t tlvDecodeObjFromTlv(STlv* pTlv, FToObject func, void* pObj) {
1,404,247,926✔
535
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
1,404,247,926✔
536
  return func(&decoder, pObj);
1,404,247,926✔
537
}
538

539
static int32_t tlvDecodeObj(STlvDecoder* pDecoder, FToObject func, void* pObj) {
×
540
  STlv*   pTlv = NULL;
×
541
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
×
542
  if (TSDB_CODE_SUCCESS == code) {
×
543
    code = tlvDecodeObjFromTlv(pTlv, func, pObj);
×
544
  }
545
  return code;
×
546
}
547

548
static int32_t tlvDecodeObjArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize) {
1,138,566✔
549
  int32_t code = TSDB_CODE_SUCCESS;
1,138,566✔
550
  int32_t i = 0;
1,138,566✔
551
  STlv*   pTlv = NULL;
1,138,566✔
552
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
2,278,763!
553
  return code;
1,138,748✔
554
}
555

556
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
12,656,131✔
557
                                   int32_t* pNum) {
558
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
12,656,131✔
559
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
23,360,974✔
560
    code = func(pDecoder, (char*)pArray + i * itemSize);
10,693,613✔
561
  }
562
  return code;
12,667,361✔
563
}
564

565
static int32_t tlvDecodeObjArrayFromTlv(STlv* pTlv, FToObject func, void* pArray, int32_t itemSize) {
1,138,626✔
566
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
1,138,626✔
567
  return tlvDecodeObjArray(&decoder, func, pArray, itemSize);
1,138,626✔
568
}
569

570
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
588,255,960✔
571
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
588,255,960✔
572
  if (NULL == *pObj) {
586,851,875!
573
    return code;
×
574
  }
575
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
586,851,875✔
576
}
577

578
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
590,992,638✔
579
  STlv*   pTlv = NULL;
590,992,638✔
580
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
590,992,638✔
581
  if (TSDB_CODE_SUCCESS == code) {
588,610,603!
582
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
588,873,821✔
583
  }
584
  return code;
579,864,047✔
585
}
586

587
enum { DATA_TYPE_CODE_TYPE = 1, DATA_TYPE_CODE_PRECISION, DATA_TYPE_CODE_SCALE, DATA_TYPE_CODE_BYTES };
588

589
static int32_t dataTypeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
24,881,874✔
590
  const SDataType* pNode = (const SDataType*)pObj;
24,881,874✔
591

592
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
24,881,874✔
593
  if (TSDB_CODE_SUCCESS == code) {
24,823,199!
594
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
24,824,480✔
595
  }
596
  if (TSDB_CODE_SUCCESS == code) {
24,739,652!
597
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
24,745,652✔
598
  }
599
  if (TSDB_CODE_SUCCESS == code) {
24,629,633!
600
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
24,651,599✔
601
  }
602

603
  return code;
24,669,242✔
604
}
605

606
static int32_t dataTypeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,691,258✔
607
  const SDataType* pNode = (const SDataType*)pObj;
9,691,258✔
608

609
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
9,691,258✔
610
  if (TSDB_CODE_SUCCESS == code) {
9,688,780!
611
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
9,689,187✔
612
  }
613
  if (TSDB_CODE_SUCCESS == code) {
9,683,399!
614
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
9,684,079✔
615
  }
616
  if (TSDB_CODE_SUCCESS == code) {
9,677,410!
617
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
9,678,901✔
618
  }
619

620
  return code;
9,684,693✔
621
}
622

623
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
197,692,722✔
624
  SDataType* pNode = (SDataType*)pObj;
197,692,722✔
625

626
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
197,692,722✔
627
  if (TSDB_CODE_SUCCESS == code) {
197,335,440!
628
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
197,361,275✔
629
  }
630
  if (TSDB_CODE_SUCCESS == code) {
196,263,312!
631
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
196,278,658✔
632
  }
633
  if (TSDB_CODE_SUCCESS == code) {
195,476,222!
634
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
195,545,606✔
635
  }
636

637
  return code;
195,633,101✔
638
}
639

640
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
263,006,026✔
641
  SDataType* pNode = (SDataType*)pObj;
263,006,026✔
642

643
  int32_t code = TSDB_CODE_SUCCESS;
263,006,026✔
644
  STlv*   pTlv = NULL;
263,006,026✔
645
  tlvForEach(pDecoder, pTlv, code) {
1,287,833,029!
646
    switch (pTlv->type) {
1,029,392,187!
647
      case DATA_TYPE_CODE_TYPE:
260,988,997✔
648
        code = tlvDecodeI8(pTlv, &pNode->type);
260,988,997✔
649
        break;
258,572,951✔
650
      case DATA_TYPE_CODE_PRECISION:
257,552,927✔
651
        code = tlvDecodeU8(pTlv, &pNode->precision);
257,552,927✔
652
        break;
256,070,882✔
653
      case DATA_TYPE_CODE_SCALE:
255,965,303✔
654
        code = tlvDecodeU8(pTlv, &pNode->scale);
255,965,303✔
655
        break;
254,843,439✔
656
      case DATA_TYPE_CODE_BYTES:
254,884,960✔
657
        code = tlvDecodeI32(pTlv, &pNode->bytes);
254,884,960✔
658
        break;
255,339,731✔
659
      default:
×
660
        break;
×
661
    }
662
  }
663

664
  return code;
257,521,432✔
665
}
666

667
enum { EXPR_CODE_RES_TYPE = 1 };
668

669
static int32_t exprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,694,476✔
670
  const SExprNode* pNode = (const SExprNode*)pObj;
9,694,476✔
671
  return tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
9,694,476✔
672
}
673

674
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
263,292,439✔
675
  SExprNode* pNode = (SExprNode*)pObj;
263,292,439✔
676

677
  int32_t code = TSDB_CODE_SUCCESS;
263,292,439✔
678
  STlv*   pTlv = NULL;
263,292,439✔
679
  tlvForEach(pDecoder, pTlv, code) {
518,685,851!
680
    switch (pTlv->type) {
263,357,468!
681
      case EXPR_CODE_RES_TYPE:
263,357,468✔
682
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
263,357,468✔
683
        break;
255,393,412✔
684
      default:
×
685
        break;
×
686
    }
687
  }
688

689
  return code;
251,651,657✔
690
}
691

692
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
693

694
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
10,075,573✔
695
  const SColumnNode* pNode = (const SColumnNode*)pObj;
10,075,573✔
696

697
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
10,075,573✔
698
  if (TSDB_CODE_SUCCESS == code) {
10,013,792!
699
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
10,014,221✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
10,007,811!
702
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
10,008,690✔
703
  }
704
  if (TSDB_CODE_SUCCESS == code) {
10,000,994!
705
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
10,002,327✔
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
10,008,310!
708
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
10,009,877✔
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
10,003,763!
711
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
10,005,482✔
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
10,003,325!
714
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
10,005,432✔
715
  }
716
  if (TSDB_CODE_SUCCESS == code) {
9,996,107!
717
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
9,998,951✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
9,995,594!
720
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
9,999,252✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
9,992,187!
723
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
9,998,336✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
10,012,003!
726
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
10,020,292✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
10,017,620!
729
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
10,026,268✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
10,016,598!
732
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
10,025,305✔
733
  }  
734
  if (TSDB_CODE_SUCCESS == code) {
9,993,272!
735
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
10,005,015✔
736
  }  
737
  return code;
10,004,809✔
738
}
739

740
static int32_t columnNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10,085,562✔
741
  return tlvEncodeObj(pEncoder, COLUMN_CODE_INLINE_ATTRS, columnNodeInlineToMsg, pObj);
10,085,562✔
742
}
743

744
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
82,354,016✔
745
  SColumnNode* pNode = (SColumnNode*)pObj;
82,354,016✔
746

747
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
82,354,016✔
748
  if (TSDB_CODE_SUCCESS == code) {
82,021,866!
749
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
82,027,511✔
750
  }
751
  if (TSDB_CODE_SUCCESS == code) {
81,967,852✔
752
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
81,966,551✔
753
  }
754
  if (TSDB_CODE_SUCCESS == code) {
82,068,207!
755
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
82,081,294✔
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
82,894,515!
758
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
82,921,165✔
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
82,513,207!
761
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
82,544,778✔
762
  }
763
  if (TSDB_CODE_SUCCESS == code) {
82,527,364!
764
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
82,556,431✔
765
  }
766
  if (TSDB_CODE_SUCCESS == code) {
82,579,966!
767
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
82,613,121✔
768
  }
769
  if (TSDB_CODE_SUCCESS == code) {
82,630,168!
770
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
82,667,039✔
771
  }
772
  if (TSDB_CODE_SUCCESS == code) {
82,681,554!
773
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
82,722,396✔
774
  }
775
  if (TSDB_CODE_SUCCESS == code) {
82,923,825!
776
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
82,944,944✔
777
  }
778
  if (TSDB_CODE_SUCCESS == code) {
82,937,494!
779
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
82,971,428✔
780
  }
781
  if (TSDB_CODE_SUCCESS == code) {
82,591,293!
782
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
82,629,417✔
783
  }  
784
  if (TSDB_CODE_SUCCESS == code) {
82,448,029!
785
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
82,496,126✔
786
  }  
787
  return code;
82,926,138✔
788
}
789

790
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
82,420,802✔
791
  SColumnNode* pNode = (SColumnNode*)pObj;
82,420,802✔
792

793
  int32_t code = TSDB_CODE_SUCCESS;
82,420,802✔
794
  STlv*   pTlv = NULL;
82,420,802✔
795
  tlvForEach(pDecoder, pTlv, code) {
165,257,942!
796
    switch (pTlv->type) {
82,376,811!
797
      case COLUMN_CODE_INLINE_ATTRS:
82,376,811✔
798
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
82,376,811✔
799
        break;
82,837,140✔
800
      default:
×
801
        break;
×
802
    }
803
  }
804

805
  return code;
82,610,815✔
806
}
807

808
enum {
809
  VALUE_CODE_EXPR_BASE = 1,
810
  VALUE_CODE_LITERAL,
811
  VALUE_CODE_FLAG,
812
  VALUE_CODE_TRANSLATE,
813
  VALUE_CODE_NOT_RESERVED,
814
  VALUE_CODE_IS_NULL,
815
  VALUE_CODE_DATUM
816
};
817

818
static int32_t datumToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,107,311✔
819
  const SValueNode* pNode = (const SValueNode*)pObj;
5,107,311✔
820

821
  int32_t code = TSDB_CODE_SUCCESS;
5,107,311✔
822
  switch (pNode->node.resType.type) {
5,107,311!
823
    case TSDB_DATA_TYPE_NULL:
×
824
      break;
×
825
    case TSDB_DATA_TYPE_BOOL:
68,382✔
826
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
68,382✔
827
      break;
68,374✔
828
    case TSDB_DATA_TYPE_TINYINT:
4,501,707✔
829
    case TSDB_DATA_TYPE_SMALLINT:
830
    case TSDB_DATA_TYPE_INT:
831
    case TSDB_DATA_TYPE_BIGINT:
832
    case TSDB_DATA_TYPE_TIMESTAMP:
833
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
4,501,707✔
834
      break;
4,502,701✔
835
    case TSDB_DATA_TYPE_UTINYINT:
123✔
836
    case TSDB_DATA_TYPE_USMALLINT:
837
    case TSDB_DATA_TYPE_UINT:
838
    case TSDB_DATA_TYPE_UBIGINT:
839
      code = tlvEncodeU64(pEncoder, VALUE_CODE_DATUM, pNode->datum.u);
123✔
840
      break;
123✔
841
    case TSDB_DATA_TYPE_FLOAT:
209,046✔
842
    case TSDB_DATA_TYPE_DOUBLE:
843
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
209,046✔
844
      break;
209,137✔
845
    case TSDB_DATA_TYPE_VARCHAR:
330,184✔
846
    case TSDB_DATA_TYPE_VARBINARY:
847
    case TSDB_DATA_TYPE_NCHAR:
848
    case TSDB_DATA_TYPE_GEOMETRY:
849
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, varDataTLen(pNode->datum.p));
330,184✔
850
      break;
330,241✔
851
    case TSDB_DATA_TYPE_JSON:
12✔
852
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
12✔
853
      break;
460✔
854
    case TSDB_DATA_TYPE_DECIMAL:
×
855
    case TSDB_DATA_TYPE_BLOB:
856
      // todo
857
    default:
858
      break;
×
859
  }
860

861
  return code;
5,108,893✔
862
}
863

864
static int32_t valueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,117,073✔
865
  const SValueNode* pNode = (const SValueNode*)pObj;
5,117,073✔
866

867
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,117,073✔
868
  if (TSDB_CODE_SUCCESS == code) {
5,115,951!
869
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
5,116,130✔
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
5,115,869!
872
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
5,116,121✔
873
  }
874
  if (TSDB_CODE_SUCCESS == code) {
5,116,074!
875
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
5,116,469✔
876
  }
877
  if (TSDB_CODE_SUCCESS == code) {
5,116,920!
878
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
5,117,218✔
879
  }
880
  if (TSDB_CODE_SUCCESS == code) {
5,111,831!
881
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
5,112,255✔
882
  }
883
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
5,112,836!
884
    code = datumToMsg(pNode, pEncoder);
5,107,168✔
885
  }
886

887
  return code;
5,115,212✔
888
}
889

890
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
227,056,742✔
891
  SValueNode* pNode = (SValueNode*)pObj;
227,056,742✔
892

893
  int32_t code = TSDB_CODE_SUCCESS;
227,056,742✔
894
  switch (pNode->node.resType.type) {
227,056,742!
895
    case TSDB_DATA_TYPE_NULL:
×
896
      break;
×
897
    case TSDB_DATA_TYPE_BOOL:
2,507,172✔
898
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
2,507,172✔
899
      *(bool*)&pNode->typeData = pNode->datum.b;
2,507,792✔
900
      break;
2,507,792✔
901
    case TSDB_DATA_TYPE_TINYINT:
3,490,480✔
902
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
3,490,480✔
903
      *(int8_t*)&pNode->typeData = pNode->datum.i;
3,491,217✔
904
      break;
3,491,217✔
905
    case TSDB_DATA_TYPE_SMALLINT:
1,036,699✔
906
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,036,699✔
907
      *(int16_t*)&pNode->typeData = pNode->datum.i;
1,036,794✔
908
      break;
1,036,794✔
909
    case TSDB_DATA_TYPE_INT:
1,309,622✔
910
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,309,622✔
911
      *(int32_t*)&pNode->typeData = pNode->datum.i;
1,309,904✔
912
      break;
1,309,904✔
913
    case TSDB_DATA_TYPE_BIGINT:
213,073,168✔
914
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
213,073,168✔
915
      *(int64_t*)&pNode->typeData = pNode->datum.i;
213,217,677✔
916
      break;
213,217,677✔
917
    case TSDB_DATA_TYPE_TIMESTAMP:
682,491✔
918
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
682,491✔
919
      *(int64_t*)&pNode->typeData = pNode->datum.i;
682,486✔
920
      break;
682,486✔
921
    case TSDB_DATA_TYPE_UTINYINT:
111✔
922
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
111✔
923
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
111✔
924
      break;
111✔
925
    case TSDB_DATA_TYPE_USMALLINT:
9✔
926
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
9✔
927
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
9✔
928
      break;
9✔
929
    case TSDB_DATA_TYPE_UINT:
9✔
930
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
9✔
931
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
9✔
932
      break;
9✔
933
    case TSDB_DATA_TYPE_UBIGINT:
122,486✔
934
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
122,486✔
935
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
122,492✔
936
      break;
122,492✔
937
    case TSDB_DATA_TYPE_FLOAT:
107,530✔
938
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
107,530✔
939
      *(float*)&pNode->typeData = pNode->datum.d;
107,530✔
940
      break;
107,530✔
941
    case TSDB_DATA_TYPE_DOUBLE:
2,122,911✔
942
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
2,122,911✔
943
      *(double*)&pNode->typeData = pNode->datum.d;
2,123,266✔
944
      break;
2,123,266✔
945
    case TSDB_DATA_TYPE_NCHAR:
2,706,221✔
946
    case TSDB_DATA_TYPE_VARCHAR:
947
    case TSDB_DATA_TYPE_VARBINARY:
948
    case TSDB_DATA_TYPE_GEOMETRY: {
949
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
2,706,221!
950
        code = TSDB_CODE_FAILED;
×
951
        break;
×
952
      }
953
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
2,706,221✔
954
      if (NULL == pNode->datum.p) {
2,709,936!
955
        code = terrno;
×
956
        break;
×
957
      }
958
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
2,709,936✔
959
      if (TSDB_CODE_SUCCESS == code) {
2,709,299!
960
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
2,709,349✔
961
      }
962
      break;
2,709,299✔
963
    }
964
    case TSDB_DATA_TYPE_JSON: {
12✔
965
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
12!
966
        code = TSDB_CODE_FAILED;
×
967
        break;
×
968
      }
969
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
12✔
970
      break;
12✔
971
    }
972
    case TSDB_DATA_TYPE_DECIMAL:
×
973
    case TSDB_DATA_TYPE_BLOB:
974
      // todo
975
    default:
976
      break;
×
977
  }
978

979
  return code;
227,206,419✔
980
}
981

982
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
231,911,270✔
983
  SValueNode* pNode = (SValueNode*)pObj;
231,911,270✔
984

985
  int32_t code = TSDB_CODE_SUCCESS;
231,911,270✔
986
  STlv*   pTlv = NULL;
231,911,270✔
987
  tlvForEach(pDecoder, pTlv, code) {
1,825,296,120!
988
    switch (pTlv->type) {
1,596,052,403!
989
      case VALUE_CODE_EXPR_BASE:
230,392,137✔
990
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
230,392,137✔
991
        break;
221,118,669✔
992
      case VALUE_CODE_LITERAL:
219,752,453✔
993
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
219,752,453✔
994
        break;
233,550,019✔
995
      case VALUE_CODE_FLAG:
233,800,257✔
996
        code = tlvDecodeI32(pTlv, &pNode->flag);
233,800,257✔
997
        break;
230,211,512✔
998
      case VALUE_CODE_TRANSLATE:
229,796,443✔
999
        code = tlvDecodeBool(pTlv, &pNode->translate);
229,796,443✔
1000
        break;
227,695,321✔
1001
      case VALUE_CODE_NOT_RESERVED:
228,142,219✔
1002
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
228,142,219✔
1003
        break;
227,016,703✔
1004
      case VALUE_CODE_IS_NULL:
227,293,503✔
1005
        code = tlvDecodeBool(pTlv, &pNode->isNull);
227,293,503✔
1006
        break;
227,082,907✔
1007
      case VALUE_CODE_DATUM:
226,875,391✔
1008
        code = msgToDatum(pTlv, pNode);
226,875,391✔
1009
        break;
226,709,719✔
1010
      default:
×
1011
        break;
×
1012
    }
1013
  }
1014

1015
  return code;
223,624,514✔
1016
}
1017

1018
enum { OPERATOR_CODE_EXPR_BASE = 1, OPERATOR_CODE_OP_TYPE, OPERATOR_CODE_LEFT, OPERATOR_CODE_RIGHT };
1019

1020
static int32_t operatorNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,351,267✔
1021
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
1,351,267✔
1022

1023
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,351,267✔
1024
  if (TSDB_CODE_SUCCESS == code) {
1,350,849!
1025
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,350,876✔
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
1,350,780!
1028
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,350,789✔
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
1,349,577!
1031
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,349,609✔
1032
  }
1033

1034
  return code;
1,349,304✔
1035
}
1036

1037
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
16,977,328✔
1038
  SOperatorNode* pNode = (SOperatorNode*)pObj;
16,977,328✔
1039

1040
  int32_t code = TSDB_CODE_SUCCESS;
16,977,328✔
1041
  STlv*   pTlv = NULL;
16,977,328✔
1042
  tlvForEach(pDecoder, pTlv, code) {
81,842,591!
1043
    switch (pTlv->type) {
64,898,082!
1044
      case OPERATOR_CODE_EXPR_BASE:
16,970,264✔
1045
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
16,970,264✔
1046
        break;
16,913,347✔
1047
      case OPERATOR_CODE_OP_TYPE:
16,921,177✔
1048
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
16,921,177✔
1049
        break;
16,936,039✔
1050
      case OPERATOR_CODE_LEFT:
16,936,608✔
1051
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
16,936,608✔
1052
        break;
16,974,845✔
1053
      case OPERATOR_CODE_RIGHT:
14,070,033✔
1054
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
14,070,033✔
1055
        break;
14,041,032✔
1056
      default:
×
1057
        break;
×
1058
    }
1059
  }
1060

1061
  return code;
16,889,055✔
1062
}
1063

1064
enum { LOGIC_COND_CODE_EXPR_BASE = 1, LOGIC_COND_CODE_COND_TYPE, LOGIC_COND_CODE_PARAMETERS };
1065

1066
static int32_t logicConditionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
325,619✔
1067
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
325,619✔
1068

1069
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
325,619✔
1070
  if (TSDB_CODE_SUCCESS == code) {
325,679!
1071
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
325,687✔
1072
  }
1073
  if (TSDB_CODE_SUCCESS == code) {
325,661✔
1074
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
325,629✔
1075
  }
1076

1077
  return code;
325,351✔
1078
}
1079

1080
static int32_t msgToLogicConditionNode(STlvDecoder* pDecoder, void* pObj) {
5,427,956✔
1081
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
5,427,956✔
1082

1083
  int32_t code = TSDB_CODE_SUCCESS;
5,427,956✔
1084
  STlv*   pTlv = NULL;
5,427,956✔
1085
  tlvForEach(pDecoder, pTlv, code) {
21,701,118!
1086
    switch (pTlv->type) {
16,271,668!
1087
      case LOGIC_COND_CODE_EXPR_BASE:
5,427,013✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,427,013✔
1089
        break;
5,420,251✔
1090
      case LOGIC_COND_CODE_COND_TYPE:
5,421,381✔
1091
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
5,421,381✔
1092
        break;
5,422,922✔
1093
      case LOGIC_COND_CODE_PARAMETERS:
5,423,274✔
1094
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
5,423,274✔
1095
        break;
5,429,989✔
1096
      default:
×
1097
        break;
×
1098
    }
1099
  }
1100

1101
  return code;
5,426,420✔
1102
}
1103

1104
enum {
1105
  FUNCTION_CODE_EXPR_BASE = 1,
1106
  FUNCTION_CODE_FUNCTION_NAME,
1107
  FUNCTION_CODE_FUNCTION_ID,
1108
  FUNCTION_CODE_FUNCTION_TYPE,
1109
  FUNCTION_CODE_PARAMETERS,
1110
  FUNCTION_CODE_UDF_BUF_SIZE,
1111
  FUNCTION_NODE_HAS_PK,
1112
  FUNCTION_NODE_PK_BYTES,
1113
  FUNCTION_CODE_IS_MERGE_FUNC,
1114
  FUNCTION_CODE_MERGE_FUNC_OF,
1115
  FUNCTION_CODE_TRIM_TYPE,
1116
};
1117

1118
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,909,336✔
1119
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
2,909,336✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
2,909,336✔
1122
  if (TSDB_CODE_SUCCESS == code) {
2,902,681!
1123
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
2,902,781✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
2,902,622!
1126
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
2,902,800✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
2,901,513!
1129
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
2,901,776✔
1130
  }
1131
  if (TSDB_CODE_SUCCESS == code) {
2,900,186!
1132
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
2,900,593✔
1133
  }
1134
  if (TSDB_CODE_SUCCESS == code) {
2,903,345!
1135
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
2,903,820✔
1136
  }
1137
  if (TSDB_CODE_SUCCESS == code) {
2,906,518!
1138
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
2,907,373✔
1139
  }
1140
  if (TSDB_CODE_SUCCESS == code) {
2,906,008!
1141
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
2,906,937✔
1142
  }  
1143
  if (TSDB_CODE_SUCCESS == code) {
2,906,141!
1144
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
2,907,284✔
1145
  }
1146
  if (TSDB_CODE_SUCCESS == code) {
2,905,018!
1147
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
2,906,239✔
1148
  }
1149
  if (TSDB_CODE_SUCCESS == code) {
2,905,471!
1150
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
2,907,253✔
1151
  }
1152

1153
  return code;
2,907,828✔
1154
}
1155

1156
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
10,958,814✔
1157
  SFunctionNode* pNode = (SFunctionNode*)pObj;
10,958,814✔
1158

1159
  int32_t code = TSDB_CODE_SUCCESS;
10,958,814✔
1160
  STlv*   pTlv = NULL;
10,958,814✔
1161
  tlvForEach(pDecoder, pTlv, code) {
128,215,567!
1162
    switch (pTlv->type) {
117,270,322!
1163
      case FUNCTION_CODE_EXPR_BASE:
10,957,320✔
1164
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
10,957,320✔
1165
        break;
10,938,828✔
1166
      case FUNCTION_CODE_FUNCTION_NAME:
10,941,270✔
1167
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
10,941,270✔
1168
        break;
10,941,745✔
1169
      case FUNCTION_CODE_FUNCTION_ID:
10,941,878✔
1170
        code = tlvDecodeI32(pTlv, &pNode->funcId);
10,941,878✔
1171
        break;
10,941,716✔
1172
      case FUNCTION_CODE_FUNCTION_TYPE:
10,942,372✔
1173
        code = tlvDecodeI32(pTlv, &pNode->funcType);
10,942,372✔
1174
        break;
10,940,529✔
1175
      case FUNCTION_CODE_PARAMETERS:
7,756,841✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
7,756,841✔
1177
        break;
7,770,288✔
1178
      case FUNCTION_CODE_UDF_BUF_SIZE:
10,959,313✔
1179
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
10,959,313✔
1180
        break;
10,956,418✔
1181
      case FUNCTION_NODE_HAS_PK:
10,956,254✔
1182
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
10,956,254✔
1183
        break;
10,952,778✔
1184
      case FUNCTION_NODE_PK_BYTES:
10,953,412✔
1185
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
10,953,412✔
1186
        break;  
10,953,615✔
1187
      case FUNCTION_CODE_IS_MERGE_FUNC:
10,954,522✔
1188
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
10,954,522✔
1189
        break;
10,952,350✔
1190
      case FUNCTION_CODE_MERGE_FUNC_OF:
10,953,192✔
1191
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
10,953,192✔
1192
        break;
10,953,136✔
1193
      case FUNCTION_CODE_TRIM_TYPE:
10,953,948✔
1194
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
10,953,948✔
1195
        break;
10,955,350✔
1196
      default:
×
1197
        break;
×
1198
    }
1199
  }
1200

1201
  return code;
10,960,955✔
1202
}
1203

1204
enum { ORDER_BY_EXPR_CODE_EXPR = 1, ORDER_BY_EXPR_CODE_ORDER, ORDER_BY_EXPR_CODE_NULL_ORDER };
1205

1206
static int32_t orderByExprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
277,332✔
1207
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
277,332✔
1208

1209
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
277,332✔
1210
  if (TSDB_CODE_SUCCESS == code) {
277,206!
1211
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
277,206✔
1212
  }
1213
  if (TSDB_CODE_SUCCESS == code) {
277,245!
1214
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
277,245✔
1215
  }
1216

1217
  return code;
277,269✔
1218
}
1219

1220
static int32_t msgToOrderByExprNode(STlvDecoder* pDecoder, void* pObj) {
2,257,172✔
1221
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
2,257,172✔
1222

1223
  int32_t code = TSDB_CODE_SUCCESS;
2,257,172✔
1224
  STlv*   pTlv = NULL;
2,257,172✔
1225
  tlvForEach(pDecoder, pTlv, code) {
9,028,147!
1226
    switch (pTlv->type) {
6,771,200!
1227
      case ORDER_BY_EXPR_CODE_EXPR:
2,257,130✔
1228
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
2,257,130✔
1229
        break;
2,257,140✔
1230
      case ORDER_BY_EXPR_CODE_ORDER:
2,257,097✔
1231
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
2,257,097✔
1232
        break;
2,256,987✔
1233
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
2,256,973✔
1234
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
2,256,973✔
1235
        break;
2,256,848✔
1236
      default:
×
1237
        break;
×
1238
    }
1239
  }
1240

1241
  return code;
2,256,723✔
1242
}
1243

1244
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1245

1246
static int32_t limitNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
195,711✔
1247
  const SLimitNode* pNode = (const SLimitNode*)pObj;
195,711✔
1248

1249
  int32_t code = tlvEncodeI64(pEncoder, LIMIT_CODE_LIMIT, pNode->limit);
195,711✔
1250
  if (TSDB_CODE_SUCCESS == code) {
195,703!
1251
    code = tlvEncodeI64(pEncoder, LIMIT_CODE_OFFSET, pNode->offset);
195,712✔
1252
  }
1253

1254
  return code;
195,701✔
1255
}
1256

1257
static int32_t msgToLimitNode(STlvDecoder* pDecoder, void* pObj) {
784,405✔
1258
  SLimitNode* pNode = (SLimitNode*)pObj;
784,405✔
1259

1260
  int32_t code = TSDB_CODE_SUCCESS;
784,405✔
1261
  STlv*   pTlv = NULL;
784,405✔
1262
  tlvForEach(pDecoder, pTlv, code) {
2,352,987!
1263
    switch (pTlv->type) {
1,568,699!
1264
      case LIMIT_CODE_LIMIT:
784,408✔
1265
        code = tlvDecodeI64(pTlv, &pNode->limit);
784,408✔
1266
        break;
784,354✔
1267
      case LIMIT_CODE_OFFSET:
784,291✔
1268
        code = tlvDecodeI64(pTlv, &pNode->offset);
784,291✔
1269
        break;
784,228✔
1270
      default:
×
1271
        break;
×
1272
    }
1273
  }
1274

1275
  return code;
784,277✔
1276
}
1277

1278
enum { NAME_CODE_TYPE = 1, NAME_CODE_ACCT_ID, NAME_CODE_DB_NAME, NAME_CODE_TABLE_NAME };
1279

1280
static int32_t nameToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,251,860✔
1281
  const SName* pNode = (const SName*)pObj;
1,251,860✔
1282

1283
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,251,860✔
1284
  if (TSDB_CODE_SUCCESS == code) {
1,251,888!
1285
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,251,939✔
1286
  }
1287
  if (TSDB_CODE_SUCCESS == code) {
1,252,213!
1288
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,252,323✔
1289
  }
1290
  if (TSDB_CODE_SUCCESS == code) {
1,252,115!
1291
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,252,263✔
1292
  }
1293

1294
  return code;
1,251,754✔
1295
}
1296

1297
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
5,825,477✔
1298
  SName* pNode = (SName*)pObj;
5,825,477✔
1299

1300
  int32_t code = TSDB_CODE_SUCCESS;
5,825,477✔
1301
  STlv*   pTlv = NULL;
5,825,477✔
1302
  tlvForEach(pDecoder, pTlv, code) {
29,123,222✔
1303
    switch (pTlv->type) {
23,300,117!
1304
      case NAME_CODE_TYPE:
5,825,243✔
1305
        code = tlvDecodeU8(pTlv, &pNode->type);
5,825,243✔
1306
        break;
5,824,188✔
1307
      case NAME_CODE_ACCT_ID:
5,824,682✔
1308
        code = tlvDecodeI32(pTlv, &pNode->acctId);
5,824,682✔
1309
        break;
5,824,443✔
1310
      case NAME_CODE_DB_NAME:
5,825,523✔
1311
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
5,825,523✔
1312
        break;
5,824,502✔
1313
      case NAME_CODE_TABLE_NAME:
5,824,669✔
1314
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
5,824,669✔
1315
        break;
5,824,612✔
1316
      default:
×
1317
        break;
×
1318
    }
1319
  }
1320

1321
  return code;
5,827,290✔
1322
}
1323

1324
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1325

1326
static int32_t timeWindowToMsg(const void* pObj, STlvEncoder* pEncoder) {
144,384✔
1327
  const STimeWindow* pNode = (const STimeWindow*)pObj;
144,384✔
1328

1329
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
144,384✔
1330
  if (TSDB_CODE_SUCCESS == code) {
144,408!
1331
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
144,408✔
1332
  }
1333

1334
  return code;
144,407✔
1335
}
1336

1337
static int32_t msgToTimeWindow(STlvDecoder* pDecoder, void* pObj) {
2,521,375✔
1338
  STimeWindow* pNode = (STimeWindow*)pObj;
2,521,375✔
1339

1340
  int32_t code = TSDB_CODE_SUCCESS;
2,521,375✔
1341
  STlv*   pTlv = NULL;
2,521,375✔
1342
  tlvForEach(pDecoder, pTlv, code) {
7,564,178!
1343
    switch (pTlv->type) {
5,043,117!
1344
      case TIME_WINDOW_CODE_START_KEY:
2,521,499✔
1345
        code = tlvDecodeI64(pTlv, &pNode->skey);
2,521,499✔
1346
        break;
2,521,357✔
1347
      case TIME_WINDOW_CODE_END_KEY:
2,521,618✔
1348
        code = tlvDecodeI64(pTlv, &pNode->ekey);
2,521,618✔
1349
        break;
2,521,446✔
1350
      default:
×
1351
        break;
×
1352
    }
1353
  }
1354

1355
  return code;
2,521,519✔
1356
}
1357

1358
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1359

1360
static int32_t nodeListNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
49,730✔
1361
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
49,730✔
1362

1363
  int32_t code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_DATA_TYPE, dataTypeInlineToMsg, &pNode->node.resType);
49,730✔
1364
  if (TSDB_CODE_SUCCESS == code) {
49,702!
1365
    code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_NODE_LIST, nodeListToMsg, pNode->pNodeList);
49,702✔
1366
  }
1367

1368
  return code;
49,725✔
1369
}
1370

1371
static int32_t msgToNodeListNode(STlvDecoder* pDecoder, void* pObj) {
2,136,724✔
1372
  SNodeListNode* pNode = (SNodeListNode*)pObj;
2,136,724✔
1373

1374
  int32_t code = TSDB_CODE_SUCCESS;
2,136,724✔
1375
  STlv*   pTlv = NULL;
2,136,724✔
1376
  tlvForEach(pDecoder, pTlv, code) {
6,410,366!
1377
    switch (pTlv->type) {
4,272,765!
1378
      case NODE_LIST_CODE_DATA_TYPE:
2,136,678✔
1379
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
2,136,678✔
1380
        break;
2,135,981✔
1381
      case NODE_LIST_CODE_NODE_LIST:
2,136,087✔
1382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
2,136,087✔
1383
        break;
2,137,661✔
1384
      default:
×
1385
        break;
×
1386
    }
1387
  }
1388

1389
  return code;
2,137,280✔
1390
}
1391

1392
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1393

1394
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,318,516✔
1395
  const STargetNode* pNode = (const STargetNode*)pObj;
8,318,516✔
1396

1397
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
8,318,516✔
1398
  if (TSDB_CODE_SUCCESS == code) {
8,307,032!
1399
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
8,307,427✔
1400
  }
1401

1402
  return code;
8,263,365✔
1403
}
1404

1405
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,280,543✔
1406
  const STargetNode* pNode = (const STargetNode*)pObj;
8,280,543✔
1407

1408
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
8,280,543✔
1409
  if (TSDB_CODE_SUCCESS == code) {
8,267,858!
1410
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
8,268,161✔
1411
  }
1412

1413
  return code;
8,252,500✔
1414
}
1415

1416
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
61,841,273✔
1417
  STargetNode* pNode = (STargetNode*)pObj;
61,841,273✔
1418

1419
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
61,841,273✔
1420
  if (TSDB_CODE_SUCCESS == code) {
62,120,201!
1421
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
62,140,245✔
1422
  }
1423

1424
  return code;
62,132,150✔
1425
}
1426

1427
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
61,927,013✔
1428
  STargetNode* pNode = (STargetNode*)pObj;
61,927,013✔
1429

1430
  int32_t code = TSDB_CODE_SUCCESS;
61,927,013✔
1431
  STlv*   pTlv = NULL;
61,927,013✔
1432
  tlvForEach(pDecoder, pTlv, code) {
185,849,802!
1433
    switch (pTlv->type) {
123,834,412!
1434
      case TARGET_CODE_INLINE_ATTRS:
61,863,188✔
1435
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
61,863,188✔
1436
        break;
62,075,257✔
1437
      case TARGET_CODE_EXPR:
61,971,224✔
1438
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
61,971,224✔
1439
        break;
61,847,532✔
1440
      default:
×
1441
        break;
×
1442
    }
1443
  }
1444

1445
  return code;
61,621,269✔
1446
}
1447

1448
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1449

1450
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,135,650✔
1451
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
5,135,650✔
1452

1453
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
5,135,650✔
1454
  if (TSDB_CODE_SUCCESS == code) {
5,133,380!
1455
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
5,133,503✔
1456
  }
1457
  if (TSDB_CODE_SUCCESS == code) {
5,132,311!
1458
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
5,132,611✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
5,130,887!
1461
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
5,131,349✔
1462
  }
1463

1464
  return code;
5,131,210✔
1465
}
1466

1467
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,136,139✔
1468
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
5,136,139✔
1469

1470
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
5,136,139✔
1471
  if (TSDB_CODE_SUCCESS == code) {
5,131,705!
1472
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
5,131,807✔
1473
  }
1474

1475
  return code;
5,127,706✔
1476
}
1477

1478
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
26,246,870✔
1479
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
26,246,870✔
1480

1481
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
26,246,870✔
1482
  if (TSDB_CODE_SUCCESS == code) {
26,270,460!
1483
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
26,272,872✔
1484
  }
1485
  if (TSDB_CODE_SUCCESS == code) {
26,250,762!
1486
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
26,253,690✔
1487
  }
1488
  if (TSDB_CODE_SUCCESS == code) {
26,235,941!
1489
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
26,239,548✔
1490
  }
1491

1492
  return code;
26,234,121✔
1493
}
1494

1495
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
26,252,080✔
1496
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
26,252,080✔
1497

1498
  int32_t code = TSDB_CODE_SUCCESS;
26,252,080✔
1499
  STlv*   pTlv = NULL;
26,252,080✔
1500
  tlvForEach(pDecoder, pTlv, code) {
78,739,435!
1501
    switch (pTlv->type) {
52,489,093!
1502
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
26,252,579✔
1503
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
26,252,579✔
1504
        break;
26,233,724✔
1505
      case DATA_BLOCK_DESC_CODE_SLOTS:
26,236,514✔
1506
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
26,236,514✔
1507
        break;
26,253,631✔
1508
      default:
×
1509
        break;
×
1510
    }
1511
  }
1512

1513
  return code;
26,233,369✔
1514
}
1515

1516
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1517

1518
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,910,495✔
1519
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
14,910,495✔
1520

1521
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
14,910,495✔
1522
  if (TSDB_CODE_SUCCESS == code) {
14,889,166!
1523
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
14,889,795✔
1524
  }
1525
  if (TSDB_CODE_SUCCESS == code) {
14,803,826!
1526
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
14,804,840✔
1527
  }
1528
  if (TSDB_CODE_SUCCESS == code) {
14,787,391!
1529
    code = tlvEncodeValueBool(pEncoder, pNode->output);
14,789,006✔
1530
  }
1531
  if (TSDB_CODE_SUCCESS == code) {
14,760,754!
1532
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
14,763,714✔
1533
  }
1534

1535
  return code;
14,756,443✔
1536
}
1537

1538
static int32_t slotDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,858,818✔
1539
  return tlvEncodeObj(pEncoder, SLOT_DESC_CODE_INLINE_ATTRS, slotDescNodeInlineToMsg, pObj);
14,858,818✔
1540
}
1541

1542
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
112,871,220✔
1543
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
112,871,220✔
1544

1545
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
112,871,220✔
1546
  if (TSDB_CODE_SUCCESS == code) {
113,681,077!
1547
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
113,708,366✔
1548
  }
1549
  if (TSDB_CODE_SUCCESS == code) {
112,324,639!
1550
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
112,348,070✔
1551
  }
1552
  if (TSDB_CODE_SUCCESS == code) {
112,563,073!
1553
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
112,593,381✔
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
112,557,547!
1556
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
112,594,646✔
1557
  }
1558

1559
  return code;
112,654,624✔
1560
}
1561

1562
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
112,979,540✔
1563
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
112,979,540✔
1564

1565
  int32_t code = TSDB_CODE_SUCCESS;
112,979,540✔
1566
  STlv*   pTlv = NULL;
112,979,540✔
1567
  tlvForEach(pDecoder, pTlv, code) {
225,606,311!
1568
    switch (pTlv->type) {
112,934,118!
1569
      case SLOT_DESC_CODE_INLINE_ATTRS:
112,934,118✔
1570
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
112,934,118✔
1571
        break;
112,626,771✔
1572
      default:
×
1573
        break;
×
1574
    }
1575
  }
1576

1577
  return code;
112,487,862✔
1578
}
1579

1580
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1581

1582
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,122,851✔
1583
  const SEp* pNode = (const SEp*)pObj;
2,122,851✔
1584

1585
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
2,122,851✔
1586
  if (TSDB_CODE_SUCCESS == code) {
2,123,151!
1587
    code = tlvEncodeValueU16(pEncoder, pNode->port);
2,123,209✔
1588
  }
1589

1590
  return code;
2,123,263✔
1591
}
1592

1593
static int32_t epToMsg(const void* pObj, STlvEncoder* pEncoder) {
34,051✔
1594
  const SEp* pNode = (const SEp*)pObj;
34,051✔
1595

1596
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
34,051✔
1597
  if (TSDB_CODE_SUCCESS == code) {
34,055!
1598
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
34,055✔
1599
  }
1600

1601
  return code;
34,055✔
1602
}
1603

1604
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
10,691,621✔
1605
  SEp* pNode = (SEp*)pObj;
10,691,621✔
1606

1607
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
10,691,621✔
1608
  if (TSDB_CODE_SUCCESS == code) {
10,699,736!
1609
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
10,699,740✔
1610
  }
1611

1612
  return code;
10,705,330✔
1613
}
1614

1615
static int32_t msgToEp(STlvDecoder* pDecoder, void* pObj) {
1,139,960✔
1616
  SEp* pNode = (SEp*)pObj;
1,139,960✔
1617

1618
  int32_t code = TSDB_CODE_SUCCESS;
1,139,960✔
1619
  STlv*   pTlv = NULL;
1,139,960✔
1620
  tlvForEach(pDecoder, pTlv, code) {
3,421,690!
1621
    switch (pTlv->type) {
2,279,856!
1622
      case EP_CODE_FQDN:
1,139,893✔
1623
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
1,139,893✔
1624
        break;
1,139,787✔
1625
      case EP_CODE_port:
1,139,963✔
1626
        code = tlvDecodeU16(pTlv, &pNode->port);
1,139,963✔
1627
        break;
1,141,943✔
1628
      default:
×
1629
        break;
×
1630
    }
1631
  }
1632

1633
  return code;
1,138,829✔
1634
}
1635

1636
enum { EP_SET_CODE_IN_USE = 1, EP_SET_CODE_NUM_OF_EPS, EP_SET_CODE_EPS };
1637

1638
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,514,867✔
1639
  const SEpSet* pNode = (const SEpSet*)pObj;
2,514,867✔
1640

1641
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
2,514,867✔
1642
  if (TSDB_CODE_SUCCESS == code) {
2,514,881!
1643
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,514,960✔
1644
  }
1645

1646
  return code;
2,515,036✔
1647
}
1648

1649
static int32_t epSetToMsg(const void* pObj, STlvEncoder* pEncoder) {
32,838✔
1650
  const SEpSet* pNode = (const SEpSet*)pObj;
32,838✔
1651

1652
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
32,838✔
1653
  if (TSDB_CODE_SUCCESS == code) {
32,835!
1654
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
32,835✔
1655
  }
1656
  if (TSDB_CODE_SUCCESS == code) {
32,835!
1657
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
32,835✔
1658
  }
1659

1660
  return code;
32,842✔
1661
}
1662

1663
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
12,657,069✔
1664
  SEpSet* pNode = (SEpSet*)pObj;
12,657,069✔
1665

1666
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
12,657,069✔
1667
  if (TSDB_CODE_SUCCESS == code) {
12,659,529✔
1668
    int32_t numOfEps = 0;
12,659,397✔
1669
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
12,659,397✔
1670
    pNode->numOfEps = numOfEps;
12,669,157✔
1671
  }
1672

1673
  return code;
12,669,289✔
1674
}
1675

1676
static int32_t msgToEpSet(STlvDecoder* pDecoder, void* pObj) {
1,138,041✔
1677
  SEpSet* pNode = (SEpSet*)pObj;
1,138,041✔
1678

1679
  int32_t code = TSDB_CODE_SUCCESS;
1,138,041✔
1680
  STlv*   pTlv = NULL;
1,138,041✔
1681
  tlvForEach(pDecoder, pTlv, code) {
4,552,439!
1682
    switch (pTlv->type) {
3,414,427!
1683
      case EP_SET_CODE_IN_USE:
1,138,623✔
1684
        code = tlvDecodeI8(pTlv, &pNode->inUse);
1,138,623✔
1685
        break;
1,137,767✔
1686
      case EP_SET_CODE_NUM_OF_EPS:
1,137,908✔
1687
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
1,137,908✔
1688
        break;
1,137,943✔
1689
      case EP_SET_CODE_EPS:
1,137,896✔
1690
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
1,137,896✔
1691
        break;
1,138,688✔
1692
      default:
×
1693
        break;
×
1694
    }
1695
  }
1696

1697
  return code;
1,136,496✔
1698
}
1699

1700
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1701

1702
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,514,498✔
1703
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
2,514,498✔
1704

1705
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
2,514,498✔
1706
  if (TSDB_CODE_SUCCESS == code) {
2,515,102!
1707
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
2,515,173✔
1708
  }
1709

1710
  return code;
2,515,042✔
1711
}
1712

1713
static int32_t queryNodeAddrToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1714
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
×
1715

1716
  int32_t code = tlvEncodeI32(pEncoder, QUERY_NODE_ADDR_CODE_NODE_ID, pNode->nodeId);
×
1717
  if (TSDB_CODE_SUCCESS == code) {
×
1718
    code = tlvEncodeObj(pEncoder, QUERY_NODE_ADDR_CODE_EP_SET, epSetToMsg, &pNode->epSet);
×
1719
  }
1720

1721
  return code;
×
1722
}
1723

1724
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
12,657,054✔
1725
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
12,657,054✔
1726

1727
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
12,657,054✔
1728
  if (TSDB_CODE_SUCCESS == code) {
12,659,028!
1729
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
12,659,404✔
1730
  }
1731

1732
  return code;
12,669,145✔
1733
}
1734

1735
static int32_t msgToQueryNodeAddr(STlvDecoder* pDecoder, void* pObj) {
×
1736
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
×
1737

1738
  int32_t code = TSDB_CODE_SUCCESS;
×
1739
  STlv*   pTlv = NULL;
×
1740
  tlvForEach(pDecoder, pTlv, code) {
×
1741
    switch (pTlv->type) {
×
1742
      case QUERY_NODE_ADDR_CODE_NODE_ID:
×
1743
        code = tlvDecodeI32(pTlv, &pNode->nodeId);
×
1744
        break;
×
1745
      case QUERY_NODE_ADDR_CODE_EP_SET:
×
1746
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
×
1747
        break;
×
1748
    }
1749
  }
1750

1751
  return code;
×
1752
}
1753

1754
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1755

1756
static int32_t downstreamSourceNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
857,246✔
1757
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
857,246✔
1758

1759
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
857,246✔
1760
  if (TSDB_CODE_SUCCESS == code) {
857,219!
1761
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
857,219✔
1762
  }
1763
  if (TSDB_CODE_SUCCESS == code) {
857,214!
1764
    code = tlvEncodeValueU64(pEncoder, pNode->schedId);
857,215✔
1765
  }
1766
  if (TSDB_CODE_SUCCESS == code) {
857,197!
1767
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
857,199✔
1768
  }
1769
  if (TSDB_CODE_SUCCESS == code) {
857,205✔
1770
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
857,204✔
1771
  }
1772
  if (TSDB_CODE_SUCCESS == code) {
857,203!
1773
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
857,204✔
1774
  }
1775

1776
  return code;
857,201✔
1777
}
1778

1779
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
857,247✔
1780
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
857,247✔
1781
}
1782

1783
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
4,854,968✔
1784
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
4,854,968✔
1785

1786
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
4,854,968✔
1787
  if (TSDB_CODE_SUCCESS == code) {
4,858,473!
1788
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
4,858,490✔
1789
  }
1790
  if (TSDB_CODE_SUCCESS == code) {
4,856,881!
1791
    code = tlvDecodeValueU64(pDecoder, &pNode->schedId);
4,857,022✔
1792
  }
1793
  if (TSDB_CODE_SUCCESS == code) {
4,854,037!
1794
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
4,854,249✔
1795
  }
1796
  if (TSDB_CODE_SUCCESS == code) {
4,852,901!
1797
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
4,853,136✔
1798
  }
1799
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
4,850,954!
1800
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
4,851,630✔
1801
  }
1802

1803
  return code;
4,851,445✔
1804
}
1805

1806
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
4,854,818✔
1807
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
4,854,818✔
1808

1809
  int32_t code = TSDB_CODE_SUCCESS;
4,854,818✔
1810
  STlv*   pTlv = NULL;
4,854,818✔
1811
  tlvForEach(pDecoder, pTlv, code) {
9,706,247!
1812
    switch (pTlv->type) {
4,855,198!
1813
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
4,855,198✔
1814
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
4,855,198✔
1815
        break;
4,851,429✔
1816
      default:
×
1817
        break;
×
1818
    }
1819
  }
1820

1821
  return code;
4,851,008✔
1822
}
1823

1824
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
1825

1826
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
7,330✔
1827
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
7,330✔
1828

1829
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
7,330✔
1830
  if (TSDB_CODE_SUCCESS == code) {
7,330!
1831
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
7,330✔
1832
  }
1833
  if (TSDB_CODE_SUCCESS == code) {
7,326!
1834
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
7,326✔
1835
  }
1836

1837
  return code;
7,326✔
1838
}
1839

1840
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
8,032✔
1841
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
8,032✔
1842

1843
  int32_t code = TSDB_CODE_SUCCESS;
8,032✔
1844
  STlv*   pTlv = NULL;
8,032✔
1845
  tlvForEach(pDecoder, pTlv, code) {
32,120!
1846
    switch (pTlv->type) {
24,090!
1847
      case WHEN_THEN_CODE_EXPR_BASE:
8,032✔
1848
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
8,032✔
1849
        break;
8,030✔
1850
      case WHEN_THEN_CODE_WHEN:
8,030✔
1851
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
8,030✔
1852
        break;
8,027✔
1853
      case WHEN_THEN_CODE_THEN:
8,028✔
1854
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
8,028✔
1855
        break;
8,031✔
1856
      default:
×
1857
        break;
×
1858
    }
1859
  }
1860

1861
  return code;
8,031✔
1862
}
1863

1864
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
1865

1866
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,499✔
1867
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
5,499✔
1868

1869
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,499✔
1870
  if (TSDB_CODE_SUCCESS == code) {
5,496!
1871
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
5,496✔
1872
  }
1873
  if (TSDB_CODE_SUCCESS == code) {
5,496!
1874
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
5,497✔
1875
  }
1876
  if (TSDB_CODE_SUCCESS == code) {
5,503!
1877
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
5,504✔
1878
  }
1879

1880
  return code;
5,497✔
1881
}
1882

1883
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
5,984✔
1884
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
5,984✔
1885

1886
  int32_t code = TSDB_CODE_SUCCESS;
5,984✔
1887
  STlv*   pTlv = NULL;
5,984✔
1888
  tlvForEach(pDecoder, pTlv, code) {
23,852!
1889
    switch (pTlv->type) {
17,866!
1890
      case CASE_WHEN_CODE_EXPR_BASE:
5,984✔
1891
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,984✔
1892
        break;
5,983✔
1893
      case CASE_WHEN_CODE_CASE:
1,350✔
1894
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
1,350✔
1895
        break;
1,350✔
1896
      case CASE_WHEN_CODE_ELSE:
4,550✔
1897
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
4,550✔
1898
        break;
4,549✔
1899
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
5,982✔
1900
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
5,982✔
1901
        break;
5,986✔
1902
      default:
×
1903
        break;
×
1904
    }
1905
  }
1906

1907
  return code;
5,986✔
1908
}
1909

1910
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
1911

1912
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
829✔
1913
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
829✔
1914

1915
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
829✔
1916
  if (TSDB_CODE_SUCCESS == code) {
829!
1917
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
829✔
1918
  }
1919

1920
  return code;
829✔
1921
}
1922

1923
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
668✔
1924
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
668✔
1925

1926
  int32_t code = TSDB_CODE_SUCCESS;
668✔
1927
  STlv*   pTlv = NULL;
668✔
1928
  tlvForEach(pDecoder, pTlv, code) {
2,004!
1929
    switch (pTlv->type) {
1,336!
1930
      case WINDOW_OFFSET_CODE_START_OFFSET:
668✔
1931
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartOffset);
668✔
1932
        break;
668✔
1933
      case WINDOW_OFFSET_CODE_END_OFFSET:
668✔
1934
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndOffset);
668✔
1935
        break;
668✔
1936
      default:
×
1937
        break;
×
1938
    }
1939
  }
1940

1941
  return code;
668✔
1942
}
1943

1944

1945
enum {
1946
  PHY_NODE_CODE_OUTPUT_DESC = 1,
1947
  PHY_NODE_CODE_CONDITIONS,
1948
  PHY_NODE_CODE_CHILDREN,
1949
  PHY_NODE_CODE_LIMIT,
1950
  PHY_NODE_CODE_SLIMIT,
1951
  PHY_NODE_CODE_INPUT_TS_ORDER,
1952
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
1953
  PHY_NODE_CODE_DYNAMIC_OP,
1954
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
1955
};
1956

1957
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,481,574✔
1958
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
3,481,574✔
1959

1960
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
3,481,574✔
1961
  if (TSDB_CODE_SUCCESS == code) {
3,479,554!
1962
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
3,479,676✔
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
3,479,963!
1965
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
3,480,158✔
1966
  }
1967
  if (TSDB_CODE_SUCCESS == code) {
3,480,449!
1968
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
3,480,774✔
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
3,481,279!
1971
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
3,481,923✔
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
3,480,954!
1974
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
3,481,749✔
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) {
3,480,760!
1977
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
3,481,666✔
1978
  }
1979
  if (TSDB_CODE_SUCCESS == code) {
3,479,743!
1980
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
3,480,738✔
1981
  }
1982
  if (TSDB_CODE_SUCCESS == code) { 
3,479,804!
1983
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
3,480,641✔
1984
  }
1985

1986
  return code;
3,479,757✔
1987
}
1988

1989
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
18,445,583✔
1990
  SPhysiNode* pNode = (SPhysiNode*)pObj;
18,445,583✔
1991

1992
  int32_t code = TSDB_CODE_SUCCESS;
18,445,583✔
1993
  STlv*   pTlv = NULL;
18,445,583✔
1994
  tlvForEach(pDecoder, pTlv, code) {
123,480,060!
1995
    switch (pTlv->type) {
105,041,465!
1996
      case PHY_NODE_CODE_OUTPUT_DESC:
18,444,659✔
1997
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
18,444,659✔
1998
        break;
18,444,688✔
1999
      case PHY_NODE_CODE_CONDITIONS:
2,813,244✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
2,813,244✔
2001
        break;
2,812,249✔
2002
      case PHY_NODE_CODE_CHILDREN:
9,210,952✔
2003
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
9,210,952✔
2004
        break;
9,213,643✔
2005
      case PHY_NODE_CODE_LIMIT:
773,743✔
2006
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
773,743✔
2007
        break;
773,540✔
2008
      case PHY_NODE_CODE_SLIMIT:
10,508✔
2009
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
10,508✔
2010
        break;
10,506✔
2011
      case PHY_NODE_CODE_INPUT_TS_ORDER:
18,448,492✔
2012
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
18,448,492✔
2013
        break;
18,447,760✔
2014
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
18,447,492✔
2015
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
18,447,492✔
2016
        break;
18,447,607✔
2017
      case PHY_NODE_CODE_DYNAMIC_OP:
18,446,971✔
2018
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
18,446,971✔
2019
        break;
18,441,585✔
2020
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
18,445,404✔
2021
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
18,445,404✔
2022
        break;
18,442,899✔
2023
      default:
×
2024
        break;
×
2025
    }
2026
  }
2027

2028
  return code;
18,427,058✔
2029
}
2030

2031
enum {
2032
  PHY_SCAN_CODE_BASE_NODE = 1,
2033
  PHY_SCAN_CODE_SCAN_COLS,
2034
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2035
  PHY_SCAN_CODE_BASE_UID,
2036
  PHY_SCAN_CODE_BASE_SUID,
2037
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2038
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2039
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN
2040
};
2041

2042
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,251,540✔
2043
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
1,251,540✔
2044

2045
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,251,540✔
2046
  if (TSDB_CODE_SUCCESS == code) {
1,251,737!
2047
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,251,817✔
2048
  }
2049
  if (TSDB_CODE_SUCCESS == code) {
1,251,330!
2050
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,251,446✔
2051
  }
2052
  if (TSDB_CODE_SUCCESS == code) {
1,251,026!
2053
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,251,177✔
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
1,251,828!
2056
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,251,939✔
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
1,251,639!
2059
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,251,915✔
2060
  }
2061
  if (TSDB_CODE_SUCCESS == code) {
1,251,839!
2062
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,252,139✔
2063
  }
2064
  if (TSDB_CODE_SUCCESS == code) {
1,251,569!
2065
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,251,935✔
2066
  }
2067

2068
  return code;
1,251,917✔
2069
}
2070

2071
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
5,824,685✔
2072
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
5,824,685✔
2073

2074
  int32_t code = TSDB_CODE_SUCCESS;
5,824,685✔
2075
  STlv*   pTlv = NULL;
5,824,685✔
2076
  tlvForEach(pDecoder, pTlv, code) {
48,424,782✔
2077
    switch (pTlv->type) {
42,604,111!
2078
      case PHY_SCAN_CODE_BASE_NODE:
5,825,245✔
2079
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
5,825,245✔
2080
        break;
5,823,648✔
2081
      case PHY_SCAN_CODE_SCAN_COLS:
5,778,525✔
2082
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
5,778,525✔
2083
        break;
5,783,337✔
2084
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
1,863,949✔
2085
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
1,863,949✔
2086
        break;
1,864,190✔
2087
      case PHY_SCAN_CODE_BASE_UID:
5,829,375✔
2088
        code = tlvDecodeU64(pTlv, &pNode->uid);
5,829,375✔
2089
        break;
5,827,421✔
2090
      case PHY_SCAN_CODE_BASE_SUID:
5,827,959✔
2091
        code = tlvDecodeU64(pTlv, &pNode->suid);
5,827,959✔
2092
        break;
5,826,665✔
2093
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
5,827,937✔
2094
        code = tlvDecodeI8(pTlv, &pNode->tableType);
5,827,937✔
2095
        break;
5,825,661✔
2096
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
5,825,986✔
2097
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
5,825,986✔
2098
        break;
5,824,764✔
2099
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
5,825,135✔
2100
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
5,825,135✔
2101
        break;
5,824,411✔
2102
      default:
×
2103
        break;
×
2104
    }
2105
  }
2106

2107
  return code;
5,820,503✔
2108
}
2109

2110
enum {
2111
  PHY_TAG_SCAN_CODE_SCAN = 1,
2112
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2113
};
2114

2115
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
44,055✔
2116
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
44,055✔
2117

2118
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
44,055✔
2119

2120
  if (TSDB_CODE_SUCCESS == code) {
44,270!
2121
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
44,275✔
2122
  }
2123
  return code;
44,253✔
2124
}
2125

2126
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
48,144✔
2127
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
48,144✔
2128

2129
  int32_t code = TSDB_CODE_SUCCESS;
48,144✔
2130
  STlv*   pTlv = NULL;
48,144✔
2131
  tlvForEach(pDecoder, pTlv, code) {
144,321!
2132
    switch (pTlv->type) {
96,248!
2133
      case PHY_TAG_SCAN_CODE_SCAN:
48,150✔
2134
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
48,150✔
2135
        break;
48,092✔
2136
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
48,098✔
2137
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
48,098✔
2138
        break;
48,085✔
2139
      default:
×
2140
        break;
×
2141
    }
2142
  }
2143

2144
  return code;
48,078✔
2145
}
2146

2147
enum {
2148
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2149
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2150
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2151
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2152
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2153
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2154
};
2155

2156
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,657✔
2157
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
2,657✔
2158

2159
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
2,657✔
2160
  if (TSDB_CODE_SUCCESS == code) {
2,661!
2161
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
2,661✔
2162
  }
2163
  if (TSDB_CODE_SUCCESS == code) {
2,661✔
2164
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
2,660✔
2165
  }
2166
  if (TSDB_CODE_SUCCESS == code) {
2,663✔
2167
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
2,662✔
2168
  }
2169
  if (TSDB_CODE_SUCCESS == code) {
2,663✔
2170
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,662✔
2171
  }
2172
  if (TSDB_CODE_SUCCESS == code) {
2,666✔
2173
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
2,665✔
2174
  }
2175

2176
  return code;
2,665✔
2177
}
2178

2179
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
4,521✔
2180
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
4,521✔
2181

2182
  int32_t code = TSDB_CODE_SUCCESS;
4,521✔
2183
  STlv*   pTlv = NULL;
4,521✔
2184
  tlvForEach(pDecoder, pTlv, code) {
24,150!
2185
    switch (pTlv->type) {
19,626!
2186
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
4,522✔
2187
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,522✔
2188
        break;
4,521✔
2189
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
1,460✔
2190
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
1,460✔
2191
        break;
1,460✔
2192
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
4,525✔
2193
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
4,525✔
2194
        break;
4,524✔
2195
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
4,523✔
2196
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
4,523✔
2197
        break;
4,525✔
2198
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
4,525✔
2199
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
4,525✔
2200
        break;
4,528✔
2201
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
71✔
2202
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
71✔
2203
        break;
71✔
2204

2205
      default:
×
2206
        break;
×
2207
    }
2208
  }
2209

2210
  return code;
4,531✔
2211
}
2212

2213
enum {
2214
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2215
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2216
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2217
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2218
  PHY_TABLE_SCAN_CODE_TAGS,
2219
  PHY_TABLE_SCAN_CODE_SUBTABLE
2220
};
2221

2222
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,172,315✔
2223
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,172,315✔
2224

2225
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
1,172,315✔
2226
  if (TSDB_CODE_SUCCESS == code) {
1,172,233!
2227
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
1,172,312✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
1,171,831!
2230
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
1,171,886✔
2231
  }
2232
  if (TSDB_CODE_SUCCESS == code) {
1,171,695!
2233
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
1,171,815✔
2234
  }
2235
  if (TSDB_CODE_SUCCESS == code) {
1,171,499!
2236
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
1,171,697✔
2237
  }
2238
  if (TSDB_CODE_SUCCESS == code) {
1,171,527!
2239
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
1,171,843✔
2240
  }
2241
  if (TSDB_CODE_SUCCESS == code) {
1,171,440!
2242
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
1,171,565✔
2243
  }
2244
  if (TSDB_CODE_SUCCESS == code) {
1,171,417!
2245
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
1,171,574✔
2246
  }
2247
  if (TSDB_CODE_SUCCESS == code) {
1,171,377!
2248
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
1,171,569✔
2249
  }
2250
  if (TSDB_CODE_SUCCESS == code) {
1,171,468!
2251
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
1,171,706✔
2252
  }
2253
  if (TSDB_CODE_SUCCESS == code) {
1,171,350!
2254
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
1,171,568✔
2255
  }
2256
  if (TSDB_CODE_SUCCESS == code) {
1,171,386!
2257
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
1,171,637✔
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
1,171,248!
2260
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
1,171,569✔
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
1,171,203!
2263
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
1,171,617✔
2264
  }
2265
  if (TSDB_CODE_SUCCESS == code) {
1,171,562!
2266
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
1,171,823✔
2267
  }
2268
  if (TSDB_CODE_SUCCESS == code) {
1,171,600!
2269
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
1,171,904✔
2270
  }
2271
  if (TSDB_CODE_SUCCESS == code) {
1,171,714!
2272
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
1,172,039✔
2273
  }
2274
  if (TSDB_CODE_SUCCESS == code) {
1,171,320!
2275
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
1,171,762✔
2276
  }
2277
  if (TSDB_CODE_SUCCESS == code) {
1,171,252!
2278
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
1,171,756✔
2279
  }
2280
  if (TSDB_CODE_SUCCESS == code) {
1,171,017!
2281
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
1,171,689✔
2282
  }
2283
  if (TSDB_CODE_SUCCESS == code) {
1,170,755!
2284
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
1,171,481✔
2285
  }
2286
  return code;
1,171,603✔
2287
}
2288

2289
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,172,570✔
2290
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,172,570✔
2291

2292
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,172,570✔
2293
  if (TSDB_CODE_SUCCESS == code) {
1,172,526!
2294
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
1,172,575✔
2295
  }
2296
  if (TSDB_CODE_SUCCESS == code) {
1,171,945!
2297
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
1,172,019✔
2298
  }
2299
  if (TSDB_CODE_SUCCESS == code) {
1,172,097!
2300
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,172,184✔
2301
  }
2302
  if (TSDB_CODE_SUCCESS == code) {
1,172,192!
2303
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
1,172,314✔
2304
  }
2305
  if (TSDB_CODE_SUCCESS == code) {
1,172,082!
2306
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
1,172,313✔
2307
  }
2308

2309
  return code;
1,172,215✔
2310
}
2311

2312
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
4,628,734✔
2313
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
4,628,734✔
2314

2315
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
4,628,734✔
2316
  if (TSDB_CODE_SUCCESS == code) {
4,629,933!
2317
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
4,630,499✔
2318
  }
2319
  if (TSDB_CODE_SUCCESS == code) {
4,629,491!
2320
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
4,630,408✔
2321
  }
2322
  if (TSDB_CODE_SUCCESS == code) {
4,628,909!
2323
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
4,630,505✔
2324
  }
2325
  if (TSDB_CODE_SUCCESS == code) {
4,627,968!
2326
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
4,628,218✔
2327
  }
2328
  if (TSDB_CODE_SUCCESS == code) {
4,629,795!
2329
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
4,630,440✔
2330
  }
2331
  if (TSDB_CODE_SUCCESS == code) {
4,629,998!
2332
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
4,630,689✔
2333
  }
2334
  if (TSDB_CODE_SUCCESS == code) {
4,631,647!
2335
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
4,632,643✔
2336
  }
2337
  if (TSDB_CODE_SUCCESS == code) {
4,631,174✔
2338
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
4,630,906✔
2339
  }
2340
  if (TSDB_CODE_SUCCESS == code) {
4,631,029✔
2341
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
4,630,881✔
2342
  }
2343
  if (TSDB_CODE_SUCCESS == code) {
4,630,374✔
2344
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
4,630,333✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
4,632,081!
2347
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
4,632,118✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
4,632,077✔
2350
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
4,631,108✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
4,633,467✔
2353
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
4,632,773✔
2354
  }
2355
  if (TSDB_CODE_SUCCESS == code) {
4,633,045✔
2356
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
4,632,442✔
2357
  }
2358
  if (TSDB_CODE_SUCCESS == code) {
4,633,685✔
2359
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
4,633,252✔
2360
  }
2361
  if (TSDB_CODE_SUCCESS == code) {
4,634,390✔
2362
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
4,632,682✔
2363
  }
2364
  if (TSDB_CODE_SUCCESS == code) {
4,635,090✔
2365
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
4,633,716✔
2366
  }
2367
  if (TSDB_CODE_SUCCESS == code) {
4,635,451✔
2368
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
4,634,104✔
2369
  }
2370
  if (TSDB_CODE_SUCCESS == code) {
4,634,965✔
2371
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
4,633,646✔
2372
  }
2373
  if (TSDB_CODE_SUCCESS == code) {
4,634,960✔
2374
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
4,632,526✔
2375
  }
2376
  return code;
4,633,503✔
2377
}
2378

2379
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
4,631,550✔
2380
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
4,631,550✔
2381

2382
  int32_t code = TSDB_CODE_SUCCESS;
4,631,550✔
2383
  STlv*   pTlv = NULL;
4,631,550✔
2384
  tlvForEach(pDecoder, pTlv, code) {
14,219,744!
2385
    switch (pTlv->type) {
9,588,908!
2386
      case PHY_TABLE_SCAN_CODE_SCAN:
4,631,991✔
2387
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,631,991✔
2388
        break;
4,628,534✔
2389
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
4,630,848✔
2390
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
4,630,848✔
2391
        break;
4,633,427✔
2392
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2393
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2394
        break;
×
2395
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
326,069✔
2396
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
326,069✔
2397
        break;
326,233✔
2398
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2399
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2400
        break;
×
2401
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2402
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2403
        break;
×
2404
      default:
×
2405
        break;
×
2406
    }
2407
  }
2408

2409
  return code;
4,632,501✔
2410
}
2411

2412
enum {
2413
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2414
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2415
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2416
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2417
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2418
};
2419

2420
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
32,737✔
2421
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
32,737✔
2422

2423
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
32,737✔
2424
  if (TSDB_CODE_SUCCESS == code) {
32,743!
2425
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
32,743✔
2426
  }
2427
  if (TSDB_CODE_SUCCESS == code) {
32,746!
2428
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
32,746✔
2429
  }
2430
  if (TSDB_CODE_SUCCESS == code) {
32,747!
2431
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
32,747✔
2432
  }
2433
  if (TSDB_CODE_SUCCESS == code) {
32,752!
2434
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
32,752✔
2435
  }
2436

2437
  return code;
32,752✔
2438
}
2439

2440
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
1,138,872✔
2441
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
1,138,872✔
2442

2443
  int32_t code = TSDB_CODE_SUCCESS;
1,138,872✔
2444
  STlv*   pTlv = NULL;
1,138,872✔
2445
  tlvForEach(pDecoder, pTlv, code) {
6,827,843!
2446
    switch (pTlv->type) {
5,692,072!
2447
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
1,139,010✔
2448
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,139,010✔
2449
        break;
1,137,707✔
2450
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
1,137,871✔
2451
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
1,137,871✔
2452
        break;
1,137,622✔
2453
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
1,138,190✔
2454
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
1,138,190✔
2455
        break;
1,137,732✔
2456
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
1,138,344✔
2457
        code = tlvDecodeI32(pTlv, &pNode->accountId);
1,138,344✔
2458
        break;
1,138,093✔
2459
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
1,138,657✔
2460
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
1,138,657✔
2461
        break;
1,137,817✔
2462
      default:
×
2463
        break;
×
2464
    }
2465
  }
2466

2467
  return code;
1,140,463✔
2468
}
2469

2470
enum {
2471
  PHY_PROJECT_CODE_BASE_NODE = 1,
2472
  PHY_PROJECT_CODE_PROJECTIONS,
2473
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2474
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2475
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2476
};
2477

2478
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
458,495✔
2479
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
458,495✔
2480

2481
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
458,495✔
2482
  if (TSDB_CODE_SUCCESS == code) {
458,483!
2483
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
458,487✔
2484
  }
2485
  if (TSDB_CODE_SUCCESS == code) {
458,411!
2486
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
458,421✔
2487
  }
2488
  if (TSDB_CODE_SUCCESS == code) {
458,451!
2489
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
458,467✔
2490
  }
2491
  if (TSDB_CODE_SUCCESS == code) {
458,423✔
2492
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
458,419✔
2493
  }
2494

2495
  return code;
458,428✔
2496
}
2497

2498
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
1,706,277✔
2499
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
1,706,277✔
2500

2501
  int32_t code = TSDB_CODE_SUCCESS;
1,706,277✔
2502
  STlv*   pTlv = NULL;
1,706,277✔
2503
  tlvForEach(pDecoder, pTlv, code) {
10,238,904!
2504
    switch (pTlv->type) {
8,532,742!
2505
      case PHY_PROJECT_CODE_BASE_NODE:
1,706,436✔
2506
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,706,436✔
2507
        break;
1,706,147✔
2508
      case PHY_PROJECT_CODE_PROJECTIONS:
1,706,367✔
2509
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
1,706,367✔
2510
        break;
1,707,021✔
2511
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
1,706,871✔
2512
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
1,706,871✔
2513
        break;
1,706,519✔
2514
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
1,706,575✔
2515
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,706,575✔
2516
        break;
1,706,470✔
2517
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
1,706,493✔
2518
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
1,706,493✔
2519
        break;
1,706,470✔
2520
      default:
×
2521
        break;
×
2522
    }
2523
  }
2524

2525
  return code;
1,705,976✔
2526
}
2527

2528
enum {
2529
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2530
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2531
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2532
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2533
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2534
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2535
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2536
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2537
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2538
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2539
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2540
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2541
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2542
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2543
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2544
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2545
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2546
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2547
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2548
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2549
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2550
};
2551

2552
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
81,654✔
2553
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
81,654✔
2554

2555
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
81,654✔
2556
  if (TSDB_CODE_SUCCESS == code) {
81,637!
2557
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
81,637✔
2558
  }
2559
  if (TSDB_CODE_SUCCESS == code) {
81,636!
2560
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
81,636✔
2561
  }
2562
  if (TSDB_CODE_SUCCESS == code) {
81,638!
2563
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
81,638✔
2564
  }
2565
  if (TSDB_CODE_SUCCESS == code) {
81,639!
2566
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
81,639✔
2567
  }
2568
  if (TSDB_CODE_SUCCESS == code) {
81,639!
2569
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
81,639✔
2570
  }  
2571
  if (TSDB_CODE_SUCCESS == code) {
81,637!
2572
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
81,637✔
2573
  }
2574
  if (TSDB_CODE_SUCCESS == code) {
81,637!
2575
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
81,637✔
2576
  }  
2577
  if (TSDB_CODE_SUCCESS == code) {
81,636!
2578
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
81,636✔
2579
  }  
2580
  if (TSDB_CODE_SUCCESS == code) {
81,639!
2581
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
81,639✔
2582
  }  
2583
  if (TSDB_CODE_SUCCESS == code) {
81,646!
2584
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
81,646✔
2585
  }
2586
  if (TSDB_CODE_SUCCESS == code) {
81,646!
2587
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
81,646✔
2588
  }
2589
  if (TSDB_CODE_SUCCESS == code) {
81,646!
2590
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
81,646✔
2591
  }
2592
  if (TSDB_CODE_SUCCESS == code) {
81,645!
2593
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
81,645✔
2594
  }
2595
  if (TSDB_CODE_SUCCESS == code) {
81,645!
2596
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
81,645✔
2597
  }
2598
  if (TSDB_CODE_SUCCESS == code) {
81,629!
2599
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
81,629✔
2600
  }
2601
  if (TSDB_CODE_SUCCESS == code) {
81,627!
2602
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
81,627✔
2603
  }
2604
  if (TSDB_CODE_SUCCESS == code) {
81,630!
2605
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
81,630✔
2606
  }
2607
  if (TSDB_CODE_SUCCESS == code) {
81,627!
2608
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
81,627✔
2609
  }
2610
  if (TSDB_CODE_SUCCESS == code) {
81,626!
2611
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
81,626✔
2612
  }
2613
  if (TSDB_CODE_SUCCESS == code) {
81,631!
2614
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
81,631✔
2615
  }
2616
  
2617
  return code;
81,626✔
2618
}
2619

2620
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
88,251✔
2621
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
88,251✔
2622

2623
  int32_t code = TSDB_CODE_SUCCESS;
88,251✔
2624
  STlv*   pTlv = NULL;
88,251✔
2625
  tlvForEach(pDecoder, pTlv, code) {
1,296,778!
2626
    switch (pTlv->type) {
1,208,532!
2627
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
88,257✔
2628
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
88,257✔
2629
        break;
88,242✔
2630
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
88,245✔
2631
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
88,245✔
2632
        break;
88,243✔
2633
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
88,248✔
2634
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
88,248✔
2635
        break;
88,244✔
2636
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
668✔
2637
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
668✔
2638
        break;
668✔
2639
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
174✔
2640
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
174✔
2641
        break;
174✔
2642
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
88,244✔
2643
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
88,244✔
2644
        break;
88,239✔
2645
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
249✔
2646
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
249✔
2647
        break;
249✔
2648
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
159✔
2649
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
159✔
2650
        break;
159✔
2651
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
88,235✔
2652
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
88,235✔
2653
        break;
88,234✔
2654
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
88,234✔
2655
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
88,234✔
2656
        break;
88,230✔
2657
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
225✔
2658
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
225✔
2659
        break;
225✔
2660
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
225✔
2661
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
225✔
2662
        break;
225✔
2663
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
29,760✔
2664
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
29,760✔
2665
        break;
29,760✔
2666
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
29,889✔
2667
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
29,889✔
2668
        break;
29,889✔
2669
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
88,224✔
2670
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
88,224✔
2671
        break;
88,265✔
2672
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
88,263✔
2673
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
88,263✔
2674
        break;
88,257✔
2675
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
88,253✔
2676
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
88,253✔
2677
        break;
88,254✔
2678
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
88,250✔
2679
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
88,250✔
2680
        break;
88,244✔
2681
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
88,244✔
2682
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
88,244✔
2683
        break;
88,243✔
2684
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
88,244✔
2685
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
88,244✔
2686
        break;
88,241✔
2687
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
88,242✔
2688
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
88,242✔
2689
        break;
88,242✔
2690
      default:
×
2691
        break;
×
2692
    }
2693
  }
2694

2695
  return code;
88,215✔
2696
}
2697

2698
enum {
2699
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2700
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2701
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2702
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2703
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2704
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2705
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2706
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2707
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2708
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2709
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2710
  PHY_HASH_JOIN_CODE_TARGETS,
2711
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2712
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2713
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2714
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2715
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2716
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2717
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2718
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2719

2720
};
2721

2722
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,138✔
2723
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
9,138✔
2724

2725
  int32_t code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,138✔
2726
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2727
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_TYPE, pNode->joinType);
9,138✔
2728
  }
2729
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2730
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_STYPE, pNode->subType);
9,138✔
2731
  }
2732
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2733
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN, nodeListToMsg, pNode->pOnLeft);
9,138✔
2734
  }
2735
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2736
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN, nodeListToMsg, pNode->pOnRight);
9,138✔
2737
  }  
2738
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2739
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
9,138✔
2740
  }
2741
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2742
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
9,138✔
2743
  }
2744
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2745
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID, pNode->leftPrimSlotId);
9,138✔
2746
  }
2747
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2748
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID, pNode->rightPrimSlotId);
9,138✔
2749
  }
2750
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2751
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET, pNode->timeRangeTarget);
9,138✔
2752
  }
2753
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2754
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
9,138✔
2755
  }
2756
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2757
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
9,138✔
2758
  }
2759
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2760
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
9,138✔
2761
  }
2762
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2763
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
9,138✔
2764
  }
2765
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2766
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
9,138✔
2767
  }
2768
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2769
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
9,138✔
2770
  }
2771
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2772
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_ON_COND, nodeToMsg, pNode->pLeftOnCond);
9,138✔
2773
  }
2774
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2775
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_ON_COND, nodeToMsg, pNode->pRightOnCond);
9,138✔
2776
  }
2777
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2778
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY, pNode->timeRange.skey);
9,138✔
2779
  }
2780
  if (TSDB_CODE_SUCCESS == code) {
9,138!
2781
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY, pNode->timeRange.ekey);
9,138✔
2782
  }
2783

2784
  return code;
9,138✔
2785
}
2786

2787

2788
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
9,145✔
2789
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
9,145✔
2790

2791
  int32_t code = TSDB_CODE_SUCCESS;
9,145✔
2792
  STlv*   pTlv = NULL;
9,145✔
2793
  tlvForEach(pDecoder, pTlv, code) {
146,320!
2794
    switch (pTlv->type) {
137,175!
2795
      case PHY_HASH_JOIN_CODE_BASE_NODE:
9,145✔
2796
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,145✔
2797
        break;
9,145✔
2798
      case PHY_HASH_JOIN_CODE_JOIN_TYPE:
9,145✔
2799
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
9,145✔
2800
        break;
9,145✔
2801
      case PHY_HASH_JOIN_CODE_JOIN_STYPE:
9,145✔
2802
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
9,145✔
2803
        break;
9,145✔
2804
      case PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN:
9,145✔
2805
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnLeft);
9,145✔
2806
        break;
9,145✔
2807
      case PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN:
9,145✔
2808
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnRight);
9,145✔
2809
        break;
9,145✔
2810
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR:
×
2811
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
×
2812
        break;
×
2813
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR:
×
2814
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
×
2815
        break;
×
2816
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID:
9,145✔
2817
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
9,145✔
2818
        break;
9,145✔
2819
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID:
9,145✔
2820
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
9,145✔
2821
        break;
9,145✔
2822
      case PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET:
9,145✔
2823
        code = tlvDecodeI32(pTlv, &pNode->timeRangeTarget);
9,145✔
2824
        break;
9,145✔
2825
      case PHY_HASH_JOIN_CODE_ON_CONDITIONS:
×
2826
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
×
2827
        break;
×
2828
      case PHY_HASH_JOIN_CODE_TARGETS:
9,145✔
2829
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
9,145✔
2830
        break;
9,145✔
2831
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0:
9,145✔
2832
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
9,145✔
2833
        break;
9,145✔
2834
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1:
9,145✔
2835
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
9,145✔
2836
        break;
9,145✔
2837
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0:
9,145✔
2838
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
9,145✔
2839
        break;
9,145✔
2840
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1:
9,145✔
2841
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
9,145✔
2842
        break;
9,145✔
2843
      case PHY_HASH_JOIN_CODE_LEFT_ON_COND:
×
2844
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeftOnCond);
×
2845
        break;
×
2846
      case PHY_HASH_JOIN_CODE_RIGHT_ON_COND:
×
2847
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRightOnCond);
×
2848
        break;
×
2849
      case PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY:
9,145✔
2850
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
9,145✔
2851
        break;
9,145✔
2852
      case PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY:
9,145✔
2853
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
9,145✔
2854
        break;
9,145✔
2855
      default:
×
2856
        break;
×
2857
    }
2858
  }
2859

2860
  return code;
9,145✔
2861
}
2862

2863

2864
enum {
2865
  PHY_AGG_CODE_BASE_NODE = 1,
2866
  PHY_AGG_CODE_EXPR,
2867
  PHY_AGG_CODE_GROUP_KEYS,
2868
  PHY_AGG_CODE_AGG_FUNCS,
2869
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
2870
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
2871
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
2872
};
2873

2874
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
701,938✔
2875
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
701,938✔
2876

2877
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
701,938✔
2878
  if (TSDB_CODE_SUCCESS == code) {
701,814!
2879
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
701,815✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
701,746✔
2882
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
701,673✔
2883
  }
2884
  if (TSDB_CODE_SUCCESS == code) {
701,785✔
2885
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
701,720✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
701,637✔
2888
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
701,581✔
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
701,728✔
2891
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
701,673✔
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
701,655✔
2894
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
701,584✔
2895
  }
2896

2897
  return code;
701,551✔
2898
}
2899

2900
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
2,211,180✔
2901
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
2,211,180✔
2902

2903
  int32_t code = TSDB_CODE_SUCCESS;
2,211,180✔
2904
  STlv*   pTlv = NULL;
2,211,180✔
2905
  tlvForEach(pDecoder, pTlv, code) {
13,559,505!
2906
    switch (pTlv->type) {
11,351,156!
2907
      case PHY_AGG_CODE_BASE_NODE:
2,211,297✔
2908
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,211,297✔
2909
        break;
2,209,937✔
2910
      case PHY_AGG_CODE_EXPR:
264,852✔
2911
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
264,852✔
2912
        break;
264,939✔
2913
      case PHY_AGG_CODE_GROUP_KEYS:
339,826✔
2914
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
339,826✔
2915
        break;
339,894✔
2916
      case PHY_AGG_CODE_AGG_FUNCS:
1,901,890✔
2917
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
1,901,890✔
2918
        break;
1,902,707✔
2919
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
2,211,467✔
2920
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
2,211,467✔
2921
        break;
2,210,236✔
2922
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
2,211,073✔
2923
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
2,211,073✔
2924
        break;
2,210,251✔
2925
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
2,210,751✔
2926
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
2,210,751✔
2927
        break;
2,210,361✔
2928
      default:
×
2929
        break;
×
2930
    }
2931
  }
2932

2933
  return code;
2,216,695✔
2934
}
2935

2936
enum {
2937
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
2938
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
2939
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
2940
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
2941
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
2942
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA
2943
};
2944

2945
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
605,396✔
2946
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
605,396✔
2947

2948
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
605,396✔
2949
  if (TSDB_CODE_SUCCESS == code) {
605,369!
2950
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
605,369✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
605,363✔
2953
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
605,360✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
605,369✔
2956
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
605,366✔
2957
  }
2958
  if (TSDB_CODE_SUCCESS == code) {
605,371✔
2959
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
605,368✔
2960
  }
2961
  if (TSDB_CODE_SUCCESS == code) {
605,350✔
2962
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
605,347✔
2963
  }
2964

2965
  return code;
605,354✔
2966
}
2967

2968
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
3,413,703✔
2969
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
3,413,703✔
2970

2971
  int32_t code = TSDB_CODE_SUCCESS;
3,413,703✔
2972
  STlv*   pTlv = NULL;
3,413,703✔
2973
  tlvForEach(pDecoder, pTlv, code) {
23,895,224!
2974
    switch (pTlv->type) {
20,481,623!
2975
      case PHY_EXCHANGE_CODE_BASE_NODE:
3,413,714✔
2976
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,413,714✔
2977
        break;
3,413,548✔
2978
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
3,413,565✔
2979
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
3,413,565✔
2980
        break;
3,413,531✔
2981
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
3,413,528✔
2982
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
3,413,528✔
2983
        break;
3,413,509✔
2984
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
3,413,543✔
2985
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
3,413,543✔
2986
        break;
3,413,547✔
2987
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
3,413,552✔
2988
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
3,413,552✔
2989
        break;
3,413,764✔
2990
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
3,413,721✔
2991
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
3,413,721✔
2992
        break;
3,413,622✔
2993
      default:
×
2994
        break;
×
2995
    }
2996
  }
2997

2998
  return code;
3,413,408✔
2999
}
3000

3001
enum {
3002
  PHY_MERGE_CODE_BASE_NODE = 1,
3003
  PHY_MERGE_CODE_MERGE_KEYS,
3004
  PHY_MERGE_CODE_TARGETS,
3005
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3006
  PHY_MERGE_CODE_SRC_GROUP_ID,
3007
  PHY_MERGE_CODE_GROUP_SORT,
3008
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3009
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3010
  PHY_MERGE_CODE_TYPE,
3011
};
3012

3013
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
73,413✔
3014
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
73,413✔
3015

3016
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
73,413✔
3017
  if (TSDB_CODE_SUCCESS == code) {
73,413!
3018
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
73,413✔
3019
  }
3020
  if (TSDB_CODE_SUCCESS == code) {
73,411!
3021
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
73,411✔
3022
  }
3023
  if (TSDB_CODE_SUCCESS == code) {
73,413!
3024
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
73,413✔
3025
  }
3026
  if (TSDB_CODE_SUCCESS == code) {
73,412!
3027
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
73,412✔
3028
  }
3029
  if (TSDB_CODE_SUCCESS == code) {
73,413!
3030
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
73,413✔
3031
  }
3032
  if (TSDB_CODE_SUCCESS == code) {
73,413✔
3033
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
73,412✔
3034
  }
3035
  if (TSDB_CODE_SUCCESS == code) {
73,414✔
3036
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
73,413✔
3037
  }
3038
  if (TSDB_CODE_SUCCESS == code) {
73,414✔
3039
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
73,413✔
3040
  }
3041

3042
  return code;
73,413✔
3043
}
3044

3045
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
1,297,881✔
3046
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
1,297,881✔
3047

3048
  int32_t code = TSDB_CODE_SUCCESS;
1,297,881✔
3049
  STlv*   pTlv = NULL;
1,297,881✔
3050
  tlvForEach(pDecoder, pTlv, code) {
12,977,267!
3051
    switch (pTlv->type) {
11,679,394!
3052
      case PHY_MERGE_CODE_BASE_NODE:
1,297,879✔
3053
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,297,879✔
3054
        break;
1,297,865✔
3055
      case PHY_MERGE_CODE_MERGE_KEYS:
1,296,444✔
3056
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
1,296,444✔
3057
        break;
1,296,471✔
3058
      case PHY_MERGE_CODE_TARGETS:
1,297,883✔
3059
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
1,297,883✔
3060
        break;
1,297,879✔
3061
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
1,297,872✔
3062
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
1,297,872✔
3063
        break;
1,297,866✔
3064
      case PHY_MERGE_CODE_SRC_GROUP_ID:
1,297,867✔
3065
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
1,297,867✔
3066
        break;
1,297,857✔
3067
      case PHY_MERGE_CODE_GROUP_SORT:
1,297,858✔
3068
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
1,297,858✔
3069
        break;
1,297,852✔
3070
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
1,297,856✔
3071
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,297,856✔
3072
        break;
1,297,858✔
3073
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
1,297,862✔
3074
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
1,297,862✔
3075
        break;
1,297,867✔
3076
      case PHY_MERGE_CODE_TYPE:
1,297,873✔
3077
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
1,297,873✔
3078
        break;
1,297,871✔
3079
      default:
×
3080
        break;
×
3081
    }
3082
  }
3083

3084
  return code;
1,297,785✔
3085
}
3086

3087
enum {
3088
  PHY_SORT_CODE_BASE_NODE = 1,
3089
  PHY_SORT_CODE_EXPR,
3090
  PHY_SORT_CODE_SORT_KEYS,
3091
  PHY_SORT_CODE_TARGETS,
3092
  PHY_SORT_CODE_CALC_GROUPID,
3093
  PHY_SORT_CODE_EXCLUDE_PK_COL
3094
};
3095

3096
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
148,143✔
3097
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
148,143✔
3098

3099
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
148,143✔
3100
  if (TSDB_CODE_SUCCESS == code) {
148,142!
3101
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
148,143✔
3102
  }
3103
  if (TSDB_CODE_SUCCESS == code) {
148,140!
3104
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
148,142✔
3105
  }
3106
  if (TSDB_CODE_SUCCESS == code) {
148,155!
3107
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
148,157✔
3108
  }
3109
  if (TSDB_CODE_SUCCESS == code) {
148,142!
3110
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
148,143✔
3111
  }
3112
  if (TSDB_CODE_SUCCESS == code) {
148,146!
3113
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
148,147✔
3114
  }
3115

3116
  return code;
148,149✔
3117
}
3118

3119
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
848,410✔
3120
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
848,410✔
3121

3122
  int32_t code = TSDB_CODE_SUCCESS;
848,410✔
3123
  STlv*   pTlv = NULL;
848,410✔
3124
  tlvForEach(pDecoder, pTlv, code) {
5,091,544!
3125
    switch (pTlv->type) {
4,242,606!
3126
      case PHY_SORT_CODE_BASE_NODE:
848,413✔
3127
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
848,413✔
3128
        break;
848,420✔
3129
      case PHY_SORT_CODE_EXPR:
954✔
3130
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
954✔
3131
        break;
955✔
3132
      case PHY_SORT_CODE_SORT_KEYS:
848,420✔
3133
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
848,420✔
3134
        break;
848,478✔
3135
      case PHY_SORT_CODE_TARGETS:
848,463✔
3136
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
848,463✔
3137
        break;
848,474✔
3138
      case PHY_SORT_CODE_CALC_GROUPID:
848,456✔
3139
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
848,456✔
3140
        break;
848,423✔
3141
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
848,422✔
3142
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
848,422✔
3143
      default:
848,384✔
3144
        break;
848,384✔
3145
    }
3146
  }
3147

3148
  return code;
848,882✔
3149
}
3150

3151
enum {
3152
  PHY_WINDOW_CODE_BASE_NODE = 1,
3153
  PHY_WINDOW_CODE_EXPR,
3154
  PHY_WINDOW_CODE_FUNCS,
3155
  PHY_WINDOW_CODE_TS_PK,
3156
  PHY_WINDOW_CODE_TS_END,
3157
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3158
  PHY_WINDOW_CODE_WATERMARK,
3159
  PHY_WINDOW_CODE_DELETE_MARK,
3160
  PHY_WINDOW_CODE_IG_EXPIRED,
3161
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3162
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3163
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3164
  PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY,
3165
};
3166

3167
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
76,582✔
3168
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
76,582✔
3169

3170
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
76,582✔
3171
  if (TSDB_CODE_SUCCESS == code) {
76,546!
3172
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
76,546✔
3173
  }
3174
  if (TSDB_CODE_SUCCESS == code) {
76,552✔
3175
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
76,550✔
3176
  }
3177
  if (TSDB_CODE_SUCCESS == code) {
76,510!
3178
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
76,513✔
3179
  }
3180
  if (TSDB_CODE_SUCCESS == code) {
76,492!
3181
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
76,498✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
76,496!
3184
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
76,502✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
76,531!
3187
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
76,533✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
76,514!
3190
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
76,518✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
76,511!
3193
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
76,520✔
3194
  }
3195
  if (TSDB_CODE_SUCCESS == code) {
76,519!
3196
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
76,527✔
3197
  }
3198
  if (TSDB_CODE_SUCCESS == code) {
76,523!
3199
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY, pNode->destHasPrimaryKey);
76,525✔
3200
  }
3201

3202
  return code;
76,536✔
3203
}
3204

3205
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
2,353,264✔
3206
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
2,353,264✔
3207

3208
  int32_t code = TSDB_CODE_SUCCESS;
2,353,264✔
3209
  STlv*   pTlv = NULL;
2,353,264✔
3210
  tlvForEach(pDecoder, pTlv, code) {
23,643,808!
3211
    switch (pTlv->type) {
21,290,711!
3212
      case PHY_WINDOW_CODE_BASE_NODE:
2,353,453✔
3213
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,353,453✔
3214
        break;
2,352,932✔
3215
      case PHY_WINDOW_CODE_EXPR:
8,197✔
3216
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
8,197✔
3217
        break;
8,201✔
3218
      case PHY_WINDOW_CODE_FUNCS:
2,352,904✔
3219
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
2,352,904✔
3220
        break;
2,354,876✔
3221
      case PHY_WINDOW_CODE_TS_PK:
2,354,841✔
3222
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
2,354,841✔
3223
        break;
2,354,715✔
3224
      case PHY_WINDOW_CODE_TS_END:
94,661✔
3225
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
94,661✔
3226
        break;
94,659✔
3227
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
2,354,633✔
3228
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
2,354,633✔
3229
        break;
2,354,284✔
3230
      case PHY_WINDOW_CODE_WATERMARK:
2,354,217✔
3231
        code = tlvDecodeI64(pTlv, &pNode->watermark);
2,354,217✔
3232
        break;
2,354,124✔
3233
      case PHY_WINDOW_CODE_DELETE_MARK:
2,354,342✔
3234
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
2,354,342✔
3235
        break;
2,354,117✔
3236
      case PHY_WINDOW_CODE_IG_EXPIRED:
2,354,475✔
3237
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
2,354,475✔
3238
        break;
2,354,107✔
3239
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
2,354,370✔
3240
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
2,354,370✔
3241
        break;
2,354,214✔
3242
      case PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY:
2,354,618✔
3243
        code = tlvDecodeI8(pTlv, &pNode->destHasPrimaryKey);
2,354,618✔
3244
        break;
2,354,315✔
3245
      default:
×
3246
        break;
×
3247
    }
3248
  }
3249

3250
  return code;
2,359,239✔
3251
}
3252

3253
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3254

3255
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
66,924✔
3256
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
66,924✔
3257

3258
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
66,924✔
3259
  if (TSDB_CODE_SUCCESS == code) {
66,922!
3260
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
66,924✔
3261
  }
3262
  if (TSDB_CODE_SUCCESS == code) {
66,892✔
3263
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
66,889✔
3264
  }
3265
  if (TSDB_CODE_SUCCESS == code) {
66,882✔
3266
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
66,881✔
3267
  }
3268
  if (TSDB_CODE_SUCCESS == code) {
66,879!
3269
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
66,879✔
3270
  }
3271

3272
  return code;
66,865✔
3273
}
3274

3275
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
66,972✔
3276
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
66,972✔
3277

3278
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
66,972✔
3279
  if (TSDB_CODE_SUCCESS == code) {
66,920!
3280
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
66,924✔
3281
  }
3282
  if (TSDB_CODE_SUCCESS == code) {
66,870!
3283
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
66,874✔
3284
  }
3285

3286
  return code;
66,900✔
3287
}
3288

3289
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,922,922✔
3290
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
1,922,922✔
3291

3292
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
1,922,922✔
3293
  if (TSDB_CODE_SUCCESS == code) {
1,923,109!
3294
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
1,923,205✔
3295
  }
3296
  if (TSDB_CODE_SUCCESS == code) {
1,922,903!
3297
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
1,922,922✔
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
1,922,759!
3300
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
1,922,816✔
3301
  }
3302
  if (TSDB_CODE_SUCCESS == code) {
1,923,220!
3303
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
1,923,293✔
3304
  }
3305

3306
  return code;
1,923,307✔
3307
}
3308

3309
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
1,922,474✔
3310
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
1,922,474✔
3311

3312
  int32_t code = TSDB_CODE_SUCCESS;
1,922,474✔
3313
  STlv*   pTlv = NULL;
1,922,474✔
3314
  tlvForEach(pDecoder, pTlv, code) {
7,691,535!
3315
    switch (pTlv->type) {
5,768,049!
3316
      case PHY_INTERVAL_CODE_WINDOW:
1,923,041✔
3317
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,923,041✔
3318
        break;
1,923,107✔
3319
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
1,923,162✔
3320
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
1,923,162✔
3321
        break;
1,923,268✔
3322
      case PHY_INTERVAL_CODE_TIME_RANGE:
1,923,195✔
3323
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
1,923,195✔
3324
      default:
1,922,686✔
3325
        break;
1,922,686✔
3326
    }
3327
  }
3328

3329
  return code;
1,922,644✔
3330
}
3331

3332
enum {
3333
  PHY_FILL_CODE_BASE_NODE = 1,
3334
  PHY_FILL_CODE_MODE,
3335
  PHY_FILL_CODE_FILL_EXPRS,
3336
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3337
  PHY_FILL_CODE_WSTART,
3338
  PHY_FILL_CODE_VALUES,
3339
  PHY_FILL_CODE_TIME_RANGE,
3340
  PHY_FILL_CODE_INPUT_TS_ORDER,
3341
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3342
};
3343

3344
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,279✔
3345
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
11,279✔
3346

3347
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
11,279✔
3348
  if (TSDB_CODE_SUCCESS == code) {
11,276!
3349
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
11,276✔
3350
  }
3351
  if (TSDB_CODE_SUCCESS == code) {
11,276✔
3352
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
11,274✔
3353
  }
3354
  if (TSDB_CODE_SUCCESS == code) {
11,281✔
3355
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
11,279✔
3356
  }
3357
  if (TSDB_CODE_SUCCESS == code) {
11,278✔
3358
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
11,276✔
3359
  }
3360
  if (TSDB_CODE_SUCCESS == code) {
11,280✔
3361
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
11,278✔
3362
  }
3363
  if (TSDB_CODE_SUCCESS == code) {
11,279✔
3364
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
11,277✔
3365
  }
3366
  if (TSDB_CODE_SUCCESS == code) {
11,277✔
3367
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
11,275✔
3368
  }
3369

3370
  return code;
11,276✔
3371
}
3372

3373
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
465,295✔
3374
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
465,295✔
3375

3376
  int32_t code = TSDB_CODE_SUCCESS;
465,295✔
3377
  STlv*   pTlv = NULL;
465,295✔
3378
  tlvForEach(pDecoder, pTlv, code) {
3,433,020!
3379
    switch (pTlv->type) {
2,967,722!
3380
      case PHY_FILL_CODE_BASE_NODE:
465,295✔
3381
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
465,295✔
3382
        break;
465,292✔
3383
      case PHY_FILL_CODE_MODE:
465,292✔
3384
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
465,292✔
3385
        break;
465,292✔
3386
      case PHY_FILL_CODE_FILL_EXPRS:
465,292✔
3387
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
465,292✔
3388
        break;
465,297✔
3389
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
92,928✔
3390
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
92,928✔
3391
        break;
92,926✔
3392
      case PHY_FILL_CODE_WSTART:
465,291✔
3393
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
465,291✔
3394
        break;
465,295✔
3395
      case PHY_FILL_CODE_VALUES:
381,072✔
3396
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
381,072✔
3397
        break;
381,074✔
3398
      case PHY_FILL_CODE_TIME_RANGE:
465,294✔
3399
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
465,294✔
3400
        break;
465,288✔
3401
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
167,258✔
3402
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
167,258✔
3403
        break;
167,261✔
3404
      default:
×
3405
        break;
×
3406
    }
3407
  }
3408

3409
  return code;
465,281✔
3410
}
3411

3412
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3413

3414
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,941✔
3415
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
3,941✔
3416

3417
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
3,941✔
3418
  if (TSDB_CODE_SUCCESS == code) {
3,941!
3419
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
3,941✔
3420
  }
3421

3422
  return code;
3,941✔
3423
}
3424

3425
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
94,659✔
3426
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
94,659✔
3427

3428
  int32_t code = TSDB_CODE_SUCCESS;
94,659✔
3429
  STlv*   pTlv = NULL;
94,659✔
3430
  tlvForEach(pDecoder, pTlv, code) {
283,975✔
3431
    switch (pTlv->type) {
189,317!
3432
      case PHY_SESSION_CODE_WINDOW:
94,660✔
3433
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
94,660✔
3434
        break;
94,659✔
3435
      case PHY_SESSION_CODE_GAP:
94,657✔
3436
        code = tlvDecodeI64(pTlv, &pNode->gap);
94,657✔
3437
        break;
94,657✔
3438
      default:
×
3439
        break;
×
3440
    }
3441
  }
3442

3443
  return code;
94,658✔
3444
}
3445

3446
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY };
3447

3448
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,583✔
3449
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
5,583✔
3450

3451
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
5,583✔
3452
  if (TSDB_CODE_SUCCESS == code) {
5,583!
3453
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
5,583✔
3454
  }
3455

3456
  return code;
5,583✔
3457
}
3458

3459
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
69,388✔
3460
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
69,388✔
3461

3462
  int32_t code = TSDB_CODE_SUCCESS;
69,388✔
3463
  STlv*   pTlv = NULL;
69,388✔
3464
  tlvForEach(pDecoder, pTlv, code) {
208,164!
3465
    switch (pTlv->type) {
138,777!
3466
      case PHY_STATE_CODE_WINDOW:
69,388✔
3467
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
69,388✔
3468
        break;
69,389✔
3469
      case PHY_STATE_CODE_KEY:
69,389✔
3470
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
69,389✔
3471
        break;
69,387✔
3472
      default:
×
3473
        break;
×
3474
    }
3475
  }
3476

3477
  return code;
69,387✔
3478
}
3479

3480
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND };
3481

3482
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
29✔
3483
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
29✔
3484

3485
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
29✔
3486
  if (TSDB_CODE_SUCCESS == code) {
29!
3487
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
29✔
3488
  }
3489
  if (TSDB_CODE_SUCCESS == code) {
29!
3490
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
29✔
3491
  }
3492

3493
  return code;
29✔
3494
}
3495

3496
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
261,205✔
3497
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
261,205✔
3498

3499
  int32_t code = TSDB_CODE_SUCCESS;
261,205✔
3500
  STlv*   pTlv = NULL;
261,205✔
3501
  tlvForEach(pDecoder, pTlv, code) {
1,044,818!
3502
    switch (pTlv->type) {
783,614!
3503
      case PHY_EVENT_CODE_WINDOW:
261,205✔
3504
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
261,205✔
3505
        break;
261,205✔
3506
      case PHY_EVENT_CODE_START_COND:
261,205✔
3507
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
261,205✔
3508
        break;
261,204✔
3509
      case PHY_EVENT_CODE_END_COND:
261,204✔
3510
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
261,204✔
3511
        break;
261,204✔
3512
      default:
×
3513
        break;
×
3514
    }
3515
  }
3516

3517
  return code;
261,204✔
3518
}
3519

3520
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3521

3522
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
45✔
3523
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
45✔
3524

3525
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
45✔
3526
  if (TSDB_CODE_SUCCESS == code) {
45!
3527
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
45✔
3528
  }
3529
  if (TSDB_CODE_SUCCESS == code) {
45!
3530
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
45✔
3531
  }
3532

3533
  return code;
45✔
3534
}
3535

3536
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
5,703✔
3537
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
5,703✔
3538

3539
  int32_t code = TSDB_CODE_SUCCESS;
5,703✔
3540
  STlv*   pTlv = NULL;
5,703✔
3541
  tlvForEach(pDecoder, pTlv, code) {
22,767!
3542
    switch (pTlv->type) {
17,076!
3543
      case PHY_COUNT_CODE_WINDOW:
5,704✔
3544
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
5,704✔
3545
        break;
5,693✔
3546
      case PHY_COUNT_CODE_WINDOW_COUNT:
5,689✔
3547
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
5,689✔
3548
        break;
5,688✔
3549
      case PHY_COUNT_CODE_WINDOW_SLIDING:
5,683✔
3550
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
5,683✔
3551
        break;
5,683✔
3552
      default:
×
3553
        break;
×
3554
    }
3555
  }
3556

3557
  return code;
5,686✔
3558
}
3559

3560
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3561

3562
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3563
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3564

3565
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3566
  if (TSDB_CODE_SUCCESS == code) {
×
3567
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3568
  }
3569
  if (TSDB_CODE_SUCCESS == code) {
×
3570
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3571
  }
3572

3573
  return code;
×
3574
}
3575

3576
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3577
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3578

3579
  int32_t code = TSDB_CODE_SUCCESS;
×
3580
  STlv*   pTlv = NULL;
×
3581
  tlvForEach(pDecoder, pTlv, code) {
×
3582
    switch (pTlv->type) {
×
3583
      case PHY_ANOMALY_CODE_WINDOW:
×
3584
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3585
        break;
×
3586
      case PHY_ANOMALY_CODE_KEY:
×
3587
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAnomalyKey);
×
3588
        break;
×
3589
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
×
3590
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
3591
        break;
×
3592
      default:
×
3593
        break;
×
3594
    }
3595
  }
3596

3597
  return code;
×
3598
}
3599

3600
enum {
3601
  PHY_PARTITION_CODE_BASE_NODE = 1,
3602
  PHY_PARTITION_CODE_EXPR,
3603
  PHY_PARTITION_CODE_KEYS,
3604
  PHY_PARTITION_CODE_TARGETS,
3605
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3606
  PHY_PARTITION_CODE_TS_SLOTID
3607
};
3608

3609
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,281✔
3610
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
14,281✔
3611

3612
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
14,281✔
3613
  if (TSDB_CODE_SUCCESS == code) {
14,275!
3614
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
14,276✔
3615
  }
3616
  if (TSDB_CODE_SUCCESS == code) {
14,278!
3617
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
14,279✔
3618
  }
3619
  if (TSDB_CODE_SUCCESS == code) {
14,267!
3620
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
14,268✔
3621
  }
3622
  if (TSDB_CODE_SUCCESS == code) {
14,276!
3623
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
14,277✔
3624
  }
3625
  if (TSDB_CODE_SUCCESS == code) {
14,277!
3626
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
14,279✔
3627
  }
3628

3629
  return code;
14,278✔
3630
}
3631

3632
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
24,508✔
3633
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
24,508✔
3634

3635
  int32_t code = TSDB_CODE_SUCCESS;
24,508✔
3636
  STlv*   pTlv = NULL;
24,508✔
3637
  tlvForEach(pDecoder, pTlv, code) {
150,813!
3638
    switch (pTlv->type) {
126,303!
3639
      case PHY_PARTITION_CODE_BASE_NODE:
24,513✔
3640
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
24,513✔
3641
        break;
24,494✔
3642
      case PHY_PARTITION_CODE_EXPR:
3,757✔
3643
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
3,757✔
3644
        break;
3,760✔
3645
      case PHY_PARTITION_CODE_KEYS:
24,503✔
3646
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
24,503✔
3647
        break;
24,516✔
3648
      case PHY_PARTITION_CODE_TARGETS:
24,511✔
3649
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
24,511✔
3650
        break;
24,522✔
3651
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
24,515✔
3652
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
24,515✔
3653
        break;
24,511✔
3654
      case PHY_PARTITION_CODE_TS_SLOTID:
24,504✔
3655
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
24,504✔
3656
        break;
24,502✔
3657
      default:
×
3658
        break;
×
3659
    }
3660
  }
3661

3662
  return code;
24,485✔
3663
}
3664

3665
enum { PHY_STREAM_PARTITION_CODE_BASE_NODE = 1, PHY_STREAM_PARTITION_CODE_TAGS, PHY_STREAM_PARTITION_CODE_SUBTABLE };
3666

3667
static int32_t physiStreamPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3668
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
×
3669

3670
  int32_t code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_BASE_NODE, physiPartitionNodeToMsg, &pNode->part);
×
3671
  if (TSDB_CODE_SUCCESS == code) {
×
3672
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_TAGS, nodeListToMsg, pNode->pTags);
×
3673
  }
3674
  if (TSDB_CODE_SUCCESS == code) {
×
3675
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
×
3676
  }
3677

3678
  return code;
×
3679
}
3680

3681
static int32_t msgToPhysiStreamPartitionNode(STlvDecoder* pDecoder, void* pObj) {
×
3682
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
×
3683

3684
  int32_t code = TSDB_CODE_SUCCESS;
×
3685
  STlv*   pTlv = NULL;
×
3686
  tlvForEach(pDecoder, pTlv, code) {
×
3687
    switch (pTlv->type) {
×
3688
      case PHY_STREAM_PARTITION_CODE_BASE_NODE:
×
3689
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiPartitionNode, &pNode->part);
×
3690
        break;
×
3691
      case PHY_STREAM_PARTITION_CODE_TAGS:
×
3692
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
3693
        break;
×
3694
      case PHY_STREAM_PARTITION_CODE_SUBTABLE:
×
3695
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
3696
        break;
×
3697
      default:
×
3698
        break;
×
3699
    }
3700
  }
3701

3702
  return code;
×
3703
}
3704

3705
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3706

3707
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
21,087✔
3708
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
21,087✔
3709

3710
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
21,087✔
3711
  if (TSDB_CODE_SUCCESS == code) {
21,077!
3712
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
21,077✔
3713
  }
3714
  if (TSDB_CODE_SUCCESS == code) {
21,077✔
3715
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
21,076✔
3716
  }
3717

3718
  return code;
21,085✔
3719
}
3720

3721
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
114,985✔
3722
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
114,985✔
3723

3724
  int32_t code = TSDB_CODE_SUCCESS;
114,985✔
3725
  STlv*   pTlv = NULL;
114,985✔
3726
  tlvForEach(pDecoder, pTlv, code) {
345,065!
3727
    switch (pTlv->type) {
230,077!
3728
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
114,990✔
3729
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
114,990✔
3730
        break;
114,992✔
3731
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
96✔
3732
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
96✔
3733
        break;
96✔
3734
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
114,991✔
3735
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
114,991✔
3736
        break;
114,992✔
3737
      default:
×
3738
        break;
×
3739
    }
3740
  }
3741

3742
  return code;
114,987✔
3743
}
3744

3745
enum {
3746
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
3747
  PHY_INERP_FUNC_CODE_EXPR,
3748
  PHY_INERP_FUNC_CODE_FUNCS,
3749
  PHY_INERP_FUNC_CODE_TIME_RANGE,
3750
  PHY_INERP_FUNC_CODE_INTERVAL,
3751
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
3752
  PHY_INERP_FUNC_CODE_FILL_MODE,
3753
  PHY_INERP_FUNC_CODE_FILL_VALUES,
3754
  PHY_INERP_FUNC_CODE_TIME_SERIES,
3755
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL,
3756
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT,
3757
};
3758

3759
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,455✔
3760
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
11,455✔
3761

3762
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
11,455✔
3763
  if (TSDB_CODE_SUCCESS == code) {
11,455!
3764
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
11,455✔
3765
  }
3766
  if (TSDB_CODE_SUCCESS == code) {
11,455!
3767
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
11,455✔
3768
  }
3769
  if (TSDB_CODE_SUCCESS == code) {
11,455!
3770
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
11,455✔
3771
  }
3772
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3773
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
11,456✔
3774
  }
3775
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3776
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
11,456✔
3777
  }
3778
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3779
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
11,456✔
3780
  }
3781
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3782
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
11,456✔
3783
  }
3784
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3785
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
11,456✔
3786
  }
3787
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3788
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL, pNode->rangeInterval);
11,456✔
3789
  }
3790
  if (TSDB_CODE_SUCCESS == code) {
11,456!
3791
    code = tlvEncodeI8(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT, pNode->rangeIntervalUnit);
11,456✔
3792
  }
3793

3794
  return code;
11,456✔
3795
}
3796

3797
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
74,485✔
3798
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
74,485✔
3799

3800
  int32_t code = TSDB_CODE_SUCCESS;
74,485✔
3801
  STlv*   pTlv = NULL;
74,485✔
3802
  tlvForEach(pDecoder, pTlv, code) {
801,690!
3803
    switch (pTlv->type) {
727,206!
3804
      case PHY_INERP_FUNC_CODE_BASE_NODE:
74,485✔
3805
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
74,485✔
3806
        break;
74,484✔
3807
      case PHY_INERP_FUNC_CODE_EXPR:
9✔
3808
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
9✔
3809
        break;
9✔
3810
      case PHY_INERP_FUNC_CODE_FUNCS:
74,485✔
3811
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
74,485✔
3812
        break;
74,485✔
3813
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
74,485✔
3814
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
74,485✔
3815
        break;
74,485✔
3816
      case PHY_INERP_FUNC_CODE_INTERVAL:
74,485✔
3817
        code = tlvDecodeI64(pTlv, &pNode->interval);
74,485✔
3818
        break;
74,485✔
3819
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
74,485✔
3820
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
74,485✔
3821
        break;
74,485✔
3822
      case PHY_INERP_FUNC_CODE_FILL_MODE:
74,485✔
3823
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
74,485✔
3824
        break;
74,485✔
3825
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
56,832✔
3826
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
56,832✔
3827
        break;
56,832✔
3828
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
74,485✔
3829
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
74,485✔
3830
        break;
74,485✔
3831
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL:
74,485✔
3832
        code = tlvDecodeI64(pTlv, &pNode->rangeInterval);
74,485✔
3833
        break;
74,485✔
3834
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT:
74,485✔
3835
        code = tlvDecodeI8(pTlv, &pNode->rangeIntervalUnit);
74,485✔
3836
        break;
74,485✔
3837
      default:
×
3838
        break;
×
3839
    }
3840
  }
3841

3842
  return code;
74,485✔
3843
}
3844

3845
enum {
3846
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
3847
  PHY_FORECAST_FUNC_CODE_EXPR,
3848
  PHY_FORECAST_FUNC_CODE_FUNCS,
3849
};
3850

3851
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3852
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3853

3854
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
3855
  if (TSDB_CODE_SUCCESS == code) {
×
3856
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
3857
  }
3858
  if (TSDB_CODE_SUCCESS == code) {
×
3859
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
3860
  }
3861

3862
  return code;
×
3863
}
3864

3865
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
3866
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3867

3868
  int32_t code = TSDB_CODE_SUCCESS;
×
3869
  STlv*   pTlv = NULL;
×
3870
  tlvForEach(pDecoder, pTlv, code) {
×
3871
    switch (pTlv->type) {
×
3872
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
3873
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
3874
        break;
×
3875
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
3876
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
3877
        break;
×
3878
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
3879
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
3880
        break;
×
3881
      default:
×
3882
        break;
×
3883
    }
3884
  }
3885

3886
  return code;
×
3887
}
3888

3889
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
3890

3891
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,656,856✔
3892
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
1,656,856✔
3893
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
1,656,856✔
3894
}
3895

3896
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
7,801,723✔
3897
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
7,801,723✔
3898

3899
  int32_t code = TSDB_CODE_SUCCESS;
7,801,723✔
3900
  STlv*   pTlv = NULL;
7,801,723✔
3901
  tlvForEach(pDecoder, pTlv, code) {
15,607,939!
3902
    switch (pTlv->type) {
7,807,216!
3903
      case PHY_DATA_SINK_CODE_INPUT_DESC:
7,807,216✔
3904
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
7,807,216✔
3905
        break;
7,806,216✔
3906
      default:
×
3907
        break;
×
3908
    }
3909
  }
3910

3911
  return code;
7,798,210✔
3912
}
3913

3914
enum { PHY_DISPATCH_CODE_SINK = 1 };
3915

3916
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,602,204✔
3917
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
1,602,204✔
3918
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,602,204✔
3919
}
3920

3921
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
7,743,292✔
3922
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
7,743,292✔
3923

3924
  int32_t code = TSDB_CODE_SUCCESS;
7,743,292✔
3925
  STlv*   pTlv = NULL;
7,743,292✔
3926
  tlvForEach(pDecoder, pTlv, code) {
15,487,507!
3927
    switch (pTlv->type) {
7,746,977!
3928
      case PHY_DISPATCH_CODE_SINK:
7,746,977✔
3929
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
7,746,977✔
3930
        break;
7,744,215✔
3931
      default:
×
3932
        break;
×
3933
    }
3934
  }
3935

3936
  return code;
7,741,198✔
3937
}
3938

3939
enum {
3940
  PHY_QUERY_INSERT_CODE_SINK = 1,
3941
  PHY_QUERY_INSERT_CODE_COLS,
3942
  PHY_QUERY_INSERT_CODE_TABLE_ID,
3943
  PHY_QUERY_INSERT_CODE_STABLE_ID,
3944
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
3945
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
3946
  PHY_QUERY_INSERT_CODE_VG_ID,
3947
  PHY_QUERY_INSERT_CODE_EP_SET,
3948
  PHY_QUERY_INSERT_CODE_EXPLAIN
3949
};
3950

3951
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
96✔
3952
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
96✔
3953

3954
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
96✔
3955
  if (TSDB_CODE_SUCCESS == code) {
96!
3956
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
96✔
3957
  }
3958
  if (TSDB_CODE_SUCCESS == code) {
96!
3959
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
96✔
3960
  }
3961
  if (TSDB_CODE_SUCCESS == code) {
96!
3962
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
96✔
3963
  }
3964
  if (TSDB_CODE_SUCCESS == code) {
96!
3965
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
96✔
3966
  }
3967
  if (TSDB_CODE_SUCCESS == code) {
96!
3968
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
96✔
3969
  }
3970
  if (TSDB_CODE_SUCCESS == code) {
96!
3971
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
96✔
3972
  }
3973
  if (TSDB_CODE_SUCCESS == code) {
96!
3974
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
96✔
3975
  }
3976
  if (TSDB_CODE_SUCCESS == code) {
96!
3977
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
96✔
3978
  }
3979

3980
  return code;
96✔
3981
}
3982

3983
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
364✔
3984
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
364✔
3985

3986
  int32_t code = TSDB_CODE_SUCCESS;
364✔
3987
  STlv*   pTlv = NULL;
364✔
3988
  tlvForEach(pDecoder, pTlv, code) {
3,640!
3989
    switch (pTlv->type) {
3,276!
3990
      case PHY_QUERY_INSERT_CODE_SINK:
364✔
3991
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
364✔
3992
        break;
364✔
3993
      case PHY_QUERY_INSERT_CODE_COLS:
364✔
3994
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
364✔
3995
        break;
364✔
3996
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
364✔
3997
        code = tlvDecodeU64(pTlv, &pNode->tableId);
364✔
3998
        break;
364✔
3999
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
364✔
4000
        code = tlvDecodeU64(pTlv, &pNode->stableId);
364✔
4001
        break;
364✔
4002
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
364✔
4003
        code = tlvDecodeI8(pTlv, &pNode->tableType);
364✔
4004
        break;
364✔
4005
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
364✔
4006
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
364✔
4007
        break;
364✔
4008
      case PHY_QUERY_INSERT_CODE_VG_ID:
364✔
4009
        code = tlvDecodeI32(pTlv, &pNode->vgId);
364✔
4010
        break;
364✔
4011
      case PHY_QUERY_INSERT_CODE_EP_SET:
364✔
4012
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
364✔
4013
        break;
364✔
4014
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
364✔
4015
        code = tlvDecodeBool(pTlv, &pNode->explain);
364✔
4016
        break;
364✔
4017
      default:
×
4018
        break;
×
4019
    }
4020
  }
4021

4022
  return code;
364✔
4023
}
4024

4025
enum {
4026
  PHY_DELETER_CODE_SINK = 1,
4027
  PHY_DELETER_CODE_TABLE_ID,
4028
  PHY_DELETER_CODE_TABLE_TYPE,
4029
  PHY_DELETER_CODE_TABLE_FNAME,
4030
  PHY_DELETER_CODE_TS_COL_NAME,
4031
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4032
  PHY_DELETER_CODE_AFFECTED_ROWS,
4033
  PHY_DELETER_CODE_START_TS,
4034
  PHY_DELETER_CODE_END_TS
4035
};
4036

4037
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
54,777✔
4038
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
54,777✔
4039

4040
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
54,777✔
4041
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4042
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
54,778✔
4043
  }
4044
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4045
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
54,778✔
4046
  }
4047
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4048
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
54,778✔
4049
  }
4050
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4051
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
54,778✔
4052
  }
4053
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4054
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
54,778✔
4055
  }
4056
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4057
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
54,778✔
4058
  }
4059
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4060
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
54,778✔
4061
  }
4062
  if (TSDB_CODE_SUCCESS == code) {
54,778!
4063
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
54,778✔
4064
  }
4065

4066
  return code;
54,778✔
4067
}
4068

4069
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
58,895✔
4070
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
58,895✔
4071

4072
  int32_t code = TSDB_CODE_SUCCESS;
58,895✔
4073
  STlv*   pTlv = NULL;
58,895✔
4074
  tlvForEach(pDecoder, pTlv, code) {
588,970!
4075
    switch (pTlv->type) {
530,073!
4076
      case PHY_DELETER_CODE_SINK:
58,894✔
4077
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
58,894✔
4078
        break;
58,896✔
4079
      case PHY_DELETER_CODE_TABLE_ID:
58,896✔
4080
        code = tlvDecodeU64(pTlv, &pNode->tableId);
58,896✔
4081
        break;
58,895✔
4082
      case PHY_DELETER_CODE_TABLE_TYPE:
58,898✔
4083
        code = tlvDecodeI8(pTlv, &pNode->tableType);
58,898✔
4084
        break;
58,897✔
4085
      case PHY_DELETER_CODE_TABLE_FNAME:
58,898✔
4086
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
58,898✔
4087
        break;
58,898✔
4088
      case PHY_DELETER_CODE_TS_COL_NAME:
58,897✔
4089
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
58,897✔
4090
        break;
58,898✔
4091
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
58,898✔
4092
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
58,898✔
4093
        break;
58,897✔
4094
      case PHY_DELETER_CODE_AFFECTED_ROWS:
58,897✔
4095
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
58,897✔
4096
        break;
58,899✔
4097
      case PHY_DELETER_CODE_START_TS:
58,898✔
4098
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
58,898✔
4099
        break;
58,897✔
4100
      case PHY_DELETER_CODE_END_TS:
58,897✔
4101
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
58,897✔
4102
        break;
58,898✔
4103
      default:
×
4104
        break;
×
4105
    }
4106
  }
4107

4108
  return code;
58,885✔
4109
}
4110

4111
enum {
4112
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4113
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4114
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4115
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4116
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4117
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4118
};
4119

4120
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,138✔
4121
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
9,138✔
4122

4123
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,138✔
4124
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4125
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
9,138✔
4126
  }
4127
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4128
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
9,138✔
4129
  }
4130
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4131
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
9,138✔
4132
  }
4133
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4134
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
9,138✔
4135
  }
4136
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4137
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
9,138✔
4138
  }
4139

4140
  return code;
9,138✔
4141
}
4142

4143
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
9,145✔
4144
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
9,145✔
4145

4146
  int32_t code = TSDB_CODE_SUCCESS;
9,145✔
4147
  STlv*   pTlv = NULL;
9,145✔
4148
  tlvForEach(pDecoder, pTlv, code) {
54,870!
4149
    switch (pTlv->type) {
45,725!
4150
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
9,145✔
4151
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,145✔
4152
        break;
9,145✔
4153
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4154
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4155
        break;
×
4156
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
9,145✔
4157
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
9,145✔
4158
        break;    
9,145✔
4159
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
9,145✔
4160
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
9,145✔
4161
        break;    
9,145✔
4162
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
9,145✔
4163
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
9,145✔
4164
        break;    
9,145✔
4165
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
9,145✔
4166
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
9,145✔
4167
        break;    
9,145✔
4168
      default:
×
4169
        break;
×
4170
    }
4171
  }
4172

4173
  return code;
9,145✔
4174
}
4175

4176

4177
enum {
4178
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4179
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4180
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4181
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4182
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4183
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4184
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4185
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4186
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4187
};
4188

4189
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,138✔
4190
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
9,138✔
4191

4192
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,138✔
4193
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4194
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
9,138✔
4195
  }
4196
  if (TSDB_CODE_SUCCESS == code) {
9,138!
4197
    switch (pNode->qType) {
9,138!
4198
      case DYN_QTYPE_STB_HASH: {
9,138✔
4199
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
9,138✔
4200
        if (TSDB_CODE_SUCCESS == code) {
9,138!
4201
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
9,138✔
4202
        }
4203
        if (TSDB_CODE_SUCCESS == code) {
9,138!
4204
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
9,138✔
4205
        }
4206
        if (TSDB_CODE_SUCCESS == code) {
9,138!
4207
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
9,138✔
4208
        }
4209
        if (TSDB_CODE_SUCCESS == code) {
9,138!
4210
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
9,138✔
4211
        }
4212
        if (TSDB_CODE_SUCCESS == code) {
9,138!
4213
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
9,138✔
4214
        }
4215
        if (TSDB_CODE_SUCCESS == code) {
9,138!
4216
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
9,138✔
4217
        }
4218
        break;
9,138✔
4219
      }
4220
      default:
×
4221
        return TSDB_CODE_INVALID_PARA;
×
4222
    }
4223
  }
4224
  return code;
9,138✔
4225
}
4226

4227
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
9,145✔
4228
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
9,145✔
4229

4230
  int32_t code = TSDB_CODE_SUCCESS;
9,145✔
4231
  STlv*   pTlv = NULL;
9,145✔
4232
  tlvForEach(pDecoder, pTlv, code) {
91,450!
4233
    switch (pTlv->type) {
82,305!
4234
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
9,145✔
4235
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,145✔
4236
        break;
9,145✔
4237
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
9,145✔
4238
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
9,145✔
4239
        break;
9,145✔
4240
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
9,145✔
4241
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
9,145✔
4242
        break;
9,145✔
4243
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
9,145✔
4244
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
9,145✔
4245
        break;
9,145✔
4246
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
9,145✔
4247
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
9,145✔
4248
        break;
9,145✔
4249
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
9,145✔
4250
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
9,145✔
4251
        break;
9,145✔
4252
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
9,145✔
4253
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
9,145✔
4254
        break;      
9,145✔
4255
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
9,145✔
4256
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
9,145✔
4257
        break;
9,145✔
4258
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
9,145✔
4259
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
9,145✔
4260
        break;      
9,145✔
4261
      default:
×
4262
        break;
×
4263
    }
4264
  }
4265

4266
  return code;
9,145✔
4267
}
4268

4269

4270

4271
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4272

4273
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,658,542✔
4274
  const SSubplanId* pNode = (const SSubplanId*)pObj;
1,658,542✔
4275

4276
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
1,658,542✔
4277
  if (TSDB_CODE_SUCCESS == code) {
1,658,569!
4278
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
1,658,669✔
4279
  }
4280
  if (TSDB_CODE_SUCCESS == code) {
1,659,327✔
4281
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
1,658,836✔
4282
  }
4283

4284
  return code;
1,658,770✔
4285
}
4286

4287
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4288
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4289

4290
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4291
  if (TSDB_CODE_SUCCESS == code) {
×
4292
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4293
  }
4294
  if (TSDB_CODE_SUCCESS == code) {
×
4295
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4296
  }
4297

4298
  return code;
×
4299
}
4300

4301
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
7,803,019✔
4302
  SSubplanId* pNode = (SSubplanId*)pObj;
7,803,019✔
4303

4304
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
7,803,019✔
4305
  if (TSDB_CODE_SUCCESS == code) {
7,803,577!
4306
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
7,805,458✔
4307
  }
4308
  if (TSDB_CODE_SUCCESS == code) {
7,801,916!
4309
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
7,804,515✔
4310
  }
4311

4312
  return code;
7,802,841✔
4313
}
4314

4315
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4316
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4317

4318
  int32_t code = TSDB_CODE_SUCCESS;
×
4319
  STlv*   pTlv = NULL;
×
4320
  tlvForEach(pDecoder, pTlv, code) {
×
4321
    switch (pTlv->type) {
×
4322
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4323
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4324
        break;
×
4325
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4326
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4327
        break;
×
4328
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4329
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4330
        break;
×
4331
      default:
×
4332
        break;
×
4333
    }
4334
  }
4335

4336
  return code;
×
4337
}
4338

4339
enum {
4340
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4341
  SUBPLAN_CODE_ROOT_NODE,
4342
  SUBPLAN_CODE_DATA_SINK,
4343
  SUBPLAN_CODE_TAG_COND,
4344
  SUBPLAN_CODE_TAG_INDEX_COND
4345
};
4346

4347
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,658,592✔
4348
  const SSubplan* pNode = (const SSubplan*)pObj;
1,658,592✔
4349

4350
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
1,658,592✔
4351
  if (TSDB_CODE_SUCCESS == code) {
1,658,768!
4352
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
1,658,828✔
4353
  }
4354
  if (TSDB_CODE_SUCCESS == code) {
1,658,291!
4355
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
1,658,447✔
4356
  }
4357
  if (TSDB_CODE_SUCCESS == code) {
1,657,958!
4358
    code = tlvEncodeValueI32(pEncoder, pNode->level);
1,658,184✔
4359
  }
4360
  if (TSDB_CODE_SUCCESS == code) {
1,657,789✔
4361
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
1,657,733✔
4362
  }
4363
  if (TSDB_CODE_SUCCESS == code) {
1,658,437!
4364
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
1,658,474✔
4365
  }
4366
  if (TSDB_CODE_SUCCESS == code) {
1,658,100!
4367
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
1,658,194✔
4368
  }
4369
  if (TSDB_CODE_SUCCESS == code) {
1,657,975!
4370
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
1,658,123✔
4371
  }
4372
  if (TSDB_CODE_SUCCESS == code) {
1,657,874✔
4373
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
1,657,635✔
4374
  }
4375
  if (TSDB_CODE_SUCCESS == code) {
1,657,742✔
4376
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
1,657,562✔
4377
  }
4378
  if (TSDB_CODE_SUCCESS == code) {
1,657,640✔
4379
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
1,657,512✔
4380
  }
4381
  if (TSDB_CODE_SUCCESS == code) {
1,657,465!
4382
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
1,657,547✔
4383
  }
4384

4385
  return code;
1,657,492✔
4386
}
4387

4388
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,658,744✔
4389
  const SSubplan* pNode = (const SSubplan*)pObj;
1,658,744✔
4390

4391
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
1,658,744✔
4392
  if (TSDB_CODE_SUCCESS == code) {
1,657,973!
4393
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
1,658,037✔
4394
  }
4395
  if (TSDB_CODE_SUCCESS == code) {
1,657,314✔
4396
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
1,657,268✔
4397
  }
4398
  if (TSDB_CODE_SUCCESS == code) {
1,656,778!
4399
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
1,656,902✔
4400
  }
4401
  if (TSDB_CODE_SUCCESS == code) {
1,656,886!
4402
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
1,657,059✔
4403
  }
4404

4405
  return code;
1,657,086✔
4406
}
4407

4408
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
7,803,937✔
4409
  SSubplan* pNode = (SSubplan*)pObj;
7,803,937✔
4410

4411
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
7,803,937✔
4412
  if (TSDB_CODE_SUCCESS == code) {
7,802,690!
4413
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
7,802,787✔
4414
  }
4415
  if (TSDB_CODE_SUCCESS == code) {
7,802,730!
4416
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
7,803,227✔
4417
  }
4418
  if (TSDB_CODE_SUCCESS == code) {
7,802,564!
4419
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
7,803,310✔
4420
  }
4421
  if (TSDB_CODE_SUCCESS == code) {
7,801,369✔
4422
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
7,799,421✔
4423
  }
4424
  if (TSDB_CODE_SUCCESS == code) {
7,808,804✔
4425
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
7,807,179✔
4426
  }
4427
  if (TSDB_CODE_SUCCESS == code) {
7,809,184✔
4428
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
7,807,782✔
4429
  }
4430
  if (TSDB_CODE_SUCCESS == code) {
7,812,229✔
4431
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
7,810,968✔
4432
  }
4433
  if (TSDB_CODE_SUCCESS == code) {
7,808,993✔
4434
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
7,804,222✔
4435
  }
4436
  if (TSDB_CODE_SUCCESS == code) {
7,809,871✔
4437
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
7,805,494✔
4438
  }
4439
  if (TSDB_CODE_SUCCESS == code) {
7,810,320✔
4440
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
7,805,977✔
4441
  }
4442
  if (TSDB_CODE_SUCCESS == code) {
7,809,168✔
4443
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
7,805,023✔
4444
  }
4445
  return code;
7,805,163✔
4446
}
4447

4448
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
7,804,649✔
4449
  SSubplan* pNode = (SSubplan*)pObj;
7,804,649✔
4450

4451
  int32_t code = TSDB_CODE_SUCCESS;
7,804,649✔
4452
  STlv*   pTlv = NULL;
7,804,649✔
4453
  tlvForEach(pDecoder, pTlv, code) {
32,504,614!
4454
    switch (pTlv->type) {
24,703,252!
4455
      case SUBPLAN_CODE_INLINE_ATTRS:
7,805,586✔
4456
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
7,805,586✔
4457
        break;
7,804,612✔
4458
      case SUBPLAN_CODE_ROOT_NODE:
7,804,626✔
4459
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
7,804,626✔
4460
        break;
7,801,726✔
4461
      case SUBPLAN_CODE_DATA_SINK:
7,801,669✔
4462
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
7,801,669✔
4463
        break;
7,802,122✔
4464
      case SUBPLAN_CODE_TAG_COND:
1,252,435✔
4465
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
1,252,435✔
4466
        break;
1,252,579✔
4467
      case SUBPLAN_CODE_TAG_INDEX_COND:
38,936✔
4468
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
38,936✔
4469
        break;
38,926✔
4470
      default:
×
4471
        break;
×
4472
    }
4473
  }
4474

4475
  return code;
7,799,222✔
4476
}
4477

4478
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4479

4480
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4481
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4482

4483
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
×
4484
  if (TSDB_CODE_SUCCESS == code) {
×
4485
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
×
4486
  }
4487

4488
  return code;
×
4489
}
4490

4491
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4492
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4493

4494
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
×
4495
  if (TSDB_CODE_SUCCESS == code) {
×
4496
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
×
4497
  }
4498

4499
  return code;
×
4500
}
4501

4502
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
×
4503
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4504

4505
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
×
4506
  if (TSDB_CODE_SUCCESS == code) {
×
4507
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
×
4508
  }
4509

4510
  return code;
×
4511
}
4512

4513
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
×
4514
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4515

4516
  int32_t code = TSDB_CODE_SUCCESS;
×
4517
  STlv*   pTlv = NULL;
×
4518
  tlvForEach(pDecoder, pTlv, code) {
×
4519
    switch (pTlv->type) {
×
4520
      case QUERY_PLAN_CODE_INLINE_ATTRS:
×
4521
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
×
4522
        break;
×
4523
      case QUERY_PLAN_CODE_SUBPLANS:
×
4524
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
×
4525
        break;
×
4526
      default:
×
4527
        break;
×
4528
    }
4529
  }
4530

4531
  return code;
×
4532
}
4533

4534
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
55,467,141✔
4535
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4536
  int32_t code = TSDB_CODE_SUCCESS;
55,467,141✔
4537
  switch (nodeType(pObj)) {
55,467,141!
4538
    case QUERY_NODE_COLUMN:
10,077,878✔
4539
      code = columnNodeToMsg(pObj, pEncoder);
10,077,878✔
4540
      break;
10,006,524✔
4541
    case QUERY_NODE_VALUE:
5,116,561✔
4542
      code = valueNodeToMsg(pObj, pEncoder);
5,116,561✔
4543
      break;
5,115,106✔
4544
    case QUERY_NODE_OPERATOR:
1,351,277✔
4545
      code = operatorNodeToMsg(pObj, pEncoder);
1,351,277✔
4546
      break;
1,349,262✔
4547
    case QUERY_NODE_LOGIC_CONDITION:
325,619✔
4548
      code = logicConditionNodeToMsg(pObj, pEncoder);
325,619✔
4549
      break;
325,343✔
4550
    case QUERY_NODE_FUNCTION:
2,907,845✔
4551
      code = functionNodeToMsg(pObj, pEncoder);
2,907,845✔
4552
      break;
2,907,604✔
4553
    case QUERY_NODE_ORDER_BY_EXPR:
277,339✔
4554
      code = orderByExprNodeToMsg(pObj, pEncoder);
277,339✔
4555
      break;
277,269✔
4556
    case QUERY_NODE_LIMIT:
195,737✔
4557
      code = limitNodeToMsg(pObj, pEncoder);
195,737✔
4558
      break;
195,699✔
4559
    case QUERY_NODE_NODE_LIST:
49,737✔
4560
      code = nodeListNodeToMsg(pObj, pEncoder);
49,737✔
4561
      break;
49,723✔
4562
    case QUERY_NODE_TARGET:
8,282,744✔
4563
      code = targetNodeToMsg(pObj, pEncoder);
8,282,744✔
4564
      break;
8,252,674✔
4565
    case QUERY_NODE_DATABLOCK_DESC:
5,136,362✔
4566
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
5,136,362✔
4567
      break;
5,127,865✔
4568
    case QUERY_NODE_SLOT_DESC:
14,856,529✔
4569
      code = slotDescNodeToMsg(pObj, pEncoder);
14,856,529✔
4570
      break;
14,770,208✔
4571
    case QUERY_NODE_DOWNSTREAM_SOURCE:
857,247✔
4572
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
857,247✔
4573
      break;
857,201✔
4574
    case QUERY_NODE_LEFT_VALUE:
54,771✔
4575
      break;
54,771✔
4576
    case QUERY_NODE_WHEN_THEN:
7,330✔
4577
      code = whenThenNodeToMsg(pObj, pEncoder);
7,330✔
4578
      break;
7,326✔
4579
    case QUERY_NODE_CASE_WHEN:
5,499✔
4580
      code = caseWhenNodeToMsg(pObj, pEncoder);
5,499✔
4581
      break;
5,497✔
4582
    case QUERY_NODE_WINDOW_OFFSET:
829✔
4583
      code = windowOffsetNodeToMsg(pObj, pEncoder);
829✔
4584
      break;
829✔
4585
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
44,101✔
4586
      code = physiTagScanNodeToMsg(pObj, pEncoder);
44,101✔
4587
      break;
44,255✔
4588
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
9✔
4589
      code = physiScanNodeToMsg(pObj, pEncoder);
9✔
4590
      break;
9✔
4591
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
2,666✔
4592
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4593
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
2,666✔
4594
      break;
2,665✔
4595
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,172,612✔
4596
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4597
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4598
      code = physiTableScanNodeToMsg(pObj, pEncoder);
1,172,612✔
4599
      break;
1,172,038✔
4600
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
32,754✔
4601
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
32,754✔
4602
      break;
32,751✔
4603
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
458,625✔
4604
      code = physiProjectNodeToMsg(pObj, pEncoder);
458,625✔
4605
      break;
458,418✔
4606
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
81,654✔
4607
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
81,654✔
4608
      break;
81,626✔
4609
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,138✔
4610
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
9,138✔
4611
      break;
9,138✔
4612
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
702,169✔
4613
      code = physiAggNodeToMsg(pObj, pEncoder);
702,169✔
4614
      break;
701,539✔
4615
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
605,397✔
4616
      code = physiExchangeNodeToMsg(pObj, pEncoder);
605,397✔
4617
      break;
605,354✔
4618
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
73,415✔
4619
      code = physiMergeNodeToMsg(pObj, pEncoder);
73,415✔
4620
      break;
73,413✔
4621
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
148,153✔
4622
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4623
      code = physiSortNodeToMsg(pObj, pEncoder);
148,153✔
4624
      break;
148,147✔
4625
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
66,980✔
4626
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4627
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4628
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4629
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4630
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4631
      code = physiIntervalNodeToMsg(pObj, pEncoder);
66,980✔
4632
      break;
66,892✔
4633
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
11,282✔
4634
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4635
      code = physiFillNodeToMsg(pObj, pEncoder);
11,282✔
4636
      break;
11,274✔
4637
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,941✔
4638
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4639
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4640
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4641
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
3,941✔
4642
      break;
3,941✔
4643
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
5,583✔
4644
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4645
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
5,583✔
4646
      break;
5,583✔
4647
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
29✔
4648
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4649
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
29✔
4650
      break;
29✔
4651
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
45✔
4652
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4653
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
45✔
4654
      break;
45✔
4655
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4656
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
4657
      break;
×
4658
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
14,285✔
4659
      code = physiPartitionNodeToMsg(pObj, pEncoder);
14,285✔
4660
      break;
14,275✔
4661
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4662
      code = physiStreamPartitionNodeToMsg(pObj, pEncoder);
×
4663
      break;
×
4664
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
21,090✔
4665
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
21,090✔
4666
      break;
21,085✔
4667
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
11,456✔
4668
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4669
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
11,456✔
4670
      break;
11,456✔
4671
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4672
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
4673
      break;
×
4674
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,602,201✔
4675
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,602,201✔
4676
      break;
1,601,848✔
4677
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
96✔
4678
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
96✔
4679
      break;
96✔
4680
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
54,777✔
4681
      code = physiDeleteNodeToMsg(pObj, pEncoder);
54,777✔
4682
      break;
54,778✔
4683
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,138✔
4684
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
9,138✔
4685
      break;
9,138✔
4686
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,138✔
4687
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
9,138✔
4688
      break;
9,138✔
4689
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,658,911✔
4690
      code = subplanToMsg(pObj, pEncoder);
1,658,911✔
4691
      break;
1,657,400✔
4692
    case QUERY_NODE_PHYSICAL_PLAN:
×
4693
      code = queryPlanToMsg(pObj, pEncoder);
×
4694
      break;
×
4695
    default:
×
4696
      break;
×
4697
  }
4698
  if (TSDB_CODE_SUCCESS != code) {
55,263,424!
4699
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
4700
  }
4701
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4702
  return code;
55,375,132✔
4703
}
4704

4705
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
586,772,835✔
4706
  int32_t code = TSDB_CODE_SUCCESS;
586,772,835✔
4707
  switch (nodeType(pObj)) {
586,772,835!
4708
    case QUERY_NODE_COLUMN:
82,369,558✔
4709
      code = msgToColumnNode(pDecoder, pObj);
82,369,558✔
4710
      break;
82,680,616✔
4711
    case QUERY_NODE_VALUE:
231,466,399✔
4712
      code = msgToValueNode(pDecoder, pObj);
231,466,399✔
4713
      break;
225,969,884✔
4714
    case QUERY_NODE_OPERATOR:
16,975,498✔
4715
      code = msgToOperatorNode(pDecoder, pObj);
16,975,498✔
4716
      break;
16,932,748✔
4717
    case QUERY_NODE_LOGIC_CONDITION:
5,428,459✔
4718
      code = msgToLogicConditionNode(pDecoder, pObj);
5,428,459✔
4719
      break;
5,428,057✔
4720
    case QUERY_NODE_FUNCTION:
10,959,245✔
4721
      code = msgToFunctionNode(pDecoder, pObj);
10,959,245✔
4722
      break;
10,954,008✔
4723
    case QUERY_NODE_ORDER_BY_EXPR:
2,257,241✔
4724
      code = msgToOrderByExprNode(pDecoder, pObj);
2,257,241✔
4725
      break;
2,256,809✔
4726
    case QUERY_NODE_LIMIT:
784,518✔
4727
      code = msgToLimitNode(pDecoder, pObj);
784,518✔
4728
      break;
784,187✔
4729
    case QUERY_NODE_NODE_LIST:
2,137,038✔
4730
      code = msgToNodeListNode(pDecoder, pObj);
2,137,038✔
4731
      break;
2,137,377✔
4732
    case QUERY_NODE_TARGET:
61,933,504✔
4733
      code = msgToTargetNode(pDecoder, pObj);
61,933,504✔
4734
      break;
61,743,635✔
4735
    case QUERY_NODE_DATABLOCK_DESC:
26,252,478✔
4736
      code = msgToDataBlockDescNode(pDecoder, pObj);
26,252,478✔
4737
      break;
26,245,021✔
4738
    case QUERY_NODE_SLOT_DESC:
112,938,009✔
4739
      code = msgToSlotDescNode(pDecoder, pObj);
112,938,009✔
4740
      break;
112,586,411✔
4741
    case QUERY_NODE_DOWNSTREAM_SOURCE:
4,854,388✔
4742
      code = msgToDownstreamSourceNode(pDecoder, pObj);
4,854,388✔
4743
    case QUERY_NODE_LEFT_VALUE:
4,970,484✔
4744
      break;
4,970,484✔
4745
    case QUERY_NODE_WHEN_THEN:
8,032✔
4746
      code = msgToWhenThenNode(pDecoder, pObj);
8,032✔
4747
      break;
8,032✔
4748
    case QUERY_NODE_CASE_WHEN:
5,984✔
4749
      code = msgToCaseWhenNode(pDecoder, pObj);
5,984✔
4750
      break;
5,985✔
4751
    case QUERY_NODE_WINDOW_OFFSET:
668✔
4752
      code = msgToWindowOffsetNode(pDecoder, pObj);
668✔
4753
      break;
668✔
4754
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
48,141✔
4755
      code = msgToPhysiTagScanNode(pDecoder, pObj);
48,141✔
4756
      break;
48,079✔
4757
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
3,244✔
4758
      code = msgToPhysiScanNode(pDecoder, pObj);
3,244✔
4759
      break;
3,236✔
4760
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
4,524✔
4761
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4762
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
4,524✔
4763
      break;
4,526✔
4764
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
4,632,267✔
4765
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4766
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4767
      code = msgToPhysiTableScanNode(pDecoder, pObj);
4,632,267✔
4768
      break;
4,631,025✔
4769
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,138,783✔
4770
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
1,138,783✔
4771
      break;
1,137,662✔
4772
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
1,706,475✔
4773
      code = msgToPhysiProjectNode(pDecoder, pObj);
1,706,475✔
4774
      break;
1,706,381✔
4775
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
88,260✔
4776
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
88,260✔
4777
      break;
88,241✔
4778
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,145✔
4779
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
9,145✔
4780
      break;
9,145✔
4781
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
2,211,254✔
4782
      code = msgToPhysiAggNode(pDecoder, pObj);
2,211,254✔
4783
      break;
2,210,641✔
4784
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
3,413,744✔
4785
      code = msgToPhysiExchangeNode(pDecoder, pObj);
3,413,744✔
4786
      break;
3,413,583✔
4787
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
1,297,890✔
4788
      code = msgToPhysiMergeNode(pDecoder, pObj);
1,297,890✔
4789
      break;
1,297,867✔
4790
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
848,429✔
4791
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4792
      code = msgToPhysiSortNode(pDecoder, pObj);
848,429✔
4793
      break;
848,365✔
4794
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
1,922,422✔
4795
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4796
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4797
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4798
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4799
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4800
      code = msgToPhysiIntervalNode(pDecoder, pObj);
1,922,422✔
4801
      break;
1,921,645✔
4802
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
465,296✔
4803
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4804
      code = msgToPhysiFillNode(pDecoder, pObj);
465,296✔
4805
      break;
465,290✔
4806
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
94,659✔
4807
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4808
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4809
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4810
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
94,659✔
4811
      break;
94,656✔
4812
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
69,388✔
4813
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4814
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
69,388✔
4815
      break;
69,387✔
4816
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261,204✔
4817
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4818
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
261,204✔
4819
      break;
261,204✔
4820
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
5,703✔
4821
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4822
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
5,703✔
4823
      break;
5,682✔
4824
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4825
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
4826
      break;
×
4827
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
24,512✔
4828
      code = msgToPhysiPartitionNode(pDecoder, pObj);
24,512✔
4829
      break;
24,499✔
4830
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4831
      code = msgToPhysiStreamPartitionNode(pDecoder, pObj);
×
4832
      break;
×
4833
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
114,990✔
4834
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
114,990✔
4835
      break;
114,986✔
4836
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
74,485✔
4837
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4838
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
74,485✔
4839
      break;
74,485✔
4840
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4841
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
4842
      break;
×
4843
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
7,745,162✔
4844
      code = msgToPhysiDispatchNode(pDecoder, pObj);
7,745,162✔
4845
      break;
7,741,895✔
4846
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
364✔
4847
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
364✔
4848
      break;
364✔
4849
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
58,896✔
4850
      code = msgToPhysiDeleteNode(pDecoder, pObj);
58,896✔
4851
      break;
58,898✔
4852
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,145✔
4853
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
9,145✔
4854
      break;
9,145✔
4855
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,145✔
4856
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
9,145✔
4857
      break;
9,145✔
4858
    case QUERY_NODE_PHYSICAL_SUBPLAN:
7,804,493✔
4859
      code = msgToSubplan(pDecoder, pObj);
7,804,493✔
4860
      break;
7,801,181✔
4861
    case QUERY_NODE_PHYSICAL_PLAN:
×
4862
      code = msgToQueryPlan(pDecoder, pObj);
×
4863
      break;
×
4864
    default:
×
4865
      break;
×
4866
  }
4867
  if (TSDB_CODE_SUCCESS != code) {
586,755,135!
4868
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
4869
  }
4870
  return code;
580,310,032✔
4871
}
4872

4873
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
55,481,710✔
4874
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
55,481,710✔
4875
}
4876

4877
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
591,517,801✔
4878
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
591,517,801✔
4879
}
4880

4881
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
145,826,028✔
4882
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
145,826,028✔
4883
  return msgToNode(&decoder, pObj);
145,826,028✔
4884
}
4885

4886
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,950,362✔
4887
  const SNodeList* pList = (const SNodeList*)pObj;
13,950,362✔
4888

4889
  SNode* pNode = NULL;
13,950,362✔
4890
  FOREACH(pNode, pList) {
47,566,704!
4891
    int32_t code = nodeToMsg(pNode, pEncoder);
33,775,303✔
4892
    if (TSDB_CODE_SUCCESS != code) {
33,616,342!
4893
      return code;
×
4894
    }
4895
  }
4896

4897
  return TSDB_CODE_SUCCESS;
13,791,401✔
4898
}
4899
enum {
4900
  SARRAY_CODE_CAPACITY = 1,
4901
  SARRAY_CODE_ELEMSIZE,
4902
  SARRAY_CODE_SIZE,
4903
  SARRAY_CODE_PDATA
4904
};
4905

4906
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
88✔
4907
  const SArray* pArray = (const SArray*)pObj;
88✔
4908
  int32_t code = TSDB_CODE_SUCCESS;
88✔
4909
  if (TSDB_CODE_SUCCESS == code) {
88!
4910
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
88✔
4911
  }
4912
  if (TSDB_CODE_SUCCESS == code) {
89!
4913
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
89✔
4914
  }
4915
  if (TSDB_CODE_SUCCESS == code) {
89!
4916
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
89✔
4917
  }
4918
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
88!
4919
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
88✔
4920
  }
4921
  return code;
88✔
4922
}
4923

4924

4925
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
74,044,586✔
4926
  SNodeList* pList = NULL;
74,044,586✔
4927
  int32_t code = TSDB_CODE_SUCCESS;
74,044,586✔
4928
  code = nodesMakeList(&pList);
74,044,586✔
4929

4930
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
515,982,113✔
4931
    SNode* pNode = NULL;
439,761,482✔
4932
    code = msgToNode(pDecoder, (void**)&pNode);
439,761,482✔
4933
    if (TSDB_CODE_SUCCESS == code) {
429,264,121!
4934
      code = nodesListAppend(pList, pNode);
429,334,330✔
4935
    }
4936
  }
4937
  if (TSDB_CODE_SUCCESS == code) {
74,082,237!
4938
    *pObj = pList;
74,082,237✔
4939
  } else {
4940
    nodesDestroyList(pList);
×
4941
  }
4942
  return code;
74,080,408✔
4943
}
4944

4945
static int32_t msgToSArray(STlv* pTlv, void** pObj){
71✔
4946
  SArray* pArray = NULL;
71✔
4947
  uint32_t capacity = 0;
71✔
4948
  uint32_t elemSize = 0;
71✔
4949
  uint32_t actualSize;
4950
  int32_t decodeFieldNum = 0;;
71✔
4951
  int32_t code = TSDB_CODE_SUCCESS;
71✔
4952
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
71✔
4953
  STlv*   pTlvTemp = NULL;
71✔
4954
  STlv*   pDataTlv = NULL;
71✔
4955

4956
  tlvForEach(&decoder, pTlvTemp, code) {
355!
4957
    switch (pTlvTemp->type) {
284!
4958
      case SARRAY_CODE_CAPACITY:
71✔
4959
        code = tlvDecodeI32(pTlvTemp, &capacity);
71✔
4960
        break;
71✔
4961
      case SARRAY_CODE_ELEMSIZE:
71✔
4962
        code = tlvDecodeI32(pTlvTemp, &elemSize);
71✔
4963
        break;
71✔
4964
      case SARRAY_CODE_SIZE:
71✔
4965
        code = tlvDecodeI32(pTlvTemp, &actualSize);
71✔
4966
        break;
71✔
4967
      case SARRAY_CODE_PDATA:
71✔
4968
        if (decodeFieldNum < 3) {
71!
4969
          pDataTlv = pTlvTemp;
×
4970
          break;
×
4971
        }
4972
        pArray = taosArrayInit(capacity, elemSize);
71✔
4973
        if (NULL == pArray) {
71!
4974
          return terrno;
×
4975
        }
4976
        pArray->size = actualSize;
71✔
4977
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
71!
4978
          taosArrayDestroy(pArray);
×
4979
          return TSDB_CODE_OUT_OF_MEMORY;
×
4980
        }
4981
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
71✔
4982
        break;
71✔
4983
      default:
×
4984
        break;
×
4985
    }
4986
    decodeFieldNum++;
284✔
4987
  }
4988

4989
  if (pDataTlv != NULL) {
71!
4990
    pArray = taosArrayInit(capacity, elemSize);
×
4991
    if (NULL == pArray) {
×
4992
      return terrno;
×
4993
    }
4994
    pArray->size = actualSize;
×
4995
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
4996
      taosArrayDestroy(pArray);
×
4997
      return TSDB_CODE_OUT_OF_MEMORY;
×
4998
    }
4999
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5000
  }
5001
  *pObj = pArray;
71✔
5002
  return code;
71✔
5003
}
5004

5005

5006
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
74,010,490✔
5007
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
74,010,490✔
5008
  return msgToNodeList(&decoder, pObj);
74,010,490✔
5009
}
5010

5011
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
1,658,894✔
5012
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
1,658,894!
5013
    terrno = TSDB_CODE_FAILED;
×
5014
    return TSDB_CODE_FAILED;
×
5015
  }
5016

5017
  STlvEncoder encoder;
5018
  int32_t     code = initTlvEncoder(&encoder);
1,660,713✔
5019
  if (TSDB_CODE_SUCCESS == code) {
1,660,980!
5020
    code = nodeToMsg(pNode, &encoder);
1,660,994✔
5021
  }
5022
  if (TSDB_CODE_SUCCESS == code) {
1,657,393!
5023
    endTlvEncode(&encoder, pMsg, pLen);
1,657,473✔
5024
  }
5025
  clearTlvEncoder(&encoder);
1,657,306✔
5026

5027
  terrno = code;
1,657,506✔
5028
  return code;
1,657,434✔
5029
}
5030

5031
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
7,803,351✔
5032
  if (NULL == pMsg || NULL == pNode) {
7,803,351!
5033
    return TSDB_CODE_SUCCESS;
×
5034
  }
5035

5036
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
7,808,237✔
5037
  int32_t     code = msgToNode(&decoder, (void**)pNode);
7,808,237✔
5038
  if (TSDB_CODE_SUCCESS != code) {
7,800,554!
5039
    nodesDestroyNode(*pNode);
×
5040
    *pNode = NULL;
×
5041
  }
5042

5043
  terrno = code;
7,800,554✔
5044
  return code;
7,804,399✔
5045
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc