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

taosdata / TDengine / #3842

07 Apr 2025 11:21AM UTC coverage: 62.696% (-0.3%) from 63.027%
#3842

push

travis-ci

web-flow
merge: from main to 3.0 branch (#30679)

154855 of 315075 branches covered (49.15%)

Branch coverage included in aggregate %.

6 of 8 new or added lines in 5 files covered. (75.0%)

2309 existing lines in 130 files now uncovered.

240176 of 314995 relevant lines covered (76.25%)

19119980.29 hits per line

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

80.05
/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) {
2,064,092✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
2,064,092✔
79
  pEncoder->offset = 0;
2,064,092✔
80
  pEncoder->tlvCount = 0;
2,064,092✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
2,064,092!
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
2,078,112!
83
}
84

85
static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); }
2,067,657!
86

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

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
139,667,506✔
94
  int32_t tlvLen = sizeof(STlv) + len;
139,667,506✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
139,667,506✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
1,182,484✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
1,182,484!
98
    if (NULL == pNewBuf) {
1,190,707!
99
      return terrno;
×
100
    }
101
    pEncoder->pBuf = pNewBuf;
1,190,707✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
139,675,729✔
104
  pTlv->type = htons(type);
139,675,729✔
105
  pTlv->len = htonl(len);
139,675,729✔
106
  memcpy(pTlv->value, pValue, len);
139,675,729✔
107
  pEncoder->offset += tlvLen;
139,675,729✔
108
  ++(pEncoder->tlvCount);
139,675,729✔
109
  return TSDB_CODE_SUCCESS;
139,675,729✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
628,169,283✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
628,169,283✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
915,779!
115
    if (NULL == pNewBuf) {
924,223!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
924,223✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
924,223✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
628,177,727✔
122
  pEncoder->offset += len;
628,177,727✔
123
  return TSDB_CODE_SUCCESS;
628,177,727✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
60,682,378✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
60,682,378✔
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) {
183,575,990✔
140
  value = htons(value);
183,575,990✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
183,575,990✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
82,781,929✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
82,781,929✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
138,872,852✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
138,872,852✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
10,358,275✔
223
  if (NULL == pValue) {
10,358,275✔
224
    return TSDB_CODE_SUCCESS;
912,551✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
9,445,724✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
94,977,979✔
230
  int16_t len = strlen(pValue);
94,977,979✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
94,977,979✔
232
  if (TSDB_CODE_SUCCESS == code) {
94,973,801!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
95,003,387✔
234
  }
235
  return code;
94,685,275✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
220,415,543✔
243
  if (NULL == pObj) {
220,415,543✔
244
    return TSDB_CODE_SUCCESS;
29,180,950✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
191,234,593✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
491,076✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
491,076!
250
    if (NULL == pNewBuf) {
493,730!
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
493,730✔
254
  }
255

256
  int32_t start = pEncoder->offset;
191,237,247✔
257
  pEncoder->offset += sizeof(STlv);
191,237,247✔
258
  int32_t code = func(pObj, pEncoder);
191,237,247✔
259
  if (TSDB_CODE_SUCCESS == code) {
188,875,202!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
189,475,576✔
261
    pTlv->type = htons(type);
189,475,576✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
189,475,576✔
263
  }
264
  ++(pEncoder->tlvCount);
188,875,202✔
265
  return code;
188,875,202✔
266
}
267

268
static int32_t tlvEncodeObjArray(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pArray, int32_t itemSize,
50,568✔
269
                                 int32_t num) {
270
  int32_t code = TSDB_CODE_SUCCESS;
50,568✔
271
  if (num > 0) {
50,568!
272
    int32_t start = pEncoder->offset;
50,645✔
273
    pEncoder->offset += sizeof(STlv);
50,645✔
274
    for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
103,719✔
275
      code = tlvEncodeObj(pEncoder, TLV_TYPE_ARRAY_ELEM, func, (const char*)pArray + i * itemSize);
52,662✔
276
    }
277
    if (TSDB_CODE_SUCCESS == code) {
51,057!
278
      STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
51,176✔
279
      pTlv->type = htons(type);
51,176✔
280
      pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
51,176✔
281
    }
282
  }
283
  return code;
50,980✔
284
}
285

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
3,059,726✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
3,059,726✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
5,698,817✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
2,637,691✔
291
  }
292
  return code;
3,061,126✔
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,759,995,515✔
298
    return TSDB_CODE_SUCCESS;
1,759,995,515✔
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; }
764,361,802✔
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);
90,038,506✔
325
    return TSDB_CODE_SUCCESS;
90,038,506✔
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,831,062,646✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
1,215,366,532✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
1,215,366,532✔
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) {
1,259,262,169✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
1,259,262,169✔
351
  if (TSDB_CODE_SUCCESS == code) {
1,251,237,430!
352
    *pValue = ntohs(*pValue);
1,307,722,863✔
353
  }
354
  return code;
1,251,237,430✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
1,931,210,592✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
1,931,210,592✔
359
  if (TSDB_CODE_SUCCESS == code) {
1,927,680,427!
360
    *pValue = ntohl(*pValue);
1,929,627,980✔
361
  }
362
  return code;
1,927,680,427✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
639,245,226✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
639,245,226✔
367
  if (TSDB_CODE_SUCCESS == code) {
637,487,490!
368
    *pValue = ntohl(*pValue);
638,656,133✔
369
  }
370
  return code;
637,487,490✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
449,795,017✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
449,795,017✔
375
  if (TSDB_CODE_SUCCESS == code) {
448,403,819!
376
    *pValue = ntohll(*pValue);
448,763,089✔
377
  }
378
  return code;
448,403,819✔
379
}
380

381
static int32_t tlvDecodeValueI64(STlvDecoder* pDecoder, int64_t* pValue) {
42,432,431✔
382
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
42,432,431✔
383
  if (TSDB_CODE_SUCCESS == code) {
42,425,358!
384
#ifndef NO_UNALIGNED_ACCESS
385
    *pValue = ntohll(*pValue);
42,432,884✔
386
#else
387
    int64_t value = taosGetInt64Aligned(pValue);
388
    taosSetInt64Aligned(pValue, ntohll(value));
389
#endif
390
  }
391
  return code;
42,425,358✔
392
}
393

394
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
922,851,391✔
395

396
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
490,561,510✔
397
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
490,561,510✔
398
}
399

400
static int32_t tlvDecodeU16(STlv* pTlv, uint16_t* pValue) {
1,220,356✔
401
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
1,220,356✔
402
  if (TSDB_CODE_SUCCESS == code) {
1,220,446!
403
    *pValue = ntohs(*pValue);
1,222,466✔
404
  }
405
  return code;
1,220,446✔
406
}
407

408
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
11,694,575✔
409
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
11,694,575✔
410
  if (TSDB_CODE_SUCCESS == code) {
11,692,190!
411
    *pValue = ntohs(*pValue);
11,706,766✔
412
  }
413
  return code;
11,692,190✔
414
}
415

416
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
13,262,421✔
417
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
13,262,421✔
418
  if (TSDB_CODE_SUCCESS == code) {
13,260,961!
419
    *pValue = ntohll(*pValue);
13,261,706✔
420
  }
421
  return code;
13,260,961✔
422
}
423

424
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
113,189,176✔
425
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
113,189,176✔
426
  if (TSDB_CODE_SUCCESS == code) {
113,197,764!
427
    *pValue = ntohll(*pValue);
113,226,877✔
428
  }
429
  return code;
113,197,764✔
430
}
431

432
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
2,368,056✔
433
  volatile int64_t temp = 0;
2,368,056✔
434
  int32_t code = tlvDecodeI64(pTlv, (int64_t*)&temp);
2,368,056✔
435
  if (TSDB_CODE_SUCCESS == code) {
2,367,928!
436
    *pValue = *(double*)&temp;
2,368,200✔
437
  }
438
  return code;
2,367,928✔
439
}
440

441
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
5,186,900✔
442
  volatile int64_t temp = 0;
5,186,900✔
443
  int32_t code = tlvDecodeValueI64(pDecoder, (int64_t*)&temp);
5,186,900✔
444
  if (TSDB_CODE_SUCCESS == code) {
5,188,241!
445
    *pValue = *(double*)&temp;
5,188,802✔
446
  }
447
  return code;
5,188,241✔
448
}
449

450
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
2,147,483,647✔
451
  switch (len) {
2,147,483,647!
452
    case 1:
2,147,483,647✔
453
      *(int8_t*)pValue = value;
2,147,483,647✔
454
      break;
2,147,483,647✔
455
    case 2:
×
456
      *(int16_t*)pValue = value;
×
457
      break;
×
458
    case 4:
178,665,928✔
459
      *(int32_t*)pValue = value;
178,665,928✔
460
      break;
178,665,928✔
461
    default:
×
462
      return TSDB_CODE_FAILED;
×
463
  }
464
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
465
}
466

467
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
1,384,441,471✔
468
  int8_t  value = 0;
1,384,441,471✔
469
  int32_t code = tlvDecodeI8(pTlv, &value);
1,384,441,471✔
470
  if (TSDB_CODE_SUCCESS == code) {
1,373,713,787!
471
    code = convertIntegerType(value, pValue, sizeof(bool));
1,374,547,568✔
472
  }
473
  return code;
1,385,620,731✔
474
}
475

476
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
871,725,143✔
477
  int8_t  value = 0;
871,725,143✔
478
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
871,725,143✔
479
  if (TSDB_CODE_SUCCESS == code) {
867,193,712!
480
    code = convertIntegerType(value, pValue, sizeof(bool));
867,515,972✔
481
  }
482
  return code;
867,630,626✔
483
}
484

485
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
80,823,489✔
486
  int32_t value = 0;
80,823,489✔
487
  int32_t code = tlvDecodeI32(pTlv, &value);
80,823,489✔
488
  if (TSDB_CODE_SUCCESS == code) {
80,798,231!
489
    code = convertIntegerType(value, pValue, len);
80,803,068✔
490
  }
491
  return code;
80,804,729✔
492
}
493

494
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
98,729,382✔
495
  int32_t value = 0;
98,729,382✔
496
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
98,729,382✔
497
  if (TSDB_CODE_SUCCESS == code) {
98,266,946!
498
    code = convertIntegerType(value, pValue, len);
98,275,337✔
499
  }
500
  return code;
98,238,762✔
501
}
502

503
static int32_t tlvDecodeCStr(STlv* pTlv, char* pValue, int32_t size) {
27,002,251✔
504
  if (pTlv->len > size - 1) {
27,002,251!
505
    return TSDB_CODE_FAILED;
×
506
  }
507
  memcpy(pValue, pTlv->value, pTlv->len);
27,002,251✔
508
  return TSDB_CODE_SUCCESS;
27,002,251✔
509
}
510

511
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
645,255,415✔
512
  int16_t len = 0;
645,255,415✔
513
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
645,255,415✔
514
  if (TSDB_CODE_SUCCESS == code) {
657,923,743!
515
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
658,231,447✔
516
  }
517
  return code;
650,010,467✔
518
}
519

520
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
434,980,127✔
521
  *pValue = taosStrndup(pTlv->value, pTlv->len);
434,980,127!
522
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
453,606,708!
523
}
524

525
static int32_t tlvDecodeDynBinary(STlv* pTlv, void** pValue) {
12✔
526
  *pValue = taosMemoryMalloc(pTlv->len);
12!
527
  if (NULL == *pValue) {
12!
528
    return terrno;
×
529
  }
530
  memcpy(*pValue, pTlv->value, pTlv->len);
12✔
531
  return TSDB_CODE_SUCCESS;
12✔
532
}
533

534
static int32_t tlvDecodeBinary(STlv* pTlv, void* pValue) {
3,053,265✔
535
  memcpy(pValue, pTlv->value, pTlv->len);
3,053,265✔
536
  return TSDB_CODE_SUCCESS;
3,053,265✔
537
}
538

539
static int32_t tlvDecodeObjFromTlv(STlv* pTlv, FToObject func, void* pObj) {
2,089,072,218✔
540
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
2,089,072,218✔
541
  return func(&decoder, pObj);
2,089,072,218✔
542
}
543

544
static int32_t tlvDecodeObj(STlvDecoder* pDecoder, FToObject func, void* pObj) {
×
545
  STlv*   pTlv = NULL;
×
546
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
×
547
  if (TSDB_CODE_SUCCESS == code) {
×
548
    code = tlvDecodeObjFromTlv(pTlv, func, pObj);
×
549
  }
550
  return code;
×
551
}
552

553
static int32_t tlvDecodeObjArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize) {
1,219,660✔
554
  int32_t code = TSDB_CODE_SUCCESS;
1,219,660✔
555
  int32_t i = 0;
1,219,660✔
556
  STlv*   pTlv = NULL;
1,219,660✔
557
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
2,440,067!
558
  return code;
1,219,720✔
559
}
560

561
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
13,784,753✔
562
                                   int32_t* pNum) {
563
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
13,784,753✔
564
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
25,492,863✔
565
    code = func(pDecoder, (char*)pArray + i * itemSize);
11,685,280✔
566
  }
567
  return code;
13,807,583✔
568
}
569

570
static int32_t tlvDecodeObjArrayFromTlv(STlv* pTlv, FToObject func, void* pArray, int32_t itemSize) {
1,219,535✔
571
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
1,219,535✔
572
  return tlvDecodeObjArray(&decoder, func, pArray, itemSize);
1,219,535✔
573
}
574

575
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
839,572,049✔
576
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
839,572,049✔
577
  if (NULL == *pObj) {
831,921,391!
578
    return code;
×
579
  }
580
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
831,921,391✔
581
}
582

583
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
840,535,244✔
584
  STlv*   pTlv = NULL;
840,535,244✔
585
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
840,535,244✔
586
  if (TSDB_CODE_SUCCESS == code) {
838,610,932!
587
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
839,059,569✔
588
  }
589
  return code;
823,701,980✔
590
}
591

592
enum { DATA_TYPE_CODE_TYPE = 1, DATA_TYPE_CODE_PRECISION, DATA_TYPE_CODE_SCALE, DATA_TYPE_CODE_BYTES };
593

594
static int32_t dataTypeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,880,134✔
595
  const SDataType* pNode = (const SDataType*)pObj;
37,880,134✔
596

597
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
37,880,134✔
598
  if (TSDB_CODE_SUCCESS == code) {
37,760,228!
599
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
37,774,218✔
600
  }
601
  if (TSDB_CODE_SUCCESS == code) {
37,258,054!
602
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
37,281,672✔
603
  }
604
  if (TSDB_CODE_SUCCESS == code) {
36,878,554!
605
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
36,926,282✔
606
  }
607

608
  return code;
36,851,806✔
609
}
610

611
static int32_t dataTypeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,719,750✔
612
  const SDataType* pNode = (const SDataType*)pObj;
8,719,750✔
613

614
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
8,719,750✔
615
  if (TSDB_CODE_SUCCESS == code) {
8,682,987!
616
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
8,684,163✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
8,684,844!
619
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
8,687,406✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
8,703,603!
622
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
8,710,803✔
623
  }
624

625
  return code;
8,679,724✔
626
}
627

628
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
229,448,639✔
629
  SDataType* pNode = (SDataType*)pObj;
229,448,639✔
630

631
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
229,448,639✔
632
  if (TSDB_CODE_SUCCESS == code) {
228,082,920!
633
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
228,115,495✔
634
  }
635
  if (TSDB_CODE_SUCCESS == code) {
226,744,836!
636
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
226,813,528✔
637
  }
638
  if (TSDB_CODE_SUCCESS == code) {
225,904,739!
639
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
226,113,731✔
640
  }
641

642
  return code;
226,245,509✔
643
}
644

645
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
477,880,224✔
646
  SDataType* pNode = (SDataType*)pObj;
477,880,224✔
647

648
  int32_t code = TSDB_CODE_SUCCESS;
477,880,224✔
649
  STlv*   pTlv = NULL;
477,880,224✔
650
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
651
    switch (pTlv->type) {
1,880,936,127!
652
      case DATA_TYPE_CODE_TYPE:
474,956,912✔
653
        code = tlvDecodeI8(pTlv, &pNode->type);
474,956,912✔
654
        break;
472,334,327✔
655
      case DATA_TYPE_CODE_PRECISION:
469,698,884✔
656
        code = tlvDecodeU8(pTlv, &pNode->precision);
469,698,884✔
657
        break;
468,152,146✔
658
      case DATA_TYPE_CODE_SCALE:
467,873,065✔
659
        code = tlvDecodeU8(pTlv, &pNode->scale);
467,873,065✔
660
        break;
466,788,050✔
661
      case DATA_TYPE_CODE_BYTES:
468,407,266✔
662
        code = tlvDecodeI32(pTlv, &pNode->bytes);
468,407,266✔
663
        break;
469,026,558✔
664
      default:
×
665
        break;
×
666
    }
667
  }
668

669
  return code;
462,628,363✔
670
}
671

672
enum { EXPR_CODE_RES_TYPE = 1, EXPR_CODE_BIND_TUPLE_FUNC_IDX, EXPR_CODE_TUPLE_FUNC_IDX };
673

674
static int32_t exprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,725,485✔
675
  const SExprNode* pNode = (const SExprNode*)pObj;
8,725,485✔
676
  int32_t          code = tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
8,725,485✔
677
  if (TSDB_CODE_SUCCESS == code) {
8,676,585!
678
    code = tlvEncodeI32(pEncoder, EXPR_CODE_BIND_TUPLE_FUNC_IDX, pNode->relatedTo);
8,677,541✔
679
  }
680
  if (TSDB_CODE_SUCCESS == code) {
8,598,071!
681
    code = tlvEncodeI32(pEncoder, EXPR_CODE_TUPLE_FUNC_IDX, pNode->bindExprID);
8,600,442✔
682
  }
683
  return code;
8,599,682✔
684
}
685

686
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
480,607,435✔
687
  SExprNode* pNode = (SExprNode*)pObj;
480,607,435✔
688

689
  int32_t code = TSDB_CODE_SUCCESS;
480,607,435✔
690
  STlv*   pTlv = NULL;
480,607,435✔
691
  tlvForEach(pDecoder, pTlv, code) {
1,888,791,954!
692
    switch (pTlv->type) {
1,421,007,646!
693
      case EXPR_CODE_RES_TYPE:
479,006,105✔
694
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
479,006,105✔
695
        break;
469,581,928✔
696
      case EXPR_CODE_BIND_TUPLE_FUNC_IDX:
470,325,756✔
697
        code = tlvDecodeI32(pTlv, &pNode->relatedTo);
470,325,756✔
698
        break;
468,206,366✔
699
      case EXPR_CODE_TUPLE_FUNC_IDX:
471,675,785✔
700
        code = tlvDecodeI32(pTlv, &pNode->bindExprID);
471,675,785✔
701
        break;
470,396,225✔
702
      default:
×
703
        break;
×
704
    }
705
  }
706

707
  return code;
462,541,173✔
708
}
709

710
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
711

712
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,048,519✔
713
  const SColumnNode* pNode = (const SColumnNode*)pObj;
14,048,519✔
714

715
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
14,048,519✔
716
  if (TSDB_CODE_SUCCESS == code) {
13,722,539!
717
    code = tlvEncodeValueI32(pEncoder, pNode->node.relatedTo);
13,723,757✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
13,587,714!
720
    code = tlvEncodeValueI32(pEncoder, pNode->node.bindExprID);
13,628,747✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
13,558,118!
723
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
13,604,463✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
13,649,045!
726
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
13,694,963✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
13,747,927!
729
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
13,794,929✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
13,728,092!
732
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
13,777,449✔
733
  }
734
  if (TSDB_CODE_SUCCESS == code) {
13,658,479!
735
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
13,708,872✔
736
  }
737
  if (TSDB_CODE_SUCCESS == code) {
13,668,712!
738
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
13,718,807✔
739
  }
740
  if (TSDB_CODE_SUCCESS == code) {
13,682,005!
741
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
13,733,490✔
742
  }
743
  if (TSDB_CODE_SUCCESS == code) {
13,687,092!
744
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
13,739,678✔
745
  }
746
  if (TSDB_CODE_SUCCESS == code) {
13,704,420!
747
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
13,758,248✔
748
  }
749
  if (TSDB_CODE_SUCCESS == code) {
13,589,248!
750
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
13,700,766✔
751
  }
752
  if (TSDB_CODE_SUCCESS == code) {
13,484,483!
753
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
13,600,517✔
754
  }
755
  if (TSDB_CODE_SUCCESS == code) {
13,571,922!
756
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
13,689,505✔
757
  }  
758
  if (TSDB_CODE_SUCCESS == code) {
13,530,065!
759
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
13,653,460✔
760
  }
761
  if (TSDB_CODE_SUCCESS == code) {
13,580,656!
762
    code = tlvEncodeValueBool(pEncoder, pNode->isPrimTs);
13,706,253✔
763
  }
764
  if (TSDB_CODE_SUCCESS == code) {
13,555,206!
765
    code = tlvEncodeValueBool(pEncoder, pNode->hasDep);
13,682,631✔
766
  }
767
  if (TSDB_CODE_SUCCESS == code) {
13,523,045!
768
    code = tlvEncodeValueBool(pEncoder, pNode->hasRef);
13,657,601✔
769
  }
770
  if (TSDB_CODE_SUCCESS == code) {
13,511,623!
771
    code = tlvEncodeValueCStr(pEncoder, pNode->refDbName);
13,651,575✔
772
  }
773
  if (TSDB_CODE_SUCCESS == code) {
13,514,940!
774
    code = tlvEncodeValueCStr(pEncoder, pNode->refTableName);
13,656,415✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
13,472,368!
777
    code = tlvEncodeValueCStr(pEncoder, pNode->refColName);
13,617,502✔
778
  }
779
  return code;
13,624,580✔
780
}
781

782
static int32_t columnNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,075,007✔
783
  return tlvEncodeObj(pEncoder, COLUMN_CODE_INLINE_ATTRS, columnNodeInlineToMsg, pObj);
14,075,007✔
784
}
785

786
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
89,527,735✔
787
  SColumnNode* pNode = (SColumnNode*)pObj;
89,527,735✔
788

789
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
89,527,735✔
790
    if (TSDB_CODE_SUCCESS == code) {
89,044,068!
791
    code = tlvDecodeValueI32(pDecoder, &pNode->node.relatedTo);
89,048,747✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
88,909,214!
794
    code = tlvDecodeValueI32(pDecoder, &pNode->node.bindExprID);
88,953,995✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
88,860,507!
797
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
88,914,427✔
798
  }
799
  if (TSDB_CODE_SUCCESS == code) {
89,016,988!
800
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
89,060,230✔
801
  }
802
  if (TSDB_CODE_SUCCESS == code) {
88,969,392!
803
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
89,019,867✔
804
  }
805
  if (TSDB_CODE_SUCCESS == code) {
90,167,482!
806
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
90,243,815✔
807
  }
808
  if (TSDB_CODE_SUCCESS == code) {
89,601,722!
809
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
89,683,053✔
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
89,708,335!
812
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
89,786,510✔
813
  }
814
  if (TSDB_CODE_SUCCESS == code) {
89,755,525!
815
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
89,837,902✔
816
  }
817
  if (TSDB_CODE_SUCCESS == code) {
89,801,577!
818
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
89,921,085✔
819
  }
820
  if (TSDB_CODE_SUCCESS == code) {
89,819,472!
821
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
89,942,692✔
822
  }
823
  if (TSDB_CODE_SUCCESS == code) {
90,127,721!
824
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
90,231,214✔
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
90,143,137!
827
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
90,269,079✔
828
  }
829
  if (TSDB_CODE_SUCCESS == code) {
89,514,310!
830
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
89,645,182✔
831
  }  
832
  if (TSDB_CODE_SUCCESS == code) {
89,227,971!
833
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
89,363,765✔
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
90,108,912!
836
    code = tlvDecodeValueBool(pDecoder, &pNode->isPrimTs);
90,233,135✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
89,575,192!
839
    code = tlvDecodeValueBool(pDecoder, &pNode->hasDep);
89,703,954✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
89,286,175!
842
    code = tlvDecodeValueBool(pDecoder, &pNode->hasRef);
89,419,631✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
89,240,650!
845
    code = tlvDecodeValueCStr(pDecoder, pNode->refDbName);
89,399,513✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code) {
89,656,139!
848
    code = tlvDecodeValueCStr(pDecoder, pNode->refTableName);
89,796,074✔
849
  }
850
  if (TSDB_CODE_SUCCESS == code) {
89,710,175!
851
    code = tlvDecodeValueCStr(pDecoder, pNode->refColName);
89,854,023✔
852
  }
853
  return code;
89,942,669✔
854
}
855

856
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
89,450,342✔
857
  SColumnNode* pNode = (SColumnNode*)pObj;
89,450,342✔
858

859
  int32_t code = TSDB_CODE_SUCCESS;
89,450,342✔
860
  STlv*   pTlv = NULL;
89,450,342✔
861
  tlvForEach(pDecoder, pTlv, code) {
179,304,844!
862
    switch (pTlv->type) {
89,563,018!
863
      case COLUMN_CODE_INLINE_ATTRS:
89,563,018✔
864
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
89,563,018✔
865
        break;
89,854,502✔
866
      default:
×
867
        break;
×
868
    }
869
  }
870

871
  return code;
89,636,197✔
872
}
873

874
enum {
875
  VALUE_CODE_EXPR_BASE = 1,
876
  VALUE_CODE_LITERAL,
877
  VALUE_CODE_FLAG,
878
  VALUE_CODE_TRANSLATE,
879
  VALUE_CODE_NOT_RESERVED,
880
  VALUE_CODE_IS_NULL,
881
  VALUE_CODE_DATUM
882
};
883

884
static int32_t datumToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,873,102✔
885
  const SValueNode* pNode = (const SValueNode*)pObj;
2,873,102✔
886

887
  int32_t code = TSDB_CODE_SUCCESS;
2,873,102✔
888
  switch (pNode->node.resType.type) {
2,873,102!
889
    case TSDB_DATA_TYPE_NULL:
×
890
      break;
×
891
    case TSDB_DATA_TYPE_BOOL:
69,720✔
892
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
69,720✔
893
      break;
69,731✔
894
    case TSDB_DATA_TYPE_TINYINT:
2,226,914✔
895
    case TSDB_DATA_TYPE_SMALLINT:
896
    case TSDB_DATA_TYPE_INT:
897
    case TSDB_DATA_TYPE_BIGINT:
898
    case TSDB_DATA_TYPE_TIMESTAMP:
899
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
2,226,914✔
900
      break;
2,229,323✔
901
    case TSDB_DATA_TYPE_UTINYINT:
146✔
902
    case TSDB_DATA_TYPE_USMALLINT:
903
    case TSDB_DATA_TYPE_UINT:
904
    case TSDB_DATA_TYPE_UBIGINT:
905
      code = tlvEncodeU64(pEncoder, VALUE_CODE_DATUM, pNode->datum.u);
146✔
906
      break;
146✔
907
    case TSDB_DATA_TYPE_FLOAT:
211,276✔
908
    case TSDB_DATA_TYPE_DOUBLE:
909
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
211,276✔
910
      break;
211,517✔
911
    case TSDB_DATA_TYPE_VARCHAR:
368,391✔
912
    case TSDB_DATA_TYPE_VARBINARY:
913
    case TSDB_DATA_TYPE_NCHAR:
914
    case TSDB_DATA_TYPE_GEOMETRY:
915
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, varDataTLen(pNode->datum.p));
368,391✔
916
      break;
368,694✔
917
    case TSDB_DATA_TYPE_JSON:
12✔
918
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
12✔
919
      break;
1,331✔
920
    case TSDB_DATA_TYPE_DECIMAL:
15✔
921
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, pNode->node.resType.bytes);
15✔
922
      break;
15✔
923
    case TSDB_DATA_TYPE_DECIMAL64:
×
924
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
×
925
      break;
×
926
    case TSDB_DATA_TYPE_BLOB:
×
927
      // todo
928
    default:
929
      break;
×
930
  }
931

932
  return code;
2,877,385✔
933
}
934

935
static int32_t valueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,884,220✔
936
  const SValueNode* pNode = (const SValueNode*)pObj;
2,884,220✔
937

938
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
2,884,220✔
939
  if (TSDB_CODE_SUCCESS == code) {
2,872,295!
940
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
2,872,721✔
941
  }
942
  if (TSDB_CODE_SUCCESS == code) {
2,876,197!
943
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
2,877,105✔
944
  }
945
  if (TSDB_CODE_SUCCESS == code) {
2,875,995!
946
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
2,877,076✔
947
  }
948
  if (TSDB_CODE_SUCCESS == code) {
2,878,468!
949
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
2,879,933✔
950
  }
951
  if (TSDB_CODE_SUCCESS == code) {
2,877,519!
952
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
2,880,201✔
953
  }
954
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
2,875,960!
955
    code = datumToMsg(pNode, pEncoder);
2,873,308✔
956
  }
957

958
  return code;
2,884,463✔
959
}
960

961
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
443,319,219✔
962
  SValueNode* pNode = (SValueNode*)pObj;
443,319,219✔
963

964
  int32_t code = TSDB_CODE_SUCCESS;
443,319,219✔
965
  switch (pNode->node.resType.type) {
443,319,219!
966
    case TSDB_DATA_TYPE_NULL:
×
967
      break;
×
968
    case TSDB_DATA_TYPE_BOOL:
1,810,801✔
969
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
1,810,801✔
970
      *(bool*)&pNode->typeData = pNode->datum.b;
1,810,971✔
971
      break;
1,810,971✔
972
    case TSDB_DATA_TYPE_TINYINT:
2,969,401✔
973
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
2,969,401✔
974
      *(int8_t*)&pNode->typeData = pNode->datum.i;
2,968,930✔
975
      break;
2,968,930✔
976
    case TSDB_DATA_TYPE_SMALLINT:
928,554✔
977
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
928,554✔
978
      *(int16_t*)&pNode->typeData = pNode->datum.i;
928,404✔
979
      break;
928,404✔
980
    case TSDB_DATA_TYPE_INT:
1,512,243✔
981
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,512,243✔
982
      *(int32_t*)&pNode->typeData = pNode->datum.i;
1,512,028✔
983
      break;
1,512,028✔
984
    case TSDB_DATA_TYPE_BIGINT:
430,204,702✔
985
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
430,204,702✔
986
      *(int64_t*)&pNode->typeData = pNode->datum.i;
429,311,739✔
987
      break;
429,311,739✔
988
    case TSDB_DATA_TYPE_TIMESTAMP:
540,470✔
989
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
540,470✔
990
      *(int64_t*)&pNode->typeData = pNode->datum.i;
540,465✔
991
      break;
540,465✔
992
    case TSDB_DATA_TYPE_UTINYINT:
132✔
993
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
132✔
994
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
132✔
995
      break;
132✔
996
    case TSDB_DATA_TYPE_USMALLINT:
9✔
997
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
9✔
998
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
9✔
999
      break;
9✔
1000
    case TSDB_DATA_TYPE_UINT:
9✔
1001
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
9✔
1002
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
9✔
1003
      break;
9✔
1004
    case TSDB_DATA_TYPE_UBIGINT:
208,875✔
1005
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
208,875✔
1006
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
208,823✔
1007
      break;
208,823✔
1008
    case TSDB_DATA_TYPE_FLOAT:
5,775✔
1009
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
5,775✔
1010
      *(float*)&pNode->typeData = pNode->datum.d;
5,775✔
1011
      break;
5,775✔
1012
    case TSDB_DATA_TYPE_DOUBLE:
2,362,273✔
1013
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
2,362,273✔
1014
      *(double*)&pNode->typeData = pNode->datum.d;
2,361,547✔
1015
      break;
2,361,547✔
1016
    case TSDB_DATA_TYPE_NCHAR:
3,048,797✔
1017
    case TSDB_DATA_TYPE_VARCHAR:
1018
    case TSDB_DATA_TYPE_VARBINARY:
1019
    case TSDB_DATA_TYPE_GEOMETRY: {
1020
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
3,048,797!
1021
        code = TSDB_CODE_FAILED;
×
1022
        break;
×
1023
      }
1024
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
3,048,797!
1025
      if (NULL == pNode->datum.p) {
3,054,363!
1026
        code = terrno;
×
1027
        break;
×
1028
      }
1029
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
3,054,363✔
1030
      if (TSDB_CODE_SUCCESS == code) {
3,052,879!
1031
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
3,053,137✔
1032
      }
1033
      break;
3,052,879✔
1034
    }
1035
    case TSDB_DATA_TYPE_JSON: {
12✔
1036
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
12!
1037
        code = TSDB_CODE_FAILED;
×
1038
        break;
×
1039
      }
1040
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
12✔
1041
      break;
12✔
1042
    }
1043
    case TSDB_DATA_TYPE_DECIMAL:
15✔
1044
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
15!
1045
      if (!pNode->datum.p) {
15!
1046
        code = terrno;
×
1047
        break;
×
1048
      }
1049
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
15✔
1050
      break;
15✔
1051
    case TSDB_DATA_TYPE_DECIMAL64:
×
1052
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
×
1053
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
1054
      break;
×
1055
    case TSDB_DATA_TYPE_BLOB:
×
1056
      // todo
1057
    default:
1058
      break;
×
1059
  }
1060

1061
  return code;
442,428,889✔
1062
}
1063

1064
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
448,022,696✔
1065
  SValueNode* pNode = (SValueNode*)pObj;
448,022,696✔
1066

1067
  int32_t code = TSDB_CODE_SUCCESS;
448,022,696✔
1068
  STlv*   pTlv = NULL;
448,022,696✔
1069
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
1070
    switch (pTlv->type) {
2,147,483,647!
1071
      case VALUE_CODE_EXPR_BASE:
445,796,196✔
1072
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
445,796,196✔
1073
        break;
436,783,792✔
1074
      case VALUE_CODE_LITERAL:
434,345,518✔
1075
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
434,345,518✔
1076
        break;
452,103,239✔
1077
      case VALUE_CODE_FLAG:
449,982,822✔
1078
        code = tlvDecodeI32(pTlv, &pNode->flag);
449,982,822✔
1079
        break;
444,445,659✔
1080
      case VALUE_CODE_TRANSLATE:
443,311,887✔
1081
        code = tlvDecodeBool(pTlv, &pNode->translate);
443,311,887✔
1082
        break;
442,875,111✔
1083
      case VALUE_CODE_NOT_RESERVED:
443,847,534✔
1084
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
443,847,534✔
1085
        break;
442,035,327✔
1086
      case VALUE_CODE_IS_NULL:
443,755,672✔
1087
        code = tlvDecodeBool(pTlv, &pNode->isNull);
443,755,672✔
1088
        break;
442,551,053✔
1089
      case VALUE_CODE_DATUM:
443,493,074✔
1090
        code = msgToDatum(pTlv, pNode);
443,493,074✔
1091
        break;
440,790,819✔
1092
      default:
×
1093
        break;
×
1094
    }
1095
  }
1096

1097
  return code;
432,878,672✔
1098
}
1099

1100
enum { OPERATOR_CODE_EXPR_BASE = 1, OPERATOR_CODE_OP_TYPE, OPERATOR_CODE_LEFT, OPERATOR_CODE_RIGHT };
1101

1102
static int32_t operatorNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,452,704✔
1103
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
1,452,704✔
1104

1105
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,452,704✔
1106
  if (TSDB_CODE_SUCCESS == code) {
1,450,161!
1107
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,450,352✔
1108
  }
1109
  if (TSDB_CODE_SUCCESS == code) {
1,450,690!
1110
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,450,713✔
1111
  }
1112
  if (TSDB_CODE_SUCCESS == code) {
1,447,478!
1113
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,447,577✔
1114
  }
1115

1116
  return code;
1,450,072✔
1117
}
1118

1119
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
17,187,076✔
1120
  SOperatorNode* pNode = (SOperatorNode*)pObj;
17,187,076✔
1121

1122
  int32_t code = TSDB_CODE_SUCCESS;
17,187,076✔
1123
  STlv*   pTlv = NULL;
17,187,076✔
1124
  tlvForEach(pDecoder, pTlv, code) {
82,806,325!
1125
    switch (pTlv->type) {
65,630,726!
1126
      case OPERATOR_CODE_EXPR_BASE:
17,181,978✔
1127
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
17,181,978✔
1128
        break;
17,160,646✔
1129
      case OPERATOR_CODE_OP_TYPE:
17,160,644✔
1130
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
17,160,644✔
1131
        break;
17,166,480✔
1132
      case OPERATOR_CODE_LEFT:
17,171,856✔
1133
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
17,171,856✔
1134
        break;
17,184,872✔
1135
      case OPERATOR_CODE_RIGHT:
14,116,248✔
1136
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
14,116,248✔
1137
        break;
14,107,251✔
1138
      default:
×
1139
        break;
×
1140
    }
1141
  }
1142

1143
  return code;
17,125,343✔
1144
}
1145

1146
enum { LOGIC_COND_CODE_EXPR_BASE = 1, LOGIC_COND_CODE_COND_TYPE, LOGIC_COND_CODE_PARAMETERS };
1147

1148
static int32_t logicConditionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
341,522✔
1149
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
341,522✔
1150

1151
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
341,522✔
1152
  if (TSDB_CODE_SUCCESS == code) {
341,414!
1153
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
341,446✔
1154
  }
1155
  if (TSDB_CODE_SUCCESS == code) {
341,539✔
1156
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
341,490✔
1157
  }
1158

1159
  return code;
341,614✔
1160
}
1161

1162
static int32_t msgToLogicConditionNode(STlvDecoder* pDecoder, void* pObj) {
5,106,475✔
1163
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
5,106,475✔
1164

1165
  int32_t code = TSDB_CODE_SUCCESS;
5,106,475✔
1166
  STlv*   pTlv = NULL;
5,106,475✔
1167
  tlvForEach(pDecoder, pTlv, code) {
20,427,046!
1168
    switch (pTlv->type) {
15,316,628!
1169
      case LOGIC_COND_CODE_EXPR_BASE:
5,106,262✔
1170
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,106,262✔
1171
        break;
5,104,264✔
1172
      case LOGIC_COND_CODE_COND_TYPE:
5,104,386✔
1173
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
5,104,386✔
1174
        break;
5,105,891✔
1175
      case LOGIC_COND_CODE_PARAMETERS:
5,105,980✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
5,105,980✔
1177
        break;
5,110,416✔
1178
      default:
×
1179
        break;
×
1180
    }
1181
  }
1182

1183
  return code;
5,106,918✔
1184
}
1185

1186
enum {
1187
  FUNCTION_CODE_EXPR_BASE = 1,
1188
  FUNCTION_CODE_FUNCTION_NAME,
1189
  FUNCTION_CODE_FUNCTION_ID,
1190
  FUNCTION_CODE_FUNCTION_TYPE,
1191
  FUNCTION_CODE_PARAMETERS,
1192
  FUNCTION_CODE_UDF_BUF_SIZE,
1193
  FUNCTION_NODE_HAS_PK,
1194
  FUNCTION_NODE_PK_BYTES,
1195
  FUNCTION_CODE_IS_MERGE_FUNC,
1196
  FUNCTION_CODE_MERGE_FUNC_OF,
1197
  FUNCTION_CODE_TRIM_TYPE,
1198
  FUNCTION_SRC_FUNC_INPUT_TYPE,
1199
};
1200

1201
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,072,743✔
1202
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
4,072,743✔
1203

1204
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
4,072,743✔
1205
  if (TSDB_CODE_SUCCESS == code) {
4,019,932!
1206
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
4,021,194✔
1207
  }
1208
  if (TSDB_CODE_SUCCESS == code) {
4,054,089!
1209
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
4,056,266✔
1210
  }
1211
  if (TSDB_CODE_SUCCESS == code) {
4,026,890!
1212
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
4,029,506✔
1213
  }
1214
  if (TSDB_CODE_SUCCESS == code) {
4,007,943!
1215
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
4,010,734✔
1216
  }
1217
  if (TSDB_CODE_SUCCESS == code) {
4,034,372!
1218
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
4,037,517✔
1219
  }
1220
  if (TSDB_CODE_SUCCESS == code) {
4,035,903!
1221
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
4,039,409✔
1222
  }
1223
  if (TSDB_CODE_SUCCESS == code) {
4,044,475!
1224
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
4,048,989✔
1225
  }  
1226
  if (TSDB_CODE_SUCCESS == code) {
4,030,376!
1227
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
4,035,087✔
1228
  }
1229
  if (TSDB_CODE_SUCCESS == code) {
4,040,704!
1230
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
4,046,444✔
1231
  }
1232
  if (TSDB_CODE_SUCCESS == code) {
4,028,885!
1233
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
4,034,981✔
1234
  }
1235
  if (TSDB_CODE_SUCCESS == code) {
4,046,875!
1236
    code = tlvEncodeObj(pEncoder, FUNCTION_SRC_FUNC_INPUT_TYPE, dataTypeInlineToMsg, &pNode->srcFuncInputType);
4,053,626✔
1237
  }
1238

1239
  return code;
4,006,802✔
1240
}
1241

1242
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
12,651,483✔
1243
  SFunctionNode* pNode = (SFunctionNode*)pObj;
12,651,483✔
1244

1245
  int32_t code = TSDB_CODE_SUCCESS;
12,651,483✔
1246
  STlv*   pTlv = NULL;
12,651,483✔
1247
  tlvForEach(pDecoder, pTlv, code) {
160,995,933!
1248
    switch (pTlv->type) {
146,802,294!
1249
      case FUNCTION_CODE_EXPR_BASE:
12,650,615✔
1250
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
12,650,615✔
1251
        break;
12,635,672✔
1252
      case FUNCTION_CODE_FUNCTION_NAME:
12,636,111✔
1253
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
12,636,111✔
1254
        break;
12,637,374✔
1255
      case FUNCTION_CODE_FUNCTION_ID:
12,639,109✔
1256
        code = tlvDecodeI32(pTlv, &pNode->funcId);
12,639,109✔
1257
        break;
12,637,561✔
1258
      case FUNCTION_CODE_FUNCTION_TYPE:
12,638,159✔
1259
        code = tlvDecodeI32(pTlv, &pNode->funcType);
12,638,159✔
1260
        break;
12,632,890✔
1261
      case FUNCTION_CODE_PARAMETERS:
9,236,687✔
1262
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
9,236,687✔
1263
        break;
9,258,177✔
1264
      case FUNCTION_CODE_UDF_BUF_SIZE:
12,661,494✔
1265
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
12,661,494✔
1266
        break;
12,654,909✔
1267
      case FUNCTION_NODE_HAS_PK:
12,655,148✔
1268
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
12,655,148✔
1269
        break;
12,654,730✔
1270
      case FUNCTION_NODE_PK_BYTES:
12,654,365✔
1271
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
12,654,365✔
1272
        break;  
12,651,693✔
1273
      case FUNCTION_CODE_IS_MERGE_FUNC:
12,651,276✔
1274
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
12,651,276✔
1275
        break;
12,652,345✔
1276
      case FUNCTION_CODE_MERGE_FUNC_OF:
12,652,800✔
1277
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
12,652,800✔
1278
        break;
12,649,696✔
1279
      case FUNCTION_CODE_TRIM_TYPE:
12,649,330✔
1280
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
12,649,330✔
1281
        break;
12,647,879✔
1282
      case FUNCTION_SRC_FUNC_INPUT_TYPE:
12,650,548✔
1283
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->srcFuncInputType);
12,650,548✔
1284
      default:
12,631,524✔
1285
        break;
12,631,524✔
1286
    }
1287
  }
1288

1289
  return code;
14,209,772✔
1290
}
1291

1292
enum { ORDER_BY_EXPR_CODE_EXPR = 1, ORDER_BY_EXPR_CODE_ORDER, ORDER_BY_EXPR_CODE_NULL_ORDER };
1293

1294
static int32_t orderByExprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
328,123✔
1295
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
328,123✔
1296

1297
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
328,123✔
1298
  if (TSDB_CODE_SUCCESS == code) {
327,875!
1299
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
327,881✔
1300
  }
1301
  if (TSDB_CODE_SUCCESS == code) {
328,035!
1302
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
328,043✔
1303
  }
1304

1305
  return code;
328,093✔
1306
}
1307

1308
static int32_t msgToOrderByExprNode(STlvDecoder* pDecoder, void* pObj) {
2,419,158✔
1309
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
2,419,158✔
1310

1311
  int32_t code = TSDB_CODE_SUCCESS;
2,419,158✔
1312
  STlv*   pTlv = NULL;
2,419,158✔
1313
  tlvForEach(pDecoder, pTlv, code) {
9,675,689!
1314
    switch (pTlv->type) {
7,256,919!
1315
      case ORDER_BY_EXPR_CODE_EXPR:
2,419,140✔
1316
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
2,419,140✔
1317
        break;
2,418,978✔
1318
      case ORDER_BY_EXPR_CODE_ORDER:
2,418,932✔
1319
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
2,418,932✔
1320
        break;
2,418,825✔
1321
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
2,418,847✔
1322
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
2,418,847✔
1323
        break;
2,418,728✔
1324
      default:
×
1325
        break;
×
1326
    }
1327
  }
1328

1329
  return code;
2,418,651✔
1330
}
1331

1332
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1333

1334
static int32_t limitNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
206,327✔
1335
  const SLimitNode* pNode = (const SLimitNode*)pObj;
206,327✔
1336

1337
  int32_t code = tlvEncodeObj(pEncoder, LIMIT_CODE_LIMIT, nodeToMsg, pNode->limit);
206,327✔
1338
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
206,588!
1339
    code = tlvEncodeObj(pEncoder, LIMIT_CODE_OFFSET, nodeToMsg, pNode->offset);
81,199✔
1340
  }
1341

1342
  return code;
206,527✔
1343
}
1344

1345
static int32_t msgToLimitNode(STlvDecoder* pDecoder, void* pObj) {
811,662✔
1346
  SLimitNode* pNode = (SLimitNode*)pObj;
811,662✔
1347

1348
  int32_t code = TSDB_CODE_SUCCESS;
811,662✔
1349
  STlv*   pTlv = NULL;
811,662✔
1350
  tlvForEach(pDecoder, pTlv, code) {
1,798,391!
1351
    switch (pTlv->type) {
987,036!
1352
      case LIMIT_CODE_LIMIT:
811,731✔
1353
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->limit);
811,731✔
1354
        break;
811,425✔
1355
      case LIMIT_CODE_OFFSET:
175,305✔
1356
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->offset);
175,305✔
1357
        break;
175,304✔
1358
      default:
×
1359
        break;
×
1360
    }
1361
  }
1362

1363
  return code;
811,290✔
1364
}
1365

1366
enum { NAME_CODE_TYPE = 1, NAME_CODE_ACCT_ID, NAME_CODE_DB_NAME, NAME_CODE_TABLE_NAME };
1367

1368
static int32_t nameToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,623,925✔
1369
  const SName* pNode = (const SName*)pObj;
1,623,925✔
1370

1371
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,623,925✔
1372
  if (TSDB_CODE_SUCCESS == code) {
1,628,098!
1373
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,628,510✔
1374
  }
1375
  if (TSDB_CODE_SUCCESS == code) {
1,626,461!
1376
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,627,189✔
1377
  }
1378
  if (TSDB_CODE_SUCCESS == code) {
1,627,021!
1379
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,628,120✔
1380
  }
1381

1382
  return code;
1,629,582✔
1383
}
1384

1385
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
6,470,573✔
1386
  SName* pNode = (SName*)pObj;
6,470,573✔
1387

1388
  int32_t code = TSDB_CODE_SUCCESS;
6,470,573✔
1389
  STlv*   pTlv = NULL;
6,470,573✔
1390
  tlvForEach(pDecoder, pTlv, code) {
32,355,692!
1391
    switch (pTlv->type) {
25,887,476!
1392
      case NAME_CODE_TYPE:
6,472,493✔
1393
        code = tlvDecodeU8(pTlv, &pNode->type);
6,472,493✔
1394
        break;
6,470,840✔
1395
      case NAME_CODE_ACCT_ID:
6,471,159✔
1396
        code = tlvDecodeI32(pTlv, &pNode->acctId);
6,471,159✔
1397
        break;
6,471,662✔
1398
      case NAME_CODE_DB_NAME:
6,472,288✔
1399
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
6,472,288✔
1400
        break;
6,470,793✔
1401
      case NAME_CODE_TABLE_NAME:
6,471,536✔
1402
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
6,471,536✔
1403
        break;
6,471,824✔
1404
      default:
×
1405
        break;
×
1406
    }
1407
  }
1408

1409
  return code;
6,472,469✔
1410
}
1411

1412
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1413

1414
static int32_t timeWindowToMsg(const void* pObj, STlvEncoder* pEncoder) {
205,906✔
1415
  const STimeWindow* pNode = (const STimeWindow*)pObj;
205,906✔
1416

1417
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
205,906✔
1418
  if (TSDB_CODE_SUCCESS == code) {
205,946!
1419
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
205,961✔
1420
  }
1421

1422
  return code;
206,016✔
1423
}
1424

1425
static int32_t msgToTimeWindow(STlvDecoder* pDecoder, void* pObj) {
2,743,339✔
1426
  STimeWindow* pNode = (STimeWindow*)pObj;
2,743,339✔
1427

1428
  int32_t code = TSDB_CODE_SUCCESS;
2,743,339✔
1429
  STlv*   pTlv = NULL;
2,743,339✔
1430
  tlvForEach(pDecoder, pTlv, code) {
8,231,321✔
1431
    switch (pTlv->type) {
5,488,181!
1432
      case TIME_WINDOW_CODE_START_KEY:
2,744,113✔
1433
        code = tlvDecodeI64(pTlv, &pNode->skey);
2,744,113✔
1434
        break;
2,744,030✔
1435
      case TIME_WINDOW_CODE_END_KEY:
2,744,068✔
1436
        code = tlvDecodeI64(pTlv, &pNode->ekey);
2,744,068✔
1437
        break;
2,743,952✔
1438
      default:
×
1439
        break;
×
1440
    }
1441
  }
1442

1443
  return code;
2,743,645✔
1444
}
1445

1446
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1447

1448
static int32_t nodeListNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
52,135✔
1449
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
52,135✔
1450

1451
  int32_t code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_DATA_TYPE, dataTypeInlineToMsg, &pNode->node.resType);
52,135✔
1452
  if (TSDB_CODE_SUCCESS == code) {
52,075!
1453
    code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_NODE_LIST, nodeListToMsg, pNode->pNodeList);
52,077✔
1454
  }
1455

1456
  return code;
52,127✔
1457
}
1458

1459
static int32_t msgToNodeListNode(STlvDecoder* pDecoder, void* pObj) {
2,987,948✔
1460
  SNodeListNode* pNode = (SNodeListNode*)pObj;
2,987,948✔
1461

1462
  int32_t code = TSDB_CODE_SUCCESS;
2,987,948✔
1463
  STlv*   pTlv = NULL;
2,987,948✔
1464
  tlvForEach(pDecoder, pTlv, code) {
8,965,557✔
1465
    switch (pTlv->type) {
5,975,122!
1466
      case NODE_LIST_CODE_DATA_TYPE:
2,988,564✔
1467
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
2,988,564✔
1468
        break;
2,986,473✔
1469
      case NODE_LIST_CODE_NODE_LIST:
2,986,558✔
1470
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
2,986,558✔
1471
        break;
2,991,136✔
1472
      default:
×
1473
        break;
×
1474
    }
1475
  }
1476

1477
  return code;
2,990,541✔
1478
}
1479

1480
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1481

1482
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,624,368✔
1483
  const STargetNode* pNode = (const STargetNode*)pObj;
11,624,368✔
1484

1485
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
11,624,368✔
1486
  if (TSDB_CODE_SUCCESS == code) {
11,509,612!
1487
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
11,511,535✔
1488
  }
1489

1490
  return code;
11,388,390✔
1491
}
1492

1493
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,585,570✔
1494
  const STargetNode* pNode = (const STargetNode*)pObj;
11,585,570✔
1495

1496
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
11,585,570✔
1497
  if (TSDB_CODE_SUCCESS == code) {
11,405,605!
1498
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
11,408,524✔
1499
  }
1500

1501
  return code;
11,398,441✔
1502
}
1503

1504
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
67,996,125✔
1505
  STargetNode* pNode = (STargetNode*)pObj;
67,996,125✔
1506

1507
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
67,996,125✔
1508
  if (TSDB_CODE_SUCCESS == code) {
68,377,946!
1509
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
68,404,574✔
1510
  }
1511

1512
  return code;
68,361,615✔
1513
}
1514

1515
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
68,118,140✔
1516
  STargetNode* pNode = (STargetNode*)pObj;
68,118,140✔
1517

1518
  int32_t code = TSDB_CODE_SUCCESS;
68,118,140✔
1519
  STlv*   pTlv = NULL;
68,118,140✔
1520
  tlvForEach(pDecoder, pTlv, code) {
204,327,607✔
1521
    switch (pTlv->type) {
136,268,149!
1522
      case TARGET_CODE_INLINE_ATTRS:
68,070,726✔
1523
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
68,070,726✔
1524
        break;
68,304,350✔
1525
      case TARGET_CODE_EXPR:
68,197,423✔
1526
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
68,197,423✔
1527
        break;
67,905,117✔
1528
      default:
×
1529
        break;
×
1530
    }
1531
  }
1532

1533
  return code;
67,758,040✔
1534
}
1535

1536
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1537

1538
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,370,342✔
1539
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
6,370,342✔
1540

1541
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
6,370,342✔
1542
  if (TSDB_CODE_SUCCESS == code) {
6,347,480!
1543
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
6,348,467✔
1544
  }
1545
  if (TSDB_CODE_SUCCESS == code) {
6,343,481!
1546
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
6,345,420✔
1547
  }
1548
  if (TSDB_CODE_SUCCESS == code) {
6,332,869!
1549
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
6,336,151✔
1550
  }
1551

1552
  return code;
6,345,090✔
1553
}
1554

1555
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,371,985✔
1556
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
6,371,985✔
1557

1558
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
6,371,985✔
1559
  if (TSDB_CODE_SUCCESS == code) {
6,352,120!
1560
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
6,352,823✔
1561
  }
1562

1563
  return code;
6,353,613✔
1564
}
1565

1566
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
28,763,818✔
1567
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
28,763,818✔
1568

1569
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
28,763,818✔
1570
  if (TSDB_CODE_SUCCESS == code) {
28,794,543!
1571
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
28,796,622✔
1572
  }
1573
  if (TSDB_CODE_SUCCESS == code) {
28,763,780✔
1574
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
28,761,184✔
1575
  }
1576
  if (TSDB_CODE_SUCCESS == code) {
28,750,321✔
1577
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
28,749,150✔
1578
  }
1579

1580
  return code;
28,742,697✔
1581
}
1582

1583
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
28,765,697✔
1584
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
28,765,697✔
1585

1586
  int32_t code = TSDB_CODE_SUCCESS;
28,765,697✔
1587
  STlv*   pTlv = NULL;
28,765,697✔
1588
  tlvForEach(pDecoder, pTlv, code) {
86,276,401✔
1589
    switch (pTlv->type) {
57,515,944!
1590
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
28,770,913✔
1591
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
28,770,913✔
1592
        break;
28,741,552✔
1593
      case DATA_BLOCK_DESC_CODE_SLOTS:
28,745,031✔
1594
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
28,745,031✔
1595
        break;
28,769,152✔
1596
      default:
×
1597
        break;
×
1598
    }
1599
  }
1600

1601
  return code;
28,754,555✔
1602
}
1603

1604
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1605

1606
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,325,016✔
1607
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
20,325,016✔
1608

1609
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
20,325,016✔
1610
  if (TSDB_CODE_SUCCESS == code) {
20,096,906!
1611
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
20,103,818✔
1612
  }
1613
  if (TSDB_CODE_SUCCESS == code) {
19,746,703!
1614
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
19,753,040✔
1615
  }
1616
  if (TSDB_CODE_SUCCESS == code) {
19,657,171!
1617
    code = tlvEncodeValueBool(pEncoder, pNode->output);
19,668,409✔
1618
  }
1619
  if (TSDB_CODE_SUCCESS == code) {
19,623,168!
1620
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
19,644,764✔
1621
  }
1622

1623
  return code;
19,637,377✔
1624
}
1625

1626
static int32_t slotDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,240,268✔
1627
  return tlvEncodeObj(pEncoder, SLOT_DESC_CODE_INLINE_ATTRS, slotDescNodeInlineToMsg, pObj);
20,240,268✔
1628
}
1629

1630
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
123,852,128✔
1631
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
123,852,128✔
1632

1633
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
123,852,128✔
1634
  if (TSDB_CODE_SUCCESS == code) {
124,882,561!
1635
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
124,919,045✔
1636
  }
1637
  if (TSDB_CODE_SUCCESS == code) {
122,823,219!
1638
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
122,867,902✔
1639
  }
1640
  if (TSDB_CODE_SUCCESS == code) {
122,838,202!
1641
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
122,891,130✔
1642
  }
1643
  if (TSDB_CODE_SUCCESS == code) {
122,806,898!
1644
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
122,858,794✔
1645
  }
1646

1647
  return code;
122,887,601✔
1648
}
1649

1650
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
123,827,015✔
1651
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
123,827,015✔
1652

1653
  int32_t code = TSDB_CODE_SUCCESS;
123,827,015✔
1654
  STlv*   pTlv = NULL;
123,827,015✔
1655
  tlvForEach(pDecoder, pTlv, code) {
246,657,196!
1656
    switch (pTlv->type) {
123,951,081!
1657
      case SLOT_DESC_CODE_INLINE_ATTRS:
123,951,081✔
1658
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
123,951,081✔
1659
        break;
122,830,181✔
1660
      default:
×
1661
        break;
×
1662
    }
1663
  }
1664

1665
  return code;
122,859,127✔
1666
}
1667

1668
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1669

1670
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,636,784✔
1671
  const SEp* pNode = (const SEp*)pObj;
2,636,784✔
1672

1673
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
2,636,784✔
1674
  if (TSDB_CODE_SUCCESS == code) {
2,634,928!
1675
    code = tlvEncodeValueU16(pEncoder, pNode->port);
2,635,406✔
1676
  }
1677

1678
  return code;
2,636,741✔
1679
}
1680

1681
static int32_t epToMsg(const void* pObj, STlvEncoder* pEncoder) {
53,024✔
1682
  const SEp* pNode = (const SEp*)pObj;
53,024✔
1683

1684
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
53,024✔
1685
  if (TSDB_CODE_SUCCESS == code) {
53,086!
1686
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
53,092✔
1687
  }
1688

1689
  return code;
53,127✔
1690
}
1691

1692
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
11,684,472✔
1693
  SEp* pNode = (SEp*)pObj;
11,684,472✔
1694

1695
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
11,684,472✔
1696
  if (TSDB_CODE_SUCCESS == code) {
11,700,554!
1697
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
11,700,837✔
1698
  }
1699

1700
  return code;
11,706,806✔
1701
}
1702

1703
static int32_t msgToEp(STlvDecoder* pDecoder, void* pObj) {
1,219,953✔
1704
  SEp* pNode = (SEp*)pObj;
1,219,953✔
1705

1706
  int32_t code = TSDB_CODE_SUCCESS;
1,219,953✔
1707
  STlv*   pTlv = NULL;
1,219,953✔
1708
  tlvForEach(pDecoder, pTlv, code) {
3,663,060!
1709
    switch (pTlv->type) {
2,441,527!
1710
      case EP_CODE_FQDN:
1,220,817✔
1711
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
1,220,817✔
1712
        break;
1,220,560✔
1713
      case EP_CODE_port:
1,220,710✔
1714
        code = tlvDecodeU16(pTlv, &pNode->port);
1,220,710✔
1715
        break;
1,222,547✔
1716
      default:
×
1717
        break;
×
1718
    }
1719
  }
1720

1721
  return code;
1,219,518✔
1722
}
1723

1724
enum { EP_SET_CODE_IN_USE = 1, EP_SET_CODE_NUM_OF_EPS, EP_SET_CODE_EPS };
1725

1726
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,055,565✔
1727
  const SEpSet* pNode = (const SEpSet*)pObj;
3,055,565✔
1728

1729
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
3,055,565✔
1730
  if (TSDB_CODE_SUCCESS == code) {
3,061,776!
1731
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
3,063,707✔
1732
  }
1733

1734
  return code;
3,060,722✔
1735
}
1736

1737
static int32_t epSetToMsg(const void* pObj, STlvEncoder* pEncoder) {
51,112✔
1738
  const SEpSet* pNode = (const SEpSet*)pObj;
51,112✔
1739

1740
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
51,112✔
1741
  if (TSDB_CODE_SUCCESS == code) {
50,664!
1742
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
50,680✔
1743
  }
1744
  if (TSDB_CODE_SUCCESS == code) {
50,547!
1745
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
50,570✔
1746
  }
1747

1748
  return code;
51,178✔
1749
}
1750

1751
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
13,788,884✔
1752
  SEpSet* pNode = (SEpSet*)pObj;
13,788,884✔
1753

1754
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
13,788,884✔
1755
  if (TSDB_CODE_SUCCESS == code) {
13,787,720✔
1756
    int32_t numOfEps = 0;
13,787,329✔
1757
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
13,787,329✔
1758
    pNode->numOfEps = numOfEps;
13,805,929✔
1759
  }
1760

1761
  return code;
13,806,320✔
1762
}
1763

1764
static int32_t msgToEpSet(STlvDecoder* pDecoder, void* pObj) {
1,218,744✔
1765
  SEpSet* pNode = (SEpSet*)pObj;
1,218,744✔
1766

1767
  int32_t code = TSDB_CODE_SUCCESS;
1,218,744✔
1768
  STlv*   pTlv = NULL;
1,218,744✔
1769
  tlvForEach(pDecoder, pTlv, code) {
4,876,702!
1770
    switch (pTlv->type) {
3,657,929!
1771
      case EP_SET_CODE_IN_USE:
1,219,412✔
1772
        code = tlvDecodeI8(pTlv, &pNode->inUse);
1,219,412✔
1773
        break;
1,219,085✔
1774
      case EP_SET_CODE_NUM_OF_EPS:
1,219,249✔
1775
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
1,219,249✔
1776
        break;
1,219,272✔
1777
      case EP_SET_CODE_EPS:
1,219,268✔
1778
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
1,219,268✔
1779
        break;
1,219,601✔
1780
      default:
×
1781
        break;
×
1782
    }
1783
  }
1784

1785
  return code;
1,216,262✔
1786
}
1787

1788
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1789

1790
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,053,206✔
1791
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
3,053,206✔
1792

1793
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
3,053,206✔
1794
  if (TSDB_CODE_SUCCESS == code) {
3,055,835!
1795
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
3,056,440✔
1796
  }
1797

1798
  return code;
3,060,611✔
1799
}
1800

1801
static int32_t queryNodeAddrToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1802
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
×
1803

1804
  int32_t code = tlvEncodeI32(pEncoder, QUERY_NODE_ADDR_CODE_NODE_ID, pNode->nodeId);
×
1805
  if (TSDB_CODE_SUCCESS == code) {
×
1806
    code = tlvEncodeObj(pEncoder, QUERY_NODE_ADDR_CODE_EP_SET, epSetToMsg, &pNode->epSet);
×
1807
  }
1808

1809
  return code;
×
1810
}
1811

1812
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
13,790,738✔
1813
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
13,790,738✔
1814

1815
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
13,790,738✔
1816
  if (TSDB_CODE_SUCCESS == code) {
13,792,365!
1817
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
13,792,671✔
1818
  }
1819

1820
  return code;
13,806,180✔
1821
}
1822

1823
static int32_t msgToQueryNodeAddr(STlvDecoder* pDecoder, void* pObj) {
×
1824
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
×
1825

1826
  int32_t code = TSDB_CODE_SUCCESS;
×
1827
  STlv*   pTlv = NULL;
×
1828
  tlvForEach(pDecoder, pTlv, code) {
×
1829
    switch (pTlv->type) {
×
1830
      case QUERY_NODE_ADDR_CODE_NODE_ID:
×
1831
        code = tlvDecodeI32(pTlv, &pNode->nodeId);
×
1832
        break;
×
1833
      case QUERY_NODE_ADDR_CODE_EP_SET:
×
1834
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
×
1835
        break;
×
1836
    }
1837
  }
1838

1839
  return code;
×
1840
}
1841

1842
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1843

1844
static int32_t downstreamSourceNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,004,358✔
1845
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
1,004,358✔
1846

1847
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
1,004,358✔
1848
  if (TSDB_CODE_SUCCESS == code) {
1,004,322!
1849
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
1,004,322✔
1850
  }
1851
  if (TSDB_CODE_SUCCESS == code) {
1,004,294!
1852
    code = tlvEncodeValueU64(pEncoder, pNode->sId);
1,004,294✔
1853
  }
1854
  if (TSDB_CODE_SUCCESS == code) {
1,004,305!
1855
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
1,004,312✔
1856
  }
1857
  if (TSDB_CODE_SUCCESS == code) {
1,004,321✔
1858
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
1,004,319✔
1859
  }
1860
  if (TSDB_CODE_SUCCESS == code) {
1,004,325!
1861
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
1,004,325✔
1862
  }
1863

1864
  return code;
1,004,313✔
1865
}
1866

1867
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,004,371✔
1868
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
1,004,371✔
1869
}
1870

1871
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
5,204,994✔
1872
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
5,204,994✔
1873

1874
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
5,204,994✔
1875
  if (TSDB_CODE_SUCCESS == code) {
5,210,413!
1876
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
5,210,429✔
1877
  }
1878
  if (TSDB_CODE_SUCCESS == code) {
5,208,516!
1879
    code = tlvDecodeValueU64(pDecoder, &pNode->sId);
5,208,591✔
1880
  }
1881
  if (TSDB_CODE_SUCCESS == code) {
5,204,900!
1882
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
5,205,054✔
1883
  }
1884
  if (TSDB_CODE_SUCCESS == code) {
5,203,356!
1885
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
5,203,467✔
1886
  }
1887
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
5,201,188!
1888
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
5,201,997✔
1889
  }
1890

1891
  return code;
5,201,995✔
1892
}
1893

1894
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
5,204,449✔
1895
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
5,204,449✔
1896

1897
  int32_t code = TSDB_CODE_SUCCESS;
5,204,449✔
1898
  STlv*   pTlv = NULL;
5,204,449✔
1899
  tlvForEach(pDecoder, pTlv, code) {
10,406,269!
1900
    switch (pTlv->type) {
5,205,209!
1901
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
5,205,209✔
1902
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
5,205,209✔
1903
        break;
5,201,820✔
1904
      default:
×
1905
        break;
×
1906
    }
1907
  }
1908

1909
  return code;
5,201,431✔
1910
}
1911

1912
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
1913

1914
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
7,460✔
1915
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
7,460✔
1916

1917
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
7,460✔
1918
  if (TSDB_CODE_SUCCESS == code) {
7,466!
1919
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
7,466✔
1920
  }
1921
  if (TSDB_CODE_SUCCESS == code) {
7,464!
1922
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
7,465✔
1923
  }
1924

1925
  return code;
7,459✔
1926
}
1927

1928
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
7,384✔
1929
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
7,384✔
1930

1931
  int32_t code = TSDB_CODE_SUCCESS;
7,384✔
1932
  STlv*   pTlv = NULL;
7,384✔
1933
  tlvForEach(pDecoder, pTlv, code) {
29,522!
1934
    switch (pTlv->type) {
22,143!
1935
      case WHEN_THEN_CODE_EXPR_BASE:
7,384✔
1936
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
7,384✔
1937
        break;
7,377✔
1938
      case WHEN_THEN_CODE_WHEN:
7,379✔
1939
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
7,379✔
1940
        break;
7,379✔
1941
      case WHEN_THEN_CODE_THEN:
7,380✔
1942
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
7,380✔
1943
        break;
7,382✔
1944
      default:
×
1945
        break;
×
1946
    }
1947
  }
1948

1949
  return code;
7,379✔
1950
}
1951

1952
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
1953

1954
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,523✔
1955
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
5,523✔
1956

1957
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,523✔
1958
  if (TSDB_CODE_SUCCESS == code) {
5,518!
1959
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
5,518✔
1960
  }
1961
  if (TSDB_CODE_SUCCESS == code) {
5,517!
1962
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
5,518✔
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
5,512!
1965
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
5,513✔
1966
  }
1967

1968
  return code;
5,512✔
1969
}
1970

1971
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
5,186✔
1972
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
5,186✔
1973

1974
  int32_t code = TSDB_CODE_SUCCESS;
5,186✔
1975
  STlv*   pTlv = NULL;
5,186✔
1976
  tlvForEach(pDecoder, pTlv, code) {
20,429!
1977
    switch (pTlv->type) {
15,243!
1978
      case CASE_WHEN_CODE_EXPR_BASE:
5,186✔
1979
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,186✔
1980
        break;
5,180✔
1981
      case CASE_WHEN_CODE_CASE:
858✔
1982
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
858✔
1983
        break;
858✔
1984
      case CASE_WHEN_CODE_ELSE:
4,017✔
1985
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
4,017✔
1986
        break;
4,019✔
1987
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
5,182✔
1988
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
5,182✔
1989
        break;
5,186✔
1990
      default:
×
1991
        break;
×
1992
    }
1993
  }
1994

1995
  return code;
5,184✔
1996
}
1997

1998
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
1999

2000
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
829✔
2001
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
829✔
2002

2003
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
829✔
2004
  if (TSDB_CODE_SUCCESS == code) {
829!
2005
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
829✔
2006
  }
2007

2008
  return code;
829✔
2009
}
2010

2011
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
668✔
2012
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
668✔
2013

2014
  int32_t code = TSDB_CODE_SUCCESS;
668✔
2015
  STlv*   pTlv = NULL;
668✔
2016
  tlvForEach(pDecoder, pTlv, code) {
2,003!
2017
    switch (pTlv->type) {
1,336!
2018
      case WINDOW_OFFSET_CODE_START_OFFSET:
668✔
2019
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartOffset);
668✔
2020
        break;
668✔
2021
      case WINDOW_OFFSET_CODE_END_OFFSET:
668✔
2022
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndOffset);
668✔
2023
        break;
667✔
2024
      default:
×
2025
        break;
×
2026
    }
2027
  }
2028

2029
  return code;
667✔
2030
}
2031

2032

2033
enum {
2034
  PHY_NODE_CODE_OUTPUT_DESC = 1,
2035
  PHY_NODE_CODE_CONDITIONS,
2036
  PHY_NODE_CODE_CHILDREN,
2037
  PHY_NODE_CODE_LIMIT,
2038
  PHY_NODE_CODE_SLIMIT,
2039
  PHY_NODE_CODE_INPUT_TS_ORDER,
2040
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
2041
  PHY_NODE_CODE_DYNAMIC_OP,
2042
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
2043
};
2044

2045
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,303,039✔
2046
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
4,303,039✔
2047

2048
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
4,303,039✔
2049
  if (TSDB_CODE_SUCCESS == code) {
4,297,534!
2050
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
4,298,815✔
2051
  }
2052
  if (TSDB_CODE_SUCCESS == code) {
4,303,859!
2053
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
4,305,985✔
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
4,317,709!
2056
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
4,320,442✔
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
4,319,544!
2059
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
4,322,265✔
2060
  }
2061
  if (TSDB_CODE_SUCCESS == code) {
4,318,352!
2062
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
4,321,813✔
2063
  }
2064
  if (TSDB_CODE_SUCCESS == code) {
4,316,904!
2065
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
4,321,081✔
2066
  }
2067
  if (TSDB_CODE_SUCCESS == code) {
4,315,885!
2068
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
4,320,526✔
2069
  }
2070
  if (TSDB_CODE_SUCCESS == code) { 
4,315,927!
2071
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
4,319,093✔
2072
  }
2073

2074
  return code;
4,317,910✔
2075
}
2076

2077
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
20,179,932✔
2078
  SPhysiNode* pNode = (SPhysiNode*)pObj;
20,179,932✔
2079

2080
  int32_t code = TSDB_CODE_SUCCESS;
20,179,932✔
2081
  STlv*   pTlv = NULL;
20,179,932✔
2082
  tlvForEach(pDecoder, pTlv, code) {
134,939,808!
2083
    switch (pTlv->type) {
114,767,293!
2084
      case PHY_NODE_CODE_OUTPUT_DESC:
20,180,641✔
2085
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
20,180,641✔
2086
        break;
20,176,897✔
2087
      case PHY_NODE_CODE_CONDITIONS:
3,003,951✔
2088
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
3,003,951✔
2089
        break;
3,003,784✔
2090
      case PHY_NODE_CODE_CHILDREN:
10,039,667✔
2091
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
10,039,667✔
2092
        break;
10,043,088✔
2093
      case PHY_NODE_CODE_LIMIT:
800,869✔
2094
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
800,869✔
2095
        break;
800,478✔
2096
      case PHY_NODE_CODE_SLIMIT:
10,710✔
2097
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
10,710✔
2098
        break;
10,710✔
2099
      case PHY_NODE_CODE_INPUT_TS_ORDER:
20,181,398✔
2100
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
20,181,398✔
2101
        break;
20,180,876✔
2102
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
20,182,524✔
2103
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
20,182,524✔
2104
        break;
20,180,215✔
2105
      case PHY_NODE_CODE_DYNAMIC_OP:
20,181,696✔
2106
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
20,181,696✔
2107
        break;
20,182,310✔
2108
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
20,185,837✔
2109
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
20,185,837✔
2110
        break;
20,181,518✔
2111
      default:
×
2112
        break;
×
2113
    }
2114
  }
2115

2116
  return code;
20,168,265✔
2117
}
2118

2119
enum {
2120
  PHY_SCAN_CODE_BASE_NODE = 1,
2121
  PHY_SCAN_CODE_SCAN_COLS,
2122
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2123
  PHY_SCAN_CODE_BASE_UID,
2124
  PHY_SCAN_CODE_BASE_SUID,
2125
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2126
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2127
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN,
2128
  PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN
2129
};
2130

2131
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,618,716✔
2132
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
1,618,716✔
2133

2134
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,618,716✔
2135
  if (TSDB_CODE_SUCCESS == code) {
1,624,308!
2136
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,625,004✔
2137
  }
2138
  if (TSDB_CODE_SUCCESS == code) {
1,621,989!
2139
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,622,603✔
2140
  }
2141
  if (TSDB_CODE_SUCCESS == code) {
1,623,136!
2142
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,624,131✔
2143
  }
2144
  if (TSDB_CODE_SUCCESS == code) {
1,626,043!
2145
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,627,224✔
2146
  }
2147
  if (TSDB_CODE_SUCCESS == code) {
1,627,139!
2148
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,628,577✔
2149
  }
2150
  if (TSDB_CODE_SUCCESS == code) {
1,623,921!
2151
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,624,726✔
2152
  }
2153
  if (TSDB_CODE_SUCCESS == code) {
1,628,787!
2154
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,629,833✔
2155
  }
2156
  if (TSDB_CODE_SUCCESS == code) {
1,627,430!
2157
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN, pNode->virtualStableScan);
1,628,893✔
2158
  }
2159

2160
  return code;
1,628,403✔
2161
}
2162

2163
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
6,471,756✔
2164
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
6,471,756✔
2165

2166
  int32_t code = TSDB_CODE_SUCCESS;
6,471,756✔
2167
  STlv*   pTlv = NULL;
6,471,756✔
2168
  tlvForEach(pDecoder, pTlv, code) {
60,197,680!
2169
    switch (pTlv->type) {
53,551,863!
2170
      case PHY_SCAN_CODE_BASE_NODE:
6,474,016✔
2171
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,474,016✔
2172
        break;
6,471,679✔
2173
      case PHY_SCAN_CODE_SCAN_COLS:
6,426,311✔
2174
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
6,426,311✔
2175
        break;
6,432,242✔
2176
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
1,978,263✔
2177
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
1,978,263✔
2178
        break;
1,978,401✔
2179
      case PHY_SCAN_CODE_BASE_UID:
6,478,248✔
2180
        code = tlvDecodeU64(pTlv, &pNode->uid);
6,478,248✔
2181
        break;
6,476,731✔
2182
      case PHY_SCAN_CODE_BASE_SUID:
6,476,753✔
2183
        code = tlvDecodeU64(pTlv, &pNode->suid);
6,476,753✔
2184
        break;
6,474,719✔
2185
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
6,475,193✔
2186
        code = tlvDecodeI8(pTlv, &pNode->tableType);
6,475,193✔
2187
        break;
6,473,011✔
2188
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
6,473,014✔
2189
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
6,473,014✔
2190
        break;
6,471,426✔
2191
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
6,471,902✔
2192
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
6,471,902✔
2193
        break;
6,472,903✔
2194
      case PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN:
6,474,457✔
2195
        code = tlvDecodeBool(pTlv, &pNode->virtualStableScan);
6,474,457✔
2196
      default:
6,474,812✔
2197
        break;
6,474,812✔
2198
    }
2199
  }
2200

2201
  return code;
6,634,845✔
2202
}
2203

2204
enum {
2205
  PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN = 1,
2206
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS,
2207
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT,
2208
  PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS,
2209
  PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS,
2210
  PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS,
2211
  PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE,
2212
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED,
2213
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE,
2214
};
2215

2216
static int32_t physiVirtualTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,648✔
2217
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode *)pObj;
5,648✔
2218

2219
  int32_t code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
5,648✔
2220

2221
  if (TSDB_CODE_SUCCESS == code) {
5,648!
2222
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS, nodeListToMsg, pNode->pGroupTags);
5,648✔
2223
  }
2224

2225
  if (TSDB_CODE_SUCCESS == code) {
5,648!
2226
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT, pNode->groupSort);
5,648✔
2227
  }
2228

2229
  if (TSDB_CODE_SUCCESS == code) {
5,648!
2230
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS, pNode->scanAllCols);
5,648✔
2231
  }
2232

2233
  if (TSDB_CODE_SUCCESS == code) {
5,648!
2234
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
5,648✔
2235
  }
2236

2237
  if (TSDB_CODE_SUCCESS == code) {
5,644!
2238
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
5,644✔
2239
  }
2240

2241
  if (TSDB_CODE_SUCCESS == code) {
5,644!
2242
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
5,644✔
2243
  }
2244

2245
  if (TSDB_CODE_SUCCESS == code) {
5,644!
2246
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED, pNode->igExpired);
5,644✔
2247
  }
2248

2249
  if (TSDB_CODE_SUCCESS == code) {
5,644!
2250
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE, pNode->igCheckUpdate);
5,644✔
2251
  }
2252

2253
  return code;
5,644✔
2254
}
2255

2256
static int32_t msgToPhysiVirtualTableScanNode(STlvDecoder* pDecoder, void* pObj) {
×
2257
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
×
2258

2259
  int32_t code = TSDB_CODE_SUCCESS;
×
2260
  STlv*   pTlv = NULL;
×
2261
  tlvForEach(pDecoder, pTlv, code) {
×
2262
    switch (pTlv->type) {
×
2263
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN:
×
2264
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
×
2265
        break;
×
2266
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS:
×
2267
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
×
2268
        break;
×
2269
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT:
×
2270
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
×
2271
        break;
×
2272
      case PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS:
×
2273
        code = tlvDecodeBool(pTlv, &pNode->scanAllCols);
×
2274
        break;
×
2275
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS:
×
2276
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
×
2277
        break;
×
2278
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS:
×
2279
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2280
        break;
×
2281
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE:
×
2282
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2283
        break;
×
2284
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED:
×
2285
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
×
2286
        break;
×
2287
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE:
×
2288
        code = tlvDecodeI8(pTlv, &pNode->igCheckUpdate);
×
2289
        break;
×
2290
      default:
×
2291
        break;
×
2292
    }
2293
  }
2294

2295
  return code;
×
2296
}
2297

2298
enum {
2299
  PHY_TAG_SCAN_CODE_SCAN = 1,
2300
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2301
};
2302

2303
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
43,325✔
2304
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
43,325✔
2305

2306
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
43,325✔
2307

2308
  if (TSDB_CODE_SUCCESS == code) {
44,580!
2309
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
44,611✔
2310
  }
2311
  return code;
44,602✔
2312
}
2313

2314
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
47,827✔
2315
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
47,827✔
2316

2317
  int32_t code = TSDB_CODE_SUCCESS;
47,827✔
2318
  STlv*   pTlv = NULL;
47,827✔
2319
  tlvForEach(pDecoder, pTlv, code) {
143,452!
2320
    switch (pTlv->type) {
95,672!
2321
      case PHY_TAG_SCAN_CODE_SCAN:
47,841✔
2322
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
47,841✔
2323
        break;
47,812✔
2324
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
47,831✔
2325
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
47,831✔
2326
        break;
47,813✔
2327
      default:
×
2328
        break;
×
2329
    }
2330
  }
2331

2332
  return code;
47,803✔
2333
}
2334

2335
enum {
2336
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2337
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2338
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2339
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2340
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2341
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2342
};
2343

2344
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,572✔
2345
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
9,572✔
2346

2347
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
9,572✔
2348
  if (TSDB_CODE_SUCCESS == code) {
9,645!
2349
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
9,656✔
2350
  }
2351
  if (TSDB_CODE_SUCCESS == code) {
9,652!
2352
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
9,664✔
2353
  }
2354
  if (TSDB_CODE_SUCCESS == code) {
9,658!
2355
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
9,676✔
2356
  }
2357
  if (TSDB_CODE_SUCCESS == code) {
9,652!
2358
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
9,684✔
2359
  }
2360
  if (TSDB_CODE_SUCCESS == code) {
9,435!
2361
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
9,472✔
2362
  }
2363

2364
  return code;
9,540✔
2365
}
2366

2367
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
12,511✔
2368
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
12,511✔
2369

2370
  int32_t code = TSDB_CODE_SUCCESS;
12,511✔
2371
  STlv*   pTlv = NULL;
12,511✔
2372
  tlvForEach(pDecoder, pTlv, code) {
64,531!
2373
    switch (pTlv->type) {
52,015!
2374
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
12,509✔
2375
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
12,509✔
2376
        break;
12,510✔
2377
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
1,865✔
2378
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
1,865✔
2379
        break;
1,869✔
2380
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
12,512✔
2381
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
12,512✔
2382
        break;
12,513✔
2383
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
12,515✔
2384
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
12,515✔
2385
        break;
12,516✔
2386
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
12,515✔
2387
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
12,515✔
2388
        break;
12,515✔
2389
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
99✔
2390
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
99✔
2391
        break;
97✔
2392

2393
      default:
×
2394
        break;
×
2395
    }
2396
  }
2397

2398
  return code;
12,516✔
2399
}
2400

2401
enum {
2402
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2403
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2404
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2405
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2406
  PHY_TABLE_SCAN_CODE_TAGS,
2407
  PHY_TABLE_SCAN_CODE_SUBTABLE
2408
};
2409

2410
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,519,684✔
2411
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,519,684✔
2412

2413
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
1,519,684✔
2414
  if (TSDB_CODE_SUCCESS == code) {
1,518,024!
2415
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
1,518,271✔
2416
  }
2417
  if (TSDB_CODE_SUCCESS == code) {
1,515,017!
2418
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
1,515,122✔
2419
  }
2420
  if (TSDB_CODE_SUCCESS == code) {
1,514,081!
2421
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
1,514,424✔
2422
  }
2423
  if (TSDB_CODE_SUCCESS == code) {
1,513,903!
2424
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
1,514,638✔
2425
  }
2426
  if (TSDB_CODE_SUCCESS == code) {
1,512,914!
2427
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
1,514,164✔
2428
  }
2429
  if (TSDB_CODE_SUCCESS == code) {
1,512,668!
2430
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
1,513,581✔
2431
  }
2432
  if (TSDB_CODE_SUCCESS == code) {
1,512,013!
2433
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
1,513,109✔
2434
  }
2435
  if (TSDB_CODE_SUCCESS == code) {
1,512,681!
2436
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
1,513,899✔
2437
  }
2438
  if (TSDB_CODE_SUCCESS == code) {
1,512,333!
2439
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
1,513,739✔
2440
  }
2441
  if (TSDB_CODE_SUCCESS == code) {
1,511,718!
2442
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
1,513,140✔
2443
  }
2444
  if (TSDB_CODE_SUCCESS == code) {
1,514,834!
2445
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
1,516,347✔
2446
  }
2447
  if (TSDB_CODE_SUCCESS == code) {
1,515,731!
2448
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
1,517,427✔
2449
  }
2450
  if (TSDB_CODE_SUCCESS == code) {
1,517,181!
2451
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
1,519,013✔
2452
  }
2453
  if (TSDB_CODE_SUCCESS == code) {
1,516,483!
2454
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
1,517,975✔
2455
  }
2456
  if (TSDB_CODE_SUCCESS == code) {
1,517,415!
2457
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
1,519,023✔
2458
  }
2459
  if (TSDB_CODE_SUCCESS == code) {
1,515,085!
2460
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
1,516,784✔
2461
  }
2462
  if (TSDB_CODE_SUCCESS == code) {
1,516,090!
2463
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
1,517,927✔
2464
  }
2465
  if (TSDB_CODE_SUCCESS == code) {
1,514,286!
2466
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
1,516,286✔
2467
  }
2468
  if (TSDB_CODE_SUCCESS == code) {
1,512,725!
2469
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
1,515,024✔
2470
  }
2471
  if (TSDB_CODE_SUCCESS == code) {
1,511,940!
2472
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
1,514,519✔
2473
  }
2474
  return code;
1,514,507✔
2475
}
2476

2477
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,514,443✔
2478
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,514,443✔
2479

2480
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,514,443✔
2481
  if (TSDB_CODE_SUCCESS == code) {
1,519,539!
2482
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
1,519,937✔
2483
  }
2484
  if (TSDB_CODE_SUCCESS == code) {
1,514,942!
2485
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
1,515,464✔
2486
  }
2487
  if (TSDB_CODE_SUCCESS == code) {
1,517,450!
2488
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,518,130✔
2489
  }
2490
  if (TSDB_CODE_SUCCESS == code) {
1,517,606!
2491
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
1,519,138✔
2492
  }
2493
  if (TSDB_CODE_SUCCESS == code) {
1,518,963!
2494
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
1,520,715✔
2495
  }
2496

2497
  return code;
1,521,126✔
2498
}
2499

2500
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
5,187,588✔
2501
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
5,187,588✔
2502

2503
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
5,187,588✔
2504
  if (TSDB_CODE_SUCCESS == code) {
5,188,235✔
2505
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
5,187,789✔
2506
  }
2507
  if (TSDB_CODE_SUCCESS == code) {
5,188,702✔
2508
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
5,186,987✔
2509
  }
2510
  if (TSDB_CODE_SUCCESS == code) {
5,189,746✔
2511
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
5,188,561✔
2512
  }
2513
  if (TSDB_CODE_SUCCESS == code) {
5,189,539✔
2514
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
5,188,638✔
2515
  }
2516
  if (TSDB_CODE_SUCCESS == code) {
5,190,130✔
2517
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
5,189,747✔
2518
  }
2519
  if (TSDB_CODE_SUCCESS == code) {
5,189,742✔
2520
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
5,185,418✔
2521
  }
2522
  if (TSDB_CODE_SUCCESS == code) {
5,193,194✔
2523
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
5,189,004✔
2524
  }
2525
  if (TSDB_CODE_SUCCESS == code) {
5,193,192✔
2526
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
5,189,115✔
2527
  }
2528
  if (TSDB_CODE_SUCCESS == code) {
5,192,154✔
2529
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
5,188,229✔
2530
  }
2531
  if (TSDB_CODE_SUCCESS == code) {
5,191,953✔
2532
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
5,185,892✔
2533
  }
2534
  if (TSDB_CODE_SUCCESS == code) {
5,192,786✔
2535
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
5,186,911✔
2536
  }
2537
  if (TSDB_CODE_SUCCESS == code) {
5,191,995✔
2538
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
5,186,474✔
2539
  }
2540
  if (TSDB_CODE_SUCCESS == code) {
5,191,974✔
2541
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
5,187,102✔
2542
  }
2543
  if (TSDB_CODE_SUCCESS == code) {
5,193,310✔
2544
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
5,186,333✔
2545
  }
2546
  if (TSDB_CODE_SUCCESS == code) {
5,194,230✔
2547
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
5,187,673✔
2548
  }
2549
  if (TSDB_CODE_SUCCESS == code) {
5,196,179✔
2550
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
5,189,670✔
2551
  }
2552
  if (TSDB_CODE_SUCCESS == code) {
5,195,406✔
2553
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
5,189,461✔
2554
  }
2555
  if (TSDB_CODE_SUCCESS == code) {
5,196,799✔
2556
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
5,189,185✔
2557
  }
2558
  if (TSDB_CODE_SUCCESS == code) {
5,198,012✔
2559
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
5,190,426✔
2560
  }
2561
  if (TSDB_CODE_SUCCESS == code) {
5,198,243✔
2562
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
5,190,742✔
2563
  }
2564
  return code;
5,190,628✔
2565
}
2566

2567
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
5,189,907✔
2568
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
5,189,907✔
2569

2570
  int32_t code = TSDB_CODE_SUCCESS;
5,189,907✔
2571
  STlv*   pTlv = NULL;
5,189,907✔
2572
  tlvForEach(pDecoder, pTlv, code) {
15,959,989✔
2573
    switch (pTlv->type) {
10,769,538!
2574
      case PHY_TABLE_SCAN_CODE_SCAN:
5,190,207✔
2575
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
5,190,207✔
2576
        break;
5,190,419✔
2577
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
5,190,448✔
2578
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
5,190,448✔
2579
        break;
5,190,119✔
2580
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2581
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2582
        break;
×
2583
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
388,883✔
2584
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
388,883✔
2585
        break;
389,544✔
2586
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2587
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2588
        break;
×
2589
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2590
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2591
        break;
×
2592
      default:
×
2593
        break;
×
2594
    }
2595
  }
2596

2597
  return code;
5,191,485✔
2598
}
2599

2600
enum {
2601
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2602
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2603
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2604
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2605
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2606
};
2607

2608
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
48,350✔
2609
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
48,350✔
2610

2611
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
48,350✔
2612
  if (TSDB_CODE_SUCCESS == code) {
48,688!
2613
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
48,712✔
2614
  }
2615
  if (TSDB_CODE_SUCCESS == code) {
48,749✔
2616
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
48,705✔
2617
  }
2618
  if (TSDB_CODE_SUCCESS == code) {
48,792✔
2619
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
48,770✔
2620
  }
2621
  if (TSDB_CODE_SUCCESS == code) {
48,487✔
2622
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
48,474✔
2623
  }
2624

2625
  return code;
48,577✔
2626
}
2627

2628
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
1,219,041✔
2629
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
1,219,041✔
2630

2631
  int32_t code = TSDB_CODE_SUCCESS;
1,219,041✔
2632
  STlv*   pTlv = NULL;
1,219,041✔
2633
  tlvForEach(pDecoder, pTlv, code) {
7,314,122!
2634
    switch (pTlv->type) {
6,096,666!
2635
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
1,219,415✔
2636
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,219,415✔
2637
        break;
1,218,630✔
2638
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
1,218,827✔
2639
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
1,218,827✔
2640
        break;
1,218,623✔
2641
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
1,219,008✔
2642
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
1,219,008✔
2643
        break;
1,219,234✔
2644
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
1,219,910✔
2645
        code = tlvDecodeI32(pTlv, &pNode->accountId);
1,219,910✔
2646
        break;
1,219,161✔
2647
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
1,219,506✔
2648
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
1,219,506✔
2649
        break;
1,219,433✔
2650
      default:
×
2651
        break;
×
2652
    }
2653
  }
2654

2655
  return code;
1,222,157✔
2656
}
2657

2658
enum {
2659
  PHY_PROJECT_CODE_BASE_NODE = 1,
2660
  PHY_PROJECT_CODE_PROJECTIONS,
2661
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2662
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2663
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2664
};
2665

2666
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
526,663✔
2667
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
526,663✔
2668

2669
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
526,663✔
2670
  if (TSDB_CODE_SUCCESS == code) {
527,755!
2671
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
527,799✔
2672
  }
2673
  if (TSDB_CODE_SUCCESS == code) {
527,325!
2674
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
527,383✔
2675
  }
2676
  if (TSDB_CODE_SUCCESS == code) {
527,916!
2677
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
527,988✔
2678
  }
2679
  if (TSDB_CODE_SUCCESS == code) {
527,805!
2680
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
527,868✔
2681
  }
2682

2683
  return code;
527,827✔
2684
}
2685

2686
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
1,832,103✔
2687
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
1,832,103✔
2688

2689
  int32_t code = TSDB_CODE_SUCCESS;
1,832,103✔
2690
  STlv*   pTlv = NULL;
1,832,103✔
2691
  tlvForEach(pDecoder, pTlv, code) {
10,995,076!
2692
    switch (pTlv->type) {
9,162,800!
2693
      case PHY_PROJECT_CODE_BASE_NODE:
1,832,347✔
2694
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,832,347✔
2695
        break;
1,832,183✔
2696
      case PHY_PROJECT_CODE_PROJECTIONS:
1,832,166✔
2697
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
1,832,166✔
2698
        break;
1,833,086✔
2699
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
1,832,982✔
2700
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
1,832,982✔
2701
        break;
1,832,699✔
2702
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
1,832,722✔
2703
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,832,722✔
2704
        break;
1,832,528✔
2705
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
1,832,583✔
2706
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
1,832,583✔
2707
        break;
1,832,477✔
2708
      default:
×
2709
        break;
×
2710
    }
2711
  }
2712

2713
  return code;
1,832,097✔
2714
}
2715

2716
enum {
2717
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2718
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2719
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2720
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2721
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2722
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2723
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2724
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2725
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2726
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2727
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2728
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2729
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2730
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2731
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2732
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2733
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2734
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2735
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2736
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2737
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2738
};
2739

2740
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
92,344✔
2741
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
92,344✔
2742

2743
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
92,344✔
2744
  if (TSDB_CODE_SUCCESS == code) {
92,359!
2745
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
92,359✔
2746
  }
2747
  if (TSDB_CODE_SUCCESS == code) {
92,356!
2748
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
92,356✔
2749
  }
2750
  if (TSDB_CODE_SUCCESS == code) {
92,355!
2751
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
92,355✔
2752
  }
2753
  if (TSDB_CODE_SUCCESS == code) {
92,356!
2754
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
92,357✔
2755
  }
2756
  if (TSDB_CODE_SUCCESS == code) {
92,353!
2757
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
92,354✔
2758
  }  
2759
  if (TSDB_CODE_SUCCESS == code) {
92,364!
2760
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
92,364✔
2761
  }
2762
  if (TSDB_CODE_SUCCESS == code) {
92,364!
2763
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
92,364✔
2764
  }  
2765
  if (TSDB_CODE_SUCCESS == code) {
92,361!
2766
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
92,361✔
2767
  }  
2768
  if (TSDB_CODE_SUCCESS == code) {
92,366!
2769
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
92,366✔
2770
  }  
2771
  if (TSDB_CODE_SUCCESS == code) {
92,367!
2772
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
92,367✔
2773
  }
2774
  if (TSDB_CODE_SUCCESS == code) {
92,367!
2775
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
92,367✔
2776
  }
2777
  if (TSDB_CODE_SUCCESS == code) {
92,367!
2778
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
92,367✔
2779
  }
2780
  if (TSDB_CODE_SUCCESS == code) {
92,365!
2781
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
92,365✔
2782
  }
2783
  if (TSDB_CODE_SUCCESS == code) {
92,364✔
2784
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
92,363✔
2785
  }
2786
  if (TSDB_CODE_SUCCESS == code) {
92,359✔
2787
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
92,358✔
2788
  }
2789
  if (TSDB_CODE_SUCCESS == code) {
92,364✔
2790
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
92,363✔
2791
  }
2792
  if (TSDB_CODE_SUCCESS == code) {
92,360!
2793
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
92,361✔
2794
  }
2795
  if (TSDB_CODE_SUCCESS == code) {
92,358!
2796
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
92,360✔
2797
  }
2798
  if (TSDB_CODE_SUCCESS == code) {
92,356!
2799
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
92,358✔
2800
  }
2801
  if (TSDB_CODE_SUCCESS == code) {
92,360!
2802
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
92,362✔
2803
  }
2804
  
2805
  return code;
92,361✔
2806
}
2807

2808
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
96,276✔
2809
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
96,276✔
2810

2811
  int32_t code = TSDB_CODE_SUCCESS;
96,276✔
2812
  STlv*   pTlv = NULL;
96,276✔
2813
  tlvForEach(pDecoder, pTlv, code) {
1,409,250!
2814
    switch (pTlv->type) {
1,312,981!
2815
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
96,281✔
2816
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
96,281✔
2817
        break;
96,278✔
2818
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
96,279✔
2819
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
96,279✔
2820
        break;
96,277✔
2821
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
96,274✔
2822
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
96,274✔
2823
        break;
96,276✔
2824
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
668✔
2825
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
668✔
2826
        break;
667✔
2827
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
174✔
2828
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
174✔
2829
        break;
174✔
2830
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
96,275✔
2831
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
96,275✔
2832
        break;
96,271✔
2833
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
249✔
2834
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
249✔
2835
        break;
249✔
2836
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
159✔
2837
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
159✔
2838
        break;
159✔
2839
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
96,273✔
2840
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
96,273✔
2841
        break;
96,270✔
2842
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
96,271✔
2843
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
96,271✔
2844
        break;
96,269✔
2845
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
241✔
2846
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
241✔
2847
        break;
241✔
2848
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
241✔
2849
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
241✔
2850
        break;
241✔
2851
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
29,776✔
2852
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
29,776✔
2853
        break;
29,776✔
2854
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
29,921✔
2855
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
29,921✔
2856
        break;
29,921✔
2857
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
96,270✔
2858
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
96,270✔
2859
        break;
96,282✔
2860
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
96,280✔
2861
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
96,280✔
2862
        break;
96,277✔
2863
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
96,274✔
2864
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
96,274✔
2865
        break;
96,272✔
2866
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
96,270✔
2867
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
96,270✔
2868
        break;
96,269✔
2869
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
96,269✔
2870
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
96,269✔
2871
        break;
96,266✔
2872
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
96,266✔
2873
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
96,266✔
2874
        break;
96,269✔
2875
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
96,270✔
2876
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
96,270✔
2877
        break;
96,270✔
2878
      default:
×
2879
        break;
×
2880
    }
2881
  }
2882

2883
  return code;
96,248✔
2884
}
2885

2886
enum {
2887
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2888
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2889
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2890
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2891
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2892
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2893
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2894
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2895
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2896
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2897
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2898
  PHY_HASH_JOIN_CODE_TARGETS,
2899
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2900
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2901
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2902
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2903
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2904
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2905
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2906
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2907

2908
};
2909

2910
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,189✔
2911
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
9,189✔
2912

2913
  int32_t code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,189✔
2914
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2915
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_TYPE, pNode->joinType);
9,189✔
2916
  }
2917
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2918
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_STYPE, pNode->subType);
9,189✔
2919
  }
2920
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2921
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN, nodeListToMsg, pNode->pOnLeft);
9,189✔
2922
  }
2923
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2924
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN, nodeListToMsg, pNode->pOnRight);
9,189✔
2925
  }  
2926
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2927
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
9,189✔
2928
  }
2929
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2930
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
9,189✔
2931
  }
2932
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2933
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID, pNode->leftPrimSlotId);
9,189✔
2934
  }
2935
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2936
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID, pNode->rightPrimSlotId);
9,189✔
2937
  }
2938
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2939
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET, pNode->timeRangeTarget);
9,189✔
2940
  }
2941
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2942
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
9,189✔
2943
  }
2944
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2945
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
9,189✔
2946
  }
2947
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2948
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
9,189✔
2949
  }
2950
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2951
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
9,189✔
2952
  }
2953
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2954
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
9,189✔
2955
  }
2956
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2957
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
9,189✔
2958
  }
2959
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2960
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_ON_COND, nodeToMsg, pNode->pLeftOnCond);
9,189✔
2961
  }
2962
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2963
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_ON_COND, nodeToMsg, pNode->pRightOnCond);
9,189✔
2964
  }
2965
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2966
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY, pNode->timeRange.skey);
9,189✔
2967
  }
2968
  if (TSDB_CODE_SUCCESS == code) {
9,189!
2969
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY, pNode->timeRange.ekey);
9,189✔
2970
  }
2971

2972
  return code;
9,189✔
2973
}
2974

2975

2976
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
9,196✔
2977
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
9,196✔
2978

2979
  int32_t code = TSDB_CODE_SUCCESS;
9,196✔
2980
  STlv*   pTlv = NULL;
9,196✔
2981
  tlvForEach(pDecoder, pTlv, code) {
147,136!
2982
    switch (pTlv->type) {
137,940!
2983
      case PHY_HASH_JOIN_CODE_BASE_NODE:
9,196✔
2984
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,196✔
2985
        break;
9,196✔
2986
      case PHY_HASH_JOIN_CODE_JOIN_TYPE:
9,196✔
2987
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
9,196✔
2988
        break;
9,196✔
2989
      case PHY_HASH_JOIN_CODE_JOIN_STYPE:
9,196✔
2990
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
9,196✔
2991
        break;
9,196✔
2992
      case PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN:
9,196✔
2993
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnLeft);
9,196✔
2994
        break;
9,196✔
2995
      case PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN:
9,196✔
2996
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnRight);
9,196✔
2997
        break;
9,196✔
2998
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR:
×
2999
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
×
3000
        break;
×
3001
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR:
×
3002
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
×
3003
        break;
×
3004
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID:
9,196✔
3005
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
9,196✔
3006
        break;
9,196✔
3007
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID:
9,196✔
3008
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
9,196✔
3009
        break;
9,196✔
3010
      case PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET:
9,196✔
3011
        code = tlvDecodeI32(pTlv, &pNode->timeRangeTarget);
9,196✔
3012
        break;
9,196✔
3013
      case PHY_HASH_JOIN_CODE_ON_CONDITIONS:
×
3014
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
×
3015
        break;
×
3016
      case PHY_HASH_JOIN_CODE_TARGETS:
9,196✔
3017
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
9,196✔
3018
        break;
9,196✔
3019
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0:
9,196✔
3020
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
9,196✔
3021
        break;
9,196✔
3022
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1:
9,196✔
3023
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
9,196✔
3024
        break;
9,196✔
3025
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0:
9,196✔
3026
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
9,196✔
3027
        break;
9,196✔
3028
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1:
9,196✔
3029
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
9,196✔
3030
        break;
9,196✔
3031
      case PHY_HASH_JOIN_CODE_LEFT_ON_COND:
×
3032
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeftOnCond);
×
3033
        break;
×
3034
      case PHY_HASH_JOIN_CODE_RIGHT_ON_COND:
×
3035
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRightOnCond);
×
3036
        break;
×
3037
      case PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY:
9,196✔
3038
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
9,196✔
3039
        break;
9,196✔
3040
      case PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY:
9,196✔
3041
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
9,196✔
3042
        break;
9,196✔
3043
      default:
×
3044
        break;
×
3045
    }
3046
  }
3047

3048
  return code;
9,196✔
3049
}
3050

3051

3052
enum {
3053
  PHY_AGG_CODE_BASE_NODE = 1,
3054
  PHY_AGG_CODE_EXPR,
3055
  PHY_AGG_CODE_GROUP_KEYS,
3056
  PHY_AGG_CODE_AGG_FUNCS,
3057
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
3058
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
3059
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
3060
};
3061

3062
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
962,617✔
3063
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
962,617✔
3064

3065
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
962,617✔
3066
  if (TSDB_CODE_SUCCESS == code) {
966,808!
3067
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
967,009✔
3068
  }
3069
  if (TSDB_CODE_SUCCESS == code) {
966,231✔
3070
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
966,207✔
3071
  }
3072
  if (TSDB_CODE_SUCCESS == code) {
966,362!
3073
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
966,476✔
3074
  }
3075
  if (TSDB_CODE_SUCCESS == code) {
965,675!
3076
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
965,851✔
3077
  }
3078
  if (TSDB_CODE_SUCCESS == code) {
966,046!
3079
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
966,269✔
3080
  }
3081
  if (TSDB_CODE_SUCCESS == code) {
965,824!
3082
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
966,597✔
3083
  }
3084

3085
  return code;
966,399✔
3086
}
3087

3088
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
2,563,256✔
3089
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
2,563,256✔
3090

3091
  int32_t code = TSDB_CODE_SUCCESS;
2,563,256✔
3092
  STlv*   pTlv = NULL;
2,563,256✔
3093
  tlvForEach(pDecoder, pTlv, code) {
15,746,767!
3094
    switch (pTlv->type) {
13,184,976!
3095
      case PHY_AGG_CODE_BASE_NODE:
2,563,834✔
3096
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,563,834✔
3097
        break;
2,562,569✔
3098
      case PHY_AGG_CODE_EXPR:
324,971✔
3099
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
324,971✔
3100
        break;
325,187✔
3101
      case PHY_AGG_CODE_GROUP_KEYS:
379,485✔
3102
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
379,485✔
3103
        break;
379,616✔
3104
      case PHY_AGG_CODE_AGG_FUNCS:
2,223,881✔
3105
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
2,223,881✔
3106
        break;
2,224,627✔
3107
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
2,563,999✔
3108
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
2,563,999✔
3109
        break;
2,563,757✔
3110
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
2,564,442✔
3111
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
2,564,442✔
3112
        break;
2,563,826✔
3113
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
2,564,364✔
3114
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
2,564,364✔
3115
        break;
2,563,929✔
3116
      default:
×
3117
        break;
×
3118
    }
3119
  }
3120

3121
  return code;
2,567,380✔
3122
}
3123

3124
enum {
3125
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
3126
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
3127
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
3128
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
3129
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
3130
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA
3131
};
3132

3133
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
687,535✔
3134
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
687,535✔
3135

3136
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
687,535✔
3137
  if (TSDB_CODE_SUCCESS == code) {
687,537!
3138
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
687,544✔
3139
  }
3140
  if (TSDB_CODE_SUCCESS == code) {
687,533✔
3141
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
687,529✔
3142
  }
3143
  if (TSDB_CODE_SUCCESS == code) {
687,544✔
3144
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
687,541✔
3145
  }
3146
  if (TSDB_CODE_SUCCESS == code) {
687,566✔
3147
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
687,563✔
3148
  }
3149
  if (TSDB_CODE_SUCCESS == code) {
687,550!
3150
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
687,550✔
3151
  }
3152

3153
  return code;
687,557✔
3154
}
3155

3156
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
3,671,022✔
3157
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
3,671,022✔
3158

3159
  int32_t code = TSDB_CODE_SUCCESS;
3,671,022✔
3160
  STlv*   pTlv = NULL;
3,671,022✔
3161
  tlvForEach(pDecoder, pTlv, code) {
25,696,381!
3162
    switch (pTlv->type) {
22,025,340!
3163
      case PHY_EXCHANGE_CODE_BASE_NODE:
3,670,978✔
3164
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,670,978✔
3165
        break;
3,670,875✔
3166
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
3,670,844✔
3167
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
3,670,844✔
3168
        break;
3,670,807✔
3169
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
3,670,811✔
3170
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
3,670,811✔
3171
        break;
3,670,766✔
3172
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
3,670,795✔
3173
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
3,670,795✔
3174
        break;
3,670,852✔
3175
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
3,670,876✔
3176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
3,670,876✔
3177
        break;
3,671,081✔
3178
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
3,671,036✔
3179
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
3,671,036✔
3180
        break;
3,670,978✔
3181
      default:
×
3182
        break;
×
3183
    }
3184
  }
3185

3186
  return code;
3,670,883✔
3187
}
3188

3189
enum {
3190
  PHY_MERGE_CODE_BASE_NODE = 1,
3191
  PHY_MERGE_CODE_MERGE_KEYS,
3192
  PHY_MERGE_CODE_TARGETS,
3193
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3194
  PHY_MERGE_CODE_SRC_GROUP_ID,
3195
  PHY_MERGE_CODE_GROUP_SORT,
3196
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3197
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3198
  PHY_MERGE_CODE_TYPE,
3199
};
3200

3201
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,819✔
3202
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
80,819✔
3203

3204
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
80,819✔
3205
  if (TSDB_CODE_SUCCESS == code) {
80,822!
3206
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
80,823✔
3207
  }
3208
  if (TSDB_CODE_SUCCESS == code) {
80,823!
3209
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
80,824✔
3210
  }
3211
  if (TSDB_CODE_SUCCESS == code) {
80,824!
3212
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
80,825✔
3213
  }
3214
  if (TSDB_CODE_SUCCESS == code) {
80,825!
3215
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
80,826✔
3216
  }
3217
  if (TSDB_CODE_SUCCESS == code) {
80,825!
3218
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
80,826✔
3219
  }
3220
  if (TSDB_CODE_SUCCESS == code) {
80,826!
3221
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
80,827✔
3222
  }
3223
  if (TSDB_CODE_SUCCESS == code) {
80,825!
3224
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
80,826✔
3225
  }
3226
  if (TSDB_CODE_SUCCESS == code) {
80,826!
3227
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
80,827✔
3228
  }
3229

3230
  return code;
80,828✔
3231
}
3232

3233
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
1,388,058✔
3234
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
1,388,058✔
3235

3236
  int32_t code = TSDB_CODE_SUCCESS;
1,388,058✔
3237
  STlv*   pTlv = NULL;
1,388,058✔
3238
  tlvForEach(pDecoder, pTlv, code) {
13,877,383!
3239
    switch (pTlv->type) {
12,489,345!
3240
      case PHY_MERGE_CODE_BASE_NODE:
1,388,050✔
3241
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,388,050✔
3242
        break;
1,388,040✔
3243
      case PHY_MERGE_CODE_MERGE_KEYS:
1,385,070✔
3244
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
1,385,070✔
3245
        break;
1,385,084✔
3246
      case PHY_MERGE_CODE_TARGETS:
1,388,053✔
3247
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
1,388,053✔
3248
        break;
1,388,064✔
3249
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
1,388,056✔
3250
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
1,388,056✔
3251
        break;
1,388,025✔
3252
      case PHY_MERGE_CODE_SRC_GROUP_ID:
1,388,021✔
3253
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
1,388,021✔
3254
        break;
1,388,017✔
3255
      case PHY_MERGE_CODE_GROUP_SORT:
1,388,018✔
3256
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
1,388,018✔
3257
        break;
1,388,019✔
3258
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
1,388,021✔
3259
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,388,021✔
3260
        break;
1,388,028✔
3261
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
1,388,022✔
3262
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
1,388,022✔
3263
        break;
1,388,026✔
3264
      case PHY_MERGE_CODE_TYPE:
1,388,034✔
3265
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
1,388,034✔
3266
        break;
1,388,022✔
3267
      default:
×
3268
        break;
×
3269
    }
3270
  }
3271

3272
  return code;
1,387,954✔
3273
}
3274

3275
enum {
3276
  PHY_SORT_CODE_BASE_NODE = 1,
3277
  PHY_SORT_CODE_EXPR,
3278
  PHY_SORT_CODE_SORT_KEYS,
3279
  PHY_SORT_CODE_TARGETS,
3280
  PHY_SORT_CODE_CALC_GROUPID,
3281
  PHY_SORT_CODE_EXCLUDE_PK_COL
3282
};
3283

3284
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
166,800✔
3285
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
166,800✔
3286

3287
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
166,800✔
3288
  if (TSDB_CODE_SUCCESS == code) {
166,953!
3289
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
166,960✔
3290
  }
3291
  if (TSDB_CODE_SUCCESS == code) {
166,969!
3292
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
166,978✔
3293
  }
3294
  if (TSDB_CODE_SUCCESS == code) {
167,007!
3295
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
167,022✔
3296
  }
3297
  if (TSDB_CODE_SUCCESS == code) {
166,905!
3298
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
166,923✔
3299
  }
3300
  if (TSDB_CODE_SUCCESS == code) {
166,960!
3301
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
166,981✔
3302
  }
3303

3304
  return code;
166,991✔
3305
}
3306

3307
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
885,576✔
3308
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
885,576✔
3309

3310
  int32_t code = TSDB_CODE_SUCCESS;
885,576✔
3311
  STlv*   pTlv = NULL;
885,576✔
3312
  tlvForEach(pDecoder, pTlv, code) {
5,314,822!
3313
    switch (pTlv->type) {
4,428,691!
3314
      case PHY_SORT_CODE_BASE_NODE:
885,612✔
3315
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
885,612✔
3316
        break;
885,538✔
3317
      case PHY_SORT_CODE_EXPR:
964✔
3318
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
964✔
3319
        break;
964✔
3320
      case PHY_SORT_CODE_SORT_KEYS:
885,577✔
3321
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
885,577✔
3322
        break;
885,727✔
3323
      case PHY_SORT_CODE_TARGETS:
885,724✔
3324
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
885,724✔
3325
        break;
885,707✔
3326
      case PHY_SORT_CODE_CALC_GROUPID:
885,695✔
3327
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
885,695✔
3328
        break;
885,666✔
3329
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
885,669✔
3330
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
885,669✔
3331
      default:
885,644✔
3332
        break;
885,644✔
3333
    }
3334
  }
3335

3336
  return code;
886,104✔
3337
}
3338

3339
enum {
3340
  PHY_WINDOW_CODE_BASE_NODE = 1,
3341
  PHY_WINDOW_CODE_EXPR,
3342
  PHY_WINDOW_CODE_FUNCS,
3343
  PHY_WINDOW_CODE_TS_PK,
3344
  PHY_WINDOW_CODE_TS_END,
3345
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3346
  PHY_WINDOW_CODE_WATERMARK,
3347
  PHY_WINDOW_CODE_DELETE_MARK,
3348
  PHY_WINDOW_CODE_IG_EXPIRED,
3349
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3350
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3351
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3352
  PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY,
3353
};
3354

3355
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
82,765✔
3356
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
82,765✔
3357

3358
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
82,765✔
3359
  if (TSDB_CODE_SUCCESS == code) {
83,128!
3360
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
83,152✔
3361
  }
3362
  if (TSDB_CODE_SUCCESS == code) {
83,173!
3363
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
83,191✔
3364
  }
3365
  if (TSDB_CODE_SUCCESS == code) {
83,060!
3366
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
83,102✔
3367
  }
3368
  if (TSDB_CODE_SUCCESS == code) {
82,808!
3369
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
82,862✔
3370
  }
3371
  if (TSDB_CODE_SUCCESS == code) {
83,029!
3372
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
83,110✔
3373
  }
3374
  if (TSDB_CODE_SUCCESS == code) {
83,029!
3375
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
83,107✔
3376
  }
3377
  if (TSDB_CODE_SUCCESS == code) {
83,068!
3378
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
83,158✔
3379
  }
3380
  if (TSDB_CODE_SUCCESS == code) {
83,180!
3381
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
83,277✔
3382
  }
3383
  if (TSDB_CODE_SUCCESS == code) {
83,078!
3384
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
83,181✔
3385
  }
3386
  if (TSDB_CODE_SUCCESS == code) {
83,128!
3387
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY, pNode->destHasPrimaryKey);
83,202✔
3388
  }
3389

3390
  return code;
83,105✔
3391
}
3392

3393
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
2,535,746✔
3394
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
2,535,746✔
3395

3396
  int32_t code = TSDB_CODE_SUCCESS;
2,535,746✔
3397
  STlv*   pTlv = NULL;
2,535,746✔
3398
  tlvForEach(pDecoder, pTlv, code) {
25,478,077!
3399
    switch (pTlv->type) {
22,940,909!
3400
      case PHY_WINDOW_CODE_BASE_NODE:
2,535,822✔
3401
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,535,822✔
3402
        break;
2,535,703✔
3403
      case PHY_WINDOW_CODE_EXPR:
7,652✔
3404
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
7,652✔
3405
        break;
7,653✔
3406
      case PHY_WINDOW_CODE_FUNCS:
2,535,908✔
3407
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
2,535,908✔
3408
        break;
2,537,897✔
3409
      case PHY_WINDOW_CODE_TS_PK:
2,537,656✔
3410
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
2,537,656✔
3411
        break;
2,537,401✔
3412
      case PHY_WINDOW_CODE_TS_END:
103,686✔
3413
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
103,686✔
3414
        break;
103,687✔
3415
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
2,537,187✔
3416
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
2,537,187✔
3417
        break;
2,537,025✔
3418
      case PHY_WINDOW_CODE_WATERMARK:
2,536,756✔
3419
        code = tlvDecodeI64(pTlv, &pNode->watermark);
2,536,756✔
3420
        break;
2,536,580✔
3421
      case PHY_WINDOW_CODE_DELETE_MARK:
2,536,654✔
3422
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
2,536,654✔
3423
        break;
2,536,415✔
3424
      case PHY_WINDOW_CODE_IG_EXPIRED:
2,536,319✔
3425
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
2,536,319✔
3426
        break;
2,536,348✔
3427
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
2,536,274✔
3428
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
2,536,274✔
3429
        break;
2,536,790✔
3430
      case PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY:
2,536,995✔
3431
        code = tlvDecodeI8(pTlv, &pNode->destHasPrimaryKey);
2,536,995✔
3432
        break;
2,536,832✔
3433
      default:
×
3434
        break;
×
3435
    }
3436
  }
3437

3438
  return code;
2,535,991✔
3439
}
3440

3441
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3442

3443
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
73,061✔
3444
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
73,061✔
3445

3446
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
73,061✔
3447
  if (TSDB_CODE_SUCCESS == code) {
72,929!
3448
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
72,940✔
3449
  }
3450
  if (TSDB_CODE_SUCCESS == code) {
72,731✔
3451
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
72,712✔
3452
  }
3453
  if (TSDB_CODE_SUCCESS == code) {
72,686✔
3454
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
72,681✔
3455
  }
3456
  if (TSDB_CODE_SUCCESS == code) {
72,962!
3457
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
72,965✔
3458
  }
3459

3460
  return code;
73,053✔
3461
}
3462

3463
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
72,722✔
3464
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
72,722✔
3465

3466
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
72,722✔
3467
  if (TSDB_CODE_SUCCESS == code) {
72,942!
3468
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
72,966✔
3469
  }
3470
  if (TSDB_CODE_SUCCESS == code) {
73,103!
3471
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
73,123✔
3472
  }
3473

3474
  return code;
73,088✔
3475
}
3476

3477
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,066,312✔
3478
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
2,066,312✔
3479

3480
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
2,066,312✔
3481
  if (TSDB_CODE_SUCCESS == code) {
2,066,971!
3482
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
2,067,026✔
3483
  }
3484
  if (TSDB_CODE_SUCCESS == code) {
2,066,847!
3485
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
2,066,961✔
3486
  }
3487
  if (TSDB_CODE_SUCCESS == code) {
2,066,707!
3488
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
2,066,834✔
3489
  }
3490
  if (TSDB_CODE_SUCCESS == code) {
2,066,774✔
3491
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
2,066,252✔
3492
  }
3493

3494
  return code;
2,066,500✔
3495
}
3496

3497
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
2,066,383✔
3498
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
2,066,383✔
3499

3500
  int32_t code = TSDB_CODE_SUCCESS;
2,066,383✔
3501
  STlv*   pTlv = NULL;
2,066,383✔
3502
  tlvForEach(pDecoder, pTlv, code) {
8,266,358!
3503
    switch (pTlv->type) {
6,198,573!
3504
      case PHY_INTERVAL_CODE_WINDOW:
2,067,195✔
3505
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
2,067,195✔
3506
        break;
2,066,847✔
3507
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
2,066,863✔
3508
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
2,066,863✔
3509
        break;
2,066,478✔
3510
      case PHY_INTERVAL_CODE_TIME_RANGE:
2,066,705✔
3511
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
2,066,705✔
3512
      default:
2,066,650✔
3513
        break;
2,066,650✔
3514
    }
3515
  }
3516

3517
  return code;
2,067,416✔
3518
}
3519

3520
enum {
3521
  PHY_FILL_CODE_BASE_NODE = 1,
3522
  PHY_FILL_CODE_MODE,
3523
  PHY_FILL_CODE_FILL_EXPRS,
3524
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3525
  PHY_FILL_CODE_WSTART,
3526
  PHY_FILL_CODE_VALUES,
3527
  PHY_FILL_CODE_TIME_RANGE,
3528
  PHY_FILL_CODE_INPUT_TS_ORDER,
3529
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3530
};
3531

3532
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,111✔
3533
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
11,111✔
3534

3535
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
11,111✔
3536
  if (TSDB_CODE_SUCCESS == code) {
11,153!
3537
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
11,157✔
3538
  }
3539
  if (TSDB_CODE_SUCCESS == code) {
11,151!
3540
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
11,153✔
3541
  }
3542
  if (TSDB_CODE_SUCCESS == code) {
11,115!
3543
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
11,123✔
3544
  }
3545
  if (TSDB_CODE_SUCCESS == code) {
11,093!
3546
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
11,104✔
3547
  }
3548
  if (TSDB_CODE_SUCCESS == code) {
11,088!
3549
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
11,108✔
3550
  }
3551
  if (TSDB_CODE_SUCCESS == code) {
11,110!
3552
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
11,133✔
3553
  }
3554
  if (TSDB_CODE_SUCCESS == code) {
11,116!
3555
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
11,140✔
3556
  }
3557

3558
  return code;
11,141✔
3559
}
3560

3561
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
488,961✔
3562
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
488,961✔
3563

3564
  int32_t code = TSDB_CODE_SUCCESS;
488,961✔
3565
  STlv*   pTlv = NULL;
488,961✔
3566
  tlvForEach(pDecoder, pTlv, code) {
3,599,114!
3567
    switch (pTlv->type) {
3,110,158!
3568
      case PHY_FILL_CODE_BASE_NODE:
488,957✔
3569
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
488,957✔
3570
        break;
488,953✔
3571
      case PHY_FILL_CODE_MODE:
488,953✔
3572
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
488,953✔
3573
        break;
488,957✔
3574
      case PHY_FILL_CODE_FILL_EXPRS:
488,959✔
3575
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
488,959✔
3576
        break;
488,963✔
3577
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
95,844✔
3578
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
95,844✔
3579
        break;
95,844✔
3580
      case PHY_FILL_CODE_WSTART:
488,960✔
3581
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
488,960✔
3582
        break;
488,960✔
3583
      case PHY_FILL_CODE_VALUES:
398,921✔
3584
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
398,921✔
3585
        break;
398,921✔
3586
      case PHY_FILL_CODE_TIME_RANGE:
488,955✔
3587
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
488,955✔
3588
        break;
488,943✔
3589
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
170,609✔
3590
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
170,609✔
3591
        break;
170,612✔
3592
      default:
×
3593
        break;
×
3594
    }
3595
  }
3596

3597
  return code;
488,924✔
3598
}
3599

3600
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3601

3602
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,606✔
3603
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
4,606✔
3604

3605
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
4,606✔
3606
  if (TSDB_CODE_SUCCESS == code) {
4,606!
3607
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
4,606✔
3608
  }
3609

3610
  return code;
4,606✔
3611
}
3612

3613
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
103,688✔
3614
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
103,688✔
3615

3616
  int32_t code = TSDB_CODE_SUCCESS;
103,688✔
3617
  STlv*   pTlv = NULL;
103,688✔
3618
  tlvForEach(pDecoder, pTlv, code) {
311,047!
3619
    switch (pTlv->type) {
207,368!
3620
      case PHY_SESSION_CODE_WINDOW:
103,689✔
3621
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
103,689✔
3622
        break;
103,680✔
3623
      case PHY_SESSION_CODE_GAP:
103,679✔
3624
        code = tlvDecodeI64(pTlv, &pNode->gap);
103,679✔
3625
        break;
103,679✔
3626
      default:
×
3627
        break;
×
3628
    }
3629
  }
3630

3631
  return code;
103,677✔
3632
}
3633

3634
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY, PHY_STATE_CODE_TRUE_FOR_LIMIT };
3635

3636
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,022✔
3637
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
5,022✔
3638

3639
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
5,022✔
3640
  if (TSDB_CODE_SUCCESS == code) {
5,021!
3641
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
5,021✔
3642
  }
3643
  if (TSDB_CODE_SUCCESS == code) {
5,021!
3644
    code = tlvEncodeI64(pEncoder, PHY_STATE_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
5,021✔
3645
  }
3646

3647
  return code;
5,021✔
3648
}
3649

3650
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
75,075✔
3651
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
75,075✔
3652

3653
  int32_t code = TSDB_CODE_SUCCESS;
75,075✔
3654
  STlv*   pTlv = NULL;
75,075✔
3655
  tlvForEach(pDecoder, pTlv, code) {
300,301!
3656
    switch (pTlv->type) {
225,226!
3657
      case PHY_STATE_CODE_WINDOW:
75,077✔
3658
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
75,077✔
3659
        break;
75,073✔
3660
      case PHY_STATE_CODE_KEY:
75,073✔
3661
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
75,073✔
3662
        break;
75,077✔
3663
      case PHY_STATE_CODE_TRUE_FOR_LIMIT:
75,076✔
3664
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
75,076✔
3665
        break;
75,076✔
3666
      default:
×
3667
        break;
×
3668
    }
3669
  }
3670

3671
  return code;
75,074✔
3672
}
3673

3674
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND, PHY_EVENT_CODE_TRUE_FOR_LIMIT };
3675

3676
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
230✔
3677
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
230✔
3678

3679
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
230✔
3680
  if (TSDB_CODE_SUCCESS == code) {
230!
3681
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
230✔
3682
  }
3683
  if (TSDB_CODE_SUCCESS == code) {
230!
3684
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
230✔
3685
  }
3686
  if (TSDB_CODE_SUCCESS == code) {
230!
3687
    code = tlvEncodeI64(pEncoder, PHY_EVENT_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
230✔
3688
  }
3689

3690
  return code;
230✔
3691
}
3692

3693
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
283,670✔
3694
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
283,670✔
3695

3696
  int32_t code = TSDB_CODE_SUCCESS;
283,670✔
3697
  STlv*   pTlv = NULL;
283,670✔
3698
  tlvForEach(pDecoder, pTlv, code) {
1,418,354!
3699
    switch (pTlv->type) {
1,134,682!
3700
      case PHY_EVENT_CODE_WINDOW:
283,670✔
3701
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
283,670✔
3702
        break;
283,669✔
3703
      case PHY_EVENT_CODE_START_COND:
283,669✔
3704
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
283,669✔
3705
        break;
283,671✔
3706
      case PHY_EVENT_CODE_END_COND:
283,671✔
3707
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
283,671✔
3708
        break;
283,672✔
3709
      case PHY_EVENT_CODE_TRUE_FOR_LIMIT:
283,672✔
3710
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
283,672✔
3711
        break;
283,672✔
3712
      default:
×
3713
        break;
×
3714
    }
3715
  }
3716

3717
  return code;
283,669✔
3718
}
3719

3720
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3721

3722
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
246✔
3723
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
246✔
3724

3725
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
246✔
3726
  if (TSDB_CODE_SUCCESS == code) {
246!
3727
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
246✔
3728
  }
3729
  if (TSDB_CODE_SUCCESS == code) {
246!
3730
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
246✔
3731
  }
3732

3733
  return code;
247✔
3734
}
3735

3736
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
7,026✔
3737
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
7,026✔
3738

3739
  int32_t code = TSDB_CODE_SUCCESS;
7,026✔
3740
  STlv*   pTlv = NULL;
7,026✔
3741
  tlvForEach(pDecoder, pTlv, code) {
28,010!
3742
    switch (pTlv->type) {
21,021!
3743
      case PHY_COUNT_CODE_WINDOW:
7,029✔
3744
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
7,029✔
3745
        break;
6,995✔
3746
      case PHY_COUNT_CODE_WINDOW_COUNT:
6,995✔
3747
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
6,995✔
3748
        break;
6,994✔
3749
      case PHY_COUNT_CODE_WINDOW_SLIDING:
6,997✔
3750
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
6,997✔
3751
        break;
6,995✔
3752
      default:
×
3753
        break;
×
3754
    }
3755
  }
3756

3757
  return code;
6,996✔
3758
}
3759

3760
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3761

UNCOV
3762
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
UNCOV
3763
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3764

UNCOV
3765
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
UNCOV
3766
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
3767
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3768
  }
UNCOV
3769
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
3770
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3771
  }
3772

UNCOV
3773
  return code;
×
3774
}
3775

UNCOV
3776
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
UNCOV
3777
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3778

UNCOV
3779
  int32_t code = TSDB_CODE_SUCCESS;
×
UNCOV
3780
  STlv*   pTlv = NULL;
×
UNCOV
3781
  tlvForEach(pDecoder, pTlv, code) {
×
UNCOV
3782
    switch (pTlv->type) {
×
UNCOV
3783
      case PHY_ANOMALY_CODE_WINDOW:
×
UNCOV
3784
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
UNCOV
3785
        break;
×
UNCOV
3786
      case PHY_ANOMALY_CODE_KEY:
×
UNCOV
3787
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAnomalyKey);
×
UNCOV
3788
        break;
×
UNCOV
3789
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
×
UNCOV
3790
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
UNCOV
3791
        break;
×
3792
      default:
×
3793
        break;
×
3794
    }
3795
  }
3796

UNCOV
3797
  return code;
×
3798
}
3799

3800
enum {
3801
  PHY_PARTITION_CODE_BASE_NODE = 1,
3802
  PHY_PARTITION_CODE_EXPR,
3803
  PHY_PARTITION_CODE_KEYS,
3804
  PHY_PARTITION_CODE_TARGETS,
3805
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3806
  PHY_PARTITION_CODE_TS_SLOTID
3807
};
3808

3809
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
15,435✔
3810
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
15,435✔
3811

3812
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
15,435✔
3813
  if (TSDB_CODE_SUCCESS == code) {
15,491!
3814
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
15,495✔
3815
  }
3816
  if (TSDB_CODE_SUCCESS == code) {
15,490!
3817
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
15,492✔
3818
  }
3819
  if (TSDB_CODE_SUCCESS == code) {
15,466!
3820
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
15,469✔
3821
  }
3822
  if (TSDB_CODE_SUCCESS == code) {
15,466!
3823
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
15,469✔
3824
  }
3825
  if (TSDB_CODE_SUCCESS == code) {
15,498!
3826
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
15,501✔
3827
  }
3828

3829
  return code;
15,497✔
3830
}
3831

3832
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
26,488✔
3833
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
26,488✔
3834

3835
  int32_t code = TSDB_CODE_SUCCESS;
26,488✔
3836
  STlv*   pTlv = NULL;
26,488✔
3837
  tlvForEach(pDecoder, pTlv, code) {
163,287!
3838
    switch (pTlv->type) {
136,765!
3839
      case PHY_PARTITION_CODE_BASE_NODE:
26,486✔
3840
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
26,486✔
3841
        break;
26,474✔
3842
      case PHY_PARTITION_CODE_EXPR:
4,260✔
3843
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
4,260✔
3844
        break;
4,263✔
3845
      case PHY_PARTITION_CODE_KEYS:
26,475✔
3846
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
26,475✔
3847
        break;
26,524✔
3848
      case PHY_PARTITION_CODE_TARGETS:
26,520✔
3849
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
26,520✔
3850
        break;
26,528✔
3851
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
26,526✔
3852
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
26,526✔
3853
        break;
26,514✔
3854
      case PHY_PARTITION_CODE_TS_SLOTID:
26,498✔
3855
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
26,498✔
3856
        break;
26,496✔
3857
      default:
×
3858
        break;
×
3859
    }
3860
  }
3861

3862
  return code;
26,513✔
3863
}
3864

3865
enum { PHY_STREAM_PARTITION_CODE_BASE_NODE = 1, PHY_STREAM_PARTITION_CODE_TAGS, PHY_STREAM_PARTITION_CODE_SUBTABLE };
3866

3867
static int32_t physiStreamPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3868
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
×
3869

3870
  int32_t code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_BASE_NODE, physiPartitionNodeToMsg, &pNode->part);
×
3871
  if (TSDB_CODE_SUCCESS == code) {
×
3872
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_TAGS, nodeListToMsg, pNode->pTags);
×
3873
  }
3874
  if (TSDB_CODE_SUCCESS == code) {
×
3875
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
×
3876
  }
3877

3878
  return code;
×
3879
}
3880

3881
static int32_t msgToPhysiStreamPartitionNode(STlvDecoder* pDecoder, void* pObj) {
×
3882
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
×
3883

3884
  int32_t code = TSDB_CODE_SUCCESS;
×
3885
  STlv*   pTlv = NULL;
×
3886
  tlvForEach(pDecoder, pTlv, code) {
×
3887
    switch (pTlv->type) {
×
3888
      case PHY_STREAM_PARTITION_CODE_BASE_NODE:
×
3889
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiPartitionNode, &pNode->part);
×
3890
        break;
×
3891
      case PHY_STREAM_PARTITION_CODE_TAGS:
×
3892
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
3893
        break;
×
3894
      case PHY_STREAM_PARTITION_CODE_SUBTABLE:
×
3895
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
3896
        break;
×
3897
      default:
×
3898
        break;
×
3899
    }
3900
  }
3901

3902
  return code;
×
3903
}
3904

3905
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3906

3907
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
22,114✔
3908
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
22,114✔
3909

3910
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
22,114✔
3911
  if (TSDB_CODE_SUCCESS == code) {
22,121!
3912
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
22,121✔
3913
  }
3914
  if (TSDB_CODE_SUCCESS == code) {
22,121!
3915
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
22,121✔
3916
  }
3917

3918
  return code;
22,129✔
3919
}
3920

3921
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
120,247✔
3922
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
120,247✔
3923

3924
  int32_t code = TSDB_CODE_SUCCESS;
120,247✔
3925
  STlv*   pTlv = NULL;
120,247✔
3926
  tlvForEach(pDecoder, pTlv, code) {
360,875!
3927
    switch (pTlv->type) {
240,626!
3928
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
120,257✔
3929
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
120,257✔
3930
        break;
120,257✔
3931
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
112✔
3932
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
112✔
3933
        break;
112✔
3934
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
120,257✔
3935
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
120,257✔
3936
        break;
120,259✔
3937
      default:
×
3938
        break;
×
3939
    }
3940
  }
3941

3942
  return code;
120,257✔
3943
}
3944

3945
enum {
3946
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
3947
  PHY_INERP_FUNC_CODE_EXPR,
3948
  PHY_INERP_FUNC_CODE_FUNCS,
3949
  PHY_INERP_FUNC_CODE_TIME_RANGE,
3950
  PHY_INERP_FUNC_CODE_INTERVAL,
3951
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
3952
  PHY_INERP_FUNC_CODE_FILL_MODE,
3953
  PHY_INERP_FUNC_CODE_FILL_VALUES,
3954
  PHY_INERP_FUNC_CODE_TIME_SERIES,
3955
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL,
3956
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT,
3957
};
3958

3959
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
12,363✔
3960
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
12,363✔
3961

3962
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
12,363✔
3963
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3964
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
12,363✔
3965
  }
3966
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3967
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
12,363✔
3968
  }
3969
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3970
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
12,363✔
3971
  }
3972
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3973
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
12,363✔
3974
  }
3975
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3976
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
12,363✔
3977
  }
3978
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3979
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
12,363✔
3980
  }
3981
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3982
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
12,363✔
3983
  }
3984
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3985
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
12,363✔
3986
  }
3987
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3988
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL, pNode->rangeInterval);
12,363✔
3989
  }
3990
  if (TSDB_CODE_SUCCESS == code) {
12,361!
3991
    code = tlvEncodeI8(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT, pNode->rangeIntervalUnit);
12,363✔
3992
  }
3993

3994
  return code;
12,363✔
3995
}
3996

3997
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
76,176✔
3998
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
76,176✔
3999

4000
  int32_t code = TSDB_CODE_SUCCESS;
76,176✔
4001
  STlv*   pTlv = NULL;
76,176✔
4002
  tlvForEach(pDecoder, pTlv, code) {
819,453!
4003
    switch (pTlv->type) {
743,277!
4004
      case PHY_INERP_FUNC_CODE_BASE_NODE:
76,176✔
4005
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
76,176✔
4006
        break;
76,176✔
4007
      case PHY_INERP_FUNC_CODE_EXPR:
603✔
4008
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
603✔
4009
        break;
603✔
4010
      case PHY_INERP_FUNC_CODE_FUNCS:
76,176✔
4011
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
76,176✔
4012
        break;
76,176✔
4013
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
76,176✔
4014
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
76,176✔
4015
        break;
76,175✔
4016
      case PHY_INERP_FUNC_CODE_INTERVAL:
76,175✔
4017
        code = tlvDecodeI64(pTlv, &pNode->interval);
76,175✔
4018
        break;
76,175✔
4019
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
76,175✔
4020
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
76,175✔
4021
        break;
76,175✔
4022
      case PHY_INERP_FUNC_CODE_FILL_MODE:
76,175✔
4023
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
76,175✔
4024
        break;
76,175✔
4025
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
57,095✔
4026
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
57,095✔
4027
        break;
57,096✔
4028
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
76,176✔
4029
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
76,176✔
4030
        break;
76,176✔
4031
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL:
76,175✔
4032
        code = tlvDecodeI64(pTlv, &pNode->rangeInterval);
76,175✔
4033
        break;
76,175✔
4034
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT:
76,175✔
4035
        code = tlvDecodeI8(pTlv, &pNode->rangeIntervalUnit);
76,175✔
4036
        break;
76,175✔
4037
      default:
×
4038
        break;
×
4039
    }
4040
  }
4041

4042
  return code;
76,175✔
4043
}
4044

4045
enum {
4046
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
4047
  PHY_FORECAST_FUNC_CODE_EXPR,
4048
  PHY_FORECAST_FUNC_CODE_FUNCS,
4049
};
4050

UNCOV
4051
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
UNCOV
4052
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
4053

UNCOV
4054
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
UNCOV
4055
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
4056
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
4057
  }
UNCOV
4058
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
4059
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
4060
  }
4061

UNCOV
4062
  return code;
×
4063
}
4064

UNCOV
4065
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
UNCOV
4066
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
4067

UNCOV
4068
  int32_t code = TSDB_CODE_SUCCESS;
×
UNCOV
4069
  STlv*   pTlv = NULL;
×
UNCOV
4070
  tlvForEach(pDecoder, pTlv, code) {
×
UNCOV
4071
    switch (pTlv->type) {
×
UNCOV
4072
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
UNCOV
4073
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
UNCOV
4074
        break;
×
4075
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
4076
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
4077
        break;
×
UNCOV
4078
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
UNCOV
4079
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
UNCOV
4080
        break;
×
4081
      default:
×
4082
        break;
×
4083
    }
4084
  }
4085

UNCOV
4086
  return code;
×
4087
}
4088

4089
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
4090

4091
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,068,126✔
4092
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
2,068,126✔
4093
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
2,068,126✔
4094
}
4095

4096
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
8,584,550✔
4097
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
8,584,550✔
4098

4099
  int32_t code = TSDB_CODE_SUCCESS;
8,584,550✔
4100
  STlv*   pTlv = NULL;
8,584,550✔
4101
  tlvForEach(pDecoder, pTlv, code) {
17,174,037!
4102
    switch (pTlv->type) {
8,586,318!
4103
      case PHY_DATA_SINK_CODE_INPUT_DESC:
8,586,318✔
4104
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
8,586,318✔
4105
        break;
8,589,487✔
4106
      default:
×
4107
        break;
×
4108
    }
4109
  }
4110

4111
  return code;
8,587,672✔
4112
}
4113

4114
enum { PHY_DISPATCH_CODE_SINK = 1 };
4115

4116
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,960,549✔
4117
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
1,960,549✔
4118
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,960,549✔
4119
}
4120

4121
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
8,469,119✔
4122
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
8,469,119✔
4123

4124
  int32_t code = TSDB_CODE_SUCCESS;
8,469,119✔
4125
  STlv*   pTlv = NULL;
8,469,119✔
4126
  tlvForEach(pDecoder, pTlv, code) {
16,943,004!
4127
    switch (pTlv->type) {
8,476,701!
4128
      case PHY_DISPATCH_CODE_SINK:
8,476,701✔
4129
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
8,476,701✔
4130
        break;
8,473,885✔
4131
      default:
×
4132
        break;
×
4133
    }
4134
  }
4135

4136
  return code;
8,465,346✔
4137
}
4138

4139
enum {
4140
  PHY_QUERY_INSERT_CODE_SINK = 1,
4141
  PHY_QUERY_INSERT_CODE_COLS,
4142
  PHY_QUERY_INSERT_CODE_TABLE_ID,
4143
  PHY_QUERY_INSERT_CODE_STABLE_ID,
4144
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
4145
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
4146
  PHY_QUERY_INSERT_CODE_VG_ID,
4147
  PHY_QUERY_INSERT_CODE_EP_SET,
4148
  PHY_QUERY_INSERT_CODE_EXPLAIN
4149
};
4150

4151
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
122✔
4152
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
122✔
4153

4154
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
122✔
4155
  if (TSDB_CODE_SUCCESS == code) {
122!
4156
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
122✔
4157
  }
4158
  if (TSDB_CODE_SUCCESS == code) {
122!
4159
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
122✔
4160
  }
4161
  if (TSDB_CODE_SUCCESS == code) {
122!
4162
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
122✔
4163
  }
4164
  if (TSDB_CODE_SUCCESS == code) {
122!
4165
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
122✔
4166
  }
4167
  if (TSDB_CODE_SUCCESS == code) {
122!
4168
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
122✔
4169
  }
4170
  if (TSDB_CODE_SUCCESS == code) {
122!
4171
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
122✔
4172
  }
4173
  if (TSDB_CODE_SUCCESS == code) {
122!
4174
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
122✔
4175
  }
4176
  if (TSDB_CODE_SUCCESS == code) {
122!
4177
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
122✔
4178
  }
4179

4180
  return code;
122✔
4181
}
4182

4183
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
385✔
4184
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
385✔
4185

4186
  int32_t code = TSDB_CODE_SUCCESS;
385✔
4187
  STlv*   pTlv = NULL;
385✔
4188
  tlvForEach(pDecoder, pTlv, code) {
3,850!
4189
    switch (pTlv->type) {
3,465!
4190
      case PHY_QUERY_INSERT_CODE_SINK:
385✔
4191
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
385✔
4192
        break;
385✔
4193
      case PHY_QUERY_INSERT_CODE_COLS:
385✔
4194
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
385✔
4195
        break;
385✔
4196
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
385✔
4197
        code = tlvDecodeU64(pTlv, &pNode->tableId);
385✔
4198
        break;
385✔
4199
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
385✔
4200
        code = tlvDecodeU64(pTlv, &pNode->stableId);
385✔
4201
        break;
385✔
4202
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
385✔
4203
        code = tlvDecodeI8(pTlv, &pNode->tableType);
385✔
4204
        break;
385✔
4205
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
385✔
4206
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
385✔
4207
        break;
385✔
4208
      case PHY_QUERY_INSERT_CODE_VG_ID:
385✔
4209
        code = tlvDecodeI32(pTlv, &pNode->vgId);
385✔
4210
        break;
385✔
4211
      case PHY_QUERY_INSERT_CODE_EP_SET:
385✔
4212
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
385✔
4213
        break;
385✔
4214
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
385✔
4215
        code = tlvDecodeBool(pTlv, &pNode->explain);
385✔
4216
        break;
385✔
4217
      default:
×
4218
        break;
×
4219
    }
4220
  }
4221

4222
  return code;
385✔
4223
}
4224

4225
enum {
4226
  PHY_DELETER_CODE_SINK = 1,
4227
  PHY_DELETER_CODE_TABLE_ID,
4228
  PHY_DELETER_CODE_TABLE_TYPE,
4229
  PHY_DELETER_CODE_TABLE_FNAME,
4230
  PHY_DELETER_CODE_TS_COL_NAME,
4231
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4232
  PHY_DELETER_CODE_AFFECTED_ROWS,
4233
  PHY_DELETER_CODE_START_TS,
4234
  PHY_DELETER_CODE_END_TS
4235
};
4236

4237
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
109,397✔
4238
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
109,397✔
4239

4240
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
109,397✔
4241
  if (TSDB_CODE_SUCCESS == code) {
109,399!
4242
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
109,399✔
4243
  }
4244
  if (TSDB_CODE_SUCCESS == code) {
109,400!
4245
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
109,400✔
4246
  }
4247
  if (TSDB_CODE_SUCCESS == code) {
109,399!
4248
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
109,400✔
4249
  }
4250
  if (TSDB_CODE_SUCCESS == code) {
109,398✔
4251
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
109,397✔
4252
  }
4253
  if (TSDB_CODE_SUCCESS == code) {
109,400✔
4254
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
109,399✔
4255
  }
4256
  if (TSDB_CODE_SUCCESS == code) {
109,398✔
4257
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
109,397✔
4258
  }
4259
  if (TSDB_CODE_SUCCESS == code) {
109,399✔
4260
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
109,398✔
4261
  }
4262
  if (TSDB_CODE_SUCCESS == code) {
109,398✔
4263
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
109,397✔
4264
  }
4265

4266
  return code;
109,400✔
4267
}
4268

4269
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
112,140✔
4270
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
112,140✔
4271

4272
  int32_t code = TSDB_CODE_SUCCESS;
112,140✔
4273
  STlv*   pTlv = NULL;
112,140✔
4274
  tlvForEach(pDecoder, pTlv, code) {
1,121,401!
4275
    switch (pTlv->type) {
1,009,259!
4276
      case PHY_DELETER_CODE_SINK:
112,140✔
4277
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
112,140✔
4278
        break;
112,140✔
4279
      case PHY_DELETER_CODE_TABLE_ID:
112,141✔
4280
        code = tlvDecodeU64(pTlv, &pNode->tableId);
112,141✔
4281
        break;
112,141✔
4282
      case PHY_DELETER_CODE_TABLE_TYPE:
112,141✔
4283
        code = tlvDecodeI8(pTlv, &pNode->tableType);
112,141✔
4284
        break;
112,141✔
4285
      case PHY_DELETER_CODE_TABLE_FNAME:
112,140✔
4286
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
112,140✔
4287
        break;
112,139✔
4288
      case PHY_DELETER_CODE_TS_COL_NAME:
112,139✔
4289
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
112,139✔
4290
        break;
112,139✔
4291
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
112,139✔
4292
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
112,139✔
4293
        break;
112,140✔
4294
      case PHY_DELETER_CODE_AFFECTED_ROWS:
112,140✔
4295
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
112,140✔
4296
        break;
112,138✔
4297
      case PHY_DELETER_CODE_START_TS:
112,138✔
4298
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
112,138✔
4299
        break;
112,142✔
4300
      case PHY_DELETER_CODE_END_TS:
112,141✔
4301
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
112,141✔
4302
        break;
112,141✔
4303
      default:
×
4304
        break;
×
4305
    }
4306
  }
4307

4308
  return code;
112,140✔
4309
}
4310

4311
enum {
4312
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4313
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4314
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4315
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4316
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4317
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4318
};
4319

4320
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,189✔
4321
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
9,189✔
4322

4323
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,189✔
4324
  if (TSDB_CODE_SUCCESS == code) {
9,189!
4325
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
9,189✔
4326
  }
4327
  if (TSDB_CODE_SUCCESS == code) {
9,189!
4328
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
9,189✔
4329
  }
4330
  if (TSDB_CODE_SUCCESS == code) {
9,189!
4331
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
9,189✔
4332
  }
4333
  if (TSDB_CODE_SUCCESS == code) {
9,189!
4334
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
9,189✔
4335
  }
4336
  if (TSDB_CODE_SUCCESS == code) {
9,189!
4337
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
9,189✔
4338
  }
4339

4340
  return code;
9,189✔
4341
}
4342

4343
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
9,196✔
4344
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
9,196✔
4345

4346
  int32_t code = TSDB_CODE_SUCCESS;
9,196✔
4347
  STlv*   pTlv = NULL;
9,196✔
4348
  tlvForEach(pDecoder, pTlv, code) {
55,176!
4349
    switch (pTlv->type) {
45,980!
4350
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
9,196✔
4351
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,196✔
4352
        break;
9,196✔
4353
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4354
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4355
        break;
×
4356
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
9,196✔
4357
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
9,196✔
4358
        break;    
9,196✔
4359
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
9,196✔
4360
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
9,196✔
4361
        break;    
9,196✔
4362
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
9,196✔
4363
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
9,196✔
4364
        break;    
9,196✔
4365
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
9,196✔
4366
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
9,196✔
4367
        break;    
9,196✔
4368
      default:
×
4369
        break;
×
4370
    }
4371
  }
4372

4373
  return code;
9,196✔
4374
}
4375

4376

4377
enum {
4378
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4379
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4380
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4381
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4382
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4383
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4384
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4385
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4386
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4387
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS,
4388
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID,
4389
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME,
4390
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID,
4391
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET,
4392
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS,
4393
};
4394

4395
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,427✔
4396
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
11,427✔
4397

4398
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
11,427✔
4399
  if (TSDB_CODE_SUCCESS == code) {
11,426!
4400
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
11,426✔
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
11,427!
4403
    switch (pNode->qType) {
11,427!
4404
      case DYN_QTYPE_STB_HASH: {
9,189✔
4405
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
9,189✔
4406
        if (TSDB_CODE_SUCCESS == code) {
9,189!
4407
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
9,189✔
4408
        }
4409
        if (TSDB_CODE_SUCCESS == code) {
9,189!
4410
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
9,189✔
4411
        }
4412
        if (TSDB_CODE_SUCCESS == code) {
9,189!
4413
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
9,189✔
4414
        }
4415
        if (TSDB_CODE_SUCCESS == code) {
9,189!
4416
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
9,189✔
4417
        }
4418
        if (TSDB_CODE_SUCCESS == code) {
9,189!
4419
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
9,189✔
4420
        }
4421
        if (TSDB_CODE_SUCCESS == code) {
9,189!
4422
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
9,189✔
4423
        }
4424
        break;
9,189✔
4425
      }
4426
      case DYN_QTYPE_VTB_SCAN: {
2,238✔
4427
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS, pNode->vtbScan.scanAllCols);
2,238✔
4428
        if (TSDB_CODE_SUCCESS == code) {
2,238!
4429
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID, pNode->vtbScan.suid);
2,238✔
4430
        }
4431
        if (TSDB_CODE_SUCCESS == code) {
2,239!
4432
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME, pNode->vtbScan.dbName);
2,239✔
4433
        }
4434
        if (TSDB_CODE_SUCCESS == code) {
2,239!
4435
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID, pNode->vtbScan.accountId);
2,239✔
4436
        }
4437
        if (TSDB_CODE_SUCCESS == code) {
2,239!
4438
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET, epSetToMsg, &pNode->vtbScan.mgmtEpSet);
2,239✔
4439
        }
4440
        if (TSDB_CODE_SUCCESS == code) {
2,238!
4441
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS, nodeListToMsg, pNode->vtbScan.pScanCols);
2,238✔
4442
        }
4443
        break;
2,238✔
4444
      }
4445
      default:
×
4446
        return TSDB_CODE_INVALID_PARA;
×
4447
    }
4448
  }
4449
  return code;
11,427✔
4450
}
4451

4452
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
9,196✔
4453
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
9,196✔
4454

4455
  int32_t code = TSDB_CODE_SUCCESS;
9,196✔
4456
  STlv*   pTlv = NULL;
9,196✔
4457
  tlvForEach(pDecoder, pTlv, code) {
91,960!
4458
    switch (pTlv->type) {
82,764!
4459
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
9,196✔
4460
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,196✔
4461
        break;
9,196✔
4462
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
9,196✔
4463
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
9,196✔
4464
        break;
9,196✔
4465
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
9,196✔
4466
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
9,196✔
4467
        break;
9,196✔
4468
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
9,196✔
4469
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
9,196✔
4470
        break;
9,196✔
4471
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
9,196✔
4472
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
9,196✔
4473
        break;
9,196✔
4474
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
9,196✔
4475
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
9,196✔
4476
        break;
9,196✔
4477
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
9,196✔
4478
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
9,196✔
4479
        break;      
9,196✔
4480
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
9,196✔
4481
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
9,196✔
4482
        break;
9,196✔
4483
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
9,196✔
4484
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
9,196✔
4485
        break;
9,196✔
4486
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS:
×
4487
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.scanAllCols);
×
4488
        break;
×
4489
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID:
×
4490
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.suid);
×
4491
        break;
×
4492
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME:
×
4493
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.dbName, sizeof(pNode->vtbScan.dbName));
×
4494
        break;
×
4495
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID:
×
4496
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.accountId);
×
4497
        break;
×
4498
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET:
×
4499
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->vtbScan.mgmtEpSet);
×
4500
        break;
×
4501
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS:
×
4502
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pScanCols);
×
4503
      default:
×
4504
        break;
×
4505
    }
4506
  }
4507

4508
  return code;
9,196✔
4509
}
4510

4511

4512

4513
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4514

4515
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,061,624✔
4516
  const SSubplanId* pNode = (const SSubplanId*)pObj;
2,061,624✔
4517

4518
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
2,061,624✔
4519
  if (TSDB_CODE_SUCCESS == code) {
2,059,623!
4520
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
2,061,205✔
4521
  }
4522
  if (TSDB_CODE_SUCCESS == code) {
2,055,822✔
4523
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
2,053,126✔
4524
  }
4525

4526
  return code;
2,049,873✔
4527
}
4528

4529
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4530
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4531

4532
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4533
  if (TSDB_CODE_SUCCESS == code) {
×
4534
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4535
  }
4536
  if (TSDB_CODE_SUCCESS == code) {
×
4537
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4538
  }
4539

4540
  return code;
×
4541
}
4542

4543
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
8,583,501✔
4544
  SSubplanId* pNode = (SSubplanId*)pObj;
8,583,501✔
4545

4546
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
8,583,501✔
4547
  if (TSDB_CODE_SUCCESS == code) {
8,584,650!
4548
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
8,585,435✔
4549
  }
4550
  if (TSDB_CODE_SUCCESS == code) {
8,585,374✔
4551
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
8,581,063✔
4552
  }
4553

4554
  return code;
8,583,171✔
4555
}
4556

4557
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4558
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4559

4560
  int32_t code = TSDB_CODE_SUCCESS;
×
4561
  STlv*   pTlv = NULL;
×
4562
  tlvForEach(pDecoder, pTlv, code) {
×
4563
    switch (pTlv->type) {
×
4564
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4565
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4566
        break;
×
4567
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4568
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4569
        break;
×
4570
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4571
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4572
        break;
×
4573
      default:
×
4574
        break;
×
4575
    }
4576
  }
4577

4578
  return code;
×
4579
}
4580

4581
enum {
4582
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4583
  SUBPLAN_CODE_ROOT_NODE,
4584
  SUBPLAN_CODE_DATA_SINK,
4585
  SUBPLAN_CODE_TAG_COND,
4586
  SUBPLAN_CODE_TAG_INDEX_COND
4587
};
4588

4589
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,061,600✔
4590
  const SSubplan* pNode = (const SSubplan*)pObj;
2,061,600✔
4591

4592
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
2,061,600✔
4593
  if (TSDB_CODE_SUCCESS == code) {
2,049,932!
4594
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
2,050,892✔
4595
  }
4596
  if (TSDB_CODE_SUCCESS == code) {
2,048,588✔
4597
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
2,048,390✔
4598
  }
4599
  if (TSDB_CODE_SUCCESS == code) {
2,046,358!
4600
    code = tlvEncodeValueI32(pEncoder, pNode->level);
2,046,641✔
4601
  }
4602
  if (TSDB_CODE_SUCCESS == code) {
2,042,296!
4603
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
2,043,241✔
4604
  }
4605
  if (TSDB_CODE_SUCCESS == code) {
2,049,431!
4606
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
2,050,919✔
4607
  }
4608
  if (TSDB_CODE_SUCCESS == code) {
2,051,152!
4609
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
2,051,943✔
4610
  }
4611
  if (TSDB_CODE_SUCCESS == code) {
2,055,922!
4612
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
2,056,739✔
4613
  }
4614
  if (TSDB_CODE_SUCCESS == code) {
2,052,483!
4615
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
2,053,862✔
4616
  }
4617
  if (TSDB_CODE_SUCCESS == code) {
2,052,187!
4618
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
2,053,913✔
4619
  }
4620
  if (TSDB_CODE_SUCCESS == code) {
2,051,491✔
4621
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
2,051,148✔
4622
  }
4623
  if (TSDB_CODE_SUCCESS == code) {
2,051,952!
4624
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
2,052,272✔
4625
  }
4626
  if (TSDB_CODE_SUCCESS == code) {
2,053,707!
4627
    code = tlvEncodeValueBool(pEncoder, pNode->processOneBlock);
2,054,750✔
4628
  }
4629
  return code;
2,055,098✔
4630
}
4631

4632
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,062,277✔
4633
  const SSubplan* pNode = (const SSubplan*)pObj;
2,062,277✔
4634

4635
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
2,062,277✔
4636
  if (TSDB_CODE_SUCCESS == code) {
2,056,174!
4637
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
2,056,644✔
4638
  }
4639
  if (TSDB_CODE_SUCCESS == code) {
2,069,204!
4640
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
2,069,960✔
4641
  }
4642
  if (TSDB_CODE_SUCCESS == code) {
2,064,800!
4643
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
2,065,871✔
4644
  }
4645
  if (TSDB_CODE_SUCCESS == code) {
2,066,406!
4646
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
2,067,612✔
4647
  }
4648

4649
  return code;
2,069,545✔
4650
}
4651

4652
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
8,585,869✔
4653
  SSubplan* pNode = (SSubplan*)pObj;
8,585,869✔
4654

4655
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
8,585,869✔
4656
  if (TSDB_CODE_SUCCESS == code) {
8,583,375!
4657
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
8,583,890✔
4658
  }
4659
  if (TSDB_CODE_SUCCESS == code) {
8,583,772✔
4660
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
8,582,199✔
4661
  }
4662
  if (TSDB_CODE_SUCCESS == code) {
8,585,133✔
4663
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
8,584,037✔
4664
  }
4665
  if (TSDB_CODE_SUCCESS == code) {
8,584,695✔
4666
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
8,583,911✔
4667
  }
4668
  if (TSDB_CODE_SUCCESS == code) {
8,591,995✔
4669
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
8,591,551✔
4670
  }
4671
  if (TSDB_CODE_SUCCESS == code) {
8,592,279✔
4672
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
8,587,261✔
4673
  }
4674
  if (TSDB_CODE_SUCCESS == code) {
8,600,861✔
4675
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
8,595,926✔
4676
  }
4677
  if (TSDB_CODE_SUCCESS == code) {
8,594,293✔
4678
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
8,589,686✔
4679
  }
4680
  if (TSDB_CODE_SUCCESS == code) {
8,592,491✔
4681
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
8,588,140✔
4682
  }
4683
  if (TSDB_CODE_SUCCESS == code) {
8,591,467✔
4684
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
8,583,104✔
4685
  }
4686
  if (TSDB_CODE_SUCCESS == code) {
8,594,404✔
4687
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
8,586,186✔
4688
  }
4689
  if (TSDB_CODE_SUCCESS == code) {
8,594,420✔
4690
    code = tlvDecodeValueBool(pDecoder, &pNode->processOneBlock);
8,586,318✔
4691
  }
4692
  return code;
8,586,544✔
4693
}
4694

4695
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
8,585,250✔
4696
  SSubplan* pNode = (SSubplan*)pObj;
8,585,250✔
4697

4698
  int32_t code = TSDB_CODE_SUCCESS;
8,585,250✔
4699
  STlv*   pTlv = NULL;
8,585,250✔
4700
  tlvForEach(pDecoder, pTlv, code) {
35,768,592!
4701
    switch (pTlv->type) {
27,188,258!
4702
      case SUBPLAN_CODE_INLINE_ATTRS:
8,586,677✔
4703
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
8,586,677✔
4704
        break;
8,581,336✔
4705
      case SUBPLAN_CODE_ROOT_NODE:
8,585,433✔
4706
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
8,585,433✔
4707
        break;
8,582,282✔
4708
      case SUBPLAN_CODE_DATA_SINK:
8,580,753✔
4709
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
8,580,753✔
4710
        break;
8,583,996✔
4711
      case SUBPLAN_CODE_TAG_COND:
1,374,005✔
4712
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
1,374,005✔
4713
        break;
1,374,350✔
4714
      case SUBPLAN_CODE_TAG_INDEX_COND:
61,390✔
4715
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
61,390✔
4716
        break;
61,378✔
4717
      default:
×
4718
        break;
×
4719
    }
4720
  }
4721

4722
  return code;
8,583,079✔
4723
}
4724

4725
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4726

4727
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
12✔
4728
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
12✔
4729

4730
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
12✔
4731
  if (TSDB_CODE_SUCCESS == code) {
12!
4732
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
12✔
4733
  }
4734

4735
  return code;
12✔
4736
}
4737

4738
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
12✔
4739
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
12✔
4740

4741
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
12✔
4742
  if (TSDB_CODE_SUCCESS == code) {
12!
4743
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
12✔
4744
  }
4745

4746
  return code;
12✔
4747
}
4748

4749
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
6✔
4750
  SQueryPlan* pNode = (SQueryPlan*)pObj;
6✔
4751

4752
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
6✔
4753
  if (TSDB_CODE_SUCCESS == code) {
6!
4754
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
6✔
4755
  }
4756

4757
  return code;
6✔
4758
}
4759

4760
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
6✔
4761
  SQueryPlan* pNode = (SQueryPlan*)pObj;
6✔
4762

4763
  int32_t code = TSDB_CODE_SUCCESS;
6✔
4764
  STlv*   pTlv = NULL;
6✔
4765
  tlvForEach(pDecoder, pTlv, code) {
18!
4766
    switch (pTlv->type) {
12!
4767
      case QUERY_PLAN_CODE_INLINE_ATTRS:
6✔
4768
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
6✔
4769
        break;
6✔
4770
      case QUERY_PLAN_CODE_SUBPLANS:
6✔
4771
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
6✔
4772
        break;
6✔
4773
      default:
×
4774
        break;
×
4775
    }
4776
  }
4777

4778
  return code;
6✔
4779
}
4780

4781
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
69,604,556✔
4782
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4783
  int32_t code = TSDB_CODE_SUCCESS;
69,604,556✔
4784
  switch (nodeType(pObj)) {
69,604,556!
4785
    case QUERY_NODE_COLUMN:
14,077,647✔
4786
      code = columnNodeToMsg(pObj, pEncoder);
14,077,647✔
4787
      break;
13,681,667✔
4788
    case QUERY_NODE_VALUE:
2,884,040✔
4789
      code = valueNodeToMsg(pObj, pEncoder);
2,884,040✔
4790
      break;
2,883,970✔
4791
    case QUERY_NODE_OPERATOR:
1,453,214✔
4792
      code = operatorNodeToMsg(pObj, pEncoder);
1,453,214✔
4793
      break;
1,449,981✔
4794
    case QUERY_NODE_LOGIC_CONDITION:
341,657✔
4795
      code = logicConditionNodeToMsg(pObj, pEncoder);
341,657✔
4796
      break;
341,581✔
4797
    case QUERY_NODE_FUNCTION:
4,074,264✔
4798
      code = functionNodeToMsg(pObj, pEncoder);
4,074,264✔
4799
      break;
4,006,421✔
4800
    case QUERY_NODE_ORDER_BY_EXPR:
328,153✔
4801
      code = orderByExprNodeToMsg(pObj, pEncoder);
328,153✔
4802
      break;
328,083✔
4803
    case QUERY_NODE_LIMIT:
206,439✔
4804
      code = limitNodeToMsg(pObj, pEncoder);
206,439✔
4805
      break;
206,532✔
4806
    case QUERY_NODE_NODE_LIST:
52,149✔
4807
      code = nodeListNodeToMsg(pObj, pEncoder);
52,149✔
4808
      break;
52,125✔
4809
    case QUERY_NODE_TARGET:
11,582,760✔
4810
      code = targetNodeToMsg(pObj, pEncoder);
11,582,760✔
4811
      break;
11,405,686✔
4812
    case QUERY_NODE_DATABLOCK_DESC:
6,373,460✔
4813
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
6,373,460✔
4814
      break;
6,354,125✔
4815
    case QUERY_NODE_SLOT_DESC:
20,214,555✔
4816
      code = slotDescNodeToMsg(pObj, pEncoder);
20,214,555✔
4817
      break;
19,678,366✔
4818
    case QUERY_NODE_DOWNSTREAM_SOURCE:
1,004,382✔
4819
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
1,004,382✔
4820
      break;
1,004,307✔
4821
    case QUERY_NODE_LEFT_VALUE:
55,771✔
4822
      break;
55,771✔
4823
    case QUERY_NODE_WHEN_THEN:
7,461✔
4824
      code = whenThenNodeToMsg(pObj, pEncoder);
7,461✔
4825
      break;
7,459✔
4826
    case QUERY_NODE_CASE_WHEN:
5,523✔
4827
      code = caseWhenNodeToMsg(pObj, pEncoder);
5,523✔
4828
      break;
5,512✔
4829
    case QUERY_NODE_WINDOW_OFFSET:
829✔
4830
      code = windowOffsetNodeToMsg(pObj, pEncoder);
829✔
4831
      break;
829✔
4832
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
43,471✔
4833
      code = physiTagScanNodeToMsg(pObj, pEncoder);
43,471✔
4834
      break;
44,556✔
4835
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
14✔
4836
      code = physiScanNodeToMsg(pObj, pEncoder);
14✔
4837
      break;
14✔
4838
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
9,585✔
4839
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4840
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
9,585✔
4841
      break;
9,536✔
4842
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,515,620✔
4843
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4844
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4845
      code = physiTableScanNodeToMsg(pObj, pEncoder);
1,515,620✔
4846
      break;
1,520,148✔
4847
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
48,468✔
4848
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
48,468✔
4849
      break;
48,512✔
4850
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
526,859✔
4851
      code = physiProjectNodeToMsg(pObj, pEncoder);
526,859✔
4852
      break;
527,813✔
4853
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
92,344✔
4854
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
92,344✔
4855
      break;
92,362✔
4856
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,189✔
4857
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
9,189✔
4858
      break;
9,189✔
4859
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
963,511✔
4860
      code = physiAggNodeToMsg(pObj, pEncoder);
963,511✔
4861
      break;
966,204✔
4862
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
687,550✔
4863
      code = physiExchangeNodeToMsg(pObj, pEncoder);
687,550✔
4864
      break;
687,549✔
4865
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
80,822✔
4866
      code = physiMergeNodeToMsg(pObj, pEncoder);
80,822✔
4867
      break;
80,828✔
4868
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
166,872✔
4869
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4870
      code = physiSortNodeToMsg(pObj, pEncoder);
166,872✔
4871
      break;
166,982✔
4872
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
72,811✔
4873
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4874
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4875
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4876
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4877
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4878
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_INTERVAL:
4879
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_SEMI_INTERVAL:
4880
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_FINAL_INTERVAL:
4881
      code = physiIntervalNodeToMsg(pObj, pEncoder);
72,811✔
4882
      break;
73,023✔
4883
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
11,131✔
4884
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4885
      code = physiFillNodeToMsg(pObj, pEncoder);
11,131✔
4886
      break;
11,136✔
4887
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
4,606✔
4888
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4889
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4890
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4891
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_SESSION:
4892
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_SEMI_SESSION:
4893
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_FINAL_SESSION:
4894
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
4,606✔
4895
      break;
4,606✔
4896
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
5,022✔
4897
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4898
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_STATE:
4899
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
5,022✔
4900
      break;
5,021✔
4901
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
230✔
4902
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4903
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_EVENT:
4904
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
230✔
4905
      break;
230✔
4906
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
246✔
4907
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4908
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_COUNT:
4909
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
246✔
4910
      break;
247✔
UNCOV
4911
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
UNCOV
4912
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
UNCOV
4913
      break;
×
4914
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
15,439✔
4915
      code = physiPartitionNodeToMsg(pObj, pEncoder);
15,439✔
4916
      break;
15,497✔
4917
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4918
      code = physiStreamPartitionNodeToMsg(pObj, pEncoder);
×
4919
      break;
×
4920
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
22,110✔
4921
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
22,110✔
4922
      break;
22,128✔
4923
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
12,363✔
4924
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4925
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
12,363✔
4926
      break;
12,363✔
UNCOV
4927
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
UNCOV
4928
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
UNCOV
4929
      break;
×
4930
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,961,078✔
4931
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,961,078✔
4932
      break;
1,956,042✔
4933
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
122✔
4934
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
122✔
4935
      break;
122✔
4936
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
109,398✔
4937
      code = physiDeleteNodeToMsg(pObj, pEncoder);
109,398✔
4938
      break;
109,400✔
4939
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,189✔
4940
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
9,189✔
4941
      break;
9,189✔
4942
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
11,426✔
4943
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
11,426✔
4944
      break;
11,427✔
4945
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
5,650✔
4946
      code = physiVirtualTableScanNodeToMsg(pObj, pEncoder);
5,650✔
4947
      break;
5,644✔
4948
    case QUERY_NODE_PHYSICAL_SUBPLAN:
2,064,255✔
4949
      code = subplanToMsg(pObj, pEncoder);
2,064,255✔
4950
      break;
2,069,438✔
4951
    case QUERY_NODE_PHYSICAL_PLAN:
12✔
4952
      code = queryPlanToMsg(pObj, pEncoder);
12✔
4953
      break;
12✔
4954
    default:
×
4955
      break;
×
4956
  }
4957
  if (TSDB_CODE_SUCCESS != code) {
68,414,492!
4958
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
4959
  }
4960
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4961
  return code;
68,046,596✔
4962
}
4963

4964
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
832,662,337✔
4965
  int32_t code = TSDB_CODE_SUCCESS;
832,662,337✔
4966
  switch (nodeType(pObj)) {
832,662,337!
4967
    case QUERY_NODE_COLUMN:
89,389,381✔
4968
      code = msgToColumnNode(pDecoder, pObj);
89,389,381✔
4969
      break;
89,711,612✔
4970
    case QUERY_NODE_VALUE:
446,864,389✔
4971
      code = msgToValueNode(pDecoder, pObj);
446,864,389✔
4972
      break;
439,516,706✔
4973
    case QUERY_NODE_OPERATOR:
17,186,614✔
4974
      code = msgToOperatorNode(pDecoder, pObj);
17,186,614✔
4975
      break;
17,165,043✔
4976
    case QUERY_NODE_LOGIC_CONDITION:
5,107,329✔
4977
      code = msgToLogicConditionNode(pDecoder, pObj);
5,107,329✔
4978
      break;
5,108,969✔
4979
    case QUERY_NODE_FUNCTION:
12,653,226✔
4980
      code = msgToFunctionNode(pDecoder, pObj);
12,653,226✔
4981
      break;
12,630,865✔
4982
    case QUERY_NODE_ORDER_BY_EXPR:
2,419,237✔
4983
      code = msgToOrderByExprNode(pDecoder, pObj);
2,419,237✔
4984
      break;
2,418,675✔
4985
    case QUERY_NODE_LIMIT:
811,788✔
4986
      code = msgToLimitNode(pDecoder, pObj);
811,788✔
4987
      break;
811,385✔
4988
    case QUERY_NODE_NODE_LIST:
2,988,872✔
4989
      code = msgToNodeListNode(pDecoder, pObj);
2,988,872✔
4990
      break;
2,990,770✔
4991
    case QUERY_NODE_TARGET:
68,131,370✔
4992
      code = msgToTargetNode(pDecoder, pObj);
68,131,370✔
4993
      break;
67,801,077✔
4994
    case QUERY_NODE_DATABLOCK_DESC:
28,767,237✔
4995
      code = msgToDataBlockDescNode(pDecoder, pObj);
28,767,237✔
4996
      break;
28,759,991✔
4997
    case QUERY_NODE_SLOT_DESC:
123,815,717✔
4998
      code = msgToSlotDescNode(pDecoder, pObj);
123,815,717✔
4999
      break;
122,898,083✔
5000
    case QUERY_NODE_DOWNSTREAM_SOURCE:
5,204,318✔
5001
      code = msgToDownstreamSourceNode(pDecoder, pObj);
5,204,318✔
5002
    case QUERY_NODE_LEFT_VALUE:
5,326,042✔
5003
      break;
5,326,042✔
5004
    case QUERY_NODE_WHEN_THEN:
7,384✔
5005
      code = msgToWhenThenNode(pDecoder, pObj);
7,384✔
5006
      break;
7,382✔
5007
    case QUERY_NODE_CASE_WHEN:
5,186✔
5008
      code = msgToCaseWhenNode(pDecoder, pObj);
5,186✔
5009
      break;
5,186✔
5010
    case QUERY_NODE_WINDOW_OFFSET:
668✔
5011
      code = msgToWindowOffsetNode(pDecoder, pObj);
668✔
5012
      break;
667✔
5013
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
47,830✔
5014
      code = msgToPhysiTagScanNode(pDecoder, pObj);
47,830✔
5015
      break;
47,796✔
5016
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
3,246✔
5017
      code = msgToPhysiScanNode(pDecoder, pObj);
3,246✔
5018
      break;
3,248✔
5019
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
12,513✔
5020
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5021
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
12,513✔
5022
      break;
12,510✔
5023
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
5,191,005✔
5024
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5025
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5026
      code = msgToPhysiTableScanNode(pDecoder, pObj);
5,191,005✔
5027
      break;
5,187,132✔
5028
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,219,280✔
5029
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
1,219,280✔
5030
      break;
1,218,755✔
5031
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
1,832,381✔
5032
      code = msgToPhysiProjectNode(pDecoder, pObj);
1,832,381✔
5033
      break;
1,832,241✔
5034
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
96,279✔
5035
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
96,279✔
5036
      break;
96,268✔
5037
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,196✔
5038
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
9,196✔
5039
      break;
9,196✔
5040
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
2,563,849✔
5041
      code = msgToPhysiAggNode(pDecoder, pObj);
2,563,849✔
5042
      break;
2,563,350✔
5043
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
3,671,064✔
5044
      code = msgToPhysiExchangeNode(pDecoder, pObj);
3,671,064✔
5045
      break;
3,670,921✔
5046
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
1,388,064✔
5047
      code = msgToPhysiMergeNode(pDecoder, pObj);
1,388,064✔
5048
      break;
1,388,021✔
5049
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
885,617✔
5050
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5051
      code = msgToPhysiSortNode(pDecoder, pObj);
885,617✔
5052
      break;
885,610✔
5053
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
2,066,426✔
5054
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5055
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
5056
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
5057
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
5058
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
5059
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_INTERVAL:
5060
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_SEMI_INTERVAL:
5061
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_FINAL_INTERVAL:
5062
      code = msgToPhysiIntervalNode(pDecoder, pObj);
2,066,426✔
5063
      break;
2,064,967✔
5064
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
488,965✔
5065
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
5066
      code = msgToPhysiFillNode(pDecoder, pObj);
488,965✔
5067
      break;
488,951✔
5068
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
103,688✔
5069
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
5070
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
5071
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
5072
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_SESSION:
5073
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_SEMI_SESSION:
5074
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_FINAL_SESSION:
5075
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
103,688✔
5076
      break;
103,678✔
5077
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
75,076✔
5078
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
5079
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_STATE:
5080
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
75,076✔
5081
      break;
75,075✔
5082
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
283,668✔
5083
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
5084
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_EVENT:
5085
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
283,668✔
5086
      break;
283,672✔
5087
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
7,028✔
5088
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
5089
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_CONTINUE_COUNT:
5090
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
7,028✔
5091
      break;
6,988✔
UNCOV
5092
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
UNCOV
5093
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
UNCOV
5094
      break;
×
5095
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
26,503✔
5096
      code = msgToPhysiPartitionNode(pDecoder, pObj);
26,503✔
5097
      break;
26,482✔
5098
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
5099
      code = msgToPhysiStreamPartitionNode(pDecoder, pObj);
×
5100
      break;
×
5101
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
120,248✔
5102
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
120,248✔
5103
      break;
120,259✔
5104
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
76,176✔
5105
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
5106
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
76,176✔
5107
      break;
76,175✔
UNCOV
5108
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
UNCOV
5109
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
UNCOV
5110
      break;
×
5111
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
8,471,786✔
5112
      code = msgToPhysiDispatchNode(pDecoder, pObj);
8,471,786✔
5113
      break;
8,469,641✔
5114
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
385✔
5115
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
385✔
5116
      break;
385✔
5117
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
112,141✔
5118
      code = msgToPhysiDeleteNode(pDecoder, pObj);
112,141✔
5119
      break;
112,141✔
5120
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,196✔
5121
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
9,196✔
5122
      break;
9,196✔
5123
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,196✔
5124
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
9,196✔
5125
      break;
9,196✔
5126
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
×
5127
      code = msgToPhysiVirtualTableScanNode(pDecoder, pObj);
×
5128
      break;
×
5129
    case QUERY_NODE_PHYSICAL_SUBPLAN:
8,585,680✔
5130
      code = msgToSubplan(pDecoder, pObj);
8,585,680✔
5131
      break;
8,582,658✔
5132
    case QUERY_NODE_PHYSICAL_PLAN:
6✔
5133
      code = msgToQueryPlan(pDecoder, pObj);
6✔
5134
      break;
6✔
5135
    default:
×
5136
      break;
×
5137
  }
5138
  if (TSDB_CODE_SUCCESS != code) {
832,496,971!
5139
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
5140
  }
5141
  return code;
823,941,505✔
5142
}
5143

5144
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
68,890,216✔
5145
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
68,890,216✔
5146
}
5147

5148
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
841,808,055✔
5149
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
841,808,055✔
5150
}
5151

5152
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
158,406,201✔
5153
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
158,406,201✔
5154
  return msgToNode(&decoder, pObj);
158,406,201✔
5155
}
5156

5157
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
17,588,980✔
5158
  const SNodeList* pList = (const SNodeList*)pObj;
17,588,980✔
5159

5160
  SNode* pNode = NULL;
17,588,980✔
5161
  FOREACH(pNode, pList) {
58,605,670!
5162
    int32_t code = nodeToMsg(pNode, pEncoder);
41,434,415✔
5163
    if (TSDB_CODE_SUCCESS != code) {
41,016,690!
5164
      return code;
×
5165
    }
5166
  }
5167

5168
  return TSDB_CODE_SUCCESS;
17,171,255✔
5169
}
5170
enum {
5171
  SARRAY_CODE_CAPACITY = 1,
5172
  SARRAY_CODE_ELEMSIZE,
5173
  SARRAY_CODE_SIZE,
5174
  SARRAY_CODE_PDATA
5175
};
5176

5177
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
114✔
5178
  const SArray* pArray = (const SArray*)pObj;
114✔
5179
  int32_t code = TSDB_CODE_SUCCESS;
114✔
5180
  if (TSDB_CODE_SUCCESS == code) {
114!
5181
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
114✔
5182
  }
5183
  if (TSDB_CODE_SUCCESS == code) {
114!
5184
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
114✔
5185
  }
5186
  if (TSDB_CODE_SUCCESS == code) {
115!
5187
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
115✔
5188
  }
5189
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
117!
5190
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
117✔
5191
  }
5192
  return code;
117✔
5193
}
5194

5195

5196
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
81,498,431✔
5197
  SNodeList* pList = NULL;
81,498,431✔
5198
  int32_t code = TSDB_CODE_SUCCESS;
81,498,431✔
5199
  code = nodesMakeList(&pList);
81,498,431✔
5200

5201
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
762,748,807✔
5202
    SNode* pNode = NULL;
677,550,701✔
5203
    code = msgToNode(pDecoder, (void**)&pNode);
677,550,701✔
5204
    if (TSDB_CODE_SUCCESS == code) {
659,875,291!
5205
      code = nodesListAppend(pList, pNode);
660,046,966✔
5206
    }
5207
  }
5208
  if (TSDB_CODE_SUCCESS == code) {
81,567,219!
5209
    *pObj = pList;
81,567,219✔
5210
  } else {
5211
    nodesDestroyList(pList);
×
5212
  }
5213
  return code;
81,559,937✔
5214
}
5215

5216
static int32_t msgToSArray(STlv* pTlv, void** pObj){
99✔
5217
  SArray* pArray = NULL;
99✔
5218
  uint32_t capacity = 0;
99✔
5219
  uint32_t elemSize = 0;
99✔
5220
  uint32_t actualSize;
5221
  int32_t decodeFieldNum = 0;;
99✔
5222
  int32_t code = TSDB_CODE_SUCCESS;
99✔
5223
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
99✔
5224
  STlv*   pTlvTemp = NULL;
99✔
5225
  STlv*   pDataTlv = NULL;
99✔
5226

5227
  tlvForEach(&decoder, pTlvTemp, code) {
492!
5228
    switch (pTlvTemp->type) {
394!
5229
      case SARRAY_CODE_CAPACITY:
99✔
5230
        code = tlvDecodeI32(pTlvTemp, &capacity);
99✔
5231
        break;
99✔
5232
      case SARRAY_CODE_ELEMSIZE:
99✔
5233
        code = tlvDecodeI32(pTlvTemp, &elemSize);
99✔
5234
        break;
98✔
5235
      case SARRAY_CODE_SIZE:
98✔
5236
        code = tlvDecodeI32(pTlvTemp, &actualSize);
98✔
5237
        break;
98✔
5238
      case SARRAY_CODE_PDATA:
98✔
5239
        if (decodeFieldNum < 3) {
98!
5240
          pDataTlv = pTlvTemp;
×
5241
          break;
×
5242
        }
5243
        pArray = taosArrayInit(capacity, elemSize);
98✔
5244
        if (NULL == pArray) {
99!
5245
          return terrno;
×
5246
        }
5247
        pArray->size = actualSize;
99✔
5248
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
99!
5249
          taosArrayDestroy(pArray);
×
5250
          return TSDB_CODE_OUT_OF_MEMORY;
×
5251
        }
5252
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
99✔
5253
        break;
98✔
5254
      default:
×
5255
        break;
×
5256
    }
5257
    decodeFieldNum++;
393✔
5258
  }
5259

5260
  if (pDataTlv != NULL) {
98!
5261
    pArray = taosArrayInit(capacity, elemSize);
×
5262
    if (NULL == pArray) {
×
5263
      return terrno;
×
5264
    }
5265
    pArray->size = actualSize;
×
5266
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5267
      taosArrayDestroy(pArray);
×
5268
      return TSDB_CODE_OUT_OF_MEMORY;
×
5269
    }
5270
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5271
  }
5272
  *pObj = pArray;
98✔
5273
  return code;
98✔
5274
}
5275

5276

5277
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
81,478,653✔
5278
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
81,478,653✔
5279
  return msgToNodeList(&decoder, pObj);
81,478,653✔
5280
}
5281

5282
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
2,063,040✔
5283
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
2,063,040!
5284
    terrno = TSDB_CODE_FAILED;
×
5285
    return TSDB_CODE_FAILED;
×
5286
  }
5287

5288
  STlvEncoder encoder;
5289
  int32_t     code = initTlvEncoder(&encoder);
2,077,934✔
5290
  if (TSDB_CODE_SUCCESS == code) {
2,077,984!
5291
    code = nodeToMsg(pNode, &encoder);
2,078,306✔
5292
  }
5293
  if (TSDB_CODE_SUCCESS == code) {
2,067,665!
5294
    endTlvEncode(&encoder, pMsg, pLen);
2,068,411✔
5295
  }
5296
  clearTlvEncoder(&encoder);
2,067,105✔
5297

5298
  terrno = code;
2,068,651✔
5299
  return code;
2,067,371✔
5300
}
5301

5302
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
8,588,489✔
5303
  if (NULL == pMsg || NULL == pNode) {
8,588,489!
5304
    return TSDB_CODE_SUCCESS;
×
5305
  }
5306

5307
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
8,593,914✔
5308
  int32_t     code = msgToNode(&decoder, (void**)pNode);
8,593,914✔
5309
  if (TSDB_CODE_SUCCESS != code) {
8,581,897!
5310
    nodesDestroyNode(*pNode);
×
5311
    *pNode = NULL;
×
5312
  }
5313

5314
  terrno = code;
8,581,897✔
5315
  return code;
8,579,988✔
5316
}
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